Файловый менеджер - Редактировать - /var/www/xthruster/html/wp-content/plugins/wpml-string-translation/dist/js/strings-cleanup/app.js
Назад
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=434)}([function(e,t,n){"use strict";e.exports=n(435)},function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(6);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){Object(r.a)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}},function(e,t,n){var r; /*! Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var a=typeof r;if("string"===a||"number"===a)e.push(r);else if(Array.isArray(r)&&r.length){var i=o.apply(null,r);i&&e.push(i)}else if("object"===a)for(var c in r)n.call(r,c)&&r[c]&&e.push(c)}}return e.join(" ")}e.exports?(o.default=o,e.exports=o):void 0===(r=function(){return o}.apply(t,[]))||(e.exports=r)}()},function(e,t,n){e.exports=n(484)()},function(e,t,n){(function(e){e.exports=function(){"use strict";var t,r;function o(){return t.apply(null,arguments)}function a(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function i(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function c(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function l(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(c(e,t))return!1;return!0}function u(e){return void 0===e}function s(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function f(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function d(e,t){var n,r=[];for(n=0;n<e.length;++n)r.push(t(e[n],n));return r}function p(e,t){for(var n in t)c(t,n)&&(e[n]=t[n]);return c(t,"toString")&&(e.toString=t.toString),c(t,"valueOf")&&(e.valueOf=t.valueOf),e}function h(e,t,n,r){return Lt(e,t,n,r,!0).utc()}function m(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function v(e){if(null==e._isValid){var t=m(e),n=r.call(t.parsedDateParts,(function(e){return null!=e})),o=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidEra&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(o=o&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return o;e._isValid=o}return e._isValid}function y(e){var t=h(NaN);return null!=e?p(m(t),e):m(t).userInvalidated=!0,t}r=Array.prototype.some?Array.prototype.some:function(e){var t,n=Object(this),r=n.length>>>0;for(t=0;t<r;t++)if(t in n&&e.call(this,n[t],t,n))return!0;return!1};var _=o.momentProperties=[],b=!1;function g(e,t){var n,r,o;if(u(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),u(t._i)||(e._i=t._i),u(t._f)||(e._f=t._f),u(t._l)||(e._l=t._l),u(t._strict)||(e._strict=t._strict),u(t._tzm)||(e._tzm=t._tzm),u(t._isUTC)||(e._isUTC=t._isUTC),u(t._offset)||(e._offset=t._offset),u(t._pf)||(e._pf=m(t)),u(t._locale)||(e._locale=t._locale),_.length>0)for(n=0;n<_.length;n++)u(o=t[r=_[n]])||(e[r]=o);return e}function M(e){g(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===b&&(b=!0,o.updateOffset(this),b=!1)}function w(e){return e instanceof M||null!=e&&null!=e._isAMomentObject}function O(e){!1===o.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function k(e,t){var n=!0;return p((function(){if(null!=o.deprecationHandler&&o.deprecationHandler(null,e),n){var r,a,i,l=[];for(a=0;a<arguments.length;a++){if(r="","object"==typeof arguments[a]){for(i in r+="\n["+a+"] ",arguments[0])c(arguments[0],i)&&(r+=i+": "+arguments[0][i]+", ");r=r.slice(0,-2)}else r=arguments[a];l.push(r)}O(e+"\nArguments: "+Array.prototype.slice.call(l).join("")+"\n"+(new Error).stack),n=!1}return t.apply(this,arguments)}),t)}var L,x={};function z(e,t){null!=o.deprecationHandler&&o.deprecationHandler(e,t),x[e]||(O(t),x[e]=!0)}function S(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function C(e,t){var n,r=p({},e);for(n in t)c(t,n)&&(i(e[n])&&i(t[n])?(r[n]={},p(r[n],e[n]),p(r[n],t[n])):null!=t[n]?r[n]=t[n]:delete r[n]);for(n in e)c(e,n)&&!c(t,n)&&i(e[n])&&(r[n]=p({},r[n]));return r}function j(e){null!=e&&this.set(e)}function E(e,t,n){var r=""+Math.abs(e),o=t-r.length;return(e>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,o)).toString().substr(1)+r}o.suppressDeprecationWarnings=!1,o.deprecationHandler=null,L=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)c(e,t)&&n.push(t);return n};var T=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,P=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,H={},D={};function Y(e,t,n,r){var o=r;"string"==typeof r&&(o=function(){return this[r]()}),e&&(D[e]=o),t&&(D[t[0]]=function(){return E(o.apply(this,arguments),t[1],t[2])}),n&&(D[n]=function(){return this.localeData().ordinal(o.apply(this,arguments),e)})}function V(e,t){return e.isValid()?(t=N(t,e.localeData()),H[t]=H[t]||function(e){var t,n,r,o=e.match(T);for(t=0,n=o.length;t<n;t++)D[o[t]]?o[t]=D[o[t]]:o[t]=(r=o[t]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");return function(t){var r,a="";for(r=0;r<n;r++)a+=S(o[r])?o[r].call(t,e):o[r];return a}}(t),H[t](e)):e.localeData().invalidDate()}function N(e,t){var n=5;function r(e){return t.longDateFormat(e)||e}for(P.lastIndex=0;n>=0&&P.test(e);)e=e.replace(P,r),P.lastIndex=0,n-=1;return e}var F={};function A(e,t){var n=e.toLowerCase();F[n]=F[n+"s"]=F[t]=e}function R(e){return"string"==typeof e?F[e]||F[e.toLowerCase()]:void 0}function I(e){var t,n,r={};for(n in e)c(e,n)&&(t=R(n))&&(r[t]=e[n]);return r}var W={};function U(e,t){W[e]=t}function K(e){return e%4==0&&e%100!=0||e%400==0}function B(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function q(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=B(t)),n}function $(e,t){return function(n){return null!=n?(J(this,e,n),o.updateOffset(this,t),this):G(this,e)}}function G(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function J(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&K(e.year())&&1===e.month()&&29===e.date()?(n=q(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),we(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}var Q,X=/\d/,Z=/\d\d/,ee=/\d{3}/,te=/\d{4}/,ne=/[+-]?\d{6}/,re=/\d\d?/,oe=/\d\d\d\d?/,ae=/\d\d\d\d\d\d?/,ie=/\d{1,3}/,ce=/\d{1,4}/,le=/[+-]?\d{1,6}/,ue=/\d+/,se=/[+-]?\d+/,fe=/Z|[+-]\d\d:?\d\d/gi,de=/Z|[+-]\d\d(?::?\d\d)?/gi,pe=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function he(e,t,n){Q[e]=S(t)?t:function(e,r){return e&&n?n:t}}function me(e,t){return c(Q,e)?Q[e](t._strict,t._locale):new RegExp(ve(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,n,r,o){return t||n||r||o}))))}function ve(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}Q={};var ye,_e={};function be(e,t){var n,r=t;for("string"==typeof e&&(e=[e]),s(t)&&(r=function(e,n){n[t]=q(e)}),n=0;n<e.length;n++)_e[e[n]]=r}function ge(e,t){be(e,(function(e,n,r,o){r._w=r._w||{},t(e,r._w,r,o)}))}function Me(e,t,n){null!=t&&c(_e,e)&&_e[e](t,n._a,n,e)}function we(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,r=(t%(n=12)+n)%n;return e+=(t-r)/12,1===r?K(e)?29:28:31-r%7%2}ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},Y("M",["MM",2],"Mo",(function(){return this.month()+1})),Y("MMM",0,0,(function(e){return this.localeData().monthsShort(this,e)})),Y("MMMM",0,0,(function(e){return this.localeData().months(this,e)})),A("month","M"),U("month",8),he("M",re),he("MM",re,Z),he("MMM",(function(e,t){return t.monthsShortRegex(e)})),he("MMMM",(function(e,t){return t.monthsRegex(e)})),be(["M","MM"],(function(e,t){t[1]=q(e)-1})),be(["MMM","MMMM"],(function(e,t,n,r){var o=n._locale.monthsParse(e,r,n._strict);null!=o?t[1]=o:m(n).invalidMonth=e}));var Oe="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ke="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Le=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,xe=pe,ze=pe;function Se(e,t,n){var r,o,a,i=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)a=h([2e3,r]),this._shortMonthsParse[r]=this.monthsShort(a,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(a,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(o=ye.call(this._shortMonthsParse,i))?o:null:-1!==(o=ye.call(this._longMonthsParse,i))?o:null:"MMM"===t?-1!==(o=ye.call(this._shortMonthsParse,i))||-1!==(o=ye.call(this._longMonthsParse,i))?o:null:-1!==(o=ye.call(this._longMonthsParse,i))||-1!==(o=ye.call(this._shortMonthsParse,i))?o:null}function Ce(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=q(t);else if(!s(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),we(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function je(e){return null!=e?(Ce(this,e),o.updateOffset(this,!0),this):G(this,"Month")}function Ee(){function e(e,t){return t.length-e.length}var t,n,r=[],o=[],a=[];for(t=0;t<12;t++)n=h([2e3,t]),r.push(this.monthsShort(n,"")),o.push(this.months(n,"")),a.push(this.months(n,"")),a.push(this.monthsShort(n,""));for(r.sort(e),o.sort(e),a.sort(e),t=0;t<12;t++)r[t]=ve(r[t]),o[t]=ve(o[t]);for(t=0;t<24;t++)a[t]=ve(a[t]);this._monthsRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Te(e){return K(e)?366:365}Y("Y",0,0,(function(){var e=this.year();return e<=9999?E(e,4):"+"+e})),Y(0,["YY",2],0,(function(){return this.year()%100})),Y(0,["YYYY",4],0,"year"),Y(0,["YYYYY",5],0,"year"),Y(0,["YYYYYY",6,!0],0,"year"),A("year","y"),U("year",1),he("Y",se),he("YY",re,Z),he("YYYY",ce,te),he("YYYYY",le,ne),he("YYYYYY",le,ne),be(["YYYYY","YYYYYY"],0),be("YYYY",(function(e,t){t[0]=2===e.length?o.parseTwoDigitYear(e):q(e)})),be("YY",(function(e,t){t[0]=o.parseTwoDigitYear(e)})),be("Y",(function(e,t){t[0]=parseInt(e,10)})),o.parseTwoDigitYear=function(e){return q(e)+(q(e)>68?1900:2e3)};var Pe=$("FullYear",!0);function He(e,t,n,r,o,a,i){var c;return e<100&&e>=0?(c=new Date(e+400,t,n,r,o,a,i),isFinite(c.getFullYear())&&c.setFullYear(e)):c=new Date(e,t,n,r,o,a,i),c}function De(e){var t,n;return e<100&&e>=0?((n=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Ye(e,t,n){var r=7+t-n;return-(7+De(e,0,r).getUTCDay()-t)%7+r-1}function Ve(e,t,n,r,o){var a,i,c=1+7*(t-1)+(7+n-r)%7+Ye(e,r,o);return c<=0?i=Te(a=e-1)+c:c>Te(e)?(a=e+1,i=c-Te(e)):(a=e,i=c),{year:a,dayOfYear:i}}function Ne(e,t,n){var r,o,a=Ye(e.year(),t,n),i=Math.floor((e.dayOfYear()-a-1)/7)+1;return i<1?r=i+Fe(o=e.year()-1,t,n):i>Fe(e.year(),t,n)?(r=i-Fe(e.year(),t,n),o=e.year()+1):(o=e.year(),r=i),{week:r,year:o}}function Fe(e,t,n){var r=Ye(e,t,n),o=Ye(e+1,t,n);return(Te(e)-r+o)/7}function Ae(e,t){return e.slice(t,7).concat(e.slice(0,t))}Y("w",["ww",2],"wo","week"),Y("W",["WW",2],"Wo","isoWeek"),A("week","w"),A("isoWeek","W"),U("week",5),U("isoWeek",5),he("w",re),he("ww",re,Z),he("W",re),he("WW",re,Z),ge(["w","ww","W","WW"],(function(e,t,n,r){t[r.substr(0,1)]=q(e)})),Y("d",0,"do","day"),Y("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),Y("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),Y("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),Y("e",0,0,"weekday"),Y("E",0,0,"isoWeekday"),A("day","d"),A("weekday","e"),A("isoWeekday","E"),U("day",11),U("weekday",11),U("isoWeekday",11),he("d",re),he("e",re),he("E",re),he("dd",(function(e,t){return t.weekdaysMinRegex(e)})),he("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),he("dddd",(function(e,t){return t.weekdaysRegex(e)})),ge(["dd","ddd","dddd"],(function(e,t,n,r){var o=n._locale.weekdaysParse(e,r,n._strict);null!=o?t.d=o:m(n).invalidWeekday=e})),ge(["d","e","E"],(function(e,t,n,r){t[r]=q(e)}));var Re="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ie="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),We="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ue=pe,Ke=pe,Be=pe;function qe(e,t,n){var r,o,a,i=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)a=h([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(a,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(a,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(a,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(o=ye.call(this._weekdaysParse,i))?o:null:"ddd"===t?-1!==(o=ye.call(this._shortWeekdaysParse,i))?o:null:-1!==(o=ye.call(this._minWeekdaysParse,i))?o:null:"dddd"===t?-1!==(o=ye.call(this._weekdaysParse,i))||-1!==(o=ye.call(this._shortWeekdaysParse,i))||-1!==(o=ye.call(this._minWeekdaysParse,i))?o:null:"ddd"===t?-1!==(o=ye.call(this._shortWeekdaysParse,i))||-1!==(o=ye.call(this._weekdaysParse,i))||-1!==(o=ye.call(this._minWeekdaysParse,i))?o:null:-1!==(o=ye.call(this._minWeekdaysParse,i))||-1!==(o=ye.call(this._weekdaysParse,i))||-1!==(o=ye.call(this._shortWeekdaysParse,i))?o:null}function $e(){function e(e,t){return t.length-e.length}var t,n,r,o,a,i=[],c=[],l=[],u=[];for(t=0;t<7;t++)n=h([2e3,1]).day(t),r=ve(this.weekdaysMin(n,"")),o=ve(this.weekdaysShort(n,"")),a=ve(this.weekdays(n,"")),i.push(r),c.push(o),l.push(a),u.push(r),u.push(o),u.push(a);i.sort(e),c.sort(e),l.sort(e),u.sort(e),this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+i.join("|")+")","i")}function Ge(){return this.hours()%12||12}function Je(e,t){Y(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function Qe(e,t){return t._meridiemParse}Y("H",["HH",2],0,"hour"),Y("h",["hh",2],0,Ge),Y("k",["kk",2],0,(function(){return this.hours()||24})),Y("hmm",0,0,(function(){return""+Ge.apply(this)+E(this.minutes(),2)})),Y("hmmss",0,0,(function(){return""+Ge.apply(this)+E(this.minutes(),2)+E(this.seconds(),2)})),Y("Hmm",0,0,(function(){return""+this.hours()+E(this.minutes(),2)})),Y("Hmmss",0,0,(function(){return""+this.hours()+E(this.minutes(),2)+E(this.seconds(),2)})),Je("a",!0),Je("A",!1),A("hour","h"),U("hour",13),he("a",Qe),he("A",Qe),he("H",re),he("h",re),he("k",re),he("HH",re,Z),he("hh",re,Z),he("kk",re,Z),he("hmm",oe),he("hmmss",ae),he("Hmm",oe),he("Hmmss",ae),be(["H","HH"],3),be(["k","kk"],(function(e,t,n){var r=q(e);t[3]=24===r?0:r})),be(["a","A"],(function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e})),be(["h","hh"],(function(e,t,n){t[3]=q(e),m(n).bigHour=!0})),be("hmm",(function(e,t,n){var r=e.length-2;t[3]=q(e.substr(0,r)),t[4]=q(e.substr(r)),m(n).bigHour=!0})),be("hmmss",(function(e,t,n){var r=e.length-4,o=e.length-2;t[3]=q(e.substr(0,r)),t[4]=q(e.substr(r,2)),t[5]=q(e.substr(o)),m(n).bigHour=!0})),be("Hmm",(function(e,t,n){var r=e.length-2;t[3]=q(e.substr(0,r)),t[4]=q(e.substr(r))})),be("Hmmss",(function(e,t,n){var r=e.length-4,o=e.length-2;t[3]=q(e.substr(0,r)),t[4]=q(e.substr(r,2)),t[5]=q(e.substr(o))}));var Xe,Ze=$("Hours",!0),et={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Oe,monthsShort:ke,week:{dow:0,doy:6},weekdays:Re,weekdaysMin:We,weekdaysShort:Ie,meridiemParse:/[ap]\.?m?\.?/i},tt={},nt={};function rt(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n<r;n+=1)if(e[n]!==t[n])return n;return r}function ot(e){return e?e.toLowerCase().replace("_","-"):e}function at(t){var r=null;if(void 0===tt[t]&&void 0!==e&&e&&e.exports)try{r=Xe._abbr,n(497)("./"+t),it(r)}catch(e){tt[t]=null}return tt[t]}function it(e,t){var n;return e&&((n=u(t)?lt(e):ct(e,t))?Xe=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),Xe._abbr}function ct(e,t){if(null!==t){var n,r=et;if(t.abbr=e,null!=tt[e])z("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=tt[e]._config;else if(null!=t.parentLocale)if(null!=tt[t.parentLocale])r=tt[t.parentLocale]._config;else{if(null==(n=at(t.parentLocale)))return nt[t.parentLocale]||(nt[t.parentLocale]=[]),nt[t.parentLocale].push({name:e,config:t}),null;r=n._config}return tt[e]=new j(C(r,t)),nt[e]&&nt[e].forEach((function(e){ct(e.name,e.config)})),it(e),tt[e]}return delete tt[e],null}function lt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Xe;if(!a(e)){if(t=at(e))return t;e=[e]}return function(e){for(var t,n,r,o,a=0;a<e.length;){for(t=(o=ot(e[a]).split("-")).length,n=(n=ot(e[a+1]))?n.split("-"):null;t>0;){if(r=at(o.slice(0,t).join("-")))return r;if(n&&n.length>=t&&rt(o,n)>=t-1)break;t--}a++}return Xe}(e)}function ut(e){var t,n=e._a;return n&&-2===m(e).overflow&&(t=n[1]<0||n[1]>11?1:n[2]<1||n[2]>we(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,m(e)._overflowDayOfYear&&(t<0||t>2)&&(t=2),m(e)._overflowWeeks&&-1===t&&(t=7),m(e)._overflowWeekday&&-1===t&&(t=8),m(e).overflow=t),e}var st=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ft=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,dt=/Z|[+-]\d\d(?::?\d\d)?/,pt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],ht=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],mt=/^\/?Date\((-?\d+)/i,vt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,yt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function _t(e){var t,n,r,o,a,i,c=e._i,l=st.exec(c)||ft.exec(c);if(l){for(m(e).iso=!0,t=0,n=pt.length;t<n;t++)if(pt[t][1].exec(l[1])){o=pt[t][0],r=!1!==pt[t][2];break}if(null==o)return void(e._isValid=!1);if(l[3]){for(t=0,n=ht.length;t<n;t++)if(ht[t][1].exec(l[3])){a=(l[2]||" ")+ht[t][0];break}if(null==a)return void(e._isValid=!1)}if(!r&&null!=a)return void(e._isValid=!1);if(l[4]){if(!dt.exec(l[4]))return void(e._isValid=!1);i="Z"}e._f=o+(a||"")+(i||""),Ot(e)}else e._isValid=!1}function bt(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}function gt(e){var t,n,r,o,a,i,c,l,u=vt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(u){if(n=u[4],r=u[3],o=u[2],a=u[5],i=u[6],c=u[7],l=[bt(n),ke.indexOf(r),parseInt(o,10),parseInt(a,10),parseInt(i,10)],c&&l.push(parseInt(c,10)),t=l,!function(e,t,n){return!e||Ie.indexOf(e)===new Date(t[0],t[1],t[2]).getDay()||(m(n).weekdayMismatch=!0,n._isValid=!1,!1)}(u[1],t,e))return;e._a=t,e._tzm=function(e,t,n){if(e)return yt[e];if(t)return 0;var r=parseInt(n,10),o=r%100;return(r-o)/100*60+o}(u[8],u[9],u[10]),e._d=De.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),m(e).rfc2822=!0}else e._isValid=!1}function Mt(e,t,n){return null!=e?e:null!=t?t:n}function wt(e){var t,n,r,a,i,c=[];if(!e._d){for(r=function(e){var t=new Date(o.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}(e),e._w&&null==e._a[2]&&null==e._a[1]&&function(e){var t,n,r,o,a,i,c,l,u;null!=(t=e._w).GG||null!=t.W||null!=t.E?(a=1,i=4,n=Mt(t.GG,e._a[0],Ne(xt(),1,4).year),r=Mt(t.W,1),((o=Mt(t.E,1))<1||o>7)&&(l=!0)):(a=e._locale._week.dow,i=e._locale._week.doy,u=Ne(xt(),a,i),n=Mt(t.gg,e._a[0],u.year),r=Mt(t.w,u.week),null!=t.d?((o=t.d)<0||o>6)&&(l=!0):null!=t.e?(o=t.e+a,(t.e<0||t.e>6)&&(l=!0)):o=a),r<1||r>Fe(n,a,i)?m(e)._overflowWeeks=!0:null!=l?m(e)._overflowWeekday=!0:(c=Ve(n,r,o,a,i),e._a[0]=c.year,e._dayOfYear=c.dayOfYear)}(e),null!=e._dayOfYear&&(i=Mt(e._a[0],r[0]),(e._dayOfYear>Te(i)||0===e._dayOfYear)&&(m(e)._overflowDayOfYear=!0),n=De(i,0,e._dayOfYear),e._a[1]=n.getUTCMonth(),e._a[2]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=c[t]=r[t];for(;t<7;t++)e._a[t]=c[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[3]&&0===e._a[4]&&0===e._a[5]&&0===e._a[6]&&(e._nextDay=!0,e._a[3]=0),e._d=(e._useUTC?De:He).apply(null,c),a=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[3]=24),e._w&&void 0!==e._w.d&&e._w.d!==a&&(m(e).weekdayMismatch=!0)}}function Ot(e){if(e._f!==o.ISO_8601)if(e._f!==o.RFC_2822){e._a=[],m(e).empty=!0;var t,n,r,a,i,c,l=""+e._i,u=l.length,s=0;for(r=N(e._f,e._locale).match(T)||[],t=0;t<r.length;t++)a=r[t],(n=(l.match(me(a,e))||[])[0])&&((i=l.substr(0,l.indexOf(n))).length>0&&m(e).unusedInput.push(i),l=l.slice(l.indexOf(n)+n.length),s+=n.length),D[a]?(n?m(e).empty=!1:m(e).unusedTokens.push(a),Me(a,n,e)):e._strict&&!n&&m(e).unusedTokens.push(a);m(e).charsLeftOver=u-s,l.length>0&&m(e).unusedInput.push(l),e._a[3]<=12&&!0===m(e).bigHour&&e._a[3]>0&&(m(e).bigHour=void 0),m(e).parsedDateParts=e._a.slice(0),m(e).meridiem=e._meridiem,e._a[3]=function(e,t,n){var r;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((r=e.isPM(n))&&t<12&&(t+=12),r||12!==t||(t=0),t):t}(e._locale,e._a[3],e._meridiem),null!==(c=m(e).era)&&(e._a[0]=e._locale.erasConvertYear(c,e._a[0])),wt(e),ut(e)}else gt(e);else _t(e)}function kt(e){var t=e._i,n=e._f;return e._locale=e._locale||lt(e._l),null===t||void 0===n&&""===t?y({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),w(t)?new M(ut(t)):(f(t)?e._d=t:a(n)?function(e){var t,n,r,o,a,i,c=!1;if(0===e._f.length)return m(e).invalidFormat=!0,void(e._d=new Date(NaN));for(o=0;o<e._f.length;o++)a=0,i=!1,t=g({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[o],Ot(t),v(t)&&(i=!0),a+=m(t).charsLeftOver,a+=10*m(t).unusedTokens.length,m(t).score=a,c?a<r&&(r=a,n=t):(null==r||a<r||i)&&(r=a,n=t,i&&(c=!0));p(e,n||t)}(e):n?Ot(e):function(e){var t=e._i;u(t)?e._d=new Date(o.now()):f(t)?e._d=new Date(t.valueOf()):"string"==typeof t?function(e){var t=mt.exec(e._i);null===t?(_t(e),!1===e._isValid&&(delete e._isValid,gt(e),!1===e._isValid&&(delete e._isValid,e._strict?e._isValid=!1:o.createFromInputFallback(e)))):e._d=new Date(+t[1])}(e):a(t)?(e._a=d(t.slice(0),(function(e){return parseInt(e,10)})),wt(e)):i(t)?function(e){if(!e._d){var t=I(e._i),n=void 0===t.day?t.date:t.day;e._a=d([t.year,t.month,n,t.hour,t.minute,t.second,t.millisecond],(function(e){return e&&parseInt(e,10)})),wt(e)}}(e):s(t)?e._d=new Date(t):o.createFromInputFallback(e)}(e),v(e)||(e._d=null),e))}function Lt(e,t,n,r,o){var c,u={};return!0!==t&&!1!==t||(r=t,t=void 0),!0!==n&&!1!==n||(r=n,n=void 0),(i(e)&&l(e)||a(e)&&0===e.length)&&(e=void 0),u._isAMomentObject=!0,u._useUTC=u._isUTC=o,u._l=n,u._i=e,u._f=t,u._strict=r,(c=new M(ut(kt(u))))._nextDay&&(c.add(1,"d"),c._nextDay=void 0),c}function xt(e,t,n,r){return Lt(e,t,n,r,!1)}o.createFromInputFallback=k("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))})),o.ISO_8601=function(){},o.RFC_2822=function(){};var zt=k("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=xt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:y()})),St=k("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=xt.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:y()}));function Ct(e,t){var n,r;if(1===t.length&&a(t[0])&&(t=t[0]),!t.length)return xt();for(n=t[0],r=1;r<t.length;++r)t[r].isValid()&&!t[r][e](n)||(n=t[r]);return n}var jt=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Et(e){var t=I(e),n=t.year||0,r=t.quarter||0,o=t.month||0,a=t.week||t.isoWeek||0,i=t.day||0,l=t.hour||0,u=t.minute||0,s=t.second||0,f=t.millisecond||0;this._isValid=function(e){var t,n,r=!1;for(t in e)if(c(e,t)&&(-1===ye.call(jt,t)||null!=e[t]&&isNaN(e[t])))return!1;for(n=0;n<jt.length;++n)if(e[jt[n]]){if(r)return!1;parseFloat(e[jt[n]])!==q(e[jt[n]])&&(r=!0)}return!0}(t),this._milliseconds=+f+1e3*s+6e4*u+1e3*l*60*60,this._days=+i+7*a,this._months=+o+3*r+12*n,this._data={},this._locale=lt(),this._bubble()}function Tt(e){return e instanceof Et}function Pt(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ht(e,t){Y(e,0,0,(function(){var e=this.utcOffset(),n="+";return e<0&&(e=-e,n="-"),n+E(~~(e/60),2)+t+E(~~e%60,2)}))}Ht("Z",":"),Ht("ZZ",""),he("Z",de),he("ZZ",de),be(["Z","ZZ"],(function(e,t,n){n._useUTC=!0,n._tzm=Yt(de,e)}));var Dt=/([\+\-]|\d\d)/gi;function Yt(e,t){var n,r,o=(t||"").match(e);return null===o?null:0===(r=60*(n=((o[o.length-1]||[])+"").match(Dt)||["-",0,0])[1]+q(n[2]))?0:"+"===n[0]?r:-r}function Vt(e,t){var n,r;return t._isUTC?(n=t.clone(),r=(w(e)||f(e)?e.valueOf():xt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+r),o.updateOffset(n,!1),n):xt(e).local()}function Nt(e){return-Math.round(e._d.getTimezoneOffset())}function Ft(){return!!this.isValid()&&this._isUTC&&0===this._offset}o.updateOffset=function(){};var At=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Rt=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function It(e,t){var n,r,o,a,i,l,u=e,f=null;return Tt(e)?u={ms:e._milliseconds,d:e._days,M:e._months}:s(e)||!isNaN(+e)?(u={},t?u[t]=+e:u.milliseconds=+e):(f=At.exec(e))?(n="-"===f[1]?-1:1,u={y:0,d:q(f[2])*n,h:q(f[3])*n,m:q(f[4])*n,s:q(f[5])*n,ms:q(Pt(1e3*f[6]))*n}):(f=Rt.exec(e))?(n="-"===f[1]?-1:1,u={y:Wt(f[2],n),M:Wt(f[3],n),w:Wt(f[4],n),d:Wt(f[5],n),h:Wt(f[6],n),m:Wt(f[7],n),s:Wt(f[8],n)}):null==u?u={}:"object"==typeof u&&("from"in u||"to"in u)&&(a=xt(u.from),i=xt(u.to),o=a.isValid()&&i.isValid()?(i=Vt(i,a),a.isBefore(i)?l=Ut(a,i):((l=Ut(i,a)).milliseconds=-l.milliseconds,l.months=-l.months),l):{milliseconds:0,months:0},(u={}).ms=o.milliseconds,u.M=o.months),r=new Et(u),Tt(e)&&c(e,"_locale")&&(r._locale=e._locale),Tt(e)&&c(e,"_isValid")&&(r._isValid=e._isValid),r}function Wt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Ut(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function Kt(e,t){return function(n,r){var o;return null===r||isNaN(+r)||(z(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),o=n,n=r,r=o),Bt(this,It(n,r),e),this}}function Bt(e,t,n,r){var a=t._milliseconds,i=Pt(t._days),c=Pt(t._months);e.isValid()&&(r=null==r||r,c&&Ce(e,G(e,"Month")+c*n),i&&J(e,"Date",G(e,"Date")+i*n),a&&e._d.setTime(e._d.valueOf()+a*n),r&&o.updateOffset(e,i||c))}It.fn=Et.prototype,It.invalid=function(){return It(NaN)};var qt=Kt(1,"add"),$t=Kt(-1,"subtract");function Gt(e){return"string"==typeof e||e instanceof String}function Jt(e){return w(e)||f(e)||Gt(e)||s(e)||function(e){var t=a(e),n=!1;return t&&(n=0===e.filter((function(t){return!s(t)&&Gt(e)})).length),t&&n}(e)||function(e){var t,n,r=i(e)&&!l(e),o=!1,a=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"];for(t=0;t<a.length;t+=1)n=a[t],o=o||c(e,n);return r&&o}(e)||null==e}function Qt(e){var t,n=i(e)&&!l(e),r=!1,o=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"];for(t=0;t<o.length;t+=1)r=r||c(e,o[t]);return n&&r}function Xt(e,t){if(e.date()<t.date())return-Xt(t,e);var n=12*(t.year()-e.year())+(t.month()-e.month()),r=e.clone().add(n,"months");return-(n+(t-r<0?(t-r)/(r-e.clone().add(n-1,"months")):(t-r)/(e.clone().add(n+1,"months")-r)))||0}function Zt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=lt(e))&&(this._locale=t),this)}o.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",o.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var en=k("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function tn(){return this._locale}function nn(e,t){return(e%t+t)%t}function rn(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-126227808e5:new Date(e,t,n).valueOf()}function on(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-126227808e5:Date.UTC(e,t,n)}function an(e,t){return t.erasAbbrRegex(e)}function cn(){var e,t,n=[],r=[],o=[],a=[],i=this.eras();for(e=0,t=i.length;e<t;++e)r.push(ve(i[e].name)),n.push(ve(i[e].abbr)),o.push(ve(i[e].narrow)),a.push(ve(i[e].name)),a.push(ve(i[e].abbr)),a.push(ve(i[e].narrow));this._erasRegex=new RegExp("^("+a.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+r.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+n.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+o.join("|")+")","i")}function ln(e,t){Y(0,[e,e.length],0,t)}function un(e,t,n,r,o){var a;return null==e?Ne(this,r,o).year:(t>(a=Fe(e,r,o))&&(t=a),sn.call(this,e,t,n,r,o))}function sn(e,t,n,r,o){var a=Ve(e,t,n,r,o),i=De(a.year,0,a.dayOfYear);return this.year(i.getUTCFullYear()),this.month(i.getUTCMonth()),this.date(i.getUTCDate()),this}Y("N",0,0,"eraAbbr"),Y("NN",0,0,"eraAbbr"),Y("NNN",0,0,"eraAbbr"),Y("NNNN",0,0,"eraName"),Y("NNNNN",0,0,"eraNarrow"),Y("y",["y",1],"yo","eraYear"),Y("y",["yy",2],0,"eraYear"),Y("y",["yyy",3],0,"eraYear"),Y("y",["yyyy",4],0,"eraYear"),he("N",an),he("NN",an),he("NNN",an),he("NNNN",(function(e,t){return t.erasNameRegex(e)})),he("NNNNN",(function(e,t){return t.erasNarrowRegex(e)})),be(["N","NN","NNN","NNNN","NNNNN"],(function(e,t,n,r){var o=n._locale.erasParse(e,r,n._strict);o?m(n).era=o:m(n).invalidEra=e})),he("y",ue),he("yy",ue),he("yyy",ue),he("yyyy",ue),he("yo",(function(e,t){return t._eraYearOrdinalRegex||ue})),be(["y","yy","yyy","yyyy"],0),be(["yo"],(function(e,t,n,r){var o;n._locale._eraYearOrdinalRegex&&(o=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[0]=n._locale.eraYearOrdinalParse(e,o):t[0]=parseInt(e,10)})),Y(0,["gg",2],0,(function(){return this.weekYear()%100})),Y(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),ln("gggg","weekYear"),ln("ggggg","weekYear"),ln("GGGG","isoWeekYear"),ln("GGGGG","isoWeekYear"),A("weekYear","gg"),A("isoWeekYear","GG"),U("weekYear",1),U("isoWeekYear",1),he("G",se),he("g",se),he("GG",re,Z),he("gg",re,Z),he("GGGG",ce,te),he("gggg",ce,te),he("GGGGG",le,ne),he("ggggg",le,ne),ge(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,n,r){t[r.substr(0,2)]=q(e)})),ge(["gg","GG"],(function(e,t,n,r){t[r]=o.parseTwoDigitYear(e)})),Y("Q",0,"Qo","quarter"),A("quarter","Q"),U("quarter",7),he("Q",X),be("Q",(function(e,t){t[1]=3*(q(e)-1)})),Y("D",["DD",2],"Do","date"),A("date","D"),U("date",9),he("D",re),he("DD",re,Z),he("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),be(["D","DD"],2),be("Do",(function(e,t){t[2]=q(e.match(re)[0])}));var fn=$("Date",!0);Y("DDD",["DDDD",3],"DDDo","dayOfYear"),A("dayOfYear","DDD"),U("dayOfYear",4),he("DDD",ie),he("DDDD",ee),be(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=q(e)})),Y("m",["mm",2],0,"minute"),A("minute","m"),U("minute",14),he("m",re),he("mm",re,Z),be(["m","mm"],4);var dn=$("Minutes",!1);Y("s",["ss",2],0,"second"),A("second","s"),U("second",15),he("s",re),he("ss",re,Z),be(["s","ss"],5);var pn,hn,mn=$("Seconds",!1);for(Y("S",0,0,(function(){return~~(this.millisecond()/100)})),Y(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),Y(0,["SSS",3],0,"millisecond"),Y(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),Y(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),Y(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),Y(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),Y(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),Y(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),A("millisecond","ms"),U("millisecond",16),he("S",ie,X),he("SS",ie,Z),he("SSS",ie,ee),pn="SSSS";pn.length<=9;pn+="S")he(pn,ue);function vn(e,t){t[6]=q(1e3*("0."+e))}for(pn="S";pn.length<=9;pn+="S")be(pn,vn);hn=$("Milliseconds",!1),Y("z",0,0,"zoneAbbr"),Y("zz",0,0,"zoneName");var yn=M.prototype;function _n(e){return e}yn.add=qt,yn.calendar=function(e,t){1===arguments.length&&(Jt(arguments[0])?(e=arguments[0],t=void 0):Qt(arguments[0])&&(t=arguments[0],e=void 0));var n=e||xt(),r=Vt(n,this).startOf("day"),a=o.calendarFormat(this,r)||"sameElse",i=t&&(S(t[a])?t[a].call(this,n):t[a]);return this.format(i||this.localeData().calendar(a,this,xt(n)))},yn.clone=function(){return new M(this)},yn.diff=function(e,t,n){var r,o,a;if(!this.isValid())return NaN;if(!(r=Vt(e,this)).isValid())return NaN;switch(o=6e4*(r.utcOffset()-this.utcOffset()),t=R(t)){case"year":a=Xt(this,r)/12;break;case"month":a=Xt(this,r);break;case"quarter":a=Xt(this,r)/3;break;case"second":a=(this-r)/1e3;break;case"minute":a=(this-r)/6e4;break;case"hour":a=(this-r)/36e5;break;case"day":a=(this-r-o)/864e5;break;case"week":a=(this-r-o)/6048e5;break;default:a=this-r}return n?a:B(a)},yn.endOf=function(e){var t,n;if(void 0===(e=R(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?on:rn,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=36e5-nn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":t=this._d.valueOf(),t+=6e4-nn(t,6e4)-1;break;case"second":t=this._d.valueOf(),t+=1e3-nn(t,1e3)-1}return this._d.setTime(t),o.updateOffset(this,!0),this},yn.format=function(e){e||(e=this.isUtc()?o.defaultFormatUtc:o.defaultFormat);var t=V(this,e);return this.localeData().postformat(t)},yn.from=function(e,t){return this.isValid()&&(w(e)&&e.isValid()||xt(e).isValid())?It({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},yn.fromNow=function(e){return this.from(xt(),e)},yn.to=function(e,t){return this.isValid()&&(w(e)&&e.isValid()||xt(e).isValid())?It({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},yn.toNow=function(e){return this.to(xt(),e)},yn.get=function(e){return S(this[e=R(e)])?this[e]():this},yn.invalidAt=function(){return m(this).overflow},yn.isAfter=function(e,t){var n=w(e)?e:xt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=R(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},yn.isBefore=function(e,t){var n=w(e)?e:xt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=R(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},yn.isBetween=function(e,t,n,r){var o=w(e)?e:xt(e),a=w(t)?t:xt(t);return!!(this.isValid()&&o.isValid()&&a.isValid())&&(("("===(r=r||"()")[0]?this.isAfter(o,n):!this.isBefore(o,n))&&(")"===r[1]?this.isBefore(a,n):!this.isAfter(a,n)))},yn.isSame=function(e,t){var n,r=w(e)?e:xt(e);return!(!this.isValid()||!r.isValid())&&("millisecond"===(t=R(t)||"millisecond")?this.valueOf()===r.valueOf():(n=r.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},yn.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},yn.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},yn.isValid=function(){return v(this)},yn.lang=en,yn.locale=Zt,yn.localeData=tn,yn.max=St,yn.min=zt,yn.parsingFlags=function(){return p({},m(this))},yn.set=function(e,t){if("object"==typeof e){var n,r=function(e){var t,n=[];for(t in e)c(e,t)&&n.push({unit:t,priority:W[t]});return n.sort((function(e,t){return e.priority-t.priority})),n}(e=I(e));for(n=0;n<r.length;n++)this[r[n].unit](e[r[n].unit])}else if(S(this[e=R(e)]))return this[e](t);return this},yn.startOf=function(e){var t,n;if(void 0===(e=R(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?on:rn,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=nn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":t=this._d.valueOf(),t-=nn(t,6e4);break;case"second":t=this._d.valueOf(),t-=nn(t,1e3)}return this._d.setTime(t),o.updateOffset(this,!0),this},yn.subtract=$t,yn.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},yn.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},yn.toDate=function(){return new Date(this.valueOf())},yn.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||n.year()>9999?V(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):S(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",V(n,"Z")):V(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},yn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,n,r="moment",o="";return this.isLocal()||(r=0===this.utcOffset()?"moment.utc":"moment.parseZone",o="Z"),e="["+r+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=o+'[")]',this.format(e+t+"-MM-DD[T]HH:mm:ss.SSS"+n)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(yn[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),yn.toJSON=function(){return this.isValid()?this.toISOString():null},yn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},yn.unix=function(){return Math.floor(this.valueOf()/1e3)},yn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},yn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},yn.eraName=function(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;e<t;++e){if(n=this.startOf("day").valueOf(),r[e].since<=n&&n<=r[e].until)return r[e].name;if(r[e].until<=n&&n<=r[e].since)return r[e].name}return""},yn.eraNarrow=function(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;e<t;++e){if(n=this.startOf("day").valueOf(),r[e].since<=n&&n<=r[e].until)return r[e].narrow;if(r[e].until<=n&&n<=r[e].since)return r[e].narrow}return""},yn.eraAbbr=function(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;e<t;++e){if(n=this.startOf("day").valueOf(),r[e].since<=n&&n<=r[e].until)return r[e].abbr;if(r[e].until<=n&&n<=r[e].since)return r[e].abbr}return""},yn.eraYear=function(){var e,t,n,r,a=this.localeData().eras();for(e=0,t=a.length;e<t;++e)if(n=a[e].since<=a[e].until?1:-1,r=this.startOf("day").valueOf(),a[e].since<=r&&r<=a[e].until||a[e].until<=r&&r<=a[e].since)return(this.year()-o(a[e].since).year())*n+a[e].offset;return this.year()},yn.year=Pe,yn.isLeapYear=function(){return K(this.year())},yn.weekYear=function(e){return un.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},yn.isoWeekYear=function(e){return un.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},yn.quarter=yn.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},yn.month=je,yn.daysInMonth=function(){return we(this.year(),this.month())},yn.week=yn.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},yn.isoWeek=yn.isoWeeks=function(e){var t=Ne(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},yn.weeksInYear=function(){var e=this.localeData()._week;return Fe(this.year(),e.dow,e.doy)},yn.weeksInWeekYear=function(){var e=this.localeData()._week;return Fe(this.weekYear(),e.dow,e.doy)},yn.isoWeeksInYear=function(){return Fe(this.year(),1,4)},yn.isoWeeksInISOWeekYear=function(){return Fe(this.isoWeekYear(),1,4)},yn.date=fn,yn.day=yn.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},yn.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},yn.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},yn.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},yn.hour=yn.hours=Ze,yn.minute=yn.minutes=dn,yn.second=yn.seconds=mn,yn.millisecond=yn.milliseconds=hn,yn.utcOffset=function(e,t,n){var r,a=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=Yt(de,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(r=Nt(this)),this._offset=e,this._isUTC=!0,null!=r&&this.add(r,"m"),a!==e&&(!t||this._changeInProgress?Bt(this,It(e-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,o.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?a:Nt(this)},yn.utc=function(e){return this.utcOffset(0,e)},yn.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Nt(this),"m")),this},yn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Yt(fe,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},yn.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?xt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},yn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},yn.isLocal=function(){return!!this.isValid()&&!this._isUTC},yn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},yn.isUtc=Ft,yn.isUTC=Ft,yn.zoneAbbr=function(){return this._isUTC?"UTC":""},yn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},yn.dates=k("dates accessor is deprecated. Use date instead.",fn),yn.months=k("months accessor is deprecated. Use month instead",je),yn.years=k("years accessor is deprecated. Use year instead",Pe),yn.zone=k("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()})),yn.isDSTShifted=k("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!u(this._isDSTShifted))return this._isDSTShifted;var e,t={};return g(t,this),(t=kt(t))._a?(e=t._isUTC?h(t._a):xt(t._a),this._isDSTShifted=this.isValid()&&function(e,t,n){var r,o=Math.min(e.length,t.length),a=Math.abs(e.length-t.length),i=0;for(r=0;r<o;r++)(n&&e[r]!==t[r]||!n&&q(e[r])!==q(t[r]))&&i++;return i+a}(t._a,e.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}));var bn=j.prototype;function gn(e,t,n,r){var o=lt(),a=h().set(r,t);return o[n](a,e)}function Mn(e,t,n){if(s(e)&&(t=e,e=void 0),e=e||"",null!=t)return gn(e,t,n,"month");var r,o=[];for(r=0;r<12;r++)o[r]=gn(e,r,n,"month");return o}function wn(e,t,n,r){"boolean"==typeof e?(s(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,s(t)&&(n=t,t=void 0),t=t||"");var o,a=lt(),i=e?a._week.dow:0,c=[];if(null!=n)return gn(t,(n+i)%7,r,"day");for(o=0;o<7;o++)c[o]=gn(t,(o+i)%7,r,"day");return c}bn.calendar=function(e,t,n){var r=this._calendar[e]||this._calendar.sameElse;return S(r)?r.call(t,n):r},bn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(T).map((function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e})).join(""),this._longDateFormat[e])},bn.invalidDate=function(){return this._invalidDate},bn.ordinal=function(e){return this._ordinal.replace("%d",e)},bn.preparse=_n,bn.postformat=_n,bn.relativeTime=function(e,t,n,r){var o=this._relativeTime[n];return S(o)?o(e,t,n,r):o.replace(/%d/i,e)},bn.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return S(n)?n(t):n.replace(/%s/i,t)},bn.set=function(e){var t,n;for(n in e)c(e,n)&&(S(t=e[n])?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},bn.eras=function(e,t){var n,r,a,i=this._eras||lt("en")._eras;for(n=0,r=i.length;n<r;++n){switch(typeof i[n].since){case"string":a=o(i[n].since).startOf("day"),i[n].since=a.valueOf()}switch(typeof i[n].until){case"undefined":i[n].until=1/0;break;case"string":a=o(i[n].until).startOf("day").valueOf(),i[n].until=a.valueOf()}}return i},bn.erasParse=function(e,t,n){var r,o,a,i,c,l=this.eras();for(e=e.toUpperCase(),r=0,o=l.length;r<o;++r)if(a=l[r].name.toUpperCase(),i=l[r].abbr.toUpperCase(),c=l[r].narrow.toUpperCase(),n)switch(t){case"N":case"NN":case"NNN":if(i===e)return l[r];break;case"NNNN":if(a===e)return l[r];break;case"NNNNN":if(c===e)return l[r]}else if([a,i,c].indexOf(e)>=0)return l[r]},bn.erasConvertYear=function(e,t){var n=e.since<=e.until?1:-1;return void 0===t?o(e.since).year():o(e.since).year()+(t-e.offset)*n},bn.erasAbbrRegex=function(e){return c(this,"_erasAbbrRegex")||cn.call(this),e?this._erasAbbrRegex:this._erasRegex},bn.erasNameRegex=function(e){return c(this,"_erasNameRegex")||cn.call(this),e?this._erasNameRegex:this._erasRegex},bn.erasNarrowRegex=function(e){return c(this,"_erasNarrowRegex")||cn.call(this),e?this._erasNarrowRegex:this._erasRegex},bn.months=function(e,t){return e?a(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Le).test(t)?"format":"standalone"][e.month()]:a(this._months)?this._months:this._months.standalone},bn.monthsShort=function(e,t){return e?a(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Le.test(t)?"format":"standalone"][e.month()]:a(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},bn.monthsParse=function(e,t,n){var r,o,a;if(this._monthsParseExact)return Se.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(o=h([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(a="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[r]=new RegExp(a.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[r].test(e))return r;if(n&&"MMM"===t&&this._shortMonthsParse[r].test(e))return r;if(!n&&this._monthsParse[r].test(e))return r}},bn.monthsRegex=function(e){return this._monthsParseExact?(c(this,"_monthsRegex")||Ee.call(this),e?this._monthsStrictRegex:this._monthsRegex):(c(this,"_monthsRegex")||(this._monthsRegex=ze),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},bn.monthsShortRegex=function(e){return this._monthsParseExact?(c(this,"_monthsRegex")||Ee.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,"_monthsShortRegex")||(this._monthsShortRegex=xe),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},bn.week=function(e){return Ne(e,this._week.dow,this._week.doy).week},bn.firstDayOfYear=function(){return this._week.doy},bn.firstDayOfWeek=function(){return this._week.dow},bn.weekdays=function(e,t){var n=a(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Ae(n,this._week.dow):e?n[e.day()]:n},bn.weekdaysMin=function(e){return!0===e?Ae(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},bn.weekdaysShort=function(e){return!0===e?Ae(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},bn.weekdaysParse=function(e,t,n){var r,o,a;if(this._weekdaysParseExact)return qe.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(o=h([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(o,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(o,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(o,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(a="^"+this.weekdays(o,"")+"|^"+this.weekdaysShort(o,"")+"|^"+this.weekdaysMin(o,""),this._weekdaysParse[r]=new RegExp(a.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[r].test(e))return r;if(n&&"ddd"===t&&this._shortWeekdaysParse[r].test(e))return r;if(n&&"dd"===t&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}},bn.weekdaysRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||$e.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=Ue),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},bn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||$e.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ke),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},bn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||$e.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Be),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},bn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},bn.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},it("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===q(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),o.lang=k("moment.lang is deprecated. Use moment.locale instead.",it),o.langData=k("moment.langData is deprecated. Use moment.localeData instead.",lt);var On=Math.abs;function kn(e,t,n,r){var o=It(t,n);return e._milliseconds+=r*o._milliseconds,e._days+=r*o._days,e._months+=r*o._months,e._bubble()}function Ln(e){return e<0?Math.floor(e):Math.ceil(e)}function xn(e){return 4800*e/146097}function zn(e){return 146097*e/4800}function Sn(e){return function(){return this.as(e)}}var Cn=Sn("ms"),jn=Sn("s"),En=Sn("m"),Tn=Sn("h"),Pn=Sn("d"),Hn=Sn("w"),Dn=Sn("M"),Yn=Sn("Q"),Vn=Sn("y");function Nn(e){return function(){return this.isValid()?this._data[e]:NaN}}var Fn=Nn("milliseconds"),An=Nn("seconds"),Rn=Nn("minutes"),In=Nn("hours"),Wn=Nn("days"),Un=Nn("months"),Kn=Nn("years"),Bn=Math.round,qn={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function $n(e,t,n,r,o){return o.relativeTime(t||1,!!n,e,r)}var Gn=Math.abs;function Jn(e){return(e>0)-(e<0)||+e}function Qn(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n,r,o,a,i,c,l=Gn(this._milliseconds)/1e3,u=Gn(this._days),s=Gn(this._months),f=this.asSeconds();return f?(e=B(l/60),t=B(e/60),l%=60,e%=60,n=B(s/12),s%=12,r=l?l.toFixed(3).replace(/\.?0+$/,""):"",o=f<0?"-":"",a=Jn(this._months)!==Jn(f)?"-":"",i=Jn(this._days)!==Jn(f)?"-":"",c=Jn(this._milliseconds)!==Jn(f)?"-":"",o+"P"+(n?a+n+"Y":"")+(s?a+s+"M":"")+(u?i+u+"D":"")+(t||e||l?"T":"")+(t?c+t+"H":"")+(e?c+e+"M":"")+(l?c+r+"S":"")):"P0D"}var Xn=Et.prototype;return Xn.isValid=function(){return this._isValid},Xn.abs=function(){var e=this._data;return this._milliseconds=On(this._milliseconds),this._days=On(this._days),this._months=On(this._months),e.milliseconds=On(e.milliseconds),e.seconds=On(e.seconds),e.minutes=On(e.minutes),e.hours=On(e.hours),e.months=On(e.months),e.years=On(e.years),this},Xn.add=function(e,t){return kn(this,e,t,1)},Xn.subtract=function(e,t){return kn(this,e,t,-1)},Xn.as=function(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if("month"===(e=R(e))||"quarter"===e||"year"===e)switch(t=this._days+r/864e5,n=this._months+xn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(zn(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return 24*t+r/36e5;case"minute":return 1440*t+r/6e4;case"second":return 86400*t+r/1e3;case"millisecond":return Math.floor(864e5*t)+r;default:throw new Error("Unknown unit "+e)}},Xn.asMilliseconds=Cn,Xn.asSeconds=jn,Xn.asMinutes=En,Xn.asHours=Tn,Xn.asDays=Pn,Xn.asWeeks=Hn,Xn.asMonths=Dn,Xn.asQuarters=Yn,Xn.asYears=Vn,Xn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*q(this._months/12):NaN},Xn._bubble=function(){var e,t,n,r,o,a=this._milliseconds,i=this._days,c=this._months,l=this._data;return a>=0&&i>=0&&c>=0||a<=0&&i<=0&&c<=0||(a+=864e5*Ln(zn(c)+i),i=0,c=0),l.milliseconds=a%1e3,e=B(a/1e3),l.seconds=e%60,t=B(e/60),l.minutes=t%60,n=B(t/60),l.hours=n%24,i+=B(n/24),o=B(xn(i)),c+=o,i-=Ln(zn(o)),r=B(c/12),c%=12,l.days=i,l.months=c,l.years=r,this},Xn.clone=function(){return It(this)},Xn.get=function(e){return e=R(e),this.isValid()?this[e+"s"]():NaN},Xn.milliseconds=Fn,Xn.seconds=An,Xn.minutes=Rn,Xn.hours=In,Xn.days=Wn,Xn.weeks=function(){return B(this.days()/7)},Xn.months=Un,Xn.years=Kn,Xn.humanize=function(e,t){if(!this.isValid())return this.localeData().invalidDate();var n,r,o=!1,a=qn;return"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(o=e),"object"==typeof t&&(a=Object.assign({},qn,t),null!=t.s&&null==t.ss&&(a.ss=t.s-1)),n=this.localeData(),r=function(e,t,n,r){var o=It(e).abs(),a=Bn(o.as("s")),i=Bn(o.as("m")),c=Bn(o.as("h")),l=Bn(o.as("d")),u=Bn(o.as("M")),s=Bn(o.as("w")),f=Bn(o.as("y")),d=a<=n.ss&&["s",a]||a<n.s&&["ss",a]||i<=1&&["m"]||i<n.m&&["mm",i]||c<=1&&["h"]||c<n.h&&["hh",c]||l<=1&&["d"]||l<n.d&&["dd",l];return null!=n.w&&(d=d||s<=1&&["w"]||s<n.w&&["ww",s]),(d=d||u<=1&&["M"]||u<n.M&&["MM",u]||f<=1&&["y"]||["yy",f])[2]=t,d[3]=+e>0,d[4]=r,$n.apply(null,d)}(this,!o,a,n),o&&(r=n.pastFuture(+this,r)),n.postformat(r)},Xn.toISOString=Qn,Xn.toString=Qn,Xn.toJSON=Qn,Xn.locale=Zt,Xn.localeData=tn,Xn.toIsoString=k("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Qn),Xn.lang=en,Y("X",0,0,"unix"),Y("x",0,0,"valueOf"),he("x",se),he("X",/[+-]?\d+(\.\d{1,3})?/),be("X",(function(e,t,n){n._d=new Date(1e3*parseFloat(e))})),be("x",(function(e,t,n){n._d=new Date(q(e))})), //! moment.js o.version="2.27.0",t=xt,o.fn=yn,o.min=function(){var e=[].slice.call(arguments,0);return Ct("isBefore",e)},o.max=function(){var e=[].slice.call(arguments,0);return Ct("isAfter",e)},o.now=function(){return Date.now?Date.now():+new Date},o.utc=h,o.unix=function(e){return xt(1e3*e)},o.months=function(e,t){return Mn(e,t,"months")},o.isDate=f,o.locale=it,o.invalid=y,o.duration=It,o.isMoment=w,o.weekdays=function(e,t,n){return wn(e,t,n,"weekdays")},o.parseZone=function(){return xt.apply(null,arguments).parseZone()},o.localeData=lt,o.isDuration=Tt,o.monthsShort=function(e,t){return Mn(e,t,"monthsShort")},o.weekdaysMin=function(e,t,n){return wn(e,t,n,"weekdaysMin")},o.defineLocale=ct,o.updateLocale=function(e,t){if(null!=t){var n,r,o=et;null!=tt[e]&&null!=tt[e].parentLocale?tt[e].set(C(tt[e]._config,t)):(null!=(r=at(e))&&(o=r._config),t=C(o,t),null==r&&(t.abbr=e),(n=new j(t)).parentLocale=tt[e],tt[e]=n),it(e)}else null!=tt[e]&&(null!=tt[e].parentLocale?(tt[e]=tt[e].parentLocale,e===it()&&it(e)):null!=tt[e]&&delete tt[e]);return tt[e]},o.locales=function(){return L(tt)},o.weekdaysShort=function(e,t,n){return wn(e,t,n,"weekdaysShort")},o.normalizeUnits=R,o.relativeTimeRounding=function(e){return void 0===e?Bn:"function"==typeof e&&(Bn=e,!0)},o.relativeTimeThreshold=function(e,t){return void 0!==qn[e]&&(void 0===t?qn[e]:(qn[e]=t,"s"===e&&(qn.ss=t-1),!0))},o.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},o.prototype=yn,o.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},o}()}).call(this,n(143)(e))},function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}n.d(t,"a",(function(){return r}))},function(e,t){function n(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=n=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=n=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),n(t)}e.exports=n,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(123);var o=n(89),a=n(124);function i(e,t){return Object(r.a)(e)||function(e,t){var n=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null!=n){var r,o,a=[],i=!0,c=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){c=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(c)throw o}}return a}}(e,t)||Object(o.a)(e,t)||Object(a.a)()}},function(e,t,n){var r=n(8).default;function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(o=function(e){return e?n:t})(e)}e.exports=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=o(t);if(n&&n.has(e))return n.get(e);var a={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var c in e)if("default"!==c&&Object.prototype.hasOwnProperty.call(e,c)){var l=i?Object.getOwnPropertyDescriptor(e,c):null;l&&(l.get||l.set)?Object.defineProperty(a,c,l):a[c]=e[c]}return a.default=e,n&&n.set(e,a),a},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}}(),e.exports=n(436)},function(e,t){function n(){return e.exports=n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},e.exports.default=e.exports,e.exports.__esModule=!0,n.apply(this,arguments)}e.exports=n,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(99);var o=n(122),a=n(89);function i(e){return function(e){if(Array.isArray(e))return Object(r.a)(e)}(e)||Object(o.a)(e)||Object(a.a)(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},function(e,t,n){"use strict";function r(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(24),o=n(19);function a(e){return function t(n,a){switch(arguments.length){case 0:return t;case 1:return Object(o.a)(n)?t:Object(r.a)((function(t){return e(n,t)}));default:return Object(o.a)(n)&&Object(o.a)(a)?t:Object(o.a)(n)?Object(r.a)((function(t){return e(t,a)})):Object(o.a)(a)?Object(r.a)((function(t){return e(n,t)})):e(n,a)}}}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(447),a=(r=o)&&r.__esModule?r:{default:r};t.default=a.default||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}},function(e,t,n){"use strict";var r={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,isTextModifyingKeyEvent:function(e){var t=e.keyCode;if(e.altKey&&!e.ctrlKey||e.metaKey||t>=r.F1&&t<=r.F12)return!1;switch(t){case r.ALT:case r.CAPS_LOCK:case r.CONTEXT_MENU:case r.CTRL:case r.DOWN:case r.END:case r.ESC:case r.HOME:case r.INSERT:case r.LEFT:case r.MAC_FF_META:case r.META:case r.NUMLOCK:case r.NUM_CENTER:case r.PAGE_DOWN:case r.PAGE_UP:case r.PAUSE:case r.PRINT_SCREEN:case r.RIGHT:case r.SHIFT:case r.UP:case r.WIN_KEY:case r.WIN_KEY_RIGHT:return!1;default:return!0}},isCharacterKey:function(e){if(e>=r.ZERO&&e<=r.NINE)return!0;if(e>=r.NUM_ZERO&&e<=r.NUM_MULTIPLY)return!0;if(e>=r.A&&e<=r.Z)return!0;if(-1!==window.navigator.userAgent.indexOf("WebKit")&&0===e)return!0;switch(e){case r.SPACE:case r.QUESTION_MARK:case r.NUM_PLUS:case r.NUM_MINUS:case r.NUM_PERIOD:case r.NUM_DIVISION:case r.SEMICOLON:case r.DASH:case r.EQUALS:case r.COMMA:case r.PERIOD:case r.SLASH:case r.APOSTROPHE:case r.SINGLE_QUOTE:case r.OPEN_SQUARE_BRACKET:case r.BACKSLASH:case r.CLOSE_SQUARE_BRACKET:return!0;default:return!1}}};t.a=r},function(e,t,n){"use strict";function r(e){return null!=e&&"object"==typeof e&&!0===e["@@functional/placeholder"]}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function o(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}n.d(t,"a",(function(){return o}))},function(e,t,n){"use strict";function r(e){return(r=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}n.d(t,"a",(function(){return l}));var o=n(8),a=n.n(o),i=n(30);function c(e,t){return!t||"object"!==a()(t)&&"function"!=typeof t?Object(i.a)(e):t}function l(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,o=r(e);if(t){var a=r(this).constructor;n=Reflect.construct(o,arguments,a)}else n=o.apply(this,arguments);return c(this,n)}}},function(e,t,n){"use strict";function r(e,t){return(r=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&r(e,t)}n.d(t,"a",(function(){return o}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(19);function o(e){return function t(n){return 0===arguments.length||Object(r.a)(n)?t:e.apply(this,arguments)}}},function(e,t,n){var r=n(339),o=n(510),a=n(147),i=n(341);e.exports=function(e,t){return r(e)||o(e,t)||a(e,t)||i()},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ConfigConsumer",{enumerable:!0,get:function(){return d.ConfigConsumer}}),Object.defineProperty(t,"ConfigContext",{enumerable:!0,get:function(){return d.ConfigContext}}),t.default=t.globalConfig=t.defaultPrefixCls=t.configConsumerProps=void 0;var a=r(n(12)),i=y(n(0)),c=r(n(153)),l=n(875),u=r(n(550)),s=y(n(551)),f=r(n(155)),d=n(156),p=y(n(97)),h=r(n(358)),m=r(n(576));function v(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(v=function(e){return e?n:t})(e)}function y(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=v(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}return r.default=e,n&&n.set(e,r),r}t.configConsumerProps=["getTargetContainer","getPopupContainer","rootPrefixCls","getPrefixCls","renderEmpty","csp","autoInsertSpaceInButton","locale","pageHeader"];var _,b=["getTargetContainer","getPopupContainer","renderEmpty","pageHeader","input","form"];t.defaultPrefixCls="ant";function g(){return _||"ant"}t.globalConfig=function(){return{getPrefixCls:function(e,t){return t||(e?"".concat(g(),"-").concat(e):g())},getRootPrefixCls:function(e,t){return e||(_||(t&&t.includes("-")?t.replace(/^(.*)-[^-]*$/,"$1"):g()))}}};var M=function(e){var t=e.children,n=e.csp,r=e.autoInsertSpaceInButton,o=e.form,f=e.locale,h=e.componentSize,m=e.direction,v=e.space,y=e.virtual,_=e.dropdownMatchSelectWidth,g=e.legacyLocale,M=e.parentContext,w=e.iconPrefixCls,O=i.useCallback((function(t,n){var r=e.prefixCls;if(n)return n;var o=r||M.getPrefixCls("");return t?"".concat(o,"-").concat(t):o}),[M.getPrefixCls]),k=(0,a.default)((0,a.default)({},M),{csp:n,autoInsertSpaceInButton:r,locale:f||g,direction:m,space:v,virtual:y,dropdownMatchSelectWidth:_,getPrefixCls:O});b.forEach((function(t){var n=e[t];n&&(k[t]=n)}));var L=(0,u.default)((function(){return k}),k,(function(e,t){var n=Object.keys(e),r=Object.keys(t);return n.length!==r.length||n.some((function(n){return e[n]!==t[n]}))})),x=i.useMemo((function(){return{prefixCls:w,csp:n}}),[w]),z=t,S={};return f&&f.Form&&f.Form.defaultValidateMessages&&(S=f.Form.defaultValidateMessages),o&&o.validateMessages&&(S=(0,a.default)((0,a.default)({},S),o.validateMessages)),Object.keys(S).length>0&&(z=i.createElement(l.FormProvider,{validateMessages:S},t)),f&&(z=i.createElement(s.default,{locale:f,_ANT_MARK__:s.ANT_MARK},z)),w&&(z=i.createElement(c.default.Provider,{value:x},z)),h&&(z=i.createElement(p.SizeContextProvider,{size:h},z)),i.createElement(d.ConfigContext.Provider,{value:L},z)},w=function(e){return i.useEffect((function(){e.direction&&(h.default.config({rtl:"rtl"===e.direction}),m.default.config({rtl:"rtl"===e.direction}))}),[e.direction]),i.createElement(f.default,null,(function(t,n,r){return i.createElement(d.ConfigConsumer,null,(function(t){return i.createElement(M,(0,a.default)({parentContext:t,legacyLocale:r},e))}))}))};w.ConfigContext=d.ConfigContext,w.SizeContext=p.default,w.config=function(e){void 0!==e.prefixCls&&(_=e.prefixCls)};var O=w;t.default=O},function(e,t,n){"use strict";n.d(t,"b",(function(){return c}));var r={};function o(e,t){0}function a(e,t){0}function i(e,t,n){t||r[n]||(e(!1,n),r[n]=!0)}function c(e,t){i(a,e,t)}t.a=function(e,t){i(o,e,t)}},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(25)),i=o(n(13)),c=o(n(57)),l=r(n(0)),u=o(n(2)),s=o(n(153)),f=o(n(359)),d=n(562),p=n(158);(0,d.setTwoToneColor)("#1890ff");var h=l.forwardRef((function(e,t){var n,r=e.className,o=e.icon,d=e.spin,h=e.rotate,m=e.tabIndex,v=e.onClick,y=e.twoToneColor,_=(0,c.default)(e,["className","icon","spin","rotate","tabIndex","onClick","twoToneColor"]),b=l.useContext(s.default).prefixCls,g=void 0===b?"anticon":b,M=(0,u.default)(g,(n={},(0,i.default)(n,"".concat(g,"-").concat(o.name),!!o.name),(0,i.default)(n,"".concat(g,"-spin"),!!d||"loading"===o.name),n),r),w=m;void 0===w&&v&&(w=-1);var O=h?{msTransform:"rotate(".concat(h,"deg)"),transform:"rotate(".concat(h,"deg)")}:void 0,k=(0,p.normalizeTwoToneColors)(y),L=(0,a.default)(k,2),x=L[0],z=L[1];return l.createElement("span",Object.assign({role:"img","aria-label":o.name},_,{ref:t,tabIndex:w,onClick:v,className:M}),l.createElement(f.default,{icon:o,primaryColor:x,secondaryColor:z,style:O}))}));h.displayName="AntdIcon",h.getTwoToneColor=d.getTwoToneColor,h.setTwoToneColor=d.setTwoToneColor;var m=h;t.default=m},function(e,t,n){"use strict";function r(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.convertFieldsError=i,t.format=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=1,o=t[0],i=t.length;if("function"==typeof o)return o.apply(null,t.slice(1));if("string"==typeof o){for(var c=String(o).replace(a,(function(e){if("%%"===e)return"%";if(r>=i)return e;switch(e){case"%s":return String(t[r++]);case"%d":return Number(t[r++]);case"%j":try{return JSON.stringify(t[r++])}catch(e){return"[Circular]"}break;default:return e}})),l=t[r];r<i;l=t[++r])c+=" "+l;return c}return o},t.isEmptyValue=function(e,t){if(null==e)return!0;if("array"===t&&Array.isArray(e)&&!e.length)return!0;if(function(e){return"string"===e||"url"===e||"hex"===e||"email"===e||"pattern"===e}(t)&&"string"==typeof e&&!e)return!0;return!1},t.isEmptyObject=function(e){return 0===Object.keys(e).length},t.asyncMap=function(e,t,n,r){if(t.first){return c(function(e){var t=[];return Object.keys(e).forEach((function(n){t.push.apply(t,e[n])})),t}(e),n,r)}var o=t.firstFields||[];!0===o&&(o=Object.keys(e));var a=Object.keys(e),l=a.length,u=0,s=[],f=new Promise((function(t,f){var d=function(e){if(s.push.apply(s,e),++u===l)return r(s),s.length?f({errors:s,fields:i(s)}):t()};a.forEach((function(t){var r=e[t];-1!==o.indexOf(t)?c(r,n,d):function(e,t,n){var r=[],o=0,a=e.length;function i(e){r.push.apply(r,e),++o===a&&n(r)}e.forEach((function(e){t(e,i)}))}(r,n,d)}))}));return f.catch((function(e){return e})),f},t.complementError=function(e){return function(t){return t&&t.message?(t.field=t.field||e.fullField,t):{message:"function"==typeof t?t():t,field:t.field||e.fullField}}},t.deepMerge=function(e,t){if(t)for(var n in t)if(t.hasOwnProperty(n)){var a=t[n];"object"===(void 0===a?"undefined":o(a))&&"object"===o(e[n])?e[n]=r({},e[n],a):e[n]=a}return e};var a=/%[sdj%]/g;t.warning=function(){};function i(e){if(!e||!e.length)return null;var t={};return e.forEach((function(e){var n=e.field;t[n]=t[n]||[],t[n].push(e)})),t}function c(e,t,n){var r=0,o=e.length;!function a(i){if(i&&i.length)n(i);else{var c=r;r+=1,c<o?t(e[c],a):n([])}}([])}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ConfigConsumer",{enumerable:!0,get:function(){return c.ConfigConsumer}}),t.default=t.configConsumerProps=void 0;var r,o=u(n(0)),a=u(n(496)),i=(r=n(107))&&r.__esModule?r:{default:r},c=n(499);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function u(e){if(e&&e.__esModule)return e;if(null===e||"object"!==s(e)&&"function"!=typeof e)return{default:e};var t=l();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function f(){return(f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function p(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function m(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=y(e);if(t){var o=y(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return v(this,n)}}function v(e,t){return!t||"object"!==s(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function y(e){return(y=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}t.configConsumerProps=["getPopupContainer","rootPrefixCls","getPrefixCls","renderEmpty","csp","autoInsertSpaceInButton","locale","pageHeader"];var _=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&h(e,t)}(u,e);var t,n,r,l=m(u);function u(){var e;return d(this,u),(e=l.apply(this,arguments)).getPrefixCls=function(t,n){var r=e.props.prefixCls,o=void 0===r?"ant":r;return n||(t?"".concat(o,"-").concat(t):o)},e.renderProvider=function(t,n){var r=e.props,i=r.children,l=r.getPopupContainer,u=r.renderEmpty,s=r.csp,d=r.autoInsertSpaceInButton,p=r.locale,h=r.pageHeader,m=f(f({},t),{getPrefixCls:e.getPrefixCls,csp:s,autoInsertSpaceInButton:d});return l&&(m.getPopupContainer=l),u&&(m.renderEmpty=u),h&&(m.pageHeader=h),o.createElement(c.ConfigContext.Provider,{value:m},o.createElement(a.default,{locale:p||n,_ANT_MARK__:a.ANT_MARK},i))},e}return t=u,(n=[{key:"render",value:function(){var e=this;return o.createElement(i.default,null,(function(t,n,r){return o.createElement(c.ConfigConsumer,null,(function(t){return e.renderProvider(t,r)}))}))}}])&&p(t.prototype,n),r&&p(t,r),u}(o.Component);t.default=_},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=m(n(0)),a=p(n(2)),i=m(n(486)),c=p(n(409)),l=p(n(489)),u=n(490),s=p(n(56)),f=p(n(107)),d=n(495);function p(e){return e&&e.__esModule?e:{default:e}}function h(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return h=function(){return e},e}function m(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=h();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&&t.set(e,n),n}function v(){return(v=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var b,g=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n};c.default.add.apply(c.default,function(e){if(Array.isArray(e))return _(e)}(b=Object.keys(i).map((function(e){return i[e]})))||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(b)||function(e,t){if(e){if("string"==typeof e)return _(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_(e,t):void 0}}(b)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),(0,d.setTwoToneColor)("#1890ff");var M,w="outlined";var O=function(e){var t,n=e.className,r=e.type,i=e.component,l=e.viewBox,d=e.spin,p=e.rotate,h=e.tabIndex,m=e.onClick,_=e.children,b=e.theme,O=e.twoToneColor,k=g(e,["className","type","component","viewBox","spin","rotate","tabIndex","onClick","children","theme","twoToneColor"]);(0,s.default)(Boolean(r||i||_),"Icon","Should have `type` prop or `component` prop or `children`.");var L=(0,a.default)((y(t={},"anticon",!0),y(t,"anticon-".concat(r),Boolean(r)),t),n),x=(0,a.default)(y({},"anticon-spin",!!d||"loading"===r)),z=p?{msTransform:"rotate(".concat(p,"deg)"),transform:"rotate(".concat(p,"deg)")}:void 0,S=v(v({},u.svgBaseProps),{className:x,style:z,viewBox:l});l||delete S.viewBox;var C=h;return void 0===C&&m&&(C=-1),o.createElement(f.default,{componentName:"Icon"},(function(e){return o.createElement("i",v({"aria-label":r&&"".concat(e.icon,": ").concat(r)},k,{tabIndex:C,onClick:m,className:L}),function(){if(i)return o.createElement(i,S,_);if(_)return(0,s.default)(Boolean(l)||1===o.Children.count(_)&&o.isValidElement(_)&&"use"===o.Children.only(_).type,"Icon","Make sure that you provide correct `viewBox` prop (default `0 0 1024 1024`) to the icon."),o.createElement("svg",v({},S,{viewBox:l}),_);if("string"==typeof r){var e=r;if(b){var t=(0,u.getThemeFromTypeName)(r);(0,s.default)(!t||b===t,"Icon","The icon name '".concat(r,"' already specify a theme '").concat(t,"',")+" the 'theme' prop '".concat(b,"' will be ignored."))}return e=(0,u.withThemeSuffix)((0,u.removeTypeTheme)((0,u.alias)(e)),M||b||w),o.createElement(c.default,{className:x,type:e,primaryColor:O,style:z})}}())}))};O.createFromIconfontCN=l.default,O.getTwoToneColor=d.getTwoToneColor,O.setTwoToneColor=d.setTwoToneColor;var k=O;t.default=k},function(e,t){e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),i=Object.keys(t);if(a.length!==i.length)return!1;for(var c=Object.prototype.hasOwnProperty.bind(t),l=0;l<a.length;l++){var u=a[l];if(!c(u))return!1;var s=e[u],f=t[u];if(!1===(o=n?n.call(r,s,f,u):void 0)||void 0===o&&s!==f)return!1}return!0}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(400)),o=u(n(840)),a=u(n(841)),i=u(n(842)),c=u(n(843)),l=u(n(844));function u(e){return e&&e.__esModule?e:{default:e}}t.default={required:r.default,whitespace:o.default,type:a.default,range:i.default,enum:c.default,pattern:l.default}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(120),a=(r=o)&&r.__esModule?r:{default:r};t.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,a.default)(t))&&"function"!=typeof t?e:t}},function(e,t,n){"use strict";t.__esModule=!0;var r=i(n(477)),o=i(n(481)),a=i(n(120));function i(e){return e&&e.__esModule?e:{default:e}}t.default=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":(0,a.default)(t)));e.prototype=(0,o.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(r.default?(0,r.default)(e,t):e.__proto__=t)}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(195),a=(r=o)&&r.__esModule?r:{default:r};t.default=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),(0,a.default)(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}()},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(195),a=(r=o)&&r.__esModule?r:{default:r};t.default=function(e,t,n){return t in e?(0,a.default)(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function l(e,t){return(l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function u(e){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}n.r(t);var s=n(420),f=n.n(s);function d(e,t){return!t||"object"!==f()(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function p(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=u(e);if(t){var o=u(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return d(this,n)}}var h=n(0),m=n.n(h),v=n(11),y=n.n(v);var _=n(126);var b={};function g(e,t){0}function M(e,t,n){t||b[n]||(e(!1,n),b[n]=!0)}var w=function(e,t){M(g,e,t)};function O(e){return(O="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function k(e,t){"function"==typeof e?e(t):"object"===O(e)&&e&&"current"in e&&(e.current=t)}function L(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){t.forEach((function(t){k(t,e)}))}}var x=n(82),z=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&l(e,t)}(u,e);var t,n,r,o=p(u);function u(){var e;return i(this,u),(e=o.apply(this,arguments)).resizeObserver=null,e.childNode=null,e.currentElement=null,e.state={width:0,height:0,offsetHeight:0,offsetWidth:0},e.onResize=function(t){var n=e.props.onResize,r=t[0].target,o=r.getBoundingClientRect(),i=o.width,c=o.height,l=r.offsetWidth,u=r.offsetHeight,s=Math.floor(i),f=Math.floor(c);if(e.state.width!==s||e.state.height!==f||e.state.offsetWidth!==l||e.state.offsetHeight!==u){var d={width:s,height:f,offsetWidth:l,offsetHeight:u};e.setState(d),n&&Promise.resolve().then((function(){n(a(a({},d),{},{offsetWidth:l,offsetHeight:u}),r)}))}},e.setChildNode=function(t){e.childNode=t},e}return t=u,(n=[{key:"componentDidMount",value:function(){this.onComponentUpdated()}},{key:"componentDidUpdate",value:function(){this.onComponentUpdated()}},{key:"componentWillUnmount",value:function(){this.destroyObserver()}},{key:"onComponentUpdated",value:function(){if(this.props.disabled)this.destroyObserver();else{var e,t=(e=this.childNode||this)instanceof HTMLElement?e:y.a.findDOMNode(e);t!==this.currentElement&&(this.destroyObserver(),this.currentElement=t),!this.resizeObserver&&t&&(this.resizeObserver=new x.default(this.onResize),this.resizeObserver.observe(t))}}},{key:"destroyObserver",value:function(){this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}},{key:"render",value:function(){var e=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=[];return m.a.Children.forEach(t,(function(t){(null!=t||n.keepEmpty)&&(Array.isArray(t)?r=r.concat(e(t)):Object(_.isFragment)(t)&&t.props?r=r.concat(e(t.props.children,n)):r.push(t))})),r}(this.props.children);if(e.length>1)w(!1,"Find more than one child node with `children` in ResizeObserver. Will only observe first one.");else if(0===e.length)return w(!1,"`children` of ResizeObserver is empty. Nothing is in observe."),null;var t,n,r,o,a=e[0];if(h.isValidElement(a)&&(t=a,("function"!=typeof(o=Object(_.isMemo)(t)?t.type.type:t.type)||(null===(n=o.prototype)||void 0===n?void 0:n.render))&&("function"!=typeof t||(null===(r=t.prototype)||void 0===r?void 0:r.render)))){var i=a.ref;e[0]=h.cloneElement(a,{ref:L(i,this.setChildNode)})}return 1===e.length?e[0]:e.map((function(e,t){return!h.isValidElement(e)||"key"in e&&null!==e.key?e:h.cloneElement(e,{key:"".concat("rc-observer-key","-").concat(t)})}))}}])&&c(t.prototype,n),r&&c(t,r),u}(h.Component);z.displayName="ResizeObserver";t.default=z},function(e,t,n){"use strict";n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return i})),n.d(t,"c",(function(){return c}));var r=n(28),o=n(81);function a(e,t){"function"==typeof e?e(t):"object"===Object(r.a)(e)&&e&&"current"in e&&(e.current=t)}function i(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){t.forEach((function(t){a(t,e)}))}}function c(e){var t,n,r=Object(o.isMemo)(e)?e.type.type:e.type;return!("function"==typeof r&&!(null===(t=r.prototype)||void 0===t?void 0:t.render))&&!("function"==typeof e&&!(null===(n=e.prototype)||void 0===n?void 0:n.render))}},function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(11),o=n.n(r);function a(e,t,n,r){var a=o.a.unstable_batchedUpdates?function(e){o.a.unstable_batchedUpdates(n,e)}:n;return e.addEventListener&&e.addEventListener(t,a,r),{remove:function(){e.removeEventListener&&e.removeEventListener(t,a)}}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return l}));var r=function(e){return+setTimeout(e,16)},o=function(e){return clearTimeout(e)};"undefined"!=typeof window&&"requestAnimationFrame"in window&&(r=function(e){return window.requestAnimationFrame(e)},o=function(e){return window.cancelAnimationFrame(e)});var a=0,i=new Map;function c(e){i.delete(e)}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=a+=1;function o(t){if(0===t)c(n),e();else{var a=r((function(){o(t-1)}));i.set(n,a)}}return o(t),n}l.cancel=function(e){var t=i.get(e);return c(t),o(t)}},function(e,t,n){var r=n(13);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}e.exports=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){var r=n(514),o=n(342),a=n(147),i=n(515);e.exports=function(e){return r(e)||o(e)||a(e)||i()},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null!=n){var r,o,a=[],i=!0,c=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){c=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(c)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}n.r(t),n.d(t,"CSSMotionList",(function(){return ce}));var u=n(0),s=n(11),f=n.n(s);n(424);function d(e,t){"function"==typeof e?e(t):"object"===l(e)&&e&&"current"in e&&(e.current=t)}var p=n(2),h=n.n(p);function m(){return!("undefined"==typeof window||!window.document||!window.document.createElement)}function v(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit".concat(e)]="webkit".concat(t),n["Moz".concat(e)]="moz".concat(t),n["ms".concat(e)]="MS".concat(t),n["O".concat(e)]="o".concat(t.toLowerCase()),n}var y,_,b,g=(y=m(),_="undefined"!=typeof window?window:{},b={animationend:v("Animation","AnimationEnd"),transitionend:v("Transition","TransitionEnd")},y&&("AnimationEvent"in _||delete b.animationend.animation,"TransitionEvent"in _||delete b.transitionend.transition),b),M={};if(m()){var w=document.createElement("div");M=w.style}var O={};function k(e){if(O[e])return O[e];var t=g[e];if(t)for(var n=Object.keys(t),r=n.length,o=0;o<r;o+=1){var a=n[o];if(Object.prototype.hasOwnProperty.call(t,a)&&a in M)return O[e]=t[a],O[e]}return""}var L=k("animationend"),x=k("transitionend"),z=!(!L||!x),S=L||"animationend",C=x||"transitionend";function j(e,t){return e?"object"===l(e)?e[t.replace(/-\w/g,(function(e){return e[1].toUpperCase()}))]:"".concat(e,"-").concat(t):null}function E(e){var t=Object(u.useRef)(!1),n=c(Object(u.useState)(e),2),r=n[0],o=n[1];return Object(u.useEffect)((function(){return function(){t.current=!0}}),[]),[r,function(e){t.current||o(e)}]}var T=m()?u.useLayoutEffect:u.useEffect,P=function(e){return+setTimeout(e,16)},H=function(e){return clearTimeout(e)};"undefined"!=typeof window&&"requestAnimationFrame"in window&&(P=function(e){return window.requestAnimationFrame(e)},H=function(e){return window.cancelAnimationFrame(e)});var D=0,Y=new Map;function V(e){Y.delete(e)}function N(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=D+=1;function r(t){if(0===t)V(n),e();else{var o=P((function(){r(t-1)}));Y.set(n,o)}}return r(t),n}N.cancel=function(e){var t=Y.get(e);return V(t),H(t)};var F=["prepare","start","active","end"];function A(e){return"active"===e||"end"===e}var R=function(e,t){var n=c(u.useState("none"),2),r=n[0],o=n[1],a=c(function(){var e=u.useRef(null);function t(){N.cancel(e.current)}return u.useEffect((function(){return function(){t()}}),[]),[function n(r){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;t();var a=N((function(){o<=1?r({isCanceled:function(){return a!==e.current}}):n(r,o-1)}));e.current=a},t]}(),2),i=a[0],l=a[1];return T((function(){if("none"!==r&&"end"!==r){var e=F.indexOf(r),n=F[e+1],a=t(r);!1===a?o(n):i((function(e){function t(){e.isCanceled()||o(n)}!0===a?t():Promise.resolve(a).then(t)}))}}),[e,r]),u.useEffect((function(){return function(){l()}}),[]),[function(){o("prepare")},r]};function I(e,t,n,o){var i=o.motionEnter,l=void 0===i||i,s=o.motionAppear,f=void 0===s||s,d=o.motionLeave,p=void 0===d||d,h=o.motionDeadline,m=o.motionLeaveImmediately,v=o.onAppearPrepare,y=o.onEnterPrepare,_=o.onLeavePrepare,b=o.onAppearStart,g=o.onEnterStart,M=o.onLeaveStart,w=o.onAppearActive,O=o.onEnterActive,k=o.onLeaveActive,L=o.onAppearEnd,x=o.onEnterEnd,z=o.onLeaveEnd,j=o.onVisibleChanged,P=c(E(),2),H=P[0],D=P[1],Y=c(E("none"),2),V=Y[0],N=Y[1],F=c(E(null),2),I=F[0],W=F[1],U=Object(u.useRef)(!1),K=Object(u.useRef)(null),B=Object(u.useRef)(!1),q=Object(u.useRef)(null);function $(){return n()||q.current}var G=Object(u.useRef)(!1);function J(e){var t,n=$();e&&!e.deadline&&e.target!==n||("appear"===V&&G.current?t=null==L?void 0:L(n,e):"enter"===V&&G.current?t=null==x?void 0:x(n,e):"leave"===V&&G.current&&(t=null==z?void 0:z(n,e)),!1===t||B.current||(N("none"),W(null)))}var Q=c(function(e){var t=Object(u.useRef)(),n=Object(u.useRef)(e);n.current=e;var r=u.useCallback((function(e){n.current(e)}),[]);function o(e){e&&(e.removeEventListener(C,r),e.removeEventListener(S,r))}return u.useEffect((function(){return function(){o(t.current)}}),[]),[function(e){t.current&&t.current!==e&&o(t.current),e&&e!==t.current&&(e.addEventListener(C,r),e.addEventListener(S,r),t.current=e)},o]}(J),1)[0],X=u.useMemo((function(){var e,t,n;switch(V){case"appear":return r(e={},"prepare",v),r(e,"start",b),r(e,"active",w),e;case"enter":return r(t={},"prepare",y),r(t,"start",g),r(t,"active",O),t;case"leave":return r(n={},"prepare",_),r(n,"start",M),r(n,"active",k),n;default:return{}}}),[V]),Z=c(R(V,(function(e){if("prepare"===e){var t=X.prepare;return!!t&&t($())}var n;te in X&&W((null===(n=X[te])||void 0===n?void 0:n.call(X,$(),null))||null);return"active"===te&&(Q($()),h>0&&(clearTimeout(K.current),K.current=setTimeout((function(){J({deadline:!0})}),h))),!0})),2),ee=Z[0],te=Z[1],ne=A(te);G.current=ne,T((function(){D(t);var n,r=U.current;(U.current=!0,e)&&(!r&&t&&f&&(n="appear"),r&&t&&l&&(n="enter"),(r&&!t&&p||!r&&m&&!t&&p)&&(n="leave"),n&&(N(n),ee()))}),[t]),Object(u.useEffect)((function(){("appear"===V&&!f||"enter"===V&&!l||"leave"===V&&!p)&&N("none")}),[f,l,p]),Object(u.useEffect)((function(){return function(){clearTimeout(K.current),B.current=!0}}),[]),Object(u.useEffect)((function(){void 0!==H&&"none"===V&&(null==j||j(H))}),[H,V]);var re=I;return X.prepare&&"start"===te&&(re=a({transition:"none"},re)),[V,te,re,null!=H?H:t]}function W(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function U(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function K(e,t,n){return t&&U(e.prototype,t),n&&U(e,n),e}function B(e,t){return(B=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function q(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&B(e,t)}function $(e){return($=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var G=n(425),J=n.n(G);function Q(e,t){return!t||"object"!==J()(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function X(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=$(e);if(t){var o=$(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return Q(this,n)}}var Z=function(e){q(n,e);var t=X(n);function n(){return W(this,n),t.apply(this,arguments)}return K(n,[{key:"render",value:function(){return this.props.children}}]),n}(u.Component);var ee=function(e){var t=e;function n(e){return!(!e.motionName||!t)}"object"===l(e)&&(t=e.transitionSupport);var o=u.forwardRef((function(e,t){var o=e.visible,i=void 0===o||o,l=e.removeOnLeave,s=void 0===l||l,p=e.forceRender,m=e.children,v=e.motionName,y=e.leavedClassName,_=e.eventProps,b=n(e),g=Object(u.useRef)(),M=Object(u.useRef)();var w=c(I(b,i,(function(){try{return(e=g.current||M.current)instanceof HTMLElement?e:f.a.findDOMNode(e)}catch(e){return null}var e}),e),4),O=w[0],k=w[1],L=w[2],x=w[3],z=u.useRef(x);x&&(z.current=!0);var S=Object(u.useRef)(t);S.current=t;var C,E=u.useCallback((function(e){g.current=e,d(S.current,e)}),[]),T=a(a({},_),{},{visible:i});if(m)if("none"!==O&&n(e)){var P,H;"prepare"===k?H="prepare":A(k)?H="active":"start"===k&&(H="start"),C=m(a(a({},T),{},{className:h()(j(v,O),(P={},r(P,j(v,"".concat(O,"-").concat(H)),H),r(P,v,"string"==typeof v),P)),style:L}),E)}else C=x?m(a({},T),E):!s&&z.current?m(a(a({},T),{},{className:y}),E):p?m(a(a({},T),{},{style:{display:"none"}}),E):null;else C=null;return u.createElement(Z,{ref:M},C)}));return o.displayName="CSSMotion",o}(z);function te(){return(te=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function ne(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function re(e){var t;return a(a({},t=e&&"object"===l(e)&&"key"in e?e:{key:e}),{},{key:String(t.key)})}function oe(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return e.map(re)}function ae(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=[],r=0,o=t.length,i=oe(e),c=oe(t);i.forEach((function(e){for(var t=!1,i=r;i<o;i+=1){var l=c[i];if(l.key===e.key){r<i&&(n=n.concat(c.slice(r,i).map((function(e){return a(a({},e),{},{status:"add"})}))),r=i),n.push(a(a({},l),{},{status:"keep"})),r+=1,t=!0;break}}t||n.push(a(a({},e),{},{status:"remove"}))})),r<o&&(n=n.concat(c.slice(r).map((function(e){return a(a({},e),{},{status:"add"})}))));var l={};n.forEach((function(e){var t=e.key;l[t]=(l[t]||0)+1}));var u=Object.keys(l).filter((function(e){return l[e]>1}));return u.forEach((function(e){(n=n.filter((function(t){var n=t.key,r=t.status;return n!==e||"remove"!==r}))).forEach((function(t){t.key===e&&(t.status="keep")}))})),n}var ie=["eventProps","visible","children","motionName","motionAppear","motionEnter","motionLeave","motionLeaveImmediately","motionDeadline","removeOnLeave","leavedClassName","onAppearStart","onAppearActive","onAppearEnd","onEnterStart","onEnterActive","onEnterEnd","onLeaveStart","onLeaveActive","onLeaveEnd"];var ce=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ee,n=function(e){q(r,e);var n=X(r);function r(){var e;return W(this,r),(e=n.apply(this,arguments)).state={keyEntities:[]},e.removeKey=function(t){e.setState((function(e){return{keyEntities:e.keyEntities.map((function(e){return e.key!==t?e:a(a({},e),{},{status:"removed"})}))}}))},e}return K(r,[{key:"render",value:function(){var e=this,n=this.state.keyEntities,r=this.props,o=r.component,a=r.children,i=r.onVisibleChanged,c=ne(r,["component","children","onVisibleChanged"]),l=o||u.Fragment,s={};return ie.forEach((function(e){s[e]=c[e],delete c[e]})),delete c.keys,u.createElement(l,c,n.map((function(n){var r=n.status,o=ne(n,["status"]),c="add"===r||"keep"===r;return u.createElement(t,te({},s,{key:o.key,visible:c,eventProps:o,onVisibleChanged:function(t){null==i||i(t,{key:o.key}),t||e.removeKey(o.key)}}),a)})))}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n=e.keys,r=t.keyEntities,o=oe(n);return{keyEntities:ae(r,o).filter((function(e){var t=r.find((function(t){var n=t.key;return e.key===n}));return!t||"removed"!==t.status||"remove"!==e.status}))}}}]),r}(u.Component);return n.defaultProps={component:"div"},n}(z);t.default=ee},,function(e,t){var n=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r=n(136)("wks"),o=n(104),a=n(64).Symbol,i="function"==typeof a;(e.exports=function(e){return r[e]||(r[e]=i&&a[e]||(i?a:o)("Symbol."+e))}).store=r},function(e,t,n){"use strict";var r=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(0)).createContext(null);t.default=o},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){var r=n(352),o="object"==typeof self&&self&&self.Object===Object&&self,a=r||o||Function("return this")();e.exports=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(739)),o=a(n(743));function a(e){return e&&e.__esModule?e:{default:e}}r.default.Group=o.default;var i=r.default;t.default=i},function(e,t,n){"use strict";(function(e){var r;n.d(t,"a",(function(){return K})),n.d(t,"b",(function(){return B})),n.d(t,"c",(function(){return c})),n.d(t,"d",(function(){return u})),n.d(t,"e",(function(){return U}));var o="undefined"!=typeof Symbol?Symbol("immer-nothing"):((r={})["immer-nothing"]=!0,r),a="undefined"!=typeof Symbol&&Symbol.for?Symbol.for("immer-draftable"):"__$immer_draftable",i="undefined"!=typeof Symbol&&Symbol.for?Symbol.for("immer-state"):"__$immer_state";function c(e){return!!e&&!!e[i]}function l(e){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e))return!0;var t=Object.getPrototypeOf(e);return!t||t===Object.prototype||(!!e[a]||!!e.constructor[a])}function u(e){if(e&&e[i])return e[i].base}var s=Object.assign||function(e,t){for(var n in t)m(t,n)&&(e[n]=t[n]);return e},f="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function d(e,t){if(void 0===t&&(t=!1),Array.isArray(e))return e.slice();var n=Object.create(Object.getPrototypeOf(e));return f(e).forEach((function(r){if(r!==i){var o=Object.getOwnPropertyDescriptor(e,r),a=o.value;o.get&&t&&(a=o.get.call(e)),o.enumerable?n[r]=a:t&&Object.defineProperty(n,r,{value:a,writable:!0,configurable:!0})}})),n}function p(e,t){if(Array.isArray(e))for(var n=0;n<e.length;n++)t(n,e[n],e);else f(e).forEach((function(n){return t(n,e[n],e)}))}function h(e,t){var n=Object.getOwnPropertyDescriptor(e,t);return!!n&&n.enumerable}function m(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function v(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}var y=function(e){this.drafts=[],this.parent=e,this.canAutoFreeze=!0,this.patches=null};function _(e){e[i].revoke()}y.prototype.usePatches=function(e){e&&(this.patches=[],this.inversePatches=[],this.patchListener=e)},y.prototype.revoke=function(){this.leave(),this.drafts.forEach(_),this.drafts=null},y.prototype.leave=function(){this===y.current&&(y.current=this.parent)},y.current=null,y.enter=function(){return this.current=new y(this.current)};var b={};function g(e,t){var n=Array.isArray(e),r=x(e);p(r,(function(t){!function(e,t,n){var r=b[t];r?r.enumerable=n:b[t]=r={configurable:!0,enumerable:n,get:function(){return function(e,t){z(e);var n=O(w(e),t);if(e.finalizing)return n;if(n===O(e.base,t)&&l(n))return L(e),e.copy[t]=g(n,e);return n}(this[i],t)},set:function(e){!function(e,t,n){if(z(e),e.assigned[t]=!0,!e.modified){if(v(n,O(w(e),t)))return;k(e),L(e)}e.copy[t]=n}(this[i],t,e)}};Object.defineProperty(e,t,r)}(r,t,n||h(e,t))}));var o,a,c,u=t?t.scope:y.current;return o=r,a=i,c={scope:u,modified:!1,finalizing:!1,finalized:!1,assigned:{},parent:t,base:e,draft:r,copy:null,revoke:M,revoked:!1},Object.defineProperty(o,a,{value:c,enumerable:!1,writable:!0}),u.drafts.push(r),r}function M(){this.revoked=!0}function w(e){return e.copy||e.base}function O(e,t){var n=e[i];if(n&&!n.finalizing){n.finalizing=!0;var r=e[t];return n.finalizing=!1,r}return e[t]}function k(e){e.modified||(e.modified=!0,e.parent&&k(e.parent))}function L(e){e.copy||(e.copy=x(e.base))}function x(e){var t=e&&e[i];if(t){t.finalizing=!0;var n=d(t.draft,!0);return t.finalizing=!1,n}return d(e)}function z(e){if(!0===e.revoked)throw new Error("Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+JSON.stringify(w(e)))}function S(e){for(var t=e.length-1;t>=0;t--){var n=e[t][i];n.modified||(Array.isArray(n.base)?j(n)&&k(n):C(n)&&k(n))}}function C(e){for(var t=e.base,n=e.draft,r=Object.keys(n),o=r.length-1;o>=0;o--){var a=r[o],c=t[a];if(void 0===c&&!m(t,a))return!0;var l=n[a],u=l&&l[i];if(u?u.base!==c:!v(l,c))return!0}return r.length!==Object.keys(t).length}function j(e){var t=e.draft;if(t.length!==e.base.length)return!0;var n=Object.getOwnPropertyDescriptor(t,t.length-1);return!(!n||n.get)}var E=Object.freeze({willFinalize:function(e,t,n){e.drafts.forEach((function(e){e[i].finalizing=!0})),n?c(t)&&t[i].scope===e&&S(e.drafts):(e.patches&&function e(t){if(!t||"object"!=typeof t)return;var n=t[i];if(!n)return;var r=n.base,o=n.draft,a=n.assigned;if(Array.isArray(t)){if(j(n)){if(k(n),a.length=!0,o.length<r.length)for(var c=o.length;c<r.length;c++)a[c]=!1;else for(var l=r.length;l<o.length;l++)a[l]=!0;for(var u=0;u<o.length;u++)void 0===a[u]&&e(o[u])}}else Object.keys(o).forEach((function(t){void 0!==r[t]||m(r,t)?a[t]||e(o[t]):(a[t]=!0,k(n))})),Object.keys(r).forEach((function(e){void 0!==o[e]||m(o,e)||(a[e]=!1,k(n))}))}(e.drafts[0]),S(e.drafts))},createProxy:g});function T(e,t){var n=t?t.scope:y.current,r={scope:n,modified:!1,finalized:!1,assigned:{},parent:t,base:e,draft:null,drafts:{},copy:null,revoke:null},o=Array.isArray(e)?Proxy.revocable([r],H):Proxy.revocable(r,P),a=o.revoke,i=o.proxy;return r.draft=i,r.revoke=a,n.drafts.push(i),i}var P={get:function(e,t){if(t===i)return e;var n=e.drafts;if(!e.modified&&m(n,t))return n[t];var r=D(e)[t];if(e.finalized||!l(r))return r;if(e.modified){if(r!==Y(e.base,t))return r;n=e.copy}return n[t]=T(r,e)},has:function(e,t){return t in D(e)},ownKeys:function(e){return Reflect.ownKeys(D(e))},set:function(e,t,n){if(!e.modified){var r=Y(e.base,t);if(n?v(r,n)||n===e.drafts[t]:v(r,n)&&t in e.base)return!0;V(e)}return e.assigned[t]=!0,e.copy[t]=n,!0},deleteProperty:function(e,t){(void 0!==Y(e.base,t)||t in e.base)&&(e.assigned[t]=!1,V(e));e.copy&&delete e.copy[t];return!0},getOwnPropertyDescriptor:function(e,t){var n=D(e),r=Reflect.getOwnPropertyDescriptor(n,t);r&&(r.writable=!0,r.configurable=!Array.isArray(n)||"length"!==t);return r},defineProperty:function(){throw new Error("Object.defineProperty() cannot be used on an Immer draft")},getPrototypeOf:function(e){return Object.getPrototypeOf(e.base)},setPrototypeOf:function(){throw new Error("Object.setPrototypeOf() cannot be used on an Immer draft")}},H={};function D(e){return e.copy||e.base}function Y(e,t){var n=e[i],r=Reflect.getOwnPropertyDescriptor(n?D(n):e,t);return r&&r.value}function V(e){e.modified||(e.modified=!0,e.copy=s(d(e.base),e.drafts),e.drafts=null,e.parent&&V(e.parent))}p(P,(function(e,t){H[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),H.deleteProperty=function(e,t){if(isNaN(parseInt(t)))throw new Error("Immer only supports deleting array indices");return P.deleteProperty.call(this,e[0],t)},H.set=function(e,t,n){if("length"!==t&&isNaN(parseInt(t)))throw new Error("Immer only supports setting array indices and the 'length' property");return P.set.call(this,e[0],t,n)};var N=Object.freeze({willFinalize:function(){},createProxy:T});function F(e,t,n,r){Array.isArray(e.base)?function(e,t,n,r){var o,a,i=e.base,c=e.copy,l=e.assigned;c.length<i.length&&(i=(o=[c,i])[0],c=o[1],n=(a=[r,n])[0],r=a[1]);var u=c.length-i.length,s=0;for(;i[s]===c[s]&&s<i.length;)++s;var f=i.length;for(;f>s&&i[f-1]===c[f+u-1];)--f;for(var d=s;d<f;++d)if(l[d]&&c[d]!==i[d]){var p=t.concat([d]);n.push({op:"replace",path:p,value:c[d]}),r.push({op:"replace",path:p,value:i[d]})}for(var h=f!=i.length,m=n.length,v=f+u-1;v>=f;--v){var y=t.concat([v]);n[m+v-f]={op:"add",path:y,value:c[v]},h&&r.push({op:"remove",path:y})}h||r.push({op:"replace",path:t.concat(["length"]),value:i.length})}(e,t,n,r):function(e,t,n,r){var o=e.base,a=e.copy;p(e.assigned,(function(e,i){var c=o[e],l=a[e],u=i?e in o?"replace":"add":"remove";if(c!==l||"replace"!==u){var s=t.concat(e);n.push("remove"===u?{op:u,path:s}:{op:u,path:s,value:l}),r.push("add"===u?{op:"remove",path:s}:"remove"===u?{op:"add",path:s,value:c}:{op:"replace",path:s,value:c})}}))}(e,t,n,r)}function A(e,t){for(var n=0;n<t.length;n++){var r=t[n],o=r.path;if(0===o.length&&"replace"===r.op)e=r.value;else{for(var a=e,i=0;i<o.length-1;i++)if(!(a=a[o[i]])||"object"!=typeof a)throw new Error("Cannot apply patch, path doesn't resolve: "+o.join("/"));var c=o[o.length-1];switch(r.op){case"replace":a[c]=r.value;break;case"add":Array.isArray(a)?a.splice(c,0,r.value):a[c]=r.value;break;case"remove":Array.isArray(a)?a.splice(c,1):delete a[c];break;default:throw new Error("Unsupported patch operation: "+r.op)}}}return e}var R={useProxies:"undefined"!=typeof Proxy&&"undefined"!=typeof Reflect,autoFreeze:void 0===e&&"verifyMinified"===function(){}.name,onAssign:null,onDelete:null,onCopy:null},I=function(e){s(this,R,e),this.setUseProxies(this.useProxies),this.produce=this.produce.bind(this)};I.prototype.produce=function(e,t,n){var r,a=this;if("function"==typeof e&&"function"!=typeof t){var i=t;t=e;var c=this;return function(e){var n=this;void 0===e&&(e=i);for(var r=[],o=arguments.length-1;o-- >0;)r[o]=arguments[o+1];return c.produce(e,(function(e){return t.call.apply(t,[n,e].concat(r))}))}}if("function"!=typeof t)throw new Error("The first or second argument to `produce` must be a function");if(void 0!==n&&"function"!=typeof n)throw new Error("The third argument to `produce` must be a function or undefined");if(l(e)){var u=y.enter(),s=this.createProxy(e),f=!0;try{r=t(s),f=!1}finally{f?u.revoke():u.leave()}return r instanceof Promise?r.then((function(e){return u.usePatches(n),a.processResult(e,u)}),(function(e){throw u.revoke(),e})):(u.usePatches(n),this.processResult(r,u))}return void 0===(r=t(e))?e:r!==o?r:void 0},I.prototype.createDraft=function(e){if(!l(e))throw new Error("First argument to `createDraft` must be a plain object, an array, or an immerable object");var t=y.enter(),n=this.createProxy(e);return n[i].isManual=!0,t.leave(),n},I.prototype.finishDraft=function(e,t){var n=e&&e[i];if(!n||!n.isManual)throw new Error("First argument to `finishDraft` must be a draft returned by `createDraft`");if(n.finalized)throw new Error("The given draft is already finalized");var r=n.scope;return r.usePatches(t),this.processResult(void 0,r)},I.prototype.setAutoFreeze=function(e){this.autoFreeze=e},I.prototype.setUseProxies=function(e){this.useProxies=e,s(this,e?N:E)},I.prototype.applyPatches=function(e,t){return c(e)?A(e,t):this.produce(e,(function(e){return A(e,t)}))},I.prototype.processResult=function(e,t){var n=t.drafts[0],r=void 0!==e&&e!==n;if(this.willFinalize(t,e,r),r){if(n[i].modified)throw t.revoke(),new Error("An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.");l(e)&&(e=this.finalize(e,null,t)),t.patches&&(t.patches.push({op:"replace",path:[],value:e}),t.inversePatches.push({op:"replace",path:[],value:n[i].base}))}else e=this.finalize(n,[],t);return t.revoke(),t.patches&&t.patchListener(t.patches,t.inversePatches),e!==o?e:void 0},I.prototype.finalize=function(e,t,n){var r=this,o=e[i];if(!o)return Object.isFrozen(e)?e:this.finalizeTree(e,null,n);if(o.scope!==n)return e;if(!o.modified)return o.base;if(!o.finalized){if(o.finalized=!0,this.finalizeTree(o.draft,t,n),this.onDelete)if(this.useProxies){var a=o.assigned;for(var c in a)a[c]||this.onDelete(o,c)}else{var l=o.base,u=o.copy;p(l,(function(e){m(u,e)||r.onDelete(o,e)}))}this.onCopy&&this.onCopy(o),this.autoFreeze&&n.canAutoFreeze&&Object.freeze(o.copy),t&&n.patches&&F(o,t,n.patches,n.inversePatches)}return o.copy},I.prototype.finalizeTree=function(e,t,n){var r=this,o=e[i];o&&(this.useProxies||(o.copy=d(o.draft,!0)),e=o.copy);var a=!!t&&!!n.patches,u=function(i,s,f){if(s===f)throw Error("Immer forbids circular references");var d=!!o&&f===e;if(c(s)){var m=d&&a&&!o.assigned[i]?t.concat(i):null;if(c(s=r.finalize(s,m,n))&&(n.canAutoFreeze=!1),Array.isArray(f)||h(f,i)?f[i]=s:Object.defineProperty(f,i,{value:s}),d&&s===o.base[i])return}else{if(d&&v(s,o.base[i]))return;l(s)&&!Object.isFrozen(s)&&p(s,u)}d&&r.onAssign&&r.onAssign(o,i,s)};return p(e,u),e};var W=new I,U=(W.produce,W.setAutoFreeze.bind(W)),K=(W.setUseProxies.bind(W),W.applyPatches.bind(W),W.createDraft.bind(W)),B=W.finishDraft.bind(W)}).call(this,n(101))},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"resetWarned",{enumerable:!0,get:function(){return o.resetWarned}}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=a();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var c=o?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(n,i,c):n[i]=e[i]}n.default=e,t&&t.set(e,n);return n}(n(202));function a(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return a=function(){return e},e}t.default=function(e,t,n){(0,o.default)(e,"[antd: ".concat(t,"] ").concat(n))}},function(e,t,n){var r=n(520);e.exports=function(e,t){if(null==e)return{};var n,o,a=r(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}e.exports=function(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){var r=n(536);e.exports=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&r(e,t)},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){var r=n(537),o=n(538),a=n(539);e.exports=function(e){var t=o();return function(){var n,o=r(e);if(t){var i=r(this).constructor;n=Reflect.construct(o,arguments,i)}else n=o.apply(this,arguments);return a(this,n)}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(0),o=n.n(r),a=n(81);function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[];return o.a.Children.forEach(e,(function(e){(null!=e||t.keepEmpty)&&(Array.isArray(e)?n=n.concat(i(e)):Object(a.isFragment)(e)&&e.props?n=n.concat(i(e.props.children,t)):n.push(e))})),n}},function(e,t,n){"use strict";n.r(t),n.d(t,"isCssAnimationSupported",(function(){return h}));var r=n(120),o=n.n(r),a={transitionstart:{transition:"transitionstart",WebkitTransition:"webkitTransitionStart",MozTransition:"mozTransitionStart",OTransition:"oTransitionStart",msTransition:"MSTransitionStart"},animationstart:{animation:"animationstart",WebkitAnimation:"webkitAnimationStart",MozAnimation:"mozAnimationStart",OAnimation:"oAnimationStart",msAnimation:"MSAnimationStart"}},i={transitionend:{transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"mozTransitionEnd",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd"},animationend:{animation:"animationend",WebkitAnimation:"webkitAnimationEnd",MozAnimation:"mozAnimationEnd",OAnimation:"oAnimationEnd",msAnimation:"MSAnimationEnd"}},c=[],l=[];function u(e,t,n){e.addEventListener(t,n,!1)}function s(e,t,n){e.removeEventListener(t,n,!1)}"undefined"!=typeof window&&"undefined"!=typeof document&&function(){var e=document.createElement("div").style;function t(t,n){for(var r in t)if(t.hasOwnProperty(r)){var o=t[r];for(var a in o)if(a in e){n.push(o[a]);break}}}"AnimationEvent"in window||(delete a.animationstart.animation,delete i.animationend.animation),"TransitionEvent"in window||(delete a.transitionstart.transition,delete i.transitionend.transition),t(a,c),t(i,l)}();var f={startEvents:c,addStartEventListener:function(e,t){0!==c.length?c.forEach((function(n){u(e,n,t)})):window.setTimeout(t,0)},removeStartEventListener:function(e,t){0!==c.length&&c.forEach((function(n){s(e,n,t)}))},endEvents:l,addEndEventListener:function(e,t){0!==l.length?l.forEach((function(n){u(e,n,t)})):window.setTimeout(t,0)},removeEndEventListener:function(e,t){0!==l.length&&l.forEach((function(n){s(e,n,t)}))}},d=n(417),p=n.n(d),h=0!==f.endEvents.length,m=["Webkit","Moz","O","ms"],v=["-webkit-","-moz-","-o-","ms-",""];function y(e,t){for(var n=window.getComputedStyle(e,null),r="",o=0;o<v.length&&!(r=n.getPropertyValue(v[o]+t));o++);return r}function _(e){if(h){var t=parseFloat(y(e,"transition-delay"))||0,n=parseFloat(y(e,"transition-duration"))||0,r=parseFloat(y(e,"animation-delay"))||0,o=parseFloat(y(e,"animation-duration"))||0,a=Math.max(n+t,o+r);e.rcEndAnimTimeout=setTimeout((function(){e.rcEndAnimTimeout=null,e.rcEndListener&&e.rcEndListener()}),1e3*a+200)}}function b(e){e.rcEndAnimTimeout&&(clearTimeout(e.rcEndAnimTimeout),e.rcEndAnimTimeout=null)}var g=function(e,t,n){var r="object"===(void 0===t?"undefined":o()(t)),a=r?t.name:t,i=r?t.active:t+"-active",c=n,l=void 0,u=void 0,s=p()(e);return n&&"[object Object]"===Object.prototype.toString.call(n)&&(c=n.end,l=n.start,u=n.active),e.rcEndListener&&e.rcEndListener(),e.rcEndListener=function(t){t&&t.target!==e||(e.rcAnimTimeout&&(clearTimeout(e.rcAnimTimeout),e.rcAnimTimeout=null),b(e),s.remove(a),s.remove(i),f.removeEndEventListener(e,e.rcEndListener),e.rcEndListener=null,c&&c())},f.addEndEventListener(e,e.rcEndListener),l&&l(),s.add(a),e.rcAnimTimeout=setTimeout((function(){e.rcAnimTimeout=null,s.add(i),u&&setTimeout(u,0),_(e)}),30),{stop:function(){e.rcEndListener&&e.rcEndListener()}}};g.style=function(e,t,n){e.rcEndListener&&e.rcEndListener(),e.rcEndListener=function(t){t&&t.target!==e||(e.rcAnimTimeout&&(clearTimeout(e.rcAnimTimeout),e.rcAnimTimeout=null),b(e),f.removeEndEventListener(e,e.rcEndListener),e.rcEndListener=null,n&&n())},f.addEndEventListener(e,e.rcEndListener),e.rcAnimTimeout=setTimeout((function(){for(var n in t)t.hasOwnProperty(n)&&(e.style[n]=t[n]);e.rcAnimTimeout=null,_(e)}),0)},g.setTransition=function(e,t,n){var r=t,o=n;void 0===n&&(o=r,r=""),r=r||"",m.forEach((function(t){e.style[t+"Transition"+r]=o}))},g.isCssAnimationSupported=h;t.default=g},function(e,t,n){e.exports=n(549)},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t,n){var r=n(85),o=n(190),a=n(131),i=Object.defineProperty;t.f=n(66)?Object.defineProperty:function(e,t,n){if(r(e),t=a(t,!0),r(n),o)try{return i(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){e.exports=!n(91)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.warning=o,t.note=a,t.resetWarned=function(){r={}},t.call=i,t.warningOnce=c,t.noteOnce=function(e,t){i(a,e,t)},t.default=void 0;var r={};function o(e,t){0}function a(e,t){0}function i(e,t,n){t||r[n]||(e(!1,n),r[n]=!0)}function c(e,t){i(o,e,t)}var l=c;t.default=l},function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"resetWarned",{enumerable:!0,get:function(){return o.resetWarned}}),t.default=void 0;var o=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=a(t);if(n&&n.has(e))return n.get(e);var o={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var c in e)if("default"!==c&&Object.prototype.hasOwnProperty.call(e,c)){var l=i?Object.getOwnPropertyDescriptor(e,c):null;l&&(l.get||l.set)?Object.defineProperty(o,c,l):o[c]=e[c]}o.default=e,n&&n.set(e,o);return o}(n(67));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(a=function(e){return e?n:t})(e)}t.default=function(e,t,n){(0,o.default)(e,"[antd: ".concat(t,"] ").concat(n))}},function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.replaceElement=c,t.cloneElement=function(e,t){return c(e,e,t)},t.isValidElement=void 0;var o=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=a(t);if(n&&n.has(e))return n.get(e);var o={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var c in e)if("default"!==c&&Object.prototype.hasOwnProperty.call(e,c)){var l=i?Object.getOwnPropertyDescriptor(e,c):null;l&&(l.get||l.set)?Object.defineProperty(o,c,l):o[c]=e[c]}o.default=e,n&&n.set(e,o);return o}(n(0));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(a=function(e){return e?n:t})(e)}var i=o.isValidElement;function c(e,t,n){return i(e)?o.cloneElement(e,"function"==typeof n?n(e.props||{}):n):t}t.isValidElement=i},function(e,t,n){"use strict";function r(e,t){switch(e){case 0:return function(){return t.apply(this,arguments)};case 1:return function(e){return t.apply(this,arguments)};case 2:return function(e,n){return t.apply(this,arguments)};case 3:return function(e,n,r){return t.apply(this,arguments)};case 4:return function(e,n,r,o){return t.apply(this,arguments)};case 5:return function(e,n,r,o,a){return t.apply(this,arguments)};case 6:return function(e,n,r,o,a,i){return t.apply(this,arguments)};case 7:return function(e,n,r,o,a,i,c){return t.apply(this,arguments)};case 8:return function(e,n,r,o,a,i,c,l){return t.apply(this,arguments)};case 9:return function(e,n,r,o,a,i,c,l,u){return t.apply(this,arguments)};case 10:return function(e,n,r,o,a,i,c,l,u,s){return t.apply(this,arguments)};default:throw new Error("First argument to _arity must be a non-negative integer no greater than ten")}}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";var r=n(1),o=n(7),a=n(20),i=n(21),c=n(30),l=n(23),u=n(22),s=n(0),f=n.n(s),d=n(11),p=n.n(d),h=n(44);function m(e,t){return!!e&&e.contains(t)}var v=n(42),y=n(43),_=n(127),b=Object(s.forwardRef)((function(e,t){var n=e.didUpdate,r=e.getContainer,o=e.children,a=Object(s.useRef)();Object(s.useImperativeHandle)(t,(function(){return{}}));var i=Object(s.useRef)(!1);return!i.current&&Object(_.a)()&&(a.current=r(),i.current=!0),Object(s.useEffect)((function(){null==n||n(e)})),Object(s.useEffect)((function(){return function(){var e,t;null===(e=a.current)||void 0===e||null===(t=e.parentNode)||void 0===t||t.removeChild(a.current)}}),[]),a.current?p.a.createPortal(o,a.current):null})),g=n(2),M=n.n(g);function w(e,t,n){return n?e[0]===t[0]:e[0]===t[0]&&e[1]===t[1]}var O=n(9),k=n(15),L=n(128),x=n(47);function z(e){var t=e.prefixCls,n=e.motion,r=e.animation,o=e.transitionName;return n||(r?{motionName:"".concat(t,"-").concat(r)}:o?{motionName:o}:null)}function S(e){var t=e.prefixCls,n=e.visible,a=e.zIndex,i=e.mask,c=e.maskMotion,l=e.maskAnimation,u=e.maskTransitionName;if(!i)return null;var f={};return(c||u||l)&&(f=Object(r.a)({motionAppear:!0},z({motion:c,prefixCls:t,transitionName:u,animation:l}))),s.createElement(x.default,Object(o.a)({},f,{visible:n,removeOnLeave:!0}),(function(e){var n=e.className;return s.createElement("div",{style:{zIndex:a},className:M()("".concat(t,"-mask"),n)})}))}var C=n(28),j=n(125),E=void 0,T={Webkit:"-webkit-",Moz:"-moz-",ms:"-ms-",O:"-o-"};function P(){if(void 0!==E)return E;E="";var e=document.createElement("p").style;for(var t in T)t+"Transform"in e&&(E=t);return E}function H(){return P()?P()+"TransitionProperty":"transitionProperty"}function D(){return P()?P()+"Transform":"transform"}function Y(e,t){var n=H();n&&(e.style[n]=t,"transitionProperty"!==n&&(e.style.transitionProperty=t))}function V(e,t){var n=D();n&&(e.style[n]=t,"transform"!==n&&(e.style.transform=t))}var N=/matrix\((.*)\)/,F=/matrix3d\((.*)\)/;var A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},R=void 0;function I(e){var t=e.style.display;e.style.display="none",e.offsetHeight,e.style.display=t}function W(e,t,n){var r=n;if("object"!==(void 0===t?"undefined":A(t)))return void 0!==r?("number"==typeof r&&(r+="px"),void(e.style[t]=r)):R(e,t);for(var o in t)t.hasOwnProperty(o)&&W(e,o,t[o])}function U(e,t){var n=e["page"+(t?"Y":"X")+"Offset"],r="scroll"+(t?"Top":"Left");if("number"!=typeof n){var o=e.document;"number"!=typeof(n=o.documentElement[r])&&(n=o.body[r])}return n}function K(e){return U(e)}function B(e){return U(e,!0)}function q(e){var t=function(e){var t,n=void 0,r=void 0,o=e.ownerDocument,a=o.body,i=o&&o.documentElement;return n=(t=e.getBoundingClientRect()).left,r=t.top,{left:n-=i.clientLeft||a.clientLeft||0,top:r-=i.clientTop||a.clientTop||0}}(e),n=e.ownerDocument,r=n.defaultView||n.parentWindow;return t.left+=K(r),t.top+=B(r),t}function $(e){return null!=e&&e==e.window}function G(e){return $(e)?e.document:9===e.nodeType?e:e.ownerDocument}var J=new RegExp("^("+/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source+")(?!px)[a-z%]+$","i"),Q=/^(top|right|bottom|left)$/,X="left";function Z(e,t){return"left"===e?t.useCssRight?"right":e:t.useCssBottom?"bottom":e}function ee(e){return"left"===e?"right":"right"===e?"left":"top"===e?"bottom":"bottom"===e?"top":void 0}function te(e,t,n){"static"===W(e,"position")&&(e.style.position="relative");var r=-999,o=-999,a=Z("left",n),i=Z("top",n),c=ee(a),l=ee(i);"left"!==a&&(r=999),"top"!==i&&(o=999);var u,s="",f=q(e);("left"in t||"top"in t)&&(s=(u=e).style.transitionProperty||u.style[H()]||"",Y(e,"none")),"left"in t&&(e.style[c]="",e.style[a]=r+"px"),"top"in t&&(e.style[l]="",e.style[i]=o+"px"),I(e);var d=q(e),p={};for(var h in t)if(t.hasOwnProperty(h)){var m=Z(h,n),v="left"===h?r:o,y=f[h]-d[h];p[m]=m===h?v+y:v-y}W(e,p),I(e),("left"in t||"top"in t)&&Y(e,s);var _={};for(var b in t)if(t.hasOwnProperty(b)){var g=Z(b,n),M=t[b]-f[b];_[g]=b===g?p[g]+M:p[g]-M}W(e,_)}function ne(e,t){var n=q(e),r=function(e){var t=window.getComputedStyle(e,null),n=t.getPropertyValue("transform")||t.getPropertyValue(D());if(n&&"none"!==n){var r=n.replace(/[^0-9\-.,]/g,"").split(",");return{x:parseFloat(r[12]||r[4],0),y:parseFloat(r[13]||r[5],0)}}return{x:0,y:0}}(e),o={x:r.x,y:r.y};"left"in t&&(o.x=r.x+t.left-n.left),"top"in t&&(o.y=r.y+t.top-n.top),function(e,t){var n=window.getComputedStyle(e,null),r=n.getPropertyValue("transform")||n.getPropertyValue(D());if(r&&"none"!==r){var o=void 0,a=r.match(N);if(a)(o=(a=a[1]).split(",").map((function(e){return parseFloat(e,10)})))[4]=t.x,o[5]=t.y,V(e,"matrix("+o.join(",")+")");else(o=r.match(F)[1].split(",").map((function(e){return parseFloat(e,10)})))[12]=t.x,o[13]=t.y,V(e,"matrix3d("+o.join(",")+")")}else V(e,"translateX("+t.x+"px) translateY("+t.y+"px) translateZ(0)")}(e,o)}function re(e,t){for(var n=0;n<e.length;n++)t(e[n])}function oe(e){return"border-box"===R(e,"boxSizing")}"undefined"!=typeof window&&(R=window.getComputedStyle?function(e,t,n){var r=n,o="",a=G(e);return(r=r||a.defaultView.getComputedStyle(e,null))&&(o=r.getPropertyValue(t)||r[t]),o}:function(e,t){var n=e.currentStyle&&e.currentStyle[t];if(J.test(n)&&!Q.test(t)){var r=e.style,o=r[X],a=e.runtimeStyle[X];e.runtimeStyle[X]=e.currentStyle[X],r[X]="fontSize"===t?"1em":n||0,n=r.pixelLeft+"px",r[X]=o,e.runtimeStyle[X]=a}return""===n?"auto":n});var ae=["margin","border","padding"];function ie(e,t,n){var r={},o=e.style,a=void 0;for(a in t)t.hasOwnProperty(a)&&(r[a]=o[a],o[a]=t[a]);for(a in n.call(e),t)t.hasOwnProperty(a)&&(o[a]=r[a])}function ce(e,t,n){var r=0,o=void 0,a=void 0,i=void 0;for(a=0;a<t.length;a++)if(o=t[a])for(i=0;i<n.length;i++){var c=void 0;c="border"===o?""+o+n[i]+"Width":o+n[i],r+=parseFloat(R(e,c))||0}return r}var le={};function ue(e,t,n){var r=n;if($(e))return"width"===t?le.viewportWidth(e):le.viewportHeight(e);if(9===e.nodeType)return"width"===t?le.docWidth(e):le.docHeight(e);var o="width"===t?["Left","Right"]:["Top","Bottom"],a="width"===t?e.getBoundingClientRect().width:e.getBoundingClientRect().height,i=(R(e),oe(e)),c=0;(null==a||a<=0)&&(a=void 0,(null==(c=R(e,t))||Number(c)<0)&&(c=e.style[t]||0),c=parseFloat(c)||0),void 0===r&&(r=i?1:-1);var l=void 0!==a||i,u=a||c;return-1===r?l?u-ce(e,["border","padding"],o):c:l?1===r?u:u+(2===r?-ce(e,["border"],o):ce(e,["margin"],o)):c+ce(e,ae.slice(r),o)}re(["Width","Height"],(function(e){le["doc"+e]=function(t){var n=t.document;return Math.max(n.documentElement["scroll"+e],n.body["scroll"+e],le["viewport"+e](n))},le["viewport"+e]=function(t){var n="client"+e,r=t.document,o=r.body,a=r.documentElement[n];return"CSS1Compat"===r.compatMode&&a||o&&o[n]||a}}));var se={position:"absolute",visibility:"hidden",display:"block"};function fe(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=void 0,o=t[0];return 0!==o.offsetWidth?r=ue.apply(void 0,t):ie(o,se,(function(){r=ue.apply(void 0,t)})),r}function de(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}re(["width","height"],(function(e){var t=e.charAt(0).toUpperCase()+e.slice(1);le["outer"+t]=function(t,n){return t&&fe(t,e,n?0:1)};var n="width"===e?["Left","Right"]:["Top","Bottom"];le[e]=function(t,r){var o=r;if(void 0===o)return t&&fe(t,e,-1);if(t){R(t);return oe(t)&&(o+=ce(t,["padding","border"],n)),W(t,e,o)}}}));var pe={getWindow:function(e){if(e&&e.document&&e.setTimeout)return e;var t=e.ownerDocument||e;return t.defaultView||t.parentWindow},getDocument:G,offset:function(e,t,n){if(void 0===t)return q(e);!function(e,t,n){if(n.ignoreShake){var r=q(e),o=r.left.toFixed(0),a=r.top.toFixed(0),i=t.left.toFixed(0),c=t.top.toFixed(0);if(o===i&&a===c)return}n.useCssRight||n.useCssBottom?te(e,t,n):n.useCssTransform&&D()in document.body.style?ne(e,t):te(e,t,n)}(e,t,n||{})},isWindow:$,each:re,css:W,clone:function(e){var t=void 0,n={};for(t in e)e.hasOwnProperty(t)&&(n[t]=e[t]);if(e.overflow)for(t in e)e.hasOwnProperty(t)&&(n.overflow[t]=e.overflow[t]);return n},mix:de,getWindowScrollLeft:function(e){return K(e)},getWindowScrollTop:function(e){return B(e)},merge:function(){for(var e={},t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];for(var o=0;o<n.length;o++)pe.mix(e,n[o]);return e},viewportWidth:0,viewportHeight:0};de(pe,le);var he=pe;var me=function(e){if(he.isWindow(e)||9===e.nodeType)return null;var t=he.getDocument(e).body,n=void 0,r=he.css(e,"position");if(!("fixed"===r||"absolute"===r))return"html"===e.nodeName.toLowerCase()?null:e.parentNode;for(n=e.parentNode;n&&n!==t;n=n.parentNode)if("static"!==(r=he.css(n,"position")))return n;return null};var ve=function(e){for(var t={left:0,right:1/0,top:0,bottom:1/0},n=me(e),r=he.getDocument(e),o=r.defaultView||r.parentWindow,a=r.body,i=r.documentElement;n;){if(-1!==navigator.userAgent.indexOf("MSIE")&&0===n.clientWidth||n===a||n===i||"visible"===he.css(n,"overflow")){if(n===a||n===i)break}else{var c=he.offset(n);c.left+=n.clientLeft,c.top+=n.clientTop,t.top=Math.max(t.top,c.top),t.right=Math.min(t.right,c.left+n.clientWidth),t.bottom=Math.min(t.bottom,c.top+n.clientHeight),t.left=Math.max(t.left,c.left)}n=me(n)}var l=null;he.isWindow(e)||9===e.nodeType||(l=e.style.position,"absolute"===he.css(e,"position")&&(e.style.position="fixed"));var u=he.getWindowScrollLeft(o),s=he.getWindowScrollTop(o),f=he.viewportWidth(o),d=he.viewportHeight(o),p=i.scrollWidth,h=i.scrollHeight,m=window.getComputedStyle(a);if("hidden"===m.overflowX&&(p=o.innerWidth),"hidden"===m.overflowY&&(h=o.innerHeight),e.style&&(e.style.position=l),function(e){if(he.isWindow(e)||9===e.nodeType)return!1;var t=he.getDocument(e).body,n=null;for(n=e.parentNode;n&&n!==t;n=n.parentNode){if("fixed"===he.css(n,"position"))return!0}return!1}(e))t.left=Math.max(t.left,u),t.top=Math.max(t.top,s),t.right=Math.min(t.right,u+f),t.bottom=Math.min(t.bottom,s+d);else{var v=Math.max(p,u+f);t.right=Math.min(t.right,v);var y=Math.max(h,s+d);t.bottom=Math.min(t.bottom,y)}return t.top>=0&&t.left>=0&&t.bottom>t.top&&t.right>t.left?t:null};var ye=function(e,t,n,r){var o=he.clone(e),a={width:t.width,height:t.height};return r.adjustX&&o.left<n.left&&(o.left=n.left),r.resizeWidth&&o.left>=n.left&&o.left+a.width>n.right&&(a.width-=o.left+a.width-n.right),r.adjustX&&o.left+a.width>n.right&&(o.left=Math.max(n.right-a.width,n.left)),r.adjustY&&o.top<n.top&&(o.top=n.top),r.resizeHeight&&o.top>=n.top&&o.top+a.height>n.bottom&&(a.height-=o.top+a.height-n.bottom),r.adjustY&&o.top+a.height>n.bottom&&(o.top=Math.max(n.bottom-a.height,n.top)),he.mix(o,a)};var _e=function(e){var t=void 0,n=void 0,r=void 0;if(he.isWindow(e)||9===e.nodeType){var o=he.getWindow(e);t={left:he.getWindowScrollLeft(o),top:he.getWindowScrollTop(o)},n=he.viewportWidth(o),r=he.viewportHeight(o)}else t=he.offset(e),n=he.outerWidth(e),r=he.outerHeight(e);return t.width=n,t.height=r,t};var be=function(e,t){var n=t.charAt(0),r=t.charAt(1),o=e.width,a=e.height,i=e.left,c=e.top;return"c"===n?c+=a/2:"b"===n&&(c+=a),"c"===r?i+=o/2:"r"===r&&(i+=o),{left:i,top:c}};var ge=function(e,t,n,r,o){var a=be(t,n[1]),i=be(e,n[0]),c=[i.left-a.left,i.top-a.top];return{left:Math.round(e.left-c[0]+r[0]-o[0]),top:Math.round(e.top-c[1]+r[1]-o[1])}};function Me(e,t,n){return e.left<n.left||e.left+t.width>n.right}function we(e,t,n){return e.top<n.top||e.top+t.height>n.bottom}function Oe(e,t,n){var r=[];return he.each(e,(function(e){r.push(e.replace(t,(function(e){return n[e]})))})),r}function ke(e,t){return e[t]=-e[t],e}function Le(e,t){return(/%$/.test(e)?parseInt(e.substring(0,e.length-1),10)/100*t:parseInt(e,10))||0}function xe(e,t){e[0]=Le(e[0],t.width),e[1]=Le(e[1],t.height)}var ze=function(e,t,n,r){var o=n.points,a=n.offset||[0,0],i=n.targetOffset||[0,0],c=n.overflow,l=n.source||e;a=[].concat(a),i=[].concat(i),c=c||{};var u={},s=0,f=ve(l),d=_e(l);xe(a,d),xe(i,t);var p=ge(d,t,o,a,i),h=he.merge(d,p);if(f&&(c.adjustX||c.adjustY)&&r){if(c.adjustX&&Me(p,d,f)){var m=Oe(o,/[lr]/gi,{l:"r",r:"l"}),v=ke(a,0),y=ke(i,0);(function(e,t,n){return e.left>n.right||e.left+t.width<n.left})(ge(d,t,m,v,y),d,f)||(s=1,o=m,a=v,i=y)}if(c.adjustY&&we(p,d,f)){var _=Oe(o,/[tb]/gi,{t:"b",b:"t"}),b=ke(a,1),g=ke(i,1);(function(e,t,n){return e.top>n.bottom||e.top+t.height<n.top})(ge(d,t,_,b,g),d,f)||(s=1,o=_,a=b,i=g)}s&&(p=ge(d,t,o,a,i),he.mix(h,p));var M=Me(p,d,f),w=we(p,d,f);(M||w)&&(o=n.points,a=n.offset||[0,0],i=n.targetOffset||[0,0]),u.adjustX=c.adjustX&&M,u.adjustY=c.adjustY&&w,(u.adjustX||u.adjustY)&&(h=ye(p,d,f,u))}return h.width!==d.width&&he.css(l,"width",he.width(l)+h.width-d.width),h.height!==d.height&&he.css(l,"height",he.height(l)+h.height-d.height),he.offset(l,{left:h.left,top:h.top},{useCssRight:n.useCssRight,useCssBottom:n.useCssBottom,useCssTransform:n.useCssTransform,ignoreShake:n.ignoreShake}),{points:o,offset:a,targetOffset:i,overflow:u}};function Se(e,t,n){var r=n.target||t,o=_e(r),a=!function(e){var t=ve(e),n=_e(e);return!t||n.left+n.width<=t.left||n.top+n.height<=t.top||n.left>=t.right||n.top>=t.bottom}(r);return ze(e,o,n,a)}Se.__getOffsetParent=me,Se.__getVisibleRectForElement=ve;var Ce=Se,je=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};var Ee=function(e,t,n){var r=void 0,o=void 0,a=he.getDocument(e),i=a.defaultView||a.parentWindow,c=he.getWindowScrollLeft(i),l=he.getWindowScrollTop(i),u=he.viewportWidth(i),s=he.viewportHeight(i),f={left:r="pageX"in t?t.pageX:c+t.clientX,top:o="pageY"in t?t.pageY:l+t.clientY,width:0,height:0},d=r>=0&&r<=c+u&&o>=0&&o<=l+s,p=[n.points[0],"cc"];return ze(e,f,je({},n,{points:p}),d)},Te=n(82);function Pe(e,t){var n=null,r=null;var o=new Te.default((function(e){var o=Object(O.a)(e,1)[0].target;if(document.documentElement.contains(o)){var a=o.getBoundingClientRect(),i=a.width,c=a.height,l=Math.floor(i),u=Math.floor(c);n===l&&r===u||Promise.resolve().then((function(){t({width:l,height:u})})),n=l,r=u}}));return e&&o.observe(e),function(){o.disconnect()}}function He(e){return"function"!=typeof e?null:e()}function De(e){return"object"===Object(C.a)(e)&&e?e:null}var Ye=f.a.forwardRef((function(e,t){var n=e.children,r=e.disabled,o=e.target,a=e.align,i=e.onAlign,c=e.monitorWindowResize,l=e.monitorBufferTime,u=void 0===l?0:l,s=f.a.useRef({}),d=f.a.useRef(),p=f.a.Children.only(n),h=f.a.useRef({});h.current.disabled=r,h.current.target=o,h.current.onAlign=i;var _=function(e,t){var n=f.a.useRef(!1),r=f.a.useRef(null);function o(){window.clearTimeout(r.current)}return[function a(i){if(n.current&&!0!==i)o(),r.current=window.setTimeout((function(){n.current=!1,a()}),t);else{if(!1===e())return;n.current=!0,o(),r.current=window.setTimeout((function(){n.current=!1}),t)}},function(){n.current=!1,o()}]}((function(){var e=h.current,t=e.disabled,n=e.target,r=e.onAlign;if(!t&&n){var o,i=d.current,c=He(n),l=De(n);s.current.element=c,s.current.point=l;var u=document.activeElement;return c&&Object(j.a)(c)?o=Ce(i,c,a):l&&(o=Ee(i,l,a)),function(e,t){e!==document.activeElement&&m(t,e)&&"function"==typeof e.focus&&e.focus()}(u,i),r&&o&&r(i,o),!0}return!1}),u),b=Object(O.a)(_,2),g=b[0],M=b[1],w=f.a.useRef({cancel:function(){}}),k=f.a.useRef({cancel:function(){}});f.a.useEffect((function(){var e,t,n=He(o),r=De(o);d.current!==k.current.element&&(k.current.cancel(),k.current.element=d.current,k.current.cancel=Pe(d.current,g)),s.current.element===n&&((e=s.current.point)===(t=r)||e&&t&&("pageX"in t&&"pageY"in t?e.pageX===t.pageX&&e.pageY===t.pageY:"clientX"in t&&"clientY"in t&&e.clientX===t.clientX&&e.clientY===t.clientY))||(g(),w.current.element!==n&&(w.current.cancel(),w.current.element=n,w.current.cancel=Pe(n,g)))})),f.a.useEffect((function(){r?M():g()}),[r]);var L=f.a.useRef(null);return f.a.useEffect((function(){c?L.current||(L.current=Object(y.a)(window,"resize",g)):L.current&&(L.current.remove(),L.current=null)}),[c]),f.a.useEffect((function(){return function(){w.current.cancel(),k.current.cancel(),L.current&&L.current.remove(),M()}}),[]),f.a.useImperativeHandle(t,(function(){return{forceAlign:function(){return g(!0)}}})),f.a.isValidElement(p)&&(p=f.a.cloneElement(p,{ref:Object(v.a)(p.ref,d)})),p}));Ye.displayName="Align";var Ve=Ye,Ne=n(83),Fe=n.n(Ne);function Ae(e,t,n,r,o,a,i){try{var c=e[a](i),l=c.value}catch(e){return void n(e)}c.done?t(l):Promise.resolve(l).then(r,o)}function Re(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function i(e){Ae(a,r,o,i,c,"next",e)}function c(e){Ae(a,r,o,i,c,"throw",e)}i(void 0)}))}}var Ie=["measure","align",null,"motion"],We=s.forwardRef((function(e,t){var n=e.visible,a=e.prefixCls,i=e.className,c=e.style,l=e.children,u=e.zIndex,f=e.stretch,d=e.destroyPopupOnHide,p=e.forceRender,m=e.align,v=e.point,y=e.getRootDomNode,_=e.getClassNameFromAlign,b=e.onAlign,g=e.onMouseEnter,w=e.onMouseLeave,k=e.onMouseDown,L=e.onTouchStart,S=Object(s.useRef)(),C=Object(s.useRef)(),j=Object(s.useState)(),E=Object(O.a)(j,2),T=E[0],P=E[1],H=function(e){var t=s.useState({width:0,height:0}),n=Object(O.a)(t,2),r=n[0],o=n[1];return[s.useMemo((function(){var t={};if(e){var n=r.width,o=r.height;-1!==e.indexOf("height")&&o?t.height=o:-1!==e.indexOf("minHeight")&&o&&(t.minHeight=o),-1!==e.indexOf("width")&&n?t.width=n:-1!==e.indexOf("minWidth")&&n&&(t.minWidth=n)}return t}),[e,r]),function(e){o({width:e.offsetWidth,height:e.offsetHeight})}]}(f),D=Object(O.a)(H,2),Y=D[0],V=D[1];var N=function(e,t){var n=Object(s.useState)(null),r=Object(O.a)(n,2),o=r[0],a=r[1],i=Object(s.useRef)(),c=Object(s.useRef)(!1);function l(e){c.current||a(e)}function u(){h.a.cancel(i.current)}return Object(s.useEffect)((function(){l("measure")}),[e]),Object(s.useEffect)((function(){switch(o){case"measure":t()}o&&(i.current=Object(h.a)(Re(Fe.a.mark((function e(){var t,n;return Fe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=Ie.indexOf(o),(n=Ie[t+1])&&-1!==t&&l(n);case 3:case"end":return e.stop()}}),e)})))))}),[o]),Object(s.useEffect)((function(){return function(){c.current=!0,u()}}),[]),[o,function(e){u(),i.current=Object(h.a)((function(){l((function(e){switch(o){case"align":return"motion";case"motion":return"stable"}return e})),null==e||e()}))}]}(n,(function(){f&&V(y())})),F=Object(O.a)(N,2),A=F[0],R=F[1],I=Object(s.useRef)();function W(){var e;null===(e=S.current)||void 0===e||e.forceAlign()}function U(e,t){if("align"===A){var n=_(t);P(n),T!==n?Promise.resolve().then((function(){W()})):R((function(){var e;null===(e=I.current)||void 0===e||e.call(I)})),null==b||b(e,t)}}var K=Object(r.a)({},z(e));function B(){return new Promise((function(e){I.current=e}))}["onAppearEnd","onEnterEnd","onLeaveEnd"].forEach((function(e){var t=K[e];K[e]=function(e,n){return R(),null==t?void 0:t(e,n)}})),s.useEffect((function(){K.motionName||"motion"!==A||R()}),[K.motionName,A]),s.useImperativeHandle(t,(function(){return{forceAlign:W,getElement:function(){return C.current}}}));var q=Object(r.a)(Object(r.a)({},Y),{},{zIndex:u,opacity:"motion"!==A&&"stable"!==A&&n?0:void 0,pointerEvents:"stable"===A?void 0:"none"},c),$=!0;!(null==m?void 0:m.points)||"align"!==A&&"stable"!==A||($=!1);var G=l;return s.Children.count(l)>1&&(G=s.createElement("div",{className:"".concat(a,"-content")},l)),s.createElement(x.default,Object(o.a)({visible:n,ref:C,leavedClassName:"".concat(a,"-hidden")},K,{onAppearPrepare:B,onEnterPrepare:B,removeOnLeave:d,forceRender:p}),(function(e,t){var n=e.className,o=e.style,c=M()(a,i,T,n);return s.createElement(Ve,{target:v||y,key:"popup",ref:S,monitorWindowResize:!0,disabled:$,align:m,onAlign:U},s.createElement("div",{ref:t,className:c,onMouseEnter:g,onMouseLeave:w,onMouseDownCapture:k,onTouchStartCapture:L,style:Object(r.a)(Object(r.a)({},o),q)},G))}))}));We.displayName="PopupInner";var Ue=We,Ke=s.forwardRef((function(e,t){var n=e.prefixCls,a=e.visible,i=e.zIndex,c=e.children,l=e.mobile,u=(l=void 0===l?{}:l).popupClassName,f=l.popupStyle,d=l.popupMotion,p=void 0===d?{}:d,h=l.popupRender,m=s.useRef();s.useImperativeHandle(t,(function(){return{forceAlign:function(){},getElement:function(){return m.current}}}));var v=Object(r.a)({zIndex:i},f),y=c;return s.Children.count(c)>1&&(y=s.createElement("div",{className:"".concat(n,"-content")},c)),h&&(y=h(y)),s.createElement(x.default,Object(o.a)({visible:a,ref:m,removeOnLeave:!0},p),(function(e,t){var o=e.className,a=e.style,i=M()(n,u,o);return s.createElement("div",{ref:t,className:i,style:Object(r.a)(Object(r.a)({},a),v)},y)}))}));Ke.displayName="MobilePopupInner";var Be=Ke,qe=s.forwardRef((function(e,t){var n=e.visible,a=e.mobile,i=Object(k.a)(e,["visible","mobile"]),c=Object(s.useState)(n),l=Object(O.a)(c,2),u=l[0],f=l[1],d=Object(s.useState)(!1),p=Object(O.a)(d,2),h=p[0],m=p[1],v=Object(r.a)(Object(r.a)({},i),{},{visible:u});Object(s.useEffect)((function(){f(n),n&&a&&m(Object(L.a)())}),[n,a]);var y=h?s.createElement(Be,Object(o.a)({},v,{mobile:a,ref:t})):s.createElement(Ue,Object(o.a)({},v,{ref:t}));return s.createElement("div",null,s.createElement(S,v),y)}));qe.displayName="Popup";var $e=qe,Ge=s.createContext(null);function Je(){}function Qe(){return""}function Xe(e){return e?e.ownerDocument:window.document}var Ze=["onClick","onMouseDown","onTouchStart","onMouseEnter","onMouseLeave","onFocus","onBlur","onContextMenu"];var et,tt;t.a=(et=b,(tt=function(e){Object(l.a)(n,e);var t=Object(u.a)(n);function n(e){var r,i;return Object(a.a)(this,n),(r=t.call(this,e)).popupRef=s.createRef(),r.triggerRef=s.createRef(),r.onMouseEnter=function(e){var t=r.props.mouseEnterDelay;r.fireEvents("onMouseEnter",e),r.delaySetPopupVisible(!0,t,t?null:e)},r.onMouseMove=function(e){r.fireEvents("onMouseMove",e),r.setPoint(e)},r.onMouseLeave=function(e){r.fireEvents("onMouseLeave",e),r.delaySetPopupVisible(!1,r.props.mouseLeaveDelay)},r.onPopupMouseEnter=function(){r.clearDelayTimer()},r.onPopupMouseLeave=function(e){var t;e.relatedTarget&&!e.relatedTarget.setTimeout&&m(null===(t=r.popupRef.current)||void 0===t?void 0:t.getElement(),e.relatedTarget)||r.delaySetPopupVisible(!1,r.props.mouseLeaveDelay)},r.onFocus=function(e){r.fireEvents("onFocus",e),r.clearDelayTimer(),r.isFocusToShow()&&(r.focusTime=Date.now(),r.delaySetPopupVisible(!0,r.props.focusDelay))},r.onMouseDown=function(e){r.fireEvents("onMouseDown",e),r.preClickTime=Date.now()},r.onTouchStart=function(e){r.fireEvents("onTouchStart",e),r.preTouchTime=Date.now()},r.onBlur=function(e){r.fireEvents("onBlur",e),r.clearDelayTimer(),r.isBlurToHide()&&r.delaySetPopupVisible(!1,r.props.blurDelay)},r.onContextMenu=function(e){e.preventDefault(),r.fireEvents("onContextMenu",e),r.setPopupVisible(!0,e)},r.onContextMenuClose=function(){r.isContextMenuToShow()&&r.close()},r.onClick=function(e){if(r.fireEvents("onClick",e),r.focusTime){var t;if(r.preClickTime&&r.preTouchTime?t=Math.min(r.preClickTime,r.preTouchTime):r.preClickTime?t=r.preClickTime:r.preTouchTime&&(t=r.preTouchTime),Math.abs(t-r.focusTime)<20)return;r.focusTime=0}r.preClickTime=0,r.preTouchTime=0,r.isClickToShow()&&(r.isClickToHide()||r.isBlurToHide())&&e&&e.preventDefault&&e.preventDefault();var n=!r.state.popupVisible;(r.isClickToHide()&&!n||n&&r.isClickToShow())&&r.setPopupVisible(!r.state.popupVisible,e)},r.onPopupMouseDown=function(){var e;r.hasPopupMouseDown=!0,clearTimeout(r.mouseDownTimeout),r.mouseDownTimeout=window.setTimeout((function(){r.hasPopupMouseDown=!1}),0),r.context&&(e=r.context).onPopupMouseDown.apply(e,arguments)},r.onDocumentClick=function(e){if(!r.props.mask||r.props.maskClosable){var t=e.target,n=r.getRootDomNode(),o=r.getPopupDomNode();m(n,t)&&!r.isContextMenuOnly()||m(o,t)||r.hasPopupMouseDown||r.close()}},r.getRootDomNode=function(){var e,t=r.props.getTriggerDOMNode;if(t)return t(r.triggerRef.current);try{var n=(e=r.triggerRef.current)instanceof HTMLElement?e:p.a.findDOMNode(e);if(n)return n}catch(e){}return p.a.findDOMNode(Object(c.a)(r))},r.getPopupClassNameFromAlign=function(e){var t=[],n=r.props,o=n.popupPlacement,a=n.builtinPlacements,i=n.prefixCls,c=n.alignPoint,l=n.getPopupClassNameFromAlign;return o&&a&&t.push(function(e,t,n,r){for(var o=n.points,a=Object.keys(e),i=0;i<a.length;i+=1){var c=a[i];if(w(e[c].points,o,r))return"".concat(t,"-placement-").concat(c)}return""}(a,i,e,c)),l&&t.push(l(e)),t.join(" ")},r.getComponent=function(){var e=r.props,t=e.prefixCls,n=e.destroyPopupOnHide,a=e.popupClassName,i=e.onPopupAlign,c=e.popupMotion,l=e.popupAnimation,u=e.popupTransitionName,f=e.popupStyle,d=e.mask,p=e.maskAnimation,h=e.maskTransitionName,m=e.maskMotion,v=e.zIndex,y=e.popup,_=e.stretch,b=e.alignPoint,g=e.mobile,M=e.forceRender,w=r.state,O=w.popupVisible,k=w.point,L=r.getPopupAlign(),x={};return r.isMouseEnterToShow()&&(x.onMouseEnter=r.onPopupMouseEnter),r.isMouseLeaveToHide()&&(x.onMouseLeave=r.onPopupMouseLeave),x.onMouseDown=r.onPopupMouseDown,x.onTouchStart=r.onPopupMouseDown,s.createElement($e,Object(o.a)({prefixCls:t,destroyPopupOnHide:n,visible:O,point:b&&k,className:a,align:L,onAlign:i,animation:l,getClassNameFromAlign:r.getPopupClassNameFromAlign},x,{stretch:_,getRootDomNode:r.getRootDomNode,style:f,mask:d,zIndex:v,transitionName:u,maskAnimation:p,maskTransitionName:h,maskMotion:m,ref:r.popupRef,motion:c,mobile:g,forceRender:M}),"function"==typeof y?y():y)},r.attachParent=function(e){h.a.cancel(r.attachId);var t,n=r.props,o=n.getPopupContainer,a=n.getDocument,i=r.getRootDomNode();o?(i||0===o.length)&&(t=o(i)):t=a(r.getRootDomNode()).body,t?t.appendChild(e):r.attachId=Object(h.a)((function(){r.attachParent(e)}))},r.getContainer=function(){var e=(0,r.props.getDocument)(r.getRootDomNode()).createElement("div");return e.style.position="absolute",e.style.top="0",e.style.left="0",e.style.width="100%",r.attachParent(e),e},r.setPoint=function(e){r.props.alignPoint&&e&&r.setState({point:{pageX:e.pageX,pageY:e.pageY}})},r.handlePortalUpdate=function(){r.state.prevPopupVisible!==r.state.popupVisible&&r.props.afterPopupVisibleChange(r.state.popupVisible)},i="popupVisible"in e?!!e.popupVisible:!!e.defaultPopupVisible,r.state={prevPopupVisible:i,popupVisible:i},Ze.forEach((function(e){r["fire".concat(e)]=function(t){r.fireEvents(e,t)}})),r}return Object(i.a)(n,[{key:"componentDidMount",value:function(){this.componentDidUpdate()}},{key:"componentDidUpdate",value:function(){var e,t=this.props;if(this.state.popupVisible)return this.clickOutsideHandler||!this.isClickToHide()&&!this.isContextMenuToShow()||(e=t.getDocument(this.getRootDomNode()),this.clickOutsideHandler=Object(y.a)(e,"mousedown",this.onDocumentClick)),this.touchOutsideHandler||(e=e||t.getDocument(this.getRootDomNode()),this.touchOutsideHandler=Object(y.a)(e,"touchstart",this.onDocumentClick)),!this.contextMenuOutsideHandler1&&this.isContextMenuToShow()&&(e=e||t.getDocument(this.getRootDomNode()),this.contextMenuOutsideHandler1=Object(y.a)(e,"scroll",this.onContextMenuClose)),void(!this.contextMenuOutsideHandler2&&this.isContextMenuToShow()&&(this.contextMenuOutsideHandler2=Object(y.a)(window,"blur",this.onContextMenuClose)));this.clearOutsideHandler()}},{key:"componentWillUnmount",value:function(){this.clearDelayTimer(),this.clearOutsideHandler(),clearTimeout(this.mouseDownTimeout),h.a.cancel(this.attachId)}},{key:"getPopupDomNode",value:function(){var e;return(null===(e=this.popupRef.current)||void 0===e?void 0:e.getElement())||null}},{key:"getPopupAlign",value:function(){var e=this.props,t=e.popupPlacement,n=e.popupAlign,o=e.builtinPlacements;return t&&o?function(e,t,n){var o=e[t]||{};return Object(r.a)(Object(r.a)({},o),n)}(o,t,n):n}},{key:"setPopupVisible",value:function(e,t){var n=this.props.alignPoint,r=this.state.popupVisible;this.clearDelayTimer(),r!==e&&("popupVisible"in this.props||this.setState({popupVisible:e,prevPopupVisible:r}),this.props.onPopupVisibleChange(e)),n&&t&&e&&this.setPoint(t)}},{key:"delaySetPopupVisible",value:function(e,t,n){var r=this,o=1e3*t;if(this.clearDelayTimer(),o){var a=n?{pageX:n.pageX,pageY:n.pageY}:null;this.delayTimer=window.setTimeout((function(){r.setPopupVisible(e,a),r.clearDelayTimer()}),o)}else this.setPopupVisible(e,n)}},{key:"clearDelayTimer",value:function(){this.delayTimer&&(clearTimeout(this.delayTimer),this.delayTimer=null)}},{key:"clearOutsideHandler",value:function(){this.clickOutsideHandler&&(this.clickOutsideHandler.remove(),this.clickOutsideHandler=null),this.contextMenuOutsideHandler1&&(this.contextMenuOutsideHandler1.remove(),this.contextMenuOutsideHandler1=null),this.contextMenuOutsideHandler2&&(this.contextMenuOutsideHandler2.remove(),this.contextMenuOutsideHandler2=null),this.touchOutsideHandler&&(this.touchOutsideHandler.remove(),this.touchOutsideHandler=null)}},{key:"createTwoChains",value:function(e){var t=this.props.children.props,n=this.props;return t[e]&&n[e]?this["fire".concat(e)]:t[e]||n[e]}},{key:"isClickToShow",value:function(){var e=this.props,t=e.action,n=e.showAction;return-1!==t.indexOf("click")||-1!==n.indexOf("click")}},{key:"isContextMenuOnly",value:function(){var e=this.props.action;return"contextMenu"===e||1===e.length&&"contextMenu"===e[0]}},{key:"isContextMenuToShow",value:function(){var e=this.props,t=e.action,n=e.showAction;return-1!==t.indexOf("contextMenu")||-1!==n.indexOf("contextMenu")}},{key:"isClickToHide",value:function(){var e=this.props,t=e.action,n=e.hideAction;return-1!==t.indexOf("click")||-1!==n.indexOf("click")}},{key:"isMouseEnterToShow",value:function(){var e=this.props,t=e.action,n=e.showAction;return-1!==t.indexOf("hover")||-1!==n.indexOf("mouseEnter")}},{key:"isMouseLeaveToHide",value:function(){var e=this.props,t=e.action,n=e.hideAction;return-1!==t.indexOf("hover")||-1!==n.indexOf("mouseLeave")}},{key:"isFocusToShow",value:function(){var e=this.props,t=e.action,n=e.showAction;return-1!==t.indexOf("focus")||-1!==n.indexOf("focus")}},{key:"isBlurToHide",value:function(){var e=this.props,t=e.action,n=e.hideAction;return-1!==t.indexOf("focus")||-1!==n.indexOf("blur")}},{key:"forcePopupAlign",value:function(){var e;this.state.popupVisible&&(null===(e=this.popupRef.current)||void 0===e||e.forceAlign())}},{key:"fireEvents",value:function(e,t){var n=this.props.children.props[e];n&&n(t);var r=this.props[e];r&&r(t)}},{key:"close",value:function(){this.setPopupVisible(!1)}},{key:"render",value:function(){var e=this.state.popupVisible,t=this.props,n=t.children,o=t.forceRender,a=t.alignPoint,i=t.className,c=t.autoDestroy,l=s.Children.only(n),u={key:"trigger"};this.isContextMenuToShow()?u.onContextMenu=this.onContextMenu:u.onContextMenu=this.createTwoChains("onContextMenu"),this.isClickToHide()||this.isClickToShow()?(u.onClick=this.onClick,u.onMouseDown=this.onMouseDown,u.onTouchStart=this.onTouchStart):(u.onClick=this.createTwoChains("onClick"),u.onMouseDown=this.createTwoChains("onMouseDown"),u.onTouchStart=this.createTwoChains("onTouchStart")),this.isMouseEnterToShow()?(u.onMouseEnter=this.onMouseEnter,a&&(u.onMouseMove=this.onMouseMove)):u.onMouseEnter=this.createTwoChains("onMouseEnter"),this.isMouseLeaveToHide()?u.onMouseLeave=this.onMouseLeave:u.onMouseLeave=this.createTwoChains("onMouseLeave"),this.isFocusToShow()||this.isBlurToHide()?(u.onFocus=this.onFocus,u.onBlur=this.onBlur):(u.onFocus=this.createTwoChains("onFocus"),u.onBlur=this.createTwoChains("onBlur"));var f=M()(l&&l.props&&l.props.className,i);f&&(u.className=f);var d=Object(r.a)({},u);Object(v.c)(l)&&(d.ref=Object(v.a)(this.triggerRef,l.ref));var p,h=s.cloneElement(l,d);return(e||this.popupRef.current||o)&&(p=s.createElement(et,{key:"portal",getContainer:this.getContainer,didUpdate:this.handlePortalUpdate},this.getComponent())),!e&&c&&(p=null),s.createElement(Ge.Provider,{value:{onPopupMouseDown:this.onPopupMouseDown}},h,p)}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n=e.popupVisible,r={};return void 0!==n&&t.popupVisible!==n&&(r.popupVisible=n,r.prevPopupVisible=t.popupVisible),r}}]),n}(s.Component)).contextType=Ge,tt.defaultProps={prefixCls:"rc-trigger-popup",getPopupClassNameFromAlign:Qe,getDocument:Xe,onPopupVisibleChange:Je,afterPopupVisibleChange:Je,onPopupAlign:Je,popupClassName:"",mouseEnterDelay:0,mouseLeaveDelay:.1,focusDelay:0,blurDelay:.15,popupStyle:{},destroyPopupOnHide:!1,popupAlign:{},defaultPopupVisible:!1,mask:!1,maskClosable:!0,action:[],showAction:[],hideAction:[],autoDestroy:!1},tt)},function(e,t,n){"use strict";var r=n(70),o=n(24),a=n(16),i=n(19);var c=Object(a.a)((function(e,t){return 1===e?Object(o.a)(t):Object(r.a)(e,function e(t,n,o){return function(){for(var a=[],c=0,l=t,u=0;u<n.length||c<arguments.length;){var s;u<n.length&&(!Object(i.a)(n[u])||c>=arguments.length)?s=n[u]:(s=arguments[c],c+=1),a[u]=s,Object(i.a)(s)||(l-=1),u+=1}return l<=0?o.apply(this,a):Object(r.a)(l,e(t,a,o))}}(e,[],t))}));t.a=c},function(e,t,n){"use strict";(function(e){n.d(t,"e",(function(){return f})),n.d(t,"d",(function(){return d})),n.d(t,"a",(function(){return h})),n.d(t,"b",(function(){return m})),n.d(t,"c",(function(){return v})),n.d(t,"f",(function(){return y}));var r=n(17),o=n.n(r),a=n(33),i=n.n(a),c=n(39),l=n.n(c),u=n(418),s=n(0);function f(t){e&&e.env||console.error("[@ant-design/icons-react]: "+t+".")}function d(e){return"object"==typeof e&&"string"==typeof e.name&&"string"==typeof e.theme&&("object"==typeof e.icon||"function"==typeof e.icon)}function p(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).reduce((function(t,n){var r=e[n];switch(n){case"class":t.className=r,delete t.class;break;default:t[n]=r}return t}),{})}var h=function(){function e(){i()(this,e),this.collection={}}return l()(e,[{key:"clear",value:function(){this.collection={}}},{key:"delete",value:function(e){return delete this.collection[e]}},{key:"get",value:function(e){return this.collection[e]}},{key:"has",value:function(e){return Boolean(this.collection[e])}},{key:"set",value:function(e,t){return this.collection[e]=t,this}},{key:"size",get:function(){return Object.keys(this.collection).length}}]),e}();function m(e,t,n){return n?s.createElement(e.tag,o()({key:t},p(e.attrs),n),(e.children||[]).map((function(n,r){return m(n,t+"-"+e.tag+"-"+r)}))):s.createElement(e.tag,o()({key:t},p(e.attrs)),(e.children||[]).map((function(n,r){return m(n,t+"-"+e.tag+"-"+r)})))}function v(e){return Object(u.generate)(e)[0]}function y(e,t){switch(t){case"fill":return e+"-fill";case"outline":return e+"-o";case"twotone":return e+"-twotone";default:throw new TypeError("Unknown theme type: "+t+", name: "+e)}}}).call(this,n(101))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){var r=n(64),o=n(49),a=n(130),i=n(84),c=n(76),l=function(e,t,n){var u,s,f,d=e&l.F,p=e&l.G,h=e&l.S,m=e&l.P,v=e&l.B,y=e&l.W,_=p?o:o[t]||(o[t]={}),b=_.prototype,g=p?r:h?r[t]:(r[t]||{}).prototype;for(u in p&&(n=t),n)(s=!d&&g&&void 0!==g[u])&&c(_,u)||(f=s?g[u]:n[u],_[u]=p&&"function"!=typeof g[u]?n[u]:v&&s?a(f,r):y&&g[u]==f?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(f):m&&"function"==typeof f?a(Function.call,f):f,m&&((_.virtual||(_.virtual={}))[u]=f,e&l.R&&b&&!b[u]&&i(b,u,f)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){(0,o.default)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},e);Array.isArray(t)&&t.forEach((function(e){delete n[e]}));return n};var o=r(n(13));function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}},function(e,t,n){"use strict";n.r(t);var r=n(17),o=n.n(r);t.default=function(e,t){for(var n=o()({},e),r=0;r<t.length;r++){delete n[t[r]]}return n}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.tupleNum=t.tuple=void 0;t.tuple=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t};t.tupleNum=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t}},function(e,t,n){"use strict";function r(){var e=this.constructor.getDerivedStateFromProps(this.props,this.state);null!=e&&this.setState(e)}function o(e){this.setState(function(t){var n=this.constructor.getDerivedStateFromProps(e,t);return null!=n?n:null}.bind(this))}function a(e,t){try{var n=this.props,r=this.state;this.props=e,this.state=t,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(n,r)}finally{this.props=n,this.state=r}}function i(e){var t=e.prototype;if(!t||!t.isReactComponent)throw new Error("Can only polyfill class components");if("function"!=typeof e.getDerivedStateFromProps&&"function"!=typeof t.getSnapshotBeforeUpdate)return e;var n=null,i=null,c=null;if("function"==typeof t.componentWillMount?n="componentWillMount":"function"==typeof t.UNSAFE_componentWillMount&&(n="UNSAFE_componentWillMount"),"function"==typeof t.componentWillReceiveProps?i="componentWillReceiveProps":"function"==typeof t.UNSAFE_componentWillReceiveProps&&(i="UNSAFE_componentWillReceiveProps"),"function"==typeof t.componentWillUpdate?c="componentWillUpdate":"function"==typeof t.UNSAFE_componentWillUpdate&&(c="UNSAFE_componentWillUpdate"),null!==n||null!==i||null!==c){var l=e.displayName||e.name,u="function"==typeof e.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()";throw Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+l+" uses "+u+" but also contains the following legacy lifecycles:"+(null!==n?"\n "+n:"")+(null!==i?"\n "+i:"")+(null!==c?"\n "+c:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks")}if("function"==typeof e.getDerivedStateFromProps&&(t.componentWillMount=r,t.componentWillReceiveProps=o),"function"==typeof t.getSnapshotBeforeUpdate){if("function"!=typeof t.componentDidUpdate)throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");t.componentWillUpdate=a;var s=t.componentDidUpdate;t.componentDidUpdate=function(e,t,n){var r=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:n;s.call(this,e,t,r)}}return e}n.r(t),n.d(t,"polyfill",(function(){return i})),r.__suppressDeprecationWarning=!0,o.__suppressDeprecationWarning=!0,a.__suppressDeprecationWarning=!0},function(e,t,n){"use strict";e.exports=n(512)},function(e,t,n){"use strict";n.r(t),function(e){var n=function(){if("undefined"!=typeof Map)return Map;function e(e,t){var n=-1;return e.some((function(e,r){return e[0]===t&&(n=r,!0)})),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),r=this.__entries__[n];return r&&r[1]},t.prototype.set=function(t,n){var r=e(this.__entries__,t);~r?this.__entries__[r][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,r=e(n,t);~r&&n.splice(r,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,r=this.__entries__;n<r.length;n++){var o=r[n];e.call(t,o[1],o[0])}},t}()}(),r="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,o=void 0!==e&&e.Math===Math?e:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),a="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(o):function(e){return setTimeout((function(){return e(Date.now())}),1e3/60)};var i=["top","right","bottom","left","width","height","size","weight"],c="undefined"!=typeof MutationObserver,l=function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(e,t){var n=!1,r=!1,o=0;function i(){n&&(n=!1,e()),r&&l()}function c(){a(i)}function l(){var e=Date.now();if(n){if(e-o<2)return;r=!0}else n=!0,r=!1,setTimeout(c,t);o=e}return l}(this.refresh.bind(this),20)}return e.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},e.prototype.removeObserver=function(e){var t=this.observers_,n=t.indexOf(e);~n&&t.splice(n,1),!t.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},e.prototype.updateObservers_=function(){var e=this.observers_.filter((function(e){return e.gatherActive(),e.hasActive()}));return e.forEach((function(e){return e.broadcastActive()})),e.length>0},e.prototype.connect_=function(){r&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),c?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){r&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t;i.some((function(e){return!!~n.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),u=function(e,t){for(var n=0,r=Object.keys(t);n<r.length;n++){var o=r[n];Object.defineProperty(e,o,{value:t[o],enumerable:!1,writable:!1,configurable:!0})}return e},s=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||o},f=y(0,0,0,0);function d(e){return parseFloat(e)||0}function p(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.reduce((function(t,n){return t+d(e["border-"+n+"-width"])}),0)}function h(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return f;var r=s(e).getComputedStyle(e),o=function(e){for(var t={},n=0,r=["top","right","bottom","left"];n<r.length;n++){var o=r[n],a=e["padding-"+o];t[o]=d(a)}return t}(r),a=o.left+o.right,i=o.top+o.bottom,c=d(r.width),l=d(r.height);if("border-box"===r.boxSizing&&(Math.round(c+a)!==t&&(c-=p(r,"left","right")+a),Math.round(l+i)!==n&&(l-=p(r,"top","bottom")+i)),!function(e){return e===s(e).document.documentElement}(e)){var u=Math.round(c+a)-t,h=Math.round(l+i)-n;1!==Math.abs(u)&&(c-=u),1!==Math.abs(h)&&(l-=h)}return y(o.left,o.top,c,l)}var m="undefined"!=typeof SVGGraphicsElement?function(e){return e instanceof s(e).SVGGraphicsElement}:function(e){return e instanceof s(e).SVGElement&&"function"==typeof e.getBBox};function v(e){return r?m(e)?function(e){var t=e.getBBox();return y(0,0,t.width,t.height)}(e):h(e):f}function y(e,t,n,r){return{x:e,y:t,width:n,height:r}}var _=function(){function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=y(0,0,0,0),this.target=e}return e.prototype.isActive=function(){var e=v(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},e}(),b=function(e,t){var n,r,o,a,i,c,l,s=(r=(n=t).x,o=n.y,a=n.width,i=n.height,c="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,l=Object.create(c.prototype),u(l,{x:r,y:o,width:a,height:i,top:o,right:r+a,bottom:i+o,left:r}),l);u(this,{target:e,contentRect:s})},g=function(){function e(e,t,r){if(this.activeObservations_=[],this.observations_=new n,"function"!=typeof e)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=t,this.callbackCtx_=r}return e.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof s(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new _(e)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof s(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach((function(t){t.isActive()&&e.activeObservations_.push(t)}))},e.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map((function(e){return new b(e.target,e.broadcastRect())}));this.callback_.call(e,t,e),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),M="undefined"!=typeof WeakMap?new WeakMap:new n,w=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=l.getInstance(),r=new g(t,n,this);M.set(this,r)};["observe","unobserve","disconnect"].forEach((function(e){w.prototype[e]=function(){var t;return(t=M.get(this))[e].apply(t,arguments)}}));var O=void 0!==o.ResizeObserver?o.ResizeObserver:w;t.default=O}.call(this,n(74))},function(e,t,n){e.exports=n(189)},function(e,t,n){var r=n(65),o=n(92);e.exports=n(66)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var r=n(86);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){var r=n(193),o=n(133);e.exports=function(e){return r(o(e))}},function(e,t,n){var r=n(668),o=n(671);e.exports=function(e,t){var n=o(e,t);return r(n)?n:void 0}},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(99);function o(e,t){if(e){if("string"==typeof e)return Object(r.a)(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Object(r.a)(e,t):void 0}}},function(e,t,n){"use strict"; /* object-assign (c) Sindre Sorhus @license MIT */var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;function i(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,c,l=i(e),u=1;u<arguments.length;u++){for(var s in n=Object(arguments[u]))o.call(n,s)&&(l[s]=n[s]);if(r){c=r(n);for(var f=0;f<c.length;f++)a.call(n,c[f])&&(l[c[f]]=n[c[f]])}}return l}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){e.exports={}},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.getPathValue=function(e,t){if(!t&&"number"!=typeof t)return e;for(var n=a(t),r=e,o=0;o<n.length;o+=1){if(!r)return null;var i=n[o];r=r[i]}return r},t.getColumnsKey=function(e){var t=[],n={};return e.forEach((function(e){for(var r=e||{},o=r.key,i=r.dataIndex,c=o||a(i).join("-")||"RC_TABLE_KEY";n[c];)c="".concat(c,"_next");n[c]=!0,t.push(c)})),t},t.mergeObject=function(){var e={};function t(e,n){n&&Object.keys(n).forEach((function(r){var a=n[r];a&&"object"===(0,o.default)(a)?(e[r]=e[r]||{},t(e[r],a)):e[r]=a}))}for(var n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return r.forEach((function(n){t(e,n)})),e},t.validateValue=function(e){return null!=e};var o=r(n(8));function a(e){return null==e?[]:Array.isArray(e)?e:[e]}},function(e,t,n){var r=n(152),o=n(546),a=n(547),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?o(e):a(e)}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.SizeContextProvider=void 0;var o=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=a(t);if(n&&n.has(e))return n.get(e);var o={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var c in e)if("default"!==c&&Object.prototype.hasOwnProperty.call(e,c)){var l=i?Object.getOwnPropertyDescriptor(e,c):null;l&&(l.get||l.set)?Object.defineProperty(o,c,l):o[c]=e[c]}o.default=e,n&&n.set(e,o);return o}(n(0));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(a=function(e){return e?n:t})(e)}var i=o.createContext(void 0);t.SizeContextProvider=function(e){var t=e.children,n=e.size;return o.createElement(i.Consumer,null,(function(e){return o.createElement(i.Provider,{value:n||e},t)}))};var c=i;t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fixControlledValue=k,t.resolveOnChange=L,t.getInputClassName=x,t.default=t.InputSizes=void 0;var r=h(n(0)),o=h(n(3)),a=n(80),i=d(n(2)),c=d(n(78)),l=n(79),u=h(n(389)),s=n(32),f=d(n(56));function d(e){return e&&e.__esModule?e:{default:e}}function p(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return p=function(){return e},e}function h(e){if(e&&e.__esModule)return e;if(null===e||"object"!==m(e)&&"function"!=typeof e)return{default:e};var t=p();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function m(e){return(m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function v(){return(v=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function y(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function _(e,t){return(_=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function b(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=M(e);if(t){var o=M(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return g(this,n)}}function g(e,t){return!t||"object"!==m(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function M(e){return(M=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var O=(0,l.tuple)("small","default","large");function k(e){return null==e?"":e}function L(e,t,n){if(n){var r=t;if("click"===t.type){(r=Object.create(t)).target=e,r.currentTarget=e;var o=e.value;return e.value="",n(r),void(e.value=o)}n(r)}}function x(e,t,n){var r;return(0,i.default)(e,(w(r={},"".concat(e,"-sm"),"small"===t),w(r,"".concat(e,"-lg"),"large"===t),w(r,"".concat(e,"-disabled"),n),r))}t.InputSizes=O;var z=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_(e,t)}(l,e);var t,n,o,a=b(l);function l(e){var t;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,l),(t=a.call(this,e)).saveClearableInput=function(e){t.clearableInput=e},t.saveInput=function(e){t.input=e},t.handleReset=function(e){t.setValue("",(function(){t.focus()})),L(t.input,e,t.props.onChange)},t.renderInput=function(e){var n=t.props,o=n.className,a=n.addonBefore,l=n.addonAfter,u=n.size,s=n.disabled,f=(0,c.default)(t.props,["prefixCls","onPressEnter","addonBefore","addonAfter","prefix","suffix","allowClear","defaultValue","size","inputType"]);return r.createElement("input",v({},f,{onChange:t.handleChange,onKeyDown:t.handleKeyDown,className:(0,i.default)(x(e,u,s),w({},o,o&&!a&&!l)),ref:t.saveInput}))},t.clearPasswordValueAttribute=function(){t.removePasswordTimeout=setTimeout((function(){t.input&&"password"===t.input.getAttribute("type")&&t.input.hasAttribute("value")&&t.input.removeAttribute("value")}))},t.handleChange=function(e){t.setValue(e.target.value,t.clearPasswordValueAttribute),L(t.input,e,t.props.onChange)},t.handleKeyDown=function(e){var n=t.props,r=n.onPressEnter,o=n.onKeyDown;13===e.keyCode&&r&&r(e),o&&o(e)},t.renderComponent=function(e){var n=e.getPrefixCls,o=t.state.value,a=n("input",t.props.prefixCls);return r.createElement(u.default,v({},t.props,{prefixCls:a,inputType:"input",value:k(o),element:t.renderInput(a),handleReset:t.handleReset,ref:t.saveClearableInput}))};var n=void 0===e.value?e.defaultValue:e.value;return t.state={value:n},t}return t=l,o=[{key:"getDerivedStateFromProps",value:function(e){return"value"in e?{value:e.value}:null}}],(n=[{key:"componentDidMount",value:function(){this.clearPasswordValueAttribute()}},{key:"componentDidUpdate",value:function(){}},{key:"getSnapshotBeforeUpdate",value:function(e){return(0,u.hasPrefixSuffix)(e)!==(0,u.hasPrefixSuffix)(this.props)&&(0,f.default)(this.input!==document.activeElement,"Input","When Input is focused, dynamic add or remove prefix / suffix will make it lose focus caused by dom structure change. Read more: https://ant.design/components/input/#FAQ"),null}},{key:"componentWillUnmount",value:function(){this.removePasswordTimeout&&clearTimeout(this.removePasswordTimeout)}},{key:"focus",value:function(){this.input.focus()}},{key:"blur",value:function(){this.input.blur()}},{key:"select",value:function(){this.input.select()}},{key:"setValue",value:function(e,t){"value"in this.props||this.setState({value:e},t)}},{key:"render",value:function(){return r.createElement(s.ConfigConsumer,null,this.renderComponent)}}])&&y(t.prototype,n),o&&y(t,o),l}(r.Component);z.defaultProps={type:"text"},z.propTypes={type:o.string,id:o.string,size:o.oneOf(O),maxLength:o.number,disabled:o.bool,value:o.any,defaultValue:o.any,className:o.string,addonBefore:o.node,addonAfter:o.node,prefixCls:o.string,onPressEnter:o.func,onKeyDown:o.func,onKeyUp:o.func,onFocus:o.func,onBlur:o.func,prefix:o.node,suffix:o.node,allowClear:o.bool},(0,a.polyfill)(z);var S=z;t.default=S},function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";var r=n(17),o=n.n(r),a=n(40),i=n.n(a),c=n(33),l=n.n(c),u=n(39),s=n.n(u),f=n(37),d=n.n(f),p=n(38),h=n.n(p),m=n(0),v=n.n(m),y=n(3),_=n.n(y);function b(e){var t=[];return v.a.Children.forEach(e,(function(e){t.push(e)})),t}function g(e,t){var n=null;return e&&e.forEach((function(e){n||e&&e.key===t&&(n=e)})),n}function M(e,t,n){var r=null;return e&&e.forEach((function(e){if(e&&e.key===t&&e.props[n]){if(r)throw new Error("two child with same key for <rc-animate> children");r=e}})),r}var w=n(11),O=n.n(w),k=n(62),L={isAppearSupported:function(e){return e.transitionName&&e.transitionAppear||e.animation.appear},isEnterSupported:function(e){return e.transitionName&&e.transitionEnter||e.animation.enter},isLeaveSupported:function(e){return e.transitionName&&e.transitionLeave||e.animation.leave},allowAppearCallback:function(e){return e.transitionAppear||e.animation.appear},allowEnterCallback:function(e){return e.transitionEnter||e.animation.enter},allowLeaveCallback:function(e){return e.transitionLeave||e.animation.leave}},x={enter:"transitionEnter",appear:"transitionAppear",leave:"transitionLeave"},z=function(e){function t(){return l()(this,t),d()(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return h()(t,e),s()(t,[{key:"componentWillUnmount",value:function(){this.stop()}},{key:"componentWillEnter",value:function(e){L.isEnterSupported(this.props)?this.transition("enter",e):e()}},{key:"componentWillAppear",value:function(e){L.isAppearSupported(this.props)?this.transition("appear",e):e()}},{key:"componentWillLeave",value:function(e){L.isLeaveSupported(this.props)?this.transition("leave",e):e()}},{key:"transition",value:function(e,t){var n=this,r=O.a.findDOMNode(this),o=this.props,a=o.transitionName,i="object"==typeof a;this.stop();var c=function(){n.stopper=null,t()};if((k.isCssAnimationSupported||!o.animation[e])&&a&&o[x[e]]){var l=i?a[e]:a+"-"+e,u=l+"-active";i&&a[e+"Active"]&&(u=a[e+"Active"]),this.stopper=Object(k.default)(r,{name:l,active:u},c)}else this.stopper=o.animation[e](r,c)}},{key:"stop",value:function(){var e=this.stopper;e&&(this.stopper=null,e.stop())}},{key:"render",value:function(){return this.props.children}}]),t}(v.a.Component);z.propTypes={children:_.a.any};var S=z,C="rc_animate_"+Date.now();function j(e){var t=e.children;return v.a.isValidElement(t)&&!t.key?v.a.cloneElement(t,{key:C}):t}function E(){}var T=function(e){function t(e){l()(this,t);var n=d()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return P.call(n),n.currentlyAnimatingKeys={},n.keysToEnter=[],n.keysToLeave=[],n.state={children:b(j(e))},n.childrenRefs={},n}return h()(t,e),s()(t,[{key:"componentDidMount",value:function(){var e=this,t=this.props.showProp,n=this.state.children;t&&(n=n.filter((function(e){return!!e.props[t]}))),n.forEach((function(t){t&&e.performAppear(t.key)}))}},{key:"componentWillReceiveProps",value:function(e){var t=this;this.nextProps=e;var n=b(j(e)),r=this.props;r.exclusive&&Object.keys(this.currentlyAnimatingKeys).forEach((function(e){t.stop(e)}));var o,a,c,l,u=r.showProp,s=this.currentlyAnimatingKeys,f=r.exclusive?b(j(r)):this.state.children,d=[];u?(f.forEach((function(e){var t=e&&g(n,e.key),r=void 0;(r=t&&t.props[u]||!e.props[u]?t:v.a.cloneElement(t||e,i()({},u,!0)))&&d.push(r)})),n.forEach((function(e){e&&g(f,e.key)||d.push(e)}))):(o=n,a=[],c={},l=[],f.forEach((function(e){e&&g(o,e.key)?l.length&&(c[e.key]=l,l=[]):l.push(e)})),o.forEach((function(e){e&&Object.prototype.hasOwnProperty.call(c,e.key)&&(a=a.concat(c[e.key])),a.push(e)})),d=a=a.concat(l)),this.setState({children:d}),n.forEach((function(e){var n=e&&e.key;if(!e||!s[n]){var r=e&&g(f,n);if(u){var o=e.props[u];if(r)!M(f,n,u)&&o&&t.keysToEnter.push(n);else o&&t.keysToEnter.push(n)}else r||t.keysToEnter.push(n)}})),f.forEach((function(e){var r=e&&e.key;if(!e||!s[r]){var o=e&&g(n,r);if(u){var a=e.props[u];if(o)!M(n,r,u)&&a&&t.keysToLeave.push(r);else a&&t.keysToLeave.push(r)}else o||t.keysToLeave.push(r)}}))}},{key:"componentDidUpdate",value:function(){var e=this.keysToEnter;this.keysToEnter=[],e.forEach(this.performEnter);var t=this.keysToLeave;this.keysToLeave=[],t.forEach(this.performLeave)}},{key:"isValidChildByKey",value:function(e,t){var n=this.props.showProp;return n?M(e,t,n):g(e,t)}},{key:"stop",value:function(e){delete this.currentlyAnimatingKeys[e];var t=this.childrenRefs[e];t&&t.stop()}},{key:"render",value:function(){var e=this,t=this.props;this.nextProps=t;var n=this.state.children,r=null;n&&(r=n.map((function(n){if(null==n)return n;if(!n.key)throw new Error("must set key for <rc-animate> children");return v.a.createElement(S,{key:n.key,ref:function(t){e.childrenRefs[n.key]=t},animation:t.animation,transitionName:t.transitionName,transitionEnter:t.transitionEnter,transitionAppear:t.transitionAppear,transitionLeave:t.transitionLeave},n)})));var a=t.component;if(a){var i=t;return"string"==typeof a&&(i=o()({className:t.className,style:t.style},t.componentProps)),v.a.createElement(a,i,r)}return r[0]||null}}]),t}(v.a.Component);T.isAnimate=!0,T.propTypes={component:_.a.any,componentProps:_.a.object,animation:_.a.object,transitionName:_.a.oneOfType([_.a.string,_.a.object]),transitionEnter:_.a.bool,transitionAppear:_.a.bool,exclusive:_.a.bool,transitionLeave:_.a.bool,onEnd:_.a.func,onEnter:_.a.func,onLeave:_.a.func,onAppear:_.a.func,showProp:_.a.string,children:_.a.node},T.defaultProps={animation:{},component:"span",componentProps:{},transitionEnter:!0,transitionLeave:!0,transitionAppear:!1,onEnd:E,onEnter:E,onLeave:E,onAppear:E};var P=function(){var e=this;this.performEnter=function(t){e.childrenRefs[t]&&(e.currentlyAnimatingKeys[t]=!0,e.childrenRefs[t].componentWillEnter(e.handleDoneAdding.bind(e,t,"enter")))},this.performAppear=function(t){e.childrenRefs[t]&&(e.currentlyAnimatingKeys[t]=!0,e.childrenRefs[t].componentWillAppear(e.handleDoneAdding.bind(e,t,"appear")))},this.handleDoneAdding=function(t,n){var r=e.props;if(delete e.currentlyAnimatingKeys[t],!r.exclusive||r===e.nextProps){var o=b(j(r));e.isValidChildByKey(o,t)?"appear"===n?L.allowAppearCallback(r)&&(r.onAppear(t),r.onEnd(t,!0)):L.allowEnterCallback(r)&&(r.onEnter(t),r.onEnd(t,!0)):e.performLeave(t)}},this.performLeave=function(t){e.childrenRefs[t]&&(e.currentlyAnimatingKeys[t]=!0,e.childrenRefs[t].componentWillLeave(e.handleDoneLeaving.bind(e,t)))},this.handleDoneLeaving=function(t){var n=e.props;if(delete e.currentlyAnimatingKeys[t],!n.exclusive||n===e.nextProps){var r,o,a,i,c=b(j(n));if(e.isValidChildByKey(c,t))e.performEnter(t);else{var l=function(){L.allowLeaveCallback(n)&&(n.onLeave(t),n.onEnd(t,!1))};r=e.state.children,o=c,a=n.showProp,(i=r.length===o.length)&&r.forEach((function(e,t){var n=o[t];e&&n&&(e&&!n||!e&&n||e.key!==n.key||a&&e.props[a]!==n.props[a])&&(i=!1)})),i?l():e.setState({children:c},l)}}}};t.a=T},function(e,t){var n,r,o=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function c(e){if(n===setTimeout)return setTimeout(e,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(e){n=a}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}}();var l,u=[],s=!1,f=-1;function d(){s&&l&&(s=!1,l.length?u=l.concat(u):f=-1,u.length&&p())}function p(){if(!s){var e=c(d);s=!0;for(var t=u.length;t;){for(l=u,u=[];++f<t;)l&&l[f].run();f=-1,t=u.length}l=null,s=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function m(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new h(e,t)),1!==u.length||s||c(p)},h.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=m,o.addListener=m,o.once=m,o.off=m,o.removeListener=m,o.removeAllListeners=m,o.emit=m,o.prependListener=m,o.prependOnceListener=m,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(e,t,n){var r=n(192),o=n(137);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t){e.exports=!0},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var r=n(133);e.exports=function(e){return Object(r(e))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,o=l(n(0)),a=l(n(3)),i=(r=n(491))&&r.__esModule?r:{default:r};function c(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return c=function(){return e},e}function l(e){if(e&&e.__esModule)return e;if(null===e||"object"!==u(e)&&"function"!=typeof e)return{default:e};var t=c();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function u(e){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(){return(s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function d(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=v(e);if(t){var o=v(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return m(this,n)}}function m(e,t){return!t||"object"!==u(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function v(e){return(v=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var y=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&p(e,t)}(a,e);var t,n,r,o=h(a);function a(){return f(this,a),o.apply(this,arguments)}return t=a,(n=[{key:"getLocale",value:function(){var e=this.props,t=e.componentName,n=e.defaultLocale||i.default[t||"global"],r=this.context.antLocale,o=t&&r?r[t]:{};return s(s({},"function"==typeof n?n():n),o||{})}},{key:"getLocaleCode",value:function(){var e=this.context.antLocale,t=e&&e.locale;return e&&e.exist&&!t?i.default.locale:t}},{key:"render",value:function(){return this.props.children(this.getLocale(),this.getLocaleCode(),this.context.antLocale)}}])&&d(t.prototype,n),r&&d(t,r),a}(o.Component);t.default=y,y.defaultProps={componentName:"global"},y.contextTypes={antLocale:a.object}},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.fillRef=i,t.composeRef=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){t.forEach((function(t){i(t,e)}))}},t.supportRef=function(e){var t,n,r=(0,a.isMemo)(e)?e.type.type:e.type;if("function"==typeof r&&!(null===(t=r.prototype)||void 0===t?void 0:t.render))return!1;if("function"==typeof e&&!(null===(n=e.prototype)||void 0===n?void 0:n.render))return!1;return!0};var o=r(n(8)),a=n(81);function i(e,t){"function"==typeof e?e(t):"object"===(0,o.default)(e)&&e&&"current"in e&&(e.current=t)}},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(13)),i=o(n(45)),c=o(n(57)),l=o(n(8)),u=r(n(0)),s=o(n(2)),f=n(108),d=n(94);function p(e,t){var n,r,o,p,h=e.prefixCls,m=e.className,v=e.record,y=e.index,_=e.dataIndex,b=e.render,g=e.children,M=e.component,w=void 0===M?"td":M,O=e.colSpan,k=e.rowSpan,L=e.fixLeft,x=e.fixRight,z=e.firstFixLeft,S=e.lastFixLeft,C=e.firstFixRight,j=e.lastFixRight,E=e.appendNode,T=e.additionalProps,P=void 0===T?{}:T,H=e.ellipsis,D=e.align,Y=e.rowType,V=e.isSticky,N="".concat(h,"-cell");if(g)o=g;else{var F=(0,d.getPathValue)(v,_);if(o=F,b){var A=b(F,v,y);!(p=A)||"object"!==(0,l.default)(p)||Array.isArray(p)||u.isValidElement(p)?o=A:(o=A.children,r=A.props)}}"object"!==(0,l.default)(o)||Array.isArray(o)||u.isValidElement(o)||(o=null),H&&(S||C)&&(o=u.createElement("span",{className:"".concat(N,"-content")},o));var R=r||{},I=R.colSpan,W=R.rowSpan,U=R.style,K=R.className,B=(0,c.default)(R,["colSpan","rowSpan","style","className"]),q=void 0!==I?I:O,$=void 0!==W?W:k;if(0===q||0===$)return null;var G={},J="number"==typeof L,Q="number"==typeof x;J&&(G.position="sticky",G.left=L),Q&&(G.position="sticky",G.right=x);var X,Z={};D&&(Z.textAlign=D);var ee=!0===H?{showTitle:!0}:H;ee&&(ee.showTitle||"header"===Y)&&("string"==typeof o||"number"==typeof o?X=o.toString():u.isValidElement(o)&&"string"==typeof o.props.children&&(X=o.props.children));var te,ne=(0,i.default)((0,i.default)((0,i.default)({title:X},B),P),{},{colSpan:q&&1!==q?q:null,rowSpan:$&&1!==$?$:null,className:(0,s.default)(N,m,(n={},(0,a.default)(n,"".concat(N,"-fix-left"),J),(0,a.default)(n,"".concat(N,"-fix-left-first"),z),(0,a.default)(n,"".concat(N,"-fix-left-last"),S),(0,a.default)(n,"".concat(N,"-fix-right"),Q),(0,a.default)(n,"".concat(N,"-fix-right-first"),C),(0,a.default)(n,"".concat(N,"-fix-right-last"),j),(0,a.default)(n,"".concat(N,"-ellipsis"),H),(0,a.default)(n,"".concat(N,"-with-append"),E),(0,a.default)(n,"".concat(N,"-fix-sticky"),(J||Q)&&V),n),P.className,K),style:(0,i.default)((0,i.default)((0,i.default)((0,i.default)({},P.style),Z),G),U),ref:(te=w,"string"==typeof te||(0,f.supportRef)(te)?t:null)});return u.createElement(w,ne,E,o)}var h=u.forwardRef(p);h.displayName="Cell";var m=u.memo(h,(function(e,t){return!!t.shouldCellUpdate&&!t.shouldCellUpdate(t.record,e.record)}));t.default=m},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.tupleNum=t.tuple=void 0;t.tuple=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t};t.tupleNum=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t}},function(e,t,n){var r=n(658),o=n(659),a=n(660),i=n(661),c=n(662);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=o,l.prototype.get=a,l.prototype.has=i,l.prototype.set=c,e.exports=l},function(e,t,n){var r=n(381);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t,n){var r=n(88)(Object,"create");e.exports=r},function(e,t,n){var r=n(680);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){var r=n(176)(Object,"create");e.exports=r},function(e,t,n){var r=n(178);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t,n){var r=n(812);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},function(e,t,n){"use strict";t.__esModule=!0;var r=i(n(456)),o=i(n(467)),a="function"==typeof o.default&&"symbol"==typeof r.default?function(e){return typeof e}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":typeof e};function i(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof o.default&&"symbol"===a(r.default)?function(e){return void 0===e?"undefined":a(e)}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":void 0===e?"undefined":a(e)}},function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return v})),n.d(t,"a",(function(){return b}));var r=n(13),o=n.n(r),a=n(411),i=n.n(a),c=n(83),l=n.n(c),u=n(433),s=n(72),f=n(882),d=n(412),p=n.n(d);function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?h(Object(n),!0).forEach((function(t){o()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}e.WPML_core=e.WPML_core||{},WPML_core.ajaxInProgress=0;var v=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.method,n=void 0===t?"POST":t,r=e.contentType,o=void 0===r?"application/x-www-form-urlencoded; charset=utf-8":r;return Object(u.a)({url:ajaxurl,method:n,init:{headers:{"Content-Type":o}}})},y=(Object(s.a)(2,(function(e,t){var n=e.nonce,r=e.endpoint;return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.method,r=void 0===n?"POST":n,o=t.contentType,a=void 0===o?"application/x-www-form-urlencoded; charset=utf-8":o;return WPML_core.ajaxInProgress++,fetch(ajaxurl,{method:r,headers:{"Content-Type":a},credentials:"same-origin",body:_(e)}).then(function(){var e=i()(l.a.mark((function e(t){var n;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.ok){e.next=5;break}return e.next=3,t.json();case 3:return n=e.sent,e.abrupt("return",m(m({},t),{},{data:n}));case 5:return e.abrupt("return",m(m({},t),{},{data:{success:!1,data:{type:"ajaxError",message:t.statusText}}}));case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).finally((function(){WPML_core.ajaxInProgress--}))}(y(n,r,t))})),function(e,t,n){return{action:"wpml_action",nonce:e,endpoint:t,data:JSON.stringify(n)}}),_=Object(f.a)(p.a.stringify)({arrayFormat:"bracket"}),b=Object(s.a)(3,(function(e,t,n){return{body:_({action:"wpml_action",nonce:e,endpoint:t,data:JSON.stringify(n)})}}))}).call(this,n(74))},function(e,t,n){"use strict";function r(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e){if(Array.isArray(e))return e}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";t.a=function(e){if(!e)return!1;if(e.offsetParent)return!0;if(e.getBBox){var t=e.getBBox();if(t.width||t.height)return!0}if(e.getBoundingClientRect){var n=e.getBoundingClientRect();if(n.width||n.height)return!0}return!1}},function(e,t,n){"use strict";e.exports=n(511)},function(e,t,n){"use strict";function r(){return!("undefined"==typeof window||!window.document||!window.document.createElement)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";t.a=function(){if("undefined"==typeof navigator||"undefined"==typeof window)return!1;var e=navigator.userAgent||navigator.vendor||window.opera;return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(null==e?void 0:e.substr(0,4)))}},function(e,t,n){"use strict";e.exports=n(867)},function(e,t,n){var r=n(450);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){var r=n(86);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(136)("keys"),o=n(104);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){var r=n(49),o=n(64),a=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n(103)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){var r=n(85),o=n(460),a=n(137),i=n(135)("IE_PROTO"),c=function(){},l=function(){var e,t=n(191)("iframe"),r=a.length;for(t.style.display="none",n(461).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),l=e.F;r--;)delete l.prototype[a[r]];return l()};e.exports=Object.create||function(e,t){var n;return null!==e?(c.prototype=r(e),n=new c,c.prototype=null,n[i]=e):n=l(),void 0===t?n:o(n,t)}},function(e,t,n){var r=n(65).f,o=n(76),a=n(50)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,a)&&r(e,a,{configurable:!0,value:t})}},function(e,t,n){t.f=n(50)},function(e,t,n){var r=n(64),o=n(49),a=n(103),i=n(141),c=n(65).f;e.exports=function(e){var t=o.Symbol||(o.Symbol=a?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||c(t,e,{value:i.f(e)})}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.changeConfirmLocale=function(e){i=e?a(a({},i),e):a({},o.default.Modal)},t.getConfirmLocale=function(){return i};var r,o=(r=n(203))&&r.__esModule?r:{default:r};function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var i=a({},o.default.Modal)},function(e,t,n){"use strict";t.__esModule=!0;var r=a(n(0)),o=a(n(500));function a(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createContext||o.default,e.exports=t.default},function(e,t,n){"use strict";var r=function(){};e.exports=r},function(e,t,n){var r=n(340);e.exports=function(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.getExpandableProps=function(e){var t=e.expandable,n=(0,a.default)(e,["expandable"]);if("expandable"in e)return(0,o.default)((0,o.default)({},n),t);0;return n},t.getDataAndAriaProps=function(e){return Object.keys(e).reduce((function(t,n){return"data-"!==n.substr(0,5)&&"aria-"!==n.substr(0,5)||(t[n]=e[n]),t}),{})},t.INTERNAL_COL_DEFINE=void 0;var o=r(n(45)),a=r(n(57));r(n(67));t.INTERNAL_COL_DEFINE="RC_TABLE_INTERNAL_COL_DEFINE"},function(e,t,n){"use strict";var r=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(0)).createContext(null);t.default=o},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=[];return o.default.Children.forEach(t,(function(t){(null!=t||n.keepEmpty)&&(Array.isArray(t)?r=r.concat(e(t)):(0,a.isFragment)(t)&&t.props?r=r.concat(e(t.props.children,n)):r.push(t))})),r};var o=r(n(0)),a=n(81)},function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){var r=n(53).Symbol;e.exports=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=(0,n(0).createContext)({});t.default=r},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(353)),a=r(n(354)),i=r(n(355)),c=r(n(554)),l="${label} is not a valid ${type}",u={locale:"en",Pagination:o.default,DatePicker:a.default,TimePicker:i.default,Calendar:c.default,global:{placeholder:"Please select"},Table:{filterTitle:"Filter menu",filterConfirm:"OK",filterReset:"Reset",filterEmptyText:"No filters",emptyText:"No data",selectAll:"Select current page",selectInvert:"Invert current page",selectNone:"Clear all data",selectionAll:"Select all data",sortTitle:"Sort",expand:"Expand row",collapse:"Collapse row",triggerDesc:"Click to sort descending",triggerAsc:"Click to sort ascending",cancelSort:"Click to cancel sorting"},Modal:{okText:"OK",cancelText:"Cancel",justOkText:"OK"},Popconfirm:{okText:"OK",cancelText:"Cancel"},Transfer:{titles:["",""],searchPlaceholder:"Search here",itemUnit:"item",itemsUnit:"items",remove:"Remove",selectCurrent:"Select current page",removeCurrent:"Remove current page",selectAll:"Select all data",removeAll:"Remove all data",selectInvert:"Invert current page"},Upload:{uploading:"Uploading...",removeFile:"Remove file",uploadError:"Upload error",previewFile:"Preview file",downloadFile:"Download file"},Empty:{description:"No Data"},Icon:{icon:"icon"},Text:{edit:"Edit",copy:"Copy",copied:"Copied",expand:"Expand"},PageHeader:{back:"Back"},Form:{optional:"(optional)",defaultValidateMessages:{default:"Field validation error for ${label}",required:"Please enter ${label}",enum:"${label} must be one of [${enum}]",whitespace:"${label} cannot be a blank character",date:{format:"${label} date format is invalid",parse:"${label} cannot be converted to a date",invalid:"${label} is an invalid date"},types:{string:l,method:l,array:l,object:l,number:l,date:l,boolean:l,integer:l,float:l,regexp:l,email:l,url:l,hex:l},string:{len:"${label} must be ${len} characters",min:"${label} must be at least ${min} characters",max:"${label} must be up to ${max} characters",range:"${label} must be between ${min}-${max} characters"},number:{len:"${label} must be equal to ${len}",min:"${label} must be minimum ${min}",max:"${label} must be maximum ${max}",range:"${label} must be between ${min}-${max}"},array:{len:"Must be ${len} ${label}",min:"At least ${min} ${label}",max:"At most ${max} ${label}",range:"The amount of ${label} must be between ${min}-${max}"},pattern:{mismatch:"${label} does not match the pattern ${pattern}"}}},Image:{preview:"Preview"}};t.default=u},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.useLocaleReceiver=function(e,t){var n=s.useContext(d.default);return[s.useMemo((function(){var r=t||f.default[e||"global"],o=e&&n?n[e]:{};return(0,a.default)((0,a.default)({},"function"==typeof r?r():r),o||{})}),[e,t,n])]},t.default=void 0;var a=r(n(12)),i=r(n(52)),c=r(n(58)),l=r(n(59)),u=r(n(60)),s=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=p(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),f=r(n(555)),d=r(n(356));function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}var h=function(e){(0,l.default)(n,e);var t=(0,u.default)(n);function n(){return(0,i.default)(this,n),t.apply(this,arguments)}return(0,c.default)(n,[{key:"getLocale",value:function(){var e=this.props,t=e.componentName,n=e.defaultLocale||f.default[t||"global"],r=this.context,o=t&&r?r[t]:{};return(0,a.default)((0,a.default)({},"function"==typeof n?n():n),o||{})}},{key:"getLocaleCode",value:function(){var e=this.context,t=e&&e.locale;return e&&e.exist&&!t?f.default.locale:t}},{key:"render",value:function(){return this.props.children(this.getLocale(),this.getLocaleCode(),this.context)}}]),n}(s.Component);t.default=h,h.defaultProps={componentName:"global"},h.contextType=d.default},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.withConfigConsumer=function(e){return function(t){var n=function(n){return i.createElement(s,null,(function(r){var o=e.prefixCls,c=(0,r.getPrefixCls)(o,n.prefixCls);return i.createElement(t,(0,a.default)({},r,n,{prefixCls:c}))}))},r=t.constructor,o=r&&r.displayName||t.name||"Component";return n.displayName="withConfigConsumer(".concat(o,")"),n}},t.ConfigConsumer=t.ConfigContext=void 0;var a=r(n(12)),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=l(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),c=r(n(556));function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(l=function(e){return e?n:t})(e)}var u=i.createContext({getPrefixCls:function(e,t){return t||(e?"ant-".concat(e):"ant")},renderEmpty:c.default});t.ConfigContext=u;var s=u.Consumer;t.ConfigConsumer=s},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(560))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.warning=function(e,t){(0,u.default)(e,"[@ant-design/icons] ".concat(t))},t.isIconDefinition=function(e){return"object"===(0,i.default)(e)&&"string"==typeof e.name&&"string"==typeof e.theme&&("object"===(0,i.default)(e.icon)||"function"==typeof e.icon)},t.normalizeAttrs=d,t.generate=function e(t,n,r){if(!r)return l.default.createElement(t.tag,(0,a.default)({key:n},d(t.attrs)),(t.children||[]).map((function(r,o){return e(r,"".concat(n,"-").concat(t.tag,"-").concat(o))})));return l.default.createElement(t.tag,(0,a.default)((0,a.default)({key:n},d(t.attrs)),r),(t.children||[]).map((function(r,o){return e(r,"".concat(n,"-").concat(t.tag,"-").concat(o))})))},t.getSecondaryColor=function(e){return(0,c.generate)(e)[0]},t.normalizeTwoToneColors=function(e){if(!e)return[];return Array.isArray(e)?e:[e]},t.useInsertStyles=t.iconStyles=t.svgBaseProps=void 0;var a=o(n(45)),i=o(n(8)),c=n(879),l=r(n(0)),u=o(n(67)),s=n(360),f=o(n(153));function d(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).reduce((function(t,n){var r=e[n];switch(n){case"class":t.className=r,delete t.class;break;default:t[n]=r}return t}),{})}t.svgBaseProps={width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true",focusable:"false"};var p="\n.anticon {\n display: inline-block;\n color: inherit;\n font-style: normal;\n line-height: 0;\n text-align: center;\n text-transform: none;\n vertical-align: -0.125em;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.anticon > * {\n line-height: 1;\n}\n\n.anticon svg {\n display: inline-block;\n}\n\n.anticon::before {\n display: none;\n}\n\n.anticon .anticon-icon {\n display: block;\n}\n\n.anticon[tabindex] {\n cursor: pointer;\n}\n\n.anticon-spin::before,\n.anticon-spin {\n display: inline-block;\n -webkit-animation: loadingCircle 1s infinite linear;\n animation: loadingCircle 1s infinite linear;\n}\n\n@-webkit-keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n";t.iconStyles=p;t.useInsertStyles=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p,t=(0,l.useContext)(f.default),n=t.csp;(0,l.useEffect)((function(){(0,s.updateCSS)(e,"@ant-design-icons",{prepend:!0,csp:n})}),[])}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(596))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.getTransitionName=void 0;var r=function(){return{height:0,opacity:0}},o=function(e){return{height:e.scrollHeight,opacity:1}},a=function(e,t){return"height"===t.propertyName},i={motionName:"ant-motion-collapse",onAppearStart:r,onEnterStart:r,onAppearActive:o,onEnterActive:o,onLeaveStart:function(e){return{height:e.offsetHeight}},onLeaveActive:r,onAppearEnd:a,onEnterEnd:a,onLeaveEnd:a,motionDeadline:500};t.getTransitionName=function(e,t,n){return void 0!==n?n:"".concat(e,"-").concat(t)};var c=i;t.default=c},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.arrDel=function(e,t){var n=e.slice(),r=n.indexOf(t);r>=0&&n.splice(r,1);return n},t.arrAdd=function(e,t){var n=e.slice();-1===n.indexOf(t)&&n.push(t);return n},t.posToArr=s,t.getPosition=function(e,t){return"".concat(e,"-").concat(t)},t.isTreeNode=function(e){return e&&e.type&&e.type.isTreeNode},t.getDragChildrenKeys=function(e,t){var n=[];return function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];t.forEach((function(t){var r=t.key,o=t.children;n.push(r),e(o)}))}(t[e].children),n},t.isLastChild=f,t.isFirstChild=d,t.calcDropPosition=function(e,t,n,r,o,a,i,c,l,u){var s,p=e.clientX,h=e.clientY,m=e.target.getBoundingClientRect(),v=m.top,y=m.height,_=(("rtl"===u?-1:1)*(((null==o?void 0:o.x)||0)-p)-12)/r,b=c[n.props.eventKey];if(h<v+y/2){var g=i.findIndex((function(e){return e.data.key===b.key})),M=i[g<=0?0:g-1].data.key;b=c[M]}var w=b.key,O=b,k=b.key,L=0,x=0;if(!l.includes(w))for(var z=0;z<_&&f(b);z+=1)b=b.parent,x+=1;var S=b.node,C=!0;d(b)&&0===b.level&&h<v+y/2&&a({dropNode:S,dropPosition:-1})&&b.key===n.props.eventKey?L=-1:(O.children||[]).length&&l.includes(k)?a({dropNode:S,dropPosition:0})?L=0:C=!1:0===x?_>-1.5?a({dropNode:S,dropPosition:1})?L=1:C=!1:a({dropNode:S,dropPosition:0})?L=0:a({dropNode:S,dropPosition:1})?L=1:C=!1:a({dropNode:S,dropPosition:1})?L=1:C=!1;return{dropPosition:L,dropLevelOffset:x,dropTargetKey:b.key,dropTargetPos:b.pos,dragOverNodeKey:k,dropContainerKey:0===L?null:(null===(s=b.parent)||void 0===s?void 0:s.key)||null,dropAllowed:C}},t.calcSelectedKeys=function(e,t){if(!e)return;if(t.multiple)return e.slice();if(e.length)return[e[0]];return e},t.convertDataToTree=function e(t,n){if(!t)return[];var r=(n||{}).processProps,o=void 0===r?p:r;return(Array.isArray(t)?t:[t]).map((function(t){var r=t.children,a=(0,i.default)(t,["children"]),l=e(r,n);return c.default.createElement(u.default,o(a),l)}))},t.parseCheckedKeys=function(e){if(!e)return null;var t;if(Array.isArray(e))t={checkedKeys:e,halfCheckedKeys:void 0};else{if("object"!==(0,a.default)(e))return(0,l.default)(!1,"`checkedKeys` is not an array or an object"),null;t={checkedKeys:e.checked||void 0,halfCheckedKeys:e.halfChecked||void 0}}return t},t.conductExpandParent=function(e,t){var n=new Set;return(e||[]).forEach((function(e){!function e(r){if(n.has(r))return;var o=t[r];if(!o)return;n.add(r);var a=o.parent;if(o.node.disabled)return;a&&e(a.key)}(e)})),(0,o.default)(n)},t.getDataAndAria=function(e){var t={};return Object.keys(e).forEach((function(n){(n.startsWith("data-")||n.startsWith("aria-"))&&(t[n]=e[n])})),t};var o=r(n(46)),a=r(n(8)),i=r(n(57)),c=r(n(0)),l=r(n(67)),u=r(n(619));function s(e){return e.split("-")}function f(e){if(e.parent){var t=s(e.pos);return Number(t[t.length-1])===e.parent.children.length-1}return!1}function d(e){var t=s(e.pos);return 0===Number(t[t.length-1])}var p=function(e){return e}},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=t||{},r=n.defaultValue,o=n.value,c=n.onChange,l=n.postState,u=i.useState((function(){return void 0!==o?o:void 0!==r?"function"==typeof r?r():r:"function"==typeof e?e():e})),s=(0,a.default)(u,2),f=s[0],d=s[1],p=void 0!==o?o:f;l&&(p=l(p));var h=i.useRef(!0);return i.useEffect((function(){h.current?h.current=!1:void 0===o&&d(o)}),[o]),[p,function(e){d(e),p!==e&&c&&c(e,p)}]};var a=o(n(25)),i=r(n(0))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=(0,n(0).createContext)({inlineCollapsed:!1});t.default=r},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(13)),i=r(n(12)),c=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=h(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),l=r(n(371)),u=r(n(2)),s=n(108),f=n(26),d=r(n(165)),p=r(n(68));function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(h=function(e){return e?n:t})(e)}var m=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},v=function(e,t){var n,r=c.useContext(d.default),o=c.useContext(f.ConfigContext),h=o.getPrefixCls,v=o.direction,y=c.useRef(),_=(0,s.composeRef)(t,y);c.useEffect((function(){(0,p.default)(!("optionType"in e),"Radio","`optionType` is only support in Radio.Group.")}),[]);var b=e.prefixCls,g=e.className,M=e.children,w=e.style,O=m(e,["prefixCls","className","children","style"]),k=h("radio",b),L=(0,i.default)({},O);r&&(L.name=r.name,L.onChange=function(t){var n,o;null===(n=e.onChange)||void 0===n||n.call(e,t),null===(o=null==r?void 0:r.onChange)||void 0===o||o.call(r,t)},L.checked=e.value===r.value,L.disabled=e.disabled||r.disabled);var x=(0,u.default)("".concat(k,"-wrapper"),(n={},(0,a.default)(n,"".concat(k,"-wrapper-checked"),L.checked),(0,a.default)(n,"".concat(k,"-wrapper-disabled"),L.disabled),(0,a.default)(n,"".concat(k,"-wrapper-rtl"),"rtl"===v),n),g);return c.createElement("label",{className:x,style:w,onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave},c.createElement(l.default,(0,i.default)({},L,{prefixCls:k,ref:_})),void 0!==M?c.createElement("span",null,M):null)},y=c.forwardRef(v);y.displayName="Radio",y.defaultProps={type:"radio"};var _=y;t.default=_},function(e,t,n){"use strict";var r=n(8);function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(o=function(e){return e?n:t})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.RadioGroupContextProvider=void 0;var a=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=o(t);if(n&&n.has(e))return n.get(e);var a={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var c in e)if("default"!==c&&Object.prototype.hasOwnProperty.call(e,c)){var l=i?Object.getOwnPropertyDescriptor(e,c):null;l&&(l.get||l.set)?Object.defineProperty(a,c,l):a[c]=e[c]}a.default=e,n&&n.set(e,a);return a}(n(0)).createContext(null),i=a.Provider;t.RadioGroupContextProvider=i;var c=a;t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getColumnKey=function(e,t){if("key"in e&&void 0!==e.key&&null!==e.key)return e.key;if(e.dataIndex)return Array.isArray(e.dataIndex)?e.dataIndex.join("."):e.dataIndex;return t},t.getColumnPos=function(e,t){return t?"".concat(t,"-").concat(e):"".concat(e)},t.renderColumnTitle=function(e,t){if("function"==typeof e)return e(t);return e}},function(e,t,n){var r=n(88)(n(53),"Map");e.exports=r},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validProgress=function(e){if(!e||e<0)return 0;if(e>100)return 100;return e}},function(e,t,n){var r=n(116),o=n(783),a=n(787),i=n(816);e.exports=function(e,t){return r(e)?e:o(e,t)?[e]:a(i(e))}},function(e,t,n){var r=n(172),o=n(175);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,t,n){var r=n(173),o=n(785),a=n(786),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?o(e):a(e)}},function(e,t,n){var r=n(174).Symbol;e.exports=r},function(e,t,n){var r=n(784),o="object"==typeof self&&self&&self.Object===Object&&self,a=r||o||Function("return this")();e.exports=a},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){var r=n(794),o=n(799);e.exports=function(e,t){var n=o(e,t);return r(n)?n:void 0}},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t){e.exports=function(e,t){return e===t||e!=e&&t!=t}},function(e,t,n){var r=n(171);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(17));t.argumentContainer=function(e,t){return e.displayName="Form("+function(e){return e.displayName||e.name||"WrappedComponent"}(t)+")",e.WrappedComponent=t,(0,o.default)(e,t)},t.identity=function(e){return e},t.flattenArray=function(e){return Array.prototype.concat.apply([],e)},t.treeTraverse=c,t.flattenFields=function(e,t,n){var r={};return c(void 0,e,t,n,(function(e,t){r[e]=t})),r},t.normalizeValidateRules=function(e,t,n){var o=e.map((function(e){var t=(0,r.default)({},e,{trigger:e.trigger||[]});return"string"==typeof t.trigger&&(t.trigger=[t.trigger]),t}));t&&o.push({trigger:n?[].concat(n):[],rules:t});return o},t.getValidateTriggers=function(e){return e.filter((function(e){return!!e.rules&&e.rules.length})).map((function(e){return e.trigger})).reduce((function(e,t){return e.concat(t)}),[])},t.getValueFromEvent=function(e){if(!e||!e.target)return e;var t=e.target;return"checkbox"===t.type?t.checked:t.value},t.getErrorStrs=function(e){if(e)return e.map((function(e){return e&&e.message?e.message:e}));return e},t.getParams=function(e,t,n){var r=e,o=t,a=n;void 0===n&&("function"==typeof r?(a=r,o={},r=void 0):Array.isArray(r)?"function"==typeof o?(a=o,o={}):o=o||{}:(a=o,o=r||{},r=void 0));return{names:r,options:o,callback:a}},t.isEmptyObject=function(e){return 0===Object.keys(e).length},t.hasRules=function(e){if(e)return e.some((function(e){return e.rules&&e.rules.length}));return!1},t.startsWith=function(e,t){return 0===e.lastIndexOf(t,0)};var o=i(n(866)),a=i(n(146));function i(e){return e&&e.__esModule?e:{default:e}}function c(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments[1],n=arguments[2],r=arguments[3],o=arguments[4];if(n(e,t))o(e,t);else if(null==t);else if(Array.isArray(t))t.forEach((function(t,a){return c(e+"["+a+"]",t,n,r,o)}));else{if("object"!=typeof t)return void(0,a.default)(!1,r);Object.keys(t).forEach((function(a){var i=t[a];c(e+(e?".":"")+a,i,n,r,o)}))}}},function(e,t,n){"use strict";n.r(t),n.d(t,"SubMenu",(function(){return be})),n.d(t,"Item",(function(){return Pe})),n.d(t,"MenuItem",(function(){return Pe})),n.d(t,"MenuItemGroup",(function(){return De})),n.d(t,"ItemGroup",(function(){return De})),n.d(t,"Divider",(function(){return Ve}));var r,o=n(7),a=n(1),i=n(20),c=n(21),l=n(30),u=n(23),s=n(22),f=n(0),d=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),p=f.createContext(null),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return d(t,e),t.prototype.render=function(){return f.createElement(p.Provider,{value:this.props.store},this.props.children)},t}(f.Component),m=n(35),v=n.n(m),y=n(187),_=n.n(y),b=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),g=function(){return(g=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};var M=function(){return{}};function w(e,t){void 0===t&&(t={});var n=!!e,r=e||M;return function(o){var a=function(t){function a(e,n){var o=t.call(this,e,n)||this;return o.unsubscribe=null,o.handleChange=function(){if(o.unsubscribe){var e=r(o.store.getState(),o.props);o.setState({subscribed:e})}},o.store=o.context,o.state={subscribed:r(o.store.getState(),e),store:o.store,props:e},o}return b(a,t),a.getDerivedStateFromProps=function(t,n){return e&&2===e.length&&t!==n.props?{subscribed:r(n.store.getState(),t),props:t}:{props:t}},a.prototype.componentDidMount=function(){this.trySubscribe()},a.prototype.componentWillUnmount=function(){this.tryUnsubscribe()},a.prototype.shouldComponentUpdate=function(e,t){return!v()(this.props,e)||!v()(this.state.subscribed,t.subscribed)},a.prototype.trySubscribe=function(){n&&(this.unsubscribe=this.store.subscribe(this.handleChange),this.handleChange())},a.prototype.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null)},a.prototype.render=function(){var e=g(g(g({},this.props),this.state.subscribed),{store:this.store});return f.createElement(o,g({},e,{ref:this.props.miniStoreForwardedRef}))},a.displayName="Connect("+function(e){return e.displayName||e.name||"Component"}(o)+")",a.contextType=p,a}(f.Component);if(t.forwardRef){var i=f.forwardRef((function(e,t){return f.createElement(a,g({},e,{miniStoreForwardedRef:t}))}));return _()(i,o)}return _()(a,o)}}var O=function(){return(O=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};var k=n(6);function L(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function x(e,t){var n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?L(Object(n),!0).forEach((function(t){Object(k.a)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):L(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},e);return Array.isArray(t)&&t.forEach((function(e){delete n[e]})),n}var z=n(18);function S(){var e=[].slice.call(arguments,0);return 1===e.length?e[0]:function(){for(var t=0;t<e.length;t++)e[t]&&e[t].apply&&e[t].apply(this,arguments)}}var C=n(61),j=n(2),E=n.n(j),T=n(28),P=n(9),H=/iPhone/i,D=/iPod/i,Y=/iPad/i,V=/\bAndroid(?:.+)Mobile\b/i,N=/Android/i,F=/\bAndroid(?:.+)SD4930UR\b/i,A=/\bAndroid(?:.+)(?:KF[A-Z]{2,4})\b/i,R=/Windows Phone/i,I=/\bWindows(?:.+)ARM\b/i,W=/BlackBerry/i,U=/BB10/i,K=/Opera Mini/i,B=/\b(CriOS|Chrome)(?:.+)Mobile/i,q=/Mobile(?:.+)Firefox\b/i;function $(e,t){return e.test(t)}function G(e){var t=e||("undefined"!=typeof navigator?navigator.userAgent:""),n=t.split("[FBAN");if(void 0!==n[1]){var r=n;t=Object(P.a)(r,1)[0]}if(void 0!==(n=t.split("Twitter"))[1]){var o=n;t=Object(P.a)(o,1)[0]}var a={apple:{phone:$(H,t)&&!$(R,t),ipod:$(D,t),tablet:!$(H,t)&&$(Y,t)&&!$(R,t),device:($(H,t)||$(D,t)||$(Y,t))&&!$(R,t)},amazon:{phone:$(F,t),tablet:!$(F,t)&&$(A,t),device:$(F,t)||$(A,t)},android:{phone:!$(R,t)&&$(F,t)||!$(R,t)&&$(V,t),tablet:!$(R,t)&&!$(F,t)&&!$(V,t)&&($(A,t)||$(N,t)),device:!$(R,t)&&($(F,t)||$(A,t)||$(V,t)||$(N,t))||$(/\bokhttp\b/i,t)},windows:{phone:$(R,t),tablet:$(I,t),device:$(R,t)||$(I,t)},other:{blackberry:$(W,t),blackberry10:$(U,t),opera:$(K,t),firefox:$(q,t),chrome:$(B,t),device:$(W,t)||$(U,t)||$(K,t)||$(q,t)||$(B,t)},any:null,phone:null,tablet:null};return a.any=a.apple.device||a.android.device||a.windows.device||a.other.device,a.phone=a.apple.phone||a.android.phone||a.windows.phone,a.tablet=a.apple.tablet||a.android.tablet||a.windows.tablet,a}var J=Object(a.a)(Object(a.a)({},G()),{},{isMobile:G});function Q(){}function X(e,t,n){var r=t||"";return e.key||"".concat(r,"item_").concat(n)}function Z(e){return"".concat(e,"-menu-")}function ee(e,t){var n=-1;f.Children.forEach(e,(function(e){n+=1,e&&e.type&&e.type.isMenuItemGroup?f.Children.forEach(e.props.children,(function(e){t(e,n+=1)})):t(e,n)}))}var te=["defaultSelectedKeys","selectedKeys","defaultOpenKeys","openKeys","mode","getPopupContainer","onSelect","onDeselect","onDestroy","openTransitionName","openAnimation","subMenuOpenDelay","subMenuCloseDelay","forceSubMenuRender","triggerSubMenuAction","level","selectable","multiple","onOpenChange","visible","focusable","defaultActiveFirst","prefixCls","inlineIndent","parentMenu","title","rootPrefixCls","eventKey","active","onItemHover","onTitleMouseEnter","onTitleMouseLeave","onTitleClick","popupAlign","popupOffset","isOpen","renderMenuItem","manualRef","subMenuKey","disabled","index","isSelected","store","activeKey","builtinPlacements","overflowedIndicator","motion","attribute","value","popupClassName","inlineCollapsed","menu","theme","itemIcon","expandIcon"],ne=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e&&"function"==typeof e.getBoundingClientRect&&e.getBoundingClientRect().width;if(n){if(t){var r=getComputedStyle(e),o=r.marginLeft,a=r.marginRight;n+=+o.replace("px","")+ +a.replace("px","")}n=+n.toFixed(6)}return n||0},re=function(e,t,n){e&&"object"===Object(T.a)(e.style)&&(e.style[t]=n)},oe=n(14),ae=n(15),ie=n(82),ce=n(11),le=n(71),ue=n(44),se=n(47),fe={adjustX:1,adjustY:1},de={topLeft:{points:["bl","tl"],overflow:fe,offset:[0,-7]},bottomLeft:{points:["tl","bl"],overflow:fe,offset:[0,7]},leftTop:{points:["tr","tl"],overflow:fe,offset:[-4,0]},rightTop:{points:["tl","tr"],overflow:fe,offset:[4,0]}},pe={topLeft:{points:["bl","tl"],overflow:fe,offset:[0,-7]},bottomLeft:{points:["tl","bl"],overflow:fe,offset:[0,7]},rightTop:{points:["tr","tl"],overflow:fe,offset:[-4,0]},leftTop:{points:["tl","tr"],overflow:fe,offset:[4,0]}},he=0,me={horizontal:"bottomLeft",vertical:"rightTop","vertical-left":"rightTop","vertical-right":"leftTop"},ve=function(e,t,n){var r=Z(t),o=e.getState();e.setState({defaultActiveFirst:Object(a.a)(Object(a.a)({},o.defaultActiveFirst),{},Object(k.a)({},r,n))})},ye=function(e){Object(u.a)(n,e);var t=Object(s.a)(n);function n(e){var r;Object(i.a)(this,n),(r=t.call(this,e)).onDestroy=function(e){r.props.onDestroy(e)},r.onKeyDown=function(e){var t=e.keyCode,n=r.menuInstance,o=r.props.store,a=r.getVisible();if(t===z.a.ENTER)return r.onTitleClick(e),ve(o,r.props.eventKey,!0),!0;if(t===z.a.RIGHT)return a?n.onKeyDown(e):(r.triggerOpenChange(!0),ve(o,r.props.eventKey,!0)),!0;if(t===z.a.LEFT){var i;if(!a)return;return(i=n.onKeyDown(e))||(r.triggerOpenChange(!1),i=!0),i}return!a||t!==z.a.UP&&t!==z.a.DOWN?void 0:n.onKeyDown(e)},r.onOpenChange=function(e){r.props.onOpenChange(e)},r.onPopupVisibleChange=function(e){r.triggerOpenChange(e,e?"mouseenter":"mouseleave")},r.onMouseEnter=function(e){var t=r.props,n=t.eventKey,o=t.onMouseEnter,a=t.store;ve(a,r.props.eventKey,!1),o({key:n,domEvent:e})},r.onMouseLeave=function(e){var t=r.props,n=t.parentMenu,o=t.eventKey,a=t.onMouseLeave;n.subMenuInstance=Object(l.a)(r),a({key:o,domEvent:e})},r.onTitleMouseEnter=function(e){var t=r.props,n=t.eventKey,o=t.onItemHover,a=t.onTitleMouseEnter;o({key:n,hover:!0}),a({key:n,domEvent:e})},r.onTitleMouseLeave=function(e){var t=r.props,n=t.parentMenu,o=t.eventKey,a=t.onItemHover,i=t.onTitleMouseLeave;n.subMenuInstance=Object(l.a)(r),a({key:o,hover:!1}),i({key:o,domEvent:e})},r.onTitleClick=function(e){var t=Object(l.a)(r).props;t.onTitleClick({key:t.eventKey,domEvent:e}),"hover"!==t.triggerSubMenuAction&&(r.triggerOpenChange(!r.getVisible(),"click"),ve(t.store,r.props.eventKey,!1))},r.onSubMenuClick=function(e){"function"==typeof r.props.onClick&&r.props.onClick(r.addKeyPath(e))},r.onSelect=function(e){r.props.onSelect(e)},r.onDeselect=function(e){r.props.onDeselect(e)},r.getPrefixCls=function(){return"".concat(r.props.rootPrefixCls,"-submenu")},r.getActiveClassName=function(){return"".concat(r.getPrefixCls(),"-active")},r.getDisabledClassName=function(){return"".concat(r.getPrefixCls(),"-disabled")},r.getSelectedClassName=function(){return"".concat(r.getPrefixCls(),"-selected")},r.getOpenClassName=function(){return"".concat(r.props.rootPrefixCls,"-submenu-open")},r.getVisible=function(){return r.state.isOpen},r.getMode=function(){return r.state.mode},r.saveMenuInstance=function(e){r.menuInstance=e},r.addKeyPath=function(e){return Object(a.a)(Object(a.a)({},e),{},{keyPath:(e.keyPath||[]).concat(r.props.eventKey)})},r.triggerOpenChange=function(e,t){var n=r.props.eventKey,o=function(){r.onOpenChange({key:n,item:Object(l.a)(r),trigger:t,open:e})};"mouseenter"===t?r.mouseenterTimeout=setTimeout((function(){o()}),0):o()},r.isChildrenSelected=function(){var e={find:!1};return function e(t,n,r){t&&!r.find&&f.Children.forEach(t,(function(t){if(t){var o=t.type;if(!o||!(o.isSubMenu||o.isMenuItem||o.isMenuItemGroup))return;-1!==n.indexOf(t.key)?r.find=!0:t.props.children&&e(t.props.children,n,r)}}))}(r.props.children,r.props.selectedKeys,e),e.find},r.isInlineMode=function(){return"inline"===r.getMode()},r.adjustWidth=function(){if(r.subMenuTitle&&r.menuInstance){var e=ce.findDOMNode(r.menuInstance);e.offsetWidth>=r.subMenuTitle.offsetWidth||(e.style.minWidth="".concat(r.subMenuTitle.offsetWidth,"px"))}},r.saveSubMenuTitle=function(e){r.subMenuTitle=e},r.getBaseProps=function(){var e=Object(l.a)(r).props,t=r.getMode();return{mode:"horizontal"===t?"vertical":t,visible:r.getVisible(),level:e.level+1,inlineIndent:e.inlineIndent,focusable:!1,onClick:r.onSubMenuClick,onSelect:r.onSelect,onDeselect:r.onDeselect,onDestroy:r.onDestroy,selectedKeys:e.selectedKeys,eventKey:"".concat(e.eventKey,"-menu-"),openKeys:e.openKeys,motion:e.motion,onOpenChange:r.onOpenChange,subMenuOpenDelay:e.subMenuOpenDelay,parentMenu:Object(l.a)(r),subMenuCloseDelay:e.subMenuCloseDelay,forceSubMenuRender:e.forceSubMenuRender,triggerSubMenuAction:e.triggerSubMenuAction,builtinPlacements:e.builtinPlacements,defaultActiveFirst:e.store.getState().defaultActiveFirst[Z(e.eventKey)],multiple:e.multiple,prefixCls:e.rootPrefixCls,id:r.internalMenuId,manualRef:r.saveMenuInstance,itemIcon:e.itemIcon,expandIcon:e.expandIcon,direction:e.direction}},r.getMotion=function(e,t){var n=Object(l.a)(r).haveRendered,o=r.props,i=o.motion,c=o.rootPrefixCls;return Object(a.a)(Object(a.a)({},i),{},{leavedClassName:"".concat(c,"-hidden"),removeOnLeave:!1,motionAppear:n||!t||"inline"!==e})};var o=e.store,c=e.eventKey,u=o.getState().defaultActiveFirst;r.isRootMenu=!1;var s=!1;return u&&(s=u[c]),ve(o,c,s),r.state={mode:e.mode,isOpen:e.isOpen},r}return Object(c.a)(n,[{key:"componentDidMount",value:function(){this.componentDidUpdate()}},{key:"componentDidUpdate",value:function(){var e=this,t=this.props,n=t.mode,r=t.parentMenu,o=t.manualRef,a=t.isOpen,i=function(){e.setState({mode:n,isOpen:a})},c=a!==this.state.isOpen,l=n!==this.state.mode;(l||c)&&(ue.a.cancel(this.updateStateRaf),l?this.updateStateRaf=Object(ue.a)(i):i()),o&&o(this),"horizontal"===n&&(null==r?void 0:r.isRootMenu)&&a&&(this.minWidthTimeout=setTimeout((function(){return e.adjustWidth()}),0))}},{key:"componentWillUnmount",value:function(){var e=this.props,t=e.onDestroy,n=e.eventKey;t&&t(n),this.minWidthTimeout&&clearTimeout(this.minWidthTimeout),this.mouseenterTimeout&&clearTimeout(this.mouseenterTimeout),ue.a.cancel(this.updateStateRaf)}},{key:"renderPopupMenu",value:function(e,t){var n=this.getBaseProps();return f.createElement(ze,Object(o.a)({},n,{id:this.internalMenuId,className:e,style:t}),this.props.children)}},{key:"renderChildren",value:function(){var e=this,t=this.getBaseProps(),n=t.mode,r=t.visible,a=t.forceSubMenuRender,i=t.direction,c=this.getMotion(n,r);if(this.haveRendered=!0,this.haveOpened=this.haveOpened||r||a,!this.haveOpened)return f.createElement("div",null);var l=E()("".concat(t.prefixCls,"-sub"),Object(k.a)({},"".concat(t.prefixCls,"-rtl"),"rtl"===i));return this.isInlineMode()?f.createElement(se.default,Object(o.a)({visible:t.visible},c),(function(t){var n=t.className,r=t.style,o=E()(l,n);return e.renderPopupMenu(o,r)})):this.renderPopupMenu(l)}},{key:"render",value:function(){var e,t,n,r=Object(a.a)({},this.props),i=this.getVisible(),c=this.getPrefixCls(),l=this.isInlineMode(),u=this.getMode(),s=E()(c,"".concat(c,"-").concat(u),(e={},Object(k.a)(e,r.className,!!r.className),Object(k.a)(e,this.getOpenClassName(),i),Object(k.a)(e,this.getActiveClassName(),r.active||i&&!l),Object(k.a)(e,this.getDisabledClassName(),r.disabled),Object(k.a)(e,this.getSelectedClassName(),this.isChildrenSelected()),e));this.internalMenuId||(r.eventKey?this.internalMenuId="".concat(r.eventKey,"$Menu"):(he+=1,this.internalMenuId="$__$".concat(he,"$Menu")));var d={},p={},h={};r.disabled||(d={onMouseLeave:this.onMouseLeave,onMouseEnter:this.onMouseEnter},p={onClick:this.onTitleClick},h={onMouseEnter:this.onTitleMouseEnter,onMouseLeave:this.onTitleMouseLeave});var m={},v="rtl"===r.direction;l&&(v?m.paddingRight=r.inlineIndent*r.level:m.paddingLeft=r.inlineIndent*r.level);var y={};this.getVisible()&&(y={"aria-owns":this.internalMenuId});var _=null;"horizontal"!==u&&(_=this.props.expandIcon,"function"==typeof this.props.expandIcon&&(_=f.createElement(this.props.expandIcon,Object(a.a)({},this.props))));var b=f.createElement("div",Object(o.a)({ref:this.saveSubMenuTitle,style:m,className:"".concat(c,"-title"),role:"button"},h,p,{"aria-expanded":i},y,{"aria-haspopup":"true",title:"string"==typeof r.title?r.title:void 0}),r.title,_||f.createElement("i",{className:"".concat(c,"-arrow")})),g=this.renderChildren(),M=(null===(t=r.parentMenu)||void 0===t?void 0:t.isRootMenu)?r.parentMenu.props.getPopupContainer:function(e){return e.parentNode},w=me[u],O=r.popupOffset?{offset:r.popupOffset}:{},L=E()((n={},Object(k.a)(n,r.popupClassName,r.popupClassName&&!l),Object(k.a)(n,"".concat(c,"-rtl"),v),n)),x=r.disabled,z=r.triggerSubMenuAction,S=r.subMenuOpenDelay,C=r.forceSubMenuRender,j=r.subMenuCloseDelay,T=r.builtinPlacements;te.forEach((function(e){return delete r[e]})),delete r.onClick;var P=v?Object(a.a)(Object(a.a)({},pe),T):Object(a.a)(Object(a.a)({},de),T);delete r.direction;var H=this.getBaseProps(),D=l?null:this.getMotion(H.mode,H.visible);return f.createElement("li",Object(o.a)({},r,d,{className:s,role:"menuitem"}),f.createElement(le.a,{prefixCls:c,popupClassName:E()("".concat(c,"-popup"),L),getPopupContainer:M,builtinPlacements:P,popupPlacement:w,popupVisible:!l&&i,popupAlign:O,popup:l?null:g,action:x||l?[]:[z],mouseEnterDelay:S,mouseLeaveDelay:j,onPopupVisibleChange:this.onPopupVisibleChange,forceRender:C,popupMotion:D},b),l?g:null)}}]),n}(f.Component);ye.defaultProps={onMouseEnter:Q,onMouseLeave:Q,onTitleMouseEnter:Q,onTitleMouseLeave:Q,onTitleClick:Q,manualRef:Q,mode:"vertical",title:""};var _e=w((function(e,t){var n=e.openKeys,r=e.activeKey,o=e.selectedKeys,a=t.eventKey,i=t.subMenuKey;return{isOpen:n.indexOf(a)>-1,active:r[i]===a,selectedKeys:o}}))(ye);_e.isSubMenu=!0;var be=_e,ge=function(e){Object(u.a)(n,e);var t=Object(s.a)(n);function n(){var e;return Object(i.a)(this,n),(e=t.apply(this,arguments)).resizeObserver=null,e.mutationObserver=null,e.originalTotalWidth=0,e.overflowedItems=[],e.menuItemSizes=[],e.cancelFrameId=null,e.state={lastVisibleIndex:void 0},e.childRef=f.createRef(),e.getMenuItemNodes=function(){var t=e.props.prefixCls,n=e.childRef.current;return n?[].slice.call(n.children).filter((function(e){return e.className.split(" ").indexOf("".concat(t,"-overflowed-submenu"))<0})):[]},e.getOverflowedSubMenuItem=function(t,n,r){var i=e.props,c=i.overflowedIndicator,l=i.level,u=i.mode,s=i.prefixCls,d=i.theme;if(1!==l||"horizontal"!==u)return null;var p=e.props.children[0].props,h=(p.children,p.title,p.style),m=Object(ae.a)(p,["children","title","style"]),v=Object(a.a)({},h),y="".concat(t,"-overflowed-indicator"),_="".concat(t,"-overflowed-indicator");0===n.length&&!0!==r?v=Object(a.a)(Object(a.a)({},v),{},{display:"none"}):r&&(v=Object(a.a)(Object(a.a)({},v),{},{visibility:"hidden",position:"absolute"}),y="".concat(y,"-placeholder"),_="".concat(_,"-placeholder"));var b=d?"".concat(s,"-").concat(d):"",g={};return te.forEach((function(e){void 0!==m[e]&&(g[e]=m[e])})),f.createElement(be,Object(o.a)({title:c,className:"".concat(s,"-overflowed-submenu"),popupClassName:b},g,{key:y,eventKey:_,disabled:!1,style:v}),n)},e.setChildrenWidthAndResize=function(){if("horizontal"===e.props.mode){var t=e.childRef.current;if(t){var n=t.children;if(n&&0!==n.length){var r=t.children[n.length-1];re(r,"display","inline-block");var o=e.getMenuItemNodes(),a=o.filter((function(e){return e.className.split(" ").indexOf("menuitem-overflowed")>=0}));a.forEach((function(e){re(e,"display","inline-block")})),e.menuItemSizes=o.map((function(e){return ne(e,!0)})),a.forEach((function(e){re(e,"display","none")})),e.overflowedIndicatorWidth=ne(t.children[t.children.length-1],!0),e.originalTotalWidth=e.menuItemSizes.reduce((function(e,t){return e+t}),0),e.handleResize(),re(r,"display","none")}}}},e.handleResize=function(){if("horizontal"===e.props.mode){var t=e.childRef.current;if(t){var n=ne(t);e.overflowedItems=[];var r,o=0;e.originalTotalWidth>n+.5&&(r=-1,e.menuItemSizes.forEach((function(t){(o+=t)+e.overflowedIndicatorWidth<=n&&(r+=1)}))),e.setState({lastVisibleIndex:r})}}},e}return Object(c.a)(n,[{key:"componentDidMount",value:function(){var e=this;if(this.setChildrenWidthAndResize(),1===this.props.level&&"horizontal"===this.props.mode){var t=this.childRef.current;if(!t)return;this.resizeObserver=new ie.default((function(t){t.forEach((function(){var t=e.cancelFrameId;cancelAnimationFrame(t),e.cancelFrameId=requestAnimationFrame(e.setChildrenWidthAndResize)}))})),[].slice.call(t.children).concat(t).forEach((function(t){e.resizeObserver.observe(t)})),"undefined"!=typeof MutationObserver&&(this.mutationObserver=new MutationObserver((function(){e.resizeObserver.disconnect(),[].slice.call(t.children).concat(t).forEach((function(t){e.resizeObserver.observe(t)})),e.setChildrenWidthAndResize()})),this.mutationObserver.observe(t,{attributes:!1,childList:!0,subTree:!1}))}}},{key:"componentWillUnmount",value:function(){this.resizeObserver&&this.resizeObserver.disconnect(),this.mutationObserver&&this.mutationObserver.disconnect(),cancelAnimationFrame(this.cancelFrameId)}},{key:"renderChildren",value:function(e){var t=this,n=this.state.lastVisibleIndex;return(e||[]).reduce((function(r,o,a){var i=o;if("horizontal"===t.props.mode){var c=t.getOverflowedSubMenuItem(o.props.eventKey,[]);void 0!==n&&-1!==t.props.className.indexOf("".concat(t.props.prefixCls,"-root"))&&(a>n&&(i=f.cloneElement(o,{style:{display:"none"},eventKey:"".concat(o.props.eventKey,"-hidden"),className:"".concat("menuitem-overflowed")})),a===n+1&&(t.overflowedItems=e.slice(n+1).map((function(e){return f.cloneElement(e,{key:e.props.eventKey,mode:"vertical-left"})})),c=t.getOverflowedSubMenuItem(o.props.eventKey,t.overflowedItems)));var l=[].concat(Object(oe.a)(r),[c,i]);return a===e.length-1&&l.push(t.getOverflowedSubMenuItem(o.props.eventKey,[],!0)),l}return[].concat(Object(oe.a)(r),[i])}),[])}},{key:"render",value:function(){var e=this.props,t=(e.visible,e.prefixCls,e.overflowedIndicator,e.mode,e.level,e.tag),n=e.children,r=(e.theme,Object(ae.a)(e,["visible","prefixCls","overflowedIndicator","mode","level","tag","children","theme"])),a=t;return f.createElement(a,Object(o.a)({ref:this.childRef},r),this.renderChildren(n))}}]),n}(f.Component);ge.defaultProps={tag:"div",className:""};var Me=ge;function we(e,t,n){var r=e.getState();e.setState({activeKey:Object(a.a)(Object(a.a)({},r.activeKey),{},Object(k.a)({},t,n))})}function Oe(e){return e.eventKey||"0-menu-"}function ke(e,t){var n,r=t,o=e.children,a=e.eventKey;if(r&&(ee(o,(function(e,t){e&&e.props&&!e.props.disabled&&r===X(e,a,t)&&(n=!0)})),n))return r;return r=null,e.defaultActiveFirst?(ee(o,(function(e,t){r||!e||e.props.disabled||(r=X(e,a,t))})),r):r}function Le(e){if(e){var t=this.instanceArray.indexOf(e);-1!==t?this.instanceArray[t]=e:this.instanceArray.push(e)}}var xe=function(e){Object(u.a)(n,e);var t=Object(s.a)(n);function n(e){var r;return Object(i.a)(this,n),(r=t.call(this,e)).onKeyDown=function(e,t){var n,o=e.keyCode;if(r.getFlatInstanceArray().forEach((function(t){t&&t.props.active&&t.onKeyDown&&(n=t.onKeyDown(e))})),n)return 1;var a=null;return o!==z.a.UP&&o!==z.a.DOWN||(a=r.step(o===z.a.UP?-1:1)),a?(e.preventDefault(),we(r.props.store,Oe(r.props),a.props.eventKey),"function"==typeof t&&t(a),1):void 0},r.onItemHover=function(e){var t=e.key,n=e.hover;we(r.props.store,Oe(r.props),n?t:null)},r.onDeselect=function(e){r.props.onDeselect(e)},r.onSelect=function(e){r.props.onSelect(e)},r.onClick=function(e){r.props.onClick(e)},r.onOpenChange=function(e){r.props.onOpenChange(e)},r.onDestroy=function(e){r.props.onDestroy(e)},r.getFlatInstanceArray=function(){return r.instanceArray},r.step=function(e){var t=r.getFlatInstanceArray(),n=r.props.store.getState().activeKey[Oe(r.props)],o=t.length;if(!o)return null;e<0&&(t=t.concat().reverse());var a=-1;if(t.every((function(e,t){return!e||e.props.eventKey!==n||(a=t,!1)})),r.props.defaultActiveFirst||-1===a||(i=t.slice(a,o-1)).length&&!i.every((function(e){return!!e.props.disabled}))){var i,c=(a+1)%o,l=c;do{var u=t[l];if(u&&!u.props.disabled)return u;l=(l+1)%o}while(l!==c);return null}},r.renderCommonMenuItem=function(e,t,n){var o=r.props.store.getState(),i=Object(l.a)(r).props,c=X(e,i.eventKey,t),u=e.props;if(!u||"string"==typeof e.type)return e;var s=c===o.activeKey,d=Object(a.a)(Object(a.a)({mode:u.mode||i.mode,level:i.level,inlineIndent:i.inlineIndent,renderMenuItem:r.renderMenuItem,rootPrefixCls:i.prefixCls,index:t,parentMenu:i.parentMenu,manualRef:u.disabled?void 0:S(e.ref,Le.bind(Object(l.a)(r))),eventKey:c,active:!u.disabled&&s,multiple:i.multiple,onClick:function(e){(u.onClick||Q)(e),r.onClick(e)},onItemHover:r.onItemHover,motion:i.motion,subMenuOpenDelay:i.subMenuOpenDelay,subMenuCloseDelay:i.subMenuCloseDelay,forceSubMenuRender:i.forceSubMenuRender,onOpenChange:r.onOpenChange,onDeselect:r.onDeselect,onSelect:r.onSelect,builtinPlacements:i.builtinPlacements,itemIcon:u.itemIcon||r.props.itemIcon,expandIcon:u.expandIcon||r.props.expandIcon},n),{},{direction:i.direction});return("inline"===i.mode||J.any)&&(d.triggerSubMenuAction="click"),f.cloneElement(e,Object(a.a)(Object(a.a)({},d),{},{key:c||t}))},r.renderMenuItem=function(e,t,n){if(!e)return null;var o=r.props.store.getState(),a={openKeys:o.openKeys,selectedKeys:o.selectedKeys,triggerSubMenuAction:r.props.triggerSubMenuAction,subMenuKey:n};return r.renderCommonMenuItem(e,t,a)},e.store.setState({activeKey:Object(a.a)(Object(a.a)({},e.store.getState().activeKey),{},Object(k.a)({},e.eventKey,ke(e,e.activeKey)))}),r.instanceArray=[],r}return Object(c.a)(n,[{key:"componentDidMount",value:function(){this.props.manualRef&&this.props.manualRef(this)}},{key:"shouldComponentUpdate",value:function(e){return this.props.visible||e.visible||this.props.className!==e.className||!v()(this.props.style,e.style)}},{key:"componentDidUpdate",value:function(e){var t=this.props,n="activeKey"in t?t.activeKey:t.store.getState().activeKey[Oe(t)],r=ke(t,n);if(r!==n)we(t.store,Oe(t),r);else if("activeKey"in e){r!==ke(e,e.activeKey)&&we(t.store,Oe(t),r)}}},{key:"render",value:function(){var e=this,t=Object(o.a)({},this.props);this.instanceArray=[];var n={className:E()(t.prefixCls,t.className,"".concat(t.prefixCls,"-").concat(t.mode)),role:t.role||"menu"};t.id&&(n.id=t.id),t.focusable&&(n.tabIndex=0,n.onKeyDown=this.onKeyDown);var r=t.prefixCls,a=t.eventKey,i=t.visible,c=t.level,l=t.mode,u=t.overflowedIndicator,s=t.theme;return te.forEach((function(e){return delete t[e]})),delete t.onClick,f.createElement(Me,Object(o.a)({},t,{prefixCls:r,mode:l,tag:"ul",level:c,theme:s,visible:i,overflowedIndicator:u},n),Object(C.a)(t.children).map((function(t,n){return e.renderMenuItem(t,n,a||"0-menu-")})))}}]),n}(f.Component);xe.defaultProps={prefixCls:"rc-menu",className:"",mode:"vertical",level:1,inlineIndent:24,visible:!0,focusable:!0,style:{},manualRef:Q};var ze=w()(xe),Se=n(27);function Ce(e,t,n){var r=e.prefixCls,o=e.motion,a=e.defaultMotions,i=void 0===a?{}:a,c=e.openAnimation,l=e.openTransitionName,u=t.switchingModeFromInline;if(o)return o;if("object"===Object(T.a)(c)&&c)Object(Se.a)(!1,"Object type of `openAnimation` is removed. Please use `motion` instead.");else if("string"==typeof c)return{motionName:"".concat(r,"-open-").concat(c)};if(l)return{motionName:l};var s=i[n];return s||(u?null:i.other)}var je=function(e){Object(u.a)(n,e);var t=Object(s.a)(n);function n(e){var r;Object(i.a)(this,n),(r=t.call(this,e)).onSelect=function(e){var t=Object(l.a)(r).props;if(t.selectable){var n=r.store.getState().selectedKeys,o=e.key;n=t.multiple?n.concat([o]):[o],"selectedKeys"in t||r.store.setState({selectedKeys:n}),t.onSelect(Object(a.a)(Object(a.a)({},e),{},{selectedKeys:n}))}},r.onClick=function(e){var t=r.getRealMenuMode(),n=Object(l.a)(r),o=n.store,a=n.props.onOpenChange;"inline"===t||"openKeys"in r.props||(o.setState({openKeys:[]}),a([])),r.props.onClick(e)},r.onKeyDown=function(e,t){r.innerMenu.getWrappedInstance().onKeyDown(e,t)},r.onOpenChange=function(e){var t=Object(l.a)(r).props,n=r.store.getState().openKeys.concat(),o=!1,a=function(e){var t=!1;if(e.open)(t=-1===n.indexOf(e.key))&&n.push(e.key);else{var r=n.indexOf(e.key);(t=-1!==r)&&n.splice(r,1)}o=o||t};Array.isArray(e)?e.forEach(a):a(e),o&&("openKeys"in r.props||r.store.setState({openKeys:n}),t.onOpenChange(n))},r.onDeselect=function(e){var t=Object(l.a)(r).props;if(t.selectable){var n=r.store.getState().selectedKeys.concat(),o=e.key,i=n.indexOf(o);-1!==i&&n.splice(i,1),"selectedKeys"in t||r.store.setState({selectedKeys:n}),t.onDeselect(Object(a.a)(Object(a.a)({},e),{},{selectedKeys:n}))}},r.onMouseEnter=function(e){r.restoreModeVerticalFromInline();var t=r.props.onMouseEnter;t&&t(e)},r.onTransitionEnd=function(e){var t="width"===e.propertyName&&e.target===e.currentTarget,n=e.target.className,o="[object SVGAnimatedString]"===Object.prototype.toString.call(n)?n.animVal:n,a="font-size"===e.propertyName&&o.indexOf("anticon")>=0;(t||a)&&r.restoreModeVerticalFromInline()},r.setInnerMenu=function(e){r.innerMenu=e},r.isRootMenu=!0;var o,c,u,s=e.defaultSelectedKeys,f=e.defaultOpenKeys;return"selectedKeys"in e&&(s=e.selectedKeys||[]),"openKeys"in e&&(f=e.openKeys||[]),r.store=(o={selectedKeys:s,openKeys:f,activeKey:{"0-menu-":ke(e,e.activeKey)}},c=o,u=[],{setState:function(e){c=O(O({},c),e);for(var t=0;t<u.length;t++)u[t]()},getState:function(){return c},subscribe:function(e){return u.push(e),function(){var t=u.indexOf(e);u.splice(t,1)}}}),r.state={switchingModeFromInline:!1,prevProps:e,inlineOpenKeys:[],store:r.store},r}return Object(c.a)(n,[{key:"componentDidMount",value:function(){this.updateMiniStore(),this.updateMenuDisplay()}},{key:"componentDidUpdate",value:function(e){var t=this.props,n=t.siderCollapsed,r=t.inlineCollapsed,o=t.onOpenChange;(!e.inlineCollapsed&&r||!e.siderCollapsed&&n)&&o([]),this.updateMiniStore(),this.updateMenuDisplay()}},{key:"updateMenuDisplay",value:function(){var e=this.props.collapsedWidth,t=this.store,n=this.prevOpenKeys;this.getInlineCollapsed()&&(0===e||"0"===e||"0px"===e)?(this.prevOpenKeys=t.getState().openKeys.concat(),this.store.setState({openKeys:[]})):n&&(this.store.setState({openKeys:n}),this.prevOpenKeys=null)}},{key:"getRealMenuMode",value:function(){var e=this.props.mode,t=this.state.switchingModeFromInline,n=this.getInlineCollapsed();return t&&n?"inline":n?"vertical":e}},{key:"getInlineCollapsed",value:function(){var e=this.props,t=e.inlineCollapsed,n=e.siderCollapsed;return void 0!==n?n:t}},{key:"restoreModeVerticalFromInline",value:function(){this.state.switchingModeFromInline&&this.setState({switchingModeFromInline:!1})}},{key:"updateMiniStore",value:function(){"selectedKeys"in this.props&&this.store.setState({selectedKeys:this.props.selectedKeys||[]}),"openKeys"in this.props&&this.store.setState({openKeys:this.props.openKeys||[]})}},{key:"render",value:function(){var e=Object(a.a)({},x(this.props,["collapsedWidth","siderCollapsed","defaultMotions"])),t=this.getRealMenuMode();return e.className+=" ".concat(e.prefixCls,"-root"),"rtl"===e.direction&&(e.className+=" ".concat(e.prefixCls,"-rtl")),delete(e=Object(a.a)(Object(a.a)({},e),{},{mode:t,onClick:this.onClick,onOpenChange:this.onOpenChange,onDeselect:this.onDeselect,onSelect:this.onSelect,onMouseEnter:this.onMouseEnter,onTransitionEnd:this.onTransitionEnd,parentMenu:this,motion:Ce(this.props,this.state,t)})).openAnimation,delete e.openTransitionName,f.createElement(h,{store:this.store},f.createElement(ze,Object(o.a)({},e,{ref:this.setInnerMenu}),this.props.children))}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n=t.prevProps,r=t.store,o=r.getState(),a={},i={prevProps:e};return"inline"===n.mode&&"inline"!==e.mode&&(i.switchingModeFromInline=!0),"openKeys"in e?a.openKeys=e.openKeys||[]:((e.inlineCollapsed&&!n.inlineCollapsed||e.siderCollapsed&&!n.siderCollapsed)&&(i.switchingModeFromInline=!0,i.inlineOpenKeys=o.openKeys,a.openKeys=[]),(!e.inlineCollapsed&&n.inlineCollapsed||!e.siderCollapsed&&n.siderCollapsed)&&(a.openKeys=t.inlineOpenKeys,i.inlineOpenKeys=[])),Object.keys(a).length&&r.setState(a),i}}]),n}(f.Component);je.defaultProps={selectable:!0,onClick:Q,onSelect:Q,onOpenChange:Q,onDeselect:Q,defaultSelectedKeys:[],defaultOpenKeys:[],subMenuOpenDelay:.1,subMenuCloseDelay:.1,triggerSubMenuAction:"hover",prefixCls:"rc-menu",className:"",mode:"vertical",style:{},builtinPlacements:{},overflowedIndicator:f.createElement("span",null,"···")};var Ee=je,Te=function(e){Object(u.a)(n,e);var t=Object(s.a)(n);function n(){var e;return Object(i.a)(this,n),(e=t.apply(this,arguments)).onKeyDown=function(t){if(t.keyCode===z.a.ENTER)return e.onClick(t),!0},e.onMouseLeave=function(t){var n=e.props,r=n.eventKey,o=n.onItemHover,a=n.onMouseLeave;o({key:r,hover:!1}),a({key:r,domEvent:t})},e.onMouseEnter=function(t){var n=e.props,r=n.eventKey,o=n.onItemHover,a=n.onMouseEnter;o({key:r,hover:!0}),a({key:r,domEvent:t})},e.onClick=function(t){var n=e.props,r=n.eventKey,o=n.multiple,a=n.onClick,i=n.onSelect,c=n.onDeselect,u=n.isSelected,s={key:r,keyPath:[r],item:Object(l.a)(e),domEvent:t};a(s),o?u?c(s):i(s):u||i(s)},e.saveNode=function(t){e.node=t},e}return Object(c.a)(n,[{key:"componentDidMount",value:function(){this.callRef()}},{key:"componentDidUpdate",value:function(){this.callRef()}},{key:"componentWillUnmount",value:function(){var e=this.props;e.onDestroy&&e.onDestroy(e.eventKey)}},{key:"getPrefixCls",value:function(){return"".concat(this.props.rootPrefixCls,"-item")}},{key:"getActiveClassName",value:function(){return"".concat(this.getPrefixCls(),"-active")}},{key:"getSelectedClassName",value:function(){return"".concat(this.getPrefixCls(),"-selected")}},{key:"getDisabledClassName",value:function(){return"".concat(this.getPrefixCls(),"-disabled")}},{key:"callRef",value:function(){this.props.manualRef&&this.props.manualRef(this)}},{key:"render",value:function(){var e,t=Object(a.a)({},this.props),n=E()(this.getPrefixCls(),t.className,(e={},Object(k.a)(e,this.getActiveClassName(),!t.disabled&&t.active),Object(k.a)(e,this.getSelectedClassName(),t.isSelected),Object(k.a)(e,this.getDisabledClassName(),t.disabled),e)),r=Object(a.a)(Object(a.a)({},t.attribute),{},{title:"string"==typeof t.title?t.title:void 0,className:n,role:t.role||"menuitem","aria-disabled":t.disabled});"option"===t.role?r=Object(a.a)(Object(a.a)({},r),{},{role:"option","aria-selected":t.isSelected}):null!==t.role&&"none"!==t.role||(r.role="none");var i={onClick:t.disabled?null:this.onClick,onMouseLeave:t.disabled?null:this.onMouseLeave,onMouseEnter:t.disabled?null:this.onMouseEnter},c=Object(a.a)({},t.style);"inline"===t.mode&&("rtl"===t.direction?c.paddingRight=t.inlineIndent*t.level:c.paddingLeft=t.inlineIndent*t.level),te.forEach((function(e){return delete t[e]})),delete t.direction;var l=this.props.itemIcon;return"function"==typeof this.props.itemIcon&&(l=f.createElement(this.props.itemIcon,this.props)),f.createElement("li",Object(o.a)({},x(t,["onClick","onMouseEnter","onMouseLeave","onSelect"]),r,i,{style:c,ref:this.saveNode}),t.children,l)}}]),n}(f.Component);Te.isMenuItem=!0,Te.defaultProps={onSelect:Q,onMouseEnter:Q,onMouseLeave:Q,manualRef:Q};var Pe=w((function(e,t){var n=e.activeKey,r=e.selectedKeys,o=t.eventKey;return{active:n[t.subMenuKey]===o,isSelected:Array.isArray(r)?-1!==r.indexOf(o):r===o}}))(Te),He=function(e){Object(u.a)(n,e);var t=Object(s.a)(n);function n(){var e;return Object(i.a)(this,n),(e=t.apply(this,arguments)).renderInnerMenuItem=function(t){var n=e.props;return(0,n.renderMenuItem)(t,n.index,e.props.subMenuKey)},e}return Object(c.a)(n,[{key:"render",value:function(){var e=Object(o.a)({},this.props),t=e.className,n=void 0===t?"":t,r=e.rootPrefixCls,a="".concat(r,"-item-group-title"),i="".concat(r,"-item-group-list"),c=e.title,l=e.children;return te.forEach((function(t){return delete e[t]})),delete e.direction,f.createElement("li",Object(o.a)({},e,{onClick:function(e){return e.stopPropagation()},className:"".concat(n," ").concat(r,"-item-group")}),f.createElement("div",{className:a,title:"string"==typeof c?c:void 0},c),f.createElement("ul",{className:i},f.Children.map(l,this.renderInnerMenuItem)))}}]),n}(f.Component);He.isMenuItemGroup=!0,He.defaultProps={disabled:!0};var De=He,Ye=function(e){var t=e.className,n=e.rootPrefixCls,r=e.style;return f.createElement("li",{className:"".concat(t," ").concat(n,"-item-divider"),style:r})};Ye.defaultProps={disabled:!0,className:"",style:{}};var Ve=Ye;t.default=Ee},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=b(n(0)),o=b(n(11)),a=b(n(3)),i=y(n(2)),c=y(n(406)),l=y(n(78)),u=y(n(393)),s=y(n(396)),f=y(n(34)),d=n(32),p=y(n(56)),h=n(79),m=n(403),v=y(n(404));function y(e){return e&&e.__esModule?e:{default:e}}function _(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return _=function(){return e},e}function b(e){if(e&&e.__esModule)return e;if(null===e||"object"!==g(e)&&"function"!=typeof e)return{default:e};var t=_();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function g(e){return(g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function M(){return(M=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function O(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function k(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function L(e,t){return(L=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function x(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=C(e);if(t){var o=C(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return z(this,n)}}function z(e,t){return!t||"object"!==g(t)&&"function"!=typeof t?S(e):t}function S(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function C(e){return(C=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function j(e){return function(e){if(Array.isArray(e))return E(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return E(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return E(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var T=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},P=(0,h.tuple)("success","warning","error","validating","");(0,h.tuple)("left","right");var H=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&L(e,t)}(y,e);var t,n,a,h=x(y);function y(){var e;return O(this,y),(e=h.apply(this,arguments)).helpShow=!1,e.onLabelClick=function(){var t=e.props.id||e.getId();if(t){var n=o.findDOMNode(S(e)).querySelector('[id="'.concat(t,'"]'));n&&n.focus&&n.focus()}},e.onHelpAnimEnd=function(t,n){e.helpShow=n,n||e.setState({})},e.renderFormItem=function(t){var n,o=t.getPrefixCls,a=e.props,c=a.prefixCls,s=a.style,f=a.className,d=T(a,["prefixCls","style","className"]),p=o("form",c),h=e.renderChildren(p),m=(w(n={},"".concat(p,"-item"),!0),w(n,"".concat(p,"-item-with-help"),e.helpShow),w(n,"".concat(f),!!f),n);return r.createElement(u.default,M({className:(0,i.default)(m),style:s},(0,l.default)(d,["id","htmlFor","label","labelAlign","labelCol","wrapperCol","help","extra","validateStatus","hasFeedback","required","colon"]),{key:"row"}),h)},e}return t=y,(n=[{key:"componentDidMount",value:function(){var e=this.props,t=e.children,n=e.help,r=e.validateStatus,o=e.id;(0,p.default)(this.getControls(t,!0).length<=1||void 0!==n||void 0!==r,"Form.Item","Cannot generate `validateStatus` and `help` automatically, while there are more than one `getFieldDecorator` in it."),(0,p.default)(!o,"Form.Item","`id` is deprecated for its label `htmlFor`. Please use `htmlFor` directly.")}},{key:"getHelpMessage",value:function(){var e=this.props.help;if(void 0===e&&this.getOnlyControl()){var t=this.getField().errors;return t?t.map((function(e,t){var n=null;return r.isValidElement(e)?n=e:r.isValidElement(e.message)&&(n=e.message),n?r.cloneElement(n,{key:t}):e.message})).reduce((function(e,t){return[].concat(j(e),[" ",t])}),[]).slice(1):""}return e}},{key:"getControls",value:function(e,t){for(var n=[],o=r.Children.toArray(e),a=0;a<o.length&&(t||!(n.length>0));a++){var i=o[a];(!i.type||i.type!==y&&"FormItem"!==i.type.displayName)&&i.props&&(m.FIELD_META_PROP in i.props?n.push(i):i.props.children&&(n=n.concat(this.getControls(i.props.children,t))))}return n}},{key:"getOnlyControl",value:function(){var e=this.getControls(this.props.children,!1)[0];return void 0!==e?e:null}},{key:"getChildProp",value:function(e){var t=this.getOnlyControl();return t&&t.props&&t.props[e]}},{key:"getId",value:function(){return this.getChildProp("id")}},{key:"getMeta",value:function(){return this.getChildProp(m.FIELD_META_PROP)}},{key:"getField",value:function(){return this.getChildProp(m.FIELD_DATA_PROP)}},{key:"getValidateStatus",value:function(){if(!this.getOnlyControl())return"";var e=this.getField();if(e.validating)return"validating";if(e.errors)return"error";var t="value"in e?e.value:this.getMeta().initialValue;return null!=t&&""!==t?"success":""}},{key:"isRequired",value:function(){var e=this.props.required;return void 0!==e?e:!!this.getOnlyControl()&&((this.getMeta()||{}).validate||[]).filter((function(e){return!!e.rules})).some((function(e){return e.rules.some((function(e){return e.required}))}))}},{key:"renderHelp",value:function(e){var t=this.getHelpMessage(),n=t?r.createElement("div",{className:"".concat(e,"-explain"),key:"help"},t):null;return n&&(this.helpShow=!!n),r.createElement(c.default,{transitionName:"show-help",component:"",transitionAppear:!0,key:"help",onEnd:this.onHelpAnimEnd},n)}},{key:"renderExtra",value:function(e){var t=this.props.extra;return t?r.createElement("div",{className:"".concat(e,"-extra")},t):null}},{key:"renderValidateWrapper",value:function(e,t,n,o){var a=this.props,c=this.getOnlyControl,l=void 0===a.validateStatus&&c?this.getValidateStatus():a.validateStatus,u="".concat(e,"-item-control");l&&(u=(0,i.default)("".concat(e,"-item-control"),{"has-feedback":l&&a.hasFeedback,"has-success":"success"===l,"has-warning":"warning"===l,"has-error":"error"===l,"is-validating":"validating"===l}));var s="";switch(l){case"success":s="check-circle";break;case"warning":s="exclamation-circle";break;case"error":s="close-circle";break;case"validating":s="loading";break;default:s=""}var d=a.hasFeedback&&s?r.createElement("span",{className:"".concat(e,"-item-children-icon")},r.createElement(f.default,{type:s,theme:"loading"===s?"outlined":"filled"})):null;return r.createElement("div",{className:u},r.createElement("span",{className:"".concat(e,"-item-children")},t,d),n,o)}},{key:"renderWrapper",value:function(e,t){var n=this;return r.createElement(v.default.Consumer,{key:"wrapper"},(function(o){var a=o.wrapperCol,c=o.vertical,l=n.props.wrapperCol,u=("wrapperCol"in n.props?l:a)||{},f=(0,i.default)("".concat(e,"-item-control-wrapper"),u.className);return r.createElement(v.default.Provider,{value:{vertical:c}},r.createElement(s.default,M({},u,{className:f}),t))}))}},{key:"renderLabel",value:function(e){var t=this;return r.createElement(v.default.Consumer,{key:"label"},(function(n){var o,a=n.vertical,c=n.labelAlign,l=n.labelCol,u=n.colon,f=t.props,d=f.label,p=f.labelCol,h=f.labelAlign,m=f.colon,v=f.id,y=f.htmlFor,_=t.isRequired(),b=("labelCol"in t.props?p:l)||{},g="labelAlign"in t.props?h:c,O="".concat(e,"-item-label"),k=(0,i.default)(O,"left"===g&&"".concat(O,"-left"),b.className),L=d,x=!0===m||!1!==u&&!1!==m;x&&!a&&"string"==typeof d&&""!==d.trim()&&(L=d.replace(/[::]\s*$/,""));var z=(0,i.default)((w(o={},"".concat(e,"-item-required"),_),w(o,"".concat(e,"-item-no-colon"),!x),o));return d?r.createElement(s.default,M({},b,{className:k}),r.createElement("label",{htmlFor:y||v||t.getId(),className:z,title:"string"==typeof d?d:"",onClick:t.onLabelClick},L)):null}))}},{key:"renderChildren",value:function(e){var t=this.props.children;return[this.renderLabel(e),this.renderWrapper(e,this.renderValidateWrapper(e,t,this.renderHelp(e),this.renderExtra(e)))]}},{key:"render",value:function(){return r.createElement(d.ConfigConsumer,null,this.renderFormItem)}}])&&k(t.prototype,n),a&&k(t,a),y}(r.Component);t.default=H,H.defaultProps={hasFeedback:!1},H.propTypes={prefixCls:a.string,label:a.oneOfType([a.string,a.node]),labelCol:a.object,help:a.oneOfType([a.node,a.bool]),validateStatus:a.oneOf(P),hasFeedback:a.bool,wrapperCol:a.object,className:a.string,id:a.string,children:a.node,colon:a.bool}},function(e,t,n){e.exports=n(189)},function(e,t,n){e.exports=function e(t,n,r){function o(i,c){if(!n[i]){if(!t[i]){if(a)return a(i,!0);var l=new Error("Cannot find module '"+i+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[i]={exports:{}};t[i][0].call(u.exports,(function(e){var n=t[i][1][e];return o(n||e)}),u,u.exports,e,t,n,r)}return n[i].exports}for(var a=!1,i=0;i<r.length;i++)o(r[i]);return o}({1:[function(e,t,n){t.exports=function(t){return"function"!=typeof Map||t?new(e("./similar")):new Map}},{"./similar":2}],2:[function(e,t,n){function r(){return this.list=[],this.lastItem=void 0,this.size=0,this}r.prototype.get=function(e){var t;return this.lastItem&&this.isEqual(this.lastItem.key,e)?this.lastItem.val:(t=this.indexOf(e))>=0?(this.lastItem=this.list[t],this.list[t].val):void 0},r.prototype.set=function(e,t){var n;return this.lastItem&&this.isEqual(this.lastItem.key,e)?(this.lastItem.val=t,this):(n=this.indexOf(e))>=0?(this.lastItem=this.list[n],this.list[n].val=t,this):(this.lastItem={key:e,val:t},this.list.push(this.lastItem),this.size++,this)},r.prototype.delete=function(e){var t;if(this.lastItem&&this.isEqual(this.lastItem.key,e)&&(this.lastItem=void 0),(t=this.indexOf(e))>=0)return this.size--,this.list.splice(t,1)[0]},r.prototype.has=function(e){var t;return!(!this.lastItem||!this.isEqual(this.lastItem.key,e))||(t=this.indexOf(e))>=0&&(this.lastItem=this.list[t],!0)},r.prototype.forEach=function(e,t){var n;for(n=0;n<this.size;n++)e.call(t||this,this.list[n].val,this.list[n].key,this)},r.prototype.indexOf=function(e){var t;for(t=0;t<this.size;t++)if(this.isEqual(this.list[t].key,e))return t;return-1},r.prototype.isEqual=function(e,t){return e===t||e!=e&&t!=t},t.exports=r},{}],3:[function(e,t,n){var r=e("map-or-similar");function o(e,t){var n,r,o,a,i,c=e.length,l=t.length;for(r=0;r<c;r++){for(n=!0,o=0;o<l;o++)if(a=e[r][o].arg,i=t[o].arg,a!==i&&(a==a||i==i)){n=!1;break}if(n)break}e.push(e.splice(r,1)[0])}function a(e){var t,n,r=e.length,o=e[r-1];for(o.cacheItem.delete(o.arg),n=r-2;n>=0&&(!(t=(o=e[n]).cacheItem.get(o.arg))||!t.size);n--)o.cacheItem.delete(o.arg)}t.exports=function(e){var t=new r(!1),n=[];return function(i){var c=function(){var l,u,s,f=t,d=arguments.length-1,p=Array(d+1),h=!0;if((c.numArgs||0===c.numArgs)&&c.numArgs!==d+1)throw new Error("Memoizerific functions should always be called with the same number of arguments");for(s=0;s<d;s++)p[s]={cacheItem:f,arg:arguments[s]},f.has(arguments[s])?f=f.get(arguments[s]):(h=!1,l=new r(!1),f.set(arguments[s],l),f=l);return h&&(f.has(arguments[d])?u=f.get(arguments[d]):h=!1),h||(u=i.apply(null,arguments),f.set(arguments[d],u)),e>0&&(p[d]={cacheItem:f,arg:arguments[d]},h?o(n,p):n.push(p),n.length>e&&a(n.shift())),c.wasMemoized=h,c.numArgs=d+1,u};return c.limit=e,c.wasMemoized=!1,c.cache=t,c.lru=n,c}}},{"map-or-similar":1}]},{},[3])(3)},function(e,t,n){"use strict";(function(e,r){var o,a=n(414);o="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==e?e:r;var i=Object(a.a)(o);t.a=i}).call(this,n(74),n(441)(e))},function(e,t,n){"use strict";var r=n(81),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},c={};function l(e){return r.isMemo(e)?i:c[e.$$typeof]||o}c[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},c[r.Memo]=i;var u=Object.defineProperty,s=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var o=p(n);o&&o!==h&&e(t,o,r)}var i=s(n);f&&(i=i.concat(f(n)));for(var c=l(t),m=l(n),v=0;v<i.length;++v){var y=i[v];if(!(a[y]||r&&r[y]||m&&m[y]||c&&c[y])){var _=d(n,y);try{u(t,y,_)}catch(e){}}}}return t}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=((r=n(870))&&r.__esModule?r:{default:r}).default;t.default=o},function(e,t,n){var r=function(e){"use strict";var t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",i=r.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var o=t&&t.prototype instanceof f?t:f,a=Object.create(o.prototype),i=new O(r||[]);return a._invoke=function(e,t,n){var r="suspendedStart";return function(o,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw a;return L()}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var c=g(i,n);if(c){if(c===s)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=u(e,t,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===s)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}(e,n,i),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var s={};function f(){}function d(){}function p(){}var h={};h[o]=function(){return this};var m=Object.getPrototypeOf,v=m&&m(m(k([])));v&&v!==t&&n.call(v,o)&&(h=v);var y=p.prototype=f.prototype=Object.create(h);function _(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var r;this._invoke=function(o,a){function i(){return new t((function(r,i){!function r(o,a,i,c){var l=u(e[o],e,a);if("throw"!==l.type){var s=l.arg,f=s.value;return f&&"object"==typeof f&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){r("next",e,i,c)}),(function(e){r("throw",e,i,c)})):t.resolve(f).then((function(e){s.value=e,i(s)}),(function(e){return r("throw",e,i,c)}))}c(l.arg)}(o,a,r,i)}))}return r=r?r.then(i,i):i()}}function g(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,g(e,t),"throw"===t.method))return s;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return s}var r=u(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,s;var o=r.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,s):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,s)}function M(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(M,this),this.reset(!0)}function k(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:L}}function L(){return{value:void 0,done:!0}}return d.prototype=y.constructor=p,p.constructor=d,d.displayName=c(p,i,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===d||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,c(e,i,"GeneratorFunction")),e.prototype=Object.create(y),e},e.awrap=function(e){return{__await:e}},_(b.prototype),b.prototype[a]=function(){return this},e.AsyncIterator=b,e.async=function(t,n,r,o,a){void 0===a&&(a=Promise);var i=new b(l(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},_(y),c(y,i,"Generator"),y[o]=function(){return this},y.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=k,O.prototype={constructor:O,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(w),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(c&&l){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,s):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),s},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),w(n),s}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;w(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:k(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),s}},e}(e.exports);try{regeneratorRuntime=r}catch(e){Function("r","regeneratorRuntime = r")(r)}},function(e,t,n){e.exports=!n(66)&&!n(91)((function(){return 7!=Object.defineProperty(n(191)("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){var r=n(86),o=n(64).document,a=r(o)&&r(o.createElement);e.exports=function(e){return a?o.createElement(e):{}}},function(e,t,n){var r=n(76),o=n(87),a=n(452)(!1),i=n(135)("IE_PROTO");e.exports=function(e,t){var n,c=o(e),l=0,u=[];for(n in c)n!=i&&r(c,n)&&u.push(n);for(;t.length>l;)r(c,n=t[l++])&&(~a(u,n)||u.push(n));return u}},function(e,t,n){var r=n(132);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t,n){var r=n(134),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){e.exports={default:n(454),__esModule:!0}},function(e,t,n){"use strict";var r=n(458)(!0);n(197)(String,"String",(function(e){this._t=String(e),this._i=0}),(function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})}))},function(e,t,n){"use strict";var r=n(103),o=n(75),a=n(198),i=n(84),c=n(93),l=n(459),u=n(140),s=n(462),f=n(50)("iterator"),d=!([].keys&&"next"in[].keys()),p=function(){return this};e.exports=function(e,t,n,h,m,v,y){l(n,t,h);var _,b,g,M=function(e){if(!d&&e in L)return L[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},w=t+" Iterator",O="values"==m,k=!1,L=e.prototype,x=L[f]||L["@@iterator"]||m&&L[m],z=x||M(m),S=m?O?M("entries"):z:void 0,C="Array"==t&&L.entries||x;if(C&&(g=s(C.call(new e)))!==Object.prototype&&g.next&&(u(g,w,!0),r||"function"==typeof g[f]||i(g,f,p)),O&&x&&"values"!==x.name&&(k=!0,z=function(){return x.call(this)}),r&&!y||!d&&!k&&L[f]||i(L,f,z),c[t]=z,c[w]=p,m)if(_={values:O?z:M("values"),keys:v?z:M("keys"),entries:S},y)for(b in _)b in L||a(L,b,_[b]);else o(o.P+o.F*(d||k),t,_);return _}},function(e,t,n){e.exports=n(84)},function(e,t,n){var r=n(192),o=n(137).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},function(e,t,n){var r=n(105),o=n(92),a=n(87),i=n(131),c=n(76),l=n(190),u=Object.getOwnPropertyDescriptor;t.f=n(66)?u:function(e,t){if(e=a(e),t=i(t,!0),l)try{return u(e,t)}catch(e){}if(c(e,t))return o(!r.f.call(e,t),e[t])}},function(e,t){e.exports=function(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0;n<e.length;++n)if(e[n]===t)return n;return-1}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.warning=o,t.note=a,t.resetWarned=function(){r={}},t.call=i,t.warningOnce=c,t.noteOnce=function(e,t){i(a,e,t)},t.default=void 0;var r={};function o(e,t){0}function a(e,t){0}function i(e,t,n){t||r[n]||(e(!1,n),r[n]=!0)}function c(e,t){i(o,e,t)}var l=c;t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=c(n(492)),o=c(n(204)),a=c(n(205)),i=c(n(494));function c(e){return e&&e.__esModule?e:{default:e}}var l={locale:"en",Pagination:r.default,DatePicker:o.default,TimePicker:a.default,Calendar:i.default,global:{placeholder:"Please select"},Table:{filterTitle:"Filter menu",filterConfirm:"OK",filterReset:"Reset",selectAll:"Select current page",selectInvert:"Invert current page",sortTitle:"Sort",expand:"Expand row",collapse:"Collapse row"},Modal:{okText:"OK",cancelText:"Cancel",justOkText:"OK"},Popconfirm:{okText:"OK",cancelText:"Cancel"},Transfer:{titles:["",""],searchPlaceholder:"Search here",itemUnit:"item",itemsUnit:"items"},Upload:{uploading:"Uploading...",removeFile:"Remove file",uploadError:"Upload error",previewFile:"Preview file",downloadFile:"Download file"},Empty:{description:"No Data"},Icon:{icon:"icon"},Text:{edit:"Edit",copy:"Copy",copied:"Copied",expand:"Expand"},PageHeader:{back:"Back"}};t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(493)),o=a(n(205));function a(e){return e&&e.__esModule?e:{default:e}}function i(){return(i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var c={lang:i({placeholder:"Select date",rangePlaceholder:["Start date","End date"]},r.default),timePickerLocale:i({},o.default)};t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={placeholder:"Select time"};t.default=r},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},r=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},o={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},a=function(e){return function(t,n,a,i){var c=r(t),l=o[e][r(t)];return 2===c&&(l=l[n?0:1]),l.replace(/%d/i,t)}},i=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:i,monthsShort:i,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:a("s"),ss:a("s"),m:a("m"),mm:a("m"),h:a("h"),hh:a("h"),d:a("d"),dd:a("d"),M:a("M"),MM:a("M"),y:a("y"),yy:a("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(r,o,a,i){var c=t(r),l=n[e][t(r)];return 2===c&&(l=l[o?0:1]),l.replace(/%d/i,r)}},o=["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-dz",{months:o,monthsShort:o,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:0,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},o=function(e){return function(t,o,a,i){var c=n(t),l=r[e][n(t)];return 2===c&&(l=l[o?0:1]),l.replace(/%d/i,t)}},a=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:a,monthsShort:a,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:o("s"),ss:o("s"),m:o("m"),mm:o("m"),h:o("h"),hh:o("h"),d:o("d"),dd:o("d"),M:o("M"),MM:o("M"),y:o("y"),yy:o("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,n){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var n=e%10;return e+(t[n]||t[e%100-n]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n){var r,o;return"m"===n?t?"хвіліна":"хвіліну":"h"===n?t?"гадзіна":"гадзіну":e+" "+(r=+e,o={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[n].split("_"),r%10==1&&r%100!=11?o[0]:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?o[1]:o[2])}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,n){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12".split("_"),monthsShortRegex:/^(ཟླ་\d{1,2})/,monthsParseExact:!0,weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,n){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],e)}var n=[/^gen/i,/^c[ʼ\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],r=/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,o=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];e.defineLocale("br",{months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:o,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[ʼ\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:o,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warcʼhoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Decʼh da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s ʼzo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(function e(t){return t>9?e(t%10):t}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,t,n){return e<12?"a.m.":"g.m."}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n){var r=e+" ";switch(n){case"ss":return r+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return r+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return r+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return r+=1===e?"dan":"dana";case"MM":return r+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return r+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),r=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],o=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function a(e){return e>1&&e<5&&1!=~~(e/10)}function i(e,t,n,r){var o=e+" ";switch(n){case"s":return t||r?"pár sekund":"pár sekundami";case"ss":return t||r?o+(a(e)?"sekundy":"sekund"):o+"sekundami";case"m":return t?"minuta":r?"minutu":"minutou";case"mm":return t||r?o+(a(e)?"minuty":"minut"):o+"minutami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?o+(a(e)?"hodiny":"hodin"):o+"hodinami";case"d":return t||r?"den":"dnem";case"dd":return t||r?o+(a(e)?"dny":"dní"):o+"dny";case"M":return t||r?"měsíc":"měsícem";case"MM":return t||r?o+(a(e)?"měsíce":"měsíců"):o+"měsíci";case"y":return t||r?"rok":"rokem";case"yy":return t||r?o+(a(e)?"roky":"let"):o+"lety"}}e.defineLocale("cs",{months:t,monthsShort:n,monthsRegex:o,monthsShortRegex:o,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:i,ss:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){return e+(/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t="";return e>20?t=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(t=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+t},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n,r){var o={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?o[n][0]:o[n][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n,r){var o={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?o[n][0]:o[n][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n,r){var o={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?o[n][0]:o[n][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,n){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,n){return e>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var n,r=this._calendarEl[e],o=t&&t.hours();return n=r,("undefined"!=typeof Function&&n instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(r=r.apply(t)),r.replace("{}",o%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:6}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,n){return e>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],o=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsRegex:o,monthsShortRegex:o,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha invalida"})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],o=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsRegex:o,monthsShortRegex:o,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],o=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsRegex:o,monthsShortRegex:o,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n,r){var o={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?o[n][2]?o[n][2]:o[n][1]:r?o[n][0]:o[n][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"%d ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function r(e,r,o,a){var i="";switch(o){case"s":return a?"muutaman sekunnin":"muutama sekunti";case"ss":i=a?"sekunnin":"sekuntia";break;case"m":return a?"minuutin":"minuutti";case"mm":i=a?"minuutin":"minuuttia";break;case"h":return a?"tunnin":"tunti";case"hh":i=a?"tunnin":"tuntia";break;case"d":return a?"päivän":"päivä";case"dd":i=a?"päivän":"päivää";break;case"M":return a?"kuukauden":"kuukausi";case"MM":i=a?"kuukauden":"kuukautta";break;case"y":return a?"vuoden":"vuosi";case"yy":i=a?"vuoden":"vuotta"}return i=function(e,r){return e<10?r?n[e]:t[e]:e}(e,a)+" "+i}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,n=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i];e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:t,monthsShortRegex:t,monthsStrictRegex:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,monthsShortStrictRegex:/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","Márt","Aib","Beal","Meith","Iúil","Lún","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],weekdaysShort:["Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],weekdaysMin:["Do","Lu","Má","Cé","Dé","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d míonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n,r){var o={s:["थोडया सॅकंडांनी","थोडे सॅकंड"],ss:[e+" सॅकंडांनी",e+" सॅकंड"],m:["एका मिणटान","एक मिनूट"],mm:[e+" मिणटांनी",e+" मिणटां"],h:["एका वरान","एक वर"],hh:[e+" वरांनी",e+" वरां"],d:["एका दिसान","एक दीस"],dd:[e+" दिसांनी",e+" दीस"],M:["एका म्हयन्यान","एक म्हयनो"],MM:[e+" म्हयन्यानी",e+" म्हयने"],y:["एका वर्सान","एक वर्स"],yy:[e+" वर्सांनी",e+" वर्सां"]};return r?o[n][0]:o[n][1]}e.defineLocale("gom-deva",{months:{standalone:"जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),format:"जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार".split("_"),weekdaysShort:"आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.".split("_"),weekdaysMin:"आ_सो_मं_बु_ब्रे_सु_शे".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [वाजतां]",LTS:"A h:mm:ss [वाजतां]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [वाजतां]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [वाजतां]",llll:"ddd, D MMM YYYY, A h:mm [वाजतां]"},calendar:{sameDay:"[आयज] LT",nextDay:"[फाल्यां] LT",nextWeek:"[फुडलो] dddd[,] LT",lastDay:"[काल] LT",lastWeek:"[फाटलो] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s आदीं",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(वेर)/,ordinal:function(e,t){switch(t){case"D":return e+"वेर";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:1,doy:4},meridiemParse:/राती|सकाळीं|दनपारां|सांजे/,meridiemHour:function(e,t){return 12===e&&(e=0),"राती"===t?e<4?e:e+12:"सकाळीं"===t?e:"दनपारां"===t?e>12?e:e+12:"सांजे"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"राती":e<12?"सकाळीं":e<16?"दनपारां":e<20?"सांजे":"राती"}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n,r){var o={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return r?o[n][0]:o[n][1]}e.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,t){switch(t){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:1,doy:4},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,t){return 12===e&&(e=0),"rati"===t?e<4?e:e+12:"sokallim"===t?e:"donparam"===t?e>12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પહેલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,n){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?n?'לפנה"צ':"לפני הצהריים":e<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n){var r=e+" ";switch(n){case"ss":return r+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return r+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return r+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return r+=1===e?"dan":"dana";case"MM":return r+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return r+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[prošlu] [nedjelju] [u] LT";case 3:return"[prošlu] [srijedu] [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(e,t,n,r){var o=e;switch(n){case"s":return r||t?"néhány másodperc":"néhány másodperce";case"ss":return o+(r||t)?" másodperc":" másodperce";case"m":return"egy"+(r||t?" perc":" perce");case"mm":return o+(r||t?" perc":" perce");case"h":return"egy"+(r||t?" óra":" órája");case"hh":return o+(r||t?" óra":" órája");case"d":return"egy"+(r||t?" nap":" napja");case"dd":return o+(r||t?" nap":" napja");case"M":return"egy"+(r||t?" hónap":" hónapja");case"MM":return o+(r||t?" hónap":" hónapja");case"y":return"egy"+(r||t?" év":" éve");case"yy":return o+(r||t?" év":" éve")}return""}function r(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,n){return e<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return r.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return r.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e){return e%100==11||e%10!=1}function n(e,n,r,o){var a=e+" ";switch(r){case"s":return n||o?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return t(e)?a+(n||o?"sekúndur":"sekúndum"):a+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return t(e)?a+(n||o?"mínútur":"mínútum"):n?a+"mínúta":a+"mínútu";case"hh":return t(e)?a+(n||o?"klukkustundir":"klukkustundum"):a+"klukkustund";case"d":return n?"dagur":o?"dag":"degi";case"dd":return t(e)?n?a+"dagar":a+(o?"daga":"dögum"):n?a+"dagur":a+(o?"dag":"degi");case"M":return n?"mánuður":o?"mánuð":"mánuði";case"MM":return t(e)?n?a+"mánuðir":a+(o?"mánuði":"mánuðum"):n?a+"mánuður":a+(o?"mánuð":"mánuði");case"y":return n||o?"ár":"ári";case"yy":return t(e)?a+(n||o?"ár":"árum"):a+(n||o?"ár":"ári")}}e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(e,t){return"元"===t[1]?1:parseInt(t[1]||e,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,n){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()!==e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,t){switch(t){case"y":return 1===e?"元年":e+"年";case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("ka",{months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,(function(e,t,n){return"ი"===n?t+"ში":t+n+"ში"}))},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):e},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,n){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,n){return e<12?"오전":"오후"}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},r=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:r,monthsShort:r,weekdays:"یهكشهممه_دووشهممه_سێشهممه_چوارشهممه_پێنجشهممه_ههینی_شهممه".split("_"),weekdaysShort:"یهكشهم_دووشهم_سێشهم_چوارشهم_پێنجشهم_ههینی_شهممه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره|بهیانی/,isPM:function(e){return/ئێواره/.test(e)},meridiem:function(e,t,n){return e<12?"بهیانی":"ئێواره"},calendar:{sameDay:"[ئهمرۆ كاتژمێر] LT",nextDay:"[بهیانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له %s",past:"%s",s:"چهند چركهیهك",ss:"چركه %d",m:"یهك خولهك",mm:"%d خولهك",h:"یهك كاتژمێر",hh:"%d كاتژمێر",d:"یهك ڕۆژ",dd:"%d ڕۆژ",M:"یهك مانگ",MM:"%d مانگ",y:"یهك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n,r){var o={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?o[n][0]:o[n][1]}function n(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10;return n(0===t?e/10:t)}if(e<1e4){for(;e>=10;)e/=10;return n(e)}return n(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return n(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return n(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,n){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(e,t,n,r){return t?o(n)[0]:r?o(n)[1]:o(n)[2]}function r(e){return e%10==0||e>10&&e<20}function o(e){return t[e].split("_")}function a(e,t,a,i){var c=e+" ";return 1===e?c+n(0,t,a[0],i):t?c+(r(e)?o(a)[1]:o(a)[0]):i?c+o(a)[1]:c+(r(e)?o(a)[1]:o(a)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,n,r){return t?"kelios sekundės":r?"kelių sekundžių":"kelias sekundes"},ss:a,m:n,mm:a,h:n,hh:a,d:n,dd:a,M:n,MM:a,y:n,yy:a},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(e,t,n){return n?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function r(e,r,o){return e+" "+n(t[o],e,r)}function o(e,r,o){return n(t[o],e,r)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:r,m:o,mm:r,h:o,hh:r,d:o,dd:r,M:o,MM:r,y:o,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,r){var o=t.words[r];return 1===r.length?n?o[0]:o[1]:e+" "+t.correctGrammaticalCase(e,o)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,n){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n,r){switch(n){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,n){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function r(e,t,n,r){var o="";if(t)switch(n){case"s":o="काही सेकंद";break;case"ss":o="%d सेकंद";break;case"m":o="एक मिनिट";break;case"mm":o="%d मिनिटे";break;case"h":o="एक तास";break;case"hh":o="%d तास";break;case"d":o="एक दिवस";break;case"dd":o="%d दिवस";break;case"M":o="एक महिना";break;case"MM":o="%d महिने";break;case"y":o="एक वर्ष";break;case"yy":o="%d वर्षे"}else switch(n){case"s":o="काही सेकंदां";break;case"ss":o="%d सेकंदां";break;case"m":o="एका मिनिटा";break;case"mm":o="%d मिनिटां";break;case"h":o="एका तासा";break;case"hh":o="%d तासां";break;case"d":o="एका दिवसा";break;case"dd":o="%d दिवसां";break;case"M":o="एका महिन्या";break;case"MM":o="%d महिन्यां";break;case"y":o="एका वर्षा";break;case"yy":o="%d वर्षां"}return o.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,meridiemHour:function(e,t){return 12===e&&(e=0),"पहाटे"===t||"सकाळी"===t?e:"दुपारी"===t||"सायंकाळी"===t||"रात्री"===t?e>=12?e:e+12:void 0},meridiem:function(e,t,n){return e>=0&&e<6?"पहाटे":e<12?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,n){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),r=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],o=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsRegex:o,monthsShortRegex:o,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),r=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],o=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsRegex:o,monthsShortRegex:o,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._må._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("oc-lnc",{months:{standalone:"genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),format:"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[uèi a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[ièr a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function r(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function o(e,t,n){var o=e+" ";switch(n){case"ss":return o+(r(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return o+(r(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return o+(r(e)?"godziny":"godzin");case"MM":return o+(r(e)?"miesiące":"miesięcy");case"yy":return o+(r(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,r){return e?""===r?"("+n[e.month()]+"|"+t[e.month()]+")":/D MMMM/.test(r)?n[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:o,m:o,mm:o,h:o,hh:o,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:o,y:"rok",yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n){var r=" ";return(e%100>=20||e>=100&&e%100==0)&&(r=" de "),e+r+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[n]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n){var r,o;return"m"===n?t?"минута":"минуту":e+" "+(r=+e,o={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[n].split("_"),r%10==1&&r%100!=11?o[0]:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?o[1]:o[2])}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,n){return e>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function r(e){return e>1&&e<5}function o(e,t,n,o){var a=e+" ";switch(n){case"s":return t||o?"pár sekúnd":"pár sekundami";case"ss":return t||o?a+(r(e)?"sekundy":"sekúnd"):a+"sekundami";case"m":return t?"minúta":o?"minútu":"minútou";case"mm":return t||o?a+(r(e)?"minúty":"minút"):a+"minútami";case"h":return t?"hodina":o?"hodinu":"hodinou";case"hh":return t||o?a+(r(e)?"hodiny":"hodín"):a+"hodinami";case"d":return t||o?"deň":"dňom";case"dd":return t||o?a+(r(e)?"dni":"dní"):a+"dňami";case"M":return t||o?"mesiac":"mesiacom";case"MM":return t||o?a+(r(e)?"mesiace":"mesiacov"):a+"mesiacmi";case"y":return t||o?"rok":"rokom";case"yy":return t||o?a+(r(e)?"roky":"rokov"):a+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n,r){var o=e+" ";switch(n){case"s":return t||r?"nekaj sekund":"nekaj sekundami";case"ss":return o+=1===e?t?"sekundo":"sekundi":2===e?t||r?"sekundi":"sekundah":e<5?t||r?"sekunde":"sekundah":"sekund";case"m":return t?"ena minuta":"eno minuto";case"mm":return o+=1===e?t?"minuta":"minuto":2===e?t||r?"minuti":"minutama":e<5?t||r?"minute":"minutami":t||r?"minut":"minutami";case"h":return t?"ena ura":"eno uro";case"hh":return o+=1===e?t?"ura":"uro":2===e?t||r?"uri":"urama":e<5?t||r?"ure":"urami":t||r?"ur":"urami";case"d":return t||r?"en dan":"enim dnem";case"dd":return o+=1===e?t||r?"dan":"dnem":2===e?t||r?"dni":"dnevoma":t||r?"dni":"dnevi";case"M":return t||r?"en mesec":"enim mesecem";case"MM":return o+=1===e?t||r?"mesec":"mesecem":2===e?t||r?"meseca":"mesecema":e<5?t||r?"mesece":"meseci":t||r?"mesecev":"meseci";case"y":return t||r?"eno leto":"enim letom";case"yy":return o+=1===e?t||r?"leto":"letom":2===e?t||r?"leti":"letoma":e<5?t||r?"leta":"leti":t||r?"let":"leti"}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,n){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,r){var o=t.words[r];return 1===r.length?n?o[0]:o[1]:e+" "+t.correctGrammaticalCase(e,o)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,r){var o=t.words[r];return 1===r.length?n?o[0]:o[1]:e+" "+t.correctGrammaticalCase(e,o)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,n){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?":e":1===t||2===t?":a":":e")},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,n){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t||"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,n){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'ünji",4:"'ünji",100:"'ünji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};e.defineLocale("tk",{months:"Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekdays:"Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe".split("_"),weekdaysShort:"Ýek_Duş_Siş_Çar_Pen_Ann_Şen".split("_"),weekdaysMin:"Ýk_Dş_Sş_Çr_Pn_An_Şn".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[düýn] LT",lastWeek:"[geçen] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'unjy";var r=e%10;return e+(t[r]||t[e%100-r]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(e,n,r,o){var a=function(e){var n=Math.floor(e%1e3/100),r=Math.floor(e%100/10),o=e%10,a="";return n>0&&(a+=t[n]+"vatlh"),r>0&&(a+=(""!==a?" ":"")+t[r]+"maH"),o>0&&(a+=(""!==a?" ":"")+t[o]),""===a?"pagh":a}(e);switch(r){case"ss":return a+" lup";case"mm":return a+" tup";case"hh":return a+" rep";case"dd":return a+" jaj";case"MM":return a+" jar";case"yy":return a+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:n,m:"wa’ tup",mm:n,h:"wa’ rep",hh:n,d:"wa’ jaj",dd:n,M:"wa’ jar",MM:n,y:"wa’ DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),meridiem:function(e,t,n){return e<12?n?"öö":"ÖÖ":n?"ös":"ÖS"},meridiemParse:/öö|ÖÖ|ös|ÖS/,isPM:function(e){return"ös"===e||"ÖS"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var r=e%10;return e+(t[r]||t[e%100-r]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n,r){var o={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return r||t?o[n][0]:o[n][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,n){return e>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js language configuration e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var r=100*e+t;return r<600?"يېرىم كېچە":r<900?"سەھەر":r<1130?"چۈشتىن بۇرۇن":r<1230?"چۈش":r<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration function t(e,t,n){var r,o;return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+(r=+e,o={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[n].split("_"),r%10==1&&r%100!=11?o[0]:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?o[1]:o[2])}function n(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):e?n[/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative"][e.day()]:n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:function(e){return e.week()!==this.week()?"[下]dddLT":"[本]dddLT"},lastDay:"[昨天]LT",lastWeek:function(e){return this.week()!==e.week()?"[上]dddLT":"[本]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1200?"上午":1200===r?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(4))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(4))},function(e,t){e.exports=function(e){if(Array.isArray(e))return e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if("undefined"==typeof document)return 0;if(e||void 0===r){var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var n=document.createElement("div"),o=n.style;o.position="absolute",o.top=0,o.left=0,o.pointerEvents="none",o.visibility="hidden",o.width="200px",o.height="150px",o.overflow="hidden",n.appendChild(t),document.body.appendChild(n);var a=t.offsetWidth;n.style.overflow="scroll";var i=t.offsetWidth;a===i&&(i=n.clientWidth),document.body.removeChild(n),r=a-i}return r}},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(521)),c=r(n(51));var l=function(e){var t=e.stickyOffsets,n=e.columns,r=e.flattenColumns,o=e.onHeaderRow,l=a.useContext(c.default),u=l.prefixCls,s=l.getComponent,f=a.useMemo((function(){return function(e){var t=[];!function e(n,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;t[o]=t[o]||[];var a=r,i=n.filter(Boolean).map((function(n){var r={key:n.key,className:n.className||"",children:n.title,column:n,colStart:a},i=1,c=n.children;return c&&c.length>0&&(i=e(c,a,o+1).reduce((function(e,t){return e+t}),0),r.hasSubColumns=!0),"colSpan"in n&&(i=n.colSpan),"rowSpan"in n&&(r.rowSpan=n.rowSpan),r.colSpan=i,r.colEnd=r.colStart+i-1,t[o].push(r),a+=i,i}));return i}(e,0);for(var n=t.length,r=function(e){t[e].forEach((function(t){"rowSpan"in t||t.hasSubColumns||(t.rowSpan=n-e)}))},o=0;o<n;o+=1)r(o);return t}(n)}),[n]),d=s(["header","wrapper"],"thead"),p=s(["header","row"],"tr"),h=s(["header","cell"],"th");return a.createElement(d,{className:"".concat(u,"-thead")},f.map((function(e,n){return a.createElement(i.default,{key:n,flattenColumns:r,cells:e,stickyOffsets:t,rowComponent:p,cellComponent:h,onHeaderRow:o,index:n})})))};t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCellFixedInfo=function(e,t,n,r,o){var a,i,c=n[e]||{},l=n[t]||{};"left"===c.fixed?a=r.left[e]:"right"===l.fixed&&(i=r.right[t]);var u=!1,s=!1,f=!1,d=!1,p=n[t+1],h=n[e-1];if("rtl"===o){if(void 0!==a){var m=h&&"left"===h.fixed;d=!m}else if(void 0!==i){var v=p&&"right"===p.fixed;f=!v}}else if(void 0!==a){var y=p&&"left"===p.fixed;u=!y}else if(void 0!==i){var _=h&&"right"===h.fixed;s=!_}return{fixLeft:a,fixRight:i,lastFixLeft:u,firstFixRight:s,lastFixRight:f,firstFixLeft:d,isSticky:r.isSticky}}},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(12)),i=r(n(0)),c=n(148);var l=function(e){for(var t=e.colWidths,n=e.columns,r=[],o=!1,l=(e.columCount||n.length)-1;l>=0;l-=1){var u=t[l],s=n&&n[l],f=s&&s[c.INTERNAL_COL_DEFINE];(u||f||o)&&(r.unshift(i.createElement("col",(0,a.default)({key:l,style:{width:u,minWidth:u}},f))),o=!0)}return i.createElement("colgroup",null,r)};t.default=l},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(109)),c=r(n(51));var l=function(e){var t=e.prefixCls,n=e.children,r=e.component,o=e.cellComponent,l=e.fixHeader,u=e.fixColumn,s=e.horizonScroll,f=e.className,d=e.expanded,p=e.componentWidth,h=e.colSpan,m=a.useContext(c.default).scrollbarSize;return a.useMemo((function(){var e=n;return u&&(e=a.createElement("div",{style:{width:p-(l?m:0),position:"sticky",left:0,overflow:"hidden"},className:"".concat(t,"-expanded-row-fixed")},e)),a.createElement(r,{className:f,style:{display:d?null:"none"}},a.createElement(i.default,{component:o,prefixCls:t,colSpan:h},e))}),[n,r,l,s,f,d,p,h,m])};t.default=l},function(e,t,n){"use strict";var r=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(0)).createContext(null);t.default=o},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.convertChildrenToColumns=d,t.default=void 0;var a=o(n(13)),i=o(n(46)),c=o(n(45)),l=o(n(57)),u=r(n(0)),s=(o(n(67)),o(n(150))),f=n(148);function d(e){return(0,s.default)(e).filter((function(e){return u.isValidElement(e)})).map((function(e){var t=e.key,n=e.props,r=n.children,o=(0,l.default)(n,["children"]),a=(0,c.default)({key:t},o);return r&&(a.children=d(r)),a}))}function p(e){return e.reduce((function(e,t){var n=t.fixed,r=!0===n?"left":n,o=t.children;return o&&o.length>0?[].concat((0,i.default)(e),(0,i.default)(p(o).map((function(e){return(0,c.default)({fixed:r},e)})))):[].concat((0,i.default)(e),[(0,c.default)((0,c.default)({},t),{},{fixed:r})])}),[])}var h=function(e,t){var n=e.prefixCls,r=e.columns,o=e.children,i=e.expandable,s=e.expandedKeys,h=e.getRowKey,m=e.onTriggerExpand,v=e.expandIcon,y=e.rowExpandable,_=e.expandIconColumnIndex,b=e.direction,g=e.expandRowByClick,M=e.columnWidth,w=u.useMemo((function(){return r||d(o)}),[r,o]),O=u.useMemo((function(){if(i){var e,t=_||0,r=w[t],o=(e={},(0,a.default)(e,f.INTERNAL_COL_DEFINE,{className:"".concat(n,"-expand-icon-col")}),(0,a.default)(e,"title",""),(0,a.default)(e,"fixed",r?r.fixed:null),(0,a.default)(e,"className","".concat(n,"-row-expand-icon-cell")),(0,a.default)(e,"width",M),(0,a.default)(e,"render",(function(e,t,r){var o=h(t,r),a=s.has(o),i=!y||y(t),c=v({prefixCls:n,expanded:a,expandable:i,record:t,onExpand:m});return g?u.createElement("span",{onClick:function(e){return e.stopPropagation()}},c):c})),e),c=w.slice();return t>=0&&c.splice(t,0,o),c}return w}),[i,w,h,s,v,b]),k=u.useMemo((function(){var e=O;return t&&(e=t(e)),e.length||(e=[{render:function(){return null}}]),e}),[t,O,b]),L=u.useMemo((function(){return"rtl"===b?function(e){return e.map((function(e){var t=e.fixed,n=(0,l.default)(e,["fixed"]),r=t;return"left"===t?r="right":"right"===t&&(r="left"),(0,c.default)({fixed:r},n)}))}(p(k)):p(k)}),[k,b]);return[k,L]};t.default=h},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.useLayoutState=function(e){var t=(0,a.useRef)(e),n=(0,a.useState)({}),r=(0,o.default)(n,2)[1],i=(0,a.useRef)(null),c=(0,a.useRef)([]);return(0,a.useEffect)((function(){return function(){i.current=null}}),[]),[t.current,function(e){c.current.push(e);var n=Promise.resolve();i.current=n,n.then((function(){if(i.current===n){var e=c.current,o=t.current;c.current=[],e.forEach((function(e){t.current=e(t.current)})),i.current=null,o!==t.current&&r({})}}))}]},t.useTimeoutLock=function(e){var t=(0,a.useRef)(e||null),n=(0,a.useRef)();function r(){window.clearTimeout(n.current)}return(0,a.useEffect)((function(){return r}),[]),[function(e){t.current=e,r(),n.current=window.setTimeout((function(){t.current=null,n.current=void 0}),100)},function(){return t.current}]};var o=r(n(25)),a=n(0)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){return!("undefined"==typeof window||!window.document||!window.document.createElement)}},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(this,n(74))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={items_per_page:"/ page",jump_to:"Go to",jump_to_confirm:"confirm",page:"",prev_page:"Previous Page",next_page:"Next Page",prev_5:"Previous 5 Pages",next_5:"Next 5 Pages",prev_3:"Previous 3 Pages",next_3:"Next 3 Pages"}},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(12)),a=r(n(553)),i=r(n(355)),c={lang:(0,o.default)({placeholder:"Select date",yearPlaceholder:"Select year",quarterPlaceholder:"Select quarter",monthPlaceholder:"Select month",weekPlaceholder:"Select week",rangePlaceholder:["Start date","End date"],rangeYearPlaceholder:["Start year","End year"],rangeMonthPlaceholder:["Start month","End month"],rangeWeekPlaceholder:["Start week","End week"]},a.default),timePickerLocale:(0,o.default)({},i.default)};t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={placeholder:"Select time",rangePlaceholder:["Start time","End time"]};t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=(0,n(0).createContext)(void 0);t.default=r},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(12)),i=r(n(13)),c=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=p(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),l=r(n(2)),u=n(26),s=r(n(155)),f=r(n(557)),d=r(n(558));function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}var h=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},m=c.createElement(f.default,null),v=c.createElement(d.default,null),y=function(e){var t=e.className,n=e.prefixCls,r=e.image,o=void 0===r?m:r,f=e.description,d=e.children,p=e.imageStyle,y=h(e,["className","prefixCls","image","description","children","imageStyle"]),_=c.useContext(u.ConfigContext),b=_.getPrefixCls,g=_.direction;return c.createElement(s.default,{componentName:"Empty"},(function(e){var r,u=b("empty",n),s=void 0!==f?f:e.description,h="string"==typeof s?s:"empty",m=null;return m="string"==typeof o?c.createElement("img",{alt:h,src:o}):o,c.createElement("div",(0,a.default)({className:(0,l.default)(u,(r={},(0,i.default)(r,"".concat(u,"-normal"),o===v),(0,i.default)(r,"".concat(u,"-rtl"),"rtl"===g),r),t)},y),c.createElement("div",{className:"".concat(u,"-image"),style:p},m),s&&c.createElement("div",{className:"".concat(u,"-description")},s),d&&c.createElement("div",{className:"".concat(u,"-footer")},d))}))};y.PRESENTED_IMAGE_DEFAULT=m,y.PRESENTED_IMAGE_SIMPLE=v;var _=y;t.default=_},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.getKeyThenIncreaseKey=function(){return O++},t.attachTypeApi=T,t.default=t.getInstance=void 0;var a,i=r(n(12)),c=r(n(13)),l=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=_(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),u=r(n(2)),s=r(n(408)),f=r(n(157)),d=r(n(563)),p=r(n(361)),h=r(n(568)),m=r(n(571)),v=r(n(574)),y=n(26);function _(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(_=function(e){return e?n:t})(e)}var b,g,M,w=3,O=1,k="",L="move-up",x=!1,z=!1;function S(e,t){var n=e.prefixCls,r=(0,y.globalConfig)(),o=r.getPrefixCls,i=r.getRootPrefixCls,c=o("message",n||k),l=i(e.rootPrefixCls,c);if(a)t({prefixCls:c,rootPrefixCls:l,instance:a});else{var u={prefixCls:c,transitionName:x?L:"".concat(l,"-").concat(L),style:{top:b},getContainer:g,maxCount:M};s.default.newInstance(u,(function(e){a?t({prefixCls:c,rootPrefixCls:l,instance:a}):(a=e,t({prefixCls:c,rootPrefixCls:l,instance:e}))}))}}var C={info:m.default,success:h.default,error:p.default,warning:d.default,loading:f.default};function j(e,t){var n,r=void 0!==e.duration?e.duration:w,o=C[e.type],a=(0,u.default)("".concat(t,"-custom-content"),(n={},(0,c.default)(n,"".concat(t,"-").concat(e.type),e.type),(0,c.default)(n,"".concat(t,"-rtl"),!0===z),n));return{key:e.key,duration:r,style:e.style||{},className:e.className,content:l.createElement("div",{className:a},e.icon||o&&l.createElement(o,null),l.createElement("span",null,e.content)),onClose:e.onClose,onClick:e.onClick}}var E={open:function(e){var t=e.key||O++,n=new Promise((function(n){var r=function(){return"function"==typeof e.onClose&&e.onClose(),n(!0)};S(e,(function(n){var o=n.prefixCls;n.instance.notice(j((0,i.default)((0,i.default)({},e),{key:t,onClose:r}),o))}))})),r=function(){a&&a.removeNotice(t)};return r.then=function(e,t){return n.then(e,t)},r.promise=n,r},config:function(e){void 0!==e.top&&(b=e.top,a=null),void 0!==e.duration&&(w=e.duration),void 0!==e.prefixCls&&(k=e.prefixCls),void 0!==e.getContainer&&(g=e.getContainer),void 0!==e.transitionName&&(L=e.transitionName,a=null,x=!0),void 0!==e.maxCount&&(M=e.maxCount,a=null),void 0!==e.rtl&&(z=e.rtl)},destroy:function(e){if(a)if(e){(0,a.removeNotice)(e)}else{var t=a.destroy;t(),a=null}}};function T(e,t){e[t]=function(n,r,o){return function(e){return"[object Object]"===Object.prototype.toString.call(e)&&!!e.content}(n)?e.open((0,i.default)((0,i.default)({},n),{type:t})):("function"==typeof r&&(o=r,r=void 0),e.open({content:n,duration:r,type:t,onClose:o}))}}["success","info","warning","error","loading"].forEach((function(e){return T(E,e)})),E.warn=E.warning,E.useMessage=(0,v.default)(S,j);t.getInstance=function(){return null};var P=E;t.default=P},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(57)),a=r(n(45)),i=n(158),c={primaryColor:"#333",secondaryColor:"#E6E6E6",calculated:!1};var l=function(e){var t=e.icon,n=e.className,r=e.onClick,l=e.style,u=e.primaryColor,s=e.secondaryColor,f=(0,o.default)(e,["icon","className","onClick","style","primaryColor","secondaryColor"]),d=c;if(u&&(d={primaryColor:u,secondaryColor:s||(0,i.getSecondaryColor)(u)}),(0,i.useInsertStyles)(),(0,i.warning)((0,i.isIconDefinition)(t),"icon should be icon definiton, but got ".concat(t)),!(0,i.isIconDefinition)(t))return null;var p=t;return p&&"function"==typeof p.icon&&(p=(0,a.default)((0,a.default)({},p),{},{icon:p.icon(d.primaryColor,d.secondaryColor)})),(0,i.generate)(p.icon,"svg-".concat(p.name),(0,a.default)({className:n,onClick:r,style:l,"data-icon":p.name,width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true"},f))};l.displayName="IconReact",l.getTwoToneColors=function(){return(0,a.default)({},c)},l.setTwoToneColors=function(e){var t=e.primaryColor,n=e.secondaryColor;c.primaryColor=t,c.secondaryColor=n||(0,i.getSecondaryColor)(t),c.calculated=!!n};var u=l;t.default=u},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.injectCSS=i,t.updateCSS=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=a(n);if(!c.has(r)){var o=i("",n),l=o.parentNode;c.set(r,l),l.removeChild(o)}var u=Array.from(c.get(r).children).find((function(e){return"STYLE"===e.tagName&&e["rc-util-key"]===t}));if(u){var s,f,d;if((null===(s=n.csp)||void 0===s?void 0:s.nonce)&&u.nonce!==(null===(f=n.csp)||void 0===f?void 0:f.nonce))u.nonce=null===(d=n.csp)||void 0===d?void 0:d.nonce;return u.innerHTML!==e&&(u.innerHTML=e),u}var p=i(e,n);return p["rc-util-key"]=t,p};var o=r(n(351));function a(e){return e.attachTo?e.attachTo:document.querySelector("head")||document.body}function i(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(0,o.default)())return null;var r,i=document.createElement("style");(null===(t=n.csp)||void 0===t?void 0:t.nonce)&&(i.nonce=null===(r=n.csp)||void 0===r?void 0:r.nonce);i.innerHTML=e;var c=a(n),l=c.firstChild;return n.prepend&&c.prepend?c.prepend(i):n.prepend&&l?c.insertBefore(i,l):c.appendChild(i),i}var c=new Map},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(566))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=l.useRef({}),n=l.useState([]),r=(0,c.default)(n,2),o=r[0],s=r[1];return[function(n){var r=!0;e.add(n,(function(e,n){var o=n.key;if(e&&(!t.current[o]||r)){var c=l.createElement(u.default,(0,i.default)({},n,{holder:e}));t.current[o]=c,s((function(e){var t=e.findIndex((function(e){return e.key===n.key}));if(-1===t)return[].concat((0,a.default)(e),[c]);var r=(0,a.default)(e);return r[t]=c,r}))}r=!1}))},l.createElement(l.Fragment,null,o)]};var a=o(n(46)),i=o(n(12)),c=o(n(25)),l=r(n(0)),u=o(n(575))},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(577))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(594))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(13)),i=r(n(12)),c=v(n(0)),l=r(n(77)),u=r(n(2)),s=v(n(874)),f=n(26),d=r(n(605)),p=r(n(97)),h=n(160);function m(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(m=function(e){return e?n:t})(e)}function v(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=m(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}return r.default=e,n&&n.set(e,r),r}var y=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},_=function(e,t){var n,r,o=e.prefixCls,m=e.bordered,v=void 0===m||m,_=e.className,b=e.getPopupContainer,g=e.dropdownClassName,M=e.listHeight,w=void 0===M?256:M,O=e.listItemHeight,k=void 0===O?24:O,L=e.size,x=e.notFoundContent,z=y(e,["prefixCls","bordered","className","getPopupContainer","dropdownClassName","listHeight","listItemHeight","size","notFoundContent"]),S=c.useContext(f.ConfigContext),C=S.getPopupContainer,j=S.getPrefixCls,E=S.renderEmpty,T=S.direction,P=S.virtual,H=S.dropdownMatchSelectWidth,D=c.useContext(p.default),Y=j("select",o),V=j(),N=c.useMemo((function(){var e=z.mode;if("combobox"!==e)return"SECRET_COMBOBOX_MODE_DO_NOT_USE"===e?"combobox":e}),[z.mode]),F="multiple"===N||"tags"===N;r=void 0!==x?x:"combobox"===N?null:E("Select");var A=(0,d.default)((0,i.default)((0,i.default)({},z),{multiple:F,prefixCls:Y})),R=A.suffixIcon,I=A.itemIcon,W=A.removeIcon,U=A.clearIcon,K=(0,l.default)(z,["suffixIcon","itemIcon"]),B=(0,u.default)(g,(0,a.default)({},"".concat(Y,"-dropdown-").concat(T),"rtl"===T)),q=L||D,$=(0,u.default)((n={},(0,a.default)(n,"".concat(Y,"-lg"),"large"===q),(0,a.default)(n,"".concat(Y,"-sm"),"small"===q),(0,a.default)(n,"".concat(Y,"-rtl"),"rtl"===T),(0,a.default)(n,"".concat(Y,"-borderless"),!v),n),_);return c.createElement(s.default,(0,i.default)({ref:t,virtual:P,dropdownMatchSelectWidth:H},K,{transitionName:(0,h.getTransitionName)(V,"slide-up",z.transitionName),listHeight:w,listItemHeight:k,mode:N,prefixCls:Y,direction:T,inputIcon:R,menuItemSelectedIcon:I,removeIcon:W,clearIcon:U,notFoundContent:r,className:$,getPopupContainer:b||C,dropdownClassName:B}))},b=c.forwardRef(_);b.SECRET_COMBOBOX_MODE_DO_NOT_USE="SECRET_COMBOBOX_MODE_DO_NOT_USE",b.Option=s.Option,b.OptGroup=s.OptGroup;var g=b;t.default=g},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(606))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(25)),a=n(0),i=r(n(614));var c=function(){var e=(0,a.useState)({}),t=(0,o.default)(e,2),n=t[0],r=t[1];return(0,a.useEffect)((function(){var e=i.default.subscribe((function(e){r(e)}));return function(){return i.default.unsubscribe(e)}}),[]),n};t.default=c},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.getKey=f,t.warningWithoutKey=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=new Map;function n(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";(e||[]).forEach((function(e){var o=e.key,a=e.children;(0,u.default)(null!=o,"Tree node must have a certain key: [".concat(r).concat(o,"]"));var i=String(o);(0,u.default)(!t.has(i)||null==o,"Same 'key' exist in the Tree: ".concat(i)),t.set(i,!0),n(a,"".concat(r).concat(i," > "))}))}n(e)},t.convertTreeToData=function(e){return function e(t){return(0,l.default)(t).map((function(t){if(!(0,s.isTreeNode)(t))return(0,u.default)(!t,"Tree/TreeNode can only accept TreeNode as children."),null;var n=t.key,r=t.props,o=r.children,a=(0,c.default)(r,["children"]),l=(0,i.default)({key:n},a),f=e(o);return f.length&&(l.children=f),l})).filter((function(e){return e}))}(e)},t.flattenTreeData=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=new Set(!0===t?[]:t),r=[];function o(e){var c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.map((function(l,u){var d=(0,s.getPosition)(c?c.pos:"0",u),p=f(l.key,d),h=(0,i.default)((0,i.default)({},l),{},{parent:c,pos:d,children:null,data:l,isStart:[].concat((0,a.default)(c?c.isStart:[]),[0===u]),isEnd:[].concat((0,a.default)(c?c.isEnd:[]),[u===e.length-1])});return r.push(h),!0===t||n.has(p)?h.children=o(l.children||[],h):h.children=[],h}))}return o(e),r},t.traverseDataNodes=d,t.convertDataToEntities=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.initWrapper,r=t.processEntity,o=t.onProcessFinished,a=t.externalGetKey,i=t.childrenPropName,c=arguments.length>2?arguments[2]:void 0,l=a||c,u={},s={},p={posEntities:u,keyEntities:s};n&&(p=n(p)||p);d(e,(function(e){var t=e.node,n=e.index,o=e.pos,a=e.key,i=e.parentPos,c={node:t,index:n,key:a,pos:o,level:e.level},l=f(a,o);u[o]=c,s[l]=c,c.parent=u[i],c.parent&&(c.parent.children=c.parent.children||[],c.parent.children.push(c)),r&&r(c,p)}),{externalGetKey:l,childrenPropName:i}),o&&o(p);return p},t.getTreeNodeProps=function(e,t){var n=t.expandedKeys,r=t.selectedKeys,o=t.loadedKeys,a=t.loadingKeys,i=t.checkedKeys,c=t.halfCheckedKeys,l=t.dragOverNodeKey,u=t.dropPosition,s=t.keyEntities[e];return{eventKey:e,expanded:-1!==n.indexOf(e),selected:-1!==r.indexOf(e),loaded:-1!==o.indexOf(e),loading:-1!==a.indexOf(e),checked:-1!==i.indexOf(e),halfChecked:-1!==c.indexOf(e),pos:String(s?s.pos:""),dragOver:l===e&&0===u,dragOverGapTop:l===e&&-1===u,dragOverGapBottom:l===e&&1===u}},t.convertNodePropsToEventData=function(e){var t=e.data,n=e.expanded,r=e.selected,o=e.checked,a=e.loaded,c=e.loading,l=e.halfChecked,s=e.dragOver,f=e.dragOverGapTop,d=e.dragOverGapBottom,p=e.pos,h=e.active,m=(0,i.default)((0,i.default)({},t),{},{expanded:n,selected:r,checked:o,loaded:a,loading:c,halfChecked:l,dragOver:s,dragOverGapTop:f,dragOverGapBottom:d,pos:p,active:h});"props"in m||Object.defineProperty(m,"props",{get:function(){return(0,u.default)(!1,"Second param return from event is node data instead of TreeNode instance. Please read value directly instead of reading from `props`."),e}});return m};var o=r(n(8)),a=r(n(46)),i=r(n(45)),c=r(n(57)),l=r(n(150)),u=r(n(67)),s=n(161);function f(e,t){return null!=e?e:t}function d(e,t,n){var r,a,i=null,c=(0,o.default)(n);"function"===c||"string"===c?i=n:n&&"object"===c&&(r=n.childrenPropName,i=n.externalGetKey),r=r||"children",i?"string"==typeof i?a=function(e){return e[i]}:"function"==typeof i&&(a=function(e){return i(e)}):a=function(e,t){return f(e.key,t)},function n(o,i,c){var l=o?o[r]:e,u=o?(0,s.getPosition)(c.pos,i):"0";if(o){var f=a(o,u),d={node:o,index:i,pos:u,key:f,parentPos:c.node?c.pos:null,level:c.level+1};t(d)}l&&l.forEach((function(e,t){n(e,t,{node:o,pos:u,level:c?c.level+1:-1})}))}(null)}},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(370)),a=r(n(372)),i=o.default;i.Group=a.default,i.__ANT_CHECKBOX=!0;var c=i;t.default=c},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(13)),i=r(n(12)),c=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=p(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),l=r(n(2)),u=r(n(371)),s=n(372),f=n(26),d=r(n(68));function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}var h=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},m=function(e,t){var n,r=e.prefixCls,o=e.className,p=e.children,m=e.indeterminate,v=void 0!==m&&m,y=e.style,_=e.onMouseEnter,b=e.onMouseLeave,g=e.skipGroup,M=void 0!==g&&g,w=h(e,["prefixCls","className","children","indeterminate","style","onMouseEnter","onMouseLeave","skipGroup"]),O=c.useContext(f.ConfigContext),k=O.getPrefixCls,L=O.direction,x=c.useContext(s.GroupContext),z=c.useRef(w.value);c.useEffect((function(){null==x||x.registerValue(w.value),(0,d.default)("checked"in w||!!x||!("value"in w),"Checkbox","`value` is not a valid prop, do you mean `checked`?")}),[]),c.useEffect((function(){if(!M)return w.value!==z.current&&(null==x||x.cancelValue(z.current),null==x||x.registerValue(w.value)),function(){return null==x?void 0:x.cancelValue(w.value)}}),[w.value]);var S=k("checkbox",r),C=(0,i.default)({},w);x&&!M&&(C.onChange=function(){w.onChange&&w.onChange.apply(w,arguments),x.toggleOption&&x.toggleOption({label:p,value:w.value})},C.name=x.name,C.checked=-1!==x.value.indexOf(w.value),C.disabled=w.disabled||x.disabled);var j=(0,l.default)((n={},(0,a.default)(n,"".concat(S,"-wrapper"),!0),(0,a.default)(n,"".concat(S,"-rtl"),"rtl"===L),(0,a.default)(n,"".concat(S,"-wrapper-checked"),C.checked),(0,a.default)(n,"".concat(S,"-wrapper-disabled"),C.disabled),n),o),E=(0,l.default)((0,a.default)({},"".concat(S,"-indeterminate"),v));return c.createElement("label",{className:j,style:y,onMouseEnter:_,onMouseLeave:b},c.createElement(u.default,(0,i.default)({},C,{prefixCls:S,className:E,ref:t})),void 0!==p&&c.createElement("span",null,p))},v=c.forwardRef(m);v.displayName="Checkbox";var y=v;t.default=y},function(e,t,n){"use strict";n.r(t);var r=n(7),o=n(6),a=n(15),i=n(1),c=n(20),l=n(21),u=n(23),s=n(22),f=n(0),d=n.n(f),p=n(2),h=n.n(p),m=function(e){Object(u.a)(n,e);var t=Object(s.a)(n);function n(e){var r;Object(c.a)(this,n),(r=t.call(this,e)).handleChange=function(e){var t=r.props,n=t.disabled,o=t.onChange;n||("checked"in r.props||r.setState({checked:e.target.checked}),o&&o({target:Object(i.a)(Object(i.a)({},r.props),{},{checked:e.target.checked}),stopPropagation:function(){e.stopPropagation()},preventDefault:function(){e.preventDefault()},nativeEvent:e.nativeEvent}))},r.saveInput=function(e){r.input=e};var o="checked"in e?e.checked:e.defaultChecked;return r.state={checked:o},r}return Object(l.a)(n,[{key:"focus",value:function(){this.input.focus()}},{key:"blur",value:function(){this.input.blur()}},{key:"render",value:function(){var e,t=this.props,n=t.prefixCls,i=t.className,c=t.style,l=t.name,u=t.id,s=t.type,f=t.disabled,p=t.readOnly,m=t.tabIndex,v=t.onClick,y=t.onFocus,_=t.onBlur,b=t.onKeyDown,g=t.onKeyPress,M=t.onKeyUp,w=t.autoFocus,O=t.value,k=t.required,L=Object(a.a)(t,["prefixCls","className","style","name","id","type","disabled","readOnly","tabIndex","onClick","onFocus","onBlur","onKeyDown","onKeyPress","onKeyUp","autoFocus","value","required"]),x=Object.keys(L).reduce((function(e,t){return"aria-"!==t.substr(0,5)&&"data-"!==t.substr(0,5)&&"role"!==t||(e[t]=L[t]),e}),{}),z=this.state.checked,S=h()(n,i,(e={},Object(o.a)(e,"".concat(n,"-checked"),z),Object(o.a)(e,"".concat(n,"-disabled"),f),e));return d.a.createElement("span",{className:S,style:c},d.a.createElement("input",Object(r.a)({name:l,id:u,type:s,required:k,readOnly:p,disabled:f,tabIndex:m,className:"".concat(n,"-input"),checked:!!z,onClick:v,onFocus:y,onBlur:_,onKeyUp:M,onKeyDown:b,onKeyPress:g,onChange:this.handleChange,autoFocus:w,ref:this.saveInput,value:O},x)),d.a.createElement("span",{className:"".concat(n,"-inner")}))}}],[{key:"getDerivedStateFromProps",value:function(e,t){return"checked"in e?Object(i.a)(Object(i.a)({},t),{},{checked:e.checked}):null}}]),n}(f.Component);m.defaultProps={prefixCls:"rc-checkbox",className:"",style:{},type:"checkbox",defaultChecked:!1,onFocus:function(){},onBlur:function(){},onChange:function(){},onKeyDown:function(){},onKeyPress:function(){},onKeyUp:function(){}},t.default=m},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.GroupContext=void 0;var a=r(n(12)),i=r(n(13)),c=r(n(46)),l=r(n(25)),u=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=h(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),s=r(n(2)),f=r(n(77)),d=r(n(370)),p=n(26);function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(h=function(e){return e?n:t})(e)}var m=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},v=u.createContext(null);t.GroupContext=v;var y=function(e,t){var n=e.defaultValue,r=e.children,o=e.options,h=void 0===o?[]:o,y=e.prefixCls,_=e.className,b=e.style,g=e.onChange,M=m(e,["defaultValue","children","options","prefixCls","className","style","onChange"]),w=u.useContext(p.ConfigContext),O=w.getPrefixCls,k=w.direction,L=u.useState(M.value||n||[]),x=(0,l.default)(L,2),z=x[0],S=x[1],C=u.useState([]),j=(0,l.default)(C,2),E=j[0],T=j[1];u.useEffect((function(){"value"in M&&S(M.value||[])}),[M.value]);var P=function(){return h.map((function(e){return"string"==typeof e?{label:e,value:e}:e}))},H=O("checkbox",y),D="".concat(H,"-group"),Y=(0,f.default)(M,["value","disabled"]);h&&h.length>0&&(r=P().map((function(e){return u.createElement(d.default,{prefixCls:H,key:e.value.toString(),disabled:"disabled"in e?e.disabled:M.disabled,value:e.value,checked:-1!==z.indexOf(e.value),onChange:e.onChange,className:"".concat(D,"-item"),style:e.style},e.label)})));var V={toggleOption:function(e){var t=z.indexOf(e.value),n=(0,c.default)(z);-1===t?n.push(e.value):n.splice(t,1),"value"in M||S(n);var r=P();null==g||g(n.filter((function(e){return-1!==E.indexOf(e)})).sort((function(e,t){return r.findIndex((function(t){return t.value===e}))-r.findIndex((function(e){return e.value===t}))})))},value:z,disabled:M.disabled,name:M.name,registerValue:function(e){T((function(t){return[].concat((0,c.default)(t),[e])}))},cancelValue:function(e){T((function(t){return t.filter((function(t){return t!==e}))}))}},N=(0,s.default)(D,(0,i.default)({},"".concat(D,"-rtl"),"rtl"===k),_);return u.createElement("div",(0,a.default)({className:N,style:b},Y,{ref:t}),u.createElement(v.Provider,{value:V},r))},_=u.forwardRef(y),b=u.memo(_);t.default=b},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(374)).default;t.default=o},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(12)),i=r(n(13)),c=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=v(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),l=r(n(881)),u=r(n(2)),s=r(n(159)),f=r(n(623)),d=n(26),p=r(n(68)),h=n(111),m=n(69);function v(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(v=function(e){return e?n:t})(e)}(0,h.tuple)("topLeft","topCenter","topRight","bottomLeft","bottomCenter","bottomRight");var y=function(e){var t,n,r,o,f,h=c.useContext(d.ConfigContext),v=h.getPopupContainer,y=h.getPrefixCls,_=h.direction,b=e.arrow,g=e.prefixCls,M=e.children,w=e.trigger,O=e.disabled,k=e.getPopupContainer,L=e.overlayClassName,x=y("dropdown",g),z=c.Children.only(M),S=(0,m.cloneElement)(z,{className:(0,u.default)("".concat(x,"-trigger"),(0,i.default)({},"".concat(x,"-rtl"),"rtl"===_),z.props.className),disabled:O}),C=(0,u.default)(L,(0,i.default)({},"".concat(x,"-rtl"),"rtl"===_)),j=O?[]:w;return j&&-1!==j.indexOf("contextMenu")&&(t=!0),c.createElement(l.default,(0,a.default)({arrow:b,alignPoint:t},e,{overlayClassName:C,prefixCls:x,getPopupContainer:k||v,transitionName:(n=y(),r=e.placement,o=void 0===r?"":r,f=e.transitionName,void 0!==f?f:o.indexOf("top")>=0?"".concat(n,"-slide-down"):"".concat(n,"-slide-up")),trigger:j,overlay:function(){return function(t){var n,r=e.overlay;n="function"==typeof r?r():r;var o=(n=c.Children.only("string"==typeof n?c.createElement("span",null,n):n)).props;(0,p.default)(!o.mode||"vertical"===o.mode,"Dropdown",'mode="'.concat(o.mode,"\" is not supported for Dropdown's Menu."));var a=o.selectable,i=void 0!==a&&a,l=o.focusable,u=void 0===l||l,f=o.expandIcon,d=void 0!==f&&c.isValidElement(f)?f:c.createElement("span",{className:"".concat(t,"-menu-submenu-arrow")},c.createElement(s.default,{className:"".concat(t,"-menu-submenu-arrow-icon")}));return"string"==typeof n.type?n:(0,m.cloneElement)(n,{mode:"vertical",selectable:i,focusable:u,expandIcon:d})}(x)},placement:function(){var t=e.placement;return void 0!==t?t:"rtl"===_?"bottomRight":"bottomLeft"}()}),S)};y.Button=f.default,y.defaultProps={mouseEnterDelay:.15,mouseLeaveDelay:.1};var _=y;t.default=_},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(627)).default;t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=l;var r=function(e){return+setTimeout(e,16)},o=function(e){return clearTimeout(e)};"undefined"!=typeof window&&"requestAnimationFrame"in window&&(r=function(e){return window.requestAnimationFrame(e)},o=function(e){return window.cancelAnimationFrame(e)});var a=0,i=new Map;function c(e){i.delete(e)}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=a+=1;function o(t){if(0===t)c(n),e();else{var a=r((function(){o(t-1)}));i.set(n,a)}}return o(t),n}l.cancel=function(e){var t=i.get(e);return c(t),o(t)}},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(12)),i=r(n(13)),c=r(n(52)),l=r(n(58)),u=r(n(59)),s=r(n(60)),f=O(n(0)),d=O(n(181)),p=r(n(2)),h=r(n(633)),m=r(n(634)),v=n(26),y=r(n(68)),_=n(379),b=r(n(160)),g=n(69),M=r(n(163));function w(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(w=function(e){return e?n:t})(e)}function O(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=w(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}return r.default=e,n&&n.set(e,r),r}var k=function(e){(0,u.default)(n,e);var t=(0,s.default)(n);function n(e){var r;return(0,c.default)(this,n),(r=t.call(this,e)).renderMenu=function(e){var t=e.getPopupContainer,n=e.getPrefixCls,o=e.direction,c=n(),l=r.props,u=l.prefixCls,s=l.className,h=l.theme,m=l.expandIcon,v={horizontal:{motionName:"".concat(c,"-slide-up")},inline:b.default,other:{motionName:"".concat(c,"-zoom-big")}},y=n("menu",u),_=(0,p.default)("".concat(y,"-").concat(h),(0,i.default)({},"".concat(y,"-inline-collapsed"),r.getInlineCollapsed()),s);return f.createElement(M.default.Provider,{value:{inlineCollapsed:r.getInlineCollapsed()||!1,antdMenuTheme:h,direction:o}},f.createElement(d.default,(0,a.default)({getPopupContainer:t},r.props,{className:_,prefixCls:y,direction:o,defaultMotions:v,expandIcon:(0,g.cloneElement)(m,{className:"".concat(y,"-submenu-expand-icon")})})))},(0,y.default)(!("inlineCollapsed"in e&&"inline"!==e.mode),"Menu","`inlineCollapsed` should only be used when `mode` is inline."),(0,y.default)(!(void 0!==e.siderCollapsed&&"inlineCollapsed"in e),"Menu","`inlineCollapsed` not control Menu under Sider. Should set `collapsed` on Sider instead."),r}return(0,l.default)(n,[{key:"getInlineCollapsed",value:function(){var e=this.props,t=e.inlineCollapsed,n=e.siderCollapsed;return void 0!==n?n:t}},{key:"render",value:function(){return f.createElement(v.ConfigConsumer,null,this.renderMenu)}}]),n}(f.Component);k.defaultProps={className:"",theme:"light",focusable:!1};var L=function(e){(0,u.default)(n,e);var t=(0,s.default)(n);function n(){return(0,c.default)(this,n),t.apply(this,arguments)}return(0,l.default)(n,[{key:"render",value:function(){var e=this;return f.createElement(_.SiderContext.Consumer,null,(function(t){return f.createElement(k,(0,a.default)({},e.props,t))}))}}]),n}(f.Component);L.Divider=d.Divider,L.Item=m.default,L.SubMenu=h.default,L.ItemGroup=d.ItemGroup;var x=L;t.default=x},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(13)),i=r(n(25)),c=r(n(12)),l=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=y(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),u=r(n(880)),s=r(n(162)),f=r(n(2)),d=r(n(635)),p=n(69),h=n(26),m=n(637),v=n(160);function y(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(y=function(e){return e?n:t})(e)}var _=new RegExp("^(".concat(m.PresetColorTypes.join("|"),")(-inverse)?$"));function b(e,t){var n=e.type;if((!0===n.__ANT_BUTTON||!0===n.__ANT_SWITCH||!0===n.__ANT_CHECKBOX||"button"===e.type)&&e.props.disabled){var r=function(e,t){var n={},r=(0,c.default)({},e);return t.forEach((function(t){e&&t in e&&(n[t]=e[t],delete r[t])})),{picked:n,omitted:r}}(e.props.style,["position","left","right","top","bottom","float","display","zIndex"]),o=r.picked,a=r.omitted,i=(0,c.default)((0,c.default)({display:"inline-block"},o),{cursor:"not-allowed",width:e.props.block?"100%":null}),u=(0,c.default)((0,c.default)({},a),{pointerEvents:"none"}),s=(0,p.cloneElement)(e,{style:u,className:null});return l.createElement("span",{style:i,className:(0,f.default)(e.props.className,"".concat(t,"-disabled-compatible-wrapper"))},s)}return e}var g=l.forwardRef((function(e,t){var n,r=l.useContext(h.ConfigContext),o=r.getPopupContainer,m=r.getPrefixCls,y=r.direction,g=(0,s.default)(!1,{value:e.visible,defaultValue:e.defaultVisible}),M=(0,i.default)(g,2),w=M[0],O=M[1],k=function(){var t=e.title,n=e.overlay;return!t&&!n&&0!==t},L=function(){var t=e.builtinPlacements,n=e.arrowPointAtCenter,r=e.autoAdjustOverflow;return t||(0,d.default)({arrowPointAtCenter:n,autoAdjustOverflow:r})},x=e.prefixCls,z=e.openClassName,S=e.getPopupContainer,C=e.getTooltipContainer,j=e.overlayClassName,E=e.color,T=e.overlayInnerStyle,P=e.children,H=m("tooltip",x),D=m(),Y=w;!("visible"in e)&&k()&&(Y=!1);var V,N,F,A=b((0,p.isValidElement)(P)?P:l.createElement("span",null,P),H),R=A.props,I=(0,f.default)(R.className,(0,a.default)({},z||"".concat(H,"-open"),!0)),W=(0,f.default)(j,(n={},(0,a.default)(n,"".concat(H,"-rtl"),"rtl"===y),(0,a.default)(n,"".concat(H,"-").concat(E),E&&_.test(E)),n)),U=T;return E&&!_.test(E)&&(U=(0,c.default)((0,c.default)({},T),{background:E}),V={background:E}),l.createElement(u.default,(0,c.default)({},e,{prefixCls:H,overlayClassName:W,getTooltipContainer:S||C||o,ref:t,builtinPlacements:L(),overlay:(N=e.title,F=e.overlay,0===N?N:F||N||""),visible:Y,onVisibleChange:function(t){var n;O(!k()&&t),k()||null===(n=e.onVisibleChange)||void 0===n||n.call(e,t)},onPopupAlign:function(e,t){var n=L(),r=Object.keys(n).filter((function(e){return n[e].points[0]===t.points[0]&&n[e].points[1]===t.points[1]}))[0];if(r){var o=e.getBoundingClientRect(),a={top:"50%",left:"50%"};r.indexOf("top")>=0||r.indexOf("Bottom")>=0?a.top="".concat(o.height-t.offset[1],"px"):(r.indexOf("Top")>=0||r.indexOf("bottom")>=0)&&(a.top="".concat(-t.offset[1],"px")),r.indexOf("left")>=0||r.indexOf("Right")>=0?a.left="".concat(o.width-t.offset[0],"px"):(r.indexOf("right")>=0||r.indexOf("Left")>=0)&&(a.left="".concat(-t.offset[0],"px")),e.style.transformOrigin="".concat(a.left," ").concat(a.top)}},overlayInnerStyle:U,arrowContent:l.createElement("span",{className:"".concat(H,"-arrow-content"),style:V}),motion:{motionName:(0,v.getTransitionName)(D,"zoom-big-fast",e.transitionName),motionDeadline:1e3}}),Y?(0,p.cloneElement)(A,{className:I}):A)}));g.displayName="Tooltip",g.defaultProps={placement:"top",mouseEnterDelay:.1,mouseLeaveDelay:.1,arrowPointAtCenter:!1,autoAdjustOverflow:!0};var M=g;t.default=M},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.SiderContext=void 0;var a=r(n(13)),i=r(n(12)),c=r(n(25)),l=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=y(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),u=r(n(2)),s=r(n(77)),f=r(n(638)),d=r(n(159)),p=r(n(364)),h=n(641),m=n(26),v=r(n(642));function y(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(y=function(e){return e?n:t})(e)}var _=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},b={xs:"479.98px",sm:"575.98px",md:"767.98px",lg:"991.98px",xl:"1199.98px",xxl:"1599.98px"},g=l.createContext({});t.SiderContext=g;var M,w=(M=0,function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return M+=1,"".concat(e).concat(M)}),O=l.forwardRef((function(e,t){var n=e.prefixCls,r=e.className,o=e.trigger,y=e.children,M=e.defaultCollapsed,O=void 0!==M&&M,k=e.theme,L=void 0===k?"dark":k,x=e.style,z=void 0===x?{}:x,S=e.collapsible,C=void 0!==S&&S,j=e.reverseArrow,E=void 0!==j&&j,T=e.width,P=void 0===T?200:T,H=e.collapsedWidth,D=void 0===H?80:H,Y=e.zeroWidthTriggerStyle,V=e.breakpoint,N=e.onCollapse,F=e.onBreakpoint,A=_(e,["prefixCls","className","trigger","children","defaultCollapsed","theme","style","collapsible","reverseArrow","width","collapsedWidth","zeroWidthTriggerStyle","breakpoint","onCollapse","onBreakpoint"]),R=(0,l.useContext)(h.LayoutContext).siderHook,I=(0,l.useState)("collapsed"in A?A.collapsed:O),W=(0,c.default)(I,2),U=W[0],K=W[1],B=(0,l.useState)(!1),q=(0,c.default)(B,2),$=q[0],G=q[1];(0,l.useEffect)((function(){"collapsed"in A&&K(A.collapsed)}),[A.collapsed]);var J=function(e,t){"collapsed"in A||K(e),null==N||N(e,t)},Q=(0,l.useRef)();Q.current=function(e){G(e.matches),null==F||F(e.matches),U!==e.matches&&J(e.matches,"responsive")},(0,l.useEffect)((function(){function e(e){return Q.current(e)}var t;if("undefined"!=typeof window){var n=window.matchMedia;if(n&&V&&V in b){t=n("(max-width: ".concat(b[V],")"));try{t.addEventListener("change",e)}catch(n){t.addListener(e)}e(t)}}return function(){try{null==t||t.removeEventListener("change",e)}catch(n){null==t||t.removeListener(e)}}}),[]),(0,l.useEffect)((function(){var e=w("ant-sider-");return R.addSider(e),function(){return R.removeSider(e)}}),[]);var X,Z,ee,te,ne,re,oe,ae,ie,ce,le=function(){J(!U,"clickTrigger")},ue=(0,l.useContext)(m.ConfigContext).getPrefixCls;return l.createElement(g.Provider,{value:{siderCollapsed:U,collapsedWidth:D}},(Z=ue("layout-sider",n),ee=(0,s.default)(A,["collapsed"]),te=U?D:P,ne=(0,v.default)(te)?"".concat(te,"px"):String(te),re=0===parseFloat(String(D||0))?l.createElement("span",{onClick:le,className:(0,u.default)("".concat(Z,"-zero-width-trigger"),"".concat(Z,"-zero-width-trigger-").concat(E?"right":"left")),style:Y},o||l.createElement(f.default,null)):null,oe={expanded:E?l.createElement(d.default,null):l.createElement(p.default,null),collapsed:E?l.createElement(p.default,null):l.createElement(d.default,null)}[U?"collapsed":"expanded"],ae=null!==o?re||l.createElement("div",{className:"".concat(Z,"-trigger"),onClick:le,style:{width:ne}},o||oe):null,ie=(0,i.default)((0,i.default)({},z),{flex:"0 0 ".concat(ne),maxWidth:ne,minWidth:ne,width:ne}),ce=(0,u.default)(Z,"".concat(Z,"-").concat(L),(X={},(0,a.default)(X,"".concat(Z,"-collapsed"),!!U),(0,a.default)(X,"".concat(Z,"-has-trigger"),C&&null!==o&&!re),(0,a.default)(X,"".concat(Z,"-below"),!!$),(0,a.default)(X,"".concat(Z,"-zero-width"),0===parseFloat(ne)),X),r),l.createElement("aside",(0,i.default)({className:ce},ee,{style:ie,ref:t}),l.createElement("div",{className:"".concat(Z,"-children")},y),C||$&&re?ae:null)))}));O.displayName="Sider";var k=O;t.default=k},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Group",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"Button",{enumerable:!0,get:function(){return i.default}}),t.default=void 0;var o=r(n(164)),a=r(n(643)),i=r(n(644)),c=o.default;c.Button=i.default,c.Group=a.default;var l=c;t.default=l},function(e,t){e.exports=function(e,t){return e===t||e!=e&&t!=t}},function(e,t,n){var r=n(95),o=n(110);e.exports=function(e){if(!o(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},function(e,t){var n=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return n.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},function(e,t,n){var r=n(672),o=n(679),a=n(681),i=n(682),c=n(683);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=o,l.prototype.get=a,l.prototype.has=i,l.prototype.set=c,e.exports=l},function(e,t,n){var r=n(684),o=n(687),a=n(688);e.exports=function(e,t,n,i,c,l){var u=1&n,s=e.length,f=t.length;if(s!=f&&!(u&&f>s))return!1;var d=l.get(e),p=l.get(t);if(d&&p)return d==t&&p==e;var h=-1,m=!0,v=2&n?new r:void 0;for(l.set(e,t),l.set(t,e);++h<s;){var y=e[h],_=t[h];if(i)var b=u?i(_,y,h,t,e,l):i(y,_,h,e,t,l);if(void 0!==b){if(b)continue;m=!1;break}if(v){if(!o(t,(function(e,t){if(!a(v,t)&&(y===e||c(y,e,n,i,l)))return v.push(t)}))){m=!1;break}}else if(y!==_&&!c(y,_,n,i,l)){m=!1;break}}return l.delete(e),l.delete(t),m}},function(e,t,n){(function(e){var r=n(53),o=n(705),a=t&&!t.nodeType&&t,i=a&&"object"==typeof e&&e&&!e.nodeType&&e,c=i&&i.exports===a?r.Buffer:void 0,l=(c?c.isBuffer:void 0)||o;e.exports=l}).call(this,n(143)(e))},function(e,t,n){var r=n(707),o=n(708),a=n(709),i=a&&a.isTypedArray,c=i?o(i):r;e.exports=c},function(e,t){e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasPrefixSuffix=g,t.default=void 0;var r=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==f(e)&&"function"!=typeof e)return{default:e};var t=s();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}n.default=e,t&&t.set(e,n);return n}(n(0)),o=n(80),a=u(n(2)),i=u(n(34)),c=n(79),l=n(98);function u(e){return e&&e.__esModule?e:{default:e}}function s(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return s=function(){return e},e}function f(e){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function h(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function m(e,t){return(m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function v(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=_(e);if(t){var o=_(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return y(this,n)}}function y(e,t){return!t||"object"!==f(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _(e){return(_=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var b=(0,c.tuple)("text","input");function g(e){return!!(e.prefix||e.suffix||e.allowClear)}var M=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&m(e,t)}(u,e);var t,n,o,c=v(u);function u(){return p(this,u),c.apply(this,arguments)}return t=u,(n=[{key:"renderClearIcon",value:function(e){var t=this.props,n=t.allowClear,o=t.value,a=t.disabled,c=t.readOnly,l=t.inputType,u=t.handleReset;if(!n||a||c||null==o||""===o)return null;var s=l===b[0]?"".concat(e,"-textarea-clear-icon"):"".concat(e,"-clear-icon");return r.createElement(i.default,{type:"close-circle",theme:"filled",onClick:u,className:s,role:"button"})}},{key:"renderSuffix",value:function(e){var t=this.props,n=t.suffix,o=t.allowClear;return n||o?r.createElement("span",{className:"".concat(e,"-suffix")},this.renderClearIcon(e),n):null}},{key:"renderLabeledIcon",value:function(e,t){var n,o=this.props,i=this.renderSuffix(e);if(!g(o))return r.cloneElement(t,{value:o.value});var c=o.prefix?r.createElement("span",{className:"".concat(e,"-prefix")},o.prefix):null,u=(0,a.default)(o.className,"".concat(e,"-affix-wrapper"),(d(n={},"".concat(e,"-affix-wrapper-sm"),"small"===o.size),d(n,"".concat(e,"-affix-wrapper-lg"),"large"===o.size),d(n,"".concat(e,"-affix-wrapper-input-with-clear-btn"),o.suffix&&o.allowClear&&this.props.value),n));return r.createElement("span",{className:u,style:o.style},c,r.cloneElement(t,{style:null,value:o.value,className:(0,l.getInputClassName)(e,o.size,o.disabled)}),i)}},{key:"renderInputWithLabel",value:function(e,t){var n,o=this.props,i=o.addonBefore,c=o.addonAfter,l=o.style,u=o.size,s=o.className;if(!i&&!c)return t;var f="".concat(e,"-group"),p="".concat(f,"-addon"),h=i?r.createElement("span",{className:p},i):null,m=c?r.createElement("span",{className:p},c):null,v=(0,a.default)("".concat(e,"-wrapper"),d({},f,i||c)),y=(0,a.default)(s,"".concat(e,"-group-wrapper"),(d(n={},"".concat(e,"-group-wrapper-sm"),"small"===u),d(n,"".concat(e,"-group-wrapper-lg"),"large"===u),n));return r.createElement("span",{className:y,style:l},r.createElement("span",{className:v},h,r.cloneElement(t,{style:null}),m))}},{key:"renderTextAreaWithClearIcon",value:function(e,t){var n=this.props,o=n.value,i=n.allowClear,c=n.className,l=n.style;if(!i)return r.cloneElement(t,{value:o});var u=(0,a.default)(c,"".concat(e,"-affix-wrapper"),"".concat(e,"-affix-wrapper-textarea-with-clear-btn"));return r.createElement("span",{className:u,style:l},r.cloneElement(t,{style:null,value:o}),this.renderClearIcon(e))}},{key:"renderClearableLabeledInput",value:function(){var e=this.props,t=e.prefixCls,n=e.inputType,r=e.element;return n===b[0]?this.renderTextAreaWithClearIcon(t,r):this.renderInputWithLabel(t,this.renderLabeledIcon(t,r))}},{key:"render",value:function(){return this.renderClearableLabeledInput()}}])&&h(t.prototype,n),o&&h(t,o),u}(r.Component);(0,o.polyfill)(M);var w=M;t.default=w},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=c;var r,o=(r=n(391))&&r.__esModule?r:{default:r};var a=0,i={};function c(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=a++,r=t;function c(){(r-=1)<=0?(e(),delete i[n]):i[n]=(0,o.default)(c)}return i[n]=(0,o.default)(c),n}c.cancel=function(e){void 0!==e&&(o.default.cancel(i[e]),delete i[e])},c.ids=i},function(e,t,n){(function(t){for(var r=n(742),o="undefined"==typeof window?t:window,a=["moz","webkit"],i="AnimationFrame",c=o["request"+i],l=o["cancel"+i]||o["cancelRequest"+i],u=0;!c&&u<a.length;u++)c=o[a[u]+"Request"+i],l=o[a[u]+"Cancel"+i]||o[a[u]+"CancelRequest"+i];if(!c||!l){var s=0,f=0,d=[];c=function(e){if(0===d.length){var t=r(),n=Math.max(0,1e3/60-(t-s));s=n+t,setTimeout((function(){var e=d.slice(0);d.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(s)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(n))}return d.push({handle:++f,callback:e,cancelled:!1}),f},l=function(e){for(var t=0;t<d.length;t++)d[t].handle===e&&(d[t].cancelled=!0)}}e.exports=function(e){return c.call(o,e)},e.exports.cancel=function(){l.apply(o,arguments)},e.exports.polyfill=function(e){e||(e=o),e.requestAnimationFrame=c,e.cancelAnimationFrame=l}}).call(this,n(74))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Row",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(t,"Col",{enumerable:!0,get:function(){return o.default}});var r=a(n(393)),o=a(n(396));function a(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=d(n(0)),o=s(n(2)),a=d(n(3)),i=n(32),c=s(n(394)),l=n(79),u=d(n(764));function s(e){return e&&e.__esModule?e:{default:e}}function f(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return f=function(){return e},e}function d(e){if(e&&e.__esModule)return e;if(null===e||"object"!==p(e)&&"function"!=typeof e)return{default:e};var t=f();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function p(e){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function h(){return(h=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function v(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function y(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function _(e,t){return(_=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function b(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=M(e);if(t){var o=M(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return g(this,n)}}function g(e,t){return!t||"object"!==p(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function M(e){return(M=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var w=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},O=(0,l.tuple)("top","middle","bottom","stretch"),k=(0,l.tuple)("start","end","center","space-around","space-between"),L=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_(e,t)}(s,e);var t,n,a,l=b(s);function s(){var e;return v(this,s),(e=l.apply(this,arguments)).state={screens:{}},e.renderRow=function(t){var n,a=t.getPrefixCls,i=e.props,l=i.prefixCls,u=i.type,s=i.justify,f=i.align,d=i.className,p=i.style,v=i.children,y=w(i,["prefixCls","type","justify","align","className","style","children"]),_=a("row",l),b=e.getGutter(),g=(0,o.default)((m(n={},_,!u),m(n,"".concat(_,"-").concat(u),u),m(n,"".concat(_,"-").concat(u,"-").concat(s),u&&s),m(n,"".concat(_,"-").concat(u,"-").concat(f),u&&f),n),d),M=h(h(h({},b[0]>0?{marginLeft:b[0]/-2,marginRight:b[0]/-2}:{}),b[1]>0?{marginTop:b[1]/-2,marginBottom:b[1]/-2}:{}),p),O=h({},y);return delete O.gutter,r.createElement(c.default.Provider,{value:{gutter:b}},r.createElement("div",h({},O,{className:g,style:M}),v))},e}return t=s,(n=[{key:"componentDidMount",value:function(){var e=this;this.token=u.default.subscribe((function(t){var n=e.props.gutter;("object"===p(n)||Array.isArray(n)&&("object"===p(n[0])||"object"===p(n[1])))&&e.setState({screens:t})}))}},{key:"componentWillUnmount",value:function(){u.default.unsubscribe(this.token)}},{key:"getGutter",value:function(){var e=[0,0],t=this.props.gutter,n=this.state.screens;return(Array.isArray(t)?t:[t,0]).forEach((function(t,r){if("object"===p(t))for(var o=0;o<u.responsiveArray.length;o++){var a=u.responsiveArray[o];if(n[a]&&void 0!==t[a]){e[r]=t[a];break}}else e[r]=t||0})),e}},{key:"render",value:function(){return r.createElement(i.ConfigConsumer,null,this.renderRow)}}])&&y(t.prototype,n),a&&y(t,a),s}(r.Component);t.default=L,L.defaultProps={gutter:0},L.propTypes={type:a.oneOf(["flex"]),align:a.oneOf(O),justify:a.oneOf(k),className:a.string,children:a.node,gutter:a.oneOfType([a.object,a.number,a.array]),prefixCls:a.string}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(0,((r=n(145))&&r.__esModule?r:{default:r}).default)({});t.default=o},function(e,t){e.exports={isFunction:function(e){return"function"==typeof e},isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},each:function(e,t){for(var n=0,r=e.length;n<r&&!1!==t(e[n],n);n++);}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=s(n(0)),o=s(n(3)),a=l(n(2)),i=l(n(394)),c=n(32);function l(e){return e&&e.__esModule?e:{default:e}}function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function s(e){if(e&&e.__esModule)return e;if(null===e||"object"!==p(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(){return(d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function p(e){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function m(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function v(e,t){return(v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=g(e);if(t){var o=g(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return _(this,n)}}function _(e,t){return!t||"object"!==p(t)&&"function"!=typeof t?b(e):t}function b(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function g(e){return(g=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var M=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},w=o.oneOfType([o.object,o.number]),O=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&v(e,t)}(u,e);var t,n,o,l=y(u);function u(){var e;return h(this,u),(e=l.apply(this,arguments)).renderCol=function(t){var n,o=t.getPrefixCls,c=b(e).props,l=c.prefixCls,u=c.span,s=c.order,h=c.offset,m=c.push,v=c.pull,y=c.className,_=c.children,g=M(c,["prefixCls","span","order","offset","push","pull","className","children"]),w=o("col",l),O={};["xs","sm","md","lg","xl","xxl"].forEach((function(e){var t,n={},r=c[e];"number"==typeof r?n.span=r:"object"===p(r)&&(n=r||{}),delete g[e],O=d(d({},O),(f(t={},"".concat(w,"-").concat(e,"-").concat(n.span),void 0!==n.span),f(t,"".concat(w,"-").concat(e,"-order-").concat(n.order),n.order||0===n.order),f(t,"".concat(w,"-").concat(e,"-offset-").concat(n.offset),n.offset||0===n.offset),f(t,"".concat(w,"-").concat(e,"-push-").concat(n.push),n.push||0===n.push),f(t,"".concat(w,"-").concat(e,"-pull-").concat(n.pull),n.pull||0===n.pull),t))}));var k=(0,a.default)(w,(f(n={},"".concat(w,"-").concat(u),void 0!==u),f(n,"".concat(w,"-order-").concat(s),s),f(n,"".concat(w,"-offset-").concat(h),h),f(n,"".concat(w,"-push-").concat(m),m),f(n,"".concat(w,"-pull-").concat(v),v),n),y,O);return r.createElement(i.default.Consumer,null,(function(e){var t=e.gutter,n=g.style;return t&&(n=d(d(d({},t[0]>0?{paddingLeft:t[0]/2,paddingRight:t[0]/2}:{}),t[1]>0?{paddingTop:t[1]/2,paddingBottom:t[1]/2}:{}),n)),r.createElement("div",d({},g,{style:n,className:k}),_)}))},e}return t=u,(n=[{key:"render",value:function(){return r.createElement(c.ConfigConsumer,null,this.renderCol)}}])&&m(t.prototype,n),o&&m(t,o),u}(r.Component);t.default=O,O.propTypes={span:o.number,order:o.number,offset:o.number,push:o.number,pull:o.number,className:o.string,children:o.node,xs:w,sm:w,md:w,lg:w,xl:w,xxl:w}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.destroyFns=void 0;var r=m(n(0)),o=p(n(876)),a=m(n(3)),i=p(n(2)),c=p(n(769)),l=n(144),u=p(n(34)),s=p(n(54)),f=p(n(107)),d=n(32);function p(e){return e&&e.__esModule?e:{default:e}}function h(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return h=function(){return e},e}function m(e){if(e&&e.__esModule)return e;if(null===e||"object"!==v(e)&&"function"!=typeof e)return{default:e};var t=h();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function v(e){return(v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _(){return(_=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function b(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function g(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function M(e,t){return(M=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function w(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=k(e);if(t){var o=k(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return O(this,n)}}function O(e,t){return!t||"object"!==v(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function k(e){return(k=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var L,x=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n};t.destroyFns=[];"undefined"!=typeof window&&window.document&&window.document.documentElement&&(0,c.default)(document.documentElement,"click",(function(e){L={x:e.pageX,y:e.pageY},setTimeout((function(){return L=null}),100)}));var z=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&M(e,t)}(p,e);var t,n,a,c=w(p);function p(){var e;return b(this,p),(e=c.apply(this,arguments)).handleCancel=function(t){var n=e.props.onCancel;n&&n(t)},e.handleOk=function(t){var n=e.props.onOk;n&&n(t)},e.renderFooter=function(t){var n=e.props,o=n.okText,a=n.okType,i=n.cancelText,c=n.confirmLoading;return r.createElement("div",null,r.createElement(s.default,_({onClick:e.handleCancel},e.props.cancelButtonProps),i||t.cancelText),r.createElement(s.default,_({type:a,loading:c,onClick:e.handleOk},e.props.okButtonProps),o||t.okText))},e.renderModal=function(t){var n=t.getPopupContainer,a=t.getPrefixCls,c=e.props,s=c.prefixCls,d=c.footer,p=c.visible,h=c.wrapClassName,m=c.centered,v=c.getContainer,b=c.closeIcon,g=x(c,["prefixCls","footer","visible","wrapClassName","centered","getContainer","closeIcon"]),M=a("modal",s),w=r.createElement(f.default,{componentName:"Modal",defaultLocale:(0,l.getConfirmLocale)()},e.renderFooter),O=r.createElement("span",{className:"".concat(M,"-close-x")},b||r.createElement(u.default,{className:"".concat(M,"-close-icon"),type:"close"}));return r.createElement(o.default,_({},g,{getContainer:void 0===v?n:v,prefixCls:M,wrapClassName:(0,i.default)(y({},"".concat(M,"-centered"),!!m),h),footer:void 0===d?w:d,visible:p,mousePosition:L,onClose:e.handleCancel,closeIcon:O}))},e}return t=p,(n=[{key:"render",value:function(){return r.createElement(d.ConfigConsumer,null,this.renderModal)}}])&&g(t.prototype,n),a&&g(t,a),p}(r.Component);t.default=z,z.defaultProps={width:520,transitionName:"zoom",maskTransitionName:"fade",confirmLoading:!1,visible:!1,okType:"primary"},z.propTypes={prefixCls:a.string,onOk:a.func,onCancel:a.func,okText:a.node,cancelText:a.node,centered:a.bool,width:a.oneOfType([a.number,a.string]),confirmLoading:a.bool,visible:a.bool,footer:a.node,title:a.node,closable:a.bool,closeIcon:a.node}},function(e,t){var n=/^(?:0|[1-9]\d*)$/;e.exports=function(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&n.test(e))&&e>-1&&e%1==0&&e<t}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=v(n(182)),o=v(n(40)),a=v(n(17)),i=v(n(822)),c=v(n(0)),l=v(n(832)),u=v(n(836)),s=v(n(837)),f=(v(n(146)),v(n(859))),d=v(n(401)),p=v(n(178)),h=v(n(865)),m=n(180);function v(e){return e&&e.__esModule?e:{default:e}}t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=e.validateMessages,v=e.onFieldsChange,y=e.onValuesChange,_=e.mapProps,b=void 0===_?m.identity:_,g=e.mapPropsToFields,M=e.fieldNameProp,w=e.fieldMetaProp,O=e.fieldDataProp,k=e.formPropName,L=void 0===k?"form":k,x=e.name,z=e.withRef;return function(e){var _=(0,l.default)({displayName:"Form",mixins:t,getInitialState:function(){var e=this,t=g&&g(this.props);return this.fieldsStore=(0,h.default)(t||{}),this.instances={},this.cachedBind={},this.clearedFieldMetaCache={},this.renderFields={},this.domFields={},["getFieldsValue","getFieldValue","setFieldsInitialValue","getFieldsError","getFieldError","isFieldValidating","isFieldsValidating","isFieldsTouched","isFieldTouched"].forEach((function(t){e[t]=function(){var n;return(n=e.fieldsStore)[t].apply(n,arguments)}})),{submitting:!1}},componentDidMount:function(){this.cleanUpUselessFields()},componentWillReceiveProps:function(e){g&&this.fieldsStore.updateFields(g(e))},componentDidUpdate:function(){this.cleanUpUselessFields()},onCollectCommon:function(e,t,n){var r=this.fieldsStore.getFieldMeta(e);if(r[t])r[t].apply(r,(0,i.default)(n));else if(r.originalProps&&r.originalProps[t]){var c;(c=r.originalProps)[t].apply(c,(0,i.default)(n))}var l=r.getValueFromEvent?r.getValueFromEvent.apply(r,(0,i.default)(n)):m.getValueFromEvent.apply(void 0,(0,i.default)(n));if(y&&l!==this.fieldsStore.getFieldValue(e)){var u=this.fieldsStore.getAllValues(),s={};u[e]=l,Object.keys(u).forEach((function(e){return(0,d.default)(s,e,u[e])})),y((0,a.default)((0,o.default)({},L,this.getForm()),this.props),(0,d.default)({},e,l),s)}var f=this.fieldsStore.getField(e);return{name:e,field:(0,a.default)({},f,{value:l,touched:!0}),fieldMeta:r}},onCollect:function(e,t){for(var n=arguments.length,r=Array(n>2?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];var c=this.onCollectCommon(e,t,r),l=c.name,u=c.field,s=c.fieldMeta,f=s.validate;this.fieldsStore.setFieldsAsDirty();var d=(0,a.default)({},u,{dirty:(0,m.hasRules)(f)});this.setFields((0,o.default)({},l,d))},onCollectValidate:function(e,t){for(var n=arguments.length,r=Array(n>2?n-2:0),o=2;o<n;o++)r[o-2]=arguments[o];var i=this.onCollectCommon(e,t,r),c=i.field,l=i.fieldMeta,u=(0,a.default)({},c,{dirty:!0});this.fieldsStore.setFieldsAsDirty(),this.validateFieldsInternal([u],{action:t,options:{firstFields:!!l.validateFirst}})},getCacheBind:function(e,t,n){this.cachedBind[e]||(this.cachedBind[e]={});var r=this.cachedBind[e];return r[t]&&r[t].oriFn===n||(r[t]={fn:n.bind(this,e,t),oriFn:n}),r[t].fn},getFieldDecorator:function(e,t){var n=this,r=this.getFieldProps(e,t);return function(t){n.renderFields[e]=!0;var o=n.fieldsStore.getFieldMeta(e),i=t.props;return o.originalProps=i,o.ref=t.ref,c.default.cloneElement(t,(0,a.default)({},r,n.fieldsStore.getFieldValuePropValue(o)))}},getFieldProps:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)throw new Error("Must call `getFieldProps` with valid name string!");delete this.clearedFieldMetaCache[e];var r=(0,a.default)({name:e,trigger:"onChange",valuePropName:"value",validate:[]},n),o=r.rules,i=r.trigger,c=r.validateTrigger,l=void 0===c?i:c,u=r.validate,s=this.fieldsStore.getFieldMeta(e);"initialValue"in r&&(s.initialValue=r.initialValue);var f=(0,a.default)({},this.fieldsStore.getFieldValuePropValue(r),{ref:this.getCacheBind(e,e+"__ref",this.saveRef)});M&&(f[M]=x?x+"_"+e:e);var d=(0,m.normalizeValidateRules)(u,o,l),p=(0,m.getValidateTriggers)(d);p.forEach((function(n){f[n]||(f[n]=t.getCacheBind(e,n,t.onCollectValidate))})),i&&-1===p.indexOf(i)&&(f[i]=this.getCacheBind(e,i,this.onCollect));var h=(0,a.default)({},s,r,{validate:d});return this.fieldsStore.setFieldMeta(e,h),w&&(f[w]=h),O&&(f[O]=this.fieldsStore.getField(e)),this.renderFields[e]=!0,f},getFieldInstance:function(e){return this.instances[e]},getRules:function(e,t){var n=e.validate.filter((function(e){return!t||e.trigger.indexOf(t)>=0})).map((function(e){return e.rules}));return(0,m.flattenArray)(n)},setFields:function(e,t){var n=this,r=this.fieldsStore.flattenRegisteredFields(e);if(this.fieldsStore.setFields(r),v){var i=Object.keys(r).reduce((function(e,t){return(0,d.default)(e,t,n.fieldsStore.getField(t))}),{});v((0,a.default)((0,o.default)({},L,this.getForm()),this.props),i,this.fieldsStore.getNestedAllFields())}this.forceUpdate(t)},setFieldsValue:function(e,t){var n=this.fieldsStore.fieldsMeta,r=this.fieldsStore.flattenRegisteredFields(e),i=Object.keys(r).reduce((function(e,t){if(n[t]){var o=r[t];e[t]={value:o}}return e}),{});if(this.setFields(i,t),y){var c=this.fieldsStore.getAllValues();y((0,a.default)((0,o.default)({},L,this.getForm()),this.props),e,c)}},saveRef:function(e,t,n){if(!n){var r=this.fieldsStore.getFieldMeta(e);return r.preserve||(this.clearedFieldMetaCache[e]={field:this.fieldsStore.getField(e),meta:r},this.clearField(e)),void delete this.domFields[e]}this.domFields[e]=!0,this.recoverClearedField(e);var o=this.fieldsStore.getFieldMeta(e);if(o){var a=o.ref;if(a){if("string"==typeof a)throw new Error("can not set ref string for "+e);"function"==typeof a?a(n):Object.prototype.hasOwnProperty.call(a,"current")&&(a.current=n)}}this.instances[e]=n},cleanUpUselessFields:function(){var e=this,t=this.fieldsStore.getAllFieldsName().filter((function(t){var n=e.fieldsStore.getFieldMeta(t);return!e.renderFields[t]&&!e.domFields[t]&&!n.preserve}));t.length&&t.forEach(this.clearField),this.renderFields={}},clearField:function(e){this.fieldsStore.clearField(e),delete this.instances[e],delete this.cachedBind[e]},resetFields:function(e){var t=this,n=this.fieldsStore.resetFields(e);(Object.keys(n).length>0&&this.setFields(n),e)?(Array.isArray(e)?e:[e]).forEach((function(e){return delete t.clearedFieldMetaCache[e]})):this.clearedFieldMetaCache={}},recoverClearedField:function(e){this.clearedFieldMetaCache[e]&&(this.fieldsStore.setFields((0,o.default)({},e,this.clearedFieldMetaCache[e].field)),this.fieldsStore.setFieldMeta(e,this.clearedFieldMetaCache[e].meta),delete this.clearedFieldMetaCache[e])},validateFieldsInternal:function(e,t,r){var o=this,i=t.fieldNames,c=t.action,l=t.options,u=void 0===l?{}:l,h={},v={},y={},_={};if(e.forEach((function(e){var t=e.name;if(!0===u.force||!1!==e.dirty){var n=o.fieldsStore.getFieldMeta(t),r=(0,a.default)({},e);r.errors=void 0,r.validating=!0,r.dirty=!0,h[t]=o.getRules(n,c),v[t]=r.value,y[t]=r}else e.errors&&(0,d.default)(_,t,{errors:e.errors})})),this.setFields(y),Object.keys(v).forEach((function(e){v[e]=o.fieldsStore.getFieldValue(e)})),r&&(0,m.isEmptyObject)(y))r((0,m.isEmptyObject)(_)?null:_,this.fieldsStore.getFieldsValue(i));else{var b=new s.default(h);n&&b.messages(n),b.validate(v,u,(function(e){var t=(0,a.default)({},_);e&&e.length&&e.forEach((function(e){var n=e.field,r=n;Object.keys(h).some((function(e){var t=h[e]||[];if(e===n)return r=e,!0;if(t.every((function(e){return"array"!==e.type}))||0!==n.indexOf(e+"."))return!1;var o=n.slice(e.length+1);return!!/^\d+$/.test(o)&&(r=e,!0)}));var o=(0,f.default)(t,r);("object"!=typeof o||Array.isArray(o))&&(0,d.default)(t,r,{errors:[]}),(0,f.default)(t,r.concat(".errors")).push(e)}));var n=[],c={};Object.keys(h).forEach((function(e){var r=(0,f.default)(t,e),a=o.fieldsStore.getField(e);(0,p.default)(a.value,v[e])?(a.errors=r&&r.errors,a.value=v[e],a.validating=!1,a.dirty=!1,c[e]=a):n.push({name:e})})),o.setFields(c),r&&(n.length&&n.forEach((function(e){var n=e.name,r=[{message:n+" need to revalidate",field:n}];(0,d.default)(t,n,{expired:!0,errors:r})})),r((0,m.isEmptyObject)(t)?null:t,o.fieldsStore.getFieldsValue(i)))}))}},validateFields:function(e,t,n){var r=this,o=new Promise((function(o,a){var i=(0,m.getParams)(e,t,n),c=i.names,l=i.options,u=(0,m.getParams)(e,t,n).callback;if(!u||"function"==typeof u){var s=u;u=function(e,t){s&&s(e,t),e?a({errors:e,values:t}):o(t)}}var f=c?r.fieldsStore.getValidFieldsFullName(c):r.fieldsStore.getValidFieldsName(),d=f.filter((function(e){var t=r.fieldsStore.getFieldMeta(e);return(0,m.hasRules)(t.validate)})).map((function(e){var t=r.fieldsStore.getField(e);return t.value=r.fieldsStore.getFieldValue(e),t}));d.length?("firstFields"in l||(l.firstFields=f.filter((function(e){return!!r.fieldsStore.getFieldMeta(e).validateFirst}))),r.validateFieldsInternal(d,{fieldNames:f,options:l},u)):u(null,r.fieldsStore.getFieldsValue(f))}));return o.catch((function(e){return console.error,e})),o},isSubmitting:function(){return this.state.submitting},submit:function(e){var t=this;this.setState({submitting:!0}),e((function(){t.setState({submitting:!1})}))},render:function(){var t=this.props,n=t.wrappedComponentRef,i=(0,r.default)(t,["wrappedComponentRef"]),l=(0,o.default)({},L,this.getForm());z?l.ref="wrappedComponent":n&&(l.ref=n);var u=b.call(this,(0,a.default)({},l,i));return c.default.createElement(e,u)}});return(0,m.argumentContainer)((0,u.default)(_),e)}},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(31));t.default=function(e,t,n,o,a,i){!e.required||n.hasOwnProperty(e.field)&&!r.isEmptyValue(t,i||e.type)||o.push(r.format(a.messages.required,e.fullField))}},function(e,t,n){var r=n(861);e.exports=function(e,t,n){return null==e?e:r(e,t,n)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(17)),o=a(n(33));function a(e){return e&&e.__esModule?e:{default:e}}t.isFormField=c,t.default=function(e){if(c(e))return e;return new i(e)};var i=function e(t){(0,o.default)(this,e),(0,r.default)(this,t)};function c(e){return e instanceof i}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FIELD_DATA_PROP=t.FIELD_META_PROP=void 0;t.FIELD_META_PROP="data-__meta";t.FIELD_DATA_PROP="data-__field"},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(0,((r=n(145))&&r.__esModule?r:{default:r}).default)({labelAlign:"right",vertical:!1});t.default=o},function(e,t,n){"use strict";n.r(t),n.d(t,"Summary",(function(){return te})),n.d(t,"Column",(function(){return g})),n.d(t,"ColumnGroup",(function(){return b})),n.d(t,"INTERNAL_COL_DEFINE",(function(){return D}));var r,o=n(6),a=n(7),i=n(1),c=n(14),l=n(28),u=n(9),s=n(0),f=n(125),d=n(2),p=n.n(d),h=n(35),m=n.n(h),v=n(27),y=n(41);function _(e){if("undefined"==typeof document)return 0;if(e||void 0===r){var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var n=document.createElement("div"),o=n.style;o.position="absolute",o.top=0,o.left=0,o.pointerEvents="none",o.visibility="hidden",o.width="200px",o.height="150px",o.overflow="hidden",n.appendChild(t),document.body.appendChild(n);var a=t.offsetWidth;n.style.overflow="scroll";var i=t.offsetWidth;a===i&&(i=n.clientWidth),document.body.removeChild(n),r=a-i}return r}var b=function(e){return null};var g=function(e){return null},M=n(15),w=n(42);function O(e){return null==e?[]:Array.isArray(e)?e:[e]}function k(e,t){if(!t&&"number"!=typeof t)return e;for(var n=O(t),r=e,o=0;o<n.length;o+=1){if(!r)return null;r=r[n[o]]}return r}function L(e){var t=[],n={};return e.forEach((function(e){for(var r=e||{},o=r.key,a=r.dataIndex,i=o||O(a).join("-")||"RC_TABLE_KEY";n[i];)i="".concat(i,"_next");n[i]=!0,t.push(i)})),t}function x(e){return null!=e}function z(e,t){var n,r,a,c,u=e.prefixCls,f=e.className,d=e.record,h=e.index,m=e.dataIndex,v=e.render,y=e.children,_=e.component,b=void 0===_?"td":_,g=e.colSpan,O=e.rowSpan,L=e.fixLeft,x=e.fixRight,z=e.firstFixLeft,S=e.lastFixLeft,C=e.firstFixRight,j=e.lastFixRight,E=e.appendNode,T=e.additionalProps,P=void 0===T?{}:T,H=e.ellipsis,D=e.align,Y=e.rowType,V=e.isSticky,N="".concat(u,"-cell");if(y)a=y;else{var F=k(d,m);if(a=F,v){var A=v(F,d,h);!(c=A)||"object"!==Object(l.a)(c)||Array.isArray(c)||s.isValidElement(c)?a=A:(a=A.children,r=A.props)}}"object"!==Object(l.a)(a)||Array.isArray(a)||s.isValidElement(a)||(a=null),H&&(S||C)&&(a=s.createElement("span",{className:"".concat(N,"-content")},a));var R=r||{},I=R.colSpan,W=R.rowSpan,U=R.style,K=R.className,B=Object(M.a)(R,["colSpan","rowSpan","style","className"]),q=void 0!==I?I:g,$=void 0!==W?W:O;if(0===q||0===$)return null;var G={},J="number"==typeof L,Q="number"==typeof x;J&&(G.position="sticky",G.left=L),Q&&(G.position="sticky",G.right=x);var X,Z={};D&&(Z.textAlign=D);var ee=!0===H?{showTitle:!0}:H;ee&&(ee.showTitle||"header"===Y)&&("string"==typeof a||"number"==typeof a?X=a.toString():s.isValidElement(a)&&"string"==typeof a.props.children&&(X=a.props.children));var te,ne=Object(i.a)(Object(i.a)(Object(i.a)({title:X},B),P),{},{colSpan:q&&1!==q?q:null,rowSpan:$&&1!==$?$:null,className:p()(N,f,(n={},Object(o.a)(n,"".concat(N,"-fix-left"),J),Object(o.a)(n,"".concat(N,"-fix-left-first"),z),Object(o.a)(n,"".concat(N,"-fix-left-last"),S),Object(o.a)(n,"".concat(N,"-fix-right"),Q),Object(o.a)(n,"".concat(N,"-fix-right-first"),C),Object(o.a)(n,"".concat(N,"-fix-right-last"),j),Object(o.a)(n,"".concat(N,"-ellipsis"),H),Object(o.a)(n,"".concat(N,"-with-append"),E),Object(o.a)(n,"".concat(N,"-fix-sticky"),(J||Q)&&V),n),P.className,K),style:Object(i.a)(Object(i.a)(Object(i.a)(Object(i.a)({},P.style),Z),G),U),ref:(te=b,"string"==typeof te||Object(w.c)(te)?t:null)});return s.createElement(b,ne,E,a)}var S=s.forwardRef(z);S.displayName="Cell";var C=s.memo(S,(function(e,t){return!!t.shouldCellUpdate&&!t.shouldCellUpdate(t.record,e.record)})),j=s.createContext(null);function E(e,t,n,r,o){var a,i,c=n[e]||{},l=n[t]||{};"left"===c.fixed?a=r.left[e]:"right"===l.fixed&&(i=r.right[t]);var u=!1,s=!1,f=!1,d=!1,p=n[t+1],h=n[e-1];if("rtl"===o){if(void 0!==a)d=!(h&&"left"===h.fixed);else if(void 0!==i){f=!(p&&"right"===p.fixed)}}else if(void 0!==a){u=!(p&&"left"===p.fixed)}else if(void 0!==i){s=!(h&&"right"===h.fixed)}return{fixLeft:a,fixRight:i,lastFixLeft:u,firstFixRight:s,lastFixRight:f,firstFixLeft:d,isSticky:r.isSticky}}function T(e){var t,n=e.cells,r=e.stickyOffsets,o=e.flattenColumns,i=e.rowComponent,c=e.cellComponent,l=e.onHeaderRow,u=e.index,f=s.useContext(j),d=f.prefixCls,p=f.direction;l&&(t=l(n.map((function(e){return e.column})),u));var h=L(n.map((function(e){return e.column})));return s.createElement(i,t,n.map((function(e,t){var n,i=e.column,l=E(e.colStart,e.colEnd,o,r,p);return i&&i.onHeaderCell&&(n=e.column.onHeaderCell(i)),s.createElement(C,Object(a.a)({},e,{ellipsis:i.ellipsis,align:i.align,component:c,prefixCls:d,key:h[t]},l,{additionalProps:n,rowType:"header"}))})))}T.displayName="HeaderRow";var P=T;var H=function(e){var t=e.stickyOffsets,n=e.columns,r=e.flattenColumns,o=e.onHeaderRow,a=s.useContext(j),i=a.prefixCls,c=a.getComponent,l=s.useMemo((function(){return function(e){var t=[];!function e(n,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;t[o]=t[o]||[];var a=r,i=n.filter(Boolean).map((function(n){var r={key:n.key,className:n.className||"",children:n.title,column:n,colStart:a},i=1,c=n.children;return c&&c.length>0&&(i=e(c,a,o+1).reduce((function(e,t){return e+t}),0),r.hasSubColumns=!0),"colSpan"in n&&(i=n.colSpan),"rowSpan"in n&&(r.rowSpan=n.rowSpan),r.colSpan=i,r.colEnd=r.colStart+i-1,t[o].push(r),a+=i,i}));return i}(e,0);for(var n=t.length,r=function(e){t[e].forEach((function(t){"rowSpan"in t||t.hasSubColumns||(t.rowSpan=n-e)}))},o=0;o<n;o+=1)r(o);return t}(n)}),[n]),u=c(["header","wrapper"],"thead"),f=c(["header","row"],"tr"),d=c(["header","cell"],"th");return s.createElement(u,{className:"".concat(i,"-thead")},l.map((function(e,n){return s.createElement(P,{key:n,flattenColumns:r,cells:e,stickyOffsets:t,rowComponent:f,cellComponent:d,onHeaderRow:o,index:n})})))},D="RC_TABLE_INTERNAL_COL_DEFINE";var Y=function(e){for(var t=e.colWidths,n=e.columns,r=[],o=!1,i=(e.columCount||n.length)-1;i>=0;i-=1){var c=t[i],l=n&&n[i],u=l&&l[D];(c||u||o)&&(r.unshift(s.createElement("col",Object(a.a)({key:i,style:{width:c,minWidth:c}},u))),o=!0)}return s.createElement("colgroup",null,r)};var V=s.forwardRef((function(e,t){var n=e.noData,r=e.columns,l=e.flattenColumns,u=e.colWidths,f=e.columCount,d=e.stickyOffsets,h=e.direction,m=e.fixHeader,v=e.offsetHeader,y=e.stickyClassName,_=e.onScroll,b=e.maxContentScroll,g=Object(M.a)(e,["noData","columns","flattenColumns","colWidths","columCount","stickyOffsets","direction","fixHeader","offsetHeader","stickyClassName","onScroll","maxContentScroll"]),O=s.useContext(j),k=O.prefixCls,L=O.scrollbarSize,x=O.isSticky,z=x&&!m?0:L,S=s.useRef(null),C=s.useCallback((function(e){Object(w.b)(t,e),Object(w.b)(S,e)}),[]);s.useEffect((function(){var e;function t(e){var t=e.currentTarget,n=e.deltaX;n&&(_({currentTarget:t,scrollLeft:t.scrollLeft+n}),e.preventDefault())}return null===(e=S.current)||void 0===e||e.addEventListener("wheel",t),function(){var e;null===(e=S.current)||void 0===e||e.removeEventListener("wheel",t)}}),[]);var E=s.useMemo((function(){return l.every((function(e){return e.width>=0}))}),[l]),T=l[l.length-1],P={fixed:T?T.fixed:null,onHeaderCell:function(){return{className:"".concat(k,"-cell-scrollbar")}}},D=Object(s.useMemo)((function(){return z?[].concat(Object(c.a)(r),[P]):r}),[z,r]),V=Object(s.useMemo)((function(){return z?[].concat(Object(c.a)(l),[P]):l}),[z,l]),N=Object(s.useMemo)((function(){var e=d.right,t=d.left;return Object(i.a)(Object(i.a)({},d),{},{left:"rtl"===h?[].concat(Object(c.a)(t.map((function(e){return e+z}))),[0]):t,right:"rtl"===h?e:[].concat(Object(c.a)(e.map((function(e){return e+z}))),[0]),isSticky:x})}),[z,d,x]),F=function(e,t){return Object(s.useMemo)((function(){for(var n=[],r=0;r<t;r+=1){var o=e[r];if(void 0===o)return null;n[r]=o}return n}),[e.join("_"),t])}(u,f);return s.createElement("div",{style:Object(i.a)({overflow:"hidden"},x?{top:v}:{}),ref:C,className:p()("".concat(k,"-header"),Object(o.a)({},y,!!y))},s.createElement("table",{style:{tableLayout:"fixed",visibility:n||F?null:"hidden"}},(!n||!b||E)&&s.createElement(Y,{colWidths:F?[].concat(Object(c.a)(F),[z]):[],columCount:f+1,columns:V}),s.createElement(H,Object(a.a)({},g,{stickyOffsets:N,columns:D,flattenColumns:V}))))}));V.displayName="FixedHeader";var N=V,F=s.createContext(null);var A=function(e){var t=e.prefixCls,n=e.children,r=e.component,o=e.cellComponent,a=e.fixHeader,i=e.fixColumn,c=e.horizonScroll,l=e.className,u=e.expanded,f=e.componentWidth,d=e.colSpan,p=s.useContext(j).scrollbarSize;return s.useMemo((function(){var e=n;return i&&(e=s.createElement("div",{style:{width:f-(a?p:0),position:"sticky",left:0,overflow:"hidden"},className:"".concat(t,"-expanded-row-fixed")},e)),s.createElement(r,{className:l,style:{display:u?null:"none"}},s.createElement(C,{component:o,prefixCls:t,colSpan:d},e))}),[n,r,a,c,l,u,f,d,p])};function R(e){var t=e.className,n=e.style,r=e.record,o=e.index,c=e.rowKey,l=e.getRowKey,f=e.rowExpandable,d=e.expandedKeys,h=e.onRow,m=e.indent,v=void 0===m?0:m,y=e.rowComponent,_=e.cellComponent,b=e.childrenColumnName,g=s.useContext(j),M=g.prefixCls,w=g.fixedInfoList,O=s.useContext(F),k=O.fixHeader,x=O.fixColumn,z=O.horizonScroll,S=O.componentWidth,E=O.flattenColumns,T=O.expandableType,P=O.expandRowByClick,H=O.onTriggerExpand,D=O.rowClassName,Y=O.expandedRowClassName,V=O.indentSize,N=O.expandIcon,I=O.expandedRowRender,W=O.expandIconColumnIndex,U=s.useState(!1),K=Object(u.a)(U,2),B=K[0],q=K[1],$=d&&d.has(e.recordKey);s.useEffect((function(){$&&q(!0)}),[$]);var G,J="row"===T&&(!f||f(r)),Q="nest"===T,X=b&&r&&r[b],Z=J||Q;h&&(G=h(r,o));var ee;"string"==typeof D?ee=D:"function"==typeof D&&(ee=D(r,o,v));var te,ne,re=L(E),oe=s.createElement(y,Object(a.a)({},G,{"data-row-key":c,className:p()(t,"".concat(M,"-row"),"".concat(M,"-row-level-").concat(v),ee,G&&G.className),style:Object(i.a)(Object(i.a)({},n),G?G.style:null),onClick:function(e){if(P&&Z&&H(r,e),G&&G.onClick){for(var t,n=arguments.length,o=new Array(n>1?n-1:0),a=1;a<n;a++)o[a-1]=arguments[a];(t=G).onClick.apply(t,[e].concat(o))}}}),E.map((function(e,t){var n,i,c=e.render,l=e.dataIndex,u=e.className,f=re[t],d=w[t];return t===(W||0)&&Q&&(n=s.createElement(s.Fragment,null,s.createElement("span",{style:{paddingLeft:"".concat(V*v,"px")},className:"".concat(M,"-row-indent indent-level-").concat(v)}),N({prefixCls:M,expanded:$,expandable:X,record:r,onExpand:H}))),e.onCell&&(i=e.onCell(r,o)),s.createElement(C,Object(a.a)({className:u,ellipsis:e.ellipsis,align:e.align,component:_,prefixCls:M,key:f,record:r,index:o,dataIndex:l,render:c,shouldCellUpdate:e.shouldCellUpdate},d,{appendNode:n,additionalProps:i}))})));if(J&&(B||$)){var ae=I(r,o,v+1,$),ie=Y&&Y(r,o,v);te=s.createElement(A,{expanded:$,className:p()("".concat(M,"-expanded-row"),"".concat(M,"-expanded-row-level-").concat(v+1),ie),prefixCls:M,fixHeader:k,fixColumn:x,horizonScroll:z,component:y,componentWidth:S,cellComponent:_,colSpan:E.length},ae)}return X&&$&&(ne=(r[b]||[]).map((function(t,n){var r=l(t,n);return s.createElement(R,Object(a.a)({},e,{key:r,rowKey:r,record:t,recordKey:r,index:n,indent:v+1}))}))),s.createElement(s.Fragment,null,oe,te,ne)}R.displayName="BodyRow";var I=R,W=s.createContext(null);function U(e){var t=e.columnKey,n=e.onColumnResize,r=s.useRef();return s.useEffect((function(){r.current&&n(t,r.current.offsetWidth)}),[]),s.createElement(y.default,{onResize:function(e){var r=e.offsetWidth;n(t,r)}},s.createElement("td",{ref:r,style:{padding:0,border:0,height:0}},s.createElement("div",{style:{height:0,overflow:"hidden"}}," ")))}function K(e){var t=e.data,n=e.getRowKey,r=e.measureColumnWidth,o=e.expandedKeys,a=e.onRow,i=e.rowExpandable,c=e.emptyNode,l=e.childrenColumnName,u=s.useContext(W).onColumnResize,f=s.useContext(j),d=f.prefixCls,p=f.getComponent,h=s.useContext(F),m=h.fixHeader,v=h.horizonScroll,y=h.flattenColumns,_=h.componentWidth;return s.useMemo((function(){var e,f=p(["body","wrapper"],"tbody"),h=p(["body","row"],"tr"),b=p(["body","cell"],"td");e=t.length?t.map((function(e,t){var r=n(e,t);return s.createElement(I,{key:r,rowKey:r,record:e,recordKey:r,index:t,rowComponent:h,cellComponent:b,expandedKeys:o,onRow:a,getRowKey:n,rowExpandable:i,childrenColumnName:l})})):s.createElement(A,{expanded:!0,className:"".concat(d,"-placeholder"),prefixCls:d,fixHeader:m,fixColumn:v,horizonScroll:v,component:h,componentWidth:_,cellComponent:b,colSpan:y.length},c);var g=L(y);return s.createElement(f,{className:"".concat(d,"-tbody")},r&&s.createElement("tr",{"aria-hidden":"true",className:"".concat(d,"-measure-row"),style:{height:0,fontSize:0}},g.map((function(e){return s.createElement(U,{key:e,columnKey:e,onColumnResize:u})}))),e)}),[t,d,a,r,o,n,p,_,c,y])}var B=s.memo(K);B.displayName="Body";var q=B,$=n(61);function G(e){return e.reduce((function(e,t){var n=t.fixed,r=!0===n?"left":n,o=t.children;return o&&o.length>0?[].concat(Object(c.a)(e),Object(c.a)(G(o).map((function(e){return Object(i.a)({fixed:r},e)})))):[].concat(Object(c.a)(e),[Object(i.a)(Object(i.a)({},t),{},{fixed:r})])}),[])}var J=function(e,t){var n=e.prefixCls,r=e.columns,a=e.children,c=e.expandable,l=e.expandedKeys,u=e.getRowKey,f=e.onTriggerExpand,d=e.expandIcon,p=e.rowExpandable,h=e.expandIconColumnIndex,m=e.direction,v=e.expandRowByClick,y=e.columnWidth,_=s.useMemo((function(){return r||function e(t){return Object($.a)(t).filter((function(e){return s.isValidElement(e)})).map((function(t){var n=t.key,r=t.props,o=r.children,a=Object(M.a)(r,["children"]),c=Object(i.a)({key:n},a);return o&&(c.children=e(o)),c}))}(a)}),[r,a]),b=s.useMemo((function(){if(c){var e,t=h||0,r=_[t],a=(e={},Object(o.a)(e,D,{className:"".concat(n,"-expand-icon-col")}),Object(o.a)(e,"title",""),Object(o.a)(e,"fixed",r?r.fixed:null),Object(o.a)(e,"className","".concat(n,"-row-expand-icon-cell")),Object(o.a)(e,"width",y),Object(o.a)(e,"render",(function(e,t,r){var o=u(t,r),a=l.has(o),i=!p||p(t),c=d({prefixCls:n,expanded:a,expandable:i,record:t,onExpand:f});return v?s.createElement("span",{onClick:function(e){return e.stopPropagation()}},c):c})),e),i=_.slice();return t>=0&&i.splice(t,0,a),i}return _}),[c,_,u,l,d,m]),g=s.useMemo((function(){var e=b;return t&&(e=t(e)),e.length||(e=[{render:function(){return null}}]),e}),[t,b,m]),w=s.useMemo((function(){return"rtl"===m?function(e){return e.map((function(e){var t=e.fixed,n=Object(M.a)(e,["fixed"]),r=t;return"left"===t?r="right":"right"===t&&(r="left"),Object(i.a)({fixed:r},n)}))}(G(g)):G(g)}),[g,m]);return[g,w]};function Q(e){var t=Object(s.useRef)(e),n=Object(s.useState)({}),r=Object(u.a)(n,2)[1],o=Object(s.useRef)(null),a=Object(s.useRef)([]);return Object(s.useEffect)((function(){return function(){o.current=null}}),[]),[t.current,function(e){a.current.push(e);var n=Promise.resolve();o.current=n,n.then((function(){if(o.current===n){var e=a.current,i=t.current;a.current=[],e.forEach((function(e){t.current=e(t.current)})),o.current=null,i!==t.current&&r({})}}))}]}var X=function(e,t,n){return Object(s.useMemo)((function(){for(var r=[],o=[],a=0,i=0,c=0;c<t;c+=1)if("rtl"===n){o[c]=i,i+=e[c]||0;var l=t-c-1;r[l]=a,a+=e[l]||0}else{r[c]=a,a+=e[c]||0;var u=t-c-1;o[u]=i,i+=e[u]||0}return{left:r,right:o}}),[e,t,n])};var Z=function(e){var t=e.className,n=e.children;return s.createElement("div",{className:t},n)};var ee=function(e){var t=e.children,n=s.useContext(j).prefixCls;return s.createElement("tfoot",{className:"".concat(n,"-summary")},t)},te={Cell:function(e){var t=e.className,n=e.index,r=e.children,o=e.colSpan,i=e.rowSpan,c=e.align,l=s.useContext(j),u=l.prefixCls,f=l.fixedInfoList[n];return s.createElement(C,Object(a.a)({className:t,index:n,component:"td",prefixCls:u,record:null,dataIndex:null,align:c,render:function(){return{children:r,props:{colSpan:o,rowSpan:i}}}},f))},Row:function(e){return s.createElement("tr",e)}};function ne(e){var t,n=e.prefixCls,r=e.record,a=e.onExpand,i=e.expanded,c=e.expandable,l="".concat(n,"-row-expand-icon");if(!c)return s.createElement("span",{className:p()(l,"".concat(n,"-row-spaced"))});return s.createElement("span",{className:p()(l,(t={},Object(o.a)(t,"".concat(n,"-row-expanded"),i),Object(o.a)(t,"".concat(n,"-row-collapsed"),!i),t)),onClick:function(e){a(r,e),e.stopPropagation()}})}var re=n(43);function oe(e){var t=e.getBoundingClientRect(),n=document.documentElement;return{left:t.left+(window.pageXOffset||n.scrollLeft)-(n.clientLeft||document.body.clientLeft||0),top:t.top+(window.pageYOffset||n.scrollTop)-(n.clientTop||document.body.clientTop||0)}}var ae=function(e,t){var n,r,a=e.scrollBodyRef,c=e.onScroll,l=e.offsetScroll,f=e.container,d=s.useContext(j).prefixCls,h=(null===(n=a.current)||void 0===n?void 0:n.scrollWidth)||0,m=(null===(r=a.current)||void 0===r?void 0:r.clientWidth)||0,v=h&&m*(m/h),y=s.useRef(),b=Q({scrollLeft:0,isHiddenScrollBar:!1}),g=Object(u.a)(b,2),M=g[0],w=g[1],O=s.useRef({delta:0,x:0}),k=s.useState(!1),L=Object(u.a)(k,2),x=L[0],z=L[1],S=function(){z(!1)},C=function(e){var t,n=(e||(null===(t=window)||void 0===t?void 0:t.event)).buttons;if(x&&0!==n){var r=O.current.x+e.pageX-O.current.x-O.current.delta;r<=0&&(r=0),r+v>=m&&(r=m-v),c({scrollLeft:r/m*(h+2)}),O.current.x=e.pageX}else x&&z(!1)},E=function(){var e=oe(a.current).top,t=e+a.current.offsetHeight,n=f===window?document.documentElement.scrollTop+window.innerHeight:oe(f).top+f.clientHeight;t-_()<=n||e>=n-l?w((function(e){return Object(i.a)(Object(i.a)({},e),{},{isHiddenScrollBar:!0})})):w((function(e){return Object(i.a)(Object(i.a)({},e),{},{isHiddenScrollBar:!1})}))},T=function(e){w((function(t){return Object(i.a)(Object(i.a)({},t),{},{scrollLeft:e/h*m||0})}))};return s.useImperativeHandle(t,(function(){return{setScrollLeft:T}})),s.useEffect((function(){var e=Object(re.a)(document.body,"mouseup",S,!1),t=Object(re.a)(document.body,"mousemove",C,!1);return E(),function(){e.remove(),t.remove()}}),[v,x]),s.useEffect((function(){var e=Object(re.a)(f,"scroll",E,!1),t=Object(re.a)(window,"resize",E,!1);return function(){e.remove(),t.remove()}}),[f]),s.useEffect((function(){M.isHiddenScrollBar||w((function(e){var t=a.current;return t?Object(i.a)(Object(i.a)({},e),{},{scrollLeft:t.scrollLeft/t.scrollWidth*t.clientWidth}):e}))}),[M.isHiddenScrollBar]),h<=m||!v||M.isHiddenScrollBar?null:s.createElement("div",{style:{height:_(),width:m,bottom:l},className:"".concat(d,"-sticky-scroll")},s.createElement("div",{onMouseDown:function(e){e.persist(),O.current.delta=e.pageX-M.scrollLeft,O.current.x=0,z(!0),e.preventDefault()},ref:y,className:p()("".concat(d,"-sticky-scroll-bar"),Object(o.a)({},"".concat(d,"-sticky-scroll-bar-active"),x)),style:{width:"".concat(v,"px"),transform:"translate3d(".concat(M.scrollLeft,"px, 0, 0)")}}))},ie=s.forwardRef(ae),ce=n(127),le=Object(ce.a)()?window:null;var ue=[],se={},fe=s.memo((function(e){return e.children}),(function(e,t){return!!m()(e.props,t.props)&&(e.pingLeft!==t.pingLeft||e.pingRight!==t.pingRight)}));function de(e){var t,n=e.prefixCls,r=e.className,d=e.rowClassName,h=e.style,m=e.data,b=e.rowKey,g=e.scroll,w=e.tableLayout,O=e.direction,z=e.title,S=e.footer,C=e.summary,T=e.id,P=e.showHeader,D=e.components,V=e.emptyText,A=e.onRow,R=e.onHeaderRow,I=e.internalHooks,U=e.transformColumns,K=e.internalRefs,B=e.sticky,$=m||ue,G=!!$.length,te=s.useState(0),re=Object(u.a)(te,2),oe=re[0],ae=re[1];s.useEffect((function(){ae(_())}));var ce,de,pe,he=s.useMemo((function(){return function(){var e={};function t(e,n){n&&Object.keys(n).forEach((function(r){var o=n[r];o&&"object"===Object(l.a)(o)?(e[r]=e[r]||{},t(e[r],o)):e[r]=o}))}for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return r.forEach((function(n){t(e,n)})),e}(D,{})}),[D]),me=s.useCallback((function(e,t){return k(he,e)||t}),[he]),ve=s.useMemo((function(){return"function"==typeof b?b:function(e){return e&&e[b]}}),[b]),ye=function(e){var t=e.expandable,n=Object(M.a)(e,["expandable"]);return"expandable"in e?Object(i.a)(Object(i.a)({},n),t):n}(e),_e=ye.expandIcon,be=ye.expandedRowKeys,ge=ye.defaultExpandedRowKeys,Me=ye.defaultExpandAllRows,we=ye.expandedRowRender,Oe=ye.onExpand,ke=ye.onExpandedRowsChange,Le=ye.expandRowByClick,xe=ye.rowExpandable,ze=ye.expandIconColumnIndex,Se=ye.expandedRowClassName,Ce=ye.childrenColumnName,je=ye.indentSize,Ee=_e||ne,Te=Ce||"children",Pe=s.useMemo((function(){return we?"row":!!(e.expandable&&"rc-table-internal-hook"===I&&e.expandable.__PARENT_RENDER_ICON__||$.some((function(e){return e&&"object"===Object(l.a)(e)&&e[Te]})))&&"nest"}),[!!we,$]),He=s.useState((function(){return ge||(Me?function(e,t,n){var r=[];return function e(o){(o||[]).forEach((function(o,a){r.push(t(o,a)),e(o[n])}))}(e),r}($,ve,Te):[])})),De=Object(u.a)(He,2),Ye=De[0],Ve=De[1],Ne=s.useMemo((function(){return new Set(be||Ye||[])}),[be,Ye]),Fe=s.useCallback((function(e){var t,n=ve(e,$.indexOf(e)),r=Ne.has(n);r?(Ne.delete(n),t=Object(c.a)(Ne)):t=[].concat(Object(c.a)(Ne),[n]),Ve(t),Oe&&Oe(!r,e),ke&&ke(t)}),[ve,Ne,$,Oe,ke]),Ae=s.useState(0),Re=Object(u.a)(Ae,2),Ie=Re[0],We=Re[1],Ue=J(Object(i.a)(Object(i.a)(Object(i.a)({},e),ye),{},{expandable:!!we,expandedKeys:Ne,getRowKey:ve,onTriggerExpand:Fe,expandIcon:Ee,expandIconColumnIndex:ze,direction:O}),"rc-table-internal-hook"===I?U:null),Ke=Object(u.a)(Ue,2),Be=Ke[0],qe=Ke[1],$e=s.useMemo((function(){return{columns:Be,flattenColumns:qe}}),[Be,qe]),Ge=s.useRef(),Je=s.useRef(),Qe=s.useRef(),Xe=s.useState(!1),Ze=Object(u.a)(Xe,2),et=Ze[0],tt=Ze[1],nt=s.useState(!1),rt=Object(u.a)(nt,2),ot=rt[0],at=rt[1],it=Q(new Map),ct=Object(u.a)(it,2),lt=ct[0],ut=ct[1],st=L(qe).map((function(e){return lt.get(e)})),ft=s.useMemo((function(){return st}),[st.join("_")]),dt=X(ft,qe.length,O),pt=g&&x(g.y),ht=g&&x(g.x),mt=ht&&qe.some((function(e){return e.fixed})),vt=s.useRef(),yt=function(e,t){var n="object"===Object(l.a)(e)?e:{},r=n.offsetHeader,o=void 0===r?0:r,a=n.offsetScroll,i=void 0===a?0:a,c=n.getContainer,u=(void 0===c?function(){return le}:c)()||le;return s.useMemo((function(){var n=!!e;return{isSticky:n,stickyClassName:n?"".concat(t,"-sticky-header"):"",offsetHeader:o,offsetScroll:i,container:u}}),[i,o,t,u])}(B,n),_t=yt.isSticky,bt=yt.offsetHeader,gt=yt.offsetScroll,Mt=yt.stickyClassName,wt=yt.container;pt&&(de={overflowY:"scroll",maxHeight:g.y}),ht&&(ce={overflowX:"auto"},pt||(de={overflowY:"hidden"}),pe={width:!0===g.x?"auto":g.x,minWidth:"100%"});var Ot=s.useCallback((function(e,t){Object(f.a)(Ge.current)&&ut((function(n){if(n.get(e)!==t){var r=new Map(n);return r.set(e,t),r}return n}))}),[]),kt=function(e){var t=Object(s.useRef)(e||null),n=Object(s.useRef)();function r(){window.clearTimeout(n.current)}return Object(s.useEffect)((function(){return r}),[]),[function(e){t.current=e,r(),n.current=window.setTimeout((function(){t.current=null,n.current=void 0}),100)},function(){return t.current}]}(null),Lt=Object(u.a)(kt,2),xt=Lt[0],zt=Lt[1];function St(e,t){t&&("function"==typeof t?t(e):t.scrollLeft!==e&&(t.scrollLeft=e))}var Ct=function(e){var t,n=e.currentTarget,r=e.scrollLeft,o="rtl"===O,a="number"==typeof r?r:n.scrollLeft,i=n||se;zt()&&zt()!==i||(xt(i),St(a,Je.current),St(a,Qe.current),St(a,null===(t=vt.current)||void 0===t?void 0:t.setScrollLeft));if(n){var c=n.scrollWidth,l=n.clientWidth;o?(tt(-a<c-l),at(-a>0)):(tt(a>0),at(a<c-l))}},jt=function(){Qe.current&&Ct({currentTarget:Qe.current})};s.useEffect((function(){return jt}),[]),s.useEffect((function(){ht&&jt()}),[ht]),s.useEffect((function(){"rc-table-internal-hook"===I&&K&&(K.body.current=Qe.current)}));var Et,Tt,Pt=me(["table"],"table"),Ht=s.useMemo((function(){return w||(mt?"max-content"===g.x?"auto":"fixed":pt||_t||qe.some((function(e){return e.ellipsis}))?"fixed":"auto")}),[pt,mt,qe,w,_t]),Dt={colWidths:ft,columCount:qe.length,stickyOffsets:dt,onHeaderRow:R,fixHeader:pt,scroll:g},Yt=s.useMemo((function(){return G?null:"function"==typeof V?V():V}),[G,V]),Vt=s.createElement(q,{data:$,measureColumnWidth:pt||ht||_t,expandedKeys:Ne,rowExpandable:xe,getRowKey:ve,onRow:A,emptyNode:Yt,childrenColumnName:Te}),Nt=s.createElement(Y,{colWidths:qe.map((function(e){return e.width})),columns:qe}),Ft=C&&s.createElement(ee,null,C($)),At=me(["body"]);pt||_t?("function"==typeof At?(Tt=At($,{scrollbarSize:oe,ref:Qe,onScroll:Ct}),Dt.colWidths=qe.map((function(e,t){var n=e.width,r=t===Be.length-1?n-oe:n;return"number"!=typeof r||Number.isNaN(r)?(Object(v.a)(!1,"When use `components.body` with render props. Each column should have a fixed `width` value."),0):r}))):Tt=s.createElement("div",{style:Object(i.a)(Object(i.a)({},ce),de),onScroll:Ct,ref:Qe,className:p()("".concat(n,"-body"))},s.createElement(Pt,{style:Object(i.a)(Object(i.a)({},pe),{},{tableLayout:Ht})},Nt,Vt,Ft)),Et=s.createElement(s.Fragment,null,!1!==P&&s.createElement(N,Object(a.a)({noData:!$.length,maxContentScroll:ht&&"max-content"===g.x},Dt,$e,{direction:O,offsetHeader:bt,stickyClassName:Mt,ref:Je,onScroll:Ct})),Tt,_t&&s.createElement(ie,{ref:vt,offsetScroll:gt,scrollBodyRef:Qe,onScroll:Ct,container:wt}))):Et=s.createElement("div",{style:Object(i.a)(Object(i.a)({},ce),de),className:p()("".concat(n,"-content")),onScroll:Ct,ref:Qe},s.createElement(Pt,{style:Object(i.a)(Object(i.a)({},pe),{},{tableLayout:Ht})},Nt,!1!==P&&s.createElement(H,Object(a.a)({},Dt,$e)),Vt,Ft));var Rt=function(e){return Object.keys(e).reduce((function(t,n){return"data-"!==n.substr(0,5)&&"aria-"!==n.substr(0,5)||(t[n]=e[n]),t}),{})}(e),It=s.createElement("div",Object(a.a)({className:p()(n,r,(t={},Object(o.a)(t,"".concat(n,"-rtl"),"rtl"===O),Object(o.a)(t,"".concat(n,"-ping-left"),et),Object(o.a)(t,"".concat(n,"-ping-right"),ot),Object(o.a)(t,"".concat(n,"-layout-fixed"),"fixed"===w),Object(o.a)(t,"".concat(n,"-fixed-header"),pt),Object(o.a)(t,"".concat(n,"-fixed-column"),mt),Object(o.a)(t,"".concat(n,"-scroll-horizontal"),ht),Object(o.a)(t,"".concat(n,"-has-fix-left"),qe[0]&&qe[0].fixed),Object(o.a)(t,"".concat(n,"-has-fix-right"),qe[qe.length-1]&&"right"===qe[qe.length-1].fixed),t)),style:h,id:T,ref:Ge},Rt),s.createElement(fe,{pingLeft:et,pingRight:ot,props:Object(i.a)(Object(i.a)({},e),{},{stickyOffsets:dt,mergedExpandedKeys:Ne})},z&&s.createElement(Z,{className:"".concat(n,"-title")},z($)),s.createElement("div",{className:"".concat(n,"-container")},Et),S&&s.createElement(Z,{className:"".concat(n,"-footer")},S($))));ht&&(It=s.createElement(y.default,{onResize:function(e){var t=e.width;jt(),We(Ge.current?Ge.current.offsetWidth:t)}},It));var Wt=s.useMemo((function(){return{prefixCls:n,getComponent:me,scrollbarSize:oe,direction:O,fixedInfoList:qe.map((function(e,t){return E(t,t,qe,dt,O)})),isSticky:_t}}),[n,me,oe,O,qe,dt,O,_t]),Ut=s.useMemo((function(){return Object(i.a)(Object(i.a)({},$e),{},{tableLayout:Ht,rowClassName:d,expandedRowClassName:Se,componentWidth:Ie,fixHeader:pt,fixColumn:mt,horizonScroll:ht,expandIcon:Ee,expandableType:Pe,expandRowByClick:Le,expandedRowRender:we,onTriggerExpand:Fe,expandIconColumnIndex:ze,indentSize:je})}),[$e,Ht,d,Se,Ie,pt,mt,ht,Ee,Pe,Le,we,Fe,ze,je]),Kt=s.useMemo((function(){return{onColumnResize:Ot}}),[Ot]);return s.createElement(j.Provider,{value:Wt},s.createElement(F.Provider,{value:Ut},s.createElement(W.Provider,{value:Kt},It)))}de.Column=g,de.ColumnGroup=b,de.Summary=te,de.defaultProps={rowKey:"key",prefixCls:"rc-table",emptyText:function(){return"No Data"}};var pe=de;t.default=pe},function(e,t,n){"use strict";n.r(t);var r=n(17),o=n.n(r),a=n(40),i=n.n(a),c=n(33),l=n.n(c),u=n(39),s=n.n(u),f=n(37),d=n.n(f),p=n(38),h=n.n(p),m=n(0),v=n.n(m),y=n(3),_=n.n(y),b=function(e){var t=e.prototype;if(!t||!t.isReactComponent)throw new Error("Can only polyfill class components");return"function"!=typeof t.componentWillReceiveProps?e:v.a.Profiler?(t.UNSAFE_componentWillReceiveProps=t.componentWillReceiveProps,delete t.componentWillReceiveProps,e):e};function g(e){var t=[];return v.a.Children.forEach(e,(function(e){t.push(e)})),t}function M(e,t){var n=null;return e&&e.forEach((function(e){n||e&&e.key===t&&(n=e)})),n}function w(e,t,n){var r=null;return e&&e.forEach((function(e){if(e&&e.key===t&&e.props[n]){if(r)throw new Error("two child with same key for <rc-animate> children");r=e}})),r}var O=n(11),k=n.n(O),L=n(62),x={isAppearSupported:function(e){return e.transitionName&&e.transitionAppear||e.animation.appear},isEnterSupported:function(e){return e.transitionName&&e.transitionEnter||e.animation.enter},isLeaveSupported:function(e){return e.transitionName&&e.transitionLeave||e.animation.leave},allowAppearCallback:function(e){return e.transitionAppear||e.animation.appear},allowEnterCallback:function(e){return e.transitionEnter||e.animation.enter},allowLeaveCallback:function(e){return e.transitionLeave||e.animation.leave}},z={enter:"transitionEnter",appear:"transitionAppear",leave:"transitionLeave"},S=function(e){function t(){return l()(this,t),d()(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return h()(t,e),s()(t,[{key:"componentWillUnmount",value:function(){this.stop()}},{key:"componentWillEnter",value:function(e){x.isEnterSupported(this.props)?this.transition("enter",e):e()}},{key:"componentWillAppear",value:function(e){x.isAppearSupported(this.props)?this.transition("appear",e):e()}},{key:"componentWillLeave",value:function(e){x.isLeaveSupported(this.props)?this.transition("leave",e):e()}},{key:"transition",value:function(e,t){var n=this,r=k.a.findDOMNode(this),o=this.props,a=o.transitionName,i="object"==typeof a;this.stop();var c=function(){n.stopper=null,t()};if((L.isCssAnimationSupported||!o.animation[e])&&a&&o[z[e]]){var l=i?a[e]:a+"-"+e,u=l+"-active";i&&a[e+"Active"]&&(u=a[e+"Active"]),this.stopper=Object(L.default)(r,{name:l,active:u},c)}else this.stopper=o.animation[e](r,c)}},{key:"stop",value:function(){var e=this.stopper;e&&(this.stopper=null,e.stop())}},{key:"render",value:function(){return this.props.children}}]),t}(v.a.Component);S.propTypes={children:_.a.any,animation:_.a.any,transitionName:_.a.any};var C=S,j="rc_animate_"+Date.now();function E(e){var t=e.children;return v.a.isValidElement(t)&&!t.key?v.a.cloneElement(t,{key:j}):t}function T(){}var P=function(e){function t(e){l()(this,t);var n=d()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return H.call(n),n.currentlyAnimatingKeys={},n.keysToEnter=[],n.keysToLeave=[],n.state={children:g(E(e))},n.childrenRefs={},n}return h()(t,e),s()(t,[{key:"componentDidMount",value:function(){var e=this,t=this.props.showProp,n=this.state.children;t&&(n=n.filter((function(e){return!!e.props[t]}))),n.forEach((function(t){t&&e.performAppear(t.key)}))}},{key:"componentWillReceiveProps",value:function(e){var t=this;this.nextProps=e;var n=g(E(e)),r=this.props;r.exclusive&&Object.keys(this.currentlyAnimatingKeys).forEach((function(e){t.stop(e)}));var o,a,c,l,u=r.showProp,s=this.currentlyAnimatingKeys,f=r.exclusive?g(E(r)):this.state.children,d=[];u?(f.forEach((function(e){var t=e&&M(n,e.key),r=void 0;(r=t&&t.props[u]||!e.props[u]?t:v.a.cloneElement(t||e,i()({},u,!0)))&&d.push(r)})),n.forEach((function(e){e&&M(f,e.key)||d.push(e)}))):(o=n,a=[],c={},l=[],f.forEach((function(e){e&&M(o,e.key)?l.length&&(c[e.key]=l,l=[]):l.push(e)})),o.forEach((function(e){e&&Object.prototype.hasOwnProperty.call(c,e.key)&&(a=a.concat(c[e.key])),a.push(e)})),d=a=a.concat(l)),this.setState({children:d}),n.forEach((function(e){var n=e&&e.key;if(!e||!s[n]){var r=e&&M(f,n);if(u){var o=e.props[u];if(r)!w(f,n,u)&&o&&t.keysToEnter.push(n);else o&&t.keysToEnter.push(n)}else r||t.keysToEnter.push(n)}})),f.forEach((function(e){var r=e&&e.key;if(!e||!s[r]){var o=e&&M(n,r);if(u){var a=e.props[u];if(o)!w(n,r,u)&&a&&t.keysToLeave.push(r);else a&&t.keysToLeave.push(r)}else o||t.keysToLeave.push(r)}}))}},{key:"componentDidUpdate",value:function(){var e=this.keysToEnter;this.keysToEnter=[],e.forEach(this.performEnter);var t=this.keysToLeave;this.keysToLeave=[],t.forEach(this.performLeave)}},{key:"isValidChildByKey",value:function(e,t){var n=this.props.showProp;return n?w(e,t,n):M(e,t)}},{key:"stop",value:function(e){delete this.currentlyAnimatingKeys[e];var t=this.childrenRefs[e];t&&t.stop()}},{key:"render",value:function(){var e=this,t=this.props;this.nextProps=t;var n=this.state.children,r=null;n&&(r=n.map((function(n){if(null==n)return n;if(!n.key)throw new Error("must set key for <rc-animate> children");return v.a.createElement(C,{key:n.key,ref:function(t){e.childrenRefs[n.key]=t},animation:t.animation,transitionName:t.transitionName,transitionEnter:t.transitionEnter,transitionAppear:t.transitionAppear,transitionLeave:t.transitionLeave},n)})));var a=t.component;if(a){var i=t;return"string"==typeof a&&(i=o()({className:t.className,style:t.style},t.componentProps)),v.a.createElement(a,i,r)}return r[0]||null}}]),t}(v.a.Component);P.isAnimate=!0,P.propTypes={className:_.a.string,style:_.a.object,component:_.a.any,componentProps:_.a.object,animation:_.a.object,transitionName:_.a.oneOfType([_.a.string,_.a.object]),transitionEnter:_.a.bool,transitionAppear:_.a.bool,exclusive:_.a.bool,transitionLeave:_.a.bool,onEnd:_.a.func,onEnter:_.a.func,onLeave:_.a.func,onAppear:_.a.func,showProp:_.a.string,children:_.a.node},P.defaultProps={animation:{},component:"span",componentProps:{},transitionEnter:!0,transitionLeave:!0,transitionAppear:!1,onEnd:T,onEnter:T,onLeave:T,onAppear:T};var H=function(){var e=this;this.performEnter=function(t){e.childrenRefs[t]&&(e.currentlyAnimatingKeys[t]=!0,e.childrenRefs[t].componentWillEnter(e.handleDoneAdding.bind(e,t,"enter")))},this.performAppear=function(t){e.childrenRefs[t]&&(e.currentlyAnimatingKeys[t]=!0,e.childrenRefs[t].componentWillAppear(e.handleDoneAdding.bind(e,t,"appear")))},this.handleDoneAdding=function(t,n){var r=e.props;if(delete e.currentlyAnimatingKeys[t],!r.exclusive||r===e.nextProps){var o=g(E(r));e.isValidChildByKey(o,t)?"appear"===n?x.allowAppearCallback(r)&&(r.onAppear(t),r.onEnd(t,!0)):x.allowEnterCallback(r)&&(r.onEnter(t),r.onEnd(t,!0)):e.performLeave(t)}},this.performLeave=function(t){e.childrenRefs[t]&&(e.currentlyAnimatingKeys[t]=!0,e.childrenRefs[t].componentWillLeave(e.handleDoneLeaving.bind(e,t)))},this.handleDoneLeaving=function(t){var n=e.props;if(delete e.currentlyAnimatingKeys[t],!n.exclusive||n===e.nextProps){var r,o,a,i,c=g(E(n));if(e.isValidChildByKey(c,t))e.performEnter(t);else{var l=function(){x.allowLeaveCallback(n)&&(n.onLeave(t),n.onEnd(t,!1))};r=e.state.children,o=c,a=n.showProp,(i=r.length===o.length)&&r.forEach((function(e,t){var n=o[t];e&&n&&(e&&!n||!e&&n||e.key!==n.key||a&&e.props[a]!==n.props[a])&&(i=!1)})),i?l():e.setState({children:c},l)}}}};t.default=b(P)},function(e,t,n){"use strict";n.r(t),n.d(t,"Panel",(function(){return H}));var r=n(0),o=n.n(r),a=n(3),i=n.n(a),c=n(2),l=n.n(c),u=n(35),s=n.n(u),f=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function h(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var m=function(e){function t(){return p(this,t),h(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),f(t,[{key:"shouldComponentUpdate",value:function(e){return this.props.forceRender||!s()(this.props,e)}},{key:"render",value:function(){var e;if(this._isActived=this.props.forceRender||this._isActived||this.props.isActive,!this._isActived)return null;var t=this.props,n=t.prefixCls,r=t.isActive,a=t.children,i=t.destroyInactivePanel,c=t.forceRender,u=t.role,s=l()((d(e={},n+"-content",!0),d(e,n+"-content-active",r),d(e,n+"-content-inactive",!r),e)),f=c||r||!i?o.a.createElement("div",{className:n+"-content-box"},a):null;return o.a.createElement("div",{className:s,role:u},f)}}]),t}(r.Component);m.propTypes={prefixCls:i.a.string,isActive:i.a.bool,children:i.a.any,destroyInactivePanel:i.a.bool,forceRender:i.a.bool,role:i.a.string};var v=m,y=n(100),_=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function g(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function M(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var w=function(e){function t(){var e,n,r;g(this,t);for(var o=arguments.length,a=Array(o),i=0;i<o;i++)a[i]=arguments[i];return n=r=M(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(a))),r.handleItemClick=function(){var e=r.props,t=e.onItemClick,n=e.panelKey;"function"==typeof t&&t(n)},r.handleKeyPress=function(e){"Enter"!==e.key&&13!==e.keyCode&&13!==e.which||r.handleItemClick()},M(r,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),_(t,[{key:"shouldComponentUpdate",value:function(e){return!s()(this.props,e)}},{key:"render",value:function(){var e,t=this.props,n=t.className,r=t.id,a=t.style,i=t.prefixCls,c=t.header,u=t.headerClass,s=t.children,f=t.isActive,d=t.showArrow,p=t.destroyInactivePanel,h=t.disabled,m=t.accordion,_=t.forceRender,g=t.expandIcon,M=t.extra,w=l()(i+"-header",b({},u,u)),O=l()((b(e={},i+"-item",!0),b(e,i+"-item-active",f),b(e,i+"-item-disabled",h),e),n),k=o.a.createElement("i",{className:"arrow"});return d&&"function"==typeof g&&(k=g(this.props)),o.a.createElement("div",{className:O,style:a,id:r},o.a.createElement("div",{className:w,onClick:this.handleItemClick,role:m?"tab":"button",tabIndex:h?-1:0,"aria-expanded":""+f,onKeyPress:this.handleKeyPress},d&&k,c,M&&o.a.createElement("div",{className:i+"-extra"},M)),o.a.createElement(y.a,{showProp:"isActive",exclusive:!0,component:"",animation:this.props.openAnimation},o.a.createElement(v,{prefixCls:i,isActive:f,destroyInactivePanel:p,forceRender:_,role:m?"tabpanel":null},s)))}}]),t}(r.Component);w.propTypes={className:i.a.oneOfType([i.a.string,i.a.object]),id:i.a.string,children:i.a.any,openAnimation:i.a.object,prefixCls:i.a.string,header:i.a.oneOfType([i.a.string,i.a.number,i.a.node]),headerClass:i.a.string,showArrow:i.a.bool,isActive:i.a.bool,onItemClick:i.a.func,style:i.a.object,destroyInactivePanel:i.a.bool,disabled:i.a.bool,accordion:i.a.bool,forceRender:i.a.bool,expandIcon:i.a.func,extra:i.a.node,panelKey:i.a.any},w.defaultProps={showArrow:!0,isActive:!1,destroyInactivePanel:!1,onItemClick:function(){},headerClass:"",forceRender:!1};var O=w,k=n(62);function L(e,t,n,r){var o=void 0;return Object(k.default)(e,n,{start:function(){t?(o=e.offsetHeight,e.style.height=0):e.style.height=e.offsetHeight+"px"},active:function(){e.style.height=(t?o:0)+"px"},end:function(){e.style.height="",r()}})}var x=function(e){return{enter:function(t,n){return L(t,!0,e+"-anim",n)},leave:function(t,n){return L(t,!1,e+"-anim",n)}}},z=n(129),S=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function C(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function j(e){var t=e;return Array.isArray(t)||(t=t?[t]:[]),t}var E=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));T.call(n);var r=e.activeKey,o=e.defaultActiveKey;return"activeKey"in e&&(o=r),n.state={openAnimation:e.openAnimation||x(e.prefixCls),activeKey:j(o)},n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),S(t,[{key:"componentWillReceiveProps",value:function(e){"activeKey"in e&&this.setState({activeKey:j(e.activeKey)}),"openAnimation"in e&&this.setState({openAnimation:e.openAnimation})}},{key:"shouldComponentUpdate",value:function(e,t){return!s()(this.props,e)||!s()(this.state,t)}},{key:"render",value:function(){var e,t=this.props,n=t.prefixCls,r=t.className,a=t.style,i=t.accordion,c=l()((C(e={},n,!0),C(e,r,!!r),e));return o.a.createElement("div",{className:c,style:a,role:i?"tablist":null},this.getItems())}}]),t}(r.Component),T=function(){var e=this;this.onClickItem=function(t){var n=e.state.activeKey;if(e.props.accordion)n=n[0]===t?[]:[t];else{var r=(n=[].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(n))).indexOf(t);r>-1?n.splice(r,1):n.push(t)}e.setActiveKey(n)},this.getNewChild=function(t,n){if(!t)return null;var r=e.state.activeKey,a=e.props,i=a.prefixCls,c=a.accordion,l=a.destroyInactivePanel,u=a.expandIcon,s=t.key||String(n),f=t.props,d=f.header,p=f.headerClass,h=f.disabled,m={key:s,panelKey:s,header:d,headerClass:p,isActive:c?r[0]===s:r.indexOf(s)>-1,prefixCls:i,destroyInactivePanel:l,openAnimation:e.state.openAnimation,accordion:c,children:t.props.children,onItemClick:h?null:e.onClickItem,expandIcon:u};return o.a.cloneElement(t,m)},this.getItems=function(){var t=e.props.children,n=Object(z.isFragment)(t)?t.props.children:t,a=r.Children.map(n,e.getNewChild);return Object(z.isFragment)(t)?o.a.createElement(o.a.Fragment,null,a):a},this.setActiveKey=function(t){"activeKey"in e.props||e.setState({activeKey:t}),e.props.onChange(e.props.accordion?t[0]:t)}};E.propTypes={children:i.a.any,prefixCls:i.a.string,activeKey:i.a.oneOfType([i.a.string,i.a.arrayOf(i.a.string)]),defaultActiveKey:i.a.oneOfType([i.a.string,i.a.arrayOf(i.a.string)]),openAnimation:i.a.object,onChange:i.a.func,accordion:i.a.bool,className:i.a.string,style:i.a.object,destroyInactivePanel:i.a.bool,expandIcon:i.a.func},E.defaultProps={prefixCls:"rc-collapse",onChange:function(){},accordion:!1,destroyInactivePanel:!1},E.Panel=O;var P=E,H=(t.default=P,P.Panel)},function(e,t,n){"use strict";n.r(t);var r=n(15),o=n(7),a=n(1),i=n(20),c=n(21),l=n(23),u=n(22),s=n(0),f=n(11),d=n.n(f),p=n(2),h=n.n(p),m=n(47),v=n(6),y=function(e){Object(l.a)(n,e);var t=Object(u.a)(n);function n(){var e;return Object(i.a)(this,n),(e=t.apply(this,arguments)).closeTimer=null,e.close=function(t){t&&t.stopPropagation(),e.clearCloseTimer();var n=e.props,r=n.onClose,o=n.noticeKey;r&&r(o)},e.startCloseTimer=function(){e.props.duration&&(e.closeTimer=window.setTimeout((function(){e.close()}),1e3*e.props.duration))},e.clearCloseTimer=function(){e.closeTimer&&(clearTimeout(e.closeTimer),e.closeTimer=null)},e}return Object(c.a)(n,[{key:"componentDidMount",value:function(){this.startCloseTimer()}},{key:"componentDidUpdate",value:function(e){this.props.duration===e.duration&&this.props.updateMark===e.updateMark||this.restartCloseTimer()}},{key:"componentWillUnmount",value:function(){this.clearCloseTimer()}},{key:"restartCloseTimer",value:function(){this.clearCloseTimer(),this.startCloseTimer()}},{key:"render",value:function(){var e=this,t=this.props,n=t.prefixCls,r=t.className,a=t.closable,i=t.closeIcon,c=t.style,l=t.onClick,u=t.children,f=t.holder,p="".concat(n,"-notice"),m=Object.keys(this.props).reduce((function(t,n){return"data-"!==n.substr(0,5)&&"aria-"!==n.substr(0,5)&&"role"!==n||(t[n]=e.props[n]),t}),{}),y=s.createElement("div",Object(o.a)({className:h()(p,r,Object(v.a)({},"".concat(p,"-closable"),a)),style:c,onMouseEnter:this.clearCloseTimer,onMouseLeave:this.startCloseTimer,onClick:l},m),s.createElement("div",{className:"".concat(p,"-content")},u),a?s.createElement("a",{tabIndex:0,onClick:this.close,className:"".concat(p,"-close")},i||s.createElement("span",{className:"".concat(p,"-close-x")})):null);return f?d.a.createPortal(y,f):y}}]),n}(s.Component);y.defaultProps={onClose:function(){},duration:1.5};var _=n(14),b=n(9);var g=0,M=Date.now();function w(){var e=g;return g+=1,"rcNotification_".concat(M,"_").concat(e)}var O=function(e){Object(l.a)(n,e);var t=Object(u.a)(n);function n(){var e;return Object(i.a)(this,n),(e=t.apply(this,arguments)).state={notices:[]},e.hookRefs=new Map,e.add=function(t,n){var r=t.key||w(),o=Object(a.a)(Object(a.a)({},t),{},{key:r}),i=e.props.maxCount;e.setState((function(e){var t=e.notices,a=t.map((function(e){return e.notice.key})).indexOf(r),c=t.concat();return-1!==a?c.splice(a,1,{notice:o,holderCallback:n}):(i&&t.length>=i&&(o.key=c[0].notice.key,o.updateMark=w(),o.userPassKey=r,c.shift()),c.push({notice:o,holderCallback:n})),{notices:c}}))},e.remove=function(t){e.setState((function(e){return{notices:e.notices.filter((function(e){var n=e.notice,r=n.key;return(n.userPassKey||r)!==t}))}}))},e.noticePropsMap={},e}return Object(c.a)(n,[{key:"getTransitionName",value:function(){var e=this.props,t=e.prefixCls,n=e.animation,r=this.props.transitionName;return!r&&n&&(r="".concat(t,"-").concat(n)),r}},{key:"render",value:function(){var e=this,t=this.state.notices,n=this.props,r=n.prefixCls,i=n.className,c=n.closeIcon,l=n.style,u=[];return t.forEach((function(n,o){var i=n.notice,l=n.holderCallback,s=o===t.length-1?i.updateMark:void 0,f=i.key,d=i.userPassKey,p=Object(a.a)(Object(a.a)(Object(a.a)({prefixCls:r,closeIcon:c},i),i.props),{},{key:f,noticeKey:d||f,updateMark:s,onClose:function(t){var n;e.remove(t),null===(n=i.onClose)||void 0===n||n.call(i)},onClick:i.onClick,children:i.content});u.push(f),e.noticePropsMap[f]={props:p,holderCallback:l}})),s.createElement("div",{className:h()(r,i),style:l},s.createElement(m.CSSMotionList,{keys:u,motionName:this.getTransitionName(),onVisibleChanged:function(t,n){var r=n.key;t||delete e.noticePropsMap[r]}},(function(t){var n=t.key,i=t.className,c=t.style,l=e.noticePropsMap[n],u=l.props,f=l.holderCallback;return f?s.createElement("div",{key:n,className:h()(i,"".concat(r,"-hook-holder")),style:Object(a.a)({},c),ref:function(t){void 0!==n&&(t?(e.hookRefs.set(n,t),f(t,u)):e.hookRefs.delete(n))}}):s.createElement(y,Object(o.a)({},u,{className:h()(i,null==u?void 0:u.className),style:Object(a.a)(Object(a.a)({},c),null==u?void 0:u.style)}))})))}}]),n}(s.Component);O.defaultProps={prefixCls:"rc-notification",animation:"fade",style:{top:65,left:"50%"}},O.newInstance=function(e,t){var n=e||{},a=n.getContainer,i=Object(r.a)(n,["getContainer"]),c=document.createElement("div");a?a().appendChild(c):document.body.appendChild(c);var l=!1;d.a.render(s.createElement(O,Object(o.a)({},i,{ref:function(e){l||(l=!0,t({notice:function(t){e.add(t)},removeNotice:function(t){e.remove(t)},component:e,destroy:function(){d.a.unmountComponentAtNode(c),c.parentNode&&c.parentNode.removeChild(c)},useNotification:function(){return t=e,n=s.useRef({}),r=s.useState([]),a=Object(b.a)(r,2),i=a[0],c=a[1],[function(e){var r=!0;t.add(e,(function(e,t){var a=t.key;if(e&&(!n.current[a]||r)){var i=s.createElement(y,Object(o.a)({},t,{holder:e}));n.current[a]=i,c((function(e){var n=e.findIndex((function(e){return e.key===t.key}));if(-1===n)return[].concat(Object(_.a)(e),[i]);var r=Object(_.a)(e);return r[n]=i,r}))}r=!1}))},s.createElement(s.Fragment,null,i)];var t,n,r,a,i,c}}))}})),c)};var k=O;t.default=k},function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return M}));var r=n(40),o=n.n(r),a=n(17),i=n.n(a),c=n(182),l=n.n(c),u=n(33),s=n.n(u),f=n(39),d=n.n(f),p=n(37),h=n.n(p),m=n(38),v=n.n(m),y=n(0),_=n(73),b={primaryColor:"#333",secondaryColor:"#E6E6E6"},g=function(e){function t(){return s()(this,t),h()(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return v()(t,e),d()(t,[{key:"render",value:function(){var e,n=this.props,r=n.type,a=n.className,c=n.onClick,u=n.style,s=n.primaryColor,f=n.secondaryColor,d=l()(n,["type","className","onClick","style","primaryColor","secondaryColor"]),p=void 0,h=b;if(s&&(h={primaryColor:s,secondaryColor:f||Object(_.c)(s)}),Object(_.d)(r))p=r;else if("string"==typeof r&&!(p=t.get(r,h)))return null;return p?(p&&"function"==typeof p.icon&&(p=i()({},p,{icon:p.icon(h.primaryColor,h.secondaryColor)})),Object(_.b)(p.icon,"svg-"+p.name,i()((e={className:a,onClick:c,style:u},o()(e,"data-icon",p.name),o()(e,"width","1em"),o()(e,"height","1em"),o()(e,"fill","currentColor"),o()(e,"aria-hidden","true"),o()(e,"focusable","false"),e),d))):(Object(_.e)("type should be string or icon definiton, but got "+r),null)}}],[{key:"add",value:function(){for(var e=this,t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];n.forEach((function(t){e.definitions.set(Object(_.f)(t.name,t.theme),t)}))}},{key:"clear",value:function(){this.definitions.clear()}},{key:"get",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:b;if(e){var n=this.definitions.get(e);return n&&"function"==typeof n.icon&&(n=i()({},n,{icon:n.icon(t.primaryColor,t.secondaryColor)})),n}}},{key:"setTwoToneColors",value:function(e){var t=e.primaryColor,n=e.secondaryColor;b.primaryColor=t,b.secondaryColor=n||Object(_.c)(t)}},{key:"getTwoToneColors",value:function(){return i()({},b)}}]),t}(y.Component);g.displayName="IconReact",g.definitions=new _.a;var M=g},function(e,t){function n(e,t,n,r,o,a,i){try{var c=e[a](i),l=c.value}catch(e){return void n(e)}c.done?t(l):Promise.resolve(l).then(r,o)}e.exports=function(e){return function(){var t=this,r=arguments;return new Promise((function(o,a){var i=e.apply(t,r);function c(e){n(i,o,a,c,l,"next",e)}function l(e){n(i,o,a,c,l,"throw",e)}c(void 0)}))}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function n(e,t,n,r,o,a,i){try{var c=e[a](i),l=c.value}catch(e){return void n(e)}c.done?t(l):Promise.resolve(l).then(r,o)}e.exports=function(e){return function(){var t=this,r=arguments;return new Promise((function(o,a){var i=e.apply(t,r);function c(e){n(i,o,a,c,l,"next",e)}function l(e){n(i,o,a,c,l,"throw",e)}c(void 0)}))}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";var r=n(439),o=n(90),a=n(440);function i(e,t){return t.encode?t.strict?r(e):encodeURIComponent(e):e}function c(e){var t=e.indexOf("?");return-1===t?"":e.slice(t+1)}function l(e,t){var n=function(e){var t;switch(e.arrayFormat){case"index":return function(e,n,r){t=/\[(\d*)\]$/.exec(e),e=e.replace(/\[\d*\]$/,""),t?(void 0===r[e]&&(r[e]={}),r[e][t[1]]=n):r[e]=n};case"bracket":return function(e,n,r){t=/(\[\])$/.exec(e),e=e.replace(/\[\]$/,""),t?void 0!==r[e]?r[e]=[].concat(r[e],n):r[e]=[n]:r[e]=n};default:return function(e,t,n){void 0!==n[e]?n[e]=[].concat(n[e],t):n[e]=t}}}(t=o({arrayFormat:"none"},t)),r=Object.create(null);return"string"!=typeof e?r:(e=e.trim().replace(/^[?#&]/,""))?(e.split("&").forEach((function(e){var t=e.replace(/\+/g," ").split("="),o=t.shift(),i=t.length>0?t.join("="):void 0;i=void 0===i?null:a(i),n(a(o),i,r)})),Object.keys(r).sort().reduce((function(e,t){var n=r[t];return Boolean(n)&&"object"==typeof n&&!Array.isArray(n)?e[t]=function e(t){return Array.isArray(t)?t.sort():"object"==typeof t?e(Object.keys(t)).sort((function(e,t){return Number(e)-Number(t)})).map((function(e){return t[e]})):t}(n):e[t]=n,e}),Object.create(null))):r}t.extract=c,t.parse=l,t.stringify=function(e,t){!1===(t=o({encode:!0,strict:!0,arrayFormat:"none"},t)).sort&&(t.sort=function(){});var n=function(e){switch(e.arrayFormat){case"index":return function(t,n,r){return null===n?[i(t,e),"[",r,"]"].join(""):[i(t,e),"[",i(r,e),"]=",i(n,e)].join("")};case"bracket":return function(t,n){return null===n?i(t,e):[i(t,e),"[]=",i(n,e)].join("")};default:return function(t,n){return null===n?i(t,e):[i(t,e),"=",i(n,e)].join("")}}}(t);return e?Object.keys(e).sort(t.sort).map((function(r){var o=e[r];if(void 0===o)return"";if(null===o)return i(r,t);if(Array.isArray(o)){var a=[];return o.slice().forEach((function(e){void 0!==e&&a.push(n(r,e,a.length))})),a.join("&")}return i(r,t)+"="+i(o,t)})).filter((function(e){return e.length>0})).join("&"):""},t.parseUrl=function(e,t){return{url:e.split("?")[0]||"",query:l(c(e),t)}}},function(e,t){function n(e,t,n){var r,o,a,i,c;function l(){var u=Date.now()-i;u<t&&u>=0?r=setTimeout(l,t-u):(r=null,n||(c=e.apply(a,o),a=o=null))}null==t&&(t=100);var u=function(){a=this,o=arguments,i=Date.now();var u=n&&!r;return r||(r=setTimeout(l,t)),u&&(c=e.apply(a,o),a=o=null),c};return u.clear=function(){r&&(clearTimeout(r),r=null)},u.flush=function(){r&&(c=e.apply(a,o),a=o=null,clearTimeout(r),r=null)},u}n.debounce=n,e.exports=n},function(e,t,n){"use strict";function r(e){var t,n=e.Symbol;return"function"==typeof n?n.observable?t=n.observable:(t=n("observable"),n.observable=t):t="@@observable",t}n.d(t,"a",(function(){return r}))},function(e,t,n){var r;!function(){"use strict";var o={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function a(e){return c(u(e),arguments)}function i(e,t){return a.apply(null,[e].concat(t||[]))}function c(e,t){var n,r,i,c,l,u,s,f,d,p=1,h=e.length,m="";for(r=0;r<h;r++)if("string"==typeof e[r])m+=e[r];else if("object"==typeof e[r]){if((c=e[r]).keys)for(n=t[p],i=0;i<c.keys.length;i++){if(null==n)throw new Error(a('[sprintf] Cannot access property "%s" of undefined value "%s"',c.keys[i],c.keys[i-1]));n=n[c.keys[i]]}else n=c.param_no?t[c.param_no]:t[p++];if(o.not_type.test(c.type)&&o.not_primitive.test(c.type)&&n instanceof Function&&(n=n()),o.numeric_arg.test(c.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(a("[sprintf] expecting number but found %T",n));switch(o.number.test(c.type)&&(f=n>=0),c.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,c.width?parseInt(c.width):0);break;case"e":n=c.precision?parseFloat(n).toExponential(c.precision):parseFloat(n).toExponential();break;case"f":n=c.precision?parseFloat(n).toFixed(c.precision):parseFloat(n);break;case"g":n=c.precision?String(Number(n.toPrecision(c.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=c.precision?n.substring(0,c.precision):n;break;case"t":n=String(!!n),n=c.precision?n.substring(0,c.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=c.precision?n.substring(0,c.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=c.precision?n.substring(0,c.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}o.json.test(c.type)?m+=n:(!o.number.test(c.type)||f&&!c.sign?d="":(d=f?"+":"-",n=n.toString().replace(o.sign,"")),u=c.pad_char?"0"===c.pad_char?"0":c.pad_char.charAt(1):" ",s=c.width-(d+n).length,l=c.width&&s>0?u.repeat(s):"",m+=c.align?d+n+l:"0"===u?d+l+n:l+d+n)}return m}var l=Object.create(null);function u(e){if(l[e])return l[e];for(var t,n=e,r=[],a=0;n;){if(null!==(t=o.text.exec(n)))r.push(t[0]);else if(null!==(t=o.modulo.exec(n)))r.push("%");else{if(null===(t=o.placeholder.exec(n)))throw new SyntaxError("[sprintf] unexpected placeholder");if(t[2]){a|=1;var i=[],c=t[2],u=[];if(null===(u=o.key.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(i.push(u[1]);""!==(c=c.substring(u[0].length));)if(null!==(u=o.key_access.exec(c)))i.push(u[1]);else{if(null===(u=o.index_access.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");i.push(u[1])}t[2]=i}else a|=2;if(3===a)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");r.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}n=n.substring(t[0].length)}return l[e]=r}t.sprintf=a,t.vsprintf=i,"undefined"!=typeof window&&(window.sprintf=a,window.vsprintf=i,void 0===(r=function(){return{sprintf:a,vsprintf:i}}.call(t,n,t,e))||(e.exports=r))}()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=p(n(0)),o=p(n(11)),a=f(n(406)),i=f(n(2)),c=f(n(34)),l=n(32),u=f(n(506)),s=f(n(56));function f(e){return e&&e.__esModule?e:{default:e}}function d(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return d=function(){return e},e}function p(e){if(e&&e.__esModule)return e;if(null===e||"object"!==h(e)&&"function"!=typeof e)return{default:e};var t=d();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function h(e){return(h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function m(){return(m=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function y(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function _(e,t){return(_=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function b(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=w(e);if(t){var o=w(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return g(this,n)}}function g(e,t){return!t||"object"!==h(t)&&"function"!=typeof t?M(e):t}function M(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function w(e){return(w=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function O(){}var k=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_(e,t)}(p,e);var t,n,f,d=b(p);function p(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,p),(t=d.call(this,e)).handleClose=function(e){e.preventDefault();var n=o.findDOMNode(M(t));n.style.height="".concat(n.offsetHeight,"px"),n.style.height="".concat(n.offsetHeight,"px"),t.setState({closing:!0}),(t.props.onClose||O)(e)},t.animationEnd=function(){t.setState({closing:!1,closed:!0}),(t.props.afterClose||O)()},t.renderAlert=function(e){var n,o=e.getPrefixCls,l=t.props,s=l.description,f=l.prefixCls,d=l.message,p=l.closeText,h=l.banner,y=l.className,_=void 0===y?"":y,b=l.style,g=l.icon,M=t.props,w=M.closable,O=M.type,k=M.showIcon,L=M.iconType,x=t.state,z=x.closing,S=x.closed,C=o("alert",f);k=!(!h||void 0!==k)||k,O=h&&void 0===O?"warning":O||"info";var j="filled";if(!L){switch(O){case"success":L="check-circle";break;case"info":L="info-circle";break;case"error":L="close-circle";break;case"warning":L="exclamation-circle";break;default:L="default"}s&&(j="outlined")}p&&(w=!0);var E=(0,i.default)(C,"".concat(C,"-").concat(O),(v(n={},"".concat(C,"-closing"),z),v(n,"".concat(C,"-with-description"),!!s),v(n,"".concat(C,"-no-icon"),!k),v(n,"".concat(C,"-banner"),!!h),v(n,"".concat(C,"-closable"),w),n),_),T=w?r.createElement("button",{type:"button",onClick:t.handleClose,className:"".concat(C,"-close-icon"),tabIndex:0},p?r.createElement("span",{className:"".concat(C,"-close-text")},p):r.createElement(c.default,{type:"close"})):null,P=(0,u.default)(t.props),H=g&&(r.isValidElement(g)?r.cloneElement(g,{className:(0,i.default)("".concat(C,"-icon"),v({},g.props.className,g.props.className))}):r.createElement("span",{className:"".concat(C,"-icon")},g))||r.createElement(c.default,{className:"".concat(C,"-icon"),type:L,theme:j});return S?null:r.createElement(a.default,{component:"",showProp:"data-show",transitionName:"".concat(C,"-slide-up"),onEnd:t.animationEnd},r.createElement("div",m({"data-show":!z,className:E,style:b},P),k?H:null,r.createElement("span",{className:"".concat(C,"-message")},d),r.createElement("span",{className:"".concat(C,"-description")},s),T))},(0,s.default)(!("iconType"in e),"Alert","`iconType` is deprecated. Please use `icon` instead."),t.state={closing:!1,closed:!1},t}return t=p,(n=[{key:"render",value:function(){return r.createElement(l.ConfigConsumer,null,this.renderAlert)}}])&&y(t.prototype,n),f&&y(t,f),p}(r.Component);t.default=k},function(e,t,n){try{var r=n(201)}catch(e){r=n(201)}var o=/\s+/,a=Object.prototype.toString;function i(e){if(!e||!e.nodeType)throw new Error("A DOM element reference is required");this.el=e,this.list=e.classList}e.exports=function(e){return new i(e)},i.prototype.add=function(e){if(this.list)return this.list.add(e),this;var t=this.array();return~r(t,e)||t.push(e),this.el.className=t.join(" "),this},i.prototype.remove=function(e){if("[object RegExp]"==a.call(e))return this.removeMatching(e);if(this.list)return this.list.remove(e),this;var t=this.array(),n=r(t,e);return~n&&t.splice(n,1),this.el.className=t.join(" "),this},i.prototype.removeMatching=function(e){for(var t=this.array(),n=0;n<t.length;n++)e.test(t[n])&&this.remove(t[n]);return this},i.prototype.toggle=function(e,t){return this.list?(void 0!==t?t!==this.list.toggle(e,t)&&this.list.toggle(e):this.list.toggle(e),this):(void 0!==t?t?this.add(e):this.remove(e):this.has(e)?this.remove(e):this.add(e),this)},i.prototype.array=function(){var e=(this.el.getAttribute("class")||"").replace(/^\s+|\s+$/g,"").split(o);return""===e[0]&&e.shift(),e},i.prototype.has=i.prototype.contains=function(e){return this.list?this.list.contains(e):!!~r(this.array(),e)}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(487));t.generate=o.default;var a={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1890FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"};t.presetPrimaryColors=a;var i={};t.presetPalettes=i,Object.keys(a).forEach((function(e){i[e]=o.default(a[e]),i[e].primary=i[e][6]}));var c=i.red;t.red=c;var l=i.volcano;t.volcano=l;var u=i.gold;t.gold=u;var s=i.yellow;t.yellow=s;var f=i.lime;t.lime=f;var d=i.green;t.green=d;var p=i.cyan;t.cyan=p;var h=i.blue;t.blue=h;var m=i.geekblue;t.geekblue=m;var v=i.purple;t.purple=v;var y=i.magenta;t.magenta=y;var _=i.grey;t.grey=_},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(509)).default;t.default=o},function(e,t){function n(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=n=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=n=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),n(t)}e.exports=n,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function n(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=n=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=n=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),n(t)}e.exports=n,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";e.exports=n(548)},function(e,t,n){"use strict";(function(e){function n(){return(n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function r(e){return(r=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function o(e,t){return(o=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function a(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function i(e,t,n){return(i=a()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var a=new(Function.bind.apply(e,r));return n&&o(a,n.prototype),a}).apply(null,arguments)}function c(e){var t="function"==typeof Map?new Map:void 0;return(c=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,a)}function a(){return i(e,arguments,r(this).constructor)}return a.prototype=Object.create(e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),o(a,e)})(e)}var l=/%[sdj%]/g,u=function(){};function s(e){if(!e||!e.length)return null;var t={};return e.forEach((function(e){var n=e.field;t[n]=t[n]||[],t[n].push(e)})),t}function f(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=1,o=t[0],a=t.length;if("function"==typeof o)return o.apply(null,t.slice(1));if("string"==typeof o){var i=String(o).replace(l,(function(e){if("%%"===e)return"%";if(r>=a)return e;switch(e){case"%s":return String(t[r++]);case"%d":return Number(t[r++]);case"%j":try{return JSON.stringify(t[r++])}catch(e){return"[Circular]"}break;default:return e}}));return i}return o}function d(e,t){return null==e||(!("array"!==t||!Array.isArray(e)||e.length)||!(!function(e){return"string"===e||"url"===e||"hex"===e||"email"===e||"date"===e||"pattern"===e}(t)||"string"!=typeof e||e))}function p(e,t,n){var r=0,o=e.length;!function a(i){if(i&&i.length)n(i);else{var c=r;r+=1,c<o?t(e[c],a):n([])}}([])}void 0!==e&&e.env;var h=function(e){var t,n;function r(t,n){var r;return(r=e.call(this,"Async Validation Error")||this).errors=t,r.fields=n,r}return n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,o(t,n),r}(c(Error));function m(e,t,n,r){if(t.first){var o=new Promise((function(t,o){p(function(e){var t=[];return Object.keys(e).forEach((function(n){t.push.apply(t,e[n])})),t}(e),n,(function(e){return r(e),e.length?o(new h(e,s(e))):t()}))}));return o.catch((function(e){return e})),o}var a=t.firstFields||[];!0===a&&(a=Object.keys(e));var i=Object.keys(e),c=i.length,l=0,u=[],f=new Promise((function(t,o){var f=function(e){if(u.push.apply(u,e),++l===c)return r(u),u.length?o(new h(u,s(u))):t()};i.length||(r(u),t()),i.forEach((function(t){var r=e[t];-1!==a.indexOf(t)?p(r,n,f):function(e,t,n){var r=[],o=0,a=e.length;function i(e){r.push.apply(r,e),++o===a&&n(r)}e.forEach((function(e){t(e,i)}))}(r,n,f)}))}));return f.catch((function(e){return e})),f}function v(e){return function(t){return t&&t.message?(t.field=t.field||e.fullField,t):{message:"function"==typeof t?t():t,field:t.field||e.fullField}}}function y(e,t){if(t)for(var r in t)if(t.hasOwnProperty(r)){var o=t[r];"object"==typeof o&&"object"==typeof e[r]?e[r]=n({},e[r],o):e[r]=o}return e}function _(e,t,n,r,o,a){!e.required||n.hasOwnProperty(e.field)&&!d(t,a||e.type)||r.push(f(o.messages.required,e.fullField))}var b={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,url:new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},g={integer:function(e){return g.number(e)&&parseInt(e,10)===e},float:function(e){return g.number(e)&&!g.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear&&!isNaN(e.getTime())},number:function(e){return!isNaN(e)&&"number"==typeof e},object:function(e){return"object"==typeof e&&!g.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&!!e.match(b.email)&&e.length<255},url:function(e){return"string"==typeof e&&!!e.match(b.url)},hex:function(e){return"string"==typeof e&&!!e.match(b.hex)}};var M={required:_,whitespace:function(e,t,n,r,o){(/^\s+$/.test(t)||""===t)&&r.push(f(o.messages.whitespace,e.fullField))},type:function(e,t,n,r,o){if(e.required&&void 0===t)_(e,t,n,r,o);else{var a=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(a)>-1?g[a](t)||r.push(f(o.messages.types[a],e.fullField,e.type)):a&&typeof t!==e.type&&r.push(f(o.messages.types[a],e.fullField,e.type))}},range:function(e,t,n,r,o){var a="number"==typeof e.len,i="number"==typeof e.min,c="number"==typeof e.max,l=t,u=null,s="number"==typeof t,d="string"==typeof t,p=Array.isArray(t);if(s?u="number":d?u="string":p&&(u="array"),!u)return!1;p&&(l=t.length),d&&(l=t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length),a?l!==e.len&&r.push(f(o.messages[u].len,e.fullField,e.len)):i&&!c&&l<e.min?r.push(f(o.messages[u].min,e.fullField,e.min)):c&&!i&&l>e.max?r.push(f(o.messages[u].max,e.fullField,e.max)):i&&c&&(l<e.min||l>e.max)&&r.push(f(o.messages[u].range,e.fullField,e.min,e.max))},enum:function(e,t,n,r,o){e.enum=Array.isArray(e.enum)?e.enum:[],-1===e.enum.indexOf(t)&&r.push(f(o.messages.enum,e.fullField,e.enum.join(", ")))},pattern:function(e,t,n,r,o){if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||r.push(f(o.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){new RegExp(e.pattern).test(t)||r.push(f(o.messages.pattern.mismatch,e.fullField,t,e.pattern))}}};function w(e,t,n,r,o){var a=e.type,i=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(d(t,a)&&!e.required)return n();M.required(e,t,r,i,o,a),d(t,a)||M.type(e,t,r,i,o)}n(i)}var O={string:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(d(t,"string")&&!e.required)return n();M.required(e,t,r,a,o,"string"),d(t,"string")||(M.type(e,t,r,a,o),M.range(e,t,r,a,o),M.pattern(e,t,r,a,o),!0===e.whitespace&&M.whitespace(e,t,r,a,o))}n(a)},method:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(d(t)&&!e.required)return n();M.required(e,t,r,a,o),void 0!==t&&M.type(e,t,r,a,o)}n(a)},number:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(""===t&&(t=void 0),d(t)&&!e.required)return n();M.required(e,t,r,a,o),void 0!==t&&(M.type(e,t,r,a,o),M.range(e,t,r,a,o))}n(a)},boolean:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(d(t)&&!e.required)return n();M.required(e,t,r,a,o),void 0!==t&&M.type(e,t,r,a,o)}n(a)},regexp:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(d(t)&&!e.required)return n();M.required(e,t,r,a,o),d(t)||M.type(e,t,r,a,o)}n(a)},integer:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(d(t)&&!e.required)return n();M.required(e,t,r,a,o),void 0!==t&&(M.type(e,t,r,a,o),M.range(e,t,r,a,o))}n(a)},float:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(d(t)&&!e.required)return n();M.required(e,t,r,a,o),void 0!==t&&(M.type(e,t,r,a,o),M.range(e,t,r,a,o))}n(a)},array:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(null==t&&!e.required)return n();M.required(e,t,r,a,o,"array"),null!=t&&(M.type(e,t,r,a,o),M.range(e,t,r,a,o))}n(a)},object:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(d(t)&&!e.required)return n();M.required(e,t,r,a,o),void 0!==t&&M.type(e,t,r,a,o)}n(a)},enum:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(d(t)&&!e.required)return n();M.required(e,t,r,a,o),void 0!==t&&M.enum(e,t,r,a,o)}n(a)},pattern:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(d(t,"string")&&!e.required)return n();M.required(e,t,r,a,o),d(t,"string")||M.pattern(e,t,r,a,o)}n(a)},date:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(d(t,"date")&&!e.required)return n();var i;if(M.required(e,t,r,a,o),!d(t,"date"))i=t instanceof Date?t:new Date(t),M.type(e,i,r,a,o),i&&M.range(e,i.getTime(),r,a,o)}n(a)},url:w,hex:w,email:w,required:function(e,t,n,r,o){var a=[],i=Array.isArray(t)?"array":typeof t;M.required(e,t,r,a,o,i),n(a)},any:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(d(t)&&!e.required)return n();M.required(e,t,r,a,o)}n(a)}};function k(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var L=k();function x(e){this.rules=null,this._messages=L,this.define(e)}x.prototype={messages:function(e){return e&&(this._messages=y(k(),e)),this._messages},define:function(e){if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!=typeof e||Array.isArray(e))throw new Error("Rules must be an object");var t,n;for(t in this.rules={},e)e.hasOwnProperty(t)&&(n=e[t],this.rules[t]=Array.isArray(n)?n:[n])},validate:function(e,t,r){var o=this;void 0===t&&(t={}),void 0===r&&(r=function(){});var a,i,c=e,l=t,u=r;if("function"==typeof l&&(u=l,l={}),!this.rules||0===Object.keys(this.rules).length)return u&&u(),Promise.resolve();if(l.messages){var d=this.messages();d===L&&(d=k()),y(d,l.messages),l.messages=d}else l.messages=this.messages();var p={};(l.keys||Object.keys(this.rules)).forEach((function(t){a=o.rules[t],i=c[t],a.forEach((function(r){var a=r;"function"==typeof a.transform&&(c===e&&(c=n({},c)),i=c[t]=a.transform(i)),(a="function"==typeof a?{validator:a}:n({},a)).validator=o.getValidationMethod(a),a.field=t,a.fullField=a.fullField||t,a.type=o.getType(a),a.validator&&(p[t]=p[t]||[],p[t].push({rule:a,value:i,source:c,field:t}))}))}));var h={};return m(p,l,(function(e,t){var r,o=e.rule,a=!("object"!==o.type&&"array"!==o.type||"object"!=typeof o.fields&&"object"!=typeof o.defaultField);function i(e,t){return n({},t,{fullField:o.fullField+"."+e})}function c(r){void 0===r&&(r=[]);var c=r;if(Array.isArray(c)||(c=[c]),!l.suppressWarning&&c.length&&x.warning("async-validator:",c),c.length&&void 0!==o.message&&(c=[].concat(o.message)),c=c.map(v(o)),l.first&&c.length)return h[o.field]=1,t(c);if(a){if(o.required&&!e.value)return void 0!==o.message?c=[].concat(o.message).map(v(o)):l.error&&(c=[l.error(o,f(l.messages.required,o.field))]),t(c);var u={};if(o.defaultField)for(var s in e.value)e.value.hasOwnProperty(s)&&(u[s]=o.defaultField);for(var d in u=n({},u,e.rule.fields))if(u.hasOwnProperty(d)){var p=Array.isArray(u[d])?u[d]:[u[d]];u[d]=p.map(i.bind(null,d))}var m=new x(u);m.messages(l.messages),e.rule.options&&(e.rule.options.messages=l.messages,e.rule.options.error=l.error),m.validate(e.value,e.rule.options||l,(function(e){var n=[];c&&c.length&&n.push.apply(n,c),e&&e.length&&n.push.apply(n,e),t(n.length?n:null)}))}else t(c)}a=a&&(o.required||!o.required&&e.value),o.field=e.field,o.asyncValidator?r=o.asyncValidator(o,e.value,c,e.source,l):o.validator&&(!0===(r=o.validator(o,e.value,c,e.source,l))?c():!1===r?c(o.message||o.field+" fails"):r instanceof Array?c(r):r instanceof Error&&c(r.message)),r&&r.then&&r.then((function(){return c()}),(function(e){return c(e)}))}),(function(e){!function(e){var t,n,r,o=[],a={};for(t=0;t<e.length;t++)n=e[t],r=void 0,Array.isArray(n)?o=(r=o).concat.apply(r,n):o.push(n);o.length?a=s(o):(o=null,a=null),u(o,a)}(e)}))},getType:function(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type="pattern"),"function"!=typeof e.validator&&e.type&&!O.hasOwnProperty(e.type))throw new Error(f("Unknown rule type %s",e.type));return e.type||"string"},getValidationMethod:function(e){if("function"==typeof e.validator)return e.validator;var t=Object.keys(e),n=t.indexOf("message");return-1!==n&&t.splice(n,1),1===t.length&&"required"===t[0]?O.required:O[this.getType(e)]||!1}},x.register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");O[e]=t},x.warning=u,x.messages=L,x.validators=O,t.a=x}).call(this,n(101))},function(e,t,n){"use strict";e.exports=n(559)},function(e,t){function n(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=n=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=n=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),n(t)}e.exports=n,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(98)),o=l(n(736)),a=l(n(737)),i=l(n(744)),c=l(n(754));function l(e){return e&&e.__esModule?e:{default:e}}r.default.Group=o.default,r.default.Search=a.default,r.default.TextArea=i.default,r.default.Password=c.default;var u=r.default;t.default=u},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.ExceptionMap=t.IconMap=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=d();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}n.default=e,t&&t.set(e,n);return n}(n(0)),a=f(n(2)),i=n(32),c=f(n(34)),l=f(n(758)),u=f(n(759)),s=f(n(760));function f(e){return e&&e.__esModule?e:{default:e}}function d(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return d=function(){return e},e}var p={success:"check-circle",error:"close-circle",info:"exclamation-circle",warning:"warning"};t.IconMap=p;var h={404:l.default,500:u.default,403:s.default};t.ExceptionMap=h;var m=Object.keys(h),v=function(e){return o.createElement(i.ConfigConsumer,null,(function(t){var n=t.getPrefixCls,r=e.prefixCls,i=e.className,l=e.subTitle,u=e.title,s=e.style,f=e.children,d=e.status,v=n("result",r),y=(0,a.default)(v,"".concat(v,"-").concat(d),i);return o.createElement("div",{className:y,style:s},function(e,t){var n=t.status,r=t.icon,i=(0,a.default)("".concat(e,"-icon"));if(m.includes("".concat(n))){var l=h[n];return o.createElement("div",{className:"".concat(i," ").concat(e,"-image")},o.createElement(l,null))}var u=p[n],s=r||o.createElement(c.default,{type:u,theme:"filled"});return o.createElement("div",{className:i},s)}(v,e),o.createElement("div",{className:"".concat(v,"-title")},u),l&&o.createElement("div",{className:"".concat(v,"-subtitle")},l),f&&o.createElement("div",{className:"".concat(v,"-content")},f),function(e,t){var n=t.extra;return n&&o.createElement("div",{className:"".concat(e,"-extra")},n)}(v,e))}))};v.defaultProps={status:"info"},v.PRESENTED_IMAGE_403=h[403],v.PRESENTED_IMAGE_404=h[404],v.PRESENTED_IMAGE_500=h[500];var y=v;t.default=y},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=((r=n(761))&&r.__esModule?r:{default:r}).default;t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(392).Row;t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(392).Col;t.default=r},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(0)),a=s(n(397)),i=l(n(773)),c=l(n(34));function l(e){return e&&e.__esModule?e:{default:e}}function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function s(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&&t.set(e,n),n}function f(){return(f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function d(e){var t=f({type:"warning",icon:o.createElement(c.default,{type:"exclamation-circle"}),okCancel:!1},e);return(0,i.default)(t)}a.default.info=function(e){var t=f({type:"info",icon:o.createElement(c.default,{type:"info-circle"}),okCancel:!1},e);return(0,i.default)(t)},a.default.success=function(e){var t=f({type:"success",icon:o.createElement(c.default,{type:"check-circle"}),okCancel:!1},e);return(0,i.default)(t)},a.default.error=function(e){var t=f({type:"error",icon:o.createElement(c.default,{type:"close-circle"}),okCancel:!1},e);return(0,i.default)(t)},a.default.warning=d,a.default.warn=d,a.default.confirm=function(e){var t=f({type:"confirm",okCancel:!0},e);return(0,i.default)(t)},a.default.destroyAll=function(){for(;a.destroyFns.length;){var e=a.destroyFns.pop();e&&e()}};var p=a.default;t.default=p},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=((r=n(775))&&r.__esModule?r:{default:r}).default;t.default=o},function(e,t,n){"use strict";n.d(t,"a",(function(){return M}));var r=n(0),o=n.n(r),a={};function i(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.url,n=void 0===t?"":t,r=e.method,o=void 0===r?"":r,a=e.responseType,i=void 0===a?"":a,c=e.body,l=void 0===c?"":c;return[n,o.toUpperCase(),i,l].join("||")}function c(e){var t=e.requestKey,n=e.res,r=e.err;(a[t]||[]).forEach((function(e){n?e.resolve(n):e.reject(r)})),a[t]=null}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2],r=void 0,o=void 0;n?(r=n,o=t):t.responseType?(r=t,o={}):(r={},o=t);var l=r,u=l.requestKey,s=l.responseType,f=void 0===s?"":s,d=l.dedupe,p=void 0===d||d,h=u||i({url:e.url||e,method:o.method||e.method||"",body:o.body||e.body||""}),m=void 0;if(p){a[h]||(a[h]=[]);var v=a[h],y=Boolean(v.length),_={};if(m=new Promise((function(e,t){_.resolve=e,_.reject=t})),v.push(_),y)return m}var b=fetch(e,o).then((function(e){var t=void 0;return t=f instanceof Function?f(e):f||(204===e.status?"text":"json"),e[t]().then((function(t){if(e.data=t,!p)return e;c({requestKey:h,res:e})}),(function(){if(e.data=null,!p)return e;c({requestKey:h,res:e})}))}),(function(e){if(!p)return Promise.reject(e);c({requestKey:h,err:e})}));return p?m:b}var u=o.a.createContext(null);var s=function(e){var t=function(e,t){if(!e)return null;if(e instanceof Headers)return e.get(t);var n=t.toLowerCase(),r=Object.keys(e).find((function(e){return e.toLowerCase()===n}));return r?e[r]:null}(e.headers,"Content-Type");return t&&-1!==t.indexOf("application/json")?JSON.stringify(e.body):e.body},f=function(e){return"GET"===(e=e.toUpperCase())||"HEAD"===e||"OPTIONS"===e},d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p="network-only",h="cache-and-network",m="exact-cache-and-network",v="cache-first",y=function(e){return console.error(e)},_=function(){return null};function b(e,t){switch(t.type){case"in-flight":return!0===e.fetching?e:d({},e,{fetching:!0});case"response":return d({},e,{error:null,fetching:t.payload.fetching,response:t.payload.response});case"error":return d({},e,{fetching:!1,error:t.payload.error});default:return e}}var g=function(e){return e};function M(e){var t=e.url,n=e.method,o=void 0===n?"GET":n,a=e.lazy,c=void 0===a?null:a,M=e.requestKey,w=void 0===M?null:M,O=e.init,k=void 0===O?{}:O,L=e.dedupeOptions,x=void 0===L?{}:L,z=e.cachePolicy,S=void 0===z?null:z,C=e.cacheResponse,j=void 0===C?null:C,E=e.onError,T=void 0===E?y:E,P=e.onSuccess,H=void 0===P?_:P,D=e.refreshDoFetch,Y=void 0===D?g:D,V=Object(r.useContext)(u),N=Object(r.useRef)(),F=null==c?!f(o):c,A=null===S?function(e){return"GET"===(e=e.toUpperCase())||"HEAD"===e||"OPTIONS"===e?v:p}(o):S,R=Object(r.useReducer)(b,{response:null,fetching:!F,error:null}),I=R[0],W=R[1],U=w||i(d({url:t,method:o.toUpperCase()},k));function K(){W({type:"in-flight"})}function B(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];W({type:"response",payload:{response:e,fetching:t}})}function q(e){W({type:"error",payload:{error:e}})}function $(){N.current&&N.current.abort()}function G(){return null!==j?j:f(o)}var J=Object(r.useCallback)((function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};$(),N.current=new AbortController,K();var r=d({},k,e),a=d({},x,n);return l(r.url||t,d({},r,{method:o,signal:N.current.signal,body:r.body?s(r):void 0}),a).then((function(e){return e.ok?(G()&&V.set(U,e),B(e),H(e)):(q(e),T(e)),e})).catch((function(e){return N.current.signal.aborted||q(e),T(e),e})).finally((function(){N.current=null}))}),[Y(U)]);return Object(r.useEffect)((function(){if(!0!==F){var e=V.get(U);if(A===v&&e)return H(e),B(e);A===h&&e&&(H(e),B(e,!0)),A===m&&(e?(H(e),B(e,!0)):B(null)),A===p&&B(null),J(k)}}),[U,F]),Object(r.useEffect)((function(){return function(){$()}}),[]),{response:I.response,data:I.response?I.response.data:null,fetching:I.fetching,error:I.error,requestKey:U,doFetch:J}}},function(e,t,n){e.exports=n(873)},function(e,t,n){"use strict"; /** @license React v16.9.0 * react.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var r=n(90),o="function"==typeof Symbol&&Symbol.for,a=o?Symbol.for("react.element"):60103,i=o?Symbol.for("react.portal"):60106,c=o?Symbol.for("react.fragment"):60107,l=o?Symbol.for("react.strict_mode"):60108,u=o?Symbol.for("react.profiler"):60114,s=o?Symbol.for("react.provider"):60109,f=o?Symbol.for("react.context"):60110,d=o?Symbol.for("react.forward_ref"):60112,p=o?Symbol.for("react.suspense"):60113,h=o?Symbol.for("react.suspense_list"):60120,m=o?Symbol.for("react.memo"):60115,v=o?Symbol.for("react.lazy"):60116;o&&Symbol.for("react.fundamental"),o&&Symbol.for("react.responder");var y="function"==typeof Symbol&&Symbol.iterator;function _(e){for(var t=e.message,n="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;r<arguments.length;r++)n+="&args[]="+encodeURIComponent(arguments[r]);return e.message="Minified React error #"+t+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",e}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g={};function M(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||b}function w(){}function O(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||b}M.prototype.isReactComponent={},M.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw _(Error(85));this.updater.enqueueSetState(this,e,t,"setState")},M.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},w.prototype=M.prototype;var k=O.prototype=new w;k.constructor=O,r(k,M.prototype),k.isPureReactComponent=!0;var L={current:null},x={suspense:null},z={current:null},S=Object.prototype.hasOwnProperty,C={key:!0,ref:!0,__self:!0,__source:!0};function j(e,t,n){var r=void 0,o={},i=null,c=null;if(null!=t)for(r in void 0!==t.ref&&(c=t.ref),void 0!==t.key&&(i=""+t.key),t)S.call(t,r)&&!C.hasOwnProperty(r)&&(o[r]=t[r]);var l=arguments.length-2;if(1===l)o.children=n;else if(1<l){for(var u=Array(l),s=0;s<l;s++)u[s]=arguments[s+2];o.children=u}if(e&&e.defaultProps)for(r in l=e.defaultProps)void 0===o[r]&&(o[r]=l[r]);return{$$typeof:a,type:e,key:i,ref:c,props:o,_owner:z.current}}function E(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var T=/\/+/g,P=[];function H(e,t,n,r){if(P.length){var o=P.pop();return o.result=e,o.keyPrefix=t,o.func=n,o.context=r,o.count=0,o}return{result:e,keyPrefix:t,func:n,context:r,count:0}}function D(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>P.length&&P.push(e)}function Y(e,t,n){return null==e?0:function e(t,n,r,o){var c=typeof t;"undefined"!==c&&"boolean"!==c||(t=null);var l=!1;if(null===t)l=!0;else switch(c){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case a:case i:l=!0}}if(l)return r(o,t,""===n?"."+V(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var u=0;u<t.length;u++){var s=n+V(c=t[u],u);l+=e(c,s,r,o)}else if(null===t||"object"!=typeof t?s=null:s="function"==typeof(s=y&&t[y]||t["@@iterator"])?s:null,"function"==typeof s)for(t=s.call(t),u=0;!(c=t.next()).done;)l+=e(c=c.value,s=n+V(c,u++),r,o);else if("object"===c)throw r=""+t,_(Error(31),"[object Object]"===r?"object with keys {"+Object.keys(t).join(", ")+"}":r,"");return l}(e,"",t,n)}function V(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function N(e,t){e.func.call(e.context,t,e.count++)}function F(e,t,n){var r=e.result,o=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?A(e,r,n,(function(e){return e})):null!=e&&(E(e)&&(e=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,o+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(T,"$&/")+"/")+n)),r.push(e))}function A(e,t,n,r,o){var a="";null!=n&&(a=(""+n).replace(T,"$&/")+"/"),Y(e,F,t=H(t,a,r,o)),D(t)}function R(){var e=L.current;if(null===e)throw _(Error(321));return e}var I={Children:{map:function(e,t,n){if(null==e)return e;var r=[];return A(e,r,null,t,n),r},forEach:function(e,t,n){if(null==e)return e;Y(e,N,t=H(null,null,t,n)),D(t)},count:function(e){return Y(e,(function(){return null}),null)},toArray:function(e){var t=[];return A(e,t,null,(function(e){return e})),t},only:function(e){if(!E(e))throw _(Error(143));return e}},createRef:function(){return{current:null}},Component:M,PureComponent:O,createContext:function(e,t){return void 0===t&&(t=null),(e={$$typeof:f,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:s,_context:e},e.Consumer=e},forwardRef:function(e){return{$$typeof:d,render:e}},lazy:function(e){return{$$typeof:v,_ctor:e,_status:-1,_result:null}},memo:function(e,t){return{$$typeof:m,type:e,compare:void 0===t?null:t}},useCallback:function(e,t){return R().useCallback(e,t)},useContext:function(e,t){return R().useContext(e,t)},useEffect:function(e,t){return R().useEffect(e,t)},useImperativeHandle:function(e,t,n){return R().useImperativeHandle(e,t,n)},useDebugValue:function(){},useLayoutEffect:function(e,t){return R().useLayoutEffect(e,t)},useMemo:function(e,t){return R().useMemo(e,t)},useReducer:function(e,t,n){return R().useReducer(e,t,n)},useRef:function(e){return R().useRef(e)},useState:function(e){return R().useState(e)},Fragment:c,Profiler:u,StrictMode:l,Suspense:p,unstable_SuspenseList:h,createElement:j,cloneElement:function(e,t,n){if(null==e)throw _(Error(267),e);var o=void 0,i=r({},e.props),c=e.key,l=e.ref,u=e._owner;if(null!=t){void 0!==t.ref&&(l=t.ref,u=z.current),void 0!==t.key&&(c=""+t.key);var s=void 0;for(o in e.type&&e.type.defaultProps&&(s=e.type.defaultProps),t)S.call(t,o)&&!C.hasOwnProperty(o)&&(i[o]=void 0===t[o]&&void 0!==s?s[o]:t[o])}if(1===(o=arguments.length-2))i.children=n;else if(1<o){s=Array(o);for(var f=0;f<o;f++)s[f]=arguments[f+2];i.children=s}return{$$typeof:a,type:e.type,key:c,ref:l,props:i,_owner:u}},createFactory:function(e){var t=j.bind(null,e);return t.type=e,t},isValidElement:E,version:"16.9.0",unstable_withSuspenseConfig:function(e,t){var n=x.suspense;x.suspense=void 0===t?null:t;try{e()}finally{x.suspense=n}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:L,ReactCurrentBatchConfig:x,ReactCurrentOwner:z,IsSomeRendererActing:{current:!1},assign:r}},W={default:I},U=W&&I||W;e.exports=U.default||U},function(e,t,n){"use strict"; /** @license React v16.9.0 * react-dom.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var r=n(0),o=n(90),a=n(437);function i(e){for(var t=e.message,n="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;r<arguments.length;r++)n+="&args[]="+encodeURIComponent(arguments[r]);return e.message="Minified React error #"+t+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",e}if(!r)throw i(Error(227));var c=null,l={};function u(){if(c)for(var e in l){var t=l[e],n=c.indexOf(e);if(!(-1<n))throw i(Error(96),e);if(!f[n]){if(!t.extractEvents)throw i(Error(97),e);for(var r in f[n]=t,n=t.eventTypes){var o=void 0,a=n[r],u=t,p=r;if(d.hasOwnProperty(p))throw i(Error(99),p);d[p]=a;var h=a.phasedRegistrationNames;if(h){for(o in h)h.hasOwnProperty(o)&&s(h[o],u,p);o=!0}else a.registrationName?(s(a.registrationName,u,p),o=!0):o=!1;if(!o)throw i(Error(98),r,e)}}}}function s(e,t,n){if(p[e])throw i(Error(100),e);p[e]=t,h[e]=t.eventTypes[n].dependencies}var f=[],d={},p={},h={};function m(e,t,n,r,o,a,i,c,l){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(e){this.onError(e)}}var v=!1,y=null,_=!1,b=null,g={onError:function(e){v=!0,y=e}};function M(e,t,n,r,o,a,i,c,l){v=!1,y=null,m.apply(g,arguments)}var w=null,O=null,k=null;function L(e,t,n){var r=e.type||"unknown-event";e.currentTarget=k(n),function(e,t,n,r,o,a,c,l,u){if(M.apply(this,arguments),v){if(!v)throw i(Error(198));var s=y;v=!1,y=null,_||(_=!0,b=s)}}(r,t,void 0,e),e.currentTarget=null}function x(e,t){if(null==t)throw i(Error(30));return null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function z(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var S=null;function C(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var r=0;r<t.length&&!e.isPropagationStopped();r++)L(e,t[r],n[r]);else t&&L(e,t,n);e._dispatchListeners=null,e._dispatchInstances=null,e.isPersistent()||e.constructor.release(e)}}function j(e){if(null!==e&&(S=x(S,e)),e=S,S=null,e){if(z(e,C),S)throw i(Error(95));if(_)throw e=b,_=!1,b=null,e}}var E={injectEventPluginOrder:function(e){if(c)throw i(Error(101));c=Array.prototype.slice.call(e),u()},injectEventPluginsByName:function(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var r=e[t];if(!l.hasOwnProperty(t)||l[t]!==r){if(l[t])throw i(Error(102),t);l[t]=r,n=!0}}n&&u()}};function T(e,t){var n=e.stateNode;if(!n)return null;var r=w(n);if(!r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw i(Error(231),t,typeof n);return n}var P=Math.random().toString(36).slice(2),H="__reactInternalInstance$"+P,D="__reactEventHandlers$"+P;function Y(e){if(e[H])return e[H];for(;!e[H];){if(!e.parentNode)return null;e=e.parentNode}return 5===(e=e[H]).tag||6===e.tag?e:null}function V(e){return!(e=e[H])||5!==e.tag&&6!==e.tag?null:e}function N(e){if(5===e.tag||6===e.tag)return e.stateNode;throw i(Error(33))}function F(e){return e[D]||null}function A(e){do{e=e.return}while(e&&5!==e.tag);return e||null}function R(e,t,n){(t=T(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=x(n._dispatchListeners,t),n._dispatchInstances=x(n._dispatchInstances,e))}function I(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=A(t);for(t=n.length;0<t--;)R(n[t],"captured",e);for(t=0;t<n.length;t++)R(n[t],"bubbled",e)}}function W(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=T(e,n.dispatchConfig.registrationName))&&(n._dispatchListeners=x(n._dispatchListeners,t),n._dispatchInstances=x(n._dispatchInstances,e))}function U(e){e&&e.dispatchConfig.registrationName&&W(e._targetInst,null,e)}function K(e){z(e,I)}var B=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement);function q(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var $={animationend:q("Animation","AnimationEnd"),animationiteration:q("Animation","AnimationIteration"),animationstart:q("Animation","AnimationStart"),transitionend:q("Transition","TransitionEnd")},G={},J={};function Q(e){if(G[e])return G[e];if(!$[e])return e;var t,n=$[e];for(t in n)if(n.hasOwnProperty(t)&&t in J)return G[e]=n[t];return e}B&&(J=document.createElement("div").style,"AnimationEvent"in window||(delete $.animationend.animation,delete $.animationiteration.animation,delete $.animationstart.animation),"TransitionEvent"in window||delete $.transitionend.transition);var X=Q("animationend"),Z=Q("animationiteration"),ee=Q("animationstart"),te=Q("transitionend"),ne="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),re=null,oe=null,ae=null;function ie(){if(ae)return ae;var e,t,n=oe,r=n.length,o="value"in re?re.value:re.textContent,a=o.length;for(e=0;e<r&&n[e]===o[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===o[a-t];t++);return ae=o.slice(e,1<t?1-t:void 0)}function ce(){return!0}function le(){return!1}function ue(e,t,n,r){for(var o in this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,e=this.constructor.Interface)e.hasOwnProperty(o)&&((t=e[o])?this[o]=t(n):"target"===o?this.target=r:this[o]=n[o]);return this.isDefaultPrevented=(null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue)?ce:le,this.isPropagationStopped=le,this}function se(e,t,n,r){if(this.eventPool.length){var o=this.eventPool.pop();return this.call(o,e,t,n,r),o}return new this(e,t,n,r)}function fe(e){if(!(e instanceof this))throw i(Error(279));e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function de(e){e.eventPool=[],e.getPooled=se,e.release=fe}o(ue.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=ce)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=ce)},persist:function(){this.isPersistent=ce},isPersistent:le,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=le,this._dispatchInstances=this._dispatchListeners=null}}),ue.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},ue.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var a=new t;return o(a,n.prototype),n.prototype=a,n.prototype.constructor=n,n.Interface=o({},r.Interface,e),n.extend=r.extend,de(n),n},de(ue);var pe=ue.extend({data:null}),he=ue.extend({data:null}),me=[9,13,27,32],ve=B&&"CompositionEvent"in window,ye=null;B&&"documentMode"in document&&(ye=document.documentMode);var _e=B&&"TextEvent"in window&&!ye,be=B&&(!ve||ye&&8<ye&&11>=ye),ge=String.fromCharCode(32),Me={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},we=!1;function Oe(e,t){switch(e){case"keyup":return-1!==me.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function ke(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Le=!1;var xe={eventTypes:Me,extractEvents:function(e,t,n,r){var o=void 0,a=void 0;if(ve)e:{switch(e){case"compositionstart":o=Me.compositionStart;break e;case"compositionend":o=Me.compositionEnd;break e;case"compositionupdate":o=Me.compositionUpdate;break e}o=void 0}else Le?Oe(e,n)&&(o=Me.compositionEnd):"keydown"===e&&229===n.keyCode&&(o=Me.compositionStart);return o?(be&&"ko"!==n.locale&&(Le||o!==Me.compositionStart?o===Me.compositionEnd&&Le&&(a=ie()):(oe="value"in(re=r)?re.value:re.textContent,Le=!0)),o=pe.getPooled(o,t,n,r),a?o.data=a:null!==(a=ke(n))&&(o.data=a),K(o),a=o):a=null,(e=_e?function(e,t){switch(e){case"compositionend":return ke(t);case"keypress":return 32!==t.which?null:(we=!0,ge);case"textInput":return(e=t.data)===ge&&we?null:e;default:return null}}(e,n):function(e,t){if(Le)return"compositionend"===e||!ve&&Oe(e,t)?(e=ie(),ae=oe=re=null,Le=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return be&&"ko"!==t.locale?null:t.data;default:return null}}(e,n))?((t=he.getPooled(Me.beforeInput,t,n,r)).data=e,K(t)):t=null,null===a?t:null===t?a:[a,t]}},ze=null,Se=null,Ce=null;function je(e){if(e=O(e)){if("function"!=typeof ze)throw i(Error(280));var t=w(e.stateNode);ze(e.stateNode,e.type,t)}}function Ee(e){Se?Ce?Ce.push(e):Ce=[e]:Se=e}function Te(){if(Se){var e=Se,t=Ce;if(Ce=Se=null,je(e),t)for(e=0;e<t.length;e++)je(t[e])}}function Pe(e,t){return e(t)}function He(e,t,n,r){return e(t,n,r)}function De(){}var Ye=Pe,Ve=!1;function Ne(){null===Se&&null===Ce||(De(),Te())}var Fe={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Ae(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Fe[e.type]:"textarea"===t}function Re(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}function Ie(e){if(!B)return!1;var t=(e="on"+e)in document;return t||((t=document.createElement("div")).setAttribute(e,"return;"),t="function"==typeof t[e]),t}function We(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function Ue(e){e._valueTracker||(e._valueTracker=function(e){var t=We(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Ke(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=We(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}var Be=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Be.hasOwnProperty("ReactCurrentDispatcher")||(Be.ReactCurrentDispatcher={current:null}),Be.hasOwnProperty("ReactCurrentBatchConfig")||(Be.ReactCurrentBatchConfig={suspense:null});var qe=/^(.*)[\\\/]/,$e="function"==typeof Symbol&&Symbol.for,Ge=$e?Symbol.for("react.element"):60103,Je=$e?Symbol.for("react.portal"):60106,Qe=$e?Symbol.for("react.fragment"):60107,Xe=$e?Symbol.for("react.strict_mode"):60108,Ze=$e?Symbol.for("react.profiler"):60114,et=$e?Symbol.for("react.provider"):60109,tt=$e?Symbol.for("react.context"):60110,nt=$e?Symbol.for("react.concurrent_mode"):60111,rt=$e?Symbol.for("react.forward_ref"):60112,ot=$e?Symbol.for("react.suspense"):60113,at=$e?Symbol.for("react.suspense_list"):60120,it=$e?Symbol.for("react.memo"):60115,ct=$e?Symbol.for("react.lazy"):60116;$e&&Symbol.for("react.fundamental"),$e&&Symbol.for("react.responder");var lt="function"==typeof Symbol&&Symbol.iterator;function ut(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=lt&&e[lt]||e["@@iterator"])?e:null}function st(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case Qe:return"Fragment";case Je:return"Portal";case Ze:return"Profiler";case Xe:return"StrictMode";case ot:return"Suspense";case at:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case tt:return"Context.Consumer";case et:return"Context.Provider";case rt:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case it:return st(e.type);case ct:if(e=1===e._status?e._result:null)return st(e)}return null}function ft(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var r=e._debugOwner,o=e._debugSource,a=st(e.type);n=null,r&&(n=st(r.type)),r=a,a="",o?a=" (at "+o.fileName.replace(qe,"")+":"+o.lineNumber+")":n&&(a=" (created by "+n+")"),n="\n in "+(r||"Unknown")+a}t+=n,e=e.return}while(e);return t}var dt=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,pt=Object.prototype.hasOwnProperty,ht={},mt={};function vt(e,t,n,r,o,a){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a}var yt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){yt[e]=new vt(e,0,!1,e,null,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];yt[t]=new vt(t,1,!1,e[1],null,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){yt[e]=new vt(e,2,!1,e.toLowerCase(),null,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){yt[e]=new vt(e,2,!1,e,null,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){yt[e]=new vt(e,3,!1,e.toLowerCase(),null,!1)})),["checked","multiple","muted","selected"].forEach((function(e){yt[e]=new vt(e,3,!0,e,null,!1)})),["capture","download"].forEach((function(e){yt[e]=new vt(e,4,!1,e,null,!1)})),["cols","rows","size","span"].forEach((function(e){yt[e]=new vt(e,6,!1,e,null,!1)})),["rowSpan","start"].forEach((function(e){yt[e]=new vt(e,5,!1,e.toLowerCase(),null,!1)}));var _t=/[\-:]([a-z])/g;function bt(e){return e[1].toUpperCase()}function gt(e,t,n,r){var o=yt.hasOwnProperty(t)?yt[t]:null;(null!==o?0===o.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!pt.call(mt,e)||!pt.call(ht,e)&&(dt.test(e)?mt[e]=!0:(ht[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}function Mt(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function wt(e,t){var n=t.checked;return o({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Ot(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=Mt(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function kt(e,t){null!=(t=t.checked)&>(e,"checked",t,!1)}function Lt(e,t){kt(e,t);var n=Mt(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?zt(e,t.type,n):t.hasOwnProperty("defaultValue")&&zt(e,t.type,Mt(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function xt(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!e.defaultChecked,e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function zt(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(_t,bt);yt[t]=new vt(t,1,!1,e,null,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(_t,bt);yt[t]=new vt(t,1,!1,e,"http://www.w3.org/1999/xlink",!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(_t,bt);yt[t]=new vt(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1)})),["tabIndex","crossOrigin"].forEach((function(e){yt[e]=new vt(e,1,!1,e.toLowerCase(),null,!1)})),yt.xlinkHref=new vt("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0),["src","href","action","formAction"].forEach((function(e){yt[e]=new vt(e,1,!1,e.toLowerCase(),null,!0)}));var St={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}};function Ct(e,t,n){return(e=ue.getPooled(St.change,e,t,n)).type="change",Ee(n),K(e),e}var jt=null,Et=null;function Tt(e){j(e)}function Pt(e){if(Ke(N(e)))return e}function Ht(e,t){if("change"===e)return t}var Dt=!1;function Yt(){jt&&(jt.detachEvent("onpropertychange",Vt),Et=jt=null)}function Vt(e){if("value"===e.propertyName&&Pt(Et))if(e=Ct(Et,e,Re(e)),Ve)j(e);else{Ve=!0;try{Pe(Tt,e)}finally{Ve=!1,Ne()}}}function Nt(e,t,n){"focus"===e?(Yt(),Et=n,(jt=t).attachEvent("onpropertychange",Vt)):"blur"===e&&Yt()}function Ft(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Pt(Et)}function At(e,t){if("click"===e)return Pt(t)}function Rt(e,t){if("input"===e||"change"===e)return Pt(t)}B&&(Dt=Ie("input")&&(!document.documentMode||9<document.documentMode));var It={eventTypes:St,_isInputEventSupported:Dt,extractEvents:function(e,t,n,r){var o=t?N(t):window,a=void 0,i=void 0,c=o.nodeName&&o.nodeName.toLowerCase();if("select"===c||"input"===c&&"file"===o.type?a=Ht:Ae(o)?Dt?a=Rt:(a=Ft,i=Nt):(c=o.nodeName)&&"input"===c.toLowerCase()&&("checkbox"===o.type||"radio"===o.type)&&(a=At),a&&(a=a(e,t)))return Ct(a,n,r);i&&i(e,o,t),"blur"===e&&(e=o._wrapperState)&&e.controlled&&"number"===o.type&&zt(o,"number",o.value)}},Wt=ue.extend({view:null,detail:null}),Ut={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Kt(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Ut[e])&&!!t[e]}function Bt(){return Kt}var qt=0,$t=0,Gt=!1,Jt=!1,Qt=Wt.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Bt,button:null,buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},movementX:function(e){if("movementX"in e)return e.movementX;var t=qt;return qt=e.screenX,Gt?"mousemove"===e.type?e.screenX-t:0:(Gt=!0,0)},movementY:function(e){if("movementY"in e)return e.movementY;var t=$t;return $t=e.screenY,Jt?"mousemove"===e.type?e.screenY-t:0:(Jt=!0,0)}}),Xt=Qt.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Zt={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]},pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout","pointerover"]}},en={eventTypes:Zt,extractEvents:function(e,t,n,r){var o="mouseover"===e||"pointerover"===e,a="mouseout"===e||"pointerout"===e;if(o&&(n.relatedTarget||n.fromElement)||!a&&!o)return null;if(o=r.window===r?r:(o=r.ownerDocument)?o.defaultView||o.parentWindow:window,a?(a=t,t=(t=n.relatedTarget||n.toElement)?Y(t):null):a=null,a===t)return null;var i=void 0,c=void 0,l=void 0,u=void 0;"mouseout"===e||"mouseover"===e?(i=Qt,c=Zt.mouseLeave,l=Zt.mouseEnter,u="mouse"):"pointerout"!==e&&"pointerover"!==e||(i=Xt,c=Zt.pointerLeave,l=Zt.pointerEnter,u="pointer");var s=null==a?o:N(a);if(o=null==t?o:N(t),(e=i.getPooled(c,a,n,r)).type=u+"leave",e.target=s,e.relatedTarget=o,(n=i.getPooled(l,t,n,r)).type=u+"enter",n.target=o,n.relatedTarget=s,r=t,a&&r)e:{for(o=r,u=0,i=t=a;i;i=A(i))u++;for(i=0,l=o;l;l=A(l))i++;for(;0<u-i;)t=A(t),u--;for(;0<i-u;)o=A(o),i--;for(;u--;){if(t===o||t===o.alternate)break e;t=A(t),o=A(o)}t=null}else t=null;for(o=t,t=[];a&&a!==o&&(null===(u=a.alternate)||u!==o);)t.push(a),a=A(a);for(a=[];r&&r!==o&&(null===(u=r.alternate)||u!==o);)a.push(r),r=A(r);for(r=0;r<t.length;r++)W(t[r],"bubbled",e);for(r=a.length;0<r--;)W(a[r],"captured",n);return[e,n]}};function tn(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t}var nn=Object.prototype.hasOwnProperty;function rn(e,t){if(tn(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!nn.call(t,n[r])||!tn(e[n[r]],t[n[r]]))return!1;return!0}function on(e,t){return{responder:e,props:t}}function an(e){var t=e;if(e.alternate)for(;t.return;)t=t.return;else{if(0!=(2&t.effectTag))return 1;for(;t.return;)if(0!=(2&(t=t.return).effectTag))return 1}return 3===t.tag?2:3}function cn(e){if(2!==an(e))throw i(Error(188))}function ln(e){if(!(e=function(e){var t=e.alternate;if(!t){if(3===(t=an(e)))throw i(Error(188));return 1===t?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var a=o.alternate;if(null===a){if(null!==(r=o.return)){n=r;continue}break}if(o.child===a.child){for(a=o.child;a;){if(a===n)return cn(o),e;if(a===r)return cn(o),t;a=a.sibling}throw i(Error(188))}if(n.return!==r.return)n=o,r=a;else{for(var c=!1,l=o.child;l;){if(l===n){c=!0,n=o,r=a;break}if(l===r){c=!0,r=o,n=a;break}l=l.sibling}if(!c){for(l=a.child;l;){if(l===n){c=!0,n=a,r=o;break}if(l===r){c=!0,r=a,n=o;break}l=l.sibling}if(!c)throw i(Error(189))}}if(n.alternate!==r)throw i(Error(190))}if(3!==n.tag)throw i(Error(188));return n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}new Map,new Map,new Set,new Map;var un=ue.extend({animationName:null,elapsedTime:null,pseudoElement:null}),sn=ue.extend({clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),fn=Wt.extend({relatedTarget:null});function dn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}for(var pn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},hn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},mn=Wt.extend({key:function(e){if(e.key){var t=pn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=dn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?hn[e.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Bt,charCode:function(e){return"keypress"===e.type?dn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?dn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),vn=Qt.extend({dataTransfer:null}),yn=Wt.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Bt}),_n=ue.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),bn=Qt.extend({deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),gn=[["blur","blur",0],["cancel","cancel",0],["click","click",0],["close","close",0],["contextmenu","contextMenu",0],["copy","copy",0],["cut","cut",0],["auxclick","auxClick",0],["dblclick","doubleClick",0],["dragend","dragEnd",0],["dragstart","dragStart",0],["drop","drop",0],["focus","focus",0],["input","input",0],["invalid","invalid",0],["keydown","keyDown",0],["keypress","keyPress",0],["keyup","keyUp",0],["mousedown","mouseDown",0],["mouseup","mouseUp",0],["paste","paste",0],["pause","pause",0],["play","play",0],["pointercancel","pointerCancel",0],["pointerdown","pointerDown",0],["pointerup","pointerUp",0],["ratechange","rateChange",0],["reset","reset",0],["seeked","seeked",0],["submit","submit",0],["touchcancel","touchCancel",0],["touchend","touchEnd",0],["touchstart","touchStart",0],["volumechange","volumeChange",0],["drag","drag",1],["dragenter","dragEnter",1],["dragexit","dragExit",1],["dragleave","dragLeave",1],["dragover","dragOver",1],["mousemove","mouseMove",1],["mouseout","mouseOut",1],["mouseover","mouseOver",1],["pointermove","pointerMove",1],["pointerout","pointerOut",1],["pointerover","pointerOver",1],["scroll","scroll",1],["toggle","toggle",1],["touchmove","touchMove",1],["wheel","wheel",1],["abort","abort",2],[X,"animationEnd",2],[Z,"animationIteration",2],[ee,"animationStart",2],["canplay","canPlay",2],["canplaythrough","canPlayThrough",2],["durationchange","durationChange",2],["emptied","emptied",2],["encrypted","encrypted",2],["ended","ended",2],["error","error",2],["gotpointercapture","gotPointerCapture",2],["load","load",2],["loadeddata","loadedData",2],["loadedmetadata","loadedMetadata",2],["loadstart","loadStart",2],["lostpointercapture","lostPointerCapture",2],["playing","playing",2],["progress","progress",2],["seeking","seeking",2],["stalled","stalled",2],["suspend","suspend",2],["timeupdate","timeUpdate",2],[te,"transitionEnd",2],["waiting","waiting",2]],Mn={},wn={},On=0;On<gn.length;On++){var kn=gn[On],Ln=kn[0],xn=kn[1],zn=kn[2],Sn="on"+(xn[0].toUpperCase()+xn.slice(1)),Cn={phasedRegistrationNames:{bubbled:Sn,captured:Sn+"Capture"},dependencies:[Ln],eventPriority:zn};Mn[xn]=Cn,wn[Ln]=Cn}var jn={eventTypes:Mn,getEventPriority:function(e){return void 0!==(e=wn[e])?e.eventPriority:2},extractEvents:function(e,t,n,r){var o=wn[e];if(!o)return null;switch(e){case"keypress":if(0===dn(n))return null;case"keydown":case"keyup":e=mn;break;case"blur":case"focus":e=fn;break;case"click":if(2===n.button)return null;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":e=Qt;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":e=vn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":e=yn;break;case X:case Z:case ee:e=un;break;case te:e=_n;break;case"scroll":e=Wt;break;case"wheel":e=bn;break;case"copy":case"cut":case"paste":e=sn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":e=Xt;break;default:e=ue}return K(t=e.getPooled(o,t,n,r)),t}},En=jn.getEventPriority,Tn=[];function Pn(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var r;for(r=n;r.return;)r=r.return;if(!(r=3!==r.tag?null:r.stateNode.containerInfo))break;e.ancestors.push(n),n=Y(r)}while(n);for(n=0;n<e.ancestors.length;n++){t=e.ancestors[n];var o=Re(e.nativeEvent);r=e.topLevelType;for(var a=e.nativeEvent,i=null,c=0;c<f.length;c++){var l=f[c];l&&(l=l.extractEvents(r,t,a,o))&&(i=x(i,l))}j(i)}}var Hn=!0;function Dn(e,t){Yn(t,e,!1)}function Yn(e,t,n){switch(En(t)){case 0:var r=Vn.bind(null,t,1);break;case 1:r=Nn.bind(null,t,1);break;default:r=Fn.bind(null,t,1)}n?e.addEventListener(t,r,!0):e.addEventListener(t,r,!1)}function Vn(e,t,n){Ve||De();var r=Fn,o=Ve;Ve=!0;try{He(r,e,t,n)}finally{(Ve=o)||Ne()}}function Nn(e,t,n){Fn(e,t,n)}function Fn(e,t,n){if(Hn){if(null===(t=Y(t=Re(n)))||"number"!=typeof t.tag||2===an(t)||(t=null),Tn.length){var r=Tn.pop();r.topLevelType=e,r.nativeEvent=n,r.targetInst=t,e=r}else e={topLevelType:e,nativeEvent:n,targetInst:t,ancestors:[]};try{if(n=e,Ve)Pn(n);else{Ve=!0;try{Ye(Pn,n,void 0)}finally{Ve=!1,Ne()}}}finally{e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,e.ancestors.length=0,10>Tn.length&&Tn.push(e)}}}var An=new("function"==typeof WeakMap?WeakMap:Map);function Rn(e){var t=An.get(e);return void 0===t&&(t=new Set,An.set(e,t)),t}function In(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Wn(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Un(e,t){var n,r=Wn(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Wn(r)}}function Kn(){for(var e=window,t=In();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=In((e=t.contentWindow).document)}return t}function Bn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var qn=B&&"documentMode"in document&&11>=document.documentMode,$n={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},Gn=null,Jn=null,Qn=null,Xn=!1;function Zn(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return Xn||null==Gn||Gn!==In(n)?null:("selectionStart"in(n=Gn)&&Bn(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},Qn&&rn(Qn,n)?null:(Qn=n,(e=ue.getPooled($n.select,Jn,e,t)).type="select",e.target=Gn,K(e),e))}var er={eventTypes:$n,extractEvents:function(e,t,n,r){var o,a=r.window===r?r.document:9===r.nodeType?r:r.ownerDocument;if(!(o=!a)){e:{a=Rn(a),o=h.onSelect;for(var i=0;i<o.length;i++)if(!a.has(o[i])){a=!1;break e}a=!0}o=!a}if(o)return null;switch(a=t?N(t):window,e){case"focus":(Ae(a)||"true"===a.contentEditable)&&(Gn=a,Jn=t,Qn=null);break;case"blur":Qn=Jn=Gn=null;break;case"mousedown":Xn=!0;break;case"contextmenu":case"mouseup":case"dragend":return Xn=!1,Zn(n,r);case"selectionchange":if(qn)break;case"keydown":case"keyup":return Zn(n,r)}return null}};function tr(e,t){return e=o({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function nr(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+Mt(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function rr(e,t){if(null!=t.dangerouslySetInnerHTML)throw i(Error(91));return o({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function or(e,t){var n=t.value;if(null==n){if(n=t.defaultValue,null!=(t=t.children)){if(null!=n)throw i(Error(92));if(Array.isArray(t)){if(!(1>=t.length))throw i(Error(93));t=t[0]}n=t}null==n&&(n="")}e._wrapperState={initialValue:Mt(n)}}function ar(e,t){var n=Mt(t.value),r=Mt(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ir(e){var t=e.textContent;t===e._wrapperState.initialValue&&(e.value=t)}E.injectEventPluginOrder("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),w=F,O=V,k=N,E.injectEventPluginsByName({SimpleEventPlugin:jn,EnterLeaveEventPlugin:en,ChangeEventPlugin:It,SelectEventPlugin:er,BeforeInputEventPlugin:xe});var cr="http://www.w3.org/1999/xhtml",lr="http://www.w3.org/2000/svg";function ur(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function sr(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?ur(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var fr=void 0,dr=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,r,o){MSApp.execUnsafeLocalFunction((function(){return e(t,n)}))}:e}((function(e,t){if(e.namespaceURI!==lr||"innerHTML"in e)e.innerHTML=t;else{for((fr=fr||document.createElement("div")).innerHTML="<svg>"+t+"</svg>",t=fr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}}));function pr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var hr={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},mr=["Webkit","ms","Moz","O"];function vr(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||hr.hasOwnProperty(e)&&hr[e]?(""+t).trim():t+"px"}function yr(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=vr(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(hr).forEach((function(e){mr.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),hr[t]=hr[e]}))}));var _r=o({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function br(e,t){if(t){if(_r[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw i(Error(137),e,"");if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw i(Error(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw i(Error(61))}if(null!=t.style&&"object"!=typeof t.style)throw i(Error(62),"")}}function gr(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Mr(e,t){var n=Rn(e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument);t=h[t];for(var r=0;r<t.length;r++){var o=t[r];if(!n.has(o)){switch(o){case"scroll":Yn(e,"scroll",!0);break;case"focus":case"blur":Yn(e,"focus",!0),Yn(e,"blur",!0),n.add("blur"),n.add("focus");break;case"cancel":case"close":Ie(o)&&Yn(e,o,!0);break;case"invalid":case"submit":case"reset":break;default:-1===ne.indexOf(o)&&Dn(o,e)}n.add(o)}}}function wr(){}var Or=null,kr=null;function Lr(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function xr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var zr="function"==typeof setTimeout?setTimeout:void 0,Sr="function"==typeof clearTimeout?clearTimeout:void 0;function Cr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}new Set;var jr=[],Er=-1;function Tr(e){0>Er||(e.current=jr[Er],jr[Er]=null,Er--)}function Pr(e,t){Er++,jr[Er]=e.current,e.current=t}var Hr={},Dr={current:Hr},Yr={current:!1},Vr=Hr;function Nr(e,t){var n=e.type.contextTypes;if(!n)return Hr;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in n)a[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function Fr(e){return null!=(e=e.childContextTypes)}function Ar(e){Tr(Yr),Tr(Dr)}function Rr(e){Tr(Yr),Tr(Dr)}function Ir(e,t,n){if(Dr.current!==Hr)throw i(Error(168));Pr(Dr,t),Pr(Yr,n)}function Wr(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in e))throw i(Error(108),st(t)||"Unknown",a);return o({},n,r)}function Ur(e){var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||Hr,Vr=Dr.current,Pr(Dr,t),Pr(Yr,Yr.current),!0}function Kr(e,t,n){var r=e.stateNode;if(!r)throw i(Error(169));n?(t=Wr(e,t,Vr),r.__reactInternalMemoizedMergedChildContext=t,Tr(Yr),Tr(Dr),Pr(Dr,t)):Tr(Yr),Pr(Yr,n)}var Br=a.unstable_runWithPriority,qr=a.unstable_scheduleCallback,$r=a.unstable_cancelCallback,Gr=a.unstable_shouldYield,Jr=a.unstable_requestPaint,Qr=a.unstable_now,Xr=a.unstable_getCurrentPriorityLevel,Zr=a.unstable_ImmediatePriority,eo=a.unstable_UserBlockingPriority,to=a.unstable_NormalPriority,no=a.unstable_LowPriority,ro=a.unstable_IdlePriority,oo={},ao=void 0!==Jr?Jr:function(){},io=null,co=null,lo=!1,uo=Qr(),so=1e4>uo?Qr:function(){return Qr()-uo};function fo(){switch(Xr()){case Zr:return 99;case eo:return 98;case to:return 97;case no:return 96;case ro:return 95;default:throw i(Error(332))}}function po(e){switch(e){case 99:return Zr;case 98:return eo;case 97:return to;case 96:return no;case 95:return ro;default:throw i(Error(332))}}function ho(e,t){return e=po(e),Br(e,t)}function mo(e,t,n){return e=po(e),qr(e,t,n)}function vo(e){return null===io?(io=[e],co=qr(Zr,_o)):io.push(e),oo}function yo(){null!==co&&$r(co),_o()}function _o(){if(!lo&&null!==io){lo=!0;var e=0;try{var t=io;ho(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),io=null}catch(t){throw null!==io&&(io=io.slice(e+1)),qr(Zr,yo),t}finally{lo=!1}}}function bo(e,t){return 1073741823===t?99:1===t?95:0>=(e=10*(1073741821-t)-10*(1073741821-e))?99:250>=e?98:5250>=e?97:95}function go(e,t){if(e&&e.defaultProps)for(var n in t=o({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}var Mo={current:null},wo=null,Oo=null,ko=null;function Lo(){ko=Oo=wo=null}function xo(e,t){var n=e.type._context;Pr(Mo,n._currentValue),n._currentValue=t}function zo(e){var t=Mo.current;Tr(Mo),e.type._context._currentValue=t}function So(e,t){for(;null!==e;){var n=e.alternate;if(e.childExpirationTime<t)e.childExpirationTime=t,null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t);else{if(!(null!==n&&n.childExpirationTime<t))break;n.childExpirationTime=t}e=e.return}}function Co(e,t){wo=e,ko=Oo=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(e.expirationTime>=t&&(ti=!0),e.firstContext=null)}function jo(e,t){if(ko!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(ko=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Oo){if(null===wo)throw i(Error(308));Oo=t,wo.dependencies={expirationTime:0,firstContext:t,responders:null}}else Oo=Oo.next=t;return e._currentValue}var Eo=!1;function To(e){return{baseState:e,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Po(e){return{baseState:e.baseState,firstUpdate:e.firstUpdate,lastUpdate:e.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Ho(e,t){return{expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function Do(e,t){null===e.lastUpdate?e.firstUpdate=e.lastUpdate=t:(e.lastUpdate.next=t,e.lastUpdate=t)}function Yo(e,t){var n=e.alternate;if(null===n){var r=e.updateQueue,o=null;null===r&&(r=e.updateQueue=To(e.memoizedState))}else r=e.updateQueue,o=n.updateQueue,null===r?null===o?(r=e.updateQueue=To(e.memoizedState),o=n.updateQueue=To(n.memoizedState)):r=e.updateQueue=Po(o):null===o&&(o=n.updateQueue=Po(r));null===o||r===o?Do(r,t):null===r.lastUpdate||null===o.lastUpdate?(Do(r,t),Do(o,t)):(Do(r,t),o.lastUpdate=t)}function Vo(e,t){var n=e.updateQueue;null===(n=null===n?e.updateQueue=To(e.memoizedState):No(e,n)).lastCapturedUpdate?n.firstCapturedUpdate=n.lastCapturedUpdate=t:(n.lastCapturedUpdate.next=t,n.lastCapturedUpdate=t)}function No(e,t){var n=e.alternate;return null!==n&&t===n.updateQueue&&(t=e.updateQueue=Po(t)),t}function Fo(e,t,n,r,a,i){switch(n.tag){case 1:return"function"==typeof(e=n.payload)?e.call(i,r,a):e;case 3:e.effectTag=-2049&e.effectTag|64;case 0:if(null==(a="function"==typeof(e=n.payload)?e.call(i,r,a):e))break;return o({},r,a);case 2:Eo=!0}return r}function Ao(e,t,n,r,o){Eo=!1;for(var a=(t=No(e,t)).baseState,i=null,c=0,l=t.firstUpdate,u=a;null!==l;){var s=l.expirationTime;s<o?(null===i&&(i=l,a=u),c<s&&(c=s)):(Mc(s,l.suspenseConfig),u=Fo(e,0,l,u,n,r),null!==l.callback&&(e.effectTag|=32,l.nextEffect=null,null===t.lastEffect?t.firstEffect=t.lastEffect=l:(t.lastEffect.nextEffect=l,t.lastEffect=l))),l=l.next}for(s=null,l=t.firstCapturedUpdate;null!==l;){var f=l.expirationTime;f<o?(null===s&&(s=l,null===i&&(a=u)),c<f&&(c=f)):(u=Fo(e,0,l,u,n,r),null!==l.callback&&(e.effectTag|=32,l.nextEffect=null,null===t.lastCapturedEffect?t.firstCapturedEffect=t.lastCapturedEffect=l:(t.lastCapturedEffect.nextEffect=l,t.lastCapturedEffect=l))),l=l.next}null===i&&(t.lastUpdate=null),null===s?t.lastCapturedUpdate=null:e.effectTag|=32,null===i&&null===s&&(a=u),t.baseState=a,t.firstUpdate=i,t.firstCapturedUpdate=s,e.expirationTime=c,e.memoizedState=u}function Ro(e,t,n){null!==t.firstCapturedUpdate&&(null!==t.lastUpdate&&(t.lastUpdate.next=t.firstCapturedUpdate,t.lastUpdate=t.lastCapturedUpdate),t.firstCapturedUpdate=t.lastCapturedUpdate=null),Io(t.firstEffect,n),t.firstEffect=t.lastEffect=null,Io(t.firstCapturedEffect,n),t.firstCapturedEffect=t.lastCapturedEffect=null}function Io(e,t){for(;null!==e;){var n=e.callback;if(null!==n){e.callback=null;var r=t;if("function"!=typeof n)throw i(Error(191),n);n.call(r)}e=e.nextEffect}}var Wo=Be.ReactCurrentBatchConfig,Uo=(new r.Component).refs;function Ko(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:o({},t,n),e.memoizedState=n,null!==(r=e.updateQueue)&&0===e.expirationTime&&(r.baseState=n)}var Bo={isMounted:function(e){return!!(e=e._reactInternalFiber)&&2===an(e)},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var r=lc(),o=Wo.suspense;(o=Ho(r=uc(r,e,o),o)).payload=t,null!=n&&(o.callback=n),Yo(e,o),fc(e,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var r=lc(),o=Wo.suspense;(o=Ho(r=uc(r,e,o),o)).tag=1,o.payload=t,null!=n&&(o.callback=n),Yo(e,o),fc(e,r)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=lc(),r=Wo.suspense;(r=Ho(n=uc(n,e,r),r)).tag=2,null!=t&&(r.callback=t),Yo(e,r),fc(e,n)}};function qo(e,t,n,r,o,a,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,i):!t.prototype||!t.prototype.isPureReactComponent||(!rn(n,r)||!rn(o,a))}function $o(e,t,n){var r=!1,o=Hr,a=t.contextType;return"object"==typeof a&&null!==a?a=jo(a):(o=Fr(t)?Vr:Dr.current,a=(r=null!=(r=t.contextTypes))?Nr(e,o):Hr),t=new t(n,a),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=Bo,e.stateNode=t,t._reactInternalFiber=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=a),t}function Go(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&Bo.enqueueReplaceState(t,t.state,null)}function Jo(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs=Uo;var a=t.contextType;"object"==typeof a&&null!==a?o.context=jo(a):(a=Fr(t)?Vr:Dr.current,o.context=Nr(e,a)),null!==(a=e.updateQueue)&&(Ao(e,a,n,o,r),o.state=e.memoizedState),"function"==typeof(a=t.getDerivedStateFromProps)&&(Ko(e,t,a,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&Bo.enqueueReplaceState(o,o.state,null),null!==(a=e.updateQueue)&&(Ao(e,a,n,o,r),o.state=e.memoizedState)),"function"==typeof o.componentDidMount&&(e.effectTag|=4)}var Qo=Array.isArray;function Xo(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){n=n._owner;var r=void 0;if(n){if(1!==n.tag)throw i(Error(309));r=n.stateNode}if(!r)throw i(Error(147),e);var o=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===o?t.ref:((t=function(e){var t=r.refs;t===Uo&&(t=r.refs={}),null===e?delete t[o]:t[o]=e})._stringRef=o,t)}if("string"!=typeof e)throw i(Error(284));if(!n._owner)throw i(Error(290),e)}return e}function Zo(e,t){if("textarea"!==e.type)throw i(Error(31),"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,"")}function ea(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.effectTag=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t,n){return(e=Nc(e,t)).index=0,e.sibling=null,e}function a(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.effectTag=2,n):r:(t.effectTag=2,n):n}function c(t){return e&&null===t.alternate&&(t.effectTag=2),t}function l(e,t,n,r){return null===t||6!==t.tag?((t=Rc(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=o(t,n.props)).ref=Xo(e,t,n),r.return=e,r):((r=Fc(n.type,n.key,n.props,null,e.mode,r)).ref=Xo(e,t,n),r.return=e,r)}function s(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Ic(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function f(e,t,n,r,a){return null===t||7!==t.tag?((t=Ac(n,e.mode,r,a)).return=e,t):((t=o(t,n)).return=e,t)}function d(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Rc(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case Ge:return(n=Fc(t.type,t.key,t.props,null,e.mode,n)).ref=Xo(e,null,t),n.return=e,n;case Je:return(t=Ic(t,e.mode,n)).return=e,t}if(Qo(t)||ut(t))return(t=Ac(t,e.mode,n,null)).return=e,t;Zo(e,t)}return null}function p(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==o?null:l(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case Ge:return n.key===o?n.type===Qe?f(e,t,n.props.children,r,o):u(e,t,n,r):null;case Je:return n.key===o?s(e,t,n,r):null}if(Qo(n)||ut(n))return null!==o?null:f(e,t,n,r,null);Zo(e,n)}return null}function h(e,t,n,r,o){if("string"==typeof r||"number"==typeof r)return l(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case Ge:return e=e.get(null===r.key?n:r.key)||null,r.type===Qe?f(t,e,r.props.children,o,r.key):u(t,e,r,o);case Je:return s(t,e=e.get(null===r.key?n:r.key)||null,r,o)}if(Qo(r)||ut(r))return f(t,e=e.get(n)||null,r,o,null);Zo(t,r)}return null}function m(o,i,c,l){for(var u=null,s=null,f=i,m=i=0,v=null;null!==f&&m<c.length;m++){f.index>m?(v=f,f=null):v=f.sibling;var y=p(o,f,c[m],l);if(null===y){null===f&&(f=v);break}e&&f&&null===y.alternate&&t(o,f),i=a(y,i,m),null===s?u=y:s.sibling=y,s=y,f=v}if(m===c.length)return n(o,f),u;if(null===f){for(;m<c.length;m++)null!==(f=d(o,c[m],l))&&(i=a(f,i,m),null===s?u=f:s.sibling=f,s=f);return u}for(f=r(o,f);m<c.length;m++)null!==(v=h(f,o,m,c[m],l))&&(e&&null!==v.alternate&&f.delete(null===v.key?m:v.key),i=a(v,i,m),null===s?u=v:s.sibling=v,s=v);return e&&f.forEach((function(e){return t(o,e)})),u}function v(o,c,l,u){var s=ut(l);if("function"!=typeof s)throw i(Error(150));if(null==(l=s.call(l)))throw i(Error(151));for(var f=s=null,m=c,v=c=0,y=null,_=l.next();null!==m&&!_.done;v++,_=l.next()){m.index>v?(y=m,m=null):y=m.sibling;var b=p(o,m,_.value,u);if(null===b){null===m&&(m=y);break}e&&m&&null===b.alternate&&t(o,m),c=a(b,c,v),null===f?s=b:f.sibling=b,f=b,m=y}if(_.done)return n(o,m),s;if(null===m){for(;!_.done;v++,_=l.next())null!==(_=d(o,_.value,u))&&(c=a(_,c,v),null===f?s=_:f.sibling=_,f=_);return s}for(m=r(o,m);!_.done;v++,_=l.next())null!==(_=h(m,o,v,_.value,u))&&(e&&null!==_.alternate&&m.delete(null===_.key?v:_.key),c=a(_,c,v),null===f?s=_:f.sibling=_,f=_);return e&&m.forEach((function(e){return t(o,e)})),s}return function(e,r,a,l){var u="object"==typeof a&&null!==a&&a.type===Qe&&null===a.key;u&&(a=a.props.children);var s="object"==typeof a&&null!==a;if(s)switch(a.$$typeof){case Ge:e:{for(s=a.key,u=r;null!==u;){if(u.key===s){if(7===u.tag?a.type===Qe:u.elementType===a.type){n(e,u.sibling),(r=o(u,a.type===Qe?a.props.children:a.props)).ref=Xo(e,u,a),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}a.type===Qe?((r=Ac(a.props.children,e.mode,l,a.key)).return=e,e=r):((l=Fc(a.type,a.key,a.props,null,e.mode,l)).ref=Xo(e,r,a),l.return=e,e=l)}return c(e);case Je:e:{for(u=a.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){n(e,r.sibling),(r=o(r,a.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Ic(a,e.mode,l)).return=e,e=r}return c(e)}if("string"==typeof a||"number"==typeof a)return a=""+a,null!==r&&6===r.tag?(n(e,r.sibling),(r=o(r,a)).return=e,e=r):(n(e,r),(r=Rc(a,e.mode,l)).return=e,e=r),c(e);if(Qo(a))return m(e,r,a,l);if(ut(a))return v(e,r,a,l);if(s&&Zo(e,a),void 0===a&&!u)switch(e.tag){case 1:case 0:throw e=e.type,i(Error(152),e.displayName||e.name||"Component")}return n(e,r)}}var ta=ea(!0),na=ea(!1),ra={},oa={current:ra},aa={current:ra},ia={current:ra};function ca(e){if(e===ra)throw i(Error(174));return e}function la(e,t){Pr(ia,t),Pr(aa,e),Pr(oa,ra);var n=t.nodeType;switch(n){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:sr(null,"");break;default:t=sr(t=(n=8===n?t.parentNode:t).namespaceURI||null,n=n.tagName)}Tr(oa),Pr(oa,t)}function ua(e){Tr(oa),Tr(aa),Tr(ia)}function sa(e){ca(ia.current);var t=ca(oa.current),n=sr(t,e.type);t!==n&&(Pr(aa,e),Pr(oa,n))}function fa(e){aa.current===e&&(Tr(oa),Tr(aa))}var da={current:0};function pa(e){for(var t=e;null!==t;){if(13===t.tag){if(null!==t.memoizedState)return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.effectTag))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ha=Be.ReactCurrentDispatcher,ma=0,va=null,ya=null,_a=null,ba=null,ga=null,Ma=null,wa=0,Oa=null,ka=0,La=!1,xa=null,za=0;function Sa(){throw i(Error(321))}function Ca(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!tn(e[n],t[n]))return!1;return!0}function ja(e,t,n,r,o,a){if(ma=a,va=t,_a=null!==e?e.memoizedState:null,ha.current=null===_a?Wa:Ua,t=n(r,o),La){do{La=!1,za+=1,_a=null!==e?e.memoizedState:null,Ma=ba,Oa=ga=ya=null,ha.current=Ua,t=n(r,o)}while(La);xa=null,za=0}if(ha.current=Ia,(e=va).memoizedState=ba,e.expirationTime=wa,e.updateQueue=Oa,e.effectTag|=ka,e=null!==ya&&null!==ya.next,ma=0,Ma=ga=ba=_a=ya=va=null,wa=0,Oa=null,ka=0,e)throw i(Error(300));return t}function Ea(){ha.current=Ia,ma=0,Ma=ga=ba=_a=ya=va=null,wa=0,Oa=null,ka=0,La=!1,xa=null,za=0}function Ta(){var e={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return null===ga?ba=ga=e:ga=ga.next=e,ga}function Pa(){if(null!==Ma)Ma=(ga=Ma).next,_a=null!==(ya=_a)?ya.next:null;else{if(null===_a)throw i(Error(310));var e={memoizedState:(ya=_a).memoizedState,baseState:ya.baseState,queue:ya.queue,baseUpdate:ya.baseUpdate,next:null};ga=null===ga?ba=e:ga.next=e,_a=ya.next}return ga}function Ha(e,t){return"function"==typeof t?t(e):t}function Da(e){var t=Pa(),n=t.queue;if(null===n)throw i(Error(311));if(n.lastRenderedReducer=e,0<za){var r=n.dispatch;if(null!==xa){var o=xa.get(n);if(void 0!==o){xa.delete(n);var a=t.memoizedState;do{a=e(a,o.action),o=o.next}while(null!==o);return tn(a,t.memoizedState)||(ti=!0),t.memoizedState=a,t.baseUpdate===n.last&&(t.baseState=a),n.lastRenderedState=a,[a,r]}}return[t.memoizedState,r]}r=n.last;var c=t.baseUpdate;if(a=t.baseState,null!==c?(null!==r&&(r.next=null),r=c.next):r=null!==r?r.next:null,null!==r){var l=o=null,u=r,s=!1;do{var f=u.expirationTime;f<ma?(s||(s=!0,l=c,o=a),f>wa&&(wa=f)):(Mc(f,u.suspenseConfig),a=u.eagerReducer===e?u.eagerState:e(a,u.action)),c=u,u=u.next}while(null!==u&&u!==r);s||(l=c,o=a),tn(a,t.memoizedState)||(ti=!0),t.memoizedState=a,t.baseUpdate=l,t.baseState=o,n.lastRenderedState=a}return[t.memoizedState,n.dispatch]}function Ya(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===Oa?(Oa={lastEffect:null}).lastEffect=e.next=e:null===(t=Oa.lastEffect)?Oa.lastEffect=e.next=e:(n=t.next,t.next=e,e.next=n,Oa.lastEffect=e),e}function Va(e,t,n,r){var o=Ta();ka|=e,o.memoizedState=Ya(t,n,void 0,void 0===r?null:r)}function Na(e,t,n,r){var o=Pa();r=void 0===r?null:r;var a=void 0;if(null!==ya){var i=ya.memoizedState;if(a=i.destroy,null!==r&&Ca(r,i.deps))return void Ya(0,n,a,r)}ka|=e,o.memoizedState=Ya(t,n,a,r)}function Fa(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Aa(){}function Ra(e,t,n){if(!(25>za))throw i(Error(301));var r=e.alternate;if(e===va||null!==r&&r===va)if(La=!0,e={expirationTime:ma,suspenseConfig:null,action:n,eagerReducer:null,eagerState:null,next:null},null===xa&&(xa=new Map),void 0===(n=xa.get(t)))xa.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}else{var o=lc(),a=Wo.suspense;a={expirationTime:o=uc(o,e,a),suspenseConfig:a,action:n,eagerReducer:null,eagerState:null,next:null};var c=t.last;if(null===c)a.next=a;else{var l=c.next;null!==l&&(a.next=l),c.next=a}if(t.last=a,0===e.expirationTime&&(null===r||0===r.expirationTime)&&null!==(r=t.lastRenderedReducer))try{var u=t.lastRenderedState,s=r(u,n);if(a.eagerReducer=r,a.eagerState=s,tn(s,u))return}catch(e){}fc(e,o)}}var Ia={readContext:jo,useCallback:Sa,useContext:Sa,useEffect:Sa,useImperativeHandle:Sa,useLayoutEffect:Sa,useMemo:Sa,useReducer:Sa,useRef:Sa,useState:Sa,useDebugValue:Sa,useResponder:Sa},Wa={readContext:jo,useCallback:function(e,t){return Ta().memoizedState=[e,void 0===t?null:t],e},useContext:jo,useEffect:function(e,t){return Va(516,192,e,t)},useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,Va(4,36,Fa.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Va(4,36,e,t)},useMemo:function(e,t){var n=Ta();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ta();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={last:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Ra.bind(null,va,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Ta().memoizedState=e},useState:function(e){var t=Ta();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={last:null,dispatch:null,lastRenderedReducer:Ha,lastRenderedState:e}).dispatch=Ra.bind(null,va,e),[t.memoizedState,e]},useDebugValue:Aa,useResponder:on},Ua={readContext:jo,useCallback:function(e,t){var n=Pa();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Ca(t,r[1])?r[0]:(n.memoizedState=[e,t],e)},useContext:jo,useEffect:function(e,t){return Na(516,192,e,t)},useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,Na(4,36,Fa.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Na(4,36,e,t)},useMemo:function(e,t){var n=Pa();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Ca(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)},useReducer:Da,useRef:function(){return Pa().memoizedState},useState:function(e){return Da(Ha)},useDebugValue:Aa,useResponder:on},Ka=null,Ba=null,qa=!1;function $a(e,t){var n=Yc(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Ga(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function Ja(e){if(qa){var t=Ba;if(t){var n=t;if(!Ga(e,t)){if(!(t=Cr(n.nextSibling))||!Ga(e,t))return e.effectTag|=2,qa=!1,void(Ka=e);$a(Ka,n)}Ka=e,Ba=Cr(t.firstChild)}else e.effectTag|=2,qa=!1,Ka=e}}function Qa(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&18!==e.tag;)e=e.return;Ka=e}function Xa(e){if(e!==Ka)return!1;if(!qa)return Qa(e),qa=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!xr(t,e.memoizedProps))for(t=Ba;t;)$a(e,t),t=Cr(t.nextSibling);return Qa(e),Ba=Ka?Cr(e.stateNode.nextSibling):null,!0}function Za(){Ba=Ka=null,qa=!1}var ei=Be.ReactCurrentOwner,ti=!1;function ni(e,t,n,r){t.child=null===e?na(t,null,n,r):ta(t,e.child,n,r)}function ri(e,t,n,r,o){n=n.render;var a=t.ref;return Co(t,o),r=ja(e,t,n,r,a,o),null===e||ti?(t.effectTag|=1,ni(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=o&&(e.expirationTime=0),mi(e,t,o))}function oi(e,t,n,r,o,a){if(null===e){var i=n.type;return"function"!=typeof i||Vc(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Fc(n.type,null,r,null,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,ai(e,t,i,r,o,a))}return i=e.child,o<a&&(o=i.memoizedProps,(n=null!==(n=n.compare)?n:rn)(o,r)&&e.ref===t.ref)?mi(e,t,a):(t.effectTag|=1,(e=Nc(i,r)).ref=t.ref,e.return=t,t.child=e)}function ai(e,t,n,r,o,a){return null!==e&&rn(e.memoizedProps,r)&&e.ref===t.ref&&(ti=!1,o<a)?mi(e,t,a):ci(e,t,n,r,a)}function ii(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.effectTag|=128)}function ci(e,t,n,r,o){var a=Fr(n)?Vr:Dr.current;return a=Nr(t,a),Co(t,o),n=ja(e,t,n,r,a,o),null===e||ti?(t.effectTag|=1,ni(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=o&&(e.expirationTime=0),mi(e,t,o))}function li(e,t,n,r,o){if(Fr(n)){var a=!0;Ur(t)}else a=!1;if(Co(t,o),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),$o(t,n,r),Jo(t,n,r,o),r=!0;else if(null===e){var i=t.stateNode,c=t.memoizedProps;i.props=c;var l=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=jo(u):u=Nr(t,u=Fr(n)?Vr:Dr.current);var s=n.getDerivedStateFromProps,f="function"==typeof s||"function"==typeof i.getSnapshotBeforeUpdate;f||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(c!==r||l!==u)&&Go(t,i,r,u),Eo=!1;var d=t.memoizedState;l=i.state=d;var p=t.updateQueue;null!==p&&(Ao(t,p,r,i,o),l=t.memoizedState),c!==r||d!==l||Yr.current||Eo?("function"==typeof s&&(Ko(t,n,s,r),l=t.memoizedState),(c=Eo||qo(t,n,c,r,d,l,u))?(f||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.effectTag|=4)):("function"==typeof i.componentDidMount&&(t.effectTag|=4),t.memoizedProps=r,t.memoizedState=l),i.props=r,i.state=l,i.context=u,r=c):("function"==typeof i.componentDidMount&&(t.effectTag|=4),r=!1)}else i=t.stateNode,c=t.memoizedProps,i.props=t.type===t.elementType?c:go(t.type,c),l=i.context,"object"==typeof(u=n.contextType)&&null!==u?u=jo(u):u=Nr(t,u=Fr(n)?Vr:Dr.current),(f="function"==typeof(s=n.getDerivedStateFromProps)||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(c!==r||l!==u)&&Go(t,i,r,u),Eo=!1,l=t.memoizedState,d=i.state=l,null!==(p=t.updateQueue)&&(Ao(t,p,r,i,o),d=t.memoizedState),c!==r||l!==d||Yr.current||Eo?("function"==typeof s&&(Ko(t,n,s,r),d=t.memoizedState),(s=Eo||qo(t,n,c,r,l,d,u))?(f||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,d,u),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,d,u)),"function"==typeof i.componentDidUpdate&&(t.effectTag|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.effectTag|=256)):("function"!=typeof i.componentDidUpdate||c===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof i.getSnapshotBeforeUpdate||c===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),t.memoizedProps=r,t.memoizedState=d),i.props=r,i.state=d,i.context=u,r=s):("function"!=typeof i.componentDidUpdate||c===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof i.getSnapshotBeforeUpdate||c===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),r=!1);return ui(e,t,n,r,a,o)}function ui(e,t,n,r,o,a){ii(e,t);var i=0!=(64&t.effectTag);if(!r&&!i)return o&&Kr(t,n,!1),mi(e,t,a);r=t.stateNode,ei.current=t;var c=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.effectTag|=1,null!==e&&i?(t.child=ta(t,e.child,null,a),t.child=ta(t,null,c,a)):ni(e,t,c,a),t.memoizedState=r.state,o&&Kr(t,n,!0),t.child}function si(e){var t=e.stateNode;t.pendingContext?Ir(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Ir(0,t.context,!1),la(e,t.containerInfo)}var fi={};function di(e,t,n){var r,o=t.mode,a=t.pendingProps,i=da.current,c=null,l=!1;if((r=0!=(64&t.effectTag))||(r=0!=(2&i)&&(null===e||null!==e.memoizedState)),r?(c=fi,l=!0,t.effectTag&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(i|=1),Pr(da,i&=1),null===e)if(l){if(a=a.fallback,(e=Ac(null,o,0,null)).return=t,0==(2&t.mode))for(l=null!==t.memoizedState?t.child.child:t.child,e.child=l;null!==l;)l.return=e,l=l.sibling;(n=Ac(a,o,n,null)).return=t,e.sibling=n,o=e}else o=n=na(t,null,a.children,n);else{if(null!==e.memoizedState)if(o=(i=e.child).sibling,l){if(a=a.fallback,(n=Nc(i,i.pendingProps)).return=t,0==(2&t.mode)&&(l=null!==t.memoizedState?t.child.child:t.child)!==i.child)for(n.child=l;null!==l;)l.return=n,l=l.sibling;(a=Nc(o,a,o.expirationTime)).return=t,n.sibling=a,o=n,n.childExpirationTime=0,n=a}else o=n=ta(t,i.child,a.children,n);else if(i=e.child,l){if(l=a.fallback,(a=Ac(null,o,0,null)).return=t,a.child=i,null!==i&&(i.return=a),0==(2&t.mode))for(i=null!==t.memoizedState?t.child.child:t.child,a.child=i;null!==i;)i.return=a,i=i.sibling;(n=Ac(l,o,n,null)).return=t,a.sibling=n,n.effectTag|=2,o=a,a.childExpirationTime=0}else n=o=ta(t,i,a.children,n);t.stateNode=e.stateNode}return t.memoizedState=c,t.child=o,n}function pi(e,t,n,r,o){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,last:r,tail:n,tailExpiration:0,tailMode:o}:(a.isBackwards=t,a.rendering=null,a.last=r,a.tail=n,a.tailExpiration=0,a.tailMode=o)}function hi(e,t,n){var r=t.pendingProps,o=r.revealOrder,a=r.tail;if(ni(e,t,r.children,n),0!=(2&(r=da.current)))r=1&r|2,t.effectTag|=64;else{if(null!==e&&0!=(64&e.effectTag))e:for(e=t.child;null!==e;){if(13===e.tag){if(null!==e.memoizedState){e.expirationTime<n&&(e.expirationTime=n);var i=e.alternate;null!==i&&i.expirationTime<n&&(i.expirationTime=n),So(e.return,n)}}else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Pr(da,r),0==(2&t.mode))t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(r=n.alternate)&&null===pa(r)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),pi(t,!1,o,n,a);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(r=o.alternate)&&null===pa(r)){t.child=o;break}r=o.sibling,o.sibling=n,n=o,o=r}pi(t,!0,n,null,a);break;case"together":pi(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function mi(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),t.childExpirationTime<n)return null;if(null!==e&&t.child!==e.child)throw i(Error(153));if(null!==t.child){for(n=Nc(e=t.child,e.pendingProps,e.expirationTime),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Nc(e,e.pendingProps,e.expirationTime)).return=t;n.sibling=null}return t.child}function vi(e){e.effectTag|=4}var yi,_i,bi;function gi(e,t){switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Mi(e){switch(e.tag){case 1:Fr(e.type)&&Ar();var t=e.effectTag;return 2048&t?(e.effectTag=-2049&t|64,e):null;case 3:if(ua(),Rr(),0!=(64&(t=e.effectTag)))throw i(Error(285));return e.effectTag=-2049&t|64,e;case 5:return fa(e),null;case 13:return Tr(da),2048&(t=e.effectTag)?(e.effectTag=-2049&t|64,e):null;case 18:return null;case 19:return Tr(da),null;case 4:return ua(),null;case 10:return zo(e),null;default:return null}}function wi(e,t){return{value:e,source:t,stack:ft(t)}}yi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(20===n.tag)e.appendChild(n.stateNode.instance);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},_i=function(e,t,n,r,a){var i=e.memoizedProps;if(i!==r){var c=t.stateNode;switch(ca(oa.current),e=null,n){case"input":i=wt(c,i),r=wt(c,r),e=[];break;case"option":i=tr(c,i),r=tr(c,r),e=[];break;case"select":i=o({},i,{value:void 0}),r=o({},r,{value:void 0}),e=[];break;case"textarea":i=rr(c,i),r=rr(c,r),e=[];break;default:"function"!=typeof i.onClick&&"function"==typeof r.onClick&&(c.onclick=wr)}br(n,r),c=n=void 0;var l=null;for(n in i)if(!r.hasOwnProperty(n)&&i.hasOwnProperty(n)&&null!=i[n])if("style"===n){var u=i[n];for(c in u)u.hasOwnProperty(c)&&(l||(l={}),l[c]="")}else"dangerouslySetInnerHTML"!==n&&"children"!==n&&"suppressContentEditableWarning"!==n&&"suppressHydrationWarning"!==n&&"autoFocus"!==n&&(p.hasOwnProperty(n)?e||(e=[]):(e=e||[]).push(n,null));for(n in r){var s=r[n];if(u=null!=i?i[n]:void 0,r.hasOwnProperty(n)&&s!==u&&(null!=s||null!=u))if("style"===n)if(u){for(c in u)!u.hasOwnProperty(c)||s&&s.hasOwnProperty(c)||(l||(l={}),l[c]="");for(c in s)s.hasOwnProperty(c)&&u[c]!==s[c]&&(l||(l={}),l[c]=s[c])}else l||(e||(e=[]),e.push(n,l)),l=s;else"dangerouslySetInnerHTML"===n?(s=s?s.__html:void 0,u=u?u.__html:void 0,null!=s&&u!==s&&(e=e||[]).push(n,""+s)):"children"===n?u===s||"string"!=typeof s&&"number"!=typeof s||(e=e||[]).push(n,""+s):"suppressContentEditableWarning"!==n&&"suppressHydrationWarning"!==n&&(p.hasOwnProperty(n)?(null!=s&&Mr(a,n),e||u===s||(e=[])):(e=e||[]).push(n,s))}l&&(e=e||[]).push("style",l),a=e,(t.updateQueue=a)&&vi(t)}},bi=function(e,t,n,r){n!==r&&vi(t)};var Oi="function"==typeof WeakSet?WeakSet:Set;function ki(e,t){var n=t.source,r=t.stack;null===r&&null!==n&&(r=ft(n)),null!==n&&st(n.type),t=t.value,null!==e&&1===e.tag&&st(e.type);try{console.error(t)}catch(e){setTimeout((function(){throw e}))}}function Li(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(t){Cc(e,t)}else t.current=null}function xi(e,t,n){if(null!==(n=null!==(n=n.updateQueue)?n.lastEffect:null)){var r=n=n.next;do{if(0!=(r.tag&e)){var o=r.destroy;r.destroy=void 0,void 0!==o&&o()}0!=(r.tag&t)&&(o=r.create,r.destroy=o()),r=r.next}while(r!==n)}}function zi(e,t){switch("function"==typeof Hc&&Hc(e),e.tag){case 0:case 11:case 14:case 15:var n=e.updateQueue;if(null!==n&&null!==(n=n.lastEffect)){var r=n.next;ho(97<t?97:t,(function(){var t=r;do{var n=t.destroy;if(void 0!==n){var o=e;try{n()}catch(e){Cc(o,e)}}t=t.next}while(t!==r)}))}break;case 1:Li(e),"function"==typeof(t=e.stateNode).componentWillUnmount&&function(e,t){try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(t){Cc(e,t)}}(e,t);break;case 5:Li(e);break;case 4:Ei(e,t)}}function Si(e,t){for(var n=e;;)if(zi(n,t),null!==n.child&&4!==n.tag)n.child.return=n,n=n.child;else{if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function Ci(e){return 5===e.tag||3===e.tag||4===e.tag}function ji(e){e:{for(var t=e.return;null!==t;){if(Ci(t)){var n=t;break e}t=t.return}throw i(Error(160))}switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw i(Error(161))}16&n.effectTag&&(pr(t,""),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||Ci(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}for(var o=e;;){var a=5===o.tag||6===o.tag;if(a||20===o.tag){var c=a?o.stateNode:o.stateNode.instance;if(n)if(r){var l=c;c=n,8===(a=t).nodeType?a.parentNode.insertBefore(l,c):a.insertBefore(l,c)}else t.insertBefore(c,n);else r?(8===(l=t).nodeType?(a=l.parentNode).insertBefore(c,l):(a=l).appendChild(c),null!=(l=l._reactRootContainer)||null!==a.onclick||(a.onclick=wr)):t.appendChild(c)}else if(4!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===e)break;for(;null===o.sibling;){if(null===o.return||o.return===e)return;o=o.return}o.sibling.return=o.return,o=o.sibling}}function Ei(e,t){for(var n=e,r=!1,o=void 0,a=void 0;;){if(!r){r=n.return;e:for(;;){if(null===r)throw i(Error(160));switch(o=r.stateNode,r.tag){case 5:a=!1;break e;case 3:case 4:o=o.containerInfo,a=!0;break e}r=r.return}r=!0}if(5===n.tag||6===n.tag)if(Si(n,t),a){var c=o,l=n.stateNode;8===c.nodeType?c.parentNode.removeChild(l):c.removeChild(l)}else o.removeChild(n.stateNode);else if(20===n.tag)l=n.stateNode.instance,Si(n,t),a?8===(c=o).nodeType?c.parentNode.removeChild(l):c.removeChild(l):o.removeChild(l);else if(4===n.tag){if(null!==n.child){o=n.stateNode.containerInfo,a=!0,n.child.return=n,n=n.child;continue}}else if(zi(n,t),null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;4===(n=n.return).tag&&(r=!1)}n.sibling.return=n.return,n=n.sibling}}function Ti(e,t){switch(t.tag){case 0:case 11:case 14:case 15:xi(4,8,t);break;case 1:break;case 5:var n=t.stateNode;if(null!=n){var r=t.memoizedProps,o=null!==e?e.memoizedProps:r;e=t.type;var a=t.updateQueue;if(t.updateQueue=null,null!==a){for(n[D]=r,"input"===e&&"radio"===r.type&&null!=r.name&&kt(n,r),gr(e,o),t=gr(e,r),o=0;o<a.length;o+=2){var c=a[o],l=a[o+1];"style"===c?yr(n,l):"dangerouslySetInnerHTML"===c?dr(n,l):"children"===c?pr(n,l):gt(n,c,l,t)}switch(e){case"input":Lt(n,r);break;case"textarea":ar(n,r);break;case"select":t=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(e=r.value)?nr(n,!!r.multiple,e,!1):t!==!!r.multiple&&(null!=r.defaultValue?nr(n,!!r.multiple,r.defaultValue,!0):nr(n,!!r.multiple,r.multiple?[]:"",!1))}}}break;case 6:if(null===t.stateNode)throw i(Error(162));t.stateNode.nodeValue=t.memoizedProps;break;case 3:case 12:break;case 13:if(n=t,null===t.memoizedState?r=!1:(r=!0,n=t.child,Gi=so()),null!==n)e:for(e=n;;){if(5===e.tag)a=e.stateNode,r?"function"==typeof(a=a.style).setProperty?a.setProperty("display","none","important"):a.display="none":(a=e.stateNode,o=null!=(o=e.memoizedProps.style)&&o.hasOwnProperty("display")?o.display:null,a.style.display=vr("display",o));else if(6===e.tag)e.stateNode.nodeValue=r?"":e.memoizedProps;else{if(13===e.tag&&null!==e.memoizedState){(a=e.child.sibling).return=e,e=a;continue}if(null!==e.child){e.child.return=e,e=e.child;continue}}if(e===n)break e;for(;null===e.sibling;){if(null===e.return||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}Pi(t);break;case 19:Pi(t);break;case 17:case 20:break;default:throw i(Error(163))}}function Pi(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Oi),t.forEach((function(t){var r=Ec.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}var Hi="function"==typeof WeakMap?WeakMap:Map;function Di(e,t,n){(n=Ho(n,null)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Qi||(Qi=!0,Xi=r),ki(e,t)},n}function Yi(e,t,n){(n=Ho(n,null)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return ki(e,t),r(o)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Zi?Zi=new Set([this]):Zi.add(this),ki(e,t));var n=t.stack;this.componentDidCatch(t.value,{componentStack:null!==n?n:""})}),n}var Vi=Math.ceil,Ni=Be.ReactCurrentDispatcher,Fi=Be.ReactCurrentOwner,Ai=0,Ri=null,Ii=null,Wi=0,Ui=0,Ki=1073741823,Bi=1073741823,qi=null,$i=!1,Gi=0,Ji=null,Qi=!1,Xi=null,Zi=null,ec=!1,tc=null,nc=90,rc=0,oc=null,ac=0,ic=null,cc=0;function lc(){return 0!=(48&Ai)?1073741821-(so()/10|0):0!==cc?cc:cc=1073741821-(so()/10|0)}function uc(e,t,n){if(0==(2&(t=t.mode)))return 1073741823;var r=fo();if(0==(4&t))return 99===r?1073741823:1073741822;if(0!=(16&Ai))return Wi;if(null!==n)e=1073741821-25*(1+((1073741821-e+(0|n.timeoutMs||5e3)/10)/25|0));else switch(r){case 99:e=1073741823;break;case 98:e=1073741821-10*(1+((1073741821-e+15)/10|0));break;case 97:case 96:e=1073741821-25*(1+((1073741821-e+500)/25|0));break;case 95:e=1;break;default:throw i(Error(326))}return null!==Ri&&e===Wi&&--e,e}var sc=0;function fc(e,t){if(50<ac)throw ac=0,ic=null,i(Error(185));if(null!==(e=dc(e,t))){e.pingTime=0;var n=fo();if(1073741823===t)if(0!=(8&Ai)&&0==(48&Ai))for(var r=gc(e,1073741823,!0);null!==r;)r=r(!0);else pc(e,99,1073741823),0===Ai&&yo();else pc(e,n,t);0==(4&Ai)||98!==n&&99!==n||(null===oc?oc=new Map([[e,t]]):(void 0===(n=oc.get(e))||n>t)&&oc.set(e,t))}}function dc(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t);var r=e.return,o=null;if(null===r&&3===e.tag)o=e.stateNode;else for(;null!==r;){if(n=r.alternate,r.childExpirationTime<t&&(r.childExpirationTime=t),null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t),null===r.return&&3===r.tag){o=r.stateNode;break}r=r.return}return null!==o&&(t>o.firstPendingTime&&(o.firstPendingTime=t),0===(e=o.lastPendingTime)||t<e)&&(o.lastPendingTime=t),o}function pc(e,t,n){if(e.callbackExpirationTime<n){var r=e.callbackNode;null!==r&&r!==oo&&$r(r),e.callbackExpirationTime=n,1073741823===n?e.callbackNode=vo(hc.bind(null,e,gc.bind(null,e,n))):(r=null,1!==n&&(r={timeout:10*(1073741821-n)-so()}),e.callbackNode=mo(t,hc.bind(null,e,gc.bind(null,e,n)),r))}}function hc(e,t,n){var r=e.callbackNode,o=null;try{return null!==(o=t(n))?hc.bind(null,e,o):null}finally{null===o&&r===e.callbackNode&&(e.callbackNode=null,e.callbackExpirationTime=0)}}function mc(){0==(49&Ai)&&(function(){if(null!==oc){var e=oc;oc=null,e.forEach((function(e,t){vo(gc.bind(null,t,e))})),yo()}}(),xc())}function vc(e,t){var n=Ai;Ai|=1;try{return e(t)}finally{0===(Ai=n)&&yo()}}function yc(e,t,n,r){var o=Ai;Ai|=4;try{return ho(98,e.bind(null,t,n,r))}finally{0===(Ai=o)&&yo()}}function _c(e,t){var n=Ai;Ai&=-2,Ai|=8;try{return e(t)}finally{0===(Ai=n)&&yo()}}function bc(e,t){e.finishedWork=null,e.finishedExpirationTime=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Sr(n)),null!==Ii)for(n=Ii.return;null!==n;){var r=n;switch(r.tag){case 1:var o=r.type.childContextTypes;null!=o&&Ar();break;case 3:ua(),Rr();break;case 5:fa(r);break;case 4:ua();break;case 13:case 19:Tr(da);break;case 10:zo(r)}n=n.return}Ri=e,Ii=Nc(e.current,null),Wi=t,Ui=0,Bi=Ki=1073741823,qi=null,$i=!1}function gc(e,t,n){if(0!=(48&Ai))throw i(Error(327));if(e.firstPendingTime<t)return null;if(n&&e.finishedExpirationTime===t)return kc.bind(null,e);if(xc(),e!==Ri||t!==Wi)bc(e,t);else if(3===Ui)if($i)bc(e,t);else{var r=e.lastPendingTime;if(r<t)return gc.bind(null,e,r)}if(null!==Ii){r=Ai,Ai|=16;var o=Ni.current;if(null===o&&(o=Ia),Ni.current=Ia,n){if(1073741823!==t){var a=lc();if(a<t)return Ai=r,Lo(),Ni.current=o,gc.bind(null,e,a)}}else cc=0;for(;;)try{if(n)for(;null!==Ii;)Ii=wc(Ii);else for(;null!==Ii&&!Gr();)Ii=wc(Ii);break}catch(n){if(Lo(),Ea(),null===(a=Ii)||null===a.return)throw bc(e,t),Ai=r,n;e:{var c=e,l=a.return,u=a,s=n,f=Wi;if(u.effectTag|=1024,u.firstEffect=u.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var d=s,p=0!=(1&da.current);s=l;do{var h;if((h=13===s.tag)&&(null!==s.memoizedState?h=!1:h=void 0!==(h=s.memoizedProps).fallback&&(!0!==h.unstable_avoidThisFallback||!p)),h){if(null===(l=s.updateQueue)?((l=new Set).add(d),s.updateQueue=l):l.add(d),0==(2&s.mode)){s.effectTag|=64,u.effectTag&=-1957,1===u.tag&&(null===u.alternate?u.tag=17:((f=Ho(1073741823,null)).tag=2,Yo(u,f))),u.expirationTime=1073741823;break e}u=c,c=f,null===(p=u.pingCache)?(p=u.pingCache=new Hi,l=new Set,p.set(d,l)):void 0===(l=p.get(d))&&(l=new Set,p.set(d,l)),l.has(c)||(l.add(c),u=jc.bind(null,u,d,c),d.then(u,u)),s.effectTag|=2048,s.expirationTime=f;break e}s=s.return}while(null!==s);s=Error((st(u.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+ft(u))}4!==Ui&&(Ui=1),s=wi(s,u),u=l;do{switch(u.tag){case 3:u.effectTag|=2048,u.expirationTime=f,Vo(u,f=Di(u,s,f));break e;case 1:if(d=s,c=u.type,l=u.stateNode,0==(64&u.effectTag)&&("function"==typeof c.getDerivedStateFromError||null!==l&&"function"==typeof l.componentDidCatch&&(null===Zi||!Zi.has(l)))){u.effectTag|=2048,u.expirationTime=f,Vo(u,f=Yi(u,d,f));break e}}u=u.return}while(null!==u)}Ii=Oc(a)}if(Ai=r,Lo(),Ni.current=o,null!==Ii)return gc.bind(null,e,t)}if(e.finishedWork=e.current.alternate,e.finishedExpirationTime=t,function(e,t){var n=e.firstBatch;return!!(null!==n&&n._defer&&n._expirationTime>=t)&&(mo(97,(function(){return n._onComplete(),null})),!0)}(e,t))return null;switch(Ri=null,Ui){case 0:throw i(Error(328));case 1:return(r=e.lastPendingTime)<t?gc.bind(null,e,r):n?kc.bind(null,e):(bc(e,t),vo(gc.bind(null,e,t)),null);case 2:return 1073741823===Ki&&!n&&10<(n=Gi+500-so())?$i?(bc(e,t),gc.bind(null,e,t)):(r=e.lastPendingTime)<t?gc.bind(null,e,r):(e.timeoutHandle=zr(kc.bind(null,e),n),null):kc.bind(null,e);case 3:if(!n){if($i)return bc(e,t),gc.bind(null,e,t);if((n=e.lastPendingTime)<t)return gc.bind(null,e,n);if(1073741823!==Bi?n=10*(1073741821-Bi)-so():1073741823===Ki?n=0:(n=10*(1073741821-Ki)-5e3,0>(n=(r=so())-n)&&(n=0),(t=10*(1073741821-t)-r)<(n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Vi(n/1960))-n)&&(n=t)),10<n)return e.timeoutHandle=zr(kc.bind(null,e),n),null}return kc.bind(null,e);case 4:return!n&&1073741823!==Ki&&null!==qi&&(r=Ki,0>=(t=0|(o=qi).busyMinDurationMs)?t=0:(n=0|o.busyDelayMs,t=(r=so()-(10*(1073741821-r)-(0|o.timeoutMs||5e3)))<=n?0:n+t-r),10<t)?(e.timeoutHandle=zr(kc.bind(null,e),t),null):kc.bind(null,e);default:throw i(Error(329))}}function Mc(e,t){e<Ki&&1<e&&(Ki=e),null!==t&&e<Bi&&1<e&&(Bi=e,qi=t)}function wc(e){var t=Tc(e.alternate,e,Wi);return e.memoizedProps=e.pendingProps,null===t&&(t=Oc(e)),Fi.current=null,t}function Oc(e){Ii=e;do{var t=Ii.alternate;if(e=Ii.return,0==(1024&Ii.effectTag)){e:{var n=t,r=Wi,a=(t=Ii).pendingProps;switch(t.tag){case 2:case 16:break;case 15:case 0:break;case 1:Fr(t.type)&&Ar();break;case 3:ua(),Rr(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==n&&null!==n.child||(Xa(t),t.effectTag&=-3);break;case 5:fa(t),r=ca(ia.current);var c=t.type;if(null!==n&&null!=t.stateNode)_i(n,t,c,a,r),n.ref!==t.ref&&(t.effectTag|=128);else if(a){var l=ca(oa.current);if(Xa(t)){a=void 0,c=(n=t).stateNode;var u=n.type,s=n.memoizedProps;switch(c[H]=n,c[D]=s,u){case"iframe":case"object":case"embed":Dn("load",c);break;case"video":case"audio":for(var f=0;f<ne.length;f++)Dn(ne[f],c);break;case"source":Dn("error",c);break;case"img":case"image":case"link":Dn("error",c),Dn("load",c);break;case"form":Dn("reset",c),Dn("submit",c);break;case"details":Dn("toggle",c);break;case"input":Ot(c,s),Dn("invalid",c),Mr(r,"onChange");break;case"select":c._wrapperState={wasMultiple:!!s.multiple},Dn("invalid",c),Mr(r,"onChange");break;case"textarea":or(c,s),Dn("invalid",c),Mr(r,"onChange")}for(a in br(u,s),f=null,s)s.hasOwnProperty(a)&&(l=s[a],"children"===a?"string"==typeof l?c.textContent!==l&&(f=["children",l]):"number"==typeof l&&c.textContent!==""+l&&(f=["children",""+l]):p.hasOwnProperty(a)&&null!=l&&Mr(r,a));switch(u){case"input":Ue(c),xt(c,s,!0);break;case"textarea":Ue(c),ir(c);break;case"select":case"option":break;default:"function"==typeof s.onClick&&(c.onclick=wr)}r=f,n.updateQueue=r,null!==r&&vi(t)}else{s=c,n=a,u=t,f=9===r.nodeType?r:r.ownerDocument,l===cr&&(l=ur(s)),l===cr?"script"===s?((s=f.createElement("div")).innerHTML="<script><\/script>",f=s.removeChild(s.firstChild)):"string"==typeof n.is?f=f.createElement(s,{is:n.is}):(f=f.createElement(s),"select"===s&&(s=f,n.multiple?s.multiple=!0:n.size&&(s.size=n.size))):f=f.createElementNS(l,s),(s=f)[H]=u,s[D]=n,yi(n=s,t),u=n;var d=r,h=gr(c,a);switch(c){case"iframe":case"object":case"embed":Dn("load",u),r=a;break;case"video":case"audio":for(r=0;r<ne.length;r++)Dn(ne[r],u);r=a;break;case"source":Dn("error",u),r=a;break;case"img":case"image":case"link":Dn("error",u),Dn("load",u),r=a;break;case"form":Dn("reset",u),Dn("submit",u),r=a;break;case"details":Dn("toggle",u),r=a;break;case"input":Ot(u,a),r=wt(u,a),Dn("invalid",u),Mr(d,"onChange");break;case"option":r=tr(u,a);break;case"select":u._wrapperState={wasMultiple:!!a.multiple},r=o({},a,{value:void 0}),Dn("invalid",u),Mr(d,"onChange");break;case"textarea":or(u,a),r=rr(u,a),Dn("invalid",u),Mr(d,"onChange");break;default:r=a}br(c,r),s=void 0,f=c,l=u;var m=r;for(s in m)if(m.hasOwnProperty(s)){var v=m[s];"style"===s?yr(l,v):"dangerouslySetInnerHTML"===s?null!=(v=v?v.__html:void 0)&&dr(l,v):"children"===s?"string"==typeof v?("textarea"!==f||""!==v)&&pr(l,v):"number"==typeof v&&pr(l,""+v):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(p.hasOwnProperty(s)?null!=v&&Mr(d,s):null!=v&>(l,s,v,h))}switch(c){case"input":Ue(u),xt(u,a,!1);break;case"textarea":Ue(u),ir(u);break;case"option":null!=a.value&&u.setAttribute("value",""+Mt(a.value));break;case"select":r=u,u=a,r.multiple=!!u.multiple,null!=(s=u.value)?nr(r,!!u.multiple,s,!1):null!=u.defaultValue&&nr(r,!!u.multiple,u.defaultValue,!0);break;default:"function"==typeof r.onClick&&(u.onclick=wr)}Lr(c,a)&&vi(t),t.stateNode=n}null!==t.ref&&(t.effectTag|=128)}else if(null===t.stateNode)throw i(Error(166));break;case 6:if(n&&null!=t.stateNode)bi(0,t,n.memoizedProps,a);else{if("string"!=typeof a&&null===t.stateNode)throw i(Error(166));n=ca(ia.current),ca(oa.current),Xa(t)?(r=t.stateNode,n=t.memoizedProps,r[H]=t,r.nodeValue!==n&&vi(t)):(r=t,(n=(9===n.nodeType?n:n.ownerDocument).createTextNode(a))[H]=t,r.stateNode=n)}break;case 11:break;case 13:if(Tr(da),a=t.memoizedState,0!=(64&t.effectTag)){t.expirationTime=r;break e}r=null!==a,a=!1,null===n?Xa(t):(a=null!==(c=n.memoizedState),r||null===c||null!==(c=n.child.sibling)&&(null!==(u=t.firstEffect)?(t.firstEffect=c,c.nextEffect=u):(t.firstEffect=t.lastEffect=c,c.nextEffect=null),c.effectTag=8)),r&&!a&&0!=(2&t.mode)&&(null===n&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&da.current)?0===Ui&&(Ui=2):0!==Ui&&2!==Ui||(Ui=3)),(r||a)&&(t.effectTag|=4);break;case 7:case 8:case 12:break;case 4:ua();break;case 10:zo(t);break;case 9:case 14:break;case 17:Fr(t.type)&&Ar();break;case 18:break;case 19:if(Tr(da),null===(a=t.memoizedState))break;if(c=0!=(64&t.effectTag),null===(u=a.rendering)){if(c)gi(a,!1);else if(0!==Ui||null!==n&&0!=(64&n.effectTag))for(n=t.child;null!==n;){if(null!==(u=pa(n))){for(t.effectTag|=64,gi(a,!1),null!==(n=u.updateQueue)&&(t.updateQueue=n,t.effectTag|=4),t.firstEffect=t.lastEffect=null,n=t.child;null!==n;)c=r,(a=n).effectTag&=2,a.nextEffect=null,a.firstEffect=null,a.lastEffect=null,null===(u=a.alternate)?(a.childExpirationTime=0,a.expirationTime=c,a.child=null,a.memoizedProps=null,a.memoizedState=null,a.updateQueue=null,a.dependencies=null):(a.childExpirationTime=u.childExpirationTime,a.expirationTime=u.expirationTime,a.child=u.child,a.memoizedProps=u.memoizedProps,a.memoizedState=u.memoizedState,a.updateQueue=u.updateQueue,c=u.dependencies,a.dependencies=null===c?null:{expirationTime:c.expirationTime,firstContext:c.firstContext,responders:c.responders}),n=n.sibling;Pr(da,1&da.current|2),t=t.child;break e}n=n.sibling}}else{if(!c)if(null!==(n=pa(u))){if(t.effectTag|=64,c=!0,gi(a,!0),null===a.tail&&"hidden"===a.tailMode){null!==(r=n.updateQueue)&&(t.updateQueue=r,t.effectTag|=4),null!==(t=t.lastEffect=a.lastEffect)&&(t.nextEffect=null);break}}else so()>a.tailExpiration&&1<r&&(t.effectTag|=64,c=!0,gi(a,!1),t.expirationTime=t.childExpirationTime=r-1);a.isBackwards?(u.sibling=t.child,t.child=u):(null!==(r=a.last)?r.sibling=u:t.child=u,a.last=u)}if(null!==a.tail){0===a.tailExpiration&&(a.tailExpiration=so()+500),r=a.tail,a.rendering=r,a.tail=r.sibling,a.lastEffect=t.lastEffect,r.sibling=null,n=da.current,Pr(da,n=c?1&n|2:1&n),t=r;break e}break;case 20:break;default:throw i(Error(156))}t=null}if(r=Ii,1===Wi||1!==r.childExpirationTime){for(n=0,a=r.child;null!==a;)(c=a.expirationTime)>n&&(n=c),(u=a.childExpirationTime)>n&&(n=u),a=a.sibling;r.childExpirationTime=n}if(null!==t)return t;null!==e&&0==(1024&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=Ii.firstEffect),null!==Ii.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=Ii.firstEffect),e.lastEffect=Ii.lastEffect),1<Ii.effectTag&&(null!==e.lastEffect?e.lastEffect.nextEffect=Ii:e.firstEffect=Ii,e.lastEffect=Ii))}else{if(null!==(t=Mi(Ii)))return t.effectTag&=1023,t;null!==e&&(e.firstEffect=e.lastEffect=null,e.effectTag|=1024)}if(null!==(t=Ii.sibling))return t;Ii=e}while(null!==Ii);return 0===Ui&&(Ui=4),null}function kc(e){var t=fo();return ho(99,Lc.bind(null,e,t)),null!==tc&&mo(97,(function(){return xc(),null})),null}function Lc(e,t){if(xc(),0!=(48&Ai))throw i(Error(327));var n=e.finishedWork,r=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw i(Error(177));e.callbackNode=null,e.callbackExpirationTime=0;var o=n.expirationTime,a=n.childExpirationTime;if(o=a>o?a:o,e.firstPendingTime=o,o<e.lastPendingTime&&(e.lastPendingTime=o),e===Ri&&(Ii=Ri=null,Wi=0),1<n.effectTag?null!==n.lastEffect?(n.lastEffect.nextEffect=n,o=n.firstEffect):o=n:o=n.firstEffect,null!==o){a=Ai,Ai|=32,Fi.current=null,Or=Hn;var c=Kn();if(Bn(c)){if("selectionStart"in c)var l={start:c.selectionStart,end:c.selectionEnd};else e:{var u=(l=(l=c.ownerDocument)&&l.defaultView||window).getSelection&&l.getSelection();if(u&&0!==u.rangeCount){l=u.anchorNode;var s=u.anchorOffset,f=u.focusNode;u=u.focusOffset;try{l.nodeType,f.nodeType}catch(e){l=null;break e}var d=0,p=-1,h=-1,m=0,v=0,y=c,_=null;t:for(;;){for(var b;y!==l||0!==s&&3!==y.nodeType||(p=d+s),y!==f||0!==u&&3!==y.nodeType||(h=d+u),3===y.nodeType&&(d+=y.nodeValue.length),null!==(b=y.firstChild);)_=y,y=b;for(;;){if(y===c)break t;if(_===l&&++m===s&&(p=d),_===f&&++v===u&&(h=d),null!==(b=y.nextSibling))break;_=(y=_).parentNode}y=b}l=-1===p||-1===h?null:{start:p,end:h}}else l=null}l=l||{start:0,end:0}}else l=null;kr={focusedElem:c,selectionRange:l},Hn=!1,Ji=o;do{try{for(;null!==Ji;){if(0!=(256&Ji.effectTag)){var g=Ji.alternate;switch((c=Ji).tag){case 0:case 11:case 15:xi(2,0,c);break;case 1:if(256&c.effectTag&&null!==g){var M=g.memoizedProps,w=g.memoizedState,O=c.stateNode,k=O.getSnapshotBeforeUpdate(c.elementType===c.type?M:go(c.type,M),w);O.__reactInternalSnapshotBeforeUpdate=k}break;case 3:case 5:case 6:case 4:case 17:break;default:throw i(Error(163))}}Ji=Ji.nextEffect}}catch(e){if(null===Ji)throw i(Error(330));Cc(Ji,e),Ji=Ji.nextEffect}}while(null!==Ji);Ji=o;do{try{for(g=t;null!==Ji;){var L=Ji.effectTag;if(16&L&&pr(Ji.stateNode,""),128&L){var x=Ji.alternate;if(null!==x){var z=x.ref;null!==z&&("function"==typeof z?z(null):z.current=null)}}switch(14&L){case 2:ji(Ji),Ji.effectTag&=-3;break;case 6:ji(Ji),Ji.effectTag&=-3,Ti(Ji.alternate,Ji);break;case 4:Ti(Ji.alternate,Ji);break;case 8:Ei(M=Ji,g),M.return=null,M.child=null,M.memoizedState=null,M.updateQueue=null,M.dependencies=null;var S=M.alternate;null!==S&&(S.return=null,S.child=null,S.memoizedState=null,S.updateQueue=null,S.dependencies=null)}Ji=Ji.nextEffect}}catch(e){if(null===Ji)throw i(Error(330));Cc(Ji,e),Ji=Ji.nextEffect}}while(null!==Ji);if(z=kr,x=Kn(),L=z.focusedElem,g=z.selectionRange,x!==L&&L&&L.ownerDocument&&function e(t,n){return!(!t||!n)&&(t===n||(!t||3!==t.nodeType)&&(n&&3===n.nodeType?e(t,n.parentNode):"contains"in t?t.contains(n):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(n))))}(L.ownerDocument.documentElement,L)){null!==g&&Bn(L)&&(x=g.start,void 0===(z=g.end)&&(z=x),"selectionStart"in L?(L.selectionStart=x,L.selectionEnd=Math.min(z,L.value.length)):(z=(x=L.ownerDocument||document)&&x.defaultView||window).getSelection&&(z=z.getSelection(),M=L.textContent.length,S=Math.min(g.start,M),g=void 0===g.end?S:Math.min(g.end,M),!z.extend&&S>g&&(M=g,g=S,S=M),M=Un(L,S),w=Un(L,g),M&&w&&(1!==z.rangeCount||z.anchorNode!==M.node||z.anchorOffset!==M.offset||z.focusNode!==w.node||z.focusOffset!==w.offset)&&((x=x.createRange()).setStart(M.node,M.offset),z.removeAllRanges(),S>g?(z.addRange(x),z.extend(w.node,w.offset)):(x.setEnd(w.node,w.offset),z.addRange(x))))),x=[];for(z=L;z=z.parentNode;)1===z.nodeType&&x.push({element:z,left:z.scrollLeft,top:z.scrollTop});for("function"==typeof L.focus&&L.focus(),L=0;L<x.length;L++)(z=x[L]).element.scrollLeft=z.left,z.element.scrollTop=z.top}kr=null,Hn=!!Or,Or=null,e.current=n,Ji=o;do{try{for(L=r;null!==Ji;){var C=Ji.effectTag;if(36&C){var j=Ji.alternate;switch(z=L,(x=Ji).tag){case 0:case 11:case 15:xi(16,32,x);break;case 1:var E=x.stateNode;if(4&x.effectTag)if(null===j)E.componentDidMount();else{var T=x.elementType===x.type?j.memoizedProps:go(x.type,j.memoizedProps);E.componentDidUpdate(T,j.memoizedState,E.__reactInternalSnapshotBeforeUpdate)}var P=x.updateQueue;null!==P&&Ro(0,P,E);break;case 3:var H=x.updateQueue;if(null!==H){if(S=null,null!==x.child)switch(x.child.tag){case 5:S=x.child.stateNode;break;case 1:S=x.child.stateNode}Ro(0,H,S)}break;case 5:var D=x.stateNode;null===j&&4&x.effectTag&&(z=D,Lr(x.type,x.memoizedProps)&&z.focus());break;case 6:case 4:case 12:break;case 13:case 19:case 17:case 20:break;default:throw i(Error(163))}}if(128&C){var Y=Ji.ref;if(null!==Y){var V=Ji.stateNode;switch(Ji.tag){case 5:var N=V;break;default:N=V}"function"==typeof Y?Y(N):Y.current=N}}512&C&&(ec=!0),Ji=Ji.nextEffect}}catch(e){if(null===Ji)throw i(Error(330));Cc(Ji,e),Ji=Ji.nextEffect}}while(null!==Ji);Ji=null,ao(),Ai=a}else e.current=n;if(ec)ec=!1,tc=e,rc=r,nc=t;else for(Ji=o;null!==Ji;)t=Ji.nextEffect,Ji.nextEffect=null,Ji=t;if(0!==(t=e.firstPendingTime)?pc(e,C=bo(C=lc(),t),t):Zi=null,"function"==typeof Pc&&Pc(n.stateNode,r),1073741823===t?e===ic?ac++:(ac=0,ic=e):ac=0,Qi)throw Qi=!1,e=Xi,Xi=null,e;return 0!=(8&Ai)||yo(),null}function xc(){if(null===tc)return!1;var e=tc,t=rc,n=nc;return tc=null,rc=0,nc=90,ho(97<n?97:n,zc.bind(null,e,t))}function zc(e){if(0!=(48&Ai))throw i(Error(331));var t=Ai;for(Ai|=32,e=e.current.firstEffect;null!==e;){try{var n=e;if(0!=(512&n.effectTag))switch(n.tag){case 0:case 11:case 15:xi(128,0,n),xi(0,64,n)}}catch(t){if(null===e)throw i(Error(330));Cc(e,t)}n=e.nextEffect,e.nextEffect=null,e=n}return Ai=t,yo(),!0}function Sc(e,t,n){Yo(e,t=Di(e,t=wi(n,t),1073741823)),null!==(e=dc(e,1073741823))&&pc(e,99,1073741823)}function Cc(e,t){if(3===e.tag)Sc(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Sc(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Zi||!Zi.has(r))){Yo(n,e=Yi(n,e=wi(t,e),1073741823)),null!==(n=dc(n,1073741823))&&pc(n,99,1073741823);break}}n=n.return}}function jc(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),Ri===e&&Wi===n?3===Ui||2===Ui&&1073741823===Ki&&so()-Gi<500?bc(e,Wi):$i=!0:e.lastPendingTime<n||(0!==(t=e.pingTime)&&t<n||(e.pingTime=n,e.finishedExpirationTime===n&&(e.finishedExpirationTime=0,e.finishedWork=null),pc(e,t=bo(t=lc(),n),n)))}function Ec(e,t){var n=e.stateNode;null!==n&&n.delete(t),n=bo(n=lc(),t=uc(n,e,null)),null!==(e=dc(e,t))&&pc(e,n,t)}var Tc=void 0;Tc=function(e,t,n){var r=t.expirationTime;if(null!==e){var o=t.pendingProps;if(e.memoizedProps!==o||Yr.current)ti=!0;else if(r<n){switch(ti=!1,t.tag){case 3:si(t),Za();break;case 5:if(sa(t),4&t.mode&&1!==n&&o.hidden)return t.expirationTime=t.childExpirationTime=1,null;break;case 1:Fr(t.type)&&Ur(t);break;case 4:la(t,t.stateNode.containerInfo);break;case 10:xo(t,t.memoizedProps.value);break;case 13:if(null!==t.memoizedState)return 0!==(r=t.child.childExpirationTime)&&r>=n?di(e,t,n):(Pr(da,1&da.current),null!==(t=mi(e,t,n))?t.sibling:null);Pr(da,1&da.current);break;case 19:if(r=t.childExpirationTime>=n,0!=(64&e.effectTag)){if(r)return hi(e,t,n);t.effectTag|=64}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null),Pr(da,da.current),!r)return null}return mi(e,t,n)}}else ti=!1;switch(t.expirationTime=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,o=Nr(t,Dr.current),Co(t,n),o=ja(null,t,r,e,o,n),t.effectTag|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render&&void 0===o.$$typeof){if(t.tag=1,Ea(),Fr(r)){var a=!0;Ur(t)}else a=!1;t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null;var c=r.getDerivedStateFromProps;"function"==typeof c&&Ko(t,r,c,e),o.updater=Bo,t.stateNode=o,o._reactInternalFiber=t,Jo(t,r,e,n),t=ui(null,t,r,!0,a,n)}else t.tag=0,ni(null,t,o,n),t=t.child;return t;case 16:switch(o=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,o=function(e){var t=e._result;switch(e._status){case 1:return t;case 2:case 0:throw t;default:switch(e._status=0,(t=(t=e._ctor)()).then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)})),e._status){case 1:return e._result;case 2:throw e._result}throw e._result=t,t}}(o),t.type=o,a=t.tag=function(e){if("function"==typeof e)return Vc(e)?1:0;if(null!=e){if((e=e.$$typeof)===rt)return 11;if(e===it)return 14}return 2}(o),e=go(o,e),a){case 0:t=ci(null,t,o,e,n);break;case 1:t=li(null,t,o,e,n);break;case 11:t=ri(null,t,o,e,n);break;case 14:t=oi(null,t,o,go(o.type,e),r,n);break;default:throw i(Error(306),o,"")}return t;case 0:return r=t.type,o=t.pendingProps,ci(e,t,r,o=t.elementType===r?o:go(r,o),n);case 1:return r=t.type,o=t.pendingProps,li(e,t,r,o=t.elementType===r?o:go(r,o),n);case 3:if(si(t),null===(r=t.updateQueue))throw i(Error(282));return o=null!==(o=t.memoizedState)?o.element:null,Ao(t,r,t.pendingProps,null,n),(r=t.memoizedState.element)===o?(Za(),t=mi(e,t,n)):(o=t.stateNode,(o=(null===e||null===e.child)&&o.hydrate)&&(Ba=Cr(t.stateNode.containerInfo.firstChild),Ka=t,o=qa=!0),o?(t.effectTag|=2,t.child=na(t,null,r,n)):(ni(e,t,r,n),Za()),t=t.child),t;case 5:return sa(t),null===e&&Ja(t),r=t.type,o=t.pendingProps,a=null!==e?e.memoizedProps:null,c=o.children,xr(r,o)?c=null:null!==a&&xr(r,a)&&(t.effectTag|=16),ii(e,t),4&t.mode&&1!==n&&o.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(ni(e,t,c,n),t=t.child),t;case 6:return null===e&&Ja(t),null;case 13:return di(e,t,n);case 4:return la(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=ta(t,null,r,n):ni(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,ri(e,t,r,o=t.elementType===r?o:go(r,o),n);case 7:return ni(e,t,t.pendingProps,n),t.child;case 8:case 12:return ni(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,c=t.memoizedProps,xo(t,a=o.value),null!==c){var l=c.value;if(0===(a=tn(l,a)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(l,a):1073741823))){if(c.children===o.children&&!Yr.current){t=mi(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var u=l.dependencies;if(null!==u){c=l.child;for(var s=u.firstContext;null!==s;){if(s.context===r&&0!=(s.observedBits&a)){1===l.tag&&((s=Ho(n,null)).tag=2,Yo(l,s)),l.expirationTime<n&&(l.expirationTime=n),null!==(s=l.alternate)&&s.expirationTime<n&&(s.expirationTime=n),So(l.return,n),u.expirationTime<n&&(u.expirationTime=n);break}s=s.next}}else c=10===l.tag&&l.type===t.type?null:l.child;if(null!==c)c.return=l;else for(c=l;null!==c;){if(c===t){c=null;break}if(null!==(l=c.sibling)){l.return=c.return,c=l;break}c=c.return}l=c}}ni(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=(a=t.pendingProps).children,Co(t,n),r=r(o=jo(o,a.unstable_observedBits)),t.effectTag|=1,ni(e,t,r,n),t.child;case 14:return a=go(o=t.type,t.pendingProps),oi(e,t,o,a=go(o.type,a),r,n);case 15:return ai(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:go(r,o),null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),t.tag=1,Fr(r)?(e=!0,Ur(t)):e=!1,Co(t,n),$o(t,r,o),Jo(t,r,o,n),ui(null,t,r,!0,e,n);case 19:return hi(e,t,n)}throw i(Error(156))};var Pc=null,Hc=null;function Dc(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Yc(e,t,n,r){return new Dc(e,t,n,r)}function Vc(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Nc(e,t){var n=e.alternate;return null===n?((n=Yc(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{expirationTime:t.expirationTime,firstContext:t.firstContext,responders:t.responders},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Fc(e,t,n,r,o,a){var c=2;if(r=e,"function"==typeof e)Vc(e)&&(c=1);else if("string"==typeof e)c=5;else e:switch(e){case Qe:return Ac(n.children,o,a,t);case nt:c=8,o|=7;break;case Xe:c=8,o|=1;break;case Ze:return(e=Yc(12,n,t,8|o)).elementType=Ze,e.type=Ze,e.expirationTime=a,e;case ot:return(e=Yc(13,n,t,o)).type=ot,e.elementType=ot,e.expirationTime=a,e;case at:return(e=Yc(19,n,t,o)).elementType=at,e.expirationTime=a,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case et:c=10;break e;case tt:c=9;break e;case rt:c=11;break e;case it:c=14;break e;case ct:c=16,r=null;break e}throw i(Error(130),null==e?e:typeof e,"")}return(t=Yc(c,n,t,o)).elementType=e,t.type=r,t.expirationTime=a,t}function Ac(e,t,n,r){return(e=Yc(7,e,r,t)).expirationTime=n,e}function Rc(e,t,n){return(e=Yc(6,e,null,t)).expirationTime=n,e}function Ic(e,t,n){return(t=Yc(4,null!==e.children?e.children:[],e.key,t)).expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Wc(e,t,n){this.tag=t,this.current=null,this.containerInfo=e,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=this.firstBatch=null,this.pingTime=this.lastPendingTime=this.firstPendingTime=this.callbackExpirationTime=0}function Uc(e,t,n){return e=new Wc(e,t,n),t=Yc(3,null,null,2===t?7:1===t?3:0),e.current=t,t.stateNode=e}function Kc(e,t,n,r,o,a){var c=t.current;e:if(n){t:{if(2!==an(n=n._reactInternalFiber)||1!==n.tag)throw i(Error(170));var l=n;do{switch(l.tag){case 3:l=l.stateNode.context;break t;case 1:if(Fr(l.type)){l=l.stateNode.__reactInternalMemoizedMergedChildContext;break t}}l=l.return}while(null!==l);throw i(Error(171))}if(1===n.tag){var u=n.type;if(Fr(u)){n=Wr(n,u,l);break e}}n=l}else n=Hr;return null===t.context?t.context=n:t.pendingContext=n,t=a,(o=Ho(r,o)).payload={element:e},null!==(t=void 0===t?null:t)&&(o.callback=t),Yo(c,o),fc(c,r),r}function Bc(e,t,n,r){var o=t.current,a=lc(),i=Wo.suspense;return Kc(e,t,n,o=uc(a,o,i),i,r)}function qc(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function $c(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:Je,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}function Gc(e){var t=1073741821-25*(1+((1073741821-lc()+500)/25|0));t<=sc&&--t,this._expirationTime=sc=t,this._root=e,this._callbacks=this._next=null,this._hasChildren=this._didComplete=!1,this._children=null,this._defer=!0}function Jc(){this._callbacks=null,this._didCommit=!1,this._onCommit=this._onCommit.bind(this)}function Qc(e,t,n){this._internalRoot=Uc(e,t,n)}function Xc(e,t){this._internalRoot=Uc(e,2,t)}function Zc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function el(e,t,n,r,o){var a=n._reactRootContainer,i=void 0;if(a){if(i=a._internalRoot,"function"==typeof o){var c=o;o=function(){var e=qc(i);c.call(e)}}Bc(t,i,e,o)}else{if(a=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new Qc(e,0,t)}(n,r),i=a._internalRoot,"function"==typeof o){var l=o;o=function(){var e=qc(i);l.call(e)}}_c((function(){Bc(t,i,e,o)}))}return qc(i)}function tl(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Zc(t))throw i(Error(200));return $c(e,t,null,n)}ze=function(e,t,n){switch(t){case"input":if(Lt(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=F(r);if(!o)throw i(Error(90));Ke(r),Lt(r,o)}}}break;case"textarea":ar(e,n);break;case"select":null!=(t=n.value)&&nr(e,!!n.multiple,t,!1)}},Gc.prototype.render=function(e){if(!this._defer)throw i(Error(250));this._hasChildren=!0,this._children=e;var t=this._root._internalRoot,n=this._expirationTime,r=new Jc;return Kc(e,t,null,n,null,r._onCommit),r},Gc.prototype.then=function(e){if(this._didComplete)e();else{var t=this._callbacks;null===t&&(t=this._callbacks=[]),t.push(e)}},Gc.prototype.commit=function(){var e=this._root._internalRoot,t=e.firstBatch;if(!this._defer||null===t)throw i(Error(251));if(this._hasChildren){var n=this._expirationTime;if(t!==this){this._hasChildren&&(n=this._expirationTime=t._expirationTime,this.render(this._children));for(var r=null,o=t;o!==this;)r=o,o=o._next;if(null===r)throw i(Error(251));r._next=o._next,this._next=t,e.firstBatch=this}if(this._defer=!1,t=n,0!=(48&Ai))throw i(Error(253));vo(gc.bind(null,e,t)),yo(),t=this._next,this._next=null,null!==(t=e.firstBatch=t)&&t._hasChildren&&t.render(t._children)}else this._next=null,this._defer=!1},Gc.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var e=this._callbacks;if(null!==e)for(var t=0;t<e.length;t++)(0,e[t])()}},Jc.prototype.then=function(e){if(this._didCommit)e();else{var t=this._callbacks;null===t&&(t=this._callbacks=[]),t.push(e)}},Jc.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var e=this._callbacks;if(null!==e)for(var t=0;t<e.length;t++){var n=e[t];if("function"!=typeof n)throw i(Error(191),n);n()}}},Xc.prototype.render=Qc.prototype.render=function(e,t){var n=this._internalRoot,r=new Jc;return null!==(t=void 0===t?null:t)&&r.then(t),Bc(e,n,null,r._onCommit),r},Xc.prototype.unmount=Qc.prototype.unmount=function(e){var t=this._internalRoot,n=new Jc;return null!==(e=void 0===e?null:e)&&n.then(e),Bc(null,t,null,n._onCommit),n},Xc.prototype.createBatch=function(){var e=new Gc(this),t=e._expirationTime,n=this._internalRoot,r=n.firstBatch;if(null===r)n.firstBatch=e,e._next=null;else{for(n=null;null!==r&&r._expirationTime>=t;)n=r,r=r._next;e._next=r,null!==n&&(n._next=e)}return e},Pe=vc,He=yc,De=mc,Ye=function(e,t){var n=Ai;Ai|=2;try{return e(t)}finally{0===(Ai=n)&&yo()}};var nl,rl,ol={createPortal:tl,findDOMNode:function(e){if(null==e)e=null;else if(1!==e.nodeType){var t=e._reactInternalFiber;if(void 0===t){if("function"==typeof e.render)throw i(Error(188));throw i(Error(268),Object.keys(e))}e=null===(e=ln(t))?null:e.stateNode}return e},hydrate:function(e,t,n){if(!Zc(t))throw i(Error(200));return el(null,e,t,!0,n)},render:function(e,t,n){if(!Zc(t))throw i(Error(200));return el(null,e,t,!1,n)},unstable_renderSubtreeIntoContainer:function(e,t,n,r){if(!Zc(n))throw i(Error(200));if(null==e||void 0===e._reactInternalFiber)throw i(Error(38));return el(e,t,n,!1,r)},unmountComponentAtNode:function(e){if(!Zc(e))throw i(Error(40));return!!e._reactRootContainer&&(_c((function(){el(null,null,e,!1,(function(){e._reactRootContainer=null}))})),!0)},unstable_createPortal:function(){return tl.apply(void 0,arguments)},unstable_batchedUpdates:vc,unstable_interactiveUpdates:function(e,t,n,r){return mc(),yc(e,t,n,r)},unstable_discreteUpdates:yc,unstable_flushDiscreteUpdates:mc,flushSync:function(e,t){if(0!=(48&Ai))throw i(Error(187));var n=Ai;Ai|=1;try{return ho(99,e.bind(null,t))}finally{Ai=n,yo()}},unstable_createRoot:function(e,t){if(!Zc(e))throw i(Error(299),"unstable_createRoot");return new Xc(e,null!=t&&!0===t.hydrate)},unstable_createSyncRoot:function(e,t){if(!Zc(e))throw i(Error(299),"unstable_createRoot");return new Qc(e,1,null!=t&&!0===t.hydrate)},unstable_flushControlled:function(e){var t=Ai;Ai|=1;try{ho(99,e)}finally{0===(Ai=t)&&yo()}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[V,N,F,E.injectEventPluginsByName,d,K,function(e){z(e,U)},Ee,Te,Fn,j,xc,{current:!1}]}};rl=(nl={findFiberByHostInstance:Y,bundleType:0,version:"16.9.0",rendererPackageName:"react-dom"}).findFiberByHostInstance,function(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);Pc=function(e){try{t.onCommitFiberRoot(n,e,void 0,64==(64&e.current.effectTag))}catch(e){}},Hc=function(e){try{t.onCommitFiberUnmount(n,e)}catch(e){}}}catch(e){}}(o({},nl,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Be.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=ln(e))?null:e.stateNode},findFiberByHostInstance:function(e){return rl?rl(e):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}));var al={default:ol},il=al&&ol||al;e.exports=il.default||il},function(e,t,n){"use strict";e.exports=n(438)},function(e,t,n){"use strict"; /** @license React v0.15.0 * scheduler.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */Object.defineProperty(t,"__esModule",{value:!0});var r=void 0,o=void 0,a=void 0,i=void 0,c=void 0;if(t.unstable_now=void 0,t.unstable_forceFrameRate=void 0,"undefined"==typeof window||"function"!=typeof MessageChannel){var l=null,u=null,s=function(){if(null!==l)try{var e=t.unstable_now();l(!0,e),l=null}catch(e){throw setTimeout(s,0),e}};t.unstable_now=function(){return Date.now()},r=function(e){null!==l?setTimeout(r,0,e):(l=e,setTimeout(s,0))},o=function(e,t){u=setTimeout(e,t)},a=function(){clearTimeout(u)},i=function(){return!1},c=t.unstable_forceFrameRate=function(){}}else{var f=window.performance,d=window.Date,p=window.setTimeout,h=window.clearTimeout,m=window.requestAnimationFrame,v=window.cancelAnimationFrame;"undefined"!=typeof console&&("function"!=typeof m&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof v&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")),t.unstable_now="object"==typeof f&&"function"==typeof f.now?function(){return f.now()}:function(){return d.now()};var y=!1,_=null,b=-1,g=-1,M=33.33,w=-1,O=-1,k=0,L=!1;i=function(){return t.unstable_now()>=k},c=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):0<e?(M=Math.floor(1e3/e),L=!0):(M=33.33,L=!1)};var x=function(){if(null!==_){var e=t.unstable_now(),n=0<k-e;try{_(n,e)||(_=null)}catch(e){throw S.postMessage(null),e}}},z=new MessageChannel,S=z.port2;z.port1.onmessage=x;var C=function(e){if(null===_)O=w=-1,y=!1;else{y=!0,m((function(e){h(b),C(e)}));var n=function(){k=t.unstable_now()+M/2,x(),b=p(n,3*M)};if(b=p(n,3*M),-1!==w&&.1<e-w){var r=e-w;!L&&-1!==O&&r<M&&O<M&&(8.33>(M=r<O?O:r)&&(M=8.33)),O=r}w=e,k=e+M,S.postMessage(null)}};r=function(e){_=e,y||(y=!0,m((function(e){C(e)})))},o=function(e,n){g=p((function(){e(t.unstable_now())}),n)},a=function(){h(g),g=-1}}var j=null,E=null,T=null,P=3,H=!1,D=!1,Y=!1;function V(e,t){var n=e.next;if(n===e)j=null;else{e===j&&(j=n);var r=e.previous;r.next=n,n.previous=r}e.next=e.previous=null,n=e.callback,r=P;var o=T;P=e.priorityLevel,T=e;try{var a=e.expirationTime<=t;switch(P){case 1:var i=n(a);break;case 2:case 3:case 4:i=n(a);break;case 5:i=n(a)}}catch(e){throw e}finally{P=r,T=o}if("function"==typeof i)if(t=e.expirationTime,e.callback=i,null===j)j=e.next=e.previous=e;else{i=null,a=j;do{if(t<=a.expirationTime){i=a;break}a=a.next}while(a!==j);null===i?i=j:i===j&&(j=e),(t=i.previous).next=i.previous=e,e.next=i,e.previous=t}}function N(e){if(null!==E&&E.startTime<=e)do{var t=E,n=t.next;if(t===n)E=null;else{E=n;var r=t.previous;r.next=n,n.previous=r}t.next=t.previous=null,I(t,t.expirationTime)}while(null!==E&&E.startTime<=e)}function F(e){Y=!1,N(e),D||(null!==j?(D=!0,r(A)):null!==E&&o(F,E.startTime-e))}function A(e,n){D=!1,Y&&(Y=!1,a()),N(n),H=!0;try{if(e){if(null!==j)do{V(j,n),N(n=t.unstable_now())}while(null!==j&&!i())}else for(;null!==j&&j.expirationTime<=n;)V(j,n),N(n=t.unstable_now());return null!==j||(null!==E&&o(F,E.startTime-n),!1)}finally{H=!1}}function R(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}function I(e,t){if(null===j)j=e.next=e.previous=e;else{var n=null,r=j;do{if(t<r.expirationTime){n=r;break}r=r.next}while(r!==j);null===n?n=j:n===j&&(j=e),(t=n.previous).next=n.previous=e,e.next=n,e.previous=t}}var W=c;t.unstable_ImmediatePriority=1,t.unstable_UserBlockingPriority=2,t.unstable_NormalPriority=3,t.unstable_IdlePriority=5,t.unstable_LowPriority=4,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=P;P=e;try{return t()}finally{P=n}},t.unstable_next=function(e){switch(P){case 1:case 2:case 3:var t=3;break;default:t=P}var n=P;P=t;try{return e()}finally{P=n}},t.unstable_scheduleCallback=function(e,n,i){var c=t.unstable_now();if("object"==typeof i&&null!==i){var l=i.delay;l="number"==typeof l&&0<l?c+l:c,i="number"==typeof i.timeout?i.timeout:R(e)}else i=R(e),l=c;if(e={callback:n,priorityLevel:e,startTime:l,expirationTime:i=l+i,next:null,previous:null},l>c){if(i=l,null===E)E=e.next=e.previous=e;else{n=null;var u=E;do{if(i<u.startTime){n=u;break}u=u.next}while(u!==E);null===n?n=E:n===E&&(E=e),(i=n.previous).next=n.previous=e,e.next=n,e.previous=i}null===j&&E===e&&(Y?a():Y=!0,o(F,l-c))}else I(e,i),D||H||(D=!0,r(A));return e},t.unstable_cancelCallback=function(e){var t=e.next;if(null!==t){if(e===t)e===j?j=null:e===E&&(E=null);else{e===j?j=t:e===E&&(E=t);var n=e.previous;n.next=t,t.previous=n}e.next=e.previous=null}},t.unstable_wrapCallback=function(e){var t=P;return function(){var n=P;P=t;try{return e.apply(this,arguments)}finally{P=n}}},t.unstable_getCurrentPriorityLevel=function(){return P},t.unstable_shouldYield=function(){var e=t.unstable_now();return N(e),null!==T&&null!==j&&j.startTime<=e&&j.expirationTime<T.expirationTime||i()},t.unstable_requestPaint=W,t.unstable_continueExecution=function(){D||H||(D=!0,r(A))},t.unstable_pauseExecution=function(){},t.unstable_getFirstCallbackNode=function(){return j}},function(e,t,n){"use strict";e.exports=function(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}},function(e,t,n){"use strict";var r=new RegExp("%[a-f0-9]{2}","gi"),o=new RegExp("(%[a-f0-9]{2})+","gi");function a(e,t){try{return decodeURIComponent(e.join(""))}catch(e){}if(1===e.length)return e;t=t||1;var n=e.slice(0,t),r=e.slice(t);return Array.prototype.concat.call([],a(n),a(r))}function i(e){try{return decodeURIComponent(e)}catch(o){for(var t=e.match(r),n=1;n<t.length;n++)t=(e=a(t,n).join("")).match(r);return e}}e.exports=function(e){if("string"!=typeof e)throw new TypeError("Expected `encodedURI` to be of type `string`, got `"+typeof e+"`");try{return e=e.replace(/\+/g," "),decodeURIComponent(e)}catch(t){return function(e){for(var t={"%FE%FF":"��","%FF%FE":"��"},n=o.exec(e);n;){try{t[n[0]]=decodeURIComponent(n[0])}catch(e){var r=i(n[0]);r!==n[0]&&(t[n[0]]=r)}n=o.exec(e)}t["%C2"]="�";for(var a=Object.keys(t),c=0;c<a.length;c++){var l=a[c];e=e.replace(new RegExp(l,"g"),t[l])}return e}(e)}}},function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){e.exports={default:n(448),__esModule:!0}},function(e,t,n){n(449),e.exports=n(49).Object.assign},function(e,t,n){var r=n(75);r(r.S+r.F,"Object",{assign:n(451)})},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){"use strict";var r=n(66),o=n(102),a=n(138),i=n(105),c=n(106),l=n(193),u=Object.assign;e.exports=!u||n(91)((function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach((function(e){t[e]=e})),7!=u({},e)[n]||Object.keys(u({},t)).join("")!=r}))?function(e,t){for(var n=c(e),u=arguments.length,s=1,f=a.f,d=i.f;u>s;)for(var p,h=l(arguments[s++]),m=f?o(h).concat(f(h)):o(h),v=m.length,y=0;v>y;)p=m[y++],r&&!d.call(h,p)||(n[p]=h[p]);return n}:u},function(e,t,n){var r=n(87),o=n(194),a=n(453);e.exports=function(e){return function(t,n,i){var c,l=r(t),u=o(l.length),s=a(i,u);if(e&&n!=n){for(;u>s;)if((c=l[s++])!=c)return!0}else for(;u>s;s++)if((e||s in l)&&l[s]===n)return e||s||0;return!e&&-1}}},function(e,t,n){var r=n(134),o=Math.max,a=Math.min;e.exports=function(e,t){return(e=r(e))<0?o(e+t,0):a(e,t)}},function(e,t,n){n(455);var r=n(49).Object;e.exports=function(e,t,n){return r.defineProperty(e,t,n)}},function(e,t,n){var r=n(75);r(r.S+r.F*!n(66),"Object",{defineProperty:n(65).f})},function(e,t,n){e.exports={default:n(457),__esModule:!0}},function(e,t,n){n(196),n(463),e.exports=n(141).f("iterator")},function(e,t,n){var r=n(134),o=n(133);e.exports=function(e){return function(t,n){var a,i,c=String(o(t)),l=r(n),u=c.length;return l<0||l>=u?e?"":void 0:(a=c.charCodeAt(l))<55296||a>56319||l+1===u||(i=c.charCodeAt(l+1))<56320||i>57343?e?c.charAt(l):a:e?c.slice(l,l+2):i-56320+(a-55296<<10)+65536}}},function(e,t,n){"use strict";var r=n(139),o=n(92),a=n(140),i={};n(84)(i,n(50)("iterator"),(function(){return this})),e.exports=function(e,t,n){e.prototype=r(i,{next:o(1,n)}),a(e,t+" Iterator")}},function(e,t,n){var r=n(65),o=n(85),a=n(102);e.exports=n(66)?Object.defineProperties:function(e,t){o(e);for(var n,i=a(t),c=i.length,l=0;c>l;)r.f(e,n=i[l++],t[n]);return e}},function(e,t,n){var r=n(64).document;e.exports=r&&r.documentElement},function(e,t,n){var r=n(76),o=n(106),a=n(135)("IE_PROTO"),i=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?i:null}},function(e,t,n){n(464);for(var r=n(64),o=n(84),a=n(93),i=n(50)("toStringTag"),c="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;l<c.length;l++){var u=c[l],s=r[u],f=s&&s.prototype;f&&!f[i]&&o(f,i,u),a[u]=a.Array}},function(e,t,n){"use strict";var r=n(465),o=n(466),a=n(93),i=n(87);e.exports=n(197)(Array,"Array",(function(e,t){this._t=i(e),this._i=0,this._k=t}),(function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,o(1)):o(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])}),"values"),a.Arguments=a.Array,r("keys"),r("values"),r("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){e.exports={default:n(468),__esModule:!0}},function(e,t,n){n(469),n(474),n(475),n(476),e.exports=n(49).Symbol},function(e,t,n){"use strict";var r=n(64),o=n(76),a=n(66),i=n(75),c=n(198),l=n(470).KEY,u=n(91),s=n(136),f=n(140),d=n(104),p=n(50),h=n(141),m=n(142),v=n(471),y=n(472),_=n(85),b=n(86),g=n(106),M=n(87),w=n(131),O=n(92),k=n(139),L=n(473),x=n(200),z=n(138),S=n(65),C=n(102),j=x.f,E=S.f,T=L.f,P=r.Symbol,H=r.JSON,D=H&&H.stringify,Y=p("_hidden"),V=p("toPrimitive"),N={}.propertyIsEnumerable,F=s("symbol-registry"),A=s("symbols"),R=s("op-symbols"),I=Object.prototype,W="function"==typeof P&&!!z.f,U=r.QObject,K=!U||!U.prototype||!U.prototype.findChild,B=a&&u((function(){return 7!=k(E({},"a",{get:function(){return E(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=j(I,t);r&&delete I[t],E(e,t,n),r&&e!==I&&E(I,t,r)}:E,q=function(e){var t=A[e]=k(P.prototype);return t._k=e,t},$=W&&"symbol"==typeof P.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof P},G=function(e,t,n){return e===I&&G(R,t,n),_(e),t=w(t,!0),_(n),o(A,t)?(n.enumerable?(o(e,Y)&&e[Y][t]&&(e[Y][t]=!1),n=k(n,{enumerable:O(0,!1)})):(o(e,Y)||E(e,Y,O(1,{})),e[Y][t]=!0),B(e,t,n)):E(e,t,n)},J=function(e,t){_(e);for(var n,r=v(t=M(t)),o=0,a=r.length;a>o;)G(e,n=r[o++],t[n]);return e},Q=function(e){var t=N.call(this,e=w(e,!0));return!(this===I&&o(A,e)&&!o(R,e))&&(!(t||!o(this,e)||!o(A,e)||o(this,Y)&&this[Y][e])||t)},X=function(e,t){if(e=M(e),t=w(t,!0),e!==I||!o(A,t)||o(R,t)){var n=j(e,t);return!n||!o(A,t)||o(e,Y)&&e[Y][t]||(n.enumerable=!0),n}},Z=function(e){for(var t,n=T(M(e)),r=[],a=0;n.length>a;)o(A,t=n[a++])||t==Y||t==l||r.push(t);return r},ee=function(e){for(var t,n=e===I,r=T(n?R:M(e)),a=[],i=0;r.length>i;)!o(A,t=r[i++])||n&&!o(I,t)||a.push(A[t]);return a};W||(c((P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var e=d(arguments.length>0?arguments[0]:void 0),t=function(n){this===I&&t.call(R,n),o(this,Y)&&o(this[Y],e)&&(this[Y][e]=!1),B(this,e,O(1,n))};return a&&K&&B(I,e,{configurable:!0,set:t}),q(e)}).prototype,"toString",(function(){return this._k})),x.f=X,S.f=G,n(199).f=L.f=Z,n(105).f=Q,z.f=ee,a&&!n(103)&&c(I,"propertyIsEnumerable",Q,!0),h.f=function(e){return q(p(e))}),i(i.G+i.W+i.F*!W,{Symbol:P});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ne=0;te.length>ne;)p(te[ne++]);for(var re=C(p.store),oe=0;re.length>oe;)m(re[oe++]);i(i.S+i.F*!W,"Symbol",{for:function(e){return o(F,e+="")?F[e]:F[e]=P(e)},keyFor:function(e){if(!$(e))throw TypeError(e+" is not a symbol!");for(var t in F)if(F[t]===e)return t},useSetter:function(){K=!0},useSimple:function(){K=!1}}),i(i.S+i.F*!W,"Object",{create:function(e,t){return void 0===t?k(e):J(k(e),t)},defineProperty:G,defineProperties:J,getOwnPropertyDescriptor:X,getOwnPropertyNames:Z,getOwnPropertySymbols:ee});var ae=u((function(){z.f(1)}));i(i.S+i.F*ae,"Object",{getOwnPropertySymbols:function(e){return z.f(g(e))}}),H&&i(i.S+i.F*(!W||u((function(){var e=P();return"[null]"!=D([e])||"{}"!=D({a:e})||"{}"!=D(Object(e))}))),"JSON",{stringify:function(e){for(var t,n,r=[e],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=t=r[1],(b(t)||void 0!==e)&&!$(e))return y(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!$(t))return t}),r[1]=t,D.apply(H,r)}}),P.prototype[V]||n(84)(P.prototype,V,P.prototype.valueOf),f(P,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},function(e,t,n){var r=n(104)("meta"),o=n(86),a=n(76),i=n(65).f,c=0,l=Object.isExtensible||function(){return!0},u=!n(91)((function(){return l(Object.preventExtensions({}))})),s=function(e){i(e,r,{value:{i:"O"+ ++c,w:{}}})},f=e.exports={KEY:r,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!a(e,r)){if(!l(e))return"F";if(!t)return"E";s(e)}return e[r].i},getWeak:function(e,t){if(!a(e,r)){if(!l(e))return!0;if(!t)return!1;s(e)}return e[r].w},onFreeze:function(e){return u&&f.NEED&&l(e)&&!a(e,r)&&s(e),e}}},function(e,t,n){var r=n(102),o=n(138),a=n(105);e.exports=function(e){var t=r(e),n=o.f;if(n)for(var i,c=n(e),l=a.f,u=0;c.length>u;)l.call(e,i=c[u++])&&t.push(i);return t}},function(e,t,n){var r=n(132);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){var r=n(87),o=n(199).f,a={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return i&&"[object Window]"==a.call(e)?function(e){try{return o(e)}catch(e){return i.slice()}}(e):o(r(e))}},function(e,t){},function(e,t,n){n(142)("asyncIterator")},function(e,t,n){n(142)("observable")},function(e,t,n){e.exports={default:n(478),__esModule:!0}},function(e,t,n){n(479),e.exports=n(49).Object.setPrototypeOf},function(e,t,n){var r=n(75);r(r.S,"Object",{setPrototypeOf:n(480).set})},function(e,t,n){var r=n(86),o=n(85),a=function(e,t){if(o(e),!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,r){try{(r=n(130)(Function.call,n(200).f(Object.prototype,"__proto__").set,2))(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function(e,n){return a(e,n),t?e.__proto__=n:r(e,n),e}}({},!1):void 0),check:a}},function(e,t,n){e.exports={default:n(482),__esModule:!0}},function(e,t,n){n(483);var r=n(49).Object;e.exports=function(e,t){return r.create(e,t)}},function(e,t,n){var r=n(75);r(r.S,"Object",{create:n(139)})},function(e,t,n){"use strict";var r=n(485);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="0 0 1024 1024",o="64 64 896 896",a="fill",i="outline",c="twotone";function l(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return{tag:"svg",attrs:{viewBox:e,focusable:!1},children:t.map((function(e){return Array.isArray(e)?{tag:"path",attrs:{fill:e[0],d:e[1]}}:{tag:"path",attrs:{d:e}}}))}}function u(e,t,n){return{name:e,theme:t,icon:n}}t.AccountBookFill=u("account-book",a,l(o,"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zM648.3 426.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V752c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3 73.2-144.3a10 10 0 0 1 8.9-5.5h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8z")),t.AlertFill=u("alert",a,l(o,"M512 244c176.18 0 319 142.82 319 319v233a32 32 0 0 1-32 32H225a32 32 0 0 1-32-32V563c0-176.18 142.82-319 319-319zM484 68h56a8 8 0 0 1 8 8v96a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8V76a8 8 0 0 1 8-8zM177.25 191.66a8 8 0 0 1 11.32 0l67.88 67.88a8 8 0 0 1 0 11.31l-39.6 39.6a8 8 0 0 1-11.31 0l-67.88-67.88a8 8 0 0 1 0-11.31l39.6-39.6zm669.6 0l39.6 39.6a8 8 0 0 1 0 11.3l-67.88 67.9a8 8 0 0 1-11.32 0l-39.6-39.6a8 8 0 0 1 0-11.32l67.89-67.88a8 8 0 0 1 11.31 0zM192 892h640a32 32 0 0 1 32 32v24a8 8 0 0 1-8 8H168a8 8 0 0 1-8-8v-24a32 32 0 0 1 32-32zm148-317v253h64V575h-64z")),t.AlipaySquareFill=u("alipay-square",a,l(o,"M308.6 545.7c-19.8 2-57.1 10.7-77.4 28.6-61 53-24.5 150 99 150 71.8 0 143.5-45.7 199.8-119-80.2-38.9-148.1-66.8-221.4-59.6zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm29.4 663.2S703 689.4 598.7 639.5C528.8 725.2 438.6 777.3 345 777.3c-158.4 0-212.1-138.1-137.2-229 16.3-19.8 44.2-38.7 87.3-49.4 67.5-16.5 175 10.3 275.7 43.4 18.1-33.3 33.4-69.9 44.7-108.9H305.1V402h160v-56.2H271.3v-31.3h193.8v-80.1s0-13.5 13.7-13.5H557v93.6h191.7v31.3H557.1V402h156.4c-15 61.1-37.7 117.4-66.2 166.8 47.5 17.1 90.1 33.3 121.8 43.9 114.3 38.2 140.2 40.2 140.2 40.2v122.3z")),t.AliwangwangFill=u("aliwangwang",a,l(o,"M868.2 377.4c-18.9-45.1-46.3-85.6-81.2-120.6a377.26 377.26 0 0 0-120.5-81.2A375.65 375.65 0 0 0 519 145.8c-41.9 0-82.9 6.7-121.9 20C306 123.3 200.8 120 170.6 120c-2.2 0-7.4 0-9.4.2-11.9.4-22.8 6.5-29.2 16.4-6.5 9.9-7.7 22.4-3.4 33.5l64.3 161.6a378.59 378.59 0 0 0-52.8 193.2c0 51.4 10 101 29.8 147.6 18.9 45 46.2 85.6 81.2 120.5 34.7 34.8 75.4 62.1 120.5 81.2C418.3 894 467.9 904 519 904c51.3 0 100.9-10 147.7-29.8 44.9-18.9 85.5-46.3 120.4-81.2 34.7-34.8 62.1-75.4 81.2-120.6a376.5 376.5 0 0 0 29.8-147.6c-.2-51.2-10.1-100.8-29.9-147.4zm-325.2 79c0 20.4-16.6 37.1-37.1 37.1-20.4 0-37.1-16.7-37.1-37.1v-55.1c0-20.4 16.6-37.1 37.1-37.1 20.4 0 37.1 16.6 37.1 37.1v55.1zm175.2 0c0 20.4-16.6 37.1-37.1 37.1S644 476.8 644 456.4v-55.1c0-20.4 16.7-37.1 37.1-37.1 20.4 0 37.1 16.6 37.1 37.1v55.1z")),t.AlipayCircleFill=u("alipay-circle",a,l(o,"M308.6 545.7c-19.8 2-57.1 10.7-77.4 28.6-61 53-24.5 150 99 150 71.8 0 143.5-45.7 199.8-119-80.2-38.9-148.1-66.8-221.4-59.6zm460.5 67c100.1 33.4 154.7 43 166.7 44.8A445.9 445.9 0 0 0 960 512c0-247.4-200.6-448-448-448S64 264.6 64 512s200.6 448 448 448c155.9 0 293.2-79.7 373.5-200.5-75.6-29.8-213.6-85-286.8-120.1-69.9 85.7-160.1 137.8-253.7 137.8-158.4 0-212.1-138.1-137.2-229 16.3-19.8 44.2-38.7 87.3-49.4 67.5-16.5 175 10.3 275.7 43.4 18.1-33.3 33.4-69.9 44.7-108.9H305.1V402h160v-56.2H271.3v-31.3h193.8v-80.1s0-13.5 13.7-13.5H557v93.6h191.7v31.3H557.1V402h156.4c-15 61.1-37.7 117.4-66.2 166.8 47.5 17.1 90.1 33.3 121.8 43.9z")),t.AmazonCircleFill=u("amazon-circle",a,l(o,"M485 467.5c-11.6 4.9-20.9 12.2-27.8 22-6.9 9.8-10.4 21.6-10.4 35.5 0 17.8 7.5 31.5 22.4 41.2 14.1 9.1 28.9 11.4 44.4 6.8 17.9-5.2 30-17.9 36.4-38.1 3-9.3 4.5-19.7 4.5-31.3v-50.2c-12.6.4-24.4 1.6-35.5 3.7-11.1 2.1-22.4 5.6-34 10.4zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm35.8 262.7c-7.2-10.9-20.1-16.4-38.7-16.4-1.3 0-3 .1-5.3.3-2.2.2-6.6 1.5-12.9 3.7a79.4 79.4 0 0 0-17.9 9.1c-5.5 3.8-11.5 10-18 18.4-6.4 8.5-11.5 18.4-15.3 29.8l-94-8.4c0-12.4 2.4-24.7 7-36.9 4.7-12.2 11.8-23.9 21.4-35 9.6-11.2 21.1-21 34.5-29.4 13.4-8.5 29.6-15.2 48.4-20.3 18.9-5.1 39.1-7.6 60.9-7.6 21.3 0 40.6 2.6 57.8 7.7 17.2 5.2 31.1 11.5 41.4 19.1a117 117 0 0 1 25.9 25.7c6.9 9.6 11.7 18.5 14.4 26.7 2.7 8.2 4 15.7 4 22.8v182.5c0 6.4 1.4 13 4.3 19.8 2.9 6.8 6.3 12.8 10.2 18 3.9 5.2 7.9 9.9 12 14.3 4.1 4.3 7.6 7.7 10.6 9.9l4.1 3.4-72.5 69.4c-8.5-7.7-16.9-15.4-25.2-23.4-8.3-8-14.5-14-18.5-18.1l-6.1-6.2c-2.4-2.3-5-5.7-8-10.2-8.1 12.2-18.5 22.8-31.1 31.8-12.7 9-26.3 15.6-40.7 19.7-14.5 4.1-29.4 6.5-44.7 7.1-15.3.6-30-1.5-43.9-6.5-13.9-5-26.5-11.7-37.6-20.3-11.1-8.6-19.9-20.2-26.5-35-6.6-14.8-9.9-31.5-9.9-50.4 0-17.4 3-33.3 8.9-47.7 6-14.5 13.6-26.5 23-36.1 9.4-9.6 20.7-18.2 34-25.7s26.4-13.4 39.2-17.7c12.8-4.2 26.6-7.8 41.5-10.7 14.9-2.9 27.6-4.8 38.2-5.7 10.6-.9 21.2-1.6 31.8-2v-39.4c0-13.5-2.3-23.5-6.7-30.1zm180.5 379.6c-2.8 3.3-7.5 7.8-14.1 13.5s-16.8 12.7-30.5 21.1c-13.7 8.4-28.8 16-45 22.9-16.3 6.9-36.3 12.9-60.1 18-23.7 5.1-48.2 7.6-73.3 7.6-25.4 0-50.7-3.2-76.1-9.6-25.4-6.4-47.6-14.3-66.8-23.7-19.1-9.4-37.6-20.2-55.1-32.2-17.6-12.1-31.7-22.9-42.4-32.5-10.6-9.6-19.6-18.7-26.8-27.1-1.7-1.9-2.8-3.6-3.2-5.1-.4-1.5-.3-2.8.3-3.7.6-.9 1.5-1.6 2.6-2.2a7.42 7.42 0 0 1 7.4.8c40.9 24.2 72.9 41.3 95.9 51.4 82.9 36.4 168 45.7 255.3 27.9 40.5-8.3 82.1-22.2 124.9-41.8 3.2-1.2 6-1.5 8.3-.9 2.3.6 3.5 2.4 3.5 5.4 0 2.8-1.6 6.3-4.8 10.2zm59.9-29c-1.8 11.1-4.9 21.6-9.1 31.8-7.2 17.1-16.3 30-27.1 38.4-3.6 2.9-6.4 3.8-8.3 2.8-1.9-1-1.9-3.5 0-7.4 4.5-9.3 9.2-21.8 14.2-37.7 5-15.8 5.7-26 2.1-30.5-1.1-1.5-2.7-2.6-5-3.6-2.2-.9-5.1-1.5-8.6-1.9s-6.7-.6-9.4-.8c-2.8-.2-6.5-.2-11.2 0-4.7.2-8 .4-10.1.6a874.4 874.4 0 0 1-17.1 1.5c-1.3.2-2.7.4-4.1.5-1.5.1-2.7.2-3.5.3l-2.7.3c-1 .1-1.7.2-2.2.2h-3.2l-1-.2-.6-.5-.5-.9c-1.3-3.3 3.7-7.4 15-12.4s22.3-8.1 32.9-9.3c9.8-1.5 21.3-1.5 34.5-.3s21.3 3.7 24.3 7.4c2.3 3.5 2.5 10.7.7 21.7z")),t.AndroidFill=u("android",a,l(o,"M270.1 741.7c0 23.4 19.1 42.5 42.6 42.5h48.7v120.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V784.1h85v120.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V784.1h48.7c23.5 0 42.6-19.1 42.6-42.5V346.4h-486v395.3zm357.1-600.1l44.9-65c2.6-3.8 2-8.9-1.5-11.4-3.5-2.4-8.5-1.2-11.1 2.6l-46.6 67.6c-30.7-12.1-64.9-18.8-100.8-18.8-35.9 0-70.1 6.7-100.8 18.8l-46.6-67.5c-2.6-3.8-7.6-5.1-11.1-2.6-3.5 2.4-4.1 7.4-1.5 11.4l44.9 65c-71.4 33.2-121.4 96.1-127.8 169.6h486c-6.6-73.6-56.7-136.5-128-169.7zM409.5 244.1a26.9 26.9 0 1 1 26.9-26.9 26.97 26.97 0 0 1-26.9 26.9zm208.4 0a26.9 26.9 0 1 1 26.9-26.9 26.97 26.97 0 0 1-26.9 26.9zm223.4 100.7c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V400.1c.1-30.6-24.3-55.3-54.6-55.3zm-658.6 0c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V400.1c0-30.6-24.5-55.3-54.6-55.3z")),t.AmazonSquareFill=u("amazon-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM547.8 326.7c-7.2-10.9-20.1-16.4-38.7-16.4-1.3 0-3 .1-5.3.3-2.2.2-6.6 1.5-12.9 3.7a79.4 79.4 0 0 0-17.9 9.1c-5.5 3.8-11.5 10-18 18.4-6.4 8.5-11.5 18.4-15.3 29.8l-94-8.4c0-12.4 2.4-24.7 7-36.9s11.8-23.9 21.4-35c9.6-11.2 21.1-21 34.5-29.4 13.4-8.5 29.6-15.2 48.4-20.3 18.9-5.1 39.1-7.6 60.9-7.6 21.3 0 40.6 2.6 57.8 7.7 17.2 5.2 31.1 11.5 41.4 19.1a117 117 0 0 1 25.9 25.7c6.9 9.6 11.7 18.5 14.4 26.7 2.7 8.2 4 15.7 4 22.8v182.5c0 6.4 1.4 13 4.3 19.8 2.9 6.8 6.3 12.8 10.2 18 3.9 5.2 7.9 9.9 12 14.3 4.1 4.3 7.6 7.7 10.6 9.9l4.1 3.4-72.5 69.4c-8.5-7.7-16.9-15.4-25.2-23.4-8.3-8-14.5-14-18.5-18.1l-6.1-6.2c-2.4-2.3-5-5.7-8-10.2-8.1 12.2-18.5 22.8-31.1 31.8-12.7 9-26.3 15.6-40.7 19.7-14.5 4.1-29.4 6.5-44.7 7.1-15.3.6-30-1.5-43.9-6.5-13.9-5-26.5-11.7-37.6-20.3-11.1-8.6-19.9-20.2-26.5-35-6.6-14.8-9.9-31.5-9.9-50.4 0-17.4 3-33.3 8.9-47.7 6-14.5 13.6-26.5 23-36.1 9.4-9.6 20.7-18.2 34-25.7s26.4-13.4 39.2-17.7c12.8-4.2 26.6-7.8 41.5-10.7 14.9-2.9 27.6-4.8 38.2-5.7 10.6-.9 21.2-1.6 31.8-2v-39.4c0-13.5-2.3-23.5-6.7-30.1zm180.5 379.6c-2.8 3.3-7.5 7.8-14.1 13.5s-16.8 12.7-30.5 21.1c-13.7 8.4-28.8 16-45 22.9-16.3 6.9-36.3 12.9-60.1 18-23.7 5.1-48.2 7.6-73.3 7.6-25.4 0-50.7-3.2-76.1-9.6-25.4-6.4-47.6-14.3-66.8-23.7-19.1-9.4-37.6-20.2-55.1-32.2-17.6-12.1-31.7-22.9-42.4-32.5-10.6-9.6-19.6-18.7-26.8-27.1-1.7-1.9-2.8-3.6-3.2-5.1-.4-1.5-.3-2.8.3-3.7.6-.9 1.5-1.6 2.6-2.2a7.42 7.42 0 0 1 7.4.8c40.9 24.2 72.9 41.3 95.9 51.4 82.9 36.4 168 45.7 255.3 27.9 40.5-8.3 82.1-22.2 124.9-41.8 3.2-1.2 6-1.5 8.3-.9 2.3.6 3.5 2.4 3.5 5.4 0 2.8-1.6 6.3-4.8 10.2zm59.9-29c-1.8 11.1-4.9 21.6-9.1 31.8-7.2 17.1-16.3 30-27.1 38.4-3.6 2.9-6.4 3.8-8.3 2.8-1.9-1-1.9-3.5 0-7.4 4.5-9.3 9.2-21.8 14.2-37.7 5-15.8 5.7-26 2.1-30.5-1.1-1.5-2.7-2.6-5-3.6-2.2-.9-5.1-1.5-8.6-1.9s-6.7-.6-9.4-.8c-2.8-.2-6.5-.2-11.2 0-4.7.2-8 .4-10.1.6a874.4 874.4 0 0 1-17.1 1.5c-1.3.2-2.7.4-4.1.5-1.5.1-2.7.2-3.5.3l-2.7.3c-1 .1-1.7.2-2.2.2h-3.2l-1-.2-.6-.5-.5-.9c-1.3-3.3 3.7-7.4 15-12.4s22.3-8.1 32.9-9.3c9.8-1.5 21.3-1.5 34.5-.3s21.3 3.7 24.3 7.4c2.3 3.5 2.5 10.7.7 21.7zM485 467.5c-11.6 4.9-20.9 12.2-27.8 22-6.9 9.8-10.4 21.6-10.4 35.5 0 17.8 7.5 31.5 22.4 41.2 14.1 9.1 28.9 11.4 44.4 6.8 17.9-5.2 30-17.9 36.4-38.1 3-9.3 4.5-19.7 4.5-31.3v-50.2c-12.6.4-24.4 1.6-35.5 3.7-11.1 2.1-22.4 5.6-34 10.4z")),t.ApiFill=u("api",a,l(o,"M917.7 148.8l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 0 0-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 0 0 0 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM578.9 546.7a8.03 8.03 0 0 0-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 0 0-11.3 0L363 475.3l-43-43a7.85 7.85 0 0 0-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2c-68.9 68.9-77 175.7-24.3 253.5l-76.1 76.1a8.03 8.03 0 0 0 0 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2z")),t.AppstoreFill=u("appstore",a,l(o,"M864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm0 400H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zM464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm0 400H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16z")),t.AudioFill=u("audio",a,l(o,"M512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm330-170c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1z")),t.AppleFill=u("apple",a,l(o,"M747.4 535.7c-.4-68.2 30.5-119.6 92.9-157.5-34.9-50-87.7-77.5-157.3-82.8-65.9-5.2-138 38.4-164.4 38.4-27.9 0-91.7-36.6-141.9-36.6C273.1 298.8 163 379.8 163 544.6c0 48.7 8.9 99 26.7 150.8 23.8 68.2 109.6 235.3 199.1 232.6 46.8-1.1 79.9-33.2 140.8-33.2 59.1 0 89.7 33.2 141.9 33.2 90.3-1.3 167.9-153.2 190.5-221.6-121.1-57.1-114.6-167.2-114.6-170.7zm-105.1-305c50.7-60.2 46.1-115 44.6-134.7-44.8 2.6-96.6 30.5-126.1 64.8-32.5 36.8-51.6 82.3-47.5 133.6 48.4 3.7 92.6-21.2 129-63.7z")),t.BackwardFill=u("backward",a,l(r,"M485.6 249.9L198.2 498c-8.3 7.1-8.3 20.8 0 27.9l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9zm320 0L518.2 498a18.6 18.6 0 0 0-6.2 14c0 5.2 2.1 10.4 6.2 14l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9z")),t.BankFill=u("bank",a,l(o,"M894 462c30.9 0 43.8-39.7 18.7-58L530.8 126.2a31.81 31.81 0 0 0-37.6 0L111.3 404c-25.1 18.2-12.2 58 18.8 58H192v374h-72c-4.4 0-8 3.6-8 8v52c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-52c0-4.4-3.6-8-8-8h-72V462h62zM381 836H264V462h117v374zm189 0H453V462h117v374zm190 0H642V462h118v374z")),t.BehanceCircleFill=u("behance-circle",a,l(o,"M420.3 470.3c8.7-6.3 12.9-16.7 12.9-31 .3-6.8-1.1-13.5-4.1-19.6-2.7-4.9-6.7-9-11.6-11.9a44.8 44.8 0 0 0-16.6-6c-6.4-1.2-12.9-1.8-19.3-1.7h-70.3v79.7h76.1c13.1.1 24.2-3.1 32.9-9.5zm11.8 72c-9.8-7.5-22.9-11.2-39.2-11.2h-81.8v94h80.2c7.5 0 14.4-.7 21.1-2.1a50.5 50.5 0 0 0 17.8-7.2c5.1-3.3 9.2-7.8 12.3-13.6 3-5.8 4.5-13.2 4.5-22.1 0-17.7-5-30.2-14.9-37.8zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm86.5 286.9h138.4v33.7H598.5v-33.7zM512 628.8a89.52 89.52 0 0 1-27 31c-11.8 8.2-24.9 14.2-38.8 17.7a167.4 167.4 0 0 1-44.6 5.7H236V342.1h161c16.3 0 31.1 1.5 44.6 4.3 13.4 2.8 24.8 7.6 34.4 14.1 9.5 6.5 17 15.2 22.3 26 5.2 10.7 7.9 24.1 7.9 40 0 17.2-3.9 31.4-11.7 42.9-7.9 11.5-19.3 20.8-34.8 28.1 21.1 6 36.6 16.7 46.8 31.7 10.4 15.2 15.5 33.4 15.5 54.8 0 17.4-3.3 32.3-10 44.8zM790.8 576H612.4c0 19.4 6.7 38 16.8 48 10.2 9.9 24.8 14.9 43.9 14.9 13.8 0 25.5-3.5 35.5-10.4 9.9-6.9 15.9-14.2 18.1-21.8h59.8c-9.6 29.7-24.2 50.9-44 63.7-19.6 12.8-43.6 19.2-71.5 19.2-19.5 0-37-3.2-52.7-9.3-15.1-5.9-28.7-14.9-39.9-26.5a121.2 121.2 0 0 1-25.1-41.2c-6.1-16.9-9.1-34.7-8.9-52.6 0-18.5 3.1-35.7 9.1-51.7 11.5-31.1 35.4-56 65.9-68.9 16.3-6.8 33.8-10.2 51.5-10 21 0 39.2 4 55 12.2a111.6 111.6 0 0 1 38.6 32.8c10.1 13.7 17.2 29.3 21.7 46.9 4.3 17.3 5.8 35.5 4.6 54.7zm-122-95.6c-10.8 0-19.9 1.9-26.9 5.6-7 3.7-12.8 8.3-17.2 13.6a48.4 48.4 0 0 0-9.1 17.4c-1.6 5.3-2.7 10.7-3.1 16.2H723c-1.6-17.3-7.6-30.1-15.6-39.1-8.4-8.9-21.9-13.7-38.6-13.7z")),t.BellFill=u("bell",a,l(o,"M816 768h-24V428c0-141.1-104.3-257.8-240-277.2V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.8C336.3 170.2 232 286.9 232 428v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h216c0 61.8 50.2 112 112 112s112-50.2 112-112h216c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM512 888c-26.5 0-48-21.5-48-48h96c0 26.5-21.5 48-48 48z")),t.BehanceSquareFill=u("behance-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM598.5 350.9h138.4v33.7H598.5v-33.7zM512 628.8a89.52 89.52 0 0 1-27 31c-11.8 8.2-24.9 14.2-38.8 17.7a167.4 167.4 0 0 1-44.6 5.7H236V342.1h161c16.3 0 31.1 1.5 44.6 4.3 13.4 2.8 24.8 7.6 34.4 14.1 9.5 6.5 17 15.2 22.3 26 5.2 10.7 7.9 24.1 7.9 40 0 17.2-3.9 31.4-11.7 42.9-7.9 11.5-19.3 20.8-34.8 28.1 21.1 6 36.6 16.7 46.8 31.7 10.4 15.2 15.5 33.4 15.5 54.8 0 17.4-3.3 32.3-10 44.8zM790.8 576H612.4c0 19.4 6.7 38 16.8 48 10.2 9.9 24.8 14.9 43.9 14.9 13.8 0 25.5-3.5 35.5-10.4 9.9-6.9 15.9-14.2 18.1-21.8h59.8c-9.6 29.7-24.2 50.9-44 63.7-19.6 12.8-43.6 19.2-71.5 19.2-19.5 0-37-3.2-52.7-9.3-15.1-5.9-28.7-14.9-39.9-26.5a121.2 121.2 0 0 1-25.1-41.2c-6.1-16.9-9.1-34.7-8.9-52.6 0-18.5 3.1-35.7 9.1-51.7 11.5-31.1 35.4-56 65.9-68.9 16.3-6.8 33.8-10.2 51.5-10 21 0 39.2 4 55 12.2a111.6 111.6 0 0 1 38.6 32.8c10.1 13.7 17.2 29.3 21.7 46.9 4.3 17.3 5.8 35.5 4.6 54.7zm-122-95.6c-10.8 0-19.9 1.9-26.9 5.6-7 3.7-12.8 8.3-17.2 13.6a48.4 48.4 0 0 0-9.1 17.4c-1.6 5.3-2.7 10.7-3.1 16.2H723c-1.6-17.3-7.6-30.1-15.6-39.1-8.4-8.9-21.9-13.7-38.6-13.7zm-248.5-10.1c8.7-6.3 12.9-16.7 12.9-31 .3-6.8-1.1-13.5-4.1-19.6-2.7-4.9-6.7-9-11.6-11.9a44.8 44.8 0 0 0-16.6-6c-6.4-1.2-12.9-1.8-19.3-1.7h-70.3v79.7h76.1c13.1.1 24.2-3.1 32.9-9.5zm11.8 72c-9.8-7.5-22.9-11.2-39.2-11.2h-81.8v94h80.2c7.5 0 14.4-.7 21.1-2.1s12.7-3.8 17.8-7.2c5.1-3.3 9.2-7.8 12.3-13.6 3-5.8 4.5-13.2 4.5-22.1 0-17.7-5-30.2-14.9-37.8z")),t.BookFill=u("book",a,l(o,"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zM668 345.9L621.5 312 572 347.4V124h96v221.9z")),t.BoxPlotFill=u("box-plot",a,l(o,"M952 224h-52c-4.4 0-8 3.6-8 8v248h-92V304c0-4.4-3.6-8-8-8H448v432h344c4.4 0 8-3.6 8-8V548h92v244c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm-728 80v176h-92V232c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V548h92v172c0 4.4 3.6 8 8 8h152V296H232c-4.4 0-8 3.6-8 8z")),t.BugFill=u("bug",a,l(o,"M304 280h416c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1a184.31 184.31 0 0 0-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9a184.31 184.31 0 0 0-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z","M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8a63 63 0 0 1-63 63H232a63 63 0 0 1-63-63c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7a273 273 0 0 0 22.7 49c24.3 41.5 59 76.2 100.5 100.5 28.9 16.9 61 28.8 95.3 34.5 4.4 0 8-3.6 8-8V484c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8v464.2c0 4.4 3.6 8 8 8 34.3-5.7 66.4-17.6 95.3-34.5a281.38 281.38 0 0 0 123.2-149.5A120.4 120.4 0 0 1 836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.CalculatorFill=u("calculator",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM440.2 765h-50.8c-2.2 0-4.5-1.1-5.9-2.9L348 718.6l-35.5 43.5a7.38 7.38 0 0 1-5.9 2.9h-50.8c-6.6 0-10.2-7.9-5.8-13.1l62.7-76.8-61.2-74.9c-4.3-5.2-.7-13.1 5.9-13.1h50.9c2.2 0 4.5 1.1 5.9 2.9l34 41.6 34-41.6c1.5-1.9 3.6-2.9 5.9-2.9h50.8c6.6 0 10.2 7.9 5.9 13.1L383.5 675l62.7 76.8c4.2 5.3.6 13.2-6 13.2zm7.8-382c0 2.2-1.4 4-3.2 4H376v68.7c0 1.9-1.8 3.3-4 3.3h-48c-2.2 0-4-1.4-4-3.2V387h-68.8c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4H320v-68.8c0-1.8 1.8-3.2 4-3.2h48c2.2 0 4 1.4 4 3.2V331h68.7c1.9 0 3.3 1.8 3.3 4v48zm328 369c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48zm0-104c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48zm0-265c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48z")),t.BulbFill=u("bulb",a,l(o,"M348 676.1C250 619.4 184 513.4 184 392c0-181.1 146.9-328 328-328s328 146.9 328 328c0 121.4-66 227.4-164 284.1V792c0 17.7-14.3 32-32 32H380c-17.7 0-32-14.3-32-32V676.1zM392 888h240c4.4 0 8 3.6 8 8v32c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32v-32c0-4.4 3.6-8 8-8z")),t.BuildFill=u("build",a,l(o,"M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zM612 746H412V546h200v200zm268-268H680V278h200v200z")),t.CalendarFill=u("calendar",a,l(o,"M112 880c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V460H112v420zm768-696H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v176h800V216c0-17.7-14.3-32-32-32z")),t.CameraFill=u("camera",a,l(o,"M864 260H728l-32.4-90.8a32.07 32.07 0 0 0-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 260H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V340c0-44.2-35.8-80-80-80zM512 716c-88.4 0-160-71.6-160-160s71.6-160 160-160 160 71.6 160 160-71.6 160-160 160zm-96-160a96 96 0 1 0 192 0 96 96 0 1 0-192 0z")),t.CarFill=u("car",a,l(o,"M959 413.4L935.3 372a8 8 0 0 0-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 0 0-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 0 0-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 0 0 3-10.8zM264 621c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm388 75c0 4.4-3.6 8-8 8H380c-4.4 0-8-3.6-8-8v-84c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v36h168v-36c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v84zm108-75c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zM220 418l72.7-199.9.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220z")),t.CaretDownFill=u("caret-down",a,l(r,"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z")),t.CaretLeftFill=u("caret-left",a,l(r,"M689 165.1L308.2 493.5c-10.9 9.4-10.9 27.5 0 37L689 858.9c14.2 12.2 35 1.2 35-18.5V183.6c0-19.7-20.8-30.7-35-18.5z")),t.CaretRightFill=u("caret-right",a,l(r,"M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z")),t.CarryOutFill=u("carry-out",a,l(o,"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zM694.5 432.7L481.9 725.4a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.1 0 10 2.5 13 6.6l64.7 89 150.9-207.8c3-4.1 7.8-6.6 13-6.6H688c6.5.1 10.3 7.5 6.5 12.8z")),t.CaretUpFill=u("caret-up",a,l(r,"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z")),t.CheckCircleFill=u("check-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z")),t.CheckSquareFill=u("check-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM695.5 365.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L308.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H689c6.5 0 10.3 7.4 6.5 12.7z")),t.ChromeFill=u("chrome",a,l(o,"M371.8 512c0 77.5 62.7 140.2 140.2 140.2S652.2 589.5 652.2 512 589.5 371.8 512 371.8 371.8 434.4 371.8 512zM900 362.4l-234.3 12.1c63.6 74.3 64.6 181.5 11.1 263.7l-188 289.2c78 4.2 158.4-12.9 231.2-55.2 180-104 253-322.1 180-509.8zM320.3 591.9L163.8 284.1A415.35 415.35 0 0 0 96 512c0 208 152.3 380.3 351.4 410.8l106.9-209.4c-96.6 18.2-189.9-34.8-234-121.5zm218.5-285.5l344.4 18.1C848 254.7 792.6 194 719.8 151.7 653.9 113.6 581.5 95.5 510.5 96c-122.5.5-242.2 55.2-322.1 154.5l128.2 196.9c32-91.9 124.8-146.7 222.2-141z")),t.CiCircleFill=u("ci-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-63.6 656c-103 0-162.4-68.6-162.4-182.6v-49C286 373.5 345.4 304 448.3 304c88.3 0 152.3 56.9 152.3 138.1 0 2.4-2 4.4-4.4 4.4h-52.6c-4.2 0-7.6-3.2-8-7.4-4-46.1-37.6-77.6-87-77.6-61.1 0-95.6 45.4-95.6 126.9v49.3c0 80.3 34.5 125.1 95.6 125.1 49.3 0 82.8-29.5 87-72.4.4-4.1 3.8-7.3 8-7.3h52.7c2.4 0 4.4 2 4.4 4.4 0 77.4-64.3 132.5-152.3 132.5zM738 704.1c0 4.4-3.6 8-8 8h-50.4c-4.4 0-8-3.6-8-8V319.9c0-4.4 3.6-8 8-8H730c4.4 0 8 3.6 8 8v384.2z")),t.ClockCircleFill=u("clock-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm176.5 585.7l-28.6 39a7.99 7.99 0 0 1-11.2 1.7L483.3 569.8a7.92 7.92 0 0 1-3.3-6.5V288c0-4.4 3.6-8 8-8h48.1c4.4 0 8 3.6 8 8v247.5l142.6 103.1c3.6 2.5 4.4 7.5 1.8 11.1z")),t.CloseCircleFill=u("close-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 0 1-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z")),t.CloudFill=u("cloud",a,l(o,"M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3z")),t.CloseSquareFill=u("close-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM676.1 657.9c4.4 5.2.7 13.1-6.1 13.1h-58.9c-4.7 0-9.2-2.1-12.3-5.7L512 561.8l-86.8 103.5c-3 3.6-7.5 5.7-12.3 5.7H354c-6.8 0-10.5-7.9-6.1-13.1L470.2 512 347.9 366.1A7.95 7.95 0 0 1 354 353h58.9c4.7 0 9.2 2.1 12.3 5.7L512 462.2l86.8-103.5c3-3.6 7.5-5.7 12.3-5.7H670c6.8 0 10.5 7.9 6.1 13.1L553.8 512l122.3 145.9z")),t.CodeSandboxSquareFill=u("code-sandbox-square",a,l(o,"M307.9 536.7l87.6 49.9V681l96.7 55.9V524.8L307.9 418.4zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM755.7 653.2L512 794 268.3 653.2V371.8l110-63.6-.4-.2h.2L512 231l134 77h-.2l-.3.2 110.1 63.6v281.4zm-223.9 83.7l97.3-56.2v-94.1l87-49.5V418.5L531.8 525zm-20-352L418 331l-91.1 52.6 185.2 107 185.2-106.9-91.4-52.8z")),t.CodeSandboxCircleFill=u("code-sandbox-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm243.7 589.2L512 794 268.3 653.2V371.8l110-63.6-.4-.2h.2L512 231l134 77h-.2l-.3.2 110.1 63.6v281.4zM307.9 536.7l87.6 49.9V681l96.7 55.9V524.8L307.9 418.4zm203.9-151.8L418 331l-91.1 52.6 185.2 107 185.2-106.9-91.4-52.8zm20 352l97.3-56.2v-94.1l87-49.5V418.5L531.8 525z")),t.CodeFill=u("code",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM513.1 518.1l-192 161c-5.2 4.4-13.1.7-13.1-6.1v-62.7c0-2.3 1.1-4.6 2.9-6.1L420.7 512l-109.8-92.2a7.63 7.63 0 0 1-2.9-6.1V351c0-6.8 7.9-10.5 13.1-6.1l192 160.9c3.9 3.2 3.9 9.1 0 12.3zM716 673c0 4.4-3.4 8-7.5 8h-185c-4.1 0-7.5-3.6-7.5-8v-48c0-4.4 3.4-8 7.5-8h185c4.1 0 7.5 3.6 7.5 8v48z")),t.CompassFill=u("compass",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM327.3 702.4c-2 .9-4.4 0-5.3-2.1-.4-1-.4-2.2 0-3.2l98.7-225.5 132.1 132.1-225.5 98.7zm375.1-375.1l-98.7 225.5-132.1-132.1L697.1 322c2-.9 4.4 0 5.3 2.1.4 1 .4 2.1 0 3.2z")),t.CodepenCircleFill=u("codepen-circle",a,l(o,"M488.1 414.7V303.4L300.9 428l83.6 55.8zm254.1 137.7v-79.8l-59.8 39.9zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm278 533c0 1.1-.1 2.1-.2 3.1 0 .4-.1.7-.2 1a14.16 14.16 0 0 1-.8 3.2c-.2.6-.4 1.2-.6 1.7-.2.4-.4.8-.5 1.2-.3.5-.5 1.1-.8 1.6-.2.4-.4.7-.7 1.1-.3.5-.7 1-1 1.5-.3.4-.5.7-.8 1-.4.4-.8.9-1.2 1.3-.3.3-.6.6-1 .9-.4.4-.9.8-1.4 1.1-.4.3-.7.6-1.1.8-.1.1-.3.2-.4.3L525.2 786c-4 2.7-8.6 4-13.2 4-4.7 0-9.3-1.4-13.3-4L244.6 616.9c-.1-.1-.3-.2-.4-.3l-1.1-.8c-.5-.4-.9-.7-1.3-1.1-.3-.3-.6-.6-1-.9-.4-.4-.8-.8-1.2-1.3a7 7 0 0 1-.8-1c-.4-.5-.7-1-1-1.5-.2-.4-.5-.7-.7-1.1-.3-.5-.6-1.1-.8-1.6-.2-.4-.4-.8-.5-1.2-.2-.6-.4-1.2-.6-1.7-.1-.4-.3-.8-.4-1.2-.2-.7-.3-1.3-.4-2-.1-.3-.1-.7-.2-1-.1-1-.2-2.1-.2-3.1V427.9c0-1 .1-2.1.2-3.1.1-.3.1-.7.2-1a14.16 14.16 0 0 1 .8-3.2c.2-.6.4-1.2.6-1.7.2-.4.4-.8.5-1.2.2-.5.5-1.1.8-1.6.2-.4.4-.7.7-1.1.6-.9 1.2-1.7 1.8-2.5.4-.4.8-.9 1.2-1.3.3-.3.6-.6 1-.9.4-.4.9-.8 1.3-1.1.4-.3.7-.6 1.1-.8.1-.1.3-.2.4-.3L498.7 239c8-5.3 18.5-5.3 26.5 0l254.1 169.1c.1.1.3.2.4.3l1.1.8 1.4 1.1c.3.3.6.6 1 .9.4.4.8.8 1.2 1.3.7.8 1.3 1.6 1.8 2.5.2.4.5.7.7 1.1.3.5.6 1 .8 1.6.2.4.4.8.5 1.2.2.6.4 1.2.6 1.7.1.4.3.8.4 1.2.2.7.3 1.3.4 2 .1.3.1.7.2 1 .1 1 .2 2.1.2 3.1V597zm-254.1 13.3v111.3L723.1 597l-83.6-55.8zM281.8 472.6v79.8l59.8-39.9zM512 456.1l-84.5 56.4 84.5 56.4 84.5-56.4zM723.1 428L535.9 303.4v111.3l103.6 69.1zM384.5 541.2L300.9 597l187.2 124.6V610.3l-103.6-69.1z")),t.CodepenSquareFill=u("codepen-square",a,l(o,"M723.1 428L535.9 303.4v111.3l103.6 69.1zM512 456.1l-84.5 56.4 84.5 56.4 84.5-56.4zm23.9 154.2v111.3L723.1 597l-83.6-55.8zm-151.4-69.1L300.9 597l187.2 124.6V610.3l-103.6-69.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-90 485c0 1.1-.1 2.1-.2 3.1 0 .4-.1.7-.2 1a14.16 14.16 0 0 1-.8 3.2c-.2.6-.4 1.2-.6 1.7-.2.4-.4.8-.5 1.2-.3.5-.5 1.1-.8 1.6-.2.4-.4.7-.7 1.1-.3.5-.7 1-1 1.5-.3.4-.5.7-.8 1-.4.4-.8.9-1.2 1.3-.3.3-.6.6-1 .9-.4.4-.9.8-1.4 1.1-.4.3-.7.6-1.1.8-.1.1-.3.2-.4.3L525.2 786c-4 2.7-8.6 4-13.2 4-4.7 0-9.3-1.4-13.3-4L244.6 616.9c-.1-.1-.3-.2-.4-.3l-1.1-.8c-.5-.4-.9-.7-1.3-1.1-.3-.3-.6-.6-1-.9-.4-.4-.8-.8-1.2-1.3a7 7 0 0 1-.8-1c-.4-.5-.7-1-1-1.5-.2-.4-.5-.7-.7-1.1-.3-.5-.6-1.1-.8-1.6-.2-.4-.4-.8-.5-1.2-.2-.6-.4-1.2-.6-1.7-.1-.4-.3-.8-.4-1.2-.2-.7-.3-1.3-.4-2-.1-.3-.1-.7-.2-1-.1-1-.2-2.1-.2-3.1V427.9c0-1 .1-2.1.2-3.1.1-.3.1-.7.2-1a14.16 14.16 0 0 1 .8-3.2c.2-.6.4-1.2.6-1.7.2-.4.4-.8.5-1.2.2-.5.5-1.1.8-1.6.2-.4.4-.7.7-1.1.6-.9 1.2-1.7 1.8-2.5.4-.4.8-.9 1.2-1.3.3-.3.6-.6 1-.9.4-.4.9-.8 1.3-1.1.4-.3.7-.6 1.1-.8.1-.1.3-.2.4-.3L498.7 239c8-5.3 18.5-5.3 26.5 0l254.1 169.1c.1.1.3.2.4.3l1.1.8 1.4 1.1c.3.3.6.6 1 .9.4.4.8.8 1.2 1.3.7.8 1.3 1.6 1.8 2.5.2.4.5.7.7 1.1.3.5.6 1 .8 1.6.2.4.4.8.5 1.2.2.6.4 1.2.6 1.7.1.4.3.8.4 1.2.2.7.3 1.3.4 2 .1.3.1.7.2 1 .1 1 .2 2.1.2 3.1V597zm-47.8-44.6v-79.8l-59.8 39.9zm-460.4-79.8v79.8l59.8-39.9zm206.3-57.9V303.4L300.9 428l83.6 55.8z")),t.ContactsFill=u("contacts",a,l(o,"M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zM661 736h-43.9c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.6-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H363a8 8 0 0 1-8-8.4c2.8-53.3 32-99.7 74.6-126.1a111.8 111.8 0 0 1-29.1-75.5c0-61.9 49.9-112 111.4-112 61.5 0 111.4 50.1 111.4 112 0 29.1-11 55.5-29.1 75.5 42.7 26.5 71.8 72.8 74.6 126.1.4 4.6-3.2 8.4-7.8 8.4zM512 474c-28.5 0-51.7 23.3-51.7 52s23.2 52 51.7 52c28.5 0 51.7-23.3 51.7-52s-23.2-52-51.7-52z")),t.ControlFill=u("control",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM404 683v77c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-77c-41.7-13.6-72-52.8-72-99s30.3-85.5 72-99V264c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v221c41.7 13.6 72 52.8 72 99s-30.3 85.5-72 99zm279.6-143.9c.2 0 .3-.1.4-.1v221c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V539c.2 0 .3.1.4.1-42-13.4-72.4-52.7-72.4-99.1 0-46.4 30.4-85.7 72.4-99.1-.2 0-.3.1-.4.1v-77c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v77c-.2 0-.3-.1-.4-.1 42 13.4 72.4 52.7 72.4 99.1 0 46.4-30.4 85.7-72.4 99.1zM616 440a36 36 0 1 0 72 0 36 36 0 1 0-72 0zM403.4 566.5l-1.5-2.4c0-.1-.1-.1-.1-.2l-.9-1.2c-.1-.1-.2-.2-.2-.3-1-1.3-2-2.5-3.2-3.6l-.2-.2c-.4-.4-.8-.8-1.2-1.1-.8-.8-1.7-1.5-2.6-2.1h-.1l-1.2-.9c-.1-.1-.3-.2-.4-.3-1.2-.8-2.5-1.6-3.9-2.2-.2-.1-.5-.2-.7-.4-.4-.2-.7-.3-1.1-.5-.3-.1-.7-.3-1-.4-.5-.2-1-.4-1.5-.5-.4-.1-.9-.3-1.3-.4l-.9-.3-1.4-.3c-.2-.1-.5-.1-.7-.2-.7-.1-1.4-.3-2.1-.4-.2 0-.4 0-.6-.1-.6-.1-1.1-.1-1.7-.2-.2 0-.4 0-.7-.1-.8 0-1.5-.1-2.3-.1s-1.5 0-2.3.1c-.2 0-.4 0-.7.1-.6 0-1.2.1-1.7.2-.2 0-.4 0-.6.1-.7.1-1.4.2-2.1.4-.2.1-.5.1-.7.2l-1.4.3-.9.3c-.4.1-.9.3-1.3.4-.5.2-1 .4-1.5.5-.3.1-.7.3-1 .4-.4.2-.7.3-1.1.5-.2.1-.5.2-.7.4-1.3.7-2.6 1.4-3.9 2.2-.1.1-.3.2-.4.3l-1.2.9h-.1c-.9.7-1.8 1.4-2.6 2.1-.4.4-.8.7-1.2 1.1l-.2.2a54.8 54.8 0 0 0-3.2 3.6c-.1.1-.2.2-.2.3l-.9 1.2c0 .1-.1.1-.1.2l-1.5 2.4c-.1.2-.2.3-.3.5-2.7 5.1-4.3 10.9-4.3 17s1.6 12 4.3 17c.1.2.2.3.3.5l1.5 2.4c0 .1.1.1.1.2l.9 1.2c.1.1.2.2.2.3 1 1.3 2 2.5 3.2 3.6l.2.2c.4.4.8.8 1.2 1.1.8.8 1.7 1.5 2.6 2.1h.1l1.2.9c.1.1.3.2.4.3 1.2.8 2.5 1.6 3.9 2.2.2.1.5.2.7.4.4.2.7.3 1.1.5.3.1.7.3 1 .4.5.2 1 .4 1.5.5.4.1.9.3 1.3.4l.9.3 1.4.3c.2.1.5.1.7.2.7.1 1.4.3 2.1.4.2 0 .4 0 .6.1.6.1 1.1.1 1.7.2.2 0 .4 0 .7.1.8 0 1.5.1 2.3.1s1.5 0 2.3-.1c.2 0 .4 0 .7-.1.6 0 1.2-.1 1.7-.2.2 0 .4 0 .6-.1.7-.1 1.4-.2 2.1-.4.2-.1.5-.1.7-.2l1.4-.3.9-.3c.4-.1.9-.3 1.3-.4.5-.2 1-.4 1.5-.5.3-.1.7-.3 1-.4.4-.2.7-.3 1.1-.5.2-.1.5-.2.7-.4 1.3-.7 2.6-1.4 3.9-2.2.1-.1.3-.2.4-.3l1.2-.9h.1c.9-.7 1.8-1.4 2.6-2.1.4-.4.8-.7 1.2-1.1l.2-.2c1.1-1.1 2.2-2.4 3.2-3.6.1-.1.2-.2.2-.3l.9-1.2c0-.1.1-.1.1-.2l1.5-2.4c.1-.2.2-.3.3-.5 2.7-5.1 4.3-10.9 4.3-17s-1.6-12-4.3-17c-.1-.2-.2-.4-.3-.5z")),t.ContainerFill=u("container",a,l(o,"M832 64H192c-17.7 0-32 14.3-32 32v529c0-.6.4-1 1-1h219.3l5.2 24.7C397.6 708.5 450.8 752 512 752s114.4-43.5 126.4-103.3l5.2-24.7H863c.6 0 1 .4 1 1V96c0-17.7-14.3-32-32-32zM712 493c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48zm0-160c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48zm151 354H694.1c-11.6 32.8-32 62.3-59.1 84.7-34.5 28.6-78.2 44.3-123 44.3s-88.5-15.8-123-44.3a194.02 194.02 0 0 1-59.1-84.7H161c-.6 0-1-.4-1-1v242c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V686c0 .6-.4 1-1 1z")),t.CopyFill=u("copy",a,l(o,"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM382 896h-.2L232 746.2v-.2h150v150z")),t.CopyrightCircleFill=u("copyright-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm5.4 670c-110 0-173.4-73.2-173.4-194.9v-52.3C344 364.2 407.4 290 517.3 290c94.3 0 162.7 60.7 162.7 147.4 0 2.6-2.1 4.7-4.7 4.7h-56.7c-4.2 0-7.6-3.2-8-7.4-4-49.5-40-83.4-93-83.4-65.3 0-102.1 48.5-102.1 135.5v52.6c0 85.7 36.9 133.6 102.1 133.6 52.8 0 88.7-31.7 93-77.8.4-4.1 3.8-7.3 8-7.3h56.8c2.6 0 4.7 2.1 4.7 4.7 0 82.6-68.7 141.4-162.7 141.4z")),t.CreditCardFill=u("credit-card",a,l(o,"M928 160H96c-17.7 0-32 14.3-32 32v160h896V192c0-17.7-14.3-32-32-32zM64 832c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V440H64v392zm579-184c0-4.4 3.6-8 8-8h165c4.4 0 8 3.6 8 8v72c0 4.4-3.6 8-8 8H651c-4.4 0-8-3.6-8-8v-72z")),t.CrownFill=u("crown",a,l(o,"M899.6 276.5L705 396.4 518.4 147.5a8.06 8.06 0 0 0-12.9 0L319 396.4 124.3 276.5c-5.7-3.5-13.1 1.2-12.2 7.9L188.5 865c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6c.8-6.7-6.5-11.4-12.3-7.9zM512 734.2c-62.1 0-112.6-50.5-112.6-112.6S449.9 509 512 509s112.6 50.5 112.6 112.6S574.1 734.2 512 734.2zm0-160.9c-26.6 0-48.2 21.6-48.2 48.3 0 26.6 21.6 48.3 48.2 48.3s48.2-21.6 48.2-48.3c0-26.6-21.6-48.3-48.2-48.3z")),t.CustomerServiceFill=u("customer-service",a,l(o,"M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384z")),t.DashboardFill=u("dashboard",a,l(o,"M924.8 385.6a446.7 446.7 0 0 0-96-142.4 446.7 446.7 0 0 0-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 0 0-142.4 96 446.7 446.7 0 0 0-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM482 232c0-4.4 3.6-8 8-8h44c4.4 0 8 3.6 8 8v80c0 4.4-3.6 8-8 8h-44c-4.4 0-8-3.6-8-8v-80zM270 582c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44zm90.7-204.5l-31.1 31.1a8.03 8.03 0 0 1-11.3 0L261.7 352a8.03 8.03 0 0 1 0-11.3l31.1-31.1c3.1-3.1 8.2-3.1 11.3 0l56.6 56.6c3.1 3.1 3.1 8.2 0 11.3zm291.1 83.6l-84.5 84.5c5 18.7.2 39.4-14.5 54.1a55.95 55.95 0 0 1-79.2 0 55.95 55.95 0 0 1 0-79.2 55.87 55.87 0 0 1 54.1-14.5l84.5-84.5c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3c3.1 3.1 3.1 8.1 0 11.3zm43-52.4l-31.1-31.1a8.03 8.03 0 0 1 0-11.3l56.6-56.6c3.1-3.1 8.2-3.1 11.3 0l31.1 31.1c3.1 3.1 3.1 8.2 0 11.3l-56.6 56.6a8.03 8.03 0 0 1-11.3 0zM846 582c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44z")),t.DeleteFill=u("delete",a,l(o,"M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-200 0H360v-72h304v72z")),t.DiffFill=u("diff",a,l(o,"M854.2 306.6L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23zM553.4 201.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM568 753c0 3.8-3.4 7-7.5 7h-225c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7h225c4.1 0 7.5 3.2 7.5 7v42zm0-220c0 3.8-3.4 7-7.5 7H476v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V540h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H420v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1V484h84.5c4.1 0 7.5 3.1 7.5 7v42z")),t.DingtalkCircleFill=u("dingtalk-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm227 385.3c-1 4.2-3.5 10.4-7 17.8h.1l-.4.7c-20.3 43.1-73.1 127.7-73.1 127.7s-.1-.2-.3-.5l-15.5 26.8h74.5L575.1 810l32.3-128h-58.6l20.4-84.7c-16.5 3.9-35.9 9.4-59 16.8 0 0-31.2 18.2-89.9-35 0 0-39.6-34.7-16.6-43.4 9.8-3.7 47.4-8.4 77-12.3 40-5.4 64.6-8.2 64.6-8.2S422 517 392.7 512.5c-29.3-4.6-66.4-53.1-74.3-95.8 0 0-12.2-23.4 26.3-12.3 38.5 11.1 197.9 43.2 197.9 43.2s-207.4-63.3-221.2-78.7c-13.8-15.4-40.6-84.2-37.1-126.5 0 0 1.5-10.5 12.4-7.7 0 0 153.3 69.7 258.1 107.9 104.8 37.9 195.9 57.3 184.2 106.7z")),t.DatabaseFill=u("database",a,l(o,"M832 64H192c-17.7 0-32 14.3-32 32v224h704V96c0-17.7-14.3-32-32-32zM288 232c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zM160 928c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V704H160v224zm128-136c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM160 640h704V384H160v256zm128-168c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z")),t.DingtalkSquareFill=u("dingtalk-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM739 449.3c-1 4.2-3.5 10.4-7 17.8h.1l-.4.7c-20.3 43.1-73.1 127.7-73.1 127.7s-.1-.2-.3-.5l-15.5 26.8h74.5L575.1 810l32.3-128h-58.6l20.4-84.7c-16.5 3.9-35.9 9.4-59 16.8 0 0-31.2 18.2-89.9-35 0 0-39.6-34.7-16.6-43.4 9.8-3.7 47.4-8.4 77-12.3 40-5.4 64.6-8.2 64.6-8.2S422 517 392.7 512.5c-29.3-4.6-66.4-53.1-74.3-95.8 0 0-12.2-23.4 26.3-12.3 38.5 11.1 197.9 43.2 197.9 43.2s-207.4-63.3-221.2-78.7c-13.8-15.4-40.6-84.2-37.1-126.5 0 0 1.5-10.5 12.4-7.7 0 0 153.3 69.7 258.1 107.9 104.8 37.9 195.9 57.3 184.2 106.7z")),t.DislikeFill=u("dislike",a,l(o,"M885.9 490.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 0 0-26.5-5.4H273v428h.3l85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zM112 132v364c0 17.7 14.3 32 32 32h65V100h-65c-17.7 0-32 14.3-32 32z")),t.DollarCircleFill=u("dollar-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm22.3 665.2l.2 31.7c0 4.4-3.6 8.1-8 8.1h-28.4c-4.4 0-8-3.6-8-8v-31.4C401.3 723 359.5 672.4 355 617.4c-.4-4.7 3.3-8.7 8-8.7h46.2c3.9 0 7.3 2.8 7.9 6.6 5.1 31.7 29.8 55.4 74.1 61.3V533.9l-24.7-6.3c-52.3-12.5-102.1-45.1-102.1-112.7 0-72.9 55.4-112.1 126.2-119v-33c0-4.4 3.6-8 8-8h28.1c4.4 0 8 3.6 8 8v32.7c68.5 6.9 119.9 46.9 125.9 109.2.5 4.7-3.2 8.8-8 8.8h-44.9c-4 0-7.4-3-7.9-6.9-4-29.2-27.4-53-65.5-58.2v134.3l25.4 5.9c64.8 16 108.9 47 108.9 116.4 0 75.3-56 117.3-134.3 124.1zM426.6 410.3c0 25.4 15.7 45.1 49.5 57.3 4.7 1.9 9.4 3.4 15 5v-124c-36.9 4.7-64.5 25.4-64.5 61.7zm116.5 135.2c-2.8-.6-5.6-1.3-8.8-2.2V677c42.6-3.8 72-27.2 72-66.4 0-30.7-15.9-50.7-63.2-65.1z")),t.DownCircleFill=u("down-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm184.5 353.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7H381c10.2 0 19.9 4.9 25.9 13.2L512 563.6l105.2-145.4c6-8.3 15.6-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.5 12.7z")),t.DownSquareFill=u("down-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM696.5 412.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7H381c10.2 0 19.9 4.9 25.9 13.2L512 558.6l105.2-145.4c6-8.3 15.6-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.5 12.7z")),t.DribbbleCircleFill=u("dribbble-circle",a,l(o,"M675.1 328.3a245.2 245.2 0 0 0-220.8-55.1c6.8 9.1 51.5 69.9 91.8 144 87.5-32.8 124.5-82.6 129-88.9zM554 552.8c-138.7 48.3-188.6 144.6-193 153.6 41.7 32.5 94.1 51.9 151 51.9 34.1 0 66.6-6.9 96.1-19.5-3.7-21.6-17.9-96.8-52.5-186.6l-1.6.6zm47.7-11.9c32.2 88.4 45.3 160.4 47.8 175.4 55.2-37.3 94.5-96.4 105.4-164.9-8.4-2.6-76.1-22.8-153.2-10.5zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 736c-158.8 0-288-129.2-288-288s129.2-288 288-288 288 129.2 288 288-129.2 288-288 288zm53.1-346.2c5.7 11.7 11.2 23.6 16.3 35.6 1.8 4.2 3.6 8.4 5.3 12.7 81.8-10.3 163.2 6.2 171.3 7.9-.5-58.1-21.3-111.4-55.5-153.3-5.3 7.1-46.5 60-137.4 97.1zM498.6 432c-40.8-72.5-84.7-133.4-91.2-142.3-68.8 32.5-120.3 95.9-136.2 172.2 11 .2 112.4.7 227.4-29.9zm30.6 82.5c3.2-1 6.4-2 9.7-2.9-6.2-14-12.9-28-19.9-41.7-122.8 36.8-242.1 35.2-252.8 35-.1 2.5-.1 5-.1 7.5 0 63.2 23.9 120.9 63.2 164.5 5.5-9.6 73-121.4 199.9-162.4z")),t.DribbbleSquareFill=u("dribbble-square",a,l(o,"M498.6 432c-40.8-72.5-84.7-133.4-91.2-142.3-68.8 32.5-120.3 95.9-136.2 172.2 11 .2 112.4.7 227.4-29.9zm66.5 21.8c5.7 11.7 11.2 23.6 16.3 35.6 1.8 4.2 3.6 8.4 5.3 12.7 81.8-10.3 163.2 6.2 171.3 7.9-.5-58.1-21.3-111.4-55.5-153.3-5.3 7.1-46.5 60-137.4 97.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM512 800c-158.8 0-288-129.2-288-288s129.2-288 288-288 288 129.2 288 288-129.2 288-288 288zm89.7-259.1c32.2 88.4 45.3 160.4 47.8 175.4 55.2-37.3 94.5-96.4 105.4-164.9-8.4-2.6-76.1-22.8-153.2-10.5zm-72.5-26.4c3.2-1 6.4-2 9.7-2.9-6.2-14-12.9-28-19.9-41.7-122.8 36.8-242.1 35.2-252.8 35-.1 2.5-.1 5-.1 7.5 0 63.2 23.9 120.9 63.2 164.5 5.5-9.6 73-121.4 199.9-162.4zm145.9-186.2a245.2 245.2 0 0 0-220.8-55.1c6.8 9.1 51.5 69.9 91.8 144 87.5-32.8 124.5-82.6 129-88.9zM554 552.8c-138.7 48.3-188.6 144.6-193 153.6 41.7 32.5 94.1 51.9 151 51.9 34.1 0 66.6-6.9 96.1-19.5-3.7-21.6-17.9-96.8-52.5-186.6l-1.6.6z")),t.DropboxCircleFill=u("dropbox-circle",a,l(o,"M663.8 455.5zm-151.5-93.8l-151.8 93.8 151.8 93.9 151.5-93.9zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm151.2 595.5L512.6 750l-151-90.5v-33.1l45.4 29.4 105.6-87.7 105.6 87.7 45.1-29.4v33.1zm-45.6-22.4l-105.3-87.7L407 637.1l-151-99.2 104.5-82.4L256 371.2 407 274l105.3 87.7L617.6 274 768 372.1l-104.2 83.5L768 539l-150.4 98.1z")),t.DropboxSquareFill=u("dropbox-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM663.2 659.5L512.6 750l-151-90.5v-33.1l45.4 29.4 105.6-87.7 105.6 87.7 45.1-29.4v33.1zm-45.6-22.4l-105.3-87.7L407 637.1l-151-99.2 104.5-82.4L256 371.2 407 274l105.3 87.7L617.6 274 768 372.1l-104.2 83.5L768 539l-150.4 98.1zM512.3 361.7l-151.8 93.8 151.8 93.9 151.5-93.9zm151.5 93.8z")),t.EnvironmentFill=u("environment",a,l(o,"M512 327c-29.9 0-58 11.6-79.2 32.8A111.6 111.6 0 0 0 400 439c0 29.9 11.7 58 32.8 79.2A111.6 111.6 0 0 0 512 551c29.9 0 58-11.7 79.2-32.8C612.4 497 624 468.9 624 439c0-29.9-11.6-58-32.8-79.2S541.9 327 512 327zm342.6-37.9a362.49 362.49 0 0 0-79.9-115.7 370.83 370.83 0 0 0-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 0 0 169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0 0 22.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 615c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z")),t.EditFill=u("edit",a,l(o,"M880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32zm-622.3-84c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9z")),t.ExclamationCircleFill=u("exclamation-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")),t.EuroCircleFill=u("euro-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm63.5 375.8c4.4 0 8 3.6 8 8V475c0 4.4-3.6 8-8 8h-136c-.3 4.4-.3 9.1-.3 13.8v36h136.2c4.4 0 8 3.6 8 8V568c0 4.4-3.6 8-8 8H444.9c15.3 62 61.3 98.6 129.8 98.6 19.9 0 37.1-1.2 51.8-4.1 4.9-1 9.5 2.8 9.5 7.8v42.8c0 3.8-2.7 7-6.4 7.8-15.9 3.4-34.3 5.1-55.3 5.1-109.8 0-183-58.8-200.2-158H344c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h26.1v-36.9c0-4.4 0-8.8.3-12.8H344c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h31.7c19.7-94.2 92-149.9 198.6-149.9 20.9 0 39.4 1.9 55.3 5.4 3.7.8 6.3 4 6.3 7.8V346h.1c0 5.1-4.6 8.8-9.6 7.8-14.7-2.9-31.8-4.4-51.7-4.4-65.4 0-110.4 33.5-127.6 90.4h128.4z")),t.ExperimentFill=u("experiment",a,l(o,"M218.9 636.3l42.6 26.6c.1.1.3.2.4.3l12.7 8 .3.3a186.9 186.9 0 0 0 94.1 25.1c44.9 0 87.2-15.7 121-43.8a256.27 256.27 0 0 1 164.9-59.9c52.3 0 102.2 15.7 144.6 44.5l7.9 5-111.6-289V179.8h63.5c4.4 0 8-3.6 8-8V120c0-4.4-3.6-8-8-8H264.7c-4.4 0-8 3.6-8 8v51.9c0 4.4 3.6 8 8 8h63.5v173.6L218.9 636.3zm333-203.1c22 0 39.9 17.9 39.9 39.9S573.9 513 551.9 513 512 495.1 512 473.1s17.9-39.9 39.9-39.9zM878 825.1l-29.9-77.4-85.7-53.5-.1.1c-.7-.5-1.5-1-2.2-1.5l-8.1-5-.3-.3c-29-17.5-62.3-26.8-97-26.8-44.9 0-87.2 15.7-121 43.8a256.27 256.27 0 0 1-164.9 59.9c-53 0-103.5-16.1-146.2-45.6l-28.9-18.1L146 825.1c-2.8 7.4-4.3 15.2-4.3 23 0 35.2 28.6 63.8 63.8 63.8h612.9c7.9 0 15.7-1.5 23-4.3a63.6 63.6 0 0 0 36.6-82.5z")),t.EyeInvisibleFill=u("eye-invisible",a,l(o,"M508 624a112 112 0 0 0 112-112c0-3.28-.15-6.53-.43-9.74L498.26 623.57c3.21.28 6.45.43 9.74.43zm370.72-458.44L836 122.88a8 8 0 0 0-11.31 0L715.37 232.23Q624.91 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q56.7 119.43 136.55 191.45L112.56 835a8 8 0 0 0 0 11.31L155.25 889a8 8 0 0 0 11.31 0l712.16-712.12a8 8 0 0 0 0-11.32zM332 512a176 176 0 0 1 258.88-155.28l-48.62 48.62a112.08 112.08 0 0 0-140.92 140.92l-48.62 48.62A175.09 175.09 0 0 1 332 512z","M942.2 486.2Q889.4 375 816.51 304.85L672.37 449A176.08 176.08 0 0 1 445 676.37L322.74 798.63Q407.82 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5z")),t.EyeFill=u("eye",a,l(o,"M396 512a112 112 0 1 0 224 0 112 112 0 1 0-224 0zm546.2-25.8C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM508 688c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z")),t.FacebookFill=u("facebook",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-92.4 233.5h-63.9c-50.1 0-59.8 23.8-59.8 58.8v77.1h119.6l-15.6 120.7h-104V912H539.2V602.2H434.9V481.4h104.3v-89c0-103.3 63.1-159.6 155.3-159.6 44.2 0 82.1 3.3 93.2 4.8v107.9z")),t.FastBackwardFill=u("fast-backward",a,l(r,"M517.6 273.5L230.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm320 0L550.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm-620-25.5h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z")),t.FastForwardFill=u("fast-forward",a,l(r,"M793.8 499.3L506.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.6c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8a16.14 16.14 0 0 0 0-25.4zm-320 0L186.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.5c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8c4.1-3.2 6.2-8 6.2-12.7 0-4.6-2.1-9.4-6.2-12.6zM857.6 248h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z")),t.FileAddFill=u("file-add",a,l(o,"M480 580H372a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h108v108a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8V644h108a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8H544V472a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v108zm374.6-291.3c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2z")),t.FileExcelFill=u("file-excel",a,l(o,"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM575.34 477.84l-61.22 102.3L452.3 477.8a12 12 0 0 0-10.27-5.79h-38.44a12 12 0 0 0-6.4 1.85 12 12 0 0 0-3.75 16.56l82.34 130.42-83.45 132.78a12 12 0 0 0-1.84 6.39 12 12 0 0 0 12 12h34.46a12 12 0 0 0 10.21-5.7l62.7-101.47 62.3 101.45a12 12 0 0 0 10.23 5.72h37.48a12 12 0 0 0 6.48-1.9 12 12 0 0 0 3.62-16.58l-83.83-130.55 85.3-132.47a12 12 0 0 0 1.9-6.5 12 12 0 0 0-12-12h-35.7a12 12 0 0 0-10.29 5.84z")),t.FileExclamationFill=u("file-exclamation",a,l(o,"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM512 784a40 40 0 1 0 0-80 40 40 0 0 0 0 80zm32-152V448a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v184a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8z")),t.FileImageFill=u("file-image",a,l(o,"M854.6 288.7L639.4 73.4c-6-6-14.2-9.4-22.7-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.6-9.4-22.6zM400 402c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm296 294H328c-6.7 0-10.4-7.7-6.3-12.9l99.8-127.2a8 8 0 0 1 12.6 0l41.1 52.4 77.8-99.2a8 8 0 0 1 12.6 0l136.5 174c4.3 5.2.5 12.9-6.1 12.9zm-94-370V137.8L790.2 326H602z")),t.FileMarkdownFill=u("file-markdown",a,l(o,"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM426.13 600.93l59.11 132.97a16 16 0 0 0 14.62 9.5h24.06a16 16 0 0 0 14.63-9.51l59.1-133.35V758a16 16 0 0 0 16.01 16H641a16 16 0 0 0 16-16V486a16 16 0 0 0-16-16h-34.75a16 16 0 0 0-14.67 9.62L512.1 662.2l-79.48-182.59a16 16 0 0 0-14.67-9.61H383a16 16 0 0 0-16 16v272a16 16 0 0 0 16 16h27.13a16 16 0 0 0 16-16V600.93z")),t.FilePdfFill=u("file-pdf",a,l(o,"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM633.22 637.26c-15.18-.5-31.32.67-49.65 2.96-24.3-14.99-40.66-35.58-52.28-65.83l1.07-4.38 1.24-5.18c4.3-18.13 6.61-31.36 7.3-44.7.52-10.07-.04-19.36-1.83-27.97-3.3-18.59-16.45-29.46-33.02-30.13-15.45-.63-29.65 8-33.28 21.37-5.91 21.62-2.45 50.07 10.08 98.59-15.96 38.05-37.05 82.66-51.2 107.54-18.89 9.74-33.6 18.6-45.96 28.42-16.3 12.97-26.48 26.3-29.28 40.3-1.36 6.49.69 14.97 5.36 21.92 5.3 7.88 13.28 13 22.85 13.74 24.15 1.87 53.83-23.03 86.6-79.26 3.29-1.1 6.77-2.26 11.02-3.7l11.9-4.02c7.53-2.54 12.99-4.36 18.39-6.11 23.4-7.62 41.1-12.43 57.2-15.17 27.98 14.98 60.32 24.8 82.1 24.8 17.98 0 30.13-9.32 34.52-23.99 3.85-12.88.8-27.82-7.48-36.08-8.56-8.41-24.3-12.43-45.65-13.12zM385.23 765.68v-.36l.13-.34a54.86 54.86 0 0 1 5.6-10.76c4.28-6.58 10.17-13.5 17.47-20.87 3.92-3.95 8-7.8 12.79-12.12 1.07-.96 7.91-7.05 9.19-8.25l11.17-10.4-8.12 12.93c-12.32 19.64-23.46 33.78-33 43-3.51 3.4-6.6 5.9-9.1 7.51a16.43 16.43 0 0 1-2.61 1.42c-.41.17-.77.27-1.13.3a2.2 2.2 0 0 1-1.12-.15 2.07 2.07 0 0 1-1.27-1.91zM511.17 547.4l-2.26 4-1.4-4.38c-3.1-9.83-5.38-24.64-6.01-38-.72-15.2.49-24.32 5.29-24.32 6.74 0 9.83 10.8 10.07 27.05.22 14.28-2.03 29.14-5.7 35.65zm-5.81 58.46l1.53-4.05 2.09 3.8c11.69 21.24 26.86 38.96 43.54 51.31l3.6 2.66-4.39.9c-16.33 3.38-31.54 8.46-52.34 16.85 2.17-.88-21.62 8.86-27.64 11.17l-5.25 2.01 2.8-4.88c12.35-21.5 23.76-47.32 36.05-79.77zm157.62 76.26c-7.86 3.1-24.78.33-54.57-12.39l-7.56-3.22 8.2-.6c23.3-1.73 39.8-.45 49.42 3.07 4.1 1.5 6.83 3.39 8.04 5.55a4.64 4.64 0 0 1-1.36 6.31 6.7 6.7 0 0 1-2.17 1.28z")),t.FilePptFill=u("file-ppt",a,l(o,"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM468.53 760v-91.54h59.27c60.57 0 100.2-39.65 100.2-98.12 0-58.22-39.58-98.34-99.98-98.34H424a12 12 0 0 0-12 12v276a12 12 0 0 0 12 12h32.53a12 12 0 0 0 12-12zm0-139.33h34.9c47.82 0 67.19-12.93 67.19-50.33 0-32.05-18.12-50.12-49.87-50.12h-52.22v100.45z")),t.FileTextFill=u("file-text",a,l(o,"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM320 482a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h384a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8H320zm0 136a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h184a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8H320z")),t.FileWordFill=u("file-word",a,l(o,"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM512 566.1l52.81 197a12 12 0 0 0 11.6 8.9h31.77a12 12 0 0 0 11.6-8.88l74.37-276a12 12 0 0 0 .4-3.12 12 12 0 0 0-12-12h-35.57a12 12 0 0 0-11.7 9.31l-45.78 199.1-49.76-199.32A12 12 0 0 0 528.1 472h-32.2a12 12 0 0 0-11.64 9.1L434.6 680.01 388.5 481.3a12 12 0 0 0-11.68-9.29h-35.39a12 12 0 0 0-3.11.41 12 12 0 0 0-8.47 14.7l74.17 276A12 12 0 0 0 415.6 772h31.99a12 12 0 0 0 11.59-8.9l52.81-197z")),t.FileUnknownFill=u("file-unknown",a,l(o,"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM402 549c0 5.4 4.4 9.5 9.8 9.5h32.4c5.4 0 9.8-4.2 9.8-9.4 0-28.2 25.8-51.6 58-51.6s58 23.4 58 51.5c0 25.3-21 47.2-49.3 50.9-19.3 2.8-34.5 20.3-34.7 40.1v32c0 5.5 4.5 10 10 10h32c5.5 0 10-4.5 10-10v-12.2c0-6 4-11.5 9.7-13.3 44.6-14.4 75-54 74.3-98.9-.8-55.5-49.2-100.8-108.5-101.6-61.4-.7-111.5 45.6-111.5 103zm110 227a32 32 0 1 0 0-64 32 32 0 0 0 0 64z")),t.FileZipFill=u("file-zip",a,l(o,"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM296 136v64h64v-64h-64zm64 64v64h64v-64h-64zm-64 64v64h64v-64h-64zm64 64v64h64v-64h-64zm-64 64v64h64v-64h-64zm64 64v64h64v-64h-64zm-64 64v64h64v-64h-64zm0 64v160h128V584H296zm48 48h32v64h-32v-64z")),t.FileFill=u("file",a,l(o,"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2z")),t.FilterFill=u("filter",a,l(o,"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z")),t.FireFill=u("fire",a,l(o,"M834.1 469.2A347.49 347.49 0 0 0 751.2 354l-29.1-26.7a8.09 8.09 0 0 0-13 3.3l-13 37.3c-8.1 23.4-23 47.3-44.1 70.8-1.4 1.5-3 1.9-4.1 2-1.1.1-2.8-.1-4.3-1.5-1.4-1.2-2.1-3-2-4.8 3.7-60.2-14.3-128.1-53.7-202C555.3 171 510 123.1 453.4 89.7l-41.3-24.3c-5.4-3.2-12.3 1-12 7.3l2.2 48c1.5 32.8-2.3 61.8-11.3 85.9-11 29.5-26.8 56.9-47 81.5a295.64 295.64 0 0 1-47.5 46.1 352.6 352.6 0 0 0-100.3 121.5A347.75 347.75 0 0 0 160 610c0 47.2 9.3 92.9 27.7 136a349.4 349.4 0 0 0 75.5 110.9c32.4 32 70 57.2 111.9 74.7C418.5 949.8 464.5 959 512 959s93.5-9.2 136.9-27.3A348.6 348.6 0 0 0 760.8 857c32.4-32 57.8-69.4 75.5-110.9a344.2 344.2 0 0 0 27.7-136c0-48.8-10-96.2-29.9-140.9z")),t.FlagFill=u("flag",a,l(o,"M880 305H624V192c0-17.7-14.3-32-32-32H184v-40c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V640h248v113c0 17.7 14.3 32 32 32h416c17.7 0 32-14.3 32-32V337c0-17.7-14.3-32-32-32z")),t.FolderAddFill=u("folder-add",a,l(o,"M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM632 577c0 3.8-3.4 7-7.5 7H540v84.9c0 3.9-3.2 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V584h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7H484v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.8 0 7 3.2 7 7.1V528h84.5c4.1 0 7.5 3.2 7.5 7v42z")),t.FolderFill=u("folder",a,l(o,"M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32z")),t.FolderOpenFill=u("folder-open",a,l(o,"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zm-180 0H238c-13 0-24.8 7.9-29.7 20L136 643.2V256h188.5l119.6 114.4H748V444z")),t.ForwardFill=u("forward",a,l(r,"M825.8 498L538.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L825.8 526c8.3-7.2 8.3-20.8 0-28zm-320 0L218.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L505.8 526c4.1-3.6 6.2-8.8 6.2-14 0-5.2-2.1-10.4-6.2-14z")),t.FrownFill=u("frown",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm376 272h-48.1c-4.2 0-7.8-3.2-8.1-7.4C604 636.1 562.5 597 512 597s-92.1 39.1-95.8 88.6c-.3 4.2-3.9 7.4-8.1 7.4H360a8 8 0 0 1-8-8.4c4.4-84.3 74.5-151.6 160-151.6s155.6 67.3 160 151.6a8 8 0 0 1-8 8.4zm24-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")),t.FundFill=u("fund",a,l(o,"M926 164H94c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V196c0-17.7-14.3-32-32-32zm-92.3 194.4l-297 297.2a8.03 8.03 0 0 1-11.3 0L410.9 541.1 238.4 713.7a8.03 8.03 0 0 1-11.3 0l-36.8-36.8a8.03 8.03 0 0 1 0-11.3l214.9-215c3.1-3.1 8.2-3.1 11.3 0L531 565l254.5-254.6c3.1-3.1 8.2-3.1 11.3 0l36.8 36.8c3.2 3 3.2 8.1.1 11.2z")),t.FunnelPlotFill=u("funnel-plot",a,l(o,"M336.7 586h350.6l84.9-148H251.8zm543.4-432H143.9c-24.5 0-39.8 26.7-27.5 48L215 374h594l98.7-172c12.2-21.3-3.1-48-27.6-48zM349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V650H349v188z")),t.GiftFill=u("gift",a,l(o,"M160 894c0 17.7 14.3 32 32 32h286V550H160v344zm386 32h286c17.7 0 32-14.3 32-32V550H546v376zm334-616H732.4c13.6-21.4 21.6-46.8 21.6-74 0-76.1-61.9-138-138-138-41.4 0-78.7 18.4-104 47.4-25.3-29-62.6-47.4-104-47.4-76.1 0-138 61.9-138 138 0 27.2 7.9 52.6 21.6 74H144c-17.7 0-32 14.3-32 32v140h366V310h68v172h366V342c0-17.7-14.3-32-32-32zm-402-4h-70c-38.6 0-70-31.4-70-70s31.4-70 70-70 70 31.4 70 70v70zm138 0h-70v-70c0-38.6 31.4-70 70-70s70 31.4 70 70-31.4 70-70 70z")),t.GithubFill=u("github",a,l(o,"M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9a127.5 127.5 0 0 1 38.1 91v112.5c.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z")),t.GitlabFill=u("gitlab",a,l(o,"M910.5 553.2l-109-370.8c-6.8-20.4-23.1-34.1-44.9-34.1s-39.5 12.3-46.3 32.7l-72.2 215.4H386.2L314 181.1c-6.8-20.4-24.5-32.7-46.3-32.7s-39.5 13.6-44.9 34.1L113.9 553.2c-4.1 13.6 1.4 28.6 12.3 36.8l385.4 289 386.7-289c10.8-8.1 16.3-23.1 12.2-36.8z")),t.GoldenFill=u("golden",a,l(o,"M905.9 806.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zm-470.2-248c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8z")),t.GoogleCircleFill=u("google-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm167 633.6C638.4 735 583 757 516.9 757c-95.7 0-178.5-54.9-218.8-134.9C281.5 589 272 551.6 272 512s9.5-77 26.1-110.1c40.3-80.1 123.1-135 218.8-135 66 0 121.4 24.3 163.9 63.8L610.6 401c-25.4-24.3-57.7-36.6-93.6-36.6-63.8 0-117.8 43.1-137.1 101-4.9 14.7-7.7 30.4-7.7 46.6s2.8 31.9 7.7 46.6c19.3 57.9 73.3 101 137 101 33 0 61-8.7 82.9-23.4 26-17.4 43.2-43.3 48.9-74H516.9v-94.8h230.7c2.9 16.1 4.4 32.8 4.4 50.1 0 74.7-26.7 137.4-73 180.1z")),t.GooglePlusCircleFill=u("google-plus-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm36.5 558.8c-43.9 61.8-132.1 79.8-200.9 53.3-69-26.3-118-99.2-112.1-173.5 1.5-90.9 85.2-170.6 176.1-167.5 43.6-2 84.6 16.9 118 43.6-14.3 16.2-29 31.8-44.8 46.3-40.1-27.7-97.2-35.6-137.3-3.6-57.4 39.7-60 133.4-4.8 176.1 53.7 48.7 155.2 24.5 170.1-50.1-33.6-.5-67.4 0-101-1.1-.1-20.1-.2-40.1-.1-60.2 56.2-.2 112.5-.3 168.8.2 3.3 47.3-3 97.5-32 136.5zM791 536.5c-16.8.2-33.6.3-50.4.4-.2 16.8-.3 33.6-.3 50.4H690c-.2-16.8-.2-33.5-.3-50.3-16.8-.2-33.6-.3-50.4-.5v-50.1c16.8-.2 33.6-.3 50.4-.3.1-16.8.3-33.6.4-50.4h50.2l.3 50.4c16.8.2 33.6.2 50.4.3v50.1z")),t.GooglePlusSquareFill=u("google-plus-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM548.5 622.8c-43.9 61.8-132.1 79.8-200.9 53.3-69-26.3-118-99.2-112.1-173.5 1.5-90.9 85.2-170.6 176.1-167.5 43.6-2 84.6 16.9 118 43.6-14.3 16.2-29 31.8-44.8 46.3-40.1-27.7-97.2-35.6-137.3-3.6-57.4 39.7-60 133.4-4.8 176.1 53.7 48.7 155.2 24.5 170.1-50.1-33.6-.5-67.4 0-101-1.1-.1-20.1-.2-40.1-.1-60.2 56.2-.2 112.5-.3 168.8.2 3.3 47.3-3 97.5-32 136.5zM791 536.5c-16.8.2-33.6.3-50.4.4-.2 16.8-.3 33.6-.3 50.4H690c-.2-16.8-.2-33.5-.3-50.3-16.8-.2-33.6-.3-50.4-.5v-50.1c16.8-.2 33.6-.3 50.4-.3.1-16.8.3-33.6.4-50.4h50.2l.3 50.4c16.8.2 33.6.2 50.4.3v50.1z")),t.GoogleSquareFill=u("google-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM679 697.6C638.4 735 583 757 516.9 757c-95.7 0-178.5-54.9-218.8-134.9A245.02 245.02 0 0 1 272 512c0-39.6 9.5-77 26.1-110.1 40.3-80.1 123.1-135 218.8-135 66 0 121.4 24.3 163.9 63.8L610.6 401c-25.4-24.3-57.7-36.6-93.6-36.6-63.8 0-117.8 43.1-137.1 101-4.9 14.7-7.7 30.4-7.7 46.6s2.8 31.9 7.7 46.6c19.3 57.9 73.3 101 137 101 33 0 61-8.7 82.9-23.4 26-17.4 43.2-43.3 48.9-74H516.9v-94.8h230.7c2.9 16.1 4.4 32.8 4.4 50.1 0 74.7-26.7 137.4-73 180.1z")),t.HddFill=u("hdd",a,l(o,"M832 64H192c-17.7 0-32 14.3-32 32v224h704V96c0-17.7-14.3-32-32-32zM456 216c0 4.4-3.6 8-8 8H264c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zM160 928c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V704H160v224zm576-136c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM160 640h704V384H160v256zm96-152c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H264c-4.4 0-8-3.6-8-8v-48z")),t.HeartFill=u("heart",a,l(o,"M923 283.6a260.04 260.04 0 0 0-56.9-82.8 264.4 264.4 0 0 0-84-55.5A265.34 265.34 0 0 0 679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 0 0-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9z")),t.HighlightFill=u("highlight",a,l(o,"M957.6 507.4L603.2 158.2a7.9 7.9 0 0 0-11.2 0L353.3 393.4a8.03 8.03 0 0 0-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 0 0-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8V860c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6 40.4 39.8a7.9 7.9 0 0 0 11.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0 0 11.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2z")),t.HomeFill=u("home",a,l(o,"M946.5 505L534.6 93.4a31.93 31.93 0 0 0-45.2 0L77.5 505c-12 12-18.8 28.3-18.8 45.3 0 35.3 28.7 64 64 64h43.4V908c0 17.7 14.3 32 32 32H448V716h112v224h265.9c17.7 0 32-14.3 32-32V614.3h43.4c17 0 33.3-6.7 45.3-18.8 24.9-25 24.9-65.5-.1-90.5z")),t.HourglassFill=u("hourglass",a,l(o,"M742 318V184h86c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h86v134c0 81.5 42.4 153.2 106.4 194-64 40.8-106.4 112.5-106.4 194v134h-86c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h632c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-86V706c0-81.5-42.4-153.2-106.4-194 64-40.8 106.4-112.5 106.4-194z")),t.Html5Fill=u("html5",a,l(o,"M145.2 96l66 746.6L512 928l299.6-85.4L878.9 96H145.2zm595 177.1l-4.8 47.2-1.7 19.5H382.3l8.2 94.2h335.1l-3.3 24.3-21.2 242.2-1.7 16.2-187 51.6v.3h-1.2l-.3.1v-.1h-.1l-188.6-52L310.8 572h91.1l6.5 73.2 102.4 27.7h.4l102-27.6 11.4-118.6H510.9v-.1H306l-22.8-253.5-1.7-24.3h460.3l-1.6 24.3z")),t.IdcardFill=u("idcard",a,l(o,"M373 411c-28.5 0-51.7 23.3-51.7 52s23.2 52 51.7 52 51.7-23.3 51.7-52-23.2-52-51.7-52zm555-251H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zM608 420c0-4.4 1-8 2.3-8h123.4c1.3 0 2.3 3.6 2.3 8v48c0 4.4-1 8-2.3 8H610.3c-1.3 0-2.3-3.6-2.3-8v-48zm-86 253h-43.9c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.5-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H224a8 8 0 0 1-8-8.4c2.8-53.3 32-99.7 74.6-126.1a111.8 111.8 0 0 1-29.1-75.5c0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.5-29.1 75.5 42.7 26.5 71.8 72.8 74.6 126.1.4 4.6-3.2 8.4-7.8 8.4zm278.9-53H615.1c-3.9 0-7.1-3.6-7.1-8v-48c0-4.4 3.2-8 7.1-8h185.7c3.9 0 7.1 3.6 7.1 8v48h.1c0 4.4-3.2 8-7.1 8z")),t.IeCircleFill=u("ie-circle",a,l(o,"M693.6 284.4c-24 0-51.1 11.7-72.6 22 46.3 18 86 57.3 112.3 99.6 7.1-18.9 14.6-47.9 14.6-67.9 0-32-22.8-53.7-54.3-53.7zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm253.9 492.9H437.1c0 100.4 144.3 136 196.8 47.4h120.8c-32.6 91.7-119.7 146-216.8 146-35.1 0-70.3-.1-101.7-15.6-87.4 44.5-180.3 56.6-180.3-42 0-45.8 23.2-107.1 44-145C335 484 381.3 422.8 435.6 374.5c-43.7 18.9-91.1 66.3-122 101.2 25.9-112.8 129.5-193.6 237.1-186.5 130-59.8 209.7-34.1 209.7 38.6 0 27.4-10.6 63.3-21.4 87.9 25.2 45.5 33.3 97.6 26.9 141.2zM540.5 399.1c-53.7 0-102 39.7-104 94.9h208c-2-55.1-50.6-94.9-104-94.9zM320.6 602.9c-73 152.4 11.5 172.2 100.3 123.3-46.6-27.5-82.6-72.2-100.3-123.3z")),t.IeSquareFill=u("ie-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM765.9 556.9H437.1c0 100.4 144.3 136 196.8 47.4h120.8c-32.6 91.7-119.7 146-216.8 146-35.1 0-70.3-.1-101.7-15.6-87.4 44.5-180.3 56.6-180.3-42 0-45.8 23.2-107.1 44-145C335 484 381.3 422.8 435.6 374.5c-43.7 18.9-91.1 66.3-122 101.2 25.9-112.8 129.5-193.6 237.1-186.5 130-59.8 209.7-34.1 209.7 38.6 0 27.4-10.6 63.3-21.4 87.9 25.2 45.5 33.3 97.6 26.9 141.2zm-72.3-272.5c-24 0-51.1 11.7-72.6 22 46.3 18 86 57.3 112.3 99.6 7.1-18.9 14.6-47.9 14.6-67.9 0-32-22.8-53.7-54.3-53.7zM540.5 399.1c-53.7 0-102 39.7-104 94.9h208c-2-55.1-50.6-94.9-104-94.9zM320.6 602.9c-73 152.4 11.5 172.2 100.3 123.3-46.6-27.5-82.6-72.2-100.3-123.3z")),t.InfoCircleFill=u("info-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")),t.InstagramFill=u("instagram",a,l(o,"M512 378.7c-73.4 0-133.3 59.9-133.3 133.3S438.6 645.3 512 645.3 645.3 585.4 645.3 512 585.4 378.7 512 378.7zM911.8 512c0-55.2.5-109.9-2.6-165-3.1-64-17.7-120.8-64.5-167.6-46.9-46.9-103.6-61.4-167.6-64.5-55.2-3.1-109.9-2.6-165-2.6-55.2 0-109.9-.5-165 2.6-64 3.1-120.8 17.7-167.6 64.5C132.6 226.3 118.1 283 115 347c-3.1 55.2-2.6 109.9-2.6 165s-.5 109.9 2.6 165c3.1 64 17.7 120.8 64.5 167.6 46.9 46.9 103.6 61.4 167.6 64.5 55.2 3.1 109.9 2.6 165 2.6 55.2 0 109.9.5 165-2.6 64-3.1 120.8-17.7 167.6-64.5 46.9-46.9 61.4-103.6 64.5-167.6 3.2-55.1 2.6-109.8 2.6-165zM512 717.1c-113.5 0-205.1-91.6-205.1-205.1S398.5 306.9 512 306.9 717.1 398.5 717.1 512 625.5 717.1 512 717.1zm213.5-370.7c-26.5 0-47.9-21.4-47.9-47.9s21.4-47.9 47.9-47.9 47.9 21.4 47.9 47.9a47.84 47.84 0 0 1-47.9 47.9z")),t.InsuranceFill=u("insurance",a,l(o,"M519.9 358.8h97.9v41.6h-97.9zm347-188.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM411.3 656h-.2c0 4.4-3.6 8-8 8h-37.3c-4.4 0-8-3.6-8-8V471.4c-7.7 9.2-15.4 17.9-23.1 26a6.04 6.04 0 0 1-10.2-2.4l-13.2-43.5c-.6-2-.2-4.1 1.2-5.6 37-43.4 64.7-95.1 82.2-153.6 1.1-3.5 5-5.3 8.4-3.7l38.6 18.3c2.7 1.3 4.1 4.4 3.2 7.2a429.2 429.2 0 0 1-33.6 79V656zm296.5-49.2l-26.3 35.3a5.92 5.92 0 0 1-8.9.7c-30.6-29.3-56.8-65.2-78.1-106.9V656c0 4.4-3.6 8-8 8h-36.2c-4.4 0-8-3.6-8-8V536c-22 44.7-49 80.8-80.6 107.6a5.9 5.9 0 0 1-8.9-1.4L430 605.7a6 6 0 0 1 1.6-8.1c28.6-20.3 51.9-45.2 71-76h-55.1c-4.4 0-8-3.6-8-8V478c0-4.4 3.6-8 8-8h94.9v-18.6h-65.9c-4.4 0-8-3.6-8-8V316c0-4.4 3.6-8 8-8h184.7c4.4 0 8 3.6 8 8v127.2c0 4.4-3.6 8-8 8h-66.7v18.6h98.8c4.4 0 8 3.6 8 8v35.6c0 4.4-3.6 8-8 8h-59c18.1 29.1 41.8 54.3 72.3 76.9 2.6 2.1 3.2 5.9 1.2 8.5z")),t.InteractionFill=u("interaction",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM726 585.7c0 55.3-44.7 100.1-99.7 100.1H420.6v53.4c0 5.7-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.7l109.1-85.7c4.4-3.5 10.9-.3 10.9 5.3v53.4h205.7c19.6 0 35.5-16 35.5-35.6v-78.9c0-3.7 3-6.8 6.8-6.8h50.7c3.7 0 6.8 3 6.8 6.8v79.1zm-2.6-209.9l-109.1 85.7c-4.4 3.5-10.9.3-10.9-5.3v-53.4H397.7c-19.6 0-35.5 16-35.5 35.6v78.9c0 3.7-3 6.8-6.8 6.8h-50.7c-3.7 0-6.8-3-6.8-6.8v-78.9c0-55.3 44.7-100.1 99.7-100.1h205.7v-53.4c0-5.7 6.5-8.8 10.9-5.3l109.1 85.7c3.6 2.5 3.6 7.8.1 10.5z")),t.InterationFill=u("interation",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM726 585.7c0 55.3-44.7 100.1-99.7 100.1H420.6v53.4c0 5.7-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.7l109.1-85.7c4.4-3.5 10.9-.3 10.9 5.3v53.4h205.7c19.6 0 35.5-16 35.5-35.6v-78.9c0-3.7 3-6.8 6.8-6.8h50.7c3.7 0 6.8 3 6.8 6.8v79.1zm-2.6-209.9l-109.1 85.7c-4.4 3.5-10.9.3-10.9-5.3v-53.4H397.7c-19.6 0-35.5 16-35.5 35.6v78.9c0 3.7-3 6.8-6.8 6.8h-50.7c-3.7 0-6.8-3-6.8-6.8v-78.9c0-55.3 44.7-100.1 99.7-100.1h205.7v-53.4c0-5.7 6.5-8.8 10.9-5.3l109.1 85.7c3.6 2.5 3.6 7.8.1 10.5z")),t.LayoutFill=u("layout",a,l(o,"M384 912h496c17.7 0 32-14.3 32-32V340H384v572zm496-800H384v164h528V144c0-17.7-14.3-32-32-32zm-768 32v736c0 17.7 14.3 32 32 32h176V112H144c-17.7 0-32 14.3-32 32z")),t.LeftCircleFill=u("left-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm104 316.9c0 10.2-4.9 19.9-13.2 25.9L457.4 512l145.4 105.2c8.3 6 13.2 15.6 13.2 25.9V690c0 6.5-7.4 10.3-12.7 6.5l-246-178a7.95 7.95 0 0 1 0-12.9l246-178a8 8 0 0 1 12.7 6.5v46.8z")),t.LeftSquareFill=u("left-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM624 380.9c0 10.2-4.9 19.9-13.2 25.9L465.4 512l145.4 105.2c8.3 6 13.2 15.6 13.2 25.9V690c0 6.5-7.4 10.3-12.7 6.5l-246-178a7.95 7.95 0 0 1 0-12.9l246-178c5.3-3.8 12.7 0 12.7 6.5v46.8z")),t.LikeFill=u("like",a,l(o,"M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 0 0-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 0 0 471 99.9c-52 0-98 35-111.8 85.1l-85.9 311h-.3v428h472.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM112 528v364c0 17.7 14.3 32 32 32h65V496h-65c-17.7 0-32 14.3-32 32z")),t.LockFill=u("lock",a,l(o,"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM540 701v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 1 1 56 0zm152-237H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224z")),t.LinkedinFill=u("linkedin",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM349.3 793.7H230.6V411.9h118.7v381.8zm-59.3-434a68.8 68.8 0 1 1 68.8-68.8c-.1 38-30.9 68.8-68.8 68.8zm503.7 434H675.1V608c0-44.3-.8-101.2-61.7-101.2-61.7 0-71.2 48.2-71.2 98v188.9H423.7V411.9h113.8v52.2h1.6c15.8-30 54.5-61.7 112.3-61.7 120.2 0 142.3 79.1 142.3 181.9v209.4z")),t.MailFill=u("mail",a,l(o,"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-80.8 108.9L531.7 514.4c-7.8 6.1-18.7 6.1-26.5 0L189.6 268.9A7.2 7.2 0 0 1 194 256h648.8a7.2 7.2 0 0 1 4.4 12.9z")),t.MedicineBoxFill=u("medicine-box",a,l(o,"M839.2 278.1a32 32 0 0 0-30.4-22.1H736V144c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32v112h-72.8a31.9 31.9 0 0 0-30.4 22.1L112 502v378c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V502l-72.8-223.9zM660 628c0 4.4-3.6 8-8 8H544v108c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V636H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108V464c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v108h108c4.4 0 8 3.6 8 8v48zm4-372H360v-72h304v72z")),t.MediumCircleFill=u("medium-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm256 253.7l-40.8 39.1c-3.6 2.7-5.3 7.1-4.6 11.4v287.7c-.7 4.4 1 8.8 4.6 11.4l40 39.1v8.7H566.4v-8.3l41.3-40.1c4.1-4.1 4.1-5.3 4.1-11.4V422.5l-115 291.6h-15.5L347.5 422.5V618c-1.2 8.2 1.7 16.5 7.5 22.4l53.8 65.1v8.7H256v-8.7l53.8-65.1a26.1 26.1 0 0 0 7-22.4V392c.7-6.3-1.7-12.4-6.5-16.7l-47.8-57.6V309H411l114.6 251.5 100.9-251.3H768v8.5z")),t.MediumSquareFill=u("medium-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM768 317.7l-40.8 39.1c-3.6 2.7-5.3 7.1-4.6 11.4v287.7c-.7 4.4 1 8.8 4.6 11.4l40 39.1v8.7H566.4v-8.3l41.3-40.1c4.1-4.1 4.1-5.3 4.1-11.4V422.5l-115 291.6h-15.5L347.5 422.5V618c-1.2 8.2 1.7 16.5 7.5 22.4l53.8 65.1v8.7H256v-8.7l53.8-65.1a26.1 26.1 0 0 0 7-22.4V392c.7-6.3-1.7-12.4-6.5-16.7l-47.8-57.6V309H411l114.6 251.5 100.9-251.3H768v8.5z")),t.MehFill=u("meh",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm384 200c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v48zm16-152a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")),t.MessageFill=u("message",a,l(o,"M924.3 338.4a447.57 447.57 0 0 0-96.1-143.3 443.09 443.09 0 0 0-143-96.3A443.91 443.91 0 0 0 512 64h-2c-60.5.3-119 12.3-174.1 35.9a444.08 444.08 0 0 0-141.7 96.5 445 445 0 0 0-95 142.8A449.89 449.89 0 0 0 65 514.1c.3 69.4 16.9 138.3 47.9 199.9v152c0 25.4 20.6 46 45.9 46h151.8a447.72 447.72 0 0 0 199.5 48h2.1c59.8 0 117.7-11.6 172.3-34.3A443.2 443.2 0 0 0 827 830.5c41.2-40.9 73.6-88.7 96.3-142 23.5-55.2 35.5-113.9 35.8-174.5.2-60.9-11.6-120-34.8-175.6zM312.4 560c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.4 48-47.9 48zm199.6 0c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.5 48-47.9 48zm199.6 0c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.5 48-47.9 48z")),t.MinusCircleFill=u("minus-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm192 472c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z")),t.MinusSquareFill=u("minus-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM704 536c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z")),t.MobileFill=u("mobile",a,l(o,"M744 62H280c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h464c35.3 0 64-28.7 64-64V126c0-35.3-28.7-64-64-64zM512 824c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z")),t.MoneyCollectFill=u("money-collect",a,l(o,"M911.5 699.7a8 8 0 0 0-10.3-4.8L840 717.2V179c0-37.6-30.4-68-68-68H252c-37.6 0-68 30.4-68 68v538.2l-61.3-22.3c-.9-.3-1.8-.5-2.7-.5-4.4 0-8 3.6-8 8V762c0 3.3 2.1 6.3 5.3 7.5L501 909.1c7.1 2.6 14.8 2.6 21.9 0l383.8-139.5c3.2-1.2 5.3-4.2 5.3-7.5v-59.6c0-1-.2-1.9-.5-2.8zm-243.8-377L564 514.3h57.6c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3v39h76.3c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3V703c0 4.4-3.6 8-8 8h-49.9c-4.4 0-8-3.6-8-8v-63.4h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h76v-39h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h57L356.5 322.8c-2.1-3.8-.7-8.7 3.2-10.8 1.2-.7 2.5-1 3.8-1h55.7a8 8 0 0 1 7.1 4.4L511 484.2h3.3L599 315.4c1.3-2.7 4.1-4.4 7.1-4.4h54.5c4.4 0 8 3.6 8.1 7.9 0 1.3-.4 2.6-1 3.8z")),t.PauseCircleFill=u("pause-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-80 600c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm224 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z")),t.PayCircleFill=u("pay-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm166.6 246.8L567.5 515.6h62c4.4 0 8 3.6 8 8v29.9c0 4.4-3.6 8-8 8h-82V603h82c4.4 0 8 3.6 8 8v29.9c0 4.4-3.6 8-8 8h-82V717c0 4.4-3.6 8-8 8h-54.3c-4.4 0-8-3.6-8-8v-68.1h-81.7c-4.4 0-8-3.6-8-8V611c0-4.4 3.6-8 8-8h81.7v-41.5h-81.7c-4.4 0-8-3.6-8-8v-29.9c0-4.4 3.6-8 8-8h61.4L345.4 310.8a8.07 8.07 0 0 1 7-11.9h60.7c3 0 5.8 1.7 7.1 4.4l90.6 180h3.4l90.6-180a8 8 0 0 1 7.1-4.4h59.5c4.4 0 8 3.6 8 8 .2 1.4-.2 2.7-.8 3.9z")),t.NotificationFill=u("notification",a,l(o,"M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.6c-3.7 11.6-5.6 23.9-5.6 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1z")),t.PhoneFill=u("phone",a,l(o,"M885.6 230.2L779.1 123.8a80.83 80.83 0 0 0-57.3-23.8c-21.7 0-42.1 8.5-57.4 23.8L549.8 238.4a80.83 80.83 0 0 0-23.8 57.3c0 21.7 8.5 42.1 23.8 57.4l83.8 83.8A393.82 393.82 0 0 1 553.1 553 395.34 395.34 0 0 1 437 633.8L353.2 550a80.83 80.83 0 0 0-57.3-23.8c-21.7 0-42.1 8.5-57.4 23.8L123.8 664.5a80.89 80.89 0 0 0-23.8 57.4c0 21.7 8.5 42.1 23.8 57.4l106.3 106.3c24.4 24.5 58.1 38.4 92.7 38.4 7.3 0 14.3-.6 21.2-1.8 134.8-22.2 268.5-93.9 376.4-201.7C828.2 612.8 899.8 479.2 922.3 344c6.8-41.3-6.9-83.8-36.7-113.8z")),t.PictureFill=u("picture",a,l(o,"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zM338 304c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm513.9 437.1a8.11 8.11 0 0 1-5.2 1.9H177.2c-4.4 0-8-3.6-8-8 0-1.9.7-3.7 1.9-5.2l170.3-202c2.8-3.4 7.9-3.8 11.3-1 .3.3.7.6 1 1l99.4 118 158.1-187.5c2.8-3.4 7.9-3.8 11.3-1 .3.3.7.6 1 1l229.6 271.6c2.6 3.3 2.2 8.4-1.2 11.2z")),t.PieChartFill=u("pie-chart",a,l(o,"M863.1 518.5H505.5V160.9c0-4.4-3.6-8-8-8h-26a398.57 398.57 0 0 0-282.5 117 397.47 397.47 0 0 0-85.6 127C82.6 446.2 72 498.5 72 552.5S82.6 658.7 103.4 708c20.1 47.5 48.9 90.3 85.6 127 36.7 36.7 79.4 65.5 127 85.6a396.64 396.64 0 0 0 155.6 31.5 398.57 398.57 0 0 0 282.5-117c36.7-36.7 65.5-79.4 85.6-127a396.64 396.64 0 0 0 31.5-155.6v-26c-.1-4.4-3.7-8-8.1-8zM951 463l-2.6-28.2c-8.5-92-49.3-178.8-115.1-244.3A398.5 398.5 0 0 0 588.4 75.6L560.1 73c-4.7-.4-8.7 3.2-8.7 7.9v383.7c0 4.4 3.6 8 8 8l383.6-1c4.7-.1 8.4-4 8-8.6z")),t.PlayCircleFill=u("play-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm144.1 454.9L437.7 677.8a8.02 8.02 0 0 1-12.7-6.5V353.7a8 8 0 0 1 12.7-6.5L656.1 506a7.9 7.9 0 0 1 0 12.9z")),t.PlaySquareFill=u("play-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM641.7 520.8L442.3 677.6c-7.4 5.8-18.3.6-18.3-8.8V355.3c0-9.4 10.9-14.7 18.3-8.8l199.4 156.7a11.2 11.2 0 0 1 0 17.6z")),t.PlusCircleFill=u("plus-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm192 472c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48z")),t.PlusSquareFill=u("plus-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM704 536c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48z")),t.PoundCircleFill=u("pound-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm146 658c0 4.4-3.6 8-8 8H376.2c-4.4 0-8-3.6-8-8v-38.5c0-3.7 2.5-6.9 6.1-7.8 44-10.9 72.8-49 72.8-94.2 0-14.7-2.5-29.4-5.9-44.2H374c-4.4 0-8-3.6-8-8v-30c0-4.4 3.6-8 8-8h53.7c-7.8-25.1-14.6-50.7-14.6-77.1 0-75.8 58.6-120.3 151.5-120.3 26.5 0 51.4 5.5 70.3 12.7 3.1 1.2 5.2 4.2 5.2 7.5v39.5a8 8 0 0 1-10.6 7.6c-17.9-6.4-39-10.5-60.4-10.5-53.3 0-87.3 26.6-87.3 70.2 0 24.7 6.2 47.9 13.4 70.5h112c4.4 0 8 3.6 8 8v30c0 4.4-3.6 8-8 8h-98.6c3.1 13.2 5.3 26.9 5.3 41 0 40.7-16.5 73.9-43.9 91.1v4.7h180c4.4 0 8 3.6 8 8V722z")),t.PrinterFill=u("printer",a,l(o,"M732 120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v148h440V120zm120 212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM664 844H360V568h304v276zm164-360c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v40z")),t.ProfileFill=u("profile",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM380 696c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm0-144c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm0-144c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm304 272c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-144c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-144c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48z")),t.ProjectFill=u("project",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM368 744c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v464zm192-280c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v184zm192 72c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v256z")),t.PushpinFill=u("pushpin",a,l(o,"M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3-15.4 12.3-16.6 35.4-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8z")),t.PropertySafetyFill=u("property-safety",a,l(o,"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM648.3 332.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V658c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3 73.2-144.3a10 10 0 0 1 8.9-5.5h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8z")),t.QqCircleFill=u("qq-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm210.5 612.4c-11.5 1.4-44.9-52.7-44.9-52.7 0 31.3-16.2 72.2-51.1 101.8 16.9 5.2 54.9 19.2 45.9 34.4-7.3 12.3-125.6 7.9-159.8 4-34.2 3.8-152.5 8.3-159.8-4-9.1-15.2 28.9-29.2 45.8-34.4-35-29.5-51.1-70.4-51.1-101.8 0 0-33.4 54.1-44.9 52.7-5.4-.7-12.4-29.6 9.4-99.7 10.3-33 22-60.5 40.2-105.8-3.1-116.9 45.3-215 160.4-215 113.9 0 163.3 96.1 160.4 215 18.1 45.2 29.9 72.8 40.2 105.8 21.7 70.1 14.6 99.1 9.3 99.7z")),t.QqSquareFill=u("qq-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM722.5 676.4c-11.5 1.4-44.9-52.7-44.9-52.7 0 31.3-16.2 72.2-51.1 101.8 16.9 5.2 54.9 19.2 45.9 34.4-7.3 12.3-125.6 7.9-159.8 4-34.2 3.8-152.5 8.3-159.8-4-9.1-15.2 28.9-29.2 45.8-34.4-35-29.5-51.1-70.4-51.1-101.8 0 0-33.4 54.1-44.9 52.7-5.4-.7-12.4-29.6 9.4-99.7 10.3-33 22-60.5 40.2-105.8-3.1-116.9 45.3-215 160.4-215 113.9 0 163.3 96.1 160.4 215 18.1 45.2 29.9 72.8 40.2 105.8 21.7 70.1 14.6 99.1 9.3 99.7z")),t.QuestionCircleFill=u("question-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 708c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm62.9-219.5a48.3 48.3 0 0 0-30.9 44.8V620c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-21.5c0-23.1 6.7-45.9 19.9-64.9 12.9-18.6 30.9-32.8 52.1-40.9 34-13.1 56-41.6 56-72.7 0-44.1-43.1-80-96-80s-96 35.9-96 80v7.6c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V420c0-39.3 17.2-76 48.4-103.3C430.4 290.4 470 276 512 276s81.6 14.5 111.6 40.7C654.8 344 672 380.7 672 420c0 57.8-38.1 109.8-97.1 132.5z")),t.ReadFill=u("read",a,l(o,"M928 161H699.2c-49.1 0-97.1 14.1-138.4 40.7L512 233l-48.8-31.3A255.2 255.2 0 0 0 324.8 161H96c-17.7 0-32 14.3-32 32v568c0 17.7 14.3 32 32 32h228.8c49.1 0 97.1 14.1 138.4 40.7l44.4 28.6c1.3.8 2.8 1.3 4.3 1.3s3-.4 4.3-1.3l44.4-28.6C602 807.1 650.1 793 699.2 793H928c17.7 0 32-14.3 32-32V193c0-17.7-14.3-32-32-32zM404 553.5c0 4.1-3.2 7.5-7.1 7.5H211.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45zm0-140c0 4.1-3.2 7.5-7.1 7.5H211.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45zm416 140c0 4.1-3.2 7.5-7.1 7.5H627.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45zm0-140c0 4.1-3.2 7.5-7.1 7.5H627.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45z")),t.ReconciliationFill=u("reconciliation",a,l(o,"M676 623c-18.8 0-34 15.2-34 34s15.2 34 34 34 34-15.2 34-34-15.2-34-34-34zm204-455H668c0-30.9-25.1-56-56-56h-80c-30.9 0-56 25.1-56 56H264c-17.7 0-32 14.3-32 32v200h-88c-17.7 0-32 14.3-32 32v448c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-16h368c17.7 0 32-14.3 32-32V200c0-17.7-14.3-32-32-32zM448 848H176V616h272v232zm0-296H176v-88h272v88zm20-272v-48h72v-56h64v56h72v48H468zm180 168v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8zm28 301c-50.8 0-92-41.2-92-92s41.2-92 92-92 92 41.2 92 92-41.2 92-92 92zm92-245c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v96zm-92 61c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 126c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34z")),t.RedEnvelopeFill=u("red-envelope",a,l(o,"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zM647 470.4l-87.2 161h45.9c4.6 0 8.4 3.8 8.4 8.4v25.1c0 4.6-3.8 8.4-8.4 8.4h-63.3v28.6h63.3c4.6 0 8.4 3.8 8.4 8.4v25c.2 4.6-3.6 8.5-8.2 8.5h-63.3v49.9c0 4.6-3.8 8.4-8.4 8.4h-43.7c-4.6 0-8.4-3.8-8.4-8.4v-49.9h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h63v-28.6h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h45.4l-87.5-161c-2.2-4.1-.7-9.1 3.4-11.4 1.3-.6 2.6-1 3.9-1h48.8c3.2 0 6.1 1.8 7.5 4.6l71.9 141.8 71.9-141.9a8.5 8.5 0 0 1 7.5-4.6h47.8c4.6 0 8.4 3.8 8.4 8.4-.1 1.5-.5 2.9-1.1 4.1zM512.6 323L289 148h446L512.6 323z")),t.RedditCircleFill=u("reddit-circle",a,l(o,"M584 548a36 36 0 1 0 72 0 36 36 0 1 0-72 0zm144-108a35.9 35.9 0 0 0-32.5 20.6c18.8 14.3 34.4 30.7 45.9 48.8A35.98 35.98 0 0 0 728 440zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm245 477.9c4.6 13.5 7 27.6 7 42.1 0 99.4-112.8 180-252 180s-252-80.6-252-180c0-14.5 2.4-28.6 7-42.1A72.01 72.01 0 0 1 296 404c27.1 0 50.6 14.9 62.9 37 36.2-19.8 80.2-32.8 128.1-36.1l58.4-131.1c4.3-9.8 15.2-14.8 25.5-11.8l91.6 26.5a54.03 54.03 0 0 1 101.6 25.6c0 29.8-24.2 54-54 54-23.5 0-43.5-15.1-50.9-36.1L577 308.3l-43 96.5c49.1 3 94.2 16.1 131.2 36.3 12.3-22.1 35.8-37 62.9-37 39.8 0 72 32.2 72 72-.1 29.3-17.8 54.6-43.1 65.8zm-171.3 83c-14.9 11.7-44.3 24.3-73.7 24.3s-58.9-12.6-73.7-24.3c-9.3-7.3-22.7-5.7-30 3.6-7.3 9.3-5.7 22.7 3.6 30 25.7 20.4 65 33.5 100.1 33.5 35.1 0 74.4-13.1 100.2-33.5 9.3-7.3 10.9-20.8 3.6-30a21.46 21.46 0 0 0-30.1-3.6zM296 440a35.98 35.98 0 0 0-13.4 69.4c11.5-18.1 27.1-34.5 45.9-48.8A35.9 35.9 0 0 0 296 440zm72 108a36 36 0 1 0 72 0 36 36 0 1 0-72 0z")),t.RedditSquareFill=u("reddit-square",a,l(o,"M296 440a35.98 35.98 0 0 0-13.4 69.4c11.5-18.1 27.1-34.5 45.9-48.8A35.9 35.9 0 0 0 296 440zm289.7 184.9c-14.9 11.7-44.3 24.3-73.7 24.3s-58.9-12.6-73.7-24.3c-9.3-7.3-22.7-5.7-30 3.6-7.3 9.3-5.7 22.7 3.6 30 25.7 20.4 65 33.5 100.1 33.5 35.1 0 74.4-13.1 100.2-33.5 9.3-7.3 10.9-20.8 3.6-30a21.46 21.46 0 0 0-30.1-3.6zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM757 541.9c4.6 13.5 7 27.6 7 42.1 0 99.4-112.8 180-252 180s-252-80.6-252-180c0-14.5 2.4-28.6 7-42.1A72.01 72.01 0 0 1 296 404c27.1 0 50.6 14.9 62.9 37 36.2-19.8 80.2-32.8 128.1-36.1l58.4-131.1c4.3-9.8 15.2-14.8 25.5-11.8l91.6 26.5a54.03 54.03 0 0 1 101.6 25.6c0 29.8-24.2 54-54 54-23.5 0-43.5-15.1-50.9-36.1L577 308.3l-43 96.5c49.1 3 94.2 16.1 131.2 36.3 12.3-22.1 35.8-37 62.9-37 39.8 0 72 32.2 72 72-.1 29.3-17.8 54.6-43.1 65.8zM584 548a36 36 0 1 0 72 0 36 36 0 1 0-72 0zm144-108a35.9 35.9 0 0 0-32.5 20.6c18.8 14.3 34.4 30.7 45.9 48.8A35.98 35.98 0 0 0 728 440zM368 548a36 36 0 1 0 72 0 36 36 0 1 0-72 0z")),t.RestFill=u("rest",a,l(o,"M832 256h-28.1l-35.7-120.9c-4-13.7-16.5-23.1-30.7-23.1h-451c-14.3 0-26.8 9.4-30.7 23.1L220.1 256H192c-17.7 0-32 14.3-32 32v28c0 4.4 3.6 8 8 8h45.8l47.7 558.7a32 32 0 0 0 31.9 29.3h429.2a32 32 0 0 0 31.9-29.3L802.2 324H856c4.4 0 8-3.6 8-8v-28c0-17.7-14.3-32-32-32zM508 704c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144zM291 256l22.4-76h397.2l22.4 76H291zm137 304a80 80 0 1 0 160 0 80 80 0 1 0-160 0z")),t.RightCircleFill=u("right-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm154.7 454.5l-246 178c-5.3 3.8-12.7 0-12.7-6.5v-46.9c0-10.2 4.9-19.9 13.2-25.9L566.6 512 421.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.8 0 13z")),t.RocketFill=u("rocket",a,l(o,"M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 0 0-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0 0 43.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0 0 43.1-30.5 97.52 97.52 0 0 0 21.4-60.8c0-8.4-1.1-16.4-3.1-23.8L864 736zM512 352a48.01 48.01 0 0 1 0 96 48.01 48.01 0 0 1 0-96zm116.1 432.2c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5s-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 0 1-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5z")),t.RightSquareFill=u("right-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM658.7 518.5l-246 178c-5.3 3.8-12.7 0-12.7-6.5v-46.9c0-10.2 4.9-19.9 13.2-25.9L558.6 512 413.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.8 0 13z")),t.SafetyCertificateFill=u("safety-certificate",a,l(o,"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM694.5 340.7L481.9 633.4a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.1 0 10 2.5 13 6.6l64.7 89 150.9-207.8c3-4.1 7.8-6.6 13-6.6H688c6.5.1 10.3 7.5 6.5 12.8z")),t.SaveFill=u("save",a,l(o,"M893.3 293.3L730.7 130.7c-12-12-28.3-18.7-45.3-18.7H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 176h256v112H384V176zm128 554c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144zm0-224c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80z")),t.ScheduleFill=u("schedule",a,l(o,"M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zM424 688c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-136c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm374.5-91.3l-165 228.7a15.9 15.9 0 0 1-25.8 0L493.5 531.2c-3.8-5.3 0-12.7 6.5-12.7h54.9c5.1 0 9.9 2.5 12.9 6.6l52.8 73.1 103.7-143.7c3-4.2 7.8-6.6 12.9-6.6H792c6.5.1 10.3 7.5 6.5 12.8z")),t.SecurityScanFill=u("security-scan",a,l(o,"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM626.8 554c-48.5 48.5-123 55.2-178.6 20.1l-77.5 77.5a8.03 8.03 0 0 1-11.3 0l-34-34a8.03 8.03 0 0 1 0-11.3l77.5-77.5c-35.1-55.7-28.4-130.1 20.1-178.6 56.3-56.3 147.5-56.3 203.8 0 56.3 56.3 56.3 147.5 0 203.8zm-158.54-45.27a80.1 80.1 0 1 0 113.27-113.28 80.1 80.1 0 1 0-113.27 113.28z")),t.SettingFill=u("setting",a,l(o,"M512.5 390.6c-29.9 0-57.9 11.6-79.1 32.8-21.1 21.2-32.8 49.2-32.8 79.1 0 29.9 11.7 57.9 32.8 79.1 21.2 21.1 49.2 32.8 79.1 32.8 29.9 0 57.9-11.7 79.1-32.8 21.1-21.2 32.8-49.2 32.8-79.1 0-29.9-11.7-57.9-32.8-79.1a110.96 110.96 0 0 0-79.1-32.8zm412.3 235.5l-65.4-55.9c3.1-19 4.7-38.4 4.7-57.7s-1.6-38.8-4.7-57.7l65.4-55.9a32.03 32.03 0 0 0 9.3-35.2l-.9-2.6a442.5 442.5 0 0 0-79.6-137.7l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.2 28.9c-30-24.6-63.4-44-99.6-57.5l-15.7-84.9a32.05 32.05 0 0 0-25.8-25.7l-2.7-.5c-52-9.4-106.8-9.4-158.8 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.3a353.44 353.44 0 0 0-98.9 57.3l-81.8-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a445.93 445.93 0 0 0-79.6 137.7l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.2 56.5c-3.1 18.8-4.6 38-4.6 57 0 19.2 1.5 38.4 4.6 57l-66 56.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.3 44.8 96.8 79.6 137.7l1.8 2.1a32.12 32.12 0 0 0 35.1 9.5l81.8-29.1c29.8 24.5 63 43.9 98.9 57.3l15.8 85.3a32.05 32.05 0 0 0 25.8 25.7l2.7.5a448.27 448.27 0 0 0 158.8 0l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-84.9c36.2-13.6 69.6-32.9 99.6-57.5l81.2 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.5-87.4 79.6-137.7l.9-2.6c4.3-12.4.6-26.3-9.5-35zm-412.3 52.2c-97.1 0-175.8-78.7-175.8-175.8s78.7-175.8 175.8-175.8 175.8 78.7 175.8 175.8-78.7 175.8-175.8 175.8z")),t.ShopFill=u("shop",a,l(o,"M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0 0 14.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h274V736h128v176h274c17.7 0 32-14.3 32-32V535a175 175 0 0 0 15.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zm-72 568H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 3-1.3 6-2.6 9-4v242.2zm0-568.1H214v-88h596v88z")),t.ShoppingFill=u("shopping",a,l(o,"M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-208 0H400v-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16z")),t.SketchCircleFill=u("sketch-circle",a,l(o,"M582.3 625.6l147.9-166.3h-63.4zm90-202.3h62.5l-92.1-115.1zm-274.7 36L512 684.5l114.4-225.2zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm286.7 380.2L515.8 762.3c-1 1.1-2.4 1.7-3.8 1.7s-2.8-.6-3.8-1.7L225.3 444.2a5.14 5.14 0 0 1-.2-6.6L365.6 262c1-1.2 2.4-1.9 4-1.9h284.6c1.6 0 3 .7 4 1.9l140.5 175.6a4.9 4.9 0 0 1 0 6.6zm-190.5-20.9L512 326.1l-96.2 97.2zM420.3 301.1l-23.1 89.8 88.8-89.8zm183.4 0H538l88.8 89.8zm-222.4 7.1l-92.1 115.1h62.5zm-87.5 151.1l147.9 166.3-84.5-166.3z")),t.SketchSquareFill=u("sketch-square",a,l(o,"M608.2 423.3L512 326.1l-96.2 97.2zm-25.9 202.3l147.9-166.3h-63.4zm90-202.3h62.5l-92.1-115.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-81.3 332.2L515.8 762.3c-1 1.1-2.4 1.7-3.8 1.7s-2.8-.6-3.8-1.7L225.3 444.2a5.14 5.14 0 0 1-.2-6.6L365.6 262c1-1.2 2.4-1.9 4-1.9h284.6c1.6 0 3 .7 4 1.9l140.5 175.6a4.9 4.9 0 0 1 0 6.6zm-401.1 15.1L512 684.5l114.4-225.2zm-16.3-151.1l-92.1 115.1h62.5zm-87.5 151.1l147.9 166.3-84.5-166.3zm126.5-158.2l-23.1 89.8 88.8-89.8zm183.4 0H538l88.8 89.8z")),t.SkinFill=u("skin",a,l(o,"M870 126H663.8c-17.4 0-32.9 11.9-37 29.3C614.3 208.1 567 246 512 246s-102.3-37.9-114.8-90.7a37.93 37.93 0 0 0-37-29.3H154a44 44 0 0 0-44 44v252a44 44 0 0 0 44 44h75v388a44 44 0 0 0 44 44h478a44 44 0 0 0 44-44V466h75a44 44 0 0 0 44-44V170a44 44 0 0 0-44-44z")),t.SlackCircleFill=u("slack-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM361.5 580.2c0 27.8-22.5 50.4-50.3 50.4a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h50.3v50.4zm134 134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V580.2c0-27.8 22.5-50.4 50.3-50.4a50.35 50.35 0 0 1 50.3 50.4v134.4zm-50.2-218.4h-134c-27.8 0-50.3-22.6-50.3-50.4 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4-.1 27.9-22.6 50.4-50.3 50.4zm0-134.4c-13.3 0-26.1-5.3-35.6-14.8S395 324.8 395 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v50.4h-50.3zm83.7-50.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V311.4zM579.3 765c-27.8 0-50.3-22.6-50.3-50.4v-50.4h50.3c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm134-134.4h-134c-13.3 0-26.1-5.3-35.6-14.8S529 593.6 529 580.2c0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm0-134.4H663v-50.4c0-27.8 22.5-50.4 50.3-50.4s50.3 22.6 50.3 50.4c0 27.8-22.5 50.4-50.3 50.4z")),t.SlackSquareFill=u("slack-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM529 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V311.4zM361.5 580.2c0 27.8-22.5 50.4-50.3 50.4a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h50.3v50.4zm134 134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V580.2c0-27.8 22.5-50.4 50.3-50.4a50.35 50.35 0 0 1 50.3 50.4v134.4zm-50.2-218.4h-134c-27.8 0-50.3-22.6-50.3-50.4 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4-.1 27.9-22.6 50.4-50.3 50.4zm0-134.4c-13.3 0-26.1-5.3-35.6-14.8S395 324.8 395 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v50.4h-50.3zm134 403.2c-27.8 0-50.3-22.6-50.3-50.4v-50.4h50.3c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm134-134.4h-134a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm0-134.4H663v-50.4c0-27.8 22.5-50.4 50.3-50.4s50.3 22.6 50.3 50.4c0 27.8-22.5 50.4-50.3 50.4z")),t.SkypeFill=u("skype",a,l(o,"M883.7 578.6c4.1-22.5 6.3-45.5 6.3-68.5 0-51-10-100.5-29.7-147-19-45-46.3-85.4-81-120.1a375.79 375.79 0 0 0-120.1-80.9c-46.6-19.7-96-29.7-147-29.7-24 0-48.1 2.3-71.5 6.8A225.1 225.1 0 0 0 335.6 113c-59.7 0-115.9 23.3-158.1 65.5A222.25 222.25 0 0 0 112 336.6c0 38 9.8 75.4 28.1 108.4-3.7 21.4-5.7 43.3-5.7 65.1 0 51 10 100.5 29.7 147 19 45 46.2 85.4 80.9 120.1 34.7 34.7 75.1 61.9 120.1 80.9 46.6 19.7 96 29.7 147 29.7 22.2 0 44.4-2 66.2-5.9 33.5 18.9 71.3 29 110 29 59.7 0 115.9-23.2 158.1-65.5 42.3-42.2 65.5-98.4 65.5-158.1.1-38-9.7-75.5-28.2-108.7zm-370 162.9c-134.2 0-194.2-66-194.2-115.4 0-25.4 18.7-43.1 44.5-43.1 57.4 0 42.6 82.5 149.7 82.5 54.9 0 85.2-29.8 85.2-60.3 0-18.3-9-38.7-45.2-47.6l-119.4-29.8c-96.1-24.1-113.6-76.1-113.6-124.9 0-101.4 95.5-139.5 185.2-139.5 82.6 0 180 45.7 180 106.5 0 26.1-22.6 41.2-48.4 41.2-49 0-40-67.8-138.7-67.8-49 0-76.1 22.2-76.1 53.9s38.7 41.8 72.3 49.5l88.4 19.6c96.8 21.6 121.3 78.1 121.3 131.3 0 82.3-63.3 143.9-191 143.9z")),t.SlidersFill=u("sliders",a,l(o,"M904 296h-66v-96c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v96h-66c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8h66v96c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-96h66c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8zm-584-72h-66v-56c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v56h-66c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h66v56c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-56h66c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm292 180h-66V232c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v172h-66c-4.4 0-8 3.6-8 8v200c0 4.4 3.6 8 8 8h66v172c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V620h66c4.4 0 8-3.6 8-8V412c0-4.4-3.6-8-8-8z")),t.SmileFill=u("smile",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm224 272c-85.5 0-155.6-67.3-160-151.6a8 8 0 0 1 8-8.4h48.1c4.2 0 7.8 3.2 8.1 7.4C420 589.9 461.5 629 512 629s92.1-39.1 95.8-88.6c.3-4.2 3.9-7.4 8.1-7.4H664a8 8 0 0 1 8 8.4C667.6 625.7 597.5 693 512 693zm176-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")),t.SnippetsFill=u("snippets",a,l(o,"M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 486H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z")),t.SoundFill=u("sound",a,l(o,"M892.1 737.8l-110.3-63.7a15.9 15.9 0 0 0-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0 0 21.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM760 344a15.9 15.9 0 0 0 21.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 0 0-21.7-5.9L746 287.8a15.99 15.99 0 0 0-5.8 21.8L760 344zm174 132H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zM625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1z")),t.StarFill=u("star",a,l(o,"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 0 0 .6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0 0 46.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z")),t.StepBackwardFill=u("step-backward",a,l(r,"M347.6 528.95l383.2 301.02c14.25 11.2 35.2 1.1 35.2-16.95V210.97c0-18.05-20.95-28.14-35.2-16.94L347.6 495.05a21.53 21.53 0 0 0 0 33.9M330 864h-64a8 8 0 0 1-8-8V168a8 8 0 0 1 8-8h64a8 8 0 0 1 8 8v688a8 8 0 0 1-8 8")),t.StepForwardFill=u("step-forward",a,l(r,"M676.4 528.95L293.2 829.97c-14.25 11.2-35.2 1.1-35.2-16.95V210.97c0-18.05 20.95-28.14 35.2-16.94l383.2 301.02a21.53 21.53 0 0 1 0 33.9M694 864h64a8 8 0 0 0 8-8V168a8 8 0 0 0-8-8h-64a8 8 0 0 0-8 8v688a8 8 0 0 0 8 8")),t.StopFill=u("stop",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm234.8 736.5L223.5 277.2c16-19.7 34-37.7 53.7-53.7l523.3 523.3c-16 19.6-34 37.7-53.7 53.7z")),t.SwitcherFill=u("switcher",a,l(o,"M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zM596 606c0 4.4-3.6 8-8 8H308c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h280c4.4 0 8 3.6 8 8v48zm284-494H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32z")),t.TabletFill=u("tablet",a,l(o,"M800 64H224c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM512 824c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z")),t.TagFill=u("tag",a,l(o,"M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 0 0 0 14.1l363.8 363.8c1.9 1.9 4.4 2.9 7.1 2.9s5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM699 387c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z")),t.TagsFill=u("tags",a,l(o,"M483.2 790.3L861.4 412c1.7-1.7 2.5-4 2.3-6.3l-25.5-301.4c-.7-7.8-6.8-13.9-14.6-14.6L522.2 64.3c-2.3-.2-4.7.6-6.3 2.3L137.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c3.1 3.2 8.2 3.2 11.3 0zm122.7-533.4c18.7-18.7 49.1-18.7 67.9 0 18.7 18.7 18.7 49.1 0 67.9-18.7 18.7-49.1 18.7-67.9 0-18.7-18.7-18.7-49.1 0-67.9zm283.8 282.9l-39.6-39.5a8.03 8.03 0 0 0-11.3 0l-362 361.3-237.6-237a8.03 8.03 0 0 0-11.3 0l-39.6 39.5a8.03 8.03 0 0 0 0 11.3l243.2 242.8 39.6 39.5c3.1 3.1 8.2 3.1 11.3 0l407.3-406.6c3.1-3.1 3.1-8.2 0-11.3z")),t.TaobaoCircleFill=u("taobao-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM315.7 291.5c27.3 0 49.5 22.1 49.5 49.4s-22.1 49.4-49.5 49.4a49.4 49.4 0 1 1 0-98.8zM366.9 578c-13.6 42.3-10.2 26.7-64.4 144.5l-78.5-49s87.7-79.8 105.6-116.2c19.2-38.4-21.1-58.9-21.1-58.9l-60.2-37.5 32.7-50.2c45.4 33.7 48.7 36.6 79.2 67.2 23.8 23.9 20.7 56.8 6.7 100.1zm427.2 55c-15.3 143.8-202.4 90.3-202.4 90.3l10.2-41.1 43.3 9.3c80 5 72.3-64.9 72.3-64.9V423c.6-77.3-72.6-85.4-204.2-38.3l30.6 8.3c-2.5 9-12.5 23.2-25.2 38.6h176v35.6h-99.1v44.5h98.7v35.7h-98.7V622c14.9-4.8 28.6-11.5 40.5-20.5l-8.7-32.5 46.5-14.4 38.8 94.9-57.3 23.9-10.2-37.8c-25.6 19.5-78.8 48-171.8 45.4-99.2 2.6-73.7-112-73.7-112l2.5-1.3H472c-.5 14.7-6.6 38.7 1.7 51.8 6.8 10.8 24.2 12.6 35.3 13.1 1.3.1 2.6.1 3.9.1v-85.3h-101v-35.7h101v-44.5H487c-22.7 24.1-43.5 44.1-43.5 44.1l-30.6-26.7c21.7-22.9 43.3-59.1 56.8-83.2-10.9 4.4-22 9.2-33.6 14.2-11.2 14.3-24.2 29-38.7 43.5.5.8-50-28.4-50-28.4 52.2-44.4 81.4-139.9 81.4-139.9l72.5 20.4s-5.9 14-18.4 35.6c290.3-82.3 307.4 50.5 307.4 50.5s19.1 91.8 3.8 235.7z")),t.TaobaoSquareFill=u("taobao-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM315.7 291.5c27.3 0 49.5 22.1 49.5 49.4s-22.1 49.4-49.5 49.4a49.4 49.4 0 1 1 0-98.8zM366.9 578c-13.6 42.3-10.2 26.7-64.4 144.5l-78.5-49s87.7-79.8 105.6-116.2c19.2-38.4-21.1-58.9-21.1-58.9l-60.2-37.5 32.7-50.2c45.4 33.7 48.7 36.6 79.2 67.2 23.8 23.9 20.7 56.8 6.7 100.1zm427.2 55c-15.3 143.8-202.4 90.3-202.4 90.3l10.2-41.1 43.3 9.3c80 5 72.3-64.9 72.3-64.9V423c.6-77.3-72.6-85.4-204.2-38.3l30.6 8.3c-2.5 9-12.5 23.2-25.2 38.6h176v35.6h-99.1v44.5h98.7v35.7h-98.7V622c14.9-4.8 28.6-11.5 40.5-20.5l-8.7-32.5 46.5-14.4 38.8 94.9-57.3 23.9-10.2-37.8c-25.6 19.5-78.8 48-171.8 45.4-99.2 2.6-73.7-112-73.7-112l2.5-1.3H472c-.5 14.7-6.6 38.7 1.7 51.8 6.8 10.8 24.2 12.6 35.3 13.1 1.3.1 2.6.1 3.9.1v-85.3h-101v-35.7h101v-44.5H487c-22.7 24.1-43.5 44.1-43.5 44.1l-30.6-26.7c21.7-22.9 43.3-59.1 56.8-83.2-10.9 4.4-22 9.2-33.6 14.2-11.2 14.3-24.2 29-38.7 43.5.5.8-50-28.4-50-28.4 52.2-44.4 81.4-139.9 81.4-139.9l72.5 20.4s-5.9 14-18.4 35.6c290.3-82.3 307.4 50.5 307.4 50.5s19.1 91.8 3.8 235.7z")),t.ToolFill=u("tool",a,l(o,"M865.3 244.7c-.3-.3-61.1 59.8-182.1 180.6l-84.9-84.9 180.9-180.9c-95.2-57.3-217.5-42.6-296.8 36.7A244.42 244.42 0 0 0 419 432l1.8 6.7-283.5 283.4c-6.2 6.2-6.2 16.4 0 22.6l141.4 141.4c6.2 6.2 16.4 6.2 22.6 0l283.3-283.3 6.7 1.8c83.7 22.3 173.6-.9 236-63.3 79.4-79.3 94.1-201.6 38-296.6z")),t.ThunderboltFill=u("thunderbolt",a,l(o,"M848 359.3H627.7L825.8 109c4.1-5.3.4-13-6.3-13H436c-2.8 0-5.5 1.5-6.9 4L170 547.5c-3.1 5.3.7 12 6.9 12h174.4l-89.4 357.6c-1.9 7.8 7.5 13.3 13.3 7.7L853.5 373c5.2-4.9 1.7-13.7-5.5-13.7z")),t.TrademarkCircleFill=u("trademark-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm164.7 660.2c-1.1.5-2.3.8-3.5.8h-62c-3.1 0-5.9-1.8-7.2-4.6l-74.6-159.2h-88.7V717c0 4.4-3.6 8-8 8H378c-4.4 0-8-3.6-8-8V307c0-4.4 3.6-8 8-8h155.6c98.8 0 144.2 59.9 144.2 131.1 0 70.2-43.6 106.4-78.4 119.2l80.8 164.2c2.1 3.9.4 8.7-3.5 10.7zM523.9 357h-83.4v148H522c53 0 82.8-25.6 82.8-72.4 0-50.3-32.9-75.6-80.9-75.6z")),t.TwitterCircleFill=u("twitter-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm215.3 337.7c.3 4.7.3 9.6.3 14.4 0 146.8-111.8 315.9-316.1 315.9-63 0-121.4-18.3-170.6-49.8 9 1 17.6 1.4 26.8 1.4 52 0 99.8-17.6 137.9-47.4-48.8-1-89.8-33-103.8-77 17.1 2.5 32.5 2.5 50.1-2a111 111 0 0 1-88.9-109v-1.4c14.7 8.3 32 13.4 50.1 14.1a111.13 111.13 0 0 1-49.5-92.4c0-20.7 5.4-39.6 15.1-56a315.28 315.28 0 0 0 229 116.1C492 353.1 548.4 292 616.2 292c32 0 60.8 13.4 81.1 35 25.1-4.7 49.1-14.1 70.5-26.7-8.3 25.7-25.7 47.4-48.8 61.1 22.4-2.4 44-8.6 64-17.3-15.1 22.2-34 41.9-55.7 57.6z")),t.TrophyFill=u("trophy",a,l(o,"M868 160h-92v-40c0-4.4-3.6-8-8-8H256c-4.4 0-8 3.6-8 8v40h-92a44 44 0 0 0-44 44v148c0 81.7 60 149.6 138.2 162C265.6 630.2 359 721.8 476 734.5v105.2H280c-17.7 0-32 14.3-32 32V904c0 4.4 3.6 8 8 8h512c4.4 0 8-3.6 8-8v-32.3c0-17.7-14.3-32-32-32H548V734.5C665 721.8 758.4 630.2 773.8 514 852 501.6 912 433.7 912 352V204a44 44 0 0 0-44-44zM248 439.6c-37.1-11.9-64-46.7-64-87.6V232h64v207.6zM840 352c0 41-26.9 75.8-64 87.6V232h64v120z")),t.TwitterSquareFill=u("twitter-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM727.3 401.7c.3 4.7.3 9.6.3 14.4 0 146.8-111.8 315.9-316.1 315.9-63 0-121.4-18.3-170.6-49.8 9 1 17.6 1.4 26.8 1.4 52 0 99.8-17.6 137.9-47.4-48.8-1-89.8-33-103.8-77 17.1 2.5 32.5 2.5 50.1-2a111 111 0 0 1-88.9-109v-1.4c14.7 8.3 32 13.4 50.1 14.1a111.13 111.13 0 0 1-49.5-92.4c0-20.7 5.4-39.6 15.1-56a315.28 315.28 0 0 0 229 116.1C492 353.1 548.4 292 616.2 292c32 0 60.8 13.4 81.1 35 25.1-4.7 49.1-14.1 70.5-26.7-8.3 25.7-25.7 47.4-48.8 61.1 22.4-2.4 44-8.6 64-17.3-15.1 22.2-34 41.9-55.7 57.6z")),t.UnlockFill=u("unlock",a,l(o,"M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM540 701v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 1 1 56 0z")),t.UpCircleFill=u("up-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm178 555h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 460.4 406.8 605.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7z")),t.UpSquareFill=u("up-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM690 624h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 465.4 406.8 610.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7z")),t.UsbFill=u("usb",a,l(o,"M408 312h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm352 120V144c0-17.7-14.3-32-32-32H296c-17.7 0-32 14.3-32 32v288c-66.2 0-120 52.1-120 116v356c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8V548c0-63.9-53.8-116-120-116zm-72 0H336V184h352v248zM568 312h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z")),t.WalletFill=u("wallet",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-32 464H528V448h320v128zm-268-64a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")),t.VideoCameraFill=u("video-camera",a,l(o,"M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM328 352c0 4.4-3.6 8-8 8H208c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h112c4.4 0 8 3.6 8 8v48zm560 273l-104-59.8V458.9L888 399v226z")),t.WarningFill=u("warning",a,l(o,"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zM480 416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416zm32 352a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")),t.WeiboCircleFill=u("weibo-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-44.4 672C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-93-32.2c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zm34.9-14.5c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z")),t.WechatFill=u("wechat",a,l(o,"M690.1 377.4c5.9 0 11.8.2 17.6.5-24.4-128.7-158.3-227.1-319.9-227.1C209 150.8 64 271.4 64 420.2c0 81.1 43.6 154.2 111.9 203.6a21.5 21.5 0 0 1 9.1 17.6c0 2.4-.5 4.6-1.1 6.9-5.5 20.3-14.2 52.8-14.6 54.3-.7 2.6-1.7 5.2-1.7 7.9 0 5.9 4.8 10.8 10.8 10.8 2.3 0 4.2-.9 6.2-2l70.9-40.9c5.3-3.1 11-5 17.2-5 3.2 0 6.4.5 9.5 1.4 33.1 9.5 68.8 14.8 105.7 14.8 6 0 11.9-.1 17.8-.4-7.1-21-10.9-43.1-10.9-66 0-135.8 132.2-245.8 295.3-245.8zm-194.3-86.5c23.8 0 43.2 19.3 43.2 43.1s-19.3 43.1-43.2 43.1c-23.8 0-43.2-19.3-43.2-43.1s19.4-43.1 43.2-43.1zm-215.9 86.2c-23.8 0-43.2-19.3-43.2-43.1s19.3-43.1 43.2-43.1 43.2 19.3 43.2 43.1-19.4 43.1-43.2 43.1zm586.8 415.6c56.9-41.2 93.2-102 93.2-169.7 0-124-120.8-224.5-269.9-224.5-149 0-269.9 100.5-269.9 224.5S540.9 847.5 690 847.5c30.8 0 60.6-4.4 88.1-12.3 2.6-.8 5.2-1.2 7.9-1.2 5.2 0 9.9 1.6 14.3 4.1l59.1 34c1.7 1 3.3 1.7 5.2 1.7a9 9 0 0 0 6.4-2.6 9 9 0 0 0 2.6-6.4c0-2.2-.9-4.4-1.4-6.6-.3-1.2-7.6-28.3-12.2-45.3-.5-1.9-.9-3.8-.9-5.7.1-5.9 3.1-11.2 7.6-14.5zM600.2 587.2c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9c0 19.8-16.2 35.9-36 35.9zm179.9 0c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9a36.08 36.08 0 0 1-36 35.9z")),t.WindowsFill=u("windows",a,l(o,"M523.8 191.4v288.9h382V128.1zm0 642.2l382 62.2v-352h-382zM120.1 480.2H443V201.9l-322.9 53.5zm0 290.4L443 823.2V543.8H120.1z")),t.YahooFill=u("yahoo",a,l(o,"M937.3 231H824.7c-15.5 0-27.7 12.6-27.1 28.1l13.1 366h84.4l65.4-366.4c2.7-15.2-7.8-27.7-23.2-27.7zm-77.4 450.4h-14.1c-27.1 0-49.2 22.2-49.2 49.3v14.1c0 27.1 22.2 49.3 49.2 49.3h14.1c27.1 0 49.2-22.2 49.2-49.3v-14.1c0-27.1-22.2-49.3-49.2-49.3zM402.6 231C216.2 231 65 357 65 512.5S216.2 794 402.6 794s337.6-126 337.6-281.5S589.1 231 402.6 231zm225.2 225.2h-65.3L458.9 559.8v65.3h84.4v56.3H318.2v-56.3h84.4v-65.3L242.9 399.9h-37v-56.3h168.5v56.3h-37l93.4 93.5 28.1-28.1V400h168.8v56.2z")),t.WeiboSquareFill=u("weibo-square",a,l(o,"M433.6 595.1c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM467.6 736C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-58.1-46.7c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z")),t.YuqueFill=u("yuque",a,l(o,"M854.6 370.6c-9.9-39.4 9.9-102.2 73.4-124.4l-67.9-3.6s-25.7-90-143.6-98c-117.9-8.1-195-3-195-3s87.4 55.6 52.4 154.7c-25.6 52.5-65.8 95.6-108.8 144.7-1.3 1.3-2.5 2.6-3.5 3.7C319.4 605 96 860 96 860c245.9 64.4 410.7-6.3 508.2-91.1 20.5-.2 35.9-.3 46.3-.3 135.8 0 250.6-117.6 245.9-248.4-3.2-89.9-31.9-110.2-41.8-149.6z")),t.YoutubeFill=u("youtube",a,l(o,"M941.3 296.1a112.3 112.3 0 0 0-79.2-79.3C792.2 198 512 198 512 198s-280.2 0-350.1 18.7A112.12 112.12 0 0 0 82.7 296C64 366 64 512 64 512s0 146 18.7 215.9c10.3 38.6 40.7 69 79.2 79.3C231.8 826 512 826 512 826s280.2 0 350.1-18.8c38.6-10.3 68.9-40.7 79.2-79.3C960 658 960 512 960 512s0-146-18.7-215.9zM423 646V378l232 133-232 135z")),t.ZhihuSquareFill=u("zhihu-square",a,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM432.3 592.8l71 80.7c9.2 33-3.3 63.1-3.3 63.1l-95.7-111.9v-.1c-8.9 29-20.1 57.3-33.3 84.7-22.6 45.7-55.2 54.7-89.5 57.7-34.4 3-23.3-5.3-23.3-5.3 68-55.5 78-87.8 96.8-123.1 11.9-22.3 20.4-64.3 25.3-96.8H264.1s4.8-31.2 19.2-41.7h101.6c.6-15.3-1.3-102.8-2-131.4h-49.4c-9.2 45-41 56.7-48.1 60.1-7 3.4-23.6 7.1-21.1 0 2.6-7.1 27-46.2 43.2-110.7 16.3-64.6 63.9-62 63.9-62-12.8 22.5-22.4 73.6-22.4 73.6h159.7c10.1 0 10.6 39 10.6 39h-90.8c-.7 22.7-2.8 83.8-5 131.4H519s12.2 15.4 12.2 41.7h-110l-.1 1.5c-1.5 20.4-6.3 43.9-12.9 67.6l24.1-18.1zm335.5 116h-87.6l-69.5 46.6-16.4-46.6h-40.1V321.5h213.6v387.3zM408.2 611s0-.1 0 0zm216 94.3l56.8-38.1h45.6-.1V364.7H596.7v302.5h14.1z")),t.ZhihuCircleFill=u("zhihu-circle",a,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-90.7 477.8l-.1 1.5c-1.5 20.4-6.3 43.9-12.9 67.6l24-18.1 71 80.7c9.2 33-3.3 63.1-3.3 63.1l-95.7-111.9v-.1c-8.9 29-20.1 57.3-33.3 84.7-22.6 45.7-55.2 54.7-89.5 57.7-34.4 3-23.3-5.3-23.3-5.3 68-55.5 78-87.8 96.8-123.1 11.9-22.3 20.4-64.3 25.3-96.8H264.1s4.8-31.2 19.2-41.7h101.6c.6-15.3-1.3-102.8-2-131.4h-49.4c-9.2 45-41 56.7-48.1 60.1-7 3.4-23.6 7.1-21.1 0 2.6-7.1 27-46.2 43.2-110.7 16.3-64.6 63.9-62 63.9-62-12.8 22.5-22.4 73.6-22.4 73.6h159.7c10.1 0 10.6 39 10.6 39h-90.8c-.7 22.7-2.8 83.8-5 131.4H519s12.2 15.4 12.2 41.7H421.3zm346.5 167h-87.6l-69.5 46.6-16.4-46.6h-40.1V321.5h213.6v387.3zM408.2 611s0-.1 0 0zm216 94.3l56.8-38.1h45.6-.1V364.7H596.7v302.5h14.1z")),t.AccountBookOutline=u("account-book",i,l(o,"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584zM639.5 414h-45c-3 0-5.8 1.7-7.1 4.4L514 563.8h-2.8l-73.4-145.4a8 8 0 0 0-7.1-4.4h-46c-1.3 0-2.7.3-3.8 1-3.9 2.1-5.3 7-3.2 10.9l89.3 164h-48.6c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1v33.7h-65.1c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1V752c0 4.4 3.6 8 8 8h41.3c4.4 0 8-3.6 8-8v-53.8h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-65.4v-33.7h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-49.1l89.3-164.1c.6-1.2 1-2.5 1-3.8.1-4.4-3.4-8-7.9-8z")),t.AlertOutline=u("alert",i,l(o,"M193 796c0 17.7 14.3 32 32 32h574c17.7 0 32-14.3 32-32V563c0-176.2-142.8-319-319-319S193 386.8 193 563v233zm72-233c0-136.4 110.6-247 247-247s247 110.6 247 247v193H404V585c0-5.5-4.5-10-10-10h-44c-5.5 0-10 4.5-10 10v171h-75V563zm-48.1-252.5l39.6-39.6c3.1-3.1 3.1-8.2 0-11.3l-67.9-67.9a8.03 8.03 0 0 0-11.3 0l-39.6 39.6a8.03 8.03 0 0 0 0 11.3l67.9 67.9c3.1 3.1 8.1 3.1 11.3 0zm669.6-79.2l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-67.9 67.9a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l67.9-67.9c3.1-3.2 3.1-8.2 0-11.3zM832 892H192c-17.7 0-32 14.3-32 32v24c0 4.4 3.6 8 8 8h688c4.4 0 8-3.6 8-8v-24c0-17.7-14.3-32-32-32zM484 180h56c4.4 0 8-3.6 8-8V76c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v96c0 4.4 3.6 8 8 8z")),t.AlipayCircleOutline=u("alipay-circle",i,l(o,"M308.6 545.7c-19.8 2-57.1 10.7-77.4 28.6-61 53-24.5 150 99 150 71.8 0 143.5-45.7 199.8-119-80.2-38.9-148.1-66.8-221.4-59.6zm460.5 67c100.1 33.4 154.7 43 166.7 44.8A445.9 445.9 0 0 0 960 512c0-247.4-200.6-448-448-448S64 264.6 64 512s200.6 448 448 448c155.9 0 293.2-79.7 373.5-200.5-75.6-29.8-213.6-85-286.8-120.1-69.9 85.7-160.1 137.8-253.7 137.8-158.4 0-212.1-138.1-137.2-229 16.3-19.8 44.2-38.7 87.3-49.4 67.5-16.5 175 10.3 275.7 43.4 18.1-33.3 33.4-69.9 44.7-108.9H305.1V402h160v-56.2H271.3v-31.3h193.8v-80.1s0-13.5 13.7-13.5H557v93.6h191.7v31.3H557.1V402h156.4c-15 61.1-37.7 117.4-66.2 166.8 47.5 17.1 90.1 33.3 121.8 43.9z")),t.AliwangwangOutline=u("aliwangwang",i,l(o,"M868.2 377.4c-18.9-45.1-46.3-85.6-81.2-120.6a377.26 377.26 0 0 0-120.5-81.2A375.65 375.65 0 0 0 519 145.8c-41.9 0-82.9 6.7-121.9 20C306 123.3 200.8 120 170.6 120c-2.2 0-7.4 0-9.4.2-11.9.4-22.8 6.5-29.2 16.4-6.5 9.9-7.7 22.4-3.4 33.5l64.3 161.6a378.59 378.59 0 0 0-52.8 193.2c0 51.4 10 101 29.8 147.6 18.9 45 46.2 85.6 81.2 120.5 34.7 34.8 75.4 62.1 120.5 81.2C418.3 894 467.9 904 519 904c51.3 0 100.9-10.1 147.7-29.8 44.9-18.9 85.5-46.3 120.4-81.2 34.7-34.8 62.1-75.4 81.2-120.6a376.5 376.5 0 0 0 29.8-147.6c-.2-51.2-10.1-100.8-29.9-147.4zm-66.4 266.5a307.08 307.08 0 0 1-65.9 98c-28.4 28.5-61.3 50.7-97.7 65.9h-.1c-38 16-78.3 24.2-119.9 24.2a306.51 306.51 0 0 1-217.5-90.2c-28.4-28.5-50.6-61.4-65.8-97.8v-.1c-16-37.8-24.1-78.2-24.1-119.9 0-55.4 14.8-109.7 42.8-157l13.2-22.1-9.5-23.9L206 192c14.9.6 35.9 2.1 59.7 5.6 43.8 6.5 82.5 17.5 114.9 32.6l19 8.9 19.9-6.8c31.5-10.8 64.8-16.2 98.9-16.2a306.51 306.51 0 0 1 217.5 90.2c28.4 28.5 50.6 61.4 65.8 97.8l.1.1.1.1c16 37.6 24.1 78 24.2 119.8-.1 41.7-8.3 82-24.3 119.8zM681.1 364.2c-20.4 0-37.1 16.7-37.1 37.1v55.1c0 20.4 16.6 37.1 37.1 37.1s37.1-16.7 37.1-37.1v-55.1c0-20.5-16.7-37.1-37.1-37.1zm-175.2 0c-20.5 0-37.1 16.7-37.1 37.1v55.1c0 20.4 16.7 37.1 37.1 37.1 20.5 0 37.1-16.7 37.1-37.1v-55.1c0-20.5-16.7-37.1-37.1-37.1z")),t.AndroidOutline=u("android",i,l(o,"M448.3 225.2c-18.6 0-32 13.4-32 31.9s13.5 31.9 32 31.9c18.6 0 32-13.4 32-31.9.1-18.4-13.4-31.9-32-31.9zm393.9 96.4c-13.8-13.8-32.7-21.5-53.2-21.5-3.9 0-7.4.4-10.7 1v-1h-3.6c-5.5-30.6-18.6-60.5-38.1-87.4-18.7-25.7-43-47.9-70.8-64.9l25.1-35.8v-3.3c0-.8.4-2.3.7-3.8.6-2.4 1.4-5.5 1.4-8.9 0-18.5-13.5-31.9-32-31.9-9.8 0-19.5 5.7-25.9 15.4l-29.3 42.1c-30-9.8-62.4-15-93.8-15-31.3 0-63.7 5.2-93.8 15L389 79.4c-6.6-9.6-16.1-15.4-26-15.4-18.6 0-32 13.4-32 31.9 0 6.2 2.5 12.8 6.7 17.4l22.6 32.3c-28.7 17-53.5 39.4-72.2 65.1-19.4 26.9-32 56.8-36.7 87.4h-5.5v1c-3.2-.6-6.7-1-10.7-1-20.3 0-39.2 7.5-53.1 21.3-13.8 13.8-21.5 32.6-21.5 53v235c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 3.9 0 7.4-.4 10.7-1v93.5c0 29.2 23.9 53.1 53.2 53.1H331v58.3c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 20.3 0 39.2-7.5 53.1-21.3 13.8-13.8 21.5-32.6 21.5-53v-58.2H544v58.1c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 20.4 0 39.2-7.5 53.1-21.6 13.8-13.8 21.5-32.6 21.5-53v-58.2h31.9c29.3 0 53.2-23.8 53.2-53.1v-91.4c3.2.6 6.7 1 10.7 1 20.3 0 39.2-7.5 53.1-21.3 13.8-13.8 21.5-32.6 21.5-53v-235c-.1-20.3-7.6-39-21.4-52.9zM246 609.6c0 6.8-3.9 10.6-10.7 10.6-6.8 0-10.7-3.8-10.7-10.6V374.5c0-6.8 3.9-10.6 10.7-10.6 6.8 0 10.7 3.8 10.7 10.6v235.1zm131.1-396.8c37.5-27.3 85.3-42.3 135-42.3s97.5 15.1 135 42.5c32.4 23.7 54.2 54.2 62.7 87.5H314.4c8.5-33.4 30.5-64 62.7-87.7zm39.3 674.7c-.6 5.6-4.4 8.7-10.5 8.7-6.8 0-10.7-3.8-10.7-10.6v-58.2h21.2v60.1zm202.3 8.7c-6.8 0-10.7-3.8-10.7-10.6v-58.2h21.2v60.1c-.6 5.6-4.3 8.7-10.5 8.7zm95.8-132.6H309.9V364h404.6v399.6zm85.2-154c0 6.8-3.9 10.6-10.7 10.6-6.8 0-10.7-3.8-10.7-10.6V374.5c0-6.8 3.9-10.6 10.7-10.6 6.8 0 10.7 3.8 10.7 10.6v235.1zM576.1 225.2c-18.6 0-32 13.4-32 31.9s13.5 31.9 32 31.9c18.6 0 32.1-13.4 32.1-32-.1-18.6-13.4-31.8-32.1-31.8z")),t.ApiOutline=u("api",i,l(o,"M917.7 148.8l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 0 0-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 0 0 0 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM769.1 441.7l-59.4 59.4-186.8-186.8 59.4-59.4c24.9-24.9 58.1-38.7 93.4-38.7 35.3 0 68.4 13.7 93.4 38.7 24.9 24.9 38.7 58.1 38.7 93.4 0 35.3-13.8 68.4-38.7 93.4zm-190.2 105a8.03 8.03 0 0 0-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 0 0-11.3 0L363 475.3l-43-43a7.85 7.85 0 0 0-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2c-68.9 69-77 175.7-24.3 253.5l-76.1 76.1a8.03 8.03 0 0 0 0 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2zM441.7 769.1a131.32 131.32 0 0 1-93.4 38.7c-35.3 0-68.4-13.7-93.4-38.7a131.32 131.32 0 0 1-38.7-93.4c0-35.3 13.7-68.4 38.7-93.4l59.4-59.4 186.8 186.8-59.4 59.4z")),t.AppstoreOutline=u("appstore",i,l(o,"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z")),t.AudioOutline=u("audio",i,l(o,"M842 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1zM512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm-94-392c0-50.6 41.9-92 94-92s94 41.4 94 92v224c0 50.6-41.9 92-94 92s-94-41.4-94-92V232z")),t.AppleOutline=u("apple",i,l(o,"M747.4 535.7c-.4-68.2 30.5-119.6 92.9-157.5-34.9-50-87.7-77.5-157.3-82.8-65.9-5.2-138 38.4-164.4 38.4-27.9 0-91.7-36.6-141.9-36.6C273.1 298.8 163 379.8 163 544.6c0 48.7 8.9 99 26.7 150.8 23.8 68.2 109.6 235.3 199.1 232.6 46.8-1.1 79.9-33.2 140.8-33.2 59.1 0 89.7 33.2 141.9 33.2 90.3-1.3 167.9-153.2 190.5-221.6-121.1-57.1-114.6-167.2-114.6-170.7zm-10.6 267c-14.3 19.9-28.7 35.6-41.9 45.7-10.5 8-18.6 11.4-24 11.6-9-.1-17.7-2.3-34.7-8.8-1.2-.5-2.5-1-4.2-1.6l-4.4-1.7c-17.4-6.7-27.8-10.3-41.1-13.8-18.6-4.8-37.1-7.4-56.9-7.4-20.2 0-39.2 2.5-58.1 7.2-13.9 3.5-25.6 7.4-42.7 13.8-.7.3-8.1 3.1-10.2 3.9-3.5 1.3-6.2 2.3-8.7 3.2-10.4 3.6-17 5.1-22.9 5.2-.7 0-1.3-.1-1.8-.2-1.1-.2-2.5-.6-4.1-1.3-4.5-1.8-9.9-5.1-16-9.8-14-10.9-29.4-28-45.1-49.9-27.5-38.6-53.5-89.8-66-125.7-15.4-44.8-23-87.7-23-128.6 0-60.2 17.8-106 48.4-137.1 26.3-26.6 61.7-41.5 97.8-42.3 5.9.1 14.5 1.5 25.4 4.5 8.6 2.3 18 5.4 30.7 9.9 3.8 1.4 16.9 6.1 18.5 6.7 7.7 2.8 13.5 4.8 19.2 6.6 18.2 5.8 32.3 9 47.6 9 15.5 0 28.8-3.3 47.7-9.8 7.1-2.4 32.9-12 37.5-13.6 25.6-9.1 44.5-14 60.8-15.2 4.8-.4 9.1-.4 13.2-.1 22.7 1.8 42.1 6.3 58.6 13.8-37.6 43.4-57 96.5-56.9 158.4-.3 14.7.9 31.7 5.1 51.8 6.4 30.5 18.6 60.7 37.9 89 14.7 21.5 32.9 40.9 54.7 57.8-11.5 23.7-25.6 48.2-40.4 68.8zm-94.5-572c50.7-60.2 46.1-115 44.6-134.7-44.8 2.6-96.6 30.5-126.1 64.8-32.5 36.8-51.6 82.3-47.5 133.6 48.4 3.7 92.6-21.2 129-63.7z")),t.BackwardOutline=u("backward",i,l(r,"M485.6 249.9L198.2 498c-8.3 7.1-8.3 20.8 0 27.9l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9zm320 0L518.2 498a18.6 18.6 0 0 0-6.2 14c0 5.2 2.1 10.4 6.2 14l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9z")),t.BankOutline=u("bank",i,l(o,"M894 462c30.9 0 43.8-39.7 18.7-58L530.8 126.2a31.81 31.81 0 0 0-37.6 0L111.3 404c-25.1 18.2-12.2 58 18.8 58H192v374h-72c-4.4 0-8 3.6-8 8v52c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-52c0-4.4-3.6-8-8-8h-72V462h62zM512 196.7l271.1 197.2H240.9L512 196.7zM264 462h117v374H264V462zm189 0h117v374H453V462zm307 374H642V462h118v374z")),t.BellOutline=u("bell",i,l(o,"M816 768h-24V428c0-141.1-104.3-257.7-240-277.1V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.9c-135.7 19.4-240 136-240 277.1v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h216c0 61.8 50.2 112 112 112s112-50.2 112-112h216c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM512 888c-26.5 0-48-21.5-48-48h96c0 26.5-21.5 48-48 48zM304 768V428c0-55.6 21.6-107.8 60.9-147.1S456.4 220 512 220c55.6 0 107.8 21.6 147.1 60.9S720 372.4 720 428v340H304z")),t.BehanceSquareOutline=u("behance-square",i,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM598.5 350.9h138.4v33.7H598.5v-33.7zM512 628.8a89.52 89.52 0 0 1-27 31c-11.8 8.2-24.9 14.2-38.8 17.7a167.4 167.4 0 0 1-44.6 5.7H236V342.1h161c16.3 0 31.1 1.5 44.6 4.3 13.4 2.8 24.8 7.6 34.4 14.1 9.5 6.5 17 15.2 22.3 26 5.2 10.7 7.9 24.1 7.9 40 0 17.2-3.9 31.4-11.7 42.9-7.9 11.5-19.3 20.8-34.8 28.1 21.1 6 36.6 16.7 46.8 31.7 10.4 15.2 15.5 33.4 15.5 54.8 0 17.4-3.3 32.3-10 44.8zM790.8 576H612.4c0 19.4 6.7 38 16.8 48 10.2 9.9 24.8 14.9 43.9 14.9 13.8 0 25.5-3.5 35.5-10.4 9.9-6.9 15.9-14.2 18.1-21.8h59.8c-9.6 29.7-24.2 50.9-44 63.7-19.6 12.8-43.6 19.2-71.5 19.2-19.5 0-37-3.2-52.7-9.3-15.1-5.9-28.7-14.9-39.9-26.5a121.2 121.2 0 0 1-25.1-41.2c-6.1-16.9-9.1-34.7-8.9-52.6 0-18.5 3.1-35.7 9.1-51.7 11.5-31.1 35.4-56 65.9-68.9 16.3-6.8 33.8-10.2 51.5-10 21 0 39.2 4 55 12.2a111.6 111.6 0 0 1 38.6 32.8c10.1 13.7 17.2 29.3 21.7 46.9 4.3 17.3 5.8 35.5 4.6 54.7zm-122-95.6c-10.8 0-19.9 1.9-26.9 5.6-7 3.7-12.8 8.3-17.2 13.6a48.4 48.4 0 0 0-9.1 17.4c-1.6 5.3-2.7 10.7-3.1 16.2H723c-1.6-17.3-7.6-30.1-15.6-39.1-8.4-8.9-21.9-13.7-38.6-13.7zm-248.5-10.1c8.7-6.3 12.9-16.7 12.9-31 .3-6.8-1.1-13.5-4.1-19.6-2.7-4.9-6.7-9-11.6-11.9a44.8 44.8 0 0 0-16.6-6c-6.4-1.2-12.9-1.8-19.3-1.7h-70.3v79.7h76.1c13.1.1 24.2-3.1 32.9-9.5zm11.8 72c-9.8-7.5-22.9-11.2-39.2-11.2h-81.8v94h80.2c7.5 0 14.4-.7 21.1-2.1s12.7-3.8 17.8-7.2c5.1-3.3 9.2-7.8 12.3-13.6 3-5.8 4.5-13.2 4.5-22.1 0-17.7-5-30.2-14.9-37.8z")),t.BookOutline=u("book",i,l(o,"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-260 72h96v209.9L621.5 312 572 347.4V136zm220 752H232V136h280v296.9c0 3.3 1 6.6 3 9.3a15.9 15.9 0 0 0 22.3 3.7l83.8-59.9 81.4 59.4c2.7 2 6 3.1 9.4 3.1 8.8 0 16-7.2 16-16V136h64v752z")),t.BoxPlotOutline=u("box-plot",i,l(o,"M952 224h-52c-4.4 0-8 3.6-8 8v248h-92V304c0-4.4-3.6-8-8-8H232c-4.4 0-8 3.6-8 8v176h-92V232c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V548h92v172c0 4.4 3.6 8 8 8h560c4.4 0 8-3.6 8-8V548h92v244c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zM296 368h88v288h-88V368zm432 288H448V368h280v288z")),t.BulbOutline=u("bulb",i,l(o,"M632 888H392c-4.4 0-8 3.6-8 8v32c0 17.7 14.3 32 32 32h192c17.7 0 32-14.3 32-32v-32c0-4.4-3.6-8-8-8zM512 64c-181.1 0-328 146.9-328 328 0 121.4 66 227.4 164 284.1V792c0 17.7 14.3 32 32 32h264c17.7 0 32-14.3 32-32V676.1c98-56.7 164-162.7 164-284.1 0-181.1-146.9-328-328-328zm127.9 549.8L604 634.6V752H420V634.6l-35.9-20.8C305.4 568.3 256 484.5 256 392c0-141.4 114.6-256 256-256s256 114.6 256 256c0 92.5-49.4 176.3-128.1 221.8z")),t.BugOutline=u("bug",i,l(o,"M304 280h56c4.4 0 8-3.6 8-8 0-28.3 5.9-53.2 17.1-73.5 10.6-19.4 26-34.8 45.4-45.4C450.9 142 475.7 136 504 136h16c28.3 0 53.2 5.9 73.5 17.1 19.4 10.6 34.8 26 45.4 45.4C650 218.9 656 243.7 656 272c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1a184.31 184.31 0 0 0-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9a184.31 184.31 0 0 0-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z","M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8a63 63 0 0 1-63 63H232a63 63 0 0 1-63-63c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7a273 273 0 0 0 22.7 49c24.3 41.5 59 76.2 100.5 100.5S460.5 960 512 960s99.8-13.9 141.3-38.2a281.38 281.38 0 0 0 123.2-149.5A120 120 0 0 1 836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM716 680c0 36.8-9.7 72-27.8 102.9-17.7 30.3-43 55.6-73.3 73.3C584 874.3 548.8 884 512 884s-72-9.7-102.9-27.8c-30.3-17.7-55.6-43-73.3-73.3A202.75 202.75 0 0 1 308 680V412h408v268z")),t.CalculatorOutline=u("calculator",i,l(o,"M251.2 387H320v68.8c0 1.8 1.8 3.2 4 3.2h48c2.2 0 4-1.4 4-3.3V387h68.8c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H376v-68.8c0-1.8-1.8-3.2-4-3.2h-48c-2.2 0-4 1.4-4 3.2V331h-68.8c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm328 0h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0 265h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0 104h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm-195.7-81l61.2-74.9c4.3-5.2.7-13.1-5.9-13.1H388c-2.3 0-4.5 1-5.9 2.9l-34 41.6-34-41.6a7.85 7.85 0 0 0-5.9-2.9h-50.9c-6.6 0-10.2 7.9-5.9 13.1l61.2 74.9-62.7 76.8c-4.4 5.2-.8 13.1 5.8 13.1h50.8c2.3 0 4.5-1 5.9-2.9l35.5-43.5 35.5 43.5c1.5 1.8 3.7 2.9 5.9 2.9h50.8c6.6 0 10.2-7.9 5.9-13.1L383.5 675zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-36 732H180V180h664v664z")),t.BuildOutline=u("build",i,l(o,"M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zm-504 68h200v200H412V278zm-68 468H144V546h200v200zm268 0H412V546h200v200zm268-268H680V278h200v200z")),t.CalendarOutline=u("calendar",i,l(o,"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z")),t.CameraOutline=u("camera",i,l(o,"M864 248H728l-32.4-90.8a32.07 32.07 0 0 0-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 248H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V328c0-44.2-35.8-80-80-80zm8 536c0 4.4-3.6 8-8 8H160c-4.4 0-8-3.6-8-8V328c0-4.4 3.6-8 8-8h186.7l17.1-47.8 22.9-64.2h250.5l22.9 64.2 17.1 47.8H864c4.4 0 8 3.6 8 8v456zM512 384c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zm0 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z")),t.CarOutline=u("car",i,l(o,"M380 704h264c4.4 0 8-3.6 8-8v-84c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v36H428v-36c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v84c0 4.4 3.6 8 8 8zm340-123a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm239-167.6L935.3 372a8 8 0 0 0-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 0 0-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 0 0-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 0 0 3-10.8zM840 517v237H184V517l15.6-43h624.8l15.6 43zM292.7 218.1l.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220l72.7-199.9zM224 581a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")),t.CaretDownOutline=u("caret-down",i,l(r,"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z")),t.CaretLeftOutline=u("caret-left",i,l(r,"M689 165.1L308.2 493.5c-10.9 9.4-10.9 27.5 0 37L689 858.9c14.2 12.2 35 1.2 35-18.5V183.6c0-19.7-20.8-30.7-35-18.5z")),t.CaretRightOutline=u("caret-right",i,l(r,"M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z")),t.CarryOutOutline=u("carry-out",i,l(o,"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584zM688 420h-55.2c-5.1 0-10 2.5-13 6.6L468.9 634.4l-64.7-89c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.4 0-12.8-6.5-12.8z")),t.CheckCircleOutline=u("check-circle",i,l(o,"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0 0 51.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z","M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")),t.CaretUpOutline=u("caret-up",i,l(r,"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z")),t.CheckSquareOutline=u("check-square",i,l(o,"M433.1 657.7a31.8 31.8 0 0 0 51.7 0l210.6-292c3.8-5.3 0-12.7-6.5-12.7H642c-10.2 0-19.9 4.9-25.9 13.3L459 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H315c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8z","M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")),t.ChromeOutline=u("chrome",i,l(o,"M928 512.3v-.3c0-229.8-186.2-416-416-416S96 282.2 96 512v.4c0 229.8 186.2 416 416 416s416-186.2 416-416v-.3.2zm-6.7-74.6l.6 3.3-.6-3.3zM676.7 638.2c53.5-82.2 52.5-189.4-11.1-263.7l162.4-8.4c20.5 44.4 32 93.8 32 145.9 0 185.2-144.6 336.6-327.1 347.4l143.8-221.2zM512 652.3c-77.5 0-140.2-62.7-140.2-140.2 0-77.7 62.7-140.2 140.2-140.2S652.2 434.5 652.2 512 589.5 652.3 512 652.3zm369.2-331.7l-3-5.7 3 5.7zM512 164c121.3 0 228.2 62.1 290.4 156.2l-263.6-13.9c-97.5-5.7-190.2 49.2-222.3 141.1L227.8 311c63.1-88.9 166.9-147 284.2-147zM102.5 585.8c26 145 127.1 264 261.6 315.1C229.6 850 128.5 731 102.5 585.8zM164 512c0-55.9 13.2-108.7 36.6-155.5l119.7 235.4c44.1 86.7 137.4 139.7 234 121.6l-74 145.1C302.9 842.5 164 693.5 164 512zm324.7 415.4c4 .2 8 .4 12 .5-4-.2-8-.3-12-.5z")),t.ClockCircleOutline=u("clock-circle",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z","M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z")),t.CloseCircleOutline=u("close-circle",i,l(o,"M685.4 354.8c0-4.4-3.6-8-8-8l-66 .3L512 465.6l-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155L340.5 670a8.32 8.32 0 0 0-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3L512 564.4l99.3 118.4 66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.5 515l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z","M512 65C264.6 65 64 265.6 64 513s200.6 448 448 448 448-200.6 448-448S759.4 65 512 65zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")),t.CloudOutline=u("cloud",i,l(o,"M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3zm36.3 281a123.07 123.07 0 0 1-87.6 36.3H263.9c-33.1 0-64.2-12.9-87.6-36.3A123.3 123.3 0 0 1 140 612c0-28 9.1-54.3 26.2-76.3a125.7 125.7 0 0 1 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10c54.3 14.5 92.1 63.8 92.1 120 0 33.1-12.9 64.3-36.3 87.7z")),t.CloseSquareOutline=u("close-square",i,l(o,"M354 671h58.9c4.7 0 9.2-2.1 12.3-5.7L512 561.8l86.8 103.5c3 3.6 7.5 5.7 12.3 5.7H670c6.8 0 10.5-7.9 6.1-13.1L553.8 512l122.4-145.9c4.4-5.2.7-13.1-6.1-13.1h-58.9c-4.7 0-9.2 2.1-12.3 5.7L512 462.2l-86.8-103.5c-3-3.6-7.5-5.7-12.3-5.7H354c-6.8 0-10.5 7.9-6.1 13.1L470.2 512 347.9 657.9A7.95 7.95 0 0 0 354 671z","M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")),t.CodeOutline=u("code",i,l(o,"M516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48zm-194.9 6.1l192-161c3.8-3.2 3.8-9.1 0-12.3l-192-160.9A7.95 7.95 0 0 0 308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 0 0-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")),t.CodepenCircleOutline=u("codepen-circle",i,l(o,"M488.1 414.7V303.4L300.9 428l83.6 55.8zm254.1 137.7v-79.8l-59.8 39.9zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm278 533c0 1.1-.1 2.1-.2 3.1 0 .4-.1.7-.2 1a14.16 14.16 0 0 1-.8 3.2c-.2.6-.4 1.2-.6 1.7-.2.4-.4.8-.5 1.2-.3.5-.5 1.1-.8 1.6-.2.4-.4.7-.7 1.1-.3.5-.7 1-1 1.5-.3.4-.5.7-.8 1-.4.4-.8.9-1.2 1.3-.3.3-.6.6-1 .9-.4.4-.9.8-1.4 1.1-.4.3-.7.6-1.1.8-.1.1-.3.2-.4.3L525.2 786c-4 2.7-8.6 4-13.2 4-4.7 0-9.3-1.4-13.3-4L244.6 616.9c-.1-.1-.3-.2-.4-.3l-1.1-.8c-.5-.4-.9-.7-1.3-1.1-.3-.3-.6-.6-1-.9-.4-.4-.8-.8-1.2-1.3a7 7 0 0 1-.8-1c-.4-.5-.7-1-1-1.5-.2-.4-.5-.7-.7-1.1-.3-.5-.6-1.1-.8-1.6-.2-.4-.4-.8-.5-1.2-.2-.6-.4-1.2-.6-1.7-.1-.4-.3-.8-.4-1.2-.2-.7-.3-1.3-.4-2-.1-.3-.1-.7-.2-1-.1-1-.2-2.1-.2-3.1V427.9c0-1 .1-2.1.2-3.1.1-.3.1-.7.2-1a14.16 14.16 0 0 1 .8-3.2c.2-.6.4-1.2.6-1.7.2-.4.4-.8.5-1.2.2-.5.5-1.1.8-1.6.2-.4.4-.7.7-1.1.6-.9 1.2-1.7 1.8-2.5.4-.4.8-.9 1.2-1.3.3-.3.6-.6 1-.9.4-.4.9-.8 1.3-1.1.4-.3.7-.6 1.1-.8.1-.1.3-.2.4-.3L498.7 239c8-5.3 18.5-5.3 26.5 0l254.1 169.1c.1.1.3.2.4.3l1.1.8 1.4 1.1c.3.3.6.6 1 .9.4.4.8.8 1.2 1.3.7.8 1.3 1.6 1.8 2.5.2.4.5.7.7 1.1.3.5.6 1 .8 1.6.2.4.4.8.5 1.2.2.6.4 1.2.6 1.7.1.4.3.8.4 1.2.2.7.3 1.3.4 2 .1.3.1.7.2 1 .1 1 .2 2.1.2 3.1V597zm-254.1 13.3v111.3L723.1 597l-83.6-55.8zM281.8 472.6v79.8l59.8-39.9zM512 456.1l-84.5 56.4 84.5 56.4 84.5-56.4zM723.1 428L535.9 303.4v111.3l103.6 69.1zM384.5 541.2L300.9 597l187.2 124.6V610.3l-103.6-69.1z")),t.CompassOutline=u("compass",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm198.4-588.1a32 32 0 0 0-24.5.5L414.9 415 296.4 686c-3.6 8.2-3.6 17.5 0 25.7 3.4 7.8 9.7 13.9 17.7 17 3.8 1.5 7.7 2.2 11.7 2.2 4.4 0 8.7-.9 12.8-2.7l271-118.6 118.5-271a32.06 32.06 0 0 0-17.7-42.7zM576.8 534.4l26.2 26.2-42.4 42.4-26.2-26.2L380 644.4 447.5 490 422 464.4l42.4-42.4 25.5 25.5L644.4 380l-67.6 154.4zM464.4 422L422 464.4l25.5 25.6 86.9 86.8 26.2 26.2 42.4-42.4-26.2-26.2-86.8-86.9z")),t.ContactsOutline=u("contacts",i,l(o,"M594.3 601.5a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1 8 8 0 0 0 8 8.4H407c4.2 0 7.6-3.3 7.9-7.5 3.8-50.6 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H661a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.7-126.1zM512 578c-28.5 0-51.7-23.3-51.7-52s23.2-52 51.7-52 51.7 23.3 51.7 52-23.2 52-51.7 52zm416-354H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496z")),t.ContainerOutline=u("container",i,l(o,"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V687h97.9c11.6 32.8 32 62.3 59.1 84.7 34.5 28.5 78.2 44.3 123 44.3s88.5-15.7 123-44.3c27.1-22.4 47.5-51.9 59.1-84.7H792v-63H643.6l-5.2 24.7C626.4 708.5 573.2 752 512 752s-114.4-43.5-126.5-103.3l-5.2-24.7H232V136h560v752zM320 341h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 160h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z")),t.ControlOutline=u("control",i,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM340 683v77c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-77c-10.1 3.3-20.8 5-32 5s-21.9-1.8-32-5zm64-198V264c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v221c10.1-3.3 20.8-5 32-5s21.9 1.8 32 5zm-64 198c10.1 3.3 20.8 5 32 5s21.9-1.8 32-5c41.8-13.5 72-52.7 72-99s-30.2-85.5-72-99c-10.1-3.3-20.8-5-32-5s-21.9 1.8-32 5c-41.8 13.5-72 52.7-72 99s30.2 85.5 72 99zm.1-115.7c.3-.6.7-1.2 1-1.8v-.1l1.2-1.8c.1-.2.2-.3.3-.5.3-.5.7-.9 1-1.4.1-.1.2-.3.3-.4.5-.6.9-1.1 1.4-1.6l.3-.3 1.2-1.2.4-.4c.5-.5 1-.9 1.6-1.4.6-.5 1.1-.9 1.7-1.3.2-.1.3-.2.5-.3.5-.3.9-.7 1.4-1 .1-.1.3-.2.4-.3.6-.4 1.2-.7 1.9-1.1.1-.1.3-.1.4-.2.5-.3 1-.5 1.6-.8l.6-.3c.7-.3 1.3-.6 2-.8.7-.3 1.4-.5 2.1-.7.2-.1.4-.1.6-.2.6-.2 1.1-.3 1.7-.4.2 0 .3-.1.5-.1.7-.2 1.5-.3 2.2-.4.2 0 .3 0 .5-.1.6-.1 1.2-.1 1.8-.2h.6c.8 0 1.5-.1 2.3-.1s1.5 0 2.3.1h.6c.6 0 1.2.1 1.8.2.2 0 .3 0 .5.1.7.1 1.5.2 2.2.4.2 0 .3.1.5.1.6.1 1.2.3 1.7.4.2.1.4.1.6.2.7.2 1.4.4 2.1.7.7.2 1.3.5 2 .8l.6.3c.5.2 1.1.5 1.6.8.1.1.3.1.4.2.6.3 1.3.7 1.9 1.1.1.1.3.2.4.3.5.3 1 .6 1.4 1 .2.1.3.2.5.3.6.4 1.2.9 1.7 1.3s1.1.9 1.6 1.4l.4.4 1.2 1.2.3.3c.5.5 1 1.1 1.4 1.6.1.1.2.3.3.4.4.4.7.9 1 1.4.1.2.2.3.3.5l1.2 1.8s0 .1.1.1a36.18 36.18 0 0 1 5.1 18.5c0 6-1.5 11.7-4.1 16.7-.3.6-.7 1.2-1 1.8 0 0 0 .1-.1.1l-1.2 1.8c-.1.2-.2.3-.3.5-.3.5-.7.9-1 1.4-.1.1-.2.3-.3.4-.5.6-.9 1.1-1.4 1.6l-.3.3-1.2 1.2-.4.4c-.5.5-1 .9-1.6 1.4-.6.5-1.1.9-1.7 1.3-.2.1-.3.2-.5.3-.5.3-.9.7-1.4 1-.1.1-.3.2-.4.3-.6.4-1.2.7-1.9 1.1-.1.1-.3.1-.4.2-.5.3-1 .5-1.6.8l-.6.3c-.7.3-1.3.6-2 .8-.7.3-1.4.5-2.1.7-.2.1-.4.1-.6.2-.6.2-1.1.3-1.7.4-.2 0-.3.1-.5.1-.7.2-1.5.3-2.2.4-.2 0-.3 0-.5.1-.6.1-1.2.1-1.8.2h-.6c-.8 0-1.5.1-2.3.1s-1.5 0-2.3-.1h-.6c-.6 0-1.2-.1-1.8-.2-.2 0-.3 0-.5-.1-.7-.1-1.5-.2-2.2-.4-.2 0-.3-.1-.5-.1-.6-.1-1.2-.3-1.7-.4-.2-.1-.4-.1-.6-.2-.7-.2-1.4-.4-2.1-.7-.7-.2-1.3-.5-2-.8l-.6-.3c-.5-.2-1.1-.5-1.6-.8-.1-.1-.3-.1-.4-.2-.6-.3-1.3-.7-1.9-1.1-.1-.1-.3-.2-.4-.3-.5-.3-1-.6-1.4-1-.2-.1-.3-.2-.5-.3-.6-.4-1.2-.9-1.7-1.3s-1.1-.9-1.6-1.4l-.4-.4-1.2-1.2-.3-.3c-.5-.5-1-1.1-1.4-1.6-.1-.1-.2-.3-.3-.4-.4-.4-.7-.9-1-1.4-.1-.2-.2-.3-.3-.5l-1.2-1.8v-.1c-.4-.6-.7-1.2-1-1.8-2.6-5-4.1-10.7-4.1-16.7s1.5-11.7 4.1-16.7zM620 539v221c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V539c-10.1 3.3-20.8 5-32 5s-21.9-1.8-32-5zm64-198v-77c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v77c10.1-3.3 20.8-5 32-5s21.9 1.8 32 5zm-64 198c10.1 3.3 20.8 5 32 5s21.9-1.8 32-5c41.8-13.5 72-52.7 72-99s-30.2-85.5-72-99c-10.1-3.3-20.8-5-32-5s-21.9 1.8-32 5c-41.8 13.5-72 52.7-72 99s30.2 85.5 72 99zm.1-115.7c.3-.6.7-1.2 1-1.8v-.1l1.2-1.8c.1-.2.2-.3.3-.5.3-.5.7-.9 1-1.4.1-.1.2-.3.3-.4.5-.6.9-1.1 1.4-1.6l.3-.3 1.2-1.2.4-.4c.5-.5 1-.9 1.6-1.4.6-.5 1.1-.9 1.7-1.3.2-.1.3-.2.5-.3.5-.3.9-.7 1.4-1 .1-.1.3-.2.4-.3.6-.4 1.2-.7 1.9-1.1.1-.1.3-.1.4-.2.5-.3 1-.5 1.6-.8l.6-.3c.7-.3 1.3-.6 2-.8.7-.3 1.4-.5 2.1-.7.2-.1.4-.1.6-.2.6-.2 1.1-.3 1.7-.4.2 0 .3-.1.5-.1.7-.2 1.5-.3 2.2-.4.2 0 .3 0 .5-.1.6-.1 1.2-.1 1.8-.2h.6c.8 0 1.5-.1 2.3-.1s1.5 0 2.3.1h.6c.6 0 1.2.1 1.8.2.2 0 .3 0 .5.1.7.1 1.5.2 2.2.4.2 0 .3.1.5.1.6.1 1.2.3 1.7.4.2.1.4.1.6.2.7.2 1.4.4 2.1.7.7.2 1.3.5 2 .8l.6.3c.5.2 1.1.5 1.6.8.1.1.3.1.4.2.6.3 1.3.7 1.9 1.1.1.1.3.2.4.3.5.3 1 .6 1.4 1 .2.1.3.2.5.3.6.4 1.2.9 1.7 1.3s1.1.9 1.6 1.4l.4.4 1.2 1.2.3.3c.5.5 1 1.1 1.4 1.6.1.1.2.3.3.4.4.4.7.9 1 1.4.1.2.2.3.3.5l1.2 1.8v.1a36.18 36.18 0 0 1 5.1 18.5c0 6-1.5 11.7-4.1 16.7-.3.6-.7 1.2-1 1.8v.1l-1.2 1.8c-.1.2-.2.3-.3.5-.3.5-.7.9-1 1.4-.1.1-.2.3-.3.4-.5.6-.9 1.1-1.4 1.6l-.3.3-1.2 1.2-.4.4c-.5.5-1 .9-1.6 1.4-.6.5-1.1.9-1.7 1.3-.2.1-.3.2-.5.3-.5.3-.9.7-1.4 1-.1.1-.3.2-.4.3-.6.4-1.2.7-1.9 1.1-.1.1-.3.1-.4.2-.5.3-1 .5-1.6.8l-.6.3c-.7.3-1.3.6-2 .8-.7.3-1.4.5-2.1.7-.2.1-.4.1-.6.2-.6.2-1.1.3-1.7.4-.2 0-.3.1-.5.1-.7.2-1.5.3-2.2.4-.2 0-.3 0-.5.1-.6.1-1.2.1-1.8.2h-.6c-.8 0-1.5.1-2.3.1s-1.5 0-2.3-.1h-.6c-.6 0-1.2-.1-1.8-.2-.2 0-.3 0-.5-.1-.7-.1-1.5-.2-2.2-.4-.2 0-.3-.1-.5-.1-.6-.1-1.2-.3-1.7-.4-.2-.1-.4-.1-.6-.2-.7-.2-1.4-.4-2.1-.7-.7-.2-1.3-.5-2-.8l-.6-.3c-.5-.2-1.1-.5-1.6-.8-.1-.1-.3-.1-.4-.2-.6-.3-1.3-.7-1.9-1.1-.1-.1-.3-.2-.4-.3-.5-.3-1-.6-1.4-1-.2-.1-.3-.2-.5-.3-.6-.4-1.2-.9-1.7-1.3s-1.1-.9-1.6-1.4l-.4-.4-1.2-1.2-.3-.3c-.5-.5-1-1.1-1.4-1.6-.1-.1-.2-.3-.3-.4-.4-.4-.7-.9-1-1.4-.1-.2-.2-.3-.3-.5l-1.2-1.8v-.1c-.4-.6-.7-1.2-1-1.8-2.6-5-4.1-10.7-4.1-16.7s1.5-11.7 4.1-16.7z")),t.CopyOutline=u("copy",i,l(o,"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z")),t.CreditCardOutline=u("credit-card",i,l(o,"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-792 72h752v120H136V232zm752 560H136V440h752v352zm-237-64h165c4.4 0 8-3.6 8-8v-72c0-4.4-3.6-8-8-8H651c-4.4 0-8 3.6-8 8v72c0 4.4 3.6 8 8 8z")),t.CrownOutline=u("crown",i,l(o,"M899.6 276.5L705 396.4 518.4 147.5a8.06 8.06 0 0 0-12.9 0L319 396.4 124.3 276.5c-5.7-3.5-13.1 1.2-12.2 7.9L188.5 865c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6c.8-6.7-6.5-11.4-12.3-7.9zm-126 534.1H250.3l-53.8-409.4 139.8 86.1L512 252.9l175.7 234.4 139.8-86.1-53.9 409.4zM512 509c-62.1 0-112.6 50.5-112.6 112.6S449.9 734.2 512 734.2s112.6-50.5 112.6-112.6S574.1 509 512 509zm0 160.9c-26.6 0-48.2-21.6-48.2-48.3 0-26.6 21.6-48.3 48.2-48.3s48.2 21.6 48.2 48.3c0 26.6-21.6 48.3-48.2 48.3z")),t.CustomerServiceOutline=u("customer-service",i,l(o,"M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384zM328 632v192H200V632h128zm496 192H696V632h128v192z")),t.DashboardOutline=u("dashboard",i,l(o,"M924.8 385.6a446.7 446.7 0 0 0-96-142.4 446.7 446.7 0 0 0-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 0 0-142.4 96 446.7 446.7 0 0 0-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM761.4 836H262.6A371.12 371.12 0 0 1 140 560c0-99.4 38.7-192.8 109-263 70.3-70.3 163.7-109 263-109 99.4 0 192.8 38.7 263 109 70.3 70.3 109 163.7 109 263 0 105.6-44.5 205.5-122.6 276zM623.5 421.5a8.03 8.03 0 0 0-11.3 0L527.7 506c-18.7-5-39.4-.2-54.1 14.5a55.95 55.95 0 0 0 0 79.2 55.95 55.95 0 0 0 79.2 0 55.87 55.87 0 0 0 14.5-54.1l84.5-84.5c3.1-3.1 3.1-8.2 0-11.3l-28.3-28.3zM490 320h44c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8h-44c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8zm260 218v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8zm12.7-197.2l-31.1-31.1a8.03 8.03 0 0 0-11.3 0l-56.6 56.6a8.03 8.03 0 0 0 0 11.3l31.1 31.1c3.1 3.1 8.2 3.1 11.3 0l56.6-56.6c3.1-3.1 3.1-8.2 0-11.3zm-458.6-31.1a8.03 8.03 0 0 0-11.3 0l-31.1 31.1a8.03 8.03 0 0 0 0 11.3l56.6 56.6c3.1 3.1 8.2 3.1 11.3 0l31.1-31.1c3.1-3.1 3.1-8.2 0-11.3l-56.6-56.6zM262 530h-80c-4.4 0-8 3.6-8 8v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8z")),t.DeleteOutline=u("delete",i,l(o,"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z")),t.DiffOutline=u("diff",i,l(o,"M476 399.1c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1V484h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H420v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V540h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H476v-84.9zM560.5 704h-225c-4.1 0-7.5 3.2-7.5 7v42c0 3.8 3.4 7 7.5 7h225c4.1 0 7.5-3.2 7.5-7v-42c0-3.8-3.4-7-7.5-7zm-7.1-502.6c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM664 888H232V264h282.2L664 413.8V888zm190.2-581.4L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23z")),t.DatabaseOutline=u("database",i,l(o,"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-600 72h560v208H232V136zm560 480H232V408h560v208zm0 272H232V680h560v208zM304 240a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 272a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 272a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")),t.DislikeOutline=u("dislike",i,l(o,"M885.9 490.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 0 0-26.5-5.4H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h129.3l85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zM184 456V172h81v284h-81zm627.2 160.4H496.8l9.6 198.4c.6 11.9-4.7 23.1-14.6 30.5-6.1 4.5-13.6 6.8-21.1 6.7a44.28 44.28 0 0 1-42.2-32.3L329 459.2V172h415.4a56.85 56.85 0 0 1 33.6 51.8c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-14 25.5 21.9 19a56.76 56.76 0 0 1 19.6 43c0 19.1-11 37.5-28.8 48.4z")),t.DownCircleOutline=u("down-circle",i,l(o,"M690 405h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 563.6 406.8 418.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3.1-12.7-6.4-12.7z","M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")),t.DownSquareOutline=u("down-square",i,l(o,"M505.5 658.7c3.2 4.4 9.7 4.4 12.9 0l178-246c3.8-5.3 0-12.7-6.5-12.7H643c-10.2 0-19.9 4.9-25.9 13.2L512 558.6 406.8 413.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246z","M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")),t.DribbbleSquareOutline=u("dribbble-square",i,l(o,"M498.6 432c-40.8-72.5-84.7-133.4-91.2-142.3-68.8 32.5-120.3 95.9-136.2 172.2 11 .2 112.4.7 227.4-29.9zm66.5 21.8c5.7 11.7 11.2 23.6 16.3 35.6 1.8 4.2 3.6 8.4 5.3 12.7 81.8-10.3 163.2 6.2 171.3 7.9-.5-58.1-21.3-111.4-55.5-153.3-5.3 7.1-46.5 60-137.4 97.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM512 800c-158.8 0-288-129.2-288-288s129.2-288 288-288 288 129.2 288 288-129.2 288-288 288zm89.7-259.1c32.2 88.4 45.3 160.4 47.8 175.4 55.2-37.3 94.5-96.4 105.4-164.9-8.4-2.6-76.1-22.8-153.2-10.5zm-72.5-26.4c3.2-1 6.4-2 9.7-2.9-6.2-14-12.9-28-19.9-41.7-122.8 36.8-242.1 35.2-252.8 35-.1 2.5-.1 5-.1 7.5 0 63.2 23.9 120.9 63.2 164.5 5.5-9.6 73-121.4 199.9-162.4zm145.9-186.2a245.2 245.2 0 0 0-220.8-55.1c6.8 9.1 51.5 69.9 91.8 144 87.5-32.8 124.5-82.6 129-88.9zM554 552.8c-138.7 48.3-188.6 144.6-193 153.6 41.7 32.5 94.1 51.9 151 51.9 34.1 0 66.6-6.9 96.1-19.5-3.7-21.6-17.9-96.8-52.5-186.6l-1.6.6z")),t.EnvironmentOutline=u("environment",i,l(o,"M854.6 289.1a362.49 362.49 0 0 0-79.9-115.7 370.83 370.83 0 0 0-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 0 0 169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0 0 22.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 880.2c-65.9-41.9-300-207.8-300-449.1 0-77.9 31.1-151.1 87.6-206.3C356.3 169.5 431.7 139 512 139s155.7 30.5 212.4 85.9C780.9 280 812 353.2 812 431.1c0 241.3-234.1 407.2-300 449.1zm0-617.2c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 551c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 439c0-29.9 11.7-58 32.8-79.2C454 338.6 482.1 327 512 327c29.9 0 58 11.6 79.2 32.8C612.4 381 624 409.1 624 439c0 29.9-11.6 58-32.8 79.2z")),t.EditOutline=u("edit",i,l(o,"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z")),t.ExclamationCircleOutline=u("exclamation-circle",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z","M464 688a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z")),t.ExperimentOutline=u("experiment",i,l(o,"M512 472a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm367 352.9L696.3 352V178H768v-68H256v68h71.7v174L145 824.9c-2.8 7.4-4.3 15.2-4.3 23.1 0 35.3 28.7 64 64 64h614.6c7.9 0 15.7-1.5 23.1-4.3 33-12.7 49.4-49.8 36.6-82.8zM395.7 364.7V180h232.6v184.7L719.2 600c-20.7-5.3-42.1-8-63.9-8-61.2 0-119.2 21.5-165.3 60a188.78 188.78 0 0 1-121.3 43.9c-32.7 0-64.1-8.3-91.8-23.7l118.8-307.5zM210.5 844l41.7-107.8c35.7 18.1 75.4 27.8 116.6 27.8 61.2 0 119.2-21.5 165.3-60 33.9-28.2 76.3-43.9 121.3-43.9 35 0 68.4 9.5 97.6 27.1L813.5 844h-603z")),t.EyeInvisibleOutline=u("eye-invisible",i,l(o,"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5zm-63.57-320.64L836 122.88a8 8 0 0 0-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 0 0 0 11.31L155.17 889a8 8 0 0 0 11.31 0l712.15-712.12a8 8 0 0 0 0-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 0 0-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 0 1 146.2-106.69L401.31 546.2A112 112 0 0 1 396 512z","M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 0 0 227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 0 1-112 112z")),t.EyeOutline=u("eye",i,l(o,"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z")),t.FacebookOutline=u("facebook",i,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-32 736H663.9V602.2h104l15.6-120.7H663.9v-77.1c0-35 9.7-58.8 59.8-58.8h63.9v-108c-11.1-1.5-49-4.8-93.2-4.8-92.2 0-155.3 56.3-155.3 159.6v89H434.9v120.7h104.3V848H176V176h672v672z")),t.FastBackwardOutline=u("fast-backward",i,l(r,"M517.6 273.5L230.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm320 0L550.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm-620-25.5h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z")),t.FastForwardOutline=u("fast-forward",i,l(r,"M793.8 499.3L506.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.6c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8a16.14 16.14 0 0 0 0-25.4zm-320 0L186.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.5c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8c4.1-3.2 6.2-8 6.2-12.7 0-4.6-2.1-9.4-6.2-12.6zM857.6 248h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z")),t.FileAddOutline=u("file-add",i,l(o,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM544 472c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V644h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V472z")),t.FileExcelOutline=u("file-excel",i,l(o,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM514.1 580.1l-61.8-102.4c-2.2-3.6-6.1-5.8-10.3-5.8h-38.4c-2.3 0-4.5.6-6.4 1.9-5.6 3.5-7.3 10.9-3.7 16.6l82.3 130.4-83.4 132.8a12.04 12.04 0 0 0 10.2 18.4h34.5c4.2 0 8-2.2 10.2-5.7L510 664.8l62.3 101.4c2.2 3.6 6.1 5.7 10.2 5.7H620c2.3 0 4.5-.7 6.5-1.9 5.6-3.6 7.2-11 3.6-16.6l-84-130.4 85.3-132.5a12.04 12.04 0 0 0-10.1-18.5h-35.7c-4.2 0-8.1 2.2-10.3 5.8l-61.2 102.3z")),t.FileExclamationOutline=u("file-exclamation",i,l(o,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM472 744a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm16-104h48c4.4 0 8-3.6 8-8V448c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8z")),t.FileImageOutline=u("file-image",i,l(o,"M553.1 509.1l-77.8 99.2-41.1-52.4a8 8 0 0 0-12.6 0l-99.8 127.2a7.98 7.98 0 0 0 6.3 12.9H696c6.7 0 10.4-7.7 6.3-12.9l-136.5-174a8.1 8.1 0 0 0-12.7 0zM360 442a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm494.6-153.4L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z")),t.FileMarkdownOutline=u("file-markdown",i,l(o,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM429 481.2c-1.9-4.4-6.2-7.2-11-7.2h-35c-6.6 0-12 5.4-12 12v272c0 6.6 5.4 12 12 12h27.1c6.6 0 12-5.4 12-12V582.1l66.8 150.2a12 12 0 0 0 11 7.1H524c4.7 0 9-2.8 11-7.1l66.8-150.6V758c0 6.6 5.4 12 12 12H641c6.6 0 12-5.4 12-12V486c0-6.6-5.4-12-12-12h-34.7c-4.8 0-9.1 2.8-11 7.2l-83.1 191-83.2-191z")),t.FilePptOutline=u("file-ppt",i,l(o,"M424 476c-4.4 0-8 3.6-8 8v276c0 4.4 3.6 8 8 8h32.5c4.4 0 8-3.6 8-8v-95.5h63.3c59.4 0 96.2-38.9 96.2-94.1 0-54.5-36.3-94.3-96-94.3H424zm150.6 94.3c0 43.4-26.5 54.3-71.2 54.3h-38.9V516.2h56.2c33.8 0 53.9 19.7 53.9 54.1zm280-281.7L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z")),t.FileTextOutline=u("file-text",i,l(o,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z")),t.FilePdfOutline=u("file-pdf",i,l(o,"M531.3 574.4l.3-1.4c5.8-23.9 13.1-53.7 7.4-80.7-3.8-21.3-19.5-29.6-32.9-30.2-15.8-.7-29.9 8.3-33.4 21.4-6.6 24-.7 56.8 10.1 98.6-13.6 32.4-35.3 79.5-51.2 107.5-29.6 15.3-69.3 38.9-75.2 68.7-1.2 5.5.2 12.5 3.5 18.8 3.7 7 9.6 12.4 16.5 15 3 1.1 6.6 2 10.8 2 17.6 0 46.1-14.2 84.1-79.4 5.8-1.9 11.8-3.9 17.6-5.9 27.2-9.2 55.4-18.8 80.9-23.1 28.2 15.1 60.3 24.8 82.1 24.8 21.6 0 30.1-12.8 33.3-20.5 5.6-13.5 2.9-30.5-6.2-39.6-13.2-13-45.3-16.4-95.3-10.2-24.6-15-40.7-35.4-52.4-65.8zM421.6 726.3c-13.9 20.2-24.4 30.3-30.1 34.7 6.7-12.3 19.8-25.3 30.1-34.7zm87.6-235.5c5.2 8.9 4.5 35.8.5 49.4-4.9-19.9-5.6-48.1-2.7-51.4.8.1 1.5.7 2.2 2zm-1.6 120.5c10.7 18.5 24.2 34.4 39.1 46.2-21.6 4.9-41.3 13-58.9 20.2-4.2 1.7-8.3 3.4-12.3 5 13.3-24.1 24.4-51.4 32.1-71.4zm155.6 65.5c.1.2.2.5-.4.9h-.2l-.2.3c-.8.5-9 5.3-44.3-8.6 40.6-1.9 45 7.3 45.1 7.4zm191.4-388.2L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z")),t.FileZipOutline=u("file-zip",i,l(o,"M296 392h64v64h-64zm0 190v160h128V582h-64v-62h-64v62zm80 48v64h-32v-64h32zm-16-302h64v64h-64zm-64-64h64v64h-64zm64 192h64v64h-64zm0-256h64v64h-64zm494.6 88.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h64v64h64v-64h174v216a42 42 0 0 0 42 42h216v494z")),t.FileOutline=u("file",i,l(o,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z")),t.FilterOutline=u("filter",i,l(o,"M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V642h182.9v156zm9.6-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z")),t.FileWordOutline=u("file-word",i,l(o,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM528.1 472h-32.2c-5.5 0-10.3 3.7-11.6 9.1L434.6 680l-46.1-198.7c-1.3-5.4-6.1-9.3-11.7-9.3h-35.4a12.02 12.02 0 0 0-11.6 15.1l74.2 276c1.4 5.2 6.2 8.9 11.6 8.9h32c5.4 0 10.2-3.6 11.6-8.9l52.8-197 52.8 197c1.4 5.2 6.2 8.9 11.6 8.9h31.8c5.4 0 10.2-3.6 11.6-8.9l74.4-276a12.04 12.04 0 0 0-11.6-15.1H647c-5.6 0-10.4 3.9-11.7 9.3l-45.8 199.1-49.8-199.3c-1.3-5.4-6.1-9.1-11.6-9.1z")),t.FireOutline=u("fire",i,l(o,"M834.1 469.2A347.49 347.49 0 0 0 751.2 354l-29.1-26.7a8.09 8.09 0 0 0-13 3.3l-13 37.3c-8.1 23.4-23 47.3-44.1 70.8-1.4 1.5-3 1.9-4.1 2-1.1.1-2.8-.1-4.3-1.5-1.4-1.2-2.1-3-2-4.8 3.7-60.2-14.3-128.1-53.7-202C555.3 171 510 123.1 453.4 89.7l-41.3-24.3c-5.4-3.2-12.3 1-12 7.3l2.2 48c1.5 32.8-2.3 61.8-11.3 85.9-11 29.5-26.8 56.9-47 81.5a295.64 295.64 0 0 1-47.5 46.1 352.6 352.6 0 0 0-100.3 121.5A347.75 347.75 0 0 0 160 610c0 47.2 9.3 92.9 27.7 136a349.4 349.4 0 0 0 75.5 110.9c32.4 32 70 57.2 111.9 74.7C418.5 949.8 464.5 959 512 959s93.5-9.2 136.9-27.3A348.6 348.6 0 0 0 760.8 857c32.4-32 57.8-69.4 75.5-110.9a344.2 344.2 0 0 0 27.7-136c0-48.8-10-96.2-29.9-140.9zM713 808.5c-53.7 53.2-125 82.4-201 82.4s-147.3-29.2-201-82.4c-53.5-53.1-83-123.5-83-198.4 0-43.5 9.8-85.2 29.1-124 18.8-37.9 46.8-71.8 80.8-97.9a349.6 349.6 0 0 0 58.6-56.8c25-30.5 44.6-64.5 58.2-101a240 240 0 0 0 12.1-46.5c24.1 22.2 44.3 49 61.2 80.4 33.4 62.6 48.8 118.3 45.8 165.7a74.01 74.01 0 0 0 24.4 59.8 73.36 73.36 0 0 0 53.4 18.8c19.7-1 37.8-9.7 51-24.4 13.3-14.9 24.8-30.1 34.4-45.6 14 17.9 25.7 37.4 35 58.4 15.9 35.8 24 73.9 24 113.1 0 74.9-29.5 145.4-83 198.4z")),t.FileUnknownOutline=u("file-unknown",i,l(o,"M854.6 288.7L639.4 73.4c-6-6-14.2-9.4-22.7-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.6-9.4-22.6zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM402 549c0 5.4 4.4 9.5 9.8 9.5h32.4c5.4 0 9.8-4.2 9.8-9.4 0-28.2 25.8-51.6 58-51.6s58 23.4 58 51.5c0 25.3-21 47.2-49.3 50.9-19.3 2.8-34.5 20.3-34.7 40.1v32c0 5.5 4.5 10 10 10h32c5.5 0 10-4.5 10-10v-12.2c0-6 4-11.5 9.7-13.3 44.6-14.4 75-54 74.3-98.9-.8-55.5-49.2-100.8-108.5-101.6-61.4-.7-111.5 45.6-111.5 103zm78 195a32 32 0 1 0 64 0 32 32 0 1 0-64 0z")),t.FlagOutline=u("flag",i,l(o,"M880 305H624V192c0-17.7-14.3-32-32-32H184v-40c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V640h248v113c0 17.7 14.3 32 32 32h416c17.7 0 32-14.3 32-32V337c0-17.7-14.3-32-32-32zM184 568V232h368v336H184zm656 145H504v-73h112c4.4 0 8-3.6 8-8V377h216v336z")),t.FolderAddOutline=u("folder-add",i,l(o,"M484 443.1V528h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H484v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V584h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H540v-84.9c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1zm396-144.7H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z")),t.FolderOutline=u("folder",i,l(o,"M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z")),t.FolderOpenOutline=u("folder-open",i,l(o,"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z")),t.ForwardOutline=u("forward",i,l(r,"M825.8 498L538.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L825.8 526c8.3-7.2 8.3-20.8 0-28zm-320 0L218.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L505.8 526c4.1-3.6 6.2-8.8 6.2-14 0-5.2-2.1-10.4-6.2-14z")),t.FrownOutline=u("frown",i,l(o,"M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM512 533c-85.5 0-155.6 67.3-160 151.6a8 8 0 0 0 8 8.4h48.1c4.2 0 7.8-3.2 8.1-7.4C420 636.1 461.5 597 512 597s92.1 39.1 95.8 88.6c.3 4.2 3.9 7.4 8.1 7.4H664a8 8 0 0 0 8-8.4C667.6 600.3 597.5 533 512 533z")),t.FundOutline=u("fund",i,l(o,"M926 164H94c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V196c0-17.7-14.3-32-32-32zm-40 632H134V236h752v560zm-658.9-82.3c3.1 3.1 8.2 3.1 11.3 0l172.5-172.5 114.4 114.5c3.1 3.1 8.2 3.1 11.3 0l297-297.2c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8a8.03 8.03 0 0 0-11.3 0L531 565 416.6 450.5a8.03 8.03 0 0 0-11.3 0l-214.9 215a8.03 8.03 0 0 0 0 11.3l36.7 36.9z")),t.FunnelPlotOutline=u("funnel-plot",i,l(o,"M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 607.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V607.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V650h182.9v148zm9.6-226.6l-8.4 14.6H419.3l-8.4-14.6L334.4 438h355.2L613 571.4zM726.3 374H297.7l-85-148h598.6l-85 148z")),t.GiftOutline=u("gift",i,l(o,"M880 310H732.4c13.6-21.4 21.6-46.8 21.6-74 0-76.1-61.9-138-138-138-41.4 0-78.7 18.4-104 47.4-25.3-29-62.6-47.4-104-47.4-76.1 0-138 61.9-138 138 0 27.2 7.9 52.6 21.6 74H144c-17.7 0-32 14.3-32 32v200c0 4.4 3.6 8 8 8h40v344c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V550h40c4.4 0 8-3.6 8-8V342c0-17.7-14.3-32-32-32zm-334-74c0-38.6 31.4-70 70-70s70 31.4 70 70-31.4 70-70 70h-70v-70zm-138-70c38.6 0 70 31.4 70 70v70h-70c-38.6 0-70-31.4-70-70s31.4-70 70-70zM180 482V378h298v104H180zm48 68h250v308H228V550zm568 308H546V550h250v308zm48-376H546V378h298v104z")),t.GithubOutline=u("github",i,l(o,"M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9a127.5 127.5 0 0 1 38.1 91v112.5c.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z")),t.GitlabOutline=u("gitlab",i,l(o,"M913.9 552.2L805 181.4v-.1c-7.6-22.9-25.7-36.5-48.3-36.5-23.4 0-42.5 13.5-49.7 35.2l-71.4 213H388.8l-71.4-213c-7.2-21.7-26.3-35.2-49.7-35.2-23.1 0-42.5 14.8-48.4 36.6L110.5 552.2c-4.4 14.7 1.2 31.4 13.5 40.7l368.5 276.4c2.6 3.6 6.2 6.3 10.4 7.8l8.6 6.4 8.5-6.4c4.9-1.7 9-4.7 11.9-8.9l368.4-275.4c12.4-9.2 18-25.9 13.6-40.6zM751.7 193.4c1-1.8 2.9-1.9 3.5-1.9 1.1 0 2.5.3 3.4 3L818 394.3H684.5l67.2-200.9zm-487.4 1c.9-2.6 2.3-2.9 3.4-2.9 2.7 0 2.9.1 3.4 1.7l67.3 201.2H206.5l57.8-200zM158.8 558.7l28.2-97.3 202.4 270.2-230.6-172.9zm73.9-116.4h122.1l90.8 284.3-212.9-284.3zM512.9 776L405.7 442.3H620L512.9 776zm157.9-333.7h119.5L580 723.1l90.8-280.8zm-40.7 293.9l207.3-276.7 29.5 99.2-236.8 177.5z")),t.HeartOutline=u("heart",i,l(o,"M923 283.6a260.04 260.04 0 0 0-56.9-82.8 264.4 264.4 0 0 0-84-55.5A265.34 265.34 0 0 0 679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 0 0-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z")),t.HddOutline=u("hdd",i,l(o,"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-600 72h560v208H232V136zm560 480H232V408h560v208zm0 272H232V680h560v208zM496 208H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 544h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm328 244a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")),t.HighlightOutline=u("highlight",i,l(o,"M957.6 507.4L603.2 158.2a7.9 7.9 0 0 0-11.2 0L353.3 393.4a8.03 8.03 0 0 0-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 0 0-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8V860c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6 40.4 39.8a7.9 7.9 0 0 0 11.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0 0 11.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2zM389.8 796.2H229.6l134.4-133 80.1 78.9-54.3 54.1zm154.8-62.1L373.2 565.2l68.6-67.6 171.4 168.9-68.6 67.6zM713.1 658L450.3 399.1 597.6 254l262.8 259-147.3 145z")),t.HomeOutline=u("home",i,l(o,"M946.5 505L560.1 118.8l-25.9-25.9a31.5 31.5 0 0 0-44.4 0L77.5 505a63.9 63.9 0 0 0-18.8 46c.4 35.2 29.7 63.3 64.9 63.3h42.5V940h691.8V614.3h43.4c17.1 0 33.2-6.7 45.3-18.8a63.6 63.6 0 0 0 18.7-45.3c0-17-6.7-33.1-18.8-45.2zM568 868H456V664h112v204zm217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l370-369.7 23.1 23.1L882 542.3h-96.1z")),t.HourglassOutline=u("hourglass",i,l(o,"M742 318V184h86c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h86v134c0 81.5 42.4 153.2 106.4 194-64 40.8-106.4 112.5-106.4 194v134h-86c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h632c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-86V706c0-81.5-42.4-153.2-106.4-194 64-40.8 106.4-112.5 106.4-194zm-72 388v134H354V706c0-42.2 16.4-81.9 46.3-111.7C430.1 564.4 469.8 548 512 548s81.9 16.4 111.7 46.3C653.6 624.1 670 663.8 670 706zm0-388c0 42.2-16.4 81.9-46.3 111.7C593.9 459.6 554.2 476 512 476s-81.9-16.4-111.7-46.3A156.63 156.63 0 0 1 354 318V184h316v134z")),t.Html5Outline=u("html5",i,l(o,"M145 96l66 746.6L511.8 928l299.6-85.4L878.7 96H145zm610.9 700.6l-244.1 69.6-245.2-69.6-56.7-641.2h603.8l-57.8 641.2zM281 249l1.7 24.3 22.7 253.5h206.5v-.1h112.9l-11.4 118.5L511 672.9v.2h-.8l-102.4-27.7-6.5-73.2h-91l11.3 144.7 188.6 52h1.7v-.4l187.7-51.7 1.7-16.3 21.2-242.2 3.2-24.3H511v.2H389.9l-8.2-94.2h352.1l1.7-19.5 4.8-47.2L742 249H511z")),t.IdcardOutline=u("idcard",i,l(o,"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560zM610.3 476h123.4c1.3 0 2.3-3.6 2.3-8v-48c0-4.4-1-8-2.3-8H610.3c-1.3 0-2.3 3.6-2.3 8v48c0 4.4 1 8 2.3 8zm4.8 144h185.7c3.9 0 7.1-3.6 7.1-8v-48c0-4.4-3.2-8-7.1-8H615.1c-3.9 0-7.1 3.6-7.1 8v48c0 4.4 3.2 8 7.1 8zM224 673h43.9c4.2 0 7.6-3.3 7.9-7.5 3.8-50.5 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H522a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.6-126.1a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1c-.4 4.6 3.2 8.4 7.8 8.4zm149-262c28.5 0 51.7 23.3 51.7 52s-23.2 52-51.7 52-51.7-23.3-51.7-52 23.2-52 51.7-52z")),t.InfoCircleOutline=u("info-circle",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z","M464 336a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z")),t.InstagramOutline=u("instagram",i,l(o,"M512 306.9c-113.5 0-205.1 91.6-205.1 205.1S398.5 717.1 512 717.1 717.1 625.5 717.1 512 625.5 306.9 512 306.9zm0 338.4c-73.4 0-133.3-59.9-133.3-133.3S438.6 378.7 512 378.7 645.3 438.6 645.3 512 585.4 645.3 512 645.3zm213.5-394.6c-26.5 0-47.9 21.4-47.9 47.9s21.4 47.9 47.9 47.9 47.9-21.3 47.9-47.9a47.84 47.84 0 0 0-47.9-47.9zM911.8 512c0-55.2.5-109.9-2.6-165-3.1-64-17.7-120.8-64.5-167.6-46.9-46.9-103.6-61.4-167.6-64.5-55.2-3.1-109.9-2.6-165-2.6-55.2 0-109.9-.5-165 2.6-64 3.1-120.8 17.7-167.6 64.5C132.6 226.3 118.1 283 115 347c-3.1 55.2-2.6 109.9-2.6 165s-.5 109.9 2.6 165c3.1 64 17.7 120.8 64.5 167.6 46.9 46.9 103.6 61.4 167.6 64.5 55.2 3.1 109.9 2.6 165 2.6 55.2 0 109.9.5 165-2.6 64-3.1 120.8-17.7 167.6-64.5 46.9-46.9 61.4-103.6 64.5-167.6 3.2-55.1 2.6-109.8 2.6-165zm-88 235.8c-7.3 18.2-16.1 31.8-30.2 45.8-14.1 14.1-27.6 22.9-45.8 30.2C695.2 844.7 570.3 840 512 840c-58.3 0-183.3 4.7-235.9-16.1-18.2-7.3-31.8-16.1-45.8-30.2-14.1-14.1-22.9-27.6-30.2-45.8C179.3 695.2 184 570.3 184 512c0-58.3-4.7-183.3 16.1-235.9 7.3-18.2 16.1-31.8 30.2-45.8s27.6-22.9 45.8-30.2C328.7 179.3 453.7 184 512 184s183.3-4.7 235.9 16.1c18.2 7.3 31.8 16.1 45.8 30.2 14.1 14.1 22.9 27.6 30.2 45.8C844.7 328.7 840 453.7 840 512c0 58.3 4.7 183.2-16.2 235.8z")),t.InsuranceOutline=u("insurance",i,l(o,"M441.6 306.8L403 288.6a6.1 6.1 0 0 0-8.4 3.7c-17.5 58.5-45.2 110.1-82.2 153.6a6.05 6.05 0 0 0-1.2 5.6l13.2 43.5c1.3 4.4 7 5.7 10.2 2.4 7.7-8.1 15.4-16.9 23.1-26V656c0 4.4 3.6 8 8 8H403c4.4 0 8-3.6 8-8V393.1a429.2 429.2 0 0 0 33.6-79c1-2.9-.3-6-3-7.3zm26.8 9.2v127.2c0 4.4 3.6 8 8 8h65.9v18.6h-94.9c-4.4 0-8 3.6-8 8v35.6c0 4.4 3.6 8 8 8h55.1c-19.1 30.8-42.4 55.7-71 76a6 6 0 0 0-1.6 8.1l22.8 36.5c1.9 3.1 6.2 3.8 8.9 1.4 31.6-26.8 58.7-62.9 80.6-107.6v120c0 4.4 3.6 8 8 8h36.2c4.4 0 8-3.6 8-8V536c21.3 41.7 47.5 77.5 78.1 106.9 2.6 2.5 6.8 2.1 8.9-.7l26.3-35.3c2-2.7 1.4-6.5-1.2-8.4-30.5-22.6-54.2-47.8-72.3-76.9h59c4.4 0 8-3.6 8-8V478c0-4.4-3.6-8-8-8h-98.8v-18.6h66.7c4.4 0 8-3.6 8-8V316c0-4.4-3.6-8-8-8H476.4c-4.4 0-8 3.6-8 8zm51.5 42.8h97.9v41.6h-97.9v-41.6zm347-188.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z")),t.InteractionOutline=u("interaction",i,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z")),t.InterationOutline=u("interation",i,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z")),t.LayoutOutline=u("layout",i,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-696 72h136v656H184V184zm656 656H384V384h456v456zM384 320V184h456v136H384z")),t.LeftCircleOutline=u("left-circle",i,l(o,"M603.3 327.5l-246 178a7.95 7.95 0 0 0 0 12.9l246 178c5.3 3.8 12.7 0 12.7-6.5V643c0-10.2-4.9-19.9-13.2-25.9L457.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5z","M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")),t.LeftSquareOutline=u("left-square",i,l(o,"M365.3 518.5l246 178c5.3 3.8 12.7 0 12.7-6.5v-46.9c0-10.2-4.9-19.9-13.2-25.9L465.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5l-246 178a8.05 8.05 0 0 0 0 13z","M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")),t.LikeOutline=u("like",i,l(o,"M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 0 0-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 0 0 471 99.9c-52 0-98 35-111.8 85.1l-85.9 311H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h601.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM184 852V568h81v284h-81zm636.4-353l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 22.4-13.2 42.6-33.6 51.8H329V564.8l99.5-360.5a44.1 44.1 0 0 1 42.2-32.3c7.6 0 15.1 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.2 32.1-19.6 43z")),t.LinkedinOutline=u("linkedin",i,l(o,"M847.7 112H176.3c-35.5 0-64.3 28.8-64.3 64.3v671.4c0 35.5 28.8 64.3 64.3 64.3h671.4c35.5 0 64.3-28.8 64.3-64.3V176.3c0-35.5-28.8-64.3-64.3-64.3zm0 736c-447.8-.1-671.7-.2-671.7-.3.1-447.8.2-671.7.3-671.7 447.8.1 671.7.2 671.7.3-.1 447.8-.2 671.7-.3 671.7zM230.6 411.9h118.7v381.8H230.6zm59.4-52.2c37.9 0 68.8-30.8 68.8-68.8a68.8 68.8 0 1 0-137.6 0c-.1 38 30.7 68.8 68.8 68.8zm252.3 245.1c0-49.8 9.5-98 71.2-98 60.8 0 61.7 56.9 61.7 101.2v185.7h118.6V584.3c0-102.8-22.2-181.9-142.3-181.9-57.7 0-96.4 31.7-112.3 61.7h-1.6v-52.2H423.7v381.8h118.6V604.8z")),t.LockOutline=u("lock",i,l(o,"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z")),t.MedicineBoxOutline=u("medicine-box",i,l(o,"M839.2 278.1a32 32 0 0 0-30.4-22.1H736V144c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32v112h-72.8a31.9 31.9 0 0 0-30.4 22.1L112 502v378c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V502l-72.8-223.9zM360 184h304v72H360v-72zm480 656H184V513.4L244.3 328h535.4L840 513.4V840zM652 572H544V464c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V636h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z")),t.MehOutline=u("meh",i,l(o,"M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 565H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z")),t.MailOutline=u("mail",i,l(o,"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 110.8V792H136V270.8l-27.6-21.5 39.3-50.5 42.8 33.3h643.1l42.8-33.3 39.3 50.5-27.7 21.5zM833.6 232L512 482 190.4 232l-42.8-33.3-39.3 50.5 27.6 21.5 341.6 265.6a55.99 55.99 0 0 0 68.7 0L888 270.8l27.6-21.5-39.3-50.5-42.7 33.2z")),t.MessageOutline=u("message",i,l(o,"M464 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm200 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm-400 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm661.2-173.6c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 0 0-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 0 0-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 0 0 112 714v152a46 46 0 0 0 46 46h152.1A449.4 449.4 0 0 0 510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 0 0 142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z")),t.MinusCircleOutline=u("minus-circle",i,l(o,"M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z","M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")),t.MinusSquareOutline=u("minus-square",i,l(o,"M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z","M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")),t.MobileOutline=u("mobile",i,l(o,"M744 62H280c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h464c35.3 0 64-28.7 64-64V126c0-35.3-28.7-64-64-64zm-8 824H288V134h448v752zM472 784a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")),t.MoneyCollectOutline=u("money-collect",i,l(o,"M911.5 700.7a8 8 0 0 0-10.3-4.8L840 718.2V180c0-37.6-30.4-68-68-68H252c-37.6 0-68 30.4-68 68v538.2l-61.3-22.3c-.9-.3-1.8-.5-2.7-.5-4.4 0-8 3.6-8 8V763c0 3.3 2.1 6.3 5.3 7.5L501 910.1c7.1 2.6 14.8 2.6 21.9 0l383.8-139.5c3.2-1.2 5.3-4.2 5.3-7.5v-59.6c0-1-.2-1.9-.5-2.8zM512 837.5l-256-93.1V184h512v560.4l-256 93.1zM660.6 312h-54.5c-3 0-5.8 1.7-7.1 4.4l-84.7 168.8H511l-84.7-168.8a8 8 0 0 0-7.1-4.4h-55.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.8l103.9 191.6h-57c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76V704c0 4.4 3.6 8 8 8h49.9c4.4 0 8-3.6 8-8v-63.5h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8H564l103.7-191.6c.6-1.2 1-2.5 1-3.8-.1-4.3-3.7-7.9-8.1-7.9z")),t.PauseCircleOutline=u("pause-circle",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm-88-532h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zm224 0h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z")),t.PayCircleOutline=u("pay-circle",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm159.6-585h-59.5c-3 0-5.8 1.7-7.1 4.4l-90.6 180H511l-90.6-180a8 8 0 0 0-7.1-4.4h-60.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.9L457 515.7h-61.4c-4.4 0-8 3.6-8 8v29.9c0 4.4 3.6 8 8 8h81.7V603h-81.7c-4.4 0-8 3.6-8 8v29.9c0 4.4 3.6 8 8 8h81.7V717c0 4.4 3.6 8 8 8h54.3c4.4 0 8-3.6 8-8v-68.1h82c4.4 0 8-3.6 8-8V611c0-4.4-3.6-8-8-8h-82v-41.5h82c4.4 0 8-3.6 8-8v-29.9c0-4.4-3.6-8-8-8h-62l111.1-204.8c.6-1.2 1-2.5 1-3.8-.1-4.4-3.7-8-8.1-8z")),t.NotificationOutline=u("notification",i,l(o,"M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.7c-3.7 11.6-5.7 23.9-5.7 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1zm496 58.4L318.8 611.3l-12.9-5.2H184V417.9h121.9l12.9-5.2L840 203.3v617.4z")),t.PhoneOutline=u("phone",i,l(o,"M877.1 238.7L770.6 132.3c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L558.3 246.8c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l89.6 89.7a405.46 405.46 0 0 1-86.4 127.3c-36.7 36.9-79.6 66-127.2 86.6l-89.6-89.7c-13-13-30.4-20.3-48.8-20.3a68.2 68.2 0 0 0-48.8 20.3L132.3 673c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l106.4 106.4c22.2 22.2 52.8 34.9 84.2 34.9 6.5 0 12.8-.5 19.2-1.6 132.4-21.8 263.8-92.3 369.9-198.3C818 606 888.4 474.6 910.4 342.1c6.3-37.6-6.3-76.3-33.3-103.4zm-37.6 91.5c-19.5 117.9-82.9 235.5-178.4 331s-213 158.9-330.9 178.4c-14.8 2.5-30-2.5-40.8-13.2L184.9 721.9 295.7 611l119.8 120 .9.9 21.6-8a481.29 481.29 0 0 0 285.7-285.8l8-21.6-120.8-120.7 110.8-110.9 104.5 104.5c10.8 10.8 15.8 26 13.3 40.8z")),t.PictureOutline=u("picture",i,l(o,"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2zM304 456a88 88 0 1 0 0-176 88 88 0 0 0 0 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z")),t.PieChartOutline=u("pie-chart",i,l(o,"M864 518H506V160c0-4.4-3.6-8-8-8h-26a398.46 398.46 0 0 0-282.8 117.1 398.19 398.19 0 0 0-85.7 127.1A397.61 397.61 0 0 0 72 552a398.46 398.46 0 0 0 117.1 282.8c36.7 36.7 79.5 65.6 127.1 85.7A397.61 397.61 0 0 0 472 952a398.46 398.46 0 0 0 282.8-117.1c36.7-36.7 65.6-79.5 85.7-127.1A397.61 397.61 0 0 0 872 552v-26c0-4.4-3.6-8-8-8zM705.7 787.8A331.59 331.59 0 0 1 470.4 884c-88.1-.4-170.9-34.9-233.2-97.2C174.5 724.1 140 640.7 140 552c0-88.7 34.5-172.1 97.2-234.8 54.6-54.6 124.9-87.9 200.8-95.5V586h364.3c-7.7 76.3-41.3 147-96.6 201.8zM952 462.4l-2.6-28.2c-8.5-92.1-49.4-179-115.2-244.6A399.4 399.4 0 0 0 589 74.6L560.7 72c-4.7-.4-8.7 3.2-8.7 7.9V464c0 4.4 3.6 8 8 8l384-1c4.7 0 8.4-4 8-8.6zm-332.2-58.2V147.6a332.24 332.24 0 0 1 166.4 89.8c45.7 45.6 77 103.6 90 166.1l-256.4.7z")),t.PlaySquareOutline=u("play-square",i,l(o,"M442.3 677.6l199.4-156.7a11.3 11.3 0 0 0 0-17.7L442.3 346.4c-7.4-5.8-18.3-.6-18.3 8.8v313.5c0 9.4 10.9 14.7 18.3 8.9z","M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")),t.PlayCircleOutline=u("play-circle",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z","M719.4 499.1l-296.1-215A15.9 15.9 0 0 0 398 297v430c0 13.1 14.8 20.5 25.3 12.9l296.1-215a15.9 15.9 0 0 0 0-25.8zm-257.6 134V390.9L628.5 512 461.8 633.1z")),t.PlusCircleOutline=u("plus-circle",i,l(o,"M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z","M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")),t.PrinterOutline=u("printer",i,l(o,"M820 436h-40c-4.4 0-8 3.6-8 8v40c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-40c0-4.4-3.6-8-8-8zm32-104H732V120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM360 180h304v152H360V180zm304 664H360V568h304v276zm200-140H732V500H292v204H160V412c0-6.6 5.4-12 12-12h680c6.6 0 12 5.4 12 12v292z")),t.PlusSquareOutline=u("plus-square",i,l(o,"M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z","M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")),t.ProfileOutline=u("profile",i,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM492 400h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM340 368a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 144a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 144a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")),t.ProjectOutline=u("project",i,l(o,"M280 752h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8zm192-280h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm192 72h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v256c0 4.4 3.6 8 8 8zm216-432H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")),t.PushpinOutline=u("pushpin",i,l(o,"M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3a33.23 33.23 0 0 0-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8zM666.2 549.3l-24.5 24.5 3.8 34.4a259.92 259.92 0 0 1-30.4 153.9L262 408.8c12.9-7.1 26.3-13.1 40.3-17.9 27.2-9.4 55.7-14.1 84.7-14.1 9.6 0 19.3.5 28.9 1.6l34.4 3.8 24.5-24.5L608.5 224 800 415.5 666.2 549.3z")),t.PropertySafetyOutline=u("property-safety",i,l(o,"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zM430.5 318h-46c-1.7 0-3.3.4-4.8 1.2a10.1 10.1 0 0 0-4 13.6l88 161.1h-45.2c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1v29.7h-63.1c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1V658c0 5.5 4.5 10 10 10h41.3c5.5 0 10-4.5 10-10v-51.8h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-63.4v-29.7h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-45.7l87.7-161.1a10.05 10.05 0 0 0-8.8-14.8h-45c-3.8 0-7.2 2.1-8.9 5.5l-73.2 144.3-72.9-144.3c-1.7-3.4-5.2-5.5-9-5.5z")),t.QuestionCircleOutline=u("question-circle",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z","M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0 1 30.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")),t.ReadOutline=u("read",i,l(o,"M928 161H699.2c-49.1 0-97.1 14.1-138.4 40.7L512 233l-48.8-31.3A255.2 255.2 0 0 0 324.8 161H96c-17.7 0-32 14.3-32 32v568c0 17.7 14.3 32 32 32h228.8c49.1 0 97.1 14.1 138.4 40.7l44.4 28.6c1.3.8 2.8 1.3 4.3 1.3s3-.4 4.3-1.3l44.4-28.6C602 807.1 650.1 793 699.2 793H928c17.7 0 32-14.3 32-32V193c0-17.7-14.3-32-32-32zM324.8 721H136V233h188.8c35.4 0 69.8 10.1 99.5 29.2l48.8 31.3 6.9 4.5v462c-47.6-25.6-100.8-39-155.2-39zm563.2 0H699.2c-54.4 0-107.6 13.4-155.2 39V298l6.9-4.5 48.8-31.3c29.7-19.1 64.1-29.2 99.5-29.2H888v488zM396.9 361H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5zm223.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c0-4.1-3.2-7.5-7.1-7.5H627.1c-3.9 0-7.1 3.4-7.1 7.5zM396.9 501H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5zm416 0H627.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5z")),t.ReconciliationOutline=u("reconciliation",i,l(o,"M676 565c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 126c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34zm204-523H668c0-30.9-25.1-56-56-56h-80c-30.9 0-56 25.1-56 56H264c-17.7 0-32 14.3-32 32v200h-88c-17.7 0-32 14.3-32 32v448c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-16h368c17.7 0 32-14.3 32-32V200c0-17.7-14.3-32-32-32zm-412 64h72v-56h64v56h72v48H468v-48zm-20 616H176V616h272v232zm0-296H176v-88h272v88zm392 240H512V432c0-17.7-14.3-32-32-32H304V240h100v104h336V240h100v552zM704 408v96c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-96c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8zM592 512h48c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z")),t.RedEnvelopeOutline=u("red-envelope",i,l(o,"M440.6 462.6a8.38 8.38 0 0 0-7.5-4.6h-48.8c-1.3 0-2.6.4-3.9 1a8.4 8.4 0 0 0-3.4 11.4l87.4 161.1H419c-4.6 0-8.4 3.8-8.4 8.4V665c0 4.6 3.8 8.4 8.4 8.4h63V702h-63c-4.6 0-8.4 3.8-8.4 8.4v25.1c0 4.6 3.8 8.4 8.4 8.4h63v49.9c0 4.6 3.8 8.4 8.4 8.4h43.7c4.6 0 8.4-3.8 8.4-8.4v-49.9h63.3c4.7 0 8.4-3.8 8.2-8.5v-25c0-4.6-3.8-8.4-8.4-8.4h-63.3v-28.6h63.3c4.6 0 8.4-3.8 8.4-8.4v-25.1c0-4.6-3.8-8.4-8.4-8.4h-45.9l87.2-161a8.45 8.45 0 0 0-7.4-12.4h-47.8c-3.1 0-6 1.8-7.5 4.6l-71.9 141.9-71.7-142zM832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V193.1l260.3 204.1c11.6 9.1 27.9 9.1 39.5 0L792 193.1V888zm0-751.3h-31.7L512 331.3 263.7 136.7H232v-.7h560v.7z")),t.RestOutline=u("rest",i,l(o,"M508 704c79.5 0 144-64.5 144-144s-64.5-144-144-144-144 64.5-144 144 64.5 144 144 144zm0-224c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z","M832 256h-28.1l-35.7-120.9c-4-13.7-16.5-23.1-30.7-23.1h-451c-14.3 0-26.8 9.4-30.7 23.1L220.1 256H192c-17.7 0-32 14.3-32 32v28c0 4.4 3.6 8 8 8h45.8l47.7 558.7a32 32 0 0 0 31.9 29.3h429.2a32 32 0 0 0 31.9-29.3L802.2 324H856c4.4 0 8-3.6 8-8v-28c0-17.7-14.3-32-32-32zm-518.6-76h397.2l22.4 76H291l22.4-76zm376.2 664H326.4L282 324h451.9l-44.3 520z")),t.RightCircleOutline=u("right-circle",i,l(o,"M666.7 505.5l-246-178A8 8 0 0 0 408 334v46.9c0 10.2 4.9 19.9 13.2 25.9L566.6 512 421.2 617.2c-8.3 6-13.2 15.6-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.5l246-178c4.4-3.2 4.4-9.8 0-13z","M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")),t.RocketOutline=u("rocket",i,l(o,"M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 0 0-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0 0 43.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0 0 43.1-30.5 97.52 97.52 0 0 0 21.4-60.8c0-8.4-1.1-16.4-3.1-23.8H864zM762.3 621.4c9.4 14.6 17 30.3 22.5 46.6H700V558.7a211.6 211.6 0 0 1 62.3 62.7zM388 483.1V318.8l124-147 124 147V668H388V483.1zM239.2 668c5.5-16.3 13.1-32 22.5-46.6 16.3-25.2 37.5-46.5 62.3-62.7V668h-84.8zm388.9 116.2c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5-38.3 0-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 0 1-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5zM464 400a48 48 0 1 0 96 0 48 48 0 1 0-96 0z")),t.RightSquareOutline=u("right-square",i,l(o,"M412.7 696.5l246-178c4.4-3.2 4.4-9.7 0-12.9l-246-178c-5.3-3.8-12.7 0-12.7 6.5V381c0 10.2 4.9 19.9 13.2 25.9L558.6 512 413.2 617.2c-8.3 6-13.2 15.6-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.5z","M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")),t.SafetyCertificateOutline=u("safety-certificate",i,l(o,"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zm-405.8-201c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.3 0-12.7-6.5-12.7h-55.2c-5.1 0-10 2.5-13 6.6L468.9 542.4l-64.7-89.1z")),t.ScheduleOutline=u("schedule",i,l(o,"M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496zM416 496H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 136H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm308.2-177.4L620.6 598.3l-52.8-73.1c-3-4.2-7.8-6.6-12.9-6.6H500c-6.5 0-10.3 7.4-6.5 12.7l114.1 158.2a15.9 15.9 0 0 0 25.8 0l165-228.7c3.8-5.3 0-12.7-6.5-12.7H737c-5-.1-9.8 2.4-12.8 6.5z")),t.SaveOutline=u("save",i,l(o,"M893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840zM512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z")),t.SecurityScanOutline=u("security-scan",i,l(o,"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zM402.9 528.8l-77.5 77.5a8.03 8.03 0 0 0 0 11.3l34 34c3.1 3.1 8.2 3.1 11.3 0l77.5-77.5c55.7 35.1 130.1 28.4 178.6-20.1 56.3-56.3 56.3-147.5 0-203.8-56.3-56.3-147.5-56.3-203.8 0-48.5 48.5-55.2 123-20.1 178.6zm65.4-133.3c31.3-31.3 82-31.3 113.2 0 31.3 31.3 31.3 82 0 113.2-31.3 31.3-82 31.3-113.2 0s-31.3-81.9 0-113.2z")),t.SettingOutline=u("setting",i,l(o,"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 0 0 9.3-35.2l-.9-2.6a443.74 443.74 0 0 0-79.7-137.9l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 0 0-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.4a351.86 351.86 0 0 0-99 57.4l-81.9-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a446.02 446.02 0 0 0-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0 0 35.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0 0 25.8 25.7l2.7.5a449.4 449.4 0 0 0 159 0l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-85a350 350 0 0 0 99.7-57.6l81.3 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 0 1-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 0 1-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 0 1 624 502c0 29.9-11.7 58-32.8 79.2z")),t.ShoppingOutline=u("shopping",i,l(o,"M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-432-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16H400v-16zm392 544H232V384h96v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h224v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h96v456z")),t.SkinOutline=u("skin",i,l(o,"M870 126H663.8c-17.4 0-32.9 11.9-37 29.3C614.3 208.1 567 246 512 246s-102.3-37.9-114.8-90.7a37.93 37.93 0 0 0-37-29.3H154a44 44 0 0 0-44 44v252a44 44 0 0 0 44 44h75v388a44 44 0 0 0 44 44h478a44 44 0 0 0 44-44V466h75a44 44 0 0 0 44-44V170a44 44 0 0 0-44-44zm-28 268H723v432H301V394H182V198h153.3c28.2 71.2 97.5 120 176.7 120s148.5-48.8 176.7-120H842v196z")),t.SkypeOutline=u("skype",i,l(o,"M883.7 578.6c4.1-22.5 6.3-45.5 6.3-68.5 0-51-10-100.5-29.7-147-19-45-46.3-85.4-81-120.1a375.79 375.79 0 0 0-120.1-80.9c-46.6-19.7-96-29.7-147-29.7-24 0-48.1 2.3-71.5 6.8A225.1 225.1 0 0 0 335.6 113c-59.7 0-115.9 23.3-158.1 65.5A222.25 222.25 0 0 0 112 336.6c0 38 9.8 75.4 28.1 108.4-3.7 21.4-5.7 43.3-5.7 65.1 0 51 10 100.5 29.7 147 19 45 46.2 85.4 80.9 120.1 34.7 34.7 75.1 61.9 120.1 80.9 46.6 19.7 96 29.7 147 29.7 22.2 0 44.4-2 66.2-5.9 33.5 18.9 71.3 29 110 29 59.7 0 115.9-23.2 158.1-65.5 42.3-42.2 65.5-98.4 65.5-158.1.1-38-9.7-75.5-28.2-108.7zm-88.1 216C766.9 823.4 729 839 688.4 839c-26.1 0-51.8-6.8-74.6-19.7l-22.5-12.7-25.5 4.5c-17.8 3.2-35.8 4.8-53.6 4.8-41.4 0-81.3-8.1-119.1-24.1-36.3-15.3-69-37.3-97.2-65.5a304.29 304.29 0 0 1-65.5-97.1c-16-37.7-24-77.6-24-119 0-17.4 1.6-35.2 4.6-52.8l4.4-25.1L203 410a151.02 151.02 0 0 1-19.1-73.4c0-40.6 15.7-78.5 44.4-107.2C257.1 200.7 295 185 335.6 185a153 153 0 0 1 71.4 17.9l22.4 11.8 24.8-4.8c18.9-3.6 38.4-5.5 58-5.5 41.4 0 81.3 8.1 119 24 36.5 15.4 69.1 37.4 97.2 65.5 28.2 28.1 50.2 60.8 65.6 97.2 16 37.7 24 77.6 24 119 0 18.4-1.7 37-5.1 55.5l-4.7 25.5 12.6 22.6c12.6 22.5 19.2 48 19.2 73.7 0 40.7-15.7 78.5-44.4 107.2zM583.4 466.2L495 446.6c-33.6-7.7-72.3-17.8-72.3-49.5s27.1-53.9 76.1-53.9c98.7 0 89.7 67.8 138.7 67.8 25.8 0 48.4-15.2 48.4-41.2 0-60.8-97.4-106.5-180-106.5-89.7 0-185.2 38.1-185.2 139.5 0 48.8 17.4 100.8 113.6 124.9l119.4 29.8c36.1 8.9 45.2 29.2 45.2 47.6 0 30.5-30.3 60.3-85.2 60.3-107.2 0-92.3-82.5-149.7-82.5-25.8 0-44.5 17.8-44.5 43.1 0 49.4 60 115.4 194.2 115.4 127.7 0 191-61.5 191-144 0-53.1-24.5-109.6-121.3-131.2z")),t.SlackSquareOutline=u("slack-square",i,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM529 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V311.4zM361.5 580.2c0 27.8-22.5 50.4-50.3 50.4a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h50.3v50.4zm134 134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V580.2c0-27.8 22.5-50.4 50.3-50.4a50.35 50.35 0 0 1 50.3 50.4v134.4zm-50.2-218.4h-134c-27.8 0-50.3-22.6-50.3-50.4 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4-.1 27.9-22.6 50.4-50.3 50.4zm0-134.4c-13.3 0-26.1-5.3-35.6-14.8S395 324.8 395 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v50.4h-50.3zm134 403.2c-27.8 0-50.3-22.6-50.3-50.4v-50.4h50.3c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm134-134.4h-134a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm0-134.4H663v-50.4c0-27.8 22.5-50.4 50.3-50.4s50.3 22.6 50.3 50.4c0 27.8-22.5 50.4-50.3 50.4z")),t.SlidersOutline=u("sliders",i,l(o,"M320 224h-66v-56c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v56h-66c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h66v56c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-56h66c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm-60 508h-80V292h80v440zm644-436h-66v-96c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v96h-66c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8h66v96c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-96h66c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8zm-60 364h-80V364h80v296zM612 404h-66V232c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v172h-66c-4.4 0-8 3.6-8 8v200c0 4.4 3.6 8 8 8h66v172c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V620h66c4.4 0 8-3.6 8-8V412c0-4.4-3.6-8-8-8zm-60 145a3 3 0 0 1-3 3h-74a3 3 0 0 1-3-3v-74a3 3 0 0 1 3-3h74a3 3 0 0 1 3 3v74z")),t.SmileOutline=u("smile",i,l(o,"M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z")),t.SnippetsOutline=u("snippets",i,l(o,"M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 888H232V336h218v174c0 22.1 17.9 40 40 40h174v338zm0-402H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z")),t.SoundOutline=u("sound",i,l(o,"M625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1zM586 803L293.4 611.7l-18-11.7H146V424h129.4l17.9-11.7L586 221v582zm348-327H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm-41.9 261.8l-110.3-63.7a15.9 15.9 0 0 0-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0 0 21.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM760 344a15.9 15.9 0 0 0 21.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 0 0-21.7-5.9L746 287.8a15.99 15.99 0 0 0-5.8 21.8L760 344z")),t.StarOutline=u("star",i,l(o,"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 0 0 .6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0 0 46.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z")),t.StepBackwardOutline=u("step-backward",i,l(r,"M347.6 528.95l383.2 301.02c14.25 11.2 35.2 1.1 35.2-16.95V210.97c0-18.05-20.95-28.14-35.2-16.94L347.6 495.05a21.53 21.53 0 0 0 0 33.9M330 864h-64a8 8 0 0 1-8-8V168a8 8 0 0 1 8-8h64a8 8 0 0 1 8 8v688a8 8 0 0 1-8 8")),t.StepForwardOutline=u("step-forward",i,l(r,"M676.4 528.95L293.2 829.97c-14.25 11.2-35.2 1.1-35.2-16.95V210.97c0-18.05 20.95-28.14 35.2-16.94l383.2 301.02a21.53 21.53 0 0 1 0 33.9M694 864h64a8 8 0 0 0 8-8V168a8 8 0 0 0-8-8h-64a8 8 0 0 0-8 8v688a8 8 0 0 0 8 8")),t.StopOutline=u("stop",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372 0-89 31.3-170.8 83.5-234.8l523.3 523.3C682.8 852.7 601 884 512 884zm288.5-137.2L277.2 223.5C341.2 171.3 423 140 512 140c205.4 0 372 166.6 372 372 0 89-31.3 170.8-83.5 234.8z")),t.SwitcherOutline=u("switcher",i,l(o,"M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zm-40 600H184V312h528v528zm168-728H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32zM300 550h296v64H300z")),t.TagOutline=u("tag",i,l(o,"M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 0 0 0 14.1l363.8 363.8c1.9 1.9 4.4 2.9 7.1 2.9s5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM459.7 834.7L189.3 564.3 589 164.6 836 188l23.4 247-399.7 399.7zM680 256c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm0 120c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z")),t.TabletOutline=u("tablet",i,l(o,"M800 64H224c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zm-8 824H232V136h560v752zM472 784a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")),t.ShopOutline=u("shop",i,l(o,"M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0 0 14.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h676c17.7 0 32-14.3 32-32V535a175 175 0 0 0 15.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zM214 184h596v88H214v-88zm362 656.1H448V736h128v104.1zm234 0H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 3-1.3 6-2.6 9-4v242.2zm30-404.4c0 59.8-49 108.3-109.3 108.3-40.8 0-76.4-22.1-95.2-54.9-2.9-5-8.1-8.1-13.9-8.1h-.6c-5.7 0-11 3.1-13.9 8.1A109.24 109.24 0 0 1 512 544c-40.7 0-76.2-22-95-54.7-3-5.1-8.4-8.3-14.3-8.3s-11.4 3.2-14.3 8.3a109.63 109.63 0 0 1-95.1 54.7C233 544 184 495.5 184 435.7v-91.2c0-.3.2-.5.5-.5h655c.3 0 .5.2.5.5v91.2z")),t.TagsOutline=u("tags",i,l(o,"M483.2 790.3L861.4 412c1.7-1.7 2.5-4 2.3-6.3l-25.5-301.4c-.7-7.8-6.8-13.9-14.6-14.6L522.2 64.3c-2.3-.2-4.7.6-6.3 2.3L137.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c3.1 3.2 8.2 3.2 11.3 0zm62.6-651.7l224.6 19 19 224.6L477.5 694 233.9 450.5l311.9-311.9zm60.16 186.23a48 48 0 1 0 67.88-67.89 48 48 0 1 0-67.88 67.89zM889.7 539.8l-39.6-39.5a8.03 8.03 0 0 0-11.3 0l-362 361.3-237.6-237a8.03 8.03 0 0 0-11.3 0l-39.6 39.5a8.03 8.03 0 0 0 0 11.3l243.2 242.8 39.6 39.5c3.1 3.1 8.2 3.1 11.3 0l407.3-406.6c3.1-3.1 3.1-8.2 0-11.3z")),t.TaobaoCircleOutline=u("taobao-circle",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM315.7 291.5c27.3 0 49.5 22.1 49.5 49.4s-22.1 49.4-49.5 49.4a49.4 49.4 0 1 1 0-98.8zM366.9 578c-13.6 42.3-10.2 26.7-64.4 144.5l-78.5-49s87.7-79.8 105.6-116.2c19.2-38.4-21.1-58.9-21.1-58.9l-60.2-37.5 32.7-50.2c45.4 33.7 48.7 36.6 79.2 67.2 23.8 23.9 20.7 56.8 6.7 100.1zm427.2 55c-15.3 143.8-202.4 90.3-202.4 90.3l10.2-41.1 43.3 9.3c80 5 72.3-64.9 72.3-64.9V423c.6-77.3-72.6-85.4-204.2-38.3l30.6 8.3c-2.5 9-12.5 23.2-25.2 38.6h176v35.6h-99.1v44.5h98.7v35.7h-98.7V622c14.9-4.8 28.6-11.5 40.5-20.5l-8.7-32.5 46.5-14.4 38.8 94.9-57.3 23.9-10.2-37.8c-25.6 19.5-78.8 48-171.8 45.4-99.2 2.6-73.7-112-73.7-112l2.5-1.3H472c-.5 14.7-6.6 38.7 1.7 51.8 6.8 10.8 24.2 12.6 35.3 13.1 1.3.1 2.6.1 3.9.1v-85.3h-101v-35.7h101v-44.5H487c-22.7 24.1-43.5 44.1-43.5 44.1l-30.6-26.7c21.7-22.9 43.3-59.1 56.8-83.2-10.9 4.4-22 9.2-33.6 14.2-11.2 14.3-24.2 29-38.7 43.5.5.8-50-28.4-50-28.4 52.2-44.4 81.4-139.9 81.4-139.9l72.5 20.4s-5.9 14-18.4 35.6c290.3-82.3 307.4 50.5 307.4 50.5s19.1 91.8 3.8 235.7z")),t.ToolOutline=u("tool",i,l(o,"M876.6 239.5c-.5-.9-1.2-1.8-2-2.5-5-5-13.1-5-18.1 0L684.2 409.3l-67.9-67.9L788.7 169c.8-.8 1.4-1.6 2-2.5 3.6-6.1 1.6-13.9-4.5-17.5-98.2-58-226.8-44.7-311.3 39.7-67 67-89.2 162-66.5 247.4l-293 293c-3 3-2.8 7.9.3 11l169.7 169.7c3.1 3.1 8.1 3.3 11 .3l292.9-292.9c85.5 22.8 180.5.7 247.6-66.4 84.4-84.5 97.7-213.1 39.7-311.3zM786 499.8c-58.1 58.1-145.3 69.3-214.6 33.6l-8.8 8.8-.1-.1-274 274.1-79.2-79.2 230.1-230.1s0 .1.1.1l52.8-52.8c-35.7-69.3-24.5-156.5 33.6-214.6a184.2 184.2 0 0 1 144-53.5L537 318.9a32.05 32.05 0 0 0 0 45.3l124.5 124.5a32.05 32.05 0 0 0 45.3 0l132.8-132.8c3.7 51.8-14.4 104.8-53.6 143.9z")),t.ThunderboltOutline=u("thunderbolt",i,l(o,"M848 359.3H627.7L825.8 109c4.1-5.3.4-13-6.3-13H436c-2.8 0-5.5 1.5-6.9 4L170 547.5c-3.1 5.3.7 12 6.9 12h174.4l-89.4 357.6c-1.9 7.8 7.5 13.3 13.3 7.7L853.5 373c5.2-4.9 1.7-13.7-5.5-13.7zM378.2 732.5l60.3-241H281.1l189.6-327.4h224.6L487 427.4h211L378.2 732.5z")),t.TrophyOutline=u("trophy",i,l(o,"M868 160h-92v-40c0-4.4-3.6-8-8-8H256c-4.4 0-8 3.6-8 8v40h-92a44 44 0 0 0-44 44v148c0 81.7 60 149.6 138.2 162C265.7 630.2 359 721.7 476 734.5v105.2H280c-17.7 0-32 14.3-32 32V904c0 4.4 3.6 8 8 8h512c4.4 0 8-3.6 8-8v-32.3c0-17.7-14.3-32-32-32H548V734.5C665 721.7 758.3 630.2 773.8 514 852 501.6 912 433.7 912 352V204a44 44 0 0 0-44-44zM184 352V232h64v207.6a91.99 91.99 0 0 1-64-87.6zm520 128c0 49.1-19.1 95.4-53.9 130.1-34.8 34.8-81 53.9-130.1 53.9h-16c-49.1 0-95.4-19.1-130.1-53.9-34.8-34.8-53.9-81-53.9-130.1V184h384v296zm136-128c0 41-26.9 75.8-64 87.6V232h64v120z")),t.UnlockOutline=u("unlock",i,l(o,"M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zm-40 376H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z")),t.UpCircleOutline=u("up-circle",i,l(o,"M518.5 360.3a7.95 7.95 0 0 0-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7H381c10.2 0 19.9-4.9 25.9-13.2L512 460.4l105.2 145.4c6 8.3 15.6 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.5-12.7l-178-246z","M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")),t.UpSquareOutline=u("up-square",i,l(o,"M334 624h46.9c10.2 0 19.9-4.9 25.9-13.2L512 465.4l105.2 145.4c6 8.3 15.6 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.5-12.7l-178-246a7.95 7.95 0 0 0-12.9 0l-178 246A7.96 7.96 0 0 0 334 624z","M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")),t.UsbOutline=u("usb",i,l(o,"M760 432V144c0-17.7-14.3-32-32-32H296c-17.7 0-32 14.3-32 32v288c-66.2 0-120 52.1-120 116v356c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V548c0-24.3 21.6-44 48.1-44h495.8c26.5 0 48.1 19.7 48.1 44v356c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V548c0-63.9-53.8-116-120-116zm-424 0V184h352v248H336zm120-184h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm160 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z")),t.VideoCameraOutline=u("video-camera",i,l(o,"M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM712 792H136V232h576v560zm176-167l-104-59.8V458.9L888 399v226zM208 360h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H208c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z")),t.WalletOutline=u("wallet",i,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 464H528V448h312v128zm0 264H184V184h656v200H496c-17.7 0-32 14.3-32 32v192c0 17.7 14.3 32 32 32h344v200zM580 512a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")),t.WarningOutline=u("warning",i,l(o,"M464 720a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8zm475.7 440l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-783.5-27.9L512 239.9l339.8 588.2H172.2z")),t.WechatOutline=u("wechat",i,l(o,"M690.1 377.4c5.9 0 11.8.2 17.6.5-24.4-128.7-158.3-227.1-319.9-227.1C209 150.8 64 271.4 64 420.2c0 81.1 43.6 154.2 111.9 203.6a21.5 21.5 0 0 1 9.1 17.6c0 2.4-.5 4.6-1.1 6.9-5.5 20.3-14.2 52.8-14.6 54.3-.7 2.6-1.7 5.2-1.7 7.9 0 5.9 4.8 10.8 10.8 10.8 2.3 0 4.2-.9 6.2-2l70.9-40.9c5.3-3.1 11-5 17.2-5 3.2 0 6.4.5 9.5 1.4 33.1 9.5 68.8 14.8 105.7 14.8 6 0 11.9-.1 17.8-.4-7.1-21-10.9-43.1-10.9-66 0-135.8 132.2-245.8 295.3-245.8zm-194.3-86.5c23.8 0 43.2 19.3 43.2 43.1s-19.3 43.1-43.2 43.1c-23.8 0-43.2-19.3-43.2-43.1s19.4-43.1 43.2-43.1zm-215.9 86.2c-23.8 0-43.2-19.3-43.2-43.1s19.3-43.1 43.2-43.1 43.2 19.3 43.2 43.1-19.4 43.1-43.2 43.1zm586.8 415.6c56.9-41.2 93.2-102 93.2-169.7 0-124-120.8-224.5-269.9-224.5-149 0-269.9 100.5-269.9 224.5S540.9 847.5 690 847.5c30.8 0 60.6-4.4 88.1-12.3 2.6-.8 5.2-1.2 7.9-1.2 5.2 0 9.9 1.6 14.3 4.1l59.1 34c1.7 1 3.3 1.7 5.2 1.7a9 9 0 0 0 6.4-2.6 9 9 0 0 0 2.6-6.4c0-2.2-.9-4.4-1.4-6.6-.3-1.2-7.6-28.3-12.2-45.3-.5-1.9-.9-3.8-.9-5.7.1-5.9 3.1-11.2 7.6-14.5zM600.2 587.2c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9c0 19.8-16.2 35.9-36 35.9zm179.9 0c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9a36.08 36.08 0 0 1-36 35.9z")),t.WeiboCircleOutline=u("weibo-circle",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-44.4 672C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-93-32.2c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zm34.9-14.5c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z")),t.WindowsOutline=u("windows",i,l(o,"M120.1 770.6L443 823.2V543.8H120.1v226.8zm63.4-163.5h196.2v141.6l-196.2-31.9V607.1zm340.3 226.5l382 62.2v-352h-382v289.8zm63.4-226.5h255.3v214.4l-255.3-41.6V607.1zm-63.4-415.7v288.8h382V128.1l-382 63.3zm318.7 225.5H587.3V245l255.3-42.3v214.2zm-722.4 63.3H443V201.9l-322.9 53.5v224.8zM183.5 309l196.2-32.5v140.4H183.5V309z")),t.YahooOutline=u("yahoo",i,l(o,"M859.9 681.4h-14.1c-27.1 0-49.2 22.2-49.2 49.3v14.1c0 27.1 22.2 49.3 49.2 49.3h14.1c27.1 0 49.2-22.2 49.2-49.3v-14.1c0-27.1-22.2-49.3-49.2-49.3zM402.6 231C216.2 231 65 357 65 512.5S216.2 794 402.6 794s337.6-126 337.6-281.5S589.1 231 402.6 231zm0 507C245.1 738 121 634.6 121 512.5c0-62.3 32.3-119.7 84.9-161v48.4h37l159.8 159.9v65.3h-84.4v56.3h225.1v-56.3H459v-65.3l103.5-103.6h65.3v-56.3H459v65.3l-28.1 28.1-93.4-93.5h37v-56.3H216.4c49.4-35 114.3-56.6 186.2-56.6 157.6 0 281.6 103.4 281.6 225.5S560.2 738 402.6 738zm534.7-507H824.7c-15.5 0-27.7 12.6-27.1 28.1l13.1 366h84.4l65.4-366.4c2.7-15.2-7.8-27.7-23.2-27.7z")),t.WeiboSquareOutline=u("weibo-square",i,l(o,"M433.6 595.1c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM467.6 736C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-58.1-46.7c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z")),t.YuqueOutline=u("yuque",i,l(o,"M854.6 370.6c-9.9-39.4 9.9-102.2 73.4-124.4l-67.9-3.6s-25.7-90-143.6-98c-117.8-8.1-194.9-3-195-3 .1 0 87.4 55.6 52.4 154.7-25.6 52.5-65.8 95.6-108.8 144.7-1.3 1.3-2.5 2.6-3.5 3.7C319.4 605 96 860 96 860c245.9 64.4 410.7-6.3 508.2-91.1 20.5-.2 35.9-.3 46.3-.3 135.8 0 250.6-117.6 245.9-248.4-3.2-89.9-31.9-110.2-41.8-149.6zm-204.1 334c-10.6 0-26.2.1-46.8.3l-23.6.2-17.8 15.5c-47.1 41-104.4 71.5-171.4 87.6-52.5 12.6-110 16.2-172.7 9.6 18-20.5 36.5-41.6 55.4-63.1 92-104.6 173.8-197.5 236.9-268.5l1.4-1.4 1.3-1.5c4.1-4.6 20.6-23.3 24.7-28.1 9.7-11.1 17.3-19.9 24.5-28.6 30.7-36.7 52.2-67.8 69-102.2l1.6-3.3 1.2-3.4c13.7-38.8 15.4-76.9 6.2-112.8 22.5.7 46.5 1.9 71.7 3.6 33.3 2.3 55.5 12.9 71.1 29.2 5.8 6 10.2 12.5 13.4 18.7 1 2 1.7 3.6 2.3 5l5 17.7c-15.7 34.5-19.9 73.3-11.4 107.2 3 11.8 6.9 22.4 12.3 34.4 2.1 4.7 9.5 20.1 11 23.3 10.3 22.7 15.4 43 16.7 78.7 3.3 94.6-82.7 181.9-182 181.9z")),t.YoutubeOutline=u("youtube",i,l(o,"M960 509.2c0-2.2 0-4.7-.1-7.6-.1-8.1-.3-17.2-.5-26.9-.8-27.9-2.2-55.7-4.4-81.9-3-36.1-7.4-66.2-13.4-88.8a139.52 139.52 0 0 0-98.3-98.5c-28.3-7.6-83.7-12.3-161.7-15.2-37.1-1.4-76.8-2.3-116.5-2.8-13.9-.2-26.8-.3-38.4-.4h-29.4c-11.6.1-24.5.2-38.4.4-39.7.5-79.4 1.4-116.5 2.8-78 3-133.5 7.7-161.7 15.2A139.35 139.35 0 0 0 82.4 304C76.3 326.6 72 356.7 69 392.8c-2.2 26.2-3.6 54-4.4 81.9-.3 9.7-.4 18.8-.5 26.9 0 2.9-.1 5.4-.1 7.6v5.6c0 2.2 0 4.7.1 7.6.1 8.1.3 17.2.5 26.9.8 27.9 2.2 55.7 4.4 81.9 3 36.1 7.4 66.2 13.4 88.8 12.8 47.9 50.4 85.7 98.3 98.5 28.2 7.6 83.7 12.3 161.7 15.2 37.1 1.4 76.8 2.3 116.5 2.8 13.9.2 26.8.3 38.4.4h29.4c11.6-.1 24.5-.2 38.4-.4 39.7-.5 79.4-1.4 116.5-2.8 78-3 133.5-7.7 161.7-15.2 47.9-12.8 85.5-50.5 98.3-98.5 6.1-22.6 10.4-52.7 13.4-88.8 2.2-26.2 3.6-54 4.4-81.9.3-9.7.4-18.8.5-26.9 0-2.9.1-5.4.1-7.6v-5.6zm-72 5.2c0 2.1 0 4.4-.1 7.1-.1 7.8-.3 16.4-.5 25.7-.7 26.6-2.1 53.2-4.2 77.9-2.7 32.2-6.5 58.6-11.2 76.3-6.2 23.1-24.4 41.4-47.4 47.5-21 5.6-73.9 10.1-145.8 12.8-36.4 1.4-75.6 2.3-114.7 2.8-13.7.2-26.4.3-37.8.3h-28.6l-37.8-.3c-39.1-.5-78.2-1.4-114.7-2.8-71.9-2.8-124.9-7.2-145.8-12.8-23-6.2-41.2-24.4-47.4-47.5-4.7-17.7-8.5-44.1-11.2-76.3-2.1-24.7-3.4-51.3-4.2-77.9-.3-9.3-.4-18-.5-25.7 0-2.7-.1-5.1-.1-7.1v-4.8c0-2.1 0-4.4.1-7.1.1-7.8.3-16.4.5-25.7.7-26.6 2.1-53.2 4.2-77.9 2.7-32.2 6.5-58.6 11.2-76.3 6.2-23.1 24.4-41.4 47.4-47.5 21-5.6 73.9-10.1 145.8-12.8 36.4-1.4 75.6-2.3 114.7-2.8 13.7-.2 26.4-.3 37.8-.3h28.6l37.8.3c39.1.5 78.2 1.4 114.7 2.8 71.9 2.8 124.9 7.2 145.8 12.8 23 6.2 41.2 24.4 47.4 47.5 4.7 17.7 8.5 44.1 11.2 76.3 2.1 24.7 3.4 51.3 4.2 77.9.3 9.3.4 18 .5 25.7 0 2.7.1 5.1.1 7.1v4.8zM423 646l232-135-232-133z")),t.AlibabaOutline=u("alibaba",i,l(o,"M602.9 669.8c-37.2 2.6-33.6-17.3-11.5-46.2 50.4-67.2 143.7-158.5 147.9-225.2 5.8-86.6-81.3-113.4-171-113.4-62.4 1.6-127 18.9-171 34.6-151.6 53.5-246.6 137.5-306.9 232-62.4 93.4-43 183.2 91.8 185.8 101.8-4.2 170.5-32.5 239.7-68.2.5 0-192.5 55.1-263.9 14.7-7.9-4.2-15.7-10-17.8-26.2 0-33.1 54.6-67.7 86.6-78.7v-56.7c64.5 22.6 140.6 16.3 205.7-32 2.1 5.8 4.2 13.1 3.7 21h11c2.6-22.6-12.6-44.6-37.8-46.2 7.3 5.8 12.6 10.5 15.2 14.7l-1 1-.5.5c-83.9 58.8-165.3 31.5-173.1 29.9l46.7-45.7-13.1-33.1c92.9-32.5 169.5-56.2 296.9-78.7l-28.5-23 14.7-8.9c75.5 21 126.4 36.7 123.8 76.6-1 6.8-3.7 14.7-7.9 23.1C660.1 466.1 594 538 567.2 569c-17.3 20.5-34.6 39.4-46.7 58.3-13.6 19.4-20.5 37.3-21 53.5 2.6 131.8 391.4-61.9 468-112.9-111.7 47.8-232.9 93.5-364.6 101.9zm85-302.9c2.8 5.2 4.1 11.6 4.1 19.1-.1-6.8-1.4-13.3-4.1-19.1z")),t.AlignCenterOutline=u("align-center",i,l(o,"M264 230h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm496 424c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496zm144 140H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-424H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.AlignLeftOutline=u("align-left",i,l(o,"M120 230h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 424h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm784 140H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-424H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.AlignRightOutline=u("align-right",i,l(o,"M904 158H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 424H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 212H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-424H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.AlipayOutline=u("alipay",i,l(o,"M789 610.3c-38.7-12.9-90.7-32.7-148.5-53.6 34.8-60.3 62.5-129 80.7-203.6H530.5v-68.6h233.6v-38.3H530.5V132h-95.4c-16.7 0-16.7 16.5-16.7 16.5v97.8H182.2v38.3h236.3v68.6H223.4v38.3h378.4a667.18 667.18 0 0 1-54.5 132.9c-122.8-40.4-253.8-73.2-336.1-53-52.6 13-86.5 36.1-106.5 60.3-91.4 111-25.9 279.6 167.2 279.6C386 811.2 496 747.6 581.2 643 708.3 704 960 808.7 960 808.7V659.4s-31.6-2.5-171-49.1zM253.9 746.6c-150.5 0-195-118.3-120.6-183.1 24.8-21.9 70.2-32.6 94.4-35 89.4-8.8 172.2 25.2 269.9 72.8-68.8 89.5-156.3 145.3-243.7 145.3z")),t.AliyunOutline=u("aliyun",i,l(o,"M959.2 383.9c-.3-82.1-66.9-148.6-149.1-148.6H575.9l21.6 85.2 201 43.7a42.58 42.58 0 0 1 32.9 39.7c.1.5.1 216.1 0 216.6a42.58 42.58 0 0 1-32.9 39.7l-201 43.7-21.6 85.3h234.2c82.1 0 148.8-66.5 149.1-148.6V383.9zM225.5 660.4a42.58 42.58 0 0 1-32.9-39.7c-.1-.6-.1-216.1 0-216.6.8-19.4 14.6-35.5 32.9-39.7l201-43.7 21.6-85.2H213.8c-82.1 0-148.8 66.4-149.1 148.6V641c.3 82.1 67 148.6 149.1 148.6H448l-21.6-85.3-200.9-43.9zm200.9-158.8h171v21.3h-171z")),t.AmazonOutline=u("amazon",i,l(o,"M825 768.9c-3.3-.9-7.3-.4-11.9 1.3-61.6 28.2-121.5 48.3-179.7 60.2C507.7 856 385.2 842.6 266 790.3c-33.1-14.6-79.1-39.2-138-74a9.36 9.36 0 0 0-5.3-2c-2-.1-3.7.1-5.3.9-1.6.8-2.8 1.8-3.7 3.1-.9 1.3-1.1 3.1-.4 5.4.6 2.2 2.1 4.7 4.6 7.4 10.4 12.2 23.3 25.2 38.6 39s35.6 29.4 60.9 46.8c25.3 17.4 51.8 32.9 79.3 46.4 27.6 13.5 59.6 24.9 96.1 34.1s73 13.8 109.4 13.8c36.2 0 71.4-3.7 105.5-10.9 34.2-7.3 63-15.9 86.5-25.9 23.4-9.9 45-21 64.8-33 19.8-12 34.4-22.2 43.9-30.3 9.5-8.2 16.3-14.6 20.2-19.4 4.6-5.7 6.9-10.6 6.9-14.9.1-4.5-1.7-7.1-5-7.9zM527.4 348.1c-15.2 1.3-33.5 4.1-55 8.3-21.5 4.1-41.4 9.3-59.8 15.4s-37.2 14.6-56.3 25.4c-19.2 10.8-35.5 23.2-49 37s-24.5 31.1-33.1 52c-8.6 20.8-12.9 43.7-12.9 68.7 0 27.1 4.7 51.2 14.3 72.5 9.5 21.3 22.2 38 38.2 50.4 15.9 12.4 34 22.1 54 29.2 20 7.1 41.2 10.3 63.2 9.4 22-.9 43.5-4.3 64.4-10.3 20.8-5.9 40.4-15.4 58.6-28.3 18.2-12.9 33.1-28.2 44.8-45.7 4.3 6.6 8.1 11.5 11.5 14.7l8.7 8.9c5.8 5.9 14.7 14.6 26.7 26.1 11.9 11.5 24.1 22.7 36.3 33.7l104.4-99.9-6-4.9c-4.3-3.3-9.4-8-15.2-14.3-5.8-6.2-11.6-13.1-17.2-20.5-5.7-7.4-10.6-16.1-14.7-25.9-4.1-9.8-6.2-19.3-6.2-28.5V258.7c0-10.1-1.9-21-5.7-32.8-3.9-11.7-10.7-24.5-20.7-38.3-10-13.8-22.4-26.2-37.2-37-14.9-10.8-34.7-20-59.6-27.4-24.8-7.4-52.6-11.1-83.2-11.1-31.3 0-60.4 3.7-87.6 10.9-27.1 7.3-50.3 17-69.7 29.2-19.3 12.2-35.9 26.3-49.7 42.4-13.8 16.1-24.1 32.9-30.8 50.4-6.7 17.5-10.1 35.2-10.1 53.1L408 310c5.5-16.4 12.9-30.6 22-42.8 9.2-12.2 17.9-21 25.8-26.5 8-5.5 16.6-9.9 25.7-13.2 9.2-3.3 15.4-5 18.6-5.4 3.2-.3 5.7-.4 7.6-.4 26.7 0 45.2 7.9 55.6 23.6 6.5 9.5 9.7 23.9 9.7 43.3v56.6c-15.2.6-30.4 1.6-45.6 2.9zM573.1 500c0 16.6-2.2 31.7-6.5 45-9.2 29.1-26.7 47.4-52.4 54.8-22.4 6.6-43.7 3.3-63.9-9.8-21.5-14-32.2-33.8-32.2-59.3 0-19.9 5-36.9 15-51.1 10-14.1 23.3-24.7 40-31.7s33-12 49-14.9c15.9-3 33-4.8 51-5.4V500zm335.2 218.9c-4.3-5.4-15.9-8.9-34.9-10.7-19-1.8-35.5-1.7-49.7.4-15.3 1.8-31.1 6.2-47.3 13.4-16.3 7.1-23.4 13.1-21.6 17.8l.7 1.3.9.7 1.4.2h4.6c.8 0 1.8-.1 3.2-.2 1.4-.1 2.7-.3 3.9-.4 1.2-.1 2.9-.3 5.1-.4 2.1-.1 4.1-.4 6-.7.3 0 3.7-.3 10.3-.9 6.6-.6 11.4-1 14.3-1.3 2.9-.3 7.8-.6 14.5-.9 6.7-.3 12.1-.3 16.1 0 4 .3 8.5.7 13.6 1.1 5.1.4 9.2 1.3 12.4 2.7 3.2 1.3 5.6 3 7.1 5.1 5.2 6.6 4.2 21.2-3 43.9s-14 40.8-20.4 54.2c-2.8 5.7-2.8 9.2 0 10.7s6.7.1 11.9-4c15.6-12.2 28.6-30.6 39.1-55.3 6.1-14.6 10.5-29.8 13.1-45.7 2.4-15.9 2-26.2-1.3-31z")),t.AntCloudOutline=u("ant-cloud",i,l(o,"M378.9 738c-3.1 0-6.1-.5-8.8-1.5l4.4 30.7h26.3l-15.5-29.9c-2.1.5-4.2.7-6.4.7zm421-291.2c-12.6 0-24.8 1.5-36.5 4.2-21.4-38.4-62.3-64.3-109.3-64.3-6.9 0-13.6.6-20.2 1.6-35.4-77.4-113.4-131.1-203.9-131.1-112.3 0-205.3 82.6-221.6 190.4C127.3 455.5 64 523.8 64 607c0 88.4 71.6 160.1 160 160.2h50l13.2-27.6c-26.2-8.3-43.3-29-39.1-48.8 4.6-21.6 32.8-33.9 63.1-27.5 22.9 4.9 40.4 19.1 45.5 35.1a26.1 26.1 0 0 1 22.1-12.4h.2c-.8-3.2-1.2-6.5-1.2-9.9 0-20.1 14.8-36.7 34.1-39.6v-25.4c0-4.4 3.6-8 8-8s8 3.6 8 8v26.3c4.6 1.2 8.8 3.2 12.6 5.8l19.5-21.4c3-3.3 8-3.5 11.3-.5 3.3 3 3.5 8 .5 11.3l-20 22-.2.2a40 40 0 0 1-46.9 59.2c-.4 5.6-2.6 10.7-6 14.8l20 38.4H804v-.1c86.5-2.2 156-73 156-160.1 0-88.5-71.7-160.2-160.1-160.2zM338.2 737.2l-4.3 30h24.4l-5.9-41.5c-3.5 4.6-8.3 8.5-14.2 11.5zM797.5 305a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm-65.7 61.3a24 24 0 1 0 48 0 24 24 0 1 0-48 0zM303.4 742.9l-11.6 24.3h26l3.5-24.7c-5.7.8-11.7 1-17.9.4z")),t.ApartmentOutline=u("apartment",i,l(o,"M908 640H804V488c0-4.4-3.6-8-8-8H548v-96h108c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h108v96H228c-4.4 0-8 3.6-8 8v152H116c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h288c8.8 0 16-7.2 16-16V656c0-8.8-7.2-16-16-16H292v-88h440v88H620c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h288c8.8 0 16-7.2 16-16V656c0-8.8-7.2-16-16-16zm-564 76v168H176V716h168zm84-408V140h168v168H428zm420 576H680V716h168v168z")),t.AntDesignOutline=u("ant-design",i,l(o,"M716.3 313.8c19-18.9 19-49.7 0-68.6l-69.9-69.9.1.1c-18.5-18.5-50.3-50.3-95.3-95.2-21.2-20.7-55.5-20.5-76.5.5L80.9 474.2a53.84 53.84 0 0 0 0 76.4L474.6 944a54.14 54.14 0 0 0 76.5 0l165.1-165c19-18.9 19-49.7 0-68.6a48.7 48.7 0 0 0-68.7 0l-125 125.2c-5.2 5.2-13.3 5.2-18.5 0L189.5 521.4c-5.2-5.2-5.2-13.3 0-18.5l314.4-314.2c.4-.4.9-.7 1.3-1.1 5.2-4.1 12.4-3.7 17.2 1.1l125.2 125.1c19 19 49.8 19 68.7 0zM408.6 514.4a106.3 106.2 0 1 0 212.6 0 106.3 106.2 0 1 0-212.6 0zm536.2-38.6L821.9 353.5c-19-18.9-49.8-18.9-68.7.1a48.4 48.4 0 0 0 0 68.6l83 82.9c5.2 5.2 5.2 13.3 0 18.5l-81.8 81.7a48.4 48.4 0 0 0 0 68.6 48.7 48.7 0 0 0 68.7 0l121.8-121.7a53.93 53.93 0 0 0-.1-76.4z")),t.AreaChartOutline=u("area-chart",i,l(o,"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-616-64h536c4.4 0 8-3.6 8-8V284c0-7.2-8.7-10.7-13.7-5.7L592 488.6l-125.4-124a8.03 8.03 0 0 0-11.3 0l-189 189.6a7.87 7.87 0 0 0-2.3 5.6V720c0 4.4 3.6 8 8 8z")),t.ArrowLeftOutline=u("arrow-left",i,l(o,"M872 474H286.9l350.2-304c5.6-4.9 2.2-14-5.2-14h-88.5c-3.9 0-7.6 1.4-10.5 3.9L155 487.8a31.96 31.96 0 0 0 0 48.3L535.1 866c1.5 1.3 3.3 2 5.2 2h91.5c7.4 0 10.8-9.2 5.2-14L286.9 550H872c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z")),t.ArrowDownOutline=u("arrow-down",i,l(o,"M862 465.3h-81c-4.6 0-9 2-12.1 5.5L550 723.1V160c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v563.1L255.1 470.8c-3-3.5-7.4-5.5-12.1-5.5h-81c-6.8 0-10.5 8.1-6 13.2L487.9 861a31.96 31.96 0 0 0 48.3 0L868 478.5c4.5-5.2.8-13.2-6-13.2z")),t.ArrowUpOutline=u("arrow-up",i,l(o,"M868 545.5L536.1 163a31.96 31.96 0 0 0-48.3 0L156 545.5a7.97 7.97 0 0 0 6 13.2h81c4.6 0 9-2 12.1-5.5L474 300.9V864c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V300.9l218.9 252.3c3 3.5 7.4 5.5 12.1 5.5h81c6.8 0 10.5-8 6-13.2z")),t.ArrowsAltOutline=u("arrows-alt",i,l(o,"M855 160.1l-189.2 23.5c-6.6.8-9.3 8.8-4.7 13.5l54.7 54.7-153.5 153.5a8.03 8.03 0 0 0 0 11.3l45.1 45.1c3.1 3.1 8.2 3.1 11.3 0l153.6-153.6 54.7 54.7a7.94 7.94 0 0 0 13.5-4.7L863.9 169a7.9 7.9 0 0 0-8.9-8.9zM416.6 562.3a8.03 8.03 0 0 0-11.3 0L251.8 715.9l-54.7-54.7a7.94 7.94 0 0 0-13.5 4.7L160.1 855c-.6 5.2 3.7 9.5 8.9 8.9l189.2-23.5c6.6-.8 9.3-8.8 4.7-13.5l-54.7-54.7 153.6-153.6c3.1-3.1 3.1-8.2 0-11.3l-45.2-45z")),t.ArrowRightOutline=u("arrow-right",i,l(o,"M869 487.8L491.2 159.9c-2.9-2.5-6.6-3.9-10.5-3.9h-88.5c-7.4 0-10.8 9.2-5.2 14l350.2 304H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h585.1L386.9 854c-5.6 4.9-2.2 14 5.2 14h91.5c1.9 0 3.8-.7 5.2-2L869 536.2a32.07 32.07 0 0 0 0-48.4z")),t.AuditOutline=u("audit",i,l(o,"M296 250c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm184 144H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-48 458H208V148h560v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm440-88H728v-36.6c46.3-13.8 80-56.6 80-107.4 0-61.9-50.1-112-112-112s-112 50.1-112 112c0 50.7 33.7 93.6 80 107.4V764H520c-8.8 0-16 7.2-16 16v152c0 8.8 7.2 16 16 16h352c8.8 0 16-7.2 16-16V780c0-8.8-7.2-16-16-16zM646 620c0-27.6 22.4-50 50-50s50 22.4 50 50-22.4 50-50 50-50-22.4-50-50zm180 266H566v-60h260v60z")),t.BarChartOutline=u("bar-chart",i,l(o,"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-600-80h56c4.4 0 8-3.6 8-8V560c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V384c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v320c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V462c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v242c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v400c0 4.4 3.6 8 8 8z")),t.BarcodeOutline=u("barcode",i,l(o,"M120 160H72c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8zm833 0h-48c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8zM200 736h112c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm321 0h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm126 0h178c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8H647c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm-255 0h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm-79 64H201c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm257 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm256 0H648c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h178c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-385 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z")),t.BarsOutline=u("bars",i,l(r,"M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")),t.BgColorsOutline=u("bg-colors",i,l(o,"M766.4 744.3c43.7 0 79.4-36.2 79.4-80.5 0-53.5-79.4-140.8-79.4-140.8S687 610.3 687 663.8c0 44.3 35.7 80.5 79.4 80.5zm-377.1-44.1c7.1 7.1 18.6 7.1 25.6 0l256.1-256c7.1-7.1 7.1-18.6 0-25.6l-256-256c-.6-.6-1.3-1.2-2-1.7l-78.2-78.2a9.11 9.11 0 0 0-12.8 0l-48 48a9.11 9.11 0 0 0 0 12.8l67.2 67.2-207.8 207.9c-7.1 7.1-7.1 18.6 0 25.6l255.9 256zm12.9-448.6l178.9 178.9H223.4l178.8-178.9zM904 816H120c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8z")),t.BehanceOutline=u("behance",i,l(o,"M634 294.3h199.5v48.4H634zM434.1 485.8c44.1-21.1 67.2-53.2 67.2-102.8 0-98.1-73-121.9-157.3-121.9H112v492.4h238.5c89.4 0 173.3-43 173.3-143 0-61.8-29.2-107.5-89.7-124.7zM220.2 345.1h101.5c39.1 0 74.2 10.9 74.2 56.3 0 41.8-27.3 58.6-66 58.6H220.2V345.1zm115.5 324.8H220.1V534.3H338c47.6 0 77.7 19.9 77.7 70.3 0 49.6-35.9 65.3-80 65.3zm575.8-89.5c0-105.5-61.7-193.4-173.3-193.4-108.5 0-182.3 81.7-182.3 188.8 0 111 69.9 187.2 182.3 187.2 85.1 0 140.2-38.3 166.7-120h-86.3c-9.4 30.5-47.6 46.5-77.3 46.5-57.4 0-87.4-33.6-87.4-90.7h256.9c.3-5.9.7-12.1.7-18.4zM653.9 537c3.1-46.9 34.4-76.2 81.2-76.2 49.2 0 73.8 28.9 78.1 76.2H653.9z")),t.BlockOutline=u("block",i,l(o,"M856 376H648V168c0-8.8-7.2-16-16-16H168c-8.8 0-16 7.2-16 16v464c0 8.8 7.2 16 16 16h208v208c0 8.8 7.2 16 16 16h464c8.8 0 16-7.2 16-16V392c0-8.8-7.2-16-16-16zm-480 16v188H220V220h360v156H392c-8.8 0-16 7.2-16 16zm204 52v136H444V444h136zm224 360H444V648h188c8.8 0 16-7.2 16-16V444h156v360z")),t.BoldOutline=u("bold",i,l(o,"M697.8 481.4c33.6-35 54.2-82.3 54.2-134.3v-10.2C752 229.3 663.9 142 555.3 142H259.4c-15.1 0-27.4 12.3-27.4 27.4v679.1c0 16.3 13.2 29.5 29.5 29.5h318.7c117 0 211.8-94.2 211.8-210.5v-11c0-73-37.4-137.3-94.2-175.1zM328 238h224.7c57.1 0 103.3 44.4 103.3 99.3v9.5c0 54.8-46.3 99.3-103.3 99.3H328V238zm366.6 429.4c0 62.9-51.7 113.9-115.5 113.9H328V542.7h251.1c63.8 0 115.5 51 115.5 113.9v10.8z")),t.BorderBottomOutline=u("border-bottom",i,l(o,"M872 808H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-720-94h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-498h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-166h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm166 166h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm222-72h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388-404h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388 426h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388-404h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z")),t.BorderLeftOutline=u("border-left",i,l(o,"M208 144h-56c-4.4 0-8 3.6-8 8v720c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM540 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM374 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.BorderOuterOutline=u("border-outer",i,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM484 366h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM302 548h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm364 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-182 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 182h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z")),t.BorderInnerOutline=u("border-inner",i,l(o,"M872 476H548V144h-72v332H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h324v332h72V548h324c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-664h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM650 216h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 592h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-56-592h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-166 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 592h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-56-426h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 260h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.BorderRightOutline=u("border-right",i,l(o,"M872 144h-56c-4.4 0-8 3.6-8 8v720c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8zm-166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM374 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.BorderHorizontalOutline=u("border-horizontal",i,l(o,"M540 144h-56c-4.4 0-8 3.6-8 8v720c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8zm-166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-664 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm664 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-664 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm664 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM374 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.BorderTopOutline=u("border-top",i,l(o,"M872 144H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332-498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.BorderVerticleOutline=u("border-verticle",i,l(o,"M872 476H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-664h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM650 216h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 592h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-56-592h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-166 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM208 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM152 382h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM208 642h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.BorderOutline=u("border",i,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")),t.BranchesOutline=u("branches",i,l(o,"M740 161c-61.8 0-112 50.2-112 112 0 50.1 33.1 92.6 78.5 106.9v95.9L320 602.4V318.1c44.2-15 76-56.9 76-106.1 0-61.8-50.2-112-112-112s-112 50.2-112 112c0 49.2 31.8 91 76 106.1V706c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1v-27.8l423.5-138.7a50.52 50.52 0 0 0 34.9-48.2V378.2c42.9-15.8 73.6-57 73.6-105.2 0-61.8-50.2-112-112-112zm-504 51a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm96 600a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0zm408-491a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")),t.CheckOutline=u("check",i,l(o,"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z")),t.CiOutline=u("ci",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm218-572.1h-50.4c-4.4 0-8 3.6-8 8v384.2c0 4.4 3.6 8 8 8H730c4.4 0 8-3.6 8-8V319.9c0-4.4-3.6-8-8-8zm-281.4 49.6c49.5 0 83.1 31.5 87 77.6.4 4.2 3.8 7.4 8 7.4h52.6c2.4 0 4.4-2 4.4-4.4 0-81.2-64-138.1-152.3-138.1C345.4 304 286 373.5 286 488.4v49c0 114 59.4 182.6 162.3 182.6 88 0 152.3-55.1 152.3-132.5 0-2.4-2-4.4-4.4-4.4h-52.7c-4.2 0-7.6 3.2-8 7.3-4.2 43-37.7 72.4-87 72.4-61.1 0-95.6-44.9-95.6-125.2v-49.3c.1-81.4 34.6-126.8 95.7-126.8z")),t.CloseOutline=u("close",i,l(o,"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 0 0 203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z")),t.CloudDownloadOutline=u("cloud-download",i,l(o,"M624 706.3h-74.1V464c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v242.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.7a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9z","M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 0 1-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z")),t.CloudServerOutline=u("cloud-server",i,l(o,"M704 446H320c-4.4 0-8 3.6-8 8v402c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8V454c0-4.4-3.6-8-8-8zm-328 64h272v117H376V510zm272 290H376V683h272v117z","M424 748a32 32 0 1 0 64 0 32 32 0 1 0-64 0zm0-178a32 32 0 1 0 64 0 32 32 0 1 0-64 0z","M811.4 368.9C765.6 248 648.9 162 512.2 162S258.8 247.9 213 368.8C126.9 391.5 63.5 470.2 64 563.6 64.6 668 145.6 752.9 247.6 762c4.7.4 8.7-3.3 8.7-8v-60.4c0-4-3-7.4-7-7.9-27-3.4-52.5-15.2-72.1-34.5-24-23.5-37.2-55.1-37.2-88.6 0-28 9.1-54.4 26.2-76.4 16.7-21.4 40.2-36.9 66.1-43.7l37.9-10 13.9-36.7c8.6-22.8 20.6-44.2 35.7-63.5 14.9-19.2 32.6-36 52.4-50 41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.3c19.9 14 37.5 30.8 52.4 50 15.1 19.3 27.1 40.7 35.7 63.5l13.8 36.6 37.8 10c54.2 14.4 92.1 63.7 92.1 120 0 33.6-13.2 65.1-37.2 88.6-19.5 19.2-44.9 31.1-71.9 34.5-4 .5-6.9 3.9-6.9 7.9V754c0 4.7 4.1 8.4 8.8 8 101.7-9.2 182.5-94 183.2-198.2.6-93.4-62.7-172.1-148.6-194.9z")),t.CloudSyncOutline=u("cloud-sync",i,l(o,"M811.4 368.9C765.6 248 648.9 162 512.2 162S258.8 247.9 213 368.8C126.9 391.5 63.5 470.2 64 563.6 64.6 668 145.6 752.9 247.6 762c4.7.4 8.7-3.3 8.7-8v-60.4c0-4-3-7.4-7-7.9-27-3.4-52.5-15.2-72.1-34.5-24-23.5-37.2-55.1-37.2-88.6 0-28 9.1-54.4 26.2-76.4 16.7-21.4 40.2-36.9 66.1-43.7l37.9-10 13.9-36.7c8.6-22.8 20.6-44.2 35.7-63.5 14.9-19.2 32.6-36 52.4-50 41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.3c19.9 14 37.5 30.8 52.4 50 15.1 19.3 27.1 40.7 35.7 63.5l13.8 36.6 37.8 10c54.2 14.4 92.1 63.7 92.1 120 0 33.6-13.2 65.1-37.2 88.6-19.5 19.2-44.9 31.1-71.9 34.5-4 .5-6.9 3.9-6.9 7.9V754c0 4.7 4.1 8.4 8.8 8 101.7-9.2 182.5-94 183.2-198.2.6-93.4-62.7-172.1-148.6-194.9z","M376.9 656.4c1.8-33.5 15.7-64.7 39.5-88.6 25.4-25.5 60-39.8 96-39.8 36.2 0 70.3 14.1 96 39.8 1.4 1.4 2.7 2.8 4.1 4.3l-25 19.6a8 8 0 0 0 3 14.1l98.2 24c5 1.2 9.9-2.6 9.9-7.7l.5-101.3c0-6.7-7.6-10.5-12.9-6.3L663 532.7c-36.6-42-90.4-68.6-150.5-68.6-107.4 0-195 85.1-199.4 191.7-.2 4.5 3.4 8.3 8 8.3H369c4.2-.1 7.7-3.4 7.9-7.7zM703 664h-47.9c-4.2 0-7.7 3.3-8 7.6-1.8 33.5-15.7 64.7-39.5 88.6-25.4 25.5-60 39.8-96 39.8-36.2 0-70.3-14.1-96-39.8-1.4-1.4-2.7-2.8-4.1-4.3l25-19.6a8 8 0 0 0-3-14.1l-98.2-24c-5-1.2-9.9 2.6-9.9 7.7l-.4 101.4c0 6.7 7.6 10.5 12.9 6.3l23.2-18.2c36.6 42 90.4 68.6 150.5 68.6 107.4 0 195-85.1 199.4-191.7.2-4.5-3.4-8.3-8-8.3z")),t.CloudUploadOutline=u("cloud-upload",i,l(o,"M518.3 459a8 8 0 0 0-12.6 0l-112 141.7a7.98 7.98 0 0 0 6.3 12.9h73.9V856c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V613.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 459z","M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 0 1-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z")),t.ClusterOutline=u("cluster",i,l(o,"M888 680h-54V540H546v-92h238c8.8 0 16-7.2 16-16V168c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h238v92H190v140h-54c-4.4 0-8 3.6-8 8v176c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V688c0-4.4-3.6-8-8-8h-54v-72h220v72h-54c-4.4 0-8 3.6-8 8v176c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V688c0-4.4-3.6-8-8-8h-54v-72h220v72h-54c-4.4 0-8 3.6-8 8v176c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V688c0-4.4-3.6-8-8-8zM256 805.3c0 1.5-1.2 2.7-2.7 2.7h-58.7c-1.5 0-2.7-1.2-2.7-2.7v-58.7c0-1.5 1.2-2.7 2.7-2.7h58.7c1.5 0 2.7 1.2 2.7 2.7v58.7zm288 0c0 1.5-1.2 2.7-2.7 2.7h-58.7c-1.5 0-2.7-1.2-2.7-2.7v-58.7c0-1.5 1.2-2.7 2.7-2.7h58.7c1.5 0 2.7 1.2 2.7 2.7v58.7zM288 384V216h448v168H288zm544 421.3c0 1.5-1.2 2.7-2.7 2.7h-58.7c-1.5 0-2.7-1.2-2.7-2.7v-58.7c0-1.5 1.2-2.7 2.7-2.7h58.7c1.5 0 2.7 1.2 2.7 2.7v58.7zM360 300a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")),t.CodepenOutline=u("codepen",i,l(o,"M911.7 385.3l-.3-1.5c-.2-1-.3-1.9-.6-2.9-.2-.6-.4-1.1-.5-1.7-.3-.8-.5-1.7-.9-2.5-.2-.6-.5-1.1-.8-1.7-.4-.8-.8-1.5-1.2-2.3-.3-.5-.6-1.1-1-1.6-.8-1.2-1.7-2.4-2.6-3.6-.5-.6-1.1-1.3-1.7-1.9-.4-.5-.9-.9-1.4-1.3-.6-.6-1.3-1.1-1.9-1.6-.5-.4-1-.8-1.6-1.2-.2-.1-.4-.3-.6-.4L531.1 117.8a34.3 34.3 0 0 0-38.1 0L127.3 361.3c-.2.1-.4.3-.6.4-.5.4-1 .8-1.6 1.2-.7.5-1.3 1.1-1.9 1.6-.5.4-.9.9-1.4 1.3-.6.6-1.2 1.2-1.7 1.9-1 1.1-1.8 2.3-2.6 3.6-.3.5-.7 1-1 1.6-.4.7-.8 1.5-1.2 2.3-.3.5-.5 1.1-.8 1.7-.3.8-.6 1.7-.9 2.5-.2.6-.4 1.1-.5 1.7-.2.9-.4 1.9-.6 2.9l-.3 1.5c-.2 1.5-.3 3-.3 4.5v243.5c0 1.5.1 3 .3 4.5l.3 1.5.6 2.9c.2.6.3 1.1.5 1.7.3.9.6 1.7.9 2.5.2.6.5 1.1.8 1.7.4.8.7 1.5 1.2 2.3.3.5.6 1.1 1 1.6.5.7.9 1.4 1.5 2.1l1.2 1.5c.5.6 1.1 1.3 1.7 1.9.4.5.9.9 1.4 1.3.6.6 1.3 1.1 1.9 1.6.5.4 1 .8 1.6 1.2.2.1.4.3.6.4L493 905.7c5.6 3.8 12.3 5.8 19.1 5.8 6.6 0 13.3-1.9 19.1-5.8l365.6-243.5c.2-.1.4-.3.6-.4.5-.4 1-.8 1.6-1.2.7-.5 1.3-1.1 1.9-1.6.5-.4.9-.9 1.4-1.3.6-.6 1.2-1.2 1.7-1.9l1.2-1.5 1.5-2.1c.3-.5.7-1 1-1.6.4-.8.8-1.5 1.2-2.3.3-.5.5-1.1.8-1.7.3-.8.6-1.7.9-2.5.2-.5.4-1.1.5-1.7.3-.9.4-1.9.6-2.9l.3-1.5c.2-1.5.3-3 .3-4.5V389.8c-.3-1.5-.4-3-.6-4.5zM546.4 210.5l269.4 179.4-120.3 80.4-149-99.6V210.5zm-68.8 0v160.2l-149 99.6-120.3-80.4 269.3-179.4zM180.7 454.1l86 57.5-86 57.5v-115zm296.9 358.5L208.3 633.2l120.3-80.4 149 99.6v160.2zM512 592.8l-121.6-81.2L512 430.3l121.6 81.2L512 592.8zm34.4 219.8V652.4l149-99.6 120.3 80.4-269.3 179.4zM843.3 569l-86-57.5 86-57.5v115z")),t.CodeSandboxOutline=u("code-sandbox",i,l(o,"M709.6 210l.4-.2h.2L512 96 313.9 209.8h-.2l.7.3L151.5 304v416L512 928l360.5-208V304l-162.9-94zM482.7 843.6L339.6 761V621.4L210 547.8V372.9l272.7 157.3v313.4zM238.2 321.5l134.7-77.8 138.9 79.7 139.1-79.9 135.2 78-273.9 158-274-158zM814 548.3l-128.8 73.1v139.1l-143.9 83V530.4L814 373.1v175.2z")),t.ColumHeightOutline=u("colum-height",i,l(o,"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z")),t.ColumnWidthOutline=u("column-width",i,l(o,"M180 176h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zm724 0h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zM785.3 504.3L657.7 403.6a7.23 7.23 0 0 0-11.7 5.7V476H378v-62.8c0-6-7-9.4-11.7-5.7L238.7 508.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V548h268v62.8c0 6 7 9.4 11.7 5.7l127.5-100.8c3.8-2.9 3.8-8.5.2-11.4z")),t.ColumnHeightOutline=u("column-height",i,l(o,"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z")),t.CoffeeOutline=u("coffee",i,l(r,"M275 281c19.9 0 36-16.1 36-36V36c0-19.9-16.1-36-36-36s-36 16.1-36 36v209c0 19.9 16.1 36 36 36zm613 144H768c0-39.8-32.2-72-72-72H200c-39.8 0-72 32.2-72 72v248c0 3.4.2 6.7.7 9.9-.5 7-.7 14-.7 21.1 0 176.7 143.3 320 320 320 160.1 0 292.7-117.5 316.3-271H888c39.8 0 72-32.2 72-72V497c0-39.8-32.2-72-72-72zM696 681h-1.1c.7 7.6 1.1 15.2 1.1 23 0 137-111 248-248 248S200 841 200 704c0-7.8.4-15.4 1.1-23H200V425h496v256zm192-8H776V497h112v176zM613 281c19.9 0 36-16.1 36-36V36c0-19.9-16.1-36-36-36s-36 16.1-36 36v209c0 19.9 16.1 36 36 36zm-170 0c19.9 0 36-16.1 36-36V36c0-19.9-16.1-36-36-36s-36 16.1-36 36v209c0 19.9 16.1 36 36 36z")),t.CopyrightOutline=u("copyright",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm5.6-532.7c53 0 89 33.8 93 83.4.3 4.2 3.8 7.4 8 7.4h56.7c2.6 0 4.7-2.1 4.7-4.7 0-86.7-68.4-147.4-162.7-147.4C407.4 290 344 364.2 344 486.8v52.3C344 660.8 407.4 734 517.3 734c94 0 162.7-58.8 162.7-141.4 0-2.6-2.1-4.7-4.7-4.7h-56.8c-4.2 0-7.6 3.2-8 7.3-4.2 46.1-40.1 77.8-93 77.8-65.3 0-102.1-47.9-102.1-133.6v-52.6c.1-87 37-135.5 102.2-135.5z")),t.DashOutline=u("dash",i,l(o,"M112 476h160v72H112zm320 0h160v72H432zm320 0h160v72H752z")),t.DeploymentUnitOutline=u("deployment-unit",i,l(o,"M888.3 693.2c-42.5-24.6-94.3-18-129.2 12.8l-53-30.7V523.6c0-15.7-8.4-30.3-22-38.1l-136-78.3v-67.1c44.2-15 76-56.8 76-106.1 0-61.9-50.1-112-112-112s-112 50.1-112 112c0 49.3 31.8 91.1 76 106.1v67.1l-136 78.3c-13.6 7.8-22 22.4-22 38.1v151.6l-53 30.7c-34.9-30.8-86.8-37.4-129.2-12.8-53.5 31-71.7 99.4-41 152.9 30.8 53.5 98.9 71.9 152.2 41 42.5-24.6 62.7-73 53.6-118.8l48.7-28.3 140.6 81c6.8 3.9 14.4 5.9 22 5.9s15.2-2 22-5.9L674.5 740l48.7 28.3c-9.1 45.7 11.2 94.2 53.6 118.8 53.3 30.9 121.5 12.6 152.2-41 30.8-53.6 12.6-122-40.7-152.9zm-673 138.4a47.6 47.6 0 0 1-65.2-17.6c-13.2-22.9-5.4-52.3 17.5-65.5a47.6 47.6 0 0 1 65.2 17.6c13.2 22.9 5.4 52.3-17.5 65.5zM522 463.8zM464 234a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm170 446.2l-122 70.3-122-70.3V539.8l122-70.3 122 70.3v140.4zm239.9 133.9c-13.2 22.9-42.4 30.8-65.2 17.6-22.8-13.2-30.7-42.6-17.5-65.5s42.4-30.8 65.2-17.6c22.9 13.2 30.7 42.5 17.5 65.5z")),t.DesktopOutline=u("desktop",i,l(o,"M928 140H96c-17.7 0-32 14.3-32 32v496c0 17.7 14.3 32 32 32h380v112H304c-8.8 0-16 7.2-16 16v48c0 4.4 3.6 8 8 8h432c4.4 0 8-3.6 8-8v-48c0-8.8-7.2-16-16-16H548V700h380c17.7 0 32-14.3 32-32V172c0-17.7-14.3-32-32-32zm-40 488H136V212h752v416z")),t.DingdingOutline=u("dingding",i,l(o,"M573.7 252.5C422.5 197.4 201.3 96.7 201.3 96.7c-15.7-4.1-17.9 11.1-17.9 11.1-5 61.1 33.6 160.5 53.6 182.8 19.9 22.3 319.1 113.7 319.1 113.7S326 357.9 270.5 341.9c-55.6-16-37.9 17.8-37.9 17.8 11.4 61.7 64.9 131.8 107.2 138.4 42.2 6.6 220.1 4 220.1 4s-35.5 4.1-93.2 11.9c-42.7 5.8-97 12.5-111.1 17.8-33.1 12.5 24 62.6 24 62.6 84.7 76.8 129.7 50.5 129.7 50.5 33.3-10.7 61.4-18.5 85.2-24.2L565 743.1h84.6L603 928l205.3-271.9H700.8l22.3-38.7c.3.5.4.8.4.8S799.8 496.1 829 433.8l.6-1h-.1c5-10.8 8.6-19.7 10-25.8 17-71.3-114.5-99.4-265.8-154.5z")),t.DisconnectOutline=u("disconnect",i,l(o,"M832.6 191.4c-84.6-84.6-221.5-84.6-306 0l-96.9 96.9 51 51 96.9-96.9c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204l-96.9 96.9 51.1 51.1 96.9-96.9c84.4-84.6 84.4-221.5-.1-306.1zM446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l96.9-96.9-51.1-51.1-96.9 96.9c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l96.9-96.9-51-51-96.8 97zM260.3 209.4a8.03 8.03 0 0 0-11.3 0L209.4 249a8.03 8.03 0 0 0 0 11.3l554.4 554.4c3.1 3.1 8.2 3.1 11.3 0l39.6-39.6c3.1-3.1 3.1-8.2 0-11.3L260.3 209.4z")),t.DollarOutline=u("dollar",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm47.7-395.2l-25.4-5.9V348.6c38 5.2 61.5 29 65.5 58.2.5 4 3.9 6.9 7.9 6.9h44.9c4.7 0 8.4-4.1 8-8.8-6.1-62.3-57.4-102.3-125.9-109.2V263c0-4.4-3.6-8-8-8h-28.1c-4.4 0-8 3.6-8 8v33c-70.8 6.9-126.2 46-126.2 119 0 67.6 49.8 100.2 102.1 112.7l24.7 6.3v142.7c-44.2-5.9-69-29.5-74.1-61.3-.6-3.8-4-6.6-7.9-6.6H363c-4.7 0-8.4 4-8 8.7 4.5 55 46.2 105.6 135.2 112.1V761c0 4.4 3.6 8 8 8h28.4c4.4 0 8-3.6 8-8.1l-.2-31.7c78.3-6.9 134.3-48.8 134.3-124-.1-69.4-44.2-100.4-109-116.4zm-68.6-16.2c-5.6-1.6-10.3-3.1-15-5-33.8-12.2-49.5-31.9-49.5-57.3 0-36.3 27.5-57 64.5-61.7v124zM534.3 677V543.3c3.1.9 5.9 1.6 8.8 2.2 47.3 14.4 63.2 34.4 63.2 65.1 0 39.1-29.4 62.6-72 66.4z")),t.DoubleRightOutline=u("double-right",i,l(o,"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 0 0 188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 0 0 492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z")),t.DotChartOutline=u("dot-chart",i,l(o,"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM288 604a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm118-224a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm158 228a96 96 0 1 0 192 0 96 96 0 1 0-192 0zm148-314a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")),t.DoubleLeftOutline=u("double-left",i,l(o,"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 0 0 0 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 0 0 0 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z")),t.DownloadOutline=u("download",i,l(o,"M505.7 661a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z")),t.DribbbleOutline=u("dribbble",i,l(o,"M512 96C282.6 96 96 282.6 96 512s186.6 416 416 416 416-186.6 416-416S741.4 96 512 96zm275.1 191.8c49.5 60.5 79.5 137.5 80.2 221.4-11.7-2.5-129.2-26.3-247.4-11.4-2.5-6.1-5-12.2-7.6-18.3-7.4-17.3-15.3-34.6-23.6-51.5C720 374.3 779.6 298 787.1 287.8zM512 157.2c90.3 0 172.8 33.9 235.5 89.5-6.4 9.1-59.9 81-186.2 128.4-58.2-107-122.7-194.8-132.6-208 27.3-6.6 55.2-9.9 83.3-9.9zM360.9 191c9.4 12.8 72.9 100.9 131.7 205.5C326.4 440.6 180 440 164.1 439.8c23.1-110.3 97.4-201.9 196.8-248.8zM156.7 512.5c0-3.6.1-7.3.2-10.9 15.5.3 187.7 2.5 365.2-50.6 10.2 19.9 19.9 40.1 28.8 60.3-4.7 1.3-9.4 2.7-14 4.2C353.6 574.9 256.1 736.4 248 750.1c-56.7-63-91.3-146.3-91.3-237.6zM512 867.8c-82.2 0-157.9-28-218.1-75 6.4-13.1 78.3-152 278.7-221.9l2.3-.8c49.9 129.6 70.5 238.3 75.8 269.5A350.46 350.46 0 0 1 512 867.8zm198.5-60.7c-3.6-21.6-22.5-125.6-69-253.3C752.9 536 850.7 565.2 862.8 569c-15.8 98.8-72.5 184.2-152.3 238.1z")),t.DropboxOutline=u("dropbox",i,l(o,"M64 556.9l264.2 173.5L512.5 577 246.8 412.7zm896-290.3zm0 0L696.8 95 512.5 248.5l265.2 164.2L512.5 577l184.3 153.4L960 558.8 777.7 412.7zM513 609.8L328.2 763.3l-79.4-51.5v57.8L513 928l263.7-158.4v-57.8l-78.9 51.5zM328.2 95L64 265.1l182.8 147.6 265.7-164.2zM64 556.9z")),t.EllipsisOutline=u("ellipsis",i,l(o,"M176 511a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")),t.EnterOutline=u("enter",i,l(o,"M864 170h-60c-4.4 0-8 3.6-8 8v518H310v-73c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 0 0 0 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-75h498c35.3 0 64-28.7 64-64V178c0-4.4-3.6-8-8-8z")),t.EuroOutline=u("euro",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm117.7-588.6c-15.9-3.5-34.4-5.4-55.3-5.4-106.7 0-178.9 55.7-198.6 149.9H344c-4.4 0-8 3.6-8 8v27.2c0 4.4 3.6 8 8 8h26.4c-.3 4.1-.3 8.4-.3 12.8v36.9H344c-4.4 0-8 3.6-8 8V568c0 4.4 3.6 8 8 8h30.2c17.2 99.2 90.4 158 200.2 158 20.9 0 39.4-1.7 55.3-5.1 3.7-.8 6.4-4 6.4-7.8v-42.8c0-5-4.6-8.8-9.5-7.8-14.7 2.8-31.9 4.1-51.8 4.1-68.5 0-114.5-36.6-129.8-98.6h130.6c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H439.2v-36c0-4.7 0-9.4.3-13.8h135.9c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H447.1c17.2-56.9 62.3-90.4 127.6-90.4 19.9 0 37.1 1.5 51.7 4.4a8 8 0 0 0 9.6-7.8v-42.8c0-3.8-2.6-7-6.3-7.8z")),t.ExceptionOutline=u("exception",i,l(o,"M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm376 116c-119.3 0-216 96.7-216 216s96.7 216 216 216 216-96.7 216-216-96.7-216-216-216zm107.5 323.5C750.8 868.2 712.6 884 672 884s-78.8-15.8-107.5-44.5C535.8 810.8 520 772.6 520 732s15.8-78.8 44.5-107.5C593.2 595.8 631.4 580 672 580s78.8 15.8 107.5 44.5C808.2 653.2 824 691.4 824 732s-15.8 78.8-44.5 107.5zM640 812a32 32 0 1 0 64 0 32 32 0 1 0-64 0zm12-64h40c4.4 0 8-3.6 8-8V628c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v112c0 4.4 3.6 8 8 8zM440 852H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.ExclamationOutline=u("exclamation",i,l(o,"M448 804a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm32-168h64c4.4 0 8-3.6 8-8V164c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z")),t.ExportOutline=u("export",i,l(o,"M888.3 757.4h-53.8c-4.2 0-7.7 3.5-7.7 7.7v61.8H197.1V197.1h629.8v61.8c0 4.2 3.5 7.7 7.7 7.7h53.8c4.2 0 7.7-3.4 7.7-7.7V158.7c0-17-13.7-30.7-30.7-30.7H158.7c-17 0-30.7 13.7-30.7 30.7v706.6c0 17 13.7 30.7 30.7 30.7h706.6c17 0 30.7-13.7 30.7-30.7V765.1c0-4.3-3.5-7.7-7.7-7.7zm18.6-251.7L765 393.7c-5.3-4.2-13-.4-13 6.3v76H438c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h314v76c0 6.7 7.8 10.5 13 6.3l141.9-112a8 8 0 0 0 0-12.6z")),t.FallOutline=u("fall",i,l(o,"M925.9 804l-24-199.2c-.8-6.6-8.9-9.4-13.6-4.7L829 659.5 557.7 388.3c-6.3-6.2-16.4-6.2-22.6 0L433.3 490 156.6 213.3a8.03 8.03 0 0 0-11.3 0l-45 45.2a8.03 8.03 0 0 0 0 11.3L422 591.7c6.2 6.3 16.4 6.3 22.6 0L546.4 490l226.1 226-59.3 59.3a8.01 8.01 0 0 0 4.7 13.6l199.2 24c5.1.7 9.5-3.7 8.8-8.9z")),t.FileDoneOutline=u("file-done",i,l(o,"M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm376 116c-119.3 0-216 96.7-216 216s96.7 216 216 216 216-96.7 216-216-96.7-216-216-216zm107.5 323.5C750.8 868.2 712.6 884 672 884s-78.8-15.8-107.5-44.5C535.8 810.8 520 772.6 520 732s15.8-78.8 44.5-107.5C593.2 595.8 631.4 580 672 580s78.8 15.8 107.5 44.5C808.2 653.2 824 691.4 824 732s-15.8 78.8-44.5 107.5zM761 656h-44.3c-2.6 0-5 1.2-6.5 3.3l-63.5 87.8-23.1-31.9a7.92 7.92 0 0 0-6.5-3.3H573c-6.5 0-10.3 7.4-6.5 12.7l73.8 102.1c3.2 4.4 9.7 4.4 12.9 0l114.2-158c3.9-5.3.1-12.7-6.4-12.7zM440 852H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.FileSyncOutline=u("file-sync",i,l(o,"M296 256c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm192 200v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8zm-48 396H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm104.1-115.6c1.8-34.5 16.2-66.8 40.8-91.4 26.2-26.2 62-41 99.1-41 37.4 0 72.6 14.6 99.1 41 3.2 3.2 6.3 6.6 9.2 10.1L769.2 673a8 8 0 0 0 3 14.1l93.3 22.5c5 1.2 9.8-2.6 9.9-7.7l.6-95.4a8 8 0 0 0-12.9-6.4l-20.3 15.8C805.4 569.6 748.1 540 684 540c-109.9 0-199.6 86.9-204 195.7-.2 4.5 3.5 8.3 8 8.3h48.1c4.3 0 7.8-3.3 8-7.6zM880 744h-48.1c-4.3 0-7.8 3.3-8 7.6-1.8 34.5-16.2 66.8-40.8 91.4-26.2 26.2-62 41-99.1 41-37.4 0-72.6-14.6-99.1-41-3.2-3.2-6.3-6.6-9.2-10.1l23.1-17.9a8 8 0 0 0-3-14.1l-93.3-22.5c-5-1.2-9.8 2.6-9.9 7.7l-.6 95.4a8 8 0 0 0 12.9 6.4l20.3-15.8C562.6 918.4 619.9 948 684 948c109.9 0 199.6-86.9 204-195.7.2-4.5-3.5-8.3-8-8.3z")),t.FileProtectOutline=u("file-protect",i,l(o,"M644.7 669.2a7.92 7.92 0 0 0-6.5-3.3H594c-6.5 0-10.3 7.4-6.5 12.7l73.8 102.1c3.2 4.4 9.7 4.4 12.9 0l114.2-158c3.8-5.3 0-12.7-6.5-12.7h-44.3c-2.6 0-5 1.2-6.5 3.3l-63.5 87.8-22.9-31.9zM688 306v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm184 458H208V148h560v296c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h312c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm402.6-320.8l-192-66.7c-.9-.3-1.7-.4-2.6-.4s-1.8.1-2.6.4l-192 66.7a7.96 7.96 0 0 0-5.4 7.5v251.1c0 2.5 1.1 4.8 3.1 6.3l192 150.2c1.4 1.1 3.2 1.7 4.9 1.7s3.5-.6 4.9-1.7l192-150.2c1.9-1.5 3.1-3.8 3.1-6.3V538.7c0-3.4-2.2-6.4-5.4-7.5zM826 763.7L688 871.6 550 763.7V577l138-48 138 48v186.7z")),t.FileSearchOutline=u("file-search",i,l(o,"M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm144 452H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm445.7 51.5l-93.3-93.3C814.7 780.7 828 743.9 828 704c0-97.2-78.8-176-176-176s-176 78.8-176 176 78.8 176 176 176c35.8 0 69-10.7 96.8-29l94.7 94.7c1.6 1.6 3.6 2.3 5.6 2.3s4.1-.8 5.6-2.3l31-31a7.9 7.9 0 0 0 0-11.2zM652 816c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z")),t.FileJpgOutline=u("file-jpg",i,l(r,"M874.6 301.8L596.8 21.3c-4.5-4.5-9.4-8.3-14.7-11.5-1.4-.8-2.8-1.6-4.3-2.3-.9-.5-1.9-.9-2.8-1.3-9-4-18.9-6.2-29-6.2H201c-39.8 0-73 32.2-73 72v880c0 39.8 33.2 72 73 72h623c39.8 0 71-32.2 71-72V352.5c0-19-7-37.2-20.4-50.7zM583 110.4L783.8 312H583V110.4zM823 952H200V72h311v240c0 39.8 33.2 72 73 72h239v568zM350 696.5c0 24.2-7.5 31.4-21.9 31.4-9 0-18.4-5.8-24.8-18.5L272.9 732c13.4 22.9 32.3 34.2 61.3 34.2 41.6 0 60.8-29.9 60.8-66.2V577h-45v119.5zM501.3 577H437v186h44v-62h21.6c39.1 0 73.1-19.6 73.1-63.6 0-45.8-33.5-60.4-74.4-60.4zm-.8 89H481v-53h18.2c21.5 0 33.4 6.2 33.4 24.9 0 18.1-10.5 28.1-32.1 28.1zm182.5-9v36h30v30.1c-4 2.9-11 4.7-17.7 4.7-34.3 0-50.7-21.4-50.7-58.2 0-36.1 19.7-57.4 47.1-57.4 15.3 0 25 6.2 34 14.4l23.7-28.3c-12.7-12.8-32.1-24.2-59.2-24.2-49.6 0-91.1 35.3-91.1 97 0 62.7 40 95.1 91.5 95.1 25.9 0 49.2-10.2 61.5-22.6V657H683z")),t.FontColorsOutline=u("font-colors",i,l(o,"M904 816H120c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8zm-650.3-80h85c4.2 0 8-2.7 9.3-6.8l53.7-166h219.2l53.2 166c1.3 4 5 6.8 9.3 6.8h89.1c1.1 0 2.2-.2 3.2-.5a9.7 9.7 0 0 0 6-12.4L573.6 118.6a9.9 9.9 0 0 0-9.2-6.6H462.1c-4.2 0-7.9 2.6-9.2 6.6L244.5 723.1c-.4 1-.5 2.1-.5 3.2-.1 5.3 4.3 9.7 9.7 9.7zm255.9-516.1h4.1l83.8 263.8H424.9l84.7-263.8z")),t.FontSizeOutline=u("font-size",i,l(o,"M920 416H616c-4.4 0-8 3.6-8 8v112c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-56h60v320h-46c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h164c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-46V480h60v56c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V424c0-4.4-3.6-8-8-8zM656 296V168c0-4.4-3.6-8-8-8H104c-4.4 0-8 3.6-8 8v128c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-64h168v560h-92c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-92V232h168v64c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8z")),t.ForkOutline=u("fork",i,l(o,"M752 100c-61.8 0-112 50.2-112 112 0 47.7 29.9 88.5 72 104.6v27.6L512 601.4 312 344.2v-27.6c42.1-16.1 72-56.9 72-104.6 0-61.8-50.2-112-112-112s-112 50.2-112 112c0 50.6 33.8 93.5 80 107.3v34.4c0 9.7 3.3 19.3 9.3 27L476 672.3v33.6c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1v-33.6l226.7-291.6c6-7.7 9.3-17.3 9.3-27v-34.4c46.2-13.8 80-56.7 80-107.3 0-61.8-50.2-112-112-112zM224 212a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm336 600a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0zm192-552a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")),t.FormOutline=u("form",i,l(o,"M904 512h-56c-4.4 0-8 3.6-8 8v320H184V184h320c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V520c0-4.4-3.6-8-8-8z","M355.9 534.9L354 653.8c-.1 8.9 7.1 16.2 16 16.2h.4l118-2.9c2-.1 4-.9 5.4-2.3l415.9-415c3.1-3.1 3.1-8.2 0-11.3L785.4 114.3c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-415.8 415a8.3 8.3 0 0 0-2.3 5.6zm63.5 23.6L779.7 199l45.2 45.1-360.5 359.7-45.7 1.1.7-46.4z")),t.FullscreenExitOutline=u("fullscreen-exit",i,l(o,"M391 240.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3a8.03 8.03 0 0 0-11.3 0l-42.4 42.3a8.03 8.03 0 0 0 0 11.3L280 333.6l-43.9 43.9a8.01 8.01 0 0 0 4.7 13.6L401 410c5.1.6 9.5-3.7 8.9-8.9L391 240.9zm10.1 373.2L240.8 633c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824a8.03 8.03 0 0 0 0 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7A8.01 8.01 0 0 0 391 783l18.9-160.1c.6-5.1-3.7-9.4-8.8-8.8zm221.8-204.2L783.2 391c6.6-.8 9.4-8.9 4.7-13.6L744 333.6 877.7 200c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.3a8.03 8.03 0 0 0-11.3 0L690.3 279.9l-43.7-43.7a8.01 8.01 0 0 0-13.6 4.7L614.1 401c-.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9a8.01 8.01 0 0 0-4.7-13.6L623 614c-5.1-.6-9.5 3.7-8.9 8.9L633 783.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z")),t.FullscreenOutline=u("fullscreen",i,l(o,"M290 236.4l43.9-43.9a8.01 8.01 0 0 0-4.7-13.6L169 160c-5.1-.6-9.5 3.7-8.9 8.9L179 329.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zm352.7 187.3c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7a8.01 8.01 0 0 0 13.6-4.7L863.9 169c.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370a8.03 8.03 0 0 0 0 11.3l42.4 42.4zM845 694.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3a8.03 8.03 0 0 0-11.3 0l-42.4 42.3a8.03 8.03 0 0 0 0 11.3L734 787.6l-43.9 43.9a8.01 8.01 0 0 0 4.7 13.6L855 864c5.1.6 9.5-3.7 8.9-8.9L845 694.9zm-463.7-94.6a8.03 8.03 0 0 0-11.3 0L236.3 733.9l-43.7-43.7a8.01 8.01 0 0 0-13.6 4.7L160.1 855c-.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z")),t.GatewayOutline=u("gateway",i,l(o,"M928 392c8.8 0 16-7.2 16-16V192c0-8.8-7.2-16-16-16H744c-8.8 0-16 7.2-16 16v56H296v-56c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16v184c0 8.8 7.2 16 16 16h56v240H96c-8.8 0-16 7.2-16 16v184c0 8.8 7.2 16 16 16h184c8.8 0 16-7.2 16-16v-56h432v56c0 8.8 7.2 16 16 16h184c8.8 0 16-7.2 16-16V648c0-8.8-7.2-16-16-16h-56V392h56zM792 240h88v88h-88v-88zm-648 88v-88h88v88h-88zm88 456h-88v-88h88v88zm648-88v88h-88v-88h88zm-80-64h-56c-8.8 0-16 7.2-16 16v56H296v-56c0-8.8-7.2-16-16-16h-56V392h56c8.8 0 16-7.2 16-16v-56h432v56c0 8.8 7.2 16 16 16h56v240z")),t.DownOutline=u("down",i,l(o,"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z")),t.DragOutline=u("drag",i,l(o,"M909.3 506.3L781.7 405.6a7.23 7.23 0 0 0-11.7 5.7V476H548V254h64.8c6 0 9.4-7 5.7-11.7L517.7 114.7a7.14 7.14 0 0 0-11.3 0L405.6 242.3a7.23 7.23 0 0 0 5.7 11.7H476v222H254v-64.8c0-6-7-9.4-11.7-5.7L114.7 506.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V548h222v222h-64.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V548h222v64.8c0 6 7 9.4 11.7 5.7l127.5-100.8a7.3 7.3 0 0 0 .1-11.4z")),t.GlobalOutline=u("global",i,l(o,"M854.4 800.9c.2-.3.5-.6.7-.9C920.6 722.1 960 621.7 960 512s-39.4-210.1-104.8-288c-.2-.3-.5-.5-.7-.8-1.1-1.3-2.1-2.5-3.2-3.7-.4-.5-.8-.9-1.2-1.4l-4.1-4.7-.1-.1c-1.5-1.7-3.1-3.4-4.6-5.1l-.1-.1c-3.2-3.4-6.4-6.8-9.7-10.1l-.1-.1-4.8-4.8-.3-.3c-1.5-1.5-3-2.9-4.5-4.3-.5-.5-1-1-1.6-1.5-1-1-2-1.9-3-2.8-.3-.3-.7-.6-1-1C736.4 109.2 629.5 64 512 64s-224.4 45.2-304.3 119.2c-.3.3-.7.6-1 1-1 .9-2 1.9-3 2.9-.5.5-1 1-1.6 1.5-1.5 1.4-3 2.9-4.5 4.3l-.3.3-4.8 4.8-.1.1c-3.3 3.3-6.5 6.7-9.7 10.1l-.1.1c-1.6 1.7-3.1 3.4-4.6 5.1l-.1.1c-1.4 1.5-2.8 3.1-4.1 4.7-.4.5-.8.9-1.2 1.4-1.1 1.2-2.1 2.5-3.2 3.7-.2.3-.5.5-.7.8C103.4 301.9 64 402.3 64 512s39.4 210.1 104.8 288c.2.3.5.6.7.9l3.1 3.7c.4.5.8.9 1.2 1.4l4.1 4.7c0 .1.1.1.1.2 1.5 1.7 3 3.4 4.6 5l.1.1c3.2 3.4 6.4 6.8 9.6 10.1l.1.1c1.6 1.6 3.1 3.2 4.7 4.7l.3.3c3.3 3.3 6.7 6.5 10.1 9.6 80.1 74 187 119.2 304.5 119.2s224.4-45.2 304.3-119.2a300 300 0 0 0 10-9.6l.3-.3c1.6-1.6 3.2-3.1 4.7-4.7l.1-.1c3.3-3.3 6.5-6.7 9.6-10.1l.1-.1c1.5-1.7 3.1-3.3 4.6-5 0-.1.1-.1.1-.2 1.4-1.5 2.8-3.1 4.1-4.7.4-.5.8-.9 1.2-1.4a99 99 0 0 0 3.3-3.7zm4.1-142.6c-13.8 32.6-32 62.8-54.2 90.2a444.07 444.07 0 0 0-81.5-55.9c11.6-46.9 18.8-98.4 20.7-152.6H887c-3 40.9-12.6 80.6-28.5 118.3zM887 484H743.5c-1.9-54.2-9.1-105.7-20.7-152.6 29.3-15.6 56.6-34.4 81.5-55.9A373.86 373.86 0 0 1 887 484zM658.3 165.5c39.7 16.8 75.8 40 107.6 69.2a394.72 394.72 0 0 1-59.4 41.8c-15.7-45-35.8-84.1-59.2-115.4 3.7 1.4 7.4 2.9 11 4.4zm-90.6 700.6c-9.2 7.2-18.4 12.7-27.7 16.4V697a389.1 389.1 0 0 1 115.7 26.2c-8.3 24.6-17.9 47.3-29 67.8-17.4 32.4-37.8 58.3-59 75.1zm59-633.1c11 20.6 20.7 43.3 29 67.8A389.1 389.1 0 0 1 540 327V141.6c9.2 3.7 18.5 9.1 27.7 16.4 21.2 16.7 41.6 42.6 59 75zM540 640.9V540h147.5c-1.6 44.2-7.1 87.1-16.3 127.8l-.3 1.2A445.02 445.02 0 0 0 540 640.9zm0-156.9V383.1c45.8-2.8 89.8-12.5 130.9-28.1l.3 1.2c9.2 40.7 14.7 83.5 16.3 127.8H540zm-56 56v100.9c-45.8 2.8-89.8 12.5-130.9 28.1l-.3-1.2c-9.2-40.7-14.7-83.5-16.3-127.8H484zm-147.5-56c1.6-44.2 7.1-87.1 16.3-127.8l.3-1.2c41.1 15.6 85 25.3 130.9 28.1V484H336.5zM484 697v185.4c-9.2-3.7-18.5-9.1-27.7-16.4-21.2-16.7-41.7-42.7-59.1-75.1-11-20.6-20.7-43.3-29-67.8 37.2-14.6 75.9-23.3 115.8-26.1zm0-370a389.1 389.1 0 0 1-115.7-26.2c8.3-24.6 17.9-47.3 29-67.8 17.4-32.4 37.8-58.4 59.1-75.1 9.2-7.2 18.4-12.7 27.7-16.4V327zM365.7 165.5c3.7-1.5 7.3-3 11-4.4-23.4 31.3-43.5 70.4-59.2 115.4-21-12-40.9-26-59.4-41.8 31.8-29.2 67.9-52.4 107.6-69.2zM165.5 365.7c13.8-32.6 32-62.8 54.2-90.2 24.9 21.5 52.2 40.3 81.5 55.9-11.6 46.9-18.8 98.4-20.7 152.6H137c3-40.9 12.6-80.6 28.5-118.3zM137 540h143.5c1.9 54.2 9.1 105.7 20.7 152.6a444.07 444.07 0 0 0-81.5 55.9A373.86 373.86 0 0 1 137 540zm228.7 318.5c-39.7-16.8-75.8-40-107.6-69.2 18.5-15.8 38.4-29.7 59.4-41.8 15.7 45 35.8 84.1 59.2 115.4-3.7-1.4-7.4-2.9-11-4.4zm292.6 0c-3.7 1.5-7.3 3-11 4.4 23.4-31.3 43.5-70.4 59.2-115.4 21 12 40.9 26 59.4 41.8a373.81 373.81 0 0 1-107.6 69.2z")),t.GooglePlusOutline=u("google-plus",i,l(o,"M879.5 470.4c-.3-27-.4-54.2-.5-81.3h-80.8c-.3 27-.5 54.1-.7 81.3-27.2.1-54.2.3-81.2.6v80.9c27 .3 54.2.5 81.2.8.3 27 .3 54.1.5 81.1h80.9c.1-27 .3-54.1.5-81.3 27.2-.3 54.2-.4 81.2-.7v-80.9c-26.9-.2-54.1-.2-81.1-.5zm-530 .4c-.1 32.3 0 64.7.1 97 54.2 1.8 108.5 1 162.7 1.8-23.9 120.3-187.4 159.3-273.9 80.7-89-68.9-84.8-220 7.7-284 64.7-51.6 156.6-38.9 221.3 5.8 25.4-23.5 49.2-48.7 72.1-74.7-53.8-42.9-119.8-73.5-190-70.3-146.6-4.9-281.3 123.5-283.7 270.2-9.4 119.9 69.4 237.4 180.6 279.8 110.8 42.7 252.9 13.6 323.7-86 46.7-62.9 56.8-143.9 51.3-220-90.7-.7-181.3-.6-271.9-.3z")),t.GoogleOutline=u("google",i,l(o,"M881 442.4H519.7v148.5h206.4c-8.9 48-35.9 88.6-76.6 115.8-34.4 23-78.3 36.6-129.9 36.6-99.9 0-184.4-67.5-214.6-158.2-7.6-23-12-47.6-12-72.9s4.4-49.9 12-72.9c30.3-90.6 114.8-158.1 214.7-158.1 56.3 0 106.8 19.4 146.6 57.4l110-110.1c-66.5-62-153.2-100-256.6-100-149.9 0-279.6 86-342.7 211.4-26 51.8-40.8 110.4-40.8 172.4S151 632.8 177 684.6C240.1 810 369.8 896 519.7 896c103.6 0 190.4-34.4 253.8-93 72.5-66.8 114.4-165.2 114.4-282.1 0-27.2-2.4-53.3-6.9-78.5z")),t.HeatMapOutline=u("heat-map",i,l(o,"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-790.4-23.9L512 231.9 858.7 832H165.3zm319-474.1l-228 394c-12.3 21.3 3.1 48 27.7 48h455.8c24.7 0 40.1-26.7 27.7-48L539.7 358c-6.2-10.7-17-16-27.7-16-10.8 0-21.6 5.3-27.7 16zm214 386H325.7L512 422l186.3 322zm-214-194.1l-57 98.4C415 669.5 430.4 696 455 696h114c24.6 0 39.9-26.5 27.7-47.7l-57-98.4c-6.1-10.6-16.9-15.9-27.7-15.9s-21.5 5.3-27.7 15.9zm57.1 98.4h-58.7l29.4-50.7 29.3 50.7z")),t.GoldOutline=u("gold",i,l(o,"M342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8zm91.2-196h159.5l20.7 128h-201l20.8-128zm2.5 282.7c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM196.5 748l20.7-128h159.5l20.7 128H196.5zm709.4 58.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zM626.5 748l20.7-128h159.5l20.7 128H626.5z")),t.HistoryOutline=u("history",i,l(o,"M536.1 273H488c-4.4 0-8 3.6-8 8v275.3c0 2.6 1.2 5 3.3 6.5l165.3 120.7c3.6 2.6 8.6 1.9 11.2-1.7l28.6-39c2.7-3.7 1.9-8.7-1.7-11.2L544.1 528.5V281c0-4.4-3.6-8-8-8zm219.8 75.2l156.8 38.3c5 1.2 9.9-2.6 9.9-7.7l.8-161.5c0-6.7-7.7-10.5-12.9-6.3L752.9 334.1a8 8 0 0 0 3 14.1zm167.7 301.1l-56.7-19.5a8 8 0 0 0-10.1 4.8c-1.9 5.1-3.9 10.1-6 15.1-17.8 42.1-43.3 80-75.9 112.5a353 353 0 0 1-112.5 75.9 352.18 352.18 0 0 1-137.7 27.8c-47.8 0-94.1-9.3-137.7-27.8a353 353 0 0 1-112.5-75.9c-32.5-32.5-58-70.4-75.9-112.5A353.44 353.44 0 0 1 171 512c0-47.8 9.3-94.2 27.8-137.8 17.8-42.1 43.3-80 75.9-112.5a353 353 0 0 1 112.5-75.9C430.6 167.3 477 158 524.8 158s94.1 9.3 137.7 27.8A353 353 0 0 1 775 261.7c10.2 10.3 19.8 21 28.6 32.3l59.8-46.8C784.7 146.6 662.2 81.9 524.6 82 285 82.1 92.6 276.7 95 516.4 97.4 751.9 288.9 942 524.8 942c185.5 0 343.5-117.6 403.7-282.3 1.5-4.2-.7-8.9-4.9-10.4z")),t.IeOutline=u("ie",i,l(o,"M852.6 367.6c16.3-36.9 32.1-90.7 32.1-131.8 0-109.1-119.5-147.6-314.5-57.9-161.4-10.8-316.8 110.5-355.6 279.7 46.3-52.3 117.4-123.4 183-151.7C316.1 378.3 246.7 470 194 565.6c-31.1 56.9-66 148.8-66 217.5 0 147.9 139.3 129.8 270.4 63 47.1 23.1 99.8 23.4 152.5 23.4 145.7 0 276.4-81.4 325.2-219H694.9c-78.8 132.9-295.2 79.5-295.2-71.2h493.2c9.6-65.4-2.5-143.6-40.3-211.7zM224.8 648.3c26.6 76.7 80.6 143.8 150.4 185-133.1 73.4-259.9 43.6-150.4-185zm174-163.3c3-82.7 75.4-142.3 156-142.3 80.1 0 153 59.6 156 142.3h-312zm276.8-281.4c32.1-15.4 72.8-33 108.8-33 47.1 0 81.4 32.6 81.4 80.6 0 30-11.1 73.5-21.9 101.8-39.3-63.5-98.9-122.4-168.3-149.4z")),t.InboxOutline=u("inbox",i,l(r,"M885.2 446.3l-.2-.8-112.2-285.1c-5-16.1-19.9-27.2-36.8-27.2H281.2c-17 0-32.1 11.3-36.9 27.6L139.4 443l-.3.7-.2.8c-1.3 4.9-1.7 9.9-1 14.8-.1 1.6-.2 3.2-.2 4.8V830a60.9 60.9 0 0 0 60.8 60.8h627.2c33.5 0 60.8-27.3 60.9-60.8V464.1c0-1.3 0-2.6-.1-3.7.4-4.9 0-9.6-1.3-14.1zm-295.8-43l-.3 15.7c-.8 44.9-31.8 75.1-77.1 75.1-22.1 0-41.1-7.1-54.8-20.6S436 441.2 435.6 419l-.3-15.7H229.5L309 210h399.2l81.7 193.3H589.4zm-375 76.8h157.3c24.3 57.1 76 90.8 140.4 90.8 33.7 0 65-9.4 90.3-27.2 22.2-15.6 39.5-37.4 50.7-63.6h156.5V814H214.4V480.1z")),t.ImportOutline=u("import",i,l(o,"M888.3 757.4h-53.8c-4.2 0-7.7 3.5-7.7 7.7v61.8H197.1V197.1h629.8v61.8c0 4.2 3.5 7.7 7.7 7.7h53.8c4.2 0 7.7-3.4 7.7-7.7V158.7c0-17-13.7-30.7-30.7-30.7H158.7c-17 0-30.7 13.7-30.7 30.7v706.6c0 17 13.7 30.7 30.7 30.7h706.6c17 0 30.7-13.7 30.7-30.7V765.1c0-4.3-3.5-7.7-7.7-7.7zM902 476H588v-76c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 0 0 0 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-76h314c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.InfoOutline=u("info",i,l(o,"M448 224a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm96 168h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V400c0-4.4-3.6-8-8-8z")),t.ItalicOutline=u("italic",i,l(o,"M798 160H366c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h181.2l-156 544H229c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h432c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8H474.4l156-544H798c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8z")),t.IssuesCloseOutline=u("issues-close",i,l(o,"M464 688a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm72-112c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48zm400-188h-59.3c-2.6 0-5 1.2-6.5 3.3L763.7 538.1l-49.9-68.8a7.92 7.92 0 0 0-6.5-3.3H648c-6.5 0-10.3 7.4-6.5 12.7l109.2 150.7a16.1 16.1 0 0 0 26 0l165.8-228.7c3.8-5.3 0-12.7-6.5-12.7zm-44 306h-64.2c-5.5 0-10.6 2.9-13.6 7.5a352.2 352.2 0 0 1-49.8 62.2A355.92 355.92 0 0 1 651.1 840a355 355 0 0 1-138.7 27.9c-48.1 0-94.8-9.4-138.7-27.9a355.92 355.92 0 0 1-113.3-76.3A353.06 353.06 0 0 1 184 650.5c-18.6-43.8-28-90.5-28-138.5s9.4-94.7 28-138.5c17.9-42.4 43.6-80.5 76.4-113.2 32.8-32.7 70.9-58.4 113.3-76.3a355 355 0 0 1 138.7-27.9c48.1 0 94.8 9.4 138.7 27.9 42.4 17.9 80.5 43.6 113.3 76.3 19 19 35.6 39.8 49.8 62.2 2.9 4.7 8.1 7.5 13.6 7.5H892c6 0 9.8-6.3 7.2-11.6C828.8 178.5 684.7 82 517.7 80 278.9 77.2 80.5 272.5 80 511.2 79.5 750.1 273.3 944 512.4 944c169.2 0 315.6-97 386.7-238.4A8 8 0 0 0 892 694z")),t.KeyOutline=u("key",i,l(o,"M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5l-41.1 41.1-62.3-62.3a8.15 8.15 0 0 0-11.4 0l-39.8 39.8a8.15 8.15 0 0 0 0 11.4l62.3 62.3-44.9 44.9-62.3-62.3a8.15 8.15 0 0 0-11.4 0l-39.8 39.8a8.15 8.15 0 0 0 0 11.4l62.3 62.3-65.3 65.3a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6A304.06 304.06 0 0 0 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644c-60.9 0-118.2-23.7-161.2-66.8-43.1-43-66.8-100.3-66.8-161.2 0-60.9 23.7-118.2 66.8-161.2 43-43.1 100.3-66.8 161.2-66.8 60.9 0 118.2 23.7 161.2 66.8 43.1 43 66.8 100.3 66.8 161.2 0 60.9-23.7 118.2-66.8 161.2z")),t.LaptopOutline=u("laptop",i,l(o,"M956.9 845.1L896.4 632V168c0-17.7-14.3-32-32-32h-704c-17.7 0-32 14.3-32 32v464L67.9 845.1C60.4 866 75.8 888 98 888h828.8c22.2 0 37.6-22 30.1-42.9zM200.4 208h624v395h-624V208zm228.3 608l8.1-37h150.3l8.1 37H428.7zm224 0l-19.1-86.7c-.8-3.7-4.1-6.3-7.8-6.3H398.2c-3.8 0-7 2.6-7.8 6.3L371.3 816H151l42.3-149h638.2l42.3 149H652.7z")),t.LeftOutline=u("left",i,l(o,"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 0 0 0 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z")),t.LinkOutline=u("link",i,l(o,"M574 665.4a8.03 8.03 0 0 0-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 0 0-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 0 0 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 0 0 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 0 0-11.3 0L372.3 598.7a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z")),t.LineChartOutline=u("line-chart",i,l(o,"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM305.8 637.7c3.1 3.1 8.1 3.1 11.3 0l138.3-137.6L583 628.5c3.1 3.1 8.2 3.1 11.3 0l275.4-275.3c3.1-3.1 3.1-8.2 0-11.3l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-230 229.9L461.4 404a8.03 8.03 0 0 0-11.3 0L266.3 586.7a8.03 8.03 0 0 0 0 11.3l39.5 39.7z")),t.LineHeightOutline=u("line-height",i,l(o,"M648 160H104c-4.4 0-8 3.6-8 8v128c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-64h168v560h-92c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-92V232h168v64c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8zm272.8 546H856V318h64.8c6 0 9.4-7 5.7-11.7L825.7 178.7a7.14 7.14 0 0 0-11.3 0L713.6 306.3a7.23 7.23 0 0 0 5.7 11.7H784v388h-64.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5a7.2 7.2 0 0 0-5.6-11.7z")),t.LineOutline=u("line",i,l(o,"M904 476H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.Loading3QuartersOutline=u("loading-3-quarters",i,l(r,"M512 1024c-69.1 0-136.2-13.5-199.3-40.2C251.7 958 197 921 150 874c-47-47-84-101.7-109.8-162.7C13.5 648.2 0 581.1 0 512c0-19.9 16.1-36 36-36s36 16.1 36 36c0 59.4 11.6 117 34.6 171.3 22.2 52.4 53.9 99.5 94.3 139.9 40.4 40.4 87.5 72.2 139.9 94.3C395 940.4 452.6 952 512 952c59.4 0 117-11.6 171.3-34.6 52.4-22.2 99.5-53.9 139.9-94.3 40.4-40.4 72.2-87.5 94.3-139.9C940.4 629 952 571.4 952 512c0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 0 0-94.3-139.9 437.71 437.71 0 0 0-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.2C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3s-13.5 136.2-40.2 199.3C958 772.3 921 827 874 874c-47 47-101.8 83.9-162.7 109.7-63.1 26.8-130.2 40.3-199.3 40.3z")),t.LoadingOutline=u("loading",i,l(r,"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 0 0-94.3-139.9 437.71 437.71 0 0 0-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z")),t.LoginOutline=u("login",i,l(o,"M521.7 82c-152.5-.4-286.7 78.5-363.4 197.7-3.4 5.3.4 12.3 6.7 12.3h70.3c4.8 0 9.3-2.1 12.3-5.8 7-8.5 14.5-16.7 22.4-24.5 32.6-32.5 70.5-58.1 112.7-75.9 43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 32.6 32.5 58.1 70.4 76 112.5C865.7 417.8 875 464.1 875 512c0 47.9-9.4 94.2-27.8 137.8-17.8 42.1-43.4 80-76 112.5s-70.5 58.1-112.7 75.9A352.8 352.8 0 0 1 520.6 866c-47.9 0-94.3-9.4-137.9-27.8A353.84 353.84 0 0 1 270 762.3c-7.9-7.9-15.3-16.1-22.4-24.5-3-3.7-7.6-5.8-12.3-5.8H165c-6.3 0-10.2 7-6.7 12.3C234.9 863.2 368.5 942 520.6 942c236.2 0 428-190.1 430.4-425.6C953.4 277.1 761.3 82.6 521.7 82zM395.02 624v-76h-314c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h314v-76c0-6.7 7.8-10.5 13-6.3l141.9 112a8 8 0 0 1 0 12.6l-141.9 112c-5.2 4.1-13 .4-13-6.3z")),t.LogoutOutline=u("logout",i,l(o,"M868 732h-70.3c-4.8 0-9.3 2.1-12.3 5.8-7 8.5-14.5 16.7-22.4 24.5a353.84 353.84 0 0 1-112.7 75.9A352.8 352.8 0 0 1 512.4 866c-47.9 0-94.3-9.4-137.9-27.8a353.84 353.84 0 0 1-112.7-75.9 353.28 353.28 0 0 1-76-112.5C167.3 606.2 158 559.9 158 512s9.4-94.2 27.8-137.8c17.8-42.1 43.4-80 76-112.5s70.5-58.1 112.7-75.9c43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 7.9 7.9 15.3 16.1 22.4 24.5 3 3.7 7.6 5.8 12.3 5.8H868c6.3 0 10.2-7 6.7-12.3C798 160.5 663.8 81.6 511.3 82 271.7 82.6 79.6 277.1 82 516.4 84.4 751.9 276.2 942 512.4 942c152.1 0 285.7-78.8 362.3-197.7 3.4-5.3-.4-12.3-6.7-12.3zm88.9-226.3L815 393.7c-5.3-4.2-13-.4-13 6.3v76H488c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h314v76c0 6.7 7.8 10.5 13 6.3l141.9-112a8 8 0 0 0 0-12.6z")),t.ManOutline=u("man",i,l(o,"M874 120H622c-3.3 0-6 2.7-6 6v56c0 3.3 2.7 6 6 6h160.4L583.1 387.3c-50-38.5-111-59.3-175.1-59.3-76.9 0-149.3 30-203.6 84.4S120 539.1 120 616s30 149.3 84.4 203.6C258.7 874 331.1 904 408 904s149.3-30 203.6-84.4C666 765.3 696 692.9 696 616c0-64.1-20.8-124.9-59.2-174.9L836 241.9V402c0 3.3 2.7 6 6 6h56c3.3 0 6-2.7 6-6V150c0-16.5-13.5-30-30-30zM408 828c-116.9 0-212-95.1-212-212s95.1-212 212-212 212 95.1 212 212-95.1 212-212 212z")),t.MediumOutline=u("medium",i,l(o,"M834.7 279.8l61.3-58.9V208H683.7L532.4 586.4 360.3 208H137.7v12.9l71.6 86.6c7 6.4 10.6 15.8 9.7 25.2V673c2.2 12.3-1.7 24.8-10.3 33.7L128 805v12.7h228.6v-12.9l-80.6-98a39.99 39.99 0 0 1-11.1-33.7V378.7l200.7 439.2h23.3l172.6-439.2v349.9c0 9.2 0 11.1-6 17.2l-62.1 60.3V819h301.2v-12.9l-59.9-58.9c-5.2-4-7.9-10.7-6.8-17.2V297a18.1 18.1 0 0 1 6.8-17.2z")),t.MediumWorkmarkOutline=u("medium-workmark",i,l(r,"M517.2 590.55c0 3.55 0 4.36 2.4 6.55l13.43 13.25v.57h-59.57v-25.47a41.44 41.44 0 0 1-39.5 27.65c-30.61 0-52.84-24.25-52.84-68.87 0-41.8 23.99-69.69 57.65-69.69a35.15 35.15 0 0 1 34.61 21.67v-56.19a6.99 6.99 0 0 0-2.71-6.79l-12.8-12.45v-.56l59.33-7.04v177.37zm-43.74-8.09v-83.83a22.2 22.2 0 0 0-17.74-8.4c-14.48 0-28.47 13.25-28.47 52.62 0 36.86 12.07 49.88 27.1 49.88a23.91 23.91 0 0 0 19.11-10.27zm83.23 28.46V497.74a7.65 7.65 0 0 0-2.4-6.79l-13.19-13.74v-.57h59.56v114.8c0 3.55 0 4.36 2.4 6.54l13.12 12.45v.57l-59.49-.08zm-2.16-175.67c0-13.4 10.74-24.25 23.99-24.25 13.25 0 23.98 10.86 23.98 24.25 0 13.4-10.73 24.25-23.98 24.25s-23.99-10.85-23.99-24.25zm206.83 155.06c0 3.55 0 4.6 2.4 6.79l13.43 13.25v.57h-59.88V581.9a43.4 43.4 0 0 1-41.01 31.2c-26.55 0-40.78-19.56-40.78-56.59 0-17.86 0-37.43.56-59.41a6.91 6.91 0 0 0-2.4-6.55L620.5 477.2v-.57h59.09v73.81c0 24.25 3.51 40.42 18.54 40.42a23.96 23.96 0 0 0 19.35-12.2v-80.85a7.65 7.65 0 0 0-2.4-6.79l-13.27-13.82v-.57h59.56V590.3zm202.76 20.6c0-4.36.8-59.97.8-72.75 0-24.25-3.76-40.98-20.63-40.98a26.7 26.7 0 0 0-21.19 11.64 99.68 99.68 0 0 1 2.4 23.04c0 16.81-.56 38.23-.8 59.66a6.91 6.91 0 0 0 2.4 6.55l13.43 12.45v.56h-60.12c0-4.04.8-59.98.8-72.76 0-24.65-3.76-40.98-20.39-40.98-8.2.3-15.68 4.8-19.83 11.96v82.46c0 3.56 0 4.37 2.4 6.55l13.11 12.45v.56h-59.48V498.15a7.65 7.65 0 0 0-2.4-6.8l-13.19-14.14v-.57H841v28.78c5.53-19 23.13-31.76 42.7-30.96 19.82 0 33.26 11.16 38.93 32.34a46.41 46.41 0 0 1 44.77-32.34c26.55 0 41.58 19.8 41.58 57.23 0 17.87-.56 38.24-.8 59.66a6.5 6.5 0 0 0 2.72 6.55l13.11 12.45v.57h-59.88zM215.87 593.3l17.66 17.05v.57h-89.62v-.57l17.99-17.05a6.91 6.91 0 0 0 2.4-6.55V477.69c0-4.6 0-10.83.8-16.16L104.66 613.1h-.72l-62.6-139.45c-1.37-3.47-1.77-3.72-2.65-6.06v91.43a32.08 32.08 0 0 0 2.96 17.87l25.19 33.46v.57H0v-.57l25.18-33.55a32.16 32.16 0 0 0 2.96-17.78V457.97A19.71 19.71 0 0 0 24 444.15L6.16 420.78v-.56h63.96l53.56 118.1 47.17-118.1h62.6v.56l-17.58 19.8a6.99 6.99 0 0 0-2.72 6.8v139.37a6.5 6.5 0 0 0 2.72 6.55zm70.11-54.65v.56c0 34.6 17.67 48.5 38.38 48.5a43.5 43.5 0 0 0 40.77-24.97h.56c-7.2 34.2-28.14 50.36-59.48 50.36-33.82 0-65.72-20.61-65.72-68.39 0-50.2 31.98-70.25 67.32-70.25 28.46 0 58.76 13.58 58.76 57.24v6.95h-80.59zm0-6.95h39.42v-7.04c0-35.57-7.28-45.03-18.23-45.03-13.27 0-21.35 14.15-21.35 52.07h.16z")),t.MenuUnfoldOutline=u("menu-unfold",i,l(o,"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z")),t.MenuFoldOutline=u("menu-fold",i,l(o,"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z")),t.MenuOutline=u("menu",i,l(o,"M904 160H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8zm0 624H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8zm0-312H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8z")),t.MinusOutline=u("minus",i,l(o,"M872 474H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z")),t.MonitorOutline=u("monitor",i,l(o,"M692.8 412.7l.2-.2-34.6-44.3a7.97 7.97 0 0 0-11.2-1.4l-50.4 39.3-70.5-90.1a7.97 7.97 0 0 0-11.2-1.4l-37.9 29.7a7.97 7.97 0 0 0-1.4 11.2l70.5 90.2-.2.1 34.6 44.3c2.7 3.5 7.7 4.1 11.2 1.4l50.4-39.3 64.1 82c2.7 3.5 7.7 4.1 11.2 1.4l37.9-29.6c3.5-2.7 4.1-7.7 1.4-11.2l-64.1-82.1zM608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z")),t.MoreOutline=u("more",i,l(o,"M456 231a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 280a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 280a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")),t.OrderedListOutline=u("ordered-list",i,l(o,"M920 760H336c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-568H336c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H336c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM216 712H100c-2.2 0-4 1.8-4 4v34c0 2.2 1.8 4 4 4h72.4v20.5h-35.7c-2.2 0-4 1.8-4 4v34c0 2.2 1.8 4 4 4h35.7V838H100c-2.2 0-4 1.8-4 4v34c0 2.2 1.8 4 4 4h116c2.2 0 4-1.8 4-4V716c0-2.2-1.8-4-4-4zM100 188h38v120c0 2.2 1.8 4 4 4h40c2.2 0 4-1.8 4-4V152c0-4.4-3.6-8-8-8h-78c-2.2 0-4 1.8-4 4v36c0 2.2 1.8 4 4 4zm116 240H100c-2.2 0-4 1.8-4 4v36c0 2.2 1.8 4 4 4h68.4l-70.3 77.7a8.3 8.3 0 0 0-2.1 5.4V592c0 2.2 1.8 4 4 4h116c2.2 0 4-1.8 4-4v-36c0-2.2-1.8-4-4-4h-68.4l70.3-77.7a8.3 8.3 0 0 0 2.1-5.4V432c0-2.2-1.8-4-4-4z")),t.NumberOutline=u("number",i,l(o,"M872 394c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H708V152c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v166H400V152c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v166H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h168v236H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h168v166c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V706h228v166c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V706h164c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H708V394h164zM628 630H400V394h228v236z")),t.PauseOutline=u("pause",i,l(o,"M304 176h80v672h-80zm408 0h-64c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8z")),t.PercentageOutline=u("percentage",i,l(o,"M855.7 210.8l-42.4-42.4a8.03 8.03 0 0 0-11.3 0L168.3 801.9a8.03 8.03 0 0 0 0 11.3l42.4 42.4c3.1 3.1 8.2 3.1 11.3 0L855.6 222c3.2-3 3.2-8.1.1-11.2zM304 448c79.4 0 144-64.6 144-144s-64.6-144-144-144-144 64.6-144 144 64.6 144 144 144zm0-216c39.7 0 72 32.3 72 72s-32.3 72-72 72-72-32.3-72-72 32.3-72 72-72zm416 344c-79.4 0-144 64.6-144 144s64.6 144 144 144 144-64.6 144-144-64.6-144-144-144zm0 216c-39.7 0-72-32.3-72-72s32.3-72 72-72 72 32.3 72 72-32.3 72-72 72z")),t.PaperClipOutline=u("paper-clip",i,l(o,"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0 0 12.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0 0 12.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 0 0 174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z")),t.PicCenterOutline=u("pic-center",i,l(o,"M952 792H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-632H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM848 660c8.8 0 16-7.2 16-16V380c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h672zM232 436h560v152H232V436z")),t.PicLeftOutline=u("pic-left",i,l(o,"M952 792H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-632H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM608 660c8.8 0 16-7.2 16-16V380c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h512zM152 436h400v152H152V436zm552 210c0 4.4 3.6 8 8 8h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H712c-4.4 0-8 3.6-8 8v56zm8-204h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H712c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z")),t.PlusOutline=u("plus",i,l(o,"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z","M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z")),t.PicRightOutline=u("pic-right",i,l(o,"M952 792H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-632H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-24 500c8.8 0 16-7.2 16-16V380c0-8.8-7.2-16-16-16H416c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h512zM472 436h400v152H472V436zM80 646c0 4.4 3.6 8 8 8h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H88c-4.4 0-8 3.6-8 8v56zm8-204h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H88c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z")),t.PoundOutline=u("pound",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm138-209.8H469.8v-4.7c27.4-17.2 43.9-50.4 43.9-91.1 0-14.1-2.2-27.9-5.3-41H607c4.4 0 8-3.6 8-8v-30c0-4.4-3.6-8-8-8H495c-7.2-22.6-13.4-45.7-13.4-70.5 0-43.5 34-70.2 87.3-70.2 21.5 0 42.5 4.1 60.4 10.5 5.2 1.9 10.6-2 10.6-7.6v-39.5c0-3.3-2.1-6.3-5.2-7.5-18.8-7.2-43.8-12.7-70.3-12.7-92.9 0-151.5 44.5-151.5 120.3 0 26.3 6.9 52 14.6 77.1H374c-4.4 0-8 3.6-8 8v30c0 4.4 3.6 8 8 8h67.1c3.4 14.7 5.9 29.4 5.9 44.2 0 45.2-28.8 83.3-72.8 94.2-3.6.9-6.1 4.1-6.1 7.8V722c0 4.4 3.6 8 8 8H650c4.4 0 8-3.6 8-8v-39.8c0-4.4-3.6-8-8-8z")),t.PoweroffOutline=u("poweroff",i,l(o,"M705.6 124.9a8 8 0 0 0-11.6 7.2v64.2c0 5.5 2.9 10.6 7.5 13.6a352.2 352.2 0 0 1 62.2 49.8c32.7 32.8 58.4 70.9 76.3 113.3a355 355 0 0 1 27.9 138.7c0 48.1-9.4 94.8-27.9 138.7a355.92 355.92 0 0 1-76.3 113.3 353.06 353.06 0 0 1-113.2 76.4c-43.8 18.6-90.5 28-138.5 28s-94.7-9.4-138.5-28a353.06 353.06 0 0 1-113.2-76.4A355.92 355.92 0 0 1 184 650.4a355 355 0 0 1-27.9-138.7c0-48.1 9.4-94.8 27.9-138.7 17.9-42.4 43.6-80.5 76.3-113.3 19-19 39.8-35.6 62.2-49.8 4.7-2.9 7.5-8.1 7.5-13.6V132c0-6-6.3-9.8-11.6-7.2C178.5 195.2 82 339.3 80 506.3 77.2 745.1 272.5 943.5 511.2 944c239 .5 432.8-193.3 432.8-432.4 0-169.2-97-315.7-238.4-386.7zM480 560h64c4.4 0 8-3.6 8-8V88c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z")),t.PullRequestOutline=u("pull-request",i,l(o,"M788 705.9V192c0-8.8-7.2-16-16-16H602v-68.8c0-6-7-9.4-11.7-5.7L462.7 202.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V240h114v465.9c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c.1-49.2-31.7-91-75.9-106.1zM752 860a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96zM384 212c0-61.8-50.2-112-112-112s-112 50.2-112 112c0 49.2 31.8 91 76 106.1V706c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1V318.1c44.2-15.1 76-56.9 76-106.1zm-160 0a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm96 600a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0z")),t.QqOutline=u("qq",i,l(o,"M824.8 613.2c-16-51.4-34.4-94.6-62.7-165.3C766.5 262.2 689.3 112 511.5 112 331.7 112 256.2 265.2 261 447.9c-28.4 70.8-46.7 113.7-62.7 165.3-34 109.5-23 154.8-14.6 155.8 18 2.2 70.1-82.4 70.1-82.4 0 49 25.2 112.9 79.8 159-26.4 8.1-85.7 29.9-71.6 53.8 11.4 19.3 196.2 12.3 249.5 6.3 53.3 6 238.1 13 249.5-6.3 14.1-23.8-45.3-45.7-71.6-53.8 54.6-46.2 79.8-110.1 79.8-159 0 0 52.1 84.6 70.1 82.4 8.5-1.1 19.5-46.4-14.5-155.8z")),t.QuestionOutline=u("question",i,l(o,"M764 280.9c-14-30.6-33.9-58.1-59.3-81.6C653.1 151.4 584.6 125 512 125s-141.1 26.4-192.7 74.2c-25.4 23.6-45.3 51-59.3 81.7-14.6 32-22 65.9-22 100.9v27c0 6.2 5 11.2 11.2 11.2h54c6.2 0 11.2-5 11.2-11.2v-27c0-99.5 88.6-180.4 197.6-180.4s197.6 80.9 197.6 180.4c0 40.8-14.5 79.2-42 111.2-27.2 31.7-65.6 54.4-108.1 64-24.3 5.5-46.2 19.2-61.7 38.8a110.85 110.85 0 0 0-23.9 68.6v31.4c0 6.2 5 11.2 11.2 11.2h54c6.2 0 11.2-5 11.2-11.2v-31.4c0-15.7 10.9-29.5 26-32.9 58.4-13.2 111.4-44.7 149.3-88.7 19.1-22.3 34-47.1 44.3-74 10.7-27.9 16.1-57.2 16.1-87 0-35-7.4-69-22-100.9zM512 787c-30.9 0-56 25.1-56 56s25.1 56 56 56 56-25.1 56-56-25.1-56-56-56z")),t.RadarChartOutline=u("radar-chart",i,l(o,"M926.8 397.1l-396-288a31.81 31.81 0 0 0-37.6 0l-396 288a31.99 31.99 0 0 0-11.6 35.8l151.3 466a32 32 0 0 0 30.4 22.1h489.5c13.9 0 26.1-8.9 30.4-22.1l151.3-466c4.2-13.2-.5-27.6-11.7-35.8zM838.6 417l-98.5 32-200-144.7V199.9L838.6 417zM466 567.2l-89.1 122.3-55.2-169.2L466 567.2zm-116.3-96.8L484 373.3v140.8l-134.3-43.7zM512 599.2l93.9 128.9H418.1L512 599.2zm28.1-225.9l134.2 97.1L540.1 514V373.3zM558 567.2l144.3-46.9-55.2 169.2L558 567.2zm-74-367.3v104.4L283.9 449l-98.5-32L484 199.9zM169.3 470.8l86.5 28.1 80.4 246.4-53.8 73.9-113.1-348.4zM327.1 853l50.3-69h269.3l50.3 69H327.1zm414.5-33.8l-53.8-73.9 80.4-246.4 86.5-28.1-113.1 348.4z")),t.QrcodeOutline=u("qrcode",i,l(o,"M468 128H160c-17.7 0-32 14.3-32 32v308c0 4.4 3.6 8 8 8h332c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8zm-56 284H192V192h220v220zm-138-74h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm194 210H136c-4.4 0-8 3.6-8 8v308c0 17.7 14.3 32 32 32h308c4.4 0 8-3.6 8-8V556c0-4.4-3.6-8-8-8zm-56 284H192V612h220v220zm-138-74h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm590-630H556c-4.4 0-8 3.6-8 8v332c0 4.4 3.6 8 8 8h332c4.4 0 8-3.6 8-8V160c0-17.7-14.3-32-32-32zm-32 284H612V192h220v220zm-138-74h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm194 210h-48c-4.4 0-8 3.6-8 8v134h-78V556c0-4.4-3.6-8-8-8H556c-4.4 0-8 3.6-8 8v332c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V644h78v102c0 4.4 3.6 8 8 8h190c4.4 0 8-3.6 8-8V556c0-4.4-3.6-8-8-8zM746 832h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm142 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z")),t.RadiusBottomleftOutline=u("radius-bottomleft",i,l(o,"M712 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm2-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM136 374h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-174h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm752 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-230 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 624H358c-87.3 0-158-70.7-158-158V484c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v182c0 127 103 230 230 230h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.RadiusBottomrightOutline=u("radius-bottomright",i,l(o,"M368 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-58-624h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm578 102h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm292 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm174 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 276h-56c-4.4 0-8 3.6-8 8v182c0 87.3-70.7 158-158 158H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h182c127 0 230-103 230-230V484c0-4.4-3.6-8-8-8z")),t.RadiusUpleftOutline=u("radius-upleft",i,l(o,"M656 200h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm58 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 650h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm696-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-174 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm174-696H358c-127 0-230 103-230 230v182c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V358c0-87.3 70.7-158 158-158h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.RadiusUprightOutline=u("radius-upright",i,l(o,"M368 128h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-2 696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm522-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 128h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm174 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-48-696H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h182c87.3 0 158 70.7 158 158v182c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V358c0-127-103-230-230-230z")),t.RadiusSettingOutline=u("radius-setting",i,l(o,"M396 140h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-44 684h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm524-204h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 344h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 160h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 160h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 160h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm320 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm160 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm140-284c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V370c0-127-103-230-230-230H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h170c87.3 0 158 70.7 158 158v170zM236 96H92c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h144c4.4 0 8-3.6 8-8V104c0-4.4-3.6-8-8-8zm-48 101.6c0 1.3-1.1 2.4-2.4 2.4h-43.2c-1.3 0-2.4-1.1-2.4-2.4v-43.2c0-1.3 1.1-2.4 2.4-2.4h43.2c1.3 0 2.4 1.1 2.4 2.4v43.2zM920 780H776c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h144c4.4 0 8-3.6 8-8V788c0-4.4-3.6-8-8-8zm-48 101.6c0 1.3-1.1 2.4-2.4 2.4h-43.2c-1.3 0-2.4-1.1-2.4-2.4v-43.2c0-1.3 1.1-2.4 2.4-2.4h43.2c1.3 0 2.4 1.1 2.4 2.4v43.2z")),t.RedditOutline=u("reddit",i,l(o,"M288 568a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm338.7 119.7c-23.1 18.2-68.9 37.8-114.7 37.8s-91.6-19.6-114.7-37.8c-14.4-11.3-35.3-8.9-46.7 5.5s-8.9 35.3 5.5 46.7C396.3 771.6 457.5 792 512 792s115.7-20.4 155.9-52.1a33.25 33.25 0 1 0-41.2-52.2zM960 456c0-61.9-50.1-112-112-112-42.1 0-78.7 23.2-97.9 57.6-57.6-31.5-127.7-51.8-204.1-56.5L612.9 195l127.9 36.9c11.5 32.6 42.6 56.1 79.2 56.1 46.4 0 84-37.6 84-84s-37.6-84-84-84c-32 0-59.8 17.9-74 44.2L603.5 123a33.2 33.2 0 0 0-39.6 18.4l-90.8 203.9c-74.5 5.2-142.9 25.4-199.2 56.2A111.94 111.94 0 0 0 176 344c-61.9 0-112 50.1-112 112 0 45.8 27.5 85.1 66.8 102.5-7.1 21-10.8 43-10.8 65.5 0 154.6 175.5 280 392 280s392-125.4 392-280c0-22.6-3.8-44.5-10.8-65.5C932.5 541.1 960 501.8 960 456zM820 172.5a31.5 31.5 0 1 1 0 63 31.5 31.5 0 0 1 0-63zM120 456c0-30.9 25.1-56 56-56a56 56 0 0 1 50.6 32.1c-29.3 22.2-53.5 47.8-71.5 75.9a56.23 56.23 0 0 1-35.1-52zm392 381.5c-179.8 0-325.5-95.6-325.5-213.5S332.2 410.5 512 410.5 837.5 506.1 837.5 624 691.8 837.5 512 837.5zM868.8 508c-17.9-28.1-42.2-53.7-71.5-75.9 9-18.9 28.3-32.1 50.6-32.1 30.9 0 56 25.1 56 56 .1 23.5-14.5 43.7-35.1 52zM624 568a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")),t.RedoOutline=u("redo",i,l(o,"M758.2 839.1C851.8 765.9 912 651.9 912 523.9 912 303 733.5 124.3 512.6 124 291.4 123.7 112 302.8 112 523.9c0 125.2 57.5 236.9 147.6 310.2 3.5 2.8 8.6 2.2 11.4-1.3l39.4-50.5c2.7-3.4 2.1-8.3-1.2-11.1-8.1-6.6-15.9-13.7-23.4-21.2a318.64 318.64 0 0 1-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 0 1-68.6 101.7c-9.3 9.3-19.1 18-29.3 26L668.2 724a8 8 0 0 0-14.1 3l-39.6 162.2c-1.2 5 2.6 9.9 7.7 9.9l167 .8c6.7 0 10.5-7.7 6.3-12.9l-37.3-47.9z")),t.ReloadOutline=u("reload",i,l(o,"M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 0 0-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 0 1 655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 0 1 279 755.2a342.16 342.16 0 0 1-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 0 1 109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 0 0 3 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z")),t.RetweetOutline=u("retweet",i,l(r,"M136 552h63.6c4.4 0 8-3.6 8-8V288.7h528.6v72.6c0 1.9.6 3.7 1.8 5.2a8.3 8.3 0 0 0 11.7 1.4L893 255.4c4.3-5 3.6-10.3 0-13.2L749.7 129.8a8.22 8.22 0 0 0-5.2-1.8c-4.6 0-8.4 3.8-8.4 8.4V209H199.7c-39.5 0-71.7 32.2-71.7 71.8V544c0 4.4 3.6 8 8 8zm752-80h-63.6c-4.4 0-8 3.6-8 8v255.3H287.8v-72.6c0-1.9-.6-3.7-1.8-5.2a8.3 8.3 0 0 0-11.7-1.4L131 768.6c-4.3 5-3.6 10.3 0 13.2l143.3 112.4c1.5 1.2 3.3 1.8 5.2 1.8 4.6 0 8.4-3.8 8.4-8.4V815h536.6c39.5 0 71.7-32.2 71.7-71.8V480c-.2-4.4-3.8-8-8.2-8z")),t.RightOutline=u("right",i,l(o,"M765.7 486.8L314.9 134.7A7.97 7.97 0 0 0 302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 0 0 0-50.4z")),t.RiseOutline=u("rise",i,l(o,"M917 211.1l-199.2 24c-6.6.8-9.4 8.9-4.7 13.6l59.3 59.3-226 226-101.8-101.7c-6.3-6.3-16.4-6.2-22.6 0L100.3 754.1a8.03 8.03 0 0 0 0 11.3l45 45.2c3.1 3.1 8.2 3.1 11.3 0L433.3 534 535 635.7c6.3 6.2 16.4 6.2 22.6 0L829 364.5l59.3 59.3a8.01 8.01 0 0 0 13.6-4.7l24-199.2c.7-5.1-3.7-9.5-8.9-8.8z")),t.RollbackOutline=u("rollback",i,l(o,"M793 242H366v-74c0-6.7-7.7-10.4-12.9-6.3l-142 112a8 8 0 0 0 0 12.6l142 112c5.2 4.1 12.9.4 12.9-6.3v-74h415v470H175c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h618c35.3 0 64-28.7 64-64V306c0-35.3-28.7-64-64-64z")),t.SafetyOutline=u("safety",i,l(r,"M512 64L128 192v384c0 212.1 171.9 384 384 384s384-171.9 384-384V192L512 64zm312 512c0 172.3-139.7 312-312 312S200 748.3 200 576V246l312-110 312 110v330z","M378.4 475.1a35.91 35.91 0 0 0-50.9 0 35.91 35.91 0 0 0 0 50.9l129.4 129.4 2.1 2.1a33.98 33.98 0 0 0 48.1 0L730.6 434a33.98 33.98 0 0 0 0-48.1l-2.8-2.8a33.98 33.98 0 0 0-48.1 0L483 579.7 378.4 475.1z")),t.RobotOutline=u("robot",i,l(o,"M300 328a60 60 0 1 0 120 0 60 60 0 1 0-120 0zM852 64H172c-17.7 0-32 14.3-32 32v660c0 17.7 14.3 32 32 32h680c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-32 660H204V128h616v596zM604 328a60 60 0 1 0 120 0 60 60 0 1 0-120 0zm250.2 556H169.8c-16.5 0-29.8 14.3-29.8 32v36c0 4.4 3.3 8 7.4 8h729.1c4.1 0 7.4-3.6 7.4-8v-36c.1-17.7-13.2-32-29.7-32zM664 508H360c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z")),t.SearchOutline=u("search",i,l(o,"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z")),t.ScanOutline=u("scan",i,l(o,"M136 384h56c4.4 0 8-3.6 8-8V200h176c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-37.6 0-68 30.4-68 68v180c0 4.4 3.6 8 8 8zm512-184h176v176c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V196c0-37.6-30.4-68-68-68H648c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM376 824H200V648c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v180c0 37.6 30.4 68 68 68h180c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm512-184h-56c-4.4 0-8 3.6-8 8v176H648c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h180c37.6 0 68-30.4 68-68V648c0-4.4-3.6-8-8-8zm16-164H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.ScissorOutline=u("scissor",i,l(o,"M567.1 512l318.5-319.3c5-5 1.5-13.7-5.6-13.7h-90.5c-2.1 0-4.2.8-5.6 2.3l-273.3 274-90.2-90.5c12.5-22.1 19.7-47.6 19.7-74.8 0-83.9-68.1-152-152-152s-152 68.1-152 152 68.1 152 152 152c27.7 0 53.6-7.4 75.9-20.3l90 90.3-90.1 90.3A151.04 151.04 0 0 0 288 582c-83.9 0-152 68.1-152 152s68.1 152 152 152 152-68.1 152-152c0-27.2-7.2-52.7-19.7-74.8l90.2-90.5 273.3 274c1.5 1.5 3.5 2.3 5.6 2.3H880c7.1 0 10.7-8.6 5.6-13.7L567.1 512zM288 370c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm0 444c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z")),t.SelectOutline=u("select",i,l(o,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h360c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H184V184h656v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32zM653.3 599.4l52.2-52.2a8.01 8.01 0 0 0-4.7-13.6l-179.4-21c-5.1-.6-9.5 3.7-8.9 8.9l21 179.4c.8 6.6 8.9 9.4 13.6 4.7l52.4-52.4 256.2 256.2c3.1 3.1 8.2 3.1 11.3 0l42.4-42.4c3.1-3.1 3.1-8.2 0-11.3L653.3 599.4z")),t.ShakeOutline=u("shake",i,l(o,"M324 666a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm616.7-309.6L667.6 83.2C655.2 70.9 638.7 64 621.1 64s-34.1 6.8-46.5 19.2L83.3 574.5a65.85 65.85 0 0 0 0 93.1l273.2 273.2c12.3 12.3 28.9 19.2 46.5 19.2s34.1-6.8 46.5-19.2l491.3-491.3c25.6-25.7 25.6-67.5-.1-93.1zM403 880.1L143.9 621l477.2-477.2 259 259.2L403 880.1zM152.8 373.7a7.9 7.9 0 0 0 11.2 0L373.7 164a7.9 7.9 0 0 0 0-11.2l-38.4-38.4a7.9 7.9 0 0 0-11.2 0L114.3 323.9a7.9 7.9 0 0 0 0 11.2l38.5 38.6zm718.6 276.6a7.9 7.9 0 0 0-11.2 0L650.3 860.1a7.9 7.9 0 0 0 0 11.2l38.4 38.4a7.9 7.9 0 0 0 11.2 0L909.7 700a7.9 7.9 0 0 0 0-11.2l-38.3-38.5z")),t.ShareAltOutline=u("share-alt",i,l(o,"M752 664c-28.5 0-54.8 10-75.4 26.7L469.4 540.8a160.68 160.68 0 0 0 0-57.6l207.2-149.9C697.2 350 723.5 360 752 360c66.2 0 120-53.8 120-120s-53.8-120-120-120-120 53.8-120 120c0 11.6 1.6 22.7 4.7 33.3L439.9 415.8C410.7 377.1 364.3 352 312 352c-88.4 0-160 71.6-160 160s71.6 160 160 160c52.3 0 98.7-25.1 127.9-63.8l196.8 142.5c-3.1 10.6-4.7 21.8-4.7 33.3 0 66.2 53.8 120 120 120s120-53.8 120-120-53.8-120-120-120zm0-476c28.7 0 52 23.3 52 52s-23.3 52-52 52-52-23.3-52-52 23.3-52 52-52zM312 600c-48.5 0-88-39.5-88-88s39.5-88 88-88 88 39.5 88 88-39.5 88-88 88zm440 236c-28.7 0-52-23.3-52-52s23.3-52 52-52 52 23.3 52 52-23.3 52-52 52z")),t.ShoppingCartOutline=u("shopping-cart",i,l(r,"M922.9 701.9H327.4l29.9-60.9 496.8-.9c16.8 0 31.2-12 34.2-28.6l68.8-385.1c1.8-10.1-.9-20.5-7.5-28.4a34.99 34.99 0 0 0-26.6-12.5l-632-2.1-5.4-25.4c-3.4-16.2-18-28-34.6-28H96.5a35.3 35.3 0 1 0 0 70.6h125.9L246 312.8l58.1 281.3-74.8 122.1a34.96 34.96 0 0 0-3 36.8c6 11.9 18.1 19.4 31.5 19.4h62.8a102.43 102.43 0 0 0-20.6 61.7c0 56.6 46 102.6 102.6 102.6s102.6-46 102.6-102.6c0-22.3-7.4-44-20.6-61.7h161.1a102.43 102.43 0 0 0-20.6 61.7c0 56.6 46 102.6 102.6 102.6s102.6-46 102.6-102.6c0-22.3-7.4-44-20.6-61.7H923c19.4 0 35.3-15.8 35.3-35.3a35.42 35.42 0 0 0-35.4-35.2zM305.7 253l575.8 1.9-56.4 315.8-452.3.8L305.7 253zm96.9 612.7c-17.4 0-31.6-14.2-31.6-31.6 0-17.4 14.2-31.6 31.6-31.6s31.6 14.2 31.6 31.6a31.6 31.6 0 0 1-31.6 31.6zm325.1 0c-17.4 0-31.6-14.2-31.6-31.6 0-17.4 14.2-31.6 31.6-31.6s31.6 14.2 31.6 31.6a31.6 31.6 0 0 1-31.6 31.6z")),t.ShrinkOutline=u("shrink",i,l(o,"M881.7 187.4l-45.1-45.1a8.03 8.03 0 0 0-11.3 0L667.8 299.9l-54.7-54.7a7.94 7.94 0 0 0-13.5 4.7L576.1 439c-.6 5.2 3.7 9.5 8.9 8.9l189.2-23.5c6.6-.8 9.3-8.8 4.7-13.5l-54.7-54.7 157.6-157.6c3-3 3-8.1-.1-11.2zM439 576.1l-189.2 23.5c-6.6.8-9.3 8.9-4.7 13.5l54.7 54.7-157.5 157.5a8.03 8.03 0 0 0 0 11.3l45.1 45.1c3.1 3.1 8.2 3.1 11.3 0l157.6-157.6 54.7 54.7a7.94 7.94 0 0 0 13.5-4.7L447.9 585a7.9 7.9 0 0 0-8.9-8.9z")),t.SlackOutline=u("slack",i,l(o,"M409.4 128c-42.4 0-76.7 34.4-76.7 76.8 0 20.3 8.1 39.9 22.4 54.3a76.74 76.74 0 0 0 54.3 22.5h76.7v-76.8c0-42.3-34.3-76.7-76.7-76.8zm0 204.8H204.7c-42.4 0-76.7 34.4-76.7 76.8s34.4 76.8 76.7 76.8h204.6c42.4 0 76.7-34.4 76.7-76.8.1-42.4-34.3-76.8-76.6-76.8zM614 486.4c42.4 0 76.8-34.4 76.7-76.8V204.8c0-42.4-34.3-76.8-76.7-76.8-42.4 0-76.7 34.4-76.7 76.8v204.8c0 42.5 34.3 76.8 76.7 76.8zm281.4-76.8c0-42.4-34.4-76.8-76.7-76.8S742 367.2 742 409.6v76.8h76.7c42.3 0 76.7-34.4 76.7-76.8zm-76.8 128H614c-42.4 0-76.7 34.4-76.7 76.8 0 20.3 8.1 39.9 22.4 54.3a76.74 76.74 0 0 0 54.3 22.5h204.6c42.4 0 76.7-34.4 76.7-76.8.1-42.4-34.3-76.7-76.7-76.8zM614 742.4h-76.7v76.8c0 42.4 34.4 76.8 76.7 76.8 42.4 0 76.8-34.4 76.7-76.8.1-42.4-34.3-76.7-76.7-76.8zM409.4 537.6c-42.4 0-76.7 34.4-76.7 76.8v204.8c0 42.4 34.4 76.8 76.7 76.8 42.4 0 76.8-34.4 76.7-76.8V614.4c0-20.3-8.1-39.9-22.4-54.3a76.92 76.92 0 0 0-54.3-22.5zM128 614.4c0 20.3 8.1 39.9 22.4 54.3a76.74 76.74 0 0 0 54.3 22.5c42.4 0 76.8-34.4 76.7-76.8v-76.8h-76.7c-42.3 0-76.7 34.4-76.7 76.8z")),t.SmallDashOutline=u("small-dash",i,l(o,"M112 476h72v72h-72zm182 0h72v72h-72zm364 0h72v72h-72zm182 0h72v72h-72zm-364 0h72v72h-72z")),t.SolutionOutline=u("solution",i,l(o,"M688 264c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48zm-8 136H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM480 544H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-48 308H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm356.8-74.4c29-26.3 47.2-64.3 47.2-106.6 0-79.5-64.5-144-144-144s-144 64.5-144 144c0 42.3 18.2 80.3 47.2 106.6-57 32.5-96.2 92.7-99.2 162.1-.2 4.5 3.5 8.3 8 8.3h48.1c4.2 0 7.7-3.3 8-7.6C564 871.2 621.7 816 692 816s128 55.2 131.9 124.4c.2 4.2 3.7 7.6 8 7.6H880c4.6 0 8.2-3.8 8-8.3-2.9-69.5-42.2-129.6-99.2-162.1zM692 591c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z")),t.SketchOutline=u("sketch",i,l(o,"M925.6 405.1l-203-253.7a6.5 6.5 0 0 0-5-2.4H306.4c-1.9 0-3.8.9-5 2.4l-203 253.7a6.5 6.5 0 0 0 .2 8.3l408.6 459.5c1.2 1.4 3 2.1 4.8 2.1 1.8 0 3.5-.8 4.8-2.1l408.6-459.5a6.5 6.5 0 0 0 .2-8.3zM645.2 206.4l34.4 133.9-132.5-133.9h98.1zm8.2 178.5H370.6L512 242l141.4 142.9zM378.8 206.4h98.1L344.3 340.3l34.5-133.9zm-53.4 7l-44.1 171.5h-93.1l137.2-171.5zM194.6 434.9H289l125.8 247.7-220.2-247.7zM512 763.4L345.1 434.9h333.7L512 763.4zm97.1-80.8L735 434.9h94.4L609.1 682.6zm133.6-297.7l-44.1-171.5 137.2 171.5h-93.1z")),t.SortDescendingOutline=u("sort-descending",i,l(o,"M839.6 433.8L749 150.5a9.24 9.24 0 0 0-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-.3.9-.5 1.9-.5 2.9 0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-.1 2.8-.4 2.4-.8 4.3-2.4 5.5-4.6 1.1-2.2 1.3-4.7.6-7.1zM663.3 325.5l32.8-116.9h6.3l32.1 116.9h-71.2zm143.5 492.9H677.2v-.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v.4L587.7 828.9a9.35 9.35 0 0 0-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43a9.2 9.2 0 0 0-9.2-9.3zM310.3 167.1a8 8 0 0 0-12.6 0L185.7 309c-4.2 5.3-.4 13 6.3 13h76v530c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V322h76c6.7 0 10.5-7.8 6.3-13l-112-141.9z")),t.SortAscendingOutline=u("sort-ascending",i,l(o,"M839.6 433.8L749 150.5a9.24 9.24 0 0 0-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-.3.9-.5 1.9-.5 2.9 0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-.1 2.8-.4 2.4-.8 4.3-2.4 5.5-4.6 1.1-2.2 1.3-4.7.6-7.1zM663.3 325.5l32.8-116.9h6.3l32.1 116.9h-71.2zm143.5 492.9H677.2v-.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v.4L587.7 828.9a9.35 9.35 0 0 0-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43a9.2 9.2 0 0 0-9.2-9.3zM416 702h-76V172c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v530h-76c-6.7 0-10.5 7.8-6.3 13l112 141.9a8 8 0 0 0 12.6 0l112-141.9c4.1-5.2.4-13-6.3-13z")),t.StockOutline=u("stock",i,l(o,"M904 747H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM165.7 621.8l39.7 39.5c3.1 3.1 8.2 3.1 11.3 0l234.7-233.9 97.6 97.3a32.11 32.11 0 0 0 45.2 0l264.2-263.2c3.1-3.1 3.1-8.2 0-11.3l-39.7-39.6a8.03 8.03 0 0 0-11.3 0l-235.7 235-97.7-97.3a32.11 32.11 0 0 0-45.2 0L165.7 610.5a7.94 7.94 0 0 0 0 11.3z")),t.SwapLeftOutline=u("swap-left",i,l(r,"M872 572H266.8l144.3-183c4.1-5.2.4-13-6.3-13H340c-9.8 0-19.1 4.5-25.1 12.2l-164 208c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z")),t.SwapRightOutline=u("swap-right",i,l(r,"M873.1 596.2l-164-208A32 32 0 0 0 684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z")),t.StrikethroughOutline=u("strikethrough",i,l(o,"M952 474H569.9c-10-2-20.5-4-31.6-6-15.9-2.9-22.2-4.1-30.8-5.8-51.3-10-82.2-20-106.8-34.2-35.1-20.5-52.2-48.3-52.2-85.1 0-37 15.2-67.7 44-89 28.4-21 68.8-32.1 116.8-32.1 54.8 0 97.1 14.4 125.8 42.8 14.6 14.4 25.3 32.1 31.8 52.6 1.3 4.1 2.8 10 4.3 17.8.9 4.8 5.2 8.2 9.9 8.2h72.8c5.6 0 10.1-4.6 10.1-10.1v-1c-.7-6.8-1.3-12.1-2-16-7.3-43.5-28-81.7-59.7-110.3-44.4-40.5-109.7-61.8-188.7-61.8-72.3 0-137.4 18.1-183.3 50.9-25.6 18.4-45.4 41.2-58.6 67.7-13.5 27.1-20.3 58.4-20.3 92.9 0 29.5 5.7 54.5 17.3 76.5 8.3 15.7 19.6 29.5 34.1 42H72c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h433.2c2.1.4 3.9.8 5.9 1.2 30.9 6.2 49.5 10.4 66.6 15.2 23 6.5 40.6 13.3 55.2 21.5 35.8 20.2 53.3 49.2 53.3 89 0 35.3-15.5 66.8-43.6 88.8-30.5 23.9-75.6 36.4-130.5 36.4-43.7 0-80.7-8.5-110.2-25-29.1-16.3-49.1-39.8-59.7-69.5-.8-2.2-1.7-5.2-2.7-9-1.2-4.4-5.3-7.5-9.7-7.5h-79.7c-5.6 0-10.1 4.6-10.1 10.1v1c.2 2.3.4 4.2.6 5.7 6.5 48.8 30.3 88.8 70.7 118.8 47.1 34.8 113.4 53.2 191.8 53.2 84.2 0 154.8-19.8 204.2-57.3 25-18.9 44.2-42.2 57.1-69 13-27.1 19.7-57.9 19.7-91.5 0-31.8-5.8-58.4-17.8-81.4-5.8-11.2-13.1-21.5-21.8-30.8H952c4.4 0 8-3.6 8-8v-60a8 8 0 0 0-8-7.9z")),t.SwapOutline=u("swap",i,l(o,"M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z")),t.SyncOutline=u("sync",i,l(o,"M168 504.2c1-43.7 10-86.1 26.9-126 17.3-41 42.1-77.7 73.7-109.4S337 212.3 378 195c42.4-17.9 87.4-27 133.9-27s91.5 9.1 133.8 27A341.5 341.5 0 0 1 755 268.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 0 0 3 14.1l175.7 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c0-6.7-7.7-10.5-12.9-6.3l-56.4 44.1C765.8 155.1 646.2 92 511.8 92 282.7 92 96.3 275.6 92 503.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8zm756 7.8h-60c-4.4 0-7.9 3.5-8 7.8-1 43.7-10 86.1-26.9 126-17.3 41-42.1 77.8-73.7 109.4A342.45 342.45 0 0 1 512.1 856a342.24 342.24 0 0 1-243.2-100.8c-9.9-9.9-19.2-20.4-27.8-31.4l60.2-47a8 8 0 0 0-3-14.1l-175.7-43c-5-1.2-9.9 2.6-9.9 7.7l-.7 181c0 6.7 7.7 10.5 12.9 6.3l56.4-44.1C258.2 868.9 377.8 932 512.2 932c229.2 0 415.5-183.7 419.8-411.8a8 8 0 0 0-8-8.2z")),t.TableOutline=u("table",i,l(o,"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 208H676V232h212v136zm0 224H676V432h212v160zM412 432h200v160H412V432zm200-64H412V232h200v136zm-476 64h212v160H136V432zm0-200h212v136H136V232zm0 424h212v136H136V656zm276 0h200v136H412V656zm476 136H676V656h212v136z")),t.TeamOutline=u("team",i,l(o,"M824.2 699.9a301.55 301.55 0 0 0-86.4-60.4C783.1 602.8 812 546.8 812 484c0-110.8-92.4-201.7-203.2-200-109.1 1.7-197 90.6-197 200 0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 0 0-86.4 60.4C345 754.6 314 826.8 312 903.8a8 8 0 0 0 8 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5A226.62 226.62 0 0 1 612 684c60.9 0 118.2 23.7 161.3 66.8C814.5 792 838 846.3 840 904.3c.1 4.3 3.7 7.7 8 7.7h56a8 8 0 0 0 8-8.2c-2-77-33-149.2-87.8-203.9zM612 612c-34.2 0-66.4-13.3-90.5-37.5a126.86 126.86 0 0 1-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4 0 34.2-13.3 66.3-37.5 90.5A127.3 127.3 0 0 1 612 612zM361.5 510.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 0 1-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.9-1.7-203.3 89.2-203.3 199.9 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 0 0 8 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.9-1 6.5-4.7 6-8.7z")),t.TaobaoOutline=u("taobao",i,l(o,"M168.5 273.7a68.7 68.7 0 1 0 137.4 0 68.7 68.7 0 1 0-137.4 0zm730 79.2s-23.7-184.4-426.9-70.1c17.3-30 25.6-49.5 25.6-49.5L396.4 205s-40.6 132.6-113 194.4c0 0 70.1 40.6 69.4 39.4 20.1-20.1 38.2-40.6 53.7-60.4 16.1-7 31.5-13.6 46.7-19.8-18.6 33.5-48.7 83.8-78.8 115.6l42.4 37s28.8-27.7 60.4-61.2h36v61.8H372.9v49.5h140.3v118.5c-1.7 0-3.6 0-5.4-.2-15.4-.7-39.5-3.3-49-18.2-11.5-18.1-3-51.5-2.4-71.9h-97l-3.4 1.8s-35.5 159.1 102.3 155.5c129.1 3.6 203-36 238.6-63.1l14.2 52.6 79.6-33.2-53.9-131.9-64.6 20.1 12.1 45.2c-16.6 12.4-35.6 21.7-56.2 28.4V561.3h137.1v-49.5H628.1V450h137.6v-49.5H521.3c17.6-21.4 31.5-41.1 35-53.6l-42.5-11.6c182.8-65.5 284.5-54.2 283.6 53.2v282.8s10.8 97.1-100.4 90.1l-60.2-12.9-14.2 57.1S882.5 880 903.7 680.2c21.3-200-5.2-327.3-5.2-327.3zm-707.4 18.3l-45.4 69.7 83.6 52.1s56 28.5 29.4 81.9C233.8 625.5 112 736.3 112 736.3l109 68.1c75.4-163.7 70.5-142 89.5-200.7 19.5-60.1 23.7-105.9-9.4-139.1-42.4-42.6-47-46.6-110-93.4z")),t.ToTopOutline=u("to-top",i,l(o,"M885 780H165c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM400 325.7h73.9V664c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V325.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 171a8 8 0 0 0-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13z")),t.TrademarkOutline=u("trademark",i,l(o,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm87.5-334.7c34.8-12.8 78.4-49 78.4-119.2 0-71.2-45.5-131.1-144.2-131.1H378c-4.4 0-8 3.6-8 8v410c0 4.4 3.6 8 8 8h54.5c4.4 0 8-3.6 8-8V561.2h88.7l74.6 159.2c1.3 2.8 4.1 4.6 7.2 4.6h62a7.9 7.9 0 0 0 7.1-11.5l-80.6-164.2zM522 505h-81.5V357h83.4c48 0 80.9 25.3 80.9 75.5 0 46.9-29.8 72.5-82.8 72.5z")),t.TransactionOutline=u("transaction",i,l(o,"M668.6 320c0-4.4-3.6-8-8-8h-54.5c-3 0-5.8 1.7-7.1 4.4l-84.7 168.8H511l-84.7-168.8a8 8 0 0 0-7.1-4.4h-55.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.8l103.9 191.6h-57c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76V704c0 4.4 3.6 8 8 8h49.9c4.4 0 8-3.6 8-8v-63.5h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8H564l103.7-191.6c.5-1.1.9-2.4.9-3.7zM157.9 504.2a352.7 352.7 0 0 1 103.5-242.4c32.5-32.5 70.3-58.1 112.4-75.9 43.6-18.4 89.9-27.8 137.6-27.8 47.8 0 94.1 9.3 137.6 27.8 42.1 17.8 79.9 43.4 112.4 75.9 10 10 19.3 20.5 27.9 31.4l-50 39.1a8 8 0 0 0 3 14.1l156.8 38.3c5 1.2 9.9-2.6 9.9-7.7l.8-161.5c0-6.7-7.7-10.5-12.9-6.3l-47.8 37.4C770.7 146.3 648.6 82 511.5 82 277 82 86.3 270.1 82 503.8a8 8 0 0 0 8 8.2h60c4.3 0 7.8-3.5 7.9-7.8zM934 512h-60c-4.3 0-7.9 3.5-8 7.8a352.7 352.7 0 0 1-103.5 242.4 352.57 352.57 0 0 1-112.4 75.9c-43.6 18.4-89.9 27.8-137.6 27.8s-94.1-9.3-137.6-27.8a352.57 352.57 0 0 1-112.4-75.9c-10-10-19.3-20.5-27.9-31.4l49.9-39.1a8 8 0 0 0-3-14.1l-156.8-38.3c-5-1.2-9.9 2.6-9.9 7.7l-.8 161.7c0 6.7 7.7 10.5 12.9 6.3l47.8-37.4C253.3 877.7 375.4 942 512.5 942 747 942 937.7 753.9 942 520.2a8 8 0 0 0-8-8.2z")),t.TwitterOutline=u("twitter",i,l(o,"M928 254.3c-30.6 13.2-63.9 22.7-98.2 26.4a170.1 170.1 0 0 0 75-94 336.64 336.64 0 0 1-108.2 41.2A170.1 170.1 0 0 0 672 174c-94.5 0-170.5 76.6-170.5 170.6 0 13.2 1.6 26.4 4.2 39.1-141.5-7.4-267.7-75-351.6-178.5a169.32 169.32 0 0 0-23.2 86.1c0 59.2 30.1 111.4 76 142.1a172 172 0 0 1-77.1-21.7v2.1c0 82.9 58.6 151.6 136.7 167.4a180.6 180.6 0 0 1-44.9 5.8c-11.1 0-21.6-1.1-32.2-2.6C211 652 273.9 701.1 348.8 702.7c-58.6 45.9-132 72.9-211.7 72.9-14.3 0-27.5-.5-41.2-2.1C171.5 822 261.2 850 357.8 850 671.4 850 843 590.2 843 364.7c0-7.4 0-14.8-.5-22.2 33.2-24.3 62.3-54.4 85.5-88.2z")),t.UnderlineOutline=u("underline",i,l(o,"M824 804H200c-4.4 0-8 3.4-8 7.6v60.8c0 4.2 3.6 7.6 8 7.6h624c4.4 0 8-3.4 8-7.6v-60.8c0-4.2-3.6-7.6-8-7.6zm-312-76c69.4 0 134.6-27.1 183.8-76.2C745 602.7 772 537.4 772 468V156c0-6.6-5.4-12-12-12h-60c-6.6 0-12 5.4-12 12v312c0 97-79 176-176 176s-176-79-176-176V156c0-6.6-5.4-12-12-12h-60c-6.6 0-12 5.4-12 12v312c0 69.4 27.1 134.6 76.2 183.8C377.3 701 442.6 728 512 728z")),t.UndoOutline=u("undo",i,l(o,"M511.4 124C290.5 124.3 112 303 112 523.9c0 128 60.2 242 153.8 315.2l-37.5 48c-4.1 5.3-.3 13 6.3 12.9l167-.8c5.2 0 9-4.9 7.7-9.9L369.8 727a8 8 0 0 0-14.1-3L315 776.1c-10.2-8-20-16.7-29.3-26a318.64 318.64 0 0 1-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 0 1-68.6 101.7c-7.5 7.5-15.3 14.5-23.4 21.2a7.93 7.93 0 0 0-1.2 11.1l39.4 50.5c2.8 3.5 7.9 4.1 11.4 1.3C854.5 760.8 912 649.1 912 523.9c0-221.1-179.4-400.2-400.6-399.9z")),t.UnorderedListOutline=u("unordered-list",i,l(o,"M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")),t.UpOutline=u("up",i,l(o,"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 0 0 140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z")),t.UploadOutline=u("upload",i,l(o,"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 0 0-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z")),t.UserAddOutline=u("user-add",i,l(o,"M678.3 642.4c24.2-13 51.9-20.4 81.4-20.4h.1c3 0 4.4-3.6 2.2-5.6a371.67 371.67 0 0 0-103.7-65.8c-.4-.2-.8-.3-1.2-.5C719.2 505 759.6 431.7 759.6 349c0-137-110.8-248-247.5-248S264.7 212 264.7 349c0 82.7 40.4 156 102.6 201.1-.4.2-.8.3-1.2.5-44.7 18.9-84.8 46-119.3 80.6a373.42 373.42 0 0 0-80.4 119.5A373.6 373.6 0 0 0 137 888.8a8 8 0 0 0 8 8.2h59.9c4.3 0 7.9-3.5 8-7.8 2-77.2 32.9-149.5 87.6-204.3C357 628.2 432.2 597 512.2 597c56.7 0 111.1 15.7 158 45.1a8.1 8.1 0 0 0 8.1.3zM512.2 521c-45.8 0-88.9-17.9-121.4-50.4A171.2 171.2 0 0 1 340.5 349c0-45.9 17.9-89.1 50.3-121.6S466.3 177 512.2 177s88.9 17.9 121.4 50.4A171.2 171.2 0 0 1 683.9 349c0 45.9-17.9 89.1-50.3 121.6C601.1 503.1 558 521 512.2 521zM880 759h-84v-84c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v84h-84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h84v84c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-84h84c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.UsergroupAddOutline=u("usergroup-add",i,l(o,"M892 772h-80v-80c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v80h-80c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h80v80c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-80h80c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM373.5 498.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 0 1-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.8-1.7-203.2 89.2-203.2 200 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 0 0 8 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.8-1.1 6.4-4.8 5.9-8.8zM824 472c0-109.4-87.9-198.3-196.9-200C516.3 270.3 424 361.2 424 472c0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 0 0-86.4 60.4C357 742.6 326 814.8 324 891.8a8 8 0 0 0 8 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5C505.8 695.7 563 672 624 672c110.4 0 200-89.5 200-200zm-109.5 90.5C690.3 586.7 658.2 600 624 600s-66.3-13.3-90.5-37.5a127.26 127.26 0 0 1-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4-.1 34.2-13.4 66.3-37.6 90.5z")),t.UserOutline=u("user",i,l(o,"M858.5 763.6a374 374 0 0 0-80.6-119.5 375.63 375.63 0 0 0-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 0 0-80.6 119.5A371.7 371.7 0 0 0 136 901.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 0 0 8-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z")),t.UserDeleteOutline=u("user-delete",i,l(o,"M678.3 655.4c24.2-13 51.9-20.4 81.4-20.4h.1c3 0 4.4-3.6 2.2-5.6a371.67 371.67 0 0 0-103.7-65.8c-.4-.2-.8-.3-1.2-.5C719.2 518 759.6 444.7 759.6 362c0-137-110.8-248-247.5-248S264.7 225 264.7 362c0 82.7 40.4 156 102.6 201.1-.4.2-.8.3-1.2.5-44.7 18.9-84.8 46-119.3 80.6a373.42 373.42 0 0 0-80.4 119.5A373.6 373.6 0 0 0 137 901.8a8 8 0 0 0 8 8.2h59.9c4.3 0 7.9-3.5 8-7.8 2-77.2 32.9-149.5 87.6-204.3C357 641.2 432.2 610 512.2 610c56.7 0 111.1 15.7 158 45.1a8.1 8.1 0 0 0 8.1.3zM512.2 534c-45.8 0-88.9-17.9-121.4-50.4A171.2 171.2 0 0 1 340.5 362c0-45.9 17.9-89.1 50.3-121.6S466.3 190 512.2 190s88.9 17.9 121.4 50.4A171.2 171.2 0 0 1 683.9 362c0 45.9-17.9 89.1-50.3 121.6C601.1 516.1 558 534 512.2 534zM880 772H640c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")),t.UsergroupDeleteOutline=u("usergroup-delete",i,l(o,"M888 784H664c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h224c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM373.5 510.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 0 1-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.9-1.7-203.3 89.2-203.3 199.9 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 0 0 8 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.9-1 6.5-4.7 6-8.7zM824 484c0-109.4-87.9-198.3-196.9-200C516.3 282.3 424 373.2 424 484c0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 0 0-86.4 60.4C357 754.6 326 826.8 324 903.8a8 8 0 0 0 8 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5C505.8 707.7 563 684 624 684c110.4 0 200-89.5 200-200zm-109.5 90.5C690.3 598.7 658.2 612 624 612s-66.3-13.3-90.5-37.5a127.26 127.26 0 0 1-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4-.1 34.2-13.4 66.3-37.6 90.5z")),t.VerticalAlignBottomOutline=u("vertical-align-bottom",i,l(o,"M859.9 780H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM505.7 669a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V176c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8z")),t.VerticalAlignMiddleOutline=u("vertical-align-middle",i,l(o,"M859.9 474H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zm-353.6-74.7c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H550V104c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v156h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.6zm11.4 225.4a7.14 7.14 0 0 0-11.3 0L405.6 752.3a7.23 7.23 0 0 0 5.7 11.7H474v156c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V764h62.8c6 0 9.4-7 5.7-11.7L517.7 624.7z")),t.VerticalAlignTopOutline=u("vertical-align-top",i,l(o,"M859.9 168H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM518.3 355a8 8 0 0 0-12.6 0l-112 141.7a7.98 7.98 0 0 0 6.3 12.9h73.9V848c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V509.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 355z")),t.VerticalRightOutline=u("vertical-right",i,l(o,"M326 164h-64c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V172c0-4.4-3.6-8-8-8zm444 72.4V164c0-6.8-7.9-10.5-13.1-6.1L335 512l421.9 354.1c5.2 4.4 13.1.7 13.1-6.1v-72.4c0-9.4-4.2-18.4-11.4-24.5L459.4 512l299.2-251.1c7.2-6.1 11.4-15.1 11.4-24.5z")),t.VerticalLeftOutline=u("vertical-left",i,l(o,"M762 164h-64c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V172c0-4.4-3.6-8-8-8zm-508 0v72.4c0 9.5 4.2 18.4 11.4 24.5L564.6 512 265.4 763.1c-7.2 6.1-11.4 15-11.4 24.5V860c0 6.8 7.9 10.5 13.1 6.1L689 512 267.1 157.9A7.95 7.95 0 0 0 254 164z")),t.WifiOutline=u("wifi",i,l(o,"M723 620.5C666.8 571.6 593.4 542 513 542s-153.8 29.6-210.1 78.6a8.1 8.1 0 0 0-.8 11.2l36 42.9c2.9 3.4 8 3.8 11.4.9C393.1 637.2 450.3 614 513 614s119.9 23.2 163.5 61.5c3.4 2.9 8.5 2.5 11.4-.9l36-42.9c2.8-3.3 2.4-8.3-.9-11.2zm117.4-140.1C751.7 406.5 637.6 362 513 362s-238.7 44.5-327.5 118.4a8.05 8.05 0 0 0-1 11.3l36 42.9c2.8 3.4 7.9 3.8 11.2 1C308 472.2 406.1 434 513 434s205 38.2 281.2 101.6c3.4 2.8 8.4 2.4 11.2-1l36-42.9c2.8-3.4 2.4-8.5-1-11.3zm116.7-139C835.7 241.8 680.3 182 511 182c-168.2 0-322.6 59-443.7 157.4a8 8 0 0 0-1.1 11.4l36 42.9c2.8 3.3 7.8 3.8 11.1 1.1C222 306.7 360.3 254 511 254c151.8 0 291 53.5 400 142.7 3.4 2.8 8.4 2.3 11.2-1.1l36-42.9c2.9-3.4 2.4-8.5-1.1-11.3zM448 778a64 64 0 1 0 128 0 64 64 0 1 0-128 0z")),t.ZhihuOutline=u("zhihu",i,l(o,"M564.7 230.1V803h60l25.2 71.4L756.3 803h131.5V230.1H564.7zm247.7 497h-59.9l-75.1 50.4-17.8-50.4h-18V308.3h170.7v418.8zM526.1 486.9H393.3c2.1-44.9 4.3-104.3 6.6-172.9h130.9l-.1-8.1c0-.6-.2-14.7-2.3-29.1-2.1-15-6.6-34.9-21-34.9H287.8c4.4-20.6 15.7-69.7 29.4-93.8l6.4-11.2-12.9-.7c-.8 0-19.6-.9-41.4 10.6-35.7 19-51.7 56.4-58.7 84.4-18.4 73.1-44.6 123.9-55.7 145.6-3.3 6.4-5.3 10.2-6.2 12.8-1.8 4.9-.8 9.8 2.8 13 10.5 9.5 38.2-2.9 38.5-3 .6-.3 1.3-.6 2.2-1 13.9-6.3 55.1-25 69.8-84.5h56.7c.7 32.2 3.1 138.4 2.9 172.9h-141l-2.1 1.5c-23.1 16.9-30.5 63.2-30.8 65.2l-1.4 9.2h167c-12.3 78.3-26.5 113.4-34 127.4-3.7 7-7.3 14-10.7 20.8-21.3 42.2-43.4 85.8-126.3 153.6-3.6 2.8-7 8-4.8 13.7 2.4 6.3 9.3 9.1 24.6 9.1 5.4 0 11.8-.3 19.4-1 49.9-4.4 100.8-18 135.1-87.6 17-35.1 31.7-71.7 43.9-108.9L497 850l5-12c.8-1.9 19-46.3 5.1-95.9l-.5-1.8-108.1-123-22 16.6c6.4-26.1 10.6-49.9 12.5-71.1h158.7v-8c0-40.1-18.5-63.9-19.2-64.9l-2.4-3z")),t.WeiboOutline=u("weibo",i,l(o,"M457.3 543c-68.1-17.7-145 16.2-174.6 76.2-30.1 61.2-1 129.1 67.8 151.3 71.2 23 155.2-12.2 184.4-78.3 28.7-64.6-7.2-131-77.6-149.2zm-52 156.2c-13.8 22.1-43.5 31.7-65.8 21.6-22-10-28.5-35.7-14.6-57.2 13.7-21.4 42.3-31 64.4-21.7 22.4 9.5 29.6 35 16 57.3zm45.5-58.5c-5 8.6-16.1 12.7-24.7 9.1-8.5-3.5-11.2-13.1-6.4-21.5 5-8.4 15.6-12.4 24.1-9.1 8.7 3.2 11.8 12.9 7 21.5zm334.5-197.2c15 4.8 31-3.4 35.9-18.3 11.8-36.6 4.4-78.4-23.2-109a111.39 111.39 0 0 0-106-34.3 28.45 28.45 0 0 0-21.9 33.8 28.39 28.39 0 0 0 33.8 21.8c18.4-3.9 38.3 1.8 51.9 16.7a54.2 54.2 0 0 1 11.3 53.3 28.45 28.45 0 0 0 18.2 36zm99.8-206c-56.7-62.9-140.4-86.9-217.7-70.5a32.98 32.98 0 0 0-25.4 39.3 33.12 33.12 0 0 0 39.3 25.5c55-11.7 114.4 5.4 154.8 50.1 40.3 44.7 51.2 105.7 34 159.1-5.6 17.4 3.9 36 21.3 41.7 17.4 5.6 36-3.9 41.6-21.2v-.1c24.1-75.4 8.9-161.1-47.9-223.9zM729 499c-12.2-3.6-20.5-6.1-14.1-22.1 13.8-34.7 15.2-64.7.3-86-28-40.1-104.8-37.9-192.8-1.1 0 0-27.6 12.1-20.6-9.8 13.5-43.5 11.5-79.9-9.6-101-47.7-47.8-174.6 1.8-283.5 110.6C127.3 471.1 80 557.5 80 632.2 80 775.1 263.2 862 442.5 862c235 0 391.3-136.5 391.3-245 0-65.5-55.2-102.6-104.8-118zM443 810.8c-143 14.1-266.5-50.5-275.8-144.5-9.3-93.9 99.2-181.5 242.2-195.6 143-14.2 266.5 50.5 275.8 144.4C694.4 709 586 796.6 443 810.8z")),t.WomanOutline=u("woman",i,l(o,"M712.8 548.8c53.6-53.6 83.2-125 83.2-200.8 0-75.9-29.5-147.2-83.2-200.8C659.2 93.6 587.8 64 512 64s-147.2 29.5-200.8 83.2C257.6 200.9 228 272.1 228 348c0 63.8 20.9 124.4 59.4 173.9 7.3 9.4 15.2 18.3 23.7 26.9 8.5 8.5 17.5 16.4 26.8 23.7 39.6 30.8 86.3 50.4 136.1 57V736H360c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h114v140c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V812h114c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H550V629.5c61.5-8.2 118.2-36.1 162.8-80.7zM512 556c-55.6 0-107.7-21.6-147.1-60.9C325.6 455.8 304 403.6 304 348s21.6-107.7 60.9-147.1C404.2 161.5 456.4 140 512 140s107.7 21.6 147.1 60.9C698.4 240.2 720 292.4 720 348s-21.6 107.7-60.9 147.1C619.7 534.4 567.6 556 512 556z")),t.ZoomInOutline=u("zoom-in",i,l(o,"M637 443H519V309c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V519h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z")),t.AccountBookTwoTone=u("account-book",c,(function(e,t){return l(o,[t,"M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v584h656V256H712v48zm-65.6 121.8l-89.3 164.1h49.1c4.4 0 8 3.6 8 8v21.3c0 4.4-3.6 8-8 8h-65.4v33.7h65.4c4.4 0 8 3.6 8 8v21.3c0 4.4-3.6 8-8 8h-65.4V752c0 4.4-3.6 8-8 8h-41.3c-4.4 0-8-3.6-8-8v-53.8h-65.1c-4.4 0-8-3.6-8-8v-21.3c0-4.4 3.6-8 8-8h65.1v-33.7h-65.1c-4.4 0-8-3.6-8-8v-21.3c0-4.4 3.6-8 8-8H467l-89.3-164c-2.1-3.9-.7-8.8 3.2-10.9 1.1-.7 2.5-1 3.8-1h46a8 8 0 0 1 7.1 4.4l73.4 145.4h2.8l73.4-145.4c1.3-2.7 4.1-4.4 7.1-4.4h45c4.5 0 8 3.6 7.9 8 0 1.3-.4 2.6-1 3.8z"],[e,"M639.5 414h-45c-3 0-5.8 1.7-7.1 4.4L514 563.8h-2.8l-73.4-145.4a8 8 0 0 0-7.1-4.4h-46c-1.3 0-2.7.3-3.8 1-3.9 2.1-5.3 7-3.2 10.9l89.3 164h-48.6c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1v33.7h-65.1c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1V752c0 4.4 3.6 8 8 8h41.3c4.4 0 8-3.6 8-8v-53.8h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-65.4v-33.7h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-49.1l89.3-164.1c.6-1.2 1-2.5 1-3.8.1-4.4-3.4-8-7.9-8z"],[e,"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584z"])})),t.ZoomOutOutline=u("zoom-out",i,l(o,"M637 443H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h312c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z")),t.AlertTwoTone=u("alert",c,(function(e,t){return l(o,[t,"M340 585c0-5.5 4.5-10 10-10h44c5.5 0 10 4.5 10 10v171h355V563c0-136.4-110.6-247-247-247S265 426.6 265 563v193h75V585z"],[e,"M216.9 310.5l39.6-39.6c3.1-3.1 3.1-8.2 0-11.3l-67.9-67.9a8.03 8.03 0 0 0-11.3 0l-39.6 39.6a8.03 8.03 0 0 0 0 11.3l67.9 67.9c3.1 3.1 8.1 3.1 11.3 0zm669.6-79.2l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-67.9 67.9a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l67.9-67.9c3.1-3.2 3.1-8.2 0-11.3zM484 180h56c4.4 0 8-3.6 8-8V76c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v96c0 4.4 3.6 8 8 8zm348 712H192c-17.7 0-32 14.3-32 32v24c0 4.4 3.6 8 8 8h688c4.4 0 8-3.6 8-8v-24c0-17.7-14.3-32-32-32zm-639-96c0 17.7 14.3 32 32 32h574c17.7 0 32-14.3 32-32V563c0-176.2-142.8-319-319-319S193 386.8 193 563v233zm72-233c0-136.4 110.6-247 247-247s247 110.6 247 247v193H404V585c0-5.5-4.5-10-10-10h-44c-5.5 0-10 4.5-10 10v171h-75V563z"])})),t.ApiTwoTone=u("api",c,(function(e,t){return l(o,[t,"M148.2 674.6zm106.7-92.3c-25 25-38.7 58.1-38.7 93.4s13.8 68.5 38.7 93.4c25 25 58.1 38.7 93.4 38.7 35.3 0 68.5-13.8 93.4-38.7l59.4-59.4-186.8-186.8-59.4 59.4zm420.8-366.1c-35.3 0-68.5 13.8-93.4 38.7l-59.4 59.4 186.8 186.8 59.4-59.4c24.9-25 38.7-58.1 38.7-93.4s-13.8-68.5-38.7-93.4c-25-25-58.1-38.7-93.4-38.7z"],[e,"M578.9 546.7a8.03 8.03 0 0 0-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 0 0-11.3 0L363 475.3l-43-43a7.85 7.85 0 0 0-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2a199.45 199.45 0 0 0-58.6 140.4c-.2 39.5 11.2 79.1 34.3 113.1l-76.1 76.1a8.03 8.03 0 0 0 0 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2zM441.7 769.1a131.32 131.32 0 0 1-93.4 38.7c-35.3 0-68.4-13.7-93.4-38.7-24.9-24.9-38.7-58.1-38.7-93.4s13.7-68.4 38.7-93.4l59.4-59.4 186.8 186.8-59.4 59.4zm476-620.3l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 0 0-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 0 0 0 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM769.1 441.7l-59.4 59.4-186.8-186.8 59.4-59.4c24.9-24.9 58.1-38.7 93.4-38.7s68.4 13.7 93.4 38.7c24.9 24.9 38.7 58.1 38.7 93.4s-13.8 68.4-38.7 93.4z"])})),t.AppstoreTwoTone=u("appstore",c,(function(e,t){return l(o,[e,"M864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm52-668H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452 132H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z"],[t,"M212 212h200v200H212zm400 0h200v200H612zM212 612h200v200H212zm400 0h200v200H612z"])})),t.BankTwoTone=u("bank",c,(function(e,t){return l(o,[t,"M240.9 393.9h542.2L512 196.7z"],[e,"M894 462c30.9 0 43.8-39.7 18.7-58L530.8 126.2a31.81 31.81 0 0 0-37.6 0L111.3 404c-25.1 18.2-12.2 58 18.8 58H192v374h-72c-4.4 0-8 3.6-8 8v52c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-52c0-4.4-3.6-8-8-8h-72V462h62zM381 836H264V462h117v374zm189 0H453V462h117v374zm190 0H642V462h118v374zM240.9 393.9L512 196.7l271.1 197.2H240.9z"])})),t.AudioTwoTone=u("audio",c,(function(e,t){return l(o,[t,"M512 552c54.3 0 98-43.2 98-96V232c0-52.8-43.7-96-98-96s-98 43.2-98 96v224c0 52.8 43.7 96 98 96z"],[e,"M842 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1z"],[e,"M512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm-98-392c0-52.8 43.7-96 98-96s98 43.2 98 96v224c0 52.8-43.7 96-98 96s-98-43.2-98-96V232z"])})),t.BellTwoTone=u("bell",c,(function(e,t){return l(o,[t,"M512 220c-55.6 0-107.8 21.6-147.1 60.9S304 372.4 304 428v340h416V428c0-55.6-21.6-107.8-60.9-147.1S567.6 220 512 220zm280 208c0-141.1-104.3-257.8-240-277.2v.1c135.7 19.4 240 136 240 277.1zM472 150.9v-.1C336.3 170.2 232 286.9 232 428c0-141.1 104.3-257.7 240-277.1z"],[e,"M816 768h-24V428c0-141.1-104.3-257.7-240-277.1V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.9c-135.7 19.4-240 136-240 277.1v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h216c0 61.8 50.2 112 112 112s112-50.2 112-112h216c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM512 888c-26.5 0-48-21.5-48-48h96c0 26.5-21.5 48-48 48zm208-120H304V428c0-55.6 21.6-107.8 60.9-147.1S456.4 220 512 220c55.6 0 107.8 21.6 147.1 60.9S720 372.4 720 428v340z"])})),t.BookTwoTone=u("book",c,(function(e,t){return l(o,[e,"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-260 72h96v209.9L621.5 312 572 347.4V136zM232 888V136h280v296.9c0 3.3 1 6.6 3 9.3a15.9 15.9 0 0 0 22.3 3.7l83.8-59.9 81.4 59.4c2.7 2 6 3.1 9.4 3.1 8.8 0 16-7.2 16-16V136h64v752H232z"],[t,"M668 345.9V136h-96v211.4l49.5-35.4z"],[t,"M727.9 136v296.5c0 8.8-7.2 16-16 16-3.4 0-6.7-1.1-9.4-3.1L621.1 386l-83.8 59.9a15.9 15.9 0 0 1-22.3-3.7c-2-2.7-3-6-3-9.3V136H232v752h559.9V136h-64z"])})),t.BoxPlotTwoTone=u("box-plot",c,(function(e,t){return l(o,[t,"M296 368h88v288h-88zm152 0h280v288H448z"],[e,"M952 224h-52c-4.4 0-8 3.6-8 8v248h-92V304c0-4.4-3.6-8-8-8H232c-4.4 0-8 3.6-8 8v176h-92V232c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V548h92v172c0 4.4 3.6 8 8 8h560c4.4 0 8-3.6 8-8V548h92v244c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zM384 656h-88V368h88v288zm344 0H448V368h280v288z"])})),t.BugTwoTone=u("bug",c,(function(e,t){return l(o,[e,"M308 412v268c0 36.78 9.68 71.96 27.8 102.9a205.39 205.39 0 0 0 73.3 73.3A202.68 202.68 0 0 0 512 884c36.78 0 71.96-9.68 102.9-27.8a205.39 205.39 0 0 0 73.3-73.3A202.68 202.68 0 0 0 716 680V412H308zm484 172v96c0 6.5-.22 12.95-.66 19.35C859.94 728.64 908 796.7 908 876a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-44.24-23.94-82.89-59.57-103.7a278.63 278.63 0 0 1-22.66 49.02 281.39 281.39 0 0 1-100.45 100.45C611.84 946.07 563.55 960 512 960s-99.84-13.93-141.32-38.23a281.39 281.39 0 0 1-100.45-100.45 278.63 278.63 0 0 1-22.66-49.02A119.95 119.95 0 0 0 188 876a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-79.3 48.07-147.36 116.66-176.65A284.12 284.12 0 0 1 232 680v-96H84a8 8 0 0 1-8-8v-56a8 8 0 0 1 8-8h148V412c-76.77 0-139-62.23-139-139a8 8 0 0 1 8-8h60a8 8 0 0 1 8 8 63 63 0 0 0 63 63h560a63 63 0 0 0 63-63 8 8 0 0 1 8-8h60a8 8 0 0 1 8 8c0 76.77-62.23 139-139 139v100h148a8 8 0 0 1 8 8v56a8 8 0 0 1-8 8H792zM368 272a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-40.04 8.78-76.75 25.9-108.07a184.57 184.57 0 0 1 74.03-74.03C427.25 72.78 463.96 64 504 64h16c40.04 0 76.75 8.78 108.07 25.9a184.57 184.57 0 0 1 74.03 74.03C719.22 195.25 728 231.96 728 272a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-28.33-5.94-53.15-17.08-73.53a112.56 112.56 0 0 0-45.39-45.4C573.15 141.95 548.33 136 520 136h-16c-28.33 0-53.15 5.94-73.53 17.08a112.56 112.56 0 0 0-45.4 45.39C373.95 218.85 368 243.67 368 272z"],[t,"M308 412v268c0 36.78 9.68 71.96 27.8 102.9a205.39 205.39 0 0 0 73.3 73.3A202.68 202.68 0 0 0 512 884c36.78 0 71.96-9.68 102.9-27.8a205.39 205.39 0 0 0 73.3-73.3A202.68 202.68 0 0 0 716 680V412H308z"])})),t.BulbTwoTone=u("bulb",c,(function(e,t){return l(o,[t,"M512 136c-141.4 0-256 114.6-256 256 0 92.5 49.4 176.3 128.1 221.8l35.9 20.8V752h184V634.6l35.9-20.8C718.6 568.3 768 484.5 768 392c0-141.4-114.6-256-256-256z"],[e,"M632 888H392c-4.4 0-8 3.6-8 8v32c0 17.7 14.3 32 32 32h192c17.7 0 32-14.3 32-32v-32c0-4.4-3.6-8-8-8zM512 64c-181.1 0-328 146.9-328 328 0 121.4 66 227.4 164 284.1V792c0 17.7 14.3 32 32 32h264c17.7 0 32-14.3 32-32V676.1c98-56.7 164-162.7 164-284.1 0-181.1-146.9-328-328-328zm127.9 549.8L604 634.6V752H420V634.6l-35.9-20.8C305.4 568.3 256 484.5 256 392c0-141.4 114.6-256 256-256s256 114.6 256 256c0 92.5-49.4 176.3-128.1 221.8z"])})),t.CalculatorTwoTone=u("calculator",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M184 840h656V184H184v656zm256.2-75h-50.8c-2.2 0-4.5-1.1-5.9-2.9L348 718.6l-35.5 43.5a7.38 7.38 0 0 1-5.9 2.9h-50.8c-6.6 0-10.2-7.9-5.8-13.1l62.7-76.8-61.2-74.9c-4.3-5.2-.7-13.1 5.9-13.1h50.9c2.2 0 4.5 1.1 5.9 2.9l34 41.6 34-41.6c1.5-1.9 3.6-2.9 5.9-2.9h50.8c6.6 0 10.2 7.9 5.9 13.1L383.5 675l62.7 76.8c4.2 5.3.6 13.2-6 13.2zM576 335c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48zm0 265c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48zm0 104c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48zM248 335c0-2.2 1.4-4 3.2-4H320v-68.8c0-1.8 1.8-3.2 4-3.2h48c2.2 0 4 1.4 4 3.2V331h68.7c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H376v68.7c0 1.9-1.8 3.3-4 3.3h-48c-2.2 0-4-1.4-4-3.2V387h-68.8c-1.8 0-3.2-1.8-3.2-4v-48z"],[e,"M383.5 675l61.3-74.8c4.3-5.2.7-13.1-5.9-13.1h-50.8c-2.3 0-4.4 1-5.9 2.9l-34 41.6-34-41.6a7.69 7.69 0 0 0-5.9-2.9h-50.9c-6.6 0-10.2 7.9-5.9 13.1l61.2 74.9-62.7 76.8c-4.4 5.2-.8 13.1 5.8 13.1h50.8c2.3 0 4.4-1 5.9-2.9l35.5-43.5 35.5 43.5c1.4 1.8 3.7 2.9 5.9 2.9h50.8c6.6 0 10.2-7.9 6-13.2L383.5 675zM251.2 387H320v68.8c0 1.8 1.8 3.2 4 3.2h48c2.2 0 4-1.4 4-3.3V387h68.8c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H376v-68.8c0-1.8-1.8-3.2-4-3.2h-48c-2.2 0-4 1.4-4 3.2V331h-68.8c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm328 369h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0-104h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0-265h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4z"])})),t.BuildTwoTone=u("build",c,(function(e,t){return l(o,[t,"M144 546h200v200H144zm268-268h200v200H412z"],[e,"M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zM344 746H144V546h200v200zm268 0H412V546h200v200zm0-268H412V278h200v200zm268 0H680V278h200v200z"])})),t.CalendarTwoTone=u("calendar",c,(function(e,t){return l(o,[t,"M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v136h656V256H712v48z"],[e,"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zm0-448H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136z"])})),t.CameraTwoTone=u("camera",c,(function(e,t){return l(o,[t,"M864 320H677.2l-17.1-47.8-22.9-64.2H386.7l-22.9 64.2-17.1 47.8H160c-4.4 0-8 3.6-8 8v456c0 4.4 3.6 8 8 8h704c4.4 0 8-3.6 8-8V328c0-4.4-3.6-8-8-8zM512 704c-88.4 0-160-71.6-160-160s71.6-160 160-160 160 71.6 160 160-71.6 160-160 160z"],[e,"M512 384c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zm0 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z"],[e,"M864 248H728l-32.4-90.8a32.07 32.07 0 0 0-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 248H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V328c0-44.2-35.8-80-80-80zm8 536c0 4.4-3.6 8-8 8H160c-4.4 0-8-3.6-8-8V328c0-4.4 3.6-8 8-8h186.7l17.1-47.8 22.9-64.2h250.5l22.9 64.2 17.1 47.8H864c4.4 0 8 3.6 8 8v456z"])})),t.CarTwoTone=u("car",c,(function(e,t){return l(o,[t,"M199.6 474L184 517v237h656V517l-15.6-43H199.6zM264 621c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm388 75c0 4.4-3.6 8-8 8H380c-4.4 0-8-3.6-8-8v-84c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v36h168v-36c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v84zm108-75c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z"],[e,"M720 581a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"],[e,"M959 413.4L935.3 372a8 8 0 0 0-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 0 0-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 0 0-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 0 0 3-10.8zM292.7 218.1l.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220l72.7-199.9zM840 754H184V517l15.6-43h624.8l15.6 43v237z"],[e,"M224 581a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm420 23h-40c-4.4 0-8 3.6-8 8v36H428v-36c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v84c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-84c0-4.4-3.6-8-8-8z"])})),t.CarryOutTwoTone=u("carry-out",c,(function(e,t){return l(o,[e,"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584z"],[t,"M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v584h656V256H712v48zm-17.5 128.8L481.9 725.5a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.2 0 10 2.5 13 6.6l64.7 89 150.9-207.8c3-4.1 7.9-6.6 13-6.6H688c6.5 0 10.3 7.4 6.5 12.8z"],[e,"M688 420h-55.2c-5.1 0-10 2.5-13 6.6L468.9 634.4l-64.7-89c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.4 0-12.8-6.5-12.8z"])})),t.CheckCircleTwoTone=u("check-circle",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm193.4 225.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.3 0 19.9 5 25.9 13.3l71.2 98.8 157.2-218c6-8.4 15.7-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.4 12.7z"],[e,"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0 0 51.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"])})),t.CheckSquareTwoTone=u("check-square",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M184 840h656V184H184v656zm130-367.8h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H688c6.5 0 10.3 7.4 6.5 12.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L307.5 484.9c-3.8-5.3 0-12.7 6.5-12.7z"],[e,"M432.2 657.7a31.8 31.8 0 0 0 51.7 0l210.6-292c3.8-5.3 0-12.7-6.5-12.7h-46.9c-10.3 0-19.9 5-25.9 13.3L458 584.3l-71.2-98.8c-6-8.4-15.7-13.3-25.9-13.3H314c-6.5 0-10.3 7.4-6.5 12.7l124.7 172.8z"])})),t.ClockCircleTwoTone=u("clock-circle",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm176.5 509.7l-28.6 39a7.99 7.99 0 0 1-11.2 1.7L483.3 569.8a7.92 7.92 0 0 1-3.3-6.5V288c0-4.4 3.6-8 8-8h48.1c4.4 0 8 3.6 8 8v247.5l142.6 103.1c3.6 2.5 4.4 7.5 1.8 11.1z"],[e,"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.3c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.9 11.2-1.7l28.6-39c2.6-3.6 1.8-8.6-1.8-11.1z"])})),t.CloseCircleTwoTone=u("close-circle",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm171.8 527.1c1.2 1.5 1.9 3.3 1.9 5.2 0 4.5-3.6 8-8 8l-66-.3-99.3-118.4-99.3 118.5-66.1.3c-4.4 0-8-3.6-8-8 0-1.9.7-3.7 1.9-5.2L471 512.3l-130.1-155a8.32 8.32 0 0 1-1.9-5.2c0-4.5 3.6-8 8-8l66.1.3 99.3 118.4 99.4-118.5 66-.3c4.4 0 8 3.6 8 8 0 1.9-.6 3.8-1.8 5.2l-130.1 155 129.9 154.9z"],[e,"M685.8 352c0-4.4-3.6-8-8-8l-66 .3-99.4 118.5-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155-130.1 154.9a8.32 8.32 0 0 0-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3 99.3-118.5L611.7 680l66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.9 512.2l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z"])})),t.CloudTwoTone=u("cloud",c,(function(e,t){return l(o,[t,"M791.9 492l-37.8-10-13.8-36.5c-8.6-22.7-20.6-44.1-35.7-63.4a245.73 245.73 0 0 0-52.4-49.9c-41.1-28.9-89.5-44.2-140-44.2s-98.9 15.3-140 44.2a245.6 245.6 0 0 0-52.4 49.9 240.47 240.47 0 0 0-35.7 63.4l-13.9 36.6-37.9 9.9a125.7 125.7 0 0 0-66.1 43.7A123.1 123.1 0 0 0 140 612c0 33.1 12.9 64.3 36.3 87.7 23.4 23.4 54.5 36.3 87.6 36.3h496.2c33.1 0 64.2-12.9 87.6-36.3A123.3 123.3 0 0 0 884 612c0-56.2-37.8-105.5-92.1-120z"],[e,"M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3zm36.3 281a123.07 123.07 0 0 1-87.6 36.3H263.9c-33.1 0-64.2-12.9-87.6-36.3A123.3 123.3 0 0 1 140 612c0-28 9.1-54.3 26.2-76.3a125.7 125.7 0 0 1 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10c54.3 14.5 92.1 63.8 92.1 120 0 33.1-12.9 64.3-36.3 87.7z"])})),t.CloseSquareTwoTone=u("close-square",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M184 840h656V184H184v656zm163.9-473.9A7.95 7.95 0 0 1 354 353h58.9c4.7 0 9.2 2.1 12.3 5.7L512 462.2l86.8-103.5c3-3.6 7.5-5.7 12.3-5.7H670c6.8 0 10.5 7.9 6.1 13.1L553.8 512l122.3 145.9c4.4 5.2.7 13.1-6.1 13.1h-58.9c-4.7 0-9.2-2.1-12.3-5.7L512 561.8l-86.8 103.5c-3 3.6-7.5 5.7-12.3 5.7H354c-6.8 0-10.5-7.9-6.1-13.1L470.2 512 347.9 366.1z"],[e,"M354 671h58.9c4.8 0 9.3-2.1 12.3-5.7L512 561.8l86.8 103.5c3.1 3.6 7.6 5.7 12.3 5.7H670c6.8 0 10.5-7.9 6.1-13.1L553.8 512l122.3-145.9c4.4-5.2.7-13.1-6.1-13.1h-58.9c-4.8 0-9.3 2.1-12.3 5.7L512 462.2l-86.8-103.5c-3.1-3.6-7.6-5.7-12.3-5.7H354c-6.8 0-10.5 7.9-6.1 13.1L470.2 512 347.9 657.9A7.95 7.95 0 0 0 354 671z"])})),t.CodeTwoTone=u("code",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M184 840h656V184H184v656zm339.5-223h185c4.1 0 7.5 3.6 7.5 8v48c0 4.4-3.4 8-7.5 8h-185c-4.1 0-7.5-3.6-7.5-8v-48c0-4.4 3.4-8 7.5-8zM308 610.3c0-2.3 1.1-4.6 2.9-6.1L420.7 512l-109.8-92.2a7.63 7.63 0 0 1-2.9-6.1V351c0-6.8 7.9-10.5 13.1-6.1l192 160.9c3.9 3.2 3.9 9.1 0 12.3l-192 161c-5.2 4.4-13.1.7-13.1-6.1v-62.7z"],[e,"M321.1 679.1l192-161c3.9-3.2 3.9-9.1 0-12.3l-192-160.9A7.95 7.95 0 0 0 308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 0 0-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48z"])})),t.CompassTwoTone=u("compass",c,(function(e,t){return l(o,[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM327.6 701.7c-2 .9-4.4 0-5.3-2.1-.4-1-.4-2.2 0-3.2L421 470.9 553.1 603l-225.5 98.7zm375.1-375.1L604 552.1 471.9 420l225.5-98.7c2-.9 4.4 0 5.3 2.1.4 1 .4 2.1 0 3.2z"],[e,"M322.3 696.4c-.4 1-.4 2.2 0 3.2.9 2.1 3.3 3 5.3 2.1L553.1 603 421 470.9l-98.7 225.5zm375.1-375.1L471.9 420 604 552.1l98.7-225.5c.4-1.1.4-2.2 0-3.2-.9-2.1-3.3-3-5.3-2.1z"],[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"])})),t.ContactsTwoTone=u("contacts",c,(function(e,t){return l(o,[t,"M460.3 526a51.7 52 0 1 0 103.4 0 51.7 52 0 1 0-103.4 0z"],[t,"M768 352c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H548v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H328v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H136v496h752V296H768v56zM661 736h-43.8c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.5-46-90.5-97.2-90.5s-93.4 39.9-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5h-43.9a8 8 0 0 1-8-8.4c2.8-53.3 31.9-99.6 74.6-126.1-18.1-20-29.1-46.4-29.1-75.5 0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.6-29.1 75.5 42.7 26.4 71.9 72.8 74.7 126.1a8 8 0 0 1-8 8.4z"],[e,"M594.3 601.5a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1 8 8 0 0 0 8 8.4H407c4.2 0 7.6-3.3 7.9-7.5 3.8-50.6 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H661a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.7-126.1zM512 578c-28.5 0-51.7-23.3-51.7-52s23.2-52 51.7-52 51.7 23.3 51.7 52-23.2 52-51.7 52z"],[e,"M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496z"])})),t.ContainerTwoTone=u("container",c,(function(e,t){return l(o,[t,"M635 771.7c-34.5 28.6-78.2 44.3-123 44.3s-88.5-15.8-123-44.3a194.02 194.02 0 0 1-59.1-84.7H232v201h560V687h-97.9c-11.6 32.8-32 62.3-59.1 84.7z"],[e,"M320 501h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"],[e,"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V687h97.9c11.6 32.8 32 62.3 59.1 84.7 34.5 28.5 78.2 44.3 123 44.3s88.5-15.7 123-44.3c27.1-22.4 47.5-51.9 59.1-84.7H792v201zm0-264H643.6l-5.2 24.7C626.4 708.5 573.2 752 512 752s-114.4-43.5-126.5-103.3l-5.2-24.7H232V136h560v488z"],[e,"M320 341h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"])})),t.ControlTwoTone=u("control",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M616 440a36 36 0 1 0 72 0 36 36 0 1 0-72 0zM340.4 601.5l1.5 2.4c0 .1.1.1.1.2l.9 1.2c.1.1.2.2.2.3 1 1.3 2 2.5 3.2 3.6l.2.2c.4.4.8.8 1.2 1.1.8.8 1.7 1.5 2.6 2.1h.1l1.2.9c.1.1.3.2.4.3 1.2.8 2.5 1.6 3.9 2.2.2.1.5.2.7.4.4.2.7.3 1.1.5.3.1.7.3 1 .4.5.2 1 .4 1.5.5.4.1.9.3 1.3.4l.9.3 1.4.3c.2.1.5.1.7.2.7.1 1.4.3 2.1.4.2 0 .4 0 .6.1.6.1 1.1.1 1.7.2.2 0 .4 0 .7.1.8 0 1.5.1 2.3.1s1.5 0 2.3-.1c.2 0 .4 0 .7-.1.6 0 1.2-.1 1.7-.2.2 0 .4 0 .6-.1.7-.1 1.4-.2 2.1-.4.2-.1.5-.1.7-.2l1.4-.3.9-.3c.4-.1.9-.3 1.3-.4.5-.2 1-.4 1.5-.5.3-.1.7-.3 1-.4.4-.2.7-.3 1.1-.5.2-.1.5-.2.7-.4 1.3-.7 2.6-1.4 3.9-2.2.1-.1.3-.2.4-.3l1.2-.9h.1c.9-.7 1.8-1.4 2.6-2.1.4-.4.8-.7 1.2-1.1l.2-.2c1.1-1.1 2.2-2.4 3.2-3.6.1-.1.2-.2.2-.3l.9-1.2c0-.1.1-.1.1-.2l1.5-2.4c.1-.2.2-.3.3-.5 2.7-5.1 4.3-10.9 4.3-17s-1.6-12-4.3-17c-.1-.2-.2-.4-.3-.5l-1.5-2.4c0-.1-.1-.1-.1-.2l-.9-1.2c-.1-.1-.2-.2-.2-.3-1-1.3-2-2.5-3.2-3.6l-.2-.2c-.4-.4-.8-.8-1.2-1.1-.8-.8-1.7-1.5-2.6-2.1h-.1l-1.2-.9c-.1-.1-.3-.2-.4-.3-1.2-.8-2.5-1.6-3.9-2.2-.2-.1-.5-.2-.7-.4-.4-.2-.7-.3-1.1-.5-.3-.1-.7-.3-1-.4-.5-.2-1-.4-1.5-.5-.4-.1-.9-.3-1.3-.4l-.9-.3-1.4-.3c-.2-.1-.5-.1-.7-.2-.7-.1-1.4-.3-2.1-.4-.2 0-.4 0-.6-.1-.6-.1-1.1-.1-1.7-.2-.2 0-.4 0-.7-.1-.8 0-1.5-.1-2.3-.1s-1.5 0-2.3.1c-.2 0-.4 0-.7.1-.6 0-1.2.1-1.7.2-.2 0-.4 0-.6.1-.7.1-1.4.2-2.1.4-.2.1-.5.1-.7.2l-1.4.3-.9.3c-.4.1-.9.3-1.3.4-.5.2-1 .4-1.5.5-.3.1-.7.3-1 .4-.4.2-.7.3-1.1.5-.2.1-.5.2-.7.4-1.3.7-2.6 1.4-3.9 2.2-.1.1-.3.2-.4.3l-1.2.9h-.1c-.9.7-1.8 1.4-2.6 2.1-.4.4-.8.7-1.2 1.1l-.2.2a54.8 54.8 0 0 0-3.2 3.6c-.1.1-.2.2-.2.3l-.9 1.2c0 .1-.1.1-.1.2l-1.5 2.4c-.1.2-.2.3-.3.5-2.7 5.1-4.3 10.9-4.3 17s1.6 12 4.3 17c.1.2.2.3.3.5z"],[t,"M184 840h656V184H184v656zm436.4-499.1c-.2 0-.3.1-.4.1v-77c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v77c-.2 0-.3-.1-.4-.1 42 13.4 72.4 52.7 72.4 99.1 0 46.4-30.4 85.7-72.4 99.1.2 0 .3-.1.4-.1v221c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V539c.2 0 .3.1.4.1-42-13.4-72.4-52.7-72.4-99.1 0-46.4 30.4-85.7 72.4-99.1zM340 485V264c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v221c41.7 13.6 72 52.8 72 99s-30.3 85.5-72 99v77c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-77c-41.7-13.6-72-52.8-72-99s30.3-85.5 72-99z"],[e,"M340 683v77c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-77c41.7-13.5 72-52.8 72-99s-30.3-85.4-72-99V264c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v221c-41.7 13.5-72 52.8-72 99s30.3 85.4 72 99zm.1-116c.1-.2.2-.3.3-.5l1.5-2.4c0-.1.1-.1.1-.2l.9-1.2c0-.1.1-.2.2-.3 1-1.2 2.1-2.5 3.2-3.6l.2-.2c.4-.4.8-.7 1.2-1.1.8-.7 1.7-1.4 2.6-2.1h.1l1.2-.9c.1-.1.3-.2.4-.3 1.3-.8 2.6-1.5 3.9-2.2.2-.2.5-.3.7-.4.4-.2.7-.3 1.1-.5.3-.1.7-.3 1-.4.5-.1 1-.3 1.5-.5.4-.1.9-.3 1.3-.4l.9-.3 1.4-.3c.2-.1.5-.1.7-.2.7-.2 1.4-.3 2.1-.4.2-.1.4-.1.6-.1.5-.1 1.1-.2 1.7-.2.3-.1.5-.1.7-.1.8-.1 1.5-.1 2.3-.1s1.5.1 2.3.1c.3.1.5.1.7.1.6.1 1.1.1 1.7.2.2.1.4.1.6.1.7.1 1.4.3 2.1.4.2.1.5.1.7.2l1.4.3.9.3c.4.1.9.3 1.3.4.5.1 1 .3 1.5.5.3.1.7.3 1 .4.4.2.7.3 1.1.5.2.2.5.3.7.4 1.4.6 2.7 1.4 3.9 2.2.1.1.3.2.4.3l1.2.9h.1c.9.6 1.8 1.3 2.6 2.1.4.3.8.7 1.2 1.1l.2.2c1.2 1.1 2.2 2.3 3.2 3.6 0 .1.1.2.2.3l.9 1.2c0 .1.1.1.1.2l1.5 2.4A36.03 36.03 0 0 1 408 584c0 6.1-1.6 11.9-4.3 17-.1.2-.2.3-.3.5l-1.5 2.4c0 .1-.1.1-.1.2l-.9 1.2c0 .1-.1.2-.2.3-1 1.2-2.1 2.5-3.2 3.6l-.2.2c-.4.4-.8.7-1.2 1.1-.8.7-1.7 1.4-2.6 2.1h-.1l-1.2.9c-.1.1-.3.2-.4.3-1.3.8-2.6 1.5-3.9 2.2-.2.2-.5.3-.7.4-.4.2-.7.3-1.1.5-.3.1-.7.3-1 .4-.5.1-1 .3-1.5.5-.4.1-.9.3-1.3.4l-.9.3-1.4.3c-.2.1-.5.1-.7.2-.7.2-1.4.3-2.1.4-.2.1-.4.1-.6.1-.5.1-1.1.2-1.7.2-.3.1-.5.1-.7.1-.8.1-1.5.1-2.3.1s-1.5-.1-2.3-.1c-.3-.1-.5-.1-.7-.1-.6-.1-1.1-.1-1.7-.2-.2-.1-.4-.1-.6-.1-.7-.1-1.4-.3-2.1-.4-.2-.1-.5-.1-.7-.2l-1.4-.3-.9-.3c-.4-.1-.9-.3-1.3-.4-.5-.1-1-.3-1.5-.5-.3-.1-.7-.3-1-.4-.4-.2-.7-.3-1.1-.5-.2-.2-.5-.3-.7-.4-1.4-.6-2.7-1.4-3.9-2.2-.1-.1-.3-.2-.4-.3l-1.2-.9h-.1c-.9-.6-1.8-1.3-2.6-2.1-.4-.3-.8-.7-1.2-1.1l-.2-.2c-1.2-1.1-2.2-2.3-3.2-3.6 0-.1-.1-.2-.2-.3l-.9-1.2c0-.1-.1-.1-.1-.2l-1.5-2.4c-.1-.2-.2-.3-.3-.5-2.7-5-4.3-10.9-4.3-17s1.6-11.9 4.3-17zm280.3-27.9c-.1 0-.2-.1-.4-.1v221c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V539c-.1 0-.2.1-.4.1 42-13.4 72.4-52.7 72.4-99.1 0-46.4-30.4-85.7-72.4-99.1.1 0 .2.1.4.1v-77c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v77c.1 0 .2-.1.4-.1-42 13.4-72.4 52.7-72.4 99.1 0 46.4 30.4 85.7 72.4 99.1zM652 404c19.9 0 36 16.1 36 36s-16.1 36-36 36-36-16.1-36-36 16.1-36 36-36z"])})),t.CopyTwoTone=u("copy",c,(function(e,t){return l(o,[t,"M232 706h142c22.1 0 40 17.9 40 40v142h250V264H232v442z"],[e,"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32z"],[e,"M704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z"])})),t.CreditCardTwoTone=u("credit-card",c,(function(e,t){return l(o,[t,"M136 792h752V440H136v352zm507-144c0-4.4 3.6-8 8-8h165c4.4 0 8 3.6 8 8v72c0 4.4-3.6 8-8 8H651c-4.4 0-8-3.6-8-8v-72zM136 232h752v120H136z"],[e,"M651 728h165c4.4 0 8-3.6 8-8v-72c0-4.4-3.6-8-8-8H651c-4.4 0-8 3.6-8 8v72c0 4.4 3.6 8 8 8z"],[e,"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V440h752v352zm0-440H136V232h752v120z"])})),t.CrownTwoTone=u("crown",c,(function(e,t){return l(o,[t,"M911.9 283.9v.5L835.5 865c-1 8-7.9 14-15.9 14H204.5c-8.1 0-14.9-6.1-16-14l-76.4-580.6v-.6 1.6L188.5 866c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6c.1-.5.1-1 0-1.5z"],[t,"M773.6 810.6l53.9-409.4-139.8 86.1L512 252.9 336.3 487.3l-139.8-86.1 53.8 409.4h523.3zm-374.2-189c0-62.1 50.5-112.6 112.6-112.6s112.6 50.5 112.6 112.6v1c0 62.1-50.5 112.6-112.6 112.6s-112.6-50.5-112.6-112.6v-1z"],[e,"M512 734.2c61.9 0 112.3-50.2 112.6-112.1v-.5c0-62.1-50.5-112.6-112.6-112.6s-112.6 50.5-112.6 112.6v.5c.3 61.9 50.7 112.1 112.6 112.1zm0-160.9c26.6 0 48.2 21.6 48.2 48.3 0 26.6-21.6 48.3-48.2 48.3s-48.2-21.6-48.2-48.3c0-26.6 21.6-48.3 48.2-48.3z"],[e,"M188.5 865c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6v-.5c.3-6.4-6.7-10.8-12.3-7.4L705 396.4 518.4 147.5a8.06 8.06 0 0 0-12.9 0L319 396.4 124.3 276.5c-5.5-3.4-12.6.9-12.2 7.3v.6L188.5 865zm147.8-377.7L512 252.9l175.7 234.4 139.8-86.1-53.9 409.4H250.3l-53.8-409.4 139.8 86.1z"])})),t.CustomerServiceTwoTone=u("customer-service",c,(function(e,t){return l(o,[t,"M696 632h128v192H696zm-496 0h128v192H200z"],[e,"M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384zM328 632v192H200V632h128zm496 192H696V632h128v192z"])})),t.DashboardTwoTone=u("dashboard",c,(function(e,t){return l(o,[t,"M512 188c-99.3 0-192.7 38.7-263 109-70.3 70.2-109 163.6-109 263 0 105.6 44.5 205.5 122.6 276h498.8A371.12 371.12 0 0 0 884 560c0-99.3-38.7-192.7-109-263-70.2-70.3-163.6-109-263-109zm-30 44c0-4.4 3.6-8 8-8h44c4.4 0 8 3.6 8 8v80c0 4.4-3.6 8-8 8h-44c-4.4 0-8-3.6-8-8v-80zM270 582c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44zm90.7-204.4l-31.1 31.1a8.03 8.03 0 0 1-11.3 0l-56.6-56.6a8.03 8.03 0 0 1 0-11.3l31.1-31.1c3.1-3.1 8.2-3.1 11.3 0l56.6 56.6c3.1 3.1 3.1 8.2 0 11.3zm291.1 83.5l-84.5 84.5c5 18.7.2 39.4-14.5 54.1a55.95 55.95 0 0 1-79.2 0 55.95 55.95 0 0 1 0-79.2 55.87 55.87 0 0 1 54.1-14.5l84.5-84.5c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3c3.1 3.1 3.1 8.2 0 11.3zm43-52.4l-31.1-31.1a8.03 8.03 0 0 1 0-11.3l56.6-56.6c3.1-3.1 8.2-3.1 11.3 0l31.1 31.1c3.1 3.1 3.1 8.2 0 11.3l-56.6 56.6a8.03 8.03 0 0 1-11.3 0zM846 538v44c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8z"],[e,"M623.5 421.5a8.03 8.03 0 0 0-11.3 0L527.7 506c-18.7-5-39.4-.2-54.1 14.5a55.95 55.95 0 0 0 0 79.2 55.95 55.95 0 0 0 79.2 0 55.87 55.87 0 0 0 14.5-54.1l84.5-84.5c3.1-3.1 3.1-8.2 0-11.3l-28.3-28.3zM490 320h44c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8h-44c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8z"],[e,"M924.8 385.6a446.7 446.7 0 0 0-96-142.4 446.7 446.7 0 0 0-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 0 0-142.4 96 446.7 446.7 0 0 0-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM761.4 836H262.6A371.12 371.12 0 0 1 140 560c0-99.4 38.7-192.8 109-263 70.3-70.3 163.7-109 263-109 99.4 0 192.8 38.7 263 109 70.3 70.3 109 163.7 109 263 0 105.6-44.5 205.5-122.6 276z"],[e,"M762.7 340.8l-31.1-31.1a8.03 8.03 0 0 0-11.3 0l-56.6 56.6a8.03 8.03 0 0 0 0 11.3l31.1 31.1c3.1 3.1 8.2 3.1 11.3 0l56.6-56.6c3.1-3.1 3.1-8.2 0-11.3zM750 538v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8zM304.1 309.7a8.03 8.03 0 0 0-11.3 0l-31.1 31.1a8.03 8.03 0 0 0 0 11.3l56.6 56.6c3.1 3.1 8.2 3.1 11.3 0l31.1-31.1c3.1-3.1 3.1-8.2 0-11.3l-56.6-56.6zM262 530h-80c-4.4 0-8 3.6-8 8v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8z"])})),t.DeleteTwoTone=u("delete",c,(function(e,t){return l(o,[t,"M292.7 840h438.6l24.2-512h-487z"],[e,"M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-504-72h304v72H360v-72zm371.3 656H292.7l-24.2-512h487l-24.2 512z"])})),t.DiffTwoTone=u("diff",c,(function(e,t){return l(o,[t,"M232 264v624h432V413.8L514.2 264H232zm336 489c0 3.8-3.4 7-7.5 7h-225c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7h225c4.1 0 7.5 3.2 7.5 7v42zm0-262v42c0 3.8-3.4 7-7.5 7H476v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V540h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H420v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1V484h84.5c4.1 0 7.5 3.1 7.5 7z"],[e,"M854.2 306.6L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23z"],[e,"M553.4 201.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM664 888H232V264h282.2L664 413.8V888z"],[e,"M476 399.1c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1V484h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H420v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V540h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H476v-84.9zM560.5 704h-225c-4.1 0-7.5 3.2-7.5 7v42c0 3.8 3.4 7 7.5 7h225c4.1 0 7.5-3.2 7.5-7v-42c0-3.8-3.4-7-7.5-7z"])})),t.DatabaseTwoTone=u("database",c,(function(e,t){return l(o,[t,"M232 616h560V408H232v208zm112-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM232 888h560V680H232v208zm112-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM232 344h560V136H232v208zm112-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z"],[e,"M304 512a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 272a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0-544a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"],[e,"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V680h560v208zm0-272H232V408h560v208zm0-272H232V136h560v208z"])})),t.DislikeTwoTone=u("dislike",c,(function(e,t){return l(o,[t,"M273 100.1v428h.3l-.3-428zM820.4 525l-21.9-19 14-25.5a56.2 56.2 0 0 0 6.9-27.3c0-16.5-7.1-32.2-19.6-43l-21.9-19 13.9-25.4a56.2 56.2 0 0 0 6.9-27.3c0-16.5-7.1-32.2-19.6-43l-21.9-19 13.9-25.4a56.2 56.2 0 0 0 6.9-27.3c0-22.4-13.2-42.6-33.6-51.8H345v345.2c18.6 67.2 46.4 168 83.5 302.5a44.28 44.28 0 0 0 42.2 32.3c7.5.1 15-2.2 21.1-6.7 9.9-7.4 15.2-18.6 14.6-30.5l-9.6-198.4h314.4C829 605.5 840 587.1 840 568c0-16.5-7.1-32.2-19.6-43z"],[e,"M112 132v364c0 17.7 14.3 32 32 32h65V100h-65c-17.7 0-32 14.3-32 32zm773.9 358.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 0 0-26.5-5.4H273l.3 428 85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zm-74.7 126.1H496.8l9.6 198.4c.6 11.9-4.7 23.1-14.6 30.5-6.1 4.5-13.6 6.8-21.1 6.7a44.28 44.28 0 0 1-42.2-32.3c-37.1-134.4-64.9-235.2-83.5-302.5V172h399.4a56.85 56.85 0 0 1 33.6 51.8c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-14 25.5 21.9 19a56.76 56.76 0 0 1 19.6 43c0 19.1-11 37.5-28.8 48.4z"])})),t.DownCircleTwoTone=u("down-circle",c,(function(e,t){return l(o,[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm184.4 277.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.3 0 19.9 4.9 25.9 13.2L512 563.6l105.2-145.4c6-8.3 15.7-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.4 12.7z"],[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[e,"M690 405h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 563.6 406.8 418.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3.1-12.7-6.4-12.7z"])})),t.DownSquareTwoTone=u("down-square",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M184 840h656V184H184v656zm150-440h46.9c10.3 0 19.9 4.9 25.9 13.2L512 558.6l105.2-145.4c6-8.3 15.7-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.4 12.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7z"],[e,"M505.5 658.7c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3.1-12.7-6.4-12.7h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 558.6 406.8 413.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246z"])})),t.EnvironmentTwoTone=u("environment",c,(function(e,t){return l(o,[t,"M724.4 224.9C667.7 169.5 592.3 139 512 139s-155.7 30.5-212.4 85.8C243.1 280 212 353.2 212 431.1c0 241.3 234.1 407.2 300 449.1 65.9-41.9 300-207.8 300-449.1 0-77.9-31.1-151.1-87.6-206.2zM512 615c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z"],[e,"M512 263c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 551c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 439c0-29.9 11.7-58 32.8-79.2C454 338.6 482.1 327 512 327c29.9 0 58 11.6 79.2 32.8S624 409.1 624 439c0 29.9-11.6 58-32.8 79.2z"],[e,"M854.6 289.1a362.49 362.49 0 0 0-79.9-115.7 370.83 370.83 0 0 0-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 0 0 169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0 0 22.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 880.2c-65.9-41.9-300-207.8-300-449.1 0-77.9 31.1-151.1 87.6-206.3C356.3 169.5 431.7 139 512 139s155.7 30.5 212.4 85.9C780.9 280 812 353.2 812 431.1c0 241.3-234.1 407.2-300 449.1z"])})),t.EditTwoTone=u("edit",c,(function(e,t){return l(o,[t,"M761.1 288.3L687.8 215 325.1 577.6l-15.6 89 88.9-15.7z"],[e,"M880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32zm-622.3-84c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89z"])})),t.ExclamationCircleTwoTone=u("exclamation-circle",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-32 156c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"],[e,"M488 576h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8zm-24 112a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"])})),t.ExperimentTwoTone=u("experiment",c,(function(e,t){return l(o,[t,"M551.9 513c19.6 0 35.9-14.2 39.3-32.8A40.02 40.02 0 0 1 552 512a40 40 0 0 1-40-39.4v.5c0 22 17.9 39.9 39.9 39.9zM752 687.8l-.3-.3c-29-17.5-62.3-26.8-97-26.8-44.9 0-87.2 15.7-121 43.8a256.27 256.27 0 0 1-164.9 59.9c-41.2 0-81-9.8-116.7-28L210.5 844h603l-59.9-155.2-1.6-1z"],[e,"M879 824.9L696.3 352V178H768v-68H256v68h71.7v174L145 824.9c-2.8 7.4-4.3 15.2-4.3 23.1 0 35.3 28.7 64 64 64h614.6c7.9 0 15.7-1.5 23.1-4.3 33-12.7 49.4-49.8 36.6-82.8zM395.7 364.7V180h232.6v184.7L719.2 600c-20.7-5.3-42.1-8-63.9-8-61.2 0-119.2 21.5-165.3 60a188.78 188.78 0 0 1-121.3 43.9c-32.7 0-64.1-8.3-91.8-23.7l118.8-307.5zM210.5 844l41.6-107.6.1-.2c35.7 18.1 75.4 27.8 116.6 27.8 61.2 0 119.2-21.5 165.3-60 33.9-28.2 76.3-43.9 121.3-43.9 35 0 68.4 9.5 97.6 27.1l.6 1.6L813.5 844h-603z"],[e,"M552 512c19.3 0 35.4-13.6 39.2-31.8.6-2.7.8-5.4.8-8.2 0-22.1-17.9-40-40-40s-40 17.9-40 40v.6a40 40 0 0 0 40 39.4z"])})),t.EyeInvisibleTwoTone=u("eye-invisible",c,(function(e,t){return l(o,[t,"M254.89 758.85l125.57-125.57a176 176 0 0 1 248.82-248.82L757 256.72Q651.69 186.07 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q69.27 145.91 173.09 221.05zM942.2 486.2Q889.46 375.11 816.7 305L672.48 449.27a176.09 176.09 0 0 1-227.22 227.21L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5z"],[e,"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5zM878.63 165.56L836 122.88a8 8 0 0 0-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 0 0 0 11.31L155.17 889a8 8 0 0 0 11.31 0l712.15-712.12a8 8 0 0 0 0-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 0 0-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 0 1 146.2-106.69L401.31 546.2A112 112 0 0 1 396 512z"],[e,"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 0 0 227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 0 1-112 112z"])})),t.EyeTwoTone=u("eye",c,(function(e,t){return l(o,[t,"M81.8 537.8a60.3 60.3 0 0 1 0-51.5C176.6 286.5 319.8 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c-192.1 0-335.4-100.5-430.2-300.2z"],[t,"M512 258c-161.3 0-279.4 81.8-362.7 254C232.6 684.2 350.7 766 512 766c161.4 0 279.5-81.8 362.7-254C791.4 339.8 673.3 258 512 258zm-4 430c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z"],[e,"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258s279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766z"],[e,"M508 336c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"])})),t.FileAddTwoTone=u("file-add",c,(function(e,t){return l(o,[t,"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm126 236v48c0 4.4-3.6 8-8 8H544v108c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V644H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108V472c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v108h108c4.4 0 8 3.6 8 8z"],[e,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"],[e,"M544 472c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V644h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V472z"])})),t.FileExclamationTwoTone=u("file-exclamation",c,(function(e,t){return l(o,[t,"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-54 96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V448zm32 336c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z"],[e,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"],[e,"M488 640h48c4.4 0 8-3.6 8-8V448c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm-16 104a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"])})),t.FileImageTwoTone=u("file-image",c,(function(e,t){return l(o,[t,"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-134 50c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm296 294H328.1c-6.7 0-10.4-7.7-6.3-12.9l99.8-127.2a8 8 0 0 1 12.6 0l41.1 52.4 77.8-99.2a8.1 8.1 0 0 1 12.7 0l136.5 174c4.1 5.2.4 12.9-6.3 12.9z"],[e,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"],[e,"M553.1 509.1l-77.8 99.2-41.1-52.4a8 8 0 0 0-12.6 0l-99.8 127.2a7.98 7.98 0 0 0 6.3 12.9H696c6.7 0 10.4-7.7 6.3-12.9l-136.5-174a8.1 8.1 0 0 0-12.7 0zM360 442a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"])})),t.FileExcelTwoTone=u("file-excel",c,(function(e,t){return l(o,[t,"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm51.6 120h35.7a12.04 12.04 0 0 1 10.1 18.5L546.1 623l84 130.4c3.6 5.6 2 13-3.6 16.6-2 1.2-4.2 1.9-6.5 1.9h-37.5c-4.1 0-8-2.1-10.2-5.7L510 664.8l-62.7 101.5c-2.2 3.5-6 5.7-10.2 5.7h-34.5a12.04 12.04 0 0 1-10.2-18.4l83.4-132.8-82.3-130.4c-3.6-5.7-1.9-13.1 3.7-16.6 1.9-1.3 4.1-1.9 6.4-1.9H442c4.2 0 8.1 2.2 10.3 5.8l61.8 102.4 61.2-102.3c2.2-3.6 6.1-5.8 10.3-5.8z"],[e,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"],[e,"M514.1 580.1l-61.8-102.4c-2.2-3.6-6.1-5.8-10.3-5.8h-38.4c-2.3 0-4.5.6-6.4 1.9-5.6 3.5-7.3 10.9-3.7 16.6l82.3 130.4-83.4 132.8a12.04 12.04 0 0 0 10.2 18.4h34.5c4.2 0 8-2.2 10.2-5.7L510 664.8l62.3 101.4c2.2 3.6 6.1 5.7 10.2 5.7H620c2.3 0 4.5-.7 6.5-1.9 5.6-3.6 7.2-11 3.6-16.6l-84-130.4 85.3-132.5a12.04 12.04 0 0 0-10.1-18.5h-35.7c-4.2 0-8.1 2.2-10.3 5.8l-61.2 102.3z"])})),t.FileMarkdownTwoTone=u("file-markdown",c,(function(e,t){return l(o,[t,"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm72.3 122H641c6.6 0 12 5.4 12 12v272c0 6.6-5.4 12-12 12h-27.2c-6.6 0-12-5.4-12-12V581.7L535 732.3c-2 4.3-6.3 7.1-11 7.1h-24.1a12 12 0 0 1-11-7.1l-66.8-150.2V758c0 6.6-5.4 12-12 12H383c-6.6 0-12-5.4-12-12V486c0-6.6 5.4-12 12-12h35c4.8 0 9.1 2.8 11 7.2l83.2 191 83.1-191c1.9-4.4 6.2-7.2 11-7.2z"],[e,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"],[e,"M429 481.2c-1.9-4.4-6.2-7.2-11-7.2h-35c-6.6 0-12 5.4-12 12v272c0 6.6 5.4 12 12 12h27.1c6.6 0 12-5.4 12-12V582.1l66.8 150.2a12 12 0 0 0 11 7.1H524c4.7 0 9-2.8 11-7.1l66.8-150.6V758c0 6.6 5.4 12 12 12H641c6.6 0 12-5.4 12-12V486c0-6.6-5.4-12-12-12h-34.7c-4.8 0-9.1 2.8-11 7.2l-83.1 191-83.2-191z"])})),t.FilePdfTwoTone=u("file-pdf",c,(function(e,t){return l(o,[t,"M509.2 490.8c-.7-1.3-1.4-1.9-2.2-2-2.9 3.3-2.2 31.5 2.7 51.4 4-13.6 4.7-40.5-.5-49.4zm-1.6 120.5c-7.7 20-18.8 47.3-32.1 71.4 4-1.6 8.1-3.3 12.3-5 17.6-7.2 37.3-15.3 58.9-20.2-14.9-11.8-28.4-27.7-39.1-46.2z"],[t,"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm55 287.6c16.1-1.9 30.6-2.8 44.3-2.3 12.8.4 23.6 2 32 5.1.2.1.3.1.5.2.4.2.8.3 1.2.5.5.2 1.1.4 1.6.7.1.1.3.1.4.2 4.1 1.8 7.5 4 10.1 6.6 9.1 9.1 11.8 26.1 6.2 39.6-3.2 7.7-11.7 20.5-33.3 20.5-21.8 0-53.9-9.7-82.1-24.8-25.5 4.3-53.7 13.9-80.9 23.1-5.8 2-11.8 4-17.6 5.9-38 65.2-66.5 79.4-84.1 79.4-4.2 0-7.8-.9-10.8-2-6.9-2.6-12.8-8-16.5-15-.9-1.7-1.6-3.4-2.2-5.2-1.6-4.8-2.1-9.6-1.3-13.6l.6-2.7c.1-.2.1-.4.2-.6.2-.7.4-1.4.7-2.1 0-.1.1-.2.1-.3 4.1-11.9 13.6-23.4 27.7-34.6 12.3-9.8 27.1-18.7 45.9-28.4 15.9-28 37.6-75.1 51.2-107.4-10.8-41.8-16.7-74.6-10.1-98.6.9-3.3 2.5-6.4 4.6-9.1.2-.2.3-.4.5-.6.1-.1.1-.2.2-.2 6.3-7.5 16.9-11.9 28.1-11.5 16.6.7 29.7 11.5 33 30.1 1.7 8 2.2 16.5 1.9 25.7v.7c0 .5 0 1-.1 1.5-.7 13.3-3 26.6-7.3 44.7-.4 1.6-.8 3.2-1.2 5.2l-1 4.1-.1.3c.1.2.1.3.2.5l1.8 4.5c.1.3.3.7.4 1 .7 1.6 1.4 3.3 2.1 4.8v.1c8.7 18.8 19.7 33.4 33.9 45.1 4.3 3.5 8.9 6.7 13.9 9.8 1.8-.5 3.5-.7 5.3-.9z"],[t,"M391.5 761c5.7-4.4 16.2-14.5 30.1-34.7-10.3 9.4-23.4 22.4-30.1 34.7zm270.9-83l.2-.3h.2c.6-.4.5-.7.4-.9-.1-.1-4.5-9.3-45.1-7.4 35.3 13.9 43.5 9.1 44.3 8.6z"],[e,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"],[e,"M535.9 585.3c-.8-1.7-1.5-3.3-2.2-4.9-.1-.3-.3-.7-.4-1l-1.8-4.5c-.1-.2-.1-.3-.2-.5l.1-.3.2-1.1c4-16.3 8.6-35.3 9.4-54.4v-.7c.3-8.6-.2-17.2-2-25.6-3.8-21.3-19.5-29.6-32.9-30.2-11.3-.5-21.8 4-28.1 11.4-.1.1-.1.2-.2.2-.2.2-.4.4-.5.6-2.1 2.7-3.7 5.8-4.6 9.1-6.6 24-.7 56.8 10.1 98.6-13.6 32.4-35.3 79.4-51.2 107.4v.1c-27.7 14.3-64.1 35.8-73.6 62.9 0 .1-.1.2-.1.3-.2.7-.5 1.4-.7 2.1-.1.2-.1.4-.2.6-.2.9-.5 1.8-.6 2.7-.9 4-.4 8.8 1.3 13.6.6 1.8 1.3 3.5 2.2 5.2 3.7 7 9.6 12.4 16.5 15 3 1.1 6.6 2 10.8 2 17.6 0 46.1-14.2 84.1-79.4 5.8-1.9 11.8-3.9 17.6-5.9 27.2-9.2 55.4-18.8 80.9-23.1 28.2 15.1 60.3 24.8 82.1 24.8 21.6 0 30.1-12.8 33.3-20.5 5.6-13.5 2.9-30.5-6.2-39.6-2.6-2.6-6-4.8-10.1-6.6-.1-.1-.3-.1-.4-.2-.5-.2-1.1-.4-1.6-.7-.4-.2-.8-.3-1.2-.5-.2-.1-.3-.1-.5-.2-16.2-5.8-41.7-6.7-76.3-2.8l-5.3.6c-5-3-9.6-6.3-13.9-9.8-14.2-11.3-25.1-25.8-33.8-44.7zM391.5 761c6.7-12.3 19.8-25.3 30.1-34.7-13.9 20.2-24.4 30.3-30.1 34.7zM507 488.8c.8.1 1.5.7 2.2 2 5.2 8.9 4.5 35.8.5 49.4-4.9-19.9-5.6-48.1-2.7-51.4zm-19.2 188.9c-4.2 1.7-8.3 3.4-12.3 5 13.3-24.1 24.4-51.4 32.1-71.4 10.7 18.5 24.2 34.4 39.1 46.2-21.6 4.9-41.3 13-58.9 20.2zm175.4-.9c.1.2.2.5-.4.9h-.2l-.2.3c-.8.5-9 5.3-44.3-8.6 40.6-1.9 45 7.3 45.1 7.4z"])})),t.FilePptTwoTone=u("file-ppt",c,(function(e,t){return l(o,[t,"M464.5 516.2v108.4h38.9c44.7 0 71.2-10.9 71.2-54.3 0-34.4-20.1-54.1-53.9-54.1h-56.2z"],[t,"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm90 218.4c0 55.2-36.8 94.1-96.2 94.1h-63.3V760c0 4.4-3.6 8-8 8H424c-4.4 0-8-3.6-8-8V484c0-4.4 3.6-8 8-8v.1h104c59.7 0 96 39.8 96 94.3z"],[e,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"],[e,"M424 476.1c-4.4-.1-8 3.5-8 7.9v276c0 4.4 3.6 8 8 8h32.5c4.4 0 8-3.6 8-8v-95.5h63.3c59.4 0 96.2-38.9 96.2-94.1 0-54.5-36.3-94.3-96-94.3H424zm150.6 94.2c0 43.4-26.5 54.3-71.2 54.3h-38.9V516.2h56.2c33.8 0 53.9 19.7 53.9 54.1z"])})),t.FileTextTwoTone=u("file-text",c,(function(e,t){return l(o,[t,"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-22 322c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm200-184v48c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8z"],[e,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"],[e,"M312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8zm192 128H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"])})),t.FileUnknownTwoTone=u("file-unknown",c,(function(e,t){return l(o,[t,"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-22 424c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm110-228.4c.7 44.9-29.7 84.5-74.3 98.9-5.7 1.8-9.7 7.3-9.7 13.3V672c0 5.5-4.5 10-10 10h-32c-5.5 0-10-4.5-10-10v-32c.2-19.8 15.4-37.3 34.7-40.1C549 596.2 570 574.3 570 549c0-28.1-25.8-51.5-58-51.5s-58 23.4-58 51.6c0 5.2-4.4 9.4-9.8 9.4h-32.4c-5.4 0-9.8-4.1-9.8-9.5 0-57.4 50.1-103.7 111.5-103 59.3.8 107.7 46.1 108.5 101.6z"],[e,"M854.6 288.7L639.4 73.4c-6-6-14.2-9.4-22.7-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.6-9.4-22.6zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"],[e,"M480 744a32 32 0 1 0 64 0 32 32 0 1 0-64 0zm-78-195c0 5.4 4.4 9.5 9.8 9.5h32.4c5.4 0 9.8-4.2 9.8-9.4 0-28.2 25.8-51.6 58-51.6s58 23.4 58 51.5c0 25.3-21 47.2-49.3 50.9-19.3 2.8-34.5 20.3-34.7 40.1v32c0 5.5 4.5 10 10 10h32c5.5 0 10-4.5 10-10v-12.2c0-6 4-11.5 9.7-13.3 44.6-14.4 75-54 74.3-98.9-.8-55.5-49.2-100.8-108.5-101.6-61.4-.7-111.5 45.6-111.5 103z"])})),t.FileZipTwoTone=u("file-zip",c,(function(e,t){return l(o,[t,"M344 630h32v2h-32z"],[t,"M534 352V136H360v64h64v64h-64v64h64v64h-64v64h64v64h-64v62h64v160H296V520h64v-64h-64v-64h64v-64h-64v-64h64v-64h-64v-64h-64v752h560V394H576a42 42 0 0 1-42-42z"],[e,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h64v64h64v-64h174v216a42 42 0 0 0 42 42h216v494z"],[e,"M296 392h64v64h-64zm0-128h64v64h-64zm0 318v160h128V582h-64v-62h-64v62zm48 50v-2h32v64h-32v-62zm16-432h64v64h-64zm0 256h64v64h-64zm0-128h64v64h-64z"])})),t.FileWordTwoTone=u("file-word",c,(function(e,t){return l(o,[t,"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm101.3 129.3c1.3-5.4 6.1-9.3 11.7-9.3h35.6a12.04 12.04 0 0 1 11.6 15.1l-74.4 276c-1.4 5.3-6.2 8.9-11.6 8.9h-31.8c-5.4 0-10.2-3.7-11.6-8.9l-52.8-197-52.8 197c-1.4 5.3-6.2 8.9-11.6 8.9h-32c-5.4 0-10.2-3.7-11.6-8.9l-74.2-276a12.02 12.02 0 0 1 11.6-15.1h35.4c5.6 0 10.4 3.9 11.7 9.3L434.6 680l49.7-198.9c1.3-5.4 6.1-9.1 11.6-9.1h32.2c5.5 0 10.3 3.7 11.6 9.1l49.8 199.3 45.8-199.1z"],[e,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"],[e,"M528.1 472h-32.2c-5.5 0-10.3 3.7-11.6 9.1L434.6 680l-46.1-198.7c-1.3-5.4-6.1-9.3-11.7-9.3h-35.4a12.02 12.02 0 0 0-11.6 15.1l74.2 276c1.4 5.2 6.2 8.9 11.6 8.9h32c5.4 0 10.2-3.6 11.6-8.9l52.8-197 52.8 197c1.4 5.2 6.2 8.9 11.6 8.9h31.8c5.4 0 10.2-3.6 11.6-8.9l74.4-276a12.04 12.04 0 0 0-11.6-15.1H647c-5.6 0-10.4 3.9-11.7 9.3l-45.8 199.1-49.8-199.3c-1.3-5.4-6.1-9.1-11.6-9.1z"])})),t.FileTwoTone=u("file",c,(function(e,t){return l(o,[t,"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42z"],[e,"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"])})),t.FilterTwoTone=u("filter",c,(function(e,t){return l(o,[t,"M420.6 798h182.9V642H420.6zM411 561.4l9.5 16.6h183l9.5-16.6L811.3 226H212.7z"],[e,"M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.5 798H420.6V642h182.9v156zm9.5-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z"])})),t.FireTwoTone=u("fire",c,(function(e,t){return l(o,[t,"M737 438.6c-9.6 15.5-21.1 30.7-34.4 45.6a73.1 73.1 0 0 1-51 24.4 73.36 73.36 0 0 1-53.4-18.8 74.01 74.01 0 0 1-24.4-59.8c3-47.4-12.4-103.1-45.8-165.7-16.9-31.4-37.1-58.2-61.2-80.4a240 240 0 0 1-12.1 46.5 354.26 354.26 0 0 1-58.2 101 349.6 349.6 0 0 1-58.6 56.8c-34 26.1-62 60-80.8 97.9a275.96 275.96 0 0 0-29.1 124c0 74.9 29.5 145.3 83 198.4 53.7 53.2 125 82.4 201 82.4s147.3-29.2 201-82.4c53.5-53 83-123.5 83-198.4 0-39.2-8.1-77.3-24-113.1-9.3-21-21-40.5-35-58.4z"],[e,"M834.1 469.2A347.49 347.49 0 0 0 751.2 354l-29.1-26.7a8.09 8.09 0 0 0-13 3.3l-13 37.3c-8.1 23.4-23 47.3-44.1 70.8-1.4 1.5-3 1.9-4.1 2-1.1.1-2.8-.1-4.3-1.5-1.4-1.2-2.1-3-2-4.8 3.7-60.2-14.3-128.1-53.7-202C555.3 171 510 123.1 453.4 89.7l-41.3-24.3c-5.4-3.2-12.3 1-12 7.3l2.2 48c1.5 32.8-2.3 61.8-11.3 85.9-11 29.5-26.8 56.9-47 81.5a295.64 295.64 0 0 1-47.5 46.1 352.6 352.6 0 0 0-100.3 121.5A347.75 347.75 0 0 0 160 610c0 47.2 9.3 92.9 27.7 136a349.4 349.4 0 0 0 75.5 110.9c32.4 32 70 57.2 111.9 74.7C418.5 949.8 464.5 959 512 959s93.5-9.2 136.9-27.3A348.6 348.6 0 0 0 760.8 857c32.4-32 57.8-69.4 75.5-110.9a344.2 344.2 0 0 0 27.7-136c0-48.8-10-96.2-29.9-140.9zM713 808.5c-53.7 53.2-125 82.4-201 82.4s-147.3-29.2-201-82.4c-53.5-53.1-83-123.5-83-198.4 0-43.5 9.8-85.2 29.1-124 18.8-37.9 46.8-71.8 80.8-97.9a349.6 349.6 0 0 0 58.6-56.8c25-30.5 44.6-64.5 58.2-101a240 240 0 0 0 12.1-46.5c24.1 22.2 44.3 49 61.2 80.4 33.4 62.6 48.8 118.3 45.8 165.7a74.01 74.01 0 0 0 24.4 59.8 73.36 73.36 0 0 0 53.4 18.8c19.7-1 37.8-9.7 51-24.4 13.3-14.9 24.8-30.1 34.4-45.6 14 17.9 25.7 37.4 35 58.4 15.9 35.8 24 73.9 24 113.1 0 74.9-29.5 145.4-83 198.4z"])})),t.FolderAddTwoTone=u("folder-add",c,(function(e,t){return l(o,[t,"M372.5 256H184v512h656V370.4H492.1L372.5 256zM540 443.1V528h84.5c4.1 0 7.5 3.1 7.5 7v42c0 3.8-3.4 7-7.5 7H540v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V584h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H484v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1z"],[e,"M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z"],[e,"M484 443.1V528h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H484v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V584h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H540v-84.9c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1z"])})),t.FlagTwoTone=u("flag",c,(function(e,t){return l(o,[t,"M184 232h368v336H184z"],[t,"M624 632c0 4.4-3.6 8-8 8H504v73h336V377H624v255z"],[e,"M880 305H624V192c0-17.7-14.3-32-32-32H184v-40c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V640h248v113c0 17.7 14.3 32 32 32h416c17.7 0 32-14.3 32-32V337c0-17.7-14.3-32-32-32zM184 568V232h368v336H184zm656 145H504v-73h112c4.4 0 8-3.6 8-8V377h216v336z"])})),t.FolderTwoTone=u("folder",c,(function(e,t){return l(o,[e,"M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z"],[t,"M372.5 256H184v512h656V370.4H492.1z"])})),t.FolderOpenTwoTone=u("folder-open",c,(function(e,t){return l(o,[t,"M159 768h612.3l103.4-256H262.3z"],[e,"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z"])})),t.FrownTwoTone=u("frown",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm376 272h-48.1c-4.2 0-7.8-3.2-8.1-7.4C604 636.1 562.5 597 512 597s-92.1 39.1-95.8 88.6c-.3 4.2-3.9 7.4-8.1 7.4H360a8 8 0 0 1-8-8.4c4.4-84.3 74.5-151.6 160-151.6s155.6 67.3 160 151.6a8 8 0 0 1-8 8.4zm24-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"],[e,"M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm224 112c-85.5 0-155.6 67.3-160 151.6a8 8 0 0 0 8 8.4h48.1c4.2 0 7.8-3.2 8.1-7.4 3.7-49.5 45.3-88.6 95.8-88.6s92 39.1 95.8 88.6c.3 4.2 3.9 7.4 8.1 7.4H664a8 8 0 0 0 8-8.4C667.6 600.3 597.5 533 512 533zm128-112a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"])})),t.FundTwoTone=u("fund",c,(function(e,t){return l(o,[e,"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560z"],[t,"M136 792h752V232H136v560zm56.4-130.5l214.9-215c3.1-3.1 8.2-3.1 11.3 0L533 561l254.5-254.6c3.1-3.1 8.2-3.1 11.3 0l36.8 36.8c3.1 3.1 3.1 8.2 0 11.3l-297 297.2a8.03 8.03 0 0 1-11.3 0L412.9 537.2 240.4 709.7a8.03 8.03 0 0 1-11.3 0l-36.7-36.9a8.03 8.03 0 0 1 0-11.3z"],[e,"M229.1 709.7c3.1 3.1 8.2 3.1 11.3 0l172.5-172.5 114.4 114.5c3.1 3.1 8.2 3.1 11.3 0l297-297.2c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8a8.03 8.03 0 0 0-11.3 0L533 561 418.6 446.5a8.03 8.03 0 0 0-11.3 0l-214.9 215a8.03 8.03 0 0 0 0 11.3l36.7 36.9z"])})),t.FunnelPlotTwoTone=u("funnel-plot",c,(function(e,t){return l(o,[t,"M420.6 798h182.9V650H420.6zM297.7 374h428.6l85-148H212.7zm113.2 197.4l8.4 14.6h185.3l8.4-14.6L689.6 438H334.4z"],[e,"M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 607.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V607.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.5 798H420.6V650h182.9v148zm9.5-226.6l-8.4 14.6H419.3l-8.4-14.6L334.4 438h355.2L613 571.4zM726.3 374H297.7l-85-148h598.6l-85 148z"])})),t.GiftTwoTone=u("gift",c,(function(e,t){return l(o,[t,"M546 378h298v104H546zM228 550h250v308H228zm-48-172h298v104H180zm366 172h250v308H546z"],[e,"M880 310H732.4c13.6-21.4 21.6-46.8 21.6-74 0-76.1-61.9-138-138-138-41.4 0-78.7 18.4-104 47.4-25.3-29-62.6-47.4-104-47.4-76.1 0-138 61.9-138 138 0 27.2 7.9 52.6 21.6 74H144c-17.7 0-32 14.3-32 32v200c0 4.4 3.6 8 8 8h40v344c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V550h40c4.4 0 8-3.6 8-8V342c0-17.7-14.3-32-32-32zM478 858H228V550h250v308zm0-376H180V378h298v104zm0-176h-70c-38.6 0-70-31.4-70-70s31.4-70 70-70 70 31.4 70 70v70zm68-70c0-38.6 31.4-70 70-70s70 31.4 70 70-31.4 70-70 70h-70v-70zm250 622H546V550h250v308zm48-376H546V378h298v104z"])})),t.HddTwoTone=u("hdd",c,(function(e,t){return l(o,[t,"M232 888h560V680H232v208zm448-140c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM232 616h560V408H232v208zm72-128c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H312c-4.4 0-8-3.6-8-8v-48zm-72-144h560V136H232v208zm72-128c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H312c-4.4 0-8-3.6-8-8v-48z"],[e,"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V680h560v208zm0-272H232V408h560v208zm0-272H232V136h560v208z"],[e,"M312 544h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0-272h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm328 516a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"])})),t.HeartTwoTone=u("heart",c,(function(e,t){return l(o,[e,"M923 283.6a260.04 260.04 0 0 0-56.9-82.8 264.4 264.4 0 0 0-84-55.5A265.34 265.34 0 0 0 679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 0 0-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z"],[t,"M679.7 201c-73.1 0-136.5 40.8-167.7 100.4C480.8 241.8 417.4 201 344.3 201c-104 0-188.3 82.6-188.3 184.5 0 201.2 356 429.3 356 429.3s356-228.1 356-429.3C868 283.6 783.7 201 679.7 201z"])})),t.HighlightTwoTone=u("highlight",c,(function(e,t){return l(o,[t,"M229.6 796.3h160.2l54.3-54.1-80.1-78.9zm220.7-397.1l262.8 258.9 147.3-145-262.8-259zm-77.1 166.1l171.4 168.9 68.6-67.6-171.4-168.9z"],[e,"M957.6 507.5L603.2 158.3a7.9 7.9 0 0 0-11.2 0L353.3 393.5a8.03 8.03 0 0 0-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 0 0-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8v55.2c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6L539 830a7.9 7.9 0 0 0 11.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0 0 11.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2zM389.8 796.3H229.6l134.4-133 80.1 78.9-54.3 54.1zm154.8-62.1L373.2 565.3l68.6-67.6 171.4 168.9-68.6 67.6zm168.5-76.1L450.3 399.2l147.3-145.1 262.8 259-147.3 145z"])})),t.HomeTwoTone=u("home",c,(function(e,t){return l(o,[t,"M512.1 172.6l-370 369.7h96V868H392V640c0-22.1 17.9-40 40-40h160c22.1 0 40 17.9 40 40v228h153.9V542.3H882L535.2 195.7l-23.1-23.1zm434.5 422.9c-6 6-13.1 10.8-20.8 13.9 7.7-3.2 14.8-7.9 20.8-13.9zm-887-34.7c5 30.3 31.4 53.5 63.1 53.5h.9c-31.9 0-58.9-23-64-53.5zm-.9-10.5v-1.9 1.9zm.1-2.6c.1-3.1.5-6.1 1-9.1-.6 2.9-.9 6-1 9.1z"],[e,"M951 510c0-.1-.1-.1-.1-.2l-1.8-2.1c-.1-.1-.2-.3-.4-.4-.7-.8-1.5-1.6-2.2-2.4L560.1 118.8l-25.9-25.9a31.5 31.5 0 0 0-44.4 0L77.5 505a63.6 63.6 0 0 0-16 26.6l-.6 2.1-.3 1.1-.3 1.2c-.2.7-.3 1.4-.4 2.1 0 .1 0 .3-.1.4-.6 3-.9 6-1 9.1v3.3c0 .5 0 1 .1 1.5 0 .5 0 .9.1 1.4 0 .5.1 1 .1 1.5 0 .6.1 1.2.2 1.8 0 .3.1.6.1.9l.3 2.5v.1c5.1 30.5 32.2 53.5 64 53.5h42.5V940h691.7V614.3h43.4c8.6 0 16.9-1.7 24.5-4.9s14.7-7.9 20.8-13.9a63.6 63.6 0 0 0 18.7-45.3c0-14.7-5-28.8-14.3-40.2zM568 868H456V664h112v204zm217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l370-369.7 23.1 23.1L882 542.3h-96.1z"])})),t.HourglassTwoTone=u("hourglass",c,(function(e,t){return l(o,[t,"M512 548c-42.2 0-81.9 16.4-111.7 46.3A156.63 156.63 0 0 0 354 706v134h316V706c0-42.2-16.4-81.9-46.3-111.7A156.63 156.63 0 0 0 512 548zM354 318c0 42.2 16.4 81.9 46.3 111.7C430.1 459.6 469.8 476 512 476s81.9-16.4 111.7-46.3C653.6 399.9 670 360.2 670 318V184H354v134z"],[e,"M742 318V184h86c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h86v134c0 81.5 42.4 153.2 106.4 194-64 40.8-106.4 112.5-106.4 194v134h-86c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h632c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-86V706c0-81.5-42.4-153.2-106.4-194 64-40.8 106.4-112.5 106.4-194zm-72 388v134H354V706c0-42.2 16.4-81.9 46.3-111.7C430.1 564.4 469.8 548 512 548s81.9 16.4 111.7 46.3C653.6 624.1 670 663.8 670 706zm0-388c0 42.2-16.4 81.9-46.3 111.7C593.9 459.6 554.2 476 512 476s-81.9-16.4-111.7-46.3A156.63 156.63 0 0 1 354 318V184h316v134z"])})),t.Html5TwoTone=u("html5",c,(function(e,t){return l(o,[e,"M145 96l66 746.6L511.8 928l299.6-85.4L878.7 96H145zm610.9 700.6l-244.1 69.6-245.2-69.6-56.7-641.2h603.8l-57.8 641.2z"],[t,"M209.9 155.4l56.7 641.2 245.2 69.6 244.1-69.6 57.8-641.2H209.9zm530.4 117.9l-4.8 47.2-1.7 19.5H381.7l8.2 94.2H511v-.2h214.7l-3.2 24.3-21.2 242.2-1.7 16.3-187.7 51.7v.4h-1.7l-188.6-52-11.3-144.7h91l6.5 73.2 102.4 27.7h.8v-.2l102.4-27.7 11.4-118.5H511.9v.1H305.4l-22.7-253.5L281 249h461l-1.7 24.3z"],[e,"M281 249l1.7 24.3 22.7 253.5h206.5v-.1h112.9l-11.4 118.5L511 672.9v.2h-.8l-102.4-27.7-6.5-73.2h-91l11.3 144.7 188.6 52h1.7v-.4l187.7-51.7 1.7-16.3 21.2-242.2 3.2-24.3H511v.2H389.9l-8.2-94.2h352.1l1.7-19.5 4.8-47.2L742 249H511z"])})),t.IdcardTwoTone=u("idcard",c,(function(e,t){return l(o,[e,"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560z"],[t,"M136 792h752V232H136v560zm472-372c0-4.4 1-8 2.3-8h123.4c1.3 0 2.3 3.6 2.3 8v48c0 4.4-1 8-2.3 8H610.3c-1.3 0-2.3-3.6-2.3-8v-48zm0 144c0-4.4 3.2-8 7.1-8h185.7c3.9 0 7.1 3.6 7.1 8v48c0 4.4-3.2 8-7.1 8H615.1c-3.9 0-7.1-3.6-7.1-8v-48zM216.2 664.6c2.8-53.3 31.9-99.6 74.6-126.1-18.1-20-29.1-46.4-29.1-75.5 0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.6-29.1 75.5 42.6 26.4 71.8 72.8 74.6 126.1a8 8 0 0 1-8 8.4h-43.9c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.5-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H224c-4.6 0-8.2-3.8-7.8-8.4z"],[t,"M321.3 463a51.7 52 0 1 0 103.4 0 51.7 52 0 1 0-103.4 0z"],[e,"M610.3 476h123.4c1.3 0 2.3-3.6 2.3-8v-48c0-4.4-1-8-2.3-8H610.3c-1.3 0-2.3 3.6-2.3 8v48c0 4.4 1 8 2.3 8zm4.8 144h185.7c3.9 0 7.1-3.6 7.1-8v-48c0-4.4-3.2-8-7.1-8H615.1c-3.9 0-7.1 3.6-7.1 8v48c0 4.4 3.2 8 7.1 8zM224 673h43.9c4.2 0 7.6-3.3 7.9-7.5 3.8-50.5 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H522a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.6-126.1a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1c-.4 4.6 3.2 8.4 7.8 8.4zm149-262c28.5 0 51.7 23.3 51.7 52s-23.2 52-51.7 52-51.7-23.3-51.7-52 23.2-52 51.7-52z"])})),t.InfoCircleTwoTone=u("info-circle",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm32 588c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"],[e,"M464 336a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z"])})),t.InsuranceTwoTone=u("insurance",c,(function(e,t){return l(o,[e,"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z"],[t,"M521.9 358.8h97.9v41.6h-97.9z"],[t,"M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zM413.3 656h-.2c0 4.4-3.6 8-8 8h-37.3c-4.4 0-8-3.6-8-8V471.4c-7.7 9.2-15.4 17.9-23.1 26a6.04 6.04 0 0 1-10.2-2.4l-13.2-43.5c-.6-2-.2-4.1 1.2-5.6 37-43.4 64.7-95.1 82.2-153.6 1.1-3.5 5-5.3 8.4-3.7l38.6 18.3c2.7 1.3 4.1 4.4 3.2 7.2a429.2 429.2 0 0 1-33.6 79V656zm257.9-340v127.2c0 4.4-3.6 8-8 8h-66.7v18.6h98.8c4.4 0 8 3.6 8 8v35.6c0 4.4-3.6 8-8 8h-59c18.1 29.1 41.8 54.3 72.3 76.9 2.6 2.1 3.2 5.9 1.2 8.5l-26.3 35.3a5.92 5.92 0 0 1-8.9.7c-30.6-29.3-56.8-65.2-78.1-106.9V656c0 4.4-3.6 8-8 8h-36.2c-4.4 0-8-3.6-8-8V536c-22 44.7-49 80.8-80.6 107.6a6.38 6.38 0 0 1-4.8 1.4c-1.7-.3-3.2-1.3-4.1-2.8L432 605.7a6 6 0 0 1 1.6-8.1c28.6-20.3 51.9-45.2 71-76h-55.1c-4.4 0-8-3.6-8-8V478c0-4.4 3.6-8 8-8h94.9v-18.6h-65.9c-4.4 0-8-3.6-8-8V316c0-4.4 3.6-8 8-8h184.7c4.4 0 8 3.6 8 8z"],[e,"M443.7 306.9l-38.6-18.3c-3.4-1.6-7.3.2-8.4 3.7-17.5 58.5-45.2 110.2-82.2 153.6a5.7 5.7 0 0 0-1.2 5.6l13.2 43.5c1.4 4.5 7 5.8 10.2 2.4 7.7-8.1 15.4-16.8 23.1-26V656c0 4.4 3.6 8 8 8h37.3c4.4 0 8-3.6 8-8h.2V393.1a429.2 429.2 0 0 0 33.6-79c.9-2.8-.5-5.9-3.2-7.2zm26.8 9.1v127.4c0 4.4 3.6 8 8 8h65.9V470h-94.9c-4.4 0-8 3.6-8 8v35.6c0 4.4 3.6 8 8 8h55.1c-19.1 30.8-42.4 55.7-71 76a6 6 0 0 0-1.6 8.1l22.8 36.5c.9 1.5 2.4 2.5 4.1 2.8 1.7.3 3.5-.2 4.8-1.4 31.6-26.8 58.6-62.9 80.6-107.6v120c0 4.4 3.6 8 8 8h36.2c4.4 0 8-3.6 8-8V535.9c21.3 41.7 47.5 77.6 78.1 106.9 2.6 2.5 6.7 2.2 8.9-.7l26.3-35.3c2-2.6 1.4-6.4-1.2-8.5-30.5-22.6-54.2-47.8-72.3-76.9h59c4.4 0 8-3.6 8-8v-35.6c0-4.4-3.6-8-8-8h-98.8v-18.6h66.7c4.4 0 8-3.6 8-8V316c0-4.4-3.6-8-8-8H478.5c-4.4 0-8 3.6-8 8zm51.4 42.8h97.9v41.6h-97.9v-41.6z"])})),t.InteractionTwoTone=u("interaction",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M184 840h656V184H184v656zm114-401.9c0-55.3 44.6-100.1 99.7-100.1h205.8v-53.4c0-5.6 6.5-8.8 10.9-5.3L723.5 365c3.5 2.7 3.5 8 0 10.7l-109.1 85.7c-4.4 3.5-10.9.4-10.9-5.3v-53.4H397.8c-19.6 0-35.5 15.9-35.5 35.6v78.9c0 3.8-3.1 6.8-6.8 6.8h-50.7c-3.8 0-6.8-3-6.8-7v-78.9zm2.6 210.3l109.1-85.7c4.4-3.5 10.9-.4 10.9 5.3v53.4h205.6c19.6 0 35.5-15.9 35.5-35.6v-78.9c0-3.8 3.1-6.8 6.8-6.8h50.7c3.8 0 6.8 3.1 6.8 6.8v78.9c0 55.3-44.6 100.1-99.7 100.1H420.6v53.4c0 5.6-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.5z"],[e,"M304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z"])})),t.InterationTwoTone=u("interation",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M184 840h656V184H184v656zm114-401.9c0-55.3 44.6-100.1 99.7-100.1h205.8v-53.4c0-5.6 6.5-8.8 10.9-5.3L723.5 365c3.5 2.7 3.5 8 0 10.7l-109.1 85.7c-4.4 3.5-10.9.4-10.9-5.3v-53.4H397.8c-19.6 0-35.5 15.9-35.5 35.6v78.9c0 3.8-3.1 6.8-6.8 6.8h-50.7c-3.8 0-6.8-3-6.8-7v-78.9zm2.6 210.3l109.1-85.7c4.4-3.5 10.9-.4 10.9 5.3v53.4h205.6c19.6 0 35.5-15.9 35.5-35.6v-78.9c0-3.8 3.1-6.8 6.8-6.8h50.7c3.8 0 6.8 3.1 6.8 6.8v78.9c0 55.3-44.6 100.1-99.7 100.1H420.6v53.4c0 5.6-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.5z"],[e,"M304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z"])})),t.LayoutTwoTone=u("layout",c,(function(e,t){return l(o,[t,"M384 185h456v136H384zm-200 0h136v656H184zm696-73H144c-17.7 0-32 14.3-32 32v1c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32v-1c0-17.7-14.3-32-32-32zM384 385h456v456H384z"],[e,"M880 113H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V145c0-17.7-14.3-32-32-32zM320 841H184V185h136v656zm520 0H384V385h456v456zm0-520H384V185h456v136z"])})),t.LeftCircleTwoTone=u("left-circle",c,(function(e,t){return l(o,[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm104 240.9c0 10.3-4.9 19.9-13.2 25.9L457.4 512l145.4 105.1c8.3 6 13.2 15.7 13.2 25.9v46.9c0 6.5-7.4 10.3-12.7 6.5l-246-178a7.95 7.95 0 0 1 0-12.9l246-178c5.3-3.8 12.7 0 12.7 6.5v46.9z"],[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[e,"M603.3 327.5l-246 178a7.95 7.95 0 0 0 0 12.9l246 178c5.3 3.8 12.7 0 12.7-6.5V643c0-10.2-4.9-19.9-13.2-25.9L457.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5z"])})),t.LeftSquareTwoTone=u("left-square",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M184 840h656V184H184v656zm181.3-334.5l246-178c5.3-3.8 12.7 0 12.7 6.5v46.9c0 10.3-4.9 19.9-13.2 25.9L465.4 512l145.4 105.2c8.3 6 13.2 15.7 13.2 25.9V690c0 6.5-7.4 10.3-12.7 6.4l-246-178a7.95 7.95 0 0 1 0-12.9z"],[e,"M365.3 518.4l246 178c5.3 3.9 12.7.1 12.7-6.4v-46.9c0-10.2-4.9-19.9-13.2-25.9L465.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5l-246 178a7.95 7.95 0 0 0 0 12.9z"])})),t.LikeTwoTone=u("like",c,(function(e,t){return l(o,[t,"M273 495.9v428l.3-428zm538.2-88.3H496.8l9.6-198.4c.6-11.9-4.7-23.1-14.6-30.5-6.1-4.5-13.6-6.8-21.1-6.7-19.6.1-36.9 13.4-42.2 32.3-37.1 134.4-64.9 235.2-83.5 302.5V852h399.4a56.85 56.85 0 0 0 33.6-51.8c0-9.7-2.3-18.9-6.9-27.3l-13.9-25.4 21.9-19a56.76 56.76 0 0 0 19.6-43c0-9.7-2.3-18.9-6.9-27.3l-13.9-25.4 21.9-19a56.76 56.76 0 0 0 19.6-43c0-9.7-2.3-18.9-6.9-27.3l-14-25.5 21.9-19a56.76 56.76 0 0 0 19.6-43c0-19.1-11-37.5-28.8-48.4z"],[e,"M112 528v364c0 17.7 14.3 32 32 32h65V496h-65c-17.7 0-32 14.3-32 32zm773.9 5.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.5-65.5-111a67.67 67.67 0 0 0-34.3-9.3H572.3l6-122.9c1.5-29.7-9-57.9-29.5-79.4a106.4 106.4 0 0 0-77.9-33.4c-52 0-98 35-111.8 85.1l-85.8 310.8-.3 428h472.1c9.3 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37zM820.4 499l-21.9 19 14 25.5a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.1 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.1 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 22.4-13.2 42.6-33.6 51.8H345V506.8c18.6-67.2 46.4-168 83.5-302.5a44.28 44.28 0 0 1 42.2-32.3c7.5-.1 15 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.1 32.2-19.6 43z"])})),t.LockTwoTone=u("lock",c,(function(e,t){return l(o,[e,"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304z"],[t,"M232 840h560V536H232v304zm280-226a48.01 48.01 0 0 1 28 87v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 0 1 28-87z"],[e,"M484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z"])})),t.MailTwoTone=u("mail",c,(function(e,t){return l(o,[t,"M477.5 536.3L135.9 270.7l-27.5-21.4 27.6 21.5V792h752V270.8L546.2 536.3a55.99 55.99 0 0 1-68.7 0z"],[t,"M876.3 198.8l39.3 50.5-27.6 21.5 27.7-21.5-39.3-50.5z"],[e,"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-94.5 72.1L512 482 190.5 232.1h643zm54.5 38.7V792H136V270.8l-27.6-21.5 27.5 21.4 341.6 265.6a55.99 55.99 0 0 0 68.7 0L888 270.8l27.6-21.5-39.3-50.5h.1l39.3 50.5-27.7 21.5z"])})),t.MedicineBoxTwoTone=u("medicine-box",c,(function(e,t){return l(o,[t,"M244.3 328L184 513.4V840h656V513.4L779.7 328H244.3zM660 628c0 4.4-3.6 8-8 8H544v108c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V636H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108V464c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v108h108c4.4 0 8 3.6 8 8v48z"],[e,"M652 572H544V464c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V636h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"],[e,"M839.2 278.1a32 32 0 0 0-30.4-22.1H736V144c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32v112h-72.8a31.9 31.9 0 0 0-30.4 22.1L112 502v378c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V502l-72.8-223.9zM360 184h304v72H360v-72zm480 656H184V513.4L244.3 328h535.4L840 513.4V840z"])})),t.MehTwoTone=u("meh",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm384 200c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v48zm16-152a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"],[e,"M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm376 144H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-24-144a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"])})),t.MessageTwoTone=u("message",c,(function(e,t){return l(o,[t,"M775.3 248.9a369.62 369.62 0 0 0-119-80A370.2 370.2 0 0 0 512.1 140h-1.7c-99.7.4-193 39.4-262.8 109.9-69.9 70.5-108 164.1-107.6 263.8.3 60.3 15.3 120.2 43.5 173.1l4.5 8.4V836h140.8l8.4 4.5c52.9 28.2 112.8 43.2 173.1 43.5h1.7c99 0 192-38.2 262.1-107.6 70.4-69.8 109.5-163.1 110.1-262.7.2-50.6-9.5-99.6-28.9-145.8a370.15 370.15 0 0 0-80-119zM312 560a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96zm200 0a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96zm200 0a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"],[e,"M664 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm-400 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"],[e,"M925.2 338.4c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 0 0-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 0 0-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 0 0 112 714v152a46 46 0 0 0 46 46h152.1A449.4 449.4 0 0 0 510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 0 0 142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z"],[e,"M464 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"])})),t.MinusCircleTwoTone=u("minus-circle",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm192 396c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z"],[e,"M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"])})),t.MinusSquareTwoTone=u("minus-square",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M184 840h656V184H184v656zm136-352c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48z"],[e,"M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"])})),t.MobileTwoTone=u("mobile",c,(function(e,t){return l(o,[e,"M744 64H280c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h464c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zm-8 824H288V136h448v752z"],[t,"M288 888h448V136H288v752zm224-142c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z"],[e,"M472 786a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"])})),t.PauseCircleTwoTone=u("pause-circle",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-80 524c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm224 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z"],[e,"M424 352h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zm224 0h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z"])})),t.MoneyCollectTwoTone=u("money-collect",c,(function(e,t){return l(o,[t,"M256 744.4l256 93.1 256-93.1V184H256v560.4zM359.7 313c1.2-.7 2.5-1 3.8-1h55.7a8 8 0 0 1 7.1 4.4L511 485.2h3.3L599 316.4c1.3-2.7 4.1-4.4 7.1-4.4h54.5c4.4 0 8 3.6 8.1 7.9 0 1.3-.4 2.6-1 3.8L564 515.3h57.6c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3v39h76.3c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3V704c0 4.4-3.6 8-8 8h-49.9c-4.4 0-8-3.6-8-8v-63.4h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h76v-39h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h57L356.5 323.8c-2.1-3.8-.7-8.7 3.2-10.8z"],[e,"M911.5 700.7a8 8 0 0 0-10.3-4.8L840 718.2V180c0-37.6-30.4-68-68-68H252c-37.6 0-68 30.4-68 68v538.2l-61.3-22.3c-.9-.3-1.8-.5-2.7-.5-4.4 0-8 3.6-8 8V763c0 3.3 2.1 6.3 5.3 7.5L501 910.1c7.1 2.6 14.8 2.6 21.9 0l383.8-139.5c3.2-1.2 5.3-4.2 5.3-7.5v-59.6c0-1-.2-1.9-.5-2.8zM768 744.4l-256 93.1-256-93.1V184h512v560.4z"],[e,"M460.4 515.4h-57c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76V704c0 4.4 3.6 8 8 8h49.9c4.4 0 8-3.6 8-8v-63.5h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8H564l103.7-191.6c.6-1.2 1-2.5 1-3.8-.1-4.3-3.7-7.9-8.1-7.9h-54.5c-3 0-5.8 1.7-7.1 4.4l-84.7 168.8H511l-84.7-168.8a8 8 0 0 0-7.1-4.4h-55.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.8l103.9 191.6z"])})),t.NotificationTwoTone=u("notification",c,(function(e,t){return l(o,[t,"M229.6 678.1c-3.7 11.6-5.6 23.9-5.6 36.4 0-12.5 2-24.8 5.7-36.4h-.1zm76.3-260.2H184v188.2h121.9l12.9 5.2L840 820.7V203.3L318.8 412.7z"],[e,"M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.7c-3.7 11.6-5.7 23.9-5.7 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1zm496 58.4L318.8 611.3l-12.9-5.2H184V417.9h121.9l12.9-5.2L840 203.3v617.4z"])})),t.PhoneTwoTone=u("phone",c,(function(e,t){return l(o,[t,"M721.7 184.9L610.9 295.8l120.8 120.7-8 21.6A481.29 481.29 0 0 1 438 723.9l-21.6 8-.9-.9-119.8-120-110.8 110.9 104.5 104.5c10.8 10.7 26 15.7 40.8 13.2 117.9-19.5 235.4-82.9 330.9-178.4s158.9-213.1 178.4-331c2.5-14.8-2.5-30-13.3-40.8L721.7 184.9z"],[e,"M877.1 238.7L770.6 132.3c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L558.3 246.8c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l89.6 89.7a405.46 405.46 0 0 1-86.4 127.3c-36.7 36.9-79.6 66-127.2 86.6l-89.6-89.7c-13-13-30.4-20.3-48.8-20.3a68.2 68.2 0 0 0-48.8 20.3L132.3 673c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l106.4 106.4c22.2 22.2 52.8 34.9 84.2 34.9 6.5 0 12.8-.5 19.2-1.6 132.4-21.8 263.8-92.3 369.9-198.3C818 606 888.4 474.6 910.4 342.1c6.3-37.6-6.3-76.3-33.3-103.4zm-37.6 91.5c-19.5 117.9-82.9 235.5-178.4 331s-213 158.9-330.9 178.4c-14.8 2.5-30-2.5-40.8-13.2L184.9 721.9 295.7 611l119.8 120 .9.9 21.6-8a481.29 481.29 0 0 0 285.7-285.8l8-21.6-120.8-120.7 110.8-110.9 104.5 104.5c10.8 10.8 15.8 26 13.3 40.8z"])})),t.PictureTwoTone=u("picture",c,(function(e,t){return l(o,[e,"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2z"],[t,"M424.6 765.8l-150.1-178L136 752.1V792h752v-30.4L658.1 489z"],[t,"M136 652.7l132.4-157c3.2-3.8 9-3.8 12.2 0l144 170.7L652 396.8c3.2-3.8 9-3.8 12.2 0L888 662.2V232H136v420.7zM304 280a88 88 0 1 1 0 176 88 88 0 0 1 0-176z"],[t,"M276 368a28 28 0 1 0 56 0 28 28 0 1 0-56 0z"],[e,"M304 456a88 88 0 1 0 0-176 88 88 0 0 0 0 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z"])})),t.PlayCircleTwoTone=u("play-circle",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm164.1 378.2L457.7 677.1a8.02 8.02 0 0 1-12.7-6.5V353a8 8 0 0 1 12.7-6.5l218.4 158.8a7.9 7.9 0 0 1 0 12.9z"],[e,"M676.1 505.3L457.7 346.5A8 8 0 0 0 445 353v317.6a8.02 8.02 0 0 0 12.7 6.5l218.4-158.9a7.9 7.9 0 0 0 0-12.9z"])})),t.PlaySquareTwoTone=u("play-square",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M184 840h656V184H184v656zm240-484.7c0-9.4 10.9-14.7 18.3-8.8l199.4 156.7a11.2 11.2 0 0 1 0 17.6L442.3 677.6c-7.4 5.8-18.3.6-18.3-8.8V355.3z"],[e,"M442.3 677.6l199.4-156.8a11.2 11.2 0 0 0 0-17.6L442.3 346.5c-7.4-5.9-18.3-.6-18.3 8.8v313.5c0 9.4 10.9 14.6 18.3 8.8z"])})),t.PieChartTwoTone=u("pie-chart",c,(function(e,t){return l(o,[t,"M316.2 920.5c-47.6-20.1-90.4-49-127.1-85.7a398.19 398.19 0 0 1-85.7-127.1A397.12 397.12 0 0 1 72 552.2v.2a398.57 398.57 0 0 0 117 282.5c36.7 36.7 79.4 65.5 127 85.6A396.64 396.64 0 0 0 471.6 952c27 0 53.6-2.7 79.7-7.9-25.9 5.2-52.4 7.8-79.3 7.8-54 .1-106.4-10.5-155.8-31.4zM560 472c-4.4 0-8-3.6-8-8V79.9c0-1.3.3-2.5.9-3.6-.9 1.3-1.5 2.9-1.5 4.6v383.7c0 4.4 3.6 8 8 8l383.6-1c1.6 0 3.1-.5 4.4-1.3-1 .5-2.2.7-3.4.7l-384 1z"],[t,"M619.8 147.6v256.6l256.4-.7c-13-62.5-44.3-120.5-90-166.1a332.24 332.24 0 0 0-166.4-89.8z"],[t,"M438 221.7c-75.9 7.6-146.2 40.9-200.8 95.5C174.5 379.9 140 463.3 140 552s34.5 172.1 97.2 234.8c62.3 62.3 145.1 96.8 233.2 97.2 88.2.4 172.7-34.1 235.3-96.2C761 733 794.6 662.3 802.3 586H438V221.7z"],[e,"M864 518H506V160c0-4.4-3.6-8-8-8h-26a398.46 398.46 0 0 0-282.8 117.1 398.19 398.19 0 0 0-85.7 127.1A397.61 397.61 0 0 0 72 552v.2c0 53.9 10.6 106.2 31.4 155.5 20.1 47.6 49 90.4 85.7 127.1 36.7 36.7 79.5 65.6 127.1 85.7A397.61 397.61 0 0 0 472 952c26.9 0 53.4-2.6 79.3-7.8 26.1-5.3 51.7-13.1 76.4-23.6 47.6-20.1 90.4-49 127.1-85.7 36.7-36.7 65.6-79.5 85.7-127.1A397.61 397.61 0 0 0 872 552v-26c0-4.4-3.6-8-8-8zM705.7 787.8A331.59 331.59 0 0 1 470.4 884c-88.1-.4-170.9-34.9-233.2-97.2C174.5 724.1 140 640.7 140 552s34.5-172.1 97.2-234.8c54.6-54.6 124.9-87.9 200.8-95.5V586h364.3c-7.7 76.3-41.3 147-96.6 201.8z"],[e,"M952 462.4l-2.6-28.2c-8.5-92.1-49.4-179-115.2-244.6A399.4 399.4 0 0 0 589 74.6L560.7 72c-3.4-.3-6.4 1.5-7.8 4.3a8.7 8.7 0 0 0-.9 3.6V464c0 4.4 3.6 8 8 8l384-1c1.2 0 2.3-.3 3.4-.7a8.1 8.1 0 0 0 4.6-7.9zm-332.2-58.2V147.6a332.24 332.24 0 0 1 166.4 89.8c45.7 45.6 77 103.6 90 166.1l-256.4.7z"])})),t.PlusCircleTwoTone=u("plus-circle",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm192 396c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48z"],[e,"M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"])})),t.PlusSquareTwoTone=u("plus-square",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M184 840h656V184H184v656zm136-352c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48z"],[e,"M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"])})),t.PoundCircleTwoTone=u("pound-circle",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm146 582.1c0 4.4-3.6 8-8 8H376.2c-4.4 0-8-3.6-8-8v-38.5c0-3.7 2.5-6.9 6.1-7.8 44-10.9 72.8-49 72.8-94.2 0-14.7-2.5-29.4-5.9-44.2H374c-4.4 0-8-3.6-8-8v-30c0-4.4 3.6-8 8-8h53.7c-7.8-25.1-14.6-50.7-14.6-77.1 0-75.8 58.6-120.3 151.5-120.3 26.5 0 51.4 5.5 70.3 12.7 3.1 1.2 5.2 4.2 5.2 7.5v39.5a8 8 0 0 1-10.6 7.6c-17.9-6.4-39-10.5-60.4-10.5-53.3 0-87.3 26.6-87.3 70.2 0 24.7 6.2 47.9 13.4 70.5h112c4.4 0 8 3.6 8 8v30c0 4.4-3.6 8-8 8h-98.6c3.1 13.2 5.3 26.9 5.3 41 0 40.7-16.5 73.9-43.9 91.1v4.7h180c4.4 0 8 3.6 8 8v39.8z"],[e,"M650 674.3H470v-4.7c27.4-17.2 43.9-50.4 43.9-91.1 0-14.1-2.2-27.8-5.3-41h98.6c4.4 0 8-3.6 8-8v-30c0-4.4-3.6-8-8-8h-112c-7.2-22.6-13.4-45.8-13.4-70.5 0-43.6 34-70.2 87.3-70.2 21.4 0 42.5 4.1 60.4 10.5a8 8 0 0 0 10.6-7.6v-39.5c0-3.3-2.1-6.3-5.2-7.5-18.9-7.2-43.8-12.7-70.3-12.7-92.9 0-151.5 44.5-151.5 120.3 0 26.4 6.8 52 14.6 77.1H374c-4.4 0-8 3.6-8 8v30c0 4.4 3.6 8 8 8h67.2c3.4 14.8 5.9 29.5 5.9 44.2 0 45.2-28.8 83.3-72.8 94.2-3.6.9-6.1 4.1-6.1 7.8v38.5c0 4.4 3.6 8 8 8H650c4.4 0 8-3.6 8-8v-39.8c0-4.4-3.6-8-8-8z"])})),t.PrinterTwoTone=u("printer",c,(function(e,t){return l(o,[t,"M360 180h304v152H360zm492 220H172c-6.6 0-12 5.4-12 12v292h132V500h440v204h132V412c0-6.6-5.4-12-12-12zm-24 84c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v40z"],[e,"M852 332H732V120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM360 180h304v152H360V180zm304 664H360V568h304v276zm200-140H732V500H292v204H160V412c0-6.6 5.4-12 12-12h680c6.6 0 12 5.4 12 12v292z"],[e,"M820 436h-40c-4.4 0-8 3.6-8 8v40c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-40c0-4.4-3.6-8-8-8z"])})),t.ProfileTwoTone=u("profile",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M184 840h656V184H184v656zm300-496c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48zm0 144c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48zm0 144c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48zM380 328c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm0 144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm0 144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z"],[e,"M340 656a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0-144a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0-144a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm152 320h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0-144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0-144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"])})),t.ProjectTwoTone=u("project",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M184 840h656V184H184v656zm472-560c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v256c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280zm-192 0c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280zm-192 0c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v464c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280z"],[e,"M280 752h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8zm192-280h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm192 72h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v256c0 4.4 3.6 8 8 8z"])})),t.PushpinTwoTone=u("pushpin",c,(function(e,t){return l(o,[t,"M474.8 357.7l-24.5 24.5-34.4-3.8c-9.6-1.1-19.3-1.6-28.9-1.6-29 0-57.5 4.7-84.7 14.1-14 4.8-27.4 10.8-40.3 17.9l353.1 353.3a259.92 259.92 0 0 0 30.4-153.9l-3.8-34.4 24.5-24.5L800 415.5 608.5 224 474.8 357.7z"],[e,"M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3a33.23 33.23 0 0 0-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8zM666.2 549.3l-24.5 24.5 3.8 34.4a259.92 259.92 0 0 1-30.4 153.9L262 408.8c12.9-7.1 26.3-13.1 40.3-17.9 27.2-9.4 55.7-14.1 84.7-14.1 9.6 0 19.3.5 28.9 1.6l34.4 3.8 24.5-24.5L608.5 224 800 415.5 666.2 549.3z"])})),t.PropertySafetyTwoTone=u("property-safety",c,(function(e,t){return l(o,[e,"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z"],[t,"M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zM593.9 318h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V658c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8H418c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7H418c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3L585 323.5a10 10 0 0 1 8.9-5.5z"],[e,"M438.9 323.5a9.88 9.88 0 0 0-8.9-5.5h-46c-1.7 0-3.3.4-4.8 1.2-4.9 2.7-6.6 8.8-4 13.6l88 161.1H418c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1v29.7H418c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1V658c0 5.5 4.5 10 10 10h41.3c5.5 0 10-4.5 10-10v-51.8h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-63.4v-29.7h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-45.7l87.7-161.1c.8-1.5 1.2-3.1 1.1-4.8 0-5.5-4.5-10-10-10h-45a10 10 0 0 0-8.9 5.5l-73.2 144.3-72.9-144.3z"])})),t.QuestionCircleTwoTone=u("question-circle",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm0 632c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm62.9-219.5a48.3 48.3 0 0 0-30.9 44.8V620c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-21.5c0-23.1 6.7-45.9 19.9-64.9 12.9-18.6 30.9-32.8 52.1-40.9 34-13.1 56-41.6 56-72.7 0-44.1-43.1-80-96-80s-96 35.9-96 80v7.6c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V420c0-39.3 17.2-76 48.4-103.3C430.4 290.4 470 276 512 276s81.6 14.5 111.6 40.7C654.8 344 672 380.7 672 420c0 57.8-38.1 109.8-97.1 132.5z"],[e,"M472 732a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm151.6-415.3C593.6 290.5 554 276 512 276s-81.6 14.4-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.2 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0 1 30.9-44.8c59-22.7 97.1-74.7 97.1-132.5 0-39.3-17.2-76-48.4-103.3z"])})),t.ReconciliationTwoTone=u("reconciliation",c,(function(e,t){return l(o,[t,"M740 344H404V240H304v160h176c17.7 0 32 14.3 32 32v360h328V240H740v104zM584 448c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56zm92 301c-50.8 0-92-41.2-92-92s41.2-92 92-92 92 41.2 92 92-41.2 92-92 92zm92-341v96c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8z"],[t,"M642 657a34 34 0 1 0 68 0 34 34 0 1 0-68 0z"],[e,"M592 512h48c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm112-104v96c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-96c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8z"],[e,"M880 168H668c0-30.9-25.1-56-56-56h-80c-30.9 0-56 25.1-56 56H264c-17.7 0-32 14.3-32 32v200h-88c-17.7 0-32 14.3-32 32v448c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-16h368c17.7 0 32-14.3 32-32V200c0-17.7-14.3-32-32-32zm-412 64h72v-56h64v56h72v48H468v-48zm-20 616H176V616h272v232zm0-296H176v-88h272v88zm392 240H512V432c0-17.7-14.3-32-32-32H304V240h100v104h336V240h100v552z"],[e,"M676 565c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 126c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34z"])})),t.RedEnvelopeTwoTone=u("red-envelope",c,(function(e,t){return l(o,[e,"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V193.1l260.3 204.1c11.6 9.1 27.9 9.1 39.5 0L792 193.1V888zm0-751.3h-31.7L512 331.3 263.7 136.7H232v-.7h560v.7z"],[t,"M492.3 397.2L232 193.1V888h560V193.1L531.8 397.2a31.99 31.99 0 0 1-39.5 0zm99.4 60.9h47.8a8.45 8.45 0 0 1 7.4 12.4l-87.2 161h45.9c4.6 0 8.4 3.8 8.4 8.4V665c0 4.6-3.8 8.4-8.4 8.4h-63.3V702h63.3c4.6 0 8.4 3.8 8.4 8.4v25c.2 4.7-3.5 8.5-8.2 8.5h-63.3v49.9c0 4.6-3.8 8.4-8.4 8.4h-43.7c-4.6 0-8.4-3.8-8.4-8.4v-49.9h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h63v-28.6h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h45.4L377 470.4a8.4 8.4 0 0 1 3.4-11.4c1.3-.6 2.6-1 3.9-1h48.8c3.2 0 6.1 1.8 7.5 4.6l71.7 142 71.9-141.9a8.6 8.6 0 0 1 7.5-4.6z"],[t,"M232 136.7h31.7L512 331.3l248.3-194.6H792v-.7H232z"],[e,"M440.6 462.6a8.38 8.38 0 0 0-7.5-4.6h-48.8c-1.3 0-2.6.4-3.9 1a8.4 8.4 0 0 0-3.4 11.4l87.4 161.1H419c-4.6 0-8.4 3.8-8.4 8.4V665c0 4.6 3.8 8.4 8.4 8.4h63V702h-63c-4.6 0-8.4 3.8-8.4 8.4v25.1c0 4.6 3.8 8.4 8.4 8.4h63v49.9c0 4.6 3.8 8.4 8.4 8.4h43.7c4.6 0 8.4-3.8 8.4-8.4v-49.9h63.3c4.7 0 8.4-3.8 8.2-8.5v-25c0-4.6-3.8-8.4-8.4-8.4h-63.3v-28.6h63.3c4.6 0 8.4-3.8 8.4-8.4v-25.1c0-4.6-3.8-8.4-8.4-8.4h-45.9l87.2-161a8.45 8.45 0 0 0-7.4-12.4h-47.8c-3.1 0-6 1.8-7.5 4.6l-71.9 141.9-71.7-142z"])})),t.RestTwoTone=u("rest",c,(function(e,t){return l(o,[t,"M326.4 844h363.2l44.3-520H282l44.4 520zM508 416c79.5 0 144 64.5 144 144s-64.5 144-144 144-144-64.5-144-144 64.5-144 144-144z"],[e,"M508 704c79.5 0 144-64.5 144-144s-64.5-144-144-144-144 64.5-144 144 64.5 144 144 144zm0-224c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z"],[e,"M832 256h-28.1l-35.7-120.9c-4-13.7-16.5-23.1-30.7-23.1h-451c-14.3 0-26.8 9.4-30.7 23.1L220.1 256H192c-17.7 0-32 14.3-32 32v28c0 4.4 3.6 8 8 8h45.8l47.7 558.7a32 32 0 0 0 31.9 29.3h429.2a32 32 0 0 0 31.9-29.3L802.2 324H856c4.4 0 8-3.6 8-8v-28c0-17.7-14.3-32-32-32zm-518.6-76h397.2l22.4 76H291l22.4-76zm376.2 664H326.4L282 324h451.9l-44.3 520z"])})),t.RightCircleTwoTone=u("right-circle",c,(function(e,t){return l(o,[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm154.7 378.4l-246 178c-5.3 3.8-12.7 0-12.7-6.5V643c0-10.2 4.9-19.9 13.2-25.9L566.6 512 421.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.7 0 12.9z"],[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[e,"M666.7 505.5l-246-178c-5.3-3.8-12.7 0-12.7 6.5v46.9c0 10.3 4.9 19.9 13.2 25.9L566.6 512 421.2 617.1c-8.3 6-13.2 15.7-13.2 25.9v46.9c0 6.5 7.4 10.3 12.7 6.5l246-178c4.4-3.2 4.4-9.7 0-12.9z"])})),t.RocketTwoTone=u("rocket",c,(function(e,t){return l(o,[t,"M261.7 621.4c-9.4 14.6-17 30.3-22.5 46.6H324V558.7c-24.8 16.2-46 37.5-62.3 62.7zM700 558.7V668h84.8c-5.5-16.3-13.1-32-22.5-46.6a211.6 211.6 0 0 0-62.3-62.7zm-64-239.9l-124-147-124 147V668h248V318.8zM512 448a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"],[e,"M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 0 0-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0 0 43.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0 0 43.1-30.5 97.52 97.52 0 0 0 21.4-60.8c0-8.4-1.1-16.4-3.1-23.8L864 736zm-540-68h-84.8c5.5-16.3 13.1-32 22.5-46.6 16.3-25.2 37.5-46.5 62.3-62.7V668zm64-184.9V318.8l124-147 124 147V668H388V483.1zm240.1 301.1c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5s-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 0 1-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5zM700 668V558.7a211.6 211.6 0 0 1 62.3 62.7c9.4 14.6 17 30.3 22.5 46.6H700z"],[e,"M464 400a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"])})),t.RightSquareTwoTone=u("right-square",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M184 840h656V184H184v656zm216-196.9c0-10.2 4.9-19.9 13.2-25.9L558.6 512 413.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.7 0 12.9l-246 178c-5.3 3.9-12.7.1-12.7-6.4v-46.9z"],[e,"M412.7 696.4l246-178c4.4-3.2 4.4-9.7 0-12.9l-246-178c-5.3-3.8-12.7 0-12.7 6.5v46.9c0 10.3 4.9 19.9 13.2 25.9L558.6 512 413.2 617.2c-8.3 6-13.2 15.7-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.4z"])})),t.SafetyCertificateTwoTone=u("safety-certificate",c,(function(e,t){return l(o,[e,"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z"],[t,"M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zM632.8 328H688c6.5 0 10.3 7.4 6.5 12.7L481.9 633.4a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.2 0 10 2.5 13 6.6l64.7 89.1 150.9-207.8c3-4.1 7.9-6.6 13-6.6z"],[e,"M404.2 453.3c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.3 0-12.7-6.5-12.7h-55.2c-5.1 0-10 2.5-13 6.6L468.9 542.4l-64.7-89.1z"])})),t.SaveTwoTone=u("save",c,(function(e,t){return l(o,[t,"M704 320c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V184H184v656h656V341.8l-136-136V320zM512 730c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144z"],[e,"M512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z"],[e,"M893.3 293.3L730.7 130.7c-.7-.7-1.4-1.3-2.1-2-.1-.1-.3-.2-.4-.3-.7-.7-1.5-1.3-2.2-1.9a64 64 0 0 0-22-11.7V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840z"])})),t.ScheduleTwoTone=u("schedule",c,(function(e,t){return l(o,[t,"M768 352c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H548v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H328v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H136v496h752V296H768v56zM424 688c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-136c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm374.4-91.2l-165 228.7a15.9 15.9 0 0 1-25.8 0L493.5 531.3c-3.8-5.3 0-12.7 6.5-12.7h54.9c5.1 0 9.9 2.4 12.9 6.6l52.8 73.1 103.6-143.7c3-4.1 7.8-6.6 12.8-6.5h54.9c6.5 0 10.3 7.4 6.5 12.7z"],[e,"M724.2 454.6L620.6 598.3l-52.8-73.1c-3-4.2-7.8-6.6-12.9-6.6H500c-6.5 0-10.3 7.4-6.5 12.7l114.1 158.2a15.9 15.9 0 0 0 25.8 0l165-228.7c3.8-5.3 0-12.7-6.5-12.7H737c-5-.1-9.8 2.4-12.8 6.5zM416 496H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"],[e,"M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496z"],[e,"M416 632H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"])})),t.SecurityScanTwoTone=u("security-scan",c,(function(e,t){return l(o,[e,"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z"],[t,"M460.7 451.1a80.1 80.1 0 1 0 160.2 0 80.1 80.1 0 1 0-160.2 0z"],[t,"M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zm428.7 122.5c56.3 56.3 56.3 147.5 0 203.8-48.5 48.5-123 55.2-178.6 20.1l-77.5 77.5a8.03 8.03 0 0 1-11.3 0l-34-34a8.03 8.03 0 0 1 0-11.3l77.5-77.5c-35.1-55.7-28.4-130.1 20.1-178.6 56.3-56.3 147.5-56.3 203.8 0z"],[e,"M418.8 527.8l-77.5 77.5a8.03 8.03 0 0 0 0 11.3l34 34c3.1 3.1 8.2 3.1 11.3 0l77.5-77.5c55.6 35.1 130.1 28.4 178.6-20.1 56.3-56.3 56.3-147.5 0-203.8-56.3-56.3-147.5-56.3-203.8 0-48.5 48.5-55.2 122.9-20.1 178.6zm65.4-133.3a80.1 80.1 0 0 1 113.3 0 80.1 80.1 0 0 1 0 113.3c-31.3 31.3-82 31.3-113.3 0s-31.3-82 0-113.3z"])})),t.SettingTwoTone=u("setting",c,(function(e,t){return l(o,[t,"M859.3 569.7l.2.1c3.1-18.9 4.6-38.2 4.6-57.3 0-17.1-1.3-34.3-3.7-51.1 2.4 16.7 3.6 33.6 3.6 50.5 0 19.4-1.6 38.8-4.7 57.8zM99 398.1c-.5-.4-.9-.8-1.4-1.3.7.7 1.4 1.4 2.2 2.1l65.5 55.9v-.1L99 398.1zm536.6-216h.1l-15.5-83.8c-.2-1-.4-1.9-.7-2.8.1.5.3 1.1.4 1.6l15.7 85zm54 546.5l31.4-25.8 92.8 32.9c17-22.9 31.3-47.5 42.6-73.6l-74.7-63.9 6.6-40.1c2.5-15.1 3.8-30.6 3.8-46.1s-1.3-31-3.8-46.1l-6.5-39.9 74.7-63.9c-11.4-26-25.6-50.7-42.6-73.6l-92.8 32.9-31.4-25.8c-23.9-19.6-50.6-35-79.3-45.8l-38.1-14.3-17.9-97a377.5 377.5 0 0 0-85 0l-17.9 97.2-37.9 14.3c-28.5 10.8-55 26.2-78.7 45.7l-31.4 25.9-93.4-33.2c-17 22.9-31.3 47.5-42.6 73.6l75.5 64.5-6.5 40c-2.5 14.9-3.7 30.2-3.7 45.5 0 15.2 1.3 30.6 3.7 45.5l6.5 40-75.5 64.5c11.4 26 25.6 50.7 42.6 73.6l93.4-33.2 31.4 25.9c23.7 19.5 50.2 34.9 78.7 45.7l37.8 14.5 17.9 97.2c28.2 3.2 56.9 3.2 85 0l17.9-97 38.1-14.3c28.8-10.8 55.4-26.2 79.3-45.8zm-177.1-50.3c-30.5 0-59.2-7.8-84.3-21.5C373.3 627 336 568.9 336 502c0-97.2 78.8-176 176-176 66.9 0 125 37.3 154.8 92.2 13.7 25 21.5 53.7 21.5 84.3 0 97.1-78.7 175.8-175.8 175.8zM207.2 812.8c-5.5 1.9-11.2 2.3-16.6 1.2 5.7 1.2 11.7 1 17.5-1l81.4-29c-.1-.1-.3-.2-.4-.3l-81.9 29.1zm717.6-414.7l-65.5 56c0 .2.1.5.1.7l65.4-55.9c7.1-6.1 11.1-14.9 11.2-24-.3 8.8-4.3 17.3-11.2 23.2z"],[t,"M935.8 646.6c.5 4.7 0 9.5-1.7 14.1l-.9 2.6a446.02 446.02 0 0 1-79.7 137.9l-1.8 2.1a32 32 0 0 1-35.1 9.5l-81.3-28.9a350 350 0 0 1-99.7 57.6l-15.7 85a32.05 32.05 0 0 1-25.8 25.7l-2.7.5a445.2 445.2 0 0 1-79.2 7.1h.3c26.7 0 53.4-2.4 79.4-7.1l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-84.9c36.2-13.6 69.6-32.9 99.6-57.5l81.2 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.5-87.4 79.6-137.7l.9-2.6c1.6-4.7 2.1-9.7 1.5-14.5z"],[e,"M688 502c0-30.3-7.7-58.9-21.2-83.8C637 363.3 578.9 326 512 326c-97.2 0-176 78.8-176 176 0 66.9 37.3 125 92.2 154.8 24.9 13.5 53.4 21.2 83.8 21.2 97.2 0 176-78.8 176-176zm-288 0c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 0 1 624 502c0 29.9-11.7 58-32.8 79.2A111.6 111.6 0 0 1 512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 502z"],[e,"M594.1 952.2a32.05 32.05 0 0 0 25.8-25.7l15.7-85a350 350 0 0 0 99.7-57.6l81.3 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c1.7-4.6 2.2-9.4 1.7-14.1-.9-7.9-4.7-15.4-11-20.9l-65.3-55.9-.2-.1c3.1-19 4.7-38.4 4.7-57.8 0-16.9-1.2-33.9-3.6-50.5-.3-2.2-.7-4.4-1-6.6 0-.2-.1-.5-.1-.7l65.5-56c6.9-5.9 10.9-14.4 11.2-23.2.1-4-.5-8.1-1.9-12l-.9-2.6a443.74 443.74 0 0 0-79.7-137.9l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.3 28.9c-30-24.6-63.4-44-99.6-57.6h-.1l-15.7-85c-.1-.5-.2-1.1-.4-1.6a32.08 32.08 0 0 0-25.4-24.1l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.4a351.86 351.86 0 0 0-99 57.4l-81.9-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a446.02 446.02 0 0 0-79.7 137.9l-.9 2.6a32.09 32.09 0 0 0 7.9 33.9c.5.4.9.9 1.4 1.3l66.3 56.6v.1c-3.1 18.8-4.6 37.9-4.6 57 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1c4.9 5.7 11.4 9.4 18.5 10.7 5.4 1 11.1.7 16.6-1.2l81.9-29.1c.1.1.3.2.4.3 29.7 24.3 62.8 43.6 98.6 57.1l15.8 85.4a32.05 32.05 0 0 0 25.8 25.7l2.7.5c26.1 4.7 52.8 7.1 79.5 7.1h.3c26.6 0 53.3-2.4 79.2-7.1l2.7-.5zm-39.8-66.5a377.5 377.5 0 0 1-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 0 1-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97z"])})),t.ShopTwoTone=u("shop",c,(function(e,t){return l(o,[t,"M839.5 344h-655c-.3 0-.5.2-.5.5v91.2c0 59.8 49 108.3 109.3 108.3 40.7 0 76.2-22 95.1-54.7 2.9-5.1 8.4-8.3 14.3-8.3s11.3 3.2 14.3 8.3c18.8 32.7 54.3 54.7 95 54.7 40.8 0 76.4-22.1 95.1-54.9 2.9-5 8.2-8.1 13.9-8.1h.6c5.8 0 11 3.1 13.9 8.1 18.8 32.8 54.4 54.9 95.2 54.9C791 544 840 495.5 840 435.7v-91.2c0-.3-.2-.5-.5-.5z"],[e,"M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0 0 14.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h676c17.7 0 32-14.3 32-32V535a175 175 0 0 0 15.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zM214 184h596v88H214v-88zm362 656.1H448V736h128v104.1zm234.4 0H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c3-1.3 6-2.6 9-4v242.2zM840 435.7c0 59.8-49 108.3-109.3 108.3-40.8 0-76.4-22.1-95.2-54.9-2.9-5-8.1-8.1-13.9-8.1h-.6c-5.7 0-11 3.1-13.9 8.1A109.24 109.24 0 0 1 512 544c-40.7 0-76.2-22-95-54.7-3-5.1-8.4-8.3-14.3-8.3s-11.4 3.2-14.3 8.3a109.63 109.63 0 0 1-95.1 54.7C233 544 184 495.5 184 435.7v-91.2c0-.3.2-.5.5-.5h655c.3 0 .5.2.5.5v91.2z"])})),t.ShoppingTwoTone=u("shopping",c,(function(e,t){return l(o,[t,"M696 472c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-88H400v88c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-88h-96v456h560V384h-96v88z"],[e,"M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-432-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16H400v-16zm392 544H232V384h96v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h224v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h96v456z"])})),t.SkinTwoTone=u("skin",c,(function(e,t){return l(o,[t,"M512 318c-79.2 0-148.5-48.8-176.7-120H182v196h119v432h422V394h119V198H688.7c-28.2 71.2-97.5 120-176.7 120z"],[e,"M870 126H663.8c-17.4 0-32.9 11.9-37 29.3C614.3 208.1 567 246 512 246s-102.3-37.9-114.8-90.7a37.93 37.93 0 0 0-37-29.3H154a44 44 0 0 0-44 44v252a44 44 0 0 0 44 44h75v388a44 44 0 0 0 44 44h478a44 44 0 0 0 44-44V466h75a44 44 0 0 0 44-44V170a44 44 0 0 0-44-44zm-28 268H723v432H301V394H182V198h153.3c28.2 71.2 97.5 120 176.7 120s148.5-48.8 176.7-120H842v196z"])})),t.SlidersTwoTone=u("sliders",c,(function(e,t){return l(o,[t,"M180 292h80v440h-80zm369 180h-74a3 3 0 0 0-3 3v74a3 3 0 0 0 3 3h74a3 3 0 0 0 3-3v-74a3 3 0 0 0-3-3zm215-108h80v296h-80z"],[e,"M904 296h-66v-96c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v96h-66c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8h66v96c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-96h66c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8zm-60 364h-80V364h80v296zM612 404h-66V232c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v172h-66c-4.4 0-8 3.6-8 8v200c0 4.4 3.6 8 8 8h66v172c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V620h66c4.4 0 8-3.6 8-8V412c0-4.4-3.6-8-8-8zm-60 145a3 3 0 0 1-3 3h-74a3 3 0 0 1-3-3v-74a3 3 0 0 1 3-3h74a3 3 0 0 1 3 3v74zM320 224h-66v-56c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v56h-66c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h66v56c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-56h66c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm-60 508h-80V292h80v440z"])})),t.SmileTwoTone=u("smile",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm224 272c-85.5 0-155.6-67.3-160-151.6a8 8 0 0 1 8-8.4h48.1c4.2 0 7.8 3.2 8.1 7.4C420 589.9 461.5 629 512 629s92.1-39.1 95.8-88.6c.3-4.2 3.9-7.4 8.1-7.4H664a8 8 0 0 1 8 8.4C667.6 625.7 597.5 693 512 693zm176-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"],[e,"M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm376 112h-48.1c-4.2 0-7.8 3.2-8.1 7.4-3.7 49.5-45.3 88.6-95.8 88.6s-92-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4zm-24-112a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"])})),t.SnippetsTwoTone=u("snippets",c,(function(e,t){return l(o,[t,"M450 510V336H232v552h432V550H490c-22.1 0-40-17.9-40-40z"],[e,"M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 888H232V336h218v174c0 22.1 17.9 40 40 40h174v338zm0-402H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z"])})),t.SoundTwoTone=u("sound",c,(function(e,t){return l(o,[t,"M275.4 424H146v176h129.4l18 11.7L586 803V221L293.3 412.3z"],[e,"M892.1 737.8l-110.3-63.7a15.9 15.9 0 0 0-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0 0 21.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM934 476H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zM760 344a15.9 15.9 0 0 0 21.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 0 0-21.7-5.9L746 287.8a15.99 15.99 0 0 0-5.8 21.8L760 344zM625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1zM586 803L293.4 611.7l-18-11.7H146V424h129.4l17.9-11.7L586 221v582z"])})),t.StarTwoTone=u("star",c,(function(e,t){return l(o,[t,"M512.5 190.4l-94.4 191.3-211.2 30.7 152.8 149-36.1 210.3 188.9-99.3 188.9 99.2-36.1-210.3 152.8-148.9-211.2-30.7z"],[e,"M908.6 352.8l-253.9-36.9L541.2 85.8c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L370.3 315.9l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 0 0 .6 45.3l183.7 179.1L239 839.4a31.95 31.95 0 0 0 46.4 33.7l227.1-119.4 227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM665.3 561.3l36.1 210.3-188.9-99.2-188.9 99.3 36.1-210.3-152.8-149 211.2-30.7 94.4-191.3 94.4 191.3 211.2 30.7-152.8 148.9z"])})),t.StopTwoTone=u("stop",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm288.5 682.8L277.7 224C258 240 240 258 224 277.7l522.8 522.8C682.8 852.7 601 884 512 884c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372c0 89-31.3 170.8-83.5 234.8z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372c89 0 170.8-31.3 234.8-83.5L224 277.7c16-19.7 34-37.7 53.7-53.7l522.8 522.8C852.7 682.8 884 601 884 512c0-205.4-166.6-372-372-372z"])})),t.SwitcherTwoTone=u("switcher",c,(function(e,t){return l(o,[t,"M184 840h528V312H184v528zm116-290h296v64H300v-64z"],[e,"M880 112H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32z"],[e,"M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zm-40 600H184V312h528v528z"],[e,"M300 550h296v64H300z"])})),t.TabletTwoTone=u("tablet",c,(function(e,t){return l(o,[e,"M800 64H224c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zm-8 824H232V136h560v752z"],[t,"M232 888h560V136H232v752zm280-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z"],[e,"M472 784a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"])})),t.TagTwoTone=u("tag",c,(function(e,t){return l(o,[t,"M589 164.6L189.3 564.3l270.4 270.4L859.4 435 836 188l-247-23.4zM680 432c-48.5 0-88-39.5-88-88s39.5-88 88-88 88 39.5 88 88-39.5 88-88 88z"],[e,"M680 256c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm0 120c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"],[e,"M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 0 0 0 14.1l363.8 363.8a9.9 9.9 0 0 0 7.1 2.9c2.7 0 5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM459.7 834.7L189.3 564.3 589 164.6 836 188l23.4 247-399.7 399.7z"])})),t.TagsTwoTone=u("tags",c,(function(e,t){return l(o,[t,"M477.5 694l311.9-311.8-19-224.6-224.6-19-311.9 311.9L477.5 694zm116-415.5a47.81 47.81 0 0 1 33.9-33.9c16.6-4.4 34.2.3 46.4 12.4a47.93 47.93 0 0 1 12.4 46.4 47.81 47.81 0 0 1-33.9 33.9c-16.6 4.4-34.2-.3-46.4-12.4a48.3 48.3 0 0 1-12.4-46.4z"],[t,"M476.6 792.6c-1.7-.2-3.4-1-4.7-2.3L137.7 456.1a8.03 8.03 0 0 1 0-11.3L515.9 66.6c1.2-1.3 2.9-2.1 4.7-2.3h-.4c-2.3-.2-4.7.6-6.3 2.3L135.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c1.8 1.9 4.3 2.6 6.7 2.3z"],[e,"M889.7 539.8l-39.6-39.5a8.03 8.03 0 0 0-11.3 0l-362 361.3-237.6-237a8.03 8.03 0 0 0-11.3 0l-39.6 39.5a8.03 8.03 0 0 0 0 11.3l243.2 242.8 39.6 39.5c3.1 3.1 8.2 3.1 11.3 0l407.3-406.6c3.1-3.1 3.1-8.2 0-11.3zM652.3 337.3a47.81 47.81 0 0 0 33.9-33.9c4.4-16.6-.3-34.2-12.4-46.4a47.93 47.93 0 0 0-46.4-12.4 47.81 47.81 0 0 0-33.9 33.9c-4.4 16.6.3 34.2 12.4 46.4a48.3 48.3 0 0 0 46.4 12.4z"],[e,"M137.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c1.3 1.3 2.9 2.1 4.7 2.3 2.4.3 4.8-.5 6.6-2.3L861.4 412c1.7-1.7 2.5-4 2.3-6.3l-25.5-301.4c-.7-7.8-6.8-13.9-14.6-14.6L522.2 64.3h-1.6c-1.8.2-3.4 1-4.7 2.3L137.7 444.8zm408.1-306.2l224.6 19 19 224.6L477.5 694 233.9 450.5l311.9-311.9z"])})),t.ToolTwoTone=u("tool",c,(function(e,t){return l(o,[t,"M706.8 488.7a32.05 32.05 0 0 1-45.3 0L537 364.2a32.05 32.05 0 0 1 0-45.3l132.9-132.8a184.2 184.2 0 0 0-144 53.5c-58.1 58.1-69.3 145.3-33.6 214.6L439.5 507c-.1 0-.1-.1-.1-.1L209.3 737l79.2 79.2 274-274.1.1.1 8.8-8.8c69.3 35.7 156.5 24.5 214.6-33.6 39.2-39.1 57.3-92.1 53.6-143.9L706.8 488.7z"],[e,"M876.6 239.5c-.5-.9-1.2-1.8-2-2.5-5-5-13.1-5-18.1 0L684.2 409.3l-67.9-67.9L788.7 169c.8-.8 1.4-1.6 2-2.5 3.6-6.1 1.6-13.9-4.5-17.5-98.2-58-226.8-44.7-311.3 39.7-67 67-89.2 162-66.5 247.4l-293 293c-3 3-2.8 7.9.3 11l169.7 169.7c3.1 3.1 8.1 3.3 11 .3l292.9-292.9c85.5 22.8 180.5.7 247.6-66.4 84.4-84.5 97.7-213.1 39.7-311.3zM786 499.8c-58.1 58.1-145.3 69.3-214.6 33.6l-8.8 8.8-.1-.1-274 274.1-79.2-79.2 230.1-230.1s0 .1.1.1l52.8-52.8c-35.7-69.3-24.5-156.5 33.6-214.6a184.2 184.2 0 0 1 144-53.5L537 318.9a32.05 32.05 0 0 0 0 45.3l124.5 124.5a32.05 32.05 0 0 0 45.3 0l132.8-132.8c3.7 51.8-14.4 104.8-53.6 143.9z"])})),t.TrademarkCircleTwoTone=u("trademark-circle",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm170.7 584.2c-1.1.5-2.3.8-3.5.8h-62c-3.1 0-5.9-1.8-7.2-4.6l-74.6-159.2h-88.7V717c0 4.4-3.6 8-8 8H384c-4.4 0-8-3.6-8-8V307c0-4.4 3.6-8 8-8h155.6c98.8 0 144.2 59.9 144.2 131.1 0 70.2-43.6 106.4-78.4 119.2l80.8 164.2c2.1 3.9.4 8.7-3.5 10.7z"],[t,"M529.9 357h-83.4v148H528c53 0 82.8-25.6 82.8-72.4 0-50.3-32.9-75.6-80.9-75.6z"],[e,"M605.4 549.3c34.8-12.8 78.4-49 78.4-119.2 0-71.2-45.4-131.1-144.2-131.1H384c-4.4 0-8 3.6-8 8v410c0 4.4 3.6 8 8 8h54.7c4.4 0 8-3.6 8-8V561.2h88.7L610 720.4c1.3 2.8 4.1 4.6 7.2 4.6h62c1.2 0 2.4-.3 3.5-.8 3.9-2 5.6-6.8 3.5-10.7l-80.8-164.2zM528 505h-81.5V357h83.4c48 0 80.9 25.3 80.9 75.6 0 46.8-29.8 72.4-82.8 72.4z"])})),t.UnlockTwoTone=u("unlock",c,(function(e,t){return l(o,[t,"M232 840h560V536H232v304zm280-226a48.01 48.01 0 0 1 28 87v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 0 1 28-87z"],[e,"M484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z"],[e,"M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zm-40 376H232V536h560v304z"])})),t.TrophyTwoTone=u("trophy",c,(function(e,t){return l(o,[t,"M320 480c0 49.1 19.1 95.3 53.9 130.1 34.7 34.8 81 53.9 130.1 53.9h16c49.1 0 95.3-19.1 130.1-53.9 34.8-34.7 53.9-81 53.9-130.1V184H320v296zM184 352c0 41 26.9 75.8 64 87.6-37.1-11.9-64-46.7-64-87.6zm364 382.5C665 721.8 758.4 630.2 773.8 514 758.3 630.2 665 721.7 548 734.5zM250.2 514C265.6 630.2 359 721.8 476 734.5 359 721.7 265.7 630.2 250.2 514z"],[e,"M868 160h-92v-40c0-4.4-3.6-8-8-8H256c-4.4 0-8 3.6-8 8v40h-92a44 44 0 0 0-44 44v148c0 81.7 60 149.6 138.2 162C265.7 630.2 359 721.7 476 734.5v105.2H280c-17.7 0-32 14.3-32 32V904c0 4.4 3.6 8 8 8h512c4.4 0 8-3.6 8-8v-32.3c0-17.7-14.3-32-32-32H548V734.5C665 721.7 758.3 630.2 773.8 514 852 501.6 912 433.7 912 352V204a44 44 0 0 0-44-44zM248 439.6a91.99 91.99 0 0 1-64-87.6V232h64v207.6zM704 480c0 49.1-19.1 95.4-53.9 130.1-34.8 34.8-81 53.9-130.1 53.9h-16c-49.1 0-95.4-19.1-130.1-53.9-34.8-34.8-53.9-81-53.9-130.1V184h384v296zm136-128c0 41-26.9 75.8-64 87.6V232h64v120z"])})),t.UpCircleTwoTone=u("up-circle",c,(function(e,t){return l(o,[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm178 479h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 460.4 406.8 605.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7z"],[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[e,"M518.4 360.3a7.95 7.95 0 0 0-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7h46.9c10.3 0 19.9-4.9 25.9-13.2L512 460.4l105.2 145.4c6 8.3 15.7 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.4-12.7l-178-246z"])})),t.ThunderboltTwoTone=u("thunderbolt",c,(function(e,t){return l(o,[t,"M695.4 164.1H470.8L281.2 491.5h157.4l-60.3 241 319.8-305.1h-211z"],[e,"M848.1 359.3H627.8L825.9 109c4.1-5.3.4-13-6.3-13H436.1c-2.8 0-5.5 1.5-6.9 4L170.1 547.5c-3.1 5.3.7 12 6.9 12h174.4L262 917.1c-1.9 7.8 7.5 13.3 13.3 7.7L853.6 373c5.2-4.9 1.7-13.7-5.5-13.7zM378.3 732.5l60.3-241H281.2l189.6-327.4h224.6L487.1 427.4h211L378.3 732.5z"])})),t.UpSquareTwoTone=u("up-square",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"],[t,"M184 840h656V184H184v656zm143.5-228.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 465.4 406.8 610.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7z"],[e,"M334 624h46.9c10.3 0 19.9-4.9 25.9-13.2L512 465.4l105.2 145.4c6 8.3 15.7 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.4-12.7l-178-246a7.95 7.95 0 0 0-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7z"])})),t.UsbTwoTone=u("usb",c,(function(e,t){return l(o,[t,"M759.9 504H264.1c-26.5 0-48.1 19.7-48.1 44v292h592V548c0-24.3-21.6-44-48.1-44z"],[e,"M456 248h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm160 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"],[e,"M760 432V144c0-17.7-14.3-32-32-32H296c-17.7 0-32 14.3-32 32v288c-66.2 0-120 52.1-120 116v356c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8V548c0-63.9-53.8-116-120-116zM336 184h352v248H336V184zm472 656H216V548c0-24.3 21.6-44 48.1-44h495.8c26.5 0 48.1 19.7 48.1 44v292z"])})),t.VideoCameraTwoTone=u("video-camera",c,(function(e,t){return l(o,[t,"M136 792h576V232H136v560zm64-488c0-4.4 3.6-8 8-8h112c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H208c-4.4 0-8-3.6-8-8v-48z"],[e,"M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM712 792H136V232h576v560zm176-167l-104-59.8V458.9L888 399v226z"],[e,"M208 360h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H208c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"])})),t.WalletTwoTone=u("wallet",c,(function(e,t){return l(o,[e,"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 464H528V448h312v128zm0-192H496c-17.7 0-32 14.3-32 32v192c0 17.7 14.3 32 32 32h344v200H184V184h656v200z"],[t,"M528 576h312V448H528v128zm92-104c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z"],[e,"M580 512a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"],[t,"M184 840h656V640H496c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32h344V184H184v656z"])})),t.WarningTwoTone=u("warning",c,(function(e,t){return l(o,[e,"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-783.5-27.9L512 239.9l339.8 588.2H172.2z"],[t,"M172.2 828.1h679.6L512 239.9 172.2 828.1zM560 720a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0zm-16-304v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8z"],[e,"M464 720a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8z"])})),t.CiTwoTone=u("ci",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-63.5 522.8c49.3 0 82.8-29.4 87-72.4.4-4.1 3.8-7.3 8-7.3h52.7c2.4 0 4.4 2 4.4 4.4 0 77.4-64.3 132.5-152.3 132.5C345.4 720 286 651.4 286 537.4v-49C286 373.5 345.4 304 448.3 304c88.3 0 152.3 56.9 152.3 138.1 0 2.4-2 4.4-4.4 4.4h-52.6c-4.2 0-7.6-3.2-8-7.4-3.9-46.1-37.5-77.6-87-77.6-61.1 0-95.6 45.4-95.7 126.8v49.3c0 80.3 34.5 125.2 95.6 125.2zM738 704.1c0 4.4-3.6 8-8 8h-50.4c-4.4 0-8-3.6-8-8V319.9c0-4.4 3.6-8 8-8H730c4.4 0 8 3.6 8 8v384.2z"],[e,"M730 311.9h-50.4c-4.4 0-8 3.6-8 8v384.2c0 4.4 3.6 8 8 8H730c4.4 0 8-3.6 8-8V319.9c0-4.4-3.6-8-8-8zm-281.4 49.6c49.5 0 83.1 31.5 87 77.6.4 4.2 3.8 7.4 8 7.4h52.6c2.4 0 4.4-2 4.4-4.4 0-81.2-64-138.1-152.3-138.1C345.4 304 286 373.5 286 488.4v49c0 114 59.4 182.6 162.3 182.6 88 0 152.3-55.1 152.3-132.5 0-2.4-2-4.4-4.4-4.4h-52.7c-4.2 0-7.6 3.2-8 7.3-4.2 43-37.7 72.4-87 72.4-61.1 0-95.6-44.9-95.6-125.2v-49.3c.1-81.4 34.6-126.8 95.7-126.8z"])})),t.CopyrightTwoTone=u("copyright",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm5.5 533c52.9 0 88.8-31.7 93-77.8.4-4.1 3.8-7.3 8-7.3h56.8c2.6 0 4.7 2.1 4.7 4.7 0 82.6-68.7 141.4-162.7 141.4C407.4 734 344 660.8 344 539.1v-52.3C344 364.2 407.4 290 517.3 290c94.3 0 162.7 60.7 162.7 147.4 0 2.6-2.1 4.7-4.7 4.7h-56.7c-4.2 0-7.7-3.2-8-7.4-4-49.6-40-83.4-93-83.4-65.2 0-102.1 48.5-102.2 135.5v52.6c0 85.7 36.8 133.6 102.1 133.6z"],[e,"M517.6 351.3c53 0 89 33.8 93 83.4.3 4.2 3.8 7.4 8 7.4h56.7c2.6 0 4.7-2.1 4.7-4.7 0-86.7-68.4-147.4-162.7-147.4C407.4 290 344 364.2 344 486.8v52.3C344 660.8 407.4 734 517.3 734c94 0 162.7-58.8 162.7-141.4 0-2.6-2.1-4.7-4.7-4.7h-56.8c-4.2 0-7.6 3.2-8 7.3-4.2 46.1-40.1 77.8-93 77.8-65.3 0-102.1-47.9-102.1-133.6v-52.6c.1-87 37-135.5 102.2-135.5z"])})),t.DollarTwoTone=u("dollar",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M426.6 410.3c0 25.4 15.7 45.1 49.5 57.3 4.7 1.9 9.4 3.4 15 5v-124c-37 4.7-64.5 25.4-64.5 61.7zm116.5 135.2c-2.9-.6-5.7-1.3-8.8-2.2V677c42.6-3.8 72-27.3 72-66.4 0-30.7-15.9-50.7-63.2-65.1z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm22.4 589.2l.2 31.7c0 4.5-3.6 8.1-8 8.1h-28.4c-4.4 0-8-3.6-8-8v-31.4c-89-6.5-130.7-57.1-135.2-112.1-.4-4.7 3.3-8.7 8-8.7h46.2c3.9 0 7.3 2.8 7.9 6.6 5.1 31.8 29.9 55.4 74.1 61.3V534l-24.7-6.3c-52.3-12.5-102.1-45.1-102.1-112.7 0-73 55.4-112.1 126.2-119v-33c0-4.4 3.6-8 8-8h28.1c4.4 0 8 3.6 8 8v32.7c68.5 6.9 119.8 46.9 125.9 109.2a8.1 8.1 0 0 1-8 8.8h-44.9c-4 0-7.4-2.9-7.9-6.9-4-29.2-27.5-53-65.5-58.2v134.3l25.4 5.9c64.8 16 108.9 47 109 116.4 0 75.2-56 117.1-134.3 124z"],[e,"M559.7 488.8l-25.4-5.9V348.6c38 5.2 61.5 29 65.5 58.2.5 4 3.9 6.9 7.9 6.9h44.9c4.7 0 8.4-4.1 8-8.8-6.1-62.3-57.4-102.3-125.9-109.2V263c0-4.4-3.6-8-8-8h-28.1c-4.4 0-8 3.6-8 8v33c-70.8 6.9-126.2 46-126.2 119 0 67.6 49.8 100.2 102.1 112.7l24.7 6.3v142.7c-44.2-5.9-69-29.5-74.1-61.3-.6-3.8-4-6.6-7.9-6.6H363c-4.7 0-8.4 4-8 8.7 4.5 55 46.2 105.6 135.2 112.1V761c0 4.4 3.6 8 8 8h28.4c4.4 0 8-3.6 8-8.1l-.2-31.7c78.3-6.9 134.3-48.8 134.3-124-.1-69.4-44.2-100.4-109-116.4zm-68.6-16.2c-5.6-1.6-10.3-3.1-15-5-33.8-12.2-49.5-31.9-49.5-57.3 0-36.3 27.5-57 64.5-61.7v124zM534.3 677V543.3c3.1.9 5.9 1.6 8.8 2.2 47.3 14.4 63.2 34.4 63.2 65.1 0 39.1-29.4 62.6-72 66.4z"])})),t.EuroTwoTone=u("euro",c,(function(e,t){return l(o,[e,"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"],[t,"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm117.1 581.1c0 3.8-2.7 7-6.4 7.8-15.9 3.4-34.4 5.1-55.3 5.1-109.8 0-183-58.8-200.2-158H337c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h26.1v-36.9c0-4.4 0-8.7.3-12.8H337c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h31.8C388.5 345.7 460.7 290 567.4 290c20.9 0 39.4 1.9 55.3 5.4 3.7.8 6.3 4 6.3 7.8V346a8 8 0 0 1-9.6 7.8c-14.6-2.9-31.8-4.4-51.7-4.4-65.3 0-110.4 33.5-127.6 90.4h128.3c4.4 0 8 3.6 8 8V475c0 4.4-3.6 8-8 8H432.5c-.3 4.4-.3 9.1-.3 13.8v36h136.4c4.4 0 8 3.6 8 8V568c0 4.4-3.6 8-8 8H438c15.3 62 61.3 98.6 129.8 98.6 19.9 0 37.1-1.3 51.8-4.1 4.9-1 9.5 2.8 9.5 7.8v42.8z"],[e,"M619.6 670.5c-14.7 2.8-31.9 4.1-51.8 4.1-68.5 0-114.5-36.6-129.8-98.6h130.6c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H432.2v-36c0-4.7 0-9.4.3-13.8h135.9c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H440.1c17.2-56.9 62.3-90.4 127.6-90.4 19.9 0 37.1 1.5 51.7 4.4a8 8 0 0 0 9.6-7.8v-42.8c0-3.8-2.6-7-6.3-7.8-15.9-3.5-34.4-5.4-55.3-5.4-106.7 0-178.9 55.7-198.6 149.9H337c-4.4 0-8 3.6-8 8v27.2c0 4.4 3.6 8 8 8h26.4c-.3 4.1-.3 8.4-.3 12.8v36.9H337c-4.4 0-8 3.6-8 8V568c0 4.4 3.6 8 8 8h30.2c17.2 99.2 90.4 158 200.2 158 20.9 0 39.4-1.7 55.3-5.1 3.7-.8 6.4-4 6.4-7.8v-42.8c0-5-4.6-8.8-9.5-7.8z"])})),t.GoldTwoTone=u("gold",c,(function(e,t){return l(o,[e,"M435.7 558.7c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM196.5 748l20.7-128h159.5l20.7 128H196.5zm709.4 58.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zM626.5 748l20.7-128h159.5l20.7 128H626.5zM342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8zm91.2-196h159.5l20.7 128h-201l20.8-128z"],[t,"M592.7 276H433.2l-20.8 128h201zM217.2 620l-20.7 128h200.9l-20.7-128zm430 0l-20.7 128h200.9l-20.7-128z"])})),t.CanlendarTwoTone=u("canlendar",c,(function(e,t){return l(o,[t,"M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v136h656V256H712v48z"],[e,"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zm0-448H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136z"])}))},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(488));function a(e,t,n){var r;return(r=Math.round(e.h)>=60&&Math.round(e.h)<=240?n?Math.round(e.h)-2*t:Math.round(e.h)+2*t:n?Math.round(e.h)+2*t:Math.round(e.h)-2*t)<0?r+=360:r>=360&&(r-=360),r}function i(e,t,n){return 0===e.h&&0===e.s?e.s:((r=n?Math.round(100*e.s)-16*t:4===t?Math.round(100*e.s)+16:Math.round(100*e.s)+5*t)>100&&(r=100),n&&5===t&&r>10&&(r=10),r<6&&(r=6),r);var r}function c(e,t,n){return n?Math.round(100*e.v)+5*t:Math.round(100*e.v)-15*t}t.default=function(e){for(var t=[],n=o.default(e),r=5;r>0;r-=1){var l=n.toHsv(),u=o.default({h:a(l,r,!0),s:i(l,r,!0),v:c(l,r,!0)}).toHexString();t.push(u)}for(t.push(n.toHexString()),r=1;r<=4;r+=1){l=n.toHsv(),u=o.default({h:a(l,r),s:i(l,r),v:c(l,r)}).toHexString();t.push(u)}return t}},function(e,t,n){var r;!function(o){var a=/^\s+/,i=/\s+$/,c=0,l=o.round,u=o.min,s=o.max,f=o.random;function d(e,t){if(t=t||{},(e=e||"")instanceof d)return e;if(!(this instanceof d))return new d(e,t);var n=function(e){var t={r:0,g:0,b:0},n=1,r=null,c=null,l=null,f=!1,d=!1;"string"==typeof e&&(e=function(e){e=e.replace(a,"").replace(i,"").toLowerCase();var t,n=!1;if(j[e])e=j[e],n=!0;else if("transparent"==e)return{r:0,g:0,b:0,a:0,format:"name"};if(t=W.rgb.exec(e))return{r:t[1],g:t[2],b:t[3]};if(t=W.rgba.exec(e))return{r:t[1],g:t[2],b:t[3],a:t[4]};if(t=W.hsl.exec(e))return{h:t[1],s:t[2],l:t[3]};if(t=W.hsla.exec(e))return{h:t[1],s:t[2],l:t[3],a:t[4]};if(t=W.hsv.exec(e))return{h:t[1],s:t[2],v:t[3]};if(t=W.hsva.exec(e))return{h:t[1],s:t[2],v:t[3],a:t[4]};if(t=W.hex8.exec(e))return{r:D(t[1]),g:D(t[2]),b:D(t[3]),a:F(t[4]),format:n?"name":"hex8"};if(t=W.hex6.exec(e))return{r:D(t[1]),g:D(t[2]),b:D(t[3]),format:n?"name":"hex"};if(t=W.hex4.exec(e))return{r:D(t[1]+""+t[1]),g:D(t[2]+""+t[2]),b:D(t[3]+""+t[3]),a:F(t[4]+""+t[4]),format:n?"name":"hex8"};if(t=W.hex3.exec(e))return{r:D(t[1]+""+t[1]),g:D(t[2]+""+t[2]),b:D(t[3]+""+t[3]),format:n?"name":"hex"};return!1}(e));"object"==typeof e&&(U(e.r)&&U(e.g)&&U(e.b)?(p=e.r,h=e.g,m=e.b,t={r:255*P(p,255),g:255*P(h,255),b:255*P(m,255)},f=!0,d="%"===String(e.r).substr(-1)?"prgb":"rgb"):U(e.h)&&U(e.s)&&U(e.v)?(r=V(e.s),c=V(e.v),t=function(e,t,n){e=6*P(e,360),t=P(t,100),n=P(n,100);var r=o.floor(e),a=e-r,i=n*(1-t),c=n*(1-a*t),l=n*(1-(1-a)*t),u=r%6;return{r:255*[n,c,i,i,l,n][u],g:255*[l,n,n,c,i,i][u],b:255*[i,i,l,n,n,c][u]}}(e.h,r,c),f=!0,d="hsv"):U(e.h)&&U(e.s)&&U(e.l)&&(r=V(e.s),l=V(e.l),t=function(e,t,n){var r,o,a;function i(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}if(e=P(e,360),t=P(t,100),n=P(n,100),0===t)r=o=a=n;else{var c=n<.5?n*(1+t):n+t-n*t,l=2*n-c;r=i(l,c,e+1/3),o=i(l,c,e),a=i(l,c,e-1/3)}return{r:255*r,g:255*o,b:255*a}}(e.h,r,l),f=!0,d="hsl"),e.hasOwnProperty("a")&&(n=e.a));var p,h,m;return n=T(n),{ok:f,format:e.format||d,r:u(255,s(t.r,0)),g:u(255,s(t.g,0)),b:u(255,s(t.b,0)),a:n}}(e);this._originalInput=e,this._r=n.r,this._g=n.g,this._b=n.b,this._a=n.a,this._roundA=l(100*this._a)/100,this._format=t.format||n.format,this._gradientType=t.gradientType,this._r<1&&(this._r=l(this._r)),this._g<1&&(this._g=l(this._g)),this._b<1&&(this._b=l(this._b)),this._ok=n.ok,this._tc_id=c++}function p(e,t,n){e=P(e,255),t=P(t,255),n=P(n,255);var r,o,a=s(e,t,n),i=u(e,t,n),c=(a+i)/2;if(a==i)r=o=0;else{var l=a-i;switch(o=c>.5?l/(2-a-i):l/(a+i),a){case e:r=(t-n)/l+(t<n?6:0);break;case t:r=(n-e)/l+2;break;case n:r=(e-t)/l+4}r/=6}return{h:r,s:o,l:c}}function h(e,t,n){e=P(e,255),t=P(t,255),n=P(n,255);var r,o,a=s(e,t,n),i=u(e,t,n),c=a,l=a-i;if(o=0===a?0:l/a,a==i)r=0;else{switch(a){case e:r=(t-n)/l+(t<n?6:0);break;case t:r=(n-e)/l+2;break;case n:r=(e-t)/l+4}r/=6}return{h:r,s:o,v:c}}function m(e,t,n,r){var o=[Y(l(e).toString(16)),Y(l(t).toString(16)),Y(l(n).toString(16))];return r&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)?o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0):o.join("")}function v(e,t,n,r){return[Y(N(r)),Y(l(e).toString(16)),Y(l(t).toString(16)),Y(l(n).toString(16))].join("")}function y(e,t){t=0===t?0:t||10;var n=d(e).toHsl();return n.s-=t/100,n.s=H(n.s),d(n)}function _(e,t){t=0===t?0:t||10;var n=d(e).toHsl();return n.s+=t/100,n.s=H(n.s),d(n)}function b(e){return d(e).desaturate(100)}function g(e,t){t=0===t?0:t||10;var n=d(e).toHsl();return n.l+=t/100,n.l=H(n.l),d(n)}function M(e,t){t=0===t?0:t||10;var n=d(e).toRgb();return n.r=s(0,u(255,n.r-l(-t/100*255))),n.g=s(0,u(255,n.g-l(-t/100*255))),n.b=s(0,u(255,n.b-l(-t/100*255))),d(n)}function w(e,t){t=0===t?0:t||10;var n=d(e).toHsl();return n.l-=t/100,n.l=H(n.l),d(n)}function O(e,t){var n=d(e).toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,d(n)}function k(e){var t=d(e).toHsl();return t.h=(t.h+180)%360,d(t)}function L(e){var t=d(e).toHsl(),n=t.h;return[d(e),d({h:(n+120)%360,s:t.s,l:t.l}),d({h:(n+240)%360,s:t.s,l:t.l})]}function x(e){var t=d(e).toHsl(),n=t.h;return[d(e),d({h:(n+90)%360,s:t.s,l:t.l}),d({h:(n+180)%360,s:t.s,l:t.l}),d({h:(n+270)%360,s:t.s,l:t.l})]}function z(e){var t=d(e).toHsl(),n=t.h;return[d(e),d({h:(n+72)%360,s:t.s,l:t.l}),d({h:(n+216)%360,s:t.s,l:t.l})]}function S(e,t,n){t=t||6,n=n||30;var r=d(e).toHsl(),o=360/n,a=[d(e)];for(r.h=(r.h-(o*t>>1)+720)%360;--t;)r.h=(r.h+o)%360,a.push(d(r));return a}function C(e,t){t=t||6;for(var n=d(e).toHsv(),r=n.h,o=n.s,a=n.v,i=[],c=1/t;t--;)i.push(d({h:r,s:o,v:a})),a=(a+c)%1;return i}d.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},getLuminance:function(){var e,t,n,r=this.toRgb();return e=r.r/255,t=r.g/255,n=r.b/255,.2126*(e<=.03928?e/12.92:o.pow((e+.055)/1.055,2.4))+.7152*(t<=.03928?t/12.92:o.pow((t+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:o.pow((n+.055)/1.055,2.4))},setAlpha:function(e){return this._a=T(e),this._roundA=l(100*this._a)/100,this},toHsv:function(){var e=h(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=h(this._r,this._g,this._b),t=l(360*e.h),n=l(100*e.s),r=l(100*e.v);return 1==this._a?"hsv("+t+", "+n+"%, "+r+"%)":"hsva("+t+", "+n+"%, "+r+"%, "+this._roundA+")"},toHsl:function(){var e=p(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=p(this._r,this._g,this._b),t=l(360*e.h),n=l(100*e.s),r=l(100*e.l);return 1==this._a?"hsl("+t+", "+n+"%, "+r+"%)":"hsla("+t+", "+n+"%, "+r+"%, "+this._roundA+")"},toHex:function(e){return m(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return function(e,t,n,r,o){var a=[Y(l(e).toString(16)),Y(l(t).toString(16)),Y(l(n).toString(16)),Y(N(r))];if(o&&a[0].charAt(0)==a[0].charAt(1)&&a[1].charAt(0)==a[1].charAt(1)&&a[2].charAt(0)==a[2].charAt(1)&&a[3].charAt(0)==a[3].charAt(1))return a[0].charAt(0)+a[1].charAt(0)+a[2].charAt(0)+a[3].charAt(0);return a.join("")}(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:l(this._r),g:l(this._g),b:l(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+l(this._r)+", "+l(this._g)+", "+l(this._b)+")":"rgba("+l(this._r)+", "+l(this._g)+", "+l(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:l(100*P(this._r,255))+"%",g:l(100*P(this._g,255))+"%",b:l(100*P(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+l(100*P(this._r,255))+"%, "+l(100*P(this._g,255))+"%, "+l(100*P(this._b,255))+"%)":"rgba("+l(100*P(this._r,255))+"%, "+l(100*P(this._g,255))+"%, "+l(100*P(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(E[m(this._r,this._g,this._b,!0)]||!1)},toFilter:function(e){var t="#"+v(this._r,this._g,this._b,this._a),n=t,r=this._gradientType?"GradientType = 1, ":"";if(e){var o=d(e);n="#"+v(o._r,o._g,o._b,o._a)}return"progid:DXImageTransform.Microsoft.gradient("+r+"startColorstr="+t+",endColorstr="+n+")"},toString:function(e){var t=!!e;e=e||this._format;var n=!1,r=this._a<1&&this._a>=0;return t||!r||"hex"!==e&&"hex6"!==e&&"hex3"!==e&&"hex4"!==e&&"hex8"!==e&&"name"!==e?("rgb"===e&&(n=this.toRgbString()),"prgb"===e&&(n=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(n=this.toHexString()),"hex3"===e&&(n=this.toHexString(!0)),"hex4"===e&&(n=this.toHex8String(!0)),"hex8"===e&&(n=this.toHex8String()),"name"===e&&(n=this.toName()),"hsl"===e&&(n=this.toHslString()),"hsv"===e&&(n=this.toHsvString()),n||this.toHexString()):"name"===e&&0===this._a?this.toName():this.toRgbString()},clone:function(){return d(this.toString())},_applyModification:function(e,t){var n=e.apply(null,[this].concat([].slice.call(t)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(g,arguments)},brighten:function(){return this._applyModification(M,arguments)},darken:function(){return this._applyModification(w,arguments)},desaturate:function(){return this._applyModification(y,arguments)},saturate:function(){return this._applyModification(_,arguments)},greyscale:function(){return this._applyModification(b,arguments)},spin:function(){return this._applyModification(O,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(S,arguments)},complement:function(){return this._applyCombination(k,arguments)},monochromatic:function(){return this._applyCombination(C,arguments)},splitcomplement:function(){return this._applyCombination(z,arguments)},triad:function(){return this._applyCombination(L,arguments)},tetrad:function(){return this._applyCombination(x,arguments)}},d.fromRatio=function(e,t){if("object"==typeof e){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]="a"===r?e[r]:V(e[r]));e=n}return d(e,t)},d.equals=function(e,t){return!(!e||!t)&&d(e).toRgbString()==d(t).toRgbString()},d.random=function(){return d.fromRatio({r:f(),g:f(),b:f()})},d.mix=function(e,t,n){n=0===n?0:n||50;var r=d(e).toRgb(),o=d(t).toRgb(),a=n/100;return d({r:(o.r-r.r)*a+r.r,g:(o.g-r.g)*a+r.g,b:(o.b-r.b)*a+r.b,a:(o.a-r.a)*a+r.a})},d.readability=function(e,t){var n=d(e),r=d(t);return(o.max(n.getLuminance(),r.getLuminance())+.05)/(o.min(n.getLuminance(),r.getLuminance())+.05)},d.isReadable=function(e,t,n){var r,o,a=d.readability(e,t);switch(o=!1,(r=function(e){var t,n;t=((e=e||{level:"AA",size:"small"}).level||"AA").toUpperCase(),n=(e.size||"small").toLowerCase(),"AA"!==t&&"AAA"!==t&&(t="AA");"small"!==n&&"large"!==n&&(n="small");return{level:t,size:n}}(n)).level+r.size){case"AAsmall":case"AAAlarge":o=a>=4.5;break;case"AAlarge":o=a>=3;break;case"AAAsmall":o=a>=7}return o},d.mostReadable=function(e,t,n){var r,o,a,i,c=null,l=0;o=(n=n||{}).includeFallbackColors,a=n.level,i=n.size;for(var u=0;u<t.length;u++)(r=d.readability(e,t[u]))>l&&(l=r,c=d(t[u]));return d.isReadable(e,c,{level:a,size:i})||!o?c:(n.includeFallbackColors=!1,d.mostReadable(e,["#fff","#000"],n))};var j=d.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},E=d.hexNames=function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}(j);function T(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function P(e,t){(function(e){return"string"==typeof e&&-1!=e.indexOf(".")&&1===parseFloat(e)})(e)&&(e="100%");var n=function(e){return"string"==typeof e&&-1!=e.indexOf("%")}(e);return e=u(t,s(0,parseFloat(e))),n&&(e=parseInt(e*t,10)/100),o.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function H(e){return u(1,s(0,e))}function D(e){return parseInt(e,16)}function Y(e){return 1==e.length?"0"+e:""+e}function V(e){return e<=1&&(e=100*e+"%"),e}function N(e){return o.round(255*parseFloat(e)).toString(16)}function F(e){return D(e)/255}var A,R,I,W=(R="[\\s|\\(]+("+(A="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+A+")[,|\\s]+("+A+")\\s*\\)?",I="[\\s|\\(]+("+A+")[,|\\s]+("+A+")[,|\\s]+("+A+")[,|\\s]+("+A+")\\s*\\)?",{CSS_UNIT:new RegExp(A),rgb:new RegExp("rgb"+R),rgba:new RegExp("rgba"+I),hsl:new RegExp("hsl"+R),hsla:new RegExp("hsla"+I),hsv:new RegExp("hsv"+R),hsva:new RegExp("hsva"+I),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function U(e){return!!W.CSS_UNIT.exec(e)}e.exports?e.exports=d:void 0===(r=function(){return d}.call(t,n,t,e))||(e.exports=r)}(Math)},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.scriptUrl,n=e.extraCommonProps,r=void 0===n?{}:n;if("undefined"!=typeof document&&"undefined"!=typeof window&&"function"==typeof document.createElement&&"string"==typeof t&&t.length&&!s.has(t)){var o=document.createElement("script");o.setAttribute("src",t),o.setAttribute("data-namespace",t),s.add(t),document.body.appendChild(o)}var c=function(e){var t=e.type,n=e.children,o=u(e,["type","children"]),c=null;return e.type&&(c=a.createElement("use",{xlinkHref:"#".concat(t)})),n&&(c=n),a.createElement(i.default,l({},r,o),c)};return c.displayName="Iconfont",c};var o,a=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=c();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}n.default=e,t&&t.set(e,n);return n}(n(0)),i=(o=n(34))&&o.__esModule?o:{default:o};function c(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return c=function(){return e},e}function l(){return(l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var u=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},s=new Set},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getThemeFromTypeName=function(e){var t=null;a.test(e)?t="filled":i.test(e)?t="outlined":c.test(e)&&(t="twoTone");return t},t.removeTypeTheme=function(e){return e.replace(a,"").replace(i,"").replace(c,"")},t.withThemeSuffix=function(e,t){var n=e;"filled"===t?n+="-fill":"outlined"===t?n+="-o":"twoTone"===t?n+="-twotone":(0,o.default)(!1,"Icon","This icon '".concat(e,"' has unknown theme '").concat(t,"'"));return n},t.alias=function(e){var t=e;switch(e){case"cross":t="close";break;case"interation":t="interaction";break;case"canlendar":t="calendar";break;case"colum-height":t="column-height"}return(0,o.default)(t===e,"Icon","Icon '".concat(e,"' was a typo and is now deprecated, please use '").concat(t,"' instead.")),t},t.svgBaseProps=void 0;var r,o=(r=n(56))&&r.__esModule?r:{default:r};t.svgBaseProps={width:"1em",height:"1em",fill:"currentColor","aria-hidden":!0,focusable:"false"};var a=/-fill$/,i=/-o$/,c=/-twotone$/},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=((r=n(203))&&r.__esModule?r:{default:r}).default;t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={items_per_page:"/ page",jump_to:"Go to",jump_to_confirm:"confirm",page:"",prev_page:"Previous Page",next_page:"Next Page",prev_5:"Previous 5 Pages",next_5:"Next 5 Pages",prev_3:"Previous 3 Pages",next_3:"Next 3 Pages"},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default={today:"Today",now:"Now",backToToday:"Back to today",ok:"Ok",clear:"Clear",month:"Month",year:"Year",timeSelect:"select time",dateSelect:"select date",weekSelect:"Choose a week",monthSelect:"Choose a month",yearSelect:"Choose a year",decadeSelect:"Choose a decade",yearFormat:"YYYY",dateFormat:"M/D/YYYY",dayFormat:"D",dateTimeFormat:"M/D/YYYY HH:mm:ss",monthBeforeYear:!0,previousMonth:"Previous month (PageUp)",nextMonth:"Next month (PageDown)",previousYear:"Last year (Control + left)",nextYear:"Next year (Control + right)",previousDecade:"Last decade",nextDecade:"Next decade",previousCentury:"Last century",nextCentury:"Next century"},e.exports=t.default},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=((r=n(204))&&r.__esModule?r:{default:r}).default;t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setTwoToneColor=function(e){return o.default.setTwoToneColors({primaryColor:e})},t.getTwoToneColor=function(){return o.default.getTwoToneColors().primaryColor};var r,o=(r=n(409))&&r.__esModule?r:{default:r}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.ANT_MARK=void 0;var r=f(n(0)),o=f(n(3)),a=f(n(4)),i=u(n(498)),c=n(144),l=u(n(56));function u(e){return e&&e.__esModule?e:{default:e}}function s(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return s=function(){return e},e}function f(e){if(e&&e.__esModule)return e;if(null===e||"object"!==d(e)&&"function"!=typeof e)return{default:e};var t=s();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function d(e){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function h(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function m(e,t){return(m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function v(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=_(e);if(t){var o=_(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return y(this,n)}}function y(e,t){return!t||"object"!==d(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _(e){return(_=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function b(e){e&&e.locale?(0,i.default)(a).locale(e.locale):(0,i.default)(a).locale("en")}t.ANT_MARK="internalMark";var g=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&m(e,t)}(a,e);var t,n,r,o=v(a);function a(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,a),t=o.call(this,e),b(e.locale),(0,c.changeConfirmLocale)(e.locale&&e.locale.Modal),(0,l.default)("internalMark"===e._ANT_MARK__,"LocaleProvider","`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead: http://u.ant.design/locale"),t}return t=a,(n=[{key:"getChildContext",value:function(){return{antLocale:p(p({},this.props.locale),{exist:!0})}}},{key:"componentDidUpdate",value:function(e){var t=this.props.locale;e.locale!==t&&(b(t),(0,c.changeConfirmLocale)(t&&t.Modal))}},{key:"componentWillUnmount",value:function(){(0,c.changeConfirmLocale)()}},{key:"render",value:function(){return this.props.children}}])&&h(t.prototype,n),r&&h(t,r),a}(r.Component);t.default=g,g.propTypes={locale:o.object},g.defaultProps={locale:{}},g.childContextTypes={antLocale:o.object}},function(e,t,n){var r={"./af":206,"./af.js":206,"./ar":207,"./ar-dz":208,"./ar-dz.js":208,"./ar-kw":209,"./ar-kw.js":209,"./ar-ly":210,"./ar-ly.js":210,"./ar-ma":211,"./ar-ma.js":211,"./ar-sa":212,"./ar-sa.js":212,"./ar-tn":213,"./ar-tn.js":213,"./ar.js":207,"./az":214,"./az.js":214,"./be":215,"./be.js":215,"./bg":216,"./bg.js":216,"./bm":217,"./bm.js":217,"./bn":218,"./bn.js":218,"./bo":219,"./bo.js":219,"./br":220,"./br.js":220,"./bs":221,"./bs.js":221,"./ca":222,"./ca.js":222,"./cs":223,"./cs.js":223,"./cv":224,"./cv.js":224,"./cy":225,"./cy.js":225,"./da":226,"./da.js":226,"./de":227,"./de-at":228,"./de-at.js":228,"./de-ch":229,"./de-ch.js":229,"./de.js":227,"./dv":230,"./dv.js":230,"./el":231,"./el.js":231,"./en-au":232,"./en-au.js":232,"./en-ca":233,"./en-ca.js":233,"./en-gb":234,"./en-gb.js":234,"./en-ie":235,"./en-ie.js":235,"./en-il":236,"./en-il.js":236,"./en-in":237,"./en-in.js":237,"./en-nz":238,"./en-nz.js":238,"./en-sg":239,"./en-sg.js":239,"./eo":240,"./eo.js":240,"./es":241,"./es-do":242,"./es-do.js":242,"./es-us":243,"./es-us.js":243,"./es.js":241,"./et":244,"./et.js":244,"./eu":245,"./eu.js":245,"./fa":246,"./fa.js":246,"./fi":247,"./fi.js":247,"./fil":248,"./fil.js":248,"./fo":249,"./fo.js":249,"./fr":250,"./fr-ca":251,"./fr-ca.js":251,"./fr-ch":252,"./fr-ch.js":252,"./fr.js":250,"./fy":253,"./fy.js":253,"./ga":254,"./ga.js":254,"./gd":255,"./gd.js":255,"./gl":256,"./gl.js":256,"./gom-deva":257,"./gom-deva.js":257,"./gom-latn":258,"./gom-latn.js":258,"./gu":259,"./gu.js":259,"./he":260,"./he.js":260,"./hi":261,"./hi.js":261,"./hr":262,"./hr.js":262,"./hu":263,"./hu.js":263,"./hy-am":264,"./hy-am.js":264,"./id":265,"./id.js":265,"./is":266,"./is.js":266,"./it":267,"./it-ch":268,"./it-ch.js":268,"./it.js":267,"./ja":269,"./ja.js":269,"./jv":270,"./jv.js":270,"./ka":271,"./ka.js":271,"./kk":272,"./kk.js":272,"./km":273,"./km.js":273,"./kn":274,"./kn.js":274,"./ko":275,"./ko.js":275,"./ku":276,"./ku.js":276,"./ky":277,"./ky.js":277,"./lb":278,"./lb.js":278,"./lo":279,"./lo.js":279,"./lt":280,"./lt.js":280,"./lv":281,"./lv.js":281,"./me":282,"./me.js":282,"./mi":283,"./mi.js":283,"./mk":284,"./mk.js":284,"./ml":285,"./ml.js":285,"./mn":286,"./mn.js":286,"./mr":287,"./mr.js":287,"./ms":288,"./ms-my":289,"./ms-my.js":289,"./ms.js":288,"./mt":290,"./mt.js":290,"./my":291,"./my.js":291,"./nb":292,"./nb.js":292,"./ne":293,"./ne.js":293,"./nl":294,"./nl-be":295,"./nl-be.js":295,"./nl.js":294,"./nn":296,"./nn.js":296,"./oc-lnc":297,"./oc-lnc.js":297,"./pa-in":298,"./pa-in.js":298,"./pl":299,"./pl.js":299,"./pt":300,"./pt-br":301,"./pt-br.js":301,"./pt.js":300,"./ro":302,"./ro.js":302,"./ru":303,"./ru.js":303,"./sd":304,"./sd.js":304,"./se":305,"./se.js":305,"./si":306,"./si.js":306,"./sk":307,"./sk.js":307,"./sl":308,"./sl.js":308,"./sq":309,"./sq.js":309,"./sr":310,"./sr-cyrl":311,"./sr-cyrl.js":311,"./sr.js":310,"./ss":312,"./ss.js":312,"./sv":313,"./sv.js":313,"./sw":314,"./sw.js":314,"./ta":315,"./ta.js":315,"./te":316,"./te.js":316,"./tet":317,"./tet.js":317,"./tg":318,"./tg.js":318,"./th":319,"./th.js":319,"./tk":320,"./tk.js":320,"./tl-ph":321,"./tl-ph.js":321,"./tlh":322,"./tlh.js":322,"./tr":323,"./tr.js":323,"./tzl":324,"./tzl.js":324,"./tzm":325,"./tzm-latn":326,"./tzm-latn.js":326,"./tzm.js":325,"./ug-cn":327,"./ug-cn.js":327,"./uk":328,"./uk.js":328,"./ur":329,"./ur.js":329,"./uz":330,"./uz-latn":331,"./uz-latn.js":331,"./uz.js":330,"./vi":332,"./vi.js":332,"./x-pseudo":333,"./x-pseudo.js":333,"./yo":334,"./yo.js":334,"./zh-cn":335,"./zh-cn.js":335,"./zh-hk":336,"./zh-hk.js":336,"./zh-mo":337,"./zh-mo.js":337,"./zh-tw":338,"./zh-tw.js":338};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=497},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return e.default||e}},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.withConfigConsumer=function(e){return function(t){var n=function(n){return o.createElement(f,null,(function(r){var a=e.prefixCls,i=(0,r.getPrefixCls)(a,n.prefixCls);return o.createElement(t,u({},r,n,{prefixCls:i}))}))},r=t.constructor,a=r&&r.displayName||t.name||"Component";return n.displayName="withConfigConsumer(".concat(a,")"),n}},t.ConfigConsumer=t.ConfigContext=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=l();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}n.default=e,t&&t.set(e,n);return n}(n(0)),a=c(n(145)),i=c(n(502));function c(e){return e&&e.__esModule?e:{default:e}}function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function u(){return(u=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var s=(0,a.default)({getPrefixCls:function(e,t){return t||"ant-".concat(e)},renderEmpty:i.default});t.ConfigContext=s;var f=s.Consumer;t.ConfigConsumer=f},function(e,t,n){"use strict";t.__esModule=!0;var r=n(0),o=(i(r),i(n(3))),a=i(n(501));i(n(146));function i(e){return e&&e.__esModule?e:{default:e}}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){var t=[];return{on:function(e){t.push(e)},off:function(e){t=t.filter((function(t){return t!==e}))},get:function(){return e},set:function(n,r){e=n,t.forEach((function(t){return t(e,r)}))}}}t.default=function(e,t){var n,i,f="__create-react-context-"+(0,a.default)()+"__",d=function(e){function n(){var t,r;c(this,n);for(var o=arguments.length,a=Array(o),i=0;i<o;i++)a[i]=arguments[i];return t=r=l(this,e.call.apply(e,[this].concat(a))),r.emitter=s(r.props.value),l(r,t)}return u(n,e),n.prototype.getChildContext=function(){var e;return(e={})[f]=this.emitter,e},n.prototype.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n=this.props.value,r=e.value,o=void 0;((a=n)===(i=r)?0!==a||1/a==1/i:a!=a&&i!=i)?o=0:(o="function"==typeof t?t(n,r):1073741823,0!==(o|=0)&&this.emitter.set(e.value,o))}var a,i},n.prototype.render=function(){return this.props.children},n}(r.Component);d.childContextTypes=((n={})[f]=o.default.object.isRequired,n);var p=function(t){function n(){var e,r;c(this,n);for(var o=arguments.length,a=Array(o),i=0;i<o;i++)a[i]=arguments[i];return e=r=l(this,t.call.apply(t,[this].concat(a))),r.state={value:r.getValue()},r.onUpdate=function(e,t){0!=((0|r.observedBits)&t)&&r.setState({value:r.getValue()})},l(r,e)}return u(n,t),n.prototype.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?1073741823:t},n.prototype.componentDidMount=function(){this.context[f]&&this.context[f].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?1073741823:e},n.prototype.componentWillUnmount=function(){this.context[f]&&this.context[f].off(this.onUpdate)},n.prototype.getValue=function(){return this.context[f]?this.context[f].get():e},n.prototype.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(r.Component);return p.contextTypes=((i={})[f]=o.default.object,i),{Provider:d,Consumer:p}},e.exports=t.default},function(e,t,n){"use strict";(function(t){var n="__global_unique_id__";e.exports=function(){return t[n]=(t[n]||0)+1}}).call(this,n(74))},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o,a=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=l();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}n.default=e,t&&t.set(e,n);return n}(n(0)),i=(o=n(503))&&o.__esModule?o:{default:o},c=n(32);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}var u=function(e){return a.createElement(c.ConfigConsumer,null,(function(t){var n=(0,t.getPrefixCls)("empty");switch(e){case"Table":case"List":return a.createElement(i.default,{image:i.default.PRESENTED_IMAGE_SIMPLE});case"Select":case"TreeSelect":case"Cascader":case"Transfer":case"Mentions":return a.createElement(i.default,{image:i.default.PRESENTED_IMAGE_SIMPLE,className:"".concat(n,"-small")});default:return a.createElement(i.default,null)}}))};t.default=u},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=f();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}n.default=e,t&&t.set(e,n);return n}(n(0)),a=s(n(2)),i=n(32),c=s(n(107)),l=s(n(504)),u=s(n(505));function s(e){return e&&e.__esModule?e:{default:e}}function f(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return f=function(){return e},e}function d(){return(d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var p=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},h=o.createElement(l.default,null),m=o.createElement(u.default,null),v=function(e){return o.createElement(i.ConfigConsumer,null,(function(t){var n=t.getPrefixCls,r=e.className,i=e.prefixCls,l=e.image,u=void 0===l?h:l,s=e.description,f=e.children,v=e.imageStyle,y=p(e,["className","prefixCls","image","description","children","imageStyle"]);return o.createElement(c.default,{componentName:"Empty"},(function(e){var t,c,l,p=n("empty",i),h=void 0!==s?s:e.description,_="string"==typeof h?h:"empty",b=null;return b="string"==typeof u?o.createElement("img",{alt:_,src:u}):u,o.createElement("div",d({className:(0,a.default)(p,(t={},c="".concat(p,"-normal"),l=u===m,c in t?Object.defineProperty(t,c,{value:l,enumerable:!0,configurable:!0,writable:!0}):t[c]=l,t),r)},y),o.createElement("div",{className:"".concat(p,"-image"),style:v},b),h&&o.createElement("p",{className:"".concat(p,"-description")},h),f&&o.createElement("div",{className:"".concat(p,"-footer")},f))}))}))};v.PRESENTED_IMAGE_DEFAULT=h,v.PRESENTED_IMAGE_SIMPLE=m;var y=v;t.default=y},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=a();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var c=o?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(n,i,c):n[i]=e[i]}n.default=e,t&&t.set(e,n);return n}(n(0));function a(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return a=function(){return e},e}var i=function(){return o.createElement("svg",{width:"184",height:"152",viewBox:"0 0 184 152",xmlns:"http://www.w3.org/2000/svg"},o.createElement("g",{fill:"none",fillRule:"evenodd"},o.createElement("g",{transform:"translate(24 31.67)"},o.createElement("ellipse",{fillOpacity:".8",fill:"#F5F5F7",cx:"67.797",cy:"106.89",rx:"67.797",ry:"12.668"}),o.createElement("path",{d:"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z",fill:"#AEB8C2"}),o.createElement("path",{d:"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",fill:"url(#linearGradient-1)",transform:"translate(13.56)"}),o.createElement("path",{d:"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z",fill:"#F5F5F7"}),o.createElement("path",{d:"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z",fill:"#DCE0E6"})),o.createElement("path",{d:"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z",fill:"#DCE0E6"}),o.createElement("g",{transform:"translate(149.65 15.383)",fill:"#FFF"},o.createElement("ellipse",{cx:"20.654",cy:"3.167",rx:"2.849",ry:"2.815"}),o.createElement("path",{d:"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z"}))))};t.default=i},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=a();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var c=o?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(n,i,c):n[i]=e[i]}n.default=e,t&&t.set(e,n);return n}(n(0));function a(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return a=function(){return e},e}var i=function(){return o.createElement("svg",{width:"64",height:"41",viewBox:"0 0 64 41",xmlns:"http://www.w3.org/2000/svg"},o.createElement("g",{transform:"translate(0 1)",fill:"none",fillRule:"evenodd"},o.createElement("ellipse",{fill:"#F5F5F5",cx:"32",cy:"33",rx:"32",ry:"7"}),o.createElement("g",{fillRule:"nonzero",stroke:"#D9D9D9"},o.createElement("path",{d:"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"}),o.createElement("path",{d:"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",fill:"#FAFAFA"}))))};t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return Object.keys(e).reduce((function(t,n){return"data-"!==n.substr(0,5)&&"aria-"!==n.substr(0,5)&&"role"!==n||"data-__"===n.substr(0,7)||(t[n]=e[n]),t}),{})}},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(8)),i=r(n(13)),c=r(n(25)),l=r(n(12)),u=P(n(0)),s=r(n(2)),f=r(n(77)),d=P(n(405)),p=n(513),h=n(349),m=r(n(535)),v=r(n(592)),y=n(156),_=P(n(615)),b=r(n(616)),g=P(n(617)),M=P(n(645)),w=P(n(652)),O=r(n(726)),k=r(n(727)),L=r(n(728)),x=r(n(731)),z=r(n(97)),S=r(n(732)),C=r(n(733)),j=r(n(68)),E=r(n(367));function T(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(T=function(e){return e?n:t})(e)}function P(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=T(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}return r.default=e,n&&n.set(e,r),r}var H=[];function D(e){var t,n=e.prefixCls,r=e.className,o=e.style,S=e.size,C=e.bordered,T=e.dropdownPrefixCls,P=e.dataSource,D=e.pagination,Y=e.rowSelection,V=e.rowKey,N=e.rowClassName,F=e.columns,A=e.children,R=e.childrenColumnName,I=e.onChange,W=e.getPopupContainer,U=e.loading,K=e.expandIcon,B=e.expandable,q=e.expandedRowRender,$=e.expandIconColumnIndex,G=e.indentSize,J=e.scroll,Q=e.sortDirections,X=e.locale,Z=e.showSorterTooltip,ee=void 0===Z||Z;(0,j.default)(!("function"==typeof V&&V.length>1),"Table","`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected.");var te=(0,E.default)(),ne=u.useMemo((function(){var e=new Set(Object.keys(te).filter((function(e){return te[e]})));return(F||(0,h.convertChildrenToColumns)(A)).filter((function(t){return!t.responsive||t.responsive.some((function(t){return e.has(t)}))}))}),[A,F,te]),re=(0,f.default)(e,["className","style","columns"]),oe=u.useContext(z.default),ae=u.useContext(y.ConfigContext),ie=ae.locale,ce=void 0===ie?x.default:ie,le=ae.renderEmpty,ue=ae.direction,se=S||oe,fe=(0,l.default)((0,l.default)({},ce.Table),X),de=P||H,pe=u.useContext(y.ConfigContext).getPrefixCls,he=pe("table",n),me=pe("dropdown",T),ve=(0,l.default)({childrenColumnName:R,expandIconColumnIndex:$},B),ye=ve.childrenColumnName,_e=void 0===ye?"children":ye,be=u.useMemo((function(){return de.some((function(e){var t;return null===(t=e)||void 0===t?void 0:t[_e]}))?"nest":q||B&&B.expandedRowRender?"row":null}),[de]),ge={body:u.useRef()},Me=u.useMemo((function(){return"function"==typeof V?V:function(e){var t;return null===(t=e)||void 0===t?void 0:t[V]}}),[V]),we=(0,b.default)(de,_e,Me),Oe=(0,c.default)(we,1)[0],ke={},Le=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=(0,l.default)((0,l.default)({},ke),e);n&&(ke.resetPagination(),r.pagination.current&&(r.pagination.current=1),D&&D.onChange&&D.onChange(1,r.pagination.pageSize)),J&&!1!==J.scrollToFirstRowOnChange&&ge.body.current&&(0,L.default)(0,{getContainer:function(){return ge.body.current}}),null==I||I(r.pagination,r.filters,r.sorter,{currentDataSource:(0,w.getFilterData)((0,M.getSortData)(de,r.sorterStates,_e),r.filterStates),action:t})},xe=(0,M.default)({prefixCls:he,mergedColumns:ne,onSorterChange:function(e,t){Le({sorter:e,sorterStates:t},"sort",!1)},sortDirections:Q||["ascend","descend"],tableLocale:fe,showSorterTooltip:ee}),ze=(0,c.default)(xe,4),Se=ze[0],Ce=ze[1],je=ze[2],Ee=ze[3],Te=u.useMemo((function(){return(0,M.getSortData)(de,Ce,_e)}),[de,Ce]);ke.sorter=Ee(),ke.sorterStates=Ce;var Pe=(0,w.default)({prefixCls:he,locale:fe,dropdownPrefixCls:me,mergedColumns:ne,onFilterChange:function(e,t){Le({filters:e,filterStates:t},"filter",!0)},getPopupContainer:W}),He=(0,c.default)(Pe,3),De=He[0],Ye=He[1],Ve=He[2],Ne=(0,w.getFilterData)(Te,Ye);ke.filters=Ve(),ke.filterStates=Ye;var Fe=u.useMemo((function(){return(0,l.default)({},je)}),[je]),Ae=(0,O.default)(Fe),Re=(0,c.default)(Ae,1)[0],Ie=(0,_.default)(Ne.length,D,(function(e,t){Le({pagination:(0,l.default)((0,l.default)({},ke.pagination),{current:e,pageSize:t})},"paginate")})),We=(0,c.default)(Ie,2),Ue=We[0],Ke=We[1];ke.pagination=!1===D?{}:(0,_.getPaginationParam)(D,Ue),ke.resetPagination=Ke;var Be=u.useMemo((function(){if(!1===D||!Ue.pageSize)return Ne;var e=Ue.current,t=void 0===e?1:e,n=Ue.total,r=Ue.pageSize,o=void 0===r?_.DEFAULT_PAGE_SIZE:r;return(0,j.default)(t>0,"Table","`current` should be positive number."),Ne.length<n?Ne.length>o?((0,j.default)(!1,"Table","`dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode."),Ne.slice((t-1)*o,t*o)):Ne:Ne.slice((t-1)*o,t*o)}),[!!D,Ne,Ue&&Ue.current,Ue&&Ue.pageSize,Ue&&Ue.total]),qe=(0,g.default)(Y,{prefixCls:he,data:Ne,pageData:Be,getRowKey:Me,getRecordByKey:Oe,expandType:be,childrenColumnName:_e,locale:fe,expandIconColumnIndex:ve.expandIconColumnIndex,getPopupContainer:W}),$e=(0,c.default)(qe,2),Ge=$e[0],Je=$e[1];ve.__PARENT_RENDER_ICON__=ve.expandIcon,ve.expandIcon=ve.expandIcon||K||(0,k.default)(fe),"nest"===be&&void 0===ve.expandIconColumnIndex?ve.expandIconColumnIndex=Y?1:0:ve.expandIconColumnIndex>0&&Y&&(ve.expandIconColumnIndex-=1),"number"!=typeof ve.indentSize&&(ve.indentSize="number"==typeof G?G:15);var Qe,Xe,Ze,et=u.useCallback((function(e){return Re(Ge(De(Se(e))))}),[Se,De,Ge]);if(!1!==D&&(null==Ue?void 0:Ue.total)){var tt;tt=Ue.size?Ue.size:"small"===se||"middle"===se?"small":void 0;var nt=function(e){return u.createElement(v.default,(0,l.default)({className:"".concat(he,"-pagination ").concat(he,"-pagination-").concat(e)},Ue,{size:tt}))},rt="rtl"===ue?"left":"right",ot=Ue.position;if(null!==ot&&Array.isArray(ot)){var at=ot.find((function(e){return-1!==e.indexOf("top")})),it=ot.find((function(e){return-1!==e.indexOf("bottom")})),ct=ot.every((function(e){return"none"==="".concat(e)}));at||it||ct||(Xe=nt(rt)),at&&(Qe=nt(at.toLowerCase().replace("top",""))),it&&(Xe=nt(it.toLowerCase().replace("bottom","")))}else Xe=nt(rt)}"boolean"==typeof U?Ze={spinning:U}:"object"===(0,a.default)(U)&&(Ze=(0,l.default)({spinning:!0},U));var lt=(0,s.default)("".concat(he,"-wrapper"),(0,i.default)({},"".concat(he,"-wrapper-rtl"),"rtl"===ue),r);return u.createElement("div",{className:lt,style:o},u.createElement(m.default,(0,l.default)({spinning:!1},Ze),Qe,u.createElement(d.default,(0,l.default)({},re,{columns:ne,direction:ue,expandable:ve,prefixCls:he,className:(0,s.default)((t={},(0,i.default)(t,"".concat(he,"-middle"),"middle"===se),(0,i.default)(t,"".concat(he,"-small"),"small"===se),(0,i.default)(t,"".concat(he,"-bordered"),C),(0,i.default)(t,"".concat(he,"-empty"),0===de.length),t)),data:Be,rowKey:Me,rowClassName:function(e,t,n){var r;return r="function"==typeof N?(0,s.default)(N(e,t,n)):(0,s.default)(N),(0,s.default)((0,i.default)({},"".concat(he,"-row-selected"),Je.has(Me(e,t))),r)},emptyText:X&&X.emptyText||le("Table"),internalHooks:p.INTERNAL_HOOKS,internalRefs:ge,transformColumns:et})),Xe))}D.defaultProps={rowKey:"key"},D.SELECTION_ALL=g.SELECTION_ALL,D.SELECTION_INVERT=g.SELECTION_INVERT,D.SELECTION_NONE=g.SELECTION_NONE,D.Column=S.default,D.ColumnGroup=C.default,D.Summary=d.Summary;var Y=D;t.default=Y},function(e,t){e.exports=function(e,t){var n=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null!=n){var r,o,a=[],i=!0,c=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){c=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(c)throw o}}return a}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict"; /** @license React v16.13.1 * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,a=r?Symbol.for("react.portal"):60106,i=r?Symbol.for("react.fragment"):60107,c=r?Symbol.for("react.strict_mode"):60108,l=r?Symbol.for("react.profiler"):60114,u=r?Symbol.for("react.provider"):60109,s=r?Symbol.for("react.context"):60110,f=r?Symbol.for("react.async_mode"):60111,d=r?Symbol.for("react.concurrent_mode"):60111,p=r?Symbol.for("react.forward_ref"):60112,h=r?Symbol.for("react.suspense"):60113,m=r?Symbol.for("react.suspense_list"):60120,v=r?Symbol.for("react.memo"):60115,y=r?Symbol.for("react.lazy"):60116,_=r?Symbol.for("react.block"):60121,b=r?Symbol.for("react.fundamental"):60117,g=r?Symbol.for("react.responder"):60118,M=r?Symbol.for("react.scope"):60119;function w(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case f:case d:case i:case l:case c:case h:return e;default:switch(e=e&&e.$$typeof){case s:case p:case y:case v:case u:return e;default:return t}}case a:return t}}}function O(e){return w(e)===d}t.AsyncMode=f,t.ConcurrentMode=d,t.ContextConsumer=s,t.ContextProvider=u,t.Element=o,t.ForwardRef=p,t.Fragment=i,t.Lazy=y,t.Memo=v,t.Portal=a,t.Profiler=l,t.StrictMode=c,t.Suspense=h,t.isAsyncMode=function(e){return O(e)||w(e)===f},t.isConcurrentMode=O,t.isContextConsumer=function(e){return w(e)===s},t.isContextProvider=function(e){return w(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return w(e)===p},t.isFragment=function(e){return w(e)===i},t.isLazy=function(e){return w(e)===y},t.isMemo=function(e){return w(e)===v},t.isPortal=function(e){return w(e)===a},t.isProfiler=function(e){return w(e)===l},t.isStrictMode=function(e){return w(e)===c},t.isSuspense=function(e){return w(e)===h},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===i||e===d||e===l||e===c||e===h||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===y||e.$$typeof===v||e.$$typeof===u||e.$$typeof===s||e.$$typeof===p||e.$$typeof===b||e.$$typeof===g||e.$$typeof===M||e.$$typeof===_)},t.typeOf=w},function(e,t,n){"use strict"; /** @license React v16.13.1 * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,a=r?Symbol.for("react.portal"):60106,i=r?Symbol.for("react.fragment"):60107,c=r?Symbol.for("react.strict_mode"):60108,l=r?Symbol.for("react.profiler"):60114,u=r?Symbol.for("react.provider"):60109,s=r?Symbol.for("react.context"):60110,f=r?Symbol.for("react.async_mode"):60111,d=r?Symbol.for("react.concurrent_mode"):60111,p=r?Symbol.for("react.forward_ref"):60112,h=r?Symbol.for("react.suspense"):60113,m=r?Symbol.for("react.suspense_list"):60120,v=r?Symbol.for("react.memo"):60115,y=r?Symbol.for("react.lazy"):60116,_=r?Symbol.for("react.block"):60121,b=r?Symbol.for("react.fundamental"):60117,g=r?Symbol.for("react.responder"):60118,M=r?Symbol.for("react.scope"):60119;function w(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case f:case d:case i:case l:case c:case h:return e;default:switch(e=e&&e.$$typeof){case s:case p:case y:case v:case u:return e;default:return t}}case a:return t}}}function O(e){return w(e)===d}t.AsyncMode=f,t.ConcurrentMode=d,t.ContextConsumer=s,t.ContextProvider=u,t.Element=o,t.ForwardRef=p,t.Fragment=i,t.Lazy=y,t.Memo=v,t.Portal=a,t.Profiler=l,t.StrictMode=c,t.Suspense=h,t.isAsyncMode=function(e){return O(e)||w(e)===f},t.isConcurrentMode=O,t.isContextConsumer=function(e){return w(e)===s},t.isContextProvider=function(e){return w(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return w(e)===p},t.isFragment=function(e){return w(e)===i},t.isLazy=function(e){return w(e)===y},t.isMemo=function(e){return w(e)===v},t.isPortal=function(e){return w(e)===a},t.isProfiler=function(e){return w(e)===l},t.isStrictMode=function(e){return w(e)===c},t.isSuspense=function(e){return w(e)===h},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===i||e===d||e===l||e===c||e===h||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===y||e.$$typeof===v||e.$$typeof===u||e.$$typeof===s||e.$$typeof===p||e.$$typeof===b||e.$$typeof===g||e.$$typeof===M||e.$$typeof===_)},t.typeOf=w},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.INTERNAL_HOOKS=void 0;var a=o(n(13)),i=o(n(12)),c=o(n(45)),l=o(n(46)),u=o(n(8)),s=o(n(25)),f=r(n(0)),d=o(n(516)),p=o(n(2)),h=o(n(35)),m=o(n(67)),v=o(n(41)),y=o(n(343)),_=o(n(517)),b=o(n(518)),g=o(n(519)),M=o(n(344)),w=o(n(51)),O=o(n(149)),k=o(n(522)),L=o(n(349)),x=n(350),z=n(94),S=o(n(348)),C=o(n(525)),j=o(n(346)),E=n(148),T=o(n(526)),P=r(n(527)),H=n(530),D=n(345),Y=o(n(531)),V=o(n(534)),N=[],F={};t.INTERNAL_HOOKS="rc-table-internal-hook";var A=f.memo((function(e){return e.children}),(function(e,t){return!!(0,h.default)(e.props,t.props)&&(e.pingLeft!==t.pingLeft||e.pingRight!==t.pingRight)}));function R(e){var t,n=e.prefixCls,r=e.className,o=e.rowClassName,h=e.style,_=e.data,b=e.rowKey,R=e.scroll,I=e.tableLayout,W=e.direction,U=e.title,K=e.footer,B=e.summary,q=e.id,$=e.showHeader,G=e.components,J=e.emptyText,Q=e.onRow,X=e.onHeaderRow,Z=e.internalHooks,ee=e.transformColumns,te=e.internalRefs,ne=e.sticky,re=_||N,oe=!!re.length,ae=f.useState(0),ie=(0,s.default)(ae,2),ce=ie[0],le=ie[1];f.useEffect((function(){le((0,y.default)())}));var ue,se,fe,de=f.useMemo((function(){return(0,z.mergeObject)(G,{})}),[G]),pe=f.useCallback((function(e,t){return(0,z.getPathValue)(de,e)||t}),[de]),he=f.useMemo((function(){return"function"==typeof b?b:function(e){return e&&e[b]}}),[b]),me=(0,E.getExpandableProps)(e),ve=me.expandIcon,ye=me.expandedRowKeys,_e=me.defaultExpandedRowKeys,be=me.defaultExpandAllRows,ge=me.expandedRowRender,Me=me.onExpand,we=me.onExpandedRowsChange,Oe=me.expandRowByClick,ke=me.rowExpandable,Le=me.expandIconColumnIndex,xe=me.expandedRowClassName,ze=me.childrenColumnName,Se=me.indentSize,Ce=ve||H.renderExpandIcon,je=ze||"children",Ee=f.useMemo((function(){return ge?"row":!!(e.expandable&&"rc-table-internal-hook"===Z&&e.expandable.__PARENT_RENDER_ICON__||re.some((function(e){return e&&"object"===(0,u.default)(e)&&e[je]})))&&"nest"}),[!!ge,re]),Te=f.useState((function(){return _e||(be?(0,H.findAllChildrenKeys)(re,he,je):[])})),Pe=(0,s.default)(Te,2),He=Pe[0],De=Pe[1],Ye=f.useMemo((function(){return new Set(ye||He||[])}),[ye,He]),Ve=f.useCallback((function(e){var t,n=he(e,re.indexOf(e)),r=Ye.has(n);r?(Ye.delete(n),t=(0,l.default)(Ye)):t=[].concat((0,l.default)(Ye),[n]),De(t),Me&&Me(!r,e),we&&we(t)}),[he,Ye,re,Me,we]),Ne=f.useState(0),Fe=(0,s.default)(Ne,2),Ae=Fe[0],Re=Fe[1],Ie=(0,L.default)((0,c.default)((0,c.default)((0,c.default)({},e),me),{},{expandable:!!ge,expandedKeys:Ye,getRowKey:he,onTriggerExpand:Ve,expandIcon:Ce,expandIconColumnIndex:Le,direction:W}),"rc-table-internal-hook"===Z?ee:null),We=(0,s.default)(Ie,2),Ue=We[0],Ke=We[1],Be=f.useMemo((function(){return{columns:Ue,flattenColumns:Ke}}),[Ue,Ke]),qe=f.useRef(),$e=f.useRef(),Ge=f.useRef(),Je=f.useState(!1),Qe=(0,s.default)(Je,2),Xe=Qe[0],Ze=Qe[1],et=f.useState(!1),tt=(0,s.default)(et,2),nt=tt[0],rt=tt[1],ot=(0,x.useLayoutState)(new Map),at=(0,s.default)(ot,2),it=at[0],ct=at[1],lt=(0,z.getColumnsKey)(Ke).map((function(e){return it.get(e)})),ut=f.useMemo((function(){return lt}),[lt.join("_")]),st=(0,C.default)(ut,Ke.length,W),ft=R&&(0,z.validateValue)(R.y),dt=R&&(0,z.validateValue)(R.x),pt=dt&&Ke.some((function(e){return e.fixed})),ht=f.useRef(),mt=(0,V.default)(ne,n),vt=mt.isSticky,yt=mt.offsetHeader,_t=mt.offsetScroll,bt=mt.stickyClassName,gt=mt.container;ft&&(se={overflowY:"scroll",maxHeight:R.y}),dt&&(ue={overflowX:"auto"},ft||(se={overflowY:"hidden"}),fe={width:!0===R.x?"auto":R.x,minWidth:"100%"});var Mt=f.useCallback((function(e,t){(0,d.default)(qe.current)&&ct((function(n){if(n.get(e)!==t){var r=new Map(n);return r.set(e,t),r}return n}))}),[]),wt=(0,x.useTimeoutLock)(null),Ot=(0,s.default)(wt,2),kt=Ot[0],Lt=Ot[1];function xt(e,t){t&&("function"==typeof t?t(e):t.scrollLeft!==e&&(t.scrollLeft=e))}var zt=function(e){var t,n=e.currentTarget,r=e.scrollLeft,o="rtl"===W,a="number"==typeof r?r:n.scrollLeft,i=n||F;Lt()&&Lt()!==i||(kt(i),xt(a,$e.current),xt(a,Ge.current),xt(a,null===(t=ht.current)||void 0===t?void 0:t.setScrollLeft));if(n){var c=n.scrollWidth,l=n.clientWidth;o?(Ze(-a<c-l),rt(-a>0)):(Ze(a>0),rt(a<c-l))}},St=function(){Ge.current&&zt({currentTarget:Ge.current})};f.useEffect((function(){return St}),[]),f.useEffect((function(){dt&&St()}),[dt]),f.useEffect((function(){"rc-table-internal-hook"===Z&&te&&(te.body.current=Ge.current)}));var Ct,jt,Et=pe(["table"],"table"),Tt=f.useMemo((function(){return I||(pt?"max-content"===R.x?"auto":"fixed":ft||vt||Ke.some((function(e){return e.ellipsis}))?"fixed":"auto")}),[ft,pt,Ke,I,vt]),Pt={colWidths:ut,columCount:Ke.length,stickyOffsets:st,onHeaderRow:X,fixHeader:ft,scroll:R},Ht=f.useMemo((function(){return oe?null:"function"==typeof J?J():J}),[oe,J]),Dt=f.createElement(k.default,{data:re,measureColumnWidth:ft||dt||vt,expandedKeys:Ye,rowExpandable:ke,getRowKey:he,onRow:Q,emptyNode:Ht,childrenColumnName:je}),Yt=f.createElement(j.default,{colWidths:Ke.map((function(e){return e.width})),columns:Ke}),Vt=B&&f.createElement(P.default,null,B(re)),Nt=pe(["body"]);ft||vt?("function"==typeof Nt?(jt=Nt(re,{scrollbarSize:ce,ref:Ge,onScroll:zt}),Pt.colWidths=Ke.map((function(e,t){var n=e.width,r=t===Ue.length-1?n-ce:n;return"number"!=typeof r||Number.isNaN(r)?((0,m.default)(!1,"When use `components.body` with render props. Each column should have a fixed `width` value."),0):r}))):jt=f.createElement("div",{style:(0,c.default)((0,c.default)({},ue),se),onScroll:zt,ref:Ge,className:(0,p.default)("".concat(n,"-body"))},f.createElement(Et,{style:(0,c.default)((0,c.default)({},fe),{},{tableLayout:Tt})},Yt,Dt,Vt)),Ct=f.createElement(f.Fragment,null,!1!==$&&f.createElement(g.default,(0,i.default)({noData:!re.length,maxContentScroll:dt&&"max-content"===R.x},Pt,Be,{direction:W,offsetHeader:yt,stickyClassName:bt,ref:$e,onScroll:zt})),jt,vt&&f.createElement(Y.default,{ref:ht,offsetScroll:_t,scrollBodyRef:Ge,onScroll:zt,container:gt}))):Ct=f.createElement("div",{style:(0,c.default)((0,c.default)({},ue),se),className:(0,p.default)("".concat(n,"-content")),onScroll:zt,ref:Ge},f.createElement(Et,{style:(0,c.default)((0,c.default)({},fe),{},{tableLayout:Tt})},Yt,!1!==$&&f.createElement(M.default,(0,i.default)({},Pt,Be)),Dt,Vt));var Ft=(0,E.getDataAndAriaProps)(e),At=f.createElement("div",(0,i.default)({className:(0,p.default)(n,r,(t={},(0,a.default)(t,"".concat(n,"-rtl"),"rtl"===W),(0,a.default)(t,"".concat(n,"-ping-left"),Xe),(0,a.default)(t,"".concat(n,"-ping-right"),nt),(0,a.default)(t,"".concat(n,"-layout-fixed"),"fixed"===I),(0,a.default)(t,"".concat(n,"-fixed-header"),ft),(0,a.default)(t,"".concat(n,"-fixed-column"),pt),(0,a.default)(t,"".concat(n,"-scroll-horizontal"),dt),(0,a.default)(t,"".concat(n,"-has-fix-left"),Ke[0]&&Ke[0].fixed),(0,a.default)(t,"".concat(n,"-has-fix-right"),Ke[Ke.length-1]&&"right"===Ke[Ke.length-1].fixed),t)),style:h,id:q,ref:qe},Ft),f.createElement(A,{pingLeft:Xe,pingRight:nt,props:(0,c.default)((0,c.default)({},e),{},{stickyOffsets:st,mergedExpandedKeys:Ye})},U&&f.createElement(T.default,{className:"".concat(n,"-title")},U(re)),f.createElement("div",{className:"".concat(n,"-container")},Ct),K&&f.createElement(T.default,{className:"".concat(n,"-footer")},K(re))));dt&&(At=f.createElement(v.default,{onResize:function(e){var t=e.width;St(),Re(qe.current?qe.current.offsetWidth:t)}},At));var Rt=f.useMemo((function(){return{prefixCls:n,getComponent:pe,scrollbarSize:ce,direction:W,fixedInfoList:Ke.map((function(e,t){return(0,D.getCellFixedInfo)(t,t,Ke,st,W)})),isSticky:vt}}),[n,pe,ce,W,Ke,st,W,vt]),It=f.useMemo((function(){return(0,c.default)((0,c.default)({},Be),{},{tableLayout:Tt,rowClassName:o,expandedRowClassName:xe,componentWidth:Ae,fixHeader:ft,fixColumn:pt,horizonScroll:dt,expandIcon:Ce,expandableType:Ee,expandRowByClick:Oe,expandedRowRender:ge,onTriggerExpand:Ve,expandIconColumnIndex:Le,indentSize:Se})}),[Be,Tt,o,xe,Ae,ft,pt,dt,Ce,Ee,Oe,ge,Ve,Le,Se]),Wt=f.useMemo((function(){return{onColumnResize:Mt}}),[Mt]);return f.createElement(w.default.Provider,{value:Rt},f.createElement(O.default.Provider,{value:It},f.createElement(S.default.Provider,{value:Wt},At)))}R.Column=b.default,R.ColumnGroup=_.default,R.Summary=P.FooterComponents,R.defaultProps={rowKey:"key",prefixCls:"rc-table",emptyText:function(){return"No Data"}};var I=R;t.default=I},function(e,t,n){var r=n(340);e.exports=function(e){if(Array.isArray(e))return r(e)},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default=function(e){if(!e)return!1;if(e.offsetParent)return!0;if(e.getBBox){var t=e.getBBox();if(t.width||t.height)return!0}if(e.getBoundingClientRect){var n=e.getBoundingClientRect();if(n.width||n.height)return!0}return!1}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e){return null};t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e){return null};t.default=r},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(12)),i=o(n(13)),c=o(n(45)),l=o(n(46)),u=o(n(57)),s=r(n(0)),f=o(n(2)),d=n(108),p=o(n(344)),h=o(n(346)),m=o(n(51));var v=s.forwardRef((function(e,t){var n=e.noData,r=e.columns,o=e.flattenColumns,v=e.colWidths,y=e.columCount,_=e.stickyOffsets,b=e.direction,g=e.fixHeader,M=e.offsetHeader,w=e.stickyClassName,O=e.onScroll,k=e.maxContentScroll,L=(0,u.default)(e,["noData","columns","flattenColumns","colWidths","columCount","stickyOffsets","direction","fixHeader","offsetHeader","stickyClassName","onScroll","maxContentScroll"]),x=s.useContext(m.default),z=x.prefixCls,S=x.scrollbarSize,C=x.isSticky,j=C&&!g?0:S,E=s.useRef(null),T=s.useCallback((function(e){(0,d.fillRef)(t,e),(0,d.fillRef)(E,e)}),[]);s.useEffect((function(){var e;function t(e){var t=e.currentTarget,n=e.deltaX;n&&(O({currentTarget:t,scrollLeft:t.scrollLeft+n}),e.preventDefault())}return null===(e=E.current)||void 0===e||e.addEventListener("wheel",t),function(){var e;null===(e=E.current)||void 0===e||e.removeEventListener("wheel",t)}}),[]);var P=s.useMemo((function(){return o.every((function(e){return e.width>=0}))}),[o]),H=o[o.length-1],D={fixed:H?H.fixed:null,onHeaderCell:function(){return{className:"".concat(z,"-cell-scrollbar")}}},Y=(0,s.useMemo)((function(){return j?[].concat((0,l.default)(r),[D]):r}),[j,r]),V=(0,s.useMemo)((function(){return j?[].concat((0,l.default)(o),[D]):o}),[j,o]),N=(0,s.useMemo)((function(){var e=_.right,t=_.left;return(0,c.default)((0,c.default)({},_),{},{left:"rtl"===b?[].concat((0,l.default)(t.map((function(e){return e+j}))),[0]):t,right:"rtl"===b?e:[].concat((0,l.default)(e.map((function(e){return e+j}))),[0]),isSticky:C})}),[j,_,C]),F=function(e,t){return(0,s.useMemo)((function(){for(var n=[],r=0;r<t;r+=1){var o=e[r];if(void 0===o)return null;n[r]=o}return n}),[e.join("_"),t])}(v,y);return s.createElement("div",{style:(0,c.default)({overflow:"hidden"},C?{top:M}:{}),ref:T,className:(0,f.default)("".concat(z,"-header"),(0,i.default)({},w,!!w))},s.createElement("table",{style:{tableLayout:"fixed",visibility:n||F?null:"hidden"}},(!n||!k||P)&&s.createElement(h.default,{colWidths:F?[].concat((0,l.default)(F),[j]):[],columCount:y+1,columns:V}),s.createElement(p.default,(0,a.default)({},L,{stickyOffsets:N,columns:Y,flattenColumns:V}))))}));v.displayName="FixedHeader";var y=v;t.default=y},function(e,t){e.exports=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(12)),i=r(n(0)),c=o(n(109)),l=o(n(51)),u=n(345),s=n(94);function f(e){var t,n=e.cells,r=e.stickyOffsets,o=e.flattenColumns,f=e.rowComponent,d=e.cellComponent,p=e.onHeaderRow,h=e.index,m=i.useContext(l.default),v=m.prefixCls,y=m.direction;p&&(t=p(n.map((function(e){return e.column})),h));var _=(0,s.getColumnsKey)(n.map((function(e){return e.column})));return i.createElement(f,t,n.map((function(e,t){var n,l=e.column,s=(0,u.getCellFixedInfo)(e.colStart,e.colEnd,o,r,y);return l&&l.onHeaderCell&&(n=e.column.onHeaderCell(l)),i.createElement(c.default,(0,a.default)({},e,{ellipsis:l.ellipsis,align:l.align,component:d,prefixCls:v,key:_[t]},s,{additionalProps:n,rowType:"header"}))})))}f.displayName="HeaderRow";var d=f;t.default=d},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(523)),c=r(n(51)),l=r(n(347)),u=r(n(149)),s=n(94),f=r(n(348)),d=r(n(524));function p(e){var t=e.data,n=e.getRowKey,r=e.measureColumnWidth,o=e.expandedKeys,p=e.onRow,h=e.rowExpandable,m=e.emptyNode,v=e.childrenColumnName,y=a.useContext(f.default).onColumnResize,_=a.useContext(c.default),b=_.prefixCls,g=_.getComponent,M=a.useContext(u.default),w=M.fixHeader,O=M.horizonScroll,k=M.flattenColumns,L=M.componentWidth;return a.useMemo((function(){var e,c=g(["body","wrapper"],"tbody"),u=g(["body","row"],"tr"),f=g(["body","cell"],"td");e=t.length?t.map((function(e,t){var r=n(e,t);return a.createElement(i.default,{key:r,rowKey:r,record:e,recordKey:r,index:t,rowComponent:u,cellComponent:f,expandedKeys:o,onRow:p,getRowKey:n,rowExpandable:h,childrenColumnName:v})})):a.createElement(l.default,{expanded:!0,className:"".concat(b,"-placeholder"),prefixCls:b,fixHeader:w,fixColumn:O,horizonScroll:O,component:u,componentWidth:L,cellComponent:f,colSpan:k.length},m);var _=(0,s.getColumnsKey)(k);return a.createElement(c,{className:"".concat(b,"-tbody")},r&&a.createElement("tr",{"aria-hidden":"true",className:"".concat(b,"-measure-row"),style:{height:0,fontSize:0}},_.map((function(e){return a.createElement(d.default,{key:e,columnKey:e,onColumnResize:y})}))),e)}),[t,b,p,r,o,n,g,L,m,k])}var h=a.memo(p);h.displayName="Body";var m=h;t.default=m},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(12)),i=o(n(45)),c=o(n(25)),l=r(n(0)),u=o(n(2)),s=o(n(109)),f=o(n(51)),d=o(n(149)),p=n(94),h=o(n(347));function m(e){var t=e.className,n=e.style,r=e.record,o=e.index,v=e.rowKey,y=e.getRowKey,_=e.rowExpandable,b=e.expandedKeys,g=e.onRow,M=e.indent,w=void 0===M?0:M,O=e.rowComponent,k=e.cellComponent,L=e.childrenColumnName,x=l.useContext(f.default),z=x.prefixCls,S=x.fixedInfoList,C=l.useContext(d.default),j=C.fixHeader,E=C.fixColumn,T=C.horizonScroll,P=C.componentWidth,H=C.flattenColumns,D=C.expandableType,Y=C.expandRowByClick,V=C.onTriggerExpand,N=C.rowClassName,F=C.expandedRowClassName,A=C.indentSize,R=C.expandIcon,I=C.expandedRowRender,W=C.expandIconColumnIndex,U=l.useState(!1),K=(0,c.default)(U,2),B=K[0],q=K[1],$=b&&b.has(e.recordKey);l.useEffect((function(){$&&q(!0)}),[$]);var G,J="row"===D&&(!_||_(r)),Q="nest"===D,X=L&&r&&r[L],Z=J||Q;g&&(G=g(r,o));var ee;"string"==typeof N?ee=N:"function"==typeof N&&(ee=N(r,o,w));var te,ne,re=(0,p.getColumnsKey)(H),oe=l.createElement(O,(0,a.default)({},G,{"data-row-key":v,className:(0,u.default)(t,"".concat(z,"-row"),"".concat(z,"-row-level-").concat(w),ee,G&&G.className),style:(0,i.default)((0,i.default)({},n),G?G.style:null),onClick:function(e){if(Y&&Z&&V(r,e),G&&G.onClick){for(var t,n=arguments.length,o=new Array(n>1?n-1:0),a=1;a<n;a++)o[a-1]=arguments[a];(t=G).onClick.apply(t,[e].concat(o))}}}),H.map((function(e,t){var n,i,c=e.render,u=e.dataIndex,f=e.className,d=re[t],p=S[t];return t===(W||0)&&Q&&(n=l.createElement(l.Fragment,null,l.createElement("span",{style:{paddingLeft:"".concat(A*w,"px")},className:"".concat(z,"-row-indent indent-level-").concat(w)}),R({prefixCls:z,expanded:$,expandable:X,record:r,onExpand:V}))),e.onCell&&(i=e.onCell(r,o)),l.createElement(s.default,(0,a.default)({className:f,ellipsis:e.ellipsis,align:e.align,component:k,prefixCls:z,key:d,record:r,index:o,dataIndex:u,render:c,shouldCellUpdate:e.shouldCellUpdate},p,{appendNode:n,additionalProps:i}))})));if(J&&(B||$)){var ae=I(r,o,w+1,$),ie=F&&F(r,o,w);te=l.createElement(h.default,{expanded:$,className:(0,u.default)("".concat(z,"-expanded-row"),"".concat(z,"-expanded-row-level-").concat(w+1),ie),prefixCls:z,fixHeader:j,fixColumn:E,horizonScroll:T,component:O,componentWidth:P,cellComponent:k,colSpan:H.length},ae)}return X&&$&&(ne=(r[L]||[]).map((function(t,n){var r=y(t,n);return l.createElement(m,(0,a.default)({},e,{key:r,rowKey:r,record:t,recordKey:r,index:n,indent:w+1}))}))),l.createElement(l.Fragment,null,oe,te,ne)}m.displayName="BodyRow";var v=m;t.default=v},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.columnKey,n=e.onColumnResize,r=a.useRef();return a.useEffect((function(){r.current&&n(t,r.current.offsetWidth)}),[]),a.createElement(i.default,{onResize:function(e){var r=e.offsetWidth;n(t,r)}},a.createElement("td",{ref:r,style:{padding:0,border:0,height:0}},a.createElement("div",{style:{height:0,overflow:"hidden"}}," ")))};var a=o(n(0)),i=r(n(41))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(0);var o=function(e,t,n){return(0,r.useMemo)((function(){for(var r=[],o=[],a=0,i=0,c=0;c<t;c+=1)if("rtl"===n){o[c]=i,i+=e[c]||0;var l=t-c-1;r[l]=a,a+=e[l]||0}else{r[c]=a,a+=e[c]||0;var u=t-c-1;o[u]=i,i+=e[u]||0}return{left:r,right:o}}),[e,t,n])};t.default=o},function(e,t,n){"use strict";var r=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(0));var a=function(e){var t=e.className,n=e.children;return o.createElement("div",{className:t},n)};t.default=a},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.FooterComponents=t.default=void 0;var a=o(n(0)),i=r(n(51)),c=r(n(528)),l=r(n(529));var u=function(e){var t=e.children,n=a.useContext(i.default).prefixCls;return a.createElement("tfoot",{className:"".concat(n,"-summary")},t)};t.default=u;var s={Cell:c.default,Row:l.default};t.FooterComponents=s},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.className,n=e.index,r=e.children,o=e.colSpan,u=e.rowSpan,s=e.align,f=i.useContext(l.default),d=f.prefixCls,p=f.fixedInfoList[n];return i.createElement(c.default,(0,a.default)({className:t,index:n,component:"td",prefixCls:d,record:null,dataIndex:null,align:s,render:function(){return{children:r,props:{colSpan:o,rowSpan:u}}}},p))};var a=o(n(12)),i=r(n(0)),c=o(n(109)),l=o(n(51))},function(e,t,n){"use strict";var r=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return o.createElement("tr",e)};var o=r(n(0))},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.renderExpandIcon=function(e){var t,n=e.prefixCls,r=e.record,o=e.onExpand,l=e.expanded,u=e.expandable,s="".concat(n,"-row-expand-icon");if(!u)return i.createElement("span",{className:(0,c.default)(s,"".concat(n,"-row-spaced"))});return i.createElement("span",{className:(0,c.default)(s,(t={},(0,a.default)(t,"".concat(n,"-row-expanded"),l),(0,a.default)(t,"".concat(n,"-row-collapsed"),!l),t)),onClick:function(e){o(r,e),e.stopPropagation()}})},t.findAllChildrenKeys=function(e,t,n){var r=[];return function e(o){(o||[]).forEach((function(o,a){r.push(t(o,a)),e(o[n])}))}(e),r};var a=o(n(13)),i=r(n(0)),c=o(n(2))},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(13)),i=o(n(45)),c=o(n(25)),l=r(n(0)),u=o(n(532)),s=o(n(343)),f=o(n(2)),d=n(533),p=o(n(51)),h=n(350),m=function(e,t){var n,r,o=e.scrollBodyRef,m=e.onScroll,v=e.offsetScroll,y=e.container,_=l.useContext(p.default).prefixCls,b=(null===(n=o.current)||void 0===n?void 0:n.scrollWidth)||0,g=(null===(r=o.current)||void 0===r?void 0:r.clientWidth)||0,M=b&&g*(g/b),w=l.useRef(),O=(0,h.useLayoutState)({scrollLeft:0,isHiddenScrollBar:!1}),k=(0,c.default)(O,2),L=k[0],x=k[1],z=l.useRef({delta:0,x:0}),S=l.useState(!1),C=(0,c.default)(S,2),j=C[0],E=C[1],T=function(){E(!1)},P=function(e){var t,n=(e||(null===(t=window)||void 0===t?void 0:t.event)).buttons;if(j&&0!==n){var r=z.current.x+e.pageX-z.current.x-z.current.delta;r<=0&&(r=0),r+M>=g&&(r=g-M),m({scrollLeft:r/g*(b+2)}),z.current.x=e.pageX}else j&&E(!1)},H=function(){var e=(0,d.getOffset)(o.current).top,t=e+o.current.offsetHeight,n=y===window?document.documentElement.scrollTop+window.innerHeight:(0,d.getOffset)(y).top+y.clientHeight;t-(0,s.default)()<=n||e>=n-v?x((function(e){return(0,i.default)((0,i.default)({},e),{},{isHiddenScrollBar:!0})})):x((function(e){return(0,i.default)((0,i.default)({},e),{},{isHiddenScrollBar:!1})}))},D=function(e){x((function(t){return(0,i.default)((0,i.default)({},t),{},{scrollLeft:e/b*g||0})}))};return l.useImperativeHandle(t,(function(){return{setScrollLeft:D}})),l.useEffect((function(){var e=(0,u.default)(document.body,"mouseup",T,!1),t=(0,u.default)(document.body,"mousemove",P,!1);return H(),function(){e.remove(),t.remove()}}),[M,j]),l.useEffect((function(){var e=(0,u.default)(y,"scroll",H,!1),t=(0,u.default)(window,"resize",H,!1);return function(){e.remove(),t.remove()}}),[y]),l.useEffect((function(){L.isHiddenScrollBar||x((function(e){var t=o.current;return t?(0,i.default)((0,i.default)({},e),{},{scrollLeft:t.scrollLeft/t.scrollWidth*t.clientWidth}):e}))}),[L.isHiddenScrollBar]),b<=g||!M||L.isHiddenScrollBar?null:l.createElement("div",{style:{height:(0,s.default)(),width:g,bottom:v},className:"".concat(_,"-sticky-scroll")},l.createElement("div",{onMouseDown:function(e){e.persist(),z.current.delta=e.pageX-L.scrollLeft,z.current.x=0,E(!0),e.preventDefault()},ref:w,className:(0,f.default)("".concat(_,"-sticky-scroll-bar"),(0,a.default)({},"".concat(_,"-sticky-scroll-bar-active"),j)),style:{width:"".concat(M,"px"),transform:"translate3d(".concat(L.scrollLeft,"px, 0, 0)")}}))},v=l.forwardRef(m);t.default=v},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n,r){var a=o.default.unstable_batchedUpdates?function(e){o.default.unstable_batchedUpdates(n,e)}:n;e.addEventListener&&e.addEventListener(t,a,r);return{remove:function(){e.removeEventListener&&e.removeEventListener(t,a)}}};var o=r(n(11))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.get=function(e,t){var n=arguments.length,r=i(e);return t=a[t]?"cssFloat"in e.style?"cssFloat":"styleFloat":t,1===n?r:c(e,t,r[t]||e.style[t])},t.set=function e(t,n,o){var c=arguments.length;if(n=a[n]?"cssFloat"in t.style?"cssFloat":"styleFloat":n,3===c)return"number"==typeof o&&r.test(n)&&(o="".concat(o,"px")),t.style[n]=o,o;for(var l in n)n.hasOwnProperty(l)&&e(t,l,n[l]);return i(t)},t.getOuterWidth=function(e){if(e===document.body)return document.documentElement.clientWidth;return e.offsetWidth},t.getOuterHeight=function(e){if(e===document.body)return window.innerHeight||document.documentElement.clientHeight;return e.offsetHeight},t.getDocSize=function(){var e=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),t=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);return{width:e,height:t}},t.getClientSize=function(){var e=document.documentElement.clientWidth,t=window.innerHeight||document.documentElement.clientHeight;return{width:e,height:t}},t.getScroll=function(){return{scrollLeft:Math.max(document.documentElement.scrollLeft,document.body.scrollLeft),scrollTop:Math.max(document.documentElement.scrollTop,document.body.scrollTop)}},t.getOffset=function(e){var t=e.getBoundingClientRect(),n=document.documentElement;return{left:t.left+(window.pageXOffset||n.scrollLeft)-(n.clientLeft||document.body.clientLeft||0),top:t.top+(window.pageYOffset||n.scrollTop)-(n.clientTop||document.body.clientTop||0)}};var r=/margin|padding|width|height|max|min|offset/,o={left:!0,top:!0},a={cssFloat:1,styleFloat:1,float:1};function i(e){return 1===e.nodeType?e.ownerDocument.defaultView.getComputedStyle(e,null):{}}function c(e,t,n){if(t=t.toLowerCase(),"auto"===n){if("height"===t)return e.offsetHeight;if("width"===t)return e.offsetWidth}return t in o||(o[t]=r.test(t)),o[t]?parseFloat(n)||0:n}},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n="object"===(0,a.default)(e)?e:{},r=n.offsetHeader,o=void 0===r?0:r,l=n.offsetScroll,u=void 0===l?0:l,s=n.getContainer,f=(void 0===s?function(){return c}:s)()||c;return i.useMemo((function(){var n=!!e;return{isSticky:n,stickyClassName:n?"".concat(t,"-sticky-header"):"",offsetHeader:o,offsetScroll:u,container:f}}),[u,o,t,f])};var a=o(n(8)),i=r(n(0)),c=(0,o(n(351)).default)()?window:null},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(12)),i=r(n(13)),c=r(n(52)),l=r(n(58)),u=r(n(59)),s=r(n(60)),f=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=_(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),d=r(n(2)),p=r(n(77)),h=r(n(540)),m=n(26),v=n(111),y=n(69);function _(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(_=function(e){return e?n:t})(e)}var b=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},g=((0,v.tuple)("small","default","large"),null);var M=function(e){(0,u.default)(n,e);var t=(0,s.default)(n);function n(e){var r;(0,c.default)(this,n),(r=t.call(this,e)).debouncifyUpdateSpinning=function(e){var t=(e||r.props).delay;t&&(r.cancelExistingSpin(),r.updateSpinning=(0,h.default)(r.originalUpdateSpinning,t))},r.updateSpinning=function(){var e=r.props.spinning;r.state.spinning!==e&&r.setState({spinning:e})},r.renderSpin=function(e){var t,n=e.getPrefixCls,o=e.direction,c=r.props,l=c.prefixCls,u=c.className,s=c.size,h=c.tip,m=c.wrapperClassName,v=c.style,_=b(c,["prefixCls","className","size","tip","wrapperClassName","style"]),M=r.state.spinning,w=n("spin",l),O=(0,d.default)(w,(t={},(0,i.default)(t,"".concat(w,"-sm"),"small"===s),(0,i.default)(t,"".concat(w,"-lg"),"large"===s),(0,i.default)(t,"".concat(w,"-spinning"),M),(0,i.default)(t,"".concat(w,"-show-text"),!!h),(0,i.default)(t,"".concat(w,"-rtl"),"rtl"===o),t),u),k=(0,p.default)(_,["spinning","delay","indicator"]),L=f.createElement("div",(0,a.default)({},k,{style:v,className:O}),function(e,t){var n=t.indicator,r="".concat(e,"-dot");return null===n?null:(0,y.isValidElement)(n)?(0,y.cloneElement)(n,{className:(0,d.default)(n.props.className,r)}):(0,y.isValidElement)(g)?(0,y.cloneElement)(g,{className:(0,d.default)(g.props.className,r)}):f.createElement("span",{className:(0,d.default)(r,"".concat(e,"-dot-spin"))},f.createElement("i",{className:"".concat(e,"-dot-item")}),f.createElement("i",{className:"".concat(e,"-dot-item")}),f.createElement("i",{className:"".concat(e,"-dot-item")}),f.createElement("i",{className:"".concat(e,"-dot-item")}))}(w,r.props),h?f.createElement("div",{className:"".concat(w,"-text")},h):null);if(r.isNestedPattern()){var x=(0,d.default)("".concat(w,"-container"),(0,i.default)({},"".concat(w,"-blur"),M));return f.createElement("div",(0,a.default)({},k,{className:(0,d.default)("".concat(w,"-nested-loading"),m)}),M&&f.createElement("div",{key:"loading"},L),f.createElement("div",{className:x,key:"container"},r.props.children))}return L};var o=e.spinning,l=function(e,t){return!!e&&!!t&&!isNaN(Number(t))}(o,e.delay);return r.state={spinning:o&&!l},r.originalUpdateSpinning=r.updateSpinning,r.debouncifyUpdateSpinning(e),r}return(0,l.default)(n,[{key:"componentDidMount",value:function(){this.updateSpinning()}},{key:"componentDidUpdate",value:function(){this.debouncifyUpdateSpinning(),this.updateSpinning()}},{key:"componentWillUnmount",value:function(){this.cancelExistingSpin()}},{key:"cancelExistingSpin",value:function(){var e=this.updateSpinning;e&&e.cancel&&e.cancel()}},{key:"isNestedPattern",value:function(){return!(!this.props||void 0===this.props.children)}},{key:"render",value:function(){return f.createElement(m.ConfigConsumer,null,this.renderSpin)}}],[{key:"setDefaultIndicator",value:function(e){g=e}}]),n}(f.Component);M.defaultProps={spinning:!0,size:"default",wrapperClassName:""};var w=M;t.default=w},function(e,t){function n(t,r){return e.exports=n=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},e.exports.default=e.exports,e.exports.__esModule=!0,n(t,r)}e.exports=n,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function n(t){return e.exports=n=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.default=e.exports,e.exports.__esModule=!0,n(t)}e.exports=n,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){var r=n(8).default,o=n(151);e.exports=function(e,t){return!t||"object"!==r(t)&&"function"!=typeof t?o(e):t},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){var r=n(110),o=n(541),a=n(542),i=Math.max,c=Math.min;e.exports=function(e,t,n){var l,u,s,f,d,p,h=0,m=!1,v=!1,y=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function _(t){var n=l,r=u;return l=u=void 0,h=t,f=e.apply(r,n)}function b(e){return h=e,d=setTimeout(M,t),m?_(e):f}function g(e){var n=e-p;return void 0===p||n>=t||n<0||v&&e-h>=s}function M(){var e=o();if(g(e))return w(e);d=setTimeout(M,function(e){var n=t-(e-p);return v?c(n,s-(e-h)):n}(e))}function w(e){return d=void 0,y&&l?_(e):(l=u=void 0,f)}function O(){var e=o(),n=g(e);if(l=arguments,u=this,p=e,n){if(void 0===d)return b(p);if(v)return clearTimeout(d),d=setTimeout(M,t),_(p)}return void 0===d&&(d=setTimeout(M,t)),f}return t=a(t)||0,r(n)&&(m=!!n.leading,s=(v="maxWait"in n)?i(a(n.maxWait)||0,t):s,y="trailing"in n?!!n.trailing:y),O.cancel=function(){void 0!==d&&clearTimeout(d),h=0,l=p=u=d=void 0},O.flush=function(){return void 0===d?f:w(o())},O}},function(e,t,n){var r=n(53);e.exports=function(){return r.Date.now()}},function(e,t,n){var r=n(543),o=n(110),a=n(545),i=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,l=/^0o[0-7]+$/i,u=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(a(e))return NaN;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var n=c.test(e);return n||l.test(e)?u(e.slice(2),n?2:8):i.test(e)?NaN:+e}},function(e,t,n){var r=n(544),o=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(o,""):e}},function(e,t){var n=/\s/;e.exports=function(e){for(var t=e.length;t--&&n.test(e.charAt(t)););return t}},function(e,t,n){var r=n(95),o=n(96);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,t,n){var r=n(152),o=Object.prototype,a=o.hasOwnProperty,i=o.toString,c=r?r.toStringTag:void 0;e.exports=function(e){var t=a.call(e,c),n=e[c];try{e[c]=void 0;var r=!0}catch(e){}var o=i.call(e);return r&&(t?e[c]=n:delete e[c]),o}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){"use strict"; /** @license React v16.13.1 * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,a=r?Symbol.for("react.portal"):60106,i=r?Symbol.for("react.fragment"):60107,c=r?Symbol.for("react.strict_mode"):60108,l=r?Symbol.for("react.profiler"):60114,u=r?Symbol.for("react.provider"):60109,s=r?Symbol.for("react.context"):60110,f=r?Symbol.for("react.async_mode"):60111,d=r?Symbol.for("react.concurrent_mode"):60111,p=r?Symbol.for("react.forward_ref"):60112,h=r?Symbol.for("react.suspense"):60113,m=r?Symbol.for("react.suspense_list"):60120,v=r?Symbol.for("react.memo"):60115,y=r?Symbol.for("react.lazy"):60116,_=r?Symbol.for("react.block"):60121,b=r?Symbol.for("react.fundamental"):60117,g=r?Symbol.for("react.responder"):60118,M=r?Symbol.for("react.scope"):60119;function w(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case f:case d:case i:case l:case c:case h:return e;default:switch(e=e&&e.$$typeof){case s:case p:case y:case v:case u:return e;default:return t}}case a:return t}}}function O(e){return w(e)===d}t.AsyncMode=f,t.ConcurrentMode=d,t.ContextConsumer=s,t.ContextProvider=u,t.Element=o,t.ForwardRef=p,t.Fragment=i,t.Lazy=y,t.Memo=v,t.Portal=a,t.Profiler=l,t.StrictMode=c,t.Suspense=h,t.isAsyncMode=function(e){return O(e)||w(e)===f},t.isConcurrentMode=O,t.isContextConsumer=function(e){return w(e)===s},t.isContextProvider=function(e){return w(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return w(e)===p},t.isFragment=function(e){return w(e)===i},t.isLazy=function(e){return w(e)===y},t.isMemo=function(e){return w(e)===v},t.isPortal=function(e){return w(e)===a},t.isProfiler=function(e){return w(e)===l},t.isStrictMode=function(e){return w(e)===c},t.isSuspense=function(e){return w(e)===h},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===i||e===d||e===l||e===c||e===h||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===y||e.$$typeof===v||e.$$typeof===u||e.$$typeof===s||e.$$typeof===p||e.$$typeof===b||e.$$typeof===g||e.$$typeof===M||e.$$typeof===_)},t.typeOf=w},function(e,t,n){var r=function(e){"use strict";var t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",i=r.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var o=t&&t.prototype instanceof f?t:f,a=Object.create(o.prototype),i=new O(r||[]);return a._invoke=function(e,t,n){var r="suspendedStart";return function(o,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw a;return L()}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var c=g(i,n);if(c){if(c===s)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=u(e,t,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===s)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}(e,n,i),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var s={};function f(){}function d(){}function p(){}var h={};h[o]=function(){return this};var m=Object.getPrototypeOf,v=m&&m(m(k([])));v&&v!==t&&n.call(v,o)&&(h=v);var y=p.prototype=f.prototype=Object.create(h);function _(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var r;this._invoke=function(o,a){function i(){return new t((function(r,i){!function r(o,a,i,c){var l=u(e[o],e,a);if("throw"!==l.type){var s=l.arg,f=s.value;return f&&"object"==typeof f&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){r("next",e,i,c)}),(function(e){r("throw",e,i,c)})):t.resolve(f).then((function(e){s.value=e,i(s)}),(function(e){return r("throw",e,i,c)}))}c(l.arg)}(o,a,r,i)}))}return r=r?r.then(i,i):i()}}function g(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,g(e,t),"throw"===t.method))return s;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return s}var r=u(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,s;var o=r.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,s):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,s)}function M(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(M,this),this.reset(!0)}function k(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:L}}function L(){return{value:void 0,done:!0}}return d.prototype=y.constructor=p,p.constructor=d,d.displayName=c(p,i,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===d||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,c(e,i,"GeneratorFunction")),e.prototype=Object.create(y),e},e.awrap=function(e){return{__await:e}},_(b.prototype),b.prototype[a]=function(){return this},e.AsyncIterator=b,e.async=function(t,n,r,o,a){void 0===a&&(a=Promise);var i=new b(l(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},_(y),c(y,i,"Generator"),y[o]=function(){return this},y.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=k,O.prototype={constructor:O,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(w),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(c&&l){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,s):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),s},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),w(n),s}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;w(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:k(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),s}},e}(e.exports);try{regeneratorRuntime=r}catch(e){Function("r","regeneratorRuntime = r")(r)}},function(e,t,n){"use strict";var r=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var r=o.useRef({});"value"in r.current&&!n(r.current.condition,t)||(r.current.value=e(),r.current.condition=t);return r.current.value};var o=r(n(0))},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.ANT_MARK=void 0;var a=r(n(12)),i=r(n(52)),c=r(n(58)),l=r(n(59)),u=r(n(60)),s=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=h(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),f=r(n(68)),d=n(552),p=r(n(356));function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(h=function(e){return e?n:t})(e)}t.ANT_MARK="internalMark";var m=function(e){(0,l.default)(n,e);var t=(0,u.default)(n);function n(e){var r;return(0,i.default)(this,n),r=t.call(this,e),(0,d.changeConfirmLocale)(e.locale&&e.locale.Modal),(0,f.default)("internalMark"===e._ANT_MARK__,"LocaleProvider","`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead: http://u.ant.design/locale"),r}return(0,c.default)(n,[{key:"componentDidMount",value:function(){(0,d.changeConfirmLocale)(this.props.locale&&this.props.locale.Modal)}},{key:"componentDidUpdate",value:function(e){var t=this.props.locale;e.locale!==t&&(0,d.changeConfirmLocale)(t&&t.Modal)}},{key:"componentWillUnmount",value:function(){(0,d.changeConfirmLocale)()}},{key:"render",value:function(){var e=this.props,t=e.locale,n=e.children;return s.createElement(p.default.Provider,{value:(0,a.default)((0,a.default)({},t),{exist:!0})},n)}}]),n}(s.Component);t.default=m,m.defaultProps={locale:{}}},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.changeConfirmLocale=function(e){i=e?(0,o.default)((0,o.default)({},i),e):(0,o.default)({},a.default.Modal)},t.getConfirmLocale=function(){return i};var o=r(n(12)),a=r(n(154)),i=(0,o.default)({},a.default.Modal)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={locale:"en_US",today:"Today",now:"Now",backToToday:"Back to today",ok:"Ok",clear:"Clear",month:"Month",year:"Year",timeSelect:"select time",dateSelect:"select date",weekSelect:"Choose a week",monthSelect:"Choose a month",yearSelect:"Choose a year",decadeSelect:"Choose a decade",yearFormat:"YYYY",dateFormat:"M/D/YYYY",dayFormat:"D",dateTimeFormat:"M/D/YYYY HH:mm:ss",monthBeforeYear:!0,previousMonth:"Previous month (PageUp)",nextMonth:"Next month (PageDown)",previousYear:"Last year (Control + left)",nextYear:"Next year (Control + right)",previousDecade:"Last decade",nextDecade:"Next decade",previousCentury:"Last century",nextCentury:"Next century"};t.default=r},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(354)).default;t.default=o},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(154)).default;t.default=o},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=l(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),i=r(n(357)),c=n(26);function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(l=function(e){return e?n:t})(e)}var u=function(e){return a.createElement(c.ConfigConsumer,null,(function(t){var n=(0,t.getPrefixCls)("empty");switch(e){case"Table":case"List":return a.createElement(i.default,{image:i.default.PRESENTED_IMAGE_SIMPLE});case"Select":case"TreeSelect":case"Cascader":case"Transfer":case"Mentions":return a.createElement(i.default,{image:i.default.PRESENTED_IMAGE_SIMPLE,className:"".concat(n,"-small")});default:return a.createElement(i.default,null)}}))};t.default=u},function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=i(t);if(n&&n.has(e))return n.get(e);var o={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var c in e)if("default"!==c&&Object.prototype.hasOwnProperty.call(e,c)){var l=a?Object.getOwnPropertyDescriptor(e,c):null;l&&(l.get||l.set)?Object.defineProperty(o,c,l):o[c]=e[c]}o.default=e,n&&n.set(e,o);return o}(n(0)),a=n(26);function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}var c=function(){var e=(0,o.useContext(a.ConfigContext).getPrefixCls)("empty-img-default");return o.createElement("svg",{className:e,width:"184",height:"152",viewBox:"0 0 184 152",xmlns:"http://www.w3.org/2000/svg"},o.createElement("g",{fill:"none",fillRule:"evenodd"},o.createElement("g",{transform:"translate(24 31.67)"},o.createElement("ellipse",{className:"".concat(e,"-ellipse"),cx:"67.797",cy:"106.89",rx:"67.797",ry:"12.668"}),o.createElement("path",{className:"".concat(e,"-path-1"),d:"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z"}),o.createElement("path",{className:"".concat(e,"-path-2"),d:"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",transform:"translate(13.56)"}),o.createElement("path",{className:"".concat(e,"-path-3"),d:"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z"}),o.createElement("path",{className:"".concat(e,"-path-4"),d:"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z"})),o.createElement("path",{className:"".concat(e,"-path-5"),d:"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z"}),o.createElement("g",{className:"".concat(e,"-g"),transform:"translate(149.65 15.383)"},o.createElement("ellipse",{cx:"20.654",cy:"3.167",rx:"2.849",ry:"2.815"}),o.createElement("path",{d:"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z"}))))};t.default=c},function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=i(t);if(n&&n.has(e))return n.get(e);var o={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var c in e)if("default"!==c&&Object.prototype.hasOwnProperty.call(e,c)){var l=a?Object.getOwnPropertyDescriptor(e,c):null;l&&(l.get||l.set)?Object.defineProperty(o,c,l):o[c]=e[c]}o.default=e,n&&n.set(e,o);return o}(n(0)),a=n(26);function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}var c=function(){var e=(0,o.useContext(a.ConfigContext).getPrefixCls)("empty-img-simple");return o.createElement("svg",{className:e,width:"64",height:"41",viewBox:"0 0 64 41",xmlns:"http://www.w3.org/2000/svg"},o.createElement("g",{transform:"translate(0 1)",fill:"none",fillRule:"evenodd"},o.createElement("ellipse",{className:"".concat(e,"-ellipse"),cx:"32",cy:"33",rx:"32",ry:"7"}),o.createElement("g",{className:"".concat(e,"-g"),fillRule:"nonzero"},o.createElement("path",{d:"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"}),o.createElement("path",{d:"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",className:"".concat(e,"-path")}))))};t.default=c},function(e,t,n){"use strict"; /** @license React v16.13.1 * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,a=r?Symbol.for("react.portal"):60106,i=r?Symbol.for("react.fragment"):60107,c=r?Symbol.for("react.strict_mode"):60108,l=r?Symbol.for("react.profiler"):60114,u=r?Symbol.for("react.provider"):60109,s=r?Symbol.for("react.context"):60110,f=r?Symbol.for("react.async_mode"):60111,d=r?Symbol.for("react.concurrent_mode"):60111,p=r?Symbol.for("react.forward_ref"):60112,h=r?Symbol.for("react.suspense"):60113,m=r?Symbol.for("react.suspense_list"):60120,v=r?Symbol.for("react.memo"):60115,y=r?Symbol.for("react.lazy"):60116,_=r?Symbol.for("react.block"):60121,b=r?Symbol.for("react.fundamental"):60117,g=r?Symbol.for("react.responder"):60118,M=r?Symbol.for("react.scope"):60119;function w(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case f:case d:case i:case l:case c:case h:return e;default:switch(e=e&&e.$$typeof){case s:case p:case y:case v:case u:return e;default:return t}}case a:return t}}}function O(e){return w(e)===d}t.AsyncMode=f,t.ConcurrentMode=d,t.ContextConsumer=s,t.ContextProvider=u,t.Element=o,t.ForwardRef=p,t.Fragment=i,t.Lazy=y,t.Memo=v,t.Portal=a,t.Profiler=l,t.StrictMode=c,t.Suspense=h,t.isAsyncMode=function(e){return O(e)||w(e)===f},t.isConcurrentMode=O,t.isContextConsumer=function(e){return w(e)===s},t.isContextProvider=function(e){return w(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return w(e)===p},t.isFragment=function(e){return w(e)===i},t.isLazy=function(e){return w(e)===y},t.isMemo=function(e){return w(e)===v},t.isPortal=function(e){return w(e)===a},t.isProfiler=function(e){return w(e)===l},t.isStrictMode=function(e){return w(e)===c},t.isSuspense=function(e){return w(e)===h},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===i||e===d||e===l||e===c||e===h||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===y||e.$$typeof===v||e.$$typeof===u||e.$$typeof===s||e.$$typeof===p||e.$$typeof===b||e.$$typeof===g||e.$$typeof===M||e.$$typeof===_)},t.typeOf=w},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(561)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="LoadingOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"}}]},name:"loading",theme:"outlined"}},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.setTwoToneColor=function(e){var t=(0,i.normalizeTwoToneColors)(e),n=(0,o.default)(t,2),r=n[0],c=n[1];return a.default.setTwoToneColors({primaryColor:r,secondaryColor:c})},t.getTwoToneColor=function(){var e=a.default.getTwoToneColors();if(!e.calculated)return e.primaryColor;return[e.primaryColor,e.secondaryColor]};var o=r(n(25)),a=r(n(359)),i=n(158)},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(564))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(565)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="ExclamationCircleFilled";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},name:"exclamation-circle",theme:"filled"}},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(567)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="CloseCircleFilled";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z"}}]},name:"close-circle",theme:"filled"}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(569))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(570)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="CheckCircleFilled";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z"}}]},name:"check-circle",theme:"filled"}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(572))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(573)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="InfoCircleFilled";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},name:"info-circle",theme:"filled"}},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return function(){var n,r=null,o={add:function(e,t){null==r||r.component.add(e,t)}},f=(0,l.default)(o),d=(0,i.default)(f,2),p=d[0],h=d[1];var m=c.useRef({});return m.current.open=function(o){var i=o.prefixCls,c=n("message",i),l=n(),u=o.key||(0,s.getKeyThenIncreaseKey)(),f=new Promise((function(n){var i=function(){return"function"==typeof o.onClose&&o.onClose(),n(!0)};e((0,a.default)((0,a.default)({},o),{prefixCls:c,rootPrefixCls:l}),(function(e){var n=e.prefixCls,c=e.instance;r=c,p(t((0,a.default)((0,a.default)({},o),{key:u,onClose:i}),n))}))})),d=function(){r&&r.removeNotice(u)};return d.then=function(e,t){return f.then(e,t)},d.promise=f,d},["success","info","warning","error","loading"].forEach((function(e){return(0,s.attachTypeApi)(m.current,e)})),[m.current,c.createElement(u.ConfigConsumer,{key:"holder"},(function(e){return n=e.getPrefixCls,h}))]}};var a=r(n(12)),i=r(n(25)),c=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=f(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),l=r(n(362)),u=n(26),s=n(358);function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(f=function(e){return e?n:t})(e)}},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(12)),i=o(n(13)),c=o(n(52)),l=o(n(58)),u=o(n(59)),s=o(n(60)),f=r(n(0)),d=o(n(11)),p=o(n(2)),h=function(e){(0,u.default)(n,e);var t=(0,s.default)(n);function n(){var e;return(0,c.default)(this,n),(e=t.apply(this,arguments)).closeTimer=null,e.close=function(t){t&&t.stopPropagation(),e.clearCloseTimer();var n=e.props,r=n.onClose,o=n.noticeKey;r&&r(o)},e.startCloseTimer=function(){e.props.duration&&(e.closeTimer=window.setTimeout((function(){e.close()}),1e3*e.props.duration))},e.clearCloseTimer=function(){e.closeTimer&&(clearTimeout(e.closeTimer),e.closeTimer=null)},e}return(0,l.default)(n,[{key:"componentDidMount",value:function(){this.startCloseTimer()}},{key:"componentDidUpdate",value:function(e){this.props.duration===e.duration&&this.props.updateMark===e.updateMark||this.restartCloseTimer()}},{key:"componentWillUnmount",value:function(){this.clearCloseTimer()}},{key:"restartCloseTimer",value:function(){this.clearCloseTimer(),this.startCloseTimer()}},{key:"render",value:function(){var e=this,t=this.props,n=t.prefixCls,r=t.className,o=t.closable,c=t.closeIcon,l=t.style,u=t.onClick,s=t.children,h=t.holder,m="".concat(n,"-notice"),v=Object.keys(this.props).reduce((function(t,n){return"data-"!==n.substr(0,5)&&"aria-"!==n.substr(0,5)&&"role"!==n||(t[n]=e.props[n]),t}),{}),y=f.createElement("div",(0,a.default)({className:(0,p.default)(m,r,(0,i.default)({},"".concat(m,"-closable"),o)),style:l,onMouseEnter:this.clearCloseTimer,onMouseLeave:this.startCloseTimer,onClick:u},v),f.createElement("div",{className:"".concat(m,"-content")},s),o?f.createElement("a",{tabIndex:0,onClick:this.close,className:"".concat(m,"-close")},c||f.createElement("span",{className:"".concat(m,"-close-x")})):null);return h?d.default.createPortal(y,h):y}}]),n}(f.Component);t.default=h,h.defaultProps={onClose:function(){},duration:1.5}},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.getInstance=void 0;var a=r(n(83)),i=r(n(12)),c=r(n(13)),l=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=_(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),u=r(n(408)),s=r(n(363)),f=r(n(2)),d=r(n(579)),p=r(n(582)),h=r(n(585)),m=r(n(588)),v=r(n(591)),y=n(26);function _(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(_=function(e){return e?n:t})(e)}var b,g,M=function(e,t,n,r){return new(n||(n=Promise))((function(o,a){function i(e){try{l(r.next(e))}catch(e){a(e)}}function c(e){try{l(r.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,c)}l((r=r.apply(e,t||[])).next())}))},w={},O=4.5,k=24,L=24,x="",z="topRight",S=!1;function C(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:k,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:L;switch(e){case"topLeft":t={left:0,top:n,bottom:"auto"};break;case"topRight":t={right:0,top:n,bottom:"auto"};break;case"bottomLeft":t={left:0,top:"auto",bottom:r};break;default:t={right:0,top:"auto",bottom:r}}return t}function j(e,t){var n=e.placement,r=void 0===n?z:n,o=e.top,a=e.bottom,i=e.getContainer,d=void 0===i?b:i,p=e.closeIcon,h=void 0===p?g:p,m=e.prefixCls,v=(0,(0,y.globalConfig)().getPrefixCls)("notification",m||x),_="".concat(v,"-").concat(r),M=w[_];if(M)Promise.resolve(M).then((function(e){t({prefixCls:"".concat(v,"-notice"),instance:e})}));else{var O=l.createElement("span",{className:"".concat(v,"-close-x")},h||l.createElement(s.default,{className:"".concat(v,"-close-icon")})),k=(0,f.default)("".concat(v,"-").concat(r),(0,c.default)({},"".concat(v,"-rtl"),!0===S));w[_]=new Promise((function(e){u.default.newInstance({prefixCls:v,className:k,style:C(r,o,a),getContainer:d,closeIcon:O},(function(n){e(n),t({prefixCls:"".concat(v,"-notice"),instance:n})}))}))}}var E={success:d.default,info:m.default,error:p.default,warning:h.default};function T(e,t){var n=e.duration,r=e.icon,o=e.type,a=e.description,i=e.message,u=e.btn,s=e.onClose,d=e.onClick,p=e.key,h=e.style,m=e.className,v=void 0===n?O:n,y=null;r?y=l.createElement("span",{className:"".concat(t,"-icon")},e.icon):o&&(y=l.createElement(E[o]||null,{className:"".concat(t,"-icon ").concat(t,"-icon-").concat(o)}));var _=!a&&y?l.createElement("span",{className:"".concat(t,"-message-single-line-auto-margin")}):null;return{content:l.createElement("div",{className:y?"".concat(t,"-with-icon"):"",role:"alert"},y,l.createElement("div",{className:"".concat(t,"-message")},_,i),l.createElement("div",{className:"".concat(t,"-description")},a),u?l.createElement("span",{className:"".concat(t,"-btn")},u):null),duration:v,closable:!0,onClose:s,onClick:d,key:p,style:h||{},className:(0,f.default)(m,(0,c.default)({},"".concat(t,"-").concat(o),!!o))}}var P={open:function(e){j(e,(function(t){var n=t.prefixCls;t.instance.notice(T(e,n))}))},close:function(e){Object.keys(w).forEach((function(t){return Promise.resolve(w[t]).then((function(t){t.removeNotice(e)}))}))},config:function(e){var t=e.duration,n=e.placement,r=e.bottom,o=e.top,a=e.getContainer,i=e.closeIcon,c=e.prefixCls;void 0!==c&&(x=c),void 0!==t&&(O=t),void 0!==n?z=n:e.rtl&&(z="topLeft"),void 0!==r&&(L=r),void 0!==o&&(k=o),void 0!==a&&(b=a),void 0!==i&&(g=i),void 0!==e.rtl&&(S=e.rtl)},destroy:function(){Object.keys(w).forEach((function(e){Promise.resolve(w[e]).then((function(e){e.destroy()})),delete w[e]}))}};["success","info","warning","error"].forEach((function(e){P[e]=function(t){return P.open((0,i.default)((0,i.default)({},t),{type:e}))}})),P.warn=P.warning,P.useNotification=(0,v.default)(j,T);t.getInstance=function(e){return M(void 0,void 0,void 0,a.default.mark((function e(){return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",null);case 1:case"end":return e.stop()}}),e)})))};var H=P;t.default=H},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(578)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="CloseOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z"}}]},name:"close",theme:"outlined"}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(580))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(581)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="CheckCircleOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"check-circle",theme:"outlined"}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(583))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(584)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="CloseCircleOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M685.4 354.8c0-4.4-3.6-8-8-8l-66 .3L512 465.6l-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155L340.5 670a8.32 8.32 0 00-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3L512 564.4l99.3 118.4 66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.5 515l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z"}},{tag:"path",attrs:{d:"M512 65C264.6 65 64 265.6 64 513s200.6 448 448 448 448-200.6 448-448S759.4 65 512 65zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"close-circle",theme:"outlined"}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(586))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(587)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="ExclamationCircleOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M464 688a48 48 0 1096 0 48 48 0 10-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z"}}]},name:"exclamation-circle",theme:"outlined"}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(589))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(590)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="InfoCircleOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M464 336a48 48 0 1096 0 48 48 0 10-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z"}}]},name:"info-circle",theme:"outlined"}},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return function(){var n,r=null,o={add:function(e,t){null==r||r.component.add(e,t)}},s=(0,l.default)(o),f=(0,i.default)(s,2),d=f[0],p=f[1];var h=c.useRef({});return h.current.open=function(o){var i=o.prefixCls,c=n("notification",i);e((0,a.default)((0,a.default)({},o),{prefixCls:c}),(function(e){var n=e.prefixCls,a=e.instance;r=a,d(t(o,n))}))},["success","info","warning","error"].forEach((function(e){h.current[e]=function(t){return h.current.open((0,a.default)((0,a.default)({},t),{type:e}))}})),[h.current,c.createElement(u.ConfigConsumer,{key:"holder"},(function(e){return n=e.getPrefixCls,p}))]}};var a=r(n(12)),i=r(n(25)),c=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=s(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),l=r(n(362)),u=n(26);function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(s=function(e){return e?n:t})(e)}},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(593)).default;t.default=o},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(13)),i=r(n(12)),c=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=g(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),l=r(n(877)),u=r(n(353)),s=r(n(2)),f=r(n(364)),d=r(n(159)),p=r(n(598)),h=r(n(601)),m=r(n(604)),v=r(n(365)),y=r(n(155)),_=n(26),b=r(n(367));function g(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(g=function(e){return e?n:t})(e)}var M=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},w=function(e){var t=e.prefixCls,n=e.selectPrefixCls,r=e.className,o=e.size,g=e.locale,w=M(e,["prefixCls","selectPrefixCls","className","size","locale"]),O=(0,b.default)().xs,k=c.useContext(_.ConfigContext),L=k.getPrefixCls,x=k.direction,z=L("pagination",t),S=function(e){var t=(0,i.default)((0,i.default)({},e),g),u="small"===o||!(!O||o||!w.responsive),y=L("select",n),_=(0,s.default)((0,a.default)({mini:u},"".concat(z,"-rtl"),"rtl"===x),r);return c.createElement(l.default,(0,i.default)({},w,{prefixCls:z,selectPrefixCls:y},function(){var e=c.createElement("span",{className:"".concat(z,"-item-ellipsis")},"•••"),t=c.createElement("button",{className:"".concat(z,"-item-link"),type:"button",tabIndex:-1},c.createElement(f.default,null)),n=c.createElement("button",{className:"".concat(z,"-item-link"),type:"button",tabIndex:-1},c.createElement(d.default,null)),r=c.createElement("a",{className:"".concat(z,"-item-link")},c.createElement("div",{className:"".concat(z,"-item-container")},c.createElement(p.default,{className:"".concat(z,"-item-link-icon")}),e)),o=c.createElement("a",{className:"".concat(z,"-item-link")},c.createElement("div",{className:"".concat(z,"-item-container")},c.createElement(h.default,{className:"".concat(z,"-item-link-icon")}),e));if("rtl"===x){var a=[n,t];t=a[0],n=a[1];var i=[o,r];r=i[0],o=i[1]}return{prevIcon:t,nextIcon:n,jumpPrevIcon:r,jumpNextIcon:o}}(),{className:_,selectComponentClass:u?m.default:v.default,locale:t}))};return c.createElement(y.default,{componentName:"Pagination",defaultLocale:u.default},S)};t.default=w},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(595)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="LeftOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z"}}]},name:"left",theme:"outlined"}},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(597)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="RightOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"}}]},name:"right",theme:"outlined"}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(599))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(600)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="DoubleLeftOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z"}}]},name:"double-left",theme:"outlined"}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(602))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(603)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="DoubleRightOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z"}}]},name:"double-right",theme:"outlined"}},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(12)),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=l(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),c=r(n(365));function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(l=function(e){return e?n:t})(e)}var u=function(e){return i.createElement(c.default,(0,a.default)({size:"small"},e))};u.Option=c.default.Option;var s=u;t.default=s},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.suffixIcon,n=e.clearIcon,r=e.menuItemSelectedIcon,o=e.removeIcon,d=e.loading,p=e.multiple,h=e.prefixCls,m=n;n||(m=a.createElement(s.default,null));var v=null;if(void 0!==t)v=t;else if(d)v=a.createElement(c.default,{spin:!0});else{var y="".concat(h,"-suffix");v=function(e){var t=e.open,n=e.showSearch;return t&&n?a.createElement(f.default,{className:y}):a.createElement(i.default,{className:y})}}var _=null;_=void 0!==r?r:p?a.createElement(l.default,null):null;var b=null;b=void 0!==o?o:a.createElement(u.default,null);return{clearIcon:m,suffixIcon:v,itemIcon:_,removeIcon:b}};var a=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=d(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),i=r(n(366)),c=r(n(157)),l=r(n(608)),u=r(n(363)),s=r(n(361)),f=r(n(611));function d(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(d=function(e){return e?n:t})(e)}},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(607)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="DownOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}}]},name:"down",theme:"outlined"}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(609))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(610)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="CheckOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"}}]},name:"check",theme:"outlined"}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(612))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(613)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="SearchOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"}}]},name:"search",theme:"outlined"}},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.responsiveMap=t.responsiveArray=void 0;var o=r(n(13)),a=r(n(12));t.responsiveArray=["xxl","xl","lg","md","sm","xs"];var i={xs:"(max-width: 575px)",sm:"(min-width: 576px)",md:"(min-width: 768px)",lg:"(min-width: 992px)",xl:"(min-width: 1200px)",xxl:"(min-width: 1600px)"};t.responsiveMap=i;var c=new Map,l=-1,u={},s={matchHandlers:{},dispatch:function(e){return u=e,c.forEach((function(e){return e(u)})),c.size>=1},subscribe:function(e){return c.size||this.register(),l+=1,c.set(l,e),e(u),l},unsubscribe:function(e){c.delete(e),c.size||this.unregister()},unregister:function(){var e=this;Object.keys(i).forEach((function(t){var n=i[t],r=e.matchHandlers[n];null==r||r.mql.removeListener(null==r?void 0:r.listener)})),c.clear()},register:function(){var e=this;Object.keys(i).forEach((function(t){var n=i[t],r=function(n){var r=n.matches;e.dispatch((0,a.default)((0,a.default)({},u),(0,o.default)({},t,r)))},c=window.matchMedia(n);c.addListener(r),e.matchHandlers[n]={mql:c,listener:r},r(c)}))}};t.default=s},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.getPaginationParam=function(e,t){var n={current:t.current,pageSize:t.pageSize},r=e&&"object"===(0,i.default)(e)?e:{};return Object.keys(r).forEach((function(e){var r=t[e];"function"!=typeof r&&(n[e]=r)})),n},t.default=function(e,t,n){var r=t&&"object"===(0,i.default)(t)?t:{},u=r.total,s=void 0===u?0:u,f=l(r,["total"]),d=(0,c.useState)((function(){return{current:"defaultCurrent"in f?f.defaultCurrent:1,pageSize:"defaultPageSize"in f?f.defaultPageSize:10}})),p=(0,a.default)(d,2),h=p[0],m=p[1],v=function(){for(var e={},t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return n.forEach((function(t){t&&Object.keys(t).forEach((function(n){var r=t[n];void 0!==r&&(e[n]=r)}))})),e}(h,f,{total:s>0?s:e}),y=Math.ceil((s||e)/v.pageSize);v.current>y&&(v.current=y||1);var _=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;m({current:e,pageSize:t||v.pageSize})};if(!1===t)return[{},function(){}];return[(0,o.default)((0,o.default)({},v),{onChange:function(e,r){var o;t&&(null===(o=t.onChange)||void 0===o||o.call(t,e,r)),_(e,r),n(e,r||(null==v?void 0:v.pageSize))}}),_]},t.DEFAULT_PAGE_SIZE=void 0;var o=r(n(12)),a=r(n(25)),i=r(n(8)),c=n(0),l=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n};t.DEFAULT_PAGE_SIZE=10},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var r=i.useRef({});return[function(o){if(!r.current||r.current.data!==e||r.current.childrenColumnName!==t||r.current.getRowKey!==n){var i=new Map;!function e(r){r.forEach((function(r,o){var c=n(r,o);i.set(c,r),r&&"object"===(0,a.default)(r)&&t in r&&e(r[t]||[])}))}(e),r.current={data:e,childrenColumnName:t,kvMap:i,getRowKey:n}}return r.current.kvMap.get(o)}]};var a=r(n(8)),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=c(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var l=a?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(r,i,l):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0));function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:t})(e)}},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=e||{},r=n.preserveSelectedRowKeys,o=n.selectedRowKeys,O=n.defaultSelectedRowKeys,L=n.getCheckboxProps,x=n.onChange,z=n.onSelect,S=n.onSelectAll,C=n.onSelectInvert,j=n.onSelectNone,E=n.onSelectMultiple,T=n.columnWidth,P=n.type,H=n.selections,D=n.fixed,Y=n.renderCell,V=n.hideSelectAll,N=n.checkStrictly,F=void 0===N||N,A=t.prefixCls,R=t.data,I=t.pageData,W=t.getRecordByKey,U=t.getRowKey,K=t.expandType,B=t.childrenColumnName,q=t.locale,$=t.expandIconColumnIndex,G=t.getPopupContainer,J=f.useRef(new Map),Q=(0,y.default)(o||O||[],{value:o}),X=(0,l.default)(Q,2),Z=X[0],ee=X[1],te=(0,f.useMemo)((function(){return F?{keyEntities:null}:(0,p.convertDataToEntities)(R,{externalGetKey:U,childrenPropName:B})}),[R,U,F,B]).keyEntities,ne=(0,f.useMemo)((function(){return function e(t,n){var r=[];return(t||[]).forEach((function(t){r.push(t),t&&"object"===(0,s.default)(t)&&n in t&&(r=[].concat((0,u.default)(r),(0,u.default)(e(t[n],n))))})),r}(I,B)}),[I,B]),re=(0,f.useMemo)((function(){var e=new Map;return ne.forEach((function(t,n){var r=U(t,n),o=(L?L(t):null)||{};e.set(r,o)})),e}),[ne,U,L]),oe=(0,f.useCallback)((function(e){var t;return!!(null===(t=re.get(U(e)))||void 0===t?void 0:t.disabled)}),[re,U]),ae=(0,f.useMemo)((function(){if(F)return[Z||[],[]];var e=(0,h.conductCheck)(Z,!0,te,oe);return[e.checkedKeys||[],e.halfCheckedKeys]}),[Z,F,te,oe]),ie=(0,l.default)(ae,2),ce=ie[0],le=ie[1],ue=(0,f.useMemo)((function(){var e="radio"===P?ce.slice(0,1):ce;return new Set(e)}),[ce,P]),se=(0,f.useMemo)((function(){return"radio"===P?new Set:new Set(le)}),[le,P]),fe=(0,f.useState)(null),de=(0,l.default)(fe,2),pe=de[0],he=de[1];f.useEffect((function(){e||ee([])}),[!!e]);var me=(0,f.useCallback)((function(e){var t,n;if(r){var o=new Map;t=e,n=e.map((function(e){var t=W(e);return!t&&J.current.has(e)&&(t=J.current.get(e)),o.set(e,t),t})),J.current=o}else t=[],n=[],e.forEach((function(e){var r=W(e);void 0!==r&&(t.push(e),n.push(r))}));ee(t),null==x||x(t,n)}),[ee,W,x,r]),ve=(0,f.useCallback)((function(e,t,n,r){if(z){var o=n.map((function(e){return W(e)}));z(W(e),t,o,r)}me(n)}),[z,W,me]),ye=(0,f.useMemo)((function(){return!H||V?null:(!0===H?["SELECT_ALL","SELECT_INVERT","SELECT_NONE"]:H).map((function(e){return"SELECT_ALL"===e?{key:"all",text:q.selectionAll,onSelect:function(){me(R.map((function(e,t){return U(e,t)})))}}:"SELECT_INVERT"===e?{key:"invert",text:q.selectInvert,onSelect:function(){var e=new Set(ue);I.forEach((function(t,n){var r=U(t,n);e.has(r)?e.delete(r):e.add(r)}));var t=Array.from(e);C&&((0,w.default)(!1,"Table","`onSelectInvert` will be removed in future. Please use `onChange` instead."),C(t)),me(t)}}:"SELECT_NONE"===e?{key:"none",text:q.selectNone,onSelect:function(){null==j||j(),me([])}}:e}))}),[H,ue,I,U,C,me]);return[(0,f.useCallback)((function(t){if(!e)return t;var n,r,o=new Set(ue),l=ne.map(U).filter((function(e){return!re.get(e).disabled})),s=l.every((function(e){return o.has(e)})),p=l.some((function(e){return o.has(e)}));if("radio"!==P){var y;if(ye){var O=f.createElement(g.default,{getPopupContainer:G},ye.map((function(e,t){var n=e.key,r=e.text,o=e.onSelect;return f.createElement(g.default.Item,{key:n||t,onClick:function(){null==o||o(l)}},r)})));y=f.createElement("div",{className:"".concat(A,"-selection-extra")},f.createElement(b.default,{overlay:O,getPopupContainer:G},f.createElement("span",null,f.createElement(d.default,null))))}var L=ne.every((function(e,t){var n=U(e,t);return(re.get(n)||{}).disabled}));n=!V&&f.createElement("div",{className:"".concat(A,"-selection")},f.createElement(_.default,{checked:!L&&!!ne.length&&s,indeterminate:!s&&p,onChange:function(){var e=[];s?l.forEach((function(t){o.delete(t),e.push(t)})):l.forEach((function(t){o.has(t)||(o.add(t),e.push(t))}));var t=Array.from(o);null==S||S(!s,t.map((function(e){return W(e)})),e.map((function(e){return W(e)}))),me(t)},disabled:0===ne.length||L,skipGroup:!0}),y)}r="radio"===P?function(e,t,n){var r=U(t,n),a=o.has(r);return{node:f.createElement(M.default,(0,c.default)({},re.get(r),{checked:a,onClick:function(e){return e.stopPropagation()},onChange:function(e){o.has(r)||ve(r,!0,[r],e.nativeEvent)}})),checked:a}}:function(e,t,n){var r,a,i=U(t,n),s=o.has(i),d=se.has(i),p=re.get(i);return"nest"===K?(a=d,(0,w.default)("boolean"!=typeof(null==p?void 0:p.indeterminate),"Table","set `indeterminate` using `rowSelection.getCheckboxProps` is not allowed with tree structured dataSource.")):a=null!==(r=null==p?void 0:p.indeterminate)&&void 0!==r?r:d,{node:f.createElement(_.default,(0,c.default)({},p,{indeterminate:a,checked:s,skipGroup:!0,onClick:function(e){return e.stopPropagation()},onChange:function(e){var t=e.nativeEvent,n=t.shiftKey,r=-1,a=-1;if(n&&F){var c=new Set([pe,i]);l.some((function(e,t){if(c.has(e)){if(-1!==r)return a=t,!0;r=t}return!1}))}if(-1!==a&&r!==a&&F){var f=l.slice(r,a+1),d=[];s?f.forEach((function(e){o.has(e)&&(d.push(e),o.delete(e))})):f.forEach((function(e){o.has(e)||(d.push(e),o.add(e))}));var p=Array.from(o);null==E||E(!s,p.map((function(e){return W(e)})),d.map((function(e){return W(e)}))),me(p)}else{var v=ce;if(F){var y=s?(0,m.arrDel)(v,i):(0,m.arrAdd)(v,i);ve(i,!s,y,t)}else{var _=(0,h.conductCheck)([].concat((0,u.default)(v),[i]),!0,te,oe),b=_.checkedKeys,g=_.halfCheckedKeys,M=b;if(s){var w=new Set(b);w.delete(i),M=(0,h.conductCheck)(Array.from(w),{checked:!1,halfCheckedKeys:g},te,oe).checkedKeys}ve(i,!s,M,t)}}he(i)}})),checked:s}};var x=(0,i.default)({width:T,className:"".concat(A,"-selection-column"),title:e.columnTitle||n,render:function(e,t,n){var o=r(e,t,n),a=o.node,i=o.checked;return Y?Y(i,t,n,a):a}},v.INTERNAL_COL_DEFINE,{className:"".concat(A,"-selection-col")});if("row"===K&&t.length&&!$){var z=(0,a.default)(t),C=z[0],j=z.slice(1),H=D||k(j[0]);return H&&(C.fixed=H),[C,(0,c.default)((0,c.default)({},x),{fixed:H})].concat((0,u.default)(j))}return[(0,c.default)((0,c.default)({},x),{fixed:D||k(t[0])})].concat((0,u.default)(t))}),[U,ne,e,ce,ue,se,T,ye,K,pe,re,E,ve,oe]),ue]},t.SELECTION_NONE=t.SELECTION_INVERT=t.SELECTION_ALL=void 0;var a=r(n(618)),i=r(n(13)),c=r(n(12)),l=r(n(25)),u=r(n(46)),s=r(n(8)),f=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=O(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),d=r(n(366)),p=n(368),h=n(622),m=n(161),v=n(405),y=r(n(162)),_=r(n(369)),b=r(n(373)),g=r(n(377)),M=r(n(380)),w=r(n(68));function O(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(O=function(e){return e?n:t})(e)}t.SELECTION_ALL="SELECT_ALL";t.SELECTION_INVERT="SELECT_INVERT";function k(e){return e&&e.fixed}t.SELECTION_NONE="SELECT_NONE"},function(e,t,n){var r=n(339),o=n(342),a=n(147),i=n(341);e.exports=function(e){return r(e)||o(e)||a(e)||i()},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.InternalTreeNode=void 0;var a=o(n(12)),i=o(n(13)),c=o(n(57)),l=o(n(45)),u=o(n(52)),s=o(n(58)),f=o(n(151)),d=o(n(59)),p=o(n(60)),h=r(n(0)),m=o(n(2)),v=n(620),y=n(161),_=o(n(621)),b=n(368),g=function(e){(0,d.default)(n,e);var t=(0,p.default)(n);function n(){var e;return(0,u.default)(this,n),(e=t.apply(this,arguments)).state={dragNodeHighlight:!1},e.onSelectorClick=function(t){(0,e.props.context.onNodeClick)(t,(0,b.convertNodePropsToEventData)(e.props)),e.isSelectable()?e.onSelect(t):e.onCheck(t)},e.onSelectorDoubleClick=function(t){(0,e.props.context.onNodeDoubleClick)(t,(0,b.convertNodePropsToEventData)(e.props))},e.onSelect=function(t){if(!e.isDisabled()){var n=e.props.context.onNodeSelect;t.preventDefault(),n(t,(0,b.convertNodePropsToEventData)(e.props))}},e.onCheck=function(t){if(!e.isDisabled()){var n=e.props,r=n.disableCheckbox,o=n.checked,a=e.props.context.onNodeCheck;if(e.isCheckable()&&!r){t.preventDefault();var i=!o;a(t,(0,b.convertNodePropsToEventData)(e.props),i)}}},e.onMouseEnter=function(t){(0,e.props.context.onNodeMouseEnter)(t,(0,b.convertNodePropsToEventData)(e.props))},e.onMouseLeave=function(t){(0,e.props.context.onNodeMouseLeave)(t,(0,b.convertNodePropsToEventData)(e.props))},e.onContextMenu=function(t){(0,e.props.context.onNodeContextMenu)(t,(0,b.convertNodePropsToEventData)(e.props))},e.onDragStart=function(t){var n=e.props.context.onNodeDragStart;t.stopPropagation(),e.setState({dragNodeHighlight:!0}),n(t,(0,f.default)(e));try{t.dataTransfer.setData("text/plain","")}catch(e){}},e.onDragEnter=function(t){var n=e.props.context.onNodeDragEnter;t.preventDefault(),t.stopPropagation(),n(t,(0,f.default)(e))},e.onDragOver=function(t){var n=e.props.context.onNodeDragOver;t.preventDefault(),t.stopPropagation(),n(t,(0,f.default)(e))},e.onDragLeave=function(t){var n=e.props.context.onNodeDragLeave;t.stopPropagation(),n(t,(0,f.default)(e))},e.onDragEnd=function(t){var n=e.props.context.onNodeDragEnd;t.stopPropagation(),e.setState({dragNodeHighlight:!1}),n(t,(0,f.default)(e))},e.onDrop=function(t){var n=e.props.context.onNodeDrop;t.preventDefault(),t.stopPropagation(),e.setState({dragNodeHighlight:!1}),n(t,(0,f.default)(e))},e.onExpand=function(t){var n=e.props,r=n.loading,o=n.context.onNodeExpand;r||o(t,(0,b.convertNodePropsToEventData)(e.props))},e.setSelectHandle=function(t){e.selectHandle=t},e.getNodeState=function(){var t=e.props.expanded;return e.isLeaf()?null:t?"open":"close"},e.hasChildren=function(){var t=e.props.eventKey;return!!((e.props.context.keyEntities[t]||{}).children||[]).length},e.isLeaf=function(){var t=e.props,n=t.isLeaf,r=t.loaded,o=e.props.context.loadData,a=e.hasChildren();return!1!==n&&(n||!o&&!a||o&&r&&!a)},e.isDisabled=function(){var t=e.props.disabled;return!(!e.props.context.disabled&&!t)},e.isCheckable=function(){var t=e.props.checkable,n=e.props.context.checkable;return!(!n||!1===t)&&n},e.syncLoadData=function(t){var n=t.expanded,r=t.loading,o=t.loaded,a=e.props.context,i=a.loadData,c=a.onNodeLoad;r||i&&n&&!e.isLeaf()&&(e.hasChildren()||o||c((0,b.convertNodePropsToEventData)(e.props)))},e.renderSwitcherIconDom=function(t){var n=e.props.switcherIcon,r=e.props.context.switcherIcon,o=n||r;return"function"==typeof o?o((0,l.default)((0,l.default)({},e.props),{},{isLeaf:t})):o},e.renderSwitcher=function(){var t=e.props.expanded,n=e.props.context.prefixCls;if(e.isLeaf()){var r=e.renderSwitcherIconDom(!0);return!1!==r?h.createElement("span",{className:(0,m.default)("".concat(n,"-switcher"),"".concat(n,"-switcher-noop"))},r):null}var o=(0,m.default)("".concat(n,"-switcher"),"".concat(n,"-switcher_").concat(t?"open":"close")),a=e.renderSwitcherIconDom(!1);return!1!==a?h.createElement("span",{onClick:e.onExpand,className:o},a):null},e.renderCheckbox=function(){var t=e.props,n=t.checked,r=t.halfChecked,o=t.disableCheckbox,a=e.props.context.prefixCls,i=e.isDisabled(),c=e.isCheckable();if(!c)return null;var l="boolean"!=typeof c?c:null;return h.createElement("span",{className:(0,m.default)("".concat(a,"-checkbox"),n&&"".concat(a,"-checkbox-checked"),!n&&r&&"".concat(a,"-checkbox-indeterminate"),(i||o)&&"".concat(a,"-checkbox-disabled")),onClick:e.onCheck},l)},e.renderIcon=function(){var t=e.props.loading,n=e.props.context.prefixCls;return h.createElement("span",{className:(0,m.default)("".concat(n,"-iconEle"),"".concat(n,"-icon__").concat(e.getNodeState()||"docu"),t&&"".concat(n,"-icon_loading"))})},e.renderSelector=function(){var t,n,r=e.state.dragNodeHighlight,o=e.props,a=o.title,i=o.selected,c=o.icon,l=o.loading,u=o.data,s=e.props.context,f=s.prefixCls,d=s.showIcon,p=s.icon,v=s.draggable,y=s.loadData,_=s.titleRender,b=e.isDisabled(),g="function"==typeof v?v(u):v,M="".concat(f,"-node-content-wrapper");if(d){var w=c||p;t=w?h.createElement("span",{className:(0,m.default)("".concat(f,"-iconEle"),"".concat(f,"-icon__customize"))},"function"==typeof w?w(e.props):w):e.renderIcon()}else y&&l&&(t=e.renderIcon());n="function"==typeof a?a(u):_?_(u):a;var O=h.createElement("span",{className:"".concat(f,"-title")},n);return h.createElement("span",{ref:e.setSelectHandle,title:"string"==typeof a?a:"",className:(0,m.default)("".concat(M),"".concat(M,"-").concat(e.getNodeState()||"normal"),!b&&(i||r)&&"".concat(f,"-node-selected"),!b&&g&&"draggable"),draggable:!b&&g||void 0,"aria-grabbed":!b&&g||void 0,onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,onContextMenu:e.onContextMenu,onClick:e.onSelectorClick,onDoubleClick:e.onSelectorDoubleClick,onDragStart:g?e.onDragStart:void 0},t,O,e.renderDropIndicator())},e.renderDropIndicator=function(){var t=e.props,n=t.disabled,r=t.eventKey,o=e.props.context,a=o.draggable,i=o.dropLevelOffset,c=o.dropPosition,l=o.prefixCls,u=o.indent,s=o.dropIndicatorRender,f=o.dragOverNodeKey,d=o.direction;return!n&&!1!==a&&f===r?s({dropPosition:c,dropLevelOffset:i,indent:u,prefixCls:l,direction:d}):null},e}return(0,s.default)(n,[{key:"componentDidMount",value:function(){this.syncLoadData(this.props)}},{key:"componentDidUpdate",value:function(){this.syncLoadData(this.props)}},{key:"isSelectable",value:function(){var e=this.props.selectable,t=this.props.context.selectable;return"boolean"==typeof e?e:t}},{key:"render",value:function(){var e,t=this.props,n=t.eventKey,r=t.className,o=t.style,l=t.dragOver,u=t.dragOverGapTop,s=t.dragOverGapBottom,f=t.isLeaf,d=t.isStart,p=t.isEnd,v=t.expanded,g=t.selected,M=t.checked,w=t.halfChecked,O=t.loading,k=t.domRef,L=t.active,x=t.data,z=t.onMouseMove,S=(0,c.default)(t,["eventKey","className","style","dragOver","dragOverGapTop","dragOverGapBottom","isLeaf","isStart","isEnd","expanded","selected","checked","halfChecked","loading","domRef","active","data","onMouseMove"]),C=this.props.context,j=C.prefixCls,E=C.filterTreeNode,T=C.draggable,P=C.keyEntities,H=C.dropContainerKey,D=C.dropTargetKey,Y=this.isDisabled(),V=(0,y.getDataAndAria)(S),N=(P[n]||{}).level,F=p[p.length-1],A="function"==typeof T?T(x):T;return h.createElement("div",(0,a.default)({ref:k,className:(0,m.default)(r,"".concat(j,"-treenode"),(e={},(0,i.default)(e,"".concat(j,"-treenode-disabled"),Y),(0,i.default)(e,"".concat(j,"-treenode-switcher-").concat(v?"open":"close"),!f),(0,i.default)(e,"".concat(j,"-treenode-checkbox-checked"),M),(0,i.default)(e,"".concat(j,"-treenode-checkbox-indeterminate"),w),(0,i.default)(e,"".concat(j,"-treenode-selected"),g),(0,i.default)(e,"".concat(j,"-treenode-loading"),O),(0,i.default)(e,"".concat(j,"-treenode-active"),L),(0,i.default)(e,"".concat(j,"-treenode-leaf-last"),F),(0,i.default)(e,"drop-target",D===n),(0,i.default)(e,"drop-container",H===n),(0,i.default)(e,"drag-over",!Y&&l),(0,i.default)(e,"drag-over-gap-top",!Y&&u),(0,i.default)(e,"drag-over-gap-bottom",!Y&&s),(0,i.default)(e,"filter-node",E&&E((0,b.convertNodePropsToEventData)(this.props))),e)),style:o,onDragEnter:A?this.onDragEnter:void 0,onDragOver:A?this.onDragOver:void 0,onDragLeave:A?this.onDragLeave:void 0,onDrop:A?this.onDrop:void 0,onDragEnd:A?this.onDragEnd:void 0,onMouseMove:z},V),h.createElement(_.default,{prefixCls:j,level:N,isStart:d,isEnd:p}),this.renderSwitcher(),this.renderCheckbox(),this.renderSelector())}}]),n}(h.Component);t.InternalTreeNode=g;var M=function(e){return h.createElement(v.TreeContext.Consumer,null,(function(t){return h.createElement(g,(0,a.default)({},e,{context:t}))}))};M.displayName="TreeNode",M.defaultProps={title:"---"},M.isTreeNode=1;var w=M;t.default=w},function(e,t,n){"use strict";var r=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.TreeContext=void 0;var o=r(n(0)).createContext(null);t.TreeContext=o},function(e,t,n){"use strict";var r=n(10),o=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(13)),i=r(n(0)),c=o(n(2)),l=function(e){for(var t=e.prefixCls,n=e.level,r=e.isStart,o=e.isEnd,l="".concat(t,"-indent-unit"),u=[],s=0;s<n;s+=1){var f;u.push(i.createElement("span",{key:s,className:(0,c.default)(l,(f={},(0,a.default)(f,"".concat(l,"-start"),r[s]),(0,a.default)(f,"".concat(l,"-end"),o[s]),f))}))}return i.createElement("span",{"aria-hidden":"true",className:"".concat(t,"-indent")},u)};t.default=l},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.isCheckDisabled=i,t.conductCheck=function(e,t,n,r){var c,l=[];c=r||i;var u,s=new Set(e.filter((function(e){var t=!!n[e];return t||l.push(e),t}))),f=new Map,d=0;Object.keys(n).forEach((function(e){var t=n[e],r=t.level,o=f.get(r);o||(o=new Set,f.set(r,o)),o.add(t),d=Math.max(d,r)})),(0,o.default)(!l.length,"Tree missing follow keys: ".concat(l.slice(0,100).map((function(e){return"'".concat(e,"'")})).join(", "))),u=!0===t?function(e,t,n,r){for(var o=new Set(e),i=new Set,c=0;c<=n;c+=1){(t.get(c)||new Set).forEach((function(e){var t=e.key,n=e.node,a=e.children,i=void 0===a?[]:a;o.has(t)&&!r(n)&&i.filter((function(e){return!r(e.node)})).forEach((function(e){o.add(e.key)}))}))}for(var l=new Set,u=n;u>=0;u-=1){(t.get(u)||new Set).forEach((function(e){var t=e.parent,n=e.node;if(!r(n)&&e.parent&&!l.has(e.parent.key))if(r(e.parent.node))l.add(t.key);else{var a=!0,c=!1;(t.children||[]).filter((function(e){return!r(e.node)})).forEach((function(e){var t=e.key,n=o.has(t);a&&!n&&(a=!1),c||!n&&!i.has(t)||(c=!0)})),a&&o.add(t.key),c&&i.add(t.key),l.add(t.key)}}))}return{checkedKeys:Array.from(o),halfCheckedKeys:Array.from(a(i,o))}}(s,f,d,c):function(e,t,n,r,o){for(var i=new Set(e),c=new Set(t),l=0;l<=r;l+=1){(n.get(l)||new Set).forEach((function(e){var t=e.key,n=e.node,r=e.children,a=void 0===r?[]:r;i.has(t)||c.has(t)||o(n)||a.filter((function(e){return!o(e.node)})).forEach((function(e){i.delete(e.key)}))}))}c=new Set;for(var u=new Set,s=r;s>=0;s-=1){(n.get(s)||new Set).forEach((function(e){var t=e.parent,n=e.node;if(!o(n)&&e.parent&&!u.has(e.parent.key))if(o(e.parent.node))u.add(t.key);else{var r=!0,a=!1;(t.children||[]).filter((function(e){return!o(e.node)})).forEach((function(e){var t=e.key,n=i.has(t);r&&!n&&(r=!1),a||!n&&!c.has(t)||(a=!0)})),r||i.delete(t.key),a&&c.add(t.key),u.add(t.key)}}))}return{checkedKeys:Array.from(i),halfCheckedKeys:Array.from(a(c,i))}}(s,t.halfCheckedKeys,f,d,c);return u};var o=r(n(67));function a(e,t){var n=new Set;return e.forEach((function(e){t.has(e)||n.add(e)})),n}function i(e){var t=e||{},n=t.disabled,r=t.disableCheckbox,o=t.checkable;return!(!n&&!r)||!1===o}},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(12)),i=r(n(25)),c=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=p(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),l=r(n(2)),u=r(n(624)),s=r(n(375)),f=n(26),d=r(n(374));function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}var h=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},m=s.default.Group,v=function(e){var t=c.useContext(f.ConfigContext),n=t.getPopupContainer,r=t.getPrefixCls,o=t.direction,p=e.prefixCls,v=e.type,y=e.disabled,_=e.onClick,b=e.htmlType,g=e.children,M=e.className,w=e.overlay,O=e.trigger,k=e.align,L=e.visible,x=e.onVisibleChange,z=e.placement,S=e.getPopupContainer,C=e.href,j=e.icon,E=void 0===j?c.createElement(u.default,null):j,T=e.title,P=e.buttonsRender,H=e.mouseEnterDelay,D=e.mouseLeaveDelay,Y=h(e,["prefixCls","type","disabled","onClick","htmlType","children","className","overlay","trigger","align","visible","onVisibleChange","placement","getPopupContainer","href","icon","title","buttonsRender","mouseEnterDelay","mouseLeaveDelay"]),V=r("dropdown-button",p),N={align:k,overlay:w,disabled:y,trigger:y?[]:O,onVisibleChange:x,getPopupContainer:S||n,mouseEnterDelay:H,mouseLeaveDelay:D};"visible"in e&&(N.visible=L),N.placement="placement"in e?z:"rtl"===o?"bottomLeft":"bottomRight";var F=P([c.createElement(s.default,{type:v,disabled:y,onClick:_,htmlType:b,href:C,title:T},g),c.createElement(s.default,{type:v,icon:E})]),A=(0,i.default)(F,2),R=A[0],I=A[1];return c.createElement(m,(0,a.default)({},Y,{className:(0,l.default)(V,M)}),R,c.createElement(d.default,N,I))};v.__ANT_BUTTON=!0,v.defaultProps={type:"default",buttonsRender:function(e){return e}};var y=v;t.default=y},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(625))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(626)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="EllipsisOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z"}}]},name:"ellipsis",theme:"outlined"}},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.convertLegacyProps=function(e){if("danger"===e)return{danger:!0};return{type:e}},t.default=void 0;var a=r(n(12)),i=r(n(13)),c=r(n(25)),l=r(n(8)),u=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=g(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),s=r(n(2)),f=r(n(77)),d=r(n(628)),p=n(26),h=r(n(630)),m=n(111),v=r(n(68)),y=r(n(97)),_=r(n(632)),b=n(69);function g(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(g=function(e){return e?n:t})(e)}var M=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},w=/^[\u4e00-\u9fa5]{2}$/,O=w.test.bind(w);function k(e){return"text"===e||"link"===e}function L(e,t){var n=!1,r=[];return u.Children.forEach(e,(function(e){var t=(0,l.default)(e),o="string"===t||"number"===t;if(n&&o){var a=r.length-1,i=r[a];r[a]="".concat(i).concat(e)}else r.push(e);n=o})),u.Children.map(r,(function(e){return function(e,t){if(null!=e){var n=t?" ":"";return"string"!=typeof e&&"number"!=typeof e&&"string"==typeof e.type&&O(e.props.children)?(0,b.cloneElement)(e,{children:e.props.children.split("").join(n)}):"string"==typeof e?(O(e)&&(e=e.split("").join(n)),u.createElement("span",null,e)):e}}(e,t)}))}(0,m.tuple)("default","primary","ghost","dashed","link","text"),(0,m.tuple)("circle","round"),(0,m.tuple)("submit","button","reset");var x=function(e,t){var n,r,o=e.loading,d=void 0!==o&&o,m=e.prefixCls,b=e.type,g=e.danger,w=e.shape,x=e.size,z=e.className,S=e.children,C=e.icon,j=e.ghost,E=void 0!==j&&j,T=e.block,P=void 0!==T&&T,H=e.htmlType,D=void 0===H?"button":H,Y=M(e,["loading","prefixCls","type","danger","shape","size","className","children","icon","ghost","block","htmlType"]),V=u.useContext(y.default),N=u.useState(!!d),F=(0,c.default)(N,2),A=F[0],R=F[1],I=u.useState(!1),W=(0,c.default)(I,2),U=W[0],K=W[1],B=u.useContext(p.ConfigContext),q=B.getPrefixCls,$=B.autoInsertSpaceInButton,G=B.direction,J=t||u.createRef(),Q=u.useRef(),X=function(){return 1===u.Children.count(S)&&!C&&!k(b)};r="object"===(0,l.default)(d)&&d.delay?d.delay||!0:!!d,u.useEffect((function(){clearTimeout(Q.current),"number"==typeof r?Q.current=window.setTimeout((function(){R(r)}),r):R(r)}),[r]),u.useEffect((function(){if(J&&J.current&&!1!==$){var e=J.current.textContent;X()&&O(e)?U||K(!0):U&&K(!1)}}),[J]);var Z=function(t){var n,r=e.onClick,o=e.disabled;A||o?t.preventDefault():null===(n=r)||void 0===n||n(t)};(0,v.default)(!("string"==typeof C&&C.length>2),"Button","`icon` is using ReactNode instead of string naming in v4. Please check `".concat(C,"` at https://ant.design/components/icon")),(0,v.default)(!(E&&k(b)),"Button","`link` or `text` button can't be a `ghost` button.");var ee=q("btn",m),te=!1!==$,ne="";switch(x||V){case"large":ne="lg";break;case"small":ne="sm"}var re=A?"loading":C,oe=(0,s.default)(ee,(n={},(0,i.default)(n,"".concat(ee,"-").concat(b),b),(0,i.default)(n,"".concat(ee,"-").concat(w),w),(0,i.default)(n,"".concat(ee,"-").concat(ne),ne),(0,i.default)(n,"".concat(ee,"-icon-only"),!S&&0!==S&&!!re),(0,i.default)(n,"".concat(ee,"-background-ghost"),E&&!k(b)),(0,i.default)(n,"".concat(ee,"-loading"),A),(0,i.default)(n,"".concat(ee,"-two-chinese-chars"),U&&te),(0,i.default)(n,"".concat(ee,"-block"),P),(0,i.default)(n,"".concat(ee,"-dangerous"),!!g),(0,i.default)(n,"".concat(ee,"-rtl"),"rtl"===G),n),z),ae=C&&!A?C:u.createElement(_.default,{existIcon:!!C,prefixCls:ee,loading:!!A}),ie=S||0===S?L(S,X()&&te):null,ce=(0,f.default)(Y,["navigate"]);if(void 0!==ce.href)return u.createElement("a",(0,a.default)({},ce,{className:oe,onClick:Z,ref:J}),ae,ie);var le=u.createElement("button",(0,a.default)({},Y,{type:D,className:oe,onClick:Z,ref:J}),ae,ie);return k(b)?le:u.createElement(h.default,null,le)},z=u.forwardRef(x);z.displayName="Button",z.Group=d.default,z.__ANT_BUTTON=!0;var S=z;t.default=S},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(12)),i=r(n(13)),c=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=f(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),l=r(n(2)),u=n(26),s=r(n(629));function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(f=function(e){return e?n:t})(e)}var d=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},p=function(e){return c.createElement(u.ConfigConsumer,null,(function(t){var n,r=t.getPrefixCls,o=t.direction,u=e.prefixCls,f=e.size,p=e.className,h=d(e,["prefixCls","size","className"]),m=r("btn-group",u),v="";switch(f){case"large":v="lg";break;case"small":v="sm";break;case"middle":case void 0:break;default:console.warn(new s.default(f))}var y=(0,l.default)(m,(n={},(0,i.default)(n,"".concat(m,"-").concat(v),v),(0,i.default)(n,"".concat(m,"-rtl"),"rtl"===o),n),p);return c.createElement("div",(0,a.default)({},h,{className:y}))}))};t.default=p},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(52));t.default=function e(t){return(0,o.default)(this,e),new Error("unreachable case: ".concat(JSON.stringify(t)))}},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i=r(n(52)),c=r(n(58)),l=r(n(151)),u=r(n(59)),s=r(n(60)),f=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=y(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),d=n(360),p=n(108),h=r(n(631)),m=n(26),v=n(69);function y(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(y=function(e){return e?n:t})(e)}function _(e){return!e||null===e.offsetParent||e.hidden}function b(e){var t=(e||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\d.]*)?\)/);return!(t&&t[1]&&t[2]&&t[3])||!(t[1]===t[2]&&t[2]===t[3])}var g=function(e){(0,u.default)(n,e);var t=(0,s.default)(n);function n(){var e;return(0,i.default)(this,n),(e=t.apply(this,arguments)).containerRef=f.createRef(),e.animationStart=!1,e.destroyed=!1,e.onClick=function(t,n){var r,o;if(!(!t||_(t)||t.className.indexOf("-leave")>=0)){var i=e.props.insertExtraNode;e.extraNode=document.createElement("div");var c=(0,l.default)(e).extraNode,u=e.context.getPrefixCls;c.className="".concat(u(""),"-click-animating-node");var s=e.getAttributeName();if(t.setAttribute(s,"true"),n&&"#ffffff"!==n&&"rgb(255, 255, 255)"!==n&&b(n)&&!/rgba\((?:\d*, ){3}0\)/.test(n)&&"transparent"!==n){c.style.borderColor=n;var f=(null===(r=t.getRootNode)||void 0===r?void 0:r.call(t))||t.ownerDocument,p=f instanceof Document?f.body:null!==(o=f.firstChild)&&void 0!==o?o:f;a=(0,d.updateCSS)("\n [".concat(u(""),"-click-animating-without-extra-node='true']::after, .").concat(u(""),"-click-animating-node {\n --antd-wave-shadow-color: ").concat(n,";\n }"),"antd-wave",{csp:e.csp,attachTo:p})}i&&t.appendChild(c),["transition","animation"].forEach((function(n){t.addEventListener("".concat(n,"start"),e.onTransitionStart),t.addEventListener("".concat(n,"end"),e.onTransitionEnd)}))}},e.onTransitionStart=function(t){if(!e.destroyed){var n=e.containerRef.current;t&&t.target===n&&!e.animationStart&&e.resetEffect(n)}},e.onTransitionEnd=function(t){t&&"fadeEffect"===t.animationName&&e.resetEffect(t.target)},e.bindAnimationEvent=function(t){if(t&&t.getAttribute&&!t.getAttribute("disabled")&&!(t.className.indexOf("disabled")>=0)){var n=function(n){if("INPUT"!==n.target.tagName&&!_(n.target)){e.resetEffect(t);var r=getComputedStyle(t).getPropertyValue("border-top-color")||getComputedStyle(t).getPropertyValue("border-color")||getComputedStyle(t).getPropertyValue("background-color");e.clickWaveTimeoutId=window.setTimeout((function(){return e.onClick(t,r)}),0),h.default.cancel(e.animationStartId),e.animationStart=!0,e.animationStartId=(0,h.default)((function(){e.animationStart=!1}),10)}};return t.addEventListener("click",n,!0),{cancel:function(){t.removeEventListener("click",n,!0)}}}},e.renderWave=function(t){var n=t.csp,r=e.props.children;if(e.csp=n,!f.isValidElement(r))return r;var o=e.containerRef;return(0,p.supportRef)(r)&&(o=(0,p.composeRef)(r.ref,e.containerRef)),(0,v.cloneElement)(r,{ref:o})},e}return(0,c.default)(n,[{key:"componentDidMount",value:function(){var e=this.containerRef.current;e&&1===e.nodeType&&(this.instance=this.bindAnimationEvent(e))}},{key:"componentWillUnmount",value:function(){this.instance&&this.instance.cancel(),this.clickWaveTimeoutId&&clearTimeout(this.clickWaveTimeoutId),this.destroyed=!0}},{key:"getAttributeName",value:function(){var e=this.context.getPrefixCls,t=this.props.insertExtraNode;return"".concat(e(""),t?"-click-animating":"-click-animating-without-extra-node")}},{key:"resetEffect",value:function(e){var t=this;if(e&&e!==this.extraNode&&e instanceof Element){var n=this.props.insertExtraNode,r=this.getAttributeName();e.setAttribute(r,"false"),a&&(a.innerHTML=""),n&&this.extraNode&&e.contains(this.extraNode)&&e.removeChild(this.extraNode),["transition","animation"].forEach((function(n){e.removeEventListener("".concat(n,"start"),t.onTransitionStart),e.removeEventListener("".concat(n,"end"),t.onTransitionEnd)}))}}},{key:"render",value:function(){return f.createElement(m.ConfigConsumer,null,this.renderWave)}}]),n}(f.Component);t.default=g,g.contextType=m.ConfigContext},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=c;var o=r(n(376)),a=0,i={};function c(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=a++,r=t;function c(){(r-=1)<=0?(e(),delete i[n]):i[n]=(0,o.default)(c)}return i[n]=(0,o.default)(c),n}c.cancel=function(e){void 0!==e&&(o.default.cancel(i[e]),delete i[e])},c.ids=i},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(0)),a=r(n(47)),i=r(n(157)),c=function(){return{width:0,opacity:0,transform:"scale(0)"}},l=function(e){return{width:e.scrollWidth,opacity:1,transform:"scale(1)"}},u=function(e){var t=e.prefixCls,n=!!e.loading;return e.existIcon?o.default.createElement("span",{className:"".concat(t,"-loading-icon")},o.default.createElement(i.default,null)):o.default.createElement(a.default,{visible:n,motionName:"".concat(t,"-loading-icon-motion"),removeOnLeave:!0,onAppearStart:c,onAppearActive:l,onEnterStart:c,onEnterActive:l,onLeaveStart:l,onLeaveActive:c},(function(e,n){var r=e.className,a=e.style;return o.default.createElement("span",{className:"".concat(t,"-loading-icon"),style:a,ref:n},o.default.createElement(i.default,{className:r}))}))};t.default=u},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(12)),i=r(n(52)),c=r(n(58)),l=r(n(59)),u=r(n(60)),s=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=v(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),f=n(181),d=r(n(2)),p=r(n(77)),h=r(n(163)),m=n(69);function v(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(v=function(e){return e?n:t})(e)}var y=function(e){(0,l.default)(n,e);var t=(0,u.default)(n);function n(){return(0,i.default)(this,n),t.apply(this,arguments)}return(0,c.default)(n,[{key:"renderTitle",value:function(e){var t=this.props,n=t.icon,r=t.title,o=t.level,a=t.rootPrefixCls;if(!n)return e&&1===o&&r&&"string"==typeof r?s.createElement("div",{className:"".concat(a,"-inline-collapsed-noicon")},r.charAt(0)):r;var i=(0,m.isValidElement)(r)&&"span"===r.type;return s.createElement(s.Fragment,null,n,i?r:s.createElement("span",null,r))}},{key:"render",value:function(){var e=this,t=this.props,n=t.rootPrefixCls,r=t.popupClassName;return s.createElement(h.default.Consumer,null,(function(t){var o=t.inlineCollapsed,i=t.antdMenuTheme;return s.createElement(f.SubMenu,(0,a.default)({},(0,p.default)(e.props,["icon"]),{title:e.renderTitle(o),popupClassName:(0,d.default)(n,"".concat(n,"-").concat(i),r)}))}))}}]),n}(s.Component);y.contextType=h.default,y.isSubMenu=1;var _=y;t.default=_},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(12)),i=r(n(13)),c=r(n(52)),l=r(n(58)),u=r(n(59)),s=r(n(60)),f=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=b(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),d=n(181),p=r(n(150)),h=r(n(2)),m=r(n(163)),v=r(n(378)),y=n(379),_=n(69);function b(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(b=function(e){return e?n:t})(e)}var g=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},M=function(e){(0,u.default)(n,e);var t=(0,s.default)(n);function n(){var e;return(0,c.default)(this,n),(e=t.apply(this,arguments)).renderItem=function(t){var n=t.siderCollapsed,r=e.props,o=r.level,c=r.className,l=r.children,u=r.rootPrefixCls,s=e.props,y=s.title,b=s.icon,M=s.danger,w=g(s,["title","icon","danger"]);return f.createElement(m.default.Consumer,null,(function(t){var r,s,m=t.inlineCollapsed,g=t.direction,O=y;void 0===y?O=1===o?l:"":!1===y&&(O="");var k={title:O};n||m||(k.title=null,k.visible=!1);var L=(0,p.default)(l).length;return f.createElement(v.default,(0,a.default)({},k,{placement:"rtl"===g?"left":"right",overlayClassName:"".concat(u,"-inline-collapsed-tooltip")}),f.createElement(d.Item,(0,a.default)({},w,{className:(0,h.default)((r={},(0,i.default)(r,"".concat(u,"-item-danger"),M),(0,i.default)(r,"".concat(u,"-item-only-child"),1===(b?L+1:L)),r),c),title:y}),(0,_.cloneElement)(b,{className:(0,h.default)((0,_.isValidElement)(b)?null===(s=b.props)||void 0===s?void 0:s.className:"","".concat(u,"-item-icon"))}),e.renderItemChildren(m)))}))},e}return(0,l.default)(n,[{key:"renderItemChildren",value:function(e){var t=this.props,n=t.icon,r=t.children,o=t.level,a=t.rootPrefixCls;return!n||(0,_.isValidElement)(r)&&"span"===r.type?r&&e&&1===o&&"string"==typeof r?f.createElement("div",{className:"".concat(a,"-inline-collapsed-noicon")},r.charAt(0)):r:f.createElement("span",null,r)}},{key:"render",value:function(){return f.createElement(y.SiderContext.Consumer,null,this.renderItem)}}]),n}(f.Component);t.default=M,M.isMenuItem=!0},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.getOverflowOptions=u,t.default=function(e){var t=e.arrowWidth,n=void 0===t?5:t,r=e.horizontalArrowShift,i=void 0===r?16:r,c=e.verticalArrowShift,s=void 0===c?8:c,f=e.autoAdjustOverflow,d={left:{points:["cr","cl"],offset:[-4,0]},right:{points:["cl","cr"],offset:[4,0]},top:{points:["bc","tc"],offset:[0,-4]},bottom:{points:["tc","bc"],offset:[0,4]},topLeft:{points:["bl","tc"],offset:[-(i+n),-4]},leftTop:{points:["tr","cl"],offset:[-4,-(s+n)]},topRight:{points:["br","tc"],offset:[i+n,-4]},rightTop:{points:["tl","cr"],offset:[4,-(s+n)]},bottomRight:{points:["tr","bc"],offset:[i+n,4]},rightBottom:{points:["bl","cr"],offset:[4,s+n]},bottomLeft:{points:["tl","bc"],offset:[-(i+n),4]},leftBottom:{points:["br","cl"],offset:[-4,s+n]}};return Object.keys(d).forEach((function(t){d[t]=e.arrowPointAtCenter?(0,o.default)((0,o.default)({},d[t]),{overflow:u(f),targetOffset:l}):(0,o.default)((0,o.default)({},a.placements[t]),{overflow:u(f)}),d[t].ignoreShake=!0})),d};var o=r(n(12)),a=n(636),i={adjustX:1,adjustY:1},c={adjustX:0,adjustY:0},l=[0,0];function u(e){return"boolean"==typeof e?e?i:c:(0,o.default)((0,o.default)({},c),e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.placements=void 0;var r={adjustX:1,adjustY:1},o=[0,0],a={left:{points:["cr","cl"],overflow:r,offset:[-4,0],targetOffset:o},right:{points:["cl","cr"],overflow:r,offset:[4,0],targetOffset:o},top:{points:["bc","tc"],overflow:r,offset:[0,-4],targetOffset:o},bottom:{points:["tc","bc"],overflow:r,offset:[0,4],targetOffset:o},topLeft:{points:["bl","tl"],overflow:r,offset:[0,-4],targetOffset:o},leftTop:{points:["tr","tl"],overflow:r,offset:[-4,0],targetOffset:o},topRight:{points:["br","tr"],overflow:r,offset:[0,-4],targetOffset:o},rightTop:{points:["tl","tr"],overflow:r,offset:[4,0],targetOffset:o},bottomRight:{points:["tr","br"],overflow:r,offset:[0,4],targetOffset:o},rightBottom:{points:["bl","br"],overflow:r,offset:[4,0],targetOffset:o},bottomLeft:{points:["tl","bl"],overflow:r,offset:[0,4],targetOffset:o},leftBottom:{points:["br","bl"],overflow:r,offset:[-4,0],targetOffset:o}};t.placements=a;var i=a;t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PresetColorTypes=t.PresetStatusColorTypes=void 0;var r=n(111),o=(0,r.tuple)("success","processing","error","default","warning");t.PresetStatusColorTypes=o;var a=(0,r.tuple)("pink","red","yellow","orange","cyan","green","blue","purple","geekblue","magenta","volcano","gold","lime");t.PresetColorTypes=a},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(639))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(640)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="BarsOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0z"}}]},name:"bars",theme:"outlined"}},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.Content=t.Footer=t.Header=t.LayoutContext=void 0;var a=r(n(46)),i=r(n(13)),c=r(n(25)),l=r(n(12)),u=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=d(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),s=r(n(2)),f=n(26);function d(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(d=function(e){return e?n:t})(e)}var p=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},h=u.createContext({siderHook:{addSider:function(){return null},removeSider:function(){return null}}});function m(e){var t=e.suffixCls,n=e.tagName,r=e.displayName;return function(e){var o=function(r){var o=u.useContext(f.ConfigContext).getPrefixCls,a=r.prefixCls,i=o(t,a);return u.createElement(e,(0,l.default)({prefixCls:i,tagName:n},r))};return o.displayName=r,o}}t.LayoutContext=h;var v=function(e){var t=e.prefixCls,n=e.className,r=e.children,o=e.tagName,a=p(e,["prefixCls","className","children","tagName"]),i=(0,s.default)(t,n);return u.createElement(o,(0,l.default)({className:i},a),r)},y=m({suffixCls:"layout",tagName:"section",displayName:"Layout"})((function(e){var t,n=u.useContext(f.ConfigContext).direction,r=u.useState([]),o=(0,c.default)(r,2),d=o[0],m=o[1],v=e.prefixCls,y=e.className,_=e.children,b=e.hasSider,g=e.tagName,M=p(e,["prefixCls","className","children","hasSider","tagName"]),w=(0,s.default)(v,(t={},(0,i.default)(t,"".concat(v,"-has-sider"),"boolean"==typeof b?b:d.length>0),(0,i.default)(t,"".concat(v,"-rtl"),"rtl"===n),t),y);return u.createElement(h.Provider,{value:{siderHook:{addSider:function(e){m((function(t){return[].concat((0,a.default)(t),[e])}))},removeSider:function(e){m((function(t){return t.filter((function(t){return t!==e}))}))}}}},u.createElement(g,(0,l.default)({className:w},M),_))})),_=m({suffixCls:"layout-header",tagName:"header",displayName:"Header"})(v);t.Header=_;var b=m({suffixCls:"layout-footer",tagName:"footer",displayName:"Footer"})(v);t.Footer=b;var g=m({suffixCls:"layout-content",tagName:"main",displayName:"Content"})(v);t.Content=g;var M=y;t.default=M},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e){return!isNaN(parseFloat(e))&&isFinite(e)};t.default=r},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(13)),i=r(n(25)),c=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=h(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),l=r(n(2)),u=r(n(162)),s=r(n(164)),f=n(26),d=r(n(97)),p=n(165);function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(h=function(e){return e?n:t})(e)}var m=c.forwardRef((function(e,t){var n=c.useContext(f.ConfigContext),r=n.getPrefixCls,o=n.direction,h=c.useContext(d.default),m=(0,u.default)(e.defaultValue,{value:e.value}),v=(0,i.default)(m,2),y=v[0],_=v[1];return c.createElement(p.RadioGroupContextProvider,{value:{onChange:function(t){var n=y,r=t.target.value;"value"in e||_(r);var o=e.onChange;o&&r!==n&&o(t)},value:y,disabled:e.disabled,name:e.name}},function(){var n,i=e.prefixCls,u=e.className,f=void 0===u?"":u,d=e.options,p=e.optionType,m=e.buttonStyle,v=void 0===m?"outline":m,_=e.disabled,b=e.children,g=e.size,M=e.style,w=e.id,O=e.onMouseEnter,k=e.onMouseLeave,L=r("radio",i),x="".concat(L,"-group"),z=b;if(d&&d.length>0){var S="button"===p?"".concat(L,"-button"):L;z=d.map((function(e){return"string"==typeof e?c.createElement(s.default,{key:e,prefixCls:S,disabled:_,value:e,checked:y===e},e):c.createElement(s.default,{key:"radio-group-value-options-".concat(e.value),prefixCls:S,disabled:e.disabled||_,value:e.value,checked:y===e.value,style:e.style},e.label)}))}var C=g||h,j=(0,l.default)(x,"".concat(x,"-").concat(v),(n={},(0,a.default)(n,"".concat(x,"-").concat(C),C),(0,a.default)(n,"".concat(x,"-rtl"),"rtl"===o),n),f);return c.createElement("div",{className:j,style:M,onMouseEnter:O,onMouseLeave:k,id:w,ref:t},z)}())})),v=c.memo(m);t.default=v},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(12)),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=s(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),c=r(n(164)),l=n(26),u=r(n(165));function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(s=function(e){return e?n:t})(e)}var f=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},d=function(e,t){var n=i.useContext(u.default),r=i.useContext(l.ConfigContext).getPrefixCls,o=e.prefixCls,s=f(e,["prefixCls"]),d=r("radio-button",o);return n&&(s.checked=e.value===n.value,s.disabled=e.disabled||n.disabled),i.createElement(c.default,(0,a.default)({prefixCls:d},s,{type:"radio",ref:t}))},p=i.forwardRef(d);t.default=p},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.getSortData=function e(t,n,r){var o=n.slice().sort((function(e,t){return t.multiplePriority-e.multiplePriority})),a=t.slice(),l=o.filter((function(e){var t=e.column.sorter,n=e.sortOrder;return _(t)&&n}));if(!l.length)return a;return a.sort((function(e,t){for(var n=0;n<l.length;n+=1){var r=l[n],o=r.column.sorter,a=r.sortOrder,i=_(o);if(i&&a){var c=i(e,t,a);if(0!==c)return"ascend"===a?c:-c}}return 0})).map((function(t){var o=t[r];return o?(0,c.default)((0,c.default)({},t),(0,i.default)({},r,e(o,n,r))):t}))},t.default=function(e){var t=e.prefixCls,n=e.mergedColumns,r=e.onSorterChange,o=e.sortDirections,v=e.tableLocale,_=e.showSorterTooltip,g=s.useState(b(n,!0)),w=(0,a.default)(g,2),O=w[0],k=w[1],L=s.useMemo((function(){var e=!0,t=b(n,!1);if(!t.length)return O;var r=[];function o(t){e?r.push(t):r.push((0,c.default)((0,c.default)({},t),{sortOrder:null}))}var a=null;return t.forEach((function(t){null===a?(o(t),t.sortOrder&&(!1===t.multiplePriority?e=!1:a=!0)):(a&&!1!==t.multiplePriority||(e=!1),o(t))})),r}),[n,O]),x=s.useMemo((function(){var e=L.map((function(e){return{column:e.column,order:e.sortOrder}}));return{sortColumns:e,sortColumn:e[0]&&e[0].column,sortOrder:e[0]&&e[0].order}}),[L]);function z(e){var t;t=!1!==e.multiplePriority&&L.length&&!1!==L[0].multiplePriority?[].concat((0,l.default)(L.filter((function(t){return t.key!==e.key}))),[e]):[e],k(t),r(M(t),t)}return[function(e){return function e(t,n,r,o,a,l,v,_){return(n||[]).map((function(n,b){var g=(0,m.getColumnPos)(b,_),M=n;if(M.sorter){var w=M.sortDirections||a,O=void 0===M.showSorterTooltip?v:M.showSorterTooltip,k=(0,m.getColumnKey)(M,g),L=r.find((function(e){return e.key===k})),x=L?L.sortOrder:null,z=function(e,t){if(!t)return e[0];return e[e.indexOf(t)+1]}(w,x),S=w.includes("ascend")&&s.createElement(p.default,{className:(0,f.default)("".concat(t,"-column-sorter-up"),{active:"ascend"===x})}),C=w.includes("descend")&&s.createElement(d.default,{className:(0,f.default)("".concat(t,"-column-sorter-down"),{active:"descend"===x})}),j=l||{},E=j.cancelSort,T=j.triggerAsc,P=j.triggerDesc,H=E;"descend"===z?H=P:"ascend"===z&&(H=T);var D="object"===(0,u.default)(O)?O:{title:H};M=(0,c.default)((0,c.default)({},M),{className:(0,f.default)(M.className,(0,i.default)({},"".concat(t,"-column-sort"),x)),title:function(e){var r=s.createElement("div",{className:"".concat(t,"-column-sorters")},s.createElement("span",null,(0,m.renderColumnTitle)(n.title,e)),s.createElement("span",{className:(0,f.default)("".concat(t,"-column-sorter"),(0,i.default)({},"".concat(t,"-column-sorter-full"),!(!S||!C)))},s.createElement("span",{className:"".concat(t,"-column-sorter-inner")},S,C)));return O?s.createElement(h.default,D,s.createElement("div",{className:"".concat(t,"-column-sorters-with-tooltip")},r)):r},onHeaderCell:function(e){var r=n.onHeaderCell&&n.onHeaderCell(e)||{},a=r.onClick;return r.onClick=function(e){o({column:n,key:k,sortOrder:z,multiplePriority:y(n)}),a&&a(e)},r.className=(0,f.default)(r.className,"".concat(t,"-column-has-sorters")),r}})}return"children"in M&&(M=(0,c.default)((0,c.default)({},M),{children:e(t,M.children,r,o,a,l,v,g)})),M}))}(t,e,L,z,o,v,_)},L,x,function(){return M(L)}]};var a=r(n(25)),i=r(n(13)),c=r(n(12)),l=r(n(46)),u=r(n(8)),s=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=v(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),f=r(n(2)),d=r(n(646)),p=r(n(649)),h=r(n(378)),m=n(166);function v(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(v=function(e){return e?n:t})(e)}function y(e){return"object"===(0,u.default)(e.sorter)&&"number"==typeof e.sorter.multiple&&e.sorter.multiple}function _(e){return"function"==typeof e?e:!(!e||"object"!==(0,u.default)(e)||!e.compare)&&e.compare}function b(e,t,n){var r=[];function o(e,t){r.push({column:e,key:(0,m.getColumnKey)(e,t),multiplePriority:y(e),sortOrder:e.sortOrder})}return(e||[]).forEach((function(e,a){var i=(0,m.getColumnPos)(a,n);e.children?("sortOrder"in e&&o(e,i),r=[].concat((0,l.default)(r),(0,l.default)(b(e.children,t,i)))):e.sorter&&("sortOrder"in e?o(e,i):t&&e.defaultSortOrder&&r.push({column:e,key:(0,m.getColumnKey)(e,i),multiplePriority:y(e),sortOrder:e.defaultSortOrder}))})),r}function g(e){var t=e.column;return{column:t,order:e.sortOrder,field:t.dataIndex,columnKey:t.key}}function M(e){var t=e.filter((function(e){return e.sortOrder})).map(g);return 0===t.length&&e.length?(0,c.default)((0,c.default)({},g(e[e.length-1])),{column:void 0}):t.length<=1?t[0]||{}:t}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(647))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(648)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="CaretDownOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"}}]},name:"caret-down",theme:"outlined"}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(650))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(651)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="CaretUpOutlined";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z"}}]},name:"caret-up",theme:"outlined"}},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.getFilterData=function(e,t){return t.reduce((function(e,t){var n=t.column,r=n.onFilter,o=n.filters,a=t.filteredKeys;return r&&a&&a.length?e.filter((function(e){return a.some((function(t){var n=p(o),a=n.findIndex((function(e){return String(e)===String(t)})),i=-1!==a?n[a]:t;return r(i,e)}))})):e}),e)},t.default=void 0;var a=r(n(25)),i=r(n(12)),c=r(n(46)),l=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=f(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),u=n(166),s=r(n(653));function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(f=function(e){return e?n:t})(e)}function d(e,t,n){var r=[];return(e||[]).forEach((function(e,o){var a,i=(0,u.getColumnPos)(o,n);if("children"in e)r=[].concat((0,c.default)(r),(0,c.default)(d(e.children,t,i)));else if(e.filters||"filterDropdown"in e||"onFilter"in e)if("filteredValue"in e){var l=e.filteredValue;"filterDropdown"in e||(l=null!==(a=null==l?void 0:l.map(String))&&void 0!==a?a:l),r.push({column:e,key:(0,u.getColumnKey)(e,i),filteredKeys:l,forceFiltered:e.filtered})}else r.push({column:e,key:(0,u.getColumnKey)(e,i),filteredKeys:t&&e.defaultFilteredValue?e.defaultFilteredValue:void 0,forceFiltered:e.filtered})})),r}function p(e){var t=[];return(e||[]).forEach((function(e){var n=e.value,r=e.children;t.push(n),r&&(t=[].concat((0,c.default)(t),(0,c.default)(p(r))))})),t}function h(e){var t={};return e.forEach((function(e){var n=e.key,r=e.filteredKeys,o=e.column,a=o.filters;if(o.filterDropdown)t[n]=r||null;else if(Array.isArray(r)){var i=p(a);t[n]=i.filter((function(e){return r.includes(String(e))}))}else t[n]=null})),t}var m=function(e){var t=e.prefixCls,n=e.dropdownPrefixCls,r=e.mergedColumns,o=e.onFilterChange,c=e.getPopupContainer,f=e.locale,p=l.useState(d(r,!0)),m=(0,a.default)(p,2),v=m[0],y=m[1],_=l.useMemo((function(){var e=d(r,!1);return e.every((function(e){return void 0===e.filteredKeys}))?v:e}),[r,v]),b=l.useCallback((function(){return h(_)}),[_]),g=function(e){var t=_.filter((function(t){return t.key!==e.key}));t.push(e),y(t),o(h(t),t)};return[function(e){return function e(t,n,r,o,a,c,f,d){return r.map((function(r,p){var h=(0,u.getColumnPos)(p,d),m=r.filterMultiple,v=void 0===m||m,y=r;if(y.filters||y.filterDropdown){var _=(0,u.getColumnKey)(y,h),b=o.find((function(e){var t=e.key;return _===t}));y=(0,i.default)((0,i.default)({},y),{title:function(e){return l.createElement(s.default,{prefixCls:"".concat(t,"-filter"),dropdownPrefixCls:n,column:y,columnKey:_,filterState:b,filterMultiple:v,triggerFilter:a,locale:f,getPopupContainer:c},(0,u.renderColumnTitle)(r.title,e))}})}return"children"in y&&(y=(0,i.default)((0,i.default)({},y),{children:e(t,n,y.children,o,a,c,f,h)})),y}))}(t,n,e,_,g,c,f)},_,b]};t.default=m},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(13)),i=r(n(25)),c=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=g(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),l=r(n(2)),u=r(n(654)),s=r(n(720)),f=r(n(375)),d=r(n(377)),p=r(n(369)),h=r(n(380)),m=r(n(373)),v=r(n(357)),y=r(n(723)),_=r(n(724)),b=n(156);function g(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(g=function(e){return e?n:t})(e)}var M=d.default.SubMenu,w=d.default.Item;var O=function(e){var t,n=e.prefixCls,r=e.column,o=e.dropdownPrefixCls,g=e.columnKey,O=e.filterMultiple,k=e.filterState,L=e.triggerFilter,x=e.locale,z=e.children,S=e.getPopupContainer,C=r.filterDropdownVisible,j=r.onFilterDropdownVisibleChange,E=c.useState(!1),T=(0,i.default)(E,2),P=T[0],H=T[1],D=!(!k||!(null===(t=k.filteredKeys)||void 0===t?void 0:t.length)&&!k.forceFiltered),Y=function(e){H(e),null==j||j(e)},V="boolean"==typeof C?C:P,N=null==k?void 0:k.filteredKeys,F=(0,_.default)(N||[]),A=(0,i.default)(F,2),R=A[0],I=A[1],W=function(e){var t=e.selectedKeys;I(t)};c.useEffect((function(){W({selectedKeys:N||[]})}),[N]);var U=c.useState([]),K=(0,i.default)(U,2),B=K[0],q=K[1],$=c.useRef();c.useEffect((function(){return function(){window.clearTimeout($.current)}}),[]);var G,J=function(e){var t=e&&e.length?e:null;return null!==t||k&&k.filteredKeys?(0,u.default)(t,null==k?void 0:k.filteredKeys)?null:void L({column:r,key:g,filteredKeys:t}):null},Q=function(){Y(!1),J(R())},X=function(){I([]),Y(!1),J([])},Z=(0,l.default)((0,a.default)({},"".concat(o,"-menu-without-submenu"),!(r.filters||[]).some((function(e){return e.children}))));if("function"==typeof r.filterDropdown)G=r.filterDropdown({prefixCls:"".concat(o,"-custom"),setSelectedKeys:function(e){return W({selectedKeys:e})},selectedKeys:R(),confirm:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{closeDropdown:!0},t=e.closeDropdown;t&&Y(!1),J(R())},clearFilters:X,filters:r.filters,visible:V});else if(r.filterDropdown)G=r.filterDropdown;else{var ee=R()||[];G=c.createElement(c.Fragment,null,c.createElement(d.default,{multiple:O,prefixCls:"".concat(o,"-menu"),className:Z,onClick:function(){window.clearTimeout($.current)},onSelect:W,onDeselect:W,selectedKeys:ee,getPopupContainer:S,openKeys:B,onOpenChange:function(e){$.current=window.setTimeout((function(){q(e)}))}},function e(t){var n=t.filters,r=t.prefixCls,o=t.filteredKeys,a=t.filterMultiple,i=t.locale;return 0===n.length?c.createElement("div",{style:{margin:"16px 0"}},c.createElement(v.default,{image:v.default.PRESENTED_IMAGE_SIMPLE,description:i.filterEmptyText,imageStyle:{height:24}})):n.map((function(t,n){var l=String(t.value);if(t.children)return c.createElement(M,{key:l||n,title:t.text,popupClassName:"".concat(r,"-dropdown-submenu")},e({filters:t.children,prefixCls:r,filteredKeys:o,filterMultiple:a,locale:i}));var u=a?p.default:h.default;return c.createElement(w,{key:void 0!==t.value?l:n},c.createElement(u,{checked:o.includes(l)}),c.createElement("span",null,t.text))}))}({filters:r.filters||[],prefixCls:n,filteredKeys:R(),filterMultiple:O,locale:x})),c.createElement("div",{className:"".concat(n,"-dropdown-btns")},c.createElement(f.default,{type:"link",size:"small",disabled:0===ee.length,onClick:X},x.filterReset),c.createElement(f.default,{type:"primary",size:"small",onClick:Q},x.filterConfirm)))}var te,ne=c.createElement(y.default,{className:"".concat(n,"-dropdown")},G);te="function"==typeof r.filterIcon?r.filterIcon(D):r.filterIcon?r.filterIcon:c.createElement(s.default,null);var re=c.useContext(b.ConfigContext).direction;return c.createElement("div",{className:(0,l.default)("".concat(n,"-column"))},c.createElement("span",{className:"".concat(n,"-column-title")},z),c.createElement("span",{className:(0,l.default)("".concat(n,"-trigger-container"),(0,a.default)({},"".concat(n,"-trigger-container-open"),V)),onClick:function(e){e.stopPropagation()}},c.createElement(m.default,{overlay:ne,trigger:["click"],visible:V,onVisibleChange:function(e){e&&void 0!==N&&I(N||[]),Y(e),e||r.filterDropdown||Q()},getPopupContainer:S,placement:"rtl"===re?"bottomLeft":"bottomRight"},c.createElement("span",{role:"button",tabIndex:-1,className:(0,l.default)("".concat(n,"-trigger"),{active:D})},te))))};t.default=O},function(e,t,n){var r=n(655);e.exports=function(e,t){return r(e,t)}},function(e,t,n){var r=n(656),o=n(96);e.exports=function e(t,n,a,i,c){return t===n||(null==t||null==n||!o(t)&&!o(n)?t!=t&&n!=n:r(t,n,a,i,e,c))}},function(e,t,n){var r=n(657),o=n(385),a=n(689),i=n(693),c=n(715),l=n(168),u=n(386),s=n(387),f="[object Object]",d=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,p,h,m){var v=l(e),y=l(t),_=v?"[object Array]":c(e),b=y?"[object Array]":c(t),g=(_="[object Arguments]"==_?f:_)==f,M=(b="[object Arguments]"==b?f:b)==f,w=_==b;if(w&&u(e)){if(!u(t))return!1;v=!0,g=!1}if(w&&!g)return m||(m=new r),v||s(e)?o(e,t,n,p,h,m):a(e,t,_,n,p,h,m);if(!(1&n)){var O=g&&d.call(e,"__wrapped__"),k=M&&d.call(t,"__wrapped__");if(O||k){var L=O?e.value():e,x=k?t.value():t;return m||(m=new r),h(L,x,n,p,m)}}return!!w&&(m||(m=new r),i(e,t,n,p,h,m))}},function(e,t,n){var r=n(112),o=n(663),a=n(664),i=n(665),c=n(666),l=n(667);function u(e){var t=this.__data__=new r(e);this.size=t.size}u.prototype.clear=o,u.prototype.delete=a,u.prototype.get=i,u.prototype.has=c,u.prototype.set=l,e.exports=u},function(e,t){e.exports=function(){this.__data__=[],this.size=0}},function(e,t,n){var r=n(113),o=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():o.call(t,n,1),--this.size,!0)}},function(e,t,n){var r=n(113);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},function(e,t,n){var r=n(113);e.exports=function(e){return r(this.__data__,e)>-1}},function(e,t,n){var r=n(113);e.exports=function(e,t){var n=this.__data__,o=r(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}},function(e,t,n){var r=n(112);e.exports=function(){this.__data__=new r,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(112),o=n(167),a=n(384);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var i=n.__data__;if(!o||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new a(i)}return n.set(e,t),this.size=n.size,this}},function(e,t,n){var r=n(382),o=n(669),a=n(110),i=n(383),c=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,s=l.toString,f=u.hasOwnProperty,d=RegExp("^"+s.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!a(e)||o(e))&&(r(e)?d:c).test(i(e))}},function(e,t,n){var r,o=n(670),a=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!a&&a in e}},function(e,t,n){var r=n(53)["__core-js_shared__"];e.exports=r},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t,n){var r=n(673),o=n(112),a=n(167);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(a||o),string:new r}}},function(e,t,n){var r=n(674),o=n(675),a=n(676),i=n(677),c=n(678);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=o,l.prototype.get=a,l.prototype.has=i,l.prototype.set=c,e.exports=l},function(e,t,n){var r=n(114);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},function(e,t){e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},function(e,t,n){var r=n(114),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return o.call(t,e)?t[e]:void 0}},function(e,t,n){var r=n(114),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:o.call(t,e)}},function(e,t,n){var r=n(114);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},function(e,t,n){var r=n(115);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},function(e,t){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},function(e,t,n){var r=n(115);e.exports=function(e){return r(this,e).get(e)}},function(e,t,n){var r=n(115);e.exports=function(e){return r(this,e).has(e)}},function(e,t,n){var r=n(115);e.exports=function(e,t){var n=r(this,e),o=n.size;return n.set(e,t),this.size+=n.size==o?0:1,this}},function(e,t,n){var r=n(384),o=n(685),a=n(686);function i(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}i.prototype.add=i.prototype.push=o,i.prototype.has=a,e.exports=i},function(e,t){e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}},function(e,t){e.exports=function(e,t){return e.has(t)}},function(e,t,n){var r=n(152),o=n(690),a=n(381),i=n(385),c=n(691),l=n(692),u=r?r.prototype:void 0,s=u?u.valueOf:void 0;e.exports=function(e,t,n,r,u,f,d){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!f(new o(e),new o(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return a(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var p=c;case"[object Set]":var h=1&r;if(p||(p=l),e.size!=t.size&&!h)return!1;var m=d.get(e);if(m)return m==t;r|=2,d.set(e,t);var v=i(p(e),p(t),r,u,f,d);return d.delete(e),v;case"[object Symbol]":if(s)return s.call(e)==s.call(t)}return!1}},function(e,t,n){var r=n(53).Uint8Array;e.exports=r},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},function(e,t,n){var r=n(694),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,a,i,c){var l=1&n,u=r(e),s=u.length;if(s!=r(t).length&&!l)return!1;for(var f=s;f--;){var d=u[f];if(!(l?d in t:o.call(t,d)))return!1}var p=c.get(e),h=c.get(t);if(p&&h)return p==t&&h==e;var m=!0;c.set(e,t),c.set(t,e);for(var v=l;++f<s;){var y=e[d=u[f]],_=t[d];if(a)var b=l?a(_,y,d,t,e,c):a(y,_,d,e,t,c);if(!(void 0===b?y===_||i(y,_,n,a,c):b)){m=!1;break}v||(v="constructor"==d)}if(m&&!v){var g=e.constructor,M=t.constructor;g==M||!("constructor"in e)||!("constructor"in t)||"function"==typeof g&&g instanceof g&&"function"==typeof M&&M instanceof M||(m=!1)}return c.delete(e),c.delete(t),m}},function(e,t,n){var r=n(695),o=n(697),a=n(700);e.exports=function(e){return r(e,a,o)}},function(e,t,n){var r=n(696),o=n(168);e.exports=function(e,t,n){var a=t(e);return o(e)?a:r(a,n(e))}},function(e,t){e.exports=function(e,t){for(var n=-1,r=t.length,o=e.length;++n<r;)e[o+n]=t[n];return e}},function(e,t,n){var r=n(698),o=n(699),a=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,c=i?function(e){return null==e?[]:(e=Object(e),r(i(e),(function(t){return a.call(e,t)})))}:o;e.exports=c},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,o=0,a=[];++n<r;){var i=e[n];t(i,n,e)&&(a[o++]=i)}return a}},function(e,t){e.exports=function(){return[]}},function(e,t,n){var r=n(701),o=n(710),a=n(714);e.exports=function(e){return a(e)?r(e):o(e)}},function(e,t,n){var r=n(702),o=n(703),a=n(168),i=n(386),c=n(706),l=n(387),u=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=a(e),s=!n&&o(e),f=!n&&!s&&i(e),d=!n&&!s&&!f&&l(e),p=n||s||f||d,h=p?r(e.length,String):[],m=h.length;for(var v in e)!t&&!u.call(e,v)||p&&("length"==v||f&&("offset"==v||"parent"==v)||d&&("buffer"==v||"byteLength"==v||"byteOffset"==v)||c(v,m))||h.push(v);return h}},function(e,t){e.exports=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}},function(e,t,n){var r=n(704),o=n(96),a=Object.prototype,i=a.hasOwnProperty,c=a.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(e){return o(e)&&i.call(e,"callee")&&!c.call(e,"callee")};e.exports=l},function(e,t,n){var r=n(95),o=n(96);e.exports=function(e){return o(e)&&"[object Arguments]"==r(e)}},function(e,t){e.exports=function(){return!1}},function(e,t){var n=/^(?:0|[1-9]\d*)$/;e.exports=function(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&n.test(e))&&e>-1&&e%1==0&&e<t}},function(e,t,n){var r=n(95),o=n(388),a=n(96),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,e.exports=function(e){return a(e)&&o(e.length)&&!!i[r(e)]}},function(e,t){e.exports=function(e){return function(t){return e(t)}}},function(e,t,n){(function(e){var r=n(352),o=t&&!t.nodeType&&t,a=o&&"object"==typeof e&&e&&!e.nodeType&&e,i=a&&a.exports===o&&r.process,c=function(){try{var e=a&&a.require&&a.require("util").types;return e||i&&i.binding&&i.binding("util")}catch(e){}}();e.exports=c}).call(this,n(143)(e))},function(e,t,n){var r=n(711),o=n(712),a=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=[];for(var n in Object(e))a.call(e,n)&&"constructor"!=n&&t.push(n);return t}},function(e,t){var n=Object.prototype;e.exports=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||n)}},function(e,t,n){var r=n(713)(Object.keys,Object);e.exports=r},function(e,t){e.exports=function(e,t){return function(n){return e(t(n))}}},function(e,t,n){var r=n(382),o=n(388);e.exports=function(e){return null!=e&&o(e.length)&&!r(e)}},function(e,t,n){var r=n(716),o=n(167),a=n(717),i=n(718),c=n(719),l=n(95),u=n(383),s=u(r),f=u(o),d=u(a),p=u(i),h=u(c),m=l;(r&&"[object DataView]"!=m(new r(new ArrayBuffer(1)))||o&&"[object Map]"!=m(new o)||a&&"[object Promise]"!=m(a.resolve())||i&&"[object Set]"!=m(new i)||c&&"[object WeakMap]"!=m(new c))&&(m=function(e){var t=l(e),n="[object Object]"==t?e.constructor:void 0,r=n?u(n):"";if(r)switch(r){case s:return"[object DataView]";case f:return"[object Map]";case d:return"[object Promise]";case p:return"[object Set]";case h:return"[object WeakMap]"}return t}),e.exports=m},function(e,t,n){var r=n(88)(n(53),"DataView");e.exports=r},function(e,t,n){var r=n(88)(n(53),"Promise");e.exports=r},function(e,t,n){var r=n(88)(n(53),"Set");e.exports=r},function(e,t,n){var r=n(88)(n(53),"WeakMap");e.exports=r},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(r=n(721))&&r.__esModule?r:{default:r};t.default=o,e.exports=o},function(e,t,n){"use strict";var r=n(5),o=n(10);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(0)),i=r(n(722)),c=r(n(29)),l=function(e,t){return a.createElement(c.default,Object.assign({},e,{ref:t,icon:i.default}))};l.displayName="FilterFilled";var u=a.forwardRef(l);t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z"}}]},name:"filter",theme:"filled"}},function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=a(t);if(n&&n.has(e))return n.get(e);var o={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var c in e)if("default"!==c&&Object.prototype.hasOwnProperty.call(e,c)){var l=i?Object.getOwnPropertyDescriptor(e,c):null;l&&(l.get||l.set)?Object.defineProperty(o,c,l):o[c]=e[c]}o.default=e,n&&n.set(e,o);return o}(n(0));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(a=function(e){return e?n:t})(e)}var i=function(e){return o.createElement("div",{className:e.className,onClick:function(e){return e.stopPropagation()}},e.children)};t.default=i},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=a.useRef(e),n=(0,i.default)();return[function(){return t.current},function(e){t.current=e,n()}]};var a=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=c(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var l=a?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(r,i,l):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),i=r(n(725));function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:t})(e)}},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=i.useReducer((function(e){return e+1}),0);return(0,a.default)(e,2)[1]};var a=r(n(25)),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=c(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var l=a?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(r,i,l):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0));function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:t})(e)}},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return[i.useCallback((function(t){return function e(t,n){return t.map((function(t){var r=(0,a.default)({},t);return r.title=(0,c.renderColumnTitle)(t.title,n),"children"in r&&(r.children=e(r.children,n)),r}))}(t,e)}),[e])]};var a=r(n(12)),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=l(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),c=n(166);function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(l=function(e){return e?n:t})(e)}},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(n(13)),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=l(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(0)),c=r(n(2));function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(l=function(e){return e?n:t})(e)}var u=function(e){return function(t){var n,r=t.prefixCls,o=t.onExpand,l=t.record,u=t.expanded,s=t.expandable,f="".concat(r,"-row-expand-icon");return i.createElement("button",{type:"button",onClick:function(e){o(l,e),e.stopPropagation()},className:(0,c.default)(f,(n={},(0,a.default)(n,"".concat(f,"-spaced"),!s),(0,a.default)(n,"".concat(f,"-expanded"),s&&u),(0,a.default)(n,"".concat(f,"-collapsed"),s&&!u),n)),"aria-label":u?e.collapse:e.expand})}};t.default=u},function(e,t,n){"use strict";var r=n(5),o=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.getContainer,r=void 0===n?function(){return window}:n,o=t.callback,l=t.duration,u=void 0===l?450:l,s=r(),f=(0,i.default)(s,!0),d=Date.now(),p=function t(){var n=Date.now()-d,r=(0,c.easeInOutCubic)(n>u?u:n,f,e,u);(0,i.isWindow)(s)?s.scrollTo(window.pageXOffset,r):s instanceof HTMLDocument||"HTMLDocument"===s.constructor.name?s.documentElement.scrollTop=r:s.scrollTop=r,n<u?(0,a.default)(t):"function"==typeof o&&o()};(0,a.default)(p)};var a=r(n(376)),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=l(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(729)),c=n(730);function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(l=function(e){return e?n:t})(e)}},function(e,t,n){"use strict";function r(e){return null!=e&&e===e.window}Object.defineProperty(t,"__esModule",{value:!0}),t.isWindow=r,t.default=function(e,t){var n;if("undefined"==typeof window)return 0;var o=t?"scrollTop":"scrollLeft",a=0;r(e)?a=e[t?"pageYOffset":"pageXOffset"]:e instanceof Document?a=e.documentElement[o]:e&&(a=e[o]);e&&!r(e)&&"number"!=typeof a&&(a=null===(n=(e.ownerDocument||e).documentElement)||void 0===n?void 0:n[o]);return a}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.easeInOutCubic=function(e,t,n,r){var o=n-t;if((e/=r/2)<1)return o/2*e*e*e+t;return o/2*((e-=2)*e*e+2)+t}},function(e,t,n){"use strict";var r=n(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(154)).default;t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e){return null};t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e){return null};t.default=r},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o,a=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=l();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}n.default=e,t&&t.set(e,n);return n}(n(0)),i=(o=n(2))&&o.__esModule?o:{default:o},c=n(32);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=function(e){return a.createElement(c.ConfigConsumer,null,(function(t){var n,r=t.getPrefixCls,o=e.prefixCls,c=e.className,l=void 0===c?"":c,s=r("input-group",o),f=(0,i.default)(s,(u(n={},"".concat(s,"-lg"),"large"===e.size),u(n,"".concat(s,"-sm"),"small"===e.size),u(n,"".concat(s,"-compact"),e.compact),n),l);return a.createElement("span",{className:f,style:e.style,onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,onFocus:e.onFocus,onBlur:e.onBlur},e.children)}))};t.default=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==d(e)&&"function"!=typeof e)return{default:e};var t=f();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}n.default=e,t&&t.set(e,n);return n}(n(0)),o=s(n(2)),a=n(738),i=s(n(98)),c=s(n(34)),l=s(n(54)),u=n(32);function s(e){return e&&e.__esModule?e:{default:e}}function f(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return f=function(){return e},e}function d(e){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(){return(h=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function m(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function y(e,t){return(y=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function _(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=g(e);if(t){var o=g(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return b(this,n)}}function b(e,t){return!t||"object"!==d(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function g(e){return(g=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var M=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},w=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&y(e,t)}(d,e);var t,n,s,f=_(d);function d(){var e;return m(this,d),(e=f.apply(this,arguments)).saveInput=function(t){e.input=t},e.onChange=function(t){var n=e.props,r=n.onChange,o=n.onSearch;t&&t.target&&"click"===t.type&&o&&o(t.target.value,t),r&&r(t)},e.onSearch=function(t){var n=e.props,r=n.onSearch,o=n.loading,i=n.disabled;o||i||(r&&r(e.input.input.value,t),(0,a.isMobile)({tablet:!0})||e.input.focus())},e.renderLoading=function(t){var n=e.props,o=n.enterButton,a=n.size;return o?r.createElement(l.default,{className:"".concat(t,"-button"),type:"primary",size:a,key:"enterButton"},r.createElement(c.default,{type:"loading"})):r.createElement(c.default,{className:"".concat(t,"-icon"),type:"loading",key:"loadingIcon"})},e.renderSuffix=function(t){var n=e.props,o=n.suffix,a=n.enterButton;if(n.loading&&!a)return[o,e.renderLoading(t)];if(a)return o;var i=r.createElement(c.default,{className:"".concat(t,"-icon"),type:"search",key:"searchIcon",onClick:e.onSearch});return o?[r.isValidElement(o)?r.cloneElement(o,{key:"suffix"}):null,i]:i},e.renderAddonAfter=function(t){var n,o=e.props,a=o.enterButton,i=o.size,u=o.disabled,s=o.addonAfter,f=o.loading,d="".concat(t,"-button");if(f&&a)return[e.renderLoading(t),s];if(!a)return s;var p=a,m=p.type&&!0===p.type.__ANT_BUTTON;return n=m||"button"===p.type?r.cloneElement(p,h({onClick:e.onSearch,key:"enterButton"},m?{className:d,size:i}:{})):r.createElement(l.default,{className:d,type:"primary",size:i,disabled:u,key:"enterButton",onClick:e.onSearch},!0===a?r.createElement(c.default,{type:"search"}):a),s?[n,r.isValidElement(s)?r.cloneElement(s,{key:"addonAfter"}):null]:n},e.renderSearch=function(t){var n=t.getPrefixCls,a=e.props,c=a.prefixCls,l=a.inputPrefixCls,u=a.size,s=a.enterButton,f=a.className,d=M(a,["prefixCls","inputPrefixCls","size","enterButton","className"]);delete d.onSearch,delete d.loading;var m,v,y=n("input-search",c),_=n("input",l);s?m=(0,o.default)(y,f,(p(v={},"".concat(y,"-enter-button"),!!s),p(v,"".concat(y,"-").concat(u),!!u),v)):m=(0,o.default)(y,f);return r.createElement(i.default,h({onPressEnter:e.onSearch},d,{size:u,prefixCls:_,addonAfter:e.renderAddonAfter(y),suffix:e.renderSuffix(y),onChange:e.onChange,ref:e.saveInput,className:m}))},e}return t=d,(n=[{key:"focus",value:function(){this.input.focus()}},{key:"blur",value:function(){this.input.blur()}},{key:"render",value:function(){return r.createElement(u.ConfigConsumer,null,this.renderSearch)}}])&&v(t.prototype,n),s&&v(t,s),d}(r.Component);t.default=w,w.defaultProps={enterButton:!1}},function(e,t,n){"use strict";e.exports=a,e.exports.isMobile=a,e.exports.default=a;var r=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,o=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i;function a(e){e||(e={});var t=e.ua;if(t||"undefined"==typeof navigator||(t=navigator.userAgent),t&&t.headers&&"string"==typeof t.headers["user-agent"]&&(t=t.headers["user-agent"]),"string"!=typeof t)return!1;var n=e.tablet?o.test(t):r.test(t);return!n&&e.tablet&&e.featureDetect&&navigator&&navigator.maxTouchPoints>1&&-1!==t.indexOf("Macintosh")&&-1!==t.indexOf("Safari")&&(n=!0),n}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=h(n(0)),o=h(n(3)),a=d(n(2)),i=n(80),c=d(n(78)),l=d(n(34)),u=n(32),s=d(n(740)),f=n(79);function d(e){return e&&e.__esModule?e:{default:e}}function p(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return p=function(){return e},e}function h(e){if(e&&e.__esModule)return e;if(null===e||"object"!==w(e)&&"function"!=typeof e)return{default:e};var t=p();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function m(){return(m=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function y(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function _(e,t){return(_=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function b(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=M(e);if(t){var o=M(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return g(this,n)}}function g(e,t){return!t||"object"!==w(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function M(e){return(M=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function w(e){return(w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var O=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},k=/^[\u4e00-\u9fa5]{2}$/,L=k.test.bind(k);function x(e,t){var n=!1,o=[];return r.Children.forEach(e,(function(e){var t=w(e),r="string"===t||"number"===t;if(n&&r){var a=o.length-1,i=o[a];o[a]="".concat(i).concat(e)}else o.push(e);n=r})),r.Children.map(o,(function(e){return function(e,t){if(null!=e){var n=t?" ":"";return"string"!=typeof e&&"number"!=typeof e&&"string"==typeof e.type&&L(e.props.children)?r.cloneElement(e,{},e.props.children.split("").join(n)):"string"==typeof e?(L(e)&&(e=e.split("").join(n)),r.createElement("span",null,e)):e}}(e,t)}))}(0,f.tuple)("default","primary","ghost","dashed","danger","link");var z=(0,f.tuple)("circle","circle-outline","round"),S=(0,f.tuple)("large","default","small"),C=(0,f.tuple)("submit","button","reset"),j=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_(e,t)}(f,e);var t,n,o,i=b(f);function f(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,f),(t=i.call(this,e)).saveButtonRef=function(e){t.buttonNode=e},t.handleClick=function(e){var n=t.state.loading,r=t.props.onClick;n||r&&r(e)},t.renderButton=function(e){var n,o=e.getPrefixCls,i=e.autoInsertSpaceInButton,u=t.props,f=u.prefixCls,d=u.type,p=u.shape,h=u.size,y=u.className,_=u.children,b=u.icon,g=u.ghost,M=u.block,w=O(u,["prefixCls","type","shape","size","className","children","icon","ghost","block"]),k=t.state,L=k.loading,z=k.hasTwoCNChar,S=o("btn",f),C=!1!==i,j="";switch(h){case"large":j="lg";break;case"small":j="sm"}var E=L?"loading":b,T=(0,a.default)(S,y,(v(n={},"".concat(S,"-").concat(d),d),v(n,"".concat(S,"-").concat(p),p),v(n,"".concat(S,"-").concat(j),j),v(n,"".concat(S,"-icon-only"),!_&&0!==_&&E),v(n,"".concat(S,"-loading"),!!L),v(n,"".concat(S,"-background-ghost"),g),v(n,"".concat(S,"-two-chinese-chars"),z&&C),v(n,"".concat(S,"-block"),M),n)),P=E?r.createElement(l.default,{type:E}):null,H=_||0===_?x(_,t.isNeedInserted()&&C):null,D=(0,c.default)(w,["htmlType","loading"]);if(void 0!==D.href)return r.createElement("a",m({},D,{className:T,onClick:t.handleClick,ref:t.saveButtonRef}),P,H);var Y=w,V=Y.htmlType,N=O(Y,["htmlType"]),F=r.createElement("button",m({},(0,c.default)(N,["loading"]),{type:V,className:T,onClick:t.handleClick,ref:t.saveButtonRef}),P,H);return"link"===d?F:r.createElement(s.default,null,F)},t.state={loading:e.loading,hasTwoCNChar:!1},t}return t=f,(n=[{key:"componentDidMount",value:function(){this.fixTwoCNChar()}},{key:"componentDidUpdate",value:function(e){var t=this;this.fixTwoCNChar(),e.loading&&"boolean"!=typeof e.loading&&clearTimeout(this.delayTimeout);var n=this.props.loading;n&&"boolean"!=typeof n&&n.delay?this.delayTimeout=window.setTimeout((function(){t.setState({loading:n})}),n.delay):e.loading!==n&&this.setState({loading:n})}},{key:"componentWillUnmount",value:function(){this.delayTimeout&&clearTimeout(this.delayTimeout)}},{key:"fixTwoCNChar",value:function(){if(this.buttonNode){var e=this.buttonNode.textContent;this.isNeedInserted()&&L(e)?this.state.hasTwoCNChar||this.setState({hasTwoCNChar:!0}):this.state.hasTwoCNChar&&this.setState({hasTwoCNChar:!1})}}},{key:"isNeedInserted",value:function(){var e=this.props,t=e.icon,n=e.children,o=e.type;return 1===r.Children.count(n)&&!t&&"link"!==o}},{key:"render",value:function(){return r.createElement(u.ConfigConsumer,null,this.renderButton)}}])&&y(t.prototype,n),o&&y(t,o),f}(r.Component);j.__ANT_BUTTON=!0,j.defaultProps={loading:!1,ghost:!1,block:!1,htmlType:"button"},j.propTypes={type:o.string,shape:o.oneOf(z),size:o.oneOf(S),htmlType:o.oneOf(C),onClick:o.func,loading:o.oneOfType([o.bool,o.object]),className:o.string,icon:o.string,block:o.bool,title:o.string},(0,i.polyfill)(j);var E=j;t.default=E},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==f(e)&&"function"!=typeof e)return{default:e};var t=s();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}n.default=e,t&&t.set(e,n);return n}(n(0)),a=n(11),i=u(n(741)),c=u(n(390)),l=n(32);function u(e){return e&&e.__esModule?e:{default:e}}function s(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return s=function(){return e},e}function f(e){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function p(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function m(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=_(e);if(t){var o=_(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return v(this,n)}}function v(e,t){return!t||"object"!==f(t)&&"function"!=typeof t?y(e):t}function y(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _(e){return(_=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function b(e){return!e||null===e.offsetParent}function g(e){var t=(e||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\.\d]*)?\)/);return!(t&&t[1]&&t[2]&&t[3])||!(t[1]===t[2]&&t[2]===t[3])}var M=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&h(e,t)}(f,e);var t,n,u,s=m(f);function f(){var e;return d(this,f),(e=s.apply(this,arguments)).animationStart=!1,e.destroy=!1,e.onClick=function(t,n){if(!(!t||b(t)||t.className.indexOf("-leave")>=0)){var o=e.props.insertExtraNode;e.extraNode=document.createElement("div");var a=y(e).extraNode;a.className="ant-click-animating-node";var c=e.getAttributeName();t.setAttribute(c,"true"),r=r||document.createElement("style"),n&&"#ffffff"!==n&&"rgb(255, 255, 255)"!==n&&g(n)&&!/rgba\(\d*, \d*, \d*, 0\)/.test(n)&&"transparent"!==n&&(e.csp&&e.csp.nonce&&(r.nonce=e.csp.nonce),a.style.borderColor=n,r.innerHTML="\n [ant-click-animating-without-extra-node='true']::after, .ant-click-animating-node {\n --antd-wave-shadow-color: ".concat(n,";\n }"),document.body.contains(r)||document.body.appendChild(r)),o&&t.appendChild(a),i.default.addStartEventListener(t,e.onTransitionStart),i.default.addEndEventListener(t,e.onTransitionEnd)}},e.onTransitionStart=function(t){if(!e.destroy){var n=(0,a.findDOMNode)(y(e));t&&t.target===n&&(e.animationStart||e.resetEffect(n))}},e.onTransitionEnd=function(t){t&&"fadeEffect"===t.animationName&&e.resetEffect(t.target)},e.bindAnimationEvent=function(t){if(t&&t.getAttribute&&!t.getAttribute("disabled")&&!(t.className.indexOf("disabled")>=0)){var n=function(n){if("INPUT"!==n.target.tagName&&!b(n.target)){e.resetEffect(t);var r=getComputedStyle(t).getPropertyValue("border-top-color")||getComputedStyle(t).getPropertyValue("border-color")||getComputedStyle(t).getPropertyValue("background-color");e.clickWaveTimeoutId=window.setTimeout((function(){return e.onClick(t,r)}),0),c.default.cancel(e.animationStartId),e.animationStart=!0,e.animationStartId=(0,c.default)((function(){e.animationStart=!1}),10)}};return t.addEventListener("click",n,!0),{cancel:function(){t.removeEventListener("click",n,!0)}}}},e.renderWave=function(t){var n=t.csp,r=e.props.children;return e.csp=n,r},e}return t=f,(n=[{key:"componentDidMount",value:function(){var e=(0,a.findDOMNode)(this);e&&1===e.nodeType&&(this.instance=this.bindAnimationEvent(e))}},{key:"componentWillUnmount",value:function(){this.instance&&this.instance.cancel(),this.clickWaveTimeoutId&&clearTimeout(this.clickWaveTimeoutId),this.destroy=!0}},{key:"getAttributeName",value:function(){return this.props.insertExtraNode?"ant-click-animating":"ant-click-animating-without-extra-node"}},{key:"resetEffect",value:function(e){if(e&&e!==this.extraNode&&e instanceof Element){var t=this.props.insertExtraNode,n=this.getAttributeName();e.setAttribute(n,"false"),r&&(r.innerHTML=""),t&&this.extraNode&&e.contains(this.extraNode)&&e.removeChild(this.extraNode),i.default.removeStartEventListener(e,this.onTransitionStart),i.default.removeEndEventListener(e,this.onTransitionEnd)}}},{key:"render",value:function(){return o.createElement(l.ConfigConsumer,null,this.renderWave)}}])&&p(t.prototype,n),u&&p(t,u),f}(o.Component);t.default=M},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={transitionstart:{transition:"transitionstart",WebkitTransition:"webkitTransitionStart",MozTransition:"mozTransitionStart",OTransition:"oTransitionStart",msTransition:"MSTransitionStart"},animationstart:{animation:"animationstart",WebkitAnimation:"webkitAnimationStart",MozAnimation:"mozAnimationStart",OAnimation:"oAnimationStart",msAnimation:"MSAnimationStart"}},o={transitionend:{transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"mozTransitionEnd",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd"},animationend:{animation:"animationend",WebkitAnimation:"webkitAnimationEnd",MozAnimation:"mozAnimationEnd",OAnimation:"oAnimationEnd",msAnimation:"MSAnimationEnd"}},a=[],i=[];function c(e,t,n){e.addEventListener(t,n,!1)}function l(e,t,n){e.removeEventListener(t,n,!1)}"undefined"!=typeof window&&"undefined"!=typeof document&&function(){var e=document.createElement("div").style;function t(t,n){for(var r in t)if(t.hasOwnProperty(r)){var o=t[r];for(var a in o)if(a in e){n.push(o[a]);break}}}"AnimationEvent"in window||(delete r.animationstart.animation,delete o.animationend.animation),"TransitionEvent"in window||(delete r.transitionstart.transition,delete o.transitionend.transition),t(r,a),t(o,i)}();var u={startEvents:a,addStartEventListener:function(e,t){0!==a.length?a.forEach((function(n){c(e,n,t)})):window.setTimeout(t,0)},removeStartEventListener:function(e,t){0!==a.length&&a.forEach((function(n){l(e,n,t)}))},endEvents:i,addEndEventListener:function(e,t){0!==i.length?i.forEach((function(n){c(e,n,t)})):window.setTimeout(t,0)},removeEndEventListener:function(e,t){0!==i.length&&i.forEach((function(n){l(e,n,t)}))}};t.default=u,e.exports=t.default},function(e,t,n){(function(t){(function(){var n,r,o,a,i,c;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:null!=t&&t.hrtime?(e.exports=function(){return(n()-i)/1e6},r=t.hrtime,a=(n=function(){var e;return 1e9*(e=r())[0]+e[1]})(),c=1e9*t.uptime(),i=a-c):Date.now?(e.exports=function(){return Date.now()-o},o=Date.now()):(e.exports=function(){return(new Date).getTime()-o},o=(new Date).getTime())}).call(this)}).call(this,n(101))},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o,a=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=l();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}n.default=e,t&&t.set(e,n);return n}(n(0)),i=(o=n(2))&&o.__esModule?o:{default:o},c=n(32);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function u(){return(u=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var s=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},f=function(e){return a.createElement(c.ConfigConsumer,null,(function(t){var n=t.getPrefixCls,r=e.prefixCls,o=e.size,c=e.className,l=s(e,["prefixCls","size","className"]),f=n("btn-group",r),d="";switch(o){case"large":d="lg";break;case"small":d="sm"}var p=(0,i.default)(f,function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},"".concat(f,"-").concat(d),d),c);return a.createElement("div",u({},l,{className:p}))}))};t.default=f},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==f(e)&&"function"!=typeof e)return{default:e};var t=s();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}n.default=e,t&&t.set(e,n);return n}(n(0)),o=n(80),a=u(n(389)),i=u(n(745)),c=n(32),l=n(98);function u(e){return e&&e.__esModule?e:{default:e}}function s(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return s=function(){return e},e}function f(e){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function d(){return(d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function p(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function m(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=y(e);if(t){var o=y(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return v(this,n)}}function v(e,t){return!t||"object"!==f(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function y(e){return(y=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var _=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&h(e,t)}(s,e);var t,n,o,u=m(s);function s(e){var t;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,s),(t=u.call(this,e)).saveTextArea=function(e){t.resizableTextArea=e},t.saveClearableInput=function(e){t.clearableInput=e},t.handleChange=function(e){t.setValue(e.target.value,(function(){t.resizableTextArea.resizeTextarea()})),(0,l.resolveOnChange)(t.resizableTextArea.textArea,e,t.props.onChange)},t.handleKeyDown=function(e){var n=t.props,r=n.onPressEnter,o=n.onKeyDown;13===e.keyCode&&r&&r(e),o&&o(e)},t.handleReset=function(e){t.setValue("",(function(){t.resizableTextArea.renderTextArea(),t.focus()})),(0,l.resolveOnChange)(t.resizableTextArea.textArea,e,t.props.onChange)},t.renderTextArea=function(e){return r.createElement(i.default,d({},t.props,{prefixCls:e,onKeyDown:t.handleKeyDown,onChange:t.handleChange,ref:t.saveTextArea}))},t.renderComponent=function(e){var n=e.getPrefixCls,o=t.state.value,i=n("input",t.props.prefixCls);return r.createElement(a.default,d({},t.props,{prefixCls:i,inputType:"text",value:(0,l.fixControlledValue)(o),element:t.renderTextArea(i),handleReset:t.handleReset,ref:t.saveClearableInput}))};var n=void 0===e.value?e.defaultValue:e.value;return t.state={value:n},t}return t=s,o=[{key:"getDerivedStateFromProps",value:function(e){return"value"in e?{value:e.value}:null}}],(n=[{key:"setValue",value:function(e,t){"value"in this.props||this.setState({value:e},t)}},{key:"focus",value:function(){this.resizableTextArea.textArea.focus()}},{key:"blur",value:function(){this.resizableTextArea.textArea.blur()}},{key:"render",value:function(){return r.createElement(c.ConfigConsumer,null,this.renderComponent)}}])&&p(t.prototype,n),o&&p(t,o),s}(r.Component);(0,o.polyfill)(_);var b=_;t.default=b},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==p(e)&&"function"!=typeof e)return{default:e};var t=d();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}n.default=e,t&&t.set(e,n);return n}(n(0)),o=n(80),a=f(n(746)),i=f(n(78)),c=f(n(2)),l=f(n(753)),u=f(n(390)),s=f(n(56));function f(e){return e&&e.__esModule?e:{default:e}}function d(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return d=function(){return e},e}function p(e){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function h(){return(h=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function m(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function v(e,t){return(v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=b(e);if(t){var o=b(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return _(this,n)}}function _(e,t){return!t||"object"!==p(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function b(e){return(b=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var g=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&v(e,t)}(d,e);var t,n,o,f=y(d);function d(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,d),(t=f.call(this,e)).saveTextArea=function(e){t.textArea=e},t.resizeOnNextFrame=function(){u.default.cancel(t.nextFrameActionId),t.nextFrameActionId=(0,u.default)(t.resizeTextarea)},t.resizeTextarea=function(){var e=t.props.autoSize||t.props.autosize;if(e&&t.textArea){var n=e.minRows,r=e.maxRows,o=(0,l.default)(t.textArea,!1,n,r);t.setState({textareaStyles:o,resizing:!0},(function(){u.default.cancel(t.resizeFrameId),t.resizeFrameId=(0,u.default)((function(){t.setState({resizing:!1}),t.fixFirefoxAutoScroll()}))}))}},t.renderTextArea=function(){var e=t.props,n=e.prefixCls,o=e.autoSize,l=e.autosize,u=e.className,f=e.disabled,d=t.state,p=d.textareaStyles,m=d.resizing;(0,s.default)(void 0===l,"Input.TextArea","autosize is deprecated, please use autoSize instead.");var v,y,_,b=(0,i.default)(t.props,["prefixCls","onPressEnter","autoSize","autosize","defaultValue","allowClear"]),g=(0,c.default)(n,u,(v={},y="".concat(n,"-disabled"),_=f,y in v?Object.defineProperty(v,y,{value:_,enumerable:!0,configurable:!0,writable:!0}):v[y]=_,v));"value"in b&&(b.value=b.value||"");var M=h(h(h({},t.props.style),p),m?{overflowX:"hidden",overflowY:"hidden"}:null);return r.createElement(a.default,{onResize:t.resizeOnNextFrame,disabled:!(o||l)},r.createElement("textarea",h({},b,{className:g,style:M,ref:t.saveTextArea})))},t.state={textareaStyles:{},resizing:!1},t}return t=d,(n=[{key:"componentDidMount",value:function(){this.resizeTextarea()}},{key:"componentDidUpdate",value:function(e){e.value!==this.props.value&&this.resizeTextarea()}},{key:"componentWillUnmount",value:function(){u.default.cancel(this.nextFrameActionId),u.default.cancel(this.resizeFrameId)}},{key:"fixFirefoxAutoScroll",value:function(){try{if(document.activeElement===this.textArea){var e=this.textArea.selectionStart,t=this.textArea.selectionEnd;this.textArea.setSelectionRange(e,t)}}catch(e){}}},{key:"render",value:function(){return this.renderTextArea()}}])&&m(t.prototype,n),o&&m(t,o),d}(r.Component);(0,o.polyfill)(g);var M=g;t.default=M},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function i(e,t){return!t||"object"!==r(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function c(e){return(c=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function l(e,t){return(l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var u=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var f=u(n(0)),d=s(n(747)),p=s(n(748)),h=s(n(202)),m=n(751),v=s(n(82)),y=n(752),_=function(e){function t(){var e;return o(this,t),(e=i(this,c(t).apply(this,arguments))).resizeObserver=null,e.childNode=null,e.currentElement=null,e.state={width:0,height:0},e.onResize=function(t){var n=e.props.onResize,r=t[0].target.getBoundingClientRect(),o=r.width,a=r.height,i=Math.floor(o),c=Math.floor(a);if(e.state.width!==i||e.state.height!==c){var l={width:i,height:c};e.setState(l),n&&n(l)}},e.setChildNode=function(t){e.childNode=t},e}var n,r,u;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&l(e,t)}(t,e),n=t,(r=[{key:"componentDidMount",value:function(){this.onComponentUpdated()}},{key:"componentDidUpdate",value:function(){this.onComponentUpdated()}},{key:"componentWillUnmount",value:function(){this.destroyObserver()}},{key:"onComponentUpdated",value:function(){if(this.props.disabled)this.destroyObserver();else{var e=d.default(this.childNode||this);e!==this.currentElement&&(this.destroyObserver(),this.currentElement=e),!this.resizeObserver&&e&&(this.resizeObserver=new v.default(this.onResize),this.resizeObserver.observe(e))}}},{key:"destroyObserver",value:function(){this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}},{key:"render",value:function(){var e=this.props.children,t=p.default(e);if(t.length>1)h.default(!1,"Find more than one child node with `children` in ResizeObserver. Will only observe first one.");else if(0===t.length)return h.default(!1,"`children` of ResizeObserver is empty. Nothing is in observe."),null;var n=t[0];if(f.isValidElement(n)&&y.supportRef(n)){var r=n.ref;t[0]=f.cloneElement(n,{ref:m.composeRef(r,this.setChildNode)})}return 1===t.length?t[0]:t.map((function(e,t){return!f.isValidElement(e)||"key"in e&&null!==e.key?e:f.cloneElement(e,{key:"".concat("rc-observer-key","-").concat(t)})}))}}])&&a(n.prototype,r),u&&a(n,u),t}(f.Component);_.displayName="ResizeObserver",t.default=_},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(e instanceof HTMLElement)return e;return o.default.findDOMNode(e)};var r,o=(r=n(11))&&r.__esModule?r:{default:r}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function e(t){var n=[];return o.default.Children.forEach(t,(function(t){null!=t&&(Array.isArray(t)?n=n.concat(e(t)):(0,a.isFragment)(t)&&t.props?n=n.concat(e(t.props.children)):n.push(t))})),n};var r,o=(r=n(0))&&r.__esModule?r:{default:r},a=n(749)},function(e,t,n){"use strict";e.exports=n(750)},function(e,t,n){"use strict"; /** @license React v16.13.1 * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,a=r?Symbol.for("react.portal"):60106,i=r?Symbol.for("react.fragment"):60107,c=r?Symbol.for("react.strict_mode"):60108,l=r?Symbol.for("react.profiler"):60114,u=r?Symbol.for("react.provider"):60109,s=r?Symbol.for("react.context"):60110,f=r?Symbol.for("react.async_mode"):60111,d=r?Symbol.for("react.concurrent_mode"):60111,p=r?Symbol.for("react.forward_ref"):60112,h=r?Symbol.for("react.suspense"):60113,m=r?Symbol.for("react.suspense_list"):60120,v=r?Symbol.for("react.memo"):60115,y=r?Symbol.for("react.lazy"):60116,_=r?Symbol.for("react.block"):60121,b=r?Symbol.for("react.fundamental"):60117,g=r?Symbol.for("react.responder"):60118,M=r?Symbol.for("react.scope"):60119;function w(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case f:case d:case i:case l:case c:case h:return e;default:switch(e=e&&e.$$typeof){case s:case p:case y:case v:case u:return e;default:return t}}case a:return t}}}function O(e){return w(e)===d}t.AsyncMode=f,t.ConcurrentMode=d,t.ContextConsumer=s,t.ContextProvider=u,t.Element=o,t.ForwardRef=p,t.Fragment=i,t.Lazy=y,t.Memo=v,t.Portal=a,t.Profiler=l,t.StrictMode=c,t.Suspense=h,t.isAsyncMode=function(e){return O(e)||w(e)===f},t.isConcurrentMode=O,t.isContextConsumer=function(e){return w(e)===s},t.isContextProvider=function(e){return w(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return w(e)===p},t.isFragment=function(e){return w(e)===i},t.isLazy=function(e){return w(e)===y},t.isMemo=function(e){return w(e)===v},t.isPortal=function(e){return w(e)===a},t.isProfiler=function(e){return w(e)===l},t.isStrictMode=function(e){return w(e)===c},t.isSuspense=function(e){return w(e)===h},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===i||e===d||e===l||e===c||e===h||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===y||e.$$typeof===v||e.$$typeof===u||e.$$typeof===s||e.$$typeof===p||e.$$typeof===b||e.$$typeof===g||e.$$typeof===M||e.$$typeof===_)},t.typeOf=w},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e,t){"function"==typeof e?e(t):"object"===r(e)&&e&&"current"in e&&(e.current=t)}Object.defineProperty(t,"__esModule",{value:!0}),t.fillRef=o,t.composeRef=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){t.forEach((function(t){o(t,e)}))}},t.supportRef=function(e){if(e.type&&e.type.prototype&&!e.type.prototype.render)return!1;if("function"==typeof e&&e.prototype&&!e.prototype.render)return!1;return!0}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.supportRef=function(e){return!(e.type&&e.type.prototype&&!e.type.prototype.render)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.calculateNodeStyling=c,t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;r||(r=document.createElement("textarea"),document.body.appendChild(r));e.getAttribute("wrap")?r.setAttribute("wrap",e.getAttribute("wrap")):r.removeAttribute("wrap");var i=c(e,t),l=i.paddingSize,u=i.borderSize,s=i.boxSizing,f=i.sizingStyle;r.setAttribute("style","".concat(f,";").concat(o)),r.value=e.value||e.placeholder||"";var d,p=Number.MIN_SAFE_INTEGER,h=Number.MAX_SAFE_INTEGER,m=r.scrollHeight;"border-box"===s?m+=u:"content-box"===s&&(m-=l);if(null!==n||null!==a){r.value=" ";var v=r.scrollHeight-l;null!==n&&(p=v*n,"border-box"===s&&(p=p+l+u),m=Math.max(p,m)),null!==a&&(h=v*a,"border-box"===s&&(h=h+l+u),d=m>h?"":"hidden",m=Math.min(h,m))}return{height:m,minHeight:p,maxHeight:h,overflowY:d}};var r,o="\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n",a=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","font-variant","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"],i={};function c(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.getAttribute("id")||e.getAttribute("data-reactid")||e.getAttribute("name");if(t&&i[n])return i[n];var r=window.getComputedStyle(e),o=r.getPropertyValue("box-sizing")||r.getPropertyValue("-moz-box-sizing")||r.getPropertyValue("-webkit-box-sizing"),c=parseFloat(r.getPropertyValue("padding-bottom"))+parseFloat(r.getPropertyValue("padding-top")),l=parseFloat(r.getPropertyValue("border-bottom-width"))+parseFloat(r.getPropertyValue("border-top-width")),u=a.map((function(e){return"".concat(e,":").concat(r.getPropertyValue(e))})).join(";"),s={sizingStyle:u,paddingSize:c,borderSize:l,boxSizing:o};return t&&n&&(i[n]=s),s}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==s(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}n.default=e,t&&t.set(e,n);return n}(n(0)),o=l(n(2)),a=l(n(78)),i=l(n(98)),c=l(n(34));function l(e){return e&&e.__esModule?e:{default:e}}function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function f(){return(f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function h(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function m(e,t){return(m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function v(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=_(e);if(t){var o=_(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return y(this,n)}}function y(e,t){return!t||"object"!==s(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _(e){return(_=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var b=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},g={click:"onClick",hover:"onMouseOver"},M=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&m(e,t)}(s,e);var t,n,l,u=v(s);function s(){var e;return p(this,s),(e=u.apply(this,arguments)).state={visible:!1},e.onVisibleChange=function(){e.props.disabled||e.setState((function(e){return{visible:!e.visible}}))},e.saveInput=function(t){t&&t.input&&(e.input=t.input)},e}return t=s,(n=[{key:"getIcon",value:function(){var e,t=this.props,n=t.prefixCls,o=t.action,a=(d(e={},g[o]||"",this.onVisibleChange),d(e,"className","".concat(n,"-icon")),d(e,"type",this.state.visible?"eye":"eye-invisible"),d(e,"key","passwordIcon"),d(e,"onMouseDown",(function(e){e.preventDefault()})),e);return r.createElement(c.default,a)}},{key:"focus",value:function(){this.input.focus()}},{key:"blur",value:function(){this.input.blur()}},{key:"select",value:function(){this.input.select()}},{key:"render",value:function(){var e=this.props,t=e.className,n=e.prefixCls,c=e.inputPrefixCls,l=e.size,u=e.visibilityToggle,s=b(e,["className","prefixCls","inputPrefixCls","size","visibilityToggle"]),p=u&&this.getIcon(),h=(0,o.default)(n,t,d({},"".concat(n,"-").concat(l),!!l));return r.createElement(i.default,f({},(0,a.default)(s,["suffix"]),{type:this.state.visible?"text":"password",size:l,className:h,prefixCls:c,suffix:p,ref:this.saveInput}))}}])&&h(t.prototype,n),l&&h(t,l),s}(r.Component);t.default=M,M.defaultProps={inputPrefixCls:"ant-input",prefixCls:"ant-input-password",action:"click",visibilityToggle:!0}},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=a();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var c=o?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(n,i,c):n[i]=e[i]}n.default=e,t&&t.set(e,n);return n}(n(0));function a(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return a=function(){return e},e}var i=function(){return o.createElement("svg",{width:"252",height:"294"},o.createElement("defs",null,o.createElement("path",{d:"M0 .387h251.772v251.772H0z"})),o.createElement("g",{fill:"none",fillRule:"evenodd"},o.createElement("g",{transform:"translate(0 .012)"},o.createElement("mask",{fill:"#fff"}),o.createElement("path",{d:"M0 127.32v-2.095C0 56.279 55.892.387 124.838.387h2.096c68.946 0 124.838 55.892 124.838 124.838v2.096c0 68.946-55.892 124.838-124.838 124.838h-2.096C55.892 252.16 0 196.267 0 127.321",fill:"#E4EBF7",mask:"url(#b)"})),o.createElement("path",{d:"M39.755 130.84a8.276 8.276 0 1 1-16.468-1.66 8.276 8.276 0 0 1 16.468 1.66",fill:"#FFF"}),o.createElement("path",{d:"M36.975 134.297l10.482 5.943M48.373 146.508l-12.648 10.788",stroke:"#FFF",strokeWidth:"2"}),o.createElement("path",{d:"M39.875 159.352a5.667 5.667 0 1 1-11.277-1.136 5.667 5.667 0 0 1 11.277 1.136M57.588 143.247a5.708 5.708 0 1 1-11.358-1.145 5.708 5.708 0 0 1 11.358 1.145M99.018 26.875l29.82-.014a4.587 4.587 0 1 0-.003-9.175l-29.82.013a4.587 4.587 0 1 0 .003 9.176M110.424 45.211l29.82-.013a4.588 4.588 0 0 0-.004-9.175l-29.82.013a4.587 4.587 0 1 0 .004 9.175",fill:"#FFF"}),o.createElement("path",{d:"M112.798 26.861v-.002l15.784-.006a4.588 4.588 0 1 0 .003 9.175l-15.783.007v-.002a4.586 4.586 0 0 0-.004-9.172M184.523 135.668c-.553 5.485-5.447 9.483-10.931 8.93-5.485-.553-9.483-5.448-8.93-10.932.552-5.485 5.447-9.483 10.932-8.93 5.485.553 9.483 5.447 8.93 10.932",fill:"#FFF"}),o.createElement("path",{d:"M179.26 141.75l12.64 7.167M193.006 156.477l-15.255 13.011",stroke:"#FFF",strokeWidth:"2"}),o.createElement("path",{d:"M184.668 170.057a6.835 6.835 0 1 1-13.6-1.372 6.835 6.835 0 0 1 13.6 1.372M203.34 153.325a6.885 6.885 0 1 1-13.7-1.382 6.885 6.885 0 0 1 13.7 1.382",fill:"#FFF"}),o.createElement("path",{d:"M151.931 192.324a2.222 2.222 0 1 1-4.444 0 2.222 2.222 0 0 1 4.444 0zM225.27 116.056a2.222 2.222 0 1 1-4.445 0 2.222 2.222 0 0 1 4.444 0zM216.38 151.08a2.223 2.223 0 1 1-4.446-.001 2.223 2.223 0 0 1 4.446 0zM176.917 107.636a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM195.291 92.165a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM202.058 180.711a2.223 2.223 0 1 1-4.446 0 2.223 2.223 0 0 1 4.446 0z",stroke:"#FFF",strokeWidth:"2"}),o.createElement("path",{stroke:"#FFF",strokeWidth:"2",d:"M214.404 153.302l-1.912 20.184-10.928 5.99M173.661 174.792l-6.356 9.814h-11.36l-4.508 6.484M174.941 125.168v-15.804M220.824 117.25l-12.84 7.901-15.31-7.902V94.39"}),o.createElement("path",{d:"M166.588 65.936h-3.951a4.756 4.756 0 0 1-4.743-4.742 4.756 4.756 0 0 1 4.743-4.743h3.951a4.756 4.756 0 0 1 4.743 4.743 4.756 4.756 0 0 1-4.743 4.742",fill:"#FFF"}),o.createElement("path",{d:"M174.823 30.03c0-16.281 13.198-29.48 29.48-29.48 16.28 0 29.48 13.199 29.48 29.48 0 16.28-13.2 29.48-29.48 29.48-16.282 0-29.48-13.2-29.48-29.48",fill:"#1890FF"}),o.createElement("path",{d:"M205.952 38.387c.5.5.785 1.142.785 1.928s-.286 1.465-.785 1.964c-.572.5-1.214.75-2 .75-.785 0-1.429-.285-1.929-.785-.572-.5-.82-1.143-.82-1.929s.248-1.428.82-1.928c.5-.5 1.144-.75 1.93-.75.785 0 1.462.25 1.999.75m4.285-19.463c1.428 1.249 2.143 2.963 2.143 5.142 0 1.712-.427 3.13-1.219 4.25-.067.096-.137.18-.218.265-.416.429-1.41 1.346-2.956 2.699a5.07 5.07 0 0 0-1.428 1.75 5.207 5.207 0 0 0-.536 2.357v.5h-4.107v-.5c0-1.357.215-2.536.714-3.5.464-.964 1.857-2.464 4.178-4.536l.43-.5c.643-.785.964-1.643.964-2.535 0-1.18-.358-2.108-1-2.785-.678-.68-1.643-1.001-2.858-1.001-1.536 0-2.642.464-3.357 1.43-.37.5-.621 1.135-.76 1.904a1.999 1.999 0 0 1-1.971 1.63h-.004c-1.277 0-2.257-1.183-1.98-2.43.337-1.518 1.02-2.78 2.073-3.784 1.536-1.5 3.607-2.25 6.25-2.25 2.32 0 4.214.607 5.642 1.894",fill:"#FFF"}),o.createElement("path",{d:"M52.04 76.131s21.81 5.36 27.307 15.945c5.575 10.74-6.352 9.26-15.73 4.935-10.86-5.008-24.7-11.822-11.577-20.88",fill:"#FFB594"}),o.createElement("path",{d:"M90.483 67.504l-.449 2.893c-.753.49-4.748-2.663-4.748-2.663l-1.645.748-1.346-5.684s6.815-4.589 8.917-5.018c2.452-.501 9.884.94 10.7 2.278 0 0 1.32.486-2.227.69-3.548.203-5.043.447-6.79 3.132-1.747 2.686-2.412 3.624-2.412 3.624",fill:"#FFC6A0"}),o.createElement("path",{d:"M128.055 111.367c-2.627-7.724-6.15-13.18-8.917-15.478-3.5-2.906-9.34-2.225-11.366-4.187-1.27-1.231-3.215-1.197-3.215-1.197s-14.98-3.158-16.828-3.479c-2.37-.41-2.124-.714-6.054-1.405-1.57-1.907-2.917-1.122-2.917-1.122l-7.11-1.383c-.853-1.472-2.423-1.023-2.423-1.023l-2.468-.897c-1.645 9.976-7.74 13.796-7.74 13.796 1.795 1.122 15.703 8.3 15.703 8.3l5.107 37.11s-3.321 5.694 1.346 9.109c0 0 19.883-3.743 34.921-.329 0 0 3.047-2.546.972-8.806.523-3.01 1.394-8.263 1.736-11.622.385.772 2.019 1.918 3.14 3.477 0 0 9.407-7.365 11.052-14.012-.832-.723-1.598-1.585-2.267-2.453-.567-.736-.358-2.056-.765-2.717-.669-1.084-1.804-1.378-1.907-1.682",fill:"#FFF"}),o.createElement("path",{d:"M101.09 289.998s4.295 2.041 7.354 1.021c2.821-.94 4.53.668 7.08 1.178 2.55.51 6.874 1.1 11.686-1.26-.103-5.51-6.889-3.98-11.96-6.713-2.563-1.38-3.784-4.722-3.598-8.799h-9.402s-1.392 10.52-1.16 14.573",fill:"#CBD1D1"}),o.createElement("path",{d:"M101.067 289.826s2.428 1.271 6.759.653c3.058-.437 3.712.481 7.423 1.031 3.712.55 10.724-.069 11.823-.894.413 1.1-.343 2.063-.343 2.063s-1.512.603-4.812.824c-2.03.136-5.8.291-7.607-.503-1.787-1.375-5.247-1.903-5.728-.241-3.918.95-7.355-.286-7.355-.286l-.16-2.647z",fill:"#2B0849"}),o.createElement("path",{d:"M108.341 276.044h3.094s-.103 6.702 4.536 8.558c-4.64.618-8.558-2.303-7.63-8.558",fill:"#A4AABA"}),o.createElement("path",{d:"M57.542 272.401s-2.107 7.416-4.485 12.306c-1.798 3.695-4.225 7.492 5.465 7.492 6.648 0 8.953-.48 7.423-6.599-1.53-6.12.266-13.199.266-13.199h-8.669z",fill:"#CBD1D1"}),o.createElement("path",{d:"M51.476 289.793s2.097 1.169 6.633 1.169c6.083 0 8.249-1.65 8.249-1.65s.602 1.114-.619 2.165c-.993.855-3.597 1.591-7.39 1.546-4.145-.048-5.832-.566-6.736-1.168-.825-.55-.687-1.58-.137-2.062",fill:"#2B0849"}),o.createElement("path",{d:"M58.419 274.304s.033 1.519-.314 2.93c-.349 1.42-1.078 3.104-1.13 4.139-.058 1.151 4.537 1.58 5.155.034.62-1.547 1.294-6.427 1.913-7.252.619-.825-4.903-2.119-5.624.15",fill:"#A4AABA"}),o.createElement("path",{d:"M99.66 278.514l13.378.092s1.298-54.52 1.853-64.403c.554-9.882 3.776-43.364 1.002-63.128l-12.547-.644-22.849.78s-.434 3.966-1.195 9.976c-.063.496-.682.843-.749 1.365-.075.585.423 1.354.32 1.966-2.364 14.08-6.377 33.104-8.744 46.677-.116.666-1.234 1.009-1.458 2.691-.04.302.211 1.525.112 1.795-6.873 18.744-10.949 47.842-14.277 61.885l14.607-.014s2.197-8.57 4.03-16.97c2.811-12.886 23.111-85.01 23.111-85.01l3.016-.521 1.043 46.35s-.224 1.234.337 2.02c.56.785-.56 1.123-.392 2.244l.392 1.794s-.449 7.178-.898 11.89c-.448 4.71-.092 39.165-.092 39.165",fill:"#7BB2F9"}),o.createElement("path",{d:"M76.085 221.626c1.153.094 4.038-2.019 6.955-4.935M106.36 225.142s2.774-1.11 6.103-3.883",stroke:"#648BD8",strokeWidth:"1.051",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M107.275 222.1s2.773-1.11 6.102-3.884",stroke:"#648BD8",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M74.74 224.767s2.622-.591 6.505-3.365M86.03 151.634c-.27 3.106.3 8.525-4.336 9.123M103.625 149.88s.11 14.012-1.293 15.065c-2.219 1.664-2.99 1.944-2.99 1.944M99.79 150.438s.035 12.88-1.196 24.377M93.673 175.911s7.212-1.664 9.431-1.664M74.31 205.861a212.013 212.013 0 0 1-.979 4.56s-1.458 1.832-1.009 3.776c.449 1.944-.947 2.045-4.985 15.355-1.696 5.59-4.49 18.591-6.348 27.597l-.231 1.12M75.689 197.807a320.934 320.934 0 0 1-.882 4.754M82.591 152.233L81.395 162.7s-1.097.15-.5 2.244c.113 1.346-2.674 15.775-5.18 30.43M56.12 274.418h13.31",stroke:"#648BD8",strokeWidth:"1.051",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M116.241 148.22s-17.047-3.104-35.893.2c.158 2.514-.003 4.15-.003 4.15s14.687-2.818 35.67-.312c.252-2.355.226-4.038.226-4.038",fill:"#192064"}),o.createElement("path",{d:"M106.322 151.165l.003-4.911a.81.81 0 0 0-.778-.815c-2.44-.091-5.066-.108-7.836-.014a.818.818 0 0 0-.789.815l-.003 4.906a.81.81 0 0 0 .831.813c2.385-.06 4.973-.064 7.73.017a.815.815 0 0 0 .842-.81",fill:"#FFF"}),o.createElement("path",{d:"M105.207 150.233l.002-3.076a.642.642 0 0 0-.619-.646 94.321 94.321 0 0 0-5.866-.01.65.65 0 0 0-.63.647v3.072a.64.64 0 0 0 .654.644 121.12 121.12 0 0 1 5.794.011c.362.01.665-.28.665-.642",fill:"#192064"}),o.createElement("path",{d:"M100.263 275.415h12.338M101.436 270.53c.006 3.387.042 5.79.111 6.506M101.451 264.548a915.75 915.75 0 0 0-.015 4.337M100.986 174.965l.898 44.642s.673 1.57-.225 2.692c-.897 1.122 2.468.673.898 2.243-1.57 1.57.897 1.122 0 3.365-.596 1.489-.994 21.1-1.096 35.146",stroke:"#648BD8",strokeWidth:"1.051",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M46.876 83.427s-.516 6.045 7.223 5.552c11.2-.712 9.218-9.345 31.54-21.655-.786-2.708-2.447-4.744-2.447-4.744s-11.068 3.11-22.584 8.046c-6.766 2.9-13.395 6.352-13.732 12.801M104.46 91.057l.941-5.372-8.884-11.43-5.037 5.372-1.74 7.834a.321.321 0 0 0 .108.32c.965.8 6.5 5.013 14.347 3.544a.332.332 0 0 0 .264-.268",fill:"#FFC6A0"}),o.createElement("path",{d:"M93.942 79.387s-4.533-2.853-2.432-6.855c1.623-3.09 4.513 1.133 4.513 1.133s.52-3.642 3.121-3.642c.52-1.04 1.561-4.162 1.561-4.162s11.445 2.601 13.526 3.121c0 5.203-2.304 19.424-7.84 19.861-8.892.703-12.449-9.456-12.449-9.456",fill:"#FFC6A0"}),o.createElement("path",{d:"M113.874 73.446c2.601-2.081 3.47-9.722 3.47-9.722s-2.479-.49-6.64-2.05c-4.683-2.081-12.798-4.747-17.48.976-9.668 3.223-2.05 19.823-2.05 19.823l2.713-3.021s-3.935-3.287-2.08-6.243c2.17-3.462 3.92 1.073 3.92 1.073s.637-2.387 3.581-3.342c.355-.71 1.036-2.674 1.432-3.85a1.073 1.073 0 0 1 1.263-.704c2.4.558 8.677 2.019 11.356 2.662.522.125.871.615.82 1.15l-.305 3.248z",fill:"#520038"}),o.createElement("path",{d:"M104.977 76.064c-.103.61-.582 1.038-1.07.956-.489-.083-.801-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.644.698 1.254M112.132 77.694c-.103.61-.582 1.038-1.07.956-.488-.083-.8-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.643.698 1.254",fill:"#552950"}),o.createElement("path",{stroke:"#DB836E",strokeWidth:"1.118",strokeLinecap:"round",strokeLinejoin:"round",d:"M110.13 74.84l-.896 1.61-.298 4.357h-2.228"}),o.createElement("path",{d:"M110.846 74.481s1.79-.716 2.506.537",stroke:"#5C2552",strokeWidth:"1.118",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M92.386 74.282s.477-1.114 1.113-.716c.637.398 1.274 1.433.558 1.99-.717.556.159 1.67.159 1.67",stroke:"#DB836E",strokeWidth:"1.118",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M103.287 72.93s1.83 1.113 4.137.954",stroke:"#5C2552",strokeWidth:"1.118",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M103.685 81.762s2.227 1.193 4.376 1.193M104.64 84.308s.954.398 1.511.318M94.693 81.205s2.308 7.4 10.424 7.639",stroke:"#DB836E",strokeWidth:"1.118",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M81.45 89.384s.45 5.647-4.935 12.787M69 82.654s-.726 9.282-8.204 14.206",stroke:"#E4EBF7",strokeWidth:"1.101",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M129.405 122.865s-5.272 7.403-9.422 10.768",stroke:"#E4EBF7",strokeWidth:"1.051",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M119.306 107.329s.452 4.366-2.127 32.062",stroke:"#E4EBF7",strokeWidth:"1.101",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M150.028 151.232h-49.837a1.01 1.01 0 0 1-1.01-1.01v-31.688c0-.557.452-1.01 1.01-1.01h49.837c.558 0 1.01.453 1.01 1.01v31.688a1.01 1.01 0 0 1-1.01 1.01",fill:"#F2D7AD"}),o.createElement("path",{d:"M150.29 151.232h-19.863v-33.707h20.784v32.786a.92.92 0 0 1-.92.92",fill:"#F4D19D"}),o.createElement("path",{d:"M123.554 127.896H92.917a.518.518 0 0 1-.425-.816l6.38-9.113c.193-.277.51-.442.85-.442h31.092l-7.26 10.371z",fill:"#F2D7AD"}),o.createElement("path",{fill:"#CC9B6E",d:"M123.689 128.447H99.25v-.519h24.169l7.183-10.26.424.298z"}),o.createElement("path",{d:"M158.298 127.896h-18.669a2.073 2.073 0 0 1-1.659-.83l-7.156-9.541h19.965c.49 0 .95.23 1.244.622l6.69 8.92a.519.519 0 0 1-.415.83",fill:"#F4D19D"}),o.createElement("path",{fill:"#CC9B6E",d:"M157.847 128.479h-19.384l-7.857-10.475.415-.31 7.7 10.266h19.126zM130.554 150.685l-.032-8.177.519-.002.032 8.177z"}),o.createElement("path",{fill:"#CC9B6E",d:"M130.511 139.783l-.08-21.414.519-.002.08 21.414zM111.876 140.932l-.498-.143 1.479-5.167.498.143zM108.437 141.06l-2.679-2.935 2.665-3.434.41.318-2.397 3.089 2.384 2.612zM116.607 141.06l-.383-.35 2.383-2.612-2.397-3.089.41-.318 2.665 3.434z"}),o.createElement("path",{d:"M154.316 131.892l-3.114-1.96.038 3.514-1.043.092c-1.682.115-3.634.23-4.789.23-1.902 0-2.693 2.258 2.23 2.648l-2.645-.596s-2.168 1.317.504 2.3c0 0-1.58 1.217.561 2.58-.584 3.504 5.247 4.058 7.122 3.59 1.876-.47 4.233-2.359 4.487-5.16.28-3.085-.89-5.432-3.35-7.238",fill:"#FFC6A0"}),o.createElement("path",{d:"M153.686 133.577s-6.522.47-8.36.372c-1.836-.098-1.904 2.19 2.359 2.264 3.739.15 5.451-.044 5.451-.044",stroke:"#DB836E",strokeWidth:"1.051",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M145.16 135.877c-1.85 1.346.561 2.355.561 2.355s3.478.898 6.73.617",stroke:"#DB836E",strokeWidth:"1.051",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M151.89 141.71s-6.28.111-6.73-2.132c-.223-1.346.45-1.402.45-1.402M146.114 140.868s-1.103 3.16 5.44 3.533M151.202 129.932v3.477M52.838 89.286c3.533-.337 8.423-1.248 13.582-7.754",stroke:"#DB836E",strokeWidth:"1.051",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M168.567 248.318a6.647 6.647 0 0 1-6.647-6.647v-66.466a6.647 6.647 0 1 1 13.294 0v66.466a6.647 6.647 0 0 1-6.647 6.647",fill:"#5BA02E"}),o.createElement("path",{d:"M176.543 247.653a6.647 6.647 0 0 1-6.646-6.647v-33.232a6.647 6.647 0 1 1 13.293 0v33.232a6.647 6.647 0 0 1-6.647 6.647",fill:"#92C110"}),o.createElement("path",{d:"M186.443 293.613H158.92a3.187 3.187 0 0 1-3.187-3.187v-46.134a3.187 3.187 0 0 1 3.187-3.187h27.524a3.187 3.187 0 0 1 3.187 3.187v46.134a3.187 3.187 0 0 1-3.187 3.187",fill:"#F2D7AD"}),o.createElement("path",{d:"M88.979 89.48s7.776 5.384 16.6 2.842",stroke:"#E4EBF7",strokeWidth:"1.101",strokeLinecap:"round",strokeLinejoin:"round"})))};t.default=i},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=a();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var c=o?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(n,i,c):n[i]=e[i]}n.default=e,t&&t.set(e,n);return n}(n(0));function a(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return a=function(){return e},e}var i=function(){return o.createElement("svg",{width:"254",height:"294"},o.createElement("defs",null,o.createElement("path",{d:"M0 .335h253.49v253.49H0z"}),o.createElement("path",{d:"M0 293.665h253.49V.401H0z"})),o.createElement("g",{fill:"none",fillRule:"evenodd"},o.createElement("g",{transform:"translate(0 .067)"},o.createElement("mask",{fill:"#fff"}),o.createElement("path",{d:"M0 128.134v-2.11C0 56.608 56.273.334 125.69.334h2.11c69.416 0 125.69 56.274 125.69 125.69v2.11c0 69.417-56.274 125.69-125.69 125.69h-2.11C56.273 253.824 0 197.551 0 128.134",fill:"#E4EBF7",mask:"url(#b)"})),o.createElement("path",{d:"M39.989 132.108a8.332 8.332 0 1 1-16.581-1.671 8.332 8.332 0 0 1 16.58 1.671",fill:"#FFF"}),o.createElement("path",{d:"M37.19 135.59l10.553 5.983M48.665 147.884l-12.734 10.861",stroke:"#FFF",strokeWidth:"2"}),o.createElement("path",{d:"M40.11 160.816a5.706 5.706 0 1 1-11.354-1.145 5.706 5.706 0 0 1 11.354 1.145M57.943 144.6a5.747 5.747 0 1 1-11.436-1.152 5.747 5.747 0 0 1 11.436 1.153M99.656 27.434l30.024-.013a4.619 4.619 0 1 0-.004-9.238l-30.024.013a4.62 4.62 0 0 0 .004 9.238M111.14 45.896l30.023-.013a4.62 4.62 0 1 0-.004-9.238l-30.024.013a4.619 4.619 0 1 0 .004 9.238",fill:"#FFF"}),o.createElement("path",{d:"M113.53 27.421v-.002l15.89-.007a4.619 4.619 0 1 0 .005 9.238l-15.892.007v-.002a4.618 4.618 0 0 0-.004-9.234M150.167 70.091h-3.979a4.789 4.789 0 0 1-4.774-4.775 4.788 4.788 0 0 1 4.774-4.774h3.979a4.789 4.789 0 0 1 4.775 4.774 4.789 4.789 0 0 1-4.775 4.775",fill:"#FFF"}),o.createElement("path",{d:"M171.687 30.234c0-16.392 13.289-29.68 29.681-29.68 16.392 0 29.68 13.288 29.68 29.68 0 16.393-13.288 29.681-29.68 29.681s-29.68-13.288-29.68-29.68",fill:"#FF603B"}),o.createElement("path",{d:"M203.557 19.435l-.676 15.035a1.514 1.514 0 0 1-3.026 0l-.675-15.035a2.19 2.19 0 1 1 4.377 0m-.264 19.378c.513.477.77 1.1.77 1.87s-.257 1.393-.77 1.907c-.55.476-1.21.733-1.943.733a2.545 2.545 0 0 1-1.87-.77c-.55-.514-.806-1.136-.806-1.87 0-.77.256-1.393.806-1.87.513-.513 1.137-.733 1.87-.733.77 0 1.43.22 1.943.733",fill:"#FFF"}),o.createElement("path",{d:"M119.3 133.275c4.426-.598 3.612-1.204 4.079-4.778.675-5.18-3.108-16.935-8.262-25.118-1.088-10.72-12.598-11.24-12.598-11.24s4.312 4.895 4.196 16.199c1.398 5.243.804 14.45.804 14.45s5.255 11.369 11.78 10.487",fill:"#FFB594"}),o.createElement("path",{d:"M100.944 91.61s1.463-.583 3.211.582c8.08 1.398 10.368 6.706 11.3 11.368 1.864 1.282 1.864 2.33 1.864 3.496.365.777 1.515 3.03 1.515 3.03s-7.225 1.748-10.954 6.758c-1.399-6.41-6.936-25.235-6.936-25.235",fill:"#FFF"}),o.createElement("path",{d:"M94.008 90.5l1.019-5.815-9.23-11.874-5.233 5.581-2.593 9.863s8.39 5.128 16.037 2.246",fill:"#FFB594"}),o.createElement("path",{d:"M82.931 78.216s-4.557-2.868-2.445-6.892c1.632-3.107 4.537 1.139 4.537 1.139s.524-3.662 3.139-3.662c.523-1.046 1.569-4.184 1.569-4.184s11.507 2.615 13.6 3.138c-.001 5.23-2.317 19.529-7.884 19.969-8.94.706-12.516-9.508-12.516-9.508",fill:"#FFC6A0"}),o.createElement("path",{d:"M102.971 72.243c2.616-2.093 3.489-9.775 3.489-9.775s-2.492-.492-6.676-2.062c-4.708-2.092-12.867-4.771-17.575.982-9.54 4.41-2.062 19.93-2.062 19.93l2.729-3.037s-3.956-3.304-2.092-6.277c2.183-3.48 3.943 1.08 3.943 1.08s.64-2.4 3.6-3.36c.356-.714 1.04-2.69 1.44-3.872a1.08 1.08 0 0 1 1.27-.707c2.41.56 8.723 2.03 11.417 2.676.524.126.876.619.825 1.156l-.308 3.266z",fill:"#520038"}),o.createElement("path",{d:"M101.22 76.514c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.961.491.083.805.647.702 1.26M94.26 75.074c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.96.491.082.805.646.702 1.26",fill:"#552950"}),o.createElement("path",{stroke:"#DB836E",strokeWidth:"1.063",strokeLinecap:"round",strokeLinejoin:"round",d:"M99.206 73.644l-.9 1.62-.3 4.38h-2.24"}),o.createElement("path",{d:"M99.926 73.284s1.8-.72 2.52.54",stroke:"#5C2552",strokeWidth:"1.117",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M81.367 73.084s.48-1.12 1.12-.72c.64.4 1.28 1.44.56 2s.16 1.68.16 1.68",stroke:"#DB836E",strokeWidth:"1.117",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M92.326 71.724s1.84 1.12 4.16.96",stroke:"#5C2552",strokeWidth:"1.117",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M92.726 80.604s2.24 1.2 4.4 1.2M93.686 83.164s.96.4 1.52.32M83.687 80.044s1.786 6.547 9.262 7.954",stroke:"#DB836E",strokeWidth:"1.063",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M95.548 91.663s-1.068 2.821-8.298 2.105c-7.23-.717-10.29-5.044-10.29-5.044",stroke:"#E4EBF7",strokeWidth:"1.136",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M78.126 87.478s6.526 4.972 16.47 2.486c0 0 9.577 1.02 11.536 5.322 5.36 11.77.543 36.835 0 39.962 3.496 4.055-.466 8.483-.466 8.483-15.624-3.548-35.81-.6-35.81-.6-4.849-3.546-1.223-9.044-1.223-9.044L62.38 110.32c-2.485-15.227.833-19.803 3.549-20.743 3.03-1.049 8.04-1.282 8.04-1.282.496-.058 1.08-.076 1.37-.233 2.36-1.282 2.787-.583 2.787-.583",fill:"#FFF"}),o.createElement("path",{d:"M65.828 89.81s-6.875.465-7.59 8.156c-.466 8.857 3.03 10.954 3.03 10.954s6.075 22.102 16.796 22.957c8.39-2.176 4.758-6.702 4.661-11.42-.233-11.304-7.108-16.897-7.108-16.897s-4.212-13.75-9.789-13.75",fill:"#FFC6A0"}),o.createElement("path",{d:"M71.716 124.225s.855 11.264 9.828 6.486c4.765-2.536 7.581-13.828 9.789-22.568 1.456-5.768 2.58-12.197 2.58-12.197l-4.973-1.709s-2.408 5.516-7.769 12.275c-4.335 5.467-9.144 11.11-9.455 17.713",fill:"#FFC6A0"}),o.createElement("path",{d:"M108.463 105.191s1.747 2.724-2.331 30.535c2.376 2.216 1.053 6.012-.233 7.51",stroke:"#E4EBF7",strokeWidth:"1.085",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M123.262 131.527s-.427 2.732-11.77 1.981c-15.187-1.006-25.326-3.25-25.326-3.25l.933-5.8s.723.215 9.71-.068c11.887-.373 18.714-6.07 24.964-1.022 4.039 3.263 1.489 8.16 1.489 8.16",fill:"#FFC6A0"}),o.createElement("path",{d:"M70.24 90.974s-5.593-4.739-11.054 2.68c-3.318 7.223.517 15.284 2.664 19.578-.31 3.729 2.33 4.311 2.33 4.311s.108.895 1.516 2.68c4.078-7.03 6.72-9.166 13.711-12.546-.328-.656-1.877-3.265-1.825-3.767.175-1.69-1.282-2.623-1.282-2.623s-.286-.156-1.165-2.738c-.788-2.313-2.036-5.177-4.895-7.575",fill:"#FFF"}),o.createElement("path",{d:"M90.232 288.027s4.855 2.308 8.313 1.155c3.188-1.063 5.12.755 8.002 1.331 2.881.577 7.769 1.243 13.207-1.424-.117-6.228-7.786-4.499-13.518-7.588-2.895-1.56-4.276-5.336-4.066-9.944H91.544s-1.573 11.89-1.312 16.47",fill:"#CBD1D1"}),o.createElement("path",{d:"M90.207 287.833s2.745 1.437 7.639.738c3.456-.494 3.223.66 7.418 1.282 4.195.621 13.092-.194 14.334-1.126.466 1.242-.388 2.33-.388 2.33s-1.709.682-5.438.932c-2.295.154-8.098.276-10.14-.621-2.02-1.554-4.894-1.515-6.06-.234-4.427 1.075-7.184-.31-7.184-.31l-.181-2.991z",fill:"#2B0849"}),o.createElement("path",{d:"M98.429 272.257h3.496s-.117 7.574 5.127 9.671c-5.244.7-9.672-2.602-8.623-9.671",fill:"#A4AABA"}),o.createElement("path",{d:"M44.425 272.046s-2.208 7.774-4.702 12.899c-1.884 3.874-4.428 7.854 5.729 7.854 6.97 0 9.385-.503 7.782-6.917-1.604-6.415.279-13.836.279-13.836h-9.088z",fill:"#CBD1D1"}),o.createElement("path",{d:"M38.066 290.277s2.198 1.225 6.954 1.225c6.376 0 8.646-1.73 8.646-1.73s.63 1.168-.649 2.27c-1.04.897-3.77 1.668-7.745 1.621-4.347-.05-6.115-.593-7.062-1.224-.864-.577-.72-1.657-.144-2.162",fill:"#2B0849"}),o.createElement("path",{d:"M45.344 274.041s.035 1.592-.329 3.07c-.365 1.49-1.13 3.255-1.184 4.34-.061 1.206 4.755 1.657 5.403.036.65-1.622 1.357-6.737 2.006-7.602.648-.865-5.14-2.222-5.896.156",fill:"#A4AABA"}),o.createElement("path",{d:"M89.476 277.57l13.899.095s1.349-56.643 1.925-66.909c.576-10.267 3.923-45.052 1.042-65.585l-13.037-.669-23.737.81s-.452 4.12-1.243 10.365c-.065.515-.708.874-.777 1.417-.078.608.439 1.407.332 2.044-2.455 14.627-5.797 32.736-8.256 46.837-.121.693-1.282 1.048-1.515 2.796-.042.314.22 1.584.116 1.865-7.14 19.473-12.202 52.601-15.66 67.19l15.176-.015s2.282-10.145 4.185-18.871c2.922-13.389 24.012-88.32 24.012-88.32l3.133-.954-.158 48.568s-.233 1.282.35 2.098c.583.815-.581 1.167-.408 2.331l.408 1.864s-.466 7.458-.932 12.352c-.467 4.895 1.145 40.69 1.145 40.69",fill:"#7BB2F9"}),o.createElement("path",{d:"M64.57 218.881c1.197.099 4.195-2.097 7.225-5.127M96.024 222.534s2.881-1.152 6.34-4.034",stroke:"#648BD8",strokeWidth:"1.085",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M96.973 219.373s2.882-1.153 6.34-4.034",stroke:"#648BD8",strokeWidth:"1.032",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M63.172 222.144s2.724-.614 6.759-3.496M74.903 146.166c-.281 3.226.31 8.856-4.506 9.478M93.182 144.344s.115 14.557-1.344 15.65c-2.305 1.73-3.107 2.02-3.107 2.02M89.197 144.923s.269 13.144-1.01 25.088M83.525 170.71s6.81-1.051 9.116-1.051M46.026 270.045l-.892 4.538M46.937 263.289l-.815 4.157M62.725 202.503c-.33 1.618-.102 1.904-.449 3.438 0 0-2.756 1.903-2.29 3.923.466 2.02-.31 3.424-4.505 17.252-1.762 5.807-4.233 18.922-6.165 28.278-.03.144-.521 2.646-1.14 5.8M64.158 194.136c-.295 1.658-.6 3.31-.917 4.938M71.33 146.787l-1.244 10.877s-1.14.155-.519 2.33c.117 1.399-2.778 16.39-5.382 31.615M44.242 273.727H58.07",stroke:"#648BD8",strokeWidth:"1.085",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M106.18 142.117c-3.028-.489-18.825-2.744-36.219.2a.625.625 0 0 0-.518.644c.063 1.307.044 2.343.015 2.995a.617.617 0 0 0 .716.636c3.303-.534 17.037-2.412 35.664-.266.347.04.66-.214.692-.56.124-1.347.16-2.425.17-3.029a.616.616 0 0 0-.52-.62",fill:"#192064"}),o.createElement("path",{d:"M96.398 145.264l.003-5.102a.843.843 0 0 0-.809-.847 114.104 114.104 0 0 0-8.141-.014.85.85 0 0 0-.82.847l-.003 5.097c0 .476.388.857.864.845 2.478-.064 5.166-.067 8.03.017a.848.848 0 0 0 .876-.843",fill:"#FFF"}),o.createElement("path",{d:"M95.239 144.296l.002-3.195a.667.667 0 0 0-.643-.672c-1.9-.061-3.941-.073-6.094-.01a.675.675 0 0 0-.654.672l-.002 3.192c0 .376.305.677.68.669 1.859-.042 3.874-.043 6.02.012.376.01.69-.291.691-.668",fill:"#192064"}),o.createElement("path",{d:"M90.102 273.522h12.819M91.216 269.761c.006 3.519-.072 5.55 0 6.292M90.923 263.474c-.009 1.599-.016 2.558-.016 4.505M90.44 170.404l.932 46.38s.7 1.631-.233 2.796c-.932 1.166 2.564.7.932 2.33-1.63 1.633.933 1.166 0 3.497-.618 1.546-1.031 21.921-1.138 36.513",stroke:"#648BD8",strokeWidth:"1.085",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M73.736 98.665l2.214 4.312s2.098.816 1.865 2.68l.816 2.214M64.297 116.611c.233-.932 2.176-7.147 12.585-10.488M77.598 90.042s7.691 6.137 16.547 2.72",stroke:"#E4EBF7",strokeWidth:"1.085",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M91.974 86.954s5.476-.816 7.574-4.545c1.297-.345.72 2.212-.33 3.671-.7.971-1.01 1.554-1.01 1.554s.194.31.155.816c-.053.697-.175.653-.272 1.048-.081.335.108.657 0 1.049-.046.17-.198.5-.382.878-.12.249-.072.687-.2.948-.231.469-1.562 1.87-2.622 2.855-3.826 3.554-5.018 1.644-6.001-.408-.894-1.865-.661-5.127-.874-6.875-.35-2.914-2.622-3.03-1.923-4.429.343-.685 2.87.69 3.263 1.748.757 2.04 2.952 1.807 2.622 1.69",fill:"#FFC6A0"}),o.createElement("path",{d:"M99.8 82.429c-.465.077-.35.272-.97 1.243-.622.971-4.817 2.932-6.39 3.224-2.589.48-2.278-1.56-4.254-2.855-1.69-1.107-3.562-.638-1.398 1.398.99.932.932 1.107 1.398 3.205.335 1.506-.64 3.67.7 5.593",stroke:"#DB836E",strokeWidth:".774",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M79.543 108.673c-2.1 2.926-4.266 6.175-5.557 8.762",stroke:"#E59788",strokeWidth:".774",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M87.72 124.768s-2.098-1.942-5.127-2.719c-3.03-.777-3.574-.155-5.516.078-1.942.233-3.885-.932-3.652.7.233 1.63 5.05 1.01 5.206 2.097.155 1.087-6.37 2.796-8.313 2.175-.777.777.466 1.864 2.02 2.175.233 1.554 2.253 1.554 2.253 1.554s.699 1.01 2.641 1.088c2.486 1.32 8.934-.7 10.954-1.554 2.02-.855-.466-5.594-.466-5.594",fill:"#FFC6A0"}),o.createElement("path",{d:"M73.425 122.826s.66 1.127 3.167 1.418c2.315.27 2.563.583 2.563.583s-2.545 2.894-9.07 2.272M72.416 129.274s3.826.097 4.933-.718M74.98 130.75s1.961.136 3.36-.505M77.232 131.916s1.748.019 2.914-.505M73.328 122.321s-.595-1.032 1.262-.427c1.671.544 2.833.055 5.128.155 1.389.061 3.067-.297 3.982.15 1.606.784 3.632 2.181 3.632 2.181s10.526 1.204 19.033-1.127M78.864 108.104s-8.39 2.758-13.168 12.12",stroke:"#E59788",strokeWidth:".774",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M109.278 112.533s3.38-3.613 7.575-4.662",stroke:"#E4EBF7",strokeWidth:"1.085",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M107.375 123.006s9.697-2.745 11.445-.88",stroke:"#E59788",strokeWidth:".774",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M194.605 83.656l3.971-3.886M187.166 90.933l3.736-3.655M191.752 84.207l-4.462-4.56M198.453 91.057l-4.133-4.225M129.256 163.074l3.718-3.718M122.291 170.039l3.498-3.498M126.561 163.626l-4.27-4.27M132.975 170.039l-3.955-3.955",stroke:"#BFCDDD",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M190.156 211.779h-1.604a4.023 4.023 0 0 1-4.011-4.011V175.68a4.023 4.023 0 0 1 4.01-4.01h1.605a4.023 4.023 0 0 1 4.011 4.01v32.088a4.023 4.023 0 0 1-4.01 4.01",fill:"#A3B4C6"}),o.createElement("path",{d:"M237.824 212.977a4.813 4.813 0 0 1-4.813 4.813h-86.636a4.813 4.813 0 0 1 0-9.626h86.636a4.813 4.813 0 0 1 4.813 4.813",fill:"#A3B4C6"}),o.createElement("mask",{fill:"#fff"}),o.createElement("path",{fill:"#A3B4C6",mask:"url(#d)",d:"M154.098 190.096h70.513v-84.617h-70.513z"}),o.createElement("path",{d:"M224.928 190.096H153.78a3.219 3.219 0 0 1-3.208-3.209V167.92a3.219 3.219 0 0 1 3.208-3.21h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.219 3.219 0 0 1-3.21 3.209M224.928 130.832H153.78a3.218 3.218 0 0 1-3.208-3.208v-18.968a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.218 3.218 0 0 1-3.21 3.208",fill:"#BFCDDD",mask:"url(#d)"}),o.createElement("path",{d:"M159.563 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 120.546h-22.461a.802.802 0 0 1-.802-.802v-3.208c0-.443.359-.803.802-.803h22.46c.444 0 .803.36.803.803v3.208c0 .443-.36.802-.802.802",fill:"#FFF",mask:"url(#d)"}),o.createElement("path",{d:"M224.928 160.464H153.78a3.218 3.218 0 0 1-3.208-3.209v-18.967a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.209v18.967a3.218 3.218 0 0 1-3.21 3.209",fill:"#BFCDDD",mask:"url(#d)"}),o.createElement("path",{d:"M173.455 130.832h49.301M164.984 130.832h6.089M155.952 130.832h6.75M173.837 160.613h49.3M165.365 160.613h6.089M155.57 160.613h6.751",stroke:"#7C90A5",strokeWidth:"1.124",strokeLinecap:"round",strokeLinejoin:"round",mask:"url(#d)"}),o.createElement("path",{d:"M159.563 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M166.98 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M174.397 151.038a2.407 2.407 0 1 1 .001-4.814 2.407 2.407 0 0 1 0 4.814M222.539 151.038h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802M159.563 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 179.987h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802",fill:"#FFF",mask:"url(#d)"}),o.createElement("path",{d:"M203.04 221.108h-27.372a2.413 2.413 0 0 1-2.406-2.407v-11.448a2.414 2.414 0 0 1 2.406-2.407h27.372a2.414 2.414 0 0 1 2.407 2.407V218.7a2.413 2.413 0 0 1-2.407 2.407",fill:"#BFCDDD",mask:"url(#d)"}),o.createElement("path",{d:"M177.259 207.217v11.52M201.05 207.217v11.52",stroke:"#A3B4C6",strokeWidth:"1.124",strokeLinecap:"round",strokeLinejoin:"round",mask:"url(#d)"}),o.createElement("path",{d:"M162.873 267.894a9.422 9.422 0 0 1-9.422-9.422v-14.82a9.423 9.423 0 0 1 18.845 0v14.82a9.423 9.423 0 0 1-9.423 9.422",fill:"#5BA02E",mask:"url(#d)"}),o.createElement("path",{d:"M171.22 267.83a9.422 9.422 0 0 1-9.422-9.423v-3.438a9.423 9.423 0 0 1 18.845 0v3.438a9.423 9.423 0 0 1-9.422 9.423",fill:"#92C110",mask:"url(#d)"}),o.createElement("path",{d:"M181.31 293.666h-27.712a3.209 3.209 0 0 1-3.209-3.21V269.79a3.209 3.209 0 0 1 3.209-3.21h27.711a3.209 3.209 0 0 1 3.209 3.21v20.668a3.209 3.209 0 0 1-3.209 3.209",fill:"#F2D7AD",mask:"url(#d)"})))};t.default=i},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=a();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var c=o?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(n,i,c):n[i]=e[i]}n.default=e,t&&t.set(e,n);return n}(n(0));function a(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return a=function(){return e},e}var i=function(){return o.createElement("svg",{width:"251",height:"294"},o.createElement("g",{fill:"none",fillRule:"evenodd"},o.createElement("path",{d:"M0 129.023v-2.084C0 58.364 55.591 2.774 124.165 2.774h2.085c68.574 0 124.165 55.59 124.165 124.165v2.084c0 68.575-55.59 124.166-124.165 124.166h-2.085C55.591 253.189 0 197.598 0 129.023",fill:"#E4EBF7"}),o.createElement("path",{d:"M41.417 132.92a8.231 8.231 0 1 1-16.38-1.65 8.231 8.231 0 0 1 16.38 1.65",fill:"#FFF"}),o.createElement("path",{d:"M38.652 136.36l10.425 5.91M49.989 148.505l-12.58 10.73",stroke:"#FFF",strokeWidth:"2"}),o.createElement("path",{d:"M41.536 161.28a5.636 5.636 0 1 1-11.216-1.13 5.636 5.636 0 0 1 11.216 1.13M59.154 145.261a5.677 5.677 0 1 1-11.297-1.138 5.677 5.677 0 0 1 11.297 1.138M100.36 29.516l29.66-.013a4.562 4.562 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 0 0 .005 9.126M111.705 47.754l29.659-.013a4.563 4.563 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 1 0 .005 9.126",fill:"#FFF"}),o.createElement("path",{d:"M114.066 29.503V29.5l15.698-.007a4.563 4.563 0 1 0 .004 9.126l-15.698.007v-.002a4.562 4.562 0 0 0-.004-9.122M185.405 137.723c-.55 5.455-5.418 9.432-10.873 8.882-5.456-.55-9.432-5.418-8.882-10.873.55-5.455 5.418-9.432 10.873-8.882 5.455.55 9.432 5.418 8.882 10.873",fill:"#FFF"}),o.createElement("path",{d:"M180.17 143.772l12.572 7.129M193.841 158.42L178.67 171.36",stroke:"#FFF",strokeWidth:"2"}),o.createElement("path",{d:"M185.55 171.926a6.798 6.798 0 1 1-13.528-1.363 6.798 6.798 0 0 1 13.527 1.363M204.12 155.285a6.848 6.848 0 1 1-13.627-1.375 6.848 6.848 0 0 1 13.626 1.375",fill:"#FFF"}),o.createElement("path",{d:"M152.988 194.074a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0zM225.931 118.217a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM217.09 153.051a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.42 0zM177.84 109.842a2.21 2.21 0 1 1-4.422 0 2.21 2.21 0 0 1 4.421 0zM196.114 94.454a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM202.844 182.523a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0z",stroke:"#FFF",strokeWidth:"2"}),o.createElement("path",{stroke:"#FFF",strokeWidth:"2",d:"M215.125 155.262l-1.902 20.075-10.87 5.958M174.601 176.636l-6.322 9.761H156.98l-4.484 6.449M175.874 127.28V111.56M221.51 119.404l-12.77 7.859-15.228-7.86V96.668"}),o.createElement("path",{d:"M180.68 29.32C180.68 13.128 193.806 0 210 0c16.193 0 29.32 13.127 29.32 29.32 0 16.194-13.127 29.322-29.32 29.322-16.193 0-29.32-13.128-29.32-29.321",fill:"#A26EF4"}),o.createElement("path",{d:"M221.45 41.706l-21.563-.125a1.744 1.744 0 0 1-1.734-1.754l.071-12.23a1.744 1.744 0 0 1 1.754-1.734l21.562.125c.964.006 1.74.791 1.735 1.755l-.071 12.229a1.744 1.744 0 0 1-1.754 1.734",fill:"#FFF"}),o.createElement("path",{d:"M215.106 29.192c-.015 2.577-2.049 4.654-4.543 4.64-2.494-.014-4.504-2.115-4.489-4.693l.04-6.925c.016-2.577 2.05-4.654 4.543-4.64 2.494.015 4.504 2.116 4.49 4.693l-.04 6.925zm-4.53-14.074a6.877 6.877 0 0 0-6.916 6.837l-.043 7.368a6.877 6.877 0 0 0 13.754.08l.042-7.368a6.878 6.878 0 0 0-6.837-6.917zM167.566 68.367h-3.93a4.73 4.73 0 0 1-4.717-4.717 4.73 4.73 0 0 1 4.717-4.717h3.93a4.73 4.73 0 0 1 4.717 4.717 4.73 4.73 0 0 1-4.717 4.717",fill:"#FFF"}),o.createElement("path",{d:"M168.214 248.838a6.611 6.611 0 0 1-6.61-6.611v-66.108a6.611 6.611 0 0 1 13.221 0v66.108a6.611 6.611 0 0 1-6.61 6.61",fill:"#5BA02E"}),o.createElement("path",{d:"M176.147 248.176a6.611 6.611 0 0 1-6.61-6.61v-33.054a6.611 6.611 0 1 1 13.221 0v33.053a6.611 6.611 0 0 1-6.61 6.611",fill:"#92C110"}),o.createElement("path",{d:"M185.994 293.89h-27.376a3.17 3.17 0 0 1-3.17-3.17v-45.887a3.17 3.17 0 0 1 3.17-3.17h27.376a3.17 3.17 0 0 1 3.17 3.17v45.886a3.17 3.17 0 0 1-3.17 3.17",fill:"#F2D7AD"}),o.createElement("path",{d:"M81.972 147.673s6.377-.927 17.566-1.28c11.729-.371 17.57 1.086 17.57 1.086s3.697-3.855.968-8.424c1.278-12.077 5.982-32.827.335-48.273-1.116-1.339-3.743-1.512-7.536-.62-1.337.315-7.147-.149-7.983-.1l-15.311-.347s-3.487-.17-8.035-.508c-1.512-.113-4.227-1.683-5.458-.338-.406.443-2.425 5.669-1.97 16.077l8.635 35.642s-3.141 3.61 1.219 7.085",fill:"#FFF"}),o.createElement("path",{d:"M75.768 73.325l-.9-6.397 11.982-6.52s7.302-.118 8.038 1.205c.737 1.324-5.616.993-5.616.993s-1.836 1.388-2.615 2.5c-1.654 2.363-.986 6.471-8.318 5.986-1.708.284-2.57 2.233-2.57 2.233",fill:"#FFC6A0"}),o.createElement("path",{d:"M52.44 77.672s14.217 9.406 24.973 14.444c1.061.497-2.094 16.183-11.892 11.811-7.436-3.318-20.162-8.44-21.482-14.496-.71-3.258 2.543-7.643 8.401-11.76M141.862 80.113s-6.693 2.999-13.844 6.876c-3.894 2.11-10.137 4.704-12.33 7.988-6.224 9.314 3.536 11.22 12.947 7.503 6.71-2.651 28.999-12.127 13.227-22.367",fill:"#FFB594"}),o.createElement("path",{d:"M76.166 66.36l3.06 3.881s-2.783 2.67-6.31 5.747c-7.103 6.195-12.803 14.296-15.995 16.44-3.966 2.662-9.754 3.314-12.177-.118-3.553-5.032.464-14.628 31.422-25.95",fill:"#FFC6A0"}),o.createElement("path",{d:"M64.674 85.116s-2.34 8.413-8.912 14.447c.652.548 18.586 10.51 22.144 10.056 5.238-.669 6.417-18.968 1.145-20.531-.702-.208-5.901-1.286-8.853-2.167-.87-.26-1.611-1.71-3.545-.936l-1.98-.869zM128.362 85.826s5.318 1.956 7.325 13.734c-.546.274-17.55 12.35-21.829 7.805-6.534-6.94-.766-17.393 4.275-18.61 4.646-1.121 5.03-1.37 10.23-2.929",fill:"#FFF"}),o.createElement("path",{d:"M78.18 94.656s.911 7.41-4.914 13.078",stroke:"#E4EBF7",strokeWidth:"1.051",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M87.397 94.68s3.124 2.572 10.263 2.572c7.14 0 9.074-3.437 9.074-3.437",stroke:"#E4EBF7",strokeWidth:".932",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M117.184 68.639l-6.781-6.177s-5.355-4.314-9.223-.893c-3.867 3.422 4.463 2.083 5.653 4.165 1.19 2.082.848 1.143-2.083.446-5.603-1.331-2.082.893 2.975 5.355 2.091 1.845 6.992.955 6.992.955l2.467-3.851z",fill:"#FFC6A0"}),o.createElement("path",{d:"M105.282 91.315l-.297-10.937-15.918-.027-.53 10.45c-.026.403.17.788.515.999 2.049 1.251 9.387 5.093 15.799.424.287-.21.443-.554.431-.91",fill:"#FFB594"}),o.createElement("path",{d:"M107.573 74.24c.817-1.147.982-9.118 1.015-11.928a1.046 1.046 0 0 0-.965-1.055l-4.62-.365c-7.71-1.044-17.071.624-18.253 6.346-5.482 5.813-.421 13.244-.421 13.244s1.963 3.566 4.305 6.791c.756 1.041.398-3.731 3.04-5.929 5.524-4.594 15.899-7.103 15.899-7.103",fill:"#5C2552"}),o.createElement("path",{d:"M88.426 83.206s2.685 6.202 11.602 6.522c7.82.28 8.973-7.008 7.434-17.505l-.909-5.483c-6.118-2.897-15.478.54-15.478.54s-.576 2.044-.19 5.504c-2.276 2.066-1.824 5.618-1.824 5.618s-.905-1.922-1.98-2.321c-.86-.32-1.897.089-2.322 1.98-1.04 4.632 3.667 5.145 3.667 5.145",fill:"#FFC6A0"}),o.createElement("path",{stroke:"#DB836E",strokeWidth:"1.145",strokeLinecap:"round",strokeLinejoin:"round",d:"M100.843 77.099l1.701-.928-1.015-4.324.674-1.406"}),o.createElement("path",{d:"M105.546 74.092c-.022.713-.452 1.279-.96 1.263-.51-.016-.904-.607-.882-1.32.021-.713.452-1.278.96-1.263.51.016.904.607.882 1.32M97.592 74.349c-.022.713-.452 1.278-.961 1.263-.509-.016-.904-.607-.882-1.32.022-.713.452-1.279.961-1.263.51.016.904.606.882 1.32",fill:"#552950"}),o.createElement("path",{d:"M91.132 86.786s5.269 4.957 12.679 2.327",stroke:"#DB836E",strokeWidth:"1.145",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M99.776 81.903s-3.592.232-1.44-2.79c1.59-1.496 4.897-.46 4.897-.46s1.156 3.906-3.457 3.25",fill:"#DB836E"}),o.createElement("path",{d:"M102.88 70.6s2.483.84 3.402.715M93.883 71.975s2.492-1.144 4.778-1.073",stroke:"#5C2552",strokeWidth:"1.526",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M86.32 77.374s.961.879 1.458 2.106c-.377.48-1.033 1.152-.236 1.809M99.337 83.719s1.911.151 2.509-.254",stroke:"#DB836E",strokeWidth:"1.145",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M87.782 115.821l15.73-3.012M100.165 115.821l10.04-2.008",stroke:"#E4EBF7",strokeWidth:"1.051",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M66.508 86.763s-1.598 8.83-6.697 14.078",stroke:"#E4EBF7",strokeWidth:"1.114",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M128.31 87.934s3.013 4.121 4.06 11.785",stroke:"#E4EBF7",strokeWidth:"1.051",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M64.09 84.816s-6.03 9.912-13.607 9.903",stroke:"#DB836E",strokeWidth:".795",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M112.366 65.909l-.142 5.32s5.993 4.472 11.945 9.202c4.482 3.562 8.888 7.455 10.985 8.662 4.804 2.766 8.9 3.355 11.076 1.808 4.071-2.894 4.373-9.878-8.136-15.263-4.271-1.838-16.144-6.36-25.728-9.73",fill:"#FFC6A0"}),o.createElement("path",{d:"M130.532 85.488s4.588 5.757 11.619 6.214",stroke:"#DB836E",strokeWidth:".75",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M121.708 105.73s-.393 8.564-1.34 13.612",stroke:"#E4EBF7",strokeWidth:"1.051",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M115.784 161.512s-3.57-1.488-2.678-7.14",stroke:"#648BD8",strokeWidth:"1.051",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M101.52 290.246s4.326 2.057 7.408 1.03c2.842-.948 4.564.673 7.132 1.186 2.57.514 6.925 1.108 11.772-1.269-.104-5.551-6.939-4.01-12.048-6.763-2.582-1.39-3.812-4.757-3.625-8.863h-9.471s-1.402 10.596-1.169 14.68",fill:"#CBD1D1"}),o.createElement("path",{d:"M101.496 290.073s2.447 1.281 6.809.658c3.081-.44 3.74.485 7.479 1.039 3.739.554 10.802-.07 11.91-.9.415 1.108-.347 2.077-.347 2.077s-1.523.608-4.847.831c-2.045.137-5.843.293-7.663-.507-1.8-1.385-5.286-1.917-5.77-.243-3.947.958-7.41-.288-7.41-.288l-.16-2.667z",fill:"#2B0849"}),o.createElement("path",{d:"M108.824 276.19h3.116s-.103 6.751 4.57 8.62c-4.673.624-8.62-2.32-7.686-8.62",fill:"#A4AABA"}),o.createElement("path",{d:"M57.65 272.52s-2.122 7.47-4.518 12.396c-1.811 3.724-4.255 7.548 5.505 7.548 6.698 0 9.02-.483 7.479-6.648-1.541-6.164.268-13.296.268-13.296H57.65z",fill:"#CBD1D1"}),o.createElement("path",{d:"M51.54 290.04s2.111 1.178 6.682 1.178c6.128 0 8.31-1.662 8.31-1.662s.605 1.122-.624 2.18c-1 .862-3.624 1.603-7.444 1.559-4.177-.049-5.876-.57-6.786-1.177-.831-.554-.692-1.593-.138-2.078",fill:"#2B0849"}),o.createElement("path",{d:"M58.533 274.438s.034 1.529-.315 2.95c-.352 1.431-1.087 3.127-1.139 4.17-.058 1.16 4.57 1.592 5.194.035.623-1.559 1.303-6.475 1.927-7.306.622-.831-4.94-2.135-5.667.15",fill:"#A4AABA"}),o.createElement("path",{d:"M100.885 277.015l13.306.092s1.291-54.228 1.843-64.056c.552-9.828 3.756-43.13.997-62.788l-12.48-.64-22.725.776s-.433 3.944-1.19 9.921c-.062.493-.677.838-.744 1.358-.075.582.42 1.347.318 1.956-2.35 14.003-6.343 32.926-8.697 46.425-.116.663-1.227 1.004-1.45 2.677-.04.3.21 1.516.112 1.785-6.836 18.643-10.89 47.584-14.2 61.551l14.528-.014s2.185-8.524 4.008-16.878c2.796-12.817 22.987-84.553 22.987-84.553l3-.517 1.037 46.1s-.223 1.228.334 2.008c.558.782-.556 1.117-.39 2.233l.39 1.784s-.446 7.14-.892 11.826c-.446 4.685-.092 38.954-.092 38.954",fill:"#7BB2F9"}),o.createElement("path",{d:"M77.438 220.434c1.146.094 4.016-2.008 6.916-4.91M107.55 223.931s2.758-1.103 6.069-3.862",stroke:"#648BD8",strokeWidth:"1.051",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M108.459 220.905s2.759-1.104 6.07-3.863",stroke:"#648BD8",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M76.099 223.557s2.608-.587 6.47-3.346M87.33 150.82c-.27 3.088.297 8.478-4.315 9.073M104.829 149.075s.11 13.936-1.286 14.983c-2.207 1.655-2.975 1.934-2.975 1.934M101.014 149.63s.035 12.81-1.19 24.245M94.93 174.965s7.174-1.655 9.38-1.655M75.671 204.754c-.316 1.55-.64 3.067-.973 4.535 0 0-1.45 1.822-1.003 3.756.446 1.934-.943 2.034-4.96 15.273-1.686 5.559-4.464 18.49-6.313 27.447-.078.38-4.018 18.06-4.093 18.423M77.043 196.743a313.269 313.269 0 0 1-.877 4.729M83.908 151.414l-1.19 10.413s-1.091.148-.496 2.23c.111 1.34-2.66 15.692-5.153 30.267M57.58 272.94h13.238",stroke:"#648BD8",strokeWidth:"1.051",strokeLinecap:"round",strokeLinejoin:"round"}),o.createElement("path",{d:"M117.377 147.423s-16.955-3.087-35.7.199c.157 2.501-.002 4.128-.002 4.128s14.607-2.802 35.476-.31c.251-2.342.226-4.017.226-4.017",fill:"#192064"}),o.createElement("path",{d:"M107.511 150.353l.004-4.885a.807.807 0 0 0-.774-.81c-2.428-.092-5.04-.108-7.795-.014a.814.814 0 0 0-.784.81l-.003 4.88c0 .456.371.82.827.808a140.76 140.76 0 0 1 7.688.017.81.81 0 0 0 .837-.806",fill:"#FFF"}),o.createElement("path",{d:"M106.402 149.426l.002-3.06a.64.64 0 0 0-.616-.643 94.135 94.135 0 0 0-5.834-.009.647.647 0 0 0-.626.643l-.001 3.056c0 .36.291.648.651.64 1.78-.04 3.708-.041 5.762.012.36.009.662-.279.662-.64",fill:"#192064"}),o.createElement("path",{d:"M101.485 273.933h12.272M102.652 269.075c.006 3.368.04 5.759.11 6.47M102.667 263.125c-.009 1.53-.015 2.98-.016 4.313M102.204 174.024l.893 44.402s.669 1.561-.224 2.677c-.892 1.116 2.455.67.893 2.231-1.562 1.562.893 1.116 0 3.347-.592 1.48-.988 20.987-1.09 34.956",stroke:"#648BD8",strokeWidth:"1.051",strokeLinecap:"round",strokeLinejoin:"round"})))};t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=m(n(3)),o=m(n(0)),a=p(n(2)),i=p(n(78)),c=p(n(34)),l=n(32),u=n(79),s=p(n(762)),f=p(n(763)),d=n(169);function p(e){return e&&e.__esModule?e:{default:e}}function h(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return h=function(){return e},e}function m(e){if(e&&e.__esModule)return e;if(null===e||"object"!==v(e)&&"function"!=typeof e)return{default:e};var t=h();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function v(e){return(v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _(){return(_=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function b(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function g(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function M(e,t){return(M=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function w(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=L(e);if(t){var o=L(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return O(this,n)}}function O(e,t){return!t||"object"!==v(t)&&"function"!=typeof t?k(e):t}function k(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function L(e){return(L=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var x=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},z=(0,u.tuple)("line","circle","dashboard"),S=(0,u.tuple)("normal","exception","active","success"),C=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&M(e,t)}(p,e);var t,n,r,u=w(p);function p(){var e;return b(this,p),(e=u.apply(this,arguments)).renderProgress=function(t){var n,r,c=t.getPrefixCls,l=k(e).props,u=l.prefixCls,d=l.className,p=l.size,h=l.type,m=l.showInfo,v=x(l,["prefixCls","className","size","type","showInfo"]),b=c("progress",u),g=e.getProgressStatus(),M=e.renderProcessInfo(b,g);"line"===h?r=o.createElement(s.default,_({},e.props,{prefixCls:b}),M):"circle"!==h&&"dashboard"!==h||(r=o.createElement(f.default,_({},e.props,{prefixCls:b,progressStatus:g}),M));var w=(0,a.default)(b,(y(n={},"".concat(b,"-").concat("dashboard"===h?"circle":h),!0),y(n,"".concat(b,"-status-").concat(g),!0),y(n,"".concat(b,"-show-info"),m),y(n,"".concat(b,"-").concat(p),p),n),d);return o.createElement("div",_({},(0,i.default)(v,["status","format","trailColor","successPercent","strokeWidth","width","gapDegree","gapPosition","strokeColor","strokeLinecap","percent"]),{className:w}),r)},e}return t=p,(n=[{key:"getPercentNumber",value:function(){var e=this.props,t=e.successPercent,n=e.percent,r=void 0===n?0:n;return parseInt(void 0!==t?t.toString():r.toString(),10)}},{key:"getProgressStatus",value:function(){var e=this.props.status;return S.indexOf(e)<0&&this.getPercentNumber()>=100?"success":e||"normal"}},{key:"renderProcessInfo",value:function(e,t){var n,r=this.props,a=r.showInfo,i=r.format,l=r.type,u=r.percent,s=r.successPercent;if(!a)return null;var f="circle"===l||"dashboard"===l?"":"-circle";return i||"exception"!==t&&"success"!==t?n=(i||function(e){return"".concat(e,"%")})((0,d.validProgress)(u),(0,d.validProgress)(s)):"exception"===t?n=o.createElement(c.default,{type:"close".concat(f),theme:"line"===l?"filled":"outlined"}):"success"===t&&(n=o.createElement(c.default,{type:"check".concat(f),theme:"line"===l?"filled":"outlined"})),o.createElement("span",{className:"".concat(e,"-text"),title:"string"==typeof n?n:void 0},n)}},{key:"render",value:function(){return o.createElement(l.ConfigConsumer,null,this.renderProgress)}}])&&g(t.prototype,n),r&&g(t,r),p}(o.Component);t.default=C,C.defaultProps={type:"line",percent:0,showInfo:!0,trailColor:"#f3f3f3",size:"default",gapDegree:0,strokeLinecap:"round"},C.propTypes={status:r.oneOf(S),type:r.oneOf(z),showInfo:r.bool,percent:r.number,width:r.number,strokeWidth:r.number,strokeLinecap:r.oneOf(["round","square"]),strokeColor:r.oneOfType([r.string,r.object]),trailColor:r.string,format:r.func,gapDegree:r.number}},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.handleGradient=t.sortGradient=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=i();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var c=o?Object.getOwnPropertyDescriptor(e,a):null;c&&(c.get||c.set)?Object.defineProperty(n,a,c):n[a]=e[a]}n.default=e,t&&t.set(e,n);return n}(n(0)),a=n(169);function i(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return i=function(){return e},e}function c(){return(c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=e[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var s=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n},f=function(e){for(var t=[],n=0,r=Object.entries(e);n<r.length;n++){var o=l(r[n],2),a=o[0],i=o[1],c=parseFloat(a.replace(/%/g,""));if(isNaN(c))return{};t.push({key:c,value:i})}return(t=t.sort((function(e,t){return e.key-t.key}))).map((function(e){var t=e.key,n=e.value;return"".concat(n," ").concat(t,"%")})).join(", ")};t.sortGradient=f;var d=function(e){var t=e.from,n=void 0===t?"#1890ff":t,r=e.to,o=void 0===r?"#1890ff":r,a=e.direction,i=void 0===a?"to right":a,c=s(e,["from","to","direction"]);if(0!==Object.keys(c).length){var l=f(c);return{backgroundImage:"linear-gradient(".concat(i,", ").concat(l,")")}}return{backgroundImage:"linear-gradient(".concat(i,", ").concat(n,", ").concat(o,")")}};t.handleGradient=d;var p=function(e){var t,n=e.prefixCls,r=e.percent,i=e.successPercent,l=e.strokeWidth,u=e.size,s=e.strokeColor,f=e.strokeLinecap,p=e.children;t=s&&"string"!=typeof s?d(s):{background:s};var h=c({width:"".concat((0,a.validProgress)(r),"%"),height:l||("small"===u?6:8),borderRadius:"square"===f?0:""},t),m={width:"".concat((0,a.validProgress)(i),"%"),height:l||("small"===u?6:8),borderRadius:"square"===f?0:""},v=void 0!==i?o.createElement("div",{className:"".concat(n,"-success-bg"),style:m}):null;return o.createElement("div",null,o.createElement("div",{className:"".concat(n,"-outer")},o.createElement("div",{className:"".concat(n,"-inner")},o.createElement("div",{className:"".concat(n,"-bg"),style:h}),v)),p)};t.default=p},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o,a=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}n.default=e,t&&t.set(e,n);return n}(n(0)),i=n(878),c=(o=n(2))&&o.__esModule?o:{default:o},l=n(169);function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}var s={normal:"#108ee9",exception:"#ff5500",success:"#87d068"};function f(e){var t=e.percent,n=e.successPercent,r=(0,l.validProgress)(t);if(!n)return r;var o=(0,l.validProgress)(n);return[n,(0,l.validProgress)(r-o)]}var d=function(e){var t,n,r,o,l=e.prefixCls,u=e.width,d=e.strokeWidth,p=e.trailColor,h=e.strokeLinecap,m=e.gapPosition,v=e.gapDegree,y=e.type,_=e.children,b=u||120,g={width:b,height:b,fontSize:.15*b+6},M=d||6,w=m||"dashboard"===y&&"bottom"||"top",O=v||("dashboard"===y?75:void 0),k=(n=(t=e).progressStatus,r=t.successPercent,o=t.strokeColor||s[n],r?[s.success,o]:o),L="[object Object]"===Object.prototype.toString.call(k),x=(0,c.default)("".concat(l,"-inner"),function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},"".concat(l,"-circle-gradient"),L));return a.createElement("div",{className:x,style:g},a.createElement(i.Circle,{percent:f(e),strokeWidth:M,trailWidth:M,strokeColor:k,strokeLinecap:h,trailColor:p,prefixCls:l,gapDegree:O,gapPosition:w}),_)};t.default=d},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(){return(o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var a;if(Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.responsiveMap=t.responsiveArray=void 0,"undefined"!=typeof window){window.matchMedia||(window.matchMedia=function(e){return{media:e,matches:!1,addListener:function(){},removeListener:function(){}}}),a=n(765)}t.responsiveArray=["xxl","xl","lg","md","sm","xs"];var i={xs:"(max-width: 575px)",sm:"(min-width: 576px)",md:"(min-width: 768px)",lg:"(min-width: 992px)",xl:"(min-width: 1200px)",xxl:"(min-width: 1600px)"};t.responsiveMap=i;var c=[],l=-1,u={},s={dispatch:function(e){return u=e,!(c.length<1)&&(c.forEach((function(e){e.func(u)})),!0)},subscribe:function(e){0===c.length&&this.register();var t=(++l).toString();return c.push({token:t,func:e}),e(u),t},unsubscribe:function(e){0===(c=c.filter((function(t){return t.token!==e}))).length&&this.unregister()},unregister:function(){Object.keys(i).map((function(e){return a.unregister(i[e])}))},register:function(){var e=this;Object.keys(i).map((function(t){return a.register(i[t],{match:function(){var n=o(o({},u),r({},t,!0));e.dispatch(n)},unmatch:function(){var n=o(o({},u),r({},t,!1));e.dispatch(n)},destroy:function(){}})}))}};t.default=s},function(e,t,n){var r=n(766);e.exports=new r},function(e,t,n){var r=n(767),o=n(395),a=o.each,i=o.isFunction,c=o.isArray;function l(){if(!window.matchMedia)throw new Error("matchMedia not present, legacy browsers require a polyfill");this.queries={},this.browserIsIncapable=!window.matchMedia("only all").matches}l.prototype={constructor:l,register:function(e,t,n){var o=this.queries,l=n&&this.browserIsIncapable;return o[e]||(o[e]=new r(e,l)),i(t)&&(t={match:t}),c(t)||(t=[t]),a(t,(function(t){i(t)&&(t={match:t}),o[e].addHandler(t)})),this},unregister:function(e,t){var n=this.queries[e];return n&&(t?n.removeHandler(t):(n.clear(),delete this.queries[e])),this}},e.exports=l},function(e,t,n){var r=n(768),o=n(395).each;function a(e,t){this.query=e,this.isUnconditional=t,this.handlers=[],this.mql=window.matchMedia(e);var n=this;this.listener=function(e){n.mql=e.currentTarget||e,n.assess()},this.mql.addListener(this.listener)}a.prototype={constuctor:a,addHandler:function(e){var t=new r(e);this.handlers.push(t),this.matches()&&t.on()},removeHandler:function(e){var t=this.handlers;o(t,(function(n,r){if(n.equals(e))return n.destroy(),!t.splice(r,1)}))},matches:function(){return this.mql.matches||this.isUnconditional},clear:function(){o(this.handlers,(function(e){e.destroy()})),this.mql.removeListener(this.listener),this.handlers.length=0},assess:function(){var e=this.matches()?"on":"off";o(this.handlers,(function(t){t[e]()}))}},e.exports=a},function(e,t){function n(e){this.options=e,!e.deferSetup&&this.setup()}n.prototype={constructor:n,setup:function(){this.options.setup&&this.options.setup(),this.initialised=!0},on:function(){!this.initialised&&this.setup(),this.options.match&&this.options.match()},off:function(){this.options.unmatch&&this.options.unmatch()},destroy:function(){this.options.destroy?this.options.destroy():this.off()},equals:function(e){return this.options===e||this.options.match===e}},e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n,a){var i=o.default.unstable_batchedUpdates?function(e){o.default.unstable_batchedUpdates(n,e)}:n;return(0,r.default)(e,t,i,a)};var r=a(n(770)),o=a(n(11));function a(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n,r){function o(t){var r=new a.default(t);n.call(e,r)}if(e.addEventListener){var i=(c=!1,"object"==typeof r?c=r.capture||!1:"boolean"==typeof r&&(c=r),e.addEventListener(t,o,r||!1),{v:{remove:function(){e.removeEventListener(t,o,c)}}});if("object"==typeof i)return i.v}else if(e.attachEvent)return e.attachEvent("on"+t,o),{remove:function(){e.detachEvent("on"+t,o)}};var c};var r,o=n(771),a=(r=o)&&r.__esModule?r:{default:r};e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(772)),a=r(n(90)),i=["altKey","bubbles","cancelable","ctrlKey","currentTarget","eventPhase","metaKey","shiftKey","target","timeStamp","view","type"];function c(e){return null==e}var l=[{reg:/^key/,props:["char","charCode","key","keyCode","which"],fix:function(e,t){c(e.which)&&(e.which=c(t.charCode)?t.keyCode:t.charCode),void 0===e.metaKey&&(e.metaKey=e.ctrlKey)}},{reg:/^touch/,props:["touches","changedTouches","targetTouches"]},{reg:/^hashchange$/,props:["newURL","oldURL"]},{reg:/^gesturechange$/i,props:["rotation","scale"]},{reg:/^(mousewheel|DOMMouseScroll)$/,props:[],fix:function(e,t){var n=void 0,r=void 0,o=void 0,a=t.wheelDelta,i=t.axis,c=t.wheelDeltaY,l=t.wheelDeltaX,u=t.detail;a&&(o=a/120),u&&(o=0-(u%3==0?u/3:u)),void 0!==i&&(i===e.HORIZONTAL_AXIS?(r=0,n=0-o):i===e.VERTICAL_AXIS&&(n=0,r=o)),void 0!==c&&(r=c/120),void 0!==l&&(n=-1*l/120),n||r||(r=o),void 0!==n&&(e.deltaX=n),void 0!==r&&(e.deltaY=r),void 0!==o&&(e.delta=o)}},{reg:/^mouse|contextmenu|click|mspointer|(^DOMMouseScroll$)/i,props:["buttons","clientX","clientY","button","offsetX","relatedTarget","which","fromElement","toElement","offsetY","pageX","pageY","screenX","screenY"],fix:function(e,t){var n=void 0,r=void 0,o=void 0,a=e.target,i=t.button;return a&&c(e.pageX)&&!c(t.clientX)&&(r=(n=a.ownerDocument||document).documentElement,o=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||o&&o.scrollLeft||0)-(r&&r.clientLeft||o&&o.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||o&&o.scrollTop||0)-(r&&r.clientTop||o&&o.clientTop||0)),e.which||void 0===i||(e.which=1&i?1:2&i?3:4&i?2:0),!e.relatedTarget&&e.fromElement&&(e.relatedTarget=e.fromElement===a?e.toElement:e.fromElement),e}}];function u(){return!0}function s(){return!1}function f(e){var t=e.type,n="function"==typeof e.stopPropagation||"boolean"==typeof e.cancelBubble;o.default.call(this),this.nativeEvent=e;var r=s;"defaultPrevented"in e?r=e.defaultPrevented?u:s:"getPreventDefault"in e?r=e.getPreventDefault()?u:s:"returnValue"in e&&(r=!1===e.returnValue?u:s),this.isDefaultPrevented=r;var a=[],c=void 0,f=void 0,d=i.concat();for(l.forEach((function(e){t.match(e.reg)&&(d=d.concat(e.props),e.fix&&a.push(e.fix))})),c=d.length;c;)this[f=d[--c]]=e[f];for(!this.target&&n&&(this.target=e.srcElement||document),this.target&&3===this.target.nodeType&&(this.target=this.target.parentNode),c=a.length;c;)(0,a[--c])(this,e);this.timeStamp=e.timeStamp||Date.now()}var d=o.default.prototype;(0,a.default)(f.prototype,d,{constructor:f,preventDefault:function(){var e=this.nativeEvent;e.preventDefault?e.preventDefault():e.returnValue=!1,d.preventDefault.call(this)},stopPropagation:function(){var e=this.nativeEvent;e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,d.stopPropagation.call(this)}}),t.default=f,e.exports=t.default},function(e,t,n){"use strict";function r(){return!1}function o(){return!0}function a(){this.timeStamp=Date.now(),this.target=void 0,this.currentTarget=void 0}Object.defineProperty(t,"__esModule",{value:!0}),a.prototype={isEventObject:1,constructor:a,isDefaultPrevented:r,isPropagationStopped:r,isImmediatePropagationStopped:r,preventDefault:function(){this.isDefaultPrevented=o},stopPropagation:function(){this.isPropagationStopped=o},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=o,this.stopPropagation()},halt:function(e){e?this.stopImmediatePropagation():this.stopPropagation(),this.preventDefault()}},t.default=a,e.exports=t.default},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=document.createElement("div");document.body.appendChild(t);var n=m(m({},e),{close:c,visible:!0});function r(){var n=a.unmountComponentAtNode(t);n&&t.parentNode&&t.parentNode.removeChild(t);for(var r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];var u=o.some((function(e){return e&&e.triggerCancel}));e.onCancel&&u&&e.onCancel.apply(e,o);for(var s=0;s<l.destroyFns.length;s++){var f=l.destroyFns[s];if(f===c){l.destroyFns.splice(s,1);break}}}function i(e){a.render(o.createElement(y,e),t)}function c(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];n=m(m({},n),{visible:!1,afterClose:r.bind.apply(r,[this].concat(t))}),v?i(n):r.apply(void 0,t)}return i(n),l.destroyFns.push(c),{destroy:c,update:function(e){i(n=m(m({},n),e))}}};var o=h(n(0)),a=h(n(11)),i=d(n(2)),c=d(n(34)),l=h(n(397)),u=d(n(774)),s=n(144),f=d(n(56));function d(e){return e&&e.__esModule?e:{default:e}}function p(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return p=function(){return e},e}function h(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var t=p();if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&&t.set(e,n),n}function m(){return(m=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var v=!!a.createPortal,y=function(e){var t=e.onCancel,n=e.onOk,r=e.close,a=e.zIndex,d=e.afterClose,p=e.visible,h=e.keyboard,m=e.centered,v=e.getContainer,y=e.maskStyle,_=e.okButtonProps,b=e.cancelButtonProps,g=e.iconType,M=void 0===g?"question-circle":g;(0,f.default)(!("iconType"in e),"Modal","The property 'iconType' is deprecated. Use the property 'icon' instead.");var w,O,k,L=void 0===e.icon?M:e.icon,x=e.okType||"primary",z=e.prefixCls||"ant-modal",S="".concat(z,"-confirm"),C=!("okCancel"in e)||e.okCancel,j=e.width||416,E=e.style||{},T=void 0===e.mask||e.mask,P=void 0!==e.maskClosable&&e.maskClosable,H=(0,s.getConfirmLocale)(),D=e.okText||(C?H.okText:H.justOkText),Y=e.cancelText||H.cancelText,V=null!==e.autoFocusButton&&(e.autoFocusButton||"ok"),N=e.transitionName||"zoom",F=e.maskTransitionName||"fade",A=(0,i.default)(S,"".concat(S,"-").concat(e.type),e.className),R=C&&o.createElement(u.default,{actionFn:t,closeModal:r,autoFocus:"cancel"===V,buttonProps:b},Y),I="string"==typeof L?o.createElement(c.default,{type:L}):L;return o.createElement(l.default,{prefixCls:z,className:A,wrapClassName:(0,i.default)((w={},O="".concat(S,"-centered"),k=!!e.centered,O in w?Object.defineProperty(w,O,{value:k,enumerable:!0,configurable:!0,writable:!0}):w[O]=k,w)),onCancel:function(){return r({triggerCancel:!0})},visible:p,title:"",transitionName:N,footer:"",maskTransitionName:F,mask:T,maskClosable:P,maskStyle:y,style:E,width:j,zIndex:a,afterClose:d,keyboard:h,centered:m,getContainer:v},o.createElement("div",{className:"".concat(S,"-body-wrapper")},o.createElement("div",{className:"".concat(S,"-body")},I,void 0===e.title?null:o.createElement("span",{className:"".concat(S,"-title")},e.title),o.createElement("div",{className:"".concat(S,"-content")},e.content)),o.createElement("div",{className:"".concat(S,"-btns")},R,o.createElement(u.default,{type:x,actionFn:n,closeModal:r,autoFocus:"ok"===V,buttonProps:_},D))))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,o=l(n(0)),a=l(n(11)),i=(r=n(54))&&r.__esModule?r:{default:r};function c(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return c=function(){return e},e}function l(e){if(e&&e.__esModule)return e;if(null===e||"object"!==u(e)&&"function"!=typeof e)return{default:e};var t=c();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function u(e){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(){return(s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function f(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e,t){return(d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function p(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=m(e);if(t){var o=m(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return h(this,n)}}function h(e,t){return!t||"object"!==u(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function m(e){return(m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var v=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&d(e,t)}(l,e);var t,n,r,c=p(l);function l(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,l),(t=c.call(this,e)).onClick=function(){var e,n=t.props,r=n.actionFn,o=n.closeModal;r?(r.length?e=r(o):(e=r())||o(),e&&e.then&&(t.setState({loading:!0}),e.then((function(){o.apply(void 0,arguments)}),(function(e){console.error(e),t.setState({loading:!1})})))):o()},t.state={loading:!1},t}return t=l,(n=[{key:"componentDidMount",value:function(){if(this.props.autoFocus){var e=a.findDOMNode(this);this.timeoutId=setTimeout((function(){return e.focus()}))}}},{key:"componentWillUnmount",value:function(){clearTimeout(this.timeoutId)}},{key:"render",value:function(){var e=this.props,t=e.type,n=e.children,r=e.buttonProps,a=this.state.loading;return o.createElement(i.default,s({type:t,onClick:this.onClick,loading:a},r),n)}}])&&f(t.prototype,n),r&&f(t,r),l}(o.Component);t.default=v},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=y(n(0)),o=y(n(3)),a=m(n(2)),i=m(n(776)),c=m(n(402)),l=m(n(78)),u=n(32),s=n(79),f=m(n(56)),d=m(n(183)),p=n(403),h=m(n(404));function m(e){return e&&e.__esModule?e:{default:e}}function v(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return v=function(){return e},e}function y(e){if(e&&e.__esModule)return e;if(null===e||"object"!==_(e)&&"function"!=typeof e)return{default:e};var t=v();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function _(e){return(_="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function b(){return(b=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function M(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function w(e,t){return(w=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function O(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=L(e);if(t){var o=L(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return k(this,n)}}function k(e,t){return!t||"object"!==_(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function L(e){return(L=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var x=(0,s.tuple)("horizontal","inline","vertical"),z=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&w(e,t)}(c,e);var t,n,o,i=O(c);function c(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,c),(t=i.call(this,e)).renderForm=function(e){var n,o=e.getPrefixCls,i=t.props,c=i.prefixCls,u=i.hideRequiredMark,s=i.className,f=void 0===s?"":s,d=i.layout,p=o("form",c),h=(0,a.default)(p,(g(n={},"".concat(p,"-horizontal"),"horizontal"===d),g(n,"".concat(p,"-vertical"),"vertical"===d),g(n,"".concat(p,"-inline"),"inline"===d),g(n,"".concat(p,"-hide-required-mark"),u),n),f),m=(0,l.default)(t.props,["prefixCls","className","layout","form","hideRequiredMark","wrapperCol","labelAlign","labelCol","colon"]);return r.createElement("form",b({},m,{className:h}))},(0,f.default)(!e.form,"Form","It is unnecessary to pass `form` to `Form` after antd@1.7.0."),t}return t=c,(n=[{key:"render",value:function(){var e=this.props,t=e.wrapperCol,n=e.labelAlign,o=e.labelCol,a=e.layout,i=e.colon;return r.createElement(h.default.Provider,{value:{wrapperCol:t,labelAlign:n,labelCol:o,vertical:"vertical"===a,colon:i}},r.createElement(u.ConfigConsumer,null,this.renderForm))}}])&&M(t.prototype,n),o&&M(t,o),c}(r.Component);t.default=z,z.defaultProps={colon:!0,layout:"horizontal",hideRequiredMark:!1,onSubmit:function(e){e.preventDefault()}},z.propTypes={prefixCls:o.string,layout:o.oneOf(x),children:o.any,onSubmit:o.func,hideRequiredMark:o.bool,colon:o.bool},z.Item=d.default,z.createFormField=c.default,z.create=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,i.default)(b(b({fieldNameProp:"id"},e),{fieldMetaProp:p.FIELD_META_PROP,fieldDataProp:p.FIELD_DATA_PROP}))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(17)),o=s(n(11)),a=s(n(777)),i=s(n(780)),c=s(n(399)),l=n(868),u=n(180);function s(e){return e&&e.__esModule?e:{default:e}}function f(e,t){var n=window.getComputedStyle,r=n?n(e):e.currentStyle;if(r)return r[t.replace(/-(\w)/gi,(function(e,t){return t.toUpperCase()}))]}var d={getForm:function(){return(0,r.default)({},l.mixin.getForm.call(this),{validateFieldsAndScroll:this.validateFieldsAndScroll})},validateFieldsAndScroll:function(e,t,n){var c=this,l=(0,u.getParams)(e,t,n),s=l.names,d=l.callback,p=l.options;return this.validateFields(s,p,(function(e,t){if(e){var n=c.fieldsStore.getValidFieldsName(),l=void 0,u=void 0;if(n.forEach((function(t){if((0,i.default)(e,t)){var n=c.getFieldInstance(t);if(n){var r=o.default.findDOMNode(n),a=r.getBoundingClientRect().top;"hidden"!==r.type&&(void 0===u||u>a)&&(u=a,l=r)}}})),l){var s=p.container||function(e){for(var t=e,n=void 0;"body"!==(n=t.nodeName.toLowerCase());){var r=f(t,"overflowY");if(t!==e&&("auto"===r||"scroll"===r)&&t.scrollHeight>t.clientHeight)return t;t=t.parentNode}return"body"===n?t.ownerDocument:t}(l);(0,a.default)(l,s,(0,r.default)({onlyScrollIfNeeded:!0},p.scroll))}}"function"==typeof d&&d(e,t)}))}};t.default=function(e){return(0,c.default)((0,r.default)({},e),[d])},e.exports=t.default},function(e,t,n){"use strict";e.exports=n(778)},function(e,t,n){"use strict";var r=n(779);e.exports=function(e,t,n){n=n||{},9===t.nodeType&&(t=r.getWindow(t));var o=n.allowHorizontalScroll,a=n.onlyScrollIfNeeded,i=n.alignWithTop,c=n.alignWithLeft,l=n.offsetTop||0,u=n.offsetLeft||0,s=n.offsetBottom||0,f=n.offsetRight||0;o=void 0===o||o;var d=r.isWindow(t),p=r.offset(e),h=r.outerHeight(e),m=r.outerWidth(e),v=void 0,y=void 0,_=void 0,b=void 0,g=void 0,M=void 0,w=void 0,O=void 0,k=void 0,L=void 0;d?(w=t,L=r.height(w),k=r.width(w),O={left:r.scrollLeft(w),top:r.scrollTop(w)},g={left:p.left-O.left-u,top:p.top-O.top-l},M={left:p.left+m-(O.left+k)+f,top:p.top+h-(O.top+L)+s},b=O):(v=r.offset(t),y=t.clientHeight,_=t.clientWidth,b={left:t.scrollLeft,top:t.scrollTop},g={left:p.left-(v.left+(parseFloat(r.css(t,"borderLeftWidth"))||0))-u,top:p.top-(v.top+(parseFloat(r.css(t,"borderTopWidth"))||0))-l},M={left:p.left+m-(v.left+_+(parseFloat(r.css(t,"borderRightWidth"))||0))+f,top:p.top+h-(v.top+y+(parseFloat(r.css(t,"borderBottomWidth"))||0))+s}),g.top<0||M.top>0?!0===i?r.scrollTop(t,b.top+g.top):!1===i?r.scrollTop(t,b.top+M.top):g.top<0?r.scrollTop(t,b.top+g.top):r.scrollTop(t,b.top+M.top):a||((i=void 0===i||!!i)?r.scrollTop(t,b.top+g.top):r.scrollTop(t,b.top+M.top)),o&&(g.left<0||M.left>0?!0===c?r.scrollLeft(t,b.left+g.left):!1===c?r.scrollLeft(t,b.left+M.left):g.left<0?r.scrollLeft(t,b.left+g.left):r.scrollLeft(t,b.left+M.left):a||((c=void 0===c||!!c)?r.scrollLeft(t,b.left+g.left):r.scrollLeft(t,b.left+M.left)))}},function(e,t,n){"use strict";var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};function a(e,t){var n=e["page"+(t?"Y":"X")+"Offset"],r="scroll"+(t?"Top":"Left");if("number"!=typeof n){var o=e.document;"number"!=typeof(n=o.documentElement[r])&&(n=o.body[r])}return n}function i(e){return a(e)}function c(e){return a(e,!0)}function l(e){var t=function(e){var t,n=void 0,r=void 0,o=e.ownerDocument,a=o.body,i=o&&o.documentElement;return n=(t=e.getBoundingClientRect()).left,r=t.top,{left:n-=i.clientLeft||a.clientLeft||0,top:r-=i.clientTop||a.clientTop||0}}(e),n=e.ownerDocument,r=n.defaultView||n.parentWindow;return t.left+=i(r),t.top+=c(r),t}var u=new RegExp("^("+/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source+")(?!px)[a-z%]+$","i"),s=/^(top|right|bottom|left)$/,f="left";var d=void 0;function p(e,t){for(var n=0;n<e.length;n++)t(e[n])}function h(e){return"border-box"===d(e,"boxSizing")}"undefined"!=typeof window&&(d=window.getComputedStyle?function(e,t,n){var r="",o=e.ownerDocument,a=n||o.defaultView.getComputedStyle(e,null);return a&&(r=a.getPropertyValue(t)||a[t]),r}:function(e,t){var n=e.currentStyle&&e.currentStyle[t];if(u.test(n)&&!s.test(t)){var r=e.style,o=r[f],a=e.runtimeStyle[f];e.runtimeStyle[f]=e.currentStyle[f],r[f]="fontSize"===t?"1em":n||0,n=r.pixelLeft+"px",r[f]=o,e.runtimeStyle[f]=a}return""===n?"auto":n});var m=["margin","border","padding"];function v(e,t,n){var r={},o=e.style,a=void 0;for(a in t)t.hasOwnProperty(a)&&(r[a]=o[a],o[a]=t[a]);for(a in n.call(e),t)t.hasOwnProperty(a)&&(o[a]=r[a])}function y(e,t,n){var r=0,o=void 0,a=void 0,i=void 0;for(a=0;a<t.length;a++)if(o=t[a])for(i=0;i<n.length;i++){var c=void 0;c="border"===o?o+n[i]+"Width":o+n[i],r+=parseFloat(d(e,c))||0}return r}function _(e){return null!=e&&e==e.window}var b={};function g(e,t,n){if(_(e))return"width"===t?b.viewportWidth(e):b.viewportHeight(e);if(9===e.nodeType)return"width"===t?b.docWidth(e):b.docHeight(e);var r="width"===t?["Left","Right"]:["Top","Bottom"],o="width"===t?e.offsetWidth:e.offsetHeight,a=(d(e),h(e)),i=0;(null==o||o<=0)&&(o=void 0,(null==(i=d(e,t))||Number(i)<0)&&(i=e.style[t]||0),i=parseFloat(i)||0),void 0===n&&(n=a?1:-1);var c=void 0!==o||a,l=o||i;if(-1===n)return c?l-y(e,["border","padding"],r):i;if(c){var u=2===n?-y(e,["border"],r):y(e,["margin"],r);return l+(1===n?0:u)}return i+y(e,m.slice(n),r)}p(["Width","Height"],(function(e){b["doc"+e]=function(t){var n=t.document;return Math.max(n.documentElement["scroll"+e],n.body["scroll"+e],b["viewport"+e](n))},b["viewport"+e]=function(t){var n="client"+e,r=t.document,o=r.body,a=r.documentElement[n];return"CSS1Compat"===r.compatMode&&a||o&&o[n]||a}}));var M={position:"absolute",visibility:"hidden",display:"block"};function w(e){var t=void 0,n=arguments;return 0!==e.offsetWidth?t=g.apply(void 0,n):v(e,M,(function(){t=g.apply(void 0,n)})),t}function O(e,t,n){var r=n;if("object"!==(void 0===t?"undefined":o(t)))return void 0!==r?("number"==typeof r&&(r+="px"),void(e.style[t]=r)):d(e,t);for(var a in t)t.hasOwnProperty(a)&&O(e,a,t[a])}p(["width","height"],(function(e){var t=e.charAt(0).toUpperCase()+e.slice(1);b["outer"+t]=function(t,n){return t&&w(t,e,n?0:1)};var n="width"===e?["Left","Right"]:["Top","Bottom"];b[e]=function(t,r){if(void 0===r)return t&&w(t,e,-1);if(t){d(t);return h(t)&&(r+=y(t,["padding","border"],n)),O(t,e,r)}}})),e.exports=r({getWindow:function(e){var t=e.ownerDocument||e;return t.defaultView||t.parentWindow},offset:function(e,t){if(void 0===t)return l(e);!function(e,t){"static"===O(e,"position")&&(e.style.position="relative");var n=l(e),r={},o=void 0,a=void 0;for(a in t)t.hasOwnProperty(a)&&(o=parseFloat(O(e,a))||0,r[a]=o+t[a]-n[a]);O(e,r)}(e,t)},isWindow:_,each:p,css:O,clone:function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);if(e.overflow)for(var n in e)e.hasOwnProperty(n)&&(t.overflow[n]=e.overflow[n]);return t},scrollLeft:function(e,t){if(_(e)){if(void 0===t)return i(e);window.scrollTo(t,c(e))}else{if(void 0===t)return e.scrollLeft;e.scrollLeft=t}},scrollTop:function(e,t){if(_(e)){if(void 0===t)return c(e);window.scrollTo(i(e),t)}else{if(void 0===t)return e.scrollTop;e.scrollTop=t}},viewportWidth:0,viewportHeight:0},b)},function(e,t,n){var r=n(781),o=n(782);e.exports=function(e,t){return null!=e&&o(e,t,r)}},function(e,t){var n=Object.prototype.hasOwnProperty;e.exports=function(e,t){return null!=e&&n.call(e,t)}},function(e,t,n){var r=n(170),o=n(819),a=n(116),i=n(398),c=n(821),l=n(179);e.exports=function(e,t,n){for(var u=-1,s=(t=r(t,e)).length,f=!1;++u<s;){var d=l(t[u]);if(!(f=null!=e&&n(e,d)))break;e=e[d]}return f||++u!=s?f:!!(s=null==e?0:e.length)&&c(s)&&i(d,s)&&(a(e)||o(e))}},function(e,t,n){var r=n(116),o=n(171),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!o(e))||(i.test(e)||!a.test(e)||null!=t&&e in Object(t))}},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(this,n(74))},function(e,t,n){var r=n(173),o=Object.prototype,a=o.hasOwnProperty,i=o.toString,c=r?r.toStringTag:void 0;e.exports=function(e){var t=a.call(e,c),n=e[c];try{e[c]=void 0;var r=!0}catch(e){}var o=i.call(e);return r&&(t?e[c]=n:delete e[c]),o}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){var r=n(788),o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,i=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(o,(function(e,n,r,o){t.push(r?o.replace(a,"$1"):n||e)})),t}));e.exports=i},function(e,t,n){var r=n(789);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},function(e,t,n){var r=n(790);function o(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],a=n.cache;if(a.has(o))return a.get(o);var i=e.apply(this,r);return n.cache=a.set(o,i)||a,i};return n.cache=new(o.Cache||r),n}o.Cache=r,e.exports=o},function(e,t,n){var r=n(791),o=n(811),a=n(813),i=n(814),c=n(815);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=o,l.prototype.get=a,l.prototype.has=i,l.prototype.set=c,e.exports=l},function(e,t,n){var r=n(792),o=n(804),a=n(810);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(a||o),string:new r}}},function(e,t,n){var r=n(793),o=n(800),a=n(801),i=n(802),c=n(803);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=o,l.prototype.get=a,l.prototype.has=i,l.prototype.set=c,e.exports=l},function(e,t,n){var r=n(117);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},function(e,t,n){var r=n(795),o=n(796),a=n(177),i=n(798),c=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,s=l.toString,f=u.hasOwnProperty,d=RegExp("^"+s.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!a(e)||o(e))&&(r(e)?d:c).test(i(e))}},function(e,t,n){var r=n(172),o=n(177);e.exports=function(e){if(!o(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},function(e,t,n){var r,o=n(797),a=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!a&&a in e}},function(e,t,n){var r=n(174)["__core-js_shared__"];e.exports=r},function(e,t){var n=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return n.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t){e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},function(e,t,n){var r=n(117),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return o.call(t,e)?t[e]:void 0}},function(e,t,n){var r=n(117),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:o.call(t,e)}},function(e,t,n){var r=n(117);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},function(e,t,n){var r=n(805),o=n(806),a=n(807),i=n(808),c=n(809);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=o,l.prototype.get=a,l.prototype.has=i,l.prototype.set=c,e.exports=l},function(e,t){e.exports=function(){this.__data__=[],this.size=0}},function(e,t,n){var r=n(118),o=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():o.call(t,n,1),--this.size,!0)}},function(e,t,n){var r=n(118);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},function(e,t,n){var r=n(118);e.exports=function(e){return r(this.__data__,e)>-1}},function(e,t,n){var r=n(118);e.exports=function(e,t){var n=this.__data__,o=r(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}},function(e,t,n){var r=n(176)(n(174),"Map");e.exports=r},function(e,t,n){var r=n(119);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},function(e,t){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},function(e,t,n){var r=n(119);e.exports=function(e){return r(this,e).get(e)}},function(e,t,n){var r=n(119);e.exports=function(e){return r(this,e).has(e)}},function(e,t,n){var r=n(119);e.exports=function(e,t){var n=r(this,e),o=n.size;return n.set(e,t),this.size+=n.size==o?0:1,this}},function(e,t,n){var r=n(817);e.exports=function(e){return null==e?"":r(e)}},function(e,t,n){var r=n(173),o=n(818),a=n(116),i=n(171),c=r?r.prototype:void 0,l=c?c.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(a(t))return o(t,e)+"";if(i(t))return l?l.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,o=Array(r);++n<r;)o[n]=t(e[n],n,e);return o}},function(e,t,n){var r=n(820),o=n(175),a=Object.prototype,i=a.hasOwnProperty,c=a.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(e){return o(e)&&i.call(e,"callee")&&!c.call(e,"callee")};e.exports=l},function(e,t,n){var r=n(172),o=n(175);e.exports=function(e){return o(e)&&"[object Arguments]"==r(e)}},function(e,t){e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(823),a=(r=o)&&r.__esModule?r:{default:r};t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return(0,a.default)(e)}},function(e,t,n){e.exports={default:n(824),__esModule:!0}},function(e,t,n){n(196),n(825),e.exports=n(49).Array.from},function(e,t,n){"use strict";var r=n(130),o=n(75),a=n(106),i=n(826),c=n(827),l=n(194),u=n(828),s=n(829);o(o.S+o.F*!n(831)((function(e){Array.from(e)})),"Array",{from:function(e){var t,n,o,f,d=a(e),p="function"==typeof this?this:Array,h=arguments.length,m=h>1?arguments[1]:void 0,v=void 0!==m,y=0,_=s(d);if(v&&(m=r(m,h>2?arguments[2]:void 0,2)),null==_||p==Array&&c(_))for(n=new p(t=l(d.length));t>y;y++)u(n,y,v?m(d[y],y):d[y]);else for(f=_.call(d),n=new p;!(o=f.next()).done;y++)u(n,y,v?i(f,m,[o.value,y],!0):o.value);return n.length=y,n}})},function(e,t,n){var r=n(85);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){var a=e.return;throw void 0!==a&&r(a.call(e)),t}}},function(e,t,n){var r=n(93),o=n(50)("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||a[o]===e)}},function(e,t,n){"use strict";var r=n(65),o=n(92);e.exports=function(e,t,n){t in e?r.f(e,t,o(0,n)):e[t]=n}},function(e,t,n){var r=n(830),o=n(50)("iterator"),a=n(93);e.exports=n(49).getIteratorMethod=function(e){if(null!=e)return e[o]||e["@@iterator"]||a[r(e)]}},function(e,t,n){var r=n(132),o=n(50)("toStringTag"),a="Arguments"==r(function(){return arguments}());e.exports=function(e){var t,n,i;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:a?r(t):"Object"==(i=r(t))&&"function"==typeof t.callee?"Arguments":i}},function(e,t,n){var r=n(50)("iterator"),o=!1;try{var a=[7][r]();a.return=function(){o=!0},Array.from(a,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var a=[7],i=a[r]();i.next=function(){return{done:n=!0}},a[r]=function(){return i},e(a)}catch(e){}return n}},function(e,t,n){"use strict";var r=n(0),o=n(833);if(void 0===r)throw Error("create-react-class could not find the React object. If you are using script tags, make sure that React is being loaded before create-react-class.");var a=(new r.Component).updater;e.exports=o(r.Component,r.isValidElement,a)},function(e,t,n){"use strict";var r=n(90),o=n(834),a=n(835);e.exports=function(e,t,n){var i=[],c={mixins:"DEFINE_MANY",statics:"DEFINE_MANY",propTypes:"DEFINE_MANY",contextTypes:"DEFINE_MANY",childContextTypes:"DEFINE_MANY",getDefaultProps:"DEFINE_MANY_MERGED",getInitialState:"DEFINE_MANY_MERGED",getChildContext:"DEFINE_MANY_MERGED",render:"DEFINE_ONCE",componentWillMount:"DEFINE_MANY",componentDidMount:"DEFINE_MANY",componentWillReceiveProps:"DEFINE_MANY",shouldComponentUpdate:"DEFINE_ONCE",componentWillUpdate:"DEFINE_MANY",componentDidUpdate:"DEFINE_MANY",componentWillUnmount:"DEFINE_MANY",UNSAFE_componentWillMount:"DEFINE_MANY",UNSAFE_componentWillReceiveProps:"DEFINE_MANY",UNSAFE_componentWillUpdate:"DEFINE_MANY",updateComponent:"OVERRIDE_BASE"},l={getDerivedStateFromProps:"DEFINE_MANY_MERGED"},u={displayName:function(e,t){e.displayName=t},mixins:function(e,t){if(t)for(var n=0;n<t.length;n++)f(e,t[n])},childContextTypes:function(e,t){e.childContextTypes=r({},e.childContextTypes,t)},contextTypes:function(e,t){e.contextTypes=r({},e.contextTypes,t)},getDefaultProps:function(e,t){e.getDefaultProps?e.getDefaultProps=p(e.getDefaultProps,t):e.getDefaultProps=t},propTypes:function(e,t){e.propTypes=r({},e.propTypes,t)},statics:function(e,t){!function(e,t){if(!t)return;for(var n in t){var r=t[n];if(t.hasOwnProperty(n)){if(a(!(n in u),'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',n),n in e){var o=l.hasOwnProperty(n)?l[n]:null;return a("DEFINE_MANY_MERGED"===o,"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",n),void(e[n]=p(e[n],r))}e[n]=r}}}(e,t)},autobind:function(){}};function s(e,t){var n=c.hasOwnProperty(t)?c[t]:null;_.hasOwnProperty(t)&&a("OVERRIDE_BASE"===n,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",t),e&&a("DEFINE_MANY"===n||"DEFINE_MANY_MERGED"===n,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",t)}function f(e,n){if(n){a("function"!=typeof n,"ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object."),a(!t(n),"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object.");var r=e.prototype,o=r.__reactAutoBindPairs;for(var i in n.hasOwnProperty("mixins")&&u.mixins(e,n.mixins),n)if(n.hasOwnProperty(i)&&"mixins"!==i){var l=n[i],f=r.hasOwnProperty(i);if(s(f,i),u.hasOwnProperty(i))u[i](e,l);else{var d=c.hasOwnProperty(i);if("function"==typeof l&&!d&&!f&&!1!==n.autobind)o.push(i,l),r[i]=l;else if(f){var m=c[i];a(d&&("DEFINE_MANY_MERGED"===m||"DEFINE_MANY"===m),"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",m,i),"DEFINE_MANY_MERGED"===m?r[i]=p(r[i],l):"DEFINE_MANY"===m&&(r[i]=h(r[i],l))}else r[i]=l}}}else;}function d(e,t){for(var n in a(e&&t&&"object"==typeof e&&"object"==typeof t,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects."),t)t.hasOwnProperty(n)&&(a(void 0===e[n],"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",n),e[n]=t[n]);return e}function p(e,t){return function(){var n=e.apply(this,arguments),r=t.apply(this,arguments);if(null==n)return r;if(null==r)return n;var o={};return d(o,n),d(o,r),o}}function h(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function m(e,t){return t.bind(e)}var v={componentDidMount:function(){this.__isMounted=!0}},y={componentWillUnmount:function(){this.__isMounted=!1}},_={replaceState:function(e,t){this.updater.enqueueReplaceState(this,e,t)},isMounted:function(){return!!this.__isMounted}},b=function(){};return r(b.prototype,e.prototype,_),function(e){var t=function(e,r,i){this.__reactAutoBindPairs.length&&function(e){for(var t=e.__reactAutoBindPairs,n=0;n<t.length;n+=2){var r=t[n],o=t[n+1];e[r]=m(e,o)}}(this),this.props=e,this.context=r,this.refs=o,this.updater=i||n,this.state=null;var c=this.getInitialState?this.getInitialState():null;a("object"==typeof c&&!Array.isArray(c),"%s.getInitialState(): must return an object or null",t.displayName||"ReactCompositeComponent"),this.state=c};for(var r in t.prototype=new b,t.prototype.constructor=t,t.prototype.__reactAutoBindPairs=[],i.forEach(f.bind(null,t)),f(t,v),f(t,e),f(t,y),t.getDefaultProps&&(t.defaultProps=t.getDefaultProps()),a(t.prototype.render,"createClass(...): Class specification must implement a `render` method."),c)t.prototype[r]||(t.prototype[r]=null);return t}}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o,a,i,c){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,a,i,c],s=0;(l=new Error(t.replace(/%s/g,(function(){return u[s++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,o=(r=n(0))&&r.__esModule?r:{default:r};var a=function(e){var t=e.prototype;if(!t||!t.isReactComponent)throw new Error("Can only polyfill class components");return"function"!=typeof t.componentWillReceiveProps?e:o.default.Profiler?(t.UNSAFE_componentWillReceiveProps=t.componentWillReceiveProps,delete t.componentWillReceiveProps,e):e};t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=n(31),c=n(838),l=(r=c)&&r.__esModule?r:{default:r},u=n(858);function s(e){this.rules=null,this._messages=u.messages,this.define(e)}s.prototype={messages:function(e){return e&&(this._messages=(0,i.deepMerge)((0,u.newMessages)(),e)),this._messages},define:function(e){if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!==(void 0===e?"undefined":a(e))||Array.isArray(e))throw new Error("Rules must be an object");this.rules={};var t=void 0,n=void 0;for(t in e)e.hasOwnProperty(t)&&(n=e[t],this.rules[t]=Array.isArray(n)?n:[n])},validate:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},c=e,l=n,f=r;if("function"==typeof l&&(f=l,l={}),!this.rules||0===Object.keys(this.rules).length)return f&&f(),Promise.resolve();function d(e){var t,n,r=void 0,o=[],a={};for(r=0;r<e.length;r++)t=e[r],n=void 0,Array.isArray(t)?o=(n=o).concat.apply(n,t):o.push(t);o.length?a=(0,i.convertFieldsError)(o):(o=null,a=null),f(o,a)}if(l.messages){var p=this.messages();p===u.messages&&(p=(0,u.newMessages)()),(0,i.deepMerge)(p,l.messages),l.messages=p}else l.messages=this.messages();var h=void 0,m=void 0,v={},y=l.keys||Object.keys(this.rules);y.forEach((function(n){h=t.rules[n],m=c[n],h.forEach((function(r){var a=r;"function"==typeof a.transform&&(c===e&&(c=o({},c)),m=c[n]=a.transform(m)),(a="function"==typeof a?{validator:a}:o({},a)).validator=t.getValidationMethod(a),a.field=n,a.fullField=a.fullField||n,a.type=t.getType(a),a.validator&&(v[n]=v[n]||[],v[n].push({rule:a,value:m,source:c,field:n}))}))}));var _={};return(0,i.asyncMap)(v,l,(function(e,t){var n=e.rule,r=!("object"!==n.type&&"array"!==n.type||"object"!==a(n.fields)&&"object"!==a(n.defaultField));function c(e,t){return o({},t,{fullField:n.fullField+"."+e})}function u(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],u=a;if(Array.isArray(u)||(u=[u]),!l.suppressWarning&&u.length&&s.warning("async-validator:",u),u.length&&n.message&&(u=[].concat(n.message)),u=u.map((0,i.complementError)(n)),l.first&&u.length)return _[n.field]=1,t(u);if(r){if(n.required&&!e.value)return u=n.message?[].concat(n.message).map((0,i.complementError)(n)):l.error?[l.error(n,(0,i.format)(l.messages.required,n.field))]:[],t(u);var f={};if(n.defaultField)for(var d in e.value)e.value.hasOwnProperty(d)&&(f[d]=n.defaultField);for(var p in f=o({},f,e.rule.fields))if(f.hasOwnProperty(p)){var h=Array.isArray(f[p])?f[p]:[f[p]];f[p]=h.map(c.bind(null,p))}var m=new s(f);m.messages(l.messages),e.rule.options&&(e.rule.options.messages=l.messages,e.rule.options.error=l.error),m.validate(e.value,e.rule.options||l,(function(e){var n=[];u&&u.length&&n.push.apply(n,u),e&&e.length&&n.push.apply(n,e),t(n.length?n:null)}))}else t(u)}r=r&&(n.required||!n.required&&e.value),n.field=e.field;var f=void 0;n.asyncValidator?f=n.asyncValidator(n,e.value,u,e.source,l):n.validator&&(!0===(f=n.validator(n,e.value,u,e.source,l))?u():!1===f?u(n.message||n.field+" fails"):f instanceof Array?u(f):f instanceof Error&&u(f.message)),f&&f.then&&f.then((function(){return u()}),(function(e){return u(e)}))}),(function(e){d(e)}))},getType:function(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type="pattern"),"function"!=typeof e.validator&&e.type&&!l.default.hasOwnProperty(e.type))throw new Error((0,i.format)("Unknown rule type %s",e.type));return e.type||"string"},getValidationMethod:function(e){if("function"==typeof e.validator)return e.validator;var t=Object.keys(e),n=t.indexOf("message");return-1!==n&&t.splice(n,1),1===t.length&&"required"===t[0]?l.default.required:l.default[this.getType(e)]||!1}},s.register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");l.default[e]=t},s.warning=i.warning,s.messages=u.messages,t.default=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=y(n(839)),o=y(n(845)),a=y(n(846)),i=y(n(847)),c=y(n(848)),l=y(n(849)),u=y(n(850)),s=y(n(851)),f=y(n(852)),d=y(n(853)),p=y(n(854)),h=y(n(855)),m=y(n(856)),v=y(n(857));function y(e){return e&&e.__esModule?e:{default:e}}t.default={string:r.default,method:o.default,number:a.default,boolean:i.default,regexp:c.default,integer:l.default,float:u.default,array:s.default,object:f.default,enum:d.default,pattern:p.default,date:h.default,url:v.default,hex:v.default,email:v.default,required:m.default}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(36),a=(r=o)&&r.__esModule?r:{default:r},i=n(31);t.default=function(e,t,n,r,o){var c=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if((0,i.isEmptyValue)(t,"string")&&!e.required)return n();a.default.required(e,t,r,c,o,"string"),(0,i.isEmptyValue)(t,"string")||(a.default.type(e,t,r,c,o),a.default.range(e,t,r,c,o),a.default.pattern(e,t,r,c,o),!0===e.whitespace&&a.default.whitespace(e,t,r,c,o))}n(c)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(31));t.default=function(e,t,n,o,a){(/^\s+$/.test(t)||""===t)&&o.push(r.format(a.messages.whitespace,e.fullField))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(31)),i=n(400),c=(r=i)&&r.__esModule?r:{default:r};var l={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,url:new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},u={integer:function(e){return u.number(e)&&parseInt(e,10)===e},float:function(e){return u.number(e)&&!u.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear},number:function(e){return!isNaN(e)&&"number"==typeof e},object:function(e){return"object"===(void 0===e?"undefined":o(e))&&!u.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&!!e.match(l.email)&&e.length<255},url:function(e){return"string"==typeof e&&!!e.match(l.url)},hex:function(e){return"string"==typeof e&&!!e.match(l.hex)}};t.default=function(e,t,n,r,i){if(e.required&&void 0===t)(0,c.default)(e,t,n,r,i);else{var l=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(l)>-1?u[l](t)||r.push(a.format(i.messages.types[l],e.fullField,e.type)):l&&(void 0===t?"undefined":o(t))!==e.type&&r.push(a.format(i.messages.types[l],e.fullField,e.type))}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(31));t.default=function(e,t,n,o,a){var i="number"==typeof e.len,c="number"==typeof e.min,l="number"==typeof e.max,u=t,s=null,f="number"==typeof t,d="string"==typeof t,p=Array.isArray(t);if(f?s="number":d?s="string":p&&(s="array"),!s)return!1;p&&(u=t.length),d&&(u=t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length),i?u!==e.len&&o.push(r.format(a.messages[s].len,e.fullField,e.len)):c&&!l&&u<e.min?o.push(r.format(a.messages[s].min,e.fullField,e.min)):l&&!c&&u>e.max?o.push(r.format(a.messages[s].max,e.fullField,e.max)):c&&l&&(u<e.min||u>e.max)&&o.push(r.format(a.messages[s].range,e.fullField,e.min,e.max))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(31));t.default=function(e,t,n,o,a){e.enum=Array.isArray(e.enum)?e.enum:[],-1===e.enum.indexOf(t)&&o.push(r.format(a.messages.enum,e.fullField,e.enum.join(", ")))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(31));t.default=function(e,t,n,o,a){if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||o.push(r.format(a.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){new RegExp(e.pattern).test(t)||o.push(r.format(a.messages.pattern.mismatch,e.fullField,t,e.pattern))}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(36),a=(r=o)&&r.__esModule?r:{default:r},i=n(31);t.default=function(e,t,n,r,o){var c=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if((0,i.isEmptyValue)(t)&&!e.required)return n();a.default.required(e,t,r,c,o),void 0!==t&&a.default.type(e,t,r,c,o)}n(c)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(36),a=(r=o)&&r.__esModule?r:{default:r},i=n(31);t.default=function(e,t,n,r,o){var c=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(""===t&&(t=void 0),(0,i.isEmptyValue)(t)&&!e.required)return n();a.default.required(e,t,r,c,o),void 0!==t&&(a.default.type(e,t,r,c,o),a.default.range(e,t,r,c,o))}n(c)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(31),a=n(36),i=(r=a)&&r.__esModule?r:{default:r};t.default=function(e,t,n,r,a){var c=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if((0,o.isEmptyValue)(t)&&!e.required)return n();i.default.required(e,t,r,c,a),void 0!==t&&i.default.type(e,t,r,c,a)}n(c)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(36),a=(r=o)&&r.__esModule?r:{default:r},i=n(31);t.default=function(e,t,n,r,o){var c=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if((0,i.isEmptyValue)(t)&&!e.required)return n();a.default.required(e,t,r,c,o),(0,i.isEmptyValue)(t)||a.default.type(e,t,r,c,o)}n(c)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(36),a=(r=o)&&r.__esModule?r:{default:r},i=n(31);t.default=function(e,t,n,r,o){var c=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if((0,i.isEmptyValue)(t)&&!e.required)return n();a.default.required(e,t,r,c,o),void 0!==t&&(a.default.type(e,t,r,c,o),a.default.range(e,t,r,c,o))}n(c)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(36),a=(r=o)&&r.__esModule?r:{default:r},i=n(31);t.default=function(e,t,n,r,o){var c=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if((0,i.isEmptyValue)(t)&&!e.required)return n();a.default.required(e,t,r,c,o),void 0!==t&&(a.default.type(e,t,r,c,o),a.default.range(e,t,r,c,o))}n(c)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(36),a=(r=o)&&r.__esModule?r:{default:r},i=n(31);t.default=function(e,t,n,r,o){var c=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if((0,i.isEmptyValue)(t,"array")&&!e.required)return n();a.default.required(e,t,r,c,o,"array"),(0,i.isEmptyValue)(t,"array")||(a.default.type(e,t,r,c,o),a.default.range(e,t,r,c,o))}n(c)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(36),a=(r=o)&&r.__esModule?r:{default:r},i=n(31);t.default=function(e,t,n,r,o){var c=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if((0,i.isEmptyValue)(t)&&!e.required)return n();a.default.required(e,t,r,c,o),void 0!==t&&a.default.type(e,t,r,c,o)}n(c)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(36),a=(r=o)&&r.__esModule?r:{default:r},i=n(31);t.default=function(e,t,n,r,o){var c=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if((0,i.isEmptyValue)(t)&&!e.required)return n();a.default.required(e,t,r,c,o),t&&a.default.enum(e,t,r,c,o)}n(c)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(36),a=(r=o)&&r.__esModule?r:{default:r},i=n(31);t.default=function(e,t,n,r,o){var c=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if((0,i.isEmptyValue)(t,"string")&&!e.required)return n();a.default.required(e,t,r,c,o),(0,i.isEmptyValue)(t,"string")||a.default.pattern(e,t,r,c,o)}n(c)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(36),a=(r=o)&&r.__esModule?r:{default:r},i=n(31);t.default=function(e,t,n,r,o){var c=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if((0,i.isEmptyValue)(t)&&!e.required)return n();if(a.default.required(e,t,r,c,o),!(0,i.isEmptyValue)(t)){var l=void 0;l="number"==typeof t?new Date(t):t,a.default.type(e,l,r,c,o),l&&a.default.range(e,l.getTime(),r,c,o)}}n(c)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=n(36),i=(r=a)&&r.__esModule?r:{default:r};t.default=function(e,t,n,r,a){var c=[],l=Array.isArray(t)?"array":void 0===t?"undefined":o(t);i.default.required(e,t,r,c,a,l),n(c)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(36),a=(r=o)&&r.__esModule?r:{default:r},i=n(31);t.default=function(e,t,n,r,o){var c=e.type,l=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if((0,i.isEmptyValue)(t,c)&&!e.required)return n();a.default.required(e,t,r,l,o,c),(0,i.isEmptyValue)(t,c)||a.default.type(e,t,r,l,o)}n(l)}},function(e,t,n){"use strict";function r(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}Object.defineProperty(t,"__esModule",{value:!0}),t.newMessages=r;t.messages=r()},function(e,t,n){var r=n(860);e.exports=function(e,t,n){var o=null==e?void 0:r(e,t);return void 0===o?n:o}},function(e,t,n){var r=n(170),o=n(179);e.exports=function(e,t){for(var n=0,a=(t=r(t,e)).length;null!=e&&n<a;)e=e[o(t[n++])];return n&&n==a?e:void 0}},function(e,t,n){var r=n(862),o=n(170),a=n(398),i=n(177),c=n(179);e.exports=function(e,t,n,l){if(!i(e))return e;for(var u=-1,s=(t=o(t,e)).length,f=s-1,d=e;null!=d&&++u<s;){var p=c(t[u]),h=n;if(u!=f){var m=d[p];void 0===(h=l?l(m,p,d):void 0)&&(h=i(m)?m:a(t[u+1])?[]:{})}r(d,p,h),d=d[p]}return e}},function(e,t,n){var r=n(863),o=n(178),a=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var i=e[t];a.call(e,t)&&o(i,n)&&(void 0!==n||t in e)||r(e,t,n)}},function(e,t,n){var r=n(864);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},function(e,t,n){var r=n(176),o=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(40)),o=f(n(17)),a=f(n(33)),i=f(n(39));t.default=function(e){return new h(e)};var c=f(n(401)),l=n(402),u=f(l),s=n(180);function f(e){return e&&e.__esModule?e:{default:e}}function d(e,t){return 0===t.indexOf(e)&&-1!==[".","["].indexOf(t[e.length])}function p(e){return(0,s.flattenFields)(e,(function(e,t){return(0,l.isFormField)(t)}),"You must wrap field data with `createFormField`.")}var h=function(){function e(t){(0,a.default)(this,e),m.call(this),this.fields=p(t),this.fieldsMeta={}}return(0,i.default)(e,[{key:"updateFields",value:function(e){this.fields=p(e)}},{key:"flattenRegisteredFields",value:function(e){var t=this.getAllFieldsName();return(0,s.flattenFields)(e,(function(e){return t.indexOf(e)>=0}),"You cannot set a form field before rendering a field associated with the value.")}},{key:"setFields",value:function(e){var t=this,n=this.fieldsMeta,r=(0,o.default)({},this.fields,e),a={};Object.keys(n).forEach((function(e){a[e]=t.getValueFromFields(e,r)})),Object.keys(a).forEach((function(e){var n=a[e],i=t.getFieldMeta(e);if(i&&i.normalize){var c=i.normalize(n,t.getValueFromFields(e,t.fields),a);c!==n&&(r[e]=(0,o.default)({},r[e],{value:c}))}})),this.fields=r}},{key:"resetFields",value:function(e){var t=this.fields;return(e?this.getValidFieldsFullName(e):this.getAllFieldsName()).reduce((function(e,n){var r=t[n];return r&&"value"in r&&(e[n]={}),e}),{})}},{key:"setFieldMeta",value:function(e,t){this.fieldsMeta[e]=t}},{key:"setFieldsAsDirty",value:function(){var e=this;Object.keys(this.fields).forEach((function(t){var n=e.fields[t],r=e.fieldsMeta[t];n&&r&&(0,s.hasRules)(r.validate)&&(e.fields[t]=(0,o.default)({},n,{dirty:!0}))}))}},{key:"getFieldMeta",value:function(e){return this.fieldsMeta[e]=this.fieldsMeta[e]||{},this.fieldsMeta[e]}},{key:"getValueFromFields",value:function(e,t){var n=t[e];if(n&&"value"in n)return n.value;var r=this.getFieldMeta(e);return r&&r.initialValue}},{key:"getValidFieldsName",value:function(){var e=this,t=this.fieldsMeta;return t?Object.keys(t).filter((function(t){return!e.getFieldMeta(t).hidden})):[]}},{key:"getAllFieldsName",value:function(){var e=this.fieldsMeta;return e?Object.keys(e):[]}},{key:"getValidFieldsFullName",value:function(e){var t=Array.isArray(e)?e:[e];return this.getValidFieldsName().filter((function(e){return t.some((function(t){return e===t||(0,s.startsWith)(e,t)&&[".","["].indexOf(e[t.length])>=0}))}))}},{key:"getFieldValuePropValue",value:function(e){var t=e.name,n=e.getValueProps,o=e.valuePropName,a=this.getField(t),i="value"in a?a.value:e.initialValue;return n?n(i):(0,r.default)({},o,i)}},{key:"getField",value:function(e){return(0,o.default)({},this.fields[e],{name:e})}},{key:"getNotCollectedFields",value:function(){var e=this;return this.getValidFieldsName().filter((function(t){return!e.fields[t]})).map((function(t){return{name:t,dirty:!1,value:e.getFieldMeta(t).initialValue}})).reduce((function(e,t){return(0,c.default)(e,t.name,(0,u.default)(t))}),{})}},{key:"getNestedAllFields",value:function(){var e=this;return Object.keys(this.fields).reduce((function(t,n){return(0,c.default)(t,n,(0,u.default)(e.fields[n]))}),this.getNotCollectedFields())}},{key:"getFieldMember",value:function(e,t){return this.getField(e)[t]}},{key:"getNestedFields",value:function(e,t){return(e||this.getValidFieldsName()).reduce((function(e,n){return(0,c.default)(e,n,t(n))}),{})}},{key:"getNestedField",value:function(e,t){var n=this.getValidFieldsFullName(e);if(0===n.length||1===n.length&&n[0]===e)return t(e);var r="["===n[0][e.length],o=r?e.length:e.length+1;return n.reduce((function(e,n){return(0,c.default)(e,n.slice(o),t(n))}),r?[]:{})}},{key:"isValidNestedFieldName",value:function(e){return this.getAllFieldsName().every((function(t){return!d(t,e)&&!d(e,t)}))}},{key:"clearField",value:function(e){delete this.fields[e],delete this.fieldsMeta[e]}}]),e}(),m=function(){var e=this;this.setFieldsInitialValue=function(t){var n=e.flattenRegisteredFields(t),r=e.fieldsMeta;Object.keys(n).forEach((function(t){r[t]&&e.setFieldMeta(t,(0,o.default)({},e.getFieldMeta(t),{initialValue:n[t]}))}))},this.getAllValues=function(){var t=e.fieldsMeta,n=e.fields;return Object.keys(t).reduce((function(t,r){return(0,c.default)(t,r,e.getValueFromFields(r,n))}),{})},this.getFieldsValue=function(t){return e.getNestedFields(t,e.getFieldValue)},this.getFieldValue=function(t){var n=e.fields;return e.getNestedField(t,(function(t){return e.getValueFromFields(t,n)}))},this.getFieldsError=function(t){return e.getNestedFields(t,e.getFieldError)},this.getFieldError=function(t){return e.getNestedField(t,(function(t){return(0,s.getErrorStrs)(e.getFieldMember(t,"errors"))}))},this.isFieldValidating=function(t){return e.getFieldMember(t,"validating")},this.isFieldsValidating=function(t){return(t||e.getValidFieldsName()).some((function(t){return e.isFieldValidating(t)}))},this.isFieldTouched=function(t){return e.getFieldMember(t,"touched")},this.isFieldsTouched=function(t){return(t||e.getValidFieldsName()).some((function(t){return e.isFieldTouched(t)}))}};e.exports=t.default},function(e,t,n){"use strict";var r=n(129),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},c={};function l(e){return r.isMemo(e)?i:c[e.$$typeof]||o}c[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},c[r.Memo]=i;var u=Object.defineProperty,s=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var o=p(n);o&&o!==h&&e(t,o,r)}var i=s(n);f&&(i=i.concat(f(n)));for(var c=l(t),m=l(n),v=0;v<i.length;++v){var y=i[v];if(!(a[y]||r&&r[y]||m&&m[y]||c&&c[y])){var _=d(n,y);try{u(t,y,_)}catch(e){}}}}return t}},function(e,t,n){"use strict"; /** @license React v16.8.6 * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,a=r?Symbol.for("react.portal"):60106,i=r?Symbol.for("react.fragment"):60107,c=r?Symbol.for("react.strict_mode"):60108,l=r?Symbol.for("react.profiler"):60114,u=r?Symbol.for("react.provider"):60109,s=r?Symbol.for("react.context"):60110,f=r?Symbol.for("react.async_mode"):60111,d=r?Symbol.for("react.concurrent_mode"):60111,p=r?Symbol.for("react.forward_ref"):60112,h=r?Symbol.for("react.suspense"):60113,m=r?Symbol.for("react.memo"):60115,v=r?Symbol.for("react.lazy"):60116;function y(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case f:case d:case i:case l:case c:case h:return e;default:switch(e=e&&e.$$typeof){case s:case p:case u:return e;default:return t}}case v:case m:case a:return t}}}function _(e){return y(e)===d}t.typeOf=y,t.AsyncMode=f,t.ConcurrentMode=d,t.ContextConsumer=s,t.ContextProvider=u,t.Element=o,t.ForwardRef=p,t.Fragment=i,t.Lazy=v,t.Memo=m,t.Portal=a,t.Profiler=l,t.StrictMode=c,t.Suspense=h,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===i||e===d||e===l||e===c||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===v||e.$$typeof===m||e.$$typeof===u||e.$$typeof===s||e.$$typeof===p)},t.isAsyncMode=function(e){return _(e)||y(e)===f},t.isConcurrentMode=_,t.isContextConsumer=function(e){return y(e)===s},t.isContextProvider=function(e){return y(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return y(e)===p},t.isFragment=function(e){return y(e)===i},t.isLazy=function(e){return y(e)===v},t.isMemo=function(e){return y(e)===m},t.isPortal=function(e){return y(e)===a},t.isProfiler=function(e){return y(e)===l},t.isStrictMode=function(e){return y(e)===c},t.isSuspense=function(e){return y(e)===h}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.mixin=void 0;var r,o=n(399),a=(r=o)&&r.__esModule?r:{default:r};var i=t.mixin={getForm:function(){return{getFieldsValue:this.fieldsStore.getFieldsValue,getFieldValue:this.fieldsStore.getFieldValue,getFieldInstance:this.getFieldInstance,setFieldsValue:this.setFieldsValue,setFields:this.setFields,setFieldsInitialValue:this.fieldsStore.setFieldsInitialValue,getFieldDecorator:this.getFieldDecorator,getFieldProps:this.getFieldProps,getFieldsError:this.fieldsStore.getFieldsError,getFieldError:this.fieldsStore.getFieldError,isFieldValidating:this.fieldsStore.isFieldValidating,isFieldsValidating:this.fieldsStore.isFieldsValidating,isFieldsTouched:this.fieldsStore.isFieldsTouched,isFieldTouched:this.fieldsStore.isFieldTouched,isSubmitting:this.isSubmitting,submit:this.submit,validateFields:this.validateFields,resetFields:this.resetFields}}};t.default=function(e){return(0,a.default)(e,[i])}},function(e,t,n){},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==d(e)&&"function"!=typeof e)return{default:e};var t=f();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}n.default=e,t&&t.set(e,n);return n}(n(0)),o=s(n(407)),a=s(n(2)),i=s(n(871)),c=s(n(34)),l=n(32),u=s(n(872));function s(e){return e&&e.__esModule?e:{default:e}}function f(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return f=function(){return e},e}function d(e){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function y(e,t){return(y=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function _(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=g(e);if(t){var o=g(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return b(this,n)}}function b(e,t){return!t||"object"!==d(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function g(e){return(g=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var M=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&y(e,t)}(s,e);var t,n,i,u=_(s);function s(){var e;return m(this,s),(e=u.apply(this,arguments)).renderExpandIcon=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0,o=e.props.expandIcon,i=o?o(t):r.createElement(c.default,{type:"right",rotate:t.isActive?90:void 0});return r.isValidElement(i)?r.cloneElement(i,{className:(0,a.default)(i.props.className,"".concat(n,"-arrow"))}):i},e.renderCollapse=function(t){var n,i=t.getPrefixCls,c=e.props,l=c.prefixCls,u=c.className,s=void 0===u?"":u,f=c.bordered,d=c.expandIconPosition,m=i("collapse",l),v=(0,a.default)((h(n={},"".concat(m,"-borderless"),!f),h(n,"".concat(m,"-icon-position-").concat(d),!0),n),s);return r.createElement(o.default,p({},e.props,{expandIcon:function(t){return e.renderExpandIcon(t,m)},prefixCls:m,className:v}))},e}return t=s,(n=[{key:"render",value:function(){return r.createElement(l.ConfigConsumer,null,this.renderCollapse)}}])&&v(t.prototype,n),i&&v(t,i),s}(r.Component);t.default=M,M.Panel=i.default,M.defaultProps={bordered:!0,openAnimation:p(p({},u.default),{appear:function(){}}),expandIconPosition:"left"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==u(e)&&"function"!=typeof e)return{default:e};var t=l();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}n.default=e,t&&t.set(e,n);return n}(n(0)),o=c(n(407)),a=c(n(2)),i=n(32);function c(e){return e&&e.__esModule?e:{default:e}}function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function u(e){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(){return(s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function p(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function m(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=y(e);if(t){var o=y(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return v(this,n)}}function v(e,t){return!t||"object"!==u(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function y(e){return(y=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var _=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&h(e,t)}(u,e);var t,n,c,l=m(u);function u(){var e;return d(this,u),(e=l.apply(this,arguments)).renderCollapsePanel=function(t){var n=t.getPrefixCls,i=e.props,c=i.prefixCls,l=i.className,u=void 0===l?"":l,d=i.showArrow,p=void 0===d||d,h=n("collapse",c),m=(0,a.default)(f({},"".concat(h,"-no-arrow"),!p),u);return r.createElement(o.default.Panel,s({},e.props,{prefixCls:h,className:m}))},e}return t=u,(n=[{key:"render",value:function(){return r.createElement(i.ConfigConsumer,null,this.renderCollapsePanel)}}])&&p(t.prototype,n),c&&p(t,c),u}(r.Component);t.default=_},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(62)),o=a(n(391));function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t,n){var a,i;return(0,r.default)(e,"ant-motion-collapse-legacy",{start:function(){t?(a=e.offsetHeight,e.style.height="0px",e.style.opacity="0"):(e.style.height="".concat(e.offsetHeight,"px"),e.style.opacity="1")},active:function(){i&&o.default.cancel(i),i=(0,o.default)((function(){e.style.height="".concat(t?a:0,"px"),e.style.opacity=t?"1":"0"}))},end:function(){i&&o.default.cancel(i),e.style.height="",e.style.opacity="",n()}})}var c={enter:function(e,t){return i(e,!0,t)},leave:function(e,t){return i(e,!1,t)},appear:function(e,t){return i(e,!0,t)}};t.default=c},function(e,t,n){"use strict";n.r(t);var r=n(0),o=n.n(r),a=n(11),i=n.n(a),c=n(55),l=n(186),u=function(){return Math.random().toString(36).substring(7).split("").join(".")},s={INIT:"@@redux/INIT"+u(),REPLACE:"@@redux/REPLACE"+u(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+u()}};function f(e){if("object"!=typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function d(e,t,n){var r;if("function"==typeof t&&"function"==typeof n||"function"==typeof n&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function.");if("function"==typeof t&&void 0===n&&(n=t,t=void 0),void 0!==n){if("function"!=typeof n)throw new Error("Expected the enhancer to be a function.");return n(d)(e,t)}if("function"!=typeof e)throw new Error("Expected the reducer to be a function.");var o=e,a=t,i=[],c=i,u=!1;function p(){c===i&&(c=i.slice())}function h(){if(u)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return a}function m(e){if("function"!=typeof e)throw new Error("Expected the listener to be a function.");if(u)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribelistener for more details.");var t=!0;return p(),c.push(e),function(){if(t){if(u)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribelistener for more details.");t=!1,p();var n=c.indexOf(e);c.splice(n,1),i=null}}}function v(e){if(!f(e))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(u)throw new Error("Reducers may not dispatch actions.");try{u=!0,a=o(a,e)}finally{u=!1}for(var t=i=c,n=0;n<t.length;n++){(0,t[n])()}return e}function y(e){if("function"!=typeof e)throw new Error("Expected the nextReducer to be a function.");o=e,v({type:s.REPLACE})}function _(){var e,t=m;return(e={subscribe:function(e){if("object"!=typeof e||null===e)throw new TypeError("Expected the observer to be an object.");function n(){e.next&&e.next(h())}return n(),{unsubscribe:t(n)}}})[l.a]=function(){return this},e}return v({type:s.INIT}),(r={dispatch:v,subscribe:m,getState:h,replaceReducer:y})[l.a]=_,r}function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e,t){var n=Object.keys(e);return Object.getOwnPropertySymbols&&n.push.apply(n,Object.getOwnPropertySymbols(e)),t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?h(n,!0).forEach((function(t){p(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function v(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce((function(e,t){return function(){return e(t.apply(void 0,arguments))}}))}function y(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){return function(){var n=e.apply(void 0,arguments),r=function(){throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},o={getState:n.getState,dispatch:function(){return r.apply(void 0,arguments)}},a=t.map((function(e){return e(o)}));return m({},n,{dispatch:r=v.apply(void 0,a)(n.dispatch)})}}}function _(e){return function(t){var n=t.dispatch,r=t.getState;return function(t){return function(o){return"function"==typeof o?o(n,r,e):t(o)}}}}var b=_();b.withExtraArgument=_;var g=b,M=n(185),w=n.n(M); /*! * is-plain-object <https://github.com/jonschlinkert/is-plain-object> * * Copyright (c) 2014-2017, Jon Schlinkert. * Released under the MIT License. */ function O(e){return!0==(null!=(t=e)&&"object"==typeof t&&!1===Array.isArray(t))&&"[object Object]"===Object.prototype.toString.call(e); /*! * isobject <https://github.com/jonschlinkert/isobject> * * Copyright (c) 2014-2017, Jon Schlinkert. * Released under the MIT License. */ var t}function k(e){var t,n;return!1!==O(e)&&("function"==typeof(t=e.constructor)&&(!1!==O(n=t.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")))}var L=n(413),x=n.n(L),z=Object(r.createContext)(),S="undefined"!=typeof window?r.useLayoutEffect:r.useEffect;function C(e){return function(t,n){var o=Object(r.useContext)(e),a=Object(r.useRef)(t),i=Object(r.useRef)(),c=Object(r.useRef)(!0),l=Object(r.useRef)(),u=Object(r.useReducer)((function(e){return e+1}),0)[1];if(l.current||a.current!==t||void 0===i.current)try{i.current=t(o.getState())}catch(e){throw l.current||e}return S((function(){a.current=t,l.current=void 0})),S((function(){var e=function(){try{var e=a.current(o.getState());if("function"==typeof n?n(i.current,e):i.current===e)return;i.current=e}catch(e){l.current=e}c.current&&u({})},t=o.subscribe(e);return e(),function(){c.current=!1,t()}}),[]),i.current}}var j=C(z);function E(e){return function(t){return t(Object(r.useContext)(e).getActions())}}var T=E(z);function P(e){return function(){return Object(r.useContext)(e).dispatch}}P(z);function H(e){return function(){var t=Object(r.useContext)(e),n=Object(r.useState)(!1),o=n[0],a=n[1];return Object(r.useEffect)((function(){t.persist.resolveRehydration().then((function(){return a(!0)}))}),[]),o}}H(z);function D(){return(D=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var Y=function(e){return e.a={},e},V=[function(e){return e}],N=function(e){return e.t={},e},F=function(e){return function e(t){var n=Object.keys(t).reduce((function(e,n){return null==Object.getOwnPropertyDescriptor(t,n).get&&(e[n]=t[n]),e}),{});return Object.keys(n).forEach((function(t){k(n[t])&&(n[t]=e(n[t]))})),n}(e)},A=function(e){return null!=e&&"object"==typeof e&&"function"==typeof e.then};function R(e,t){return e.reduce((function(e,t){return k(e)?e[t]:void 0}),t)}var I=function(e,t,n){0!==e.length?e.reduce((function(t,r,o){return o+1===e.length?t[r]=n:t[r]=t[r]||{},t[r]}),t):"object"==typeof n&&(Object.keys(t).forEach((function(e){delete t[e]})),Object.keys(n).forEach((function(e){t[e]=n[e]})))};function W(e){return void 0===e&&(e=!1),function(t,n,r){if(e){var o=R(t,n),a=r(o);return o!==a?function e(t,n,r){if(0===t.length)return r;var o=D({},n),a=t[0];return 1===t.length?o[a]=r:o[a]=e(t.slice(1),o[a],r),o}(t,n,a):n}if(0===t.length){var i=Object(c.a)(n),l=r(i);return l?Object(c.c)(l)?Object(c.b)(l):l:Object(c.b)(i)}var u=t.slice(0,t.length-1),s=Object(c.a)(n),f=R(u,n),d=r(R(t,s));return d&&(f[t[t.length-1]]=d),Object(c.b)(s)}}function U(e,t,n,r){var o=W(e),a=function(e,n){var r=t[n.type];return r?function(e,t,n,r){return o(r,e,(function(e){return n(e,t.payload)}))}(e,n,r,(r.a||r.aO).parent):e};return function(e,t){var i=a(e,t),c=n.length>0?function(e,t){return n.reduce((function(e,n){var r=n.parentPath,a=n.key,i=n.reducer;return o(r,e,(function(e){return e[a]=i(e[a],t),e}))}),e)}(i,t):i;return e!==c&&r.forEach((function(e){var t=e.parentPath;(0,e.bindComputedProperty)(R(t,c))})),c}}var K={getItem:function(){},setItem:function(){},removeItem:function(){}},B="undefined"!=typeof window&&void 0!==window.localStorage?window.localStorage:K,q="undefined"!=typeof window&&void 0!==window.sessionStorage?window.sessionStorage:K;function $(e,t){void 0===e&&(e=q),void 0===t&&(t=[]),"string"==typeof e&&(e="localStorage"===e?B:"sessionStorage"===e?q:K);var n=t.reverse(),r=function(t,r){var o=r.substr(r.indexOf("@")+1),a=e===B||e===q?JSON.parse(t).data:t;return n.reduce((function(e,t){return t.out(e,o)}),a)},o=A(e.getItem("_"));return{isAsync:o,getItem:function(t){if(o)return e.getItem(t).then((function(e){return null!=e?r(e,t):void 0}));var n=e.getItem(t);return null!=n?r(n,t):void 0},setItem:function(n,r){return e.setItem(n,function(n,r){var o=r.substr(r.indexOf("@")+1),a=t.reduce((function(e,t){return t.in(e,o)}),n);return e===B||e===q?JSON.stringify({data:a}):a}(r,n))},removeItem:function(t){return e.removeItem(t)}}}function G(e,t,n){var r=Object.keys(e);return t.length>0&&(r=r.reduce((function(e,n){return-1!==t.findIndex((function(e){return e===n}))?[].concat(e,[n]):e}),[])),n.length>0&&(r=r.reduce((function(e,t){return-1!==n.findIndex((function(e){return e===t}))?e:[].concat(e,[t])}),[])),r}function J(e){return function(){return function(t){return function(n){var r=t(n);if(n&&e.internals.listenerActionMap[n.type]&&e.internals.listenerActionMap[n.type].length>0){var o=e.internals.actionCreatorDict[n.type];e.internals.listenerActionMap[n.type].forEach((function(e){e({type:o?o.type:n.type,payload:n.payload,error:n.error,result:n.result})}))}return r}}}}function Q(e){return function(t){return function(n){return function(r){return e.internals.computedState.currentState=t.getState(),e.internals.computedState.isInReducer=!0,n(r)}}}}function X(e,t,n,r){var o=t,a={},i={},c={},l={},u=[],s=[],f={},d={},p=[],h=[],m={isInReducer:!1,currentState:o};return function e(d,v){return Object.keys(d).forEach((function(y){var _=d[y],b=[].concat(v,[y]),g={parent:v,path:b,key:y},M=function(){var e=R(v,t);I(b,o,e&&y in e?e[y]:_)};if("p"!==y)if("function"==typeof _)if(_.a||_.aO){var O=_,L=function(e,t,n){var r=(e.a?"@action":"@actionOn")+"."+t.path.join("."),o=e.a||e.aO;o.actionName=t.key,o.type=r,o.parent=t.parent,o.path=t.path;var a=function(t){var a={type:r,payload:t};return e.aO&&o.resolvedTargets&&(t.resolvedTargets=[].concat(o.resolvedTargets)),n.dispatch(a)};return a.type=r,a}(_,g,r);a[L.type]=L,c[L.type]=O,"ePRS"!==g.key&&(_.aO?(p.push(_),I(b,f,L)):I(b,i,L))}else if(_.t||_.tO){var x=function(e,t,n,r,o){var a=e.t||e.tO;return function(i){var c={dispatch:n.dispatch,getState:function(){return R(t.parent,n.getState())},getStoreActions:function(){return o},getStoreState:n.getState,injections:r,meta:t};return e.tO&&a.resolvedTargets&&(i.resolvedTargets=[].concat(a.resolvedTargets)),e(R(t.parent,o),i,c)}}(_,g,r,n,i),z=function(e,t,n,r){var o=(e.t?"@thunk":"@thunkOn")+"."+t.path.join("."),a=o+"(start)",i=o+"(success)",c=o+"(fail)",l=e.t||e.tO;l.type=o,l.actionName=t.key,l.parent=t.parent,l.path=t.path;var u=function(e){var t=function(t){n.dispatch({type:c,payload:e,error:t}),n.dispatch({type:o,payload:e,error:t})},l=function(t){n.dispatch({type:i,payload:e,result:t}),n.dispatch({type:o,payload:e,result:t})};n.dispatch({type:a,payload:e});try{var u=n.dispatch((function(){return r(e)}));return A(u)?u.then((function(e){return l(e),e})).catch((function(e){throw t(e),e})):(l(u),u)}catch(e){throw t(e),e}};return u.type=o,u.startType=a,u.successType=i,u.failType=c,u}(_,g,r,x);I(b,l,x),a[z.type]=z,_.tO?(p.push(_),I(b,f,z)):I(b,i,z)}else if(_.c){var S=R(v,o),C=function(e,t,n,r,o){var a=n.c,i=w()(1)(n);return function(n){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var t;if(r.isInReducer)t=r.currentState;else{if(null==o.getState)return;try{t=o.getState()}catch(e){return void 0}}var n=R(e,t),c=a.stateResolvers.map((function(e){return e(n,t)}));return i.apply(void 0,c)}})}}(v,y,_,m,r);C(S),u.push({key:y,parentPath:v,bindComputedProperty:C})}else _.r?s.push({key:y,parentPath:v,reducer:_}):M();else if(k(_)){null==R(b,o)&&I(b,o,{}),e(_,b)}else M();else h.push(function(e,t){return void 0===t&&(t={}),{path:e,config:{blacklist:t.blacklist||[],mergeStrategy:t.mergeStrategy||"merge",storage:$(t.storage,t.transformers),whitelist:t.whitelist||[]}}}(v,_))}))}(e,[]),function(e,t,n,r){e.forEach((function(e){var o=e.aO||e.tO,a=o.targetResolver(R(o.parent,t),t),i=(Array.isArray(a)?a:[a]).reduce((function(e,t){return"function"==typeof t&&t.type&&n[t.type]?e.push(t.type):"string"==typeof t&&e.push(t),e}),[]);o.resolvedTargets=i,i.forEach((function(e){var t=r[e]||[];t.push(n[o.type]),r[e]=t}))}))}(p,i,a,d),{actionCreatorDict:a,actionCreators:i,actionReducersDict:c,computedProperties:u,customReducers:s,computedState:m,defaultState:o,listenerActionCreators:f,listenerActionMap:d,persistenceConfig:h}}function Z(e,t){void 0===t&&(t={});var n=F(e),r=t,o=r.compose,a=r.devTools,i=void 0===a||a,c=r.disableImmer,l=void 0!==c&&c,u=r.enhancers,s=void 0===u?[]:u,f=r.initialState,p=void 0===f?{}:f,h=r.injections,m=r.middleware,_=void 0===m?[]:m,b=r.mockActions,M=void 0!==b&&b,w=r.name,O=void 0===w?"EasyPeasyStore":w,L=r.reducerEnhancer,z=void 0===L?function(e){return e}:L,S=function(e){return D({},e,{ePRS:Y((function(e,t){return t}))})},C={},j=S(n),E=[],T=function(e){return"["+O+"]@"+e.join(".")},P=function(e,t){return x()((function(){t.internals.persistenceConfig.forEach((function(n){var r=n.path,o=n.config,a=o.storage,i=o.whitelist,c=o.blacklist,l=t.getState();G(F(R(r,l)),i,c).forEach((function(t){var n=[].concat(r,[t]);a.setItem(e(n),R(n,l))}))}))}),1e3)}(T,C),H=function(e,t){return function(){return function(n){return function(r){var o=n(r);return r&&"@action.ePRS"!==r.type&&t.internals.persistenceConfig.length>0&&e(o),o}}}}(P,C),V=function(e,t){return function(){return new Promise((function(n,r){t.internals.persistenceConfig.forEach((function(o){var a=o.path,i=o.config,c=i.storage,l=i.whitelist,u=i.blacklist,s=G(R(a,t.getState()),l,u);s.length>0?Promise.all(s.map((function(t){var n=[].concat(a,[t]);return c.removeItem(e(n))}))).then((function(){return n()}),r):n()}))}))}}(T,C),N=function(e){return C.internals.actionCreatorDict["@action.ePRS"](e)},W=function(e){void 0===e&&(e={}),C.internals=function(e){var t=e.disableImmer,n=e.initialState,r=e.injections,o=e.model,a=e.reducerEnhancer,i=X(o,n,r,e.references),c=i.actionCreatorDict,l=i.actionCreators,u=i.actionReducersDict,s=i.computedState,f=i.computedProperties,d=i.customReducers;return{actionCreatorDict:c,actionCreators:l,computedProperties:f,computedState:s,defaultState:i.defaultState,listenerActionCreators:i.listenerActionCreators,listenerActionMap:i.listenerActionMap,persistenceConfig:i.persistenceConfig,reducer:a(U(t,u,d,f))}}({disableImmer:l,initialState:e,injections:h,model:j,reducerEnhancer:z,references:C})},K=o||(i&&"undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({name:O}):v);W(p);var B=[Q(C),g].concat(_,[J(C),H]);M&&B.push((function(){return function(){return function(e){null!=e&&E.push(e)}}}));var q=d(C.internals.reducer,C.internals.defaultState,K.apply(void 0,[y.apply(void 0,B)].concat(s)));q.subscribe((function(){C.internals.computedState.isInReducer=!1})),C.dispatch=q.dispatch,C.getState=q.getState;var $=function(){Object.keys(q.dispatch).forEach((function(e){delete q.dispatch[e]})),Object.keys(C.internals.actionCreators).forEach((function(e){q.dispatch[e]=C.internals.actionCreators[e]}))};$();var Z=function(e){var t=q.getState();e&&delete t[e],W(t),q.replaceReducer(C.internals.reducer),N(C.internals.defaultState),$()},ee=function(e,t,n){var r=Promise.resolve();return n.internals.persistenceConfig.length>0&&n.internals.persistenceConfig.forEach((function(o){var a=o.path,i=o.config,c=i.blacklist,l=i.mergeStrategy,u=i.storage,s=i.whitelist,f=n.internals.defaultState,d=G(F(R(a,f)),s,c),p=function(e,t){if("overwrite"===l)I(a,e,t);else if("merge"===l){var n=R(a,e);Object.keys(t).forEach((function(e){n[e]=t[e]}))}else if("mergeDeep"===l){!function e(t,n){Object.keys(n).forEach((function(r){var o=n[r];k(o)?(k(t[r])||(t[r]={}),e(t[r],o)):t[r]=o}))}(R(a,e),t)}};if(u.isAsync){var h=d.reduce((function(t,n){var r=[].concat(a,[n]),o=u.getItem(e(r));return A(o)&&t.push({key:n,dataPromise:o}),t}),[]);h.length>0&&(r=Promise.all(h.map((function(e){return e.dataPromise}))).then((function(e){var n=e.reduce((function(e,t,n){var r=h[n].key;return void 0!==t&&(e[r]=t),e}),{});0!==Object.keys(n).length&&(p(f,n),t(f))})))}else{var m=d.reduce((function(t,n){var r=[].concat(a,[n]),o=u.getItem(e(r));return void 0!==o&&(t[n]=o),t}),{});p(f,m),t(f)}})),r}(T,N,C);return Object.assign(q,{addModel:function(e,t){j[e],j[e]=t,Z()},clearMockedActions:function(){E=[]},getActions:function(){return C.internals.actionCreators},getListeners:function(){return C.internals.listenerActionCreators},getMockedActions:function(){return[].concat(E)},persist:{clear:V,flush:function(){return P.flush()},resolveRehydration:function(){return ee}},reconfigure:function(e){j=S(e),Z()},removeModel:function(e){j[e]&&(delete j[e],Z(e))}})}function ee(e){var t=e.children,n=e.store;return o.a.createElement(z.Provider,{value:n},t)}Object(c.e)(!1);var te=n(72),ne=n(16),re=Array.isArray||function(e){return null!=e&&e.length>=0&&"[object Array]"===Object.prototype.toString.call(e)};function oe(e){return null!=e&&"function"==typeof e["@@transducer/step"]}function ae(e,t,n){return function(){if(0===arguments.length)return n();var r=Array.prototype.slice.call(arguments,0),o=r.pop();if(!re(o)){for(var a=0;a<e.length;){if("function"==typeof o[e[a]])return o[e[a]].apply(o,r);a+=1}if(oe(o)){var i=t.apply(null,r);return i(o)}}return n.apply(this,arguments)}}var ie=n(24);function ce(e){return"[object String]"===Object.prototype.toString.call(e)}var le=Object(ie.a)((function(e){return!!re(e)||!!e&&("object"==typeof e&&(!ce(e)&&(1===e.nodeType?!!e.length:0===e.length||e.length>0&&(e.hasOwnProperty(0)&&e.hasOwnProperty(e.length-1)))))})),ue=function(){function e(e){this.f=e}return e.prototype["@@transducer/init"]=function(){throw new Error("init not implemented on XWrap")},e.prototype["@@transducer/result"]=function(e){return e},e.prototype["@@transducer/step"]=function(e,t){return this.f(e,t)},e}();var se=n(70),fe=Object(ne.a)((function(e,t){return Object(se.a)(e.length,(function(){return e.apply(t,arguments)}))}));function de(e,t,n){for(var r=n.next();!r.done;){if((t=e["@@transducer/step"](t,r.value))&&t["@@transducer/reduced"]){t=t["@@transducer/value"];break}r=n.next()}return e["@@transducer/result"](t)}function pe(e,t,n,r){return e["@@transducer/result"](n[r](fe(e["@@transducer/step"],e),t))}var he="undefined"!=typeof Symbol?Symbol.iterator:"@@iterator";function me(e,t,n){if("function"==typeof e&&(e=function(e){return new ue(e)}(e)),le(n))return function(e,t,n){for(var r=0,o=n.length;r<o;){if((t=e["@@transducer/step"](t,n[r]))&&t["@@transducer/reduced"]){t=t["@@transducer/value"];break}r+=1}return e["@@transducer/result"](t)}(e,t,n);if("function"==typeof n["fantasy-land/reduce"])return pe(e,t,n,"fantasy-land/reduce");if(null!=n[he])return de(e,t,n[he]());if("function"==typeof n.next)return de(e,t,n);if("function"==typeof n.reduce)return pe(e,t,n,"reduce");throw new TypeError("reduce: list must be array or iterable")}var ve=function(){return this.xf["@@transducer/init"]()},ye=function(e){return this.xf["@@transducer/result"](e)},_e=function(){function e(e,t){this.xf=t,this.f=e}return e.prototype["@@transducer/init"]=ve,e.prototype["@@transducer/result"]=ye,e.prototype["@@transducer/step"]=function(e,t){return this.f(t)?this.xf["@@transducer/step"](e,t):e},e}(),be=Object(ne.a)((function(e,t){return new _e(e,t)}));function ge(e,t){return Object.prototype.hasOwnProperty.call(t,e)}var Me=Object.prototype.toString,we=function(){return"[object Arguments]"===Me.call(arguments)?function(e){return"[object Arguments]"===Me.call(e)}:function(e){return ge("callee",e)}}(),Oe=!{toString:null}.propertyIsEnumerable("toString"),ke=["constructor","valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],Le=function(){return arguments.propertyIsEnumerable("length")}(),xe=function(e,t){for(var n=0;n<e.length;){if(e[n]===t)return!0;n+=1}return!1},ze="function"!=typeof Object.keys||Le?Object(ie.a)((function(e){if(Object(e)!==e)return[];var t,n,r=[],o=Le&&we(e);for(t in e)!ge(t,e)||o&&"length"===t||(r[r.length]=t);if(Oe)for(n=ke.length-1;n>=0;)ge(t=ke[n],e)&&!xe(r,t)&&(r[r.length]=t),n-=1;return r})):Object(ie.a)((function(e){return Object(e)!==e?[]:Object.keys(e)})),Se=Object(ne.a)(ae(["filter"],be,(function(e,t){return n=t,"[object Object]"===Object.prototype.toString.call(n)?me((function(n,r){return e(t[r])&&(n[r]=t[r]),n}),{},ze(t)):function(e,t){for(var n=0,r=t.length,o=[];n<r;)e(t[n])&&(o[o.length]=t[n]),n+=1;return o}(e,t);var n}))),Ce=Object(te.a)(2,(function(e,t){return""===e||"string"==typeof t.name&&t.name.toLowerCase().includes(e.toLowerCase())})),je=n(410),Ee=n.n(je),Te=n(184),Pe=n.n(Te),He=n(121),De=Number.isInteger||function(e){return e<<0===e},Ye=Object(ne.a)((function(e,t){var n=e<0?t.length+e:e;return ce(t)?t.charAt(n):t[n]})),Ve=Object(ne.a)((function(e,t){return e.map((function(e){for(var n,r=t,o=0;o<e.length;){if(null==r)return;n=e[o],r=De(n)?Ye(n,r):r[n],o+=1}return r}))})),Ne=Object(ne.a)((function(e,t){return Ve([e],t)[0]})),Fe=Object(ne.a)((function(e,t){return Ne([e],t)})),Ae=n(19);function Re(e){return function t(n,r,o){switch(arguments.length){case 0:return t;case 1:return Object(Ae.a)(n)?t:Object(ne.a)((function(t,r){return e(n,t,r)}));case 2:return Object(Ae.a)(n)&&Object(Ae.a)(r)?t:Object(Ae.a)(n)?Object(ne.a)((function(t,n){return e(t,r,n)})):Object(Ae.a)(r)?Object(ne.a)((function(t,r){return e(n,t,r)})):Object(ie.a)((function(t){return e(n,r,t)}));default:return Object(Ae.a)(n)&&Object(Ae.a)(r)&&Object(Ae.a)(o)?t:Object(Ae.a)(n)&&Object(Ae.a)(r)?Object(ne.a)((function(t,n){return e(t,n,o)})):Object(Ae.a)(n)&&Object(Ae.a)(o)?Object(ne.a)((function(t,n){return e(t,r,n)})):Object(Ae.a)(r)&&Object(Ae.a)(o)?Object(ne.a)((function(t,r){return e(n,t,r)})):Object(Ae.a)(n)?Object(ie.a)((function(t){return e(t,r,o)})):Object(Ae.a)(r)?Object(ie.a)((function(t){return e(n,t,o)})):Object(Ae.a)(o)?Object(ie.a)((function(t){return e(n,r,t)})):e(n,r,o)}}}var Ie=Re((function(e,t,n){return Object(te.a)(Math.max(e.length,t.length,n.length),(function(){return e.apply(this,arguments)?t.apply(this,arguments):n.apply(this,arguments)}))}));function We(e,t){return function(){return t.call(this,e.apply(this,arguments))}}var Ue=Re(me);function Ke(e,t){return function(){var n=arguments.length;if(0===n)return t();var r=arguments[n-1];return re(r)||"function"!=typeof r[e]?t.apply(this,arguments):r[e].apply(r,Array.prototype.slice.call(arguments,0,n-1))}}var Be=Re(Ke("slice",(function(e,t,n){return Array.prototype.slice.call(n,e,t)}))),qe=Object(ie.a)(Ke("tail",Be(1,1/0)));function $e(){if(0===arguments.length)throw new Error("pipe requires at least one argument");return Object(se.a)(arguments[0].length,Ue(We,arguments[0],qe(arguments)))}var Ge=Object(ne.a)((function(e,t){var n={};return n[e]=t,n})),Je=Object(ie.a)((function(e){return function(){return e}})),Qe=function(e){return{value:e,map:function(t){return Qe(t(e))}}},Xe=Re((function(e,t,n){return e((function(e){return Qe(t(e))}))(n).value})),Ze=Re((function(e,t,n){return Xe(e,Je(t),n)})),et=Re((function(e,t,n){var r={};for(var o in n)r[o]=n[o];return r[e]=t,r}));var tt,nt,rt=function(){function e(e,t){this.xf=t,this.f=e}return e.prototype["@@transducer/init"]=ve,e.prototype["@@transducer/result"]=ye,e.prototype["@@transducer/step"]=function(e,t){return this.xf["@@transducer/step"](e,this.f(t))},e}(),ot=Object(ne.a)((function(e,t){return new rt(e,t)})),at=Object(ne.a)(ae(["fantasy-land/map","map"],ot,(function(e,t){switch(Object.prototype.toString.call(t)){case"[object Function]":return Object(te.a)(t.length,(function(){return e.call(this,t.apply(this,arguments))}));case"[object Object]":return me((function(n,r){return n[r]=e(t[r]),n}),{},ze(t));default:return function(e,t){for(var n=0,r=t.length,o=Array(r);n<r;)o[n]=e(t[n]),n+=1;return o}(e,t)}}))),it=Object(ne.a)((function(e,t){return function(n){return function(r){return at((function(e){return t(e,r)}),n(e(r)))}}})),ct=Object(ie.a)((function(e){return it(Fe(e),et(e))})),lt=function(e,t){return Object(He.a)(e.nonce,e.endpoint,{domains:t})},ut=function(e){return{inProgress:!1,completed:!1,removedPercent:0,error:"",selectedDomains:[],setSelectedDomains:Y((function(e,t){e.selectedDomains=t})),clear:Y((function(e){e.inProgress=!1,e.completed=!1,e.removedPercent=0})),complete:Y((function(e){e.completed=!0})),setInProgress:Y((function(e,t){e.inProgress=t})),setRemovedPercent:Y((function(e,t){var n=t.removedStrings,r=t.totalStrings;e.removedPercent=0!==r?Math.ceil(n/r*100):0})),onError:Y((function(e,t){e.error=Fe("data",t),e.inProgress=!1})),removeStringsBatch:N((function(t,n,r){var o=n.ajax,a=n.totalStrings,i=n.removedStrings,c=void 0===i?0:i,l=r.getState;t.setRemovedPercent({removedStrings:c,totalStrings:a}),o.doFetch(lt(e.removeStringsFromDomains,l().selectedDomains)).then(Fe("data")).then(Ie(Fe("success"),$e(Ne(["data","removed_strings"]),(function(e){a>(c+=e)&&e?t.removeStringsBatch({ajax:o,totalStrings:a,removedStrings:c}):t.complete()})),t.onError))})),onRemove:N(function(){var t=Ee()(Pe.a.mark((function t(n,r,o){var a,i;return Pe.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:a=r.ajax,i=o.getState,n.setInProgress(!0),a.doFetch(lt(e.initStringsRemoving,i().selectedDomains)).then(Fe("data")).then(Ie(Fe("success"),$e(Ne(["data","total_strings"]),Ge("totalStrings"),Ze(ct("ajax"),a),n.removeStringsBatch),n.onError));case 4:case"end":return t.stop()}}),t)})));return function(e,n,r){return t.apply(this,arguments)}}())}},st=function(e,t){return Z({stringDomains:e,endpoints:t,removeStrings:ut(t),filteredDomains:(n=function(e){return t=e.search,n=e.stringDomains,Se(Ce(t),n);var t,n},"function"==typeof r?(r.c={stateResolvers:n},r):(n.c={stateResolvers:V},n)),search:"",setSearch:Y((function(e,t){e.search=t})),isModalOpen:!1,showModal:Y((function(e,t){e.isModalOpen=t}))});var n,r},ft=n(188),dt=n.n(ft),pt=(n(442),n(415),function(e,t){return"undefined"!=typeof wp&&wp.i18n?wp.i18n.__(e,t):e}),ht=n(431),mt=n.n(ht),vt=n(54),yt=n.n(vt),_t=n(432),bt=n.n(_t),gt=n(183),Mt=n.n(gt),wt=(n(443),n(444),n(445),n(416)),Ot=n.n(wt),kt=(n(446),function(){var e=j(Ne(["removeStrings","error"]));return e&&o.a.createElement(Ot.a,{message:e,type:"error",showIcon:!0,__self:void 0,__source:{fileName:"/builds/wpml/wpml-string-translation/src/js/strings-cleanup/components/ErrorMessage.js",lineNumber:11,columnNumber:19}})}),Lt=n(419),xt=n.n(Lt),zt=(n(507),n(508),xt.a),St=(n(734),Object(ie.a)((function(e){for(var t=ze(e),n=t.length,r=[],o=0;o<n;)r[o]=e[t[o]],o+=1;return r}))),Ct=function(){var e=j(Fe("filteredDomains")),t=T(Ne(["removeStrings","setSelectedDomains"])),n=[{title:pt("Domain","wpml-string-translation"),dataIndex:"name"},{title:pt("Strings count","wpml-string-translation"),dataIndex:"total_strings_count",width:"20%",align:"right"},{title:pt("Translated strings","wpml-string-translation"),dataIndex:"translated_strings_count",width:"20%",align:"right"}],r={onChange:function(e,n){return t(at(Fe("name"),n))}};return o.a.createElement(zt,{bordered:!0,pagination:!1,rowSelection:r,size:"middle",columns:n,rowKey:"name",scroll:{y:200},dataSource:St(e),__self:void 0,__source:{fileName:"/builds/wpml/wpml-string-translation/src/js/strings-cleanup/components/CleanupTable.js",lineNumber:35,columnNumber:9}})},jt=n(426),Et=n.n(jt),Tt=(n(735),function(e){var t=e.placeholder,n=T(Fe("setSearch"));return o.a.createElement(Et.a,{placeholder:t,onChange:function(e){var t=e.target.value;n(t)},__self:void 0,__source:{fileName:"/builds/wpml/wpml-string-translation/src/js/strings-cleanup/components/Search.js",lineNumber:15,columnNumber:9}})}),Pt=n(428),Ht=n.n(Pt),Dt=n(429),Yt=n.n(Dt),Vt=n(430),Nt=n.n(Vt),Ft=(n(755),n(756),n(427)),At=n.n(Ft),Rt=n(34),It=n.n(Rt);n(757);function Wt(){return(Wt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var Ut,Kt=function(e){return r.createElement("svg",Wt({width:30,height:30,fill:"none",xmlns:"http://www.w3.org/2000/svg"},e),tt||(tt=r.createElement("path",{d:"M15 0C6.778 0 0 6.778 0 15c0 8.222 6.778 15 15 15 8.222 0 15-6.722 15-15 0-8.278-6.722-15-15-15zm0 27.333C8.222 27.333 2.667 21.778 2.667 15 2.667 8.222 8.222 2.667 15 2.667c6.778 0 12.333 5.555 12.333 12.333 0 6.778-5.61 12.333-12.333 12.333zM22.722 12l-8.555 8.556c-.667.666-1.723.666-2.334 0l-4.389-4.5c-.666-.667-.555-1.723.112-2.334a1.765 1.765 0 012.277 0l3.334 3.334 7.389-7.5c.666-.667 1.722-.667 2.333.11.389.723.389 1.667-.167 2.334z",fill:"url(#success_svg__paint0_linear)"})),nt||(nt=r.createElement("defs",null,r.createElement("linearGradient",{id:"success_svg__paint0_linear",x1:0,y1:15,x2:30,y2:15,gradientUnits:"userSpaceOnUse"},r.createElement("stop",{stopColor:"#2782AD"}),r.createElement("stop",{offset:1,stopColor:"#27AD95"})))))},Bt="/builds/wpml/wpml-string-translation/src/js/strings-cleanup/components/CleanupSuccess.js",qt=function(){var e=T(Fe("showModal")),t=T(Ne(["removeStrings","clear"])),n=T(Fe("setSearch"));return o.a.createElement(At.a,{status:"success",icon:o.a.createElement(It.a,{component:Kt,__self:void 0,__source:{fileName:Bt,lineNumber:39,columnNumber:17}}),title:pt("Successfully removed strings","wpml-string-translation"),subTitle:o.a.createElement("p",{__self:void 0,__source:{fileName:Bt,lineNumber:26,columnNumber:4}},pt("To add strings back to the String Translation table, you may need to rescan translation files or register strings as translatable.","wpml-string-translation"),o.a.createElement("br",{__self:void 0,__source:{fileName:Bt,lineNumber:28,columnNumber:5}}),pt("Read more about ","wpml-string-translation"),o.a.createElement("a",{className:"wpml-external-link",href:"https://wpml.org/documentation/getting-started-guide/string-translation/finding-strings-that-dont-appear-on-the-string-translation-page/?utm_source=plugin&utm_medium=gui&utm_campaign=wpmlst",target:"_blank",__self:void 0,__source:{fileName:Bt,lineNumber:30,columnNumber:5}},pt("scanning your site for strings and registering them as translatable.","wpml-string-translation"))),extra:[o.a.createElement(yt.a,{key:"close",className:"button-primary",onClick:function(){n(""),t(),e(!1),location.reload()},__self:void 0,__source:{fileName:Bt,lineNumber:43,columnNumber:12}},pt("OK, Great","wpml-string-translation"))],__self:void 0,__source:{fileName:Bt,lineNumber:38,columnNumber:3}})},$t="/builds/wpml/wpml-string-translation/src/js/strings-cleanup/components/CleanupProgress.js",Gt=function(){var e=j(Fe("removeStrings")),t=e.inProgress,n=e.removedPercent,r=e.completed;return t&&o.a.createElement("div",{className:"strings-cleanup-modal__progress-overlay",__self:void 0,__source:{fileName:$t,lineNumber:29,columnNumber:3}},o.a.createElement(Yt.a,{type:"flex",justify:"center",align:"middle",__self:void 0,__source:{fileName:$t,lineNumber:30,columnNumber:4}},o.a.createElement(Nt.a,{span:24,__self:void 0,__source:{fileName:$t,lineNumber:31,columnNumber:5}},r?o.a.createElement(qt,{__self:void 0,__source:{fileName:$t,lineNumber:17,columnNumber:11}}):o.a.createElement("div",{__self:void 0,__source:{fileName:$t,lineNumber:20,columnNumber:5}},o.a.createElement("h2",{__self:void 0,__source:{fileName:$t,lineNumber:21,columnNumber:6}},pt("Removing strings from String Translation table","wpml-string-translation")),o.a.createElement(Ht.a,{strokeColor:"#0073aa",type:"circle",percent:n,status:"active",__self:void 0,__source:{fileName:$t,lineNumber:22,columnNumber:6}})))))};function Jt(){return(Jt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var Qt=function(e){return r.createElement("svg",Jt({width:14,height:14,fill:"none",xmlns:"http://www.w3.org/2000/svg"},e),Ut||(Ut=r.createElement("path",{d:"M11.778 13.743l1.965-1.965a.871.871 0 000-1.235L10.2 7l3.543-3.543a.871.871 0 000-1.235L11.778.257a.871.871 0 00-1.235 0L7 3.8 3.457.257a.871.871 0 00-1.235 0L.257 2.222a.871.871 0 000 1.235L3.8 7 .257 10.543a.871.871 0 000 1.235l1.965 1.965a.871.871 0 001.235 0L7 10.2l3.543 3.543a.878.878 0 001.235 0z",fill:"#555"})))},Xt="/builds/wpml/wpml-string-translation/src/js/strings-cleanup/components/CleanupModal.js",Zt=function(){var e=j(Fe("isModalOpen")),t=T(Fe("showModal")),n=T(Fe("setSearch")),r=j(Ne(["removeStrings","inProgress"])),a=T(Ne(["removeStrings","onRemove"])),i=Object(He.b)(),c=function(){r||(t(!1),n(""))};return o.a.createElement(mt.a,{title:pt("Remove strings by domain","wpml-string-translation"),destroyOnClose:!0,visible:e,style:{top:"40px"},onCancel:c,className:"wpml-wizard__modal strings-cleanup-modal",closeIcon:o.a.createElement(Qt,{__self:void 0,__source:{fileName:Xt,lineNumber:44,columnNumber:14}}),width:"70%",footer:[o.a.createElement(kt,{key:"error",__self:void 0,__source:{fileName:Xt,lineNumber:47,columnNumber:4}}),o.a.createElement(yt.a,{style:{float:"left"},key:"back",disabled:r,onClick:c,className:"button-secondary",__self:void 0,__source:{fileName:Xt,lineNumber:48,columnNumber:4}},pt("Cancel","wpml-string-translation")),o.a.createElement(yt.a,{key:"save",disabled:r,onClick:function(){return a({ajax:i})},className:"button-primary",__self:void 0,__source:{fileName:Xt,lineNumber:53,columnNumber:4}},pt("Remove","wpml-string-translation"))],__self:void 0,__source:{fileName:Xt,lineNumber:37,columnNumber:9}},o.a.createElement(Gt,{key:"progress",__self:void 0,__source:{fileName:Xt,lineNumber:59,columnNumber:3}}),o.a.createElement("p",{__self:void 0,__source:{fileName:Xt,lineNumber:60,columnNumber:3}},pt("The String Translation table currently contains strings from the domains listed below. If you do not plan to translate strings from a particular domain, select it below to remove its untranslated strings from the String Translation table. Any strings that already have translations will still be available.","wpml-string-translation")),o.a.createElement("div",{className:"ant-table-wpml-actions",__self:void 0,__source:{fileName:Xt,lineNumber:63,columnNumber:3}},o.a.createElement(bt.a,{layout:"inline",__self:void 0,__source:{fileName:Xt,lineNumber:64,columnNumber:4}},o.a.createElement(Mt.a,{__self:void 0,__source:{fileName:Xt,lineNumber:65,columnNumber:5}},o.a.createElement(Tt,{placeholder:pt("Search","wpml-string-translation"),__self:void 0,__source:{fileName:Xt,lineNumber:66,columnNumber:6}})))),o.a.createElement(Ct,{__self:void 0,__source:{fileName:Xt,lineNumber:70,columnNumber:3}}))},en=function(){var e=T(Fe("showModal"));return o.a.createElement(yt.a,{onClick:function(t){return e(!0)},className:"button-secondary",__self:void 0,__source:{fileName:"/builds/wpml/wpml-string-translation/src/js/strings-cleanup/components/CleanupButton.js",lineNumber:11,columnNumber:3}},pt("Remove strings","wpml-string-translation"))},tn=(n(869),"/builds/wpml/wpml-string-translation/src/js/strings-cleanup/App.js"),nn=function(){var e=j(Fe("isModalOpen"));return o.a.createElement(dt.a,{defaultActiveKey:["1"],ghost:!0,__self:void 0,__source:{fileName:tn,lineNumber:15,columnNumber:3}},o.a.createElement(dt.a.Panel,{key:"1",header:pt("Remove strings by domain","wpml-string-translation"),__self:void 0,__source:{fileName:tn,lineNumber:16,columnNumber:4}},o.a.createElement("p",{__self:void 0,__source:{fileName:tn,lineNumber:17,columnNumber:5}},pt("Clean up the String Translation table by removing untranslated strings by domain.","wpml-string-translation")),o.a.createElement(en,{__self:void 0,__source:{fileName:tn,lineNumber:20,columnNumber:5}}),e&&o.a.createElement(Zt,{__self:void 0,__source:{fileName:tn,lineNumber:21,columnNumber:21}})))},rn="/builds/wpml/wpml-string-translation/src/js/strings-cleanup/main.js";document.addEventListener("DOMContentLoaded",(function(){i.a.render(o.a.createElement(ee,{store:st(wpml_strings_cleanup_ui.domains,wpml_strings_cleanup_ui.endpoints),__self:void 0,__source:{fileName:rn,lineNumber:9,columnNumber:3}},o.a.createElement(nn,{__self:void 0,__source:{fileName:rn,lineNumber:10,columnNumber:4}})),document.getElementById("dashboard_wpml_cleanup_strings"))}))},function(e,t,n){"use strict";n.r(t),n.d(t,"Option",(function(){return _e})),n.d(t,"OptGroup",(function(){return ge}));var r=n(7),o=n(20),a=n(21),i=n(23),c=n(22),l=n(0),u=n(6),s=n(15),f=n(9),d=n(18);function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function h(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?p(Object(n),!0).forEach((function(t){Object(u.a)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var m="".concat("accept acceptCharset accessKey action allowFullScreen allowTransparency\n alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\n charSet checked classID className colSpan cols content contentEditable contextMenu\n controls coords crossOrigin data dateTime default defer dir disabled download draggable\n encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\n headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\n is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\n mediaGroup method min minLength multiple muted name noValidate nonce open\n optimum pattern placeholder poster preload radioGroup readOnly rel required\n reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\n shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\n summary tabIndex target title type useMap value width wmode wrap"," ").concat("onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\n onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\n onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\n onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\n onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\n onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\n onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError").split(/[\s\n]+/);function v(e,t){return 0===e.indexOf(t)}function y(e){var t,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];t=!1===n?{aria:!0,data:!0,attr:!0}:!0===n?{aria:!0}:h({},n);var r={};return Object.keys(e).forEach((function(n){(t.aria&&("role"===n||v(n,"aria-"))||t.data&&v(n,"data-")||t.attr&&m.includes(n))&&(r[n]=e[n])})),r}var _=n(2),b=n.n(_),g=n(41);function M(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function w(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?M(Object(n),!0).forEach((function(t){O(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):M(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function O(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var k=l.forwardRef((function(e,t){var n=e.height,r=e.offset,o=e.children,a=e.prefixCls,i=e.onInnerResize,c={},u={display:"flex",flexDirection:"column"};return void 0!==r&&(c={height:n,position:"relative",overflow:"hidden"},u=w(w({},u),{},{transform:"translateY(".concat(r,"px)"),position:"absolute",left:0,right:0,top:0})),l.createElement("div",{style:c},l.createElement(g.default,{onResize:function(e){e.offsetHeight&&i&&i()}},l.createElement("div",{style:u,className:b()(O({},"".concat(a,"-holder-inner"),a)),ref:t},o)))}));k.displayName="Filler";var L=k,x=function(e){return+setTimeout(e,16)},z=function(e){return clearTimeout(e)};"undefined"!=typeof window&&"requestAnimationFrame"in window&&(x=function(e){return window.requestAnimationFrame(e)},z=function(e){return window.cancelAnimationFrame(e)});var S=0,C=new Map;function j(e){C.delete(e)}function E(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=S+=1;function r(t){if(0===t)j(n),e();else{var o=x((function(){r(t-1)}));C.set(n,o)}}return r(t),n}function T(e){return(T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function P(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function H(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function D(e,t){return(D=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Y(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=N(e);if(t){var o=N(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return V(this,n)}}function V(e,t){return!t||"object"!==T(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function N(e){return(N=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}E.cancel=function(e){var t=C.get(e);return j(t),z(t)};function F(e){return"touches"in e?e.touches[0].pageY:e.pageY}var A=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&D(e,t)}(a,e);var t,n,r,o=Y(a);function a(){var e;return P(this,a),(e=o.apply(this,arguments)).moveRaf=null,e.scrollbarRef=l.createRef(),e.thumbRef=l.createRef(),e.visibleTimeout=null,e.state={dragging:!1,pageY:null,startTop:null,visible:!1},e.delayHidden=function(){clearTimeout(e.visibleTimeout),e.setState({visible:!0}),e.visibleTimeout=setTimeout((function(){e.setState({visible:!1})}),2e3)},e.onScrollbarTouchStart=function(e){e.preventDefault()},e.onContainerMouseDown=function(e){e.stopPropagation(),e.preventDefault()},e.patchEvents=function(){window.addEventListener("mousemove",e.onMouseMove),window.addEventListener("mouseup",e.onMouseUp),e.thumbRef.current.addEventListener("touchmove",e.onMouseMove),e.thumbRef.current.addEventListener("touchend",e.onMouseUp)},e.removeEvents=function(){window.removeEventListener("mousemove",e.onMouseMove),window.removeEventListener("mouseup",e.onMouseUp),e.scrollbarRef.current.removeEventListener("touchstart",e.onScrollbarTouchStart),e.thumbRef.current.removeEventListener("touchstart",e.onMouseDown),e.thumbRef.current.removeEventListener("touchmove",e.onMouseMove),e.thumbRef.current.removeEventListener("touchend",e.onMouseUp),E.cancel(e.moveRaf)},e.onMouseDown=function(t){var n=e.props.onStartMove;e.setState({dragging:!0,pageY:F(t),startTop:e.getTop()}),n(),e.patchEvents(),t.stopPropagation(),t.preventDefault()},e.onMouseMove=function(t){var n=e.state,r=n.dragging,o=n.pageY,a=n.startTop,i=e.props.onScroll;if(E.cancel(e.moveRaf),r){var c=a+(F(t)-o),l=e.getEnableScrollRange(),u=e.getEnableHeightRange(),s=u?c/u:0,f=Math.ceil(s*l);e.moveRaf=E((function(){i(f)}))}},e.onMouseUp=function(){var t=e.props.onStopMove;e.setState({dragging:!1}),t(),e.removeEvents()},e.getSpinHeight=function(){var t=e.props,n=t.height,r=n/t.count*10;return r=Math.max(r,20),r=Math.min(r,n/2),Math.floor(r)},e.getEnableScrollRange=function(){var t=e.props;return t.scrollHeight-t.height||0},e.getEnableHeightRange=function(){return e.props.height-e.getSpinHeight()||0},e.getTop=function(){var t=e.props.scrollTop,n=e.getEnableScrollRange(),r=e.getEnableHeightRange();return 0===t||0===n?0:t/n*r},e.getVisible=function(){var t=e.state.visible,n=e.props;return!(n.height>=n.scrollHeight)&&t},e}return t=a,(n=[{key:"componentDidMount",value:function(){this.scrollbarRef.current.addEventListener("touchstart",this.onScrollbarTouchStart),this.thumbRef.current.addEventListener("touchstart",this.onMouseDown)}},{key:"componentDidUpdate",value:function(e){e.scrollTop!==this.props.scrollTop&&this.delayHidden()}},{key:"componentWillUnmount",value:function(){this.removeEvents(),clearTimeout(this.visibleTimeout)}},{key:"render",value:function(){var e,t,n,r=this.state.dragging,o=this.props.prefixCls,a=this.getSpinHeight(),i=this.getTop(),c=this.getVisible();return l.createElement("div",{ref:this.scrollbarRef,className:"".concat(o,"-scrollbar"),style:{width:8,top:0,bottom:0,right:0,position:"absolute",display:c?null:"none"},onMouseDown:this.onContainerMouseDown,onMouseMove:this.delayHidden},l.createElement("div",{ref:this.thumbRef,className:b()("".concat(o,"-scrollbar-thumb"),(e={},t="".concat(o,"-scrollbar-thumb-moving"),n=r,t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e)),style:{width:"100%",height:a,top:i,left:0,position:"absolute",background:"rgba(0, 0, 0, 0.5)",borderRadius:99,cursor:"pointer",userSelect:"none"},onMouseDown:this.onMouseDown}))}}])&&H(t.prototype,n),r&&H(t,r),a}(l.Component);function R(e){var t=e.children,n=e.setRef,r=l.useCallback((function(e){n(e)}),[]);return l.cloneElement(t,{ref:r})}var I=n(11),W=n.n(I);function U(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var K=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.maps={},this.maps.prototype=null}var t,n,r;return t=e,(n=[{key:"set",value:function(e,t){this.maps[e]=t}},{key:"get",value:function(e){return this.maps[e]}}])&&U(t.prototype,n),r&&U(t,r),e}();function B(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=e[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return q(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return q(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function $(e,t,n){var r=B(l.useState(0),2),o=r[0],a=r[1],i=Object(l.useRef)(new Map),c=Object(l.useRef)(new K),u=Object(l.useRef)(0);function s(){u.current+=1;var e=u.current;Promise.resolve().then((function(){e===u.current&&(i.current.forEach((function(e,t){if(e&&e.offsetParent){var n=(o=e)instanceof HTMLElement?o:W.a.findDOMNode(o),r=n.offsetHeight;c.current.get(t)!==r&&c.current.set(t,n.offsetHeight)}var o})),a((function(e){return e+1})))}))}return[function(r,o){var a=e(r),c=i.current.get(a);o?(i.current.set(a,o),s()):i.current.delete(a),!c!=!o&&(o?null==t||t(r):null==n||n(r))},s,c.current,o]}function G(e){return(G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function J(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=e[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Q(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Q(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function X(e,t,n){var r=J(l.useState(e),2),o=r[0],a=r[1],i=J(l.useState(null),2),c=i[0],u=i[1];return l.useEffect((function(){var r=function(e,t,n){var r,o,a=e.length,i=t.length;if(0===a&&0===i)return null;a<i?(r=e,o=t):(r=t,o=e);var c={__EMPTY_ITEM__:!0};function l(e){return void 0!==e?n(e):c}for(var u=null,s=1!==Math.abs(a-i),f=0;f<o.length;f+=1){var d=l(r[f]);if(d!==l(o[f])){u=f,s=s||d!==l(o[f+1]);break}}return null===u?null:{index:u,multiple:s}}(o||[],e||[],t);void 0!==(null==r?void 0:r.index)&&(null==n||n(r.index),u(e[r.index])),a(e)}),[e]),[c]}function Z(e){return(Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var ee="object"===("undefined"==typeof navigator?"undefined":Z(navigator))&&/Firefox/i.test(navigator.userAgent),te=function(e,t){var n=Object(l.useRef)(!1),r=Object(l.useRef)(null);function o(){clearTimeout(r.current),n.current=!0,r.current=setTimeout((function(){n.current=!1}),50)}var a=Object(l.useRef)({top:e,bottom:t});return a.current.top=e,a.current.bottom=t,function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=e<0&&a.current.top||e>0&&a.current.bottom;return t&&i?(clearTimeout(r.current),n.current=!1):i&&!n.current||o(),!n.current&&i}};function ne(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function re(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ne(Object(n),!0).forEach((function(t){oe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ne(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function oe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ae(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=e[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return ie(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ie(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ie(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ce(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var le=[],ue={overflowY:"auto",overflowAnchor:"none"};function se(e,t){var n=e.prefixCls,r=void 0===n?"rc-virtual-list":n,o=e.className,a=e.height,i=e.itemHeight,c=e.fullHeight,u=void 0===c||c,s=e.style,f=e.data,d=e.children,p=e.itemKey,h=e.virtual,m=e.component,v=void 0===m?"div":m,y=e.onScroll,_=ce(e,["prefixCls","className","height","itemHeight","fullHeight","style","data","children","itemKey","virtual","component","onScroll"]),g=!(!1===h||!a||!i),M=g&&f&&i*f.length>a,w=ae(Object(l.useState)(0),2),O=w[0],k=w[1],x=ae(Object(l.useState)(!1),2),z=x[0],S=x[1],C=b()(r,o),j=f||le,T=Object(l.useRef)(),P=Object(l.useRef)(),H=Object(l.useRef)(),D=l.useCallback((function(e){return"function"==typeof p?p(e):null==e?void 0:e[p]}),[p]),Y={getKey:D};function V(e){k((function(t){var n=function(e){var t=e;Number.isNaN(fe.current)||(t=Math.min(t,fe.current));return t=Math.max(t,0)}("function"==typeof e?e(t):e);return T.current.scrollTop=n,n}))}var N=Object(l.useRef)({start:0,end:j.length}),F=Object(l.useRef)(),I=ae(X(j,D),1)[0];F.current=I;var W=ae($(D,null,null),4),U=W[0],K=W[1],B=W[2],q=W[3],J=l.useMemo((function(){if(!g)return{scrollHeight:void 0,start:0,end:j.length-1,offset:void 0};var e;if(!M)return{scrollHeight:(null===(e=P.current)||void 0===e?void 0:e.offsetHeight)||0,start:0,end:j.length-1,offset:void 0};for(var t,n,r,o=0,c=j.length,l=0;l<c;l+=1){var u=j[l],s=D(u),f=B.get(s),d=o+(void 0===f?i:f);d>=O&&void 0===t&&(t=l,n=o),d>O+a&&void 0===r&&(r=l),o=d}return void 0===t&&(t=0,n=0),void 0===r&&(r=j.length-1),{scrollHeight:o,start:t,end:r=Math.min(r+1,j.length),offset:n}}),[M,g,O,j,q,a]),Q=J.scrollHeight,Z=J.start,ne=J.end,ie=J.offset;N.current.start=Z,N.current.end=ne;var se=Q-a,fe=Object(l.useRef)(se);fe.current=se;var de=O<=0,pe=O>=se,he=te(de,pe);var me=ae(function(e,t,n,r){var o=Object(l.useRef)(0),a=Object(l.useRef)(null),i=Object(l.useRef)(null),c=Object(l.useRef)(!1),u=te(t,n);return[function(t){if(e){E.cancel(a.current);var n=t.deltaY;o.current+=n,i.current=n,u(n)||(ee||t.preventDefault(),a.current=E((function(){var e=c.current?10:1;r(o.current*e),o.current=0})))}},function(t){e&&(c.current=t.detail===i.current)}]}(g,de,pe,(function(e){V((function(t){return t+e}))})),2),ve=me[0],ye=me[1];!function(e,t,n){var r,o=Object(l.useRef)(!1),a=Object(l.useRef)(0),i=Object(l.useRef)(null),c=Object(l.useRef)(null),u=function(e){if(o.current){var t=Math.ceil(e.touches[0].pageY),r=a.current-t;a.current=t,n(r)&&e.preventDefault(),clearInterval(c.current),c.current=setInterval((function(){(!n(r*=14/15,!0)||Math.abs(r)<=.1)&&clearInterval(c.current)}),16)}},s=function(){o.current=!1,r()},f=function(e){r(),1!==e.touches.length||o.current||(o.current=!0,a.current=Math.ceil(e.touches[0].pageY),i.current=e.target,i.current.addEventListener("touchmove",u),i.current.addEventListener("touchend",s))};r=function(){i.current&&(i.current.removeEventListener("touchmove",u),i.current.removeEventListener("touchend",s))},l.useLayoutEffect((function(){return e&&t.current.addEventListener("touchstart",f),function(){t.current.removeEventListener("touchstart",f),r(),clearInterval(c.current)}}),[e])}(g,T,(function(e,t){return!he(e,t)&&(ve({preventDefault:function(){},deltaY:e}),!0)})),l.useLayoutEffect((function(){function e(e){g&&e.preventDefault()}return T.current.addEventListener("wheel",ve),T.current.addEventListener("DOMMouseScroll",ye),T.current.addEventListener("MozMousePixelScroll",e),function(){T.current.removeEventListener("wheel",ve),T.current.removeEventListener("DOMMouseScroll",ye),T.current.removeEventListener("MozMousePixelScroll",e)}}),[g]);var _e=function(e,t,n,r,o,a,i,c){var u=l.useRef();return function(l){if(null!=l){if(E.cancel(u.current),"number"==typeof l)i(l);else if(l&&"object"===G(l)){var s,f=l.align;s="index"in l?l.index:t.findIndex((function(e){return o(e)===l.key}));var d=l.offset,p=void 0===d?0:d;!function c(l,d){if(!(l<0)&&e.current){var h=e.current.clientHeight,m=!1,v=d;if(h){for(var y=d||f,_=0,b=0,g=0,M=Math.min(t.length,s),w=0;w<=M;w+=1){var O=o(t[w]);b=_;var k=n.get(O);_=g=b+(void 0===k?r:k),w===s&&void 0===k&&(m=!0)}var L=null;switch(y){case"top":L=b-p;break;case"bottom":L=g-h+p;break;default:var x=e.current.scrollTop;b<x?v="top":g>x+h&&(v="bottom")}null!==L&&L!==e.current.scrollTop&&i(L)}u.current=E((function(){m&&a(),c(l-1,v)}))}}(3)}}else c()}}(T,j,B,i,D,K,V,(function(){var e;null===(e=H.current)||void 0===e||e.delayHidden()}));l.useImperativeHandle(t,(function(){return{scrollTo:_e}}));var be=function(e,t,n,r,o,a){var i=a.getKey;return e.slice(t,n+1).map((function(e,n){var a=o(e,t+n,{}),c=i(e);return l.createElement(R,{key:c,setRef:function(t){return r(e,t)}},a)}))}(j,Z,ne,U,d,Y),ge=null;return a&&(ge=re(oe({},u?"height":"maxHeight",a),ue),g&&(ge.overflowY="hidden",z&&(ge.pointerEvents="none"))),l.createElement("div",Object.assign({style:re(re({},s),{},{position:"relative"}),className:C},_),l.createElement(v,{className:"".concat(r,"-holder"),style:ge,ref:T,onScroll:function(e){var t=e.currentTarget.scrollTop;t!==O&&V(t),null==y||y(e)}},l.createElement(L,{prefixCls:r,height:Q,offset:ie,onInnerResize:K,ref:P},be)),g&&l.createElement(A,{ref:H,prefixCls:r,scrollTop:O,height:a,scrollHeight:Q,count:j.length,onScroll:function(e){V(e)},onStartMove:function(){S(!0)},onStopMove:function(){S(!1)}}))}var fe=l.forwardRef(se);fe.displayName="List";var de=fe,pe=function(e){var t,n=e.className,r=e.customizeIcon,o=e.customizeIconProps,a=e.onMouseDown,i=e.onClick,c=e.children;return t="function"==typeof r?r(o):r,l.createElement("span",{className:n,onMouseDown:function(e){e.preventDefault(),a&&a(e)},style:{userSelect:"none",WebkitUserSelect:"none"},unselectable:"on",onClick:i,"aria-hidden":!0},void 0!==t?t:l.createElement("span",{className:b()(n.split(/\s+/).map((function(e){return"".concat(e,"-icon")})))},c))},he=function(e,t){var n,o,a,i,c=e.prefixCls,p=e.id,h=e.flattenOptions,m=e.childrenAsData,v=e.values,_=e.searchValue,g=e.multiple,M=e.defaultActiveFirstOption,w=e.height,O=e.itemHeight,k=e.notFoundContent,L=e.open,x=e.menuItemSelectedIcon,z=e.virtual,S=e.onSelect,C=e.onToggleOpen,j=e.onActiveValue,E=e.onScroll,T=e.onMouseEnter,P="".concat(c,"-item"),H=(n=function(){return h},o=[L,h],a=function(e,t){return t[0]&&e[1]!==t[1]},"value"in(i=l.useRef({})).current&&!a(i.current.condition,o)||(i.current.value=n(),i.current.condition=o),i.current.value),D=l.useRef(null),Y=function(e){e.preventDefault()},V=function(e){D.current&&D.current.scrollTo({index:e})},N=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=H.length,r=0;r<n;r+=1){var o=(e+r*t+n)%n,a=H[o],i=a.group,c=a.data;if(!i&&!c.disabled)return o}return-1},F=l.useState((function(){return N(0)})),A=Object(f.a)(F,2),R=A[0],I=A[1],W=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];I(e);var n={source:t?"keyboard":"mouse"},r=H[e];r?j(r.data.value,e,n):j(null,-1,n)};l.useEffect((function(){W(!1!==M?N(0):-1)}),[H.length,_]),l.useEffect((function(){var e,t=setTimeout((function(){if(!g&&L&&1===v.size){var e=Array.from(v)[0],t=H.findIndex((function(t){return t.data.value===e}));W(t),V(t)}}));L&&(null===(e=D.current)||void 0===e||e.scrollTo(void 0));return function(){return clearTimeout(t)}}),[L]);var U=function(e){void 0!==e&&S(e,{selected:!v.has(e)}),g||C(!1)};if(l.useImperativeHandle(t,(function(){return{onKeyDown:function(e){var t=e.which;switch(t){case d.a.UP:case d.a.DOWN:var n=0;if(t===d.a.UP?n=-1:t===d.a.DOWN&&(n=1),0!==n){var r=N(R+n,n);V(r),W(r,!0)}break;case d.a.ENTER:var o=H[R];o&&!o.data.disabled?U(o.data.value):U(void 0),L&&e.preventDefault();break;case d.a.ESC:C(!1),L&&e.stopPropagation()}},onKeyUp:function(){},scrollTo:function(e){V(e)}}})),0===H.length)return l.createElement("div",{role:"listbox",id:"".concat(p,"_list"),className:"".concat(P,"-empty"),onMouseDown:Y},k);function K(e){var t=H[e];if(!t)return null;var n=t.data||{},o=n.value,a=n.label,i=n.children,c=y(n,!0),u=m?i:a;return t?l.createElement("div",Object(r.a)({"aria-label":"string"==typeof u?u:null},c,{key:e,role:"option",id:"".concat(p,"_list_").concat(e),"aria-selected":v.has(o)}),o):null}return l.createElement(l.Fragment,null,l.createElement("div",{role:"listbox",id:"".concat(p,"_list"),style:{height:0,width:0,overflow:"hidden"}},K(R-1),K(R),K(R+1)),l.createElement(de,{itemKey:"key",ref:D,data:H,height:w,itemHeight:O,fullHeight:!1,onMouseDown:Y,onScroll:E,virtual:z,onMouseEnter:T},(function(e,t){var n,o=e.group,a=e.groupOption,i=e.data,c=i.label,f=i.key;if(o)return l.createElement("div",{className:b()(P,"".concat(P,"-group"))},void 0!==c?c:f);var d=i.disabled,p=i.value,h=i.title,y=i.children,_=i.style,g=i.className,M=Object(s.a)(i,["disabled","value","title","children","style","className"]),w=v.has(p),O="".concat(P,"-option"),k=b()(P,O,g,(n={},Object(u.a)(n,"".concat(O,"-grouped"),a),Object(u.a)(n,"".concat(O,"-active"),R===t&&!d),Object(u.a)(n,"".concat(O,"-disabled"),d),Object(u.a)(n,"".concat(O,"-selected"),w),n)),L=!x||"function"==typeof x||w,z=(m?y:c)||p,S="string"==typeof z||"number"==typeof z?z.toString():void 0;return void 0!==h&&(S=h),l.createElement("div",Object(r.a)({},M,{"aria-selected":w,className:k,title:S,onMouseMove:function(){R===t||d||W(t)},onClick:function(){d||U(p)},style:_}),l.createElement("div",{className:"".concat(O,"-content")},z),l.isValidElement(x)||w,L&&l.createElement(pe,{className:"".concat(P,"-option-state"),customizeIcon:x,customizeIconProps:{isSelected:w}},w?"✓":null))})))},me=l.forwardRef(he);me.displayName="OptionList";var ve=me,ye=function(){return null};ye.isSelectOption=!0;var _e=ye,be=function(){return null};be.isSelectOptGroup=!0;var ge=be,Me=n(1),we=n(61);function Oe(e){var t=e.key,n=e.props,r=n.children,o=n.value,a=Object(s.a)(n,["children","value"]);return Object(Me.a)({key:t,value:void 0!==o?o:t,children:r},a)}function ke(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return Object(we.a)(e).map((function(e,n){if(!l.isValidElement(e)||!e.type)return null;var r=e.type.isSelectOptGroup,o=e.key,a=e.props,i=a.children,c=Object(s.a)(a,["children"]);return t||!r?Oe(e):Object(Me.a)(Object(Me.a)({key:"__RC_SELECT_GRP__".concat(null===o?n:o,"__"),label:o},c),{},{options:ke(i)})})).filter((function(e){return e}))}var Le=n(123),xe=n(122),ze=n(89),Se=n(124);var Ce=n(14),je=n(28),Ee=n(27);function Te(e){return Array.isArray(e)?e:void 0!==e?[e]:[]}function Pe(e,t){var n,r=Object(Ce.a)(t);for(n=e.length-1;n>=0&&e[n].disabled;n-=1);var o=null;return-1!==n&&(o=r[n],r.splice(n,1)),{values:r,removedValue:o}}var He="undefined"!=typeof window&&window.document&&window.document.documentElement,De=0;function Ye(e,t){var n,r=e.key;return"value"in e&&(n=e.value),null!=r?r:void 0!==n?n:"rc-index-key-".concat(t)}function Ve(e){var t=Object(Me.a)({},e);return"props"in t||Object.defineProperty(t,"props",{get:function(){return Object(Ee.a)(!1,"Return type is option instead of Option instance. Please read value directly instead of reading from `props`."),t}}),t}function Ne(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.prevValueOptions,o=void 0===r?[]:r,a=new Map;return t.forEach((function(e){if(!e.group){var t=e.data;a.set(t.value,t)}})),e.map((function(e){var t=a.get(e);return t||(t=Object(Me.a)({},o.find((function(t){return t._INTERNAL_OPTION_VALUE_===e})))),Ve(t)}))}function Fe(e){return Te(e).join("")}function Ae(e,t){if(!t||!t.length)return null;var n=!1;var r=function e(t,r){var o,a=(o=r,Object(Le.a)(o)||Object(xe.a)(o)||Object(ze.a)(o)||Object(Se.a)()),i=a[0],c=a.slice(1);if(!i)return[t];var l=t.split(i);return n=n||l.length>1,l.reduce((function(t,n){return[].concat(Object(Ce.a)(t),Object(Ce.a)(e(n,c)))}),[]).filter((function(e){return e}))}(e,t);return n?r:null}var Re=n(128);function Ie(e,t){var n=t||{},r=n.defaultValue,o=n.value,a=n.onChange,i=n.postState,c=l.useState((function(){return void 0!==o?o:void 0!==r?"function"==typeof r?r():r:"function"==typeof e?e():e})),u=Object(f.a)(c,2),s=u[0],d=u[1],p=void 0!==o?o:s;i&&(p=i(p));var h=l.useRef(!0);return l.useEffect((function(){h.current?h.current=!1:void 0===o&&d(o)}),[o]),[p,function(e){d(e),p!==e&&a&&a(e,p)}]}function We(){return(We=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function Ue(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Ke(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null!=n){var r,o,a=[],i=!0,c=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){c=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(c)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Ue(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ue(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Be(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function qe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function $e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ge(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$e(Object(n),!0).forEach((function(t){qe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$e(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Je(e){var t=e.prefixCls,n=e.item,r=e.renderItem,o=e.responsive,a=e.registerSize,i=e.itemKey,c=e.className,u=e.style,s=e.children,f=e.display,d=e.order,p=e.component,h=Be(e,["prefixCls","item","renderItem","responsive","registerSize","itemKey","className","style","children","display","order","component"]),m=o&&!f;function v(e){a(i,e)}l.useEffect((function(){return function(){v(null)}}),[]);var y=void 0!==n?r(n):s,_=l.createElement(p,We({className:b()(t,c),style:Ge({opacity:m?.2:1,height:m?0:void 0,overflowY:m?"hidden":void 0,order:o?d:void 0,pointerEvents:m?"none":void 0},u)},h),y);return o&&(_=l.createElement(g.default,{onResize:function(e){v(e.offsetWidth)}},_)),_}var Qe=function(e){return+setTimeout(e,16)},Xe=function(e){return clearTimeout(e)};"undefined"!=typeof window&&"requestAnimationFrame"in window&&(Qe=function(e){return window.requestAnimationFrame(e)},Xe=function(e){return window.cancelAnimationFrame(e)});var Ze=0,et=new Map;function tt(e){et.delete(e)}function nt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=Ze+=1;function r(t){if(0===t)tt(n),e();else{var o=Qe((function(){r(t-1)}));et.set(n,o)}}return r(t),n}nt.cancel=function(e){var t=et.get(e);return tt(t),Xe(t)};function rt(e){return"+ ".concat(e.length," ...")}function ot(e,t){var n,r,o,a,i,c=e.prefixCls,u=void 0===c?"rc-overflow":c,s=e.data,f=void 0===s?[]:s,d=e.renderItem,p=e.itemKey,h=e.itemWidth,m=void 0===h?10:h,v=e.style,y=e.className,_=e.maxCount,M=e.renderRest,w=void 0===M?rt:M,O=e.renderItemProps,k=e.suffix,L=e.component,x=void 0===L?"div":L,z=e.itemComponent,S=void 0===z?"div":z,C=Be(e,["prefixCls","data","renderItem","itemKey","itemWidth","style","className","maxCount","renderRest","renderItemProps","suffix","component","itemComponent"]),j=(n=Ke(Object(l.useState)({}),2)[1],r=Object(l.useRef)([]),o=Object(l.useRef)(!1),a=0,i=0,Object(l.useEffect)((function(){return function(){o.current=!0}}),[]),function(e){var t=a;return a+=1,r.current.length<t+1&&(r.current[t]=e),[r.current[t],function(e){r.current[t]="function"==typeof e?e(r.current[t]):e,nt.cancel(i),i=nt((function(){o.current||n({})}))}]}),E=Ke(j(0),2),T=E[0],P=E[1],H=Ke(j(new Map),2),D=H[0],Y=H[1],V=Ke(j(0),2),N=V[0],F=V[1],A=Ke(j(0),2),R=A[0],I=A[1],W=Ke(j(0),2),U=W[0],K=W[1],B=Ke(Object(l.useState)(null),2),q=B[0],$=B[1],G=Ke(Object(l.useState)(0),2),J=G[0],Q=G[1],X=Ke(Object(l.useState)(!1),2),Z=X[0],ee=X[1],te="".concat(u,"-item"),ne=Math.max(N,R),re=f.length&&"responsive"===_,oe=re||"number"==typeof _&&f.length>_,ae=Object(l.useMemo)((function(){var e=f;return re?e=f.slice(0,Math.min(f.length,T/m)):"number"==typeof _&&(e=f.slice(0,_)),e}),[f,m,T,_,re]),ie=Object(l.useMemo)((function(){return re?f.slice(J+1):f.slice(ae.length)}),[f,ae,re,J]),ce=Object(l.useCallback)((function(e,t){var n;return"function"==typeof p?p(e):null!==(n=p&&(null==e?void 0:e[p]))&&void 0!==n?n:t}),[p]),le=Object(l.useCallback)(d||function(e){return e},[d]);function ue(e,t){Q(e),t||ee(e<f.length-1)}function se(e,t){Y((function(n){var r=new Map(n);return null===t?r.delete(e):r.set(e,t),r}))}function fe(e){return D.get(ce(ae[e],e))}l.useLayoutEffect((function(){if(T&&ne&&ae){var e=U,t=ae.length,n=t-1;if(!t)return ue(0),void $(null);for(var r=0;r<t;r+=1){var o=fe(r);if(void 0===o){ue(r-1,!0);break}if(e+=o,r===n-1&&e+fe(n)<=T){ue(n),$(null);break}if(e+ne>T){ue(r-1),$(e-o-U+R);break}if(r===n){ue(n),$(e-U);break}}k&&fe(0)+U>T&&$(null)}}),[T,D,R,U,ce,ae]);var de=Z&&!!ie.length,pe={};null!==q&&re&&(pe={position:"absolute",left:q,top:0});var he={prefixCls:te,responsive:re,component:S},me=l.createElement(x,We({className:b()(u,y),style:v,ref:t},C),ae.map((function(e,t){var n=ce(e,t);return l.createElement(Je,We({},he,{order:t,key:n,item:e,renderItem:le,itemKey:n,registerSize:se,display:t<=J},null==O?void 0:O(e)))})),oe?l.createElement(Je,We({},he,{order:de?J:Number.MAX_SAFE_INTEGER,className:"".concat(te,"-rest"),registerSize:function(e,t){I(t),F(R)},display:de}),"function"==typeof w?w(ie):w):null,k&&l.createElement(Je,We({},he,{order:J,className:"".concat(te,"-suffix"),registerSize:function(e,t){K(t)},display:!0,style:pe}),k));return re&&(me=l.createElement(g.default,{onResize:function(e,t){P(t.clientWidth)}},me)),me}var at=l.forwardRef(ot);at.displayName="Overflow";var it=at,ct=n(42),lt=function(e,t){var n,r,o=e.prefixCls,a=e.id,i=e.inputElement,c=e.disabled,u=e.tabIndex,s=e.autoFocus,f=e.autoComplete,d=e.editable,p=e.accessibilityIndex,h=e.value,m=e.maxLength,v=e.onKeyDown,y=e.onMouseDown,_=e.onChange,g=e.onPaste,M=e.onCompositionStart,w=e.onCompositionEnd,O=e.open,k=e.attrs,L=i||l.createElement("input",null),x=L,z=x.ref,S=x.props,C=S.onKeyDown,j=S.onChange,E=S.onMouseDown,T=S.onCompositionStart,P=S.onCompositionEnd,H=S.style;return L=l.cloneElement(L,Object(Me.a)(Object(Me.a)({id:a,ref:Object(ct.a)(t,z),disabled:c,tabIndex:u,autoComplete:f||"off",type:"search",autoFocus:s,className:b()("".concat(o,"-selection-search-input"),null===(n=L)||void 0===n||null===(r=n.props)||void 0===r?void 0:r.className),style:Object(Me.a)(Object(Me.a)({},H),{},{opacity:d?null:0}),role:"combobox","aria-expanded":O,"aria-haspopup":"listbox","aria-owns":"".concat(a,"_list"),"aria-autocomplete":"list","aria-controls":"".concat(a,"_list"),"aria-activedescendant":"".concat(a,"_list_").concat(p)},k),{},{value:d?h:"",maxLength:m,readOnly:!d,unselectable:d?null:"on",onKeyDown:function(e){v(e),C&&C(e)},onMouseDown:function(e){y(e),E&&E(e)},onChange:function(e){_(e),j&&j(e)},onCompositionStart:function(e){M(e),T&&T(e)},onCompositionEnd:function(e){w(e),P&&P(e)},onPaste:g}))},ut=l.forwardRef(lt);ut.displayName="Input";var st=ut;function ft(e,t){He?l.useLayoutEffect(e,t):l.useEffect(e,t)}var dt=function(e){e.preventDefault(),e.stopPropagation()},pt=function(e){var t=e.id,n=e.prefixCls,r=e.values,o=e.open,a=e.searchValue,i=e.inputRef,c=e.placeholder,s=e.disabled,d=e.mode,p=e.showSearch,h=e.autoFocus,m=e.autoComplete,v=e.accessibilityIndex,_=e.tabIndex,g=e.removeIcon,M=e.maxTagCount,w=e.maxTagTextLength,O=e.maxTagPlaceholder,k=void 0===O?function(e){return"+ ".concat(e.length," ...")}:O,L=e.tagRender,x=e.onToggleOpen,z=e.onSelect,S=e.onInputChange,C=e.onInputPaste,j=e.onInputKeyDown,E=e.onInputMouseDown,T=e.onInputCompositionStart,P=e.onInputCompositionEnd,H=l.useRef(null),D=Object(l.useState)(0),Y=Object(f.a)(D,2),V=Y[0],N=Y[1],F=Object(l.useState)(!1),A=Object(f.a)(F,2),R=A[0],I=A[1],W="".concat(n,"-selection"),U=o||"tags"===d?a:"",K="tags"===d||p&&(o||R);function B(e,t,n,r){return l.createElement("span",{className:b()("".concat(W,"-item"),Object(u.a)({},"".concat(W,"-item-disabled"),t))},l.createElement("span",{className:"".concat(W,"-item-content")},e),n&&l.createElement(pe,{className:"".concat(W,"-item-remove"),onMouseDown:dt,onClick:r,customizeIcon:g},"×"))}ft((function(){N(H.current.scrollWidth)}),[U]);var q=l.createElement("div",{className:"".concat(W,"-search"),style:{width:V},onFocus:function(){I(!0)},onBlur:function(){I(!1)}},l.createElement(st,{ref:i,open:o,prefixCls:n,id:t,inputElement:null,disabled:s,autoFocus:h,autoComplete:m,editable:K,accessibilityIndex:v,value:U,onKeyDown:j,onMouseDown:E,onChange:S,onPaste:C,onCompositionStart:T,onCompositionEnd:P,tabIndex:_,attrs:y(e,!0)}),l.createElement("span",{ref:H,className:"".concat(W,"-search-mirror"),"aria-hidden":!0},U," ")),$=l.createElement(it,{prefixCls:"".concat(W,"-overflow"),data:r,renderItem:function(e){var t=e.disabled,n=e.label,r=e.value,a=!s&&!t,i=n;if("number"==typeof w&&("string"==typeof n||"number"==typeof n)){var c=String(i);c.length>w&&(i="".concat(c.slice(0,w),"..."))}var u=function(e){e&&e.stopPropagation(),z(r,{selected:!1})};return"function"==typeof L?function(e,t,n,r,a){return l.createElement("span",{onMouseDown:function(e){dt(e),x(!o)}},L({label:t,value:e,disabled:n,closable:r,onClose:a}))}(r,i,t,a,u):B(i,t,a,u)},renderRest:function(e){return B("function"==typeof k?k(e):k,!1)},suffix:q,itemKey:"key",maxCount:M});return l.createElement(l.Fragment,null,$,!r.length&&!U&&l.createElement("span",{className:"".concat(W,"-placeholder")},c))},ht=function(e){var t=e.inputElement,n=e.prefixCls,r=e.id,o=e.inputRef,a=e.disabled,i=e.autoFocus,c=e.autoComplete,u=e.accessibilityIndex,s=e.mode,d=e.open,p=e.values,h=e.placeholder,m=e.tabIndex,v=e.showSearch,_=e.searchValue,b=e.activeValue,g=e.maxLength,M=e.onInputKeyDown,w=e.onInputMouseDown,O=e.onInputChange,k=e.onInputPaste,L=e.onInputCompositionStart,x=e.onInputCompositionEnd,z=l.useState(!1),S=Object(f.a)(z,2),C=S[0],j=S[1],E="combobox"===s,T=E||v,P=p[0],H=_||"";E&&b&&!C&&(H=b),l.useEffect((function(){E&&j(!1)}),[E,b]);var D=!("combobox"!==s&&!d)&&!!H,Y=!P||"string"!=typeof P.label&&"number"!=typeof P.label?void 0:P.label.toString();return l.createElement(l.Fragment,null,l.createElement("span",{className:"".concat(n,"-selection-search")},l.createElement(st,{ref:o,prefixCls:n,id:r,open:d,inputElement:t,disabled:a,autoFocus:i,autoComplete:c,editable:T,accessibilityIndex:u,value:H,onKeyDown:M,onMouseDown:w,onChange:function(e){j(!0),O(e)},onPaste:k,onCompositionStart:L,onCompositionEnd:x,tabIndex:m,attrs:y(e,!0),maxLength:E?g:void 0})),!E&&P&&!D&&l.createElement("span",{className:"".concat(n,"-selection-item"),title:Y},P.label),!P&&!D&&l.createElement("span",{className:"".concat(n,"-selection-placeholder")},h))};function mt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:250,t=l.useRef(null),n=l.useRef(null);function r(r){(r||null===t.current)&&(t.current=r),window.clearTimeout(n.current),n.current=window.setTimeout((function(){t.current=null}),e)}return l.useEffect((function(){return function(){window.clearTimeout(n.current)}}),[]),[function(){return t.current},r]}var vt=function(e,t){var n=Object(l.useRef)(null),o=Object(l.useRef)(!1),a=e.prefixCls,i=e.multiple,c=e.open,u=e.mode,s=e.showSearch,p=e.tokenWithEnter,h=e.onSearch,m=e.onSearchSubmit,v=e.onToggleOpen,y=e.onInputKeyDown,_=e.domRef;l.useImperativeHandle(t,(function(){return{focus:function(){n.current.focus()},blur:function(){n.current.blur()}}}));var b=mt(0),g=Object(f.a)(b,2),M=g[0],w=g[1],O=Object(l.useRef)(null),k=function(e){!1!==h(e,!0,o.current)&&v(!0)},L={inputRef:n,onInputKeyDown:function(e){var t=e.which;t!==d.a.UP&&t!==d.a.DOWN||e.preventDefault(),y&&y(e),t!==d.a.ENTER||"tags"!==u||o.current||c||m(e.target.value),[d.a.SHIFT,d.a.TAB,d.a.BACKSPACE,d.a.ESC].includes(t)||v(!0)},onInputMouseDown:function(){w(!0)},onInputChange:function(e){var t=e.target.value;if(p&&O.current&&/[\r\n]/.test(O.current)){var n=O.current.replace(/[\r\n]+$/,"").replace(/\r\n/g," ").replace(/[\r\n]/g," ");t=t.replace(n,O.current)}O.current=null,k(t)},onInputPaste:function(e){var t=e.clipboardData.getData("text");O.current=t},onInputCompositionStart:function(){o.current=!0},onInputCompositionEnd:function(e){o.current=!1,"combobox"!==u&&k(e.target.value)}},x=i?l.createElement(pt,Object(r.a)({},e,L)):l.createElement(ht,Object(r.a)({},e,L));return l.createElement("div",{ref:_,className:"".concat(a,"-selector"),onClick:function(e){e.target!==n.current&&(void 0!==document.body.style.msTouchAction?setTimeout((function(){n.current.focus()})):n.current.focus())},onMouseDown:function(e){var t=M();e.target===n.current||t||e.preventDefault(),("combobox"===u||s&&t)&&c||(c&&h("",!0,!1),v())}},x)},yt=l.forwardRef(vt);yt.displayName="Selector";var _t=yt,bt=n(71),gt=function(e,t){var n=e.prefixCls,o=(e.disabled,e.visible),a=e.children,i=e.popupElement,c=e.containerWidth,f=e.animation,d=e.transitionName,p=e.dropdownStyle,h=e.dropdownClassName,m=e.direction,v=void 0===m?"ltr":m,y=e.dropdownMatchSelectWidth,_=void 0===y||y,g=e.dropdownRender,M=e.dropdownAlign,w=e.getPopupContainer,O=e.empty,k=e.getTriggerDOMNode,L=Object(s.a)(e,["prefixCls","disabled","visible","children","popupElement","containerWidth","animation","transitionName","dropdownStyle","dropdownClassName","direction","dropdownMatchSelectWidth","dropdownRender","dropdownAlign","getPopupContainer","empty","getTriggerDOMNode"]),x="".concat(n,"-dropdown"),z=i;g&&(z=g(i));var S=l.useMemo((function(){return function(e){var t="number"!=typeof e?0:1;return{bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:t,adjustY:1}},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:t,adjustY:1}},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:t,adjustY:1}},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:t,adjustY:1}}}}(_)}),[_]),C=f?"".concat(x,"-").concat(f):d,j=l.useRef(null);l.useImperativeHandle(t,(function(){return{getPopupElement:function(){return j.current}}}));var E=Object(Me.a)({minWidth:c},p);return"number"==typeof _?E.width=_:_&&(E.width=c),l.createElement(bt.a,Object(r.a)({},L,{showAction:[],hideAction:[],popupPlacement:"rtl"===v?"bottomRight":"bottomLeft",builtinPlacements:S,prefixCls:x,popupTransitionName:C,popup:l.createElement("div",{ref:j},z),popupAlign:M,popupVisible:o,getPopupContainer:w,popupClassName:b()(h,Object(u.a)({},"".concat(x,"-empty"),O)),popupStyle:E,getTriggerDOMNode:k}),a)},Mt=l.forwardRef(gt);Mt.displayName="SelectTrigger";var wt=Mt;var Ot=["removeIcon","placeholder","autoFocus","maxTagCount","maxTagTextLength","maxTagPlaceholder","choiceTransitionName","onInputKeyDown","tabIndex"];var kt=function(e){var t=e.mode,n=e.options,r=e.children,o=e.backfill,a=e.allowClear,i=e.placeholder,c=e.getInputElement,u=e.showSearch,s=e.onSearch,f=e.defaultOpen,d=e.autoFocus,p=e.labelInValue,h=e.value,m=e.inputValue,v=e.optionLabelProp,y="multiple"===t||"tags"===t,_=void 0!==u?u:y||"combobox"===t,b=n||ke(r);if(Object(Ee.a)("tags"!==t||b.every((function(e){return!e.disabled})),"Please avoid setting option to disabled in tags mode since user can always type text as tag."),"tags"===t||"combobox"===t){var g=b.some((function(e){return e.options?e.options.some((function(e){return"number"==typeof("value"in e?e.value:e.key)})):"number"==typeof("value"in e?e.value:e.key)}));Object(Ee.a)(!g,"`value` of Option should not use number type when `mode` is `tags` or `combobox`.")}if(Object(Ee.a)("combobox"!==t||!v,"`combobox` mode not support `optionLabelProp`. Please set `value` on Option directly."),Object(Ee.a)("combobox"===t||!o,"`backfill` only works with `combobox` mode."),Object(Ee.a)("combobox"===t||!c,"`getInputElement` only work with `combobox` mode."),Object(Ee.b)("combobox"!==t||!c||!a||!i,"Customize `getInputElement` should customize clear and placeholder logic instead of configuring `allowClear` and `placeholder`."),s&&!_&&"combobox"!==t&&"tags"!==t&&Object(Ee.a)(!1,"`onSearch` should work with `showSearch` instead of use alone."),Object(Ee.b)(!f||d,"`defaultOpen` makes Select open without focus which means it will not close by click outside. You can set `autoFocus` if needed."),null!=h){var M=Te(h);Object(Ee.a)(!p||M.every((function(e){return"object"===Object(je.a)(e)&&("key"in e||"value"in e)})),"`value` should in shape of `{ value: string | number, label?: ReactNode }` when you set `labelInValue` to `true`"),Object(Ee.a)(!y||Array.isArray(h),"`value` should be array when `mode` is `multiple` or `tags`")}if(r){var w=null;Object(we.a)(r).some((function(e){if(!l.isValidElement(e)||!e.type)return!1;var t=e.type;return!t.isSelectOption&&(t.isSelectOptGroup?!Object(we.a)(e.props.children).every((function(t){return!(l.isValidElement(t)&&e.type&&!t.type.isSelectOption)||(w=t.type,!1)})):(w=t,!0))})),w&&Object(Ee.a)(!1,"`children` should be `Select.Option` or `Select.OptGroup` instead of `".concat(w.displayName||w.name||w,"`.")),Object(Ee.a)(void 0===m,"`inputValue` is deprecated, please use `searchValue` instead.")}},Lt=function(e){var t=e.prefixCls,n=e.components.optionList,o=e.convertChildrenToData,a=e.flattenOptions,i=e.getLabeledValue,c=e.filterOptions,p=e.isValueDisabled,h=e.findValueOption,m=(e.warningProps,e.fillOptionsWithMissingValue),v=e.omitDOMProps;function y(e,y){var _,g=e.prefixCls,M=void 0===g?t:g,w=e.className,O=e.id,k=e.open,L=e.defaultOpen,x=e.options,z=e.children,S=e.mode,C=e.value,j=e.defaultValue,E=e.labelInValue,T=e.showSearch,P=e.inputValue,H=e.searchValue,D=e.filterOption,Y=e.filterSort,V=e.optionFilterProp,N=void 0===V?"value":V,F=e.autoClearSearchValue,A=void 0===F||F,R=e.onSearch,I=e.allowClear,W=e.clearIcon,U=e.showArrow,K=e.inputIcon,B=e.menuItemSelectedIcon,q=e.disabled,$=e.loading,G=e.defaultActiveFirstOption,J=e.notFoundContent,Q=void 0===J?"Not Found":J,X=e.optionLabelProp,Z=e.backfill,ee=(e.tabIndex,e.getInputElement),te=e.getPopupContainer,ne=e.listHeight,re=void 0===ne?200:ne,oe=e.listItemHeight,ae=void 0===oe?20:oe,ie=e.animation,ce=e.transitionName,le=e.virtual,ue=e.dropdownStyle,se=e.dropdownClassName,fe=e.dropdownMatchSelectWidth,de=e.dropdownRender,he=e.dropdownAlign,me=e.showAction,ve=void 0===me?[]:me,ye=e.direction,_e=e.tokenSeparators,be=e.tagRender,ge=e.onPopupScroll,we=e.onDropdownVisibleChange,Oe=e.onFocus,ke=e.onBlur,Le=e.onKeyUp,xe=e.onKeyDown,ze=e.onMouseDown,Se=e.onChange,je=e.onSelect,Ee=e.onDeselect,Te=e.onClear,Ye=e.internalProps,Ve=void 0===Ye?{}:Ye,Ne=Object(s.a)(e,["prefixCls","className","id","open","defaultOpen","options","children","mode","value","defaultValue","labelInValue","showSearch","inputValue","searchValue","filterOption","filterSort","optionFilterProp","autoClearSearchValue","onSearch","allowClear","clearIcon","showArrow","inputIcon","menuItemSelectedIcon","disabled","loading","defaultActiveFirstOption","notFoundContent","optionLabelProp","backfill","tabIndex","getInputElement","getPopupContainer","listHeight","listItemHeight","animation","transitionName","virtual","dropdownStyle","dropdownClassName","dropdownMatchSelectWidth","dropdownRender","dropdownAlign","showAction","direction","tokenSeparators","tagRender","onPopupScroll","onDropdownVisibleChange","onFocus","onBlur","onKeyUp","onKeyDown","onMouseDown","onChange","onSelect","onDeselect","onClear","internalProps"]),Fe="RC_SELECT_INTERNAL_PROPS_MARK"===Ve.mark,We=v?v(Ne):Ne;Ot.forEach((function(e){delete We[e]}));var Ue=Object(l.useRef)(null),Ke=Object(l.useRef)(null),Be=Object(l.useRef)(null),qe=Object(l.useRef)(null),$e=Object(l.useMemo)((function(){return(_e||[]).some((function(e){return["\n","\r\n"].includes(e)}))}),[_e]),Ge=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=l.useState(!1),n=Object(f.a)(t,2),r=n[0],o=n[1],a=l.useRef(null),i=function(){window.clearTimeout(a.current)};l.useEffect((function(){return i}),[]);var c=function(t,n){i(),a.current=window.setTimeout((function(){o(t),n&&n()}),e)};return[r,c,i]}(),Je=Object(f.a)(Ge,3),Qe=Je[0],Xe=Je[1],Ze=Je[2],et=Object(l.useState)(),tt=Object(f.a)(et,2),nt=tt[0],rt=tt[1];Object(l.useEffect)((function(){var e;rt("rc_select_".concat((He?(e=De,De+=1):e="TEST_OR_SSR",e)))}),[]);var ot=O||nt,at=X;void 0===at&&(at=x?"label":"children");var it="combobox"!==S&&E,ct="tags"===S||"multiple"===S,lt=void 0!==T?T:ct||"combobox"===S,ut=Object(l.useState)(!1),st=Object(f.a)(ut,2),dt=st[0],pt=st[1];Object(l.useEffect)((function(){pt(Object(Re.a)())}),[]);var ht=Object(l.useRef)(null);l.useImperativeHandle(y,(function(){var e,t,n;return{focus:null===(e=Be.current)||void 0===e?void 0:e.focus,blur:null===(t=Be.current)||void 0===t?void 0:t.blur,scrollTo:null===(n=qe.current)||void 0===n?void 0:n.scrollTo}}));var vt=Ie(j,{value:C}),yt=Object(f.a)(vt,2),bt=yt[0],gt=yt[1],Mt=Object(l.useMemo)((function(){return function(e,t){var n=t.labelInValue,r=t.combobox,o=new Map;if(void 0===e||""===e&&r)return[[],o];var a=Array.isArray(e)?e:[e],i=a;return n&&(i=a.filter((function(e){return null!==e})).map((function(e){var t=e.key,n=e.value,r=void 0!==n?n:t;return o.set(r,e),r}))),[i,o]}(bt,{labelInValue:it,combobox:"combobox"===S})}),[bt,it]),kt=Object(f.a)(Mt,2),Lt=kt[0],xt=kt[1],zt=Object(l.useMemo)((function(){return new Set(Lt)}),[Lt]),St=Object(l.useState)(null),Ct=Object(f.a)(St,2),jt=Ct[0],Et=Ct[1],Tt=Object(l.useState)(""),Pt=Object(f.a)(Tt,2),Ht=Pt[0],Dt=Pt[1],Yt=Ht;"combobox"===S&&void 0!==bt?Yt=bt:void 0!==H?Yt=H:P&&(Yt=P);var Vt=Object(l.useMemo)((function(){var e=x;return void 0===e&&(e=o(z)),"tags"===S&&m&&(e=m(e,bt,at,E)),e||[]}),[x,z,S,bt]),Nt=Object(l.useMemo)((function(){return a(Vt,e)}),[Vt]),Ft=function(e){var t=l.useRef(null),n=l.useMemo((function(){var t=new Map;return e.forEach((function(e){var n=e.data.value;t.set(n,e)})),t}),[e]);return t.current=n,function(e){return e.map((function(e){return t.current.get(e)})).filter(Boolean)}}(Nt),At=Object(l.useMemo)((function(){if(!Yt||!lt)return Object(Ce.a)(Vt);var e=c(Yt,Vt,{optionFilterProp:N,filterOption:"combobox"===S&&void 0===D?function(){return!0}:D});return"tags"===S&&e.every((function(e){return e[N]!==Yt}))&&e.unshift({value:Yt,label:Yt,key:"__RC_SELECT_TAG_PLACEHOLDER__"}),Y&&Array.isArray(e)?Object(Ce.a)(e).sort(Y):e}),[Vt,Yt,S,lt,Y]),Rt=Object(l.useMemo)((function(){return a(At,e)}),[At]);Object(l.useEffect)((function(){qe.current&&qe.current.scrollTo&&qe.current.scrollTo(0)}),[Yt]);var It,Wt,Ut=Object(l.useMemo)((function(){var e=Lt.map((function(e){var t=Ft([e]),n=i(e,{options:t,prevValueMap:xt,labelInValue:it,optionLabelProp:at});return Object(Me.a)(Object(Me.a)({},n),{},{disabled:p(e,t)})}));return S||1!==e.length||null!==e[0].value||null!==e[0].label?e:[]}),[bt,Vt,S]);It=Ut,Wt=l.useRef(It),Ut=l.useMemo((function(){var e=new Map;Wt.current.forEach((function(t){var n=t.value,r=t.label;n!==r&&e.set(n,r)}));var t=It.map((function(t){var n=e.get(t.value);return t.isCacheable&&n?Object(Me.a)(Object(Me.a)({},t),{},{label:n}):t}));return Wt.current=t,t}),[It]);var Kt=function(e,t,n){var r=Ft([e]),o=h([e],r)[0];if(!Ve.skipTriggerSelect){var a=it?i(e,{options:r,prevValueMap:xt,labelInValue:it,optionLabelProp:at}):e;t&&je?je(a,o):!t&&Ee&&Ee(a,o)}Fe&&(t&&Ve.onRawSelect?Ve.onRawSelect(e,o,n):!t&&Ve.onRawDeselect&&Ve.onRawDeselect(e,o,n))},Bt=Object(l.useState)([]),qt=Object(f.a)(Bt,2),$t=qt[0],Gt=qt[1],Jt=function(e){if(!Fe||!Ve.skipTriggerChange){var t=Ft(e),n=function(e,t){var n=t.optionLabelProp,r=t.labelInValue,o=t.prevValueMap,a=t.options,i=t.getLabeledValue,c=e;return r&&(c=c.map((function(e){return i(e,{options:a,prevValueMap:o,labelInValue:r,optionLabelProp:n})}))),c}(Array.from(e),{labelInValue:it,options:t,getLabeledValue:i,prevValueMap:xt,optionLabelProp:at}),r=ct?n:n[0];if(Se&&(0!==Lt.length||0!==n.length)){var o=h(e,t,{prevValueOptions:$t});Gt(o.map((function(t,n){var r=Object(Me.a)({},t);return Object.defineProperty(r,"_INTERNAL_OPTION_VALUE_",{get:function(){return e[n]}}),r}))),Se(r,ct?o:o[0])}gt(r)}},Qt=function(e,t){var n,r=t.selected,o=t.source;q||(ct?(n=new Set(Lt),r?n.add(e):n.delete(e)):(n=new Set).add(e),(ct||!ct&&Array.from(Lt)[0]!==e)&&Jt(Array.from(n)),Kt(e,!ct||r,o),"combobox"===S?(Dt(String(e)),Et("")):ct&&!A||(Dt(""),Et("")))},Xt="combobox"===S&&ee&&ee()||null,Zt=Ie(void 0,{defaultValue:L,value:k}),en=Object(f.a)(Zt,2),tn=en[0],nn=en[1],rn=tn,on=!Q&&!At.length;(q||on&&rn&&"combobox"===S)&&(rn=!1);var an=!on&&rn,cn=function(e){var t=void 0!==e?e:!rn;tn===t||q||(nn(t),we&&we(t))};!function(e,t,n){var r=l.useRef(null);r.current={elements:e.filter((function(e){return e})),open:t,triggerOpen:n},l.useEffect((function(){function e(e){var t=e.target;t.shadowRoot&&e.composed&&(t=e.composedPath()[0]||t),r.current.open&&r.current.elements.every((function(e){return!e.contains(t)&&e!==t}))&&r.current.triggerOpen(!1)}return window.addEventListener("mousedown",e),function(){return window.removeEventListener("mousedown",e)}}),[])}([Ue.current,Ke.current&&Ke.current.getPopupElement()],an,cn);var ln=function(e,t,n){var r=!0,o=e;Et(null);var a=n?null:Ae(e,_e),i=a;if("combobox"===S)t&&Jt([o]);else if(a){o="","tags"!==S&&(i=a.map((function(e){var t=Nt.find((function(t){return t.data[at]===e}));return t?t.data.value:null})).filter((function(e){return null!==e})));var c=Array.from(new Set([].concat(Object(Ce.a)(Lt),Object(Ce.a)(i))));Jt(c),c.forEach((function(e){Kt(e,!0,"input")})),cn(!1),r=!1}return Dt(o),R&&Yt!==o&&R(o),r};Object(l.useEffect)((function(){tn&&q&&nn(!1)}),[q]),Object(l.useEffect)((function(){rn||ct||"combobox"===S||ln("",!1,!1)}),[rn]);var un=mt(),sn=Object(f.a)(un,2),fn=sn[0],dn=sn[1],pn=Object(l.useRef)(!1),hn=[];Object(l.useEffect)((function(){return function(){hn.forEach((function(e){return clearTimeout(e)})),hn.splice(0,hn.length)}}),[]);var mn=Object(l.useState)(0),vn=Object(f.a)(mn,2),yn=vn[0],_n=vn[1],bn=void 0!==G?G:"combobox"!==S,gn=Object(l.useState)(null),Mn=Object(f.a)(gn,2),wn=Mn[0],On=Mn[1],kn=Object(l.useState)({}),Ln=Object(f.a)(kn,2)[1];ft((function(){if(an){var e=Math.ceil(Ue.current.offsetWidth);wn!==e&&On(e)}}),[an]);var xn,zn=l.createElement(n,{ref:qe,prefixCls:M,id:ot,open:rn,childrenAsData:!x,options:At,flattenOptions:Rt,multiple:ct,values:zt,height:re,itemHeight:ae,onSelect:function(e,t){Qt(e,Object(Me.a)(Object(Me.a)({},t),{},{source:"option"}))},onToggleOpen:cn,onActiveValue:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.source,o=void 0===r?"keyboard":r;_n(t),Z&&"combobox"===S&&null!==e&&"keyboard"===o&&Et(String(e))},defaultActiveFirstOption:bn,notFoundContent:Q,onScroll:ge,searchValue:Yt,menuItemSelectedIcon:B,virtual:!1!==le&&!1!==fe,onMouseEnter:function(){Ln({})}});!q&&I&&(Lt.length||Yt)&&(xn=l.createElement(pe,{className:"".concat(M,"-clear"),onMouseDown:function(){Fe&&Ve.onClear&&Ve.onClear(),Te&&Te(),Jt([]),ln("",!1,!1)},customizeIcon:W},"×"));var Sn,Cn=void 0!==U?U:$||!ct&&"combobox"!==S;Cn&&(Sn=l.createElement(pe,{className:b()("".concat(M,"-arrow"),Object(u.a)({},"".concat(M,"-arrow-loading"),$)),customizeIcon:K,customizeIconProps:{loading:$,searchValue:Yt,open:rn,focused:Qe,showSearch:lt}}));var jn=b()(M,w,(_={},Object(u.a)(_,"".concat(M,"-focused"),Qe),Object(u.a)(_,"".concat(M,"-multiple"),ct),Object(u.a)(_,"".concat(M,"-single"),!ct),Object(u.a)(_,"".concat(M,"-allow-clear"),I),Object(u.a)(_,"".concat(M,"-show-arrow"),Cn),Object(u.a)(_,"".concat(M,"-disabled"),q),Object(u.a)(_,"".concat(M,"-loading"),$),Object(u.a)(_,"".concat(M,"-open"),rn),Object(u.a)(_,"".concat(M,"-customize-input"),Xt),Object(u.a)(_,"".concat(M,"-show-search"),lt),_));return l.createElement("div",Object(r.a)({className:jn},We,{ref:Ue,onMouseDown:function(e){var t=e.target,n=Ke.current&&Ke.current.getPopupElement();if(n&&n.contains(t)){var r=setTimeout((function(){var e,t=hn.indexOf(r);(-1!==t&&hn.splice(t,1),Ze(),dt||n.contains(document.activeElement))||(null===(e=Be.current)||void 0===e||e.focus())}));hn.push(r)}if(ze){for(var o=arguments.length,a=new Array(o>1?o-1:0),i=1;i<o;i++)a[i-1]=arguments[i];ze.apply(void 0,[e].concat(a))}},onKeyDown:function(e){var t,n=fn(),r=e.which;if(r===d.a.ENTER&&("combobox"!==S&&e.preventDefault(),rn||cn(!0)),dn(!!Yt),r===d.a.BACKSPACE&&!n&&ct&&!Yt&&Lt.length){var o=Pe(Ut,Lt);null!==o.removedValue&&(Jt(o.values),Kt(o.removedValue,!1,"input"))}for(var a=arguments.length,i=new Array(a>1?a-1:0),c=1;c<a;c++)i[c-1]=arguments[c];rn&&qe.current&&(t=qe.current).onKeyDown.apply(t,[e].concat(i));xe&&xe.apply(void 0,[e].concat(i))},onKeyUp:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var o;rn&&qe.current&&(o=qe.current).onKeyUp.apply(o,[e].concat(n));Le&&Le.apply(void 0,[e].concat(n))},onFocus:function(){Xe(!0),q||(Oe&&!pn.current&&Oe.apply(void 0,arguments),ve.includes("focus")&&cn(!0)),pn.current=!0},onBlur:function(){Xe(!1,(function(){pn.current=!1,cn(!1)})),q||(Yt&&("tags"===S?(ln("",!1,!1),Jt(Array.from(new Set([].concat(Object(Ce.a)(Lt),[Yt]))))):"multiple"===S&&Dt("")),ke&&ke.apply(void 0,arguments))}}),Qe&&!rn&&l.createElement("span",{style:{width:0,height:0,display:"flex",overflow:"hidden",opacity:0},"aria-live":"polite"},"".concat(Lt.join(", "))),l.createElement(wt,{ref:Ke,disabled:q,prefixCls:M,visible:an,popupElement:zn,containerWidth:wn,animation:ie,transitionName:ce,dropdownStyle:ue,dropdownClassName:se,direction:ye,dropdownMatchSelectWidth:fe,dropdownRender:de,dropdownAlign:he,getPopupContainer:te,empty:!Vt.length,getTriggerDOMNode:function(){return ht.current}},l.createElement(_t,Object(r.a)({},e,{domRef:ht,prefixCls:M,inputElement:Xt,ref:Be,id:ot,showSearch:lt,mode:S,accessibilityIndex:yn,multiple:ct,tagRender:be,values:Ut,open:rn,onToggleOpen:cn,searchValue:Yt,activeValue:jt,onSearch:ln,onSearchSubmit:function(e){if(e&&e.trim()){var t=Array.from(new Set([].concat(Object(Ce.a)(Lt),[e])));Jt(t),t.forEach((function(e){Kt(e,!0,"input")})),Dt("")}},onSelect:function(e,t){Qt(e,Object(Me.a)(Object(Me.a)({},t),{},{source:"selection"}))},tokenWithEnter:$e}))),Sn,xn)}return l.forwardRef(y)}({prefixCls:"rc-select",components:{optionList:ve},convertChildrenToData:ke,flattenOptions:function(e){var t=[];return function e(n,r){n.forEach((function(n){r||!("options"in n)?t.push({key:Ye(n,t.length),groupOption:r,data:n}):(t.push({key:Ye(n,t.length),group:!0,data:n}),e(n.options,!0))}))}(e,!1),t},getLabeledValue:function(e,t){var n=t.options,r=t.prevValueMap,o=t.labelInValue,a=t.optionLabelProp,i=Ne([e],n)[0],c={value:e},l=o?r.get(e):void 0;return l&&"object"===Object(je.a)(l)&&"label"in l?(c.label=l.label,i&&"string"==typeof l.label&&"string"==typeof i[a]&&l.label.trim()!==i[a].trim()&&Object(Ee.a)(!1,"`label` of `value` is not same as `label` in Select options.")):i&&a in i?c.label=i[a]:(c.label=e,c.isCacheable=!0),c.key=c.value,c},filterOptions:function(e,t,n){var r,o=n.optionFilterProp,a=n.filterOption,i=[];return!1===a?Object(Ce.a)(t):(r="function"==typeof a?a:function(e){return function(t,n){var r=t.toLowerCase();return"options"in n?Fe(n.label).toLowerCase().includes(r):Fe(n[e]).toLowerCase().includes(r)}}(o),t.forEach((function(t){if("options"in t)if(r(e,t))i.push(t);else{var n=t.options.filter((function(t){return r(e,t)}));n.length&&i.push(Object(Me.a)(Object(Me.a)({},t),{},{options:n}))}else r(e,Ve(t))&&i.push(t)})),i)},isValueDisabled:function(e,t){return Ne([e],t)[0].disabled},findValueOption:Ne,warningProps:kt,fillOptionsWithMissingValue:function(e,t,n,r){var o=Te(t).slice().sort(),a=Object(Ce.a)(e),i=new Set;return e.forEach((function(e){e.options?e.options.forEach((function(e){i.add(e.value)})):i.add(e.value)})),o.forEach((function(e){var t,o=r?e.value:e;i.has(o)||a.push(r?(t={},Object(u.a)(t,n,e.label),Object(u.a)(t,"value",o),t):{value:o})})),a}}),xt=function(e){Object(i.a)(n,e);var t=Object(c.a)(n);function n(){var e;return Object(o.a)(this,n),(e=t.apply(this,arguments)).selectRef=l.createRef(),e.focus=function(){e.selectRef.current.focus()},e.blur=function(){e.selectRef.current.blur()},e}return Object(a.a)(n,[{key:"render",value:function(){return l.createElement(Lt,Object(r.a)({ref:this.selectRef},this.props))}}]),n}(l.Component);xt.Option=_e,xt.OptGroup=ge;var zt=xt;t.default=zt},function(e,t,n){"use strict";n.r(t),n.d(t,"Field",(function(){return pe})),n.d(t,"List",(function(){return he})),n.d(t,"useForm",(function(){return ge})),n.d(t,"FormProvider",(function(){return we}));var r=n(0),o=n.n(r);function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function i(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){c(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function f(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function d(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function p(e){return function(e){if(Array.isArray(e))return s(e)}(e)||f(e)||d(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function m(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function v(e,t,n){return t&&m(e.prototype,t),n&&m(e,n),e}function y(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _(e,t){return(_=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function b(e){return(b=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var g=n(421),M=n.n(g);function w(e,t){return!t||"object"!==M()(t)&&"function"!=typeof t?y(e):t}function O(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=b(e);if(t){var o=b(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return w(this,n)}}var k=n(422);var L={};function x(e,t){0}function z(e,t,n){t||L[n]||(e(!1,n),L[n]=!0)}var S=function(e,t){z(x,e,t)},C="RC_FORM_INTERNAL_HOOKS",j=function(){S(!1,"Can not find FormContext. Please make sure you wrap Field under Form.")},E=r.createContext({getFieldValue:j,getFieldsValue:j,getFieldError:j,getFieldsError:j,isFieldsTouched:j,isFieldTouched:j,isFieldValidating:j,isFieldsValidating:j,resetFields:j,setFields:j,setFieldsValue:j,validateFields:j,submit:j,getInternalHooks:function(){return j(),{dispatch:j,initEntityValue:j,registerField:j,useSubscribe:j,setInitialValues:j,setCallbacks:j,getFields:j,setValidateMessages:j,setPreserve:j}}});function T(e){return null==e?[]:Array.isArray(e)?e:[e]}var P=n(63),H=n.n(P);function D(e,t,n,r,o,a,i){try{var c=e[a](i),l=c.value}catch(e){return void n(e)}c.done?t(l):Promise.resolve(l).then(r,o)}function Y(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function i(e){D(a,r,o,i,c,"next",e)}function c(e){D(a,r,o,i,c,"throw",e)}i(void 0)}))}}function V(e){return(V="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var N=n(423);function F(e,t){for(var n=e,r=0;r<t.length;r+=1){if(null==n)return;n=n[t[r]]}return n}function A(e){if(Array.isArray(e))return e}function R(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function I(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function W(e,t,n,r){if(!t.length)return n;var o,a,i=A(o=t)||f(o)||d(o)||R(),l=i[0],u=i.slice(1);return a=e||"number"!=typeof l?Array.isArray(e)?p(e):function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?I(Object(n),!0).forEach((function(t){c(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):I(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},e):[],r&&void 0===n&&1===u.length?delete a[l][u[0]]:a[l]=W(a[l],u,n,r),a}function U(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return t.length&&r&&void 0===n&&!F(e,t.slice(0,-1))?e:W(e,t,n,r)}function K(e){return T(e)}function B(e,t){return F(e,t)}function q(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=U(e,t,n,r);return o}function $(e,t){var n={};return t.forEach((function(t){var r=B(e,t);n=q(n,t,r)})),n}function G(e,t){return e&&e.some((function(e){return Z(e,t)}))}function J(e){return"object"===V(e)&&null!==e&&Object.getPrototypeOf(e)===Object.prototype}function Q(e,t){var n=Array.isArray(e)?p(e):u({},e);return t?(Object.keys(t).forEach((function(e){var r=n[e],o=t[e],a=J(r)&&J(o);n[e]=a?Q(r,o||{}):o})),n):n}function X(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return n.reduce((function(e,t){return Q(e,t)}),e)}function Z(e,t){return!(!e||!t||e.length!==t.length)&&e.every((function(e,n){return t[n]===e}))}function ee(e){var t=arguments.length<=1?void 0:arguments[1];return t&&t.target&&e in t.target?t.target[e]:t}function te(e,t,n){var r=e.length;if(t<0||t>=r||n<0||n>=r)return e;var o=e[t],a=t-n;return a>0?[].concat(p(e.slice(0,n)),[o],p(e.slice(n,t)),p(e.slice(t+1,r))):a<0?[].concat(p(e.slice(0,t)),p(e.slice(t+1,n+1)),[o],p(e.slice(n+1,r))):e}var ne="'${name}' is not a valid ${type}",re={default:"Validation error on field '${name}'",required:"'${name}' is required",enum:"'${name}' must be one of [${enum}]",whitespace:"'${name}' cannot be empty",date:{format:"'${name}' is invalid for format date",parse:"'${name}' could not be parsed as date",invalid:"'${name}' is invalid date"},types:{string:ne,method:ne,array:ne,object:ne,number:ne,date:ne,boolean:ne,integer:ne,float:ne,regexp:ne,email:ne,url:ne,hex:ne},string:{len:"'${name}' must be exactly ${len} characters",min:"'${name}' must be at least ${min} characters",max:"'${name}' cannot be longer than ${max} characters",range:"'${name}' must be between ${min} and ${max} characters"},number:{len:"'${name}' must equal ${len}",min:"'${name}' cannot be less than ${min}",max:"'${name}' cannot be greater than ${max}",range:"'${name}' must be between ${min} and ${max}"},array:{len:"'${name}' must be exactly ${len} in length",min:"'${name}' cannot be less than ${min} in length",max:"'${name}' cannot be greater than ${max} in length",range:"'${name}' must be between ${min} and ${max} in length"},pattern:{mismatch:"'${name}' does not match pattern ${pattern}"}},oe=N.a;function ae(e,t,n,r){var o=u(u({},n),{},{name:t,enum:(n.enum||[]).join(", ")}),a=function(e,t){return function(){return function(e,t){return e.replace(/\$\{\w+\}/g,(function(e){var n=e.slice(2,-1);return t[n]}))}(e,u(u({},o),t))}};return function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(t).forEach((function(o){var i=t[o];"string"==typeof i?n[o]=a(i,r):i&&"object"===V(i)?(n[o]={},e(i,n[o])):n[o]=i})),n}(X({},re,e))}function ie(e,t,n,r,o){return ce.apply(this,arguments)}function ce(){return(ce=Y(H.a.mark((function e(t,n,o,a,i){var l,s,f,d,h,m;return H.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l=u({},o),s=null,l&&"array"===l.type&&l.defaultField&&(s=l.defaultField,delete l.defaultField),f=new oe(c({},t,[l])),d=ae(a.validateMessages,t,l,i),f.messages(d),h=[],e.prev=7,e.next=10,Promise.resolve(f.validate(c({},t,n),u({},a)));case 10:e.next=15;break;case 12:e.prev=12,e.t0=e.catch(7),e.t0.errors?h=e.t0.errors.map((function(e,t){var n=e.message;return r.isValidElement(n)?r.cloneElement(n,{key:"error_".concat(t)}):n})):(console.error(e.t0),h=[d.default()]);case 15:if(h.length||!s){e.next=20;break}return e.next=18,Promise.all(n.map((function(e,n){return ie("".concat(t,".").concat(n),e,s,a,i)})));case 18:return m=e.sent,e.abrupt("return",m.reduce((function(e,t){return[].concat(p(e),p(t))}),[]));case 20:return e.abrupt("return",h);case 21:case"end":return e.stop()}}),e,null,[[7,12]])})))).apply(this,arguments)}function le(e,t,n,r,o,a){var i,c=e.join("."),l=n.map((function(e){var t=e.validator;return t?u(u({},e),{},{validator:function(e,n,r){var o=!1,a=t(e,n,(function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];Promise.resolve().then((function(){S(!o,"Your validator function has already return a promise. `callback` will be ignored."),o||r.apply(void 0,t)}))}));o=a&&"function"==typeof a.then&&"function"==typeof a.catch,S(o,"`callback` is deprecated. Please return a promise instead."),o&&a.then((function(){r()})).catch((function(e){r(e||" ")}))}}):e}));if(!0===o)i=new Promise(function(){var e=Y(H.a.mark((function e(n,o){var i,u;return H.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=0;case 1:if(!(i<l.length)){e.next=11;break}return e.next=4,ie(c,t,l[i],r,a);case 4:if(!(u=e.sent).length){e.next=8;break}return o(u),e.abrupt("return");case 8:i+=1,e.next=1;break;case 11:n([]);case 12:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}());else{var s=l.map((function(e){return ie(c,t,e,r,a)}));i=(o?function(e){return se.apply(this,arguments)}(s):function(e){return ue.apply(this,arguments)}(s)).then((function(e){return e.length?Promise.reject(e):[]}))}return i.catch((function(e){return e})),i}function ue(){return(ue=Y(H.a.mark((function e(t){return H.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Promise.all(t).then((function(e){var t;return(t=[]).concat.apply(t,p(e))})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function se(){return(se=Y(H.a.mark((function e(t){var n;return H.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=0,e.abrupt("return",new Promise((function(e){t.forEach((function(r){r.then((function(r){r.length&&e(r),(n+=1)===t.length&&e([])}))}))})));case 2:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function fe(e,t,n,r,o,a){return"function"==typeof e?e(t,n,"source"in a?{source:a.source}:{}):r!==o}var de=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_(e,t)}(n,e);var t=O(n);function n(e){var a;(h(this,n),(a=t.call(this,e)).state={resetCount:0},a.cancelRegisterFunc=null,a.mounted=!1,a.touched=!1,a.dirty=!1,a.validatePromise=null,a.errors=[],a.cancelRegister=function(){var e=a.props,t=e.preserve,n=e.isListField,r=e.name;a.cancelRegisterFunc&&a.cancelRegisterFunc(n,t,K(r)),a.cancelRegisterFunc=null},a.getNamePath=function(){var e=a.props,t=e.name,n=e.fieldContext.prefixName;return void 0!==t?[].concat(p(void 0===n?[]:n),p(t)):[]},a.getRules=function(){var e=a.props,t=e.rules,n=void 0===t?[]:t,r=e.fieldContext;return n.map((function(e){return"function"==typeof e?e(r):e}))},a.refresh=function(){a.mounted&&a.setState((function(e){return{resetCount:e.resetCount+1}}))},a.onStoreChange=function(e,t,n){var r=a.props,o=r.shouldUpdate,i=r.dependencies,c=void 0===i?[]:i,l=r.onReset,u=n.store,s=a.getNamePath(),f=a.getValue(e),d=a.getValue(u),p=t&&G(t,s);switch("valueUpdate"===n.type&&"external"===n.source&&f!==d&&(a.touched=!0,a.dirty=!0,a.validatePromise=null,a.errors=[]),n.type){case"reset":if(!t||p)return a.touched=!1,a.dirty=!1,a.validatePromise=null,a.errors=[],l&&l(),void a.refresh();break;case"setField":if(p){var h=n.data;return"touched"in h&&(a.touched=h.touched),"validating"in h&&!("originRCField"in h)&&(a.validatePromise=h.validating?Promise.resolve([]):null),"errors"in h&&(a.errors=h.errors||[]),a.dirty=!0,void a.reRender()}if(o&&!s.length&&fe(o,e,u,f,d,n))return void a.reRender();break;case"dependenciesUpdate":if(c.map(K).some((function(e){return G(n.relatedFields,e)})))return void a.reRender();break;default:if(p||(!c.length||s.length||o)&&fe(o,e,u,f,d,n))return void a.reRender()}!0===o&&a.reRender()},a.validateRules=function(e){var t=a.getNamePath(),n=a.getValue(),r=Promise.resolve().then((function(){if(!a.mounted)return[];var o=a.props,i=o.validateFirst,c=void 0!==i&&i,l=o.messageVariables,u=(e||{}).triggerName,s=a.getRules();u&&(s=s.filter((function(e){var t=e.validateTrigger;return!t||T(t).includes(u)})));var f=le(t,n,s,e,c,l);return f.catch((function(e){return e})).then((function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];a.validatePromise===r&&(a.validatePromise=null,a.errors=e,a.reRender())})),f}));return a.validatePromise=r,a.dirty=!0,a.errors=[],a.reRender(),r},a.isFieldValidating=function(){return!!a.validatePromise},a.isFieldTouched=function(){return a.touched},a.isFieldDirty=function(){return a.dirty},a.getErrors=function(){return a.errors},a.isListField=function(){return a.props.isListField},a.isList=function(){return a.props.isList},a.isPreserve=function(){return a.props.preserve},a.getMeta=function(){return a.prevValidating=a.isFieldValidating(),{touched:a.isFieldTouched(),validating:a.prevValidating,errors:a.errors,name:a.getNamePath()}},a.getOnlyChild=function(e){if("function"==typeof e){var t=a.getMeta();return u(u({},a.getOnlyChild(e(a.getControlled(),t,a.props.fieldContext))),{},{isFunction:!0})}var n=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=[];return o.a.Children.forEach(t,(function(t){(null!=t||n.keepEmpty)&&(Array.isArray(t)?r=r.concat(e(t)):Object(k.isFragment)(t)&&t.props?r=r.concat(e(t.props.children,n)):r.push(t))})),r}(e);return 1===n.length&&r.isValidElement(n[0])?{child:n[0],isFunction:!1}:{child:n,isFunction:!1}},a.getValue=function(e){var t=a.props.fieldContext.getFieldsValue,n=a.getNamePath();return B(e||t(!0),n)},a.getControlled=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=a.props,n=t.trigger,r=t.validateTrigger,o=t.getValueFromEvent,i=t.normalize,l=t.valuePropName,s=t.getValueProps,f=t.fieldContext,d=void 0!==r?r:f.validateTrigger,p=a.getNamePath(),h=f.getInternalHooks,m=f.getFieldsValue,v=h(C),y=v.dispatch,_=a.getValue(),b=s||function(e){return c({},l,e)},g=e[n],M=u(u({},e),b(_));M[n]=function(){var e;a.touched=!0,a.dirty=!0;for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];e=o?o.apply(void 0,n):ee.apply(void 0,[l].concat(n)),i&&(e=i(e,_,m(!0))),y({type:"updateValue",namePath:p,value:e}),g&&g.apply(void 0,n)};var w=T(d||[]);return w.forEach((function(e){var t=M[e];M[e]=function(){t&&t.apply(void 0,arguments);var n=a.props.rules;n&&n.length&&y({type:"validateField",namePath:p,triggerName:e})}})),M},e.fieldContext)&&(0,(0,e.fieldContext.getInternalHooks)(C).initEntityValue)(y(a));return a}return v(n,[{key:"componentDidMount",value:function(){var e=this.props,t=e.shouldUpdate,n=e.fieldContext;if(this.mounted=!0,n){var r=(0,n.getInternalHooks)(C).registerField;this.cancelRegisterFunc=r(this)}!0===t&&this.reRender()}},{key:"componentWillUnmount",value:function(){this.cancelRegister(),this.mounted=!1}},{key:"reRender",value:function(){this.mounted&&this.forceUpdate()}},{key:"render",value:function(){var e,t=this.state.resetCount,n=this.props.children,o=this.getOnlyChild(n),a=o.child;return o.isFunction?e=a:r.isValidElement(a)?e=r.cloneElement(a,this.getControlled(a.props)):(S(!a,"`children` of Field is not validate ReactElement."),e=a),r.createElement(r.Fragment,{key:t},e)}}]),n}(r.Component);de.contextType=E,de.defaultProps={trigger:"onChange",valuePropName:"value"};var pe=function(e){var t=e.name,n=i(e,["name"]),o=r.useContext(E),c=void 0!==t?K(t):void 0,l="keep";return n.isListField||(l="_".concat((c||[]).join("_"))),r.createElement(de,a({key:l,name:c},n,{fieldContext:o}))},he=function(e){var t=e.name,n=e.initialValue,o=e.children,a=e.rules,i=e.validateTrigger,c=r.useContext(E),l=r.useRef({keys:[],id:0}).current;if("function"!=typeof o)return S(!1,"Form.List only accepts function as children."),null;var s=K(c.prefixName)||[],f=[].concat(p(s),p(K(t)));return r.createElement(E.Provider,{value:u(u({},c),{},{prefixName:f})},r.createElement(pe,{name:[],shouldUpdate:function(e,t,n){return"internal"!==n.source&&e!==t},rules:a,validateTrigger:i,initialValue:n,isList:!0},(function(e,t){var n=e.value,r=void 0===n?[]:n,a=e.onChange,i=c.getFieldValue,u=function(){return i(f||[])||[]},s={add:function(e,t){var n=u();t>=0&&t<=n.length?(l.keys=[].concat(p(l.keys.slice(0,t)),[l.id],p(l.keys.slice(t))),a([].concat(p(n.slice(0,t)),[e],p(n.slice(t))))):(l.keys=[].concat(p(l.keys),[l.id]),a([].concat(p(n),[e]))),l.id+=1},remove:function(e){var t=u(),n=new Set(Array.isArray(e)?e:[e]);n.size<=0||(l.keys=l.keys.filter((function(e,t){return!n.has(t)})),a(t.filter((function(e,t){return!n.has(t)}))))},move:function(e,t){if(e!==t){var n=u();e<0||e>=n.length||t<0||t>=n.length||(l.keys=te(l.keys,e,t),a(te(n,e,t)))}}},d=r||[];return Array.isArray(d)||(d=[]),o(d.map((function(e,t){var n=l.keys[t];return void 0===n&&(l.keys[t]=l.id,n=l.keys[t],l.id+=1),{name:t,key:n,isListField:!0}})),s,t)})))};function me(e,t){return A(e)||function(e,t){var n=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null!=n){var r,o,a=[],i=!0,c=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){c=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(c)throw o}}return a}}(e,t)||d(e,t)||R()}var ve="__@field_split__";function ye(e){return e.map((function(e){return"".concat(V(e),":").concat(e)})).join(ve)}var _e=function(){function e(){h(this,e),this.kvs=new Map}return v(e,[{key:"set",value:function(e,t){this.kvs.set(ye(e),t)}},{key:"get",value:function(e){return this.kvs.get(ye(e))}},{key:"update",value:function(e,t){var n=t(this.get(e));n?this.set(e,n):this.delete(e)}},{key:"delete",value:function(e){this.kvs.delete(ye(e))}},{key:"map",value:function(e){return p(this.kvs.entries()).map((function(t){var n=me(t,2),r=n[0],o=n[1],a=r.split(ve);return e({key:a.map((function(e){var t=me(e.match(/^([^:]*):(.*)$/),3),n=t[1],r=t[2];return"number"===n?Number(r):r})),value:o})}))}},{key:"toJSON",value:function(){var e={};return this.map((function(t){var n=t.key,r=t.value;return e[n.join(".")]=r,null})),e}}]),e}(),be=function e(t){var n=this;h(this,e),this.formHooked=!1,this.subscribable=!0,this.store={},this.fieldEntities=[],this.initialValues={},this.callbacks={},this.validateMessages=null,this.preserve=null,this.lastValidatePromise=null,this.getForm=function(){return{getFieldValue:n.getFieldValue,getFieldsValue:n.getFieldsValue,getFieldError:n.getFieldError,getFieldsError:n.getFieldsError,isFieldsTouched:n.isFieldsTouched,isFieldTouched:n.isFieldTouched,isFieldValidating:n.isFieldValidating,isFieldsValidating:n.isFieldsValidating,resetFields:n.resetFields,setFields:n.setFields,setFieldsValue:n.setFieldsValue,validateFields:n.validateFields,submit:n.submit,getInternalHooks:n.getInternalHooks}},this.getInternalHooks=function(e){return e===C?(n.formHooked=!0,{dispatch:n.dispatch,initEntityValue:n.initEntityValue,registerField:n.registerField,useSubscribe:n.useSubscribe,setInitialValues:n.setInitialValues,setCallbacks:n.setCallbacks,setValidateMessages:n.setValidateMessages,getFields:n.getFields,setPreserve:n.setPreserve}):(S(!1,"`getInternalHooks` is internal usage. Should not call directly."),null)},this.useSubscribe=function(e){n.subscribable=e},this.setInitialValues=function(e,t){n.initialValues=e||{},t&&(n.store=X({},e,n.store))},this.getInitialValue=function(e){return B(n.initialValues,e)},this.setCallbacks=function(e){n.callbacks=e},this.setValidateMessages=function(e){n.validateMessages=e},this.setPreserve=function(e){n.preserve=e},this.timeoutId=null,this.warningUnhooked=function(){0},this.getFieldEntities=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return e?n.fieldEntities.filter((function(e){return e.getNamePath().length})):n.fieldEntities},this.getFieldsMap=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=new _e;return n.getFieldEntities(e).forEach((function(e){var n=e.getNamePath();t.set(n,e)})),t},this.getFieldEntitiesForNamePathList=function(e){if(!e)return n.getFieldEntities(!0);var t=n.getFieldsMap(!0);return e.map((function(e){var n=K(e);return t.get(n)||{INVALIDATE_NAME_PATH:K(e)}}))},this.getFieldsValue=function(e,t){if(n.warningUnhooked(),!0===e&&!t)return n.store;var r=n.getFieldEntitiesForNamePathList(Array.isArray(e)?e:null),o=[];return r.forEach((function(n){var r,a="INVALIDATE_NAME_PATH"in n?n.INVALIDATE_NAME_PATH:n.getNamePath();if(e||!(null===(r=n.isListField)||void 0===r?void 0:r.call(n)))if(t){var i="getMeta"in n?n.getMeta():null;t(i)&&o.push(a)}else o.push(a)})),$(n.store,o.map(K))},this.getFieldValue=function(e){n.warningUnhooked();var t=K(e);return B(n.store,t)},this.getFieldsError=function(e){return n.warningUnhooked(),n.getFieldEntitiesForNamePathList(e).map((function(t,n){return t&&!("INVALIDATE_NAME_PATH"in t)?{name:t.getNamePath(),errors:t.getErrors()}:{name:K(e[n]),errors:[]}}))},this.getFieldError=function(e){n.warningUnhooked();var t=K(e);return n.getFieldsError([t])[0].errors},this.isFieldsTouched=function(){n.warningUnhooked();for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var o,a=t[0],i=t[1],c=!1;0===t.length?o=null:1===t.length?Array.isArray(a)?(o=a.map(K),c=!1):(o=null,c=a):(o=a.map(K),c=i);var l=n.getFieldEntities(!0),u=function(e){return e.isFieldTouched()};if(!o)return c?l.every(u):l.some(u);var s=new _e;o.forEach((function(e){s.set(e,[])})),l.forEach((function(e){var t=e.getNamePath();o.forEach((function(n){n.every((function(e,n){return t[n]===e}))&&s.update(n,(function(t){return[].concat(p(t),[e])}))}))}));var f=function(e){return e.some(u)},d=s.map((function(e){return e.value}));return c?d.every(f):d.some(f)},this.isFieldTouched=function(e){return n.warningUnhooked(),n.isFieldsTouched([e])},this.isFieldsValidating=function(e){n.warningUnhooked();var t=n.getFieldEntities();if(!e)return t.some((function(e){return e.isFieldValidating()}));var r=e.map(K);return t.some((function(e){var t=e.getNamePath();return G(r,t)&&e.isFieldValidating()}))},this.isFieldValidating=function(e){return n.warningUnhooked(),n.isFieldsValidating([e])},this.resetWithFieldInitialValue=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new _e,r=n.getFieldEntities(!0);r.forEach((function(e){var n=e.props.initialValue,r=e.getNamePath();if(void 0!==n){var o=t.get(r)||new Set;o.add({entity:e,value:n}),t.set(r,o)}}));var o,a=function(r){r.forEach((function(r){if(void 0!==r.props.initialValue){var o=r.getNamePath();if(void 0!==n.getInitialValue(o))S(!1,"Form already set 'initialValues' with path '".concat(o.join("."),"'. Field can not overwrite it."));else{var a=t.get(o);if(a&&a.size>1)S(!1,"Multiple Field with path '".concat(o.join("."),"' set 'initialValue'. Can not decide which one to pick."));else if(a){var i=n.getFieldValue(o);e.skipExist&&void 0!==i||(n.store=q(n.store,o,p(a)[0].value))}}}}))};e.entities?o=e.entities:e.namePathList?(o=[],e.namePathList.forEach((function(e){var n,r=t.get(e);r&&(n=o).push.apply(n,p(p(r).map((function(e){return e.entity}))))}))):o=r,a(o)},this.resetFields=function(e){n.warningUnhooked();var t=n.store;if(!e)return n.store=X({},n.initialValues),n.resetWithFieldInitialValue(),void n.notifyObservers(t,null,{type:"reset"});var r=e.map(K);r.forEach((function(e){var t=n.getInitialValue(e);n.store=q(n.store,e,t)})),n.resetWithFieldInitialValue({namePathList:r}),n.notifyObservers(t,r,{type:"reset"})},this.setFields=function(e){n.warningUnhooked();var t=n.store;e.forEach((function(e){var r=e.name,o=(e.errors,i(e,["name","errors"])),a=K(r);"value"in o&&(n.store=q(n.store,a,o.value)),n.notifyObservers(t,[a],{type:"setField",data:e})}))},this.getFields=function(){return n.getFieldEntities(!0).map((function(e){var t=e.getNamePath(),r=u(u({},e.getMeta()),{},{name:t,value:n.getFieldValue(t)});return Object.defineProperty(r,"originRCField",{value:!0}),r}))},this.initEntityValue=function(e){var t=e.props.initialValue;if(void 0!==t){var r=e.getNamePath();void 0===B(n.store,r)&&(n.store=q(n.store,r,t))}},this.registerField=function(e){if(n.fieldEntities.push(e),void 0!==e.props.initialValue){var t=n.store;n.resetWithFieldInitialValue({entities:[e],skipExist:!0}),n.notifyObservers(t,[e.getNamePath()],{type:"valueUpdate",source:"internal"})}return function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];n.fieldEntities=n.fieldEntities.filter((function(t){return t!==e}));var a=void 0!==r?r:n.preserve;if(!1===a&&(!t||o.length>1)){var i=e.getNamePath(),c=t?void 0:B(n.initialValues,i);i.length&&n.getFieldValue(i)!==c&&n.fieldEntities.every((function(e){return!Z(e.getNamePath(),i)}))&&(n.store=q(n.store,i,c,!0))}}},this.dispatch=function(e){switch(e.type){case"updateValue":var t=e.namePath,r=e.value;n.updateValue(t,r);break;case"validateField":var o=e.namePath,a=e.triggerName;n.validateFields([o],{triggerName:a})}},this.notifyObservers=function(e,t,r){if(n.subscribable){var o=u(u({},r),{},{store:n.getFieldsValue(!0)});n.getFieldEntities().forEach((function(n){(0,n.onStoreChange)(e,t,o)}))}else n.forceRootUpdate()},this.updateValue=function(e,t){var r=K(e),o=n.store;n.store=q(n.store,r,t),n.notifyObservers(o,[r],{type:"valueUpdate",source:"internal"});var a=n.getDependencyChildrenFields(r);a.length&&n.validateFields(a),n.notifyObservers(o,a,{type:"dependenciesUpdate",relatedFields:[r].concat(p(a))});var i=n.callbacks.onValuesChange;i&&i($(n.store,[r]),n.getFieldsValue());n.triggerOnFieldsChange([r].concat(p(a)))},this.setFieldsValue=function(e){n.warningUnhooked();var t=n.store;e&&(n.store=X(n.store,e)),n.notifyObservers(t,null,{type:"valueUpdate",source:"external"})},this.getDependencyChildrenFields=function(e){var t=new Set,r=[],o=new _e;n.getFieldEntities().forEach((function(e){(e.props.dependencies||[]).forEach((function(t){var n=K(t);o.update(n,(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Set;return t.add(e),t}))}))}));return function e(n){(o.get(n)||new Set).forEach((function(n){if(!t.has(n)){t.add(n);var o=n.getNamePath();n.isFieldDirty()&&o.length&&(r.push(o),e(o))}}))}(e),r},this.triggerOnFieldsChange=function(e,t){var r=n.callbacks.onFieldsChange;if(r){var o=n.getFields();if(t){var a=new _e;t.forEach((function(e){var t=e.name,n=e.errors;a.set(t,n)})),o.forEach((function(e){e.errors=a.get(e.name)||e.errors}))}r(o.filter((function(t){var n=t.name;return G(e,n)})),o)}},this.validateFields=function(e,t){n.warningUnhooked();var r=!!e,o=r?e.map(K):[],a=[];n.getFieldEntities(!0).forEach((function(i){if(r||o.push(i.getNamePath()),(null==t?void 0:t.recursive)&&r){var c=i.getNamePath();c.every((function(t,n){return e[n]===t||void 0===e[n]}))&&o.push(c)}if(i.props.rules&&i.props.rules.length){var l=i.getNamePath();if(!r||G(o,l)){var s=i.validateRules(u({validateMessages:u(u({},re),n.validateMessages)},t));a.push(s.then((function(){return{name:l,errors:[]}})).catch((function(e){return Promise.reject({name:l,errors:e})})))}}}));var i=function(e){var t=!1,n=e.length,r=[];return e.length?new Promise((function(o,a){e.forEach((function(e,i){e.catch((function(e){return t=!0,e})).then((function(e){n-=1,r[i]=e,n>0||(t&&a(r),o(r))}))}))})):Promise.resolve([])}(a);n.lastValidatePromise=i,i.catch((function(e){return e})).then((function(e){var t=e.map((function(e){return e.name}));n.notifyObservers(n.store,t,{type:"validateFinish"}),n.triggerOnFieldsChange(t,e)}));var c=i.then((function(){return n.lastValidatePromise===i?Promise.resolve(n.getFieldsValue(o)):Promise.reject([])})).catch((function(e){var t=e.filter((function(e){return e&&e.errors.length}));return Promise.reject({values:n.getFieldsValue(o),errorFields:t,outOfDate:n.lastValidatePromise!==i})}));return c.catch((function(e){return e})),c},this.submit=function(){n.warningUnhooked(),n.validateFields().then((function(e){var t=n.callbacks.onFinish;if(t)try{t(e)}catch(e){console.error(e)}})).catch((function(e){var t=n.callbacks.onFinishFailed;t&&t(e)}))},this.forceRootUpdate=t};var ge=function(e){var t=r.useRef(),n=me(r.useState({}),2)[1];if(!t.current)if(e)t.current=e;else{var o=new be((function(){n({})}));t.current=o.getForm()}return[t.current]},Me=r.createContext({triggerFormChange:function(){},triggerFormFinish:function(){},registerForm:function(){},unregisterForm:function(){}}),we=function(e){var t=e.validateMessages,n=e.onFormChange,o=e.onFormFinish,a=e.children,i=r.useContext(Me),l=r.useRef({});return r.createElement(Me.Provider,{value:u(u({},i),{},{validateMessages:u(u({},i.validateMessages),t),triggerFormChange:function(e,t){n&&n(e,{changedFields:t,forms:l.current}),i.triggerFormChange(e,t)},triggerFormFinish:function(e,t){o&&o(e,{values:t,forms:l.current}),i.triggerFormFinish(e,t)},registerForm:function(e,t){e&&(l.current=u(u({},l.current),{},c({},e,t))),i.registerForm(e,t)},unregisterForm:function(e){var t=u({},l.current);delete t[e],l.current=t,i.unregisterForm(e)}})},a)},Oe=Me,ke=function(e,t){var n=e.name,o=e.initialValues,c=e.fields,l=e.form,s=e.preserve,f=e.children,d=e.component,h=void 0===d?"form":d,m=e.validateMessages,v=e.validateTrigger,y=void 0===v?"onChange":v,_=e.onValuesChange,b=e.onFieldsChange,g=e.onFinish,M=e.onFinishFailed,w=i(e,["name","initialValues","fields","form","preserve","children","component","validateMessages","validateTrigger","onValuesChange","onFieldsChange","onFinish","onFinishFailed"]),O=r.useContext(Oe),k=me(ge(l),1)[0],L=k.getInternalHooks(C),x=L.useSubscribe,z=L.setInitialValues,S=L.setCallbacks,j=L.setValidateMessages,T=L.setPreserve;r.useImperativeHandle(t,(function(){return k})),r.useEffect((function(){return O.registerForm(n,k),function(){O.unregisterForm(n)}}),[O,k,n]),j(u(u({},O.validateMessages),m)),S({onValuesChange:_,onFieldsChange:function(e){if(O.triggerFormChange(n,e),b){for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];b.apply(void 0,[e].concat(r))}},onFinish:function(e){O.triggerFormFinish(n,e),g&&g(e)},onFinishFailed:M}),T(s);var P=r.useRef(null);z(o,!P.current),P.current||(P.current=!0);var H=f,D="function"==typeof f;D&&(H=f(k.getFieldsValue(!0),k));x(!D);var Y=r.useRef();r.useEffect((function(){(function(e,t){if(e===t)return!0;if(!e&&t||e&&!t)return!1;if(!e||!t||"object"!==V(e)||"object"!==V(t))return!1;var n=Object.keys(e),r=Object.keys(t),o=new Set([].concat(p(n),p(r)));return p(o).every((function(n){var r=e[n],o=t[n];return"function"==typeof r&&"function"==typeof o||r===o}))})(Y.current||[],c||[])||k.setFields(c||[]),Y.current=c}),[c,k]);var N=r.useMemo((function(){return u(u({},k),{},{validateTrigger:y})}),[k,y]),F=r.createElement(E.Provider,{value:N},H);return!1===h?F:r.createElement(h,a({},w,{onSubmit:function(e){e.preventDefault(),e.stopPropagation(),k.submit()},onReset:function(e){var t;e.preventDefault(),k.resetFields(),null===(t=w.onReset)||void 0===t||t.call(w,e)}}),F)},Le=r.forwardRef(ke);Le.FormProvider=we,Le.Field=pe,Le.List=he,Le.useForm=ge;t.default=Le},function(e,t,n){"use strict";n.r(t);var r=n(17),o=n.n(r),a=n(0),i=n.n(a),c=n(33),l=n.n(c),u=n(37),s=n.n(u),f=n(38),d=n.n(f),p=n(11),h=n.n(p),m={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,isTextModifyingKeyEvent:function(e){var t=e.keyCode;if(e.altKey&&!e.ctrlKey||e.metaKey||t>=m.F1&&t<=m.F12)return!1;switch(t){case m.ALT:case m.CAPS_LOCK:case m.CONTEXT_MENU:case m.CTRL:case m.DOWN:case m.END:case m.ESC:case m.HOME:case m.INSERT:case m.LEFT:case m.MAC_FF_META:case m.META:case m.NUMLOCK:case m.NUM_CENTER:case m.PAGE_DOWN:case m.PAGE_UP:case m.PAUSE:case m.PRINT_SCREEN:case m.RIGHT:case m.SHIFT:case m.UP:case m.WIN_KEY:case m.WIN_KEY_RIGHT:return!1;default:return!0}},isCharacterKey:function(e){if(e>=m.ZERO&&e<=m.NINE)return!0;if(e>=m.NUM_ZERO&&e<=m.NUM_MULTIPLY)return!0;if(e>=m.A&&e<=m.Z)return!0;if(-1!==window.navigator.userAgent.indexOf("WebKit")&&0===e)return!0;switch(e){case m.SPACE:case m.QUESTION_MARK:case m.NUM_PLUS:case m.NUM_MINUS:case m.NUM_PERIOD:case m.NUM_DIVISION:case m.SEMICOLON:case m.DASH:case m.EQUALS:case m.COMMA:case m.PERIOD:case m.SLASH:case m.APOSTROPHE:case m.SINGLE_QUOTE:case m.OPEN_SQUARE_BRACKET:case m.BACKSLASH:case m.CLOSE_SQUARE_BRACKET:return!0;default:return!1}}},v=m;var y=n(100),_=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&(n[r[o]]=e[r[o]])}return n},b=function(e){function t(){return l()(this,t),s()(this,e.apply(this,arguments))}return d()(t,e),t.prototype.shouldComponentUpdate=function(e){return!!e.forceRender||(!!e.hiddenClassName||!!e.visible)},t.prototype.render=function(){var e=this.props,t=e.className,n=e.hiddenClassName,r=e.visible,i=(e.forceRender,_(e,["className","hiddenClassName","visible","forceRender"])),c=t;return n&&!r&&(c+=" "+n),a.createElement("div",o()({},i,{className:c}))},t}(a.Component),g=0;function M(e,t){var n=e["page"+(t?"Y":"X")+"Offset"],r="scroll"+(t?"Top":"Left");if("number"!=typeof n){var o=e.document;"number"!=typeof(n=o.documentElement[r])&&(n=o.body[r])}return n}function w(e,t){var n=e.style;["Webkit","Moz","Ms","ms"].forEach((function(e){n[e+"TransformOrigin"]=t})),n.transformOrigin=t}var O=function(e){function t(n){l()(this,t);var r=s()(this,e.call(this,n));return r.inTransition=!1,r.onAnimateLeave=function(){var e=r.props.afterClose;r.wrap&&(r.wrap.style.display="none"),r.inTransition=!1,r.switchScrollingEffect(),e&&e()},r.onDialogMouseDown=function(){r.dialogMouseDown=!0},r.onMaskMouseUp=function(){r.dialogMouseDown&&(r.timeoutId=setTimeout((function(){r.dialogMouseDown=!1}),0))},r.onMaskClick=function(e){Date.now()-r.openTime<300||e.target!==e.currentTarget||r.dialogMouseDown||r.close(e)},r.onKeyDown=function(e){var t=r.props;if(t.keyboard&&e.keyCode===v.ESC)return e.stopPropagation(),void r.close(e);if(t.visible&&e.keyCode===v.TAB){var n=document.activeElement,o=r.sentinelStart;e.shiftKey?n===o&&r.sentinelEnd.focus():n===r.sentinelEnd&&o.focus()}},r.getDialogElement=function(){var e=r.props,t=e.closable,n=e.prefixCls,i={};void 0!==e.width&&(i.width=e.width),void 0!==e.height&&(i.height=e.height);var c=void 0;e.footer&&(c=a.createElement("div",{className:n+"-footer",ref:r.saveRef("footer")},e.footer));var l=void 0;e.title&&(l=a.createElement("div",{className:n+"-header",ref:r.saveRef("header")},a.createElement("div",{className:n+"-title",id:r.titleId},e.title)));var u=void 0;t&&(u=a.createElement("button",{type:"button",onClick:r.close,"aria-label":"Close",className:n+"-close"},e.closeIcon||a.createElement("span",{className:n+"-close-x"})));var s=o()({},e.style,i),f={width:0,height:0,overflow:"hidden",outline:"none"},d=r.getTransitionName(),p=a.createElement(b,{key:"dialog-element",role:"document",ref:r.saveRef("dialog"),style:s,className:n+" "+(e.className||""),visible:e.visible,forceRender:e.forceRender,onMouseDown:r.onDialogMouseDown},a.createElement("div",{tabIndex:0,ref:r.saveRef("sentinelStart"),style:f,"aria-hidden":"true"}),a.createElement("div",{className:n+"-content"},u,l,a.createElement("div",o()({className:n+"-body",style:e.bodyStyle,ref:r.saveRef("body")},e.bodyProps),e.children),c),a.createElement("div",{tabIndex:0,ref:r.saveRef("sentinelEnd"),style:f,"aria-hidden":"true"}));return a.createElement(y.a,{key:"dialog",showProp:"visible",onLeave:r.onAnimateLeave,transitionName:d,component:"",transitionAppear:!0},e.visible||!e.destroyOnClose?p:null)},r.getZIndexStyle=function(){var e={},t=r.props;return void 0!==t.zIndex&&(e.zIndex=t.zIndex),e},r.getWrapStyle=function(){return o()({},r.getZIndexStyle(),r.props.wrapStyle)},r.getMaskStyle=function(){return o()({},r.getZIndexStyle(),r.props.maskStyle)},r.getMaskElement=function(){var e=r.props,t=void 0;if(e.mask){var n=r.getMaskTransitionName();t=a.createElement(b,o()({style:r.getMaskStyle(),key:"mask",className:e.prefixCls+"-mask",hiddenClassName:e.prefixCls+"-mask-hidden",visible:e.visible},e.maskProps)),n&&(t=a.createElement(y.a,{key:"mask",showProp:"visible",transitionAppear:!0,component:"",transitionName:n},t))}return t},r.getMaskTransitionName=function(){var e=r.props,t=e.maskTransitionName,n=e.maskAnimation;return!t&&n&&(t=e.prefixCls+"-"+n),t},r.getTransitionName=function(){var e=r.props,t=e.transitionName,n=e.animation;return!t&&n&&(t=e.prefixCls+"-"+n),t},r.close=function(e){var t=r.props.onClose;t&&t(e)},r.saveRef=function(e){return function(t){r[e]=t}},r.titleId="rcDialogTitle"+g++,r.switchScrollingEffect=n.switchScrollingEffect||function(){},r}return d()(t,e),t.prototype.componentDidMount=function(){this.componentDidUpdate({}),(this.props.forceRender||!1===this.props.getContainer&&!this.props.visible)&&this.wrap&&(this.wrap.style.display="none")},t.prototype.componentDidUpdate=function(e){var t,n,r,o,a,i=this.props,c=i.visible,l=i.mask,u=i.focusTriggerAfterClose,s=this.props.mousePosition;if(c){if(!e.visible){this.openTime=Date.now(),this.switchScrollingEffect(),this.tryFocus();var f=p.findDOMNode(this.dialog);if(s){var d=(n=(t=f).getBoundingClientRect(),r={left:n.left,top:n.top},o=t.ownerDocument,a=o.defaultView||o.parentWindow,r.left+=M(a),r.top+=M(a,!0),r);w(f,s.x-d.left+"px "+(s.y-d.top)+"px")}else w(f,"")}}else if(e.visible&&(this.inTransition=!0,l&&this.lastOutSideFocusNode&&u)){try{this.lastOutSideFocusNode.focus()}catch(e){this.lastOutSideFocusNode=null}this.lastOutSideFocusNode=null}},t.prototype.componentWillUnmount=function(){var e=this.props,t=e.visible,n=e.getOpenCount;!t&&!this.inTransition||n()||this.switchScrollingEffect(),clearTimeout(this.timeoutId)},t.prototype.tryFocus=function(){(function(e,t){for(var n=t;n;){if(n===e)return!0;n=n.parentNode}return!1})(this.wrap,document.activeElement)||(this.lastOutSideFocusNode=document.activeElement,this.sentinelStart.focus())},t.prototype.render=function(){var e=this.props,t=e.prefixCls,n=e.maskClosable,r=this.getWrapStyle();return e.visible&&(r.display=null),a.createElement("div",{className:t+"-root"},this.getMaskElement(),a.createElement("div",o()({tabIndex:-1,onKeyDown:this.onKeyDown,className:t+"-wrap "+(e.wrapClassName||""),ref:this.saveRef("wrap"),onClick:n?this.onMaskClick:null,onMouseUp:n?this.onMaskMouseUp:null,role:"dialog","aria-labelledby":e.title?this.titleId:null,style:r},e.wrapProps),this.getDialogElement()))},t}(a.Component),k=O;O.defaultProps={className:"",mask:!0,visible:!1,keyboard:!0,closable:!0,maskClosable:!0,destroyOnClose:!1,prefixCls:"rc-dialog",focusTriggerAfterClose:!0};var L=n(3),x=n.n(L),z=n(80);function S(e){return(S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function C(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function j(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function E(e,t){return(E=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function T(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=H(e);if(t){var o=H(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return P(this,n)}}function P(e,t){return!t||"object"!==S(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function H(e){return(H=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var D=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&E(e,t)}(a,e);var t,n,r,o=T(a);function a(){var e;C(this,a);for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return(e=o.call.apply(o,[this].concat(n))).removeContainer=function(){e.container&&(h.a.unmountComponentAtNode(e.container),e.container.parentNode.removeChild(e.container),e.container=null)},e.renderComponent=function(t,n){var r=e.props,o=r.visible,a=r.getComponent,i=r.forceRender,c=r.getContainer,l=r.parent;(o||l._component||i)&&(e.container||(e.container=c()),h.a.unstable_renderSubtreeIntoContainer(l,a(t),e.container,(function(){n&&n.call(this)})))},e}return t=a,(n=[{key:"componentDidMount",value:function(){this.props.autoMount&&this.renderComponent()}},{key:"componentDidUpdate",value:function(){this.props.autoMount&&this.renderComponent()}},{key:"componentWillUnmount",value:function(){this.props.autoDestroy&&this.removeContainer()}},{key:"render",value:function(){return this.props.children({renderComponent:this.renderComponent,removeContainer:this.removeContainer})}}])&&j(t.prototype,n),r&&j(t,r),a}(i.a.Component);function Y(e){return(Y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function V(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function N(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function F(e,t){return(F=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function A(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=I(e);if(t){var o=I(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return R(this,n)}}function R(e,t){return!t||"object"!==Y(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function I(e){return(I=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}D.propTypes={autoMount:x.a.bool,autoDestroy:x.a.bool,visible:x.a.bool,forceRender:x.a.bool,parent:x.a.any,getComponent:x.a.func.isRequired,getContainer:x.a.func.isRequired,children:x.a.func.isRequired},D.defaultProps={autoMount:!0,autoDestroy:!0,forceRender:!1};var W,U=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&F(e,t)}(a,e);var t,n,r,o=A(a);function a(){return V(this,a),o.apply(this,arguments)}return t=a,(n=[{key:"componentDidMount",value:function(){this.createContainer()}},{key:"componentDidUpdate",value:function(e){var t=this.props.didUpdate;t&&t(e)}},{key:"componentWillUnmount",value:function(){this.removeContainer()}},{key:"createContainer",value:function(){this._container=this.props.getContainer(),this.forceUpdate()}},{key:"removeContainer",value:function(){this._container&&this._container.parentNode.removeChild(this._container)}},{key:"render",value:function(){return this._container?h.a.createPortal(this.props.children,this._container):null}}])&&N(t.prototype,n),r&&N(t,r),a}(i.a.Component);U.propTypes={getContainer:x.a.func.isRequired,children:x.a.node.isRequired,didUpdate:x.a.func};var K=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.element,r=void 0===n?document.body:n,o={},a=Object.keys(e);return a.forEach((function(e){o[e]=r.style[e]})),a.forEach((function(t){r.style[t]=e[t]})),o};var B={},q=function(e){if(document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth||e){var t=new RegExp("".concat("ant-scrolling-effect"),"g"),n=document.body.className;if(e){if(!t.test(n))return;return K(B),B={},void(document.body.className=n.replace(t,"").trim())}var r=function(e){if("undefined"==typeof document)return 0;if(e||void 0===W){var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var n=document.createElement("div"),r=n.style;r.position="absolute",r.top=0,r.left=0,r.pointerEvents="none",r.visibility="hidden",r.width="200px",r.height="150px",r.overflow="hidden",n.appendChild(t),document.body.appendChild(n);var o=t.offsetWidth;n.style.overflow="scroll";var a=t.offsetWidth;o===a&&(a=n.clientWidth),document.body.removeChild(n),W=o-a}return W}();if(r&&(B=K({position:"relative",width:"calc(100% - ".concat(r,"px)")}),!t.test(n))){var o="".concat(n," ").concat("ant-scrolling-effect");document.body.className=o.trim()}}};function $(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function G(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$(Object(n),!0).forEach((function(t){J(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function J(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Q(e){return(Q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function X(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Z(e,t){return(Z=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function ee(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=re(e);if(t){var o=re(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return te(this,n)}}function te(e,t){return!t||"object"!==Q(t)&&"function"!=typeof t?ne(e):t}function ne(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function re(e){return(re=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var oe=0,ae=!("undefined"!=typeof window&&window.document&&window.document.createElement),ie="createPortal"in h.a,ce={},le=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Z(e,t)}(a,e);var t,n,r,o=ee(a);function a(e){var t;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,a),(t=o.call(this,e)).getParent=function(){var e=t.props.getContainer;if(e){if("string"==typeof e)return document.querySelectorAll(e)[0];if("function"==typeof e)return e();if("object"===Q(e)&&e instanceof window.HTMLElement)return e}return document.body},t.getContainer=function(){if(ae)return null;if(!t.container){t.container=document.createElement("div");var e=t.getParent();e&&e.appendChild(t.container)}return t.setWrapperClassName(),t.container},t.setWrapperClassName=function(){var e=t.props.wrapperClassName;t.container&&e&&e!==t.container.className&&(t.container.className=e)},t.savePortal=function(e){t._component=e},t.removeCurrentContainer=function(e){t.container=null,t._component=null,ie||(e?t.renderComponent({afterClose:t.removeContainer,onClose:function(){},visible:!1}):t.removeContainer())},t.switchScrollingEffect=function(){1!==oe||Object.keys(ce).length?oe||(K(ce),ce={},q(!0)):(q(),ce=K({overflow:"hidden",overflowX:"hidden",overflowY:"hidden"}))};var n=e.visible;return oe=n?oe+1:oe,t.state={_self:ne(t)},t}return t=a,r=[{key:"getDerivedStateFromProps",value:function(e,t){var n=t.prevProps,r=t._self,o=e.visible,a=e.getContainer;if(n){var i=n.visible,c=n.getContainer;o!==i&&(oe=o&&!i?oe+1:oe-1),("function"==typeof a&&"function"==typeof c?a.toString()!==c.toString():a!==c)&&r.removeCurrentContainer(!1)}return{prevProps:e}}}],(n=[{key:"componentDidUpdate",value:function(){this.setWrapperClassName()}},{key:"componentWillUnmount",value:function(){var e=this.props.visible;oe=e&&oe?oe-1:oe,this.removeCurrentContainer(e)}},{key:"render",value:function(){var e=this,t=this.props,n=t.children,r=t.forceRender,o=t.visible,a=null,c={getOpenCount:function(){return oe},getContainer:this.getContainer,switchScrollingEffect:this.switchScrollingEffect};return ie?((r||o||this._component)&&(a=i.a.createElement(U,{getContainer:this.getContainer,ref:this.savePortal},n(c))),a):i.a.createElement(D,{parent:this,visible:o,autoDestroy:!1,getComponent:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n(G(G(G({},t),c),{},{ref:e.savePortal}))},getContainer:this.getContainer,forceRender:r},(function(t){var n=t.renderComponent,r=t.removeContainer;return e.renderComponent=n,e.removeContainer=r,null}))}}])&&X(t.prototype,n),r&&X(t,r),a}(i.a.Component);le.propTypes={wrapperClassName:x.a.string,forceRender:x.a.bool,getContainer:x.a.any,children:x.a.func,visible:x.a.bool};var ue=Object(z.polyfill)(le);t.default=function(e){var t=e.visible,n=e.getContainer,r=e.forceRender;return!1===n?a.createElement(k,o()({},e,{getOpenCount:function(){return 2}})):a.createElement(ue,{visible:t,forceRender:r,getContainer:n},(function(t){return a.createElement(k,o()({},e,t))}))}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return O}));var r=n(7),o=n(6),a=n(1),i=n(20),c=n(21),l=n(23),u=n(22),s=n(0),f=n.n(s),d=n(2),p=n.n(d),h=function(e){var t,n="".concat(e.rootPrefixCls,"-item"),r=p()(n,"".concat(n,"-").concat(e.page),(t={},Object(o.a)(t,"".concat(n,"-active"),e.active),Object(o.a)(t,e.className,!!e.className),Object(o.a)(t,"".concat(n,"-disabled"),!e.page),t));return f.a.createElement("li",{title:e.showTitle?e.page:null,className:r,onClick:function(){e.onClick(e.page)},onKeyPress:function(t){e.onKeyPress(t,e.onClick,e.page)},tabIndex:"0"},e.itemRender(e.page,"page",f.a.createElement("a",{rel:"nofollow"},e.page)))},m=13,v=38,y=40,_=function(e){Object(l.a)(n,e);var t=Object(u.a)(n);function n(){var e;Object(i.a)(this,n);for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];return(e=t.call.apply(t,[this].concat(o))).state={goInputText:""},e.buildOptionText=function(t){return"".concat(t," ").concat(e.props.locale.items_per_page)},e.changeSize=function(t){e.props.changeSize(Number(t))},e.handleChange=function(t){e.setState({goInputText:t.target.value})},e.handleBlur=function(t){var n=e.props,r=n.goButton,o=n.quickGo,a=n.rootPrefixCls,i=e.state.goInputText;r||""===i||(e.setState({goInputText:""}),t.relatedTarget&&(t.relatedTarget.className.indexOf("".concat(a,"-item-link"))>=0||t.relatedTarget.className.indexOf("".concat(a,"-item"))>=0)||o(e.getValidValue()))},e.go=function(t){""!==e.state.goInputText&&(t.keyCode!==m&&"click"!==t.type||(e.setState({goInputText:""}),e.props.quickGo(e.getValidValue())))},e}return Object(c.a)(n,[{key:"getValidValue",value:function(){var e=this.state.goInputText;return!e||isNaN(e)?void 0:Number(e)}},{key:"getPageSizeOptions",value:function(){var e=this.props,t=e.pageSize,n=e.pageSizeOptions;return n.some((function(e){return e.toString()===t.toString()}))?n:n.concat([t.toString()]).sort((function(e,t){return(isNaN(Number(e))?0:Number(e))-(isNaN(Number(t))?0:Number(t))}))}},{key:"render",value:function(){var e=this,t=this.props,n=t.pageSize,r=t.locale,o=t.rootPrefixCls,a=t.changeSize,i=t.quickGo,c=t.goButton,l=t.selectComponentClass,u=t.buildOptionText,s=t.selectPrefixCls,d=t.disabled,p=this.state.goInputText,h="".concat(o,"-options"),m=l,v=null,y=null,_=null;if(!a&&!i)return null;var b=this.getPageSizeOptions();if(a&&m){var g=b.map((function(t,n){return f.a.createElement(m.Option,{key:n,value:t.toString()},(u||e.buildOptionText)(t))}));v=f.a.createElement(m,{disabled:d,prefixCls:s,showSearch:!1,className:"".concat(h,"-size-changer"),optionLabelProp:"children",dropdownMatchSelectWidth:!1,value:(n||b[0]).toString(),onChange:this.changeSize,getPopupContainer:function(e){return e.parentNode}},g)}return i&&(c&&(_="boolean"==typeof c?f.a.createElement("button",{type:"button",onClick:this.go,onKeyUp:this.go,disabled:d,className:"".concat(h,"-quick-jumper-button")},r.jump_to_confirm):f.a.createElement("span",{onClick:this.go,onKeyUp:this.go},c)),y=f.a.createElement("div",{className:"".concat(h,"-quick-jumper")},r.jump_to,f.a.createElement("input",{disabled:d,type:"text",value:p,onChange:this.handleChange,onKeyUp:this.go,onBlur:this.handleBlur}),r.page,_)),f.a.createElement("li",{className:"".concat(h)},v,y)}}]),n}(f.a.Component);_.defaultProps={pageSizeOptions:["10","20","50","100"]};var b=_;function g(){}function M(e,t,n){var r=void 0===e?t.pageSize:e;return Math.floor((n.total-1)/r)+1}var w=function(e){Object(l.a)(n,e);var t=Object(u.a)(n);function n(e){var r;Object(i.a)(this,n),(r=t.call(this,e)).getJumpPrevPage=function(){return Math.max(1,r.state.current-(r.props.showLessItems?3:5))},r.getJumpNextPage=function(){return Math.min(M(void 0,r.state,r.props),r.state.current+(r.props.showLessItems?3:5))},r.getItemIcon=function(e,t){var n=r.props.prefixCls,o=e||f.a.createElement("button",{type:"button","aria-label":t,className:"".concat(n,"-item-link")});return"function"==typeof e&&(o=f.a.createElement(e,Object(a.a)({},r.props))),o},r.savePaginationNode=function(e){r.paginationNode=e},r.isValid=function(e){return"number"==typeof(t=e)&&isFinite(t)&&Math.floor(t)===t&&e!==r.state.current;var t},r.shouldDisplayQuickJumper=function(){var e=r.props,t=e.showQuickJumper,n=e.pageSize;return!(e.total<=n)&&t},r.handleKeyDown=function(e){e.keyCode!==v&&e.keyCode!==y||e.preventDefault()},r.handleKeyUp=function(e){var t=r.getValidValue(e);t!==r.state.currentInputValue&&r.setState({currentInputValue:t}),e.keyCode===m?r.handleChange(t):e.keyCode===v?r.handleChange(t-1):e.keyCode===y&&r.handleChange(t+1)},r.changePageSize=function(e){var t=r.state.current,n=M(e,r.state,r.props);t=t>n?n:t,0===n&&(t=r.state.current),"number"==typeof e&&("pageSize"in r.props||r.setState({pageSize:e}),"current"in r.props||r.setState({current:t,currentInputValue:t})),r.props.onShowSizeChange(t,e),"onChange"in r.props&&r.props.onChange&&r.props.onChange(t,e)},r.handleChange=function(e){var t=r.props.disabled,n=e;if(r.isValid(n)&&!t){var o=M(void 0,r.state,r.props);n>o?n=o:n<1&&(n=1),"current"in r.props||r.setState({current:n,currentInputValue:n});var a=r.state.pageSize;return r.props.onChange(n,a),n}return r.state.current},r.prev=function(){r.hasPrev()&&r.handleChange(r.state.current-1)},r.next=function(){r.hasNext()&&r.handleChange(r.state.current+1)},r.jumpPrev=function(){r.handleChange(r.getJumpPrevPage())},r.jumpNext=function(){r.handleChange(r.getJumpNextPage())},r.hasPrev=function(){return r.state.current>1},r.hasNext=function(){return r.state.current<M(void 0,r.state,r.props)},r.runIfEnter=function(e,t){if("Enter"===e.key||13===e.charCode){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o<n;o++)r[o-2]=arguments[o];t.apply(void 0,r)}},r.runIfEnterPrev=function(e){r.runIfEnter(e,r.prev)},r.runIfEnterNext=function(e){r.runIfEnter(e,r.next)},r.runIfEnterJumpPrev=function(e){r.runIfEnter(e,r.jumpPrev)},r.runIfEnterJumpNext=function(e){r.runIfEnter(e,r.jumpNext)},r.handleGoTO=function(e){e.keyCode!==m&&"click"!==e.type||r.handleChange(r.state.currentInputValue)};var o=e.onChange!==g;"current"in e&&!o&&console.warn("Warning: You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.");var c=e.defaultCurrent;"current"in e&&(c=e.current);var l=e.defaultPageSize;return"pageSize"in e&&(l=e.pageSize),c=Math.min(c,M(l,void 0,e)),r.state={current:c,currentInputValue:c,pageSize:l},r}return Object(c.a)(n,[{key:"componentDidUpdate",value:function(e,t){var n=this.props.prefixCls;if(t.current!==this.state.current&&this.paginationNode){var r=this.paginationNode.querySelector(".".concat(n,"-item-").concat(t.current));r&&document.activeElement===r&&r.blur()}}},{key:"getValidValue",value:function(e){var t=e.target.value,n=M(void 0,this.state,this.props),r=this.state.currentInputValue;return""===t?t:isNaN(Number(t))?r:t>=n?n:Number(t)}},{key:"getShowSizeChanger",value:function(){var e=this.props,t=e.showSizeChanger,n=e.total,r=e.totalBoundaryShowSizeChanger;return void 0!==t?t:n>r}},{key:"renderPrev",value:function(e){var t=this.props,n=t.prevIcon,r=(0,t.itemRender)(e,"prev",this.getItemIcon(n,"prev page")),o=!this.hasPrev();return Object(s.isValidElement)(r)?Object(s.cloneElement)(r,{disabled:o}):r}},{key:"renderNext",value:function(e){var t=this.props,n=t.nextIcon,r=(0,t.itemRender)(e,"next",this.getItemIcon(n,"next page")),o=!this.hasNext();return Object(s.isValidElement)(r)?Object(s.cloneElement)(r,{disabled:o}):r}},{key:"render",value:function(){var e=this,t=this.props,n=t.prefixCls,a=t.className,i=t.style,c=t.disabled,l=t.hideOnSinglePage,u=t.total,d=t.locale,m=t.showQuickJumper,v=t.showLessItems,y=t.showTitle,_=t.showTotal,g=t.simple,w=t.itemRender,O=t.showPrevNextJumpers,k=t.jumpPrevIcon,L=t.jumpNextIcon,x=t.selectComponentClass,z=t.selectPrefixCls,S=t.pageSizeOptions,C=this.state,j=C.current,E=C.pageSize,T=C.currentInputValue;if(!0===l&&u<=E)return null;var P=M(void 0,this.state,this.props),H=[],D=null,Y=null,V=null,N=null,F=null,A=m&&m.goButton,R=v?1:2,I=j-1>0?j-1:0,W=j+1<P?j+1:P,U=Object.keys(this.props).reduce((function(t,n){return"data-"!==n.substr(0,5)&&"aria-"!==n.substr(0,5)&&"role"!==n||(t[n]=e.props[n]),t}),{});if(g)return A&&(F="boolean"==typeof A?f.a.createElement("button",{type:"button",onClick:this.handleGoTO,onKeyUp:this.handleGoTO},d.jump_to_confirm):f.a.createElement("span",{onClick:this.handleGoTO,onKeyUp:this.handleGoTO},A),F=f.a.createElement("li",{title:y?"".concat(d.jump_to).concat(j,"/").concat(P):null,className:"".concat(n,"-simple-pager")},F)),f.a.createElement("ul",Object(r.a)({className:p()(n,"".concat(n,"-simple"),Object(o.a)({},"".concat(n,"-disabled"),c),a),style:i,ref:this.savePaginationNode},U),f.a.createElement("li",{title:y?d.prev_page:null,onClick:this.prev,tabIndex:this.hasPrev()?0:null,onKeyPress:this.runIfEnterPrev,className:p()("".concat(n,"-prev"),Object(o.a)({},"".concat(n,"-disabled"),!this.hasPrev())),"aria-disabled":!this.hasPrev()},this.renderPrev(I)),f.a.createElement("li",{title:y?"".concat(j,"/").concat(P):null,className:"".concat(n,"-simple-pager")},f.a.createElement("input",{type:"text",value:T,disabled:c,onKeyDown:this.handleKeyDown,onKeyUp:this.handleKeyUp,onChange:this.handleKeyUp,size:"3"}),f.a.createElement("span",{className:"".concat(n,"-slash")},"/"),P),f.a.createElement("li",{title:y?d.next_page:null,onClick:this.next,tabIndex:this.hasPrev()?0:null,onKeyPress:this.runIfEnterNext,className:p()("".concat(n,"-next"),Object(o.a)({},"".concat(n,"-disabled"),!this.hasNext())),"aria-disabled":!this.hasNext()},this.renderNext(W)),F);if(P<=3+2*R){var K={locale:d,rootPrefixCls:n,onClick:this.handleChange,onKeyPress:this.runIfEnter,showTitle:y,itemRender:w};P||H.push(f.a.createElement(h,Object(r.a)({},K,{key:"noPager",page:P,className:"".concat(n,"-disabled")})));for(var B=1;B<=P;B+=1){var q=j===B;H.push(f.a.createElement(h,Object(r.a)({},K,{key:B,page:B,active:q})))}}else{var $=v?d.prev_3:d.prev_5,G=v?d.next_3:d.next_5;O&&(D=f.a.createElement("li",{title:y?$:null,key:"prev",onClick:this.jumpPrev,tabIndex:"0",onKeyPress:this.runIfEnterJumpPrev,className:p()("".concat(n,"-jump-prev"),Object(o.a)({},"".concat(n,"-jump-prev-custom-icon"),!!k))},w(this.getJumpPrevPage(),"jump-prev",this.getItemIcon(k,"prev page"))),Y=f.a.createElement("li",{title:y?G:null,key:"next",tabIndex:"0",onClick:this.jumpNext,onKeyPress:this.runIfEnterJumpNext,className:p()("".concat(n,"-jump-next"),Object(o.a)({},"".concat(n,"-jump-next-custom-icon"),!!L))},w(this.getJumpNextPage(),"jump-next",this.getItemIcon(L,"next page")))),N=f.a.createElement(h,{locale:d,last:!0,rootPrefixCls:n,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:P,page:P,active:!1,showTitle:y,itemRender:w}),V=f.a.createElement(h,{locale:d,rootPrefixCls:n,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:1,page:1,active:!1,showTitle:y,itemRender:w});var J=Math.max(1,j-R),Q=Math.min(j+R,P);j-1<=R&&(Q=1+2*R),P-j<=R&&(J=P-2*R);for(var X=J;X<=Q;X+=1){var Z=j===X;H.push(f.a.createElement(h,{locale:d,rootPrefixCls:n,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:X,page:X,active:Z,showTitle:y,itemRender:w}))}j-1>=2*R&&3!==j&&(H[0]=Object(s.cloneElement)(H[0],{className:"".concat(n,"-item-after-jump-prev")}),H.unshift(D)),P-j>=2*R&&j!==P-2&&(H[H.length-1]=Object(s.cloneElement)(H[H.length-1],{className:"".concat(n,"-item-before-jump-next")}),H.push(Y)),1!==J&&H.unshift(V),Q!==P&&H.push(N)}var ee=null;_&&(ee=f.a.createElement("li",{className:"".concat(n,"-total-text")},_(u,[0===u?0:(j-1)*E+1,j*E>u?u:j*E])));var te=!this.hasPrev()||!P,ne=!this.hasNext()||!P;return f.a.createElement("ul",Object(r.a)({className:p()(n,a,Object(o.a)({},"".concat(n,"-disabled"),c)),style:i,unselectable:"unselectable",ref:this.savePaginationNode},U),ee,f.a.createElement("li",{title:y?d.prev_page:null,onClick:this.prev,tabIndex:te?null:0,onKeyPress:this.runIfEnterPrev,className:p()("".concat(n,"-prev"),Object(o.a)({},"".concat(n,"-disabled"),te)),"aria-disabled":te},this.renderPrev(I)),H,f.a.createElement("li",{title:y?d.next_page:null,onClick:this.next,tabIndex:ne?null:0,onKeyPress:this.runIfEnterNext,className:p()("".concat(n,"-next"),Object(o.a)({},"".concat(n,"-disabled"),ne)),"aria-disabled":ne},this.renderNext(W)),f.a.createElement(b,{disabled:c,locale:d,rootPrefixCls:n,selectComponentClass:x,selectPrefixCls:z,changeSize:this.getShowSizeChanger()?this.changePageSize:null,current:j,pageSize:E,pageSizeOptions:S,quickGo:this.shouldDisplayQuickJumper()?this.handleChange:null,goButton:A}))}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n={};if("current"in e&&(n.current=e.current,e.current!==t.current&&(n.currentInputValue=n.current)),"pageSize"in e&&e.pageSize!==t.pageSize){var r=t.current,o=M(e.pageSize,t,e);r=r>o?o:r,"current"in e||(n.current=r,n.currentInputValue=r),n.pageSize=e.pageSize}return n}}]),n}(f.a.Component);w.defaultProps={defaultCurrent:1,total:0,defaultPageSize:10,onChange:g,className:"",selectPrefixCls:"rc-select",prefixCls:"rc-pagination",selectComponentClass:null,hideOnSinglePage:!1,showPrevNextJumpers:!0,showQuickJumper:!1,showLessItems:!1,showTitle:!0,onShowSizeChange:g,locale:{items_per_page:"条/页",jump_to:"跳至",jump_to_confirm:"确定",page:"页",prev_page:"上一页",next_page:"下一页",prev_5:"向前 5 页",next_5:"向后 5 页",prev_3:"向前 3 页",next_3:"向后 3 页"},style:{},itemRender:function(e,t,n){return n},totalBoundaryShowSizeChanger:50};var O=w},function(e,t,n){"use strict";n.r(t),n.d(t,"Line",(function(){return C})),n.d(t,"Circle",(function(){return B}));var r=n(0),o=n.n(r);function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function c(e,t,n){return(c="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var r=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=f(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(n):o.value}})(e,t,n||e)}function l(e,t){return(l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function u(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=f(e);if(t){var o=f(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return s(this,n)}}function s(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function f(e){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var d=function(e){return function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&l(e,t)}(s,e);var t,n,r,o=u(s);function s(){return a(this,s),o.apply(this,arguments)}return t=s,(n=[{key:"componentDidUpdate",value:function(){var e=this,t=Date.now(),n=!1;Object.keys(this.paths).forEach((function(r){var o=e.paths[r];if(o){n=!0;var a=o.style;a.transitionDuration=".3s, .3s, .3s, .06s",e.prevTimeStamp&&t-e.prevTimeStamp<100&&(a.transitionDuration="0s, 0s")}})),n&&(this.prevTimeStamp=Date.now())}},{key:"render",value:function(){return c(f(s.prototype),"render",this).call(this)}}])&&i(t.prototype,n),r&&i(t,r),s}(e)},p=n(3),h=n.n(p),m={className:"",percent:0,prefixCls:"rc-progress",strokeColor:"#2db7f5",strokeLinecap:"round",strokeWidth:1,style:{},trailColor:"#D9D9D9",trailWidth:1},v=h.a.oneOfType([h.a.number,h.a.string]),y={className:h.a.string,percent:h.a.oneOfType([v,h.a.arrayOf(v)]),prefixCls:h.a.string,strokeColor:h.a.oneOfType([h.a.string,h.a.arrayOf(h.a.oneOfType([h.a.string,h.a.object])),h.a.object]),strokeLinecap:h.a.oneOf(["butt","round","square"]),strokeWidth:v,style:h.a.object,trailColor:h.a.string,trailWidth:v};function _(){return(_=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function b(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function g(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function M(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function w(e,t){return(w=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function O(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=x(e);if(t){var o=x(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return k(this,n)}}function k(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?L(e):t}function L(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function x(e){return(x=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function z(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var S=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&w(e,t)}(i,e);var t,n,r,a=O(i);function i(){var e;g(this,i);for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return z(L(e=a.call.apply(a,[this].concat(n))),"paths",{}),e}return t=i,(n=[{key:"render",value:function(){var e=this,t=this.props,n=t.className,r=t.percent,a=t.prefixCls,i=t.strokeColor,c=t.strokeLinecap,l=t.strokeWidth,u=t.style,s=t.trailColor,f=t.trailWidth,d=t.transition,p=b(t,["className","percent","prefixCls","strokeColor","strokeLinecap","strokeWidth","style","trailColor","trailWidth","transition"]);delete p.gapPosition;var h=Array.isArray(r)?r:[r],m=Array.isArray(i)?i:[i],v=l/2,y=100-l/2,g="M ".concat("round"===c?v:0,",").concat(v,"\n L ").concat("round"===c?y:100,",").concat(v),M="0 0 100 ".concat(l),w=0;return o.a.createElement("svg",_({className:"".concat(a,"-line ").concat(n),viewBox:M,preserveAspectRatio:"none",style:u},p),o.a.createElement("path",{className:"".concat(a,"-line-trail"),d:g,strokeLinecap:c,stroke:s,strokeWidth:f||l,fillOpacity:"0"}),h.map((function(t,n){var r={strokeDasharray:"".concat(t,"px, 100px"),strokeDashoffset:"-".concat(w,"px"),transition:d||"stroke-dashoffset 0.3s ease 0s, stroke-dasharray .3s ease 0s, stroke 0.3s linear"},i=m[n]||m[m.length-1];return w+=t,o.a.createElement("path",{key:n,className:"".concat(a,"-line-path"),d:g,strokeLinecap:c,stroke:i,strokeWidth:l,fillOpacity:"0",ref:function(t){e.paths[n]=t},style:r})})))}}])&&M(t.prototype,n),r&&M(t,r),i}(r.Component);S.propTypes=y,S.defaultProps=m;var C=d(S);function j(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function E(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?j(Object(n),!0).forEach((function(t){A(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):j(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function T(){return(T=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function P(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function H(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function D(e,t){return(D=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Y(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=F(e);if(t){var o=F(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return V(this,n)}}function V(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?N(e):t}function N(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function F(e){return(F=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function A(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var R=0;function I(e){return+e.replace("%","")}function W(e){return Array.isArray(e)?e:[e]}function U(e,t,n,r){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,a=arguments.length>5?arguments[5]:void 0,i=50-r/2,c=0,l=-i,u=0,s=-2*i;switch(a){case"left":c=-i,l=0,u=2*i,s=0;break;case"right":c=i,l=0,u=-2*i,s=0;break;case"bottom":l=i,s=2*i}var f="M 50,50 m ".concat(c,",").concat(l,"\n a ").concat(i,",").concat(i," 0 1 1 ").concat(u,",").concat(-s,"\n a ").concat(i,",").concat(i," 0 1 1 ").concat(-u,",").concat(s),d=2*Math.PI*i,p={stroke:n,strokeDasharray:"".concat(t/100*(d-o),"px ").concat(d,"px"),strokeDashoffset:"-".concat(o/2+e/100*(d-o),"px"),transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s"};return{pathString:f,pathStyle:p}}var K=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&D(e,t)}(i,e);var t,n,r,a=Y(i);function i(){var e;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,i),A(N(e=a.call(this)),"paths",{}),A(N(e),"gradientId",0),e.gradientId=R,R+=1,e}return t=i,(n=[{key:"getStokeList",value:function(){var e=this,t=this.props,n=t.prefixCls,r=t.percent,a=t.strokeColor,i=t.strokeWidth,c=t.strokeLinecap,l=t.gapDegree,u=t.gapPosition,s=W(r),f=W(a),d=0;return s.map((function(t,r){var a=f[r]||f[f.length-1],s="[object Object]"===Object.prototype.toString.call(a)?"url(#".concat(n,"-gradient-").concat(e.gradientId,")"):"",p=U(d,t,a,i,l,u),h=p.pathString,m=p.pathStyle;return d+=t,o.a.createElement("path",{key:r,className:"".concat(n,"-circle-path"),d:h,stroke:s,strokeLinecap:c,strokeWidth:i,opacity:0===t?0:1,fillOpacity:"0",style:m,ref:function(t){e.paths[r]=t}})}))}},{key:"render",value:function(){var e=this.props,t=e.prefixCls,n=e.strokeWidth,r=e.trailWidth,a=e.gapDegree,i=e.gapPosition,c=e.trailColor,l=e.strokeLinecap,u=e.style,s=e.className,f=e.strokeColor,d=P(e,["prefixCls","strokeWidth","trailWidth","gapDegree","gapPosition","trailColor","strokeLinecap","style","className","strokeColor"]),p=U(0,100,c,n,a,i),h=p.pathString,m=p.pathStyle;delete d.percent;var v=W(f).find((function(e){return"[object Object]"===Object.prototype.toString.call(e)}));return o.a.createElement("svg",T({className:"".concat(t,"-circle ").concat(s),viewBox:"0 0 100 100",style:u},d),v&&o.a.createElement("defs",null,o.a.createElement("linearGradient",{id:"".concat(t,"-gradient-").concat(this.gradientId),x1:"100%",y1:"0%",x2:"0%",y2:"0%"},Object.keys(v).sort((function(e,t){return I(e)-I(t)})).map((function(e,t){return o.a.createElement("stop",{key:t,offset:e,stopColor:v[e]})})))),o.a.createElement("path",{className:"".concat(t,"-circle-trail"),d:h,stroke:c,strokeLinecap:l,strokeWidth:r||n,fillOpacity:"0",style:m}),this.getStokeList().reverse())}}])&&H(t.prototype,n),r&&H(t,r),i}(r.Component);K.propTypes=E(E({},y),{},{gapPosition:h.a.oneOf(["top","bottom","left","right"])}),K.defaultProps=E(E({},m),{},{gapPosition:"top"});var B=d(K);t.default={Line:C,Circle:B}},function(e,t,n){"use strict";function r(e,t){(function(e){return"string"==typeof e&&-1!==e.indexOf(".")&&1===parseFloat(e)})(e)&&(e="100%");var n=function(e){return"string"==typeof e&&-1!==e.indexOf("%")}(e);return e=360===t?e:Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:e=360===t?(e<0?e%t+t:e%t)/parseFloat(String(t)):e%t/parseFloat(String(t))}function o(e){return e<=1?100*Number(e)+"%":e}function a(e){return 1===e.length?"0"+e:String(e)}function i(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*n*(t-e):n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function c(e){return l(e)/255}function l(e){return parseInt(e,16)}n.r(t),n.d(t,"blue",(function(){return D})),n.d(t,"cyan",(function(){return H})),n.d(t,"geekblue",(function(){return Y})),n.d(t,"generate",(function(){return O})),n.d(t,"gold",(function(){return C})),n.d(t,"green",(function(){return P})),n.d(t,"grey",(function(){return F})),n.d(t,"lime",(function(){return T})),n.d(t,"magenta",(function(){return N})),n.d(t,"orange",(function(){return j})),n.d(t,"presetDarkPalettes",(function(){return x})),n.d(t,"presetPalettes",(function(){return L})),n.d(t,"presetPrimaryColors",(function(){return k})),n.d(t,"purple",(function(){return V})),n.d(t,"red",(function(){return z})),n.d(t,"volcano",(function(){return S})),n.d(t,"yellow",(function(){return E}));var u={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function s(e){var t,n,a,s={r:0,g:0,b:0},f=1,d=null,p=null,v=null,y=!1,_=!1;return"string"==typeof e&&(e=function(e){if(0===(e=e.trim().toLowerCase()).length)return!1;var t=!1;if(u[e])e=u[e],t=!0;else if("transparent"===e)return{r:0,g:0,b:0,a:0,format:"name"};var n=h.rgb.exec(e);if(n)return{r:n[1],g:n[2],b:n[3]};if(n=h.rgba.exec(e))return{r:n[1],g:n[2],b:n[3],a:n[4]};if(n=h.hsl.exec(e))return{h:n[1],s:n[2],l:n[3]};if(n=h.hsla.exec(e))return{h:n[1],s:n[2],l:n[3],a:n[4]};if(n=h.hsv.exec(e))return{h:n[1],s:n[2],v:n[3]};if(n=h.hsva.exec(e))return{h:n[1],s:n[2],v:n[3],a:n[4]};if(n=h.hex8.exec(e))return{r:l(n[1]),g:l(n[2]),b:l(n[3]),a:c(n[4]),format:t?"name":"hex8"};if(n=h.hex6.exec(e))return{r:l(n[1]),g:l(n[2]),b:l(n[3]),format:t?"name":"hex"};if(n=h.hex4.exec(e))return{r:l(n[1]+n[1]),g:l(n[2]+n[2]),b:l(n[3]+n[3]),a:c(n[4]+n[4]),format:t?"name":"hex8"};if(n=h.hex3.exec(e))return{r:l(n[1]+n[1]),g:l(n[2]+n[2]),b:l(n[3]+n[3]),format:t?"name":"hex"};return!1}(e)),"object"==typeof e&&(m(e.r)&&m(e.g)&&m(e.b)?(t=e.r,n=e.g,a=e.b,s={r:255*r(t,255),g:255*r(n,255),b:255*r(a,255)},y=!0,_="%"===String(e.r).substr(-1)?"prgb":"rgb"):m(e.h)&&m(e.s)&&m(e.v)?(d=o(e.s),p=o(e.v),s=function(e,t,n){e=6*r(e,360),t=r(t,100),n=r(n,100);var o=Math.floor(e),a=e-o,i=n*(1-t),c=n*(1-a*t),l=n*(1-(1-a)*t),u=o%6;return{r:255*[n,c,i,i,l,n][u],g:255*[l,n,n,c,i,i][u],b:255*[i,i,l,n,n,c][u]}}(e.h,d,p),y=!0,_="hsv"):m(e.h)&&m(e.s)&&m(e.l)&&(d=o(e.s),v=o(e.l),s=function(e,t,n){var o,a,c;if(e=r(e,360),t=r(t,100),n=r(n,100),0===t)a=n,c=n,o=n;else{var l=n<.5?n*(1+t):n+t-n*t,u=2*n-l;o=i(u,l,e+1/3),a=i(u,l,e),c=i(u,l,e-1/3)}return{r:255*o,g:255*a,b:255*c}}(e.h,d,v),y=!0,_="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(f=e.a)),f=function(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}(f),{ok:y,format:e.format||_,r:Math.min(255,Math.max(s.r,0)),g:Math.min(255,Math.max(s.g,0)),b:Math.min(255,Math.max(s.b,0)),a:f}}var f="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)",d="[\\s|\\(]+("+f+")[,|\\s]+("+f+")[,|\\s]+("+f+")\\s*\\)?",p="[\\s|\\(]+("+f+")[,|\\s]+("+f+")[,|\\s]+("+f+")[,|\\s]+("+f+")\\s*\\)?",h={CSS_UNIT:new RegExp(f),rgb:new RegExp("rgb"+d),rgba:new RegExp("rgba"+p),hsl:new RegExp("hsl"+d),hsla:new RegExp("hsla"+p),hsv:new RegExp("hsv"+d),hsva:new RegExp("hsva"+p),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function m(e){return Boolean(h.CSS_UNIT.exec(String(e)))}var v=[{index:7,opacity:.15},{index:6,opacity:.25},{index:5,opacity:.3},{index:5,opacity:.45},{index:5,opacity:.65},{index:5,opacity:.85},{index:4,opacity:.9},{index:3,opacity:.95},{index:2,opacity:.97},{index:1,opacity:.98}];function y(e){var t=function(e,t,n){e=r(e,255),t=r(t,255),n=r(n,255);var o=Math.max(e,t,n),a=Math.min(e,t,n),i=0,c=o,l=o-a,u=0===o?0:l/o;if(o===a)i=0;else{switch(o){case e:i=(t-n)/l+(t<n?6:0);break;case t:i=(n-e)/l+2;break;case n:i=(e-t)/l+4}i/=6}return{h:i,s:u,v:c}}(e.r,e.g,e.b);return{h:360*t.h,s:t.s,v:t.v}}function _(e){var t=e.r,n=e.g,r=e.b;return"#".concat(function(e,t,n,r){var o=[a(Math.round(e).toString(16)),a(Math.round(t).toString(16)),a(Math.round(n).toString(16))];return r&&o[0].startsWith(o[0].charAt(1))&&o[1].startsWith(o[1].charAt(1))&&o[2].startsWith(o[2].charAt(1))?o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0):o.join("")}(t,n,r,!1))}function b(e,t,n){var r=n/100;return{r:(t.r-e.r)*r+e.r,g:(t.g-e.g)*r+e.g,b:(t.b-e.b)*r+e.b}}function g(e,t,n){var r;return(r=Math.round(e.h)>=60&&Math.round(e.h)<=240?n?Math.round(e.h)-2*t:Math.round(e.h)+2*t:n?Math.round(e.h)+2*t:Math.round(e.h)-2*t)<0?r+=360:r>=360&&(r-=360),r}function M(e,t,n){return 0===e.h&&0===e.s?e.s:((r=n?e.s-.16*t:4===t?e.s+.16:e.s+.05*t)>1&&(r=1),n&&5===t&&r>.1&&(r=.1),r<.06&&(r=.06),Number(r.toFixed(2)));var r}function w(e,t,n){var r;return(r=n?e.v+.05*t:e.v-.15*t)>1&&(r=1),Number(r.toFixed(2))}function O(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[],r=s(e),o=5;o>0;o-=1){var a=y(r),i=_(s({h:g(a,o,!0),s:M(a,o,!0),v:w(a,o,!0)}));n.push(i)}n.push(_(r));for(var c=1;c<=4;c+=1){var l=y(r),u=_(s({h:g(l,c),s:M(l,c),v:w(l,c)}));n.push(u)}return"dark"===t.theme?v.map((function(e){var r=e.index,o=e.opacity;return _(b(s(t.backgroundColor||"#141414"),s(n[r]),100*o))})):n}var k={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1890FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},L={},x={};Object.keys(k).forEach((function(e){L[e]=O(k[e]),L[e].primary=L[e][5],x[e]=O(k[e],{theme:"dark",backgroundColor:"#141414"}),x[e].primary=x[e][5]}));var z=L.red,S=L.volcano,C=L.gold,j=L.orange,E=L.yellow,T=L.lime,P=L.green,H=L.cyan,D=L.blue,Y=L.geekblue,V=L.purple,N=L.magenta,F=L.grey},function(e,t,n){"use strict";n.r(t);var r=n(7),o=n(28),a=n(1),i=n(15),c=n(0),l=n(71),u={adjustX:1,adjustY:1},s=[0,0],f={left:{points:["cr","cl"],overflow:u,offset:[-4,0],targetOffset:s},right:{points:["cl","cr"],overflow:u,offset:[4,0],targetOffset:s},top:{points:["bc","tc"],overflow:u,offset:[0,-4],targetOffset:s},bottom:{points:["tc","bc"],overflow:u,offset:[0,4],targetOffset:s},topLeft:{points:["bl","tl"],overflow:u,offset:[0,-4],targetOffset:s},leftTop:{points:["tr","tl"],overflow:u,offset:[-4,0],targetOffset:s},topRight:{points:["br","tr"],overflow:u,offset:[0,-4],targetOffset:s},rightTop:{points:["tl","tr"],overflow:u,offset:[4,0],targetOffset:s},bottomRight:{points:["tr","br"],overflow:u,offset:[0,4],targetOffset:s},rightBottom:{points:["bl","br"],overflow:u,offset:[4,0],targetOffset:s},bottomLeft:{points:["tl","bl"],overflow:u,offset:[0,4],targetOffset:s},leftBottom:{points:["br","bl"],overflow:u,offset:[-4,0],targetOffset:s}},d=function(e){var t=e.overlay,n=e.prefixCls,r=e.id,o=e.overlayInnerStyle;return c.createElement("div",{className:"".concat(n,"-inner"),id:r,role:"tooltip",style:o},"function"==typeof t?t():t)},p=function(e,t){var n=e.overlayClassName,u=e.trigger,s=void 0===u?["hover"]:u,p=e.mouseEnterDelay,h=void 0===p?0:p,m=e.mouseLeaveDelay,v=void 0===m?.1:m,y=e.overlayStyle,_=e.prefixCls,b=void 0===_?"rc-tooltip":_,g=e.children,M=e.onVisibleChange,w=e.afterVisibleChange,O=e.transitionName,k=e.animation,L=e.motion,x=e.placement,z=void 0===x?"right":x,S=e.align,C=void 0===S?{}:S,j=e.destroyTooltipOnHide,E=void 0!==j&&j,T=e.defaultVisible,P=e.getTooltipContainer,H=e.overlayInnerStyle,D=Object(i.a)(e,["overlayClassName","trigger","mouseEnterDelay","mouseLeaveDelay","overlayStyle","prefixCls","children","onVisibleChange","afterVisibleChange","transitionName","animation","motion","placement","align","destroyTooltipOnHide","defaultVisible","getTooltipContainer","overlayInnerStyle"]),Y=Object(c.useRef)(null);Object(c.useImperativeHandle)(t,(function(){return Y.current}));var V=Object(a.a)({},D);"visible"in e&&(V.popupVisible=e.visible);var N=!1,F=!1;if("boolean"==typeof E)N=E;else if(E&&"object"===Object(o.a)(E)){var A=E.keepParent;N=!0===A,F=!1===A}return c.createElement(l.a,Object(r.a)({popupClassName:n,prefixCls:b,popup:function(){var t=e.arrowContent,n=void 0===t?null:t,r=e.overlay,o=e.id;return[c.createElement("div",{className:"".concat(b,"-arrow"),key:"arrow"},n),c.createElement(d,{key:"content",prefixCls:b,id:o,overlay:r,overlayInnerStyle:H})]},action:s,builtinPlacements:f,popupPlacement:z,ref:Y,popupAlign:C,getPopupContainer:P,onPopupVisibleChange:M,afterPopupVisibleChange:w,popupTransitionName:O,popupAnimation:k,popupMotion:L,defaultPopupVisible:T,destroyPopupOnHide:N,autoDestroy:F,mouseLeaveDelay:v,popupStyle:y,mouseEnterDelay:h},V),g)},h=Object(c.forwardRef)(p);t.default=h},function(e,t,n){"use strict";n.r(t);var r=n(6),o=n(9),a=n(15),i=n(0),c=n(71),l=n(2),u=n.n(l),s={adjustX:1,adjustY:1},f=[0,0],d={topLeft:{points:["bl","tl"],overflow:s,offset:[0,-4],targetOffset:f},topCenter:{points:["bc","tc"],overflow:s,offset:[0,-4],targetOffset:f},topRight:{points:["br","tr"],overflow:s,offset:[0,-4],targetOffset:f},bottomLeft:{points:["tl","bl"],overflow:s,offset:[0,4],targetOffset:f},bottomCenter:{points:["tc","bc"],overflow:s,offset:[0,4],targetOffset:f},bottomRight:{points:["tr","br"],overflow:s,offset:[0,4],targetOffset:f}};var p=i.forwardRef((function(e,t){var n=e.arrow,l=void 0!==n&&n,s=e.prefixCls,f=void 0===s?"rc-dropdown":s,p=e.transitionName,h=e.animation,m=e.align,v=e.placement,y=void 0===v?"bottomLeft":v,_=e.placements,b=void 0===_?d:_,g=e.getPopupContainer,M=e.showAction,w=e.hideAction,O=e.overlayClassName,k=e.overlayStyle,L=e.visible,x=e.trigger,z=void 0===x?["hover"]:x,S=Object(a.a)(e,["arrow","prefixCls","transitionName","animation","align","placement","placements","getPopupContainer","showAction","hideAction","overlayClassName","overlayStyle","visible","trigger"]),C=i.useState(),j=Object(o.a)(C,2),E=j[0],T=j[1],P="visible"in e?L:E,H=i.useRef(null);i.useImperativeHandle(t,(function(){return H.current}));var D,Y,V,N,F,A,R=function(){var t=e.overlay;return"function"==typeof t?t():t},I=function(t){var n=e.onOverlayClick,r=R().props;T(!1),n&&n(t),r.onClick&&r.onClick(t)},W=function(){var e=R(),t={prefixCls:"".concat(f,"-menu"),onClick:I};return"string"==typeof e.type&&delete t.prefixCls,i.createElement(i.Fragment,null,l&&i.createElement("div",{className:"".concat(f,"-arrow")}),i.cloneElement(e,t))},U=w;return U||-1===z.indexOf("contextMenu")||(U=["click"]),i.createElement(c.a,Object.assign({},S,{prefixCls:f,ref:H,popupClassName:u()(O,Object(r.a)({},"".concat(f,"-show-arrow"),l)),popupStyle:k,builtinPlacements:b,action:z,showAction:M,hideAction:U||[],popupPlacement:y,popupAlign:m,popupTransitionName:p,popupAnimation:h,popupVisible:P,stretch:(F=e.minOverlayWidthMatchTrigger,A=e.alignPoint,("minOverlayWidthMatchTrigger"in e?F:!A)?"minWidth":""),popup:"function"==typeof e.overlay?W:W(),onPopupVisibleChange:function(t){var n=e.onVisibleChange;T(t),"function"==typeof n&&n(t)},getPopupContainer:g}),(Y=e.children,V=Y.props?Y.props:{},N=u()(V.className,void 0!==(D=e.openClassName)?D:"".concat(f,"-open")),E&&Y?i.cloneElement(Y,{className:N}):Y))}));t.default=p},function(e,t,n){"use strict";var r=n(24),o=n(72),a=Object(r.a)((function(e){return Object(o.a)(e.length,(function(t,n){var r=Array.prototype.slice.call(arguments,0);return r[0]=n,r[1]=t,e.apply(this,r)}))}));t.a=a}]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9tb21lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5V2l0aG91dEhvbGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL2ludGVybmFsL19jdXJyeTIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9leHRlbmRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvS2V5Q29kZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFtZGEvZXMvaW50ZXJuYWwvX2lzUGxhY2Vob2xkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZ2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL2ludGVybmFsL19jdXJyeTEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL2NvbmZpZy1wcm92aWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy11dGlsL2VzL3dhcm5pbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL2xpYi9jb21wb25lbnRzL0FudGRJY29uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3V0aWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL2NvbmZpZy1wcm92aWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9pY29uL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zaGFsbG93ZXF1YWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy9ydWxlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtcmVzaXplLW9ic2VydmVyL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtcmVzaXplLW9ic2VydmVyL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1yZXNpemUtb2JzZXJ2ZXIvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1yZXNpemUtb2JzZXJ2ZXIvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1yZXNpemUtb2JzZXJ2ZXIvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1yZXNpemUtb2JzZXJ2ZXIvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2dldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1yZXNpemUtb2JzZXJ2ZXIvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXJlc2l6ZS1vYnNlcnZlci9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1yZXNpemUtb2JzZXJ2ZXIvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1yZXNpemUtb2JzZXJ2ZXIvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtcmVzaXplLW9ic2VydmVyL25vZGVfbW9kdWxlcy9yYy11dGlsL2VzL3dhcm5pbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXJlc2l6ZS1vYnNlcnZlci9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1yZXNpemUtb2JzZXJ2ZXIvbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvcmVmLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1yZXNpemUtb2JzZXJ2ZXIvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXJlc2l6ZS1vYnNlcnZlci9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXJlc2l6ZS1vYnNlcnZlci9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy9Eb20vZmluZERPTU5vZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXJlc2l6ZS1vYnNlcnZlci9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy9DaGlsZHJlbi90b0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvcmVmLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvRG9tL2FkZEV2ZW50TGlzdGVuZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy9yYWYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RTcHJlYWQyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLW1vdGlvbi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLW1vdGlvbi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1tb3Rpb24vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLW1vdGlvbi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRoSG9sZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLW1vdGlvbi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLW1vdGlvbi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLW1vdGlvbi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vbm9uSXRlcmFibGVSZXN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1tb3Rpb24vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL25vZGVfbW9kdWxlcy9yYy11dGlsL2VzL3JlZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL25vZGVfbW9kdWxlcy9yYy11dGlsL2VzL0RvbS9jYW5Vc2VEb20uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLW1vdGlvbi9lcy91dGlsL21vdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL2VzL2hvb2tzL3VzZVN0YXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1tb3Rpb24vZXMvaG9va3MvdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL25vZGVfbW9kdWxlcy9yYy11dGlsL2VzL3JhZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL2VzL2hvb2tzL3VzZU5leHRGcmFtZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL2VzL2hvb2tzL3VzZVN0ZXBRdWV1ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL2VzL2ludGVyZmFjZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL2VzL2hvb2tzL3VzZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL2VzL2hvb2tzL3VzZURvbU1vdGlvbkV2ZW50cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9nZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1tb3Rpb24vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLW1vdGlvbi9lcy9Eb21XcmFwcGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1tb3Rpb24vZXMvQ1NTTW90aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1tb3Rpb24vbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvRG9tL2ZpbmRET01Ob2RlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1tb3Rpb24vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLW1vdGlvbi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLW1vdGlvbi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL2VzL3V0aWwvZGlmZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL2VzL0NTU01vdGlvbkxpc3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLW1vdGlvbi9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdGFibGUvbGliL2NvbnRleHQvVGFibGVDb250ZXh0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9idXR0b24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2ltbWVyLXBlYXN5L2Rpc3QvaW1tZXIubW9kdWxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9fdXRpbC93YXJuaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlU3VwZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy9DaGlsZHJlbi90b0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jc3MtYW5pbWF0aW9uL2VzL0V2ZW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jc3MtYW5pbWF0aW9uL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXV0aWwvbGliL3dhcm5pbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvX3V0aWwvZGV2V2FybmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9fdXRpbC9yZWFjdE5vZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL2ludGVybmFsL19hcml0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy11dGlsL2VzL0RvbS9jb250YWlucy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy11dGlsL2VzL1BvcnRhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10cmlnZ2VyL2VzL3V0aWxzL2FsaWduVXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10cmlnZ2VyL2VzL3V0aWxzL2xlZ2FjeVV0aWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdHJpZ2dlci9lcy9Qb3B1cC9NYXNrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kb20tYWxpZ24vZXMvcHJvcGVydHlVdGlscy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZG9tLWFsaWduL2VzL3V0aWxzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kb20tYWxpZ24vZXMvZ2V0T2Zmc2V0UGFyZW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kb20tYWxpZ24vZXMvZ2V0VmlzaWJsZVJlY3RGb3JFbGVtZW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kb20tYWxpZ24vZXMvaXNBbmNlc3RvckZpeGVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kb20tYWxpZ24vZXMvYWRqdXN0Rm9yVmlld3BvcnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RvbS1hbGlnbi9lcy9nZXRSZWdpb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RvbS1hbGlnbi9lcy9nZXRBbGlnbk9mZnNldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZG9tLWFsaWduL2VzL2dldEVsRnV0dXJlUG9zLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kb20tYWxpZ24vZXMvYWxpZ24vYWxpZ24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RvbS1hbGlnbi9lcy9hbGlnbi9hbGlnbkVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RvbS1hbGlnbi9lcy9hbGlnbi9hbGlnblBvaW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLWFsaWduL2VzL3V0aWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtYWxpZ24vZXMvQWxpZ24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtYWxpZ24vZXMvaG9va3MvdXNlQnVmZmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLWFsaWduL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FzeW5jVG9HZW5lcmF0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdHJpZ2dlci9lcy9Qb3B1cC91c2VWaXNpYmxlU3RhdHVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRyaWdnZXIvZXMvUG9wdXAvUG9wdXBJbm5lci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10cmlnZ2VyL2VzL1BvcHVwL3VzZVN0cmV0Y2hTdHlsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10cmlnZ2VyL2VzL1BvcHVwL01vYmlsZVBvcHVwSW5uZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdHJpZ2dlci9lcy9Qb3B1cC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10cmlnZ2VyL2VzL2NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdHJpZ2dlci9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy11dGlsL2VzL0RvbS9maW5kRE9NTm9kZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFtZGEvZXMvY3VycnlOLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy9pbnRlcm5hbC9fY3VycnlOLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy1yZWFjdC9lcy91dGlscy5qcyIsIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXV0aWwvbGliL29taXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL29taXQuanMvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL191dGlsL3R5cGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWxpZmVjeWNsZXMtY29tcGF0L3JlYWN0LWxpZmVjeWNsZXMtY29tcGF0LmVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZXNpemUtb2JzZXJ2ZXItcG9seWZpbGwvZGlzdC9SZXNpemVPYnNlcnZlci5lcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9vYmplY3QtYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZmFpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlcmF0b3JzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2xpYi91dGlscy92YWx1ZVV0aWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdExpa2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvY29uZmlnLXByb3ZpZGVyL1NpemVDb250ZXh0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9pbnB1dC9JbnB1dC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1hbmltYXRlL2VzL0NoaWxkcmVuVXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWFuaW1hdGUvZXMvdXRpbC9hbmltYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1hbmltYXRlL2VzL0FuaW1hdGVDaGlsZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtYW5pbWF0ZS9lcy9BbmltYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191aWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtcGllLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9sb2NhbGUtcHJvdmlkZXIvTG9jYWxlUmVjZWl2ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdXRpbC9saWIvcmVmLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2xpYi9DZWxsL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9fdXRpbC90eXBlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fTGlzdENhY2hlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNzb2NJbmRleE9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlQ3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TWFwRGF0YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlQ3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc29jSW5kZXhPZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXBEYXRhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvc3JjL0FqYXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5V2l0aEhvbGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlUmVzdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy11dGlsL2VzL0RvbS9pc1Zpc2libGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXJlc2l6ZS1vYnNlcnZlci9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy9Eb20vY2FuVXNlRG9tLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvaXNNb2JpbGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3R4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVmaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2hhcmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1idWcta2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLWV4dC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL21vZHVsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvbW9kYWwvbG9jYWxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9jcmVhdGUtcmVhY3QtY29udGV4dC9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dhcm5pbmcvd2FybmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2xpYi91dGlscy9sZWdhY3lVdGlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2xpYi9jb250ZXh0L0JvZHlDb250ZXh0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXV0aWwvbGliL0NoaWxkcmVuL3RvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19TeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMvbGliL2NvbXBvbmVudHMvQ29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9sb2NhbGUvZGVmYXVsdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9sb2NhbGUtcHJvdmlkZXIvTG9jYWxlUmVjZWl2ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvY29uZmlnLXByb3ZpZGVyL2NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMvTG9hZGluZ091dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL2xpYi91dGlscy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9SaWdodE91dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL191dGlsL21vdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10cmVlL2xpYi91dGlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXV0aWwvbGliL2hvb2tzL3VzZU1lcmdlZFN0YXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL21lbnUvTWVudUNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvcmFkaW8vcmFkaW8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvcmFkaW8vY29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi90YWJsZS91dGlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fTWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9wcm9ncmVzcy91dGlscy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jYXN0UGF0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3ltYm9sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXRUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU3ltYm9sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3Jvb3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdExpa2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9lcS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL190b0tleS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZm9ybS9saWIvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbWluaS1zdG9yZS9lc20vUHJvdmlkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbWluaS1zdG9yZS9lc20vY29ubmVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9taW5pLXN0b3JlL2VzbS9jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy9vbWl0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLW1lbnUvZXMvdXRpbHMvaXNNb2JpbGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtbWVudS9lcy91dGlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLW1lbnUvZXMvcGxhY2VtZW50cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1tZW51L2VzL1N1Yk1lbnUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtbWVudS9lcy9ET01XcmFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLW1lbnUvZXMvU3ViUG9wdXBNZW51LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLW1lbnUvZXMvdXRpbHMvbGVnYWN5VXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1tZW51L2VzL01lbnUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtbWVudS9lcy9NZW51SXRlbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1tZW51L2VzL01lbnVJdGVtR3JvdXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtbWVudS9lcy9EaXZpZGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLW1lbnUvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvZm9ybS9Gb3JtSXRlbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21lbW9pemVyaWZpYy9tZW1vaXplcmlmaWMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3N5bWJvbC1vYnNlcnZhYmxlL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL2Rpc3QvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MuY2pzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9jb2xsYXBzZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faWU4LWRvbS1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb21wb25lbnQtaW5kZXhvZi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtdXRpbC9saWIvd2FybmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvbG9jYWxlL2RlZmF1bHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL2RhdGUtcGlja2VyL2xvY2FsZS9lbl9VUy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvdGltZS1waWNrZXIvbG9jYWxlL2VuX1VTLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FmLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWR6LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWt3LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWx5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLW1hLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXNhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXRuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2F6LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N2LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWF0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2R2LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWF1LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWNhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWdiLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWllLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLW56LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLXNnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLWRvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLXVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V1LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9meS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tZGV2YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tbGF0bi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ndS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oaS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9odS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oeS1hbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC1jaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qdi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ray5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rdS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9reS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sYi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9taS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy1teS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9teS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uYi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC1iZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9vYy1sbmMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGEtaW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQtYnIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcm8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcnUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2kuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3ItY3lybC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGsuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGwtcGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGxoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLWxhdG4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWctY24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWsuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXouanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXotbGF0bi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS92aS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS94LXBzZXVkby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS95by5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1jbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1oay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1tby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC10dy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlMaWtlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlUmVzdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy11dGlsL2xpYi9nZXRTY3JvbGxCYXJTaXplLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2xpYi9IZWFkZXIvSGVhZGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2xpYi91dGlscy9maXhVdGlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2xpYi9Db2xHcm91cC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9saWIvQm9keS9FeHBhbmRlZFJvdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9saWIvY29udGV4dC9SZXNpemVDb250ZXh0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2xpYi9ob29rcy91c2VDb2x1bW5zLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2xpYi9ob29rcy91c2VGcmFtZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy11dGlsL2xpYi9Eb20vY2FuVXNlRG9tLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZnJlZUdsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1wYWdpbmF0aW9uL2xpYi9sb2NhbGUvZW5fVVMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvZGF0ZS1waWNrZXIvbG9jYWxlL2VuX1VTLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL3RpbWUtcGlja2VyL2xvY2FsZS9lbl9VUy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9sb2NhbGUtcHJvdmlkZXIvY29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9lbXB0eS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9tZXNzYWdlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL2xpYi9jb21wb25lbnRzL0ljb25CYXNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXV0aWwvbGliL0RvbS9keW5hbWljQ1NTLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL0Nsb3NlQ2lyY2xlRmlsbGVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLW5vdGlmaWNhdGlvbi9saWIvdXNlTm90aWZpY2F0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL0Nsb3NlT3V0bGluZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMvTGVmdE91dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL3NlbGVjdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9Eb3duT3V0bGluZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvZ3JpZC9ob29rcy91c2VCcmVha3BvaW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRyZWUvbGliL3V0aWxzL3RyZWVVdGlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL2NoZWNrYm94L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL2NoZWNrYm94L0NoZWNrYm94LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLWNoZWNrYm94L2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL2NoZWNrYm94L0dyb3VwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL2Ryb3Bkb3duL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL2J1dHRvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy11dGlsL2xpYi9yYWYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvbWVudS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi90b29sdGlwL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL2xheW91dC9TaWRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9yYWRpby9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvZXEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL190b1NvdXJjZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX01hcENhY2hlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxBcnJheXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQnVmZmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1R5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTGVuZ3RoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9pbnB1dC9DbGVhcmFibGVMYWJlbGVkSW5wdXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL191dGlsL3JhZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFmL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9ncmlkL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9ncmlkL3Jvdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvZ3JpZC9Sb3dDb250ZXh0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbnF1aXJlLmpzL3NyYy9VdGlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9ncmlkL2NvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvbW9kYWwvTW9kYWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZm9ybS9saWIvY3JlYXRlQmFzZUZvcm0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy9ydWxlL3JlcXVpcmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvc2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1mb3JtL2xpYi9jcmVhdGVGb3JtRmllbGQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL2Zvcm0vY29uc3RhbnRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9mb3JtL2NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy9nZXRTY3JvbGxCYXJTaXplLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2VzL3N1Z2FyL0NvbHVtbkdyb3VwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2VzL3N1Z2FyL0NvbHVtbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9lcy91dGlscy92YWx1ZVV0aWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdGFibGUvZXMvQ2VsbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9lcy9jb250ZXh0L1RhYmxlQ29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9lcy91dGlscy9maXhVdGlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2VzL0hlYWRlci9IZWFkZXJSb3cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdGFibGUvZXMvSGVhZGVyL0hlYWRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9lcy91dGlscy9sZWdhY3lVdGlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2VzL0NvbEdyb3VwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2VzL0hlYWRlci9GaXhlZEhlYWRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9lcy9jb250ZXh0L0JvZHlDb250ZXh0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2VzL0JvZHkvRXhwYW5kZWRSb3cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdGFibGUvZXMvQm9keS9Cb2R5Um93LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2VzL2NvbnRleHQvUmVzaXplQ29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9lcy9Cb2R5L01lYXN1cmVDZWxsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2VzL0JvZHkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdGFibGUvZXMvaG9va3MvdXNlQ29sdW1ucy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9lcy9ob29rcy91c2VGcmFtZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9lcy9ob29rcy91c2VTdGlja3lPZmZzZXRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2VzL1BhbmVsL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2VzL0Zvb3Rlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9lcy9Gb290ZXIvQ2VsbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9lcy9Gb290ZXIvUm93LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2VzL3V0aWxzL2V4cGFuZFV0aWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy9Eb20vY3NzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2VzL3N0aWNreVNjcm9sbEJhci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9lcy9ob29rcy91c2VTdGlja3kuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdGFibGUvZXMvVGFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdGFibGUvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvdW5zYWZlTGlmZWN5Y2xlc1BvbHlmaWxsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9yYy1hbmltYXRlL2VzL0NoaWxkcmVuVXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL3JjLWFuaW1hdGUvZXMvdXRpbC9hbmltYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9yYy1hbmltYXRlL2VzL0FuaW1hdGVDaGlsZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9ub2RlX21vZHVsZXMvcmMtYW5pbWF0ZS9lcy9BbmltYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1jb2xsYXBzZS9lcy9QYW5lbENvbnRlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWNvbGxhcHNlL2VzL1BhbmVsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1jb2xsYXBzZS9lcy9vcGVuQW5pbWF0aW9uRmFjdG9yeS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtY29sbGFwc2UvZXMvQ29sbGFwc2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWNvbGxhcHNlL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLW5vdGlmaWNhdGlvbi9lcy9Ob3RpY2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtbm90aWZpY2F0aW9uL2VzL05vdGlmaWNhdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1ub3RpZmljYXRpb24vZXMvdXNlTm90aWZpY2F0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLW5vdGlmaWNhdGlvbi9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMtcmVhY3QvZXMvY29tcG9uZW50cy9JY29uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9xdWVyeS1zdHJpbmcvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RlYm91bmNlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zeW1ib2wtb2JzZXJ2YWJsZS9lcy9wb255ZmlsbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc3ByaW50Zi1qcy9zcmMvc3ByaW50Zi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvYWxlcnQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvbXBvbmVudC1jbGFzc2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9jb2xvcnMvbGliL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL3RhYmxlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1yZXNpemUtb2JzZXJ2ZXIvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWZpZWxkLWZvcm0vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9kaXN0LXdlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtbW90aW9uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvaW5wdXQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL3Jlc3VsdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvcHJvZ3Jlc3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL3Jvdy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvY29sL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9tb2RhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvZm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZmV0Y2gtZGVkdXBlL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmpvcm5hZ2gvdXNlLWZldGNoL2VzL0ZldGNoUHJvdmlkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Biam9ybmFnaC91c2UtZmV0Y2gvZXMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Biam9ybmFnaC91c2UtZmV0Y2gvZXMvdXNlRmV0Y2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3NjaGVkdWxlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3N0cmljdC11cmktZW5jb2RlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kZWNvZGUtdXJpLWNvbXBvbmVudC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vaGFybW9ueS1tb2R1bGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvYXNzaWduLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWFzc2lnbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLXN0ZXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9zeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19tZXRhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi1leHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zeW1ib2wuYXN5bmMtaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9zZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L3NldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC1wcm90by5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9saWIvZGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vY29sb3JzL2xpYi9nZW5lcmF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdGlueWNvbG9yMi90aW55Y29sb3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL2ljb24vSWNvbkZvbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL2ljb24vdXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL2xvY2FsZS1wcm92aWRlci9kZWZhdWx0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1wYWdpbmF0aW9uL2xpYi9sb2NhbGUvZW5fVVMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWNhbGVuZGFyL2xpYi9sb2NhbGUvZW5fVVMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL2NhbGVuZGFyL2xvY2FsZS9lbl9VUy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvaWNvbi90d29Ub25lUHJpbWFyeUNvbG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9sb2NhbGUtcHJvdmlkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUgc3luYyBeXFwuXFwvLiokIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9fdXRpbC9pbnRlcm9wRGVmYXVsdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvY29uZmlnLXByb3ZpZGVyL2NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2NyZWF0ZS1yZWFjdC1jb250ZXh0L2xpYi9pbXBsZW1lbnRhdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ3VkL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9jb25maWctcHJvdmlkZXIvcmVuZGVyRW1wdHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL2VtcHR5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9lbXB0eS9lbXB0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvZW1wdHkvc2ltcGxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9fdXRpbC9nZXREYXRhT3JBcmlhUHJvcHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvdGFibGUvVGFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtcmVzaXplLW9ic2VydmVyL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmVhY3QtaXMvY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2xpYi9UYWJsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVTcHJlYWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdXRpbC9saWIvRG9tL2lzVmlzaWJsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9saWIvc3VnYXIvQ29sdW1uR3JvdXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdGFibGUvbGliL3N1Z2FyL0NvbHVtbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9saWIvSGVhZGVyL0ZpeGVkSGVhZGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9saWIvSGVhZGVyL0hlYWRlclJvdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9saWIvQm9keS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9saWIvQm9keS9Cb2R5Um93LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2xpYi9Cb2R5L01lYXN1cmVDZWxsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2xpYi9ob29rcy91c2VTdGlja3lPZmZzZXRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2xpYi9QYW5lbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9saWIvRm9vdGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRhYmxlL2xpYi9Gb290ZXIvQ2VsbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9saWIvRm9vdGVyL1Jvdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9saWIvdXRpbHMvZXhwYW5kVXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10YWJsZS9saWIvc3RpY2t5U2Nyb2xsQmFyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXV0aWwvbGliL0RvbS9hZGRFdmVudExpc3RlbmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXV0aWwvbGliL0RvbS9jc3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdGFibGUvbGliL2hvb2tzL3VzZVN0aWNreS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9zcGluL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL2RlYm91bmNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9ub3cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL3RvTnVtYmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRyaW0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL190cmltbWVkRW5kSW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3ltYm9sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0UmF3VGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fb2JqZWN0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWZpZWxkLWZvcm0vbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9ub2RlX21vZHVsZXMvcmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXV0aWwvbGliL2hvb2tzL3VzZU1lbW8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvbG9jYWxlLXByb3ZpZGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL21vZGFsL2xvY2FsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtcGlja2VyL2xpYi9sb2NhbGUvZW5fVVMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvY2FsZW5kYXIvbG9jYWxlL2VuX1VTLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL2xvY2FsZS1wcm92aWRlci9kZWZhdWx0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL2NvbmZpZy1wcm92aWRlci9yZW5kZXJFbXB0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9lbXB0eS9lbXB0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9lbXB0eS9zaW1wbGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLW1vdGlvbi9ub2RlX21vZHVsZXMvcmVhY3QtaXMvY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL2xpYi9pY29ucy9Mb2FkaW5nT3V0bGluZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zLXN2Zy9saWIvYXNuL0xvYWRpbmdPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9saWIvY29tcG9uZW50cy90d29Ub25lUHJpbWFyeUNvbG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL0V4Y2xhbWF0aW9uQ2lyY2xlRmlsbGVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL2xpYi9pY29ucy9FeGNsYW1hdGlvbkNpcmNsZUZpbGxlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vRXhjbGFtYXRpb25DaXJjbGVGaWxsZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMvbGliL2ljb25zL0Nsb3NlQ2lyY2xlRmlsbGVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy1zdmcvbGliL2Fzbi9DbG9zZUNpcmNsZUZpbGxlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9DaGVja0NpcmNsZUZpbGxlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9saWIvaWNvbnMvQ2hlY2tDaXJjbGVGaWxsZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zLXN2Zy9saWIvYXNuL0NoZWNrQ2lyY2xlRmlsbGVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL0luZm9DaXJjbGVGaWxsZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMvbGliL2ljb25zL0luZm9DaXJjbGVGaWxsZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zLXN2Zy9saWIvYXNuL0luZm9DaXJjbGVGaWxsZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvbWVzc2FnZS9ob29rcy91c2VNZXNzYWdlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLW5vdGlmaWNhdGlvbi9saWIvTm90aWNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL25vdGlmaWNhdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9saWIvaWNvbnMvQ2xvc2VPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vQ2xvc2VPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9DaGVja0NpcmNsZU91dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL2xpYi9pY29ucy9DaGVja0NpcmNsZU91dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy1zdmcvbGliL2Fzbi9DaGVja0NpcmNsZU91dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL0Nsb3NlQ2lyY2xlT3V0bGluZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMvbGliL2ljb25zL0Nsb3NlQ2lyY2xlT3V0bGluZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zLXN2Zy9saWIvYXNuL0Nsb3NlQ2lyY2xlT3V0bGluZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMvRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9saWIvaWNvbnMvRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9JbmZvQ2lyY2xlT3V0bGluZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMvbGliL2ljb25zL0luZm9DaXJjbGVPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vSW5mb0NpcmNsZU91dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL25vdGlmaWNhdGlvbi9ob29rcy91c2VOb3RpZmljYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvcGFnaW5hdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9wYWdpbmF0aW9uL1BhZ2luYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMvbGliL2ljb25zL0xlZnRPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vTGVmdE91dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL2xpYi9pY29ucy9SaWdodE91dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy1zdmcvbGliL2Fzbi9SaWdodE91dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL0RvdWJsZUxlZnRPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9saWIvaWNvbnMvRG91YmxlTGVmdE91dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy1zdmcvbGliL2Fzbi9Eb3VibGVMZWZ0T3V0bGluZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMvRG91YmxlUmlnaHRPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9saWIvaWNvbnMvRG91YmxlUmlnaHRPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vRG91YmxlUmlnaHRPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9wYWdpbmF0aW9uL01pbmlTZWxlY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvc2VsZWN0L3V0aWxzL2ljb25VdGlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL2xpYi9pY29ucy9Eb3duT3V0bGluZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zLXN2Zy9saWIvYXNuL0Rvd25PdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9DaGVja091dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL2xpYi9pY29ucy9DaGVja091dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy1zdmcvbGliL2Fzbi9DaGVja091dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL1NlYXJjaE91dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL2xpYi9pY29ucy9TZWFyY2hPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vU2VhcmNoT3V0bGluZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvX3V0aWwvcmVzcG9uc2l2ZU9ic2VydmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvdGFibGUvaG9va3MvdXNlUGFnaW5hdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi90YWJsZS9ob29rcy91c2VMYXp5S1ZNYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvdGFibGUvaG9va3MvdXNlU2VsZWN0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10cmVlL2xpYi9UcmVlTm9kZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10cmVlL2xpYi9jb250ZXh0VHlwZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdHJlZS9saWIvSW5kZW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRyZWUvbGliL3V0aWxzL2NvbmR1Y3RVdGlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLWJ1dHRvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9FbGxpcHNpc091dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL2xpYi9pY29ucy9FbGxpcHNpc091dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy1zdmcvbGliL2Fzbi9FbGxpcHNpc091dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL2J1dHRvbi9idXR0b24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvYnV0dG9uL2J1dHRvbi1ncm91cC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9fdXRpbC91bnJlYWNoYWJsZUV4Y2VwdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9fdXRpbC93YXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL191dGlsL3JhZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9idXR0b24vTG9hZGluZ0ljb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvbWVudS9TdWJNZW51LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL21lbnUvTWVudUl0ZW0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvdG9vbHRpcC9wbGFjZW1lbnRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRvb2x0aXAvbGliL3BsYWNlbWVudHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvX3V0aWwvY29sb3JzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL0JhcnNPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9saWIvaWNvbnMvQmFyc091dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy1zdmcvbGliL2Fzbi9CYXJzT3V0bGluZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvbGF5b3V0L2xheW91dC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9fdXRpbC9pc051bWVyaWMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvcmFkaW8vZ3JvdXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvcmFkaW8vcmFkaW9CdXR0b24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvdGFibGUvaG9va3MvdXNlU29ydGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL0NhcmV0RG93bk91dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL2xpYi9pY29ucy9DYXJldERvd25PdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vQ2FyZXREb3duT3V0bGluZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMvQ2FyZXRVcE91dGxpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zL2xpYi9pY29ucy9DYXJldFVwT3V0bGluZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2ljb25zLXN2Zy9saWIvYXNuL0NhcmV0VXBPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi90YWJsZS9ob29rcy91c2VGaWx0ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvdGFibGUvaG9va3MvdXNlRmlsdGVyL0ZpbHRlckRyb3Bkb3duLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0VxdWFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbERlZXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19TdGFjay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZUNsZWFyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlRGVsZXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlR2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlSGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tDbGVhci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrRGVsZXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tHZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0hhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNNYXNrZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3JlSnNEYXRhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0VmFsdWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUNsZWFyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fSGFzaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hDbGVhci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hEZWxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoR2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEhhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZURlbGV0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzS2V5YWJsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlR2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZVNldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1NldENhY2hlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0Q2FjaGVBZGQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUhhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5U29tZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NhY2hlSGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxCeVRhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1VpbnQ4QXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsT2JqZWN0cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldEFsbEtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0QWxsS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5UHVzaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUZpbHRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlMaWtlS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUaW1lcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcmd1bWVudHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcmd1bWVudHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJGYWxzZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNUeXBlZEFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVVuYXJ5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbm9kZVV0aWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzUHJvdG90eXBlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9sb2Rhc2gvX292ZXJBcmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0VGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fRGF0YVZpZXcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvbG9kYXNoL19Qcm9taXNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9AYW50LWRlc2lnbi9pY29ucy9GaWx0ZXJGaWxsZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMvbGliL2ljb25zL0ZpbHRlckZpbGxlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vRmlsdGVyRmlsbGVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL3RhYmxlL2hvb2tzL3VzZUZpbHRlci9GaWx0ZXJXcmFwcGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL191dGlsL2hvb2tzL3VzZVN5bmNTdGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9fdXRpbC9ob29rcy91c2VGb3JjZVVwZGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi90YWJsZS9ob29rcy91c2VUaXRsZUNvbHVtbnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvdGFibGUvRXhwYW5kSWNvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9fdXRpbC9zY3JvbGxUby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9fdXRpbC9nZXRTY3JvbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvX3V0aWwvZWFzaW5ncy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9sb2NhbGUvZW5fVVMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvYW50ZC9saWIvdGFibGUvQ29sdW1uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL2FudGQvbGliL3RhYmxlL0NvbHVtbkdyb3VwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9pbnB1dC9Hcm91cC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvaW5wdXQvU2VhcmNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9pcy1tb2JpbGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL2J1dHRvbi9idXR0b24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL191dGlsL3dhdmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Nzcy1hbmltYXRpb24vbGliL0V2ZW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wZXJmb3JtYW5jZS1ub3cvbGliL3BlcmZvcm1hbmNlLW5vdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvYnV0dG9uL2J1dHRvbi1ncm91cC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvaW5wdXQvVGV4dEFyZWEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL2lucHV0L1Jlc2l6YWJsZVRleHRBcmVhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9yYy1yZXNpemUtb2JzZXJ2ZXIvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXV0aWwvbGliL0RvbS9maW5kRE9NTm9kZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtdXRpbC9saWIvQ2hpbGRyZW4vdG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtdXRpbC9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXV0aWwvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtdXRpbC9saWIvcmVmLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL25vZGVfbW9kdWxlcy9yYy1yZXNpemUtb2JzZXJ2ZXIvZXMvdXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvaW5wdXQvY2FsY3VsYXRlTm9kZUhlaWdodC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvaW5wdXQvUGFzc3dvcmQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL3Jlc3VsdC9ub0ZvdW5kLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9yZXN1bHQvc2VydmVyRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL3Jlc3VsdC91bmF1dGhvcml6ZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL3Byb2dyZXNzL3Byb2dyZXNzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9wcm9ncmVzcy9MaW5lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9wcm9ncmVzcy9DaXJjbGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL191dGlsL3Jlc3BvbnNpdmVPYnNlcnZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbnF1aXJlLmpzL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZW5xdWlyZS5qcy9zcmMvTWVkaWFRdWVyeURpc3BhdGNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbnF1aXJlLmpzL3NyYy9NZWRpYVF1ZXJ5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbnF1aXJlLmpzL3NyYy9RdWVyeUhhbmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXV0aWwvbGliL0RvbS9hZGRFdmVudExpc3RlbmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hZGQtZG9tLWV2ZW50LWxpc3RlbmVyL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYWRkLWRvbS1ldmVudC1saXN0ZW5lci9saWIvRXZlbnRPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FkZC1kb20tZXZlbnQtbGlzdGVuZXIvbGliL0V2ZW50QmFzZU9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvbW9kYWwvY29uZmlybS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvbW9kYWwvQWN0aW9uQnV0dG9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hbnRkL2xpYi9mb3JtL0Zvcm0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWZvcm0vbGliL2NyZWF0ZURPTUZvcm0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RvbS1zY3JvbGwtaW50by12aWV3L2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZG9tLXNjcm9sbC1pbnRvLXZpZXcvbGliL2RvbS1zY3JvbGwtaW50by12aWV3LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kb20tc2Nyb2xsLWludG8tdmlldy9saWIvdXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2hhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1BhdGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNLZXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZnJlZUdsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRSYXdUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb2JqZWN0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nVG9QYXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21lbW9pemVDYXBwZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9tZW1vaXplLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX01hcENhY2hlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fSGFzaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2tlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3JlSnNEYXRhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvU291cmNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFZhbHVlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hEZWxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEdldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoSGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fTGlzdENhY2hlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZUNsZWFyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZURlbGV0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVHZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlSGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZVNldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVEZWxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNLZXlhYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlR2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlSGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRvU3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5TWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcmd1bWVudHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzQXJndW1lbnRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNMZW5ndGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2FycmF5L2Zyb20uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9hcnJheS9mcm9tLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuYXJyYXkuZnJvbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jcmVhdGUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRldGVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3JlYXRlLXJlYWN0LWNsYXNzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcmVhdGUtcmVhY3QtY2xhc3MvZmFjdG9yeS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZmJqcy9saWIvZW1wdHlPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2ZianMvbGliL2ludmFyaWFudC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtdXRpbC9saWIvdW5zYWZlTGlmZWN5Y2xlc1BvbHlmaWxsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy92YWxpZGF0b3IvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy92YWxpZGF0b3Ivc3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvcnVsZS93aGl0ZXNwYWNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvcnVsZS90eXBlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvcnVsZS9yYW5nZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3J1bGUvZW51bS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3J1bGUvcGF0dGVybi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9tZXRob2QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy92YWxpZGF0b3IvbnVtYmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvdmFsaWRhdG9yL2Jvb2xlYW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy92YWxpZGF0b3IvcmVnZXhwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvdmFsaWRhdG9yL2ludGVnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy92YWxpZGF0b3IvZmxvYXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy92YWxpZGF0b3IvYXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy92YWxpZGF0b3Ivb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvdmFsaWRhdG9yL2VudW0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy92YWxpZGF0b3IvcGF0dGVybi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9kYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvdmFsaWRhdG9yL3JlcXVpcmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvdmFsaWRhdG9yL3R5cGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy9tZXNzYWdlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2dldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNzaWduVmFsdWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUFzc2lnblZhbHVlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1mb3JtL2xpYi9jcmVhdGVGaWVsZHNTdG9yZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZm9ybS9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MvZGlzdC9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy5janMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZm9ybS9saWIvY3JlYXRlRm9ybS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvY29sbGFwc2UvQ29sbGFwc2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL2NvbGxhcHNlL0NvbGxhcHNlUGFuZWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FudGQvbGliL191dGlsL29wZW5BbmltYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Vhc3ktcGVhc3kvbm9kZV9tb2R1bGVzL3JlZHV4L2VzL3JlZHV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWR1eC10aHVuay9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWFzeS1wZWFzeS9ub2RlX21vZHVsZXMvaXMtcGxhaW4tb2JqZWN0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lYXN5LXBlYXN5L25vZGVfbW9kdWxlcy9pc29iamVjdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWFzeS1wZWFzeS9kaXN0L2Vhc3ktcGVhc3kuZXNtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy9pbnRlcm5hbC9faXNBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFtZGEvZXMvaW50ZXJuYWwvX2lzVHJhbnNmb3JtZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL2ludGVybmFsL19kaXNwYXRjaGFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL2ludGVybmFsL19pc1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFtZGEvZXMvaW50ZXJuYWwvX2lzQXJyYXlMaWtlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy9pbnRlcm5hbC9feHdyYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL2JpbmQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL2ludGVybmFsL19yZWR1Y2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL2ludGVybmFsL194ZkJhc2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL2ludGVybmFsL194ZmlsdGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy9pbnRlcm5hbC9faGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy9pbnRlcm5hbC9faXNBcmd1bWVudHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL2tleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL2ZpbHRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFtZGEvZXMvaW50ZXJuYWwvX2lzT2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy9pbnRlcm5hbC9fZmlsdGVyLmpzIiwid2VicGFjazovLy8uL3NyYy9qcy9zdHJpbmdzLWNsZWFudXAvZmlsdGVycy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFtZGEvZXMvaW50ZXJuYWwvX2lzSW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFtZGEvZXMvbnRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy9wYXRocy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFtZGEvZXMvcGF0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFtZGEvZXMvcHJvcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFtZGEvZXMvaW50ZXJuYWwvX2N1cnJ5My5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFtZGEvZXMvaWZFbHNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy9pbnRlcm5hbC9fcGlwZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFtZGEvZXMvcmVkdWNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy9pbnRlcm5hbC9fY2hlY2tGb3JNZXRob2QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL3NsaWNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy90YWlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy9waXBlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy9vYmpPZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFtZGEvZXMvYWx3YXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy9vdmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy9zZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL2Fzc29jLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy9pbnRlcm5hbC9feG1hcC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaW1nL3N1Y2Nlc3Muc3ZnIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYW1kYS9lcy9tYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL2ludGVybmFsL19tYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL2xlbnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL2xlbnNQcm9wLmpzIiwid2VicGFjazovLy8uL3NyYy9qcy9zdHJpbmdzLWNsZWFudXAvbW9kZWxzL1JlbW92ZVN0cmluZ3MuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2pzL3N0cmluZ3MtY2xlYW51cC9zdG9yZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL3NyYy9pMThuLmpzIiwid2VicGFjazovLy8uL3NyYy9qcy9zdHJpbmdzLWNsZWFudXAvY29tcG9uZW50cy9FcnJvck1lc3NhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9zcmMvY29tcG9uZW50cy9hbnQvVGFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbWRhL2VzL3ZhbHVlcy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvanMvc3RyaW5ncy1jbGVhbnVwL2NvbXBvbmVudHMvQ2xlYW51cFRhYmxlLmpzIiwid2VicGFjazovLy8uL3NyYy9qcy9zdHJpbmdzLWNsZWFudXAvY29tcG9uZW50cy9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2ltZy9Nb2RhbENsb3NlSWNvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vc3JjL2pzL3N0cmluZ3MtY2xlYW51cC9jb21wb25lbnRzL0NsZWFudXBTdWNjZXNzLmpzIiwid2VicGFjazovLy8uL3NyYy9qcy9zdHJpbmdzLWNsZWFudXAvY29tcG9uZW50cy9DbGVhbnVwUHJvZ3Jlc3MuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2pzL3N0cmluZ3MtY2xlYW51cC9jb21wb25lbnRzL0NsZWFudXBNb2RhbC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvanMvc3RyaW5ncy1jbGVhbnVwL2NvbXBvbmVudHMvQ2xlYW51cEJ1dHRvbi5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvanMvc3RyaW5ncy1jbGVhbnVwL0FwcC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvanMvc3RyaW5ncy1jbGVhbnVwL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy9waWNrQXR0cnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXZpcnR1YWwtbGlzdC9lcy9GaWxsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXZpcnR1YWwtbGlzdC9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy9yYWYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXZpcnR1YWwtbGlzdC9lcy9TY3JvbGxCYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXZpcnR1YWwtbGlzdC9lcy9JdGVtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy12aXJ0dWFsLWxpc3QvZXMvdXRpbHMvQ2FjaGVNYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXZpcnR1YWwtbGlzdC9lcy9ob29rcy91c2VIZWlnaHRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy12aXJ0dWFsLWxpc3Qvbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvRG9tL2ZpbmRET01Ob2RlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy12aXJ0dWFsLWxpc3QvZXMvaG9va3MvdXNlU2Nyb2xsVG8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXZpcnR1YWwtbGlzdC9lcy9ob29rcy91c2VEaWZmSXRlbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtdmlydHVhbC1saXN0L2VzL3V0aWxzL2FsZ29yaXRobVV0aWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXZpcnR1YWwtbGlzdC9lcy91dGlscy9pc0ZpcmVmb3guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXZpcnR1YWwtbGlzdC9lcy9ob29rcy91c2VPcmlnaW5TY3JvbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXZpcnR1YWwtbGlzdC9lcy9MaXN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy12aXJ0dWFsLWxpc3QvZXMvaG9va3MvdXNlRnJhbWVXaGVlbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtdmlydHVhbC1saXN0L2VzL2hvb2tzL3VzZU1vYmlsZVRvdWNoTW92ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtdmlydHVhbC1saXN0L2VzL2hvb2tzL3VzZUNoaWxkcmVuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy12aXJ0dWFsLWxpc3QvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtc2VsZWN0L2VzL1RyYW5zQnRuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXNlbGVjdC9lcy9PcHRpb25MaXN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvaG9va3MvdXNlTWVtby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1zZWxlY3QvZXMvT3B0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXNlbGVjdC9lcy9PcHRHcm91cC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1zZWxlY3QvZXMvdXRpbHMvbGVnYWN5VXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1zZWxlY3QvZXMvdXRpbHMvY29tbW9uVXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1zZWxlY3QvZXMvdXRpbHMvdmFsdWVVdGlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy9ob29rcy91c2VNZXJnZWRTdGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtb3ZlcmZsb3cvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLW92ZXJmbG93L25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1vdmVyZmxvdy9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtb3ZlcmZsb3cvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5V2l0aEhvbGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1vdmVyZmxvdy9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLW92ZXJmbG93L25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtb3ZlcmZsb3cvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlUmVzdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtb3ZlcmZsb3cvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1vdmVyZmxvdy9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtb3ZlcmZsb3cvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1vdmVyZmxvdy9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtb3ZlcmZsb3cvZXMvSXRlbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtb3ZlcmZsb3cvbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvcmFmLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1vdmVyZmxvdy9lcy9PdmVyZmxvdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtb3ZlcmZsb3cvZXMvaG9va3MvdXNlQmF0Y2hGcmFtZVN0YXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1vdmVyZmxvdy9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1zZWxlY3QvZXMvU2VsZWN0b3IvSW5wdXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtc2VsZWN0L2VzL2hvb2tzL3VzZUxheW91dEVmZmVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1zZWxlY3QvZXMvU2VsZWN0b3IvTXVsdGlwbGVTZWxlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1zZWxlY3QvZXMvU2VsZWN0b3IvU2luZ2xlU2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtc2VsZWN0L2VzL2hvb2tzL3VzZUxvY2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtc2VsZWN0L2VzL1NlbGVjdG9yL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXNlbGVjdC9lcy9TZWxlY3RUcmlnZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXNlbGVjdC9lcy9nZW5lcmF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1zZWxlY3QvZXMvdXRpbHMvd2FybmluZ1Byb3BzVXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1zZWxlY3QvZXMvU2VsZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXNlbGVjdC9lcy9pbnRlcmZhY2UvZ2VuZXJhdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXNlbGVjdC9lcy9ob29rcy91c2VEZWxheVJlc2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXNlbGVjdC9lcy9ob29rcy91c2VDYWNoZU9wdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtc2VsZWN0L2VzL2hvb2tzL3VzZUNhY2hlRGlzcGxheVZhbHVlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXNlbGVjdC9lcy9ob29rcy91c2VTZWxlY3RUcmlnZ2VyQ29udHJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1zZWxlY3QvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWZpZWxkLWZvcm0vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWZpZWxkLWZvcm0vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlMaWtlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWZpZWxkLWZvcm0vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5V2l0aG91dEhvbGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9ub25JdGVyYWJsZVNwcmVhZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWZpZWxkLWZvcm0vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWZpZWxkLWZvcm0vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9nZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWZpZWxkLWZvcm0vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy93YXJuaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL2VzL0ZpZWxkQ29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9lcy91dGlscy90eXBlVXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL25vZGVfbW9kdWxlcy9yYy11dGlsL2VzL3V0aWxzL2dldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRoSG9sZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWZpZWxkLWZvcm0vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlUmVzdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy91dGlscy9zZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWZpZWxkLWZvcm0vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWZpZWxkLWZvcm0vZXMvdXRpbHMvdmFsdWVVdGlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL2VzL3V0aWxzL21lc3NhZ2VzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL2VzL3V0aWxzL3ZhbGlkYXRlVXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9lcy9GaWVsZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWZpZWxkLWZvcm0vbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvQ2hpbGRyZW4vdG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9lcy9MaXN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZmllbGQtZm9ybS9lcy91dGlscy9OYW1lTWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL2VzL3VzZUZvcm0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWZpZWxkLWZvcm0vZXMvdXRpbHMvYXN5bmNVdGlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL2VzL0Zvcm1Db250ZXh0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1maWVsZC1mb3JtL2VzL0Zvcm0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWZpZWxkLWZvcm0vZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvS2V5Q29kZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZGlhbG9nL2VzL0xhenlSZW5kZXJCb3guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLWRpYWxvZy9lcy9EaWFsb2cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvRG9tL2NvbnRhaW5zLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy11dGlsL2VzL0NvbnRhaW5lclJlbmRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy9Qb3J0YWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvZ2V0U2Nyb2xsQmFyU2l6ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy9zZXRTdHlsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtdXRpbC9lcy9zd2l0Y2hTY3JvbGxpbmdFZmZlY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXV0aWwvZXMvUG9ydGFsV3JhcHBlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtZGlhbG9nL2VzL0RpYWxvZ1dyYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtcGFnaW5hdGlvbi9lcy9QYWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1wYWdpbmF0aW9uL2VzL0tleUNvZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtcGFnaW5hdGlvbi9lcy9PcHRpb25zLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXBhZ2luYXRpb24vZXMvUGFnaW5hdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1wYWdpbmF0aW9uL2VzL2xvY2FsZS96aF9DTi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmMtcHJvZ3Jlc3MvZXMvZW5oYW5jZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXByb2dyZXNzL2VzL3R5cGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1wcm9ncmVzcy9lcy9MaW5lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYy1wcm9ncmVzcy9lcy9DaXJjbGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JjLXByb2dyZXNzL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AY3RybC90aW55Y29sb3IvZGlzdC9tb2R1bGUvdXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGN0cmwvdGlueWNvbG9yL2Rpc3QvbW9kdWxlL2NvbnZlcnNpb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BjdHJsL3Rpbnljb2xvci9kaXN0L21vZHVsZS9jc3MtY29sb3ItbmFtZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BjdHJsL3Rpbnljb2xvci9kaXN0L21vZHVsZS9mb3JtYXQtaW5wdXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vY29sb3JzL2Rpc3QvaW5kZXguZXNtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRvb2x0aXAvZXMvcGxhY2VtZW50cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy10b29sdGlwL2VzL0NvbnRlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtdG9vbHRpcC9lcy9Ub29sdGlwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93cG1sLWNvbW1vbi1qcy1zb3VyY2Uvbm9kZV9tb2R1bGVzL3JjLXRvb2x0aXAvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dwbWwtY29tbW9uLWpzLXNvdXJjZS9ub2RlX21vZHVsZXMvcmMtZHJvcGRvd24vZXMvcGxhY2VtZW50cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1kcm9wZG93bi9lcy9Ecm9wZG93bi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd3BtbC1jb21tb24tanMtc291cmNlL25vZGVfbW9kdWxlcy9yYy1kcm9wZG93bi9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFtZGEvZXMvZmxpcC5qcyJdLCJuYW1lcyI6WyJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiZXhwb3J0cyIsIm1vZHVsZSIsImkiLCJsIiwibW9kdWxlcyIsImNhbGwiLCJtIiwiYyIsImQiLCJuYW1lIiwiZ2V0dGVyIiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsInIiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwidCIsIm1vZGUiLCJfX2VzTW9kdWxlIiwibnMiLCJjcmVhdGUiLCJrZXkiLCJiaW5kIiwibiIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsIm93bktleXMiLCJlbnVtZXJhYmxlT25seSIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2xzIiwiZmlsdGVyIiwic3ltIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZDIiLCJ0YXJnZXQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJmb3JFYWNoIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJoYXNPd24iLCJjbGFzc05hbWVzIiwiY2xhc3NlcyIsImFyZyIsImFyZ1R5cGUiLCJBcnJheSIsImlzQXJyYXkiLCJpbm5lciIsImpvaW4iLCJkZWZhdWx0IiwiaG9va0NhbGxiYWNrIiwic29tZSIsImhvb2tzIiwiaW5wdXQiLCJ0b1N0cmluZyIsImlzT2JqZWN0IiwiaGFzT3duUHJvcCIsImEiLCJiIiwiaXNPYmplY3RFbXB0eSIsIm9iaiIsImdldE93blByb3BlcnR5TmFtZXMiLCJrIiwiaXNVbmRlZmluZWQiLCJpc051bWJlciIsImlzRGF0ZSIsIkRhdGUiLCJtYXAiLCJhcnIiLCJmbiIsInJlcyIsImV4dGVuZCIsInZhbHVlT2YiLCJjcmVhdGVVVEMiLCJmb3JtYXQiLCJsb2NhbGUiLCJzdHJpY3QiLCJjcmVhdGVMb2NhbE9yVVRDIiwidXRjIiwiZ2V0UGFyc2luZ0ZsYWdzIiwiX3BmIiwiZW1wdHkiLCJ1bnVzZWRUb2tlbnMiLCJ1bnVzZWRJbnB1dCIsIm92ZXJmbG93IiwiY2hhcnNMZWZ0T3ZlciIsIm51bGxJbnB1dCIsImludmFsaWRFcmEiLCJpbnZhbGlkTW9udGgiLCJpbnZhbGlkRm9ybWF0IiwidXNlckludmFsaWRhdGVkIiwiaXNvIiwicGFyc2VkRGF0ZVBhcnRzIiwiZXJhIiwibWVyaWRpZW0iLCJyZmMyODIyIiwid2Vla2RheU1pc21hdGNoIiwiaXNWYWxpZCIsIl9pc1ZhbGlkIiwiZmxhZ3MiLCJwYXJzZWRQYXJ0cyIsImlzTm93VmFsaWQiLCJpc05hTiIsIl9kIiwiZ2V0VGltZSIsImludmFsaWRXZWVrZGF5IiwiX3N0cmljdCIsInVuZGVmaW5lZCIsImJpZ0hvdXIiLCJpc0Zyb3plbiIsImNyZWF0ZUludmFsaWQiLCJOYU4iLCJmdW4iLCJ0aGlzIiwibGVuIiwibW9tZW50UHJvcGVydGllcyIsInVwZGF0ZUluUHJvZ3Jlc3MiLCJjb3B5Q29uZmlnIiwidG8iLCJmcm9tIiwicHJvcCIsInZhbCIsIl9pc0FNb21lbnRPYmplY3QiLCJfaSIsIl9mIiwiX2wiLCJfdHptIiwiX2lzVVRDIiwiX29mZnNldCIsIl9sb2NhbGUiLCJNb21lbnQiLCJjb25maWciLCJ1cGRhdGVPZmZzZXQiLCJpc01vbWVudCIsIndhcm4iLCJtc2ciLCJzdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MiLCJjb25zb2xlIiwiZGVwcmVjYXRlIiwiZmlyc3RUaW1lIiwiZGVwcmVjYXRpb25IYW5kbGVyIiwiYXJncyIsInNsaWNlIiwiRXJyb3IiLCJzdGFjayIsImRlcHJlY2F0aW9ucyIsImRlcHJlY2F0ZVNpbXBsZSIsImlzRnVuY3Rpb24iLCJGdW5jdGlvbiIsIm1lcmdlQ29uZmlncyIsInBhcmVudENvbmZpZyIsImNoaWxkQ29uZmlnIiwiTG9jYWxlIiwic2V0IiwiemVyb0ZpbGwiLCJudW1iZXIiLCJ0YXJnZXRMZW5ndGgiLCJmb3JjZVNpZ24iLCJhYnNOdW1iZXIiLCJNYXRoIiwiYWJzIiwiemVyb3NUb0ZpbGwiLCJwb3ciLCJtYXgiLCJzdWJzdHIiLCJmb3JtYXR0aW5nVG9rZW5zIiwibG9jYWxGb3JtYXR0aW5nVG9rZW5zIiwiZm9ybWF0RnVuY3Rpb25zIiwiZm9ybWF0VG9rZW5GdW5jdGlvbnMiLCJhZGRGb3JtYXRUb2tlbiIsInRva2VuIiwicGFkZGVkIiwib3JkaW5hbCIsImNhbGxiYWNrIiwiZnVuYyIsImxvY2FsZURhdGEiLCJmb3JtYXRNb21lbnQiLCJleHBhbmRGb3JtYXQiLCJhcnJheSIsIm1hdGNoIiwicmVwbGFjZSIsIm1vbSIsIm91dHB1dCIsIm1ha2VGb3JtYXRGdW5jdGlvbiIsImludmFsaWREYXRlIiwicmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zIiwibG9uZ0RhdGVGb3JtYXQiLCJsYXN0SW5kZXgiLCJ0ZXN0IiwiYWxpYXNlcyIsImFkZFVuaXRBbGlhcyIsInVuaXQiLCJzaG9ydGhhbmQiLCJsb3dlckNhc2UiLCJ0b0xvd2VyQ2FzZSIsIm5vcm1hbGl6ZVVuaXRzIiwidW5pdHMiLCJub3JtYWxpemVPYmplY3RVbml0cyIsImlucHV0T2JqZWN0Iiwibm9ybWFsaXplZFByb3AiLCJub3JtYWxpemVkSW5wdXQiLCJwcmlvcml0aWVzIiwiYWRkVW5pdFByaW9yaXR5IiwicHJpb3JpdHkiLCJpc0xlYXBZZWFyIiwieWVhciIsImFic0Zsb29yIiwiY2VpbCIsImZsb29yIiwidG9JbnQiLCJhcmd1bWVudEZvckNvZXJjaW9uIiwiY29lcmNlZE51bWJlciIsImlzRmluaXRlIiwibWFrZUdldFNldCIsImtlZXBUaW1lIiwic2V0JDEiLCJtb250aCIsImRhdGUiLCJkYXlzSW5Nb250aCIsInJlZ2V4ZXMiLCJtYXRjaDEiLCJtYXRjaDIiLCJtYXRjaDMiLCJtYXRjaDQiLCJtYXRjaDYiLCJtYXRjaDF0bzIiLCJtYXRjaDN0bzQiLCJtYXRjaDV0bzYiLCJtYXRjaDF0bzMiLCJtYXRjaDF0bzQiLCJtYXRjaDF0bzYiLCJtYXRjaFVuc2lnbmVkIiwibWF0Y2hTaWduZWQiLCJtYXRjaE9mZnNldCIsIm1hdGNoU2hvcnRPZmZzZXQiLCJtYXRjaFdvcmQiLCJhZGRSZWdleFRva2VuIiwicmVnZXgiLCJzdHJpY3RSZWdleCIsImlzU3RyaWN0IiwiZ2V0UGFyc2VSZWdleEZvclRva2VuIiwiUmVnRXhwIiwicmVnZXhFc2NhcGUiLCJtYXRjaGVkIiwicDEiLCJwMiIsInAzIiwicDQiLCJpbmRleE9mIiwidG9rZW5zIiwiYWRkUGFyc2VUb2tlbiIsImFkZFdlZWtQYXJzZVRva2VuIiwiX3ciLCJhZGRUaW1lVG9BcnJheUZyb21Ub2tlbiIsIl9hIiwieCIsIm1vZE1vbnRoIiwibW9udGhzU2hvcnQiLCJtb250aHMiLCJtb250aHNTaG9ydFJlZ2V4IiwibW9udGhzUmVnZXgiLCJtb250aHNQYXJzZSIsImRlZmF1bHRMb2NhbGVNb250aHMiLCJzcGxpdCIsImRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCIsIk1PTlRIU19JTl9GT1JNQVQiLCJkZWZhdWx0TW9udGhzU2hvcnRSZWdleCIsImRlZmF1bHRNb250aHNSZWdleCIsImhhbmRsZVN0cmljdFBhcnNlIiwibW9udGhOYW1lIiwiaWkiLCJsbGMiLCJ0b0xvY2FsZUxvd2VyQ2FzZSIsIl9tb250aHNQYXJzZSIsIl9sb25nTW9udGhzUGFyc2UiLCJfc2hvcnRNb250aHNQYXJzZSIsInNldE1vbnRoIiwiZGF5T2ZNb250aCIsIm1pbiIsImdldFNldE1vbnRoIiwiY29tcHV0ZU1vbnRoc1BhcnNlIiwiY21wTGVuUmV2Iiwic2hvcnRQaWVjZXMiLCJsb25nUGllY2VzIiwibWl4ZWRQaWVjZXMiLCJzb3J0IiwiX21vbnRoc1JlZ2V4IiwiX21vbnRoc1Nob3J0UmVnZXgiLCJfbW9udGhzU3RyaWN0UmVnZXgiLCJfbW9udGhzU2hvcnRTdHJpY3RSZWdleCIsImRheXNJblllYXIiLCJ5IiwicGFyc2VUd29EaWdpdFllYXIiLCJwYXJzZUludCIsImdldFNldFllYXIiLCJjcmVhdGVEYXRlIiwiaCIsIk0iLCJtcyIsImdldEZ1bGxZZWFyIiwic2V0RnVsbFllYXIiLCJjcmVhdGVVVENEYXRlIiwiVVRDIiwiZ2V0VVRDRnVsbFllYXIiLCJzZXRVVENGdWxsWWVhciIsImZpcnN0V2Vla09mZnNldCIsImRvdyIsImRveSIsImZ3ZCIsImdldFVUQ0RheSIsImRheU9mWWVhckZyb21XZWVrcyIsIndlZWsiLCJ3ZWVrZGF5IiwicmVzWWVhciIsInJlc0RheU9mWWVhciIsImRheU9mWWVhciIsIndlZWtPZlllYXIiLCJyZXNXZWVrIiwid2Vla09mZnNldCIsIndlZWtzSW5ZZWFyIiwid2Vla09mZnNldE5leHQiLCJzaGlmdFdlZWtkYXlzIiwid3MiLCJjb25jYXQiLCJ3ZWVrZGF5c01pbiIsIndlZWtkYXlzU2hvcnQiLCJ3ZWVrZGF5cyIsIndlZWtkYXlzTWluUmVnZXgiLCJ3ZWVrZGF5c1Nob3J0UmVnZXgiLCJ3ZWVrZGF5c1JlZ2V4Iiwid2Vla2RheXNQYXJzZSIsImRlZmF1bHRMb2NhbGVXZWVrZGF5cyIsImRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0IiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluIiwiZGVmYXVsdFdlZWtkYXlzUmVnZXgiLCJkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4IiwiZGVmYXVsdFdlZWtkYXlzTWluUmVnZXgiLCJoYW5kbGVTdHJpY3RQYXJzZSQxIiwid2Vla2RheU5hbWUiLCJfd2Vla2RheXNQYXJzZSIsIl9zaG9ydFdlZWtkYXlzUGFyc2UiLCJfbWluV2Vla2RheXNQYXJzZSIsImRheSIsImNvbXB1dGVXZWVrZGF5c1BhcnNlIiwibWlucCIsInNob3J0cCIsImxvbmdwIiwibWluUGllY2VzIiwiX3dlZWtkYXlzUmVnZXgiLCJfd2Vla2RheXNTaG9ydFJlZ2V4IiwiX3dlZWtkYXlzTWluUmVnZXgiLCJfd2Vla2RheXNTdHJpY3RSZWdleCIsIl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXgiLCJfd2Vla2RheXNNaW5TdHJpY3RSZWdleCIsImhGb3JtYXQiLCJob3VycyIsImxvd2VyY2FzZSIsIm1pbnV0ZXMiLCJtYXRjaE1lcmlkaWVtIiwiX21lcmlkaWVtUGFyc2UiLCJzZWNvbmRzIiwia0lucHV0IiwiX2lzUG0iLCJpc1BNIiwiX21lcmlkaWVtIiwicG9zIiwicG9zMSIsInBvczIiLCJnbG9iYWxMb2NhbGUiLCJnZXRTZXRIb3VyIiwiYmFzZUNvbmZpZyIsImNhbGVuZGFyIiwic2FtZURheSIsIm5leHREYXkiLCJuZXh0V2VlayIsImxhc3REYXkiLCJsYXN0V2VlayIsInNhbWVFbHNlIiwiTFRTIiwiTFQiLCJMIiwiTEwiLCJMTEwiLCJMTExMIiwiZGF5T2ZNb250aE9yZGluYWxQYXJzZSIsInJlbGF0aXZlVGltZSIsImZ1dHVyZSIsInBhc3QiLCJzcyIsIm1tIiwiaGgiLCJkZCIsInciLCJ3dyIsIk1NIiwieXkiLCJtZXJpZGllbVBhcnNlIiwibG9jYWxlcyIsImxvY2FsZUZhbWlsaWVzIiwiY29tbW9uUHJlZml4IiwiYXJyMSIsImFycjIiLCJtaW5sIiwibm9ybWFsaXplTG9jYWxlIiwibG9hZExvY2FsZSIsIm9sZExvY2FsZSIsIl9hYmJyIiwiZ2V0U2V0R2xvYmFsTG9jYWxlIiwiZSIsInZhbHVlcyIsImRhdGEiLCJnZXRMb2NhbGUiLCJkZWZpbmVMb2NhbGUiLCJhYmJyIiwiX2NvbmZpZyIsInBhcmVudExvY2FsZSIsIm5hbWVzIiwiaiIsIm5leHQiLCJjaG9vc2VMb2NhbGUiLCJjaGVja092ZXJmbG93IiwiX292ZXJmbG93RGF5T2ZZZWFyIiwiX292ZXJmbG93V2Vla3MiLCJfb3ZlcmZsb3dXZWVrZGF5IiwiZXh0ZW5kZWRJc29SZWdleCIsImJhc2ljSXNvUmVnZXgiLCJ0elJlZ2V4IiwiaXNvRGF0ZXMiLCJpc29UaW1lcyIsImFzcE5ldEpzb25SZWdleCIsIm9ic09mZnNldHMiLCJVVCIsIkdNVCIsIkVEVCIsIkVTVCIsIkNEVCIsIkNTVCIsIk1EVCIsIk1TVCIsIlBEVCIsIlBTVCIsImNvbmZpZ0Zyb21JU08iLCJhbGxvd1RpbWUiLCJkYXRlRm9ybWF0IiwidGltZUZvcm1hdCIsInR6Rm9ybWF0Iiwic3RyaW5nIiwiZXhlYyIsImNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQiLCJ1bnRydW5jYXRlWWVhciIsInllYXJTdHIiLCJjb25maWdGcm9tUkZDMjgyMiIsInBhcnNlZEFycmF5IiwibW9udGhTdHIiLCJkYXlTdHIiLCJob3VyU3RyIiwibWludXRlU3RyIiwic2Vjb25kU3RyIiwicmVzdWx0Iiwid2Vla2RheVN0ciIsInBhcnNlZElucHV0IiwiZ2V0RGF5IiwiY2hlY2tXZWVrZGF5Iiwib2JzT2Zmc2V0IiwibWlsaXRhcnlPZmZzZXQiLCJudW1PZmZzZXQiLCJobSIsImNhbGN1bGF0ZU9mZnNldCIsInNldFVUQ01pbnV0ZXMiLCJnZXRVVENNaW51dGVzIiwiZGVmYXVsdHMiLCJjb25maWdGcm9tQXJyYXkiLCJjdXJyZW50RGF0ZSIsImV4cGVjdGVkV2Vla2RheSIsInllYXJUb1VzZSIsIm5vd1ZhbHVlIiwibm93IiwiX3VzZVVUQyIsImdldFVUQ01vbnRoIiwiZ2V0VVRDRGF0ZSIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImN1cnJlbnREYXRlQXJyYXkiLCJ3ZWVrWWVhciIsInRlbXAiLCJ3ZWVrZGF5T3ZlcmZsb3ciLCJjdXJXZWVrIiwiR0ciLCJXIiwiRSIsImNyZWF0ZUxvY2FsIiwiX3dlZWsiLCJnZyIsIl9kYXlPZlllYXIiLCJkYXlPZlllYXJGcm9tV2Vla0luZm8iLCJfbmV4dERheSIsIklTT184NjAxIiwiUkZDXzI4MjIiLCJza2lwcGVkIiwic3RyaW5nTGVuZ3RoIiwidG90YWxQYXJzZWRJbnB1dExlbmd0aCIsImhvdXIiLCJpc1BtIiwibWVyaWRpZW1Ib3VyIiwibWVyaWRpZW1GaXhXcmFwIiwiZXJhc0NvbnZlcnRZZWFyIiwicHJlcGFyZUNvbmZpZyIsInByZXBhcnNlIiwidGVtcENvbmZpZyIsImJlc3RNb21lbnQiLCJzY29yZVRvQmVhdCIsImN1cnJlbnRTY29yZSIsInZhbGlkRm9ybWF0Rm91bmQiLCJiZXN0Rm9ybWF0SXNWYWxpZCIsInNjb3JlIiwiY29uZmlnRnJvbVN0cmluZ0FuZEFycmF5IiwiY3JlYXRlRnJvbUlucHV0RmFsbGJhY2siLCJjb25maWdGcm9tU3RyaW5nIiwiZGF5T3JEYXRlIiwibWludXRlIiwic2Vjb25kIiwibWlsbGlzZWNvbmQiLCJjb25maWdGcm9tT2JqZWN0IiwiY29uZmlnRnJvbUlucHV0IiwiaXNVVEMiLCJhZGQiLCJwcm90b3R5cGVNaW4iLCJvdGhlciIsInByb3RvdHlwZU1heCIsInBpY2tCeSIsIm1vbWVudHMiLCJvcmRlcmluZyIsIkR1cmF0aW9uIiwiZHVyYXRpb24iLCJ5ZWFycyIsInF1YXJ0ZXJzIiwicXVhcnRlciIsIndlZWtzIiwiaXNvV2VlayIsImRheXMiLCJtaWxsaXNlY29uZHMiLCJ1bml0SGFzRGVjaW1hbCIsInBhcnNlRmxvYXQiLCJpc0R1cmF0aW9uVmFsaWQiLCJfbWlsbGlzZWNvbmRzIiwiX2RheXMiLCJfbW9udGhzIiwiX2RhdGEiLCJfYnViYmxlIiwiaXNEdXJhdGlvbiIsImFic1JvdW5kIiwicm91bmQiLCJvZmZzZXQiLCJzZXBhcmF0b3IiLCJ1dGNPZmZzZXQiLCJzaWduIiwib2Zmc2V0RnJvbVN0cmluZyIsImNodW5rT2Zmc2V0IiwibWF0Y2hlciIsInBhcnRzIiwibWF0Y2hlcyIsImNsb25lV2l0aE9mZnNldCIsIm1vZGVsIiwiZGlmZiIsImNsb25lIiwic2V0VGltZSIsImxvY2FsIiwiZ2V0RGF0ZU9mZnNldCIsImdldFRpbWV6b25lT2Zmc2V0IiwiaXNVdGMiLCJhc3BOZXRSZWdleCIsImlzb1JlZ2V4IiwiY3JlYXRlRHVyYXRpb24iLCJyZXQiLCJkaWZmUmVzIiwiYmFzZSIsInBhcnNlSXNvIiwiaXNCZWZvcmUiLCJwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlIiwiaW5wIiwiaXNBZnRlciIsImNyZWF0ZUFkZGVyIiwiZGlyZWN0aW9uIiwicGVyaW9kIiwidG1wIiwiYWRkU3VidHJhY3QiLCJpc0FkZGluZyIsImludmFsaWQiLCJzdWJ0cmFjdCIsImlzU3RyaW5nIiwiU3RyaW5nIiwiaXNNb21lbnRJbnB1dCIsImFycmF5VGVzdCIsImRhdGFUeXBlVGVzdCIsIml0ZW0iLCJpc051bWJlck9yU3RyaW5nQXJyYXkiLCJvYmplY3RUZXN0IiwicHJvcGVydHlUZXN0IiwicHJvcGVydGllcyIsImlzTW9tZW50SW5wdXRPYmplY3QiLCJpc0NhbGVuZGFyU3BlYyIsIm1vbnRoRGlmZiIsIndob2xlTW9udGhEaWZmIiwiYW5jaG9yIiwibmV3TG9jYWxlRGF0YSIsImRlZmF1bHRGb3JtYXQiLCJkZWZhdWx0Rm9ybWF0VXRjIiwibGFuZyIsIm1vZCQxIiwiZGl2aWRlbmQiLCJkaXZpc29yIiwibG9jYWxTdGFydE9mRGF0ZSIsInV0Y1N0YXJ0T2ZEYXRlIiwibWF0Y2hFcmFBYmJyIiwiZXJhc0FiYnJSZWdleCIsImNvbXB1dGVFcmFzUGFyc2UiLCJhYmJyUGllY2VzIiwibmFtZVBpZWNlcyIsIm5hcnJvd1BpZWNlcyIsImVyYXMiLCJuYXJyb3ciLCJfZXJhc1JlZ2V4IiwiX2VyYXNOYW1lUmVnZXgiLCJfZXJhc0FiYnJSZWdleCIsIl9lcmFzTmFycm93UmVnZXgiLCJhZGRXZWVrWWVhckZvcm1hdFRva2VuIiwiZ2V0U2V0V2Vla1llYXJIZWxwZXIiLCJ3ZWVrc1RhcmdldCIsInNldFdlZWtBbGwiLCJkYXlPZlllYXJEYXRhIiwiZXJhc05hbWVSZWdleCIsImVyYXNOYXJyb3dSZWdleCIsImVyYXNQYXJzZSIsIl9lcmFZZWFyT3JkaW5hbFJlZ2V4IiwiZXJhWWVhck9yZGluYWxQYXJzZSIsImlzb1dlZWtZZWFyIiwiX2RheU9mTW9udGhPcmRpbmFsUGFyc2UiLCJfb3JkaW5hbFBhcnNlIiwiX2RheU9mTW9udGhPcmRpbmFsUGFyc2VMZW5pZW50IiwiZ2V0U2V0RGF5T2ZNb250aCIsImdldFNldE1pbnV0ZSIsImdldFNldE1pbGxpc2Vjb25kIiwiZ2V0U2V0U2Vjb25kIiwicGFyc2VNcyIsInByb3RvIiwicHJlUGFyc2VQb3N0Rm9ybWF0IiwidGltZSIsImZvcm1hdHMiLCJzb2QiLCJzdGFydE9mIiwiY2FsZW5kYXJGb3JtYXQiLCJhc0Zsb2F0IiwidGhhdCIsInpvbmVEZWx0YSIsImVuZE9mIiwic3RhcnRPZkRhdGUiLCJpc29XZWVrZGF5IiwiaW5wdXRTdHJpbmciLCJwb3N0Zm9ybWF0Iiwid2l0aG91dFN1ZmZpeCIsImh1bWFuaXplIiwiZnJvbU5vdyIsInRvTm93IiwiaW52YWxpZEF0IiwibG9jYWxJbnB1dCIsImlzQmV0d2VlbiIsImluY2x1c2l2aXR5IiwibG9jYWxGcm9tIiwibG9jYWxUbyIsImlzU2FtZSIsImlucHV0TXMiLCJpc1NhbWVPckFmdGVyIiwiaXNTYW1lT3JCZWZvcmUiLCJwYXJzaW5nRmxhZ3MiLCJwcmlvcml0aXplZCIsInVuaXRzT2JqIiwidSIsImdldFByaW9yaXRpemVkVW5pdHMiLCJ0b0FycmF5IiwidG9PYmplY3QiLCJ0b0RhdGUiLCJ0b0lTT1N0cmluZyIsImtlZXBPZmZzZXQiLCJpbnNwZWN0IiwicHJlZml4Iiwic3VmZml4Iiwiem9uZSIsImlzTG9jYWwiLCJmb3IiLCJ0b0pTT04iLCJ1bml4IiwiY3JlYXRpb25EYXRhIiwiZXJhTmFtZSIsInNpbmNlIiwidW50aWwiLCJlcmFOYXJyb3ciLCJlcmFBYmJyIiwiZXJhWWVhciIsImRpciIsImlzb1dlZWtzIiwid2Vla0luZm8iLCJ3ZWVrc0luV2Vla1llYXIiLCJpc29XZWVrc0luWWVhciIsImlzb1dlZWtzSW5JU09XZWVrWWVhciIsInBhcnNlV2Vla2RheSIsInBhcnNlSXNvV2Vla2RheSIsImtlZXBMb2NhbFRpbWUiLCJrZWVwTWludXRlcyIsImxvY2FsQWRqdXN0IiwiX2NoYW5nZUluUHJvZ3Jlc3MiLCJwYXJzZVpvbmUiLCJ0Wm9uZSIsImhhc0FsaWduZWRIb3VyT2Zmc2V0IiwiaXNEU1QiLCJpc1V0Y09mZnNldCIsInpvbmVBYmJyIiwiem9uZU5hbWUiLCJkYXRlcyIsImlzRFNUU2hpZnRlZCIsIl9pc0RTVFNoaWZ0ZWQiLCJhcnJheTEiLCJhcnJheTIiLCJkb250Q29udmVydCIsImxlbmd0aERpZmYiLCJkaWZmcyIsImNvbXBhcmVBcnJheXMiLCJwcm90byQxIiwiZ2V0JDEiLCJpbmRleCIsImZpZWxkIiwic2V0dGVyIiwibGlzdE1vbnRoc0ltcGwiLCJvdXQiLCJsaXN0V2Vla2RheXNJbXBsIiwibG9jYWxlU29ydGVkIiwic2hpZnQiLCJfY2FsZW5kYXIiLCJfbG9uZ0RhdGVGb3JtYXQiLCJmb3JtYXRVcHBlciIsInRvVXBwZXJDYXNlIiwidG9rIiwiX2ludmFsaWREYXRlIiwiX29yZGluYWwiLCJpc0Z1dHVyZSIsIl9yZWxhdGl2ZVRpbWUiLCJwYXN0RnV0dXJlIiwiX2VyYXMiLCJpc0Zvcm1hdCIsIl9tb250aHNTaG9ydCIsIl9tb250aHNQYXJzZUV4YWN0IiwiZmlyc3REYXlPZlllYXIiLCJmaXJzdERheU9mV2VlayIsIl93ZWVrZGF5cyIsIl93ZWVrZGF5c01pbiIsIl93ZWVrZGF5c1Nob3J0IiwiX3dlZWtkYXlzUGFyc2VFeGFjdCIsIl9mdWxsV2Vla2RheXNQYXJzZSIsImNoYXJBdCIsImlzTG93ZXIiLCJsYW5nRGF0YSIsIm1hdGhBYnMiLCJhZGRTdWJ0cmFjdCQxIiwiYWJzQ2VpbCIsImRheXNUb01vbnRocyIsIm1vbnRoc1RvRGF5cyIsIm1ha2VBcyIsImFsaWFzIiwiYXMiLCJhc01pbGxpc2Vjb25kcyIsImFzU2Vjb25kcyIsImFzTWludXRlcyIsImFzSG91cnMiLCJhc0RheXMiLCJhc1dlZWtzIiwiYXNNb250aHMiLCJhc1F1YXJ0ZXJzIiwiYXNZZWFycyIsIm1ha2VHZXR0ZXIiLCJ0aHJlc2hvbGRzIiwic3Vic3RpdHV0ZVRpbWVBZ28iLCJhYnMkMSIsInRvSVNPU3RyaW5nJDEiLCJ0b3RhbFNpZ24iLCJ5bVNpZ24iLCJkYXlzU2lnbiIsImhtc1NpZ24iLCJ0b3RhbCIsInRvRml4ZWQiLCJwcm90byQyIiwibW9udGhzRnJvbURheXMiLCJhcmdXaXRoU3VmZml4IiwiYXJnVGhyZXNob2xkcyIsIndpdGhTdWZmaXgiLCJ0aCIsImFzc2lnbiIsInBvc05lZ0R1cmF0aW9uIiwicmVsYXRpdmVUaW1lJDEiLCJ0b0lzb1N0cmluZyIsInZlcnNpb24iLCJ1cGRhdGVMb2NhbGUiLCJ0bXBMb2NhbGUiLCJyZWxhdGl2ZVRpbWVSb3VuZGluZyIsInJvdW5kaW5nRnVuY3Rpb24iLCJyZWxhdGl2ZVRpbWVUaHJlc2hvbGQiLCJ0aHJlc2hvbGQiLCJsaW1pdCIsIm15TW9tZW50IiwiSFRNTDVfRk1UIiwiREFURVRJTUVfTE9DQUwiLCJEQVRFVElNRV9MT0NBTF9TRUNPTkRTIiwiREFURVRJTUVfTE9DQUxfTVMiLCJEQVRFIiwiVElNRSIsIlRJTUVfU0VDT05EUyIsIlRJTUVfTVMiLCJXRUVLIiwiTU9OVEgiLCJmYWN0b3J5IiwiX2RlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfZXh0ZW5kcyIsIl90eXBlb2YiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnJheVdpdGhIb2xlcyIsIl9zIiwiX2UiLCJfYXJyIiwiX24iLCJkb25lIiwiZXJyIiwidW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJub25JdGVyYWJsZVJlc3QiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJjYWNoZSIsImhhcyIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsImRlc2MiLCJjaGVja0RDRSIsIl9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyIsImVycm9yIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyYXlMaWtlVG9BcnJheSIsIml0ZXJhYmxlVG9BcnJheSIsIlR5cGVFcnJvciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwic291cmNlS2V5cyIsInNvdXJjZVN5bWJvbEtleXMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIl9jdXJyeTIiLCJmMiIsIl9iIiwiX2Fzc2lnbiIsIl9hc3NpZ24yIiwiS2V5Q29kZSIsIk1BQ19FTlRFUiIsIkJBQ0tTUEFDRSIsIlRBQiIsIk5VTV9DRU5URVIiLCJFTlRFUiIsIlNISUZUIiwiQ1RSTCIsIkFMVCIsIlBBVVNFIiwiQ0FQU19MT0NLIiwiRVNDIiwiU1BBQ0UiLCJQQUdFX1VQIiwiUEFHRV9ET1dOIiwiRU5EIiwiSE9NRSIsIkxFRlQiLCJVUCIsIlJJR0hUIiwiRE9XTiIsIlBSSU5UX1NDUkVFTiIsIklOU0VSVCIsIkRFTEVURSIsIlpFUk8iLCJPTkUiLCJUV08iLCJUSFJFRSIsIkZPVVIiLCJGSVZFIiwiU0lYIiwiU0VWRU4iLCJFSUdIVCIsIk5JTkUiLCJRVUVTVElPTl9NQVJLIiwiQSIsIkIiLCJDIiwiRCIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlgiLCJZIiwiWiIsIk1FVEEiLCJXSU5fS0VZX1JJR0hUIiwiQ09OVEVYVF9NRU5VIiwiTlVNX1pFUk8iLCJOVU1fT05FIiwiTlVNX1RXTyIsIk5VTV9USFJFRSIsIk5VTV9GT1VSIiwiTlVNX0ZJVkUiLCJOVU1fU0lYIiwiTlVNX1NFVkVOIiwiTlVNX0VJR0hUIiwiTlVNX05JTkUiLCJOVU1fTVVMVElQTFkiLCJOVU1fUExVUyIsIk5VTV9NSU5VUyIsIk5VTV9QRVJJT0QiLCJOVU1fRElWSVNJT04iLCJGMSIsIkYyIiwiRjMiLCJGNCIsIkY1IiwiRjYiLCJGNyIsIkY4IiwiRjkiLCJGMTAiLCJGMTEiLCJGMTIiLCJOVU1MT0NLIiwiU0VNSUNPTE9OIiwiREFTSCIsIkVRVUFMUyIsIkNPTU1BIiwiUEVSSU9EIiwiU0xBU0giLCJBUE9TVFJPUEhFIiwiU0lOR0xFX1FVT1RFIiwiT1BFTl9TUVVBUkVfQlJBQ0tFVCIsIkJBQ0tTTEFTSCIsIkNMT1NFX1NRVUFSRV9CUkFDS0VUIiwiV0lOX0tFWSIsIk1BQ19GRl9NRVRBIiwiV0lOX0lNRSIsImlzVGV4dE1vZGlmeWluZ0tleUV2ZW50Iiwia2V5Q29kZSIsImFsdEtleSIsImN0cmxLZXkiLCJtZXRhS2V5IiwiaXNDaGFyYWN0ZXJLZXkiLCJ3aW5kb3ciLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJfaXNQbGFjZWhvbGRlciIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9nZXRQcm90b3R5cGVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsInNlbGYiLCJhc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJfY3JlYXRlU3VwZXIiLCJEZXJpdmVkIiwiaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJzaGFtIiwiUHJveHkiLCJCb29sZWFuIiwiU3VwZXIiLCJOZXdUYXJnZXQiLCJfc2V0UHJvdG90eXBlT2YiLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJfY3VycnkxIiwiZjEiLCJpdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29udGV4dCIsIkNvbmZpZ0NvbnN1bWVyIiwiQ29uZmlnQ29udGV4dCIsImdsb2JhbENvbmZpZyIsImRlZmF1bHRQcmVmaXhDbHMiLCJjb25maWdDb25zdW1lclByb3BzIiwiX2V4dGVuZHMyIiwiUmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9Db250ZXh0IiwiX3JjRmllbGRGb3JtIiwiX3VzZU1lbW8iLCJfbG9jYWxlUHJvdmlkZXIiLCJfTG9jYWxlUmVjZWl2ZXIiLCJfU2l6ZUNvbnRleHQiLCJfbWVzc2FnZSIsIl9ub3RpZmljYXRpb24iLCJnbG9iYWxQcmVmaXhDbHMiLCJQQVNTRURfUFJPUFMiLCJnZXRHbG9iYWxQcmVmaXhDbHMiLCJnZXRQcmVmaXhDbHMiLCJzdWZmaXhDbHMiLCJjdXN0b21pemVQcmVmaXhDbHMiLCJnZXRSb290UHJlZml4Q2xzIiwicm9vdFByZWZpeENscyIsImluY2x1ZGVzIiwiUHJvdmlkZXJDaGlsZHJlbiIsImNoaWxkcmVuIiwiY3NwIiwiYXV0b0luc2VydFNwYWNlSW5CdXR0b24iLCJmb3JtIiwiY29tcG9uZW50U2l6ZSIsInNwYWNlIiwidmlydHVhbCIsImRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aCIsImxlZ2FjeUxvY2FsZSIsInBhcmVudENvbnRleHQiLCJpY29uUHJlZml4Q2xzIiwidXNlQ2FsbGJhY2siLCJwcmVmaXhDbHMiLCJtZXJnZWRQcmVmaXhDbHMiLCJwcm9wTmFtZSIsInByb3BWYWx1ZSIsIm1lbW9lZENvbmZpZyIsInByZXZDb25maWciLCJjdXJyZW50Q29uZmlnIiwicHJldktleXMiLCJjdXJyZW50S2V5cyIsIm1lbW9JY29uQ29udGV4dFZhbHVlIiwidXNlTWVtbyIsImNoaWxkTm9kZSIsInZhbGlkYXRlTWVzc2FnZXMiLCJGb3JtIiwiZGVmYXVsdFZhbGlkYXRlTWVzc2FnZXMiLCJjcmVhdGVFbGVtZW50IiwiRm9ybVByb3ZpZGVyIiwiX0FOVF9NQVJLX18iLCJBTlRfTUFSSyIsIlByb3ZpZGVyIiwiU2l6ZUNvbnRleHRQcm92aWRlciIsInNpemUiLCJDb25maWdQcm92aWRlciIsInVzZUVmZmVjdCIsInJ0bCIsIl8iLCJfXyIsImNvbnRleHQiLCJTaXplQ29udGV4dCIsInBhcmFtcyIsIl9kZWZhdWx0Iiwid2FybmVkIiwid2FybmluZyIsInZhbGlkIiwibWVzc2FnZSIsIm5vdGUiLCJtZXRob2QiLCJub3RlT25jZSIsIl9zbGljZWRUb0FycmF5MiIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiX2NsYXNzbmFtZXMiLCJfSWNvbkJhc2UiLCJfdHdvVG9uZVByaW1hcnlDb2xvciIsIl91dGlscyIsInNldFR3b1RvbmVDb2xvciIsIkljb24iLCJmb3J3YXJkUmVmIiwicmVmIiwiX2NsYXNzTmFtZXMiLCJjbGFzc05hbWUiLCJpY29uIiwic3BpbiIsInJvdGF0ZSIsInRhYkluZGV4Iiwib25DbGljayIsInR3b1RvbmVDb2xvciIsInJlc3RQcm9wcyIsIl9SZWFjdCR1c2VDb250ZXh0JHByZSIsInVzZUNvbnRleHQiLCJjbGFzc1N0cmluZyIsImljb25UYWJJbmRleCIsInN2Z1N0eWxlIiwibXNUcmFuc2Zvcm0iLCJ0cmFuc2Zvcm0iLCJfbm9ybWFsaXplVHdvVG9uZUNvbG8iLCJub3JtYWxpemVUd29Ub25lQ29sb3JzIiwiX25vcm1hbGl6ZVR3b1RvbmVDb2xvMiIsInByaW1hcnlDb2xvciIsInNlY29uZGFyeUNvbG9yIiwicm9sZSIsInN0eWxlIiwiZGlzcGxheU5hbWUiLCJnZXRUd29Ub25lQ29sb3IiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJjb252ZXJ0RmllbGRzRXJyb3IiLCJfbGVuIiwiX2tleSIsImYiLCJzdHIiLCJmb3JtYXRSZWdFeHAiLCJOdW1iZXIiLCJKU09OIiwic3RyaW5naWZ5IiwiaXNFbXB0eVZhbHVlIiwidHlwZSIsImlzTmF0aXZlU3RyaW5nVHlwZSIsImlzRW1wdHlPYmplY3QiLCJhc3luY01hcCIsIm9iakFyciIsIm9wdGlvbiIsImZpcnN0IiwiYXN5bmNTZXJpYWxBcnJheSIsImZsYXR0ZW5PYmpBcnIiLCJmaXJzdEZpZWxkcyIsIm9iakFycktleXMiLCJvYmpBcnJMZW5ndGgiLCJyZXN1bHRzIiwicGVuZGluZyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZXJyb3JzIiwiZmllbGRzIiwiYXJyTGVuZ3RoIiwiY291bnQiLCJhc3luY1BhcmFsbGVsQXJyYXkiLCJjb21wbGVtZW50RXJyb3IiLCJydWxlIiwib2UiLCJmdWxsRmllbGQiLCJkZWVwTWVyZ2UiLCJvcmlnaW5hbCIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJfUmVhY3QkQ29tcG9uZW50IiwiX3N1cGVyIiwiX3RoaXMiLCJfdGhpcyRwcm9wcyRwcmVmaXhDbHMiLCJyZW5kZXJQcm92aWRlciIsIl90aGlzJHByb3BzIiwiZ2V0UG9wdXBDb250YWluZXIiLCJyZW5kZXJFbXB0eSIsInBhZ2VIZWFkZXIiLCJfdGhpczIiLCJDb21wb25lbnQiLCJhbGxJY29ucyIsIl9pY29uc1JlYWN0IiwiX0ljb25Gb250IiwiX3dhcm5pbmciLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9fcmVzdCIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIml0ZXIiLCJfaXRlcmFibGVUb0FycmF5IiwibWluTGVuIiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiZGFuZ2Vyb3VzVGhlbWUiLCJkZWZhdWx0VGhlbWUiLCJjb21wb25lbnQiLCJ2aWV3Qm94IiwidGhlbWUiLCJzdmdDbGFzc1N0cmluZyIsImlubmVyU3ZnUHJvcHMiLCJzdmdCYXNlUHJvcHMiLCJjb21wb25lbnROYW1lIiwiQ2hpbGRyZW4iLCJpc1ZhbGlkRWxlbWVudCIsIm9ubHkiLCJjb21wdXRlZFR5cGUiLCJ0aGVtZUluTmFtZSIsImdldFRoZW1lRnJvbVR5cGVOYW1lIiwid2l0aFRoZW1lU3VmZml4IiwicmVtb3ZlVHlwZVRoZW1lIiwicmVuZGVySW5uZXJOb2RlIiwiY3JlYXRlRnJvbUljb25mb250Q04iLCJvYmpBIiwib2JqQiIsImNvbXBhcmUiLCJjb21wYXJlQ29udGV4dCIsImtleXNBIiwia2V5c0IiLCJiSGFzT3duUHJvcGVydHkiLCJpZHgiLCJ2YWx1ZUEiLCJ2YWx1ZUIiLCJfcmVxdWlyZWQyIiwiX3doaXRlc3BhY2UyIiwiX3R5cGUyIiwiX3JhbmdlMiIsIl9lbnVtMiIsIl9wYXR0ZXJuMiIsInJlcXVpcmVkIiwid2hpdGVzcGFjZSIsInJhbmdlIiwicGF0dGVybiIsIl90eXBlb2YyIiwiX3R5cGVvZjMiLCJfc2V0UHJvdG90eXBlT2YyIiwiX2NyZWF0ZTIiLCJmaWxsUmVmIiwibm9kZSIsImN1cnJlbnQiLCJjb21wb3NlUmVmIiwicmVmcyIsIlJlYWN0UmVzaXplT2JzZXJ2ZXIiLCJyZXNpemVPYnNlcnZlciIsImN1cnJlbnRFbGVtZW50Iiwic3RhdGUiLCJ3aWR0aCIsImhlaWdodCIsIm9mZnNldEhlaWdodCIsIm9mZnNldFdpZHRoIiwib25SZXNpemUiLCJlbnRyaWVzIiwiX3RhcmdldCRnZXRCb3VuZGluZ0NsIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiZml4ZWRXaWR0aCIsImZpeGVkSGVpZ2h0Iiwic2V0U3RhdGUiLCJ0aGVuIiwic2V0Q2hpbGROb2RlIiwib25Db21wb25lbnRVcGRhdGVkIiwiZGVzdHJveU9ic2VydmVyIiwiZGlzYWJsZWQiLCJlbGVtZW50IiwiSFRNTEVsZW1lbnQiLCJmaW5kRE9NTm9kZSIsIm9ic2VydmUiLCJkaXNjb25uZWN0IiwiY2hpbGROb2RlcyIsImNoaWxkIiwia2VlcEVtcHR5Iiwibm9kZU9yQ29tcG9uZW50IiwiX3R5cGUkcHJvdG90eXBlIiwiX25vZGVPckNvbXBvbmVudCRwcm90IiwicmVuZGVyIiwic3VwcG9ydFJlZiIsImFkZEV2ZW50TGlzdGVuZXJXcmFwIiwiZXZlbnRUeXBlIiwiY2IiLCJ1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmFmIiwic2V0VGltZW91dCIsImNhZiIsIm51bSIsImNsZWFyVGltZW91dCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImhhbmRsZSIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwicmFmVVVJRCIsInJhZklkcyIsIk1hcCIsImNsZWFudXAiLCJpZCIsImRlbGV0ZSIsIndyYXBwZXJSYWYiLCJ0aW1lcyIsImNhbGxSZWYiLCJsZWZ0VGltZXMiLCJyZWFsSWQiLCJjYW5jZWwiLCJhcnJheVdpdGhvdXRIb2xlcyIsIm5vbkl0ZXJhYmxlU3ByZWFkIiwiY2FuVXNlRG9tIiwiZG9jdW1lbnQiLCJtYWtlUHJlZml4TWFwIiwic3R5bGVQcm9wIiwiZXZlbnROYW1lIiwicHJlZml4ZXMiLCJkb21TdXBwb3J0Iiwid2luIiwidmVuZG9yUHJlZml4ZXMiLCJhbmltYXRpb25lbmQiLCJ0cmFuc2l0aW9uZW5kIiwiYW5pbWF0aW9uIiwidHJhbnNpdGlvbiIsIl9kb2N1bWVudCRjcmVhdGVFbGVtZSIsInByZWZpeGVkRXZlbnROYW1lcyIsImdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lIiwicHJlZml4TWFwIiwic3R5bGVQcm9wTGlzdCIsImludGVybmFsQW5pbWF0aW9uRW5kTmFtZSIsImludGVybmFsVHJhbnNpdGlvbkVuZE5hbWUiLCJzdXBwb3J0VHJhbnNpdGlvbiIsImFuaW1hdGlvbkVuZE5hbWUiLCJ0cmFuc2l0aW9uRW5kTmFtZSIsImdldFRyYW5zaXRpb25OYW1lIiwidHJhbnNpdGlvbk5hbWUiLCJ0cmFuc2l0aW9uVHlwZSIsInVzZU1vdW50U3RhdHVzIiwiZGVmYXVsdFZhbHVlIiwiZGVzdHJveVJlZiIsIl91c2VTdGF0ZTIiLCJzZXRWYWwiLCJTVEVQX1FVRVVFIiwiaXNBY3RpdmUiLCJzdGVwIiwiX1JlYWN0JHVzZVN0YXRlMiIsInNldFN0ZXAiLCJfdXNlTmV4dEZyYW1lMiIsIm5leHRGcmFtZVJlZiIsImNhbmNlbE5leHRGcmFtZSIsIm5leHRGcmFtZSIsImRlbGF5IiwibmV4dEZyYW1lSWQiLCJpc0NhbmNlbGVkIiwidXNlTmV4dEZyYW1lIiwibmV4dFN0ZXAiLCJpbmZvIiwiZG9OZXh0Iiwic3RhdHVzIiwidXNlU3RhdHVzIiwic3VwcG9ydE1vdGlvbiIsInZpc2libGUiLCJnZXRFbGVtZW50IiwiX3JlZiIsIl9yZWYkbW90aW9uRW50ZXIiLCJtb3Rpb25FbnRlciIsIl9yZWYkbW90aW9uQXBwZWFyIiwibW90aW9uQXBwZWFyIiwiX3JlZiRtb3Rpb25MZWF2ZSIsIm1vdGlvbkxlYXZlIiwibW90aW9uRGVhZGxpbmUiLCJtb3Rpb25MZWF2ZUltbWVkaWF0ZWx5Iiwib25BcHBlYXJQcmVwYXJlIiwib25FbnRlclByZXBhcmUiLCJvbkxlYXZlUHJlcGFyZSIsIm9uQXBwZWFyU3RhcnQiLCJvbkVudGVyU3RhcnQiLCJvbkxlYXZlU3RhcnQiLCJvbkFwcGVhckFjdGl2ZSIsIm9uRW50ZXJBY3RpdmUiLCJvbkxlYXZlQWN0aXZlIiwib25BcHBlYXJFbmQiLCJvbkVudGVyRW5kIiwib25MZWF2ZUVuZCIsIm9uVmlzaWJsZUNoYW5nZWQiLCJhc3luY1Zpc2libGUiLCJzZXRBc3luY1Zpc2libGUiLCJfdXNlU3RhdGU0Iiwic2V0U3RhdHVzIiwiX3VzZVN0YXRlNiIsInNldFN0eWxlIiwibW91bnRlZFJlZiIsImRlYWRsaW5lUmVmIiwiZGVzdHJveWVkUmVmIiwiY2FjaGVFbGVtZW50UmVmIiwiZ2V0RG9tRWxlbWVudCIsImFjdGl2ZVJlZiIsIm9uSW50ZXJuYWxNb3Rpb25FbmQiLCJldmVudCIsImNhbkVuZCIsImRlYWRsaW5lIiwicGF0Y2hNb3Rpb25FdmVudHMiLCJjYWxsYmFja1JlZiIsInJlbW92ZU1vdGlvbkV2ZW50cyIsInVzZURvbU1vdGlvbkV2ZW50cyIsImV2ZW50SGFuZGxlcnMiLCJfcmVmMiIsIl9yZWYzIiwiX3JlZjQiLCJfdXNlU3RlcFF1ZXVlMiIsInVzZVN0ZXBRdWV1ZSIsIm5ld1N0ZXAiLCJvblByZXBhcmUiLCJfZXZlbnRIYW5kbGVycyRzdGVwIiwic3RhcnRTdGVwIiwiYWN0aXZlIiwibmV4dFN0YXR1cyIsImlzTW91bnRlZCIsIm1lcmdlZFN0eWxlIiwiRG9tV3JhcHBlciIsInRyYW5zaXRpb25TdXBwb3J0IiwiaXNTdXBwb3J0VHJhbnNpdGlvbiIsIm1vdGlvbk5hbWUiLCJDU1NNb3Rpb24iLCJfcHJvcHMkdmlzaWJsZSIsIl9wcm9wcyRyZW1vdmVPbkxlYXZlIiwicmVtb3ZlT25MZWF2ZSIsImZvcmNlUmVuZGVyIiwibGVhdmVkQ2xhc3NOYW1lIiwiZXZlbnRQcm9wcyIsIm5vZGVSZWYiLCJ3cmFwcGVyTm9kZVJlZiIsIl91c2VTdGF0dXMyIiwic3RhdHVzU3RlcCIsInN0YXR1c1N0eWxlIiwibWVyZ2VkVmlzaWJsZSIsInJlbmRlcmVkUmVmIiwib3JpZ2luUmVmIiwibW90aW9uQ2hpbGRyZW4iLCJzZXROb2RlUmVmIiwibWVyZ2VkUHJvcHMiLCJzdGF0dXNTdWZmaXgiLCJkaXNwbGF5Iiwid3JhcEtleVRvT2JqZWN0Iiwia2V5T2JqIiwicGFyc2VLZXlzIiwiZGlmZktleXMiLCJsaXN0IiwiY3VycmVudEluZGV4IiwiY3VycmVudExlbiIsInByZXZLZXlPYmplY3RzIiwiY3VycmVudEtleU9iamVjdHMiLCJoaXQiLCJjdXJyZW50S2V5T2JqIiwiZHVwbGljYXRlZEtleXMiLCJtYXRjaEtleSIsIk1PVElPTl9QUk9QX05BTUVTIiwiQ1NTTW90aW9uTGlzdCIsImtleUVudGl0aWVzIiwicmVtb3ZlS2V5IiwiZW50aXR5IiwiX29uVmlzaWJsZUNoYW5nZWQiLCJtb3Rpb25Qcm9wcyIsImNoYW5nZWRWaXNpYmxlIiwicGFyc2VkS2V5T2JqZWN0cyIsInByZXZFbnRpdHkiLCJmaW5kIiwiX3JlZjUiLCJkZWZhdWx0UHJvcHMiLCJjb3JlIiwiX19lIiwic3RvcmUiLCJ1aWQiLCJVU0VfU1lNQk9MIiwiY3JlYXRlQ29udGV4dCIsImZyZWVHbG9iYWwiLCJmcmVlU2VsZiIsInJvb3QiLCJfYnV0dG9uIiwiX2J1dHRvbkdyb3VwIiwiR3JvdXAiLCJOT1RISU5HIiwiRFJBRlRBQkxFIiwiRFJBRlRfU1RBVEUiLCJpc0RyYWZ0IiwiaXNEcmFmdGFibGUiLCJzaGFsbG93Q29weSIsImludm9rZUdldHRlcnMiLCJlYWNoIiwiaXNFbnVtZXJhYmxlIiwidGhpbmciLCJpcyIsIkltbWVyU2NvcGUiLCJwYXJlbnQiLCJkcmFmdHMiLCJjYW5BdXRvRnJlZXplIiwicGF0Y2hlcyIsInJldm9rZSIsImRyYWZ0IiwidXNlUGF0Y2hlcyIsInBhdGNoTGlzdGVuZXIiLCJpbnZlcnNlUGF0Y2hlcyIsImxlYXZlIiwiZW50ZXIiLCJkZXNjcmlwdG9ycyIsImNyZWF0ZVByb3h5IiwiY2xvbmVQb3RlbnRpYWxEcmFmdCIsImFzc2VydFVucmV2b2tlZCIsInBlZWsiLCJmaW5hbGl6aW5nIiwicHJlcGFyZUNvcHkiLCJjb3B5IiwiYXNzaWduZWQiLCJtb2RpZmllZCIsIm1hcmtDaGFuZ2VkIiwicHJveHlQcm9wZXJ0eSIsInNjb3BlIiwiZmluYWxpemVkIiwicmV2b2tlJDEiLCJyZXZva2VkIiwibWFya0NoYW5nZXNTd2VlcCIsImhhc0FycmF5Q2hhbmdlcyIsImhhc09iamVjdENoYW5nZXMiLCJiYXNlVmFsdWUiLCJzdGF0ZSQxIiwibGVnYWN5UHJveHkiLCJmcmVlemUiLCJ3aWxsRmluYWxpemUiLCJpc1JlcGxhY2VkIiwibWFya0NoYW5nZXNSZWN1cnNpdmVseSIsImkkMSIsImkkMiIsImNyZWF0ZVByb3h5JDEiLCJyZXZvY2FibGUiLCJhcnJheVRyYXBzIiwib2JqZWN0VHJhcHMiLCJwcm94eSIsInNvdXJjZSQxIiwicGVlayQxIiwibWFya0NoYW5nZWQkMSIsImRlbGV0ZVByb3BlcnR5Iiwib3duZXIiLCJtb2Rlcm5Qcm94eSIsImdlbmVyYXRlUGF0Y2hlcyIsImJhc2VQYXRoIiwiYXNzaWduJDEiLCJkZWx0YSIsInN0YXJ0IiwiZW5kIiwicGF0aCIsIm9wIiwidXNlUmVtb3ZlIiwicmVwbGFjZUNvdW50IiwicGF0aCQxIiwiZ2VuZXJhdGVBcnJheVBhdGNoZXMiLCJhc3NpZ25lZFZhbHVlIiwib3JpZ1ZhbHVlIiwiZ2VuZXJhdGVPYmplY3RQYXRjaGVzIiwiYXBwbHlQYXRjaGVzIiwicGF0Y2giLCJzcGxpY2UiLCJjb25maWdEZWZhdWx0cyIsInVzZVByb3hpZXMiLCJhdXRvRnJlZXplIiwicHJvY2VzcyIsIm9uQXNzaWduIiwib25EZWxldGUiLCJvbkNvcHkiLCJJbW1lciIsInNldFVzZVByb3hpZXMiLCJwcm9kdWNlIiwicmVjaXBlIiwidGhpcyQxIiwiZGVmYXVsdEJhc2UiLCJoYXNFcnJvciIsInByb2Nlc3NSZXN1bHQiLCJjcmVhdGVEcmFmdCIsImlzTWFudWFsIiwiZmluaXNoRHJhZnQiLCJzZXRBdXRvRnJlZXplIiwiYmFzZURyYWZ0IiwiZmluYWxpemUiLCJmaW5hbGl6ZVRyZWUiLCJyb290UGF0aCIsIm5lZWRQYXRjaGVzIiwiZmluYWxpemVQcm9wZXJ0eSIsImlzRHJhZnRQcm9wIiwiaW1tZXIiLCJyZXNldFdhcm5lZCIsIm9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJwb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiU1RBUlRfRVZFTlRfTkFNRV9NQVAiLCJ0cmFuc2l0aW9uc3RhcnQiLCJXZWJraXRUcmFuc2l0aW9uIiwiTW96VHJhbnNpdGlvbiIsIk9UcmFuc2l0aW9uIiwibXNUcmFuc2l0aW9uIiwiYW5pbWF0aW9uc3RhcnQiLCJXZWJraXRBbmltYXRpb24iLCJNb3pBbmltYXRpb24iLCJPQW5pbWF0aW9uIiwibXNBbmltYXRpb24iLCJFTkRfRVZFTlRfTkFNRV9NQVAiLCJzdGFydEV2ZW50cyIsImVuZEV2ZW50cyIsImV2ZW50TGlzdGVuZXIiLCJFVkVOVF9OQU1FX01BUCIsImV2ZW50cyIsImJhc2VFdmVudE5hbWUiLCJiYXNlRXZlbnRzIiwic3R5bGVOYW1lIiwiZGV0ZWN0RXZlbnRzIiwiYWRkU3RhcnRFdmVudExpc3RlbmVyIiwic3RhcnRFdmVudCIsInJlbW92ZVN0YXJ0RXZlbnRMaXN0ZW5lciIsImFkZEVuZEV2ZW50TGlzdGVuZXIiLCJlbmRFdmVudCIsInJlbW92ZUVuZEV2ZW50TGlzdGVuZXIiLCJpc0Nzc0FuaW1hdGlvblN1cHBvcnRlZCIsIkV2ZW50IiwiY2FwaXRhbFByZWZpeGVzIiwiZ2V0U3R5bGVQcm9wZXJ0eSIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRQcm9wZXJ0eVZhbHVlIiwiZml4QnJvd3NlckJ5VGltZW91dCIsInRyYW5zaXRpb25EZWxheSIsInRyYW5zaXRpb25EdXJhdGlvbiIsImFuaW1hdGlvbkRlbGF5IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJyY0VuZEFuaW1UaW1lb3V0IiwicmNFbmRMaXN0ZW5lciIsImNsZWFyQnJvd3NlckJ1Z1RpbWVvdXQiLCJlbmRDYWxsYmFjayIsIm5hbWVJc09iaiIsImFjdGl2ZUNsYXNzTmFtZSIsIm5vZGVDbGFzc2VzIiwicmNBbmltVGltZW91dCIsInN0b3AiLCJzZXRUcmFuc2l0aW9uIiwidiIsImdsb2JhbCIsIl9fZyIsImFuT2JqZWN0IiwiSUU4X0RPTV9ERUZJTkUiLCJ0b1ByaW1pdGl2ZSIsImRQIiwiQXR0cmlidXRlcyIsIndhcm5pbmdPbmNlIiwicmVwbGFjZUVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCJyZXBsYWNlbWVudCIsIl9hcml0eSIsImEwIiwiYTEiLCJhMiIsImEzIiwiYTQiLCJhNSIsImE2IiwiYTciLCJhOCIsImE5IiwiY29udGFpbnMiLCJkaWRVcGRhdGUiLCJnZXRDb250YWluZXIiLCJjb250YWluZXJSZWYiLCJpbml0UmVmIiwiX2NvbnRhaW5lclJlZiRjdXJyZW50IiwiX2NvbnRhaW5lclJlZiRjdXJyZW50MiIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsImNyZWF0ZVBvcnRhbCIsImlzUG9pbnRzRXEiLCJpc0FsaWduUG9pbnQiLCJnZXRNb3Rpb24iLCJtb3Rpb24iLCJNYXNrIiwiekluZGV4IiwibWFzayIsIm1hc2tNb3Rpb24iLCJtYXNrQW5pbWF0aW9uIiwibWFza1RyYW5zaXRpb25OYW1lIiwidmVuZG9yUHJlZml4IiwianNDc3NNYXAiLCJXZWJraXQiLCJNb3oiLCJnZXRWZW5kb3JQcmVmaXgiLCJnZXRUcmFuc2Zvcm1OYW1lIiwic2V0VHJhbnNpdGlvblByb3BlcnR5IiwidHJhbnNpdGlvblByb3BlcnR5Iiwic2V0VHJhbnNmb3JtIiwibWF0cml4MmQiLCJtYXRyaXgzZCIsImdldENvbXB1dGVkU3R5bGVYIiwiZm9yY2VSZWxheW91dCIsImVsZW0iLCJvcmlnaW5hbFN0eWxlIiwiY3NzIiwiZWwiLCJnZXRTY3JvbGwiLCJ0b3AiLCJkb2N1bWVudEVsZW1lbnQiLCJib2R5IiwiZ2V0U2Nyb2xsTGVmdCIsImdldFNjcm9sbFRvcCIsImdldE9mZnNldCIsImJveCIsImRvYyIsIm93bmVyRG9jdW1lbnQiLCJkb2NFbGVtIiwibGVmdCIsImNsaWVudExlZnQiLCJjbGllbnRUb3AiLCJnZXRDbGllbnRQb3NpdGlvbiIsImRlZmF1bHRWaWV3IiwicGFyZW50V2luZG93IiwiaXNXaW5kb3ciLCJub2RlVHlwZSIsIl9SRV9OVU1fTk9fUFgiLCJSRV9QT1MiLCJnZXRPZmZzZXREaXJlY3Rpb24iLCJ1c2VDc3NSaWdodCIsInVzZUNzc0JvdHRvbSIsIm9wcG9zaXRlT2Zmc2V0RGlyZWN0aW9uIiwic2V0TGVmdFRvcCIsInBvc2l0aW9uIiwicHJlc2V0SCIsInByZXNldFYiLCJob3Jpem9udGFsUHJvcGVydHkiLCJ2ZXJ0aWNhbFByb3BlcnR5Iiwib3Bwb3NpdGVIb3Jpem9udGFsUHJvcGVydHkiLCJvcHBvc2l0ZVZlcnRpY2FsUHJvcGVydHkiLCJvcmlnaW5hbFRyYW5zaXRpb24iLCJvcmlnaW5hbE9mZnNldCIsIm9sZCIsInByZXNldCIsIm9mZiIsIl9kaXIiLCJfb2ZmIiwib3JpZ2luYWxYWSIsIm1hdHJpeCIsImdldFRyYW5zZm9ybVhZIiwicmVzdWx0WFkiLCJ4eSIsIm1hdGNoMmQiLCJzZXRUcmFuc2Zvcm1YWSIsImlzQm9yZGVyQm94Rm4iLCJjcyIsImNvbXB1dGVkU3R5bGUiLCJyc0xlZnQiLCJwaXhlbExlZnQiLCJCT1hfTU9ERUxTIiwic3dhcCIsIm9wdGlvbnMiLCJnZXRQQk1XaWR0aCIsIndoaWNoIiwiY3NzUHJvcCIsImRvbVV0aWxzIiwiZ2V0V0giLCJleCIsImV4dHJhIiwidmlld3BvcnRXaWR0aCIsInZpZXdwb3J0SGVpZ2h0IiwiZG9jV2lkdGgiLCJkb2NIZWlnaHQiLCJib3JkZXJCb3hWYWx1ZSIsImlzQm9yZGVyQm94IiwiY3NzQm94VmFsdWUiLCJib3JkZXJCb3hWYWx1ZU9ySXNCb3JkZXJCb3giLCJyZWZXaW4iLCJkb2N1bWVudEVsZW1lbnRQcm9wIiwiY29tcGF0TW9kZSIsImNzc1Nob3ciLCJ2aXNpYmlsaXR5IiwiZ2V0V0hJZ25vcmVEaXNwbGF5IiwiX2tleTIiLCJtaXgiLCJpbmNsdWRlTWFyZ2luIiwidXRpbHMiLCJnZXRXaW5kb3ciLCJnZXREb2N1bWVudCIsImlnbm9yZVNoYWtlIiwib3JpT2Zmc2V0Iiwib0xlZnQiLCJvVG9wIiwidExlZnQiLCJ0VG9wIiwidXNlQ3NzVHJhbnNmb3JtIiwic2V0T2Zmc2V0IiwiZ2V0V2luZG93U2Nyb2xsTGVmdCIsImdldFdpbmRvd1Njcm9sbFRvcCIsIm1lcmdlIiwiX2xlbjIiLCJfa2V5MyIsInBvc2l0aW9uU3R5bGUiLCJub2RlTmFtZSIsInZpc2libGVSZWN0IiwicmlnaHQiLCJJbmZpbml0eSIsImJvdHRvbSIsImNsaWVudFdpZHRoIiwiY2xpZW50SGVpZ2h0Iiwib3JpZ2luYWxQb3NpdGlvbiIsInNjcm9sbFgiLCJzY3JvbGxZIiwiZG9jdW1lbnRXaWR0aCIsInNjcm9sbFdpZHRoIiwiZG9jdW1lbnRIZWlnaHQiLCJzY3JvbGxIZWlnaHQiLCJib2R5U3R5bGUiLCJvdmVyZmxvd1giLCJpbm5lcldpZHRoIiwib3ZlcmZsb3dZIiwiaW5uZXJIZWlnaHQiLCJpc0FuY2VzdG9yRml4ZWQiLCJtYXhWaXNpYmxlV2lkdGgiLCJtYXhWaXNpYmxlSGVpZ2h0IiwiZWxGdXR1cmVQb3MiLCJlbFJlZ2lvbiIsImFkanVzdFgiLCJyZXNpemVXaWR0aCIsImFkanVzdFkiLCJyZXNpemVIZWlnaHQiLCJvdXRlcldpZHRoIiwib3V0ZXJIZWlnaHQiLCJyZWdpb24iLCJhbGlnbiIsInJlZk5vZGVSZWdpb24iLCJwb2ludHMiLCJ0YXJnZXRPZmZzZXQiLCJpc0ZhaWxYIiwiaXNGYWlsWSIsImZsaXAiLCJyZWciLCJmbGlwT2Zmc2V0IiwiY29udmVydE9mZnNldCIsIm9mZnNldExlbiIsInN1YnN0cmluZyIsIm5vcm1hbGl6ZU9mZnNldCIsInRndFJlZ2lvbiIsImlzVGd0UmVnaW9uVmlzaWJsZSIsIm5ld092ZXJmbG93Q2ZnIiwiZmFpbCIsIm5ld0VsUmVnaW9uIiwibmV3UG9pbnRzIiwibmV3T2Zmc2V0IiwibmV3VGFyZ2V0T2Zmc2V0IiwiaXNDb21wbGV0ZUZhaWxYIiwiX25ld1BvaW50cyIsIl9uZXdPZmZzZXQiLCJfbmV3VGFyZ2V0T2Zmc2V0IiwiaXNDb21wbGV0ZUZhaWxZIiwiaXNTdGlsbEZhaWxYIiwiaXNTdGlsbEZhaWxZIiwiYWxpZ25FbGVtZW50IiwicmVmTm9kZSIsImlzVGFyZ2V0Tm90T3V0T2ZWaXNpYmxlIiwidGFyZ2V0UmVnaW9uIiwiaXNPdXRPZlZpc2libGVSZWN0IiwiX19nZXRPZmZzZXRQYXJlbnQiLCJfX2dldFZpc2libGVSZWN0Rm9yRWxlbWVudCIsInRndFBvaW50IiwicGFnZVgiLCJwYWdlWSIsImNsaWVudFgiLCJjbGllbnRZIiwicG9pbnRJblZpZXciLCJtb25pdG9yUmVzaXplIiwicHJldldpZHRoIiwicHJldkhlaWdodCIsImdldFBvaW50IiwicG9pbnQiLCJSZWZBbGlnbiIsIm9uQWxpZ24iLCJtb25pdG9yV2luZG93UmVzaXplIiwiX3JlZiRtb25pdG9yQnVmZmVyVGltIiwibW9uaXRvckJ1ZmZlclRpbWUiLCJjYWNoZVJlZiIsInVzZVJlZiIsImZvcmNlQWxpZ25Qcm9wc1JlZiIsIl91c2VCdWZmZXIiLCJjYWxsZWRSZWYiLCJ0aW1lb3V0UmVmIiwiY2FuY2VsVHJpZ2dlciIsInRyaWdnZXIiLCJmb3JjZSIsImJ1ZmZlciIsInVzZUJ1ZmZlciIsIl9mb3JjZUFsaWduUHJvcHNSZWYkYyIsImxhdGVzdERpc2FibGVkIiwibGF0ZXN0VGFyZ2V0IiwibGF0ZXN0T25BbGlnbiIsImFjdGl2ZUVsZW1lbnQiLCJpc1Zpc2libGUiLCJjb250YWluZXIiLCJmb2N1cyIsInJlc3RvcmVGb2N1cyIsIl91c2VCdWZmZXIyIiwiX2ZvcmNlQWxpZ24iLCJjYW5jZWxGb3JjZUFsaWduIiwicmVzaXplTW9uaXRvciIsInNvdXJjZVJlc2l6ZU1vbml0b3IiLCJwcmV2Iiwid2luUmVzaXplUmVmIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsImZvcmNlQWxpZ24iLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJfbmV4dCIsIl90aHJvdyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiU3RhdHVzUXVldWUiLCJQb3B1cElubmVyIiwic3RyZXRjaCIsImRlc3Ryb3lQb3B1cE9uSGlkZSIsImdldFJvb3REb21Ob2RlIiwiZ2V0Q2xhc3NOYW1lRnJvbUFsaWduIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwib25Nb3VzZURvd24iLCJvblRvdWNoU3RhcnQiLCJhbGlnblJlZiIsImVsZW1lbnRSZWYiLCJfdXNlU3RhdGUiLCJhbGlnbmVkQ2xhc3NOYW1lIiwic2V0QWxpZ25lZENsYXNzTmFtZSIsIl91c2VTdHJldGNoU3R5bGUiLCJfUmVhY3QkdXNlU3RhdGUiLCJ0YXJnZXRTaXplIiwic2V0VGFyZ2V0U2l6ZSIsInNpemVTdHlsZSIsIm1pbkhlaWdodCIsIm1pbldpZHRoIiwidXNlU3RyZXRjaFN0eWxlIiwiX3VzZVN0cmV0Y2hTdHlsZTIiLCJzdHJldGNoU3R5bGUiLCJtZWFzdXJlU3RyZXRjaFN0eWxlIiwiX3VzZVZpc2libGVTdGF0dXMiLCJzZXRJbnRlcm5hbFN0YXR1cyIsInJhZlJlZiIsImNhbmNlbFJhZiIsImRvTWVhc3VyZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsInVzZVZpc2libGVTdGF0dXMiLCJfdXNlVmlzaWJsZVN0YXR1czIiLCJnb05leHRTdGF0dXMiLCJwcmVwYXJlUmVzb2x2ZVJlZiIsIl9hbGlnblJlZiRjdXJyZW50Iiwib25JbnRlcm5hbEFsaWduIiwicG9wdXBEb21Ob2RlIiwibWF0Y2hBbGlnbiIsIm5leHRBbGlnbmVkQ2xhc3NOYW1lIiwiX3ByZXBhcmVSZXNvbHZlUmVmJGN1Iiwib25TaG93UHJlcGFyZSIsIm9yaWdpbkhhbmRsZXIiLCJvcGFjaXR5IiwicG9pbnRlckV2ZW50cyIsImFsaWduRGlzYWJsZWQiLCJtb3Rpb25SZWYiLCJtb3Rpb25DbGFzc05hbWUiLCJtb3Rpb25TdHlsZSIsIm1lcmdlZENsYXNzTmFtZSIsIm9uTW91c2VEb3duQ2FwdHVyZSIsIm9uVG91Y2hTdGFydENhcHR1cmUiLCJNb2JpbGVQb3B1cElubmVyIiwiX3Byb3BzJG1vYmlsZSIsIm1vYmlsZSIsInBvcHVwQ2xhc3NOYW1lIiwicG9wdXBTdHlsZSIsIl9wcm9wcyRtb2JpbGUkcG9wdXBNbyIsInBvcHVwTW90aW9uIiwicG9wdXBSZW5kZXIiLCJQb3B1cCIsImlubmVyVmlzaWJsZSIsInNlcklubmVyVmlzaWJsZSIsIl91c2VTdGF0ZTMiLCJpbk1vYmlsZSIsInNldEluTW9iaWxlIiwiY2xvbmVQcm9wcyIsImlzTW9iaWxlIiwicG9wdXBOb2RlIiwibm9vcCIsInJldHVybkVtcHR5U3RyaW5nIiwicmV0dXJuRG9jdW1lbnQiLCJBTExfSEFORExFUlMiLCJQb3J0YWxDb21wb25lbnQiLCJUcmlnZ2VyIiwicG9wdXBWaXNpYmxlIiwicG9wdXBSZWYiLCJ0cmlnZ2VyUmVmIiwibW91c2VFbnRlckRlbGF5IiwiZmlyZUV2ZW50cyIsImRlbGF5U2V0UG9wdXBWaXNpYmxlIiwib25Nb3VzZU1vdmUiLCJzZXRQb2ludCIsIm1vdXNlTGVhdmVEZWxheSIsIm9uUG9wdXBNb3VzZUVudGVyIiwiY2xlYXJEZWxheVRpbWVyIiwib25Qb3B1cE1vdXNlTGVhdmUiLCJfdGhpcyRwb3B1cFJlZiRjdXJyZW4iLCJyZWxhdGVkVGFyZ2V0Iiwib25Gb2N1cyIsImlzRm9jdXNUb1Nob3ciLCJmb2N1c1RpbWUiLCJmb2N1c0RlbGF5IiwicHJlQ2xpY2tUaW1lIiwicHJlVG91Y2hUaW1lIiwib25CbHVyIiwiaXNCbHVyVG9IaWRlIiwiYmx1ckRlbGF5Iiwib25Db250ZXh0TWVudSIsInByZXZlbnREZWZhdWx0Iiwic2V0UG9wdXBWaXNpYmxlIiwib25Db250ZXh0TWVudUNsb3NlIiwiaXNDb250ZXh0TWVudVRvU2hvdyIsImNsb3NlIiwicHJlVGltZSIsImlzQ2xpY2tUb1Nob3ciLCJpc0NsaWNrVG9IaWRlIiwibmV4dFZpc2libGUiLCJvblBvcHVwTW91c2VEb3duIiwiX3RoaXMkY29udGV4dCIsImhhc1BvcHVwTW91c2VEb3duIiwibW91c2VEb3duVGltZW91dCIsIm9uRG9jdW1lbnRDbGljayIsIm1hc2tDbG9zYWJsZSIsImdldFBvcHVwRG9tTm9kZSIsImlzQ29udGV4dE1lbnVPbmx5IiwiZ2V0VHJpZ2dlckRPTU5vZGUiLCJkb21Ob2RlIiwiZ2V0UG9wdXBDbGFzc05hbWVGcm9tQWxpZ24iLCJwb3B1cFBsYWNlbWVudCIsImJ1aWx0aW5QbGFjZW1lbnRzIiwiYWxpZ25Qb2ludCIsInBsYWNlbWVudHMiLCJwbGFjZW1lbnQiLCJnZXRBbGlnblBvcHVwQ2xhc3NOYW1lIiwiZ2V0Q29tcG9uZW50IiwiX3RoaXMkcHJvcHMyIiwib25Qb3B1cEFsaWduIiwicG9wdXBBbmltYXRpb24iLCJwb3B1cFRyYW5zaXRpb25OYW1lIiwicG9wdXAiLCJfdGhpcyRzdGF0ZSIsImdldFBvcHVwQWxpZ24iLCJtb3VzZVByb3BzIiwiaXNNb3VzZUVudGVyVG9TaG93IiwiaXNNb3VzZUxlYXZlVG9IaWRlIiwiYXR0YWNoUGFyZW50IiwicG9wdXBDb250YWluZXIiLCJhdHRhY2hJZCIsIm1vdW50Tm9kZSIsIl90aGlzJHByb3BzMyIsImFwcGVuZENoaWxkIiwiaGFuZGxlUG9ydGFsVXBkYXRlIiwicHJldlBvcHVwVmlzaWJsZSIsImFmdGVyUG9wdXBWaXNpYmxlQ2hhbmdlIiwiZGVmYXVsdFBvcHVwVmlzaWJsZSIsImNvbXBvbmVudERpZFVwZGF0ZSIsImN1cnJlbnREb2N1bWVudCIsImNsaWNrT3V0c2lkZUhhbmRsZXIiLCJ0b3VjaE91dHNpZGVIYW5kbGVyIiwiY29udGV4dE1lbnVPdXRzaWRlSGFuZGxlcjEiLCJjb250ZXh0TWVudU91dHNpZGVIYW5kbGVyMiIsImNsZWFyT3V0c2lkZUhhbmRsZXIiLCJfdGhpcyRwb3B1cFJlZiRjdXJyZW4yIiwicG9wdXBBbGlnbiIsInBsYWNlbWVudFN0ciIsImJhc2VBbGlnbiIsImdldEFsaWduRnJvbVBsYWNlbWVudCIsIm9uUG9wdXBWaXNpYmxlQ2hhbmdlIiwiZGVsYXlTIiwiZGVsYXlUaW1lciIsImNoaWxkUHJvcyIsIl90aGlzJHByb3BzNCIsImFjdGlvbiIsInNob3dBY3Rpb24iLCJfdGhpcyRwcm9wczUiLCJfdGhpcyRwcm9wczYiLCJoaWRlQWN0aW9uIiwiX3RoaXMkcHJvcHM3IiwiX3RoaXMkcHJvcHM4IiwiX3RoaXMkcHJvcHM5IiwiX3RoaXMkcHJvcHMxMCIsIl90aGlzJHBvcHVwUmVmJGN1cnJlbjMiLCJjaGlsZENhbGxiYWNrIiwiX3RoaXMkcHJvcHMxMSIsImF1dG9EZXN0cm95IiwibmV3Q2hpbGRQcm9wcyIsImNyZWF0ZVR3b0NoYWlucyIsImNoaWxkcmVuQ2xhc3NOYW1lIiwicG9ydGFsIiwicHJldlN0YXRlIiwibmV3U3RhdGUiLCJjb250ZXh0VHlwZSIsIl9jdXJyeU4iLCJyZWNlaXZlZCIsImNvbWJpbmVkIiwiYXJnc0lkeCIsImNvbWJpbmVkSWR4IiwibG9nIiwiZW52IiwiaXNJY29uRGVmaW5pdGlvbiIsIm5vcm1hbGl6ZUF0dHJzIiwiYXR0cnMiLCJyZWR1Y2UiLCJhY2MiLCJNaW5pTWFwIiwiY29sbGVjdGlvbiIsImdlbmVyYXRlIiwicm9vdFByb3BzIiwidGFnIiwiZ2V0U2Vjb25kYXJ5Q29sb3IiLCJnIiwiY3R4IiwiaGlkZSIsIiRleHBvcnQiLCJvd24iLCJJU19GT1JDRUQiLCJJU19HTE9CQUwiLCJJU19TVEFUSUMiLCJJU19QUk9UTyIsIklTX0JJTkQiLCJJU19XUkFQIiwiZXhwUHJvdG8iLCJpdCIsIl9vYmplY3RTcHJlYWQiLCJ0dXBsZU51bSIsInR1cGxlIiwiY29tcG9uZW50V2lsbE1vdW50IiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsIm5leHRQcm9wcyIsImNvbXBvbmVudFdpbGxVcGRhdGUiLCJuZXh0U3RhdGUiLCJwcmV2UHJvcHMiLCJfX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEZsYWciLCJfX3JlYWN0SW50ZXJuYWxTbmFwc2hvdCIsImdldFNuYXBzaG90QmVmb3JlVXBkYXRlIiwicG9seWZpbGwiLCJpc1JlYWN0Q29tcG9uZW50IiwiZm91bmRXaWxsTW91bnROYW1lIiwiZm91bmRXaWxsUmVjZWl2ZVByb3BzTmFtZSIsImZvdW5kV2lsbFVwZGF0ZU5hbWUiLCJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50IiwiVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJVTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSIsIm5ld0FwaU5hbWUiLCJtYXliZVNuYXBzaG90Iiwic25hcHNob3QiLCJfX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nIiwiTWFwU2hpbSIsImdldEluZGV4IiwiZW50cnkiLCJjbGFzc18xIiwiX19lbnRyaWVzX18iLCJjbGVhciIsImlzQnJvd3NlciIsImdsb2JhbCQxIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lJDEiLCJ0cmFuc2l0aW9uS2V5cyIsIm11dGF0aW9uT2JzZXJ2ZXJTdXBwb3J0ZWQiLCJNdXRhdGlvbk9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyIiwiY29ubmVjdGVkXyIsIm11dGF0aW9uRXZlbnRzQWRkZWRfIiwibXV0YXRpb25zT2JzZXJ2ZXJfIiwib2JzZXJ2ZXJzXyIsIm9uVHJhbnNpdGlvbkVuZF8iLCJyZWZyZXNoIiwibGVhZGluZ0NhbGwiLCJ0cmFpbGluZ0NhbGwiLCJsYXN0Q2FsbFRpbWUiLCJyZXNvbHZlUGVuZGluZyIsInRpbWVvdXRDYWxsYmFjayIsInRpbWVTdGFtcCIsInRocm90dGxlIiwiYWRkT2JzZXJ2ZXIiLCJvYnNlcnZlciIsImNvbm5lY3RfIiwicmVtb3ZlT2JzZXJ2ZXIiLCJvYnNlcnZlcnMiLCJkaXNjb25uZWN0XyIsInVwZGF0ZU9ic2VydmVyc18iLCJhY3RpdmVPYnNlcnZlcnMiLCJnYXRoZXJBY3RpdmUiLCJoYXNBY3RpdmUiLCJicm9hZGNhc3RBY3RpdmUiLCJhdHRyaWJ1dGVzIiwiY2hpbGRMaXN0IiwiY2hhcmFjdGVyRGF0YSIsInN1YnRyZWUiLCJwcm9wZXJ0eU5hbWUiLCJnZXRJbnN0YW5jZSIsImluc3RhbmNlXyIsImRlZmluZUNvbmZpZ3VyYWJsZSIsImdldFdpbmRvd09mIiwiZW1wdHlSZWN0IiwiY3JlYXRlUmVjdEluaXQiLCJ0b0Zsb2F0IiwiZ2V0Qm9yZGVyc1NpemUiLCJzdHlsZXMiLCJwb3NpdGlvbnMiLCJnZXRIVE1MRWxlbWVudENvbnRlbnRSZWN0IiwicGFkZGluZ3MiLCJwb3NpdGlvbnNfMSIsImdldFBhZGRpbmdzIiwiaG9yaXpQYWQiLCJ2ZXJ0UGFkIiwiYm94U2l6aW5nIiwiaXNEb2N1bWVudEVsZW1lbnQiLCJ2ZXJ0U2Nyb2xsYmFyIiwiaG9yaXpTY3JvbGxiYXIiLCJpc1NWR0dyYXBoaWNzRWxlbWVudCIsIlNWR0dyYXBoaWNzRWxlbWVudCIsIlNWR0VsZW1lbnQiLCJnZXRCQm94IiwiZ2V0Q29udGVudFJlY3QiLCJiYm94IiwiZ2V0U1ZHQ29udGVudFJlY3QiLCJSZXNpemVPYnNlcnZhdGlvbiIsImJyb2FkY2FzdFdpZHRoIiwiYnJvYWRjYXN0SGVpZ2h0IiwiY29udGVudFJlY3RfIiwicmVjdCIsImJyb2FkY2FzdFJlY3QiLCJSZXNpemVPYnNlcnZlckVudHJ5IiwicmVjdEluaXQiLCJDb25zdHIiLCJjb250ZW50UmVjdCIsIkRPTVJlY3RSZWFkT25seSIsIlJlc2l6ZU9ic2VydmVyU1BJIiwiY29udHJvbGxlciIsImNhbGxiYWNrQ3R4IiwiYWN0aXZlT2JzZXJ2YXRpb25zXyIsIm9ic2VydmF0aW9uc18iLCJjYWxsYmFja18iLCJjb250cm9sbGVyXyIsImNhbGxiYWNrQ3R4XyIsIkVsZW1lbnQiLCJvYnNlcnZhdGlvbnMiLCJ1bm9ic2VydmUiLCJjbGVhckFjdGl2ZSIsIm9ic2VydmF0aW9uIiwiUmVzaXplT2JzZXJ2ZXIiLCJjcmVhdGVEZXNjIiwiSU9iamVjdCIsImRlZmluZWQiLCJiYXNlSXNOYXRpdmUiLCJnZXRWYWx1ZSIsInByb3BJc0VudW1lcmFibGUiLCJ0ZXN0MSIsInRlc3QyIiwiZnJvbUNoYXJDb2RlIiwidGVzdDMiLCJsZXR0ZXIiLCJzaG91bGRVc2VOYXRpdmUiLCJiaXRtYXAiLCJnZXRQYXRoVmFsdWUiLCJyZWNvcmQiLCJwYXRoTGlzdCIsImdldENvbHVtbnNLZXkiLCJjb2x1bW5zIiwiY29sdW1uS2V5cyIsImNvbHVtbiIsImRhdGFJbmRleCIsIm1lcmdlZEtleSIsIm1lcmdlT2JqZWN0IiwibWVyZ2VkIiwiZmlsbFByb3BzIiwib2JqZWN0cyIsInZhbGlkYXRlVmFsdWUiLCJnZXRSYXdUYWciLCJvYmplY3RUb1N0cmluZyIsInN5bVRvU3RyaW5nVGFnIiwiQ29uc3VtZXIiLCJvcmlnaW5TaXplIiwiZml4Q29udHJvbGxlZFZhbHVlIiwicmVzb2x2ZU9uQ2hhbmdlIiwiZ2V0SW5wdXRDbGFzc05hbWUiLCJJbnB1dFNpemVzIiwiUHJvcFR5cGVzIiwiX3JlYWN0TGlmZWN5Y2xlc0NvbXBhdCIsIl9vbWl0IiwiX3R5cGUiLCJfQ2xlYXJhYmxlTGFiZWxlZElucHV0IiwiX2NvbmZpZ1Byb3ZpZGVyIiwib25DaGFuZ2UiLCJjdXJyZW50VGFyZ2V0Iiwib3JpZ2luYWxJbnB1dFZhbHVlIiwiSW5wdXQiLCJzYXZlQ2xlYXJhYmxlSW5wdXQiLCJjbGVhcmFibGVJbnB1dCIsInNhdmVJbnB1dCIsImhhbmRsZVJlc2V0Iiwic2V0VmFsdWUiLCJyZW5kZXJJbnB1dCIsImFkZG9uQmVmb3JlIiwiYWRkb25BZnRlciIsIm90aGVyUHJvcHMiLCJoYW5kbGVDaGFuZ2UiLCJvbktleURvd24iLCJoYW5kbGVLZXlEb3duIiwiY2xlYXJQYXNzd29yZFZhbHVlQXR0cmlidXRlIiwicmVtb3ZlUGFzc3dvcmRUaW1lb3V0IiwiZ2V0QXR0cmlidXRlIiwiaGFzQXR0cmlidXRlIiwicmVtb3ZlQXR0cmlidXRlIiwib25QcmVzc0VudGVyIiwicmVuZGVyQ29tcG9uZW50IiwiaW5wdXRUeXBlIiwiaGFzUHJlZml4U3VmZml4IiwiYmx1ciIsInNlbGVjdCIsInByb3BUeXBlcyIsIm9uZU9mIiwibWF4TGVuZ3RoIiwiYm9vbCIsImFueSIsIm9uS2V5VXAiLCJhbGxvd0NsZWFyIiwidG9BcnJheUNoaWxkcmVuIiwiZmluZENoaWxkSW5DaGlsZHJlbkJ5S2V5IiwiZmluZFNob3duQ2hpbGRJbkNoaWxkcmVuQnlLZXkiLCJzaG93UHJvcCIsImlzQXBwZWFyU3VwcG9ydGVkIiwidHJhbnNpdGlvbkFwcGVhciIsImFwcGVhciIsImlzRW50ZXJTdXBwb3J0ZWQiLCJ0cmFuc2l0aW9uRW50ZXIiLCJpc0xlYXZlU3VwcG9ydGVkIiwidHJhbnNpdGlvbkxlYXZlIiwiYWxsb3dBcHBlYXJDYWxsYmFjayIsImFsbG93RW50ZXJDYWxsYmFjayIsImFsbG93TGVhdmVDYWxsYmFjayIsInRyYW5zaXRpb25NYXAiLCJBbmltYXRlQ2hpbGQiLCJhbmltYXRpb25UeXBlIiwiZmluaXNoQ2FsbGJhY2siLCJzdG9wcGVyIiwiYWN0aXZlTmFtZSIsImRlZmF1bHRLZXkiLCJnZXRDaGlsZHJlbkZyb21Qcm9wcyIsIkFuaW1hdGUiLCJjdXJyZW50bHlBbmltYXRpbmdLZXlzIiwia2V5c1RvRW50ZXIiLCJrZXlzVG9MZWF2ZSIsImNoaWxkcmVuUmVmcyIsInBlcmZvcm1BcHBlYXIiLCJfdGhpczMiLCJuZXh0Q2hpbGRyZW4iLCJleGNsdXNpdmUiLCJuZXh0Q2hpbGRyZW5QZW5kaW5nIiwicGVuZGluZ0NoaWxkcmVuIiwiY3VycmVudENoaWxkcmVuIiwibmV3Q2hpbGRyZW4iLCJjdXJyZW50Q2hpbGQiLCJuZXh0Q2hpbGQiLCJuZXdDaGlsZCIsImhhc1ByZXYiLCJzaG93SW5OZXh0IiwiaGFzTmV4dCIsInNob3dJbk5vdyIsInBlcmZvcm1FbnRlciIsInBlcmZvcm1MZWF2ZSIsIl90aGlzNCIsInN0YXRlQ2hpbGRyZW4iLCJwYXNzZWRQcm9wcyIsImNvbXBvbmVudFByb3BzIiwiaXNBbmltYXRlIiwib25lT2ZUeXBlIiwib25FbmQiLCJvbkVudGVyIiwib25MZWF2ZSIsIm9uQXBwZWFyIiwiX3RoaXM1IiwiY29tcG9uZW50V2lsbEVudGVyIiwiaGFuZGxlRG9uZUFkZGluZyIsImNvbXBvbmVudFdpbGxBcHBlYXIiLCJpc1ZhbGlkQ2hpbGRCeUtleSIsImNvbXBvbmVudFdpbGxMZWF2ZSIsImhhbmRsZURvbmVMZWF2aW5nIiwiYzEiLCJjMiIsInNhbWUiLCJjaGlsZDIiLCJjYWNoZWRTZXRUaW1lb3V0IiwiY2FjaGVkQ2xlYXJUaW1lb3V0IiwiZGVmYXVsdFNldFRpbW91dCIsImRlZmF1bHRDbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiY3VycmVudFF1ZXVlIiwicXVldWUiLCJkcmFpbmluZyIsInF1ZXVlSW5kZXgiLCJjbGVhblVwTmV4dFRpY2siLCJkcmFpblF1ZXVlIiwidGltZW91dCIsInJ1biIsIm1hcmtlciIsInJ1bkNsZWFyVGltZW91dCIsIkl0ZW0iLCJuZXh0VGljayIsInRpdGxlIiwiYnJvd3NlciIsImFyZ3YiLCJ2ZXJzaW9ucyIsIm9uIiwiYWRkTGlzdGVuZXIiLCJvbmNlIiwicmVtb3ZlTGlzdGVuZXIiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJlbWl0IiwicHJlcGVuZExpc3RlbmVyIiwicHJlcGVuZE9uY2VMaXN0ZW5lciIsImxpc3RlbmVycyIsImJpbmRpbmciLCJjd2QiLCJjaGRpciIsInVtYXNrIiwiJGtleXMiLCJlbnVtQnVnS2V5cyIsInB4IiwicmFuZG9tIiwiTG9jYWxlUmVjZWl2ZXIiLCJkZWZhdWx0TG9jYWxlIiwiYW50TG9jYWxlIiwibG9jYWxlRnJvbUNvbnRleHQiLCJsb2NhbGVDb2RlIiwiZXhpc3QiLCJnZXRMb2NhbGVDb2RlIiwiY29udGV4dFR5cGVzIiwiX3JlYWN0SXMiLCJpc01lbW8iLCJfdmFsdWVVdGlsIiwiQ2VsbCIsImNlbGxQcm9wcyIsIl9yZWYkY29tcG9uZW50IiwiY29sU3BhbiIsInJvd1NwYW4iLCJmaXhMZWZ0IiwiZml4UmlnaHQiLCJmaXJzdEZpeExlZnQiLCJsYXN0Rml4TGVmdCIsImZpcnN0Rml4UmlnaHQiLCJsYXN0Rml4UmlnaHQiLCJhcHBlbmROb2RlIiwiX3JlZiRhZGRpdGlvbmFsUHJvcHMiLCJhZGRpdGlvbmFsUHJvcHMiLCJlbGxpcHNpcyIsInJvd1R5cGUiLCJpc1N0aWNreSIsImNlbGxQcmVmaXhDbHMiLCJyZW5kZXJEYXRhIiwiY2VsbENvbFNwYW4iLCJjZWxsUm93U3BhbiIsImNlbGxTdHlsZSIsImNlbGxDbGFzc05hbWUiLCJyZXN0Q2VsbFByb3BzIiwibWVyZ2VkQ29sU3BhbiIsIm1lcmdlZFJvd1NwYW4iLCJmaXhlZFN0eWxlIiwiaXNGaXhMZWZ0IiwiaXNGaXhSaWdodCIsImFsaWduU3R5bGUiLCJ0ZXh0QWxpZ24iLCJlbGxpcHNpc0NvbmZpZyIsInNob3dUaXRsZSIsIlJlZkNlbGwiLCJtZW1vIiwic2hvdWxkQ2VsbFVwZGF0ZSIsImxpc3RDYWNoZUNsZWFyIiwibGlzdENhY2hlRGVsZXRlIiwibGlzdENhY2hlR2V0IiwibGlzdENhY2hlSGFzIiwibGlzdENhY2hlU2V0IiwiTGlzdENhY2hlIiwiZXEiLCJuYXRpdmVDcmVhdGUiLCJnZXROYXRpdmUiLCJpc0tleWFibGUiLCJfX2RhdGFfXyIsIl9pdGVyYXRvcjIiLCJfc3ltYm9sMiIsIldQTUxfY29yZSIsImFqYXhJblByb2dyZXNzIiwiY3JlYXRlQWpheCIsImNvbnRlbnRUeXBlIiwidXNlRmV0Y2giLCJ1cmwiLCJhamF4dXJsIiwiaW5pdCIsImhlYWRlcnMiLCJidWlsZEFqYXhQYXlsb2FkIiwiY3VycnlOIiwibm9uY2UiLCJlbmRwb2ludCIsInBheWxvYWQiLCJmZXRjaCIsImNyZWRlbnRpYWxzIiwib2siLCJqc29uIiwic3VjY2VzcyIsInN0YXR1c1RleHQiLCJkb0FqYXgiLCJxdWVyeVN0cmluZyIsImFycmF5Rm9ybWF0IiwiYnVpbGRQYXlsb2FkIiwiX2FycmF5V2l0aEhvbGVzIiwiX25vbkl0ZXJhYmxlUmVzdCIsIm9mZnNldFBhcmVudCIsIl9ib3giLCJhZ2VudCIsInZlbmRvciIsIm9wZXJhIiwiYUZ1bmN0aW9uIiwic2hhcmVkIiwiY29weXJpZ2h0IiwiZFBzIiwiSUVfUFJPVE8iLCJFbXB0eSIsImNyZWF0ZURpY3QiLCJpZnJhbWVEb2N1bWVudCIsImlmcmFtZSIsInNyYyIsImNvbnRlbnRXaW5kb3ciLCJvcGVuIiwid3JpdGUiLCJsdCIsIlByb3BlcnRpZXMiLCJkZWYiLCJUQUciLCJzdGF0IiwiTElCUkFSWSIsIndrc0V4dCIsIiRTeW1ib2wiLCJ3ZWJwYWNrUG9seWZpbGwiLCJwYXRocyIsImNoYW5nZUNvbmZpcm1Mb2NhbGUiLCJuZXdMb2NhbGUiLCJydW50aW1lTG9jYWxlIiwiTW9kYWwiLCJnZXRDb25maXJtTG9jYWxlIiwiX3JlYWN0MiIsIl9pbXBsZW1lbnRhdGlvbjIiLCJnZXRFeHBhbmRhYmxlUHJvcHMiLCJleHBhbmRhYmxlIiwibGVnYWN5RXhwYW5kYWJsZUNvbmZpZyIsImdldERhdGFBbmRBcmlhUHJvcHMiLCJJTlRFUk5BTF9DT0xfREVGSU5FIiwiX3JlYWN0IiwiaXNGcmFnbWVudCIsIl9lbl9VUyIsIl9lbl9VUzIiLCJfZW5fVVMzIiwiX2VuX1VTNCIsInR5cGVUZW1wbGF0ZSIsIlBhZ2luYXRpb24iLCJEYXRlUGlja2VyIiwiVGltZVBpY2tlciIsIkNhbGVuZGFyIiwicGxhY2Vob2xkZXIiLCJUYWJsZSIsImZpbHRlclRpdGxlIiwiZmlsdGVyQ29uZmlybSIsImZpbHRlclJlc2V0IiwiZmlsdGVyRW1wdHlUZXh0IiwiZW1wdHlUZXh0Iiwic2VsZWN0QWxsIiwic2VsZWN0SW52ZXJ0Iiwic2VsZWN0Tm9uZSIsInNlbGVjdGlvbkFsbCIsInNvcnRUaXRsZSIsImV4cGFuZCIsImNvbGxhcHNlIiwidHJpZ2dlckRlc2MiLCJ0cmlnZ2VyQXNjIiwiY2FuY2VsU29ydCIsIm9rVGV4dCIsImNhbmNlbFRleHQiLCJqdXN0T2tUZXh0IiwiUG9wY29uZmlybSIsIlRyYW5zZmVyIiwidGl0bGVzIiwic2VhcmNoUGxhY2Vob2xkZXIiLCJpdGVtVW5pdCIsIml0ZW1zVW5pdCIsInNlbGVjdEN1cnJlbnQiLCJyZW1vdmVDdXJyZW50IiwicmVtb3ZlQWxsIiwiVXBsb2FkIiwidXBsb2FkaW5nIiwicmVtb3ZlRmlsZSIsInVwbG9hZEVycm9yIiwicHJldmlld0ZpbGUiLCJkb3dubG9hZEZpbGUiLCJkZXNjcmlwdGlvbiIsIlRleHQiLCJlZGl0IiwiY29waWVkIiwiUGFnZUhlYWRlciIsImJhY2siLCJvcHRpb25hbCIsInBhcnNlIiwidHlwZXMiLCJpbnRlZ2VyIiwicmVnZXhwIiwiZW1haWwiLCJoZXgiLCJtaXNtYXRjaCIsIkltYWdlIiwicHJldmlldyIsInVzZUxvY2FsZVJlY2VpdmVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9jcmVhdGVDbGFzczIiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZVN1cGVyMiIsIndpdGhDb25maWdDb25zdW1lciIsIlNGQyIsImNvbmZpZ1Byb3BzIiwiYmFzaWNQcmVmaXhDbHMiLCJjb25zIiwiX3JlbmRlckVtcHR5IiwiX2NvbG9ycyIsInVzZUluc2VydFN0eWxlcyIsImljb25TdHlsZXMiLCJfZHluYW1pY0NTUyIsImNsYXNzIiwiZmlsbCIsImZvY3VzYWJsZSIsInN0eWxlU3RyIiwiX3VzZUNvbnRleHQiLCJ1cGRhdGVDU1MiLCJwcmVwZW5kIiwiZ2V0Q29sbGFwc2VkSGVpZ2h0IiwiZ2V0UmVhbEhlaWdodCIsInNraXBPcGFjaXR5VHJhbnNpdGlvbiIsImNvbGxhcHNlTW90aW9uIiwiYXJyRGVsIiwiYXJyQWRkIiwicG9zVG9BcnIiLCJnZXRQb3NpdGlvbiIsImxldmVsIiwiaXNUcmVlTm9kZSIsImdldERyYWdDaGlsZHJlbktleXMiLCJkcmFnTm9kZUtleSIsImRyYWdDaGlsZHJlbktleXMiLCJkaWciLCJpc0xhc3RDaGlsZCIsImlzRmlyc3RDaGlsZCIsImNhbGNEcm9wUG9zaXRpb24iLCJkcmFnTm9kZSIsInRhcmdldE5vZGUiLCJpbmRlbnQiLCJzdGFydE1vdXNlUG9zaXRpb24iLCJhbGxvd0Ryb3AiLCJmbGF0dGVuZWROb2RlcyIsImV4cGFuZEtleXMiLCJfYWJzdHJhY3REcm9wTm9kZUVudGkiLCJfZXZlbnQkdGFyZ2V0JGdldEJvdW4iLCJyYXdEcm9wTGV2ZWxPZmZzZXQiLCJhYnN0cmFjdERyb3BOb2RlRW50aXR5IiwiZXZlbnRLZXkiLCJub2RlSW5kZXgiLCJmaW5kSW5kZXgiLCJmbGF0dGVuZWROb2RlIiwicHJldk5vZGVLZXkiLCJpbml0aWFsQWJzdHJhY3REcm9wTm9kZUtleSIsImFic3RyYWN0RHJhZ092ZXJFbnRpdHkiLCJkcmFnT3Zlck5vZGVLZXkiLCJkcm9wUG9zaXRpb24iLCJkcm9wTGV2ZWxPZmZzZXQiLCJhYnN0cmFjdERyb3BEYXRhTm9kZSIsImRyb3BBbGxvd2VkIiwiZHJvcE5vZGUiLCJkcm9wVGFyZ2V0S2V5IiwiZHJvcFRhcmdldFBvcyIsImRyb3BDb250YWluZXJLZXkiLCJjYWxjU2VsZWN0ZWRLZXlzIiwic2VsZWN0ZWRLZXlzIiwibXVsdGlwbGUiLCJjb252ZXJ0RGF0YVRvVHJlZSIsInRyZWVEYXRhIiwicHJvY2Vzc29yIiwiX3JlZjIkcHJvY2Vzc1Byb3BzIiwicHJvY2Vzc1Byb3BzIiwiaW50ZXJuYWxQcm9jZXNzUHJvcHMiLCJjaGlsZHJlbk5vZGVzIiwiX1RyZWVOb2RlIiwicGFyc2VDaGVja2VkS2V5cyIsImtleVByb3BzIiwiY2hlY2tlZEtleXMiLCJoYWxmQ2hlY2tlZEtleXMiLCJjaGVja2VkIiwiaGFsZkNoZWNrZWQiLCJjb25kdWN0RXhwYW5kUGFyZW50Iiwia2V5TGlzdCIsImV4cGFuZGVkS2V5cyIsIlNldCIsImNvbmR1Y3RVcCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJnZXREYXRhQW5kQXJpYSIsIm9taXRQcm9wcyIsInN0YXJ0c1dpdGgiLCJ0cmVlTm9kZUVudGl0eSIsInBvc0FyciIsImRlZmF1bHRTdGF0ZVZhbHVlIiwicG9zdFN0YXRlIiwidXNlU3RhdGUiLCJpbm5lclZhbHVlIiwic2V0SW5uZXJWYWx1ZSIsIm1lcmdlZFZhbHVlIiwiZmlyc3RSZW5kZXJSZWYiLCJuZXdWYWx1ZSIsImlubGluZUNvbGxhcHNlZCIsIl9yY0NoZWNrYm94IiwiX2Rldldhcm5pbmciLCJJbnRlcm5hbFJhZGlvIiwiX1JlYWN0JHVzZUNvbnRleHQiLCJpbm5lclJlZiIsIm1lcmdlZFJlZiIsInJhZGlvUHJvcHMiLCJ3cmFwcGVyQ2xhc3NTdHJpbmciLCJSYWRpbyIsIlJhZGlvR3JvdXBDb250ZXh0UHJvdmlkZXIiLCJSYWRpb0dyb3VwQ29udGV4dCIsImdldENvbHVtbktleSIsImdldENvbHVtblBvcyIsInJlbmRlckNvbHVtblRpdGxlIiwidmFsaWRQcm9ncmVzcyIsInByb2dyZXNzIiwiaXNLZXkiLCJzdHJpbmdUb1BhdGgiLCJiYXNlR2V0VGFnIiwiaXNPYmplY3RMaWtlIiwiaXNTeW1ib2wiLCJfZXh0ZW5kczMiLCJhcmd1bWVudENvbnRhaW5lciIsIkNvbnRhaW5lciIsIldyYXBwZWRDb21wb25lbnQiLCJnZXREaXNwbGF5TmFtZSIsIl9ob2lzdE5vblJlYWN0U3RhdGljczIiLCJpZGVudGl0eSIsImZsYXR0ZW5BcnJheSIsInRyZWVUcmF2ZXJzZSIsImZsYXR0ZW5GaWVsZHMiLCJtYXliZU5lc3RlZEZpZWxkcyIsImlzTGVhZk5vZGUiLCJlcnJvck1lc3NhZ2UiLCJub3JtYWxpemVWYWxpZGF0ZVJ1bGVzIiwidmFsaWRhdGUiLCJydWxlcyIsInZhbGlkYXRlVHJpZ2dlciIsInZhbGlkYXRlUnVsZXMiLCJuZXdJdGVtIiwiZ2V0VmFsaWRhdGVUcmlnZ2VycyIsInByZSIsImN1cnIiLCJnZXRWYWx1ZUZyb21FdmVudCIsImdldEVycm9yU3RycyIsImdldFBhcmFtcyIsIm9wdCIsImhhc1J1bGVzIiwibGFzdEluZGV4T2YiLCJfd2FybmluZzIiLCJ0cmVlIiwic3ViVHJlZSIsInN1YlRyZWVLZXkiLCJleHRlbmRTdGF0aWNzIiwiX19leHRlbmRzIiwiTWluaVN0b3JlQ29udGV4dCIsIl9fYXNzaWduIiwiZGVmYXVsdE1hcFN0YXRlVG9Qcm9wcyIsImNvbm5lY3QiLCJtYXBTdGF0ZVRvUHJvcHMiLCJzaG91bGRTdWJzY3JpYmUiLCJmaW5hbE1hcFN0YXRlVG9Qcm9wcyIsIkNvbm5lY3QiLCJ1bnN1YnNjcmliZSIsImdldFN0YXRlIiwic3Vic2NyaWJlZCIsImNvbXBvbmVudERpZE1vdW50IiwidHJ5U3Vic2NyaWJlIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJ0cnlVbnN1YnNjcmliZSIsInNob3VsZENvbXBvbmVudFVwZGF0ZSIsInN1YnNjcmliZSIsIm1pbmlTdG9yZUZvcndhcmRlZFJlZiIsImZvcndhcmRlZCIsIm9taXQiLCJjcmVhdGVDaGFpbmVkRnVuY3Rpb24iLCJhcHBsZVBob25lIiwiYXBwbGVJcG9kIiwiYXBwbGVUYWJsZXQiLCJhbmRyb2lkUGhvbmUiLCJhbmRyb2lkVGFibGV0IiwiYW1hem9uUGhvbmUiLCJhbWF6b25UYWJsZXQiLCJ3aW5kb3dzUGhvbmUiLCJ3aW5kb3dzVGFibGV0Iiwib3RoZXJCbGFja2JlcnJ5Iiwib3RoZXJCbGFja2JlcnJ5MTAiLCJvdGhlck9wZXJhIiwib3RoZXJDaHJvbWUiLCJvdGhlckZpcmVmb3giLCJ1YSIsIl90bXAiLCJfdG1wMyIsImFwcGxlIiwicGhvbmUiLCJpcG9kIiwidGFibGV0IiwiZGV2aWNlIiwiYW1hem9uIiwiYW5kcm9pZCIsIndpbmRvd3MiLCJibGFja2JlcnJ5IiwiYmxhY2tiZXJyeTEwIiwiZmlyZWZveCIsImNocm9tZSIsImdldEtleUZyb21DaGlsZHJlbkluZGV4IiwibWVudUV2ZW50S2V5IiwiZ2V0TWVudUlkRnJvbVN1Yk1lbnVFdmVudEtleSIsImxvb3BNZW51SXRlbSIsImlzTWVudUl0ZW1Hcm91cCIsIm1lbnVBbGxQcm9wcyIsImdldFdpZHRoIiwiX2dldENvbXB1dGVkU3R5bGUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJzdHlsZVByb3BlcnR5IiwiYXV0b0FkanVzdE92ZXJmbG93IiwidG9wTGVmdCIsImJvdHRvbUxlZnQiLCJsZWZ0VG9wIiwicmlnaHRUb3AiLCJwbGFjZW1lbnRzUnRsIiwiZ3VpZCIsInBvcHVwUGxhY2VtZW50TWFwIiwiaG9yaXpvbnRhbCIsInZlcnRpY2FsIiwiZGVmYXVsdEFjdGl2ZUZpcnN0IiwibWVudUlkIiwiU3ViTWVudSIsIm9uRGVzdHJveSIsIm1lbnUiLCJtZW51SW5zdGFuY2UiLCJnZXRWaXNpYmxlIiwib25UaXRsZUNsaWNrIiwidHJpZ2dlck9wZW5DaGFuZ2UiLCJoYW5kbGVkIiwib25PcGVuQ2hhbmdlIiwiZG9tRXZlbnQiLCJwYXJlbnRNZW51Iiwic3ViTWVudUluc3RhbmNlIiwib25UaXRsZU1vdXNlRW50ZXIiLCJvbkl0ZW1Ib3ZlciIsImhvdmVyIiwib25UaXRsZU1vdXNlTGVhdmUiLCJ0cmlnZ2VyU3ViTWVudUFjdGlvbiIsIm9uU3ViTWVudUNsaWNrIiwiYWRkS2V5UGF0aCIsIm9uU2VsZWN0Iiwib25EZXNlbGVjdCIsImdldEFjdGl2ZUNsYXNzTmFtZSIsImdldERpc2FibGVkQ2xhc3NOYW1lIiwiZ2V0U2VsZWN0ZWRDbGFzc05hbWUiLCJnZXRPcGVuQ2xhc3NOYW1lIiwiaXNPcGVuIiwiZ2V0TW9kZSIsInNhdmVNZW51SW5zdGFuY2UiLCJrZXlQYXRoIiwib3BlbkNoYW5nZSIsIm1vdXNlZW50ZXJUaW1lb3V0IiwiaXNDaGlsZHJlblNlbGVjdGVkIiwibG9vcE1lbnVJdGVtUmVjdXJzaXZlbHkiLCJpc1N1Yk1lbnUiLCJpc01lbnVJdGVtIiwiaXNJbmxpbmVNb2RlIiwiYWRqdXN0V2lkdGgiLCJzdWJNZW51VGl0bGUiLCJwb3B1cE1lbnUiLCJzYXZlU3ViTWVudVRpdGxlIiwiZ2V0QmFzZVByb3BzIiwibWVyZ2VkTW9kZSIsImlubGluZUluZGVudCIsIm9wZW5LZXlzIiwic3ViTWVudU9wZW5EZWxheSIsInN1Yk1lbnVDbG9zZURlbGF5IiwiZm9yY2VTdWJNZW51UmVuZGVyIiwiaW50ZXJuYWxNZW51SWQiLCJtYW51YWxSZWYiLCJpdGVtSWNvbiIsImV4cGFuZEljb24iLCJoYXZlUmVuZGVyZWQiLCJpc1Jvb3RNZW51IiwidXBkYXRlU3RhdGUiLCJpc09wZW5DaGFuZ2VkIiwiaXNNb2RlQ2hhbmdlZCIsInVwZGF0ZVN0YXRlUmFmIiwibWluV2lkdGhUaW1lb3V0IiwiYmFzZVByb3BzIiwibWVyZ2VkTW90aW9uIiwiaGF2ZU9wZW5lZCIsInNoYXJlZENsYXNzTmFtZSIsInJlbmRlclBvcHVwTWVudSIsIl9jbGFzc05hbWVzMiIsIl9wcm9wcyRwYXJlbnRNZW51IiwiX2NsYXNzTmFtZXMzIiwiaW5saW5lIiwibW91c2VFdmVudHMiLCJ0aXRsZUNsaWNrRXZlbnRzIiwidGl0bGVNb3VzZUV2ZW50cyIsImlzUlRMIiwicGFkZGluZ1JpZ2h0IiwicGFkZGluZ0xlZnQiLCJhcmlhT3ducyIsInJlbmRlckNoaWxkcmVuIiwidHJpZ2dlck5vZGUiLCJwb3B1cE9mZnNldCIsImNvbm5lY3RlZCIsImFjdGl2ZUtleSIsInN1Yk1lbnVLZXkiLCJET01XcmFwIiwibXV0YXRpb25PYnNlcnZlciIsIm9yaWdpbmFsVG90YWxXaWR0aCIsIm92ZXJmbG93ZWRJdGVtcyIsIm1lbnVJdGVtU2l6ZXMiLCJjYW5jZWxGcmFtZUlkIiwibGFzdFZpc2libGVJbmRleCIsImNoaWxkUmVmIiwiZ2V0TWVudUl0ZW1Ob2RlcyIsInVsIiwiZ2V0T3ZlcmZsb3dlZFN1Yk1lbnVJdGVtIiwia2V5UHJlZml4IiwicmVuZGVyUGxhY2Vob2xkZXIiLCJvdmVyZmxvd2VkSW5kaWNhdG9yIiwiX2NvcHkkcHJvcHMiLCJwcm9wU3R5bGUiLCJyZXN0Iiwic2V0Q2hpbGRyZW5XaWR0aEFuZFJlc2l6ZSIsInVsQ2hpbGRyZW5Ob2RlcyIsImxhc3RPdmVyZmxvd2VkSW5kaWNhdG9yUGxhY2Vob2xkZXIiLCJtZW51SXRlbU5vZGVzIiwib3ZlcmZsb3dlZEluZGljYXRvcldpZHRoIiwiY3VyIiwiaGFuZGxlUmVzaXplIiwiY3VycmVudFN1bVdpZHRoIiwibGlXaWR0aCIsIm1lbnVVbCIsIm92ZXJmbG93ZWQiLCJUYWciLCJ1cGRhdGVBY3RpdmVLZXkiLCJnZXRFdmVudEtleSIsImdldEFjdGl2ZUtleSIsIm9yaWdpbmFsQWN0aXZlS2V5IiwiZm91bmQiLCJzYXZlUmVmIiwiaW5zdGFuY2VBcnJheSIsIlN1YlBvcHVwTWVudSIsImdldEZsYXRJbnN0YW5jZUFycmF5IiwiYWN0aXZlSXRlbSIsInNlbGVjdEluZm8iLCJyZXZlcnNlIiwiYWN0aXZlSW5kZXgiLCJldmVyeSIsImNpIiwicmVuZGVyQ29tbW9uTWVudUl0ZW0iLCJleHRyYVByb3BzIiwiY2hpbGRQcm9wcyIsInJlbmRlck1lbnVJdGVtIiwiZG9tUHJvcHMiLCJtZW51TW9kZSIsIl9yZWYkZGVmYXVsdE1vdGlvbnMiLCJkZWZhdWx0TW90aW9ucyIsIm9wZW5BbmltYXRpb24iLCJvcGVuVHJhbnNpdGlvbk5hbWUiLCJzd2l0Y2hpbmdNb2RlRnJvbUlubGluZSIsImRlZmF1bHRNb3Rpb24iLCJNZW51Iiwic2VsZWN0YWJsZSIsIl9zZWxlY3RlZEtleXMiLCJzZWxlY3RlZEtleSIsImdldFJlYWxNZW51TW9kZSIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZTIiLCJpbm5lck1lbnUiLCJnZXRXcmFwcGVkSW5zdGFuY2UiLCJjaGFuZ2VkIiwicHJvY2Vzc1NpbmdsZSIsIm9uZUNoYW5nZWQiLCJfc2VsZWN0ZWRLZXlzMiIsInJlc3RvcmVNb2RlVmVydGljYWxGcm9tSW5saW5lIiwib25UcmFuc2l0aW9uRW5kIiwid2lkdGhDb2xsYXBzZWQiLCJjbGFzc05hbWVWYWx1ZSIsImFuaW1WYWwiLCJpY29uU2NhbGVkIiwic2V0SW5uZXJNZW51IiwiaW5pdGlhbFN0YXRlIiwiZGVmYXVsdFNlbGVjdGVkS2V5cyIsImRlZmF1bHRPcGVuS2V5cyIsInBhcnRpYWwiLCJsaXN0ZW5lciIsImlubGluZU9wZW5LZXlzIiwidXBkYXRlTWluaVN0b3JlIiwidXBkYXRlTWVudURpc3BsYXkiLCJzaWRlckNvbGxhcHNlZCIsImNvbGxhcHNlZFdpZHRoIiwicHJldk9wZW5LZXlzIiwiZ2V0SW5saW5lQ29sbGFwc2VkIiwicHJldlN0b3JlU3RhdGUiLCJuZXdTdG9yZVN0YXRlIiwiTWVudUl0ZW0iLCJpc1NlbGVjdGVkIiwic2F2ZU5vZGUiLCJhdHRyaWJ1dGUiLCJtb3VzZUV2ZW50IiwiTWVudUl0ZW1Hcm91cCIsInJlbmRlcklubmVyTWVudUl0ZW0iLCJfcHJvcHMkY2xhc3NOYW1lIiwidGl0bGVDbGFzc05hbWUiLCJsaXN0Q2xhc3NOYW1lIiwic3RvcFByb3BhZ2F0aW9uIiwiUmVhY3RET00iLCJfcmNBbmltYXRlIiwiX3JvdyIsIl9jb2wiLCJfaWNvbiIsIl9jb25zdGFudHMiLCJWYWxpZGF0ZVN0YXR1c2VzIiwiRm9ybUl0ZW0iLCJoZWxwU2hvdyIsIm9uTGFiZWxDbGljayIsImdldElkIiwiY29udHJvbCIsInF1ZXJ5U2VsZWN0b3IiLCJvbkhlbHBBbmltRW5kIiwicmVuZGVyRm9ybUl0ZW0iLCJfaXRlbUNsYXNzTmFtZSIsIml0ZW1DbGFzc05hbWUiLCJoZWxwIiwidmFsaWRhdGVTdGF0dXMiLCJnZXRDb250cm9scyIsImdldE9ubHlDb250cm9sIiwiZ2V0RmllbGQiLCJyZWN1cnNpdmVseSIsImNvbnRyb2xzIiwiY2hpbGRyZW5BcnJheSIsIkZJRUxEX01FVEFfUFJPUCIsImdldENoaWxkUHJvcCIsIkZJRUxEX0RBVEFfUFJPUCIsInZhbGlkYXRpbmciLCJmaWVsZFZhbHVlIiwiZ2V0TWV0YSIsImluaXRpYWxWYWx1ZSIsImdldEhlbHBNZXNzYWdlIiwiYzMiLCJvbmx5Q29udHJvbCIsImdldFZhbGlkYXRlU3RhdHVzIiwiaGFzRmVlZGJhY2siLCJpY29uVHlwZSIsImNvbnRleHRXcmFwcGVyQ29sIiwid3JhcHBlckNvbCIsIm1lcmdlZFdyYXBwZXJDb2wiLCJjb250ZXh0TGFiZWxBbGlnbiIsImxhYmVsQWxpZ24iLCJjb250ZXh0TGFiZWxDb2wiLCJsYWJlbENvbCIsImNvbnRleHRDb2xvbiIsImNvbG9uIiwiX3RoaXMzJHByb3BzIiwibGFiZWwiLCJodG1sRm9yIiwiaXNSZXF1aXJlZCIsIm1lcmdlZExhYmVsQ29sIiwibWVyZ2VkTGFiZWxBbGlnbiIsImxhYmVsQ2xzQmFzaWMiLCJsYWJlbENvbENsYXNzTmFtZSIsImxhYmVsQ2hpbGRyZW4iLCJjb21wdXRlZENvbG9uIiwidHJpbSIsImxhYmVsQ2xhc3NOYW1lIiwicmVuZGVyTGFiZWwiLCJyZW5kZXJXcmFwcGVyIiwicmVuZGVyVmFsaWRhdGVXcmFwcGVyIiwicmVuZGVySGVscCIsInJlbmRlckV4dHJhIiwiY29kZSIsIjEiLCJfZGVyZXFfIiwiZm9yY2VTaW1pbGFyIiwiMiIsIlNpbWlsYXIiLCJsYXN0SXRlbSIsImlzRXF1YWwiLCJ0aGlzQXJnIiwidmFsMSIsInZhbDIiLCIzIiwiTWFwT3JTaW1pbGFyIiwibW92ZVRvTW9zdFJlY2VudExydSIsImxydSIsImxydVBhdGgiLCJpc01hdGNoIiwibHJ1TGVuIiwibHJ1UGF0aExlbiIsInJlbW92ZUNhY2hlZFJlc3VsdCIsInJlbW92ZWRMcnUiLCJyZW1vdmVkTHJ1TGVuIiwiY3VycmVudExydSIsImNhY2hlSXRlbSIsIm1lbW9pemVyaWZpYyIsIm5ld01hcCIsImZuUmVzdWx0IiwiY3VycmVudENhY2hlIiwiYXJnc0xlbmd0aE1pbnVzT25lIiwiaXNNZW1vaXplZCIsIm51bUFyZ3MiLCJ3YXNNZW1vaXplZCIsInJlYWN0SXMiLCJSRUFDVF9TVEFUSUNTIiwiY2hpbGRDb250ZXh0VHlwZXMiLCJnZXREZWZhdWx0UHJvcHMiLCJnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IiLCJtaXhpbnMiLCJLTk9XTl9TVEFUSUNTIiwiY2FsbGVyIiwiY2FsbGVlIiwiYXJpdHkiLCJNRU1PX1NUQVRJQ1MiLCJUWVBFX1NUQVRJQ1MiLCJnZXRTdGF0aWNzIiwiRm9yd2FyZFJlZiIsIk1lbW8iLCJvYmplY3RQcm90b3R5cGUiLCJob2lzdE5vblJlYWN0U3RhdGljcyIsInRhcmdldENvbXBvbmVudCIsInNvdXJjZUNvbXBvbmVudCIsImJsYWNrbGlzdCIsImluaGVyaXRlZENvbXBvbmVudCIsInRhcmdldFN0YXRpY3MiLCJzb3VyY2VTdGF0aWNzIiwicnVudGltZSIsIk9wIiwiaXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnU3ltYm9sIiwiZGVmaW5lIiwiaW5uZXJGbiIsIm91dGVyRm4iLCJ0cnlMb2NzTGlzdCIsInByb3RvR2VuZXJhdG9yIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiQ29udGV4dCIsIl9pbnZva2UiLCJkb25lUmVzdWx0IiwiZGVsZWdhdGUiLCJkZWxlZ2F0ZVJlc3VsdCIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJDb250aW51ZVNlbnRpbmVsIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJ0cnlDYXRjaCIsIm1ha2VJbnZva2VNZXRob2QiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiSXRlcmF0b3JQcm90b3R5cGUiLCJnZXRQcm90byIsIk5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlIiwiR3AiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJBc3luY0l0ZXJhdG9yIiwiUHJvbWlzZUltcGwiLCJwcmV2aW91c1Byb21pc2UiLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsImludm9rZSIsIl9fYXdhaXQiLCJ1bndyYXBwZWQiLCJyZXN1bHROYW1lIiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsImxvY3MiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXRlcmFibGUiLCJpdGVyYXRvck1ldGhvZCIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJnZW5GdW4iLCJjdG9yIiwiYXdyYXAiLCJhc3luYyIsInBvcCIsInNraXBUZW1wUmVzZXQiLCJyb290UmVjb3JkIiwicnZhbCIsImV4Y2VwdGlvbiIsImxvYyIsImNhdWdodCIsImhhc0NhdGNoIiwiaGFzRmluYWxseSIsImZpbmFsbHlFbnRyeSIsImNvbXBsZXRlIiwiZmluaXNoIiwidGhyb3duIiwiZGVsZWdhdGVZaWVsZCIsInJlZ2VuZXJhdG9yUnVudGltZSIsImFjY2lkZW50YWxTdHJpY3RNb2RlIiwidG9JT2JqZWN0IiwiYXJyYXlJbmRleE9mIiwiY29mIiwidG9JbnRlZ2VyIiwiJGF0IiwiaXRlcmF0ZWQiLCJfdCIsInJlZGVmaW5lIiwiSXRlcmF0b3JzIiwiJGl0ZXJDcmVhdGUiLCJzZXRUb1N0cmluZ1RhZyIsIklURVJBVE9SIiwiQlVHR1kiLCJyZXR1cm5UaGlzIiwiQmFzZSIsIk5BTUUiLCJERUZBVUxUIiwiSVNfU0VUIiwiRk9SQ0VEIiwibWV0aG9kcyIsImdldE1ldGhvZCIsImtpbmQiLCJERUZfVkFMVUVTIiwiVkFMVUVTX0JVRyIsIiRuYXRpdmUiLCIkZGVmYXVsdCIsIiRlbnRyaWVzIiwiJGFueU5hdGl2ZSIsImhpZGRlbktleXMiLCJwSUUiLCJnT1BEIiwicmFuZ2VQbGFjZWhvbGRlciIsInRpbWVQaWNrZXJMb2NhbGUiLCJtb21lbnQiLCJzeW1ib2xNYXAiLCJudW1iZXJNYXAiLCJwbHVyYWxGb3JtIiwicGx1cmFscyIsInBsdXJhbGl6ZSIsIndlZWtkYXlzUGFyc2VFeGFjdCIsInN1ZmZpeGVzIiwiNSIsIjgiLCI3MCIsIjgwIiwiNyIsIjIwIiwiNTAiLCI0IiwiMTAwIiwiNiIsIjkiLCIxMCIsIjMwIiwiNjAiLCI5MCIsInJlbGF0aXZlVGltZVdpdGhQbHVyYWwiLCJmb3JtcyIsInN0YW5kYWxvbmUiLCJsYXN0RGlnaXQiLCJsYXN0MkRpZ2l0cyIsIm1vbnRoc1BhcnNlRXhhY3QiLCJyZWxhdGl2ZVRpbWVXaXRoTXV0YXRpb24iLCJ0ZXh0IiwibXV0YXRpb25UYWJsZSIsInNvZnRNdXRhdGlvbiIsIm11dGF0aW9uIiwibWluV2Vla2RheXNQYXJzZSIsImZ1bGxXZWVrZGF5c1BhcnNlIiwic2hvcnRXZWVrZGF5c1BhcnNlIiwibW9udGhzU3RyaWN0UmVnZXgiLCJtb250aHNTaG9ydFN0cmljdFJlZ2V4IiwibG9uZ01vbnRoc1BhcnNlIiwic2hvcnRNb250aHNQYXJzZSIsImxhc3ROdW1iZXIiLCJ0cmFuc2xhdGUiLCJsbCIsImxsbCIsImxsbGwiLCJwbHVyYWwiLCJwcm9jZXNzUmVsYXRpdmVUaW1lIiwibW9udGhzTm9taW5hdGl2ZUVsIiwibW9udGhzR2VuaXRpdmVFbCIsIm1vbWVudFRvRm9ybWF0IiwiX21vbnRoc0dlbml0aXZlRWwiLCJfbW9udGhzTm9taW5hdGl2ZUVsIiwiY2FsZW5kYXJFbCIsIl9jYWxlbmRhckVsIiwibW9udGhzU2hvcnREb3QiLCJudW1iZXJzUGFzdCIsIm51bWJlcnNGdXR1cmUiLCJ2ZXJiYWxOdW1iZXIiLCJtb250aHNTaG9ydFdpdGhEb3RzIiwibW9udGhzU2hvcnRXaXRob3V0RG90cyIsIndlZWtFbmRpbmdzIiwiZXJhWWVhck9yZGluYWxSZWdleCIsIiQwIiwiJDEiLCIkMiIsIjAiLCI0MCIsImlzVXBwZXIiLCJlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIiLCJ0cmFuc2xhdGVTaW5ndWxhciIsInNwZWNpYWwiLCJyZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIiLCJ0cmFuc2xhdG9yIiwid29yZHMiLCJjb3JyZWN0R3JhbW1hdGljYWxDYXNlIiwid29yZEtleSIsInJlbGF0aXZlVGltZU1yIiwibW9udGhzTm9taW5hdGl2ZSIsIm1vbnRoc1N1YmplY3RpdmUiLCIxMiIsIjEzIiwibnVtYmVyc05vdW5zIiwibnVtYmVyTm91biIsImh1bmRyZWQiLCJ0ZW4iLCJvbmUiLCJ3b3JkIiwibnVtYmVyQXNOb3VuIiwicHJvY2Vzc0hvdXJzRnVuY3Rpb24iLCJub21pbmF0aXZlIiwiYWNjdXNhdGl2ZSIsImdlbml0aXZlIiwiY2FjaGVkIiwiZnJlc2giLCJvdXRlciIsIm91dGVyU3R5bGUiLCJ3aWR0aENvbnRhaW5lZCIsIndpZHRoU2Nyb2xsIiwiX0hlYWRlclJvdyIsIl9UYWJsZUNvbnRleHQiLCJzdGlja3lPZmZzZXRzIiwiZmxhdHRlbkNvbHVtbnMiLCJvbkhlYWRlclJvdyIsInJvd3MiLCJyb290Q29sdW1ucyIsImZpbGxSb3dDZWxscyIsImNvbEluZGV4Iiwicm93SW5kZXgiLCJjdXJyZW50Q29sSW5kZXgiLCJjb2xTcGFucyIsImNlbGwiLCJjb2xTdGFydCIsInN1YkNvbHVtbnMiLCJoYXNTdWJDb2x1bW5zIiwiY29sRW5kIiwicm93Q291bnQiLCJfbG9vcCIsInBhcnNlSGVhZGVyUm93cyIsIldyYXBwZXJDb21wb25lbnQiLCJ0ckNvbXBvbmVudCIsInRoQ29tcG9uZW50Iiwicm93IiwiY2VsbHMiLCJyb3dDb21wb25lbnQiLCJjZWxsQ29tcG9uZW50IiwiZ2V0Q2VsbEZpeGVkSW5mbyIsInN0YXJ0Q29sdW1uIiwiZW5kQ29sdW1uIiwiZml4ZWQiLCJuZXh0Q29sdW1uIiwicHJldkNvbHVtbiIsInByZXZGaXhMZWZ0IiwibmV4dEZpeFJpZ2h0IiwibmV4dEZpeExlZnQiLCJwcmV2Rml4UmlnaHQiLCJfbGVnYWN5VXRpbCIsImNvbFdpZHRocyIsImNvbHMiLCJtdXN0SW5zZXJ0IiwiY29sdW1Db3VudCIsInVuc2hpZnQiLCJfQ2VsbCIsImZpeEhlYWRlciIsImZpeENvbHVtbiIsImhvcml6b25TY3JvbGwiLCJleHBhbmRlZCIsImNvbXBvbmVudFdpZHRoIiwic2Nyb2xsYmFyU2l6ZSIsImNvbnRlbnROb2RlIiwiY29udmVydENoaWxkcmVuVG9Db2x1bW5zIiwiX3RvQXJyYXkiLCJub2RlQ2hpbGRyZW4iLCJmbGF0Q29sdW1ucyIsInBhcnNlZEZpeGVkIiwic3ViQ29sdW0iLCJ0cmFuc2Zvcm1Db2x1bW5zIiwiZ2V0Um93S2V5Iiwib25UcmlnZ2VyRXhwYW5kIiwicm93RXhwYW5kYWJsZSIsImV4cGFuZEljb25Db2x1bW5JbmRleCIsImV4cGFuZFJvd0J5Q2xpY2siLCJjb2x1bW5XaWR0aCIsImJhc2VDb2x1bW5zIiwid2l0aEV4cGFuZENvbHVtbnMiLCJfZXhwYW5kQ29sdW1uIiwiZXhwYW5kQ29sSW5kZXgiLCJleHBhbmRDb2x1bW4iLCJyb3dLZXkiLCJyZWNvcmRFeHBhbmRhYmxlIiwib25FeHBhbmQiLCJjbG9uZUNvbHVtbnMiLCJtZXJnZWRDb2x1bW5zIiwiZmluYWxDb2x1bW5zIiwicmV2ZXJ0Rm9yUnRsIiwidXNlTGF5b3V0U3RhdGUiLCJkZWZhdWx0U3RhdGUiLCJzdGF0ZVJlZiIsImZvcmNlVXBkYXRlIiwibGFzdFByb21pc2VSZWYiLCJ1cGRhdGVCYXRjaFJlZiIsInVwZGF0ZXIiLCJwcm9taXNlIiwicHJldkJhdGNoIiwiYmF0Y2hVcGRhdGVyIiwidXNlVGltZW91dExvY2siLCJmcmFtZVJlZiIsImNsZWFuVXAiLCJpdGVtc19wZXJfcGFnZSIsImp1bXBfdG8iLCJqdW1wX3RvX2NvbmZpcm0iLCJwYWdlIiwicHJldl9wYWdlIiwibmV4dF9wYWdlIiwicHJldl81IiwibmV4dF81IiwicHJldl8zIiwibmV4dF8zIiwieWVhclBsYWNlaG9sZGVyIiwicXVhcnRlclBsYWNlaG9sZGVyIiwibW9udGhQbGFjZWhvbGRlciIsIndlZWtQbGFjZWhvbGRlciIsInJhbmdlWWVhclBsYWNlaG9sZGVyIiwicmFuZ2VNb250aFBsYWNlaG9sZGVyIiwicmFuZ2VXZWVrUGxhY2Vob2xkZXIiLCJfZW1wdHkiLCJfc2ltcGxlIiwiZGVmYXVsdEVtcHR5SW1nIiwic2ltcGxlRW1wdHlJbWciLCJfYSRpbWFnZSIsImltYWdlIiwiaW1hZ2VTdHlsZSIsImRlcyIsImFsdCIsImltYWdlTm9kZSIsIlBSRVNFTlRFRF9JTUFHRV9ERUZBVUxUIiwiUFJFU0VOVEVEX0lNQUdFX1NJTVBMRSIsImdldEtleVRoZW5JbmNyZWFzZUtleSIsImF0dGFjaFR5cGVBcGkiLCJtZXNzYWdlSW5zdGFuY2UiLCJfcmNOb3RpZmljYXRpb24iLCJfTG9hZGluZ091dGxpbmVkIiwiX0V4Y2xhbWF0aW9uQ2lyY2xlRmlsbGVkIiwiX0Nsb3NlQ2lyY2xlRmlsbGVkIiwiX0NoZWNrQ2lyY2xlRmlsbGVkIiwiX0luZm9DaXJjbGVGaWxsZWQiLCJfdXNlTWVzc2FnZSIsImRlZmF1bHRUb3AiLCJtYXhDb3VudCIsImRlZmF1bHREdXJhdGlvbiIsImxvY2FsUHJlZml4Q2xzIiwiaGFzVHJhbnNpdGlvbk5hbWUiLCJnZXRSQ05vdGlmaWNhdGlvbkluc3RhbmNlIiwiX2dsb2JhbENvbmZpZyIsImluc3RhbmNlQ29uZmlnIiwibmV3SW5zdGFuY2UiLCJ0eXBlVG9JY29uIiwibG9hZGluZyIsImdldFJDTm90aWNlUHJvcHMiLCJJY29uQ29tcG9uZW50IiwibWVzc2FnZUNsYXNzIiwiY29udGVudCIsIm9uQ2xvc2UiLCJhcGkiLCJjbG9zZVByb21pc2UiLCJub3RpY2UiLCJyZW1vdmVOb3RpY2UiLCJmaWxsZWQiLCJyZWplY3RlZCIsImRlc3Ryb3kiLCJtZXNzYWdlS2V5Iiwib3JpZ2luYWxBcGkiLCJpc0FyZ3NQcm9wcyIsInVzZU1lc3NhZ2UiLCJ0d29Ub25lQ29sb3JQYWxldHRlIiwiY2FsY3VsYXRlZCIsIkljb25CYXNlIiwiY29sb3JzIiwiZ2V0VHdvVG9uZUNvbG9ycyIsInNldFR3b1RvbmVDb2xvcnMiLCJpbmplY3RDU1MiLCJjb250YWluZXJDYWNoZSIsInBsYWNlaG9sZGVyU3R5bGUiLCJleGlzdE5vZGUiLCJ0YWdOYW1lIiwiX29wdGlvbiRjc3AzIiwiX29wdGlvbiRjc3A0IiwiX29wdGlvbiRjc3A1IiwiaW5uZXJIVE1MIiwibmV3Tm9kZSIsIl9jYW5Vc2VEb20iLCJhdHRhY2hUbyIsIl9vcHRpb24kY3NwIiwiX29wdGlvbiRjc3AyIiwic3R5bGVOb2RlIiwiZmlyc3RDaGlsZCIsImluc2VydEJlZm9yZSIsIm5vdGlmaWNhdGlvbkluc3RhbmNlIiwiY3JlYXRlZFJlZiIsImVsZW1lbnRzIiwic2V0RWxlbWVudHMiLCJub3RpY2VQcm9wcyIsImZpcnN0TW91bnQiLCJkaXYiLCJub3RpY2VFbGUiLCJfTm90aWNlIiwiaG9sZGVyIiwib3JpZ2luRWxlbWVudHMiLCJlbGUiLCJjbG9uZUxpc3QiLCJGcmFnbWVudCIsIl9yY1NlbGVjdCIsIl9pY29uVXRpbCIsIl9tb3Rpb24iLCJJbnRlcm5hbFNlbGVjdCIsIm1lcmdlZE5vdEZvdW5kIiwiX2EkYm9yZGVyZWQiLCJib3JkZXJlZCIsImRyb3Bkb3duQ2xhc3NOYW1lIiwiX2EkbGlzdEhlaWdodCIsImxpc3RIZWlnaHQiLCJfYSRsaXN0SXRlbUhlaWdodCIsImxpc3RJdGVtSGVpZ2h0IiwiY3VzdG9taXplU2l6ZSIsIm5vdEZvdW5kQ29udGVudCIsImdldENvbnRleHRQb3B1cENvbnRhaW5lciIsImlzTXVsdGlwbGUiLCJfZ2V0SWNvbnMiLCJzdWZmaXhJY29uIiwicmVtb3ZlSWNvbiIsImNsZWFySWNvbiIsInNlbGVjdFByb3BzIiwicmNTZWxlY3RSdGxEcm9wRG93bkNsYXNzTmFtZSIsIm1lcmdlZFNpemUiLCJpbnB1dEljb24iLCJtZW51SXRlbVNlbGVjdGVkSWNvbiIsIlNlbGVjdCIsIlNFQ1JFVF9DT01CT0JPWF9NT0RFX0RPX05PVF9VU0UiLCJPcHRpb24iLCJPcHRHcm91cCIsIl9yZXNwb25zaXZlT2JzZXJ2ZSIsInNjcmVlbnMiLCJzZXRTY3JlZW5zIiwic3VwcG9ydFNjcmVlbnMiLCJnZXRLZXkiLCJ3YXJuaW5nV2l0aG91dEtleSIsInRyZWVOb2RlIiwicmVjb3JkS2V5IiwiY29udmVydFRyZWVUb0RhdGEiLCJyb290Tm9kZXMiLCJfdXRpbCIsIl90cmVlTm9kZSRwcm9wcyIsImRhdGFOb2RlIiwicGFyc2VkQ2hpbGRyZW4iLCJmbGF0dGVuVHJlZURhdGEiLCJ0cmVlTm9kZUxpc3QiLCJleHBhbmRlZEtleVNldCIsImZsYXR0ZW5MaXN0IiwiZmxhdHRlbk5vZGUiLCJpc1N0YXJ0IiwiaXNFbmQiLCJ0cmF2ZXJzZURhdGFOb2RlcyIsImNvbnZlcnREYXRhVG9FbnRpdGllcyIsImRhdGFOb2RlcyIsImluaXRXcmFwcGVyIiwicHJvY2Vzc0VudGl0eSIsIm9uUHJvY2Vzc0ZpbmlzaGVkIiwiZXh0ZXJuYWxHZXRLZXkiLCJjaGlsZHJlblByb3BOYW1lIiwibGVnYWN5RXh0ZXJuYWxHZXRLZXkiLCJtZXJnZWRFeHRlcm5hbEdldEtleSIsInBvc0VudGl0aWVzIiwid3JhcHBlciIsInBhcmVudFBvcyIsImdldFRyZWVOb2RlUHJvcHMiLCJsb2FkZWRLZXlzIiwibG9hZGluZ0tleXMiLCJzZWxlY3RlZCIsImxvYWRlZCIsImRyYWdPdmVyIiwiZHJhZ092ZXJHYXBUb3AiLCJkcmFnT3ZlckdhcEJvdHRvbSIsImNvbnZlcnROb2RlUHJvcHNUb0V2ZW50RGF0YSIsImV2ZW50RGF0YSIsInN5bnRoZXRpY0dldEtleSIsImNvbmZpZ1R5cGUiLCJwcm9jZXNzTm9kZSIsInN1Yk5vZGUiLCJzdWJJbmRleCIsIl9DaGVja2JveCIsIl9Hcm91cCIsIkNoZWNrYm94IiwiX19BTlRfQ0hFQ0tCT1giLCJJbnRlcm5hbENoZWNrYm94IiwiX2EkaW5kZXRlcm1pbmF0ZSIsImluZGV0ZXJtaW5hdGUiLCJfYSRza2lwR3JvdXAiLCJza2lwR3JvdXAiLCJjaGVja2JveEdyb3VwIiwiR3JvdXBDb250ZXh0IiwicHJldlZhbHVlIiwicmVnaXN0ZXJWYWx1ZSIsImNhbmNlbFZhbHVlIiwiY2hlY2tib3hQcm9wcyIsInRvZ2dsZU9wdGlvbiIsImNoZWNrYm94Q2xhc3MiLCJfQ29tcG9uZW50IiwibmF0aXZlRXZlbnQiLCJkZWZhdWx0Q2hlY2tlZCIsInJlYWRPbmx5Iiwib25LZXlQcmVzcyIsImF1dG9Gb2N1cyIsIm90aGVycyIsImdsb2JhbFByb3BzIiwiSW50ZXJuYWxDaGVja2JveEdyb3VwIiwiX2Ekb3B0aW9ucyIsIl9SZWFjdCR1c2VTdGF0ZTMiLCJfUmVhY3QkdXNlU3RhdGU0IiwicmVnaXN0ZXJlZFZhbHVlcyIsInNldFJlZ2lzdGVyZWRWYWx1ZXMiLCJnZXRPcHRpb25zIiwiZ3JvdXBQcmVmaXhDbHMiLCJvcHRpb25JbmRleCIsIm9wdHMiLCJwcmV2VmFsdWVzIiwiQ2hlY2tib3hHcm91cCIsIl9yY0Ryb3Bkb3duIiwiX1JpZ2h0T3V0bGluZWQiLCJfZHJvcGRvd25CdXR0b24iLCJfcmVhY3ROb2RlIiwiRHJvcGRvd24iLCJfcHJvcHMkcGxhY2VtZW50IiwiYXJyb3ciLCJvdmVybGF5Q2xhc3NOYW1lIiwiZHJvcGRvd25UcmlnZ2VyIiwib3ZlcmxheUNsYXNzTmFtZUN1c3RvbWl6ZWQiLCJ0cmlnZ2VyQWN0aW9ucyIsIm92ZXJsYXkiLCJvdmVybGF5Tm9kZSIsIm92ZXJsYXlQcm9wcyIsIl9vdmVybGF5UHJvcHMkc2VsZWN0YSIsIl9vdmVybGF5UHJvcHMkZm9jdXNhYiIsIm92ZXJsYXlOb2RlRXhwYW5kSWNvbiIsInJlbmRlck92ZXJsYXkiLCJnZXRQbGFjZW1lbnQiLCJCdXR0b24iLCJfcmNNZW51IiwiX1N1Yk1lbnUiLCJfTWVudUl0ZW0iLCJfU2lkZXIiLCJfTWVudUNvbnRleHQiLCJJbnRlcm5hbE1lbnUiLCJyZW5kZXJNZW51IiwibWVudUNsYXNzTmFtZSIsImFudGRNZW51VGhlbWUiLCJfUmVhY3QkQ29tcG9uZW50MiIsIl9zdXBlcjIiLCJTaWRlckNvbnRleHQiLCJEaXZpZGVyIiwiSXRlbUdyb3VwIiwiX3JjVG9vbHRpcCIsIl91c2VNZXJnZWRTdGF0ZTMiLCJfcGxhY2VtZW50cyIsIlByZXNldENvbG9yUmVnZXgiLCJQcmVzZXRDb2xvclR5cGVzIiwiZ2V0RGlzYWJsZWRDb21wYXRpYmxlQ2hpbGRyZW4iLCJlbGVtZW50VHlwZSIsIl9fQU5UX0JVVFRPTiIsIl9fQU5UX1NXSVRDSCIsIl9zcGxpdE9iamVjdCIsInBpY2tlZCIsIm9taXR0ZWQiLCJzcGxpdE9iamVjdCIsInNwYW5TdHlsZSIsImN1cnNvciIsImJsb2NrIiwiYnV0dG9uU3R5bGUiLCJUb29sdGlwIiwiX3VzZU1lcmdlZFN0YXRlIiwiZGVmYXVsdFZpc2libGUiLCJfdXNlTWVyZ2VkU3RhdGUyIiwic2V0VmlzaWJsZSIsImlzTm9UaXRsZSIsImdldFRvb2x0aXBQbGFjZW1lbnRzIiwiYXJyb3dQb2ludEF0Q2VudGVyIiwib3BlbkNsYXNzTmFtZSIsImdldFRvb2x0aXBDb250YWluZXIiLCJjb2xvciIsIm92ZXJsYXlJbm5lclN0eWxlIiwidGVtcFZpc2libGUiLCJhcnJvd0NvbnRlbnRTdHlsZSIsImNoaWxkQ2xzIiwiY3VzdG9tT3ZlcmxheUNsYXNzTmFtZSIsImZvcm1hdHRlZE92ZXJsYXlJbm5lclN0eWxlIiwiYmFja2dyb3VuZCIsIm9uVmlzaWJsZUNoYW5nZSIsInZpcyIsInRyYW5zZm9ybU9yaWdpbiIsImFycm93Q29udGVudCIsIl9CYXJzT3V0bGluZWQiLCJfTGVmdE91dGxpbmVkIiwiX2xheW91dCIsIl9pc051bWVyaWMiLCJkaW1lbnNpb25NYXhNYXAiLCJ4cyIsInNtIiwibWQiLCJsZyIsInhsIiwieHhsIiwiZ2VuZXJhdGVJZCIsIlNpZGVyIiwiX2EkZGVmYXVsdENvbGxhcHNlZCIsImRlZmF1bHRDb2xsYXBzZWQiLCJfYSR0aGVtZSIsIl9hJHN0eWxlIiwiX2EkY29sbGFwc2libGUiLCJjb2xsYXBzaWJsZSIsIl9hJHJldmVyc2VBcnJvdyIsInJldmVyc2VBcnJvdyIsIl9hJHdpZHRoIiwiX2EkY29sbGFwc2VkV2lkdGgiLCJ6ZXJvV2lkdGhUcmlnZ2VyU3R5bGUiLCJicmVha3BvaW50Iiwib25Db2xsYXBzZSIsIm9uQnJlYWtwb2ludCIsInNpZGVySG9vayIsIkxheW91dENvbnRleHQiLCJjb2xsYXBzZWQiLCJzZXRDb2xsYXBzZWQiLCJiZWxvdyIsInNldEJlbG93IiwiaGFuZGxlU2V0Q29sbGFwc2VkIiwicmVzcG9uc2l2ZUhhbmRsZXJSZWYiLCJtcWwiLCJyZXNwb25zaXZlSGFuZGxlciIsIm1hdGNoTWVkaWEiLCJ1bmlxdWVJZCIsImFkZFNpZGVyIiwicmVtb3ZlU2lkZXIiLCJkaXZQcm9wcyIsInJhd1dpZHRoIiwic2lkZXJXaWR0aCIsInplcm9XaWR0aFRyaWdnZXIiLCJkZWZhdWx0VHJpZ2dlciIsInRyaWdnZXJEb20iLCJkaXZTdHlsZSIsInNpZGVyQ2xzIiwidG9nZ2xlIiwiZmxleCIsIm1heFdpZHRoIiwiX2dyb3VwIiwiX3JhZGlvQnV0dG9uIiwiX3JhZGlvIiwiZnVuY1RvU3RyaW5nIiwibWFwQ2FjaGVDbGVhciIsIm1hcENhY2hlRGVsZXRlIiwibWFwQ2FjaGVHZXQiLCJtYXBDYWNoZUhhcyIsIm1hcENhY2hlU2V0IiwiTWFwQ2FjaGUiLCJTZXRDYWNoZSIsImFycmF5U29tZSIsImNhY2hlSGFzIiwiYml0bWFzayIsImN1c3RvbWl6ZXIiLCJlcXVhbEZ1bmMiLCJpc1BhcnRpYWwiLCJvdGhMZW5ndGgiLCJhcnJTdGFja2VkIiwib3RoU3RhY2tlZCIsInNlZW4iLCJhcnJWYWx1ZSIsIm90aFZhbHVlIiwiY29tcGFyZWQiLCJvdGhJbmRleCIsInN0dWJGYWxzZSIsImZyZWVFeHBvcnRzIiwiZnJlZU1vZHVsZSIsIkJ1ZmZlciIsImlzQnVmZmVyIiwiYmFzZUlzVHlwZWRBcnJheSIsImJhc2VVbmFyeSIsIm5vZGVVdGlsIiwibm9kZUlzVHlwZWRBcnJheSIsImlzVHlwZWRBcnJheSIsIl9JbnB1dCIsIkNsZWFyYWJsZUlucHV0VHlwZSIsIkNsZWFyYWJsZUxhYmVsZWRJbnB1dCIsInJlbmRlckNsZWFySWNvbiIsInJlbmRlclN1ZmZpeCIsImFmZml4V3JhcHBlckNscyIsImxhYmVsZWRFbGVtZW50Iiwid3JhcHBlckNsYXNzTmFtZSIsImFkZG9uQ2xhc3NOYW1lIiwiYWRkb25CZWZvcmVOb2RlIiwiYWRkb25BZnRlck5vZGUiLCJtZXJnZWRXcmFwcGVyQ2xhc3NOYW1lIiwibWVyZ2VkR3JvdXBDbGFzc05hbWUiLCJyZW5kZXJUZXh0QXJlYVdpdGhDbGVhckljb24iLCJyZW5kZXJJbnB1dFdpdGhMYWJlbCIsInJlbmRlckxhYmVsZWRJY29uIiwicmVuZGVyQ2xlYXJhYmxlTGFiZWxlZElucHV0IiwiX3JhZiIsImlkcyIsImRlbGF5RnJhbWVzIiwibXlJZCIsInJlc3RGcmFtZXMiLCJpbnRlcm5hbENhbGxiYWNrIiwicGlkIiwidmVuZG9ycyIsImxhc3QiLCJfbm93IiwiY3AiLCJjYW5jZWxsZWQiLCJfUm93Q29udGV4dCIsIlJvd0FsaWducyIsIlJvd0p1c3RpZnkiLCJSb3ciLCJyZW5kZXJSb3ciLCJqdXN0aWZ5IiwiZ3V0dGVyIiwiZ2V0R3V0dGVyIiwicm93U3R5bGUiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJyZXNwb25zaXZlQXJyYXkiLCJvYmplY3RPck51bWJlciIsIkNvbCIsInJlbmRlckNvbCIsInNwYW4iLCJvcmRlciIsInB1bGwiLCJzaXplQ2xhc3NPYmoiLCJzaXplUHJvcHMiLCJwcm9wU2l6ZSIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwiZGVzdHJveUZucyIsIl9yY0RpYWxvZyIsIl9hZGRFdmVudExpc3RlbmVyIiwibW91c2VQb3NpdGlvbiIsImhhbmRsZUNhbmNlbCIsIm9uQ2FuY2VsIiwiaGFuZGxlT2siLCJvbk9rIiwicmVuZGVyRm9vdGVyIiwib2tUeXBlIiwiY29uZmlybUxvYWRpbmciLCJjYW5jZWxCdXR0b25Qcm9wcyIsIm9rQnV0dG9uUHJvcHMiLCJyZW5kZXJNb2RhbCIsImZvb3RlciIsIndyYXBDbGFzc05hbWUiLCJjZW50ZXJlZCIsImNsb3NlSWNvbiIsImRlZmF1bHRGb290ZXIiLCJjbG9zZUljb25Ub1JlbmRlciIsImNsb3NhYmxlIiwicmVJc1VpbnQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMzIiwiX2RlZmluZVByb3BlcnR5MyIsIl9leHRlbmRzNiIsIl90b0NvbnN1bWFibGVBcnJheTMiLCJfY3JlYXRlUmVhY3RDbGFzczIiLCJfdW5zYWZlTGlmZWN5Y2xlc1BvbHlmaWxsMiIsIl9hc3luY1ZhbGlkYXRvcjIiLCJfZ2V0MiIsIl9zZXQyIiwiX2VxMiIsIl9jcmVhdGVGaWVsZHNTdG9yZTIiLCJvbkZpZWxkc0NoYW5nZSIsIm9uVmFsdWVzQ2hhbmdlIiwiX29wdGlvbiRtYXBQcm9wcyIsIm1hcFByb3BzIiwibWFwUHJvcHNUb0ZpZWxkcyIsImZpZWxkTmFtZVByb3AiLCJmaWVsZE1ldGFQcm9wIiwiZmllbGREYXRhUHJvcCIsIl9vcHRpb24kZm9ybVByb3BOYW1lIiwiZm9ybVByb3BOYW1lIiwiZm9ybU5hbWUiLCJ3aXRoUmVmIiwiZ2V0SW5pdGlhbFN0YXRlIiwiZmllbGRzU3RvcmUiLCJpbnN0YW5jZXMiLCJjYWNoZWRCaW5kIiwiY2xlYXJlZEZpZWxkTWV0YUNhY2hlIiwicmVuZGVyRmllbGRzIiwiZG9tRmllbGRzIiwiX2ZpZWxkc1N0b3JlIiwic3VibWl0dGluZyIsImNsZWFuVXBVc2VsZXNzRmllbGRzIiwidXBkYXRlRmllbGRzIiwib25Db2xsZWN0Q29tbW9uIiwiZmllbGRNZXRhIiwiZ2V0RmllbGRNZXRhIiwib3JpZ2luYWxQcm9wcyIsIl9maWVsZE1ldGEkb3JpZ2luYWxQciIsImdldEZpZWxkVmFsdWUiLCJ2YWx1ZXNBbGwiLCJnZXRBbGxWYWx1ZXMiLCJ2YWx1ZXNBbGxTZXQiLCJnZXRGb3JtIiwidG91Y2hlZCIsIm9uQ29sbGVjdCIsIm5hbWVfIiwiX29uQ29sbGVjdENvbW1vbiIsInNldEZpZWxkc0FzRGlydHkiLCJuZXdGaWVsZCIsImRpcnR5Iiwic2V0RmllbGRzIiwib25Db2xsZWN0VmFsaWRhdGUiLCJfb25Db2xsZWN0Q29tbW9uMiIsInZhbGlkYXRlRmllbGRzSW50ZXJuYWwiLCJ2YWxpZGF0ZUZpcnN0IiwiZ2V0Q2FjaGVCaW5kIiwib3JpRm4iLCJnZXRGaWVsZERlY29yYXRvciIsImZpZWxkT3B0aW9uIiwiZ2V0RmllbGRQcm9wcyIsImZpZWxkRWxlbSIsImdldEZpZWxkVmFsdWVQcm9wVmFsdWUiLCJ1c2Vyc0ZpZWxkT3B0aW9uIiwidmFsdWVQcm9wTmFtZSIsIl9maWVsZE9wdGlvbiR2YWxpZGF0ZSIsImlucHV0UHJvcHMiLCJ2YWxpZGF0ZVRyaWdnZXJzIiwibWV0YSIsInNldEZpZWxkTWV0YSIsImdldEZpZWxkSW5zdGFuY2UiLCJnZXRSdWxlcyIsImFjdGlvblJ1bGVzIiwiZmxhdHRlblJlZ2lzdGVyZWRGaWVsZHMiLCJjaGFuZ2VkRmllbGRzIiwiZ2V0TmVzdGVkQWxsRmllbGRzIiwic2V0RmllbGRzVmFsdWUiLCJjaGFuZ2VkVmFsdWVzIiwiZmllbGRzTWV0YSIsIm5ld0ZpZWxkcyIsImFsbFZhbHVlcyIsIl9maWVsZE1ldGEiLCJwcmVzZXJ2ZSIsImNsZWFyRmllbGQiLCJyZWNvdmVyQ2xlYXJlZEZpZWxkIiwicmVtb3ZlZExpc3QiLCJnZXRBbGxGaWVsZHNOYW1lIiwicmVzZXRGaWVsZHMiLCJfdGhpczYiLCJfdGhpczciLCJmaWVsZE5hbWVzIiwiX3JlZiRvcHRpb25zIiwiYWxsUnVsZXMiLCJhbGxGaWVsZHMiLCJhbHJlYWR5RXJyb3JzIiwiZ2V0RmllbGRzVmFsdWUiLCJ2YWxpZGF0b3IiLCJtZXNzYWdlcyIsImVycm9yc0dyb3VwIiwiZXJyb3JGaWVsZE5hbWUiLCJmaWVsZE5hbWUiLCJydWxlRmllbGROYW1lIiwicmVzdFBhdGgiLCJleHBpcmVkIiwibm93QWxsRmllbGRzIiwiZmllbGRFcnJvcnMiLCJub3dGaWVsZCIsInZhbGlkYXRlRmllbGRzIiwiX3RoaXM4IiwiX2dldFBhcmFtcyIsIm9sZENiIiwiZ2V0VmFsaWRGaWVsZHNGdWxsTmFtZSIsImdldFZhbGlkRmllbGRzTmFtZSIsImlzU3VibWl0dGluZyIsInN1Ym1pdCIsIl90aGlzOSIsIl9wcm9wcyIsIndyYXBwZWRDb21wb25lbnRSZWYiLCJmb3JtUHJvcHMiLCJ1dGlsIiwiYmFzZVNldCIsIl9jbGFzc0NhbGxDaGVjazMiLCJpc0Zvcm1GaWVsZCIsIkZpZWxkIiwiZ2V0U2Nyb2xsQmFyU2l6ZSIsIkhlYWRlclJvdyIsInJvd1Byb3BzIiwiUm93Q29tcG9uZW50IiwiQ2VsbENvbXBvbmVudCIsImNvbHVtbnNLZXkiLCJjZWxsSW5kZXgiLCJmaXhlZEluZm8iLCJvbkhlYWRlckNlbGwiLCJGaXhlZEhlYWRlciIsIm5vRGF0YSIsIm9mZnNldEhlYWRlciIsInN0aWNreUNsYXNzTmFtZSIsIm9uU2Nyb2xsIiwibWF4Q29udGVudFNjcm9sbCIsImNvbWJpbmF0aW9uU2Nyb2xsQmFyU2l6ZSIsInNjcm9sbFJlZiIsInNldFNjcm9sbFJlZiIsIl9zY3JvbGxSZWYkY3VycmVudCIsIm9uV2hlZWwiLCJkZWx0YVgiLCJzY3JvbGxMZWZ0IiwiX3Njcm9sbFJlZiRjdXJyZW50MiIsImFsbEZsYXR0ZW5Db2x1bW5zV2l0aFdpZHRoIiwibGFzdENvbHVtbiIsIlNjcm9sbEJhckNvbHVtbiIsImNvbHVtbnNXaXRoU2Nyb2xsYmFyIiwiZmxhdHRlbkNvbHVtbnNXaXRoU2Nyb2xsYmFyIiwiaGVhZGVyU3RpY2t5T2Zmc2V0cyIsIm1lcmdlZENvbHVtbldpZHRoIiwidXNlQ29sdW1uV2lkdGgiLCJ0YWJsZUxheW91dCIsIkJvZHlSb3ciLCJvblJvdyIsIl9wcm9wcyRpbmRlbnQiLCJjaGlsZHJlbkNvbHVtbk5hbWUiLCJmaXhlZEluZm9MaXN0IiwiX1JlYWN0JHVzZUNvbnRleHQyIiwiZXhwYW5kYWJsZVR5cGUiLCJyb3dDbGFzc05hbWUiLCJleHBhbmRlZFJvd0NsYXNzTmFtZSIsImluZGVudFNpemUiLCJleHBhbmRlZFJvd1JlbmRlciIsImV4cGFuZFJlbmRlZCIsInNldEV4cGFuZFJlbmRlZCIsInJvd1N1cHBvcnRFeHBhbmQiLCJuZXN0RXhwYW5kYWJsZSIsImhhc05lc3RDaGlsZHJlbiIsIm1lcmdlZEV4cGFuZGFibGUiLCJjb21wdXRlUm93Q2xhc3NOYW1lIiwiZXhwYW5kUm93Tm9kZSIsIm5lc3RSb3dOb2RlIiwiYmFzZVJvd05vZGUiLCJfYWRkaXRpb25hbFByb3BzIiwiYXBwZW5kQ2VsbE5vZGUiLCJhZGRpdGlvbmFsQ2VsbFByb3BzIiwiY29sdW1uQ2xhc3NOYW1lIiwib25DZWxsIiwiZXhwYW5kQ29udGVudCIsImNvbXB1dGVkRXhwYW5kZWRSb3dDbGFzc05hbWUiLCJzdWJSZWNvcmQiLCJzdWJLZXkiLCJNZWFzdXJlQ2VsbCIsImNvbHVtbktleSIsIm9uQ29sdW1uUmVzaXplIiwiY2VsbFJlZiIsInBhZGRpbmciLCJib3JkZXIiLCJCb2R5IiwibWVhc3VyZUNvbHVtbldpZHRoIiwiZW1wdHlOb2RlIiwiX1JlYWN0JHVzZUNvbnRleHQzIiwidGRDb21wb25lbnQiLCJmb250U2l6ZSIsIk1lbW9Cb2R5IiwiY29sdW1uQ291bnQiLCJsZWZ0T2Zmc2V0cyIsInJpZ2h0T2Zmc2V0cyIsIl9lbmQiLCJGb290ZXJDb21wb25lbnRzIiwicmVuZGVyRXhwYW5kSWNvbiIsImV4cGFuZENsYXNzTmFtZSIsInBhZ2VYT2Zmc2V0IiwicGFnZVlPZmZzZXQiLCJzY3JvbGxUb3AiLCJfc2Nyb2xsQm9keVJlZiRjdXJyZW4iLCJfc2Nyb2xsQm9keVJlZiRjdXJyZW4yIiwic2Nyb2xsQm9keVJlZiIsIm9mZnNldFNjcm9sbCIsImJvZHlTY3JvbGxXaWR0aCIsImJvZHlXaWR0aCIsInNjcm9sbEJhcldpZHRoIiwic2Nyb2xsQmFyUmVmIiwiX3VzZUxheW91dFN0YXRlIiwiaXNIaWRkZW5TY3JvbGxCYXIiLCJfdXNlTGF5b3V0U3RhdGUyIiwic2Nyb2xsU3RhdGUiLCJzZXRTY3JvbGxTdGF0ZSIsInJlZlN0YXRlIiwic2V0QWN0aXZlIiwib25Nb3VzZVVwIiwiX3dpbmRvdyIsImJ1dHRvbnMiLCJvbkNvbnRhaW5lclNjcm9sbCIsInRhYmxlT2Zmc2V0VG9wIiwidGFibGVCb3R0b21PZmZzZXQiLCJjdXJyZW50Q2xpZW50T2Zmc2V0Iiwic2V0U2Nyb2xsTGVmdCIsIm9uTW91c2VVcExpc3RlbmVyIiwib25Nb3VzZU1vdmVMaXN0ZW5lciIsIm9uU2Nyb2xsTGlzdGVuZXIiLCJvblJlc2l6ZUxpc3RlbmVyIiwiYm9keU5vZGUiLCJwZXJzaXN0IiwiZGVmYXVsdENvbnRhaW5lciIsIkVNUFRZX0RBVEEiLCJFTVBUWV9TQ1JPTExfVEFSR0VUIiwiTWVtb1RhYmxlQ29udGVudCIsInBpbmdMZWZ0IiwicGluZ1JpZ2h0Iiwic2Nyb2xsIiwic3VtbWFyeSIsInNob3dIZWFkZXIiLCJjb21wb25lbnRzIiwiaW50ZXJuYWxIb29rcyIsImludGVybmFsUmVmcyIsInN0aWNreSIsIm1lcmdlZERhdGEiLCJoYXNEYXRhIiwic2V0U2Nyb2xsYmFyU2l6ZSIsInNjcm9sbFhTdHlsZSIsInNjcm9sbFlTdHlsZSIsInNjcm9sbFRhYmxlU3R5bGUiLCJtZXJnZWRDb21wb25lbnRzIiwiZGVmYXVsdENvbXBvbmVudCIsImV4cGFuZGFibGVDb25maWciLCJleHBhbmRlZFJvd0tleXMiLCJkZWZhdWx0RXhwYW5kZWRSb3dLZXlzIiwiZGVmYXVsdEV4cGFuZEFsbFJvd3MiLCJvbkV4cGFuZGVkUm93c0NoYW5nZSIsIm1lcmdlZEV4cGFuZEljb24iLCJtZXJnZWRDaGlsZHJlbkNvbHVtbk5hbWUiLCJfX1BBUkVOVF9SRU5ERVJfSUNPTl9fIiwiZmluZEFsbENoaWxkcmVuS2V5cyIsImlubmVyRXhwYW5kZWRLZXlzIiwic2V0SW5uZXJFeHBhbmRlZEtleXMiLCJtZXJnZWRFeHBhbmRlZEtleXMiLCJuZXdFeHBhbmRlZEtleXMiLCJoYXNLZXkiLCJfUmVhY3QkdXNlU3RhdGU1IiwiX1JlYWN0JHVzZVN0YXRlNiIsInNldENvbXBvbmVudFdpZHRoIiwiX3VzZUNvbHVtbnMiLCJfdXNlQ29sdW1uczIiLCJjb2x1bW5Db250ZXh0IiwiZnVsbFRhYmxlUmVmIiwic2Nyb2xsSGVhZGVyUmVmIiwiX1JlYWN0JHVzZVN0YXRlNyIsIl9SZWFjdCR1c2VTdGF0ZTgiLCJwaW5nZWRMZWZ0Iiwic2V0UGluZ2VkTGVmdCIsIl9SZWFjdCR1c2VTdGF0ZTkiLCJfUmVhY3QkdXNlU3RhdGUxMCIsInBpbmdlZFJpZ2h0Iiwic2V0UGluZ2VkUmlnaHQiLCJjb2xzV2lkdGhzIiwidXBkYXRlQ29sc1dpZHRocyIsInB1cmVDb2xXaWR0aHMiLCJzdGlja3lSZWYiLCJfdXNlU3RpY2t5IiwiX3JlZiRvZmZzZXRIZWFkZXIiLCJfcmVmJG9mZnNldFNjcm9sbCIsIl9yZWYkZ2V0Q29udGFpbmVyIiwidXNlU3RpY2t5IiwibWF4SGVpZ2h0Iiwid2lkdGhzIiwibmV3V2lkdGhzIiwiX3VzZVRpbWVvdXRMb2NrIiwiX3VzZVRpbWVvdXRMb2NrMiIsInNldFNjcm9sbFRhcmdldCIsImdldFNjcm9sbFRhcmdldCIsImZvcmNlU2Nyb2xsIiwiX3N0aWNreVJlZiRjdXJyZW50IiwibWVyZ2VkU2Nyb2xsTGVmdCIsImNvbXBhcmVUYXJnZXQiLCJ0cmlnZ2VyT25TY3JvbGwiLCJncm91cFRhYmxlTm9kZSIsImJvZHlDb250ZW50IiwiVGFibGVDb21wb25lbnQiLCJtZXJnZWRUYWJsZUxheW91dCIsImhlYWRlclByb3BzIiwiYm9keVRhYmxlIiwiYm9keUNvbEdyb3VwIiwiX3JlZjYiLCJmb290ZXJUYWJsZSIsImN1c3RvbWl6ZVNjcm9sbEJvZHkiLCJfcmVmNyIsImNvbFdpZHRoIiwiYXJpYVByb3BzIiwiZnVsbFRhYmxlIiwiVGFibGVDb250ZXh0VmFsdWUiLCJCb2R5Q29udGV4dFZhbHVlIiwiUmVzaXplQ29udGV4dFZhbHVlIiwiQ29sdW1uIiwiQ29sdW1uR3JvdXAiLCJTdW1tYXJ5IiwiUHJvZmlsZXIiLCJQYW5lbENvbnRlbnQiLCJfaXNBY3RpdmVkIiwiZGVzdHJveUluYWN0aXZlUGFuZWwiLCJjb250ZW50Q2xzIiwiQ29sbGFwc2VQYW5lbCIsIl90ZW1wIiwiaGFuZGxlSXRlbUNsaWNrIiwib25JdGVtQ2xpY2siLCJwYW5lbEtleSIsImhhbmRsZUtleVByZXNzIiwiaGVhZGVyIiwiaGVhZGVyQ2xhc3MiLCJzaG93QXJyb3ciLCJhY2NvcmRpb24iLCJoZWFkZXJDbHMiLCJpdGVtQ2xzIiwiYW5pbWF0ZSIsInNob3ciLCJjdXJyZW50QWN0aXZlS2V5IiwiQ29sbGFwc2UiLCJkZWZhdWx0QWN0aXZlS2V5Iiwib3BlbkFuaW1hdGlvbkZhY3RvcnkiLCJjb2xsYXBzZUNsYXNzTmFtZSIsImdldEl0ZW1zIiwib25DbGlja0l0ZW0iLCJzZXRBY3RpdmVLZXkiLCJnZXROZXdDaGlsZCIsIl9wcm9wczIiLCJfY2hpbGQkcHJvcHMiLCJhcnJheU9mIiwiUGFuZWwiLCJOb3RpY2UiLCJjbG9zZVRpbWVyIiwiY2xlYXJDbG9zZVRpbWVyIiwibm90aWNlS2V5Iiwic3RhcnRDbG9zZVRpbWVyIiwidXBkYXRlTWFyayIsInJlc3RhcnRDbG9zZVRpbWVyIiwiY29tcG9uZW50Q2xhc3MiLCJkYXRhT3JBcmlhQXR0cmlidXRlUHJvcHMiLCJzZWVkIiwiZ2V0VXVpZCIsIk5vdGlmaWNhdGlvbiIsIm5vdGljZXMiLCJob29rUmVmcyIsIm9yaWdpbk5vdGljZSIsImhvbGRlckNhbGxiYWNrIiwicHJldmlvdXNTdGF0ZSIsIm5vdGljZUluZGV4IiwidXBkYXRlZE5vdGljZXMiLCJ1c2VyUGFzc0tleSIsIl9yZWYyJG5vdGljZSIsIm5vdGljZVByb3BzTWFwIiwibm90aWNlS2V5cyIsIl9ub3RpY2Ukb25DbG9zZSIsIl90aGlzMiRub3RpY2VQcm9wc01hcCIsImNhbGxlZCIsIm5vdGlmaWNhdGlvbiIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJ1c2VOb3RpZmljYXRpb24iLCJpY29ucyIsImRlZmluaXRpb25zIiwic3RyaWN0VXJpRW5jb2RlIiwib2JqZWN0QXNzaWduIiwiZGVjb2RlQ29tcG9uZW50IiwiZW5jb2RlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZXh0cmFjdCIsInF1ZXJ5U3RhcnQiLCJmb3JtYXR0ZXIiLCJhY2N1bXVsYXRvciIsInBhcnNlckZvckFycmF5Rm9ybWF0IiwicGFyYW0iLCJrZXlzU29ydGVyIiwiZW5jb2RlckZvckFycmF5Rm9ybWF0IiwicGFyc2VVcmwiLCJxdWVyeSIsImRlYm91bmNlIiwid2FpdCIsImltbWVkaWF0ZSIsInRpbWVzdGFtcCIsImxhdGVyIiwiZGVib3VuY2VkIiwiY2FsbE5vdyIsImZsdXNoIiwic3ltYm9sT2JzZXJ2YWJsZVBvbnlmaWxsIiwib2JzZXJ2YWJsZSIsInJlIiwibm90X3N0cmluZyIsIm5vdF9ib29sIiwibm90X3R5cGUiLCJub3RfcHJpbWl0aXZlIiwibnVtZXJpY19hcmciLCJub3RfanNvbiIsIm1vZHVsbyIsImtleV9hY2Nlc3MiLCJpbmRleF9hY2Nlc3MiLCJzcHJpbnRmIiwic3ByaW50Zl9mb3JtYXQiLCJzcHJpbnRmX3BhcnNlIiwidnNwcmludGYiLCJmbXQiLCJwYXJzZV90cmVlIiwicGgiLCJwYWQiLCJwYWRfY2hhcmFjdGVyIiwicGFkX2xlbmd0aCIsImlzX3Bvc2l0aXZlIiwidHJlZV9sZW5ndGgiLCJwYXJhbV9ubyIsInByZWNpc2lvbiIsInRvRXhwb25lbnRpYWwiLCJ0b1ByZWNpc2lvbiIsInBhZF9jaGFyIiwicmVwZWF0Iiwic3ByaW50Zl9jYWNoZSIsIl9mbXQiLCJhcmdfbmFtZXMiLCJTeW50YXhFcnJvciIsImZpZWxkX2xpc3QiLCJyZXBsYWNlbWVudF9maWVsZCIsImZpZWxkX21hdGNoIiwiX2dldERhdGFPckFyaWFQcm9wcyIsIkFsZXJ0IiwiaGFuZGxlQ2xvc2UiLCJkb20iLCJjbG9zaW5nIiwiYW5pbWF0aW9uRW5kIiwiY2xvc2VkIiwiYWZ0ZXJDbG9zZSIsInJlbmRlckFsZXJ0IiwiY2xvc2VUZXh0IiwiYmFubmVyIiwiX3RoaXMkcHJvcHMkY2xhc3NOYW1lIiwic2hvd0ljb24iLCJpY29uVGhlbWUiLCJhbGVydENscyIsImRhdGFPckFyaWFQcm9wcyIsImljb25Ob2RlIiwiQ2xhc3NMaXN0IiwiY2xhc3NMaXN0IiwicmVtb3ZlTWF0Y2hpbmciLCJfX2ltcG9ydERlZmF1bHQiLCJtb2QiLCJnZW5lcmF0ZV8xIiwicHJlc2V0UHJpbWFyeUNvbG9ycyIsInJlZCIsInZvbGNhbm8iLCJvcmFuZ2UiLCJnb2xkIiwieWVsbG93IiwibGltZSIsImdyZWVuIiwiY3lhbiIsImJsdWUiLCJnZWVrYmx1ZSIsInB1cnBsZSIsIm1hZ2VudGEiLCJncmV5IiwicHJlc2V0UGFsZXR0ZXMiLCJwcmltYXJ5IiwiX2NvbnN0cnVjdCIsIlBhcmVudCIsIkNsYXNzIiwiX3dyYXBOYXRpdmVTdXBlciIsIl9jYWNoZSIsIldyYXBwZXIiLCJBc3luY1ZhbGlkYXRpb25FcnJvciIsIl9FcnJvciIsIl9wZW5kaW5nIiwiZ2V0WWVhciIsInJ1bGVUeXBlIiwidHlwZSQxIiwidmFsaWRhdG9ycyIsImRhdGVPYmplY3QiLCJuZXdNZXNzYWdlcyIsImNsb25lZCIsIlNjaGVtYSIsIl9tZXNzYWdlcyIsInoiLCJzb3VyY2VfIiwib2MiLCJtZXNzYWdlcyQxIiwic2VyaWVzIiwiZ2V0VmFsaWRhdGlvbk1ldGhvZCIsImdldFR5cGUiLCJlcnJvckZpZWxkcyIsImRvSXQiLCJkZWVwIiwiZGVmYXVsdEZpZWxkIiwiYWRkRnVsbGZpZWxkIiwic2NoZW1hIiwic3VwcHJlc3NXYXJuaW5nIiwiZmllbGRzU2NoZW1hIiwiZmllbGRTY2hlbWEiLCJlcnJzIiwiZmluYWxFcnJvcnMiLCJhc3luY1ZhbGlkYXRvciIsIl9lcnJvcnMiLCJtZXNzYWdlSW5kZXgiLCJyZWdpc3RlciIsIl9TZWFyY2giLCJfVGV4dEFyZWEiLCJfUGFzc3dvcmQiLCJTZWFyY2giLCJUZXh0QXJlYSIsIlBhc3N3b3JkIiwiRXhjZXB0aW9uTWFwIiwiSWNvbk1hcCIsIl9ub0ZvdW5kIiwiX3NlcnZlckVycm9yIiwiX3VuYXV0aG9yaXplZCIsIkV4Y2VwdGlvblN0YXR1cyIsIlJlc3VsdCIsImN1c3RvbWl6ZUNsYXNzTmFtZSIsInN1YlRpdGxlIiwiU1ZHQ29tcG9uZW50IiwiaWNvblN0cmluZyIsInJlbmRlckljb24iLCJQUkVTRU5URURfSU1BR0VfNDAzIiwiUFJFU0VOVEVEX0lNQUdFXzQwNCIsIlBSRVNFTlRFRF9JTUFHRV81MDAiLCJfTW9kYWwiLCJfY29uZmlybSIsIm1vZGFsV2FybiIsIm9rQ2FuY2VsIiwiY29uZmlybSIsImRlc3Ryb3lBbGwiLCJyZXF1ZXN0cyIsImdldFJlcXVlc3RLZXkiLCJfcmVmJHVybCIsIl9yZWYkbWV0aG9kIiwiX3JlZiRyZXNwb25zZVR5cGUiLCJyZXNwb25zZVR5cGUiLCJfcmVmJGJvZHkiLCJyZXNvbHZlUmVxdWVzdCIsInJlcXVlc3RLZXkiLCJoYW5kbGVyIiwiZmV0Y2hEZWR1cGUiLCJkZWR1cGVPcHRpb25zIiwiaW5pdFRvVXNlIiwiX29wdHMiLCJfb3B0cyRyZXNwb25zZVR5cGUiLCJfb3B0cyRkZWR1cGUiLCJkZWR1cGUiLCJyZXF1ZXN0S2V5VG9Vc2UiLCJwcm94eVJlcSIsImhhbmRsZXJzIiwicmVxdWVzdEluRmxpZ2h0IiwicmVxdWVzdEhhbmRsZXIiLCJyZXF1ZXN0IiwicmVzcG9uc2VUeXBlVG9Vc2UiLCJGZXRjaENvbnRleHQiLCJzdHJpbmdpZnlJZkpTT04iLCJmZXRjaE9wdGlvbnMiLCJrZXlUb0ZpbmQiLCJIZWFkZXJzIiwia2V5VG9GaW5kTG93ZXJjYXNlIiwiaGVhZGVyS2V5IiwiZ2V0SGVhZGVyIiwiaXNSZWFkUmVxdWVzdCIsIkNBQ0hFX1BPTElDSUVTIiwiZGVmYXVsdE9uRXJyb3IiLCJkZWZhdWx0T25TdWNjZXNzIiwicmVkdWNlciIsImZldGNoaW5nIiwicmVzcG9uc2UiLCJkZWZhdWx0UmVmcmVzaERvRmV0Y2giLCJfcmVmJGxhenkiLCJsYXp5IiwiX3JlZiRyZXF1ZXN0S2V5IiwiX3JlZiRpbml0IiwiX3JlZiRkZWR1cGVPcHRpb25zIiwiX3JlZiRjYWNoZVBvbGljeSIsImNhY2hlUG9saWN5IiwiX3JlZiRjYWNoZVJlc3BvbnNlIiwiY2FjaGVSZXNwb25zZSIsIl9yZWYkb25FcnJvciIsIm9uRXJyb3IiLCJfcmVmJG9uU3VjY2VzcyIsIm9uU3VjY2VzcyIsIl9yZWYkcmVmcmVzaERvRmV0Y2giLCJyZWZyZXNoRG9GZXRjaCIsInJlc3BvbnNlQ2FjaGUiLCJhYm9ydENvbnRyb2xsZXJSZWYiLCJpc0xhenkiLCJjYWNoZVN0cmF0ZWd5IiwiZ2V0RGVmYXVsdENhY2hlU3RyYXRlZ3kiLCJfdXNlUmVkdWNlciIsImRpc3BhdGNoIiwiZmluYWxSZXF1ZXN0S2V5Iiwic2V0RmV0Y2hpbmciLCJzZXRSZXNwb25zZSIsInNldEVycm9yIiwiY2FuY2VsUnVubmluZ1JlcXVlc3QiLCJhYm9ydCIsInNob3VsZENhY2hlUmVzcG9uc2UiLCJkb0ZldGNoIiwiZG9GZXRjaEluaXQiLCJkb0ZldGNoRGVkdXBlT3B0aW9ucyIsIkFib3J0Q29udHJvbGxlciIsImZpbmFsSW5pdCIsImZpbmFsRGVkdXBlT3B0aW9ucyIsInNpZ25hbCIsImNhdGNoIiwiYWJvcnRlZCIsImZpbmFsbHkiLCJjYWNoZWRSZXNwb25zZSIsInEiLCJhYSIsImJhIiwiY2EiLCJlbnF1ZXVlRm9yY2VVcGRhdGUiLCJlbnF1ZXVlUmVwbGFjZVN0YXRlIiwiZW5xdWV1ZVNldFN0YXRlIiwiaXNQdXJlUmVhY3RDb21wb25lbnQiLCJzdXNwZW5zZSIsIl9fc2VsZiIsIl9fc291cmNlIiwiJCR0eXBlb2YiLCJfb3duZXIiLCJlc2NhcGUiLCJlYSIsImZhIiwiZGEiLCJjcmVhdGVSZWYiLCJQdXJlQ29tcG9uZW50IiwiX2NhbGN1bGF0ZUNoYW5nZWRCaXRzIiwiX2N1cnJlbnRWYWx1ZSIsIl9jdXJyZW50VmFsdWUyIiwiX3RocmVhZENvdW50IiwiX2N0b3IiLCJfc3RhdHVzIiwiX3Jlc3VsdCIsInVzZURlYnVnVmFsdWUiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWR1Y2VyIiwiU3RyaWN0TW9kZSIsIlN1c3BlbnNlIiwidW5zdGFibGVfU3VzcGVuc2VMaXN0IiwiY3JlYXRlRmFjdG9yeSIsInVuc3RhYmxlX3dpdGhTdXNwZW5zZUNvbmZpZyIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50RGlzcGF0Y2hlciIsIlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnIiwiUmVhY3RDdXJyZW50T3duZXIiLCJJc1NvbWVSZW5kZXJlckFjdGluZyIsImV4dHJhY3RFdmVudHMiLCJldmVudFR5cGVzIiwicGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMiLCJoYSIsInJlZ2lzdHJhdGlvbk5hbWUiLCJpYSIsImphIiwiZGVwZW5kZW5jaWVzIiwia2EiLCJsYSIsIm1hIiwibmEiLCJvYSIsInBhIiwicWEiLCJzYSIsInRhIiwidmEiLCJ3YSIsInJhIiwieGEiLCJ5YSIsInphIiwiQWEiLCJfZGlzcGF0Y2hMaXN0ZW5lcnMiLCJfZGlzcGF0Y2hJbnN0YW5jZXMiLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsImlzUGVyc2lzdGVudCIsInJlbGVhc2UiLCJCYSIsIkNhIiwiaW5qZWN0RXZlbnRQbHVnaW5PcmRlciIsImluamVjdEV2ZW50UGx1Z2luc0J5TmFtZSIsIkRhIiwic3RhdGVOb2RlIiwiRWEiLCJGYSIsIkdhIiwiSGEiLCJJYSIsIkphIiwiS2EiLCJMYSIsInJldHVybiIsIk1hIiwiZGlzcGF0Y2hDb25maWciLCJOYSIsIl90YXJnZXRJbnN0IiwiT2EiLCJQYSIsIlFhIiwiUmEiLCJTYSIsIlRhIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiVWEiLCJWYSIsIldhIiwiWGEiLCJZYSIsIlphIiwiYWIiLCJiYiIsImRiIiwiZWIiLCJmYiIsInRleHRDb250ZW50IiwiZ2IiLCJoYiIsIkludGVyZmFjZSIsImlzRGVmYXVsdFByZXZlbnRlZCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJyZXR1cm5WYWx1ZSIsImpiIiwiZXZlbnRQb29sIiwia2IiLCJkZXN0cnVjdG9yIiwiaWIiLCJnZXRQb29sZWQiLCJjYW5jZWxCdWJibGUiLCJldmVudFBoYXNlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJpc1RydXN0ZWQiLCJsYiIsIm1iIiwibmIiLCJvYiIsInBiIiwiZG9jdW1lbnRNb2RlIiwicWIiLCJzYiIsInRiIiwidWIiLCJiZWZvcmVJbnB1dCIsImJ1YmJsZWQiLCJjYXB0dXJlZCIsImNvbXBvc2l0aW9uRW5kIiwiY29tcG9zaXRpb25TdGFydCIsImNvbXBvc2l0aW9uVXBkYXRlIiwidmIiLCJ3YiIsInhiIiwiZGV0YWlsIiwieWIiLCJDYiIsIkFiIiwiY2hhciIsIkJiIiwiRGIiLCJFYiIsIkZiIiwiR2IiLCJIYiIsIkliIiwiSmIiLCJLYiIsIkxiIiwiTWIiLCJOYiIsIk9iIiwiUGIiLCJkYXRldGltZSIsInBhc3N3b3JkIiwic2VhcmNoIiwidGVsIiwiUWIiLCJSYiIsInNyY0VsZW1lbnQiLCJjb3JyZXNwb25kaW5nVXNlRWxlbWVudCIsIlNiIiwic2V0QXR0cmlidXRlIiwiVGIiLCJWYiIsIl92YWx1ZVRyYWNrZXIiLCJzdG9wVHJhY2tpbmciLCJVYiIsIldiIiwiWGIiLCJZYiIsIlpiIiwiJGIiLCJhYyIsImJjIiwiY2MiLCJkYyIsImVjIiwiZmMiLCJnYyIsImhjIiwiaWMiLCJqYyIsImtjIiwibGMiLCJtYyIsInBjIiwiX2RlYnVnT3duZXIiLCJfZGVidWdTb3VyY2UiLCJmaWxlTmFtZSIsImxpbmVOdW1iZXIiLCJxYyIsInJjIiwic2MiLCJ0YyIsImFjY2VwdHNCb29sZWFucyIsImF0dHJpYnV0ZU5hbWUiLCJhdHRyaWJ1dGVOYW1lc3BhY2UiLCJtdXN0VXNlUHJvcGVydHkiLCJzYW5pdGl6ZVVSTCIsInhjIiwieWMiLCJ6YyIsInZjIiwid2MiLCJ1YyIsInNldEF0dHJpYnV0ZU5TIiwiQWMiLCJCYyIsIl93cmFwcGVyU3RhdGUiLCJpbml0aWFsQ2hlY2tlZCIsIkNjIiwiY29udHJvbGxlZCIsIkRjIiwiRWMiLCJGYyIsIkdjIiwieGxpbmtIcmVmIiwiSGMiLCJjaGFuZ2UiLCJJYyIsIkpjIiwiS2MiLCJMYyIsIk1jIiwiTmMiLCJPYyIsIlBjIiwiZGV0YWNoRXZlbnQiLCJRYyIsIlJjIiwiYXR0YWNoRXZlbnQiLCJTYyIsIlRjIiwiVWMiLCJWYyIsIl9pc0lucHV0RXZlbnRTdXBwb3J0ZWQiLCJXYyIsInZpZXciLCJYYyIsIkFsdCIsIkNvbnRyb2wiLCJNZXRhIiwiU2hpZnQiLCJZYyIsImdldE1vZGlmaWVyU3RhdGUiLCJaYyIsIiRjIiwiYWQiLCJiZCIsImNkIiwic2NyZWVuWCIsInNjcmVlblkiLCJzaGlmdEtleSIsImJ1dHRvbiIsImZyb21FbGVtZW50IiwidG9FbGVtZW50IiwibW92ZW1lbnRYIiwibW92ZW1lbnRZIiwiZWQiLCJwb2ludGVySWQiLCJwcmVzc3VyZSIsInRhbmdlbnRpYWxQcmVzc3VyZSIsInRpbHRYIiwidGlsdFkiLCJ0d2lzdCIsInBvaW50ZXJUeXBlIiwiaXNQcmltYXJ5IiwiZmQiLCJtb3VzZUVudGVyIiwibW91c2VMZWF2ZSIsInBvaW50ZXJFbnRlciIsInBvaW50ZXJMZWF2ZSIsImdkIiwiYWx0ZXJuYXRlIiwiaGQiLCJqZCIsImtkIiwicmVzcG9uZGVyIiwibGQiLCJlZmZlY3RUYWciLCJvZCIsInFkIiwic2libGluZyIsInBkIiwicmQiLCJhbmltYXRpb25OYW1lIiwiZWxhcHNlZFRpbWUiLCJwc2V1ZG9FbGVtZW50Iiwic2QiLCJjbGlwYm9hcmREYXRhIiwidGQiLCJ1ZCIsImNoYXJDb2RlIiwidmQiLCJFc2MiLCJTcGFjZWJhciIsIkxlZnQiLCJVcCIsIlJpZ2h0IiwiRG93biIsIkRlbCIsIldpbiIsIkFwcHMiLCJTY3JvbGwiLCJNb3pQcmludGFibGVLZXkiLCJ3ZCIsIjE2IiwiMTciLCIxOCIsIjE5IiwiMjciLCIzMiIsIjMzIiwiMzQiLCIzNSIsIjM2IiwiMzciLCIzOCIsIjM5IiwiNDUiLCI0NiIsIjExMiIsIjExMyIsIjExNCIsIjExNSIsIjExNiIsIjExNyIsIjExOCIsIjExOSIsIjEyMCIsIjEyMSIsIjEyMiIsIjEyMyIsIjE0NCIsIjE0NSIsIjIyNCIsInhkIiwibG9jYXRpb24iLCJ5ZCIsImRhdGFUcmFuc2ZlciIsInpkIiwidG91Y2hlcyIsInRhcmdldFRvdWNoZXMiLCJjaGFuZ2VkVG91Y2hlcyIsIkFkIiwiQmQiLCJ3aGVlbERlbHRhWCIsImRlbHRhWSIsIndoZWVsRGVsdGFZIiwid2hlZWxEZWx0YSIsImRlbHRhWiIsImRlbHRhTW9kZSIsIkNkIiwiRGQiLCJFZCIsIkZkIiwiR2QiLCJIZCIsIklkIiwiSmQiLCJLZCIsIkxkIiwiZXZlbnRQcmlvcml0eSIsIk1kIiwiZ2V0RXZlbnRQcmlvcml0eSIsIk5kIiwiT2QiLCJQZCIsInRhcmdldEluc3QiLCJhbmNlc3RvcnMiLCJjb250YWluZXJJbmZvIiwidG9wTGV2ZWxUeXBlIiwiUWQiLCJSZCIsIlNkIiwiVGQiLCJVZCIsIlZkIiwiV2QiLCJYZCIsIllkIiwiWmQiLCJuZXh0U2libGluZyIsImFlIiwiSFRNTElGcmFtZUVsZW1lbnQiLCJocmVmIiwiYmUiLCJjb250ZW50RWRpdGFibGUiLCJjZSIsImRlIiwiZWUiLCJmZSIsImdlIiwiaGUiLCJpZSIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwiYW5jaG9yTm9kZSIsImdldFNlbGVjdGlvbiIsImFuY2hvck9mZnNldCIsImZvY3VzTm9kZSIsImZvY3VzT2Zmc2V0IiwiamUiLCJsZSIsImtlIiwibWUiLCJkZWZhdWx0U2VsZWN0ZWQiLCJuZSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwicGUiLCJxZSIsIlNpbXBsZUV2ZW50UGx1Z2luIiwiRW50ZXJMZWF2ZUV2ZW50UGx1Z2luIiwiQ2hhbmdlRXZlbnRQbHVnaW4iLCJTZWxlY3RFdmVudFBsdWdpbiIsIkJlZm9yZUlucHV0RXZlbnRQbHVnaW4iLCJzZSIsInRlIiwidWUiLCJ2ZSIsIk1TQXBwIiwiZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24iLCJuYW1lc3BhY2VVUkkiLCJ3ZSIsImxhc3RDaGlsZCIsIm5vZGVWYWx1ZSIsInhlIiwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCJib3JkZXJJbWFnZU91dHNldCIsImJvcmRlckltYWdlU2xpY2UiLCJib3JkZXJJbWFnZVdpZHRoIiwiYm94RmxleCIsImJveEZsZXhHcm91cCIsImJveE9yZGluYWxHcm91cCIsImZsZXhHcm93IiwiZmxleFBvc2l0aXZlIiwiZmxleFNocmluayIsImZsZXhOZWdhdGl2ZSIsImZsZXhPcmRlciIsImdyaWRBcmVhIiwiZ3JpZFJvdyIsImdyaWRSb3dFbmQiLCJncmlkUm93U3BhbiIsImdyaWRSb3dTdGFydCIsImdyaWRDb2x1bW4iLCJncmlkQ29sdW1uRW5kIiwiZ3JpZENvbHVtblNwYW4iLCJncmlkQ29sdW1uU3RhcnQiLCJmb250V2VpZ2h0IiwibGluZUNsYW1wIiwibGluZUhlaWdodCIsIm9ycGhhbnMiLCJ0YWJTaXplIiwid2lkb3dzIiwiem9vbSIsImZpbGxPcGFjaXR5IiwiZmxvb2RPcGFjaXR5Iiwic3RvcE9wYWNpdHkiLCJzdHJva2VEYXNoYXJyYXkiLCJzdHJva2VEYXNob2Zmc2V0Iiwic3Ryb2tlTWl0ZXJsaW1pdCIsInN0cm9rZU9wYWNpdHkiLCJzdHJva2VXaWR0aCIsInllIiwiemUiLCJBZSIsInNldFByb3BlcnR5IiwiQ2UiLCJtZW51aXRlbSIsImFyZWEiLCJiciIsImNvbCIsImVtYmVkIiwiaHIiLCJpbWciLCJrZXlnZW4iLCJsaW5rIiwidHJhY2siLCJ3YnIiLCJEZSIsIkVlIiwiRmUiLCJHZSIsIkhlIiwiSWUiLCJKZSIsIktlIiwiX19odG1sIiwiTGUiLCJNZSIsIk5lIiwiT2UiLCJQZSIsIlFlIiwiUmUiLCJTZSIsIl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQiLCJfX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dCIsIlRlIiwiVWUiLCJWZSIsIldlIiwiZ2V0Q2hpbGRDb250ZXh0IiwiWGUiLCJfX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dCIsIlllIiwiWmUiLCJ1bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHkiLCIkZSIsInVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2siLCJhZiIsInVuc3RhYmxlX2NhbmNlbENhbGxiYWNrIiwiYmYiLCJ1bnN0YWJsZV9zaG91bGRZaWVsZCIsImNmIiwidW5zdGFibGVfcmVxdWVzdFBhaW50IiwiZGYiLCJ1bnN0YWJsZV9ub3ciLCJlZiIsInVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsIiwiZmYiLCJ1bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSIsImhmIiwidW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHkiLCJqZiIsInVuc3RhYmxlX05vcm1hbFByaW9yaXR5Iiwia2YiLCJ1bnN0YWJsZV9Mb3dQcmlvcml0eSIsImxmIiwidW5zdGFibGVfSWRsZVByaW9yaXR5IiwibWYiLCJuZiIsIm9mIiwicGYiLCJxZiIsInJmIiwic2YiLCJ0ZiIsInVmIiwidmYiLCJ3ZiIsInhmIiwieWYiLCJ6ZiIsIkFmIiwiQ2YiLCJEZiIsIkVmIiwiRmYiLCJHZiIsIkhmIiwiSWYiLCJKZiIsImNoaWxkRXhwaXJhdGlvblRpbWUiLCJLZiIsImZpcnN0Q29udGV4dCIsImV4cGlyYXRpb25UaW1lIiwiTGYiLCJNZiIsIm9ic2VydmVkQml0cyIsInJlc3BvbmRlcnMiLCJOZiIsIk9mIiwiYmFzZVN0YXRlIiwiZmlyc3RVcGRhdGUiLCJsYXN0VXBkYXRlIiwiZmlyc3RDYXB0dXJlZFVwZGF0ZSIsImxhc3RDYXB0dXJlZFVwZGF0ZSIsImZpcnN0RWZmZWN0IiwibGFzdEVmZmVjdCIsImZpcnN0Q2FwdHVyZWRFZmZlY3QiLCJsYXN0Q2FwdHVyZWRFZmZlY3QiLCJQZiIsIlFmIiwic3VzcGVuc2VDb25maWciLCJuZXh0RWZmZWN0IiwiUmYiLCJTZiIsInVwZGF0ZVF1ZXVlIiwibWVtb2l6ZWRTdGF0ZSIsIlRmIiwiVWYiLCJWZiIsIldmIiwiWGYiLCJZZiIsIlpmIiwiJGYiLCJhZyIsImJnIiwiZmciLCJfcmVhY3RJbnRlcm5hbEZpYmVyIiwiY2ciLCJkZyIsImVnIiwiaGciLCJpZyIsImpnIiwia2ciLCJfc3RyaW5nUmVmIiwibWciLCJuZyIsIm9nIiwicGciLCJxZyIsImltcGxlbWVudGF0aW9uIiwicmciLCJzZyIsInJiIiwiQmUiLCJ0ZyIsInVnIiwidmciLCJ3ZyIsInhnIiwieWciLCJ6ZyIsIkFnIiwiQmciLCJDZyIsIkRnIiwiSGciLCJtZW1vaXplZFByb3BzIiwicmV2ZWFsT3JkZXIiLCJRZyIsIlJnIiwiU2ciLCJUZyIsIlVnIiwiVmciLCJXZyIsIlhnIiwiWWciLCJaZyIsIiRnIiwiYWgiLCJiaCIsImNoIiwiZGgiLCJlaCIsImZoIiwiaWgiLCJqaCIsImJhc2VVcGRhdGUiLCJraCIsImxoIiwibWgiLCJsYXN0UmVuZGVyZWRSZWR1Y2VyIiwibGFzdFJlbmRlcmVkU3RhdGUiLCJlYWdlclJlZHVjZXIiLCJlYWdlclN0YXRlIiwibmgiLCJkZXBzIiwib2giLCJxaCIsInJoIiwic2giLCJyZWFkQ29udGV4dCIsInVzZVJlc3BvbmRlciIsIlBnIiwiS2ciLCJ1aCIsInZoIiwid2giLCJ4aCIsInloIiwicGVuZGluZ1Byb3BzIiwiemgiLCJBaCIsIkJoIiwiQ2giLCJEaCIsIkVoIiwiRmgiLCJHaCIsIkhoIiwiSWgiLCJKaCIsIktoIiwiTGgiLCJNaCIsIk5oIiwicGVuZGluZ0NvbnRleHQiLCJPaCIsIlBoIiwiZmFsbGJhY2siLCJ1bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFjayIsIlFoIiwiaXNCYWNrd2FyZHMiLCJyZW5kZXJpbmciLCJ0YWlsIiwidGFpbEV4cGlyYXRpb24iLCJ0YWlsTW9kZSIsIlJoIiwiU2giLCJUaCIsIlZoIiwiV2giLCIkaCIsImFpIiwiYmkiLCJvbmNsaWNrIiwiV2Vha1NldCIsImRpIiwiZ2kiLCJmaSIsImhpIiwiamkiLCJlaSIsImtpIiwibGkiLCJtaSIsIm5pIiwiX3JlYWN0Um9vdENvbnRhaW5lciIsIm9pIiwid2FzTXVsdGlwbGUiLCJwaSIsInFpIiwicmkiLCJzaSIsInRpIiwidWkiLCJ2aSIsIndpIiwiY29tcG9uZW50RGlkQ2F0Y2giLCJ4aSIsImNvbXBvbmVudFN0YWNrIiwieWkiLCJ6aSIsIkFpIiwiSmkiLCJLaSIsIkxpIiwiTWkiLCJOaSIsIlBpIiwiUWkiLCJSaSIsIlNpIiwiVGkiLCJVaSIsIlZpIiwiV2kiLCJ0aW1lb3V0TXMiLCJYaSIsIllpIiwicGluZ1RpbWUiLCJaaSIsImZpcnN0UGVuZGluZ1RpbWUiLCJsYXN0UGVuZGluZ1RpbWUiLCJjYWxsYmFja0V4cGlyYXRpb25UaW1lIiwiY2FsbGJhY2tOb2RlIiwiJGkiLCJhaiIsImJqIiwiY2oiLCJlaiIsImZqIiwiZ2oiLCJoaiIsImZpbmlzaGVkV29yayIsImZpbmlzaGVkRXhwaXJhdGlvblRpbWUiLCJ0aW1lb3V0SGFuZGxlIiwiaWoiLCJqaiIsInBpbmdDYWNoZSIsImtqIiwibGoiLCJmaXJzdEJhdGNoIiwiX2RlZmVyIiwiX2V4cGlyYXRpb25UaW1lIiwiX29uQ29tcGxldGUiLCJkaiIsImJ1c3lNaW5EdXJhdGlvbk1zIiwiYnVzeURlbGF5TXMiLCJtaiIsImNyZWF0ZUVsZW1lbnROUyIsImNyZWF0ZVRleHROb2RlIiwibmoiLCJyYW5nZUNvdW50IiwiemIiLCJmb2N1c2VkRWxlbSIsInNlbGVjdGlvblJhbmdlIiwiZ2giLCJvaiIsIl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlIiwiJGQiLCJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIsImNyZWF0ZVJhbmdlIiwic2V0U3RhcnQiLCJyZW1vdmVBbGxSYW5nZXMiLCJhZGRSYW5nZSIsInNldEVuZCIsIiRhIiwibmMiLCJGaiIsIlhoIiwiWWgiLCJHaiIsIm5kIiwiWmgiLCJnZiIsInBqIiwicWoiLCJyaiIsImhpZGRlbiIsIkJmIiwic2oiLCJoeWRyYXRlIiwidW5zdGFibGVfb2JzZXJ2ZWRCaXRzIiwidWoiLCJ2aiIsIndqIiwieGoiLCJ5aiIsInpqIiwiQWoiLCJCaiIsIl9yb290IiwiX2NhbGxiYWNrcyIsIl9oYXNDaGlsZHJlbiIsIl9kaWRDb21wbGV0ZSIsIl9jaGlsZHJlbiIsIkNqIiwiX2RpZENvbW1pdCIsIl9vbkNvbW1pdCIsIkRqIiwiX2ludGVybmFsUm9vdCIsIkVqIiwiSGoiLCJKaiIsIklqIiwiS2oiLCJxdWVyeVNlbGVjdG9yQWxsIiwiY29tbWl0IiwidW5tb3VudCIsImNyZWF0ZUJhdGNoIiwiTmoiLCJ1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lciIsInVuc3RhYmxlX2NyZWF0ZVBvcnRhbCIsInVuc3RhYmxlX2ludGVyYWN0aXZlVXBkYXRlcyIsInVuc3RhYmxlX2Rpc2NyZXRlVXBkYXRlcyIsInVuc3RhYmxlX2ZsdXNoRGlzY3JldGVVcGRhdGVzIiwiZmx1c2hTeW5jIiwidW5zdGFibGVfY3JlYXRlUm9vdCIsInVuc3RhYmxlX2NyZWF0ZVN5bmNSb290IiwidW5zdGFibGVfZmx1c2hDb250cm9sbGVkIiwiRXZlbnRzIiwiZmluZEZpYmVyQnlIb3N0SW5zdGFuY2UiLCJidW5kbGVUeXBlIiwicmVuZGVyZXJQYWNrYWdlTmFtZSIsImlzRGlzYWJsZWQiLCJzdXBwb3J0c0ZpYmVyIiwiaW5qZWN0Iiwib25Db21taXRGaWJlclJvb3QiLCJvbkNvbW1pdEZpYmVyVW5tb3VudCIsInRqIiwib3ZlcnJpZGVIb29rU3RhdGUiLCJvdmVycmlkZVByb3BzIiwic2V0U3VzcGVuc2VIYW5kbGVyIiwic2NoZWR1bGVVcGRhdGUiLCJjdXJyZW50RGlzcGF0Y2hlclJlZiIsImZpbmRIb3N0SW5zdGFuY2VCeUZpYmVyIiwiZmluZEhvc3RJbnN0YW5jZXNGb3JSZWZyZXNoIiwic2NoZWR1bGVSZWZyZXNoIiwic2NoZWR1bGVSb290Iiwic2V0UmVmcmVzaEhhbmRsZXIiLCJnZXRDdXJyZW50RmliZXIiLCJPaiIsIlBqIiwidW5zdGFibGVfZm9yY2VGcmFtZVJhdGUiLCJNZXNzYWdlQ2hhbm5lbCIsInBlcmZvcm1hbmNlIiwicG9zdE1lc3NhZ2UiLCJwb3J0MiIsInBvcnQxIiwib25tZXNzYWdlIiwicHJldmlvdXMiLCJwcmlvcml0eUxldmVsIiwic3RhcnRUaW1lIiwidW5zdGFibGVfbmV4dCIsInVuc3RhYmxlX3dyYXBDYWxsYmFjayIsInVuc3RhYmxlX2NvbnRpbnVlRXhlY3V0aW9uIiwidW5zdGFibGVfcGF1c2VFeGVjdXRpb24iLCJ1bnN0YWJsZV9nZXRGaXJzdENhbGxiYWNrTm9kZSIsImNoYXJDb2RlQXQiLCJzaW5nbGVNYXRjaGVyIiwibXVsdGlNYXRjaGVyIiwiZGVjb2RlQ29tcG9uZW50cyIsImRlY29kZVVSSUNvbXBvbmVudCIsImRlY29kZSIsImVuY29kZWRVUkkiLCJyZXBsYWNlTWFwIiwiY3VzdG9tRGVjb2RlVVJJQ29tcG9uZW50Iiwib3JpZ2luYWxNb2R1bGUiLCJERVNDUklQVE9SUyIsImdldEtleXMiLCJnT1BTIiwiJGFzc2lnbiIsImFMZW4iLCJnZXRTeW1ib2xzIiwiaXNFbnVtIiwidG9MZW5ndGgiLCJ0b0Fic29sdXRlSW5kZXgiLCJJU19JTkNMVURFUyIsIiR0aGlzIiwiZnJvbUluZGV4IiwiJE9iamVjdCIsIlRPX1NUUklORyIsIk9iamVjdFByb3RvIiwiVE9fU1RSSU5HX1RBRyIsIkRPTUl0ZXJhYmxlcyIsIkNvbGxlY3Rpb24iLCJhZGRUb1Vuc2NvcGFibGVzIiwiX2siLCJBcmd1bWVudHMiLCJLRVkiLCIkZmFpbHMiLCJ3a3MiLCJ3a3NEZWZpbmUiLCJlbnVtS2V5cyIsIl9jcmVhdGUiLCJnT1BORXh0IiwiJEdPUEQiLCIkR09QUyIsIiREUCIsImdPUE4iLCIkSlNPTiIsIl9zdHJpbmdpZnkiLCJISURERU4iLCJUT19QUklNSVRJVkUiLCJTeW1ib2xSZWdpc3RyeSIsIkFsbFN5bWJvbHMiLCJPUFN5bWJvbHMiLCJVU0VfTkFUSVZFIiwiUU9iamVjdCIsImZpbmRDaGlsZCIsInNldFN5bWJvbERlc2MiLCJwcm90b0Rlc2MiLCIkZGVmaW5lUHJvcGVydHkiLCIkZGVmaW5lUHJvcGVydGllcyIsIiRwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIiRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCIkZ2V0T3duUHJvcGVydHlOYW1lcyIsIiRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJJU19PUCIsIiRzZXQiLCJlczZTeW1ib2xzIiwid2VsbEtub3duU3ltYm9scyIsImtleUZvciIsInVzZVNldHRlciIsInVzZVNpbXBsZSIsIkZBSUxTX09OX1BSSU1JVElWRVMiLCJyZXBsYWNlciIsIiRyZXBsYWNlciIsInNldERlc2MiLCJpc0V4dGVuc2libGUiLCJGUkVFWkUiLCJwcmV2ZW50RXh0ZW5zaW9ucyIsInNldE1ldGEiLCJORUVEIiwiZmFzdEtleSIsImdldFdlYWsiLCJvbkZyZWV6ZSIsIndpbmRvd05hbWVzIiwiZ2V0V2luZG93TmFtZXMiLCJjaGVjayIsImJ1Z2d5IiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwic2hpbSIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImdldFNoaW0iLCJSZWFjdFByb3BUeXBlcyIsInN5bWJvbCIsImluc3RhbmNlT2YiLCJvYmplY3RPZiIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsIm5vcm1hbFZpZXdCb3giLCJuZXdWaWV3Qm94Iiwib3V0bGluZSIsInR3b3RvbmUiLCJnZXROb2RlIiwiZ2V0SWNvbiIsIkFjY291bnRCb29rRmlsbCIsIkFsZXJ0RmlsbCIsIkFsaXBheVNxdWFyZUZpbGwiLCJBbGl3YW5nd2FuZ0ZpbGwiLCJBbGlwYXlDaXJjbGVGaWxsIiwiQW1hem9uQ2lyY2xlRmlsbCIsIkFuZHJvaWRGaWxsIiwiQW1hem9uU3F1YXJlRmlsbCIsIkFwaUZpbGwiLCJBcHBzdG9yZUZpbGwiLCJBdWRpb0ZpbGwiLCJBcHBsZUZpbGwiLCJCYWNrd2FyZEZpbGwiLCJCYW5rRmlsbCIsIkJlaGFuY2VDaXJjbGVGaWxsIiwiQmVsbEZpbGwiLCJCZWhhbmNlU3F1YXJlRmlsbCIsIkJvb2tGaWxsIiwiQm94UGxvdEZpbGwiLCJCdWdGaWxsIiwiQ2FsY3VsYXRvckZpbGwiLCJCdWxiRmlsbCIsIkJ1aWxkRmlsbCIsIkNhbGVuZGFyRmlsbCIsIkNhbWVyYUZpbGwiLCJDYXJGaWxsIiwiQ2FyZXREb3duRmlsbCIsIkNhcmV0TGVmdEZpbGwiLCJDYXJldFJpZ2h0RmlsbCIsIkNhcnJ5T3V0RmlsbCIsIkNhcmV0VXBGaWxsIiwiQ2hlY2tDaXJjbGVGaWxsIiwiQ2hlY2tTcXVhcmVGaWxsIiwiQ2hyb21lRmlsbCIsIkNpQ2lyY2xlRmlsbCIsIkNsb2NrQ2lyY2xlRmlsbCIsIkNsb3NlQ2lyY2xlRmlsbCIsIkNsb3VkRmlsbCIsIkNsb3NlU3F1YXJlRmlsbCIsIkNvZGVTYW5kYm94U3F1YXJlRmlsbCIsIkNvZGVTYW5kYm94Q2lyY2xlRmlsbCIsIkNvZGVGaWxsIiwiQ29tcGFzc0ZpbGwiLCJDb2RlcGVuQ2lyY2xlRmlsbCIsIkNvZGVwZW5TcXVhcmVGaWxsIiwiQ29udGFjdHNGaWxsIiwiQ29udHJvbEZpbGwiLCJDb250YWluZXJGaWxsIiwiQ29weUZpbGwiLCJDb3B5cmlnaHRDaXJjbGVGaWxsIiwiQ3JlZGl0Q2FyZEZpbGwiLCJDcm93bkZpbGwiLCJDdXN0b21lclNlcnZpY2VGaWxsIiwiRGFzaGJvYXJkRmlsbCIsIkRlbGV0ZUZpbGwiLCJEaWZmRmlsbCIsIkRpbmd0YWxrQ2lyY2xlRmlsbCIsIkRhdGFiYXNlRmlsbCIsIkRpbmd0YWxrU3F1YXJlRmlsbCIsIkRpc2xpa2VGaWxsIiwiRG9sbGFyQ2lyY2xlRmlsbCIsIkRvd25DaXJjbGVGaWxsIiwiRG93blNxdWFyZUZpbGwiLCJEcmliYmJsZUNpcmNsZUZpbGwiLCJEcmliYmJsZVNxdWFyZUZpbGwiLCJEcm9wYm94Q2lyY2xlRmlsbCIsIkRyb3Bib3hTcXVhcmVGaWxsIiwiRW52aXJvbm1lbnRGaWxsIiwiRWRpdEZpbGwiLCJFeGNsYW1hdGlvbkNpcmNsZUZpbGwiLCJFdXJvQ2lyY2xlRmlsbCIsIkV4cGVyaW1lbnRGaWxsIiwiRXllSW52aXNpYmxlRmlsbCIsIkV5ZUZpbGwiLCJGYWNlYm9va0ZpbGwiLCJGYXN0QmFja3dhcmRGaWxsIiwiRmFzdEZvcndhcmRGaWxsIiwiRmlsZUFkZEZpbGwiLCJGaWxlRXhjZWxGaWxsIiwiRmlsZUV4Y2xhbWF0aW9uRmlsbCIsIkZpbGVJbWFnZUZpbGwiLCJGaWxlTWFya2Rvd25GaWxsIiwiRmlsZVBkZkZpbGwiLCJGaWxlUHB0RmlsbCIsIkZpbGVUZXh0RmlsbCIsIkZpbGVXb3JkRmlsbCIsIkZpbGVVbmtub3duRmlsbCIsIkZpbGVaaXBGaWxsIiwiRmlsZUZpbGwiLCJGaWx0ZXJGaWxsIiwiRmlyZUZpbGwiLCJGbGFnRmlsbCIsIkZvbGRlckFkZEZpbGwiLCJGb2xkZXJGaWxsIiwiRm9sZGVyT3BlbkZpbGwiLCJGb3J3YXJkRmlsbCIsIkZyb3duRmlsbCIsIkZ1bmRGaWxsIiwiRnVubmVsUGxvdEZpbGwiLCJHaWZ0RmlsbCIsIkdpdGh1YkZpbGwiLCJHaXRsYWJGaWxsIiwiR29sZGVuRmlsbCIsIkdvb2dsZUNpcmNsZUZpbGwiLCJHb29nbGVQbHVzQ2lyY2xlRmlsbCIsIkdvb2dsZVBsdXNTcXVhcmVGaWxsIiwiR29vZ2xlU3F1YXJlRmlsbCIsIkhkZEZpbGwiLCJIZWFydEZpbGwiLCJIaWdobGlnaHRGaWxsIiwiSG9tZUZpbGwiLCJIb3VyZ2xhc3NGaWxsIiwiSHRtbDVGaWxsIiwiSWRjYXJkRmlsbCIsIkllQ2lyY2xlRmlsbCIsIkllU3F1YXJlRmlsbCIsIkluZm9DaXJjbGVGaWxsIiwiSW5zdGFncmFtRmlsbCIsIkluc3VyYW5jZUZpbGwiLCJJbnRlcmFjdGlvbkZpbGwiLCJJbnRlcmF0aW9uRmlsbCIsIkxheW91dEZpbGwiLCJMZWZ0Q2lyY2xlRmlsbCIsIkxlZnRTcXVhcmVGaWxsIiwiTGlrZUZpbGwiLCJMb2NrRmlsbCIsIkxpbmtlZGluRmlsbCIsIk1haWxGaWxsIiwiTWVkaWNpbmVCb3hGaWxsIiwiTWVkaXVtQ2lyY2xlRmlsbCIsIk1lZGl1bVNxdWFyZUZpbGwiLCJNZWhGaWxsIiwiTWVzc2FnZUZpbGwiLCJNaW51c0NpcmNsZUZpbGwiLCJNaW51c1NxdWFyZUZpbGwiLCJNb2JpbGVGaWxsIiwiTW9uZXlDb2xsZWN0RmlsbCIsIlBhdXNlQ2lyY2xlRmlsbCIsIlBheUNpcmNsZUZpbGwiLCJOb3RpZmljYXRpb25GaWxsIiwiUGhvbmVGaWxsIiwiUGljdHVyZUZpbGwiLCJQaWVDaGFydEZpbGwiLCJQbGF5Q2lyY2xlRmlsbCIsIlBsYXlTcXVhcmVGaWxsIiwiUGx1c0NpcmNsZUZpbGwiLCJQbHVzU3F1YXJlRmlsbCIsIlBvdW5kQ2lyY2xlRmlsbCIsIlByaW50ZXJGaWxsIiwiUHJvZmlsZUZpbGwiLCJQcm9qZWN0RmlsbCIsIlB1c2hwaW5GaWxsIiwiUHJvcGVydHlTYWZldHlGaWxsIiwiUXFDaXJjbGVGaWxsIiwiUXFTcXVhcmVGaWxsIiwiUXVlc3Rpb25DaXJjbGVGaWxsIiwiUmVhZEZpbGwiLCJSZWNvbmNpbGlhdGlvbkZpbGwiLCJSZWRFbnZlbG9wZUZpbGwiLCJSZWRkaXRDaXJjbGVGaWxsIiwiUmVkZGl0U3F1YXJlRmlsbCIsIlJlc3RGaWxsIiwiUmlnaHRDaXJjbGVGaWxsIiwiUm9ja2V0RmlsbCIsIlJpZ2h0U3F1YXJlRmlsbCIsIlNhZmV0eUNlcnRpZmljYXRlRmlsbCIsIlNhdmVGaWxsIiwiU2NoZWR1bGVGaWxsIiwiU2VjdXJpdHlTY2FuRmlsbCIsIlNldHRpbmdGaWxsIiwiU2hvcEZpbGwiLCJTaG9wcGluZ0ZpbGwiLCJTa2V0Y2hDaXJjbGVGaWxsIiwiU2tldGNoU3F1YXJlRmlsbCIsIlNraW5GaWxsIiwiU2xhY2tDaXJjbGVGaWxsIiwiU2xhY2tTcXVhcmVGaWxsIiwiU2t5cGVGaWxsIiwiU2xpZGVyc0ZpbGwiLCJTbWlsZUZpbGwiLCJTbmlwcGV0c0ZpbGwiLCJTb3VuZEZpbGwiLCJTdGFyRmlsbCIsIlN0ZXBCYWNrd2FyZEZpbGwiLCJTdGVwRm9yd2FyZEZpbGwiLCJTdG9wRmlsbCIsIlN3aXRjaGVyRmlsbCIsIlRhYmxldEZpbGwiLCJUYWdGaWxsIiwiVGFnc0ZpbGwiLCJUYW9iYW9DaXJjbGVGaWxsIiwiVGFvYmFvU3F1YXJlRmlsbCIsIlRvb2xGaWxsIiwiVGh1bmRlcmJvbHRGaWxsIiwiVHJhZGVtYXJrQ2lyY2xlRmlsbCIsIlR3aXR0ZXJDaXJjbGVGaWxsIiwiVHJvcGh5RmlsbCIsIlR3aXR0ZXJTcXVhcmVGaWxsIiwiVW5sb2NrRmlsbCIsIlVwQ2lyY2xlRmlsbCIsIlVwU3F1YXJlRmlsbCIsIlVzYkZpbGwiLCJXYWxsZXRGaWxsIiwiVmlkZW9DYW1lcmFGaWxsIiwiV2FybmluZ0ZpbGwiLCJXZWlib0NpcmNsZUZpbGwiLCJXZWNoYXRGaWxsIiwiV2luZG93c0ZpbGwiLCJZYWhvb0ZpbGwiLCJXZWlib1NxdWFyZUZpbGwiLCJZdXF1ZUZpbGwiLCJZb3V0dWJlRmlsbCIsIlpoaWh1U3F1YXJlRmlsbCIsIlpoaWh1Q2lyY2xlRmlsbCIsIkFjY291bnRCb29rT3V0bGluZSIsIkFsZXJ0T3V0bGluZSIsIkFsaXBheUNpcmNsZU91dGxpbmUiLCJBbGl3YW5nd2FuZ091dGxpbmUiLCJBbmRyb2lkT3V0bGluZSIsIkFwaU91dGxpbmUiLCJBcHBzdG9yZU91dGxpbmUiLCJBdWRpb091dGxpbmUiLCJBcHBsZU91dGxpbmUiLCJCYWNrd2FyZE91dGxpbmUiLCJCYW5rT3V0bGluZSIsIkJlbGxPdXRsaW5lIiwiQmVoYW5jZVNxdWFyZU91dGxpbmUiLCJCb29rT3V0bGluZSIsIkJveFBsb3RPdXRsaW5lIiwiQnVsYk91dGxpbmUiLCJCdWdPdXRsaW5lIiwiQ2FsY3VsYXRvck91dGxpbmUiLCJCdWlsZE91dGxpbmUiLCJDYWxlbmRhck91dGxpbmUiLCJDYW1lcmFPdXRsaW5lIiwiQ2FyT3V0bGluZSIsIkNhcmV0RG93bk91dGxpbmUiLCJDYXJldExlZnRPdXRsaW5lIiwiQ2FyZXRSaWdodE91dGxpbmUiLCJDYXJyeU91dE91dGxpbmUiLCJDaGVja0NpcmNsZU91dGxpbmUiLCJDYXJldFVwT3V0bGluZSIsIkNoZWNrU3F1YXJlT3V0bGluZSIsIkNocm9tZU91dGxpbmUiLCJDbG9ja0NpcmNsZU91dGxpbmUiLCJDbG9zZUNpcmNsZU91dGxpbmUiLCJDbG91ZE91dGxpbmUiLCJDbG9zZVNxdWFyZU91dGxpbmUiLCJDb2RlT3V0bGluZSIsIkNvZGVwZW5DaXJjbGVPdXRsaW5lIiwiQ29tcGFzc091dGxpbmUiLCJDb250YWN0c091dGxpbmUiLCJDb250YWluZXJPdXRsaW5lIiwiQ29udHJvbE91dGxpbmUiLCJDb3B5T3V0bGluZSIsIkNyZWRpdENhcmRPdXRsaW5lIiwiQ3Jvd25PdXRsaW5lIiwiQ3VzdG9tZXJTZXJ2aWNlT3V0bGluZSIsIkRhc2hib2FyZE91dGxpbmUiLCJEZWxldGVPdXRsaW5lIiwiRGlmZk91dGxpbmUiLCJEYXRhYmFzZU91dGxpbmUiLCJEaXNsaWtlT3V0bGluZSIsIkRvd25DaXJjbGVPdXRsaW5lIiwiRG93blNxdWFyZU91dGxpbmUiLCJEcmliYmJsZVNxdWFyZU91dGxpbmUiLCJFbnZpcm9ubWVudE91dGxpbmUiLCJFZGl0T3V0bGluZSIsIkV4Y2xhbWF0aW9uQ2lyY2xlT3V0bGluZSIsIkV4cGVyaW1lbnRPdXRsaW5lIiwiRXllSW52aXNpYmxlT3V0bGluZSIsIkV5ZU91dGxpbmUiLCJGYWNlYm9va091dGxpbmUiLCJGYXN0QmFja3dhcmRPdXRsaW5lIiwiRmFzdEZvcndhcmRPdXRsaW5lIiwiRmlsZUFkZE91dGxpbmUiLCJGaWxlRXhjZWxPdXRsaW5lIiwiRmlsZUV4Y2xhbWF0aW9uT3V0bGluZSIsIkZpbGVJbWFnZU91dGxpbmUiLCJGaWxlTWFya2Rvd25PdXRsaW5lIiwiRmlsZVBwdE91dGxpbmUiLCJGaWxlVGV4dE91dGxpbmUiLCJGaWxlUGRmT3V0bGluZSIsIkZpbGVaaXBPdXRsaW5lIiwiRmlsZU91dGxpbmUiLCJGaWx0ZXJPdXRsaW5lIiwiRmlsZVdvcmRPdXRsaW5lIiwiRmlyZU91dGxpbmUiLCJGaWxlVW5rbm93bk91dGxpbmUiLCJGbGFnT3V0bGluZSIsIkZvbGRlckFkZE91dGxpbmUiLCJGb2xkZXJPdXRsaW5lIiwiRm9sZGVyT3Blbk91dGxpbmUiLCJGb3J3YXJkT3V0bGluZSIsIkZyb3duT3V0bGluZSIsIkZ1bmRPdXRsaW5lIiwiRnVubmVsUGxvdE91dGxpbmUiLCJHaWZ0T3V0bGluZSIsIkdpdGh1Yk91dGxpbmUiLCJHaXRsYWJPdXRsaW5lIiwiSGVhcnRPdXRsaW5lIiwiSGRkT3V0bGluZSIsIkhpZ2hsaWdodE91dGxpbmUiLCJIb21lT3V0bGluZSIsIkhvdXJnbGFzc091dGxpbmUiLCJIdG1sNU91dGxpbmUiLCJJZGNhcmRPdXRsaW5lIiwiSW5mb0NpcmNsZU91dGxpbmUiLCJJbnN0YWdyYW1PdXRsaW5lIiwiSW5zdXJhbmNlT3V0bGluZSIsIkludGVyYWN0aW9uT3V0bGluZSIsIkludGVyYXRpb25PdXRsaW5lIiwiTGF5b3V0T3V0bGluZSIsIkxlZnRDaXJjbGVPdXRsaW5lIiwiTGVmdFNxdWFyZU91dGxpbmUiLCJMaWtlT3V0bGluZSIsIkxpbmtlZGluT3V0bGluZSIsIkxvY2tPdXRsaW5lIiwiTWVkaWNpbmVCb3hPdXRsaW5lIiwiTWVoT3V0bGluZSIsIk1haWxPdXRsaW5lIiwiTWVzc2FnZU91dGxpbmUiLCJNaW51c0NpcmNsZU91dGxpbmUiLCJNaW51c1NxdWFyZU91dGxpbmUiLCJNb2JpbGVPdXRsaW5lIiwiTW9uZXlDb2xsZWN0T3V0bGluZSIsIlBhdXNlQ2lyY2xlT3V0bGluZSIsIlBheUNpcmNsZU91dGxpbmUiLCJOb3RpZmljYXRpb25PdXRsaW5lIiwiUGhvbmVPdXRsaW5lIiwiUGljdHVyZU91dGxpbmUiLCJQaWVDaGFydE91dGxpbmUiLCJQbGF5U3F1YXJlT3V0bGluZSIsIlBsYXlDaXJjbGVPdXRsaW5lIiwiUGx1c0NpcmNsZU91dGxpbmUiLCJQcmludGVyT3V0bGluZSIsIlBsdXNTcXVhcmVPdXRsaW5lIiwiUHJvZmlsZU91dGxpbmUiLCJQcm9qZWN0T3V0bGluZSIsIlB1c2hwaW5PdXRsaW5lIiwiUHJvcGVydHlTYWZldHlPdXRsaW5lIiwiUXVlc3Rpb25DaXJjbGVPdXRsaW5lIiwiUmVhZE91dGxpbmUiLCJSZWNvbmNpbGlhdGlvbk91dGxpbmUiLCJSZWRFbnZlbG9wZU91dGxpbmUiLCJSZXN0T3V0bGluZSIsIlJpZ2h0Q2lyY2xlT3V0bGluZSIsIlJvY2tldE91dGxpbmUiLCJSaWdodFNxdWFyZU91dGxpbmUiLCJTYWZldHlDZXJ0aWZpY2F0ZU91dGxpbmUiLCJTY2hlZHVsZU91dGxpbmUiLCJTYXZlT3V0bGluZSIsIlNlY3VyaXR5U2Nhbk91dGxpbmUiLCJTZXR0aW5nT3V0bGluZSIsIlNob3BwaW5nT3V0bGluZSIsIlNraW5PdXRsaW5lIiwiU2t5cGVPdXRsaW5lIiwiU2xhY2tTcXVhcmVPdXRsaW5lIiwiU2xpZGVyc091dGxpbmUiLCJTbWlsZU91dGxpbmUiLCJTbmlwcGV0c091dGxpbmUiLCJTb3VuZE91dGxpbmUiLCJTdGFyT3V0bGluZSIsIlN0ZXBCYWNrd2FyZE91dGxpbmUiLCJTdGVwRm9yd2FyZE91dGxpbmUiLCJTdG9wT3V0bGluZSIsIlN3aXRjaGVyT3V0bGluZSIsIlRhZ091dGxpbmUiLCJUYWJsZXRPdXRsaW5lIiwiU2hvcE91dGxpbmUiLCJUYWdzT3V0bGluZSIsIlRhb2Jhb0NpcmNsZU91dGxpbmUiLCJUb29sT3V0bGluZSIsIlRodW5kZXJib2x0T3V0bGluZSIsIlRyb3BoeU91dGxpbmUiLCJVbmxvY2tPdXRsaW5lIiwiVXBDaXJjbGVPdXRsaW5lIiwiVXBTcXVhcmVPdXRsaW5lIiwiVXNiT3V0bGluZSIsIlZpZGVvQ2FtZXJhT3V0bGluZSIsIldhbGxldE91dGxpbmUiLCJXYXJuaW5nT3V0bGluZSIsIldlY2hhdE91dGxpbmUiLCJXZWlib0NpcmNsZU91dGxpbmUiLCJXaW5kb3dzT3V0bGluZSIsIllhaG9vT3V0bGluZSIsIldlaWJvU3F1YXJlT3V0bGluZSIsIll1cXVlT3V0bGluZSIsIllvdXR1YmVPdXRsaW5lIiwiQWxpYmFiYU91dGxpbmUiLCJBbGlnbkNlbnRlck91dGxpbmUiLCJBbGlnbkxlZnRPdXRsaW5lIiwiQWxpZ25SaWdodE91dGxpbmUiLCJBbGlwYXlPdXRsaW5lIiwiQWxpeXVuT3V0bGluZSIsIkFtYXpvbk91dGxpbmUiLCJBbnRDbG91ZE91dGxpbmUiLCJBcGFydG1lbnRPdXRsaW5lIiwiQW50RGVzaWduT3V0bGluZSIsIkFyZWFDaGFydE91dGxpbmUiLCJBcnJvd0xlZnRPdXRsaW5lIiwiQXJyb3dEb3duT3V0bGluZSIsIkFycm93VXBPdXRsaW5lIiwiQXJyb3dzQWx0T3V0bGluZSIsIkFycm93UmlnaHRPdXRsaW5lIiwiQXVkaXRPdXRsaW5lIiwiQmFyQ2hhcnRPdXRsaW5lIiwiQmFyY29kZU91dGxpbmUiLCJCYXJzT3V0bGluZSIsIkJnQ29sb3JzT3V0bGluZSIsIkJlaGFuY2VPdXRsaW5lIiwiQmxvY2tPdXRsaW5lIiwiQm9sZE91dGxpbmUiLCJCb3JkZXJCb3R0b21PdXRsaW5lIiwiQm9yZGVyTGVmdE91dGxpbmUiLCJCb3JkZXJPdXRlck91dGxpbmUiLCJCb3JkZXJJbm5lck91dGxpbmUiLCJCb3JkZXJSaWdodE91dGxpbmUiLCJCb3JkZXJIb3Jpem9udGFsT3V0bGluZSIsIkJvcmRlclRvcE91dGxpbmUiLCJCb3JkZXJWZXJ0aWNsZU91dGxpbmUiLCJCb3JkZXJPdXRsaW5lIiwiQnJhbmNoZXNPdXRsaW5lIiwiQ2hlY2tPdXRsaW5lIiwiQ2lPdXRsaW5lIiwiQ2xvc2VPdXRsaW5lIiwiQ2xvdWREb3dubG9hZE91dGxpbmUiLCJDbG91ZFNlcnZlck91dGxpbmUiLCJDbG91ZFN5bmNPdXRsaW5lIiwiQ2xvdWRVcGxvYWRPdXRsaW5lIiwiQ2x1c3Rlck91dGxpbmUiLCJDb2RlcGVuT3V0bGluZSIsIkNvZGVTYW5kYm94T3V0bGluZSIsIkNvbHVtSGVpZ2h0T3V0bGluZSIsIkNvbHVtbldpZHRoT3V0bGluZSIsIkNvbHVtbkhlaWdodE91dGxpbmUiLCJDb2ZmZWVPdXRsaW5lIiwiQ29weXJpZ2h0T3V0bGluZSIsIkRhc2hPdXRsaW5lIiwiRGVwbG95bWVudFVuaXRPdXRsaW5lIiwiRGVza3RvcE91dGxpbmUiLCJEaW5nZGluZ091dGxpbmUiLCJEaXNjb25uZWN0T3V0bGluZSIsIkRvbGxhck91dGxpbmUiLCJEb3VibGVSaWdodE91dGxpbmUiLCJEb3RDaGFydE91dGxpbmUiLCJEb3VibGVMZWZ0T3V0bGluZSIsIkRvd25sb2FkT3V0bGluZSIsIkRyaWJiYmxlT3V0bGluZSIsIkRyb3Bib3hPdXRsaW5lIiwiRWxsaXBzaXNPdXRsaW5lIiwiRW50ZXJPdXRsaW5lIiwiRXVyb091dGxpbmUiLCJFeGNlcHRpb25PdXRsaW5lIiwiRXhjbGFtYXRpb25PdXRsaW5lIiwiRXhwb3J0T3V0bGluZSIsIkZhbGxPdXRsaW5lIiwiRmlsZURvbmVPdXRsaW5lIiwiRmlsZVN5bmNPdXRsaW5lIiwiRmlsZVByb3RlY3RPdXRsaW5lIiwiRmlsZVNlYXJjaE91dGxpbmUiLCJGaWxlSnBnT3V0bGluZSIsIkZvbnRDb2xvcnNPdXRsaW5lIiwiRm9udFNpemVPdXRsaW5lIiwiRm9ya091dGxpbmUiLCJGb3JtT3V0bGluZSIsIkZ1bGxzY3JlZW5FeGl0T3V0bGluZSIsIkZ1bGxzY3JlZW5PdXRsaW5lIiwiR2F0ZXdheU91dGxpbmUiLCJEb3duT3V0bGluZSIsIkRyYWdPdXRsaW5lIiwiR2xvYmFsT3V0bGluZSIsIkdvb2dsZVBsdXNPdXRsaW5lIiwiR29vZ2xlT3V0bGluZSIsIkhlYXRNYXBPdXRsaW5lIiwiR29sZE91dGxpbmUiLCJIaXN0b3J5T3V0bGluZSIsIkllT3V0bGluZSIsIkluYm94T3V0bGluZSIsIkltcG9ydE91dGxpbmUiLCJJbmZvT3V0bGluZSIsIkl0YWxpY091dGxpbmUiLCJJc3N1ZXNDbG9zZU91dGxpbmUiLCJLZXlPdXRsaW5lIiwiTGFwdG9wT3V0bGluZSIsIkxlZnRPdXRsaW5lIiwiTGlua091dGxpbmUiLCJMaW5lQ2hhcnRPdXRsaW5lIiwiTGluZUhlaWdodE91dGxpbmUiLCJMaW5lT3V0bGluZSIsIkxvYWRpbmczUXVhcnRlcnNPdXRsaW5lIiwiTG9hZGluZ091dGxpbmUiLCJMb2dpbk91dGxpbmUiLCJMb2dvdXRPdXRsaW5lIiwiTWFuT3V0bGluZSIsIk1lZGl1bU91dGxpbmUiLCJNZWRpdW1Xb3JrbWFya091dGxpbmUiLCJNZW51VW5mb2xkT3V0bGluZSIsIk1lbnVGb2xkT3V0bGluZSIsIk1lbnVPdXRsaW5lIiwiTWludXNPdXRsaW5lIiwiTW9uaXRvck91dGxpbmUiLCJNb3JlT3V0bGluZSIsIk9yZGVyZWRMaXN0T3V0bGluZSIsIk51bWJlck91dGxpbmUiLCJQYXVzZU91dGxpbmUiLCJQZXJjZW50YWdlT3V0bGluZSIsIlBhcGVyQ2xpcE91dGxpbmUiLCJQaWNDZW50ZXJPdXRsaW5lIiwiUGljTGVmdE91dGxpbmUiLCJQbHVzT3V0bGluZSIsIlBpY1JpZ2h0T3V0bGluZSIsIlBvdW5kT3V0bGluZSIsIlBvd2Vyb2ZmT3V0bGluZSIsIlB1bGxSZXF1ZXN0T3V0bGluZSIsIlFxT3V0bGluZSIsIlF1ZXN0aW9uT3V0bGluZSIsIlJhZGFyQ2hhcnRPdXRsaW5lIiwiUXJjb2RlT3V0bGluZSIsIlJhZGl1c0JvdHRvbWxlZnRPdXRsaW5lIiwiUmFkaXVzQm90dG9tcmlnaHRPdXRsaW5lIiwiUmFkaXVzVXBsZWZ0T3V0bGluZSIsIlJhZGl1c1VwcmlnaHRPdXRsaW5lIiwiUmFkaXVzU2V0dGluZ091dGxpbmUiLCJSZWRkaXRPdXRsaW5lIiwiUmVkb091dGxpbmUiLCJSZWxvYWRPdXRsaW5lIiwiUmV0d2VldE91dGxpbmUiLCJSaWdodE91dGxpbmUiLCJSaXNlT3V0bGluZSIsIlJvbGxiYWNrT3V0bGluZSIsIlNhZmV0eU91dGxpbmUiLCJSb2JvdE91dGxpbmUiLCJTZWFyY2hPdXRsaW5lIiwiU2Nhbk91dGxpbmUiLCJTY2lzc29yT3V0bGluZSIsIlNlbGVjdE91dGxpbmUiLCJTaGFrZU91dGxpbmUiLCJTaGFyZUFsdE91dGxpbmUiLCJTaG9wcGluZ0NhcnRPdXRsaW5lIiwiU2hyaW5rT3V0bGluZSIsIlNsYWNrT3V0bGluZSIsIlNtYWxsRGFzaE91dGxpbmUiLCJTb2x1dGlvbk91dGxpbmUiLCJTa2V0Y2hPdXRsaW5lIiwiU29ydERlc2NlbmRpbmdPdXRsaW5lIiwiU29ydEFzY2VuZGluZ091dGxpbmUiLCJTdG9ja091dGxpbmUiLCJTd2FwTGVmdE91dGxpbmUiLCJTd2FwUmlnaHRPdXRsaW5lIiwiU3RyaWtldGhyb3VnaE91dGxpbmUiLCJTd2FwT3V0bGluZSIsIlN5bmNPdXRsaW5lIiwiVGFibGVPdXRsaW5lIiwiVGVhbU91dGxpbmUiLCJUYW9iYW9PdXRsaW5lIiwiVG9Ub3BPdXRsaW5lIiwiVHJhZGVtYXJrT3V0bGluZSIsIlRyYW5zYWN0aW9uT3V0bGluZSIsIlR3aXR0ZXJPdXRsaW5lIiwiVW5kZXJsaW5lT3V0bGluZSIsIlVuZG9PdXRsaW5lIiwiVW5vcmRlcmVkTGlzdE91dGxpbmUiLCJVcE91dGxpbmUiLCJVcGxvYWRPdXRsaW5lIiwiVXNlckFkZE91dGxpbmUiLCJVc2VyZ3JvdXBBZGRPdXRsaW5lIiwiVXNlck91dGxpbmUiLCJVc2VyRGVsZXRlT3V0bGluZSIsIlVzZXJncm91cERlbGV0ZU91dGxpbmUiLCJWZXJ0aWNhbEFsaWduQm90dG9tT3V0bGluZSIsIlZlcnRpY2FsQWxpZ25NaWRkbGVPdXRsaW5lIiwiVmVydGljYWxBbGlnblRvcE91dGxpbmUiLCJWZXJ0aWNhbFJpZ2h0T3V0bGluZSIsIlZlcnRpY2FsTGVmdE91dGxpbmUiLCJXaWZpT3V0bGluZSIsIlpoaWh1T3V0bGluZSIsIldlaWJvT3V0bGluZSIsIldvbWFuT3V0bGluZSIsIlpvb21Jbk91dGxpbmUiLCJBY2NvdW50Qm9va1R3b1RvbmUiLCJab29tT3V0T3V0bGluZSIsIkFsZXJ0VHdvVG9uZSIsIkFwaVR3b1RvbmUiLCJBcHBzdG9yZVR3b1RvbmUiLCJCYW5rVHdvVG9uZSIsIkF1ZGlvVHdvVG9uZSIsIkJlbGxUd29Ub25lIiwiQm9va1R3b1RvbmUiLCJCb3hQbG90VHdvVG9uZSIsIkJ1Z1R3b1RvbmUiLCJCdWxiVHdvVG9uZSIsIkNhbGN1bGF0b3JUd29Ub25lIiwiQnVpbGRUd29Ub25lIiwiQ2FsZW5kYXJUd29Ub25lIiwiQ2FtZXJhVHdvVG9uZSIsIkNhclR3b1RvbmUiLCJDYXJyeU91dFR3b1RvbmUiLCJDaGVja0NpcmNsZVR3b1RvbmUiLCJDaGVja1NxdWFyZVR3b1RvbmUiLCJDbG9ja0NpcmNsZVR3b1RvbmUiLCJDbG9zZUNpcmNsZVR3b1RvbmUiLCJDbG91ZFR3b1RvbmUiLCJDbG9zZVNxdWFyZVR3b1RvbmUiLCJDb2RlVHdvVG9uZSIsIkNvbXBhc3NUd29Ub25lIiwiQ29udGFjdHNUd29Ub25lIiwiQ29udGFpbmVyVHdvVG9uZSIsIkNvbnRyb2xUd29Ub25lIiwiQ29weVR3b1RvbmUiLCJDcmVkaXRDYXJkVHdvVG9uZSIsIkNyb3duVHdvVG9uZSIsIkN1c3RvbWVyU2VydmljZVR3b1RvbmUiLCJEYXNoYm9hcmRUd29Ub25lIiwiRGVsZXRlVHdvVG9uZSIsIkRpZmZUd29Ub25lIiwiRGF0YWJhc2VUd29Ub25lIiwiRGlzbGlrZVR3b1RvbmUiLCJEb3duQ2lyY2xlVHdvVG9uZSIsIkRvd25TcXVhcmVUd29Ub25lIiwiRW52aXJvbm1lbnRUd29Ub25lIiwiRWRpdFR3b1RvbmUiLCJFeGNsYW1hdGlvbkNpcmNsZVR3b1RvbmUiLCJFeHBlcmltZW50VHdvVG9uZSIsIkV5ZUludmlzaWJsZVR3b1RvbmUiLCJFeWVUd29Ub25lIiwiRmlsZUFkZFR3b1RvbmUiLCJGaWxlRXhjbGFtYXRpb25Ud29Ub25lIiwiRmlsZUltYWdlVHdvVG9uZSIsIkZpbGVFeGNlbFR3b1RvbmUiLCJGaWxlTWFya2Rvd25Ud29Ub25lIiwiRmlsZVBkZlR3b1RvbmUiLCJGaWxlUHB0VHdvVG9uZSIsIkZpbGVUZXh0VHdvVG9uZSIsIkZpbGVVbmtub3duVHdvVG9uZSIsIkZpbGVaaXBUd29Ub25lIiwiRmlsZVdvcmRUd29Ub25lIiwiRmlsZVR3b1RvbmUiLCJGaWx0ZXJUd29Ub25lIiwiRmlyZVR3b1RvbmUiLCJGb2xkZXJBZGRUd29Ub25lIiwiRmxhZ1R3b1RvbmUiLCJGb2xkZXJUd29Ub25lIiwiRm9sZGVyT3BlblR3b1RvbmUiLCJGcm93blR3b1RvbmUiLCJGdW5kVHdvVG9uZSIsIkZ1bm5lbFBsb3RUd29Ub25lIiwiR2lmdFR3b1RvbmUiLCJIZGRUd29Ub25lIiwiSGVhcnRUd29Ub25lIiwiSGlnaGxpZ2h0VHdvVG9uZSIsIkhvbWVUd29Ub25lIiwiSG91cmdsYXNzVHdvVG9uZSIsIkh0bWw1VHdvVG9uZSIsIklkY2FyZFR3b1RvbmUiLCJJbmZvQ2lyY2xlVHdvVG9uZSIsIkluc3VyYW5jZVR3b1RvbmUiLCJJbnRlcmFjdGlvblR3b1RvbmUiLCJJbnRlcmF0aW9uVHdvVG9uZSIsIkxheW91dFR3b1RvbmUiLCJMZWZ0Q2lyY2xlVHdvVG9uZSIsIkxlZnRTcXVhcmVUd29Ub25lIiwiTGlrZVR3b1RvbmUiLCJMb2NrVHdvVG9uZSIsIk1haWxUd29Ub25lIiwiTWVkaWNpbmVCb3hUd29Ub25lIiwiTWVoVHdvVG9uZSIsIk1lc3NhZ2VUd29Ub25lIiwiTWludXNDaXJjbGVUd29Ub25lIiwiTWludXNTcXVhcmVUd29Ub25lIiwiTW9iaWxlVHdvVG9uZSIsIlBhdXNlQ2lyY2xlVHdvVG9uZSIsIk1vbmV5Q29sbGVjdFR3b1RvbmUiLCJOb3RpZmljYXRpb25Ud29Ub25lIiwiUGhvbmVUd29Ub25lIiwiUGljdHVyZVR3b1RvbmUiLCJQbGF5Q2lyY2xlVHdvVG9uZSIsIlBsYXlTcXVhcmVUd29Ub25lIiwiUGllQ2hhcnRUd29Ub25lIiwiUGx1c0NpcmNsZVR3b1RvbmUiLCJQbHVzU3F1YXJlVHdvVG9uZSIsIlBvdW5kQ2lyY2xlVHdvVG9uZSIsIlByaW50ZXJUd29Ub25lIiwiUHJvZmlsZVR3b1RvbmUiLCJQcm9qZWN0VHdvVG9uZSIsIlB1c2hwaW5Ud29Ub25lIiwiUHJvcGVydHlTYWZldHlUd29Ub25lIiwiUXVlc3Rpb25DaXJjbGVUd29Ub25lIiwiUmVjb25jaWxpYXRpb25Ud29Ub25lIiwiUmVkRW52ZWxvcGVUd29Ub25lIiwiUmVzdFR3b1RvbmUiLCJSaWdodENpcmNsZVR3b1RvbmUiLCJSb2NrZXRUd29Ub25lIiwiUmlnaHRTcXVhcmVUd29Ub25lIiwiU2FmZXR5Q2VydGlmaWNhdGVUd29Ub25lIiwiU2F2ZVR3b1RvbmUiLCJTY2hlZHVsZVR3b1RvbmUiLCJTZWN1cml0eVNjYW5Ud29Ub25lIiwiU2V0dGluZ1R3b1RvbmUiLCJTaG9wVHdvVG9uZSIsIlNob3BwaW5nVHdvVG9uZSIsIlNraW5Ud29Ub25lIiwiU2xpZGVyc1R3b1RvbmUiLCJTbWlsZVR3b1RvbmUiLCJTbmlwcGV0c1R3b1RvbmUiLCJTb3VuZFR3b1RvbmUiLCJTdGFyVHdvVG9uZSIsIlN0b3BUd29Ub25lIiwiU3dpdGNoZXJUd29Ub25lIiwiVGFibGV0VHdvVG9uZSIsIlRhZ1R3b1RvbmUiLCJUYWdzVHdvVG9uZSIsIlRvb2xUd29Ub25lIiwiVHJhZGVtYXJrQ2lyY2xlVHdvVG9uZSIsIlVubG9ja1R3b1RvbmUiLCJUcm9waHlUd29Ub25lIiwiVXBDaXJjbGVUd29Ub25lIiwiVGh1bmRlcmJvbHRUd29Ub25lIiwiVXBTcXVhcmVUd29Ub25lIiwiVXNiVHdvVG9uZSIsIlZpZGVvQ2FtZXJhVHdvVG9uZSIsIldhbGxldFR3b1RvbmUiLCJXYXJuaW5nVHdvVG9uZSIsIkNpVHdvVG9uZSIsIkNvcHlyaWdodFR3b1RvbmUiLCJEb2xsYXJUd29Ub25lIiwiRXVyb1R3b1RvbmUiLCJHb2xkVHdvVG9uZSIsIkNhbmxlbmRhclR3b1RvbmUiLCJ0aW55Y29sb3IyXzEiLCJnZXRIdWUiLCJoc3YiLCJsaWdodCIsImh1ZSIsImdldFNhdHVyYXRpb24iLCJzYXR1cmF0aW9uIiwicGF0dGVybnMiLCJwQ29sb3IiLCJ0b0hzdiIsImNvbG9yU3RyaW5nIiwidG9IZXhTdHJpbmciLCJ0cmltTGVmdCIsInRyaW1SaWdodCIsInRpbnlDb3VudGVyIiwibWF0aFJvdW5kIiwibWF0aE1pbiIsIm1hdGhNYXgiLCJtYXRoUmFuZG9tIiwidGlueWNvbG9yIiwicmdiIiwibmFtZWQiLCJtYXRjaGVycyIsInJnYmEiLCJoc2wiLCJoc2xhIiwiaHN2YSIsImhleDgiLCJwYXJzZUludEZyb21IZXgiLCJjb252ZXJ0SGV4VG9EZWNpbWFsIiwiaGV4NiIsImhleDQiLCJoZXgzIiwic3RyaW5nSW5wdXRUb09iamVjdCIsImlzVmFsaWRDU1NVbml0IiwiYm91bmQwMSIsImNvbnZlcnRUb1BlcmNlbnRhZ2UiLCJoc3ZUb1JnYiIsImh1ZTJyZ2IiLCJoc2xUb1JnYiIsImJvdW5kQWxwaGEiLCJpbnB1dFRvUkdCIiwiX29yaWdpbmFsSW5wdXQiLCJfciIsIl9nIiwiX3JvdW5kQSIsIl9mb3JtYXQiLCJfZ3JhZGllbnRUeXBlIiwiZ3JhZGllbnRUeXBlIiwiX29rIiwiX3RjX2lkIiwicmdiVG9Ic2wiLCJyZ2JUb0hzdiIsInJnYlRvSGV4IiwiYWxsb3czQ2hhciIsInBhZDIiLCJyZ2JhVG9BcmdiSGV4IiwiY29udmVydERlY2ltYWxUb0hleCIsImRlc2F0dXJhdGUiLCJhbW91bnQiLCJ0b0hzbCIsImNsYW1wMDEiLCJzYXR1cmF0ZSIsImdyZXlzY2FsZSIsImxpZ2h0ZW4iLCJicmlnaHRlbiIsInRvUmdiIiwiZGFya2VuIiwiY29tcGxlbWVudCIsInRyaWFkIiwidGV0cmFkIiwic3BsaXRjb21wbGVtZW50IiwiYW5hbG9nb3VzIiwic2xpY2VzIiwicGFydCIsIm1vbm9jaHJvbWF0aWMiLCJtb2RpZmljYXRpb24iLCJpc0RhcmsiLCJnZXRCcmlnaHRuZXNzIiwiaXNMaWdodCIsImdldE9yaWdpbmFsSW5wdXQiLCJnZXRGb3JtYXQiLCJnZXRBbHBoYSIsImdldEx1bWluYW5jZSIsIlJzUkdCIiwiR3NSR0IiLCJCc1JHQiIsInNldEFscGhhIiwidG9Ic3ZTdHJpbmciLCJ0b0hzbFN0cmluZyIsInRvSGV4IiwidG9IZXg4IiwiYWxsb3c0Q2hhciIsInJnYmFUb0hleCIsInRvSGV4OFN0cmluZyIsInRvUmdiU3RyaW5nIiwidG9QZXJjZW50YWdlUmdiIiwidG9QZXJjZW50YWdlUmdiU3RyaW5nIiwidG9OYW1lIiwiaGV4TmFtZXMiLCJ0b0ZpbHRlciIsInNlY29uZENvbG9yIiwiaGV4OFN0cmluZyIsInNlY29uZEhleDhTdHJpbmciLCJmb3JtYXRTZXQiLCJmb3JtYXR0ZWRTdHJpbmciLCJoYXNBbHBoYSIsIl9hcHBseU1vZGlmaWNhdGlvbiIsIl9hcHBseUNvbWJpbmF0aW9uIiwiZnJvbVJhdGlvIiwibmV3Q29sb3IiLCJlcXVhbHMiLCJjb2xvcjEiLCJjb2xvcjIiLCJyZ2IxIiwicmdiMiIsInJlYWRhYmlsaXR5IiwiaXNSZWFkYWJsZSIsIndjYWcyIiwid2NhZzJQYXJtcyIsInBhcm1zIiwidmFsaWRhdGVXQ0FHMlBhcm1zIiwibW9zdFJlYWRhYmxlIiwiYmFzZUNvbG9yIiwiY29sb3JMaXN0IiwiaW5jbHVkZUZhbGxiYWNrQ29sb3JzIiwiYmVzdENvbG9yIiwiYmVzdFNjb3JlIiwiYWxpY2VibHVlIiwiYW50aXF1ZXdoaXRlIiwiYXF1YSIsImFxdWFtYXJpbmUiLCJhenVyZSIsImJlaWdlIiwiYmlzcXVlIiwiYmxhY2siLCJibGFuY2hlZGFsbW9uZCIsImJsdWV2aW9sZXQiLCJicm93biIsImJ1cmx5d29vZCIsImJ1cm50c2llbm5hIiwiY2FkZXRibHVlIiwiY2hhcnRyZXVzZSIsImNob2NvbGF0ZSIsImNvcmFsIiwiY29ybmZsb3dlcmJsdWUiLCJjb3Juc2lsayIsImNyaW1zb24iLCJkYXJrYmx1ZSIsImRhcmtjeWFuIiwiZGFya2dvbGRlbnJvZCIsImRhcmtncmF5IiwiZGFya2dyZWVuIiwiZGFya2dyZXkiLCJkYXJra2hha2kiLCJkYXJrbWFnZW50YSIsImRhcmtvbGl2ZWdyZWVuIiwiZGFya29yYW5nZSIsImRhcmtvcmNoaWQiLCJkYXJrcmVkIiwiZGFya3NhbG1vbiIsImRhcmtzZWFncmVlbiIsImRhcmtzbGF0ZWJsdWUiLCJkYXJrc2xhdGVncmF5IiwiZGFya3NsYXRlZ3JleSIsImRhcmt0dXJxdW9pc2UiLCJkYXJrdmlvbGV0IiwiZGVlcHBpbmsiLCJkZWVwc2t5Ymx1ZSIsImRpbWdyYXkiLCJkaW1ncmV5IiwiZG9kZ2VyYmx1ZSIsImZpcmVicmljayIsImZsb3JhbHdoaXRlIiwiZm9yZXN0Z3JlZW4iLCJmdWNoc2lhIiwiZ2FpbnNib3JvIiwiZ2hvc3R3aGl0ZSIsImdvbGRlbnJvZCIsImdyYXkiLCJncmVlbnllbGxvdyIsImhvbmV5ZGV3IiwiaG90cGluayIsImluZGlhbnJlZCIsImluZGlnbyIsIml2b3J5Iiwia2hha2kiLCJsYXZlbmRlciIsImxhdmVuZGVyYmx1c2giLCJsYXduZ3JlZW4iLCJsZW1vbmNoaWZmb24iLCJsaWdodGJsdWUiLCJsaWdodGNvcmFsIiwibGlnaHRjeWFuIiwibGlnaHRnb2xkZW5yb2R5ZWxsb3ciLCJsaWdodGdyYXkiLCJsaWdodGdyZWVuIiwibGlnaHRncmV5IiwibGlnaHRwaW5rIiwibGlnaHRzYWxtb24iLCJsaWdodHNlYWdyZWVuIiwibGlnaHRza3libHVlIiwibGlnaHRzbGF0ZWdyYXkiLCJsaWdodHNsYXRlZ3JleSIsImxpZ2h0c3RlZWxibHVlIiwibGlnaHR5ZWxsb3ciLCJsaW1lZ3JlZW4iLCJsaW5lbiIsIm1hcm9vbiIsIm1lZGl1bWFxdWFtYXJpbmUiLCJtZWRpdW1ibHVlIiwibWVkaXVtb3JjaGlkIiwibWVkaXVtcHVycGxlIiwibWVkaXVtc2VhZ3JlZW4iLCJtZWRpdW1zbGF0ZWJsdWUiLCJtZWRpdW1zcHJpbmdncmVlbiIsIm1lZGl1bXR1cnF1b2lzZSIsIm1lZGl1bXZpb2xldHJlZCIsIm1pZG5pZ2h0Ymx1ZSIsIm1pbnRjcmVhbSIsIm1pc3R5cm9zZSIsIm1vY2Nhc2luIiwibmF2YWpvd2hpdGUiLCJuYXZ5Iiwib2xkbGFjZSIsIm9saXZlIiwib2xpdmVkcmFiIiwib3JhbmdlcmVkIiwib3JjaGlkIiwicGFsZWdvbGRlbnJvZCIsInBhbGVncmVlbiIsInBhbGV0dXJxdW9pc2UiLCJwYWxldmlvbGV0cmVkIiwicGFwYXlhd2hpcCIsInBlYWNocHVmZiIsInBlcnUiLCJwaW5rIiwicGx1bSIsInBvd2RlcmJsdWUiLCJyZWJlY2NhcHVycGxlIiwicm9zeWJyb3duIiwicm95YWxibHVlIiwic2FkZGxlYnJvd24iLCJzYWxtb24iLCJzYW5keWJyb3duIiwic2VhZ3JlZW4iLCJzZWFzaGVsbCIsInNpZW5uYSIsInNpbHZlciIsInNreWJsdWUiLCJzbGF0ZWJsdWUiLCJzbGF0ZWdyYXkiLCJzbGF0ZWdyZXkiLCJzbm93Iiwic3ByaW5nZ3JlZW4iLCJzdGVlbGJsdWUiLCJ0YW4iLCJ0ZWFsIiwidGhpc3RsZSIsInRvbWF0byIsInR1cnF1b2lzZSIsInZpb2xldCIsIndoZWF0Iiwid2hpdGUiLCJ3aGl0ZXNtb2tlIiwieWVsbG93Z3JlZW4iLCJmbGlwcGVkIiwiaXNPbmVQb2ludFplcm8iLCJwcm9jZXNzUGVyY2VudCIsImlzUGVyY2VudGFnZSIsIkNTU19VTklUIiwiUEVSTUlTU0lWRV9NQVRDSDMiLCJQRVJNSVNTSVZFX01BVENINCIsInNjcmlwdFVybCIsIl9vcHRpb25zJGV4dHJhQ29tbW9uUCIsImV4dHJhQ29tbW9uUHJvcHMiLCJjdXN0b21DYWNoZSIsInNjcmlwdCIsIkljb25mb250IiwiX2luZGV4IiwiZmlsbFRlc3RlciIsIm91dGxpbmVUZXN0ZXIiLCJ0d29Ub25lVGVzdGVyIiwibmV3VHlwZSIsInRvZGF5IiwiYmFja1RvVG9kYXkiLCJ0aW1lU2VsZWN0IiwiZGF0ZVNlbGVjdCIsIndlZWtTZWxlY3QiLCJtb250aFNlbGVjdCIsInllYXJTZWxlY3QiLCJkZWNhZGVTZWxlY3QiLCJ5ZWFyRm9ybWF0IiwiZGF5Rm9ybWF0IiwiZGF0ZVRpbWVGb3JtYXQiLCJtb250aEJlZm9yZVllYXIiLCJwcmV2aW91c01vbnRoIiwibmV4dE1vbnRoIiwicHJldmlvdXNZZWFyIiwibmV4dFllYXIiLCJwcmV2aW91c0RlY2FkZSIsIm5leHREZWNhZGUiLCJwcmV2aW91c0NlbnR1cnkiLCJuZXh0Q2VudHVyeSIsIl9pbnRlcm9wRGVmYXVsdCIsInNldE1vbWVudExvY2FsZSIsIkxvY2FsZVByb3ZpZGVyIiwid2VicGFja0NvbnRleHQiLCJyZXEiLCJ3ZWJwYWNrQ29udGV4dFJlc29sdmUiLCJfY3JlYXRlUmVhY3RDb250ZXh0IiwiX3Byb3BUeXBlczIiLCJfZ3VkMiIsImNyZWF0ZUV2ZW50RW1pdHRlciIsImNoYW5nZWRCaXRzIiwiY2FsY3VsYXRlQ2hhbmdlZEJpdHMiLCJfUHJvdmlkZXIkY2hpbGRDb250ZXgiLCJfQ29uc3VtZXIkY29udGV4dFR5cGUiLCJjb250ZXh0UHJvcCIsImVtaXR0ZXIiLCJvbGRWYWx1ZSIsIl9Db21wb25lbnQyIiwiX3RlbXAyIiwib25VcGRhdGUiLCJfcHJvcHMkaW1hZ2UiLCJ4bWxucyIsImZpbGxSdWxlIiwiY3giLCJjeSIsInJ4IiwicnkiLCJzdHJva2UiLCJfcmNUYWJsZSIsIl9UYWJsZSIsIl9zcGluIiwiX3BhZ2luYXRpb24iLCJfdXNlUGFnaW5hdGlvbjMiLCJfdXNlTGF6eUtWTWFwMyIsIl91c2VTZWxlY3Rpb24zIiwiX3VzZVNvcnRlcjMiLCJfdXNlRmlsdGVyMyIsIl91c2VUaXRsZUNvbHVtbnMzIiwiX0V4cGFuZEljb24iLCJfc2Nyb2xsVG8iLCJfQ29sdW1uIiwiX0NvbHVtbkdyb3VwIiwiX3VzZUJyZWFrcG9pbnQiLCJFTVBUWV9MSVNUIiwiY3VzdG9taXplRHJvcGRvd25QcmVmaXhDbHMiLCJkcm9wZG93blByZWZpeENscyIsImRhdGFTb3VyY2UiLCJwYWdpbmF0aW9uIiwicm93U2VsZWN0aW9uIiwibGVnYWN5Q2hpbGRyZW5Db2x1bW5OYW1lIiwic29ydERpcmVjdGlvbnMiLCJfcHJvcHMkc2hvd1NvcnRlclRvb2wiLCJzaG93U29ydGVyVG9vbHRpcCIsInJlc3BvbnNpdmUiLCJ0YWJsZVByb3BzIiwiX1JlYWN0JHVzZUNvbnRleHQkbG9jIiwiY29udGV4dExvY2FsZSIsInRhYmxlTG9jYWxlIiwicmF3RGF0YSIsIl9tZXJnZWRFeHBhbmRhYmxlJGNoaSIsImV4cGFuZFR5cGUiLCJfdXNlTGF6eUtWTWFwIiwiZ2V0UmVjb3JkQnlLZXkiLCJjaGFuZ2VFdmVudEluZm8iLCJ0cmlnZ2VyT25DaGFuZ2UiLCJjaGFuZ2VJbmZvIiwicmVzZXRQYWdpbmF0aW9uIiwicGFnZVNpemUiLCJzY3JvbGxUb0ZpcnN0Um93T25DaGFuZ2UiLCJmaWx0ZXJzIiwic29ydGVyIiwiY3VycmVudERhdGFTb3VyY2UiLCJnZXRGaWx0ZXJEYXRhIiwiZ2V0U29ydERhdGEiLCJzb3J0ZXJTdGF0ZXMiLCJmaWx0ZXJTdGF0ZXMiLCJfdXNlU29ydGVyIiwib25Tb3J0ZXJDaGFuZ2UiLCJfdXNlU29ydGVyMiIsInRyYW5zZm9ybVNvcnRlckNvbHVtbnMiLCJzb3J0U3RhdGVzIiwic29ydGVyVGl0bGVQcm9wcyIsImdldFNvcnRlcnMiLCJzb3J0ZWREYXRhIiwiX3VzZUZpbHRlciIsIm9uRmlsdGVyQ2hhbmdlIiwiX3VzZUZpbHRlcjIiLCJ0cmFuc2Zvcm1GaWx0ZXJDb2x1bW5zIiwiZ2V0RmlsdGVycyIsImNvbHVtblRpdGxlUHJvcHMiLCJfdXNlVGl0bGVDb2x1bW5zIiwidHJhbnNmb3JtVGl0bGVDb2x1bW5zIiwiX3VzZVBhZ2luYXRpb24iLCJfdXNlUGFnaW5hdGlvbjIiLCJtZXJnZWRQYWdpbmF0aW9uIiwiZ2V0UGFnaW5hdGlvblBhcmFtIiwicGFnZURhdGEiLCJfbWVyZ2VkUGFnaW5hdGlvbiRjdXIiLCJfbWVyZ2VkUGFnaW5hdGlvbiRwYWciLCJERUZBVUxUX1BBR0VfU0laRSIsIl91c2VTZWxlY3Rpb24iLCJfdXNlU2VsZWN0aW9uMiIsInRyYW5zZm9ybVNlbGVjdGlvbkNvbHVtbnMiLCJzZWxlY3RlZEtleVNldCIsInRvcFBhZ2luYXRpb25Ob2RlIiwiYm90dG9tUGFnaW5hdGlvbk5vZGUiLCJzcGluUHJvcHMiLCJpbm5lckNvbHVtbnMiLCJwYWdpbmF0aW9uU2l6ZSIsInJlbmRlclBhZ2luYXRpb24iLCJkZWZhdWx0UG9zaXRpb24iLCJ0b3BQb3MiLCJib3R0b21Qb3MiLCJpc0Rpc2FibGUiLCJzcGlubmluZyIsIndyYXBwZXJDbGFzc05hbWVzIiwibWVyZ2VkUm93Q2xhc3NOYW1lIiwiSU5URVJOQUxfSE9PS1MiLCJTRUxFQ1RJT05fQUxMIiwiU0VMRUNUSU9OX0lOVkVSVCIsIlNFTEVDVElPTl9OT05FIiwiQXN5bmNNb2RlIiwiQ29uY3VycmVudE1vZGUiLCJDb250ZXh0Q29uc3VtZXIiLCJDb250ZXh0UHJvdmlkZXIiLCJMYXp5IiwiUG9ydGFsIiwiaXNBc3luY01vZGUiLCJpc0NvbmN1cnJlbnRNb2RlIiwiaXNDb250ZXh0Q29uc3VtZXIiLCJpc0NvbnRleHRQcm92aWRlciIsImlzRWxlbWVudCIsImlzRm9yd2FyZFJlZiIsImlzUG9ydGFsIiwiaXNQcm9maWxlciIsImlzU3RyaWN0TW9kZSIsImlzU3VzcGVuc2UiLCJpc1ZhbGlkRWxlbWVudFR5cGUiLCJ0eXBlT2YiLCJfaXNWaXNpYmxlIiwiX3NoYWxsb3dlcXVhbCIsIl9yY1Jlc2l6ZU9ic2VydmVyIiwiX2dldFNjcm9sbEJhclNpemUiLCJfRml4ZWRIZWFkZXIiLCJfSGVhZGVyIiwiX0JvZHlDb250ZXh0IiwiX0JvZHkiLCJfdXNlQ29sdW1uczMiLCJfdXNlRnJhbWUiLCJfUmVzaXplQ29udGV4dCIsIl91c2VTdGlja3lPZmZzZXRzIiwiX0NvbEdyb3VwIiwiX1BhbmVsIiwiX0Zvb3RlciIsIl9leHBhbmRVdGlsIiwiX2ZpeFV0aWwiLCJfc3RpY2t5U2Nyb2xsQmFyIiwiX3VzZVN0aWNreTIiLCJfQm9keVJvdyIsIl9FeHBhbmRlZFJvdyIsIl9NZWFzdXJlQ2VsbCIsIl9Sb3ciLCJfY3NzIiwiU3RpY2t5U2Nyb2xsQmFyIiwiX3JlYWN0RG9tIiwiZmxvYXRNYXAiLCJnZXRTdHlsZVZhbHVlIiwiUElYRUxfUEFUVEVSTiIsImdldE91dGVyV2lkdGgiLCJnZXRPdXRlckhlaWdodCIsImdldERvY1NpemUiLCJnZXRDbGllbnRTaXplIiwicmVtb3ZlUGl4ZWwiLCJjc3NGbG9hdCIsInN0eWxlRmxvYXQiLCJmbG9hdCIsIl9kZWJvdW5jZSIsImRlZmF1bHRJbmRpY2F0b3IiLCJTcGluIiwiZGVib3VuY2lmeVVwZGF0ZVNwaW5uaW5nIiwiY2FuY2VsRXhpc3RpbmdTcGluIiwidXBkYXRlU3Bpbm5pbmciLCJvcmlnaW5hbFVwZGF0ZVNwaW5uaW5nIiwicmVuZGVyU3BpbiIsInRpcCIsInNwaW5DbGFzc05hbWUiLCJzcGluRWxlbWVudCIsImluZGljYXRvciIsImRvdENsYXNzTmFtZSIsInJlbmRlckluZGljYXRvciIsImlzTmVzdGVkUGF0dGVybiIsImNvbnRhaW5lckNsYXNzTmFtZSIsInNob3VsZEJlRGVsYXllZCIsInNob3VsZERlbGF5IiwidG9OdW1iZXIiLCJuYXRpdmVNYXgiLCJuYXRpdmVNaW4iLCJsYXN0QXJncyIsImxhc3RUaGlzIiwibWF4V2FpdCIsInRpbWVySWQiLCJsYXN0SW52b2tlVGltZSIsImxlYWRpbmciLCJtYXhpbmciLCJ0cmFpbGluZyIsImludm9rZUZ1bmMiLCJsZWFkaW5nRWRnZSIsInRpbWVyRXhwaXJlZCIsInNob3VsZEludm9rZSIsInRpbWVTaW5jZUxhc3RDYWxsIiwidHJhaWxpbmdFZGdlIiwidGltZVdhaXRpbmciLCJyZW1haW5pbmdXYWl0IiwiaXNJbnZva2luZyIsImJhc2VUcmltIiwicmVJc0JhZEhleCIsInJlSXNCaW5hcnkiLCJyZUlzT2N0YWwiLCJmcmVlUGFyc2VJbnQiLCJpc0JpbmFyeSIsInRyaW1tZWRFbmRJbmRleCIsInJlVHJpbVN0YXJ0IiwicmVXaGl0ZXNwYWNlIiwib2JqZWN0UHJvdG8iLCJuYXRpdmVPYmplY3RUb1N0cmluZyIsImlzT3duIiwidW5tYXNrZWQiLCJjb25kaXRpb24iLCJzaG91bGRVcGRhdGUiLCJfQW50ZEljb24iLCJMb2FkaW5nT3V0bGluZWQiLCJFeGNsYW1hdGlvbkNpcmNsZUZpbGxlZCIsIkNsb3NlQ2lyY2xlRmlsbGVkIiwiQ2hlY2tDaXJjbGVGaWxsZWQiLCJJbmZvQ2lyY2xlRmlsbGVkIiwiZ2V0UmNOb3RpZmljYXRpb25JbnN0YW5jZSIsImlubmVySW5zdGFuY2UiLCJfdXNlUkNOb3RpZmljYXRpb24iLCJfdXNlTm90aWZpY2F0aW9uIiwiX3VzZVJDTm90aWZpY2F0aW9uMiIsImhvb2tOb3RpZnkiLCJob29rQXBpUmVmIiwiX3JlZ2VuZXJhdG9yIiwiX0Nsb3NlT3V0bGluZWQiLCJfQ2hlY2tDaXJjbGVPdXRsaW5lZCIsIl9DbG9zZUNpcmNsZU91dGxpbmVkIiwiX0V4Y2xhbWF0aW9uQ2lyY2xlT3V0bGluZWQiLCJfSW5mb0NpcmNsZU91dGxpbmVkIiwiZGVmYXVsdEdldENvbnRhaW5lciIsImRlZmF1bHRDbG9zZUljb24iLCJfX2F3YWl0ZXIiLCJfYXJndW1lbnRzIiwiZnVsZmlsbGVkIiwiZGVmYXVsdEJvdHRvbSIsImRlZmF1bHRQbGFjZW1lbnQiLCJnZXRQbGFjZW1lbnRTdHlsZSIsImdldE5vdGlmaWNhdGlvbkluc3RhbmNlIiwiX2FyZ3MkcGxhY2VtZW50IiwiX2FyZ3MkZ2V0Q29udGFpbmVyIiwiX2FyZ3MkY2xvc2VJY29uIiwiY2FjaGVLZXkiLCJjYWNoZUluc3RhbmNlIiwibm90aWZpY2F0aW9uQ2xhc3MiLCJkdXJhdGlvbkFyZyIsImJ0biIsImF1dG9NYXJnaW5UYWciLCJDbG9zZU91dGxpbmVkIiwiQ2hlY2tDaXJjbGVPdXRsaW5lZCIsIkNsb3NlQ2lyY2xlT3V0bGluZWQiLCJFeGNsYW1hdGlvbkNpcmNsZU91dGxpbmVkIiwiSW5mb0NpcmNsZU91dGxpbmVkIiwiX3JjUGFnaW5hdGlvbiIsIl9Eb3VibGVMZWZ0T3V0bGluZWQiLCJfRG91YmxlUmlnaHRPdXRsaW5lZCIsIl9NaW5pU2VsZWN0IiwiX3NlbGVjdCIsIl91c2VCcmVha3BvaW50MiIsImN1c3RvbWl6ZVNlbGVjdFByZWZpeENscyIsInNlbGVjdFByZWZpeENscyIsImN1c3RvbUxvY2FsZSIsImlzU21hbGwiLCJleHRlbmRlZENsYXNzTmFtZSIsIm1pbmkiLCJwcmV2SWNvbiIsIm5leHRJY29uIiwianVtcFByZXZJY29uIiwianVtcE5leHRJY29uIiwiZ2V0SWNvbnNQcm9wcyIsInNlbGVjdENvbXBvbmVudENsYXNzIiwiTGVmdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIkRvdWJsZUxlZnRPdXRsaW5lZCIsIkRvdWJsZVJpZ2h0T3V0bGluZWQiLCJNaW5pU2VsZWN0IiwibWVyZ2VkQ2xlYXJJY29uIiwibWVyZ2VkU3VmZml4SWNvbiIsImljb25DbHMiLCJzaG93U2VhcmNoIiwiX1NlYXJjaE91dGxpbmVkIiwiX0Rvd25PdXRsaW5lZCIsIm1lcmdlZEl0ZW1JY29uIiwiX0NoZWNrT3V0bGluZWQiLCJtZXJnZWRSZW1vdmVJY29uIiwiRG93bk91dGxpbmVkIiwiQ2hlY2tPdXRsaW5lZCIsIlNlYXJjaE91dGxpbmVkIiwicmVzcG9uc2l2ZU1hcCIsInN1YnNjcmliZXJzIiwic3ViVWlkIiwibWF0Y2hIYW5kbGVycyIsInBvaW50TWFwIiwidW5yZWdpc3RlciIsInNjcmVlbiIsIm1hdGNoTWVkaWFRdWVyeSIsInBhZ2luYXRpb25PYmoiLCJwYWdlUHJvcCIsIl9hJHRvdGFsIiwicGFnaW5hdGlvblRvdGFsIiwiZGVmYXVsdEN1cnJlbnQiLCJkZWZhdWx0UGFnZVNpemUiLCJpbm5lclBhZ2luYXRpb24iLCJzZXRJbm5lclBhZ2luYXRpb24iLCJleHRlbmRzT2JqZWN0IiwibWF4UGFnZSIsInJlZnJlc2hQYWdpbmF0aW9uIiwibWFwQ2FjaGVSZWYiLCJrdk1hcCIsInJlY29yZHMiLCJwcmVzZXJ2ZVNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93S2V5cyIsImRlZmF1bHRTZWxlY3RlZFJvd0tleXMiLCJnZXRDaGVja2JveFByb3BzIiwib25TZWxlY3Rpb25DaGFuZ2UiLCJvblNlbGVjdEFsbCIsIm9uU2VsZWN0SW52ZXJ0Iiwib25TZWxlY3ROb25lIiwib25TZWxlY3RNdWx0aXBsZSIsInNlbGVjdGlvbkNvbFdpZHRoIiwic2VsZWN0aW9uVHlwZSIsInNlbGVjdGlvbnMiLCJjdXN0b21pemVSZW5kZXJDZWxsIiwicmVuZGVyQ2VsbCIsImhpZGVTZWxlY3RBbGwiLCJfcmVmJGNoZWNrU3RyaWN0bHkiLCJjaGVja1N0cmljdGx5IiwicHJlc2VydmVSZWNvcmRzUmVmIiwibWVyZ2VkU2VsZWN0ZWRLZXlzIiwic2V0TWVyZ2VkU2VsZWN0ZWRLZXlzIiwiX3RyZWVVdGlsIiwiZmxhdHRlZERhdGEiLCJmbGF0dGVuRGF0YSIsImNoZWNrYm94UHJvcHNNYXAiLCJpc0NoZWNrYm94RGlzYWJsZWQiLCJfdXNlTWVtbzIiLCJfY29uZHVjdENoZWNrIiwiX2NvbmR1Y3RVdGlsIiwiY29uZHVjdENoZWNrIiwiX3VzZU1lbW8zIiwiZGVyaXZlZFNlbGVjdGVkS2V5cyIsImRlcml2ZWRIYWxmU2VsZWN0ZWRLZXlzIiwiZGVyaXZlZFNlbGVjdGVkS2V5U2V0IiwiZGVyaXZlZEhhbGZTZWxlY3RlZEtleVNldCIsImxhc3RTZWxlY3RlZEtleSIsInNldExhc3RTZWxlY3RlZEtleSIsInNldFNlbGVjdGVkS2V5cyIsImF2YWlsYWJsZUtleXMiLCJuZXdDYWNoZSIsInRyaWdnZXJTaW5nbGVTZWxlY3Rpb24iLCJtZXJnZWRTZWxlY3Rpb25zIiwic2VsZWN0aW9uIiwia2V5U2V0IiwicmVjb3JkS2V5cyIsImNoZWNrZWRDdXJyZW50QWxsIiwiY2hlY2tlZEN1cnJlbnRTb21lIiwiY3VzdG9taXplU2VsZWN0aW9ucyIsIl9tZW51Iiwib25TZWxlY3Rpb25DbGljayIsIl9kcm9wZG93biIsImFsbERpc2FibGVkIiwiX2NoZWNrYm94IiwiY2hhbmdlS2V5cyIsIm1lcmdlZEluZGV0ZXJtaW5hdGUiLCJzdGFydEluZGV4IiwiZW5kSW5kZXgiLCJwb2ludEtleXMiLCJyZWNvcmRJbmRleCIsInJhbmdlS2V5cyIsImNoYW5nZWRLZXlzIiwib3JpZ2luQ2hlY2tlZEtleXMiLCJfY2hlY2tlZEtleXMiLCJuZXh0Q2hlY2tlZEtleXMiLCJ0ZW1wS2V5U2V0Iiwic2VsZWN0aW9uQ29sdW1uIiwiY29sdW1uVGl0bGUiLCJfcmVuZGVyQ2VsbCIsIl9jb2x1bW5zIiwiX3RvQXJyYXkyIiwicmVzdENvbHVtbnMiLCJzZWxlY3Rpb25GaXhlZCIsImdldEZpeGVkVHlwZSIsIkludGVybmFsVHJlZU5vZGUiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkMiIsIl9jb250ZXh0VHlwZXMiLCJfSW5kZW50IiwiZHJhZ05vZGVIaWdobGlnaHQiLCJvblNlbGVjdG9yQ2xpY2siLCJvbk5vZGVDbGljayIsImlzU2VsZWN0YWJsZSIsIm9uQ2hlY2siLCJvblNlbGVjdG9yRG91YmxlQ2xpY2siLCJvbk5vZGVEb3VibGVDbGljayIsIm9uTm9kZVNlbGVjdCIsImRpc2FibGVDaGVja2JveCIsIm9uTm9kZUNoZWNrIiwiaXNDaGVja2FibGUiLCJ0YXJnZXRDaGVja2VkIiwib25Ob2RlTW91c2VFbnRlciIsIm9uTm9kZU1vdXNlTGVhdmUiLCJvbk5vZGVDb250ZXh0TWVudSIsIm9uRHJhZ1N0YXJ0Iiwib25Ob2RlRHJhZ1N0YXJ0Iiwic2V0RGF0YSIsIm9uRHJhZ0VudGVyIiwib25Ob2RlRHJhZ0VudGVyIiwib25EcmFnT3ZlciIsIm9uTm9kZURyYWdPdmVyIiwib25EcmFnTGVhdmUiLCJvbk5vZGVEcmFnTGVhdmUiLCJvbkRyYWdFbmQiLCJvbk5vZGVEcmFnRW5kIiwib25Ecm9wIiwib25Ob2RlRHJvcCIsIm9uTm9kZUV4cGFuZCIsInNldFNlbGVjdEhhbmRsZSIsInNlbGVjdEhhbmRsZSIsImdldE5vZGVTdGF0ZSIsImlzTGVhZiIsImhhc0NoaWxkcmVuIiwibG9hZERhdGEiLCJjaGVja2FibGUiLCJ0cmVlQ2hlY2thYmxlIiwic3luY0xvYWREYXRhIiwiX3RoaXMkcHJvcHMkY29udGV4dCIsIm9uTm9kZUxvYWQiLCJyZW5kZXJTd2l0Y2hlckljb25Eb20iLCJzd2l0Y2hlckljb25Gcm9tUHJvcHMiLCJzd2l0Y2hlckljb24iLCJzd2l0Y2hlckljb25Gcm9tQ3R4IiwicmVuZGVyU3dpdGNoZXIiLCJfc3dpdGNoZXJJY29uRG9tIiwic3dpdGNoZXJDbHMiLCJzd2l0Y2hlckljb25Eb20iLCJyZW5kZXJDaGVja2JveCIsIiRjdXN0b20iLCJyZW5kZXJTZWxlY3RvciIsIiRpY29uIiwidGl0bGVOb2RlIiwiX3RoaXMkcHJvcHMkY29udGV4dDIiLCJ0cmVlSWNvbiIsImRyYWdnYWJsZSIsInRpdGxlUmVuZGVyIiwibWVyZ2VkRHJhZ2dhYmxlIiwid3JhcENsYXNzIiwiY3VycmVudEljb24iLCIkdGl0bGUiLCJvbkRvdWJsZUNsaWNrIiwicmVuZGVyRHJvcEluZGljYXRvciIsIl90aGlzJHByb3BzJGNvbnRleHQzIiwiZHJvcEluZGljYXRvclJlbmRlciIsInRyZWVTZWxlY3RhYmxlIiwiZG9tUmVmIiwiX3RoaXMkcHJvcHMkY29udGV4dDQiLCJmaWx0ZXJUcmVlTm9kZSIsImlzRW5kTm9kZSIsIkNvbnRleHRUcmVlTm9kZSIsIlRyZWVDb250ZXh0IiwiYmFzZUNsYXNzTmFtZSIsImlzQ2hlY2tEaXNhYmxlZCIsImdldENoZWNrRGlzYWJsZWQiLCJzeW50aGV0aWNHZXRDaGVja0Rpc2FibGVkIiwid2FybmluZ01pc3NLZXlzIiwiaGFzRW50aXR5IiwibGV2ZWxFbnRpdGllcyIsIm1heExldmVsIiwibGV2ZWxTZXQiLCJfZW50aXR5JGNoaWxkcmVuIiwiY2hpbGRFbnRpdHkiLCJ2aXNpdGVkS2V5cyIsIl9sZXZlbCIsImFsbENoZWNrZWQiLCJwYXJ0aWFsQ2hlY2tlZCIsInJlbW92ZUZyb21DaGVja2VkS2V5cyIsImZpbGxDb25kdWN0Q2hlY2siLCJoYWxmS2V5cyIsIl9lbnRpdHkkY2hpbGRyZW4yIiwiX2xldmVsMiIsImNsZWFuQ29uZHVjdENoZWNrIiwiZmlsdGVyZWRLZXlzIiwiX0VsbGlwc2lzT3V0bGluZWQiLCJCdXR0b25Hcm91cCIsIkRyb3Bkb3duQnV0dG9uIiwiaHRtbFR5cGUiLCJfcHJvcHMkaWNvbiIsImJ1dHRvbnNSZW5kZXIiLCJkcm9wZG93blByb3BzIiwiX2J1dHRvbnNSZW5kZXIiLCJfYnV0dG9uc1JlbmRlcjIiLCJsZWZ0QnV0dG9uVG9SZW5kZXIiLCJyaWdodEJ1dHRvblRvUmVuZGVyIiwiRWxsaXBzaXNPdXRsaW5lZCIsImNvbnZlcnRMZWdhY3lQcm9wcyIsImRhbmdlciIsIl93YXZlIiwiX0xvYWRpbmdJY29uIiwicnhUd29DTkNoYXIiLCJpc1R3b0NOQ2hhciIsImlzVW5ib3JkZXJlZEJ1dHRvblR5cGUiLCJzcGFjZUNoaWxkcmVuIiwibmVlZEluc2VydGVkIiwiaXNQcmV2Q2hpbGRQdXJlIiwiaXNDdXJyZW50Q2hpbGRQdXJlIiwiaW5zZXJ0U3BhY2UiLCJJbnRlcm5hbEJ1dHRvbiIsImxvYWRpbmdPckRlbGF5IiwiX3Byb3BzJGxvYWRpbmciLCJfcHJvcHMkZ2hvc3QiLCJnaG9zdCIsIl9wcm9wcyRibG9jayIsIl9wcm9wcyRodG1sVHlwZSIsImlubmVyTG9hZGluZyIsInNldExvYWRpbmciLCJoYXNUd29DTkNoYXIiLCJzZXRIYXNUd29DTkNoYXIiLCJidXR0b25SZWYiLCJkZWxheVRpbWVvdXRSZWYiLCJpc05lZWRJbnNlcnRlZCIsImJ1dHRvblRleHQiLCJoYW5kbGVDbGljayIsImF1dG9JbnNlcnRTcGFjZSIsInNpemVDbHMiLCJleGlzdEljb24iLCJraWRzIiwibGlua0J1dHRvblJlc3RQcm9wcyIsImJ1dHRvbk5vZGUiLCJfdW5yZWFjaGFibGVFeGNlcHRpb24iLCJVbnJlYWNoYWJsZUV4Y2VwdGlvbiIsInN0eWxlRm9yUHNldWRvIiwiaXNIaWRkZW4iLCJpc05vdEdyZXkiLCJXYXZlIiwiYW5pbWF0aW9uU3RhcnQiLCJkZXN0cm95ZWQiLCJ3YXZlQ29sb3IiLCJpbnNlcnRFeHRyYU5vZGUiLCJleHRyYU5vZGUiLCJnZXRBdHRyaWJ1dGVOYW1lIiwiYm9yZGVyQ29sb3IiLCJub2RlUm9vdCIsImdldFJvb3ROb2RlIiwibm9kZUJvZHkiLCJEb2N1bWVudCIsIm9uVHJhbnNpdGlvblN0YXJ0IiwicmVzZXRFZmZlY3QiLCJiaW5kQW5pbWF0aW9uRXZlbnQiLCJjbGlja1dhdmVUaW1lb3V0SWQiLCJhbmltYXRpb25TdGFydElkIiwicmVuZGVyV2F2ZSIsIl9yY01vdGlvbiIsImdldENvbGxhcHNlZFdpZHRoIiwiZ2V0UmVhbFdpZHRoIiwidGl0bGVJc1NwYW4iLCJyZW5kZXJUaXRsZSIsIl90b29sdGlwIiwicmVuZGVySXRlbSIsInRvb2x0aXBUaXRsZSIsInRvb2x0aXBQcm9wcyIsImNoaWxkcmVuTGVuZ3RoIiwicmVuZGVySXRlbUNoaWxkcmVuIiwiZ2V0T3ZlcmZsb3dPcHRpb25zIiwiX2NvbmZpZyRhcnJvd1dpZHRoIiwiYXJyb3dXaWR0aCIsIl9jb25maWckaG9yaXpvbnRhbEFyciIsImhvcml6b250YWxBcnJvd1NoaWZ0IiwiX2NvbmZpZyR2ZXJ0aWNhbEFycm93IiwidmVydGljYWxBcnJvd1NoaWZ0IiwicGxhY2VtZW50TWFwIiwidG9wUmlnaHQiLCJib3R0b21SaWdodCIsInJpZ2h0Qm90dG9tIiwibGVmdEJvdHRvbSIsImF1dG9BZGp1c3RPdmVyZmxvd0VuYWJsZWQiLCJhdXRvQWRqdXN0T3ZlcmZsb3dEaXNhYmxlZCIsIlByZXNldFN0YXR1c0NvbG9yVHlwZXMiLCJCYXJzT3V0bGluZWQiLCJDb250ZW50IiwiRm9vdGVyIiwiSGVhZGVyIiwiQmFzaWNDb21wb25lbnQiLCJBZGFwdGVyIiwiQmFzaWMiLCJMYXlvdXQiLCJzaWRlcnMiLCJzZXRTaWRlcnMiLCJoYXNTaWRlciIsImN1cnJlbnRJZCIsIlJhZGlvR3JvdXAiLCJldiIsImxhc3RWYWx1ZSIsIm9wdGlvblR5cGUiLCJfcHJvcHMkYnV0dG9uU3R5bGUiLCJjaGlsZHJlblRvUmVuZGVyIiwib3B0aW9uc1ByZWZpeENscyIsInJlbmRlckdyb3VwIiwiUmFkaW9CdXR0b24iLCJyYWRpb0dyb3VwQ29udGV4dCIsImlubmVyU29ydGVyU3RhdGVzIiwibXVsdGlwbGVQcmlvcml0eSIsImNsb25lRGF0YSIsInJ1bm5pbmdTb3J0ZXJzIiwic29ydE9yZGVyIiwiZ2V0U29ydEZ1bmN0aW9uIiwicmVjb3JkMSIsInJlY29yZDIiLCJzb3J0ZXJTdGF0ZSIsImNvbXBhcmVGbiIsImNvbXBhcmVSZXN1bHQiLCJzdWJSZWNvcmRzIiwiY29sbGVjdFNvcnRTdGF0ZXMiLCJzZXRTb3J0U3RhdGVzIiwibWVyZ2VkU29ydGVyU3RhdGVzIiwiY29sbGVjdGVkU3RhdGVzIiwidmFsaWRhdGVTdGF0ZXMiLCJwYXRjaFN0YXRlcyIsIm11bHRpcGxlTW9kZSIsImNvbHVtblRpdGxlU29ydGVyUHJvcHMiLCJzb3J0Q29sdW1ucyIsInNvcnRDb2x1bW4iLCJ0cmlnZ2VyU29ydGVyIiwic29ydFN0YXRlIiwibmV3U29ydGVyU3RhdGVzIiwiZ2VuZXJhdGVTb3J0ZXJJbmZvIiwiaW5qZWN0U29ydGVyIiwic29ydGVyU2F0ZXMiLCJkZWZhdWx0U29ydERpcmVjdGlvbnMiLCJ0YWJsZVNob3dTb3J0ZXJUb29sdGlwIiwiY29sdW1uUG9zIiwibmV3Q29sdW1uIiwic29ydGVyT3JkZXIiLCJuZXh0U29ydE9yZGVyIiwibmV4dFNvcnREaXJlY3Rpb24iLCJ1cE5vZGUiLCJfQ2FyZXRVcE91dGxpbmVkIiwiZG93bk5vZGUiLCJfQ2FyZXREb3duT3V0bGluZWQiLCJzb3J0VGlwIiwicmVuZGVyUHJvcHMiLCJyZW5kZXJTb3J0VGl0bGUiLCJvcmlnaW5PbkNsaWNrIiwiZ2V0TXVsdGlwbGVQcmlvcml0eSIsInB1c2hTdGF0ZSIsImRlZmF1bHRTb3J0T3JkZXIiLCJzdGF0ZVRvSW5mbyIsIkNhcmV0RG93bk91dGxpbmVkIiwiQ2FyZXRVcE91dGxpbmVkIiwiY3VycmVudERhdGEiLCJmaWx0ZXJTdGF0ZSIsIl9maWx0ZXJTdGF0ZSRjb2x1bW4iLCJvbkZpbHRlciIsImZsYXR0ZW5LZXlzIiwia2V5SW5kZXgiLCJyZWFsS2V5IiwiX0ZpbHRlckRyb3Bkb3duIiwiY29sbGVjdEZpbHRlclN0YXRlcyIsImZpbHRlcmVkVmFsdWVzIiwiZmlsdGVyZWRWYWx1ZSIsImZvcmNlRmlsdGVyZWQiLCJmaWx0ZXJlZCIsImRlZmF1bHRGaWx0ZXJlZFZhbHVlIiwiZ2VuZXJhdGVGaWx0ZXJJbmZvIiwiY3VycmVudEZpbHRlcnMiLCJmaWx0ZXJEcm9wZG93biIsIm9yaWdpbktleSIsInNldEZpbHRlclN0YXRlcyIsIm1lcmdlZEZpbHRlclN0YXRlcyIsInRyaWdnZXJGaWx0ZXIiLCJuZXdGaWx0ZXJTdGF0ZXMiLCJpbmplY3RGaWx0ZXIiLCJfY29sdW1uJGZpbHRlck11bHRpcGwiLCJmaWx0ZXJNdWx0aXBsZSIsIl9pc0VxdWFsIiwiX0ZpbHRlckZpbGxlZCIsIl9GaWx0ZXJXcmFwcGVyIiwiX3VzZVN5bmNTdGF0ZTMiLCJmaWx0ZXJEcm9wZG93blZpc2libGUiLCJvbkZpbHRlckRyb3Bkb3duVmlzaWJsZUNoYW5nZSIsInRyaWdnZXJWaXNpYmxlIiwibmV3VmlzaWJsZSIsInByb3BGaWx0ZXJlZEtleXMiLCJfdXNlU3luY1N0YXRlIiwiX3VzZVN5bmNTdGF0ZTIiLCJnZXRGaWx0ZXJlZEtleXNTeW5jIiwic2V0RmlsdGVyZWRLZXlzU3luYyIsIm9uU2VsZWN0S2V5cyIsInNldE9wZW5LZXlzIiwib3BlblJlZiIsImRyb3Bkb3duQ29udGVudCIsImludGVybmFsVHJpZ2dlckZpbHRlciIsIm1lcmdlZEtleXMiLCJvbkNvbmZpcm0iLCJvblJlc2V0IiwiZHJvcGRvd25NZW51Q2xhc3MiLCJjbG9zZURyb3Bkb3duIiwiY2xlYXJGaWx0ZXJzIiwicmVuZGVyRmlsdGVySXRlbXMiLCJtYXJnaW4iLCJmaWx0ZXJJY29uIiwiYmFzZUlzRXF1YWwiLCJiYXNlSXNFcXVhbERlZXAiLCJTdGFjayIsImVxdWFsQXJyYXlzIiwiZXF1YWxCeVRhZyIsImVxdWFsT2JqZWN0cyIsImdldFRhZyIsIm9iamVjdFRhZyIsIm9iaklzQXJyIiwib3RoSXNBcnIiLCJvYmpUYWciLCJvdGhUYWciLCJvYmpJc09iaiIsIm90aElzT2JqIiwiaXNTYW1lVGFnIiwib2JqSXNXcmFwcGVkIiwib3RoSXNXcmFwcGVkIiwib2JqVW53cmFwcGVkIiwib3RoVW53cmFwcGVkIiwic3RhY2tDbGVhciIsInN0YWNrRGVsZXRlIiwic3RhY2tHZXQiLCJzdGFja0hhcyIsInN0YWNrU2V0IiwiYXNzb2NJbmRleE9mIiwicGFpcnMiLCJMQVJHRV9BUlJBWV9TSVpFIiwiaXNNYXNrZWQiLCJ0b1NvdXJjZSIsInJlSXNIb3N0Q3RvciIsImZ1bmNQcm90byIsInJlSXNOYXRpdmUiLCJjb3JlSnNEYXRhIiwibWFza1NyY0tleSIsIkhhc2giLCJoYXNoQ2xlYXIiLCJoYXNoRGVsZXRlIiwiaGFzaEdldCIsImhhc2hIYXMiLCJoYXNoU2V0IiwiZ2V0TWFwRGF0YSIsInNldENhY2hlQWRkIiwic2V0Q2FjaGVIYXMiLCJwcmVkaWNhdGUiLCJVaW50OEFycmF5IiwibWFwVG9BcnJheSIsInNldFRvQXJyYXkiLCJzeW1ib2xQcm90byIsInN5bWJvbFZhbHVlT2YiLCJieXRlTGVuZ3RoIiwiYnl0ZU9mZnNldCIsImNvbnZlcnQiLCJzdGFja2VkIiwiZ2V0QWxsS2V5cyIsIm9ialByb3BzIiwib2JqTGVuZ3RoIiwib2JqU3RhY2tlZCIsInNraXBDdG9yIiwib2JqVmFsdWUiLCJvYmpDdG9yIiwib3RoQ3RvciIsImJhc2VHZXRBbGxLZXlzIiwiYXJyYXlQdXNoIiwia2V5c0Z1bmMiLCJzeW1ib2xzRnVuYyIsImFycmF5RmlsdGVyIiwic3R1YkFycmF5IiwibmF0aXZlR2V0U3ltYm9scyIsInJlc0luZGV4IiwiYXJyYXlMaWtlS2V5cyIsImJhc2VLZXlzIiwiaXNBcnJheUxpa2UiLCJiYXNlVGltZXMiLCJpc0FyZ3VtZW50cyIsImlzSW5kZXgiLCJpbmhlcml0ZWQiLCJpc0FyciIsImlzQXJnIiwiaXNCdWZmIiwiaXNUeXBlIiwic2tpcEluZGV4ZXMiLCJpdGVyYXRlZSIsImJhc2VJc0FyZ3VtZW50cyIsImlzTGVuZ3RoIiwidHlwZWRBcnJheVRhZ3MiLCJmcmVlUHJvY2VzcyIsInJlcXVpcmUiLCJpc1Byb3RvdHlwZSIsIm5hdGl2ZUtleXMiLCJDdG9yIiwib3ZlckFyZyIsIkRhdGFWaWV3IiwiZGF0YVZpZXdDdG9yU3RyaW5nIiwibWFwQ3RvclN0cmluZyIsInByb21pc2VDdG9yU3RyaW5nIiwic2V0Q3RvclN0cmluZyIsIndlYWtNYXBDdG9yU3RyaW5nIiwiQXJyYXlCdWZmZXIiLCJjdG9yU3RyaW5nIiwiRmlsdGVyRmlsbGVkIiwiX3VzZUZvcmNlVXBkYXRlIiwiX1JlYWN0JHVzZVJlZHVjZXIiLCJmaWxsVGl0bGUiLCJjbG9uZUNvbHVtbiIsImljb25QcmVmaXgiLCJfb3B0aW9ucyRnZXRDb250YWluZXIiLCJfb3B0aW9ucyRkdXJhdGlvbiIsIl9nZXRTY3JvbGwiLCJmcmFtZUZ1bmMiLCJuZXh0U2Nyb2xsVG9wIiwiX2Vhc2luZ3MiLCJlYXNlSW5PdXRDdWJpYyIsInNjcm9sbFRvIiwiSFRNTERvY3VtZW50IiwiY2xzIiwiY29tcGFjdCIsIl9pc01vYmlsZSIsIm9uU2VhcmNoIiwicmVuZGVyTG9hZGluZyIsImVudGVyQnV0dG9uIiwicmVuZGVyQWRkb25BZnRlciIsImJ0bkNsYXNzTmFtZSIsImVudGVyQnV0dG9uQXNFbGVtZW50IiwiaXNBbnRkQnV0dG9uIiwicmVuZGVyU2VhcmNoIiwiY3VzdG9taXplSW5wdXRQcmVmaXhDbHMiLCJpbnB1dFByZWZpeENscyIsImlucHV0Q2xhc3NOYW1lIiwibW9iaWxlUkUiLCJ0YWJsZXRSRSIsImZlYXR1cmVEZXRlY3QiLCJtYXhUb3VjaFBvaW50cyIsIkJ1dHRvblNoYXBlcyIsIkJ1dHRvblNpemVzIiwiQnV0dG9uSFRNTFR5cGVzIiwic2F2ZUJ1dHRvblJlZiIsInJlbmRlckJ1dHRvbiIsImZpeFR3b0NOQ2hhciIsImRlbGF5VGltZW91dCIsInN0eWxlRm9yUGVzdWRvIiwiX0V2ZW50IiwiVHJhbnNpdGlvbkV2ZW50cyIsImdldE5hbm9TZWNvbmRzIiwiaHJ0aW1lIiwibG9hZFRpbWUiLCJtb2R1bGVMb2FkVGltZSIsIm5vZGVMb2FkVGltZSIsInVwVGltZSIsInVwdGltZSIsIl9SZXNpemFibGVUZXh0QXJlYSIsInNhdmVUZXh0QXJlYSIsInJlc2l6YWJsZVRleHRBcmVhIiwicmVzaXplVGV4dGFyZWEiLCJ0ZXh0QXJlYSIsInJlbmRlclRleHRBcmVhIiwiX2NhbGN1bGF0ZU5vZGVIZWlnaHQiLCJSZXNpemFibGVUZXh0QXJlYSIsInJlc2l6ZU9uTmV4dEZyYW1lIiwibmV4dEZyYW1lQWN0aW9uSWQiLCJhdXRvU2l6ZSIsImF1dG9zaXplIiwibWluUm93cyIsIm1heFJvd3MiLCJ0ZXh0YXJlYVN0eWxlcyIsInJlc2l6aW5nIiwicmVzaXplRnJhbWVJZCIsImZpeEZpcmVmb3hBdXRvU2Nyb2xsIiwiY3VycmVudFN0YXJ0IiwiY3VycmVudEVuZCIsInNldFNlbGVjdGlvblJhbmdlIiwiX19pbXBvcnRTdGFyIiwiZmluZERPTU5vZGVfMSIsInRvQXJyYXlfMSIsIndhcm5pbmdfMSIsInJlZl8xIiwicmVzaXplX29ic2VydmVyX3BvbHlmaWxsXzEiLCJ1dGlsXzEiLCJjYWxjdWxhdGVOb2RlU3R5bGluZyIsInVpVGV4dE5vZGUiLCJ1c2VDYWNoZSIsImhpZGRlblRleHRhcmVhIiwiX2NhbGN1bGF0ZU5vZGVTdHlsaW5nIiwicGFkZGluZ1NpemUiLCJib3JkZXJTaXplIiwic2l6aW5nU3R5bGUiLCJISURERU5fVEVYVEFSRUFfU1RZTEUiLCJNSU5fU0FGRV9JTlRFR0VSIiwiTUFYX1NBRkVfSU5URUdFUiIsInNpbmdsZVJvd0hlaWdodCIsIlNJWklOR19TVFlMRSIsImNvbXB1dGVkU3R5bGVDYWNoZSIsIm5vZGVJbmZvIiwiQWN0aW9uTWFwIiwiY2xpY2siLCJfaWNvblByb3BzIiwiaWNvblByb3BzIiwidmlzaWJpbGl0eVRvZ2dsZSIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsIl9MaW5lIiwiX0NpcmNsZSIsIlByb2dyZXNzVHlwZXMiLCJQcm9ncmVzc1N0YXR1c2VzIiwiUHJvZ3Jlc3MiLCJyZW5kZXJQcm9ncmVzcyIsInNob3dJbmZvIiwicHJvZ3Jlc3NTdGF0dXMiLCJnZXRQcm9ncmVzc1N0YXR1cyIsInByb2dyZXNzSW5mbyIsInJlbmRlclByb2Nlc3NJbmZvIiwic3VjY2Vzc1BlcmNlbnQiLCJfdGhpcyRwcm9wcyRwZXJjZW50IiwicGVyY2VudCIsImdldFBlcmNlbnROdW1iZXIiLCJwZXJjZW50TnVtYmVyIiwidHJhaWxDb2xvciIsImdhcERlZ3JlZSIsInN0cm9rZUNvbG9yIiwiaGFuZGxlR3JhZGllbnQiLCJzb3J0R3JhZGllbnQiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJncmFkaWVudHMiLCJ0ZW1wQXJyIiwiX09iamVjdCRlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwiZm9ybWF0S2V5IiwiX3N0cm9rZUNvbG9yJGZyb20iLCJfc3Ryb2tlQ29sb3IkdG8iLCJfc3Ryb2tlQ29sb3IkZGlyZWN0aW8iLCJzb3J0ZWRHcmFkaWVudHMiLCJiYWNrZ3JvdW5kSW1hZ2UiLCJiYWNrZ3JvdW5kUHJvcHMiLCJwZXJjZW50U3R5bGUiLCJib3JkZXJSYWRpdXMiLCJzdWNjZXNzUGVyY2VudFN0eWxlIiwic3VjY2Vzc1NlZ21lbnQiLCJfcmNQcm9ncmVzcyIsInN0YXR1c0NvbG9yTWFwIiwibm9ybWFsIiwiZ2V0UGVyY2VudGFnZSIsInB0ZyIsInN1Y2Nlc3NQdGciLCJnYXBQb3NpdGlvbiIsImNpcmNsZVNpemUiLCJjaXJjbGVTdHlsZSIsImNpcmNsZVdpZHRoIiwiZ2FwUG9zIiwiZ2FwRGVnIiwiaXNHcmFkaWVudCIsIkNpcmNsZSIsInRyYWlsV2lkdGgiLCJlbnF1aXJlIiwibWVkaWFRdWVyeSIsIm1lZGlhIiwidW5tYXRjaCIsIk1lZGlhUXVlcnlEaXNwYXRjaCIsIk1lZGlhUXVlcnkiLCJVdGlsIiwicXVlcmllcyIsImJyb3dzZXJJc0luY2FwYWJsZSIsInNob3VsZERlZ3JhZGUiLCJpc1VuY29uZGl0aW9uYWwiLCJhZGRIYW5kbGVyIiwicmVtb3ZlSGFuZGxlciIsIlF1ZXJ5SGFuZGxlciIsImFzc2VzcyIsImNvbnN0dWN0b3IiLCJkZWZlclNldHVwIiwic2V0dXAiLCJpbml0aWFsaXNlZCIsIl9hZGREb21FdmVudExpc3RlbmVyIiwid3JhcENhbGxiYWNrIiwiX0V2ZW50T2JqZWN0MiIsIl9yZXQiLCJ1c2VDYXB0dXJlIiwiY2FwdHVyZSIsIl9FdmVudE9iamVjdCIsIl9FdmVudEJhc2VPYmplY3QyIiwiX29iamVjdEFzc2lnbjIiLCJjb21tb25Qcm9wcyIsImlzTnVsbE9yVW5kZWZpbmVkIiwiZXZlbnROb3JtYWxpemVycyIsImZpeCIsImF4aXMiLCJIT1JJWk9OVEFMX0FYSVMiLCJWRVJUSUNBTF9BWElTIiwiZXZlbnREb2MiLCJyZXRUcnVlIiwicmV0RmFsc2UiLCJEb21FdmVudE9iamVjdCIsImlzTmF0aXZlIiwiZ2V0UHJldmVudERlZmF1bHQiLCJmaXhGbnMiLCJub3JtYWxpemVyIiwiZml4Rm4iLCJFdmVudEJhc2VPYmplY3RQcm90byIsInJldHVybkZhbHNlIiwicmV0dXJuVHJ1ZSIsIkV2ZW50QmFzZU9iamVjdCIsImlzRXZlbnRPYmplY3QiLCJpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsImhhbHQiLCJ1bm1vdW50UmVzdWx0IiwidHJpZ2dlckNhbmNlbCIsIkNvbmZpcm1EaWFsb2ciLCJJU19SRUFDVF8xNiIsInVwZGF0ZSIsIm5ld0NvbmZpZyIsIl9BY3Rpb25CdXR0b24iLCJrZXlib2FyZCIsIm1hc2tTdHlsZSIsIl9wcm9wcyRpY29uVHlwZSIsImNvbnRlbnRQcmVmaXhDbHMiLCJhdXRvRm9jdXNCdXR0b24iLCJjYW5jZWxCdXR0b24iLCJhY3Rpb25GbiIsImNsb3NlTW9kYWwiLCJidXR0b25Qcm9wcyIsIkFjdGlvbkJ1dHRvbiIsInRpbWVvdXRJZCIsIl9jcmVhdGVET01Gb3JtIiwiX2NyZWF0ZUZvcm1GaWVsZCIsIl9Gb3JtSXRlbSIsIkZvcm1MYXlvdXRzIiwicmVuZGVyRm9ybSIsImhpZGVSZXF1aXJlZE1hcmsiLCJsYXlvdXQiLCJmb3JtQ2xhc3NOYW1lIiwib25TdWJtaXQiLCJjcmVhdGVGb3JtRmllbGQiLCJfcmVhY3REb20yIiwiX2RvbVNjcm9sbEludG9WaWV3MiIsIl9oYXMyIiwiX2NyZWF0ZUJhc2VGb3JtMiIsIl9jcmVhdGVGb3JtIiwiY3VycmVudFN0eWxlIiwibWl4aW4iLCJ2YWxpZGF0ZUZpZWxkc0FuZFNjcm9sbCIsInZhbGlkTmFtZXMiLCJmaXJzdE5vZGUiLCJmaXJzdFRvcCIsImdldFNjcm9sbGFibGVDb250YWluZXIiLCJvbmx5U2Nyb2xsSWZOZWVkZWQiLCJhbGxvd0hvcml6b250YWxTY3JvbGwiLCJhbGlnbldpdGhUb3AiLCJhbGlnbldpdGhMZWZ0Iiwib2Zmc2V0VG9wIiwib2Zmc2V0TGVmdCIsIm9mZnNldEJvdHRvbSIsIm9mZnNldFJpZ2h0IiwiaXNXaW4iLCJlbGVtT2Zmc2V0IiwiZXciLCJjb250YWluZXJPZmZzZXQiLCJjdyIsImNvbnRhaW5lclNjcm9sbCIsImRpZmZUb3AiLCJkaWZmQm90dG9tIiwid2luU2Nyb2xsIiwiY29tcHV0ZWRTdHlsZV8iLCJiYXNlSGFzIiwiaGFzUGF0aCIsImNhc3RQYXRoIiwidG9LZXkiLCJoYXNGdW5jIiwicmVJc0RlZXBQcm9wIiwicmVJc1BsYWluUHJvcCIsIm1lbW9pemVDYXBwZWQiLCJyZVByb3BOYW1lIiwicmVFc2NhcGVDaGFyIiwicXVvdGUiLCJzdWJTdHJpbmciLCJtZW1vaXplIiwicmVzb2x2ZXIiLCJtZW1vaXplZCIsIkNhY2hlIiwiYmFzZVRvU3RyaW5nIiwiYXJyYXlNYXAiLCJzeW1ib2xUb1N0cmluZyIsIl9mcm9tIiwiX2Zyb20yIiwiaXNBcnJheUl0ZXIiLCJjcmVhdGVQcm9wZXJ0eSIsImdldEl0ZXJGbiIsImFycmF5TGlrZSIsIm1hcGZuIiwibWFwcGluZyIsIml0ZXJGbiIsIkFycmF5UHJvdG8iLCJjbGFzc29mIiwiZ2V0SXRlcmF0b3JNZXRob2QiLCJBUkciLCJ0cnlHZXQiLCJTQUZFX0NMT1NJTkciLCJyaXRlciIsInNraXBDbG9zaW5nIiwic2FmZSIsIlJlYWN0Tm9vcFVwZGF0ZVF1ZXVlIiwiZW1wdHlPYmplY3QiLCJfaW52YXJpYW50IiwiUmVhY3RDb21wb25lbnQiLCJpbmplY3RlZE1peGlucyIsIlJlYWN0Q2xhc3NJbnRlcmZhY2UiLCJzdGF0aWNzIiwidXBkYXRlQ29tcG9uZW50IiwiUmVhY3RDbGFzc1N0YXRpY0ludGVyZmFjZSIsIlJFU0VSVkVEX1NQRUNfS0VZUyIsIm1peFNwZWNJbnRvQ29tcG9uZW50IiwiY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24iLCJzcGVjUG9saWN5IiwibWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQiLCJhdXRvYmluZCIsInZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUiLCJpc0FscmVhZHlEZWZpbmVkIiwiUmVhY3RDbGFzc01peGluIiwic3BlYyIsImF1dG9CaW5kUGFpcnMiLCJfX3JlYWN0QXV0b0JpbmRQYWlycyIsImlzUmVhY3RDbGFzc01ldGhvZCIsIm1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMiLCJ0d28iLCJiaW5kQXV0b0JpbmRNZXRob2QiLCJJc01vdW50ZWRQcmVNaXhpbiIsIl9faXNNb3VudGVkIiwiSXNNb3VudGVkUG9zdE1peGluIiwicmVwbGFjZVN0YXRlIiwiUmVhY3RDbGFzc0NvbXBvbmVudCIsImF1dG9CaW5kS2V5IiwiYmluZEF1dG9CaW5kTWV0aG9kcyIsIm1ldGhvZE5hbWUiLCJhcmdJbmRleCIsImZyYW1lc1RvUG9wIiwiX3ZhbGlkYXRvciIsIl92YWxpZGF0b3IyIiwiX21lc3NhZ2VzMiIsIl9zdHJpbmcyIiwiX21ldGhvZDIiLCJfbnVtYmVyMiIsIl9ib29sZWFuMiIsIl9yZWdleHAyIiwiX2ludGVnZXIyIiwiX2Zsb2F0MiIsIl9hcnJheTIiLCJfb2JqZWN0MiIsIl9kYXRlMiIsImJvb2xlYW4iLCJfcnVsZSIsIl9ydWxlMiIsIl9yZXF1aXJlZCIsImJhc2VHZXQiLCJhc3NpZ25WYWx1ZSIsIm5lc3RlZCIsImJhc2VBc3NpZ25WYWx1ZSIsIl9jcmVhdGVDbGFzczMiLCJGaWVsZHNTdG9yZSIsIl9jcmVhdGVGb3JtRmllbGQyIiwicGFydE9mIiwiaW50ZXJuYWxGbGF0dGVuRmllbGRzIiwiX2luaXRpYWxpc2VQcm9wcyIsInZhbGlkRmllbGRzTmFtZSIsIm5vd0ZpZWxkcyIsIm5vd1ZhbHVlcyIsImdldFZhbHVlRnJvbUZpZWxkcyIsIm5vcm1hbGl6ZSIsIm1heWJlUGFydGlhbE5hbWUiLCJtYXliZVBhcnRpYWxOYW1lcyIsImZ1bGxOYW1lIiwicGFydGlhbE5hbWUiLCJnZXRWYWx1ZVByb3BzIiwiZ2V0Tm90Q29sbGVjdGVkRmllbGRzIiwibWVtYmVyIiwiZnVsbE5hbWVzIiwiaXNBcnJheVZhbHVlIiwic3VmZml4TmFtZVN0YXJ0SW5kZXgiLCJzZXRGaWVsZHNJbml0aWFsVmFsdWUiLCJpbml0aWFsVmFsdWVzIiwiZmxhdHRlbmVkSW5pdGlhbFZhbHVlcyIsImdldE5lc3RlZEZpZWxkcyIsImdldE5lc3RlZEZpZWxkIiwiZ2V0RmllbGRzRXJyb3IiLCJnZXRGaWVsZEVycm9yIiwiZ2V0RmllbGRNZW1iZXIiLCJpc0ZpZWxkVmFsaWRhdGluZyIsImlzRmllbGRzVmFsaWRhdGluZyIsImlzRmllbGRUb3VjaGVkIiwiaXNGaWVsZHNUb3VjaGVkIiwiX2NyZWF0ZUJhc2VGb3JtIiwiX3JjQ29sbGFwc2UiLCJfQ29sbGFwc2VQYW5lbCIsIl9vcGVuQW5pbWF0aW9uIiwicGFuZWxQcm9wcyIsInJlbmRlckNvbGxhcHNlIiwiZXhwYW5kSWNvblBvc2l0aW9uIiwicmVuZGVyQ29sbGFwc2VQYW5lbCIsIl90aGlzJHByb3BzJHNob3dBcnJvdyIsImNvbGxhcHNlUGFuZWxDbGFzc05hbWUiLCJfY3NzQW5pbWF0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQiLCJyYW5kb21TdHJpbmciLCJBY3Rpb25UeXBlcyIsIklOSVQiLCJSRVBMQUNFIiwiUFJPQkVfVU5LTk9XTl9BQ1RJT04iLCJpc1BsYWluT2JqZWN0IiwiY3JlYXRlU3RvcmUiLCJwcmVsb2FkZWRTdGF0ZSIsImVuaGFuY2VyIiwiY3VycmVudFJlZHVjZXIiLCJjdXJyZW50U3RhdGUiLCJjdXJyZW50TGlzdGVuZXJzIiwibmV4dExpc3RlbmVycyIsImlzRGlzcGF0Y2hpbmciLCJlbnN1cmVDYW5NdXRhdGVOZXh0TGlzdGVuZXJzIiwiaXNTdWJzY3JpYmVkIiwicmVwbGFjZVJlZHVjZXIiLCJuZXh0UmVkdWNlciIsIm91dGVyU3Vic2NyaWJlIiwib2JzZXJ2ZVN0YXRlIiwiY29tcG9zZSIsImZ1bmNzIiwiYXBwbHlNaWRkbGV3YXJlIiwibWlkZGxld2FyZXMiLCJfZGlzcGF0Y2giLCJtaWRkbGV3YXJlQVBJIiwiY2hhaW4iLCJtaWRkbGV3YXJlIiwiY3JlYXRlVGh1bmtNaWRkbGV3YXJlIiwiZXh0cmFBcmd1bWVudCIsInRodW5rIiwid2l0aEV4dHJhQXJndW1lbnQiLCJpc09iamVjdE9iamVjdCIsInByb3QiLCJ1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IiwiY3JlYXRlU3RvcmVTdGF0ZUhvb2siLCJtYXBTdGF0ZSIsImVxdWFsaXR5Rm4iLCJtYXBTdGF0ZVJlZiIsInN1YnNjcmlwdGlvbk1hcFN0YXRlRXJyb3IiLCJjaGVja01hcFN0YXRlIiwiY3JlYXRlU3RvcmVBY3Rpb25zSG9vayIsIm1hcEFjdGlvbnMiLCJnZXRBY3Rpb25zIiwiY3JlYXRlU3RvcmVEaXNwYXRjaEhvb2siLCJjcmVhdGVTdG9yZVJlaHlkcmF0ZWRIb29rIiwicmVoeWRyYXRlZCIsInNldFJlaHlkcmF0ZWQiLCJyZXNvbHZlUmVoeWRyYXRpb24iLCJkZWZhdWx0U3RhdGVSZXNvbHZlcnMiLCJyZWN1cnNpdmVDbG9uZSIsImlzUHJvbWlzZSIsImNyZWF0ZVNpbXBsZVByb2R1Y2UiLCJkaXNhYmxlSW1tZXIiLCJfY3VycmVudCIsIm5ld2lmeSIsImN1cnJlbnRQYXRoIiwiZmluYWxWYWx1ZSIsIl9kcmFmdCIsInBhcmVudFBhdGgiLCJjcmVhdGVSZWR1Y2VyIiwiYWN0aW9uUmVkdWNlcnNEaWN0IiwiY3VzdG9tUmVkdWNlcnMiLCJjb21wdXRlZFByb3BlcnRpZXMiLCJzaW1wbGVQcm9kdWNlIiwicmVkdWNlckZvckFjdGlvbnMiLCJhY3Rpb25SZWR1Y2VyIiwicnVuQWN0aW9uUmVkdWNlckF0UGF0aCIsInN0YXRlQWZ0ZXJBY3Rpb25zIiwicmVkdWNlckZvckN1c3RvbVJlZHVjZXJzIiwiYmluZENvbXB1dGVkUHJvcGVydHkiLCJub29wU3RvcmFnZSIsImdldEl0ZW0iLCJzZXRJdGVtIiwicmVtb3ZlSXRlbSIsImxvY2FsU3RvcmFnZSIsInNlc3Npb25TdG9yYWdlIiwiY3JlYXRlU3RvcmFnZVdyYXBwZXIiLCJzdG9yYWdlIiwidHJhbnNmb3JtZXJzIiwib3V0VHJhbnNmb3JtZXJzIiwiZGVzZXJpYWxpemUiLCJzaW1wbGVLZXkiLCJpc0FzeW5jIiwid3JhcHBlZCIsInRyYW5zZm9ybWVkIiwiaW4iLCJzZXJpYWxpemUiLCJyZXNvbHZlUGVyc2lzdFRhcmdldHMiLCJ3aGl0ZWxpc3QiLCJ0YXJnZXRzIiwiY3JlYXRlTGlzdGVuZXJNaWRkbGV3YXJlIiwicmVmZXJlbmNlcyIsImludGVybmFscyIsImxpc3RlbmVyQWN0aW9uTWFwIiwic291cmNlQWN0aW9uIiwiYWN0aW9uQ3JlYXRvckRpY3QiLCJhY3Rpb25DcmVhdG9yIiwiY3JlYXRlQ29tcHV0ZWRQcm9wZXJ0aWVzTWlkZGxld2FyZSIsImNvbXB1dGVkU3RhdGUiLCJpc0luUmVkdWNlciIsImV4dHJhY3REYXRhRnJvbU1vZGVsIiwiaW5qZWN0aW9ucyIsImFjdGlvbkNyZWF0b3JzIiwiYWN0aW9uVGh1bmtzIiwibGlzdGVuZXJBY3Rpb25DcmVhdG9ycyIsImxpc3RlbmVyRGVmaW5pdGlvbnMiLCJwZXJzaXN0ZW5jZUNvbmZpZyIsInJlY3Vyc2l2ZUV4dHJhY3RGcm9tTW9kZWwiLCJoYW5kbGVWYWx1ZUFzU3RhdGUiLCJpbml0aWFsUGFyZW50UmVmIiwiYWN0aW9uRGVmaW5pdGlvbiIsImFjdGlvbk1ldGEiLCJhY3Rpb25OYW1lIiwicmVzb2x2ZWRUYXJnZXRzIiwiY3JlYXRlQWN0aW9uQ3JlYXRvciIsInRodW5rSGFuZGxlciIsInRodW5rRGVmaW5pdGlvbiIsInRodW5rTWV0YSIsImhlbHBlcnMiLCJnZXRTdG9yZUFjdGlvbnMiLCJnZXRTdG9yZVN0YXRlIiwiY3JlYXRlVGh1bmtIYW5kbGVyIiwiX2FjdGlvbkNyZWF0b3IiLCJzdGFydFR5cGUiLCJzdWNjZXNzVHlwZSIsImZhaWxUeXBlIiwiZGlzcGF0Y2hFcnJvciIsImRpc3BhdGNoU3VjY2VzcyIsInJlc29sdmVkIiwiY3JlYXRlVGh1bmtBY3Rpb25zQ3JlYXRvciIsImRlZmluaXRpb24iLCJjb21wdXRlZE1ldGEiLCJtZW1vaXNlZFJlc3VsdEZuIiwic3RvcmVTdGF0ZSIsImlucHV0cyIsInN0YXRlUmVzb2x2ZXJzIiwiY3JlYXRlQ29tcHV0ZWRQcm9wZXJ0eUJpbmRlciIsInBlcnNpc3REZWZpbml0aW9uIiwibWVyZ2VTdHJhdGVneSIsImV4dHJhY3RQZXJzaXN0Q29uZmlnIiwibGlzdGVuZXJBY3Rpb25PclRodW5rIiwibGlzdGVuZXJNZXRhIiwidGFyZ2V0UmVzb2x2ZXIiLCJ0YXJnZXRUeXBlcyIsInRhcmdldFR5cGUiLCJsaXN0ZW5lclJlZyIsImJpbmRMaXN0ZW5lckRlZmluaXRpb25zIiwibW9kZWxDbG9uZSIsIl9vcHRpb25zIiwiY29tcG9zZSQxIiwiX29wdGlvbnMkZGV2VG9vbHMiLCJkZXZUb29scyIsIl9vcHRpb25zJGRpc2FibGVJbW1lciIsIl9vcHRpb25zJGVuaGFuY2VycyIsImVuaGFuY2VycyIsIl9vcHRpb25zJGluaXRpYWxTdGF0ZSIsIl9vcHRpb25zJG1pZGRsZXdhcmUiLCJfb3B0aW9ucyRtb2NrQWN0aW9ucyIsIm1vY2tBY3Rpb25zIiwiX29wdGlvbnMkbmFtZSIsInN0b3JlTmFtZSIsIl9vcHRpb25zJHJlZHVjZXJFbmhhbiIsInJlZHVjZXJFbmhhbmNlciIsInJvb3RSZWR1Y2VyIiwiYmluZFJlcGxhY2VTdGF0ZSIsIm1vZGVsRGVmIiwiZVBSUyIsIm1vZGVsRGVmaW5pdGlvbiIsIm1vY2tlZEFjdGlvbnMiLCJwZXJzaXN0S2V5IiwidGFyZ2V0UGF0aCIsInBlcnNpc3RvciIsImNyZWF0ZVBlcnNpc3RvciIsInBlcnNpc3RNaWRkbGV3YXJlIiwiY3JlYXRlUGVyc2lzdE1pZGRsZXdhcmUiLCJjbGVhclBlcnNpc3RhbmNlIiwiYWxsIiwiY3JlYXRlUGVyc2lzdGVuY2VDbGVhcmVyIiwiYmluZFN0b3JlSW50ZXJuYWxzIiwiX2V4dHJhY3REYXRhRnJvbU1vZGVsIiwiY3JlYXRlU3RvcmVJbnRlcm5hbHMiLCJjb21wb3NlRW5oYW5jZXJzIiwiX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fQ09NUE9TRV9fIiwiZWFzeVBlYXN5TWlkZGxld2FyZSIsImJpbmRBY3Rpb25DcmVhdG9ycyIsImFjdGlvbnNLZXkiLCJyZWJpbmRTdG9yZSIsIl9yZXNvbHZlUmVoeWRyYXRpb24iLCJwZXJzaXN0SW5zdGFuY2UiLCJhcHBseVJlaHlkcmF0aW9uU3RyYXRlZ3kiLCJvcmlnaW5hbFN0YXRlIiwicmVoeWRyYXRlZFN0YXRlIiwic2V0QXQiLCJjdXJyZW50TmV4dCIsImFzeW5jU3RhdGVSZXNvbHZlcnMiLCJkYXRhUHJvbWlzZSIsInJlc29sdmVkRGF0YSIsInJlaHlkcmF0ZVN0YXRlRnJvbVBlcnNpc3RJZk5lZWRlZCIsImFkZE1vZGVsIiwibW9kZWxGb3JLZXkiLCJjbGVhck1vY2tlZEFjdGlvbnMiLCJnZXRMaXN0ZW5lcnMiLCJnZXRNb2NrZWRBY3Rpb25zIiwicmVjb25maWd1cmUiLCJuZXdNb2RlbCIsInJlbW92ZU1vZGVsIiwiU3RvcmVQcm92aWRlciIsIl9pc1RyYW5zZm9ybWVyIiwiX2Rpc3BhdGNoYWJsZSIsIm1ldGhvZE5hbWVzIiwiX2lzQXJyYXkiLCJ0cmFuc2R1Y2VyIiwiX2lzU3RyaW5nIiwiWFdyYXAiLCJ0aGlzT2JqIiwiX2l0ZXJhYmxlUmVkdWNlIiwiX21ldGhvZFJlZHVjZSIsInN5bUl0ZXJhdG9yIiwiX3JlZHVjZSIsIl94d3JhcCIsIl9hcnJheVJlZHVjZSIsIlhGaWx0ZXIiLCJfeGZCYXNlIiwiX2hhcyIsImhhc0VudW1CdWciLCJub25FbnVtZXJhYmxlUHJvcHMiLCJoYXNBcmdzRW51bUJ1ZyIsIm5JZHgiLCJrcyIsImNoZWNrQXJnc0xlbmd0aCIsInByZWQiLCJmaWx0ZXJhYmxlIiwiX2ZpbHRlciIsInNlYXJjaEZpbHRlciIsInBocmFzZSIsInBhdGhzQXJyYXkiLCJfaXNJbnRlZ2VyIiwicGF0aEFyIiwiX2N1cnJ5MyIsImYzIiwiX2MiLCJvblRydWUiLCJvbkZhbHNlIiwiX3BpcGUiLCJfY2hlY2tGb3JNZXRob2QiLCJtZXRob2RuYW1lIiwidG9JbmRleCIsInBpcGUiLCJJZGVudGl0eSIsImxlbnMiLCJfcGF0aCIsIl9kZWZzIiwiWE1hcCIsImZ1bmN0b3IiLCJfbWFwIiwidG9GdW5jdG9yRm4iLCJtYWtlUGF5bG9hZCIsImRvbWFpbnMiLCJlbmRwb2ludHMiLCJpblByb2dyZXNzIiwiY29tcGxldGVkIiwicmVtb3ZlZFBlcmNlbnQiLCJzZWxlY3RlZERvbWFpbnMiLCJzZXRTZWxlY3RlZERvbWFpbnMiLCJzZXRJblByb2dyZXNzIiwic2V0UmVtb3ZlZFBlcmNlbnQiLCJyZW1vdmVkU3RyaW5ncyIsInRvdGFsU3RyaW5ncyIsInJlbW92ZVN0cmluZ3NCYXRjaCIsImFjdGlvbnMiLCJhamF4IiwicmVtb3ZlU3RyaW5nc0Zyb21Eb21haW5zIiwiaWZFbHNlIiwicmVtb3ZlZEluQmF0Y2giLCJvblJlbW92ZSIsImluaXRTdHJpbmdzUmVtb3ZpbmciLCJvYmpPZiIsImxlbnNQcm9wIiwic3RyaW5nRG9tYWlucyIsInJlbW92ZVN0cmluZ3MiLCJmaWx0ZXJlZERvbWFpbnMiLCJmbk9yU3RhdGVSZXNvbHZlcnMiLCJpdGVtcyIsInNldFNlYXJjaCIsImlzTW9kYWxPcGVuIiwic2hvd01vZGFsIiwiZG9tYWluIiwid3AiLCJpMThuIiwidXNlU3RvcmVTdGF0ZSIsInZhbHMiLCJ1c2VTdG9yZUFjdGlvbnMiLCJzZWxlY3RlZFJvd3MiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImdyYWRpZW50VW5pdHMiLCJzdG9wQ29sb3IiLCJjbGVhclJlbW92ZVByb2dyZXNzIiwiU3VjY2Vzc0ljb24iLCJyZWxvYWQiLCJDbGVhbnVwU3VjY2VzcyIsInJlbW92ZUluUHJvZ3Jlc3MiLCJkZXN0cm95T25DbG9zZSIsIk1vZGFsQ2xvc2VJY29uIiwiRXJyb3JNZXNzYWdlIiwiQ2xlYW51cFByb2dyZXNzIiwiQ2xlYW51cFRhYmxlIiwiQXBwIiwiQ2xlYW51cEJ1dHRvbiIsIkNsZWFudXBNb2RhbCIsIndwbWxfc3RyaW5nc19jbGVhbnVwX3VpIiwiZ2V0RWxlbWVudEJ5SWQiLCJwcm9wTGlzdCIsInBpY2tBdHRycyIsIm1lcmdlZENvbmZpZyIsImFyaWFPbmx5IiwiYXJpYSIsImF0dHIiLCJGaWxsZXIiLCJvbklubmVyUmVzaXplIiwiaW5uZXJTdHlsZSIsImZsZXhEaXJlY3Rpb24iLCJnZXRQYWdlWSIsIlNjcm9sbEJhciIsIm1vdmVSYWYiLCJzY3JvbGxiYXJSZWYiLCJ0aHVtYlJlZiIsInZpc2libGVUaW1lb3V0IiwiZHJhZ2dpbmciLCJzdGFydFRvcCIsImRlbGF5SGlkZGVuIiwib25TY3JvbGxiYXJUb3VjaFN0YXJ0Iiwib25Db250YWluZXJNb3VzZURvd24iLCJwYXRjaEV2ZW50cyIsInJlbW92ZUV2ZW50cyIsIm9uU3RhcnRNb3ZlIiwiZ2V0VG9wIiwibmV3VG9wIiwiZW5hYmxlU2Nyb2xsUmFuZ2UiLCJnZXRFbmFibGVTY3JvbGxSYW5nZSIsImVuYWJsZUhlaWdodFJhbmdlIiwiZ2V0RW5hYmxlSGVpZ2h0UmFuZ2UiLCJuZXdTY3JvbGxUb3AiLCJvblN0b3BNb3ZlIiwiZ2V0U3BpbkhlaWdodCIsImJhc2VIZWlnaHQiLCJzcGluSGVpZ2h0IiwidXNlclNlbGVjdCIsInNldFJlZiIsInJlZkZ1bmMiLCJDYWNoZU1hcCIsIm1hcHMiLCJ1c2VIZWlnaHRzIiwib25JdGVtQWRkIiwib25JdGVtUmVtb3ZlIiwidXBkYXRlZE1hcmsiLCJzZXRVcGRhdGVkTWFyayIsImluc3RhbmNlUmVmIiwiaGVpZ2h0c1JlZiIsImhlaWdodFVwZGF0ZUlkUmVmIiwiY29sbGVjdEhlaWdodCIsImh0bWxFbGVtZW50Iiwib3JpZ2luIiwidXNlRGlmZkl0ZW0iLCJvbkRpZmYiLCJwcmV2RGF0YSIsInNldFByZXZEYXRhIiwiZGlmZkl0ZW0iLCJzZXREaWZmSXRlbSIsIm9yaWdpbkxpc3QiLCJ0YXJnZXRMaXN0Iiwic2hvcnRMaXN0IiwibG9uZ0xpc3QiLCJvcmlnaW5MZW4iLCJ0YXJnZXRMZW4iLCJub3RFeGlzdEtleSIsIl9fRU1QVFlfSVRFTV9fIiwiZ2V0SXRlbUtleSIsImRpZmZJbmRleCIsInNob3J0S2V5IiwiZmluZExpc3REaWZmSW5kZXgiLCJsb2NrUmVmIiwibG9ja1RpbWVvdXRSZWYiLCJsb2NrU2Nyb2xsIiwic2Nyb2xsUGluZ1JlZiIsImlzU2Nyb2xsQXRUb3AiLCJpc1Njcm9sbEF0Qm90dG9tIiwic21vb3RoT2Zmc2V0Iiwib3JpZ2luU2Nyb2xsIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJTY3JvbGxTdHlsZSIsIm92ZXJmbG93QW5jaG9yIiwiUmF3TGlzdCIsIl9wcm9wcyRwcmVmaXhDbHMiLCJpdGVtSGVpZ2h0IiwiX3Byb3BzJGZ1bGxIZWlnaHQiLCJmdWxsSGVpZ2h0IiwiaXRlbUtleSIsIl9wcm9wcyRjb21wb25lbnQiLCJ1c2VWaXJ0dWFsIiwiaW5WaXJ0dWFsIiwic2V0U2Nyb2xsVG9wIiwic2Nyb2xsTW92aW5nIiwic2V0U2Nyb2xsTW92aW5nIiwiY29tcG9uZW50UmVmIiwiZmlsbGVySW5uZXJSZWYiLCJzaGFyZWRDb25maWciLCJzeW5jU2Nyb2xsVG9wIiwiYWxpZ25lZFRvcCIsIm1heFNjcm9sbEhlaWdodFJlZiIsImtlZXBJblJhbmdlIiwicmFuZ2VSZWYiLCJkaWZmSXRlbVJlZiIsIl91c2VIZWlnaHRzMiIsInNldEluc3RhbmNlUmVmIiwiaGVpZ2h0cyIsImhlaWdodFVwZGF0ZWRNYXJrIiwiX1JlYWN0JHVzZU1lbW8iLCJfZmlsbGVySW5uZXJSZWYkY3VycmUiLCJzdGFydE9mZnNldCIsIml0ZW1Ub3AiLCJkYXRhTGVuIiwiY2FjaGVIZWlnaHQiLCJjdXJyZW50SXRlbUJvdHRvbSIsIm1heFNjcm9sbEhlaWdodCIsInVzZU9yaWdpblNjcm9sbCIsIl91c2VGcmFtZVdoZWVsMiIsIm9uV2hlZWxEZWx0YSIsIm9mZnNldFJlZiIsIndoZWVsVmFsdWVSZWYiLCJpc01vdXNlU2Nyb2xsUmVmIiwicGF0Y2hNdWx0aXBsZSIsInVzZUZyYW1lV2hlZWwiLCJvZmZzZXRZIiwib25SYXdXaGVlbCIsIm9uRmlyZUZveFNjcm9sbCIsImxpc3RSZWYiLCJjbGVhblVwRXZlbnRzIiwidG91Y2hlZFJlZiIsInRvdWNoWVJlZiIsImludGVydmFsUmVmIiwib25Ub3VjaE1vdmUiLCJjdXJyZW50WSIsImNsZWFySW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsIm9uVG91Y2hFbmQiLCJ1c2VNb2JpbGVUb3VjaE1vdmUiLCJvbk1vek1vdXNlUGl4ZWxTY3JvbGwiLCJ0cmlnZ2VyRmxhc2giLCJfYXJnJG9mZnNldCIsInN5bmNTY3JvbGwiLCJ0YXJnZXRBbGlnbiIsIm5lZWRDb2xsZWN0SGVpZ2h0IiwibmV3VGFyZ2V0QWxpZ24iLCJtZXJnZWRBbGlnbiIsInN0YWNrVG9wIiwiaXRlbUJvdHRvbSIsIm1heExlbiIsInRhcmdldFRvcCIsInVzZVNjcm9sbFRvIiwiX3Njcm9sbEJhclJlZiRjdXJyZW50IiwibGlzdENoaWxkcmVuIiwicmVuZGVyRnVuYyIsInVzZUNoaWxkcmVuIiwiY29tcG9uZW50U3R5bGUiLCJMaXN0IiwiY3VzdG9taXplSWNvbiIsImN1c3RvbWl6ZUljb25Qcm9wcyIsIl9vbk1vdXNlRG93biIsIldlYmtpdFVzZXJTZWxlY3QiLCJ1bnNlbGVjdGFibGUiLCJmbGF0dGVuT3B0aW9ucyIsImNoaWxkcmVuQXNEYXRhIiwic2VhcmNoVmFsdWUiLCJkZWZhdWx0QWN0aXZlRmlyc3RPcHRpb24iLCJvblRvZ2dsZU9wZW4iLCJvbkFjdGl2ZVZhbHVlIiwiaXRlbVByZWZpeENscyIsIm1lbW9GbGF0dGVuT3B0aW9ucyIsIm9uTGlzdE1vdXNlRG93biIsInNjcm9sbEludG9WaWV3IiwiZ2V0RW5hYmxlZEFjdGl2ZUluZGV4IiwiX21lbW9GbGF0dGVuT3B0aW9ucyRjIiwiZ3JvdXAiLCJzZXRBY3RpdmVJbmRleCIsImZyb21LZXlib2FyZCIsImZsYXR0ZW5JdGVtIiwiX2xpc3RSZWYkY3VycmVudCIsIm9uU2VsZWN0VmFsdWUiLCJuZXh0QWN0aXZlSW5kZXgiLCJpdGVtRGF0YSIsIm1lcmdlZExhYmVsIiwiaXRlbUluZGV4IiwiZ3JvdXBPcHRpb24iLCJvcHRpb25QcmVmaXhDbHMiLCJvcHRpb25DbGFzc05hbWUiLCJpY29uVmlzaWJsZSIsIm9wdGlvblRpdGxlIiwiUmVmT3B0aW9uTGlzdCIsImlzU2VsZWN0T3B0aW9uIiwiaXNTZWxlY3RPcHRHcm91cCIsImNvbnZlcnROb2RlVG9PcHRpb24iLCJfbm9kZSRwcm9wcyIsIm5vZGVzIiwib3B0aW9uT25seSIsIl9ub2RlJHByb3BzMiIsInJlbW92ZUxhc3RFbmFibGVkVmFsdWUiLCJtZWFzdXJlVmFsdWVzIiwicmVtb3ZlSW5kZXgiLCJuZXdWYWx1ZXMiLCJyZW1vdmVkVmFsdWUiLCJpc0Jyb3dzZXJDbGllbnQiLCJ1dWlkIiwiaW5qZWN0UHJvcHNXaXRoT3B0aW9uIiwibmV3T3B0aW9uIiwiX3JlZiRwcmV2VmFsdWVPcHRpb25zIiwicHJldlZhbHVlT3B0aW9ucyIsIm9wdGlvbk1hcCIsIl9JTlRFUk5BTF9PUFRJT05fVkFMVUVfIiwidG9SYXdTdHJpbmciLCJnZXRTZXBhcmF0ZWRDb250ZW50Iiwic2VwYXJhdGUiLCJyZXN0VG9rZW5zIiwicHJldkxpc3QiLCJ1bml0U3RyIiwidXNlQ29udHJvbGxlZFN0YXRlIiwicmVnaXN0ZXJTaXplIiwibWVyZ2VkSGlkZGVuIiwiaW50ZXJuYWxSZWdpc3RlclNpemUiLCJpdGVtTm9kZSIsImRlZmF1bHRSZW5kZXJSZXN0Iiwib21pdHRlZEl0ZW1zIiwiT3ZlcmZsb3ciLCJzdGF0ZXNSZWYiLCJ3YWxraW5nSW5kZXgiLCJiZWZvcmVGcmFtZUlkIiwiX3Byb3BzJGRhdGEiLCJfcHJvcHMkaXRlbVdpZHRoIiwiaXRlbVdpZHRoIiwiX3Byb3BzJHJlbmRlclJlc3QiLCJyZW5kZXJSZXN0IiwicmVuZGVySXRlbVByb3BzIiwiX3Byb3BzJGl0ZW1Db21wb25lbnQiLCJpdGVtQ29tcG9uZW50IiwiY3JlYXRlVXNlU3RhdGUiLCJteUluZGV4IiwiX2NyZWF0ZVVzZVN0YXRlMiIsImNvbnRhaW5lcldpZHRoIiwic2V0Q29udGFpbmVyV2lkdGgiLCJfY3JlYXRlVXNlU3RhdGU0IiwiaXRlbVdpZHRocyIsInNldEl0ZW1XaWR0aHMiLCJfY3JlYXRlVXNlU3RhdGU2IiwicHJldlJlc3RXaWR0aCIsInNldFByZXZSZXN0V2lkdGgiLCJfY3JlYXRlVXNlU3RhdGU4IiwicmVzdFdpZHRoIiwic2V0UmVzdFdpZHRoIiwiX2NyZWF0ZVVzZVN0YXRlMTAiLCJzdWZmaXhXaWR0aCIsInNldFN1ZmZpeFdpZHRoIiwic3VmZml4Rml4ZWRTdGFydCIsInNldFN1ZmZpeEZpeGVkU3RhcnQiLCJkaXNwbGF5Q291bnQiLCJzZXREaXNwbGF5Q291bnQiLCJyZXN0UmVhZHkiLCJzZXRSZXN0UmVhZHkiLCJtZXJnZWRSZXN0V2lkdGgiLCJpc1Jlc3BvbnNpdmUiLCJzaG93UmVzdCIsIm1lcmdlZFJlbmRlckl0ZW0iLCJ1cGRhdGVEaXNwbGF5Q291bnQiLCJub3RSZWFkeSIsImdldEl0ZW1XaWR0aCIsInRvdGFsV2lkdGgiLCJjdXJyZW50SXRlbVdpZHRoIiwiZGlzcGxheVJlc3QiLCJzdWZmaXhTdHlsZSIsIml0ZW1TaGFyZWRQcm9wcyIsIm92ZXJmbG93Tm9kZSIsIkZvcndhcmRPdmVyZmxvdyIsIl9pbnB1dE5vZGUyIiwiX2lucHV0Tm9kZTIkcHJvcHMiLCJpbnB1dEVsZW1lbnQiLCJhdXRvQ29tcGxldGUiLCJlZGl0YWJsZSIsImFjY2Vzc2liaWxpdHlJbmRleCIsIl9vbktleURvd24iLCJfb25DaGFuZ2UiLCJvblBhc3RlIiwiX29uQ29tcG9zaXRpb25TdGFydCIsIm9uQ29tcG9zaXRpb25TdGFydCIsIl9vbkNvbXBvc2l0aW9uRW5kIiwib25Db21wb3NpdGlvbkVuZCIsImlucHV0Tm9kZSIsIl9pbnB1dE5vZGUiLCJfaW5wdXROb2RlJHByb3BzIiwib25PcmlnaW5LZXlEb3duIiwib25PcmlnaW5DaGFuZ2UiLCJvbk9yaWdpbk1vdXNlRG93biIsIm9uT3JpZ2luQ29tcG9zaXRpb25TdGFydCIsIm9uT3JpZ2luQ29tcG9zaXRpb25FbmQiLCJSZWZJbnB1dCIsImVmZmVjdCIsIm9uUHJldmVudE1vdXNlRG93biIsImlucHV0UmVmIiwibWF4VGFnQ291bnQiLCJtYXhUYWdUZXh0TGVuZ3RoIiwiX3Byb3BzJG1heFRhZ1BsYWNlaG9sIiwibWF4VGFnUGxhY2Vob2xkZXIiLCJvbWl0dGVkVmFsdWVzIiwidGFnUmVuZGVyIiwib25JbnB1dENoYW5nZSIsIm9uSW5wdXRQYXN0ZSIsIm9uSW5wdXRLZXlEb3duIiwib25JbnB1dE1vdXNlRG93biIsIm9uSW5wdXRDb21wb3NpdGlvblN0YXJ0Iiwib25JbnB1dENvbXBvc2l0aW9uRW5kIiwibWVhc3VyZVJlZiIsImlucHV0V2lkdGgiLCJzZXRJbnB1dFdpZHRoIiwiZm9jdXNlZCIsInNldEZvY3VzZWQiLCJzZWxlY3Rpb25QcmVmaXhDbHMiLCJpbnB1dFZhbHVlIiwiaW5wdXRFZGl0YWJsZSIsImRlZmF1bHRSZW5kZXJTZWxlY3RvciIsIml0ZW1EaXNhYmxlZCIsInNlbGVjdGlvbk5vZGUiLCJkaXNwbGF5TGFiZWwiLCJzdHJMYWJlbCIsImN1c3RvbWl6ZVJlbmRlclNlbGVjdG9yIiwiYWN0aXZlVmFsdWUiLCJpbnB1dENoYW5nZWQiLCJzZXRJbnB1dENoYW5nZWQiLCJjb21ib2JveCIsImhhc1RleHRJbnB1dCIsInVzZUxvY2siLCJkb0xvY2siLCJsb2NrZWQiLCJjb21wb3NpdGlvblN0YXR1c1JlZiIsInRva2VuV2l0aEVudGVyIiwib25TZWFyY2hTdWJtaXQiLCJfdXNlTG9jayIsIl91c2VMb2NrMiIsImdldElucHV0TW91c2VEb3duIiwic2V0SW5wdXRNb3VzZURvd24iLCJwYXN0ZWRUZXh0UmVmIiwidHJpZ2dlck9uU2VhcmNoIiwic2hhcmVkUHJvcHMiLCJyZXBsYWNlZFRleHQiLCJnZXREYXRhIiwic2VsZWN0Tm9kZSIsIk11bHRpcGxlU2VsZWN0b3IiLCJtc1RvdWNoQWN0aW9uIiwiaW5wdXRNb3VzZURvd24iLCJGb3J3YXJkU2VsZWN0b3IiLCJwb3B1cEVsZW1lbnQiLCJkcm9wZG93blN0eWxlIiwiX3Byb3BzJGRpcmVjdGlvbiIsIl9wcm9wcyRkcm9wZG93bk1hdGNoUyIsImRyb3Bkb3duUmVuZGVyIiwiZHJvcGRvd25BbGlnbiIsImJ1aWx0SW5QbGFjZW1lbnRzIiwiZ2V0QnVpbHRJblBsYWNlbWVudHMiLCJtZXJnZWRUcmFuc2l0aW9uTmFtZSIsImdldFBvcHVwRWxlbWVudCIsIlJlZlNlbGVjdFRyaWdnZXIiLCJERUZBVUxUX09NSVRfUFJPUFMiLCJiYWNrZmlsbCIsImdldElucHV0RWxlbWVudCIsImRlZmF1bHRPcGVuIiwibGFiZWxJblZhbHVlIiwib3B0aW9uTGFiZWxQcm9wIiwibWVyZ2VkU2hvd1NlYXJjaCIsIm1lcmdlZE9wdGlvbnMiLCJoYXNOdW1iZXJWYWx1ZSIsImludmFsaWRhdGVDaGlsZFR5cGUiLCJPcHRpb25MaXN0Iiwib3B0aW9uTGlzdCIsImNvbnZlcnRDaGlsZHJlblRvRGF0YSIsImdldExhYmVsZWRWYWx1ZSIsImZpbHRlck9wdGlvbnMiLCJpc1ZhbHVlRGlzYWJsZWQiLCJmaW5kVmFsdWVPcHRpb24iLCJmaWxsT3B0aW9uc1dpdGhNaXNzaW5nVmFsdWUiLCJ3YXJuaW5nUHJvcHMiLCJvbWl0RE9NUHJvcHMiLCJmaWx0ZXJPcHRpb24iLCJmaWx0ZXJTb3J0IiwiX3Byb3BzJG9wdGlvbkZpbHRlclByIiwib3B0aW9uRmlsdGVyUHJvcCIsIl9wcm9wcyRhdXRvQ2xlYXJTZWFyYyIsImF1dG9DbGVhclNlYXJjaFZhbHVlIiwiX3Byb3BzJG5vdEZvdW5kQ29udGVuIiwiX3Byb3BzJGxpc3RIZWlnaHQiLCJfcHJvcHMkbGlzdEl0ZW1IZWlnaHQiLCJfcHJvcHMkc2hvd0FjdGlvbiIsInRva2VuU2VwYXJhdG9ycyIsIm9uUG9wdXBTY3JvbGwiLCJvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSIsIm9uQ2xlYXIiLCJfcHJvcHMkaW50ZXJuYWxQcm9wcyIsImludGVybmFsUHJvcHMiLCJ1c2VJbnRlcm5hbFByb3BzIiwic2VsZWN0b3JSZWYiLCJ0b2tlblNlcGFyYXRvciIsIl91c2VEZWxheVJlc2V0Iiwic2V0Qm9vbCIsImRlbGF5UmVmIiwiY2FuY2VsTGF0ZXN0IiwiZGVsYXlTZXRCb29sIiwidXNlRGVsYXlSZXNldCIsIl91c2VEZWxheVJlc2V0MiIsIm1vY2tGb2N1c2VkIiwic2V0TW9ja0ZvY3VzZWQiLCJjYW5jZWxTZXRNb2NrRm9jdXNlZCIsImlubmVySWQiLCJzZXRJbm5lcklkIiwicmV0SWQiLCJtZXJnZWRJZCIsIm1lcmdlZE9wdGlvbkxhYmVsUHJvcCIsIm1lcmdlZExhYmVsSW5WYWx1ZSIsInNldE1vYmlsZSIsInNlbGVjdG9yRG9tUmVmIiwiX3NlbGVjdG9yUmVmJGN1cnJlbnQiLCJfc2VsZWN0b3JSZWYkY3VycmVudDIiLCJzZXRNZXJnZWRWYWx1ZSIsInZhbHVlTWFwIiwicmF3VmFsdWVzIiwiaXRlbVZhbHVlIiwiZmluYWxWYWwiLCJ0b0lubmVyVmFsdWUiLCJtZXJnZWRSYXdWYWx1ZSIsIm1lcmdlZFZhbHVlTWFwIiwiX3VzZVN0YXRlNSIsInNldEFjdGl2ZVZhbHVlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpbm5lclNlYXJjaFZhbHVlIiwic2V0SW5uZXJTZWFyY2hWYWx1ZSIsIm1lcmdlZFNlYXJjaFZhbHVlIiwibmV3T3B0aW9ucyIsIm1lcmdlZEZsYXR0ZW5PcHRpb25zIiwiZ2V0VmFsdWVPcHRpb24iLCJwcmV2T3B0aW9uTWFwUmVmIiwidXNlQ2FjaGVPcHRpb25zIiwiZGlzcGxheU9wdGlvbnMiLCJmaWx0ZXJlZE9wdGlvbnMiLCJkaXNwbGF5RmxhdHRlbk9wdGlvbnMiLCJwcmV2VmFsdWVzUmVmIiwiZGlzcGxheVZhbHVlcyIsInRtcFZhbHVlcyIsInZhbHVlT3B0aW9ucyIsImRpc3BsYXlWYWx1ZSIsInByZXZWYWx1ZU1hcCIsInZhbHVlTGFiZWxzIiwicmVzdWx0VmFsdWVzIiwiY2FjaGVMYWJlbCIsImlzQ2FjaGVhYmxlIiwidHJpZ2dlclNlbGVjdCIsImlzU2VsZWN0IiwibmV3VmFsdWVPcHRpb24iLCJvdXRPcHRpb24iLCJza2lwVHJpZ2dlclNlbGVjdCIsInNlbGVjdFZhbHVlIiwib25SYXdTZWxlY3QiLCJvblJhd0Rlc2VsZWN0IiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwic2V0UHJldlZhbHVlT3B0aW9ucyIsInRyaWdnZXJDaGFuZ2UiLCJuZXdSYXdWYWx1ZXMiLCJza2lwVHJpZ2dlckNoYW5nZSIsIm5ld1Jhd1ZhbHVlc09wdGlvbnMiLCJvdXRWYWx1ZXMiLCJ2YWx1ZUxpc3QiLCJ0b091dGVyVmFsdWVzIiwib3V0VmFsdWUiLCJvdXRPcHRpb25zIiwib25JbnRlcm5hbFNlbGVjdCIsIm5ld1Jhd1ZhbHVlIiwiY3VzdG9taXplSW5wdXRFbGVtZW50IiwiX3VzZU1lcmdlZFN0YXRlNCIsImlubmVyT3BlbiIsInNldElubmVyT3BlbiIsIm1lcmdlZE9wZW4iLCJlbXB0eUxpc3RDb250ZW50IiwidHJpZ2dlck9wZW4iLCJuZXdPcGVuIiwibmV4dE9wZW4iLCJwcm9wc1JlZiIsIm9uR2xvYmFsTW91c2VEb3duIiwic2hhZG93Um9vdCIsImNvbXBvc2VkIiwiY29tcG9zZWRQYXRoIiwidXNlU2VsZWN0VHJpZ2dlckNvbnRyb2wiLCJ0cmlnZ2VyU2VhcmNoIiwic2VhcmNoVGV4dCIsImZyb21UeXBpbmciLCJpc0NvbXBvc2l0aW5nIiwibmV3U2VhcmNoVGV4dCIsInBhdGNoTGFiZWxzIiwicGF0Y2hSYXdWYWx1ZXMiLCJnZXRDbGVhckxvY2siLCJzZXRDbGVhckxvY2siLCJmb2N1c1JlZiIsImFjdGl2ZVRpbWVvdXRJZHMiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwic2V0QWNjZXNzaWJpbGl0eUluZGV4IiwibWVyZ2VkRGVmYXVsdEFjdGl2ZUZpcnN0T3B0aW9uIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsIl91c2VTdGF0ZTE1IiwibmV3V2lkdGgiLCJjbGVhck5vZGUiLCJfcmVmMyRzb3VyY2UiLCJhcnJvd05vZGUiLCJtZXJnZWRTaG93QXJyb3ciLCJfc2VsZWN0b3JSZWYkY3VycmVudDMiLCJfbGVuMyIsInJlc3RBcmdzIiwiX2xpc3RSZWYkY3VycmVudDIiLCJjbGVhckxvY2siLCJyZW1vdmVJbmZvIiwiX2xpc3RSZWYkY3VycmVudDMiLCJnZW5lcmF0ZVNlbGVjdG9yIiwiaXNHcm91cE9wdGlvbiIsInByZXZWYWxJdGVtIiwiZmlsdGVyRnVuYyIsImxvd2VyU2VhcmNoVGV4dCIsImdldEZpbHRlckZ1bmN0aW9uIiwic3ViT3B0aW9ucyIsInN1Ykl0ZW0iLCJjbG9uZU9wdGlvbnMiLCJvcHRpb25WYWx1ZXMiLCJzdWJPcHQiLCJzZWxlY3RSZWYiLCJIT09LX01BUksiLCJnZXRJbnRlcm5hbEhvb2tzIiwiaW5pdEVudGl0eVZhbHVlIiwicmVnaXN0ZXJGaWVsZCIsInVzZVN1YnNjcmliZSIsInNldEluaXRpYWxWYWx1ZXMiLCJzZXRDYWxsYmFja3MiLCJnZXRGaWVsZHMiLCJzZXRWYWxpZGF0ZU1lc3NhZ2VzIiwic2V0UHJlc2VydmUiLCJpbnRlcm5hbFNldCIsInJlbW92ZUlmVW5kZWZpbmVkIiwiX3BhdGhzIiwiZ2V0TmFtZVBhdGgiLCJuYW1lUGF0aCIsIm5ld1N0b3JlIiwiY2xvbmVCeU5hbWVQYXRoTGlzdCIsIm5hbWVQYXRoTGlzdCIsImNvbnRhaW5zTmFtZVBhdGgiLCJtYXRjaE5hbWVQYXRoIiwiaW50ZXJuYWxTZXRWYWx1ZXMiLCJyZWN1cnNpdmUiLCJzZXRWYWx1ZXMiLCJyZXN0VmFsdWVzIiwiY2hhbmdlZE5hbWVQYXRoIiwibmFtZVVuaXQiLCJkZWZhdWx0R2V0VmFsdWVGcm9tRXZlbnQiLCJtb3ZlSW5kZXgiLCJlbnVtIiwiQXN5bmNWYWxpZGF0b3IiLCJjb252ZXJ0TWVzc2FnZXMiLCJtZXNzYWdlVmFyaWFibGVzIiwia3YiLCJyZXBsYWNlRnVuYyIsInRlbXBsYXRlIiwiYWRkaXRpb25hbEtWIiwicmVwbGFjZU1lc3NhZ2UiLCJmaWxsVGVtcGxhdGUiLCJydWxlTmFtZSIsInZhbGlkYXRlUnVsZSIsIl94IiwiX3gyIiwiX3gzIiwiX3g0IiwiX3g1IiwiX3ZhbGlkYXRlUnVsZSIsIl9jYWxsZWUyIiwiY2xvbmVSdWxlIiwic3ViUnVsZUZpZWxkIiwic3ViUmVzdWx0cyIsIl9jb250ZXh0MiIsInQwIiwic3ViVmFsdWUiLCJzdW1tYXJ5UHJvbWlzZSIsImZpbGxlZFJ1bGVzIiwiY3VycmVudFJ1bGUiLCJvcmlnaW5WYWxpZGF0b3JGdW5jIiwiaGFzUHJvbWlzZSIsIl94NiIsIl94NyIsInJ1bGVQcm9taXNlcyIsIl94OSIsIl9maW5pc2hPbkZpcnN0RmFpbGVkIiwiZmluaXNoT25GaXJzdEZhaWxlZCIsIl94OCIsIl9maW5pc2hPbkFsbEZhaWxlZCIsImZpbmlzaE9uQWxsRmFpbGVkIiwiX2NhbGxlZTMiLCJfY29udGV4dDMiLCJlcnJvcnNMaXN0IiwiX2NhbGxlZTQiLCJfY29udGV4dDQiLCJyZXF1aXJlVXBkYXRlIiwibmV4dFZhbHVlIiwicmVzZXRDb3VudCIsImNhbmNlbFJlZ2lzdGVyRnVuYyIsIm1vdW50ZWQiLCJ2YWxpZGF0ZVByb21pc2UiLCJjYW5jZWxSZWdpc3RlciIsImlzTGlzdEZpZWxkIiwiX2ZpZWxkQ29udGV4dCRwcmVmaXhOIiwiZmllbGRDb250ZXh0IiwicHJlZml4TmFtZSIsIl90aGlzJHByb3BzMyRydWxlcyIsIm9uU3RvcmVDaGFuZ2UiLCJwcmV2U3RvcmUiLCJfdGhpcyRwcm9wczQkZGVwZW5kZW4iLCJjdXJWYWx1ZSIsIm5hbWVQYXRoTWF0Y2giLCJyZVJlbmRlciIsImRlcGVuZGVuY3kiLCJyZWxhdGVkRmllbGRzIiwiY3VycmVudFZhbHVlIiwicm9vdFByb21pc2UiLCJfdGhpcyRwcm9wczUkdmFsaWRhdGUiLCJ0cmlnZ2VyTmFtZSIsImZpbHRlcmVkUnVsZXMiLCJpc0ZpZWxkRGlydHkiLCJnZXRFcnJvcnMiLCJpc0xpc3QiLCJpc1ByZXNlcnZlIiwicHJldlZhbGlkYXRpbmciLCJnZXRPbmx5Q2hpbGQiLCJnZXRDb250cm9sbGVkIiwibWVyZ2VkVmFsaWRhdGVUcmlnZ2VyIiwiX2dldEludGVybmFsSG9va3MiLCJtZXJnZWRHZXRWYWx1ZVByb3BzIiwib3JpZ2luVHJpZ2dlckZ1bmMiLCJ2YWxpZGF0ZVRyaWdnZXJMaXN0Iiwib3JpZ2luVHJpZ2dlciIsInJldHVybkNoaWxkTm9kZSIsIl90aGlzJGdldE9ubHlDaGlsZCIsIkZpZWxkQ29udGV4dCIsImtleU1hbmFnZXIiLCJwYXJlbnRQcmVmaXhOYW1lIiwiX3JlZjMkdmFsdWUiLCJnZXROZXdWYWx1ZSIsIm9wZXJhdGlvbnMiLCJpbmRleFNldCIsImtleXNJbmRleCIsInZhbHVlSW5kZXgiLCJtb3ZlIiwibGlzdFZhbHVlIiwiU1BMSVQiLCJOYW1lTWFwIiwia3ZzIiwiX2NlbGwkbWF0Y2gyIiwiRm9ybVN0b3JlIiwiZm9yY2VSb290VXBkYXRlIiwiZm9ybUhvb2tlZCIsInN1YnNjcmliYWJsZSIsImZpZWxkRW50aXRpZXMiLCJjYWxsYmFja3MiLCJsYXN0VmFsaWRhdGVQcm9taXNlIiwiZ2V0SW5pdGlhbFZhbHVlIiwid2FybmluZ1VuaG9va2VkIiwiZ2V0RmllbGRFbnRpdGllcyIsInB1cmUiLCJnZXRGaWVsZHNNYXAiLCJnZXRGaWVsZEVudGl0aWVzRm9yTmFtZVBhdGhMaXN0IiwibmFtZUxpc3QiLCJJTlZBTElEQVRFX05BTUVfUEFUSCIsImZpbHRlcmVkTmFtZUxpc3QiLCJfZW50aXR5JGlzTGlzdEZpZWxkIiwiYXJnMCIsImFyZzEiLCJpc0FsbEZpZWxkc1RvdWNoZWQiLCJzaG9ydE5hbWVQYXRoIiwiZmllbGROYW1lUGF0aCIsImlzTmFtZVBhdGhMaXN0VG91Y2hlZCIsImVudGl0aWVzIiwibmFtZVBhdGhMaXN0RW50aXRpZXMiLCJ0ZXN0RmllbGQiLCJyZXNldFdpdGhGaWVsZEluaXRpYWxWYWx1ZSIsInJlcXVpcmVkRmllbGRFbnRpdGllcyIsInJlc2V0V2l0aEZpZWxkcyIsIm9yaWdpblZhbHVlIiwic2tpcEV4aXN0IiwiX3JlcXVpcmVkRmllbGRFbnRpdGllIiwibm90aWZ5T2JzZXJ2ZXJzIiwiZmllbGREYXRhIiwic3ViTmFtZVBhdGgiLCJtZXJnZWRQcmVzZXJ2ZSIsInVwZGF0ZVZhbHVlIiwiX25hbWVQYXRoIiwibWVyZ2VkSW5mbyIsImNoaWxkcmVuRmllbGRzIiwiZ2V0RGVwZW5kZW5jeUNoaWxkcmVuRmllbGRzIiwidHJpZ2dlck9uRmllbGRzQ2hhbmdlIiwicm9vdE5hbWVQYXRoIiwiZGVwZW5kZW5jaWVzMmZpZWxkcyIsImRlcGVuZGVuY3lOYW1lUGF0aCIsImZpbGxDaGlsZHJlbiIsImZpbGVkRXJyb3JzIiwicHJvdmlkZU5hbWVMaXN0IiwicHJvbWlzZUxpc3QiLCJhbGxQcm9taXNlRmluaXNoIiwicmVzdWx0TmFtZVBhdGhMaXN0IiwicmV0dXJuUHJvbWlzZSIsImVycm9yTGlzdCIsIm91dE9mRGF0ZSIsIm9uRmluaXNoIiwib25GaW5pc2hGYWlsZWQiLCJmb3JtUmVmIiwiZm9ybVN0b3JlIiwiRm9ybUNvbnRleHQiLCJ0cmlnZ2VyRm9ybUNoYW5nZSIsInRyaWdnZXJGb3JtRmluaXNoIiwicmVnaXN0ZXJGb3JtIiwidW5yZWdpc3RlckZvcm0iLCJvbkZvcm1DaGFuZ2UiLCJvbkZvcm1GaW5pc2giLCJmb3JtQ29udGV4dCIsImZvcm1zUmVmIiwibmV3Rm9ybXMiLCJfcmVmJHZhbGlkYXRlVHJpZ2dlciIsIl9vbkZpZWxkc0NoYW5nZSIsIl9vbkZpbmlzaCIsImZvcm1JbnN0YW5jZSIsIl9mb3JtSW5zdGFuY2UkZ2V0SW50ZSIsIm1vdW50UmVmIiwiY2hpbGRyZW5Ob2RlIiwiY2hpbGRyZW5SZW5kZXJQcm9wcyIsInByZXZGaWVsZHNSZWYiLCJ0YXJnZXRLZXlzIiwic291cmNlVmFsdWUiLCJ0YXJnZXRWYWx1ZSIsImlzU2ltaWxhciIsImZvcm1Db250ZXh0VmFsdWUiLCJ3cmFwcGVyTm9kZSIsIl9yZXN0UHJvcHMkb25SZXNldCIsIlJlZkZvcm0iLCJ1c2VGb3JtIiwiTGF6eVJlbmRlckJveCIsImhpZGRlbkNsYXNzTmFtZSIsInVzZUNsYXNzTmFtZSIsInNldFRyYW5zZm9ybU9yaWdpbiIsIkRpYWxvZyIsImluVHJhbnNpdGlvbiIsIm9uQW5pbWF0ZUxlYXZlIiwic3dpdGNoU2Nyb2xsaW5nRWZmZWN0Iiwib25EaWFsb2dNb3VzZURvd24iLCJkaWFsb2dNb3VzZURvd24iLCJvbk1hc2tNb3VzZVVwIiwib25NYXNrQ2xpY2siLCJvcGVuVGltZSIsInNlbnRpbmVsU3RhcnQiLCJzZW50aW5lbEVuZCIsImdldERpYWxvZ0VsZW1lbnQiLCJkZXN0IiwidGl0bGVJZCIsImNsb3NlciIsInNlbnRpbmVsU3R5bGUiLCJkaWFsb2dFbGVtZW50IiwiYm9keVByb3BzIiwiZ2V0WkluZGV4U3R5bGUiLCJnZXRXcmFwU3R5bGUiLCJ3cmFwU3R5bGUiLCJnZXRNYXNrU3R5bGUiLCJnZXRNYXNrRWxlbWVudCIsIm1hc2tFbGVtZW50IiwibWFza1RyYW5zaXRpb24iLCJnZXRNYXNrVHJhbnNpdGlvbk5hbWUiLCJtYXNrUHJvcHMiLCJmb2N1c1RyaWdnZXJBZnRlckNsb3NlIiwidHJ5Rm9jdXMiLCJkaWFsb2dOb2RlIiwiZGlhbG9nIiwiZWxPZmZzZXQiLCJsYXN0T3V0U2lkZUZvY3VzTm9kZSIsImdldE9wZW5Db3VudCIsIndyYXBQcm9wcyIsIkNvbnRhaW5lclJlbmRlciIsInJlbW92ZUNvbnRhaW5lciIsInJlYWR5IiwiX2NvbXBvbmVudCIsImF1dG9Nb3VudCIsImNyZWF0ZUNvbnRhaW5lciIsIl9jb250YWluZXIiLCJfb3B0aW9ucyRlbGVtZW50Iiwib2xkU3R5bGUiLCJzdHlsZUtleXMiLCJjYWNoZVN0eWxlIiwic2Nyb2xsaW5nRWZmZWN0Q2xhc3NOYW1lUmVnIiwiYm9keUNsYXNzTmFtZSIsInNjcm9sbEJhclNpemUiLCJhZGRDbGFzc05hbWUiLCJvcGVuQ291bnQiLCJ3aW5kb3dJc1VuZGVmaW5lZCIsImNhY2hlT3ZlcmZsb3ciLCJQb3J0YWxXcmFwcGVyIiwiZ2V0UGFyZW50Iiwic2V0V3JhcHBlckNsYXNzTmFtZSIsInNhdmVQb3J0YWwiLCJyZW1vdmVDdXJyZW50Q29udGFpbmVyIiwiX3Zpc2libGUiLCJfc2VsZiIsInByZXZWaXNpYmxlIiwicHJldkdldENvbnRhaW5lciIsIml0ZW1SZW5kZXIiLCJyZWwiLCJPcHRpb25zIiwiZ29JbnB1dFRleHQiLCJidWlsZE9wdGlvblRleHQiLCJjaGFuZ2VTaXplIiwiaGFuZGxlQmx1ciIsImdvQnV0dG9uIiwicXVpY2tHbyIsImdldFZhbGlkVmFsdWUiLCJnbyIsInBhZ2VTaXplT3B0aW9ucyIsImNoYW5nZVNlbGVjdCIsImdvSW5wdXQiLCJnb3RvQnV0dG9uIiwiZ2V0UGFnZVNpemVPcHRpb25zIiwiY2FsY3VsYXRlUGFnZSIsImdldEp1bXBQcmV2UGFnZSIsInNob3dMZXNzSXRlbXMiLCJnZXRKdW1wTmV4dFBhZ2UiLCJnZXRJdGVtSWNvbiIsInNhdmVQYWdpbmF0aW9uTm9kZSIsInBhZ2luYXRpb25Ob2RlIiwic2hvdWxkRGlzcGxheVF1aWNrSnVtcGVyIiwic2hvd1F1aWNrSnVtcGVyIiwiaGFuZGxlS2V5VXAiLCJjdXJyZW50SW5wdXRWYWx1ZSIsImNoYW5nZVBhZ2VTaXplIiwibmV3Q3VycmVudCIsIm9uU2hvd1NpemVDaGFuZ2UiLCJjdXJyZW50UGFnZSIsImp1bXBQcmV2IiwianVtcE5leHQiLCJydW5JZkVudGVyIiwicmVzdFBhcmFtcyIsInJ1bklmRW50ZXJQcmV2IiwicnVuSWZFbnRlck5leHQiLCJydW5JZkVudGVySnVtcFByZXYiLCJydW5JZkVudGVySnVtcE5leHQiLCJoYW5kbGVHb1RPIiwiaGFzT25DaGFuZ2UiLCJfcGFnZVNpemUiLCJsYXN0Q3VycmVudE5vZGUiLCJhbGxQYWdlcyIsInNob3dTaXplQ2hhbmdlciIsInRvdGFsQm91bmRhcnlTaG93U2l6ZUNoYW5nZXIiLCJwcmV2UGFnZSIsInByZXZCdXR0b24iLCJuZXh0UGFnZSIsIm5leHRCdXR0b24iLCJoaWRlT25TaW5nbGVQYWdlIiwic2hvd1RvdGFsIiwic2ltcGxlIiwic2hvd1ByZXZOZXh0SnVtcGVycyIsInBhZ2VyTGlzdCIsImZpcnN0UGFnZXIiLCJsYXN0UGFnZXIiLCJwYWdlQnVmZmVyU2l6ZSIsInJlbmRlclByZXYiLCJyZW5kZXJOZXh0IiwicGFnZXJQcm9wcyIsInByZXZJdGVtVGl0bGUiLCJuZXh0SXRlbVRpdGxlIiwiX2FjdGl2ZSIsInRvdGFsVGV4dCIsInByZXZEaXNhYmxlZCIsIm5leHREaXNhYmxlZCIsImdldFNob3dTaXplQ2hhbmdlciIsIl9nZXQiLCJyZWNlaXZlciIsIl9zdXBlclByb3BCYXNlIiwiX1dyYXBwZWRDb21wb25lbnQiLCJ1cGRhdGVkIiwicGF0aFN0eWxlIiwicHJldlRpbWVTdGFtcCIsIm1peGVkVHlwZSIsIkxpbmUiLCJwZXJjZW50TGlzdCIsInN0cm9rZUNvbG9yTGlzdCIsImNlbnRlciIsInBhdGhTdHJpbmciLCJ2aWV3Qm94U3RyaW5nIiwic3RhY2tQdGciLCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwiZ3JhZGllbnRTZWVkIiwic3RyaXBQZXJjZW50VG9OdW1iZXIiLCJzeW1BcnJheSIsImdldFBhdGhTdHlsZXMiLCJyYWRpdXMiLCJiZWdpblBvc2l0aW9uWCIsImJlZ2luUG9zaXRpb25ZIiwiZW5kUG9zaXRpb25YIiwiZW5kUG9zaXRpb25ZIiwiUEkiLCJncmFkaWVudElkIiwiX2dldFBhdGhTdHlsZXMiLCJfZ2V0UGF0aFN0eWxlczIiLCJncmFkaWVudCIsImdldFN0b2tlTGlzdCIsImlzUGVyY2VudCIsImRhcmtDb2xvck1hcCIsIl9oc3YiLCJfY29sb3JTdHJpbmciLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcmVzZXREYXJrUGFsZXR0ZXMiLCJfcHJvcHMkdHJpZ2dlciIsIl9wcm9wcyRtb3VzZUVudGVyRGVsYSIsIl9wcm9wcyRtb3VzZUxlYXZlRGVsYSIsIm92ZXJsYXlTdHlsZSIsImFmdGVyVmlzaWJsZUNoYW5nZSIsIl9wcm9wcyRhbGlnbiIsIl9wcm9wcyRkZXN0cm95VG9vbHRpcCIsImRlc3Ryb3lUb29sdGlwT25IaWRlIiwiZGVzdHJveVRvb2x0aXAiLCJrZWVwUGFyZW50IiwiX3Byb3BzJGFycm93Q29udGVudCIsInRvcENlbnRlciIsImJvdHRvbUNlbnRlciIsIl9wcm9wcyRhcnJvdyIsIl9wcm9wcyRwbGFjZW1lbnRzIiwic2V0VHJpZ2dlclZpc2libGUiLCJjaGlsZHJlblByb3BzIiwiY2hpbGRDbGFzc05hbWUiLCJtaW5PdmVybGF5V2lkdGhNYXRjaFRyaWdnZXIiLCJnZXRPdmVybGF5RWxlbWVudCIsIm9uT3ZlcmxheUNsaWNrIiwiZ2V0TWVudUVsZW1lbnQiLCJvdmVybGF5RWxlbWVudCIsImV4dHJhT3ZlcmxheVByb3BzIiwidHJpZ2dlckhpZGVBY3Rpb24iXSwibWFwcGluZ3MiOiJhQUNFLElBQUlBLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVDLFFBR25DLElBQUlDLEVBQVNKLEVBQWlCRSxHQUFZLENBQ3pDRyxFQUFHSCxFQUNISSxHQUFHLEVBQ0hILFFBQVMsSUFVVixPQU5BSSxFQUFRTCxHQUFVTSxLQUFLSixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTRixHQUcvREcsRUFBT0UsR0FBSSxFQUdKRixFQUFPRCxRQUtmRixFQUFvQlEsRUFBSUYsRUFHeEJOLEVBQW9CUyxFQUFJVixFQUd4QkMsRUFBb0JV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VUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsUUFBUyxJQUNULFdBQVksSUFDWixPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxhQUFjLElBQ2QsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsYUFBYyxJQUNkLGdCQUFpQixJQUNqQixhQUFjLElBQ2QsZ0JBQWlCLElBQ2pCLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxVQUFXLElBQ1gsYUFBYyxJQUNkLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLGFBQWMsSUFDZCxVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFR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dXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA0MzQpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCJpbXBvcnQgZGVmaW5lUHJvcGVydHkgZnJvbSBcIi4vZGVmaW5lUHJvcGVydHkuanNcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcblxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpO1xuXG4gICAgaWYgKGVudW1lcmFibGVPbmx5KSB7XG4gICAgICBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0U3ByZWFkMih0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTtcblxuICAgIGlmIChpICUgMikge1xuICAgICAgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufSIsIi8qIVxuICBDb3B5cmlnaHQgKGMpIDIwMTcgSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuXHRmdW5jdGlvbiBjbGFzc05hbWVzICgpIHtcblx0XHR2YXIgY2xhc3NlcyA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5cdFx0XHRpZiAoIWFyZykgY29udGludWU7XG5cblx0XHRcdHZhciBhcmdUeXBlID0gdHlwZW9mIGFyZztcblxuXHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnIHx8IGFyZ1R5cGUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdGNsYXNzZXMucHVzaChhcmcpO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykgJiYgYXJnLmxlbmd0aCkge1xuXHRcdFx0XHR2YXIgaW5uZXIgPSBjbGFzc05hbWVzLmFwcGx5KG51bGwsIGFyZyk7XG5cdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChpbm5lcik7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0Zm9yICh2YXIga2V5IGluIGFyZykge1xuXHRcdFx0XHRcdGlmIChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0XHRcdGNsYXNzZXMucHVzaChrZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTtcblx0fVxuXG5cdGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdGNsYXNzTmFtZXMuZGVmYXVsdCA9IGNsYXNzTmFtZXM7XG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBjbGFzc05hbWVzO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyByZWdpc3RlciBhcyAnY2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lXG5cdFx0ZGVmaW5lKCdjbGFzc25hbWVzJywgW10sIGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBjbGFzc05hbWVzO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHdpbmRvdy5jbGFzc05hbWVzID0gY2xhc3NOYW1lcztcblx0fVxufSgpKTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIi8vISBtb21lbnQuanNcbi8vISB2ZXJzaW9uIDogMi4yNy4wXG4vLyEgYXV0aG9ycyA6IFRpbSBXb29kLCBJc2tyZW4gQ2hlcm5ldiwgTW9tZW50LmpzIGNvbnRyaWJ1dG9yc1xuLy8hIGxpY2Vuc2UgOiBNSVRcbi8vISBtb21lbnRqcy5jb21cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOlxuICAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShmYWN0b3J5KSA6XG4gICAgZ2xvYmFsLm1vbWVudCA9IGZhY3RvcnkoKVxufSh0aGlzLCAoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICB2YXIgaG9va0NhbGxiYWNrO1xuXG4gICAgZnVuY3Rpb24gaG9va3MoKSB7XG4gICAgICAgIHJldHVybiBob29rQ2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGlzIGRvbmUgdG8gcmVnaXN0ZXIgdGhlIG1ldGhvZCBjYWxsZWQgd2l0aCBtb21lbnQoKVxuICAgIC8vIHdpdGhvdXQgY3JlYXRpbmcgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLlxuICAgIGZ1bmN0aW9uIHNldEhvb2tDYWxsYmFjayhjYWxsYmFjaykge1xuICAgICAgICBob29rQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FycmF5KGlucHV0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpbnB1dCBpbnN0YW5jZW9mIEFycmF5IHx8XG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBBcnJheV0nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3QoaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IHdpbGwgdHJlYXQgdW5kZWZpbmVkIGFuZCBudWxsIGFzIG9iamVjdCBpZiBpdCB3YXNuJ3QgZm9yXG4gICAgICAgIC8vIGlucHV0ICE9IG51bGxcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGlucHV0ICE9IG51bGwgJiZcbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IE9iamVjdF0nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzT3duUHJvcChhLCBiKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSwgYik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3RFbXB0eShvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5sZW5ndGggPT09IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaztcbiAgICAgICAgICAgIGZvciAoayBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcChvYmosIGspKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PT0gdm9pZCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTnVtYmVyKGlucHV0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInIHx8XG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBOdW1iZXJdJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGF0ZShpbnB1dCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaW5wdXQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBEYXRlXSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXAoYXJyLCBmbikge1xuICAgICAgICB2YXIgcmVzID0gW10sXG4gICAgICAgICAgICBpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICByZXMucHVzaChmbihhcnJbaV0sIGkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVuZChhLCBiKSB7XG4gICAgICAgIGZvciAodmFyIGkgaW4gYikge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoYiwgaSkpIHtcbiAgICAgICAgICAgICAgICBhW2ldID0gYltpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNPd25Qcm9wKGIsICd0b1N0cmluZycpKSB7XG4gICAgICAgICAgICBhLnRvU3RyaW5nID0gYi50b1N0cmluZztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNPd25Qcm9wKGIsICd2YWx1ZU9mJykpIHtcbiAgICAgICAgICAgIGEudmFsdWVPZiA9IGIudmFsdWVPZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWxPclVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgdHJ1ZSkudXRjKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVmYXVsdFBhcnNpbmdGbGFncygpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byBkZWVwIGNsb25lIHRoaXMgb2JqZWN0LlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW1wdHk6IGZhbHNlLFxuICAgICAgICAgICAgdW51c2VkVG9rZW5zOiBbXSxcbiAgICAgICAgICAgIHVudXNlZElucHV0OiBbXSxcbiAgICAgICAgICAgIG92ZXJmbG93OiAtMixcbiAgICAgICAgICAgIGNoYXJzTGVmdE92ZXI6IDAsXG4gICAgICAgICAgICBudWxsSW5wdXQ6IGZhbHNlLFxuICAgICAgICAgICAgaW52YWxpZEVyYTogbnVsbCxcbiAgICAgICAgICAgIGludmFsaWRNb250aDogbnVsbCxcbiAgICAgICAgICAgIGludmFsaWRGb3JtYXQ6IGZhbHNlLFxuICAgICAgICAgICAgdXNlckludmFsaWRhdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGlzbzogZmFsc2UsXG4gICAgICAgICAgICBwYXJzZWREYXRlUGFydHM6IFtdLFxuICAgICAgICAgICAgZXJhOiBudWxsLFxuICAgICAgICAgICAgbWVyaWRpZW06IG51bGwsXG4gICAgICAgICAgICByZmMyODIyOiBmYWxzZSxcbiAgICAgICAgICAgIHdlZWtkYXlNaXNtYXRjaDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2luZ0ZsYWdzKG0pIHtcbiAgICAgICAgaWYgKG0uX3BmID09IG51bGwpIHtcbiAgICAgICAgICAgIG0uX3BmID0gZGVmYXVsdFBhcnNpbmdGbGFncygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtLl9wZjtcbiAgICB9XG5cbiAgICB2YXIgc29tZTtcbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLnNvbWUpIHtcbiAgICAgICAgc29tZSA9IEFycmF5LnByb3RvdHlwZS5zb21lO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNvbWUgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgICAgICAgICB2YXIgdCA9IE9iamVjdCh0aGlzKSxcbiAgICAgICAgICAgICAgICBsZW4gPSB0Lmxlbmd0aCA+Pj4gMCxcbiAgICAgICAgICAgICAgICBpO1xuXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSBpbiB0ICYmIGZ1bi5jYWxsKHRoaXMsIHRbaV0sIGksIHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQobSkge1xuICAgICAgICBpZiAobS5faXNWYWxpZCA9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgZmxhZ3MgPSBnZXRQYXJzaW5nRmxhZ3MobSksXG4gICAgICAgICAgICAgICAgcGFyc2VkUGFydHMgPSBzb21lLmNhbGwoZmxhZ3MucGFyc2VkRGF0ZVBhcnRzLCBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSAhPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGlzTm93VmFsaWQgPVxuICAgICAgICAgICAgICAgICAgICAhaXNOYU4obS5fZC5nZXRUaW1lKCkpICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLm92ZXJmbG93IDwgMCAmJlxuICAgICAgICAgICAgICAgICAgICAhZmxhZ3MuZW1wdHkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRFcmEgJiZcbiAgICAgICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRNb250aCAmJlxuICAgICAgICAgICAgICAgICAgICAhZmxhZ3MuaW52YWxpZFdlZWtkYXkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWZsYWdzLndlZWtkYXlNaXNtYXRjaCAmJlxuICAgICAgICAgICAgICAgICAgICAhZmxhZ3MubnVsbElucHV0ICYmXG4gICAgICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkRm9ybWF0ICYmXG4gICAgICAgICAgICAgICAgICAgICFmbGFncy51c2VySW52YWxpZGF0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgKCFmbGFncy5tZXJpZGllbSB8fCAoZmxhZ3MubWVyaWRpZW0gJiYgcGFyc2VkUGFydHMpKTtcblxuICAgICAgICAgICAgaWYgKG0uX3N0cmljdCkge1xuICAgICAgICAgICAgICAgIGlzTm93VmFsaWQgPVxuICAgICAgICAgICAgICAgICAgICBpc05vd1ZhbGlkICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLmNoYXJzTGVmdE92ZXIgPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MudW51c2VkVG9rZW5zLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy5iaWdIb3VyID09PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChPYmplY3QuaXNGcm96ZW4gPT0gbnVsbCB8fCAhT2JqZWN0LmlzRnJvemVuKG0pKSB7XG4gICAgICAgICAgICAgICAgbS5faXNWYWxpZCA9IGlzTm93VmFsaWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc05vd1ZhbGlkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUludmFsaWQoZmxhZ3MpIHtcbiAgICAgICAgdmFyIG0gPSBjcmVhdGVVVEMoTmFOKTtcbiAgICAgICAgaWYgKGZsYWdzICE9IG51bGwpIHtcbiAgICAgICAgICAgIGV4dGVuZChnZXRQYXJzaW5nRmxhZ3MobSksIGZsYWdzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhtKS51c2VySW52YWxpZGF0ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgLy8gUGx1Z2lucyB0aGF0IGFkZCBwcm9wZXJ0aWVzIHNob3VsZCBhbHNvIGFkZCB0aGUga2V5IGhlcmUgKG51bGwgdmFsdWUpLFxuICAgIC8vIHNvIHdlIGNhbiBwcm9wZXJseSBjbG9uZSBvdXJzZWx2ZXMuXG4gICAgdmFyIG1vbWVudFByb3BlcnRpZXMgPSAoaG9va3MubW9tZW50UHJvcGVydGllcyA9IFtdKSxcbiAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgZnVuY3Rpb24gY29weUNvbmZpZyh0bywgZnJvbSkge1xuICAgICAgICB2YXIgaSwgcHJvcCwgdmFsO1xuXG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5faXNBTW9tZW50T2JqZWN0KSkge1xuICAgICAgICAgICAgdG8uX2lzQU1vbWVudE9iamVjdCA9IGZyb20uX2lzQU1vbWVudE9iamVjdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2kpKSB7XG4gICAgICAgICAgICB0by5faSA9IGZyb20uX2k7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9mKSkge1xuICAgICAgICAgICAgdG8uX2YgPSBmcm9tLl9mO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fbCkpIHtcbiAgICAgICAgICAgIHRvLl9sID0gZnJvbS5fbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX3N0cmljdCkpIHtcbiAgICAgICAgICAgIHRvLl9zdHJpY3QgPSBmcm9tLl9zdHJpY3Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl90em0pKSB7XG4gICAgICAgICAgICB0by5fdHptID0gZnJvbS5fdHptO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5faXNVVEMpKSB7XG4gICAgICAgICAgICB0by5faXNVVEMgPSBmcm9tLl9pc1VUQztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX29mZnNldCkpIHtcbiAgICAgICAgICAgIHRvLl9vZmZzZXQgPSBmcm9tLl9vZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9wZikpIHtcbiAgICAgICAgICAgIHRvLl9wZiA9IGdldFBhcnNpbmdGbGFncyhmcm9tKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2xvY2FsZSkpIHtcbiAgICAgICAgICAgIHRvLl9sb2NhbGUgPSBmcm9tLl9sb2NhbGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9tZW50UHJvcGVydGllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbW9tZW50UHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHByb3AgPSBtb21lbnRQcm9wZXJ0aWVzW2ldO1xuICAgICAgICAgICAgICAgIHZhbCA9IGZyb21bcHJvcF07XG4gICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2YWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvW3Byb3BdID0gdmFsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0bztcbiAgICB9XG5cbiAgICAvLyBNb21lbnQgcHJvdG90eXBlIG9iamVjdFxuICAgIGZ1bmN0aW9uIE1vbWVudChjb25maWcpIHtcbiAgICAgICAgY29weUNvbmZpZyh0aGlzLCBjb25maWcpO1xuICAgICAgICB0aGlzLl9kID0gbmV3IERhdGUoY29uZmlnLl9kICE9IG51bGwgPyBjb25maWcuX2QuZ2V0VGltZSgpIDogTmFOKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5fZCA9IG5ldyBEYXRlKE5hTik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJldmVudCBpbmZpbml0ZSBsb29wIGluIGNhc2UgdXBkYXRlT2Zmc2V0IGNyZWF0ZXMgbmV3IG1vbWVudFxuICAgICAgICAvLyBvYmplY3RzLlxuICAgICAgICBpZiAodXBkYXRlSW5Qcm9ncmVzcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHVwZGF0ZUluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMpO1xuICAgICAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNNb21lbnQob2JqKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBvYmogaW5zdGFuY2VvZiBNb21lbnQgfHwgKG9iaiAhPSBudWxsICYmIG9iai5faXNBTW9tZW50T2JqZWN0ICE9IG51bGwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2Fybihtc2cpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgaG9va3Muc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzID09PSBmYWxzZSAmJlxuICAgICAgICAgICAgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICBjb25zb2xlLndhcm5cbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0RlcHJlY2F0aW9uIHdhcm5pbmc6ICcgKyBtc2cpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlKG1zZywgZm4pIHtcbiAgICAgICAgdmFyIGZpcnN0VGltZSA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIGV4dGVuZChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBob29rcy5kZXByZWNhdGlvbkhhbmRsZXIobnVsbCwgbXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaXJzdFRpbWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXJncyA9IFtdLFxuICAgICAgICAgICAgICAgICAgICBhcmcsXG4gICAgICAgICAgICAgICAgICAgIGksXG4gICAgICAgICAgICAgICAgICAgIGtleTtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyZyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1tpXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyArPSAnXFxuWycgKyBpICsgJ10gJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIGFyZ3VtZW50c1swXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGFyZ3VtZW50c1swXSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcgKz0ga2V5ICsgJzogJyArIGFyZ3VtZW50c1swXVtrZXldICsgJywgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmcuc2xpY2UoMCwgLTIpOyAvLyBSZW1vdmUgdHJhaWxpbmcgY29tbWEgYW5kIHNwYWNlXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKGFyZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgICAgICAgIG1zZyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXFxuQXJndW1lbnRzOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpLmpvaW4oJycpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBFcnJvcigpLnN0YWNrXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBmaXJzdFRpbWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9LCBmbik7XG4gICAgfVxuXG4gICAgdmFyIGRlcHJlY2F0aW9ucyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlU2ltcGxlKG5hbWUsIG1zZykge1xuICAgICAgICBpZiAoaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyICE9IG51bGwpIHtcbiAgICAgICAgICAgIGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlcihuYW1lLCBtc2cpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGVwcmVjYXRpb25zW25hbWVdKSB7XG4gICAgICAgICAgICB3YXJuKG1zZyk7XG4gICAgICAgICAgICBkZXByZWNhdGlvbnNbbmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaG9va3Muc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzID0gZmFsc2U7XG4gICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyID0gbnVsbDtcblxuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24oaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0eXBlb2YgRnVuY3Rpb24gIT09ICd1bmRlZmluZWQnICYmIGlucHV0IGluc3RhbmNlb2YgRnVuY3Rpb24pIHx8XG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0KGNvbmZpZykge1xuICAgICAgICB2YXIgcHJvcCwgaTtcbiAgICAgICAgZm9yIChpIGluIGNvbmZpZykge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoY29uZmlnLCBpKSkge1xuICAgICAgICAgICAgICAgIHByb3AgPSBjb25maWdbaV07XG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ocHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1tpXSA9IHByb3A7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1snXycgKyBpXSA9IHByb3A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgLy8gTGVuaWVudCBvcmRpbmFsIHBhcnNpbmcgYWNjZXB0cyBqdXN0IGEgbnVtYmVyIGluIGFkZGl0aW9uIHRvXG4gICAgICAgIC8vIG51bWJlciArIChwb3NzaWJseSkgc3R1ZmYgY29taW5nIGZyb20gX2RheU9mTW9udGhPcmRpbmFsUGFyc2UuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBcIm9yZGluYWxQYXJzZVwiIGZhbGxiYWNrIGluIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAgICAgICAgdGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQgPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgKHRoaXMuX2RheU9mTW9udGhPcmRpbmFsUGFyc2Uuc291cmNlIHx8IHRoaXMuX29yZGluYWxQYXJzZS5zb3VyY2UpICtcbiAgICAgICAgICAgICAgICAnfCcgK1xuICAgICAgICAgICAgICAgIC9cXGR7MSwyfS8uc291cmNlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY2hpbGRDb25maWcpIHtcbiAgICAgICAgdmFyIHJlcyA9IGV4dGVuZCh7fSwgcGFyZW50Q29uZmlnKSxcbiAgICAgICAgICAgIHByb3A7XG4gICAgICAgIGZvciAocHJvcCBpbiBjaGlsZENvbmZpZykge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoY2hpbGRDb25maWcsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkgJiYgaXNPYmplY3QoY2hpbGRDb25maWdbcHJvcF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBwYXJlbnRDb25maWdbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBjaGlsZENvbmZpZ1twcm9wXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZENvbmZpZ1twcm9wXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IGNoaWxkQ29uZmlnW3Byb3BdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZXNbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAocHJvcCBpbiBwYXJlbnRDb25maWcpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBoYXNPd25Qcm9wKHBhcmVudENvbmZpZywgcHJvcCkgJiZcbiAgICAgICAgICAgICAgICAhaGFzT3duUHJvcChjaGlsZENvbmZpZywgcHJvcCkgJiZcbiAgICAgICAgICAgICAgICBpc09iamVjdChwYXJlbnRDb25maWdbcHJvcF0pXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgY2hhbmdlcyB0byBwcm9wZXJ0aWVzIGRvbid0IG1vZGlmeSBwYXJlbnQgY29uZmlnXG4gICAgICAgICAgICAgICAgcmVzW3Byb3BdID0gZXh0ZW5kKHt9LCByZXNbcHJvcF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gTG9jYWxlKGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cztcblxuICAgIGlmIChPYmplY3Qua2V5cykge1xuICAgICAgICBrZXlzID0gT2JqZWN0LmtleXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAga2V5cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgIHZhciBpLFxuICAgICAgICAgICAgICAgIHJlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChpIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKG9iaiwgaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdENhbGVuZGFyID0ge1xuICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYWxlbmRhcihrZXksIG1vbSwgbm93KSB7XG4gICAgICAgIHZhciBvdXRwdXQgPSB0aGlzLl9jYWxlbmRhcltrZXldIHx8IHRoaXMuX2NhbGVuZGFyWydzYW1lRWxzZSddO1xuICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihvdXRwdXQpID8gb3V0cHV0LmNhbGwobW9tLCBub3cpIDogb3V0cHV0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHplcm9GaWxsKG51bWJlciwgdGFyZ2V0TGVuZ3RoLCBmb3JjZVNpZ24pIHtcbiAgICAgICAgdmFyIGFic051bWJlciA9ICcnICsgTWF0aC5hYnMobnVtYmVyKSxcbiAgICAgICAgICAgIHplcm9zVG9GaWxsID0gdGFyZ2V0TGVuZ3RoIC0gYWJzTnVtYmVyLmxlbmd0aCxcbiAgICAgICAgICAgIHNpZ24gPSBudW1iZXIgPj0gMDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChzaWduID8gKGZvcmNlU2lnbiA/ICcrJyA6ICcnKSA6ICctJykgK1xuICAgICAgICAgICAgTWF0aC5wb3coMTAsIE1hdGgubWF4KDAsIHplcm9zVG9GaWxsKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkgK1xuICAgICAgICAgICAgYWJzTnVtYmVyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIGZvcm1hdHRpbmdUb2tlbnMgPSAvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oW0hoXW1tKHNzKT98TW98TU0/TT9NP3xEb3xERERvfEREP0Q/RD98ZGRkP2Q/fGRvP3x3W298d10/fFdbb3xXXT98UW8/fE57MSw1fXxZWVlZWVl8WVlZWVl8WVlZWXxZWXx5ezIsNH18eW8/fGdnKGdnZz8pP3xHRyhHR0c/KT98ZXxFfGF8QXxoaD98SEg/fGtrP3xtbT98c3M/fFN7MSw5fXx4fFh8eno/fFpaP3wuKS9nLFxuICAgICAgICBsb2NhbEZvcm1hdHRpbmdUb2tlbnMgPSAvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oTFRTfExUfExMP0w/TD98bHsxLDR9KS9nLFxuICAgICAgICBmb3JtYXRGdW5jdGlvbnMgPSB7fSxcbiAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnMgPSB7fTtcblxuICAgIC8vIHRva2VuOiAgICAnTSdcbiAgICAvLyBwYWRkZWQ6ICAgWydNTScsIDJdXG4gICAgLy8gb3JkaW5hbDogICdNbydcbiAgICAvLyBjYWxsYmFjazogZnVuY3Rpb24gKCkgeyB0aGlzLm1vbnRoKCkgKyAxIH1cbiAgICBmdW5jdGlvbiBhZGRGb3JtYXRUb2tlbih0b2tlbiwgcGFkZGVkLCBvcmRpbmFsLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgZnVuYyA9IGNhbGxiYWNrO1xuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgZnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1tjYWxsYmFja10oKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1t0b2tlbl0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYWRkZWQpIHtcbiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW3BhZGRlZFswXV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHplcm9GaWxsKGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgcGFkZGVkWzFdLCBwYWRkZWRbMl0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3JkaW5hbCkge1xuICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbb3JkaW5hbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm9yZGluYWwoXG4gICAgICAgICAgICAgICAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgICAgICAgICAgICAgdG9rZW5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoaW5wdXQpIHtcbiAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC9cXFtbXFxzXFxTXS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXlxcW3xcXF0kL2csICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXFxcXC9nLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCkge1xuICAgICAgICB2YXIgYXJyYXkgPSBmb3JtYXQubWF0Y2goZm9ybWF0dGluZ1Rva2VucyksXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgbGVuZ3RoO1xuXG4gICAgICAgIGZvciAoaSA9IDAsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0VG9rZW5GdW5jdGlvbnNbYXJyYXlbaV1dKSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBmb3JtYXRUb2tlbkZ1bmN0aW9uc1thcnJheVtpXV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gcmVtb3ZlRm9ybWF0dGluZ1Rva2VucyhhcnJheVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG1vbSkge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9ICcnLFxuICAgICAgICAgICAgICAgIGk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gaXNGdW5jdGlvbihhcnJheVtpXSlcbiAgICAgICAgICAgICAgICAgICAgPyBhcnJheVtpXS5jYWxsKG1vbSwgZm9ybWF0KVxuICAgICAgICAgICAgICAgICAgICA6IGFycmF5W2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBmb3JtYXQgZGF0ZSB1c2luZyBuYXRpdmUgZGF0ZSBvYmplY3RcbiAgICBmdW5jdGlvbiBmb3JtYXRNb21lbnQobSwgZm9ybWF0KSB7XG4gICAgICAgIGlmICghbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBtLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybWF0ID0gZXhwYW5kRm9ybWF0KGZvcm1hdCwgbS5sb2NhbGVEYXRhKCkpO1xuICAgICAgICBmb3JtYXRGdW5jdGlvbnNbZm9ybWF0XSA9XG4gICAgICAgICAgICBmb3JtYXRGdW5jdGlvbnNbZm9ybWF0XSB8fCBtYWtlRm9ybWF0RnVuY3Rpb24oZm9ybWF0KTtcblxuICAgICAgICByZXR1cm4gZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0obSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhwYW5kRm9ybWF0KGZvcm1hdCwgbG9jYWxlKSB7XG4gICAgICAgIHZhciBpID0gNTtcblxuICAgICAgICBmdW5jdGlvbiByZXBsYWNlTG9uZ0RhdGVGb3JtYXRUb2tlbnMoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbGUubG9uZ0RhdGVGb3JtYXQoaW5wdXQpIHx8IGlucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxGb3JtYXR0aW5nVG9rZW5zLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIHdoaWxlIChpID49IDAgJiYgbG9jYWxGb3JtYXR0aW5nVG9rZW5zLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgbG9jYWxGb3JtYXR0aW5nVG9rZW5zLFxuICAgICAgICAgICAgICAgIHJlcGxhY2VMb25nRGF0ZUZvcm1hdFRva2Vuc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvbmdEYXRlRm9ybWF0ID0ge1xuICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgIEw6ICdNTS9ERC9ZWVlZJyxcbiAgICAgICAgTEw6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICBMTEw6ICdNTU1NIEQsIFlZWVkgaDptbSBBJyxcbiAgICAgICAgTExMTDogJ2RkZGQsIE1NTU0gRCwgWVlZWSBoOm1tIEEnLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBsb25nRGF0ZUZvcm1hdChrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0sXG4gICAgICAgICAgICBmb3JtYXRVcHBlciA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleS50b1VwcGVyQ2FzZSgpXTtcblxuICAgICAgICBpZiAoZm9ybWF0IHx8ICFmb3JtYXRVcHBlcikge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0gPSBmb3JtYXRVcHBlclxuICAgICAgICAgICAgLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uICh0b2spIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRvayA9PT0gJ01NTU0nIHx8XG4gICAgICAgICAgICAgICAgICAgIHRvayA9PT0gJ01NJyB8fFxuICAgICAgICAgICAgICAgICAgICB0b2sgPT09ICdERCcgfHxcbiAgICAgICAgICAgICAgICAgICAgdG9rID09PSAnZGRkZCdcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvay5zbGljZSgxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvaztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbignJyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRJbnZhbGlkRGF0ZSA9ICdJbnZhbGlkIGRhdGUnO1xuXG4gICAgZnVuY3Rpb24gaW52YWxpZERhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZhbGlkRGF0ZTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdE9yZGluYWwgPSAnJWQnLFxuICAgICAgICBkZWZhdWx0RGF5T2ZNb250aE9yZGluYWxQYXJzZSA9IC9cXGR7MSwyfS87XG5cbiAgICBmdW5jdGlvbiBvcmRpbmFsKG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3JkaW5hbC5yZXBsYWNlKCclZCcsIG51bWJlcik7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRSZWxhdGl2ZVRpbWUgPSB7XG4gICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgIHM6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgc3M6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgaDogJ2FuIGhvdXInLFxuICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgZDogJ2EgZGF5JyxcbiAgICAgICAgZGQ6ICclZCBkYXlzJyxcbiAgICAgICAgdzogJ2Egd2VlaycsXG4gICAgICAgIHd3OiAnJWQgd2Vla3MnLFxuICAgICAgICBNOiAnYSBtb250aCcsXG4gICAgICAgIE1NOiAnJWQgbW9udGhzJyxcbiAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgIHl5OiAnJWQgeWVhcnMnLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBvdXRwdXQgPSB0aGlzLl9yZWxhdGl2ZVRpbWVbc3RyaW5nXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24ob3V0cHV0KVxuICAgICAgICAgICAgPyBvdXRwdXQobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKVxuICAgICAgICAgICAgOiBvdXRwdXQucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXN0RnV0dXJlKGRpZmYsIG91dHB1dCkge1xuICAgICAgICB2YXIgZm9ybWF0ID0gdGhpcy5fcmVsYXRpdmVUaW1lW2RpZmYgPiAwID8gJ2Z1dHVyZScgOiAncGFzdCddO1xuICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihmb3JtYXQpID8gZm9ybWF0KG91dHB1dCkgOiBmb3JtYXQucmVwbGFjZSgvJXMvaSwgb3V0cHV0KTtcbiAgICB9XG5cbiAgICB2YXIgYWxpYXNlcyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gYWRkVW5pdEFsaWFzKHVuaXQsIHNob3J0aGFuZCkge1xuICAgICAgICB2YXIgbG93ZXJDYXNlID0gdW5pdC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBhbGlhc2VzW2xvd2VyQ2FzZV0gPSBhbGlhc2VzW2xvd2VyQ2FzZSArICdzJ10gPSBhbGlhc2VzW3Nob3J0aGFuZF0gPSB1bml0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdW5pdHMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICA/IGFsaWFzZXNbdW5pdHNdIHx8IGFsaWFzZXNbdW5pdHMudG9Mb3dlckNhc2UoKV1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdFVuaXRzKGlucHV0T2JqZWN0KSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSB7fSxcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wLFxuICAgICAgICAgICAgcHJvcDtcblxuICAgICAgICBmb3IgKHByb3AgaW4gaW5wdXRPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGlucHV0T2JqZWN0LCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wID0gbm9ybWFsaXplVW5pdHMocHJvcCk7XG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRQcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRJbnB1dFtub3JtYWxpemVkUHJvcF0gPSBpbnB1dE9iamVjdFtwcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZElucHV0O1xuICAgIH1cblxuICAgIHZhciBwcmlvcml0aWVzID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRVbml0UHJpb3JpdHkodW5pdCwgcHJpb3JpdHkpIHtcbiAgICAgICAgcHJpb3JpdGllc1t1bml0XSA9IHByaW9yaXR5O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFByaW9yaXRpemVkVW5pdHModW5pdHNPYmopIHtcbiAgICAgICAgdmFyIHVuaXRzID0gW10sXG4gICAgICAgICAgICB1O1xuICAgICAgICBmb3IgKHUgaW4gdW5pdHNPYmopIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKHVuaXRzT2JqLCB1KSkge1xuICAgICAgICAgICAgICAgIHVuaXRzLnB1c2goeyB1bml0OiB1LCBwcmlvcml0eTogcHJpb3JpdGllc1t1XSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB1bml0cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5wcmlvcml0eSAtIGIucHJpb3JpdHk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdW5pdHM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNMZWFwWWVhcih5ZWFyKSB7XG4gICAgICAgIHJldHVybiAoeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMCkgfHwgeWVhciAlIDQwMCA9PT0gMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNGbG9vcihudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIC8vIC0wIC0+IDBcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKSB8fCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSW50KGFyZ3VtZW50Rm9yQ29lcmNpb24pIHtcbiAgICAgICAgdmFyIGNvZXJjZWROdW1iZXIgPSArYXJndW1lbnRGb3JDb2VyY2lvbixcbiAgICAgICAgICAgIHZhbHVlID0gMDtcblxuICAgICAgICBpZiAoY29lcmNlZE51bWJlciAhPT0gMCAmJiBpc0Zpbml0ZShjb2VyY2VkTnVtYmVyKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBhYnNGbG9vcihjb2VyY2VkTnVtYmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlR2V0U2V0KHVuaXQsIGtlZXBUaW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0JDEodGhpcywgdW5pdCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCBrZWVwVGltZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXQodGhpcywgdW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0KG1vbSwgdW5pdCkge1xuICAgICAgICByZXR1cm4gbW9tLmlzVmFsaWQoKVxuICAgICAgICAgICAgPyBtb20uX2RbJ2dldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgdW5pdF0oKVxuICAgICAgICAgICAgOiBOYU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0JDEobW9tLCB1bml0LCB2YWx1ZSkge1xuICAgICAgICBpZiAobW9tLmlzVmFsaWQoKSAmJiAhaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdW5pdCA9PT0gJ0Z1bGxZZWFyJyAmJlxuICAgICAgICAgICAgICAgIGlzTGVhcFllYXIobW9tLnllYXIoKSkgJiZcbiAgICAgICAgICAgICAgICBtb20ubW9udGgoKSA9PT0gMSAmJlxuICAgICAgICAgICAgICAgIG1vbS5kYXRlKCkgPT09IDI5XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRvSW50KHZhbHVlKTtcbiAgICAgICAgICAgICAgICBtb20uX2RbJ3NldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgdW5pdF0oXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBtb20ubW9udGgoKSxcbiAgICAgICAgICAgICAgICAgICAgZGF5c0luTW9udGgodmFsdWUsIG1vbS5tb250aCgpKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyB1bml0XSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBzdHJpbmdHZXQodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXNbdW5pdHNdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RyaW5nU2V0KHVuaXRzLCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHVuaXRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdW5pdHMgPSBub3JtYWxpemVPYmplY3RVbml0cyh1bml0cyk7XG4gICAgICAgICAgICB2YXIgcHJpb3JpdGl6ZWQgPSBnZXRQcmlvcml0aXplZFVuaXRzKHVuaXRzKSxcbiAgICAgICAgICAgICAgICBpO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHByaW9yaXRpemVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpc1twcmlvcml0aXplZFtpXS51bml0XSh1bml0c1twcmlvcml0aXplZFtpXS51bml0XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXNbdW5pdHNdKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW3VuaXRzXSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIG1hdGNoMSA9IC9cXGQvLCAvLyAgICAgICAwIC0gOVxuICAgICAgICBtYXRjaDIgPSAvXFxkXFxkLywgLy8gICAgICAwMCAtIDk5XG4gICAgICAgIG1hdGNoMyA9IC9cXGR7M30vLCAvLyAgICAgMDAwIC0gOTk5XG4gICAgICAgIG1hdGNoNCA9IC9cXGR7NH0vLCAvLyAgICAwMDAwIC0gOTk5OVxuICAgICAgICBtYXRjaDYgPSAvWystXT9cXGR7Nn0vLCAvLyAtOTk5OTk5IC0gOTk5OTk5XG4gICAgICAgIG1hdGNoMXRvMiA9IC9cXGRcXGQ/LywgLy8gICAgICAgMCAtIDk5XG4gICAgICAgIG1hdGNoM3RvNCA9IC9cXGRcXGRcXGRcXGQ/LywgLy8gICAgIDk5OSAtIDk5OTlcbiAgICAgICAgbWF0Y2g1dG82ID0gL1xcZFxcZFxcZFxcZFxcZFxcZD8vLCAvLyAgIDk5OTk5IC0gOTk5OTk5XG4gICAgICAgIG1hdGNoMXRvMyA9IC9cXGR7MSwzfS8sIC8vICAgICAgIDAgLSA5OTlcbiAgICAgICAgbWF0Y2gxdG80ID0gL1xcZHsxLDR9LywgLy8gICAgICAgMCAtIDk5OTlcbiAgICAgICAgbWF0Y2gxdG82ID0gL1srLV0/XFxkezEsNn0vLCAvLyAtOTk5OTk5IC0gOTk5OTk5XG4gICAgICAgIG1hdGNoVW5zaWduZWQgPSAvXFxkKy8sIC8vICAgICAgIDAgLSBpbmZcbiAgICAgICAgbWF0Y2hTaWduZWQgPSAvWystXT9cXGQrLywgLy8gICAgLWluZiAtIGluZlxuICAgICAgICBtYXRjaE9mZnNldCA9IC9afFsrLV1cXGRcXGQ6P1xcZFxcZC9naSwgLy8gKzAwOjAwIC0wMDowMCArMDAwMCAtMDAwMCBvciBaXG4gICAgICAgIG1hdGNoU2hvcnRPZmZzZXQgPSAvWnxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPy9naSwgLy8gKzAwIC0wMCArMDA6MDAgLTAwOjAwICswMDAwIC0wMDAwIG9yIFpcbiAgICAgICAgbWF0Y2hUaW1lc3RhbXAgPSAvWystXT9cXGQrKFxcLlxcZHsxLDN9KT8vLCAvLyAxMjM0NTY3ODkgMTIzNDU2Nzg5LjEyM1xuICAgICAgICAvLyBhbnkgd29yZCAob3IgdHdvKSBjaGFyYWN0ZXJzIG9yIG51bWJlcnMgaW5jbHVkaW5nIHR3by90aHJlZSB3b3JkIG1vbnRoIGluIGFyYWJpYy5cbiAgICAgICAgLy8gaW5jbHVkZXMgc2NvdHRpc2ggZ2FlbGljIHR3byB3b3JkIGFuZCBoeXBoZW5hdGVkIG1vbnRoc1xuICAgICAgICBtYXRjaFdvcmQgPSAvWzAtOV17MCwyNTZ9WydhLXpcXHUwMEEwLVxcdTA1RkZcXHUwNzAwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGMDdcXHVGRjEwLVxcdUZGRUZdezEsMjU2fXxbXFx1MDYwMC1cXHUwNkZGXFwvXXsxLDI1Nn0oXFxzKj9bXFx1MDYwMC1cXHUwNkZGXXsxLDI1Nn0pezEsMn0vaSxcbiAgICAgICAgcmVnZXhlcztcblxuICAgIHJlZ2V4ZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFJlZ2V4VG9rZW4odG9rZW4sIHJlZ2V4LCBzdHJpY3RSZWdleCkge1xuICAgICAgICByZWdleGVzW3Rva2VuXSA9IGlzRnVuY3Rpb24ocmVnZXgpXG4gICAgICAgICAgICA/IHJlZ2V4XG4gICAgICAgICAgICA6IGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlRGF0YSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzU3RyaWN0ICYmIHN0cmljdFJlZ2V4ID8gc3RyaWN0UmVnZXggOiByZWdleDtcbiAgICAgICAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4odG9rZW4sIGNvbmZpZykge1xuICAgICAgICBpZiAoIWhhc093blByb3AocmVnZXhlcywgdG9rZW4pKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCh1bmVzY2FwZUZvcm1hdCh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlZ2V4ZXNbdG9rZW5dKGNvbmZpZy5fc3RyaWN0LCBjb25maWcuX2xvY2FsZSk7XG4gICAgfVxuXG4gICAgLy8gQ29kZSBmcm9tIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU2MTQ5My9pcy10aGVyZS1hLXJlZ2V4cC1lc2NhcGUtZnVuY3Rpb24taW4tamF2YXNjcmlwdFxuICAgIGZ1bmN0aW9uIHVuZXNjYXBlRm9ybWF0KHMpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2V4RXNjYXBlKFxuICAgICAgICAgICAgc1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKCdcXFxcJywgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFwoXFxbKXxcXFxcKFxcXSl8XFxbKFteXFxdXFxbXSopXFxdfFxcXFwoLikvZywgZnVuY3Rpb24gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLFxuICAgICAgICAgICAgICAgICAgICBwMSxcbiAgICAgICAgICAgICAgICAgICAgcDIsXG4gICAgICAgICAgICAgICAgICAgIHAzLFxuICAgICAgICAgICAgICAgICAgICBwNFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcDEgfHwgcDIgfHwgcDMgfHwgcDQ7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWdleEVzY2FwZShzKSB7XG4gICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpO1xuICAgIH1cblxuICAgIHZhciB0b2tlbnMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFBhcnNlVG9rZW4odG9rZW4sIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgZnVuYyA9IGNhbGxiYWNrO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdG9rZW4gPSBbdG9rZW5dO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc051bWJlcihjYWxsYmFjaykpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbY2FsbGJhY2tdID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdG9rZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbltpXV0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1BhcnNlVG9rZW4odG9rZW4sIGNhbGxiYWNrKSB7XG4gICAgICAgIGFkZFBhcnNlVG9rZW4odG9rZW4sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgICAgIGNvbmZpZy5fdyA9IGNvbmZpZy5fdyB8fCB7fTtcbiAgICAgICAgICAgIGNhbGxiYWNrKGlucHV0LCBjb25maWcuX3csIGNvbmZpZywgdG9rZW4pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRUaW1lVG9BcnJheUZyb21Ub2tlbih0b2tlbiwgaW5wdXQsIGNvbmZpZykge1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCAmJiBoYXNPd25Qcm9wKHRva2VucywgdG9rZW4pKSB7XG4gICAgICAgICAgICB0b2tlbnNbdG9rZW5dKGlucHV0LCBjb25maWcuX2EsIGNvbmZpZywgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIFlFQVIgPSAwLFxuICAgICAgICBNT05USCA9IDEsXG4gICAgICAgIERBVEUgPSAyLFxuICAgICAgICBIT1VSID0gMyxcbiAgICAgICAgTUlOVVRFID0gNCxcbiAgICAgICAgU0VDT05EID0gNSxcbiAgICAgICAgTUlMTElTRUNPTkQgPSA2LFxuICAgICAgICBXRUVLID0gNyxcbiAgICAgICAgV0VFS0RBWSA9IDg7XG5cbiAgICBmdW5jdGlvbiBtb2QobiwgeCkge1xuICAgICAgICByZXR1cm4gKChuICUgeCkgKyB4KSAlIHg7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4T2Y7XG5cbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLmluZGV4T2YpIHtcbiAgICAgICAgaW5kZXhPZiA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGV4T2YgPSBmdW5jdGlvbiAobykge1xuICAgICAgICAgICAgLy8gSSBrbm93XG4gICAgICAgICAgICB2YXIgaTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNbaV0gPT09IG8pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7XG4gICAgICAgIGlmIChpc05hTih5ZWFyKSB8fCBpc05hTihtb250aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1vZE1vbnRoID0gbW9kKG1vbnRoLCAxMik7XG4gICAgICAgIHllYXIgKz0gKG1vbnRoIC0gbW9kTW9udGgpIC8gMTI7XG4gICAgICAgIHJldHVybiBtb2RNb250aCA9PT0gMVxuICAgICAgICAgICAgPyBpc0xlYXBZZWFyKHllYXIpXG4gICAgICAgICAgICAgICAgPyAyOVxuICAgICAgICAgICAgICAgIDogMjhcbiAgICAgICAgICAgIDogMzEgLSAoKG1vZE1vbnRoICUgNykgJSAyKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignTScsIFsnTU0nLCAyXSwgJ01vJywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb250aCgpICsgMTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdNTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHNTaG9ydCh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ01NTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHModGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnbW9udGgnLCAnTScpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnbW9udGgnLCA4KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ00nLCBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NTScsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzU2hvcnRSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignTU1NTScsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ00nLCAnTU0nXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSB0b0ludChpbnB1dCkgLSAxO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ01NTScsICdNTU1NJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgdmFyIG1vbnRoID0gY29uZmlnLl9sb2NhbGUubW9udGhzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBmaW5kIGEgbW9udGggbmFtZSwgbWFyayB0aGUgZGF0ZSBhcyBpbnZhbGlkLlxuICAgICAgICBpZiAobW9udGggIT0gbnVsbCkge1xuICAgICAgICAgICAgYXJyYXlbTU9OVEhdID0gbW9udGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkTW9udGggPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNb250aHMgPSAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0ID0gJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBNT05USFNfSU5fRk9STUFUID0gL0Rbb0RdPyhcXFtbXlxcW1xcXV0qXFxdfFxccykrTU1NTT8vLFxuICAgICAgICBkZWZhdWx0TW9udGhzU2hvcnRSZWdleCA9IG1hdGNoV29yZCxcbiAgICAgICAgZGVmYXVsdE1vbnRoc1JlZ2V4ID0gbWF0Y2hXb3JkO1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlTW9udGhzKG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRocylcbiAgICAgICAgICAgICAgICA/IHRoaXMuX21vbnRoc1xuICAgICAgICAgICAgICAgIDogdGhpcy5fbW9udGhzWydzdGFuZGFsb25lJ107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzKVxuICAgICAgICAgICAgPyB0aGlzLl9tb250aHNbbS5tb250aCgpXVxuICAgICAgICAgICAgOiB0aGlzLl9tb250aHNbXG4gICAgICAgICAgICAgICAgICAodGhpcy5fbW9udGhzLmlzRm9ybWF0IHx8IE1PTlRIU19JTl9GT1JNQVQpLnRlc3QoZm9ybWF0KVxuICAgICAgICAgICAgICAgICAgICAgID8gJ2Zvcm1hdCdcbiAgICAgICAgICAgICAgICAgICAgICA6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgICAgICBdW20ubW9udGgoKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlTW9udGhzU2hvcnQobSwgZm9ybWF0KSB7XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzU2hvcnQpXG4gICAgICAgICAgICAgICAgPyB0aGlzLl9tb250aHNTaG9ydFxuICAgICAgICAgICAgICAgIDogdGhpcy5fbW9udGhzU2hvcnRbJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydClcbiAgICAgICAgICAgID8gdGhpcy5fbW9udGhzU2hvcnRbbS5tb250aCgpXVxuICAgICAgICAgICAgOiB0aGlzLl9tb250aHNTaG9ydFtcbiAgICAgICAgICAgICAgICAgIE1PTlRIU19JTl9GT1JNQVQudGVzdChmb3JtYXQpID8gJ2Zvcm1hdCcgOiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICAgICAgXVttLm1vbnRoKCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZVN0cmljdFBhcnNlKG1vbnRoTmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBpaSxcbiAgICAgICAgICAgIG1vbSxcbiAgICAgICAgICAgIGxsYyA9IG1vbnRoTmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCB1c2VkXG4gICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7ICsraSkge1xuICAgICAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgaV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0gPSB0aGlzLm1vbnRoc1Nob3J0KFxuICAgICAgICAgICAgICAgICAgICBtb20sXG4gICAgICAgICAgICAgICAgICAgICcnXG4gICAgICAgICAgICAgICAgKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSA9IHRoaXMubW9udGhzKG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnTU1NJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnTU1NJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZU1vbnRoc1BhcnNlKG1vbnRoTmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIG1vbSwgcmVnZXg7XG5cbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVTdHJpY3RQYXJzZS5jYWxsKHRoaXMsIG1vbnRoTmFtZSwgZm9ybWF0LCBzdHJpY3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9tb250aHNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVE9ETzogYWRkIHNvcnRpbmdcbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSBtb250aCAob3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5vdGhlclxuICAgICAgICAvLyBzZWUgc29ydGluZyBpbiBjb21wdXRlTW9udGhzUGFyc2VcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmICF0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgICAgICAgICAnXicgKyB0aGlzLm1vbnRocyhtb20sICcnKS5yZXBsYWNlKCcuJywgJycpICsgJyQnLFxuICAgICAgICAgICAgICAgICAgICAnaSdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgICAgICAgICAnXicgKyB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnJykgKyAnJCcsXG4gICAgICAgICAgICAgICAgICAgICdpJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXN0cmljdCAmJiAhdGhpcy5fbW9udGhzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICByZWdleCA9XG4gICAgICAgICAgICAgICAgICAgICdeJyArIHRoaXMubW9udGhzKG1vbSwgJycpICsgJ3xeJyArIHRoaXMubW9udGhzU2hvcnQobW9tLCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKHJlZ2V4LnJlcGxhY2UoJy4nLCAnJyksICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0ZXN0IHRoZSByZWdleFxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHN0cmljdCAmJlxuICAgICAgICAgICAgICAgIGZvcm1hdCA9PT0gJ01NTU0nICYmXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHN0cmljdCAmJlxuICAgICAgICAgICAgICAgIGZvcm1hdCA9PT0gJ01NTScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgdGhpcy5fbW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBzZXRNb250aChtb20sIHZhbHVlKSB7XG4gICAgICAgIHZhciBkYXlPZk1vbnRoO1xuXG4gICAgICAgIGlmICghbW9tLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgLy8gTm8gb3BcbiAgICAgICAgICAgIHJldHVybiBtb207XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKC9eXFxkKyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0b0ludCh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gbW9tLmxvY2FsZURhdGEoKS5tb250aHNQYXJzZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogQW5vdGhlciBzaWxlbnQgZmFpbHVyZT9cbiAgICAgICAgICAgICAgICBpZiAoIWlzTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRheU9mTW9udGggPSBNYXRoLm1pbihtb20uZGF0ZSgpLCBkYXlzSW5Nb250aChtb20ueWVhcigpLCB2YWx1ZSkpO1xuICAgICAgICBtb20uX2RbJ3NldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgJ01vbnRoJ10odmFsdWUsIGRheU9mTW9udGgpO1xuICAgICAgICByZXR1cm4gbW9tO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldE1vbnRoKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBzZXRNb250aCh0aGlzLCB2YWx1ZSk7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBnZXQodGhpcywgJ01vbnRoJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREYXlzSW5Nb250aCgpIHtcbiAgICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoc1Nob3J0UmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1Nob3J0UmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSBkZWZhdWx0TW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4ICYmIGlzU3RyaWN0XG4gICAgICAgICAgICAgICAgPyB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4XG4gICAgICAgICAgICAgICAgOiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9udGhzUmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gZGVmYXVsdE1vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4ICYmIGlzU3RyaWN0XG4gICAgICAgICAgICAgICAgPyB0aGlzLl9tb250aHNTdHJpY3RSZWdleFxuICAgICAgICAgICAgICAgIDogdGhpcy5fbW9udGhzUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlTW9udGhzUGFyc2UoKSB7XG4gICAgICAgIGZ1bmN0aW9uIGNtcExlblJldihhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5sZW5ndGggLSBhLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzaG9ydFBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbG9uZ1BpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbWl4ZWRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBtb207XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHlcbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgaV0pO1xuICAgICAgICAgICAgc2hvcnRQaWVjZXMucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaCh0aGlzLm1vbnRocyhtb20sICcnKSk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKHRoaXMubW9udGhzKG1vbSwgJycpKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2godGhpcy5tb250aHNTaG9ydChtb20sICcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSBtb250aCAob3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5vdGhlciBpdFxuICAgICAgICAvLyB3aWxsIG1hdGNoIHRoZSBsb25nZXIgcGllY2UuXG4gICAgICAgIHNob3J0UGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbG9uZ1BpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIG1peGVkUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHNob3J0UGllY2VzW2ldID0gcmVnZXhFc2NhcGUoc2hvcnRQaWVjZXNbaV0pO1xuICAgICAgICAgICAgbG9uZ1BpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKGxvbmdQaWVjZXNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNDsgaSsrKSB7XG4gICAgICAgICAgICBtaXhlZFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKG1peGVkUGllY2VzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbWl4ZWRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl9tb250aHNTaG9ydFJlZ2V4ID0gdGhpcy5fbW9udGhzUmVnZXg7XG4gICAgICAgIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICdeKCcgKyBsb25nUGllY2VzLmpvaW4oJ3wnKSArICcpJyxcbiAgICAgICAgICAgICdpJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICdeKCcgKyBzaG9ydFBpZWNlcy5qb2luKCd8JykgKyAnKScsXG4gICAgICAgICAgICAnaSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignWScsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHkgPSB0aGlzLnllYXIoKTtcbiAgICAgICAgcmV0dXJuIHkgPD0gOTk5OSA/IHplcm9GaWxsKHksIDQpIDogJysnICsgeTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVknLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyKCkgJSAxMDA7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVknLCA0XSwgMCwgJ3llYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVlZJywgNV0sIDAsICd5ZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWVlZWVknLCA2LCB0cnVlXSwgMCwgJ3llYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygneWVhcicsICd5Jyk7XG5cbiAgICAvLyBQUklPUklUSUVTXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3llYXInLCAxKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1knLCBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignWVknLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignWVlZWScsIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZWScsIG1hdGNoMXRvNiwgbWF0Y2g2KTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZWVknLCBtYXRjaDF0bzYsIG1hdGNoNik7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnWVlZWVknLCAnWVlZWVlZJ10sIFlFQVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1lZWVknLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID1cbiAgICAgICAgICAgIGlucHV0Lmxlbmd0aCA9PT0gMiA/IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KSA6IHRvSW50KGlucHV0KTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdZWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPSBob29rcy5wYXJzZVR3b0RpZ2l0WWVhcihpbnB1dCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPSBwYXJzZUludChpbnB1dCwgMTApO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7XG4gICAgICAgIHJldHVybiBpc0xlYXBZZWFyKHllYXIpID8gMzY2IDogMzY1O1xuICAgIH1cblxuICAgIC8vIEhPT0tTXG5cbiAgICBob29rcy5wYXJzZVR3b0RpZ2l0WWVhciA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gdG9JbnQoaW5wdXQpICsgKHRvSW50KGlucHV0KSA+IDY4ID8gMTkwMCA6IDIwMDApO1xuICAgIH07XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0WWVhciA9IG1ha2VHZXRTZXQoJ0Z1bGxZZWFyJywgdHJ1ZSk7XG5cbiAgICBmdW5jdGlvbiBnZXRJc0xlYXBZZWFyKCkge1xuICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih0aGlzLnllYXIoKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlRGF0ZSh5LCBtLCBkLCBoLCBNLCBzLCBtcykge1xuICAgICAgICAvLyBjYW4ndCBqdXN0IGFwcGx5KCkgdG8gY3JlYXRlIGEgZGF0ZTpcbiAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzE4MTM0OFxuICAgICAgICB2YXIgZGF0ZTtcbiAgICAgICAgLy8gdGhlIGRhdGUgY29uc3RydWN0b3IgcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5XG4gICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCkge1xuICAgICAgICAgICAgLy8gcHJlc2VydmUgbGVhcCB5ZWFycyB1c2luZyBhIGZ1bGwgNDAwIHllYXIgY3ljbGUsIHRoZW4gcmVzZXRcbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh5ICsgNDAwLCBtLCBkLCBoLCBNLCBzLCBtcyk7XG4gICAgICAgICAgICBpZiAoaXNGaW5pdGUoZGF0ZS5nZXRGdWxsWWVhcigpKSkge1xuICAgICAgICAgICAgICAgIGRhdGUuc2V0RnVsbFllYXIoeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoeSwgbSwgZCwgaCwgTSwgcywgbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlVVRDRGF0ZSh5KSB7XG4gICAgICAgIHZhciBkYXRlLCBhcmdzO1xuICAgICAgICAvLyB0aGUgRGF0ZS5VVEMgZnVuY3Rpb24gcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5XG4gICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCkge1xuICAgICAgICAgICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAvLyBwcmVzZXJ2ZSBsZWFwIHllYXJzIHVzaW5nIGEgZnVsbCA0MDAgeWVhciBjeWNsZSwgdGhlbiByZXNldFxuICAgICAgICAgICAgYXJnc1swXSA9IHkgKyA0MDA7XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkobnVsbCwgYXJncykpO1xuICAgICAgICAgICAgaWYgKGlzRmluaXRlKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSkpIHtcbiAgICAgICAgICAgICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsIGFyZ3VtZW50cykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgLy8gc3RhcnQtb2YtZmlyc3Qtd2VlayAtIHN0YXJ0LW9mLXllYXJcbiAgICBmdW5jdGlvbiBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIC8vIGZpcnN0LXdlZWsgZGF5IC0tIHdoaWNoIGphbnVhcnkgaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrICg0IGZvciBpc28sIDEgZm9yIG90aGVyKVxuICAgICAgICAgICAgZndkID0gNyArIGRvdyAtIGRveSxcbiAgICAgICAgICAgIC8vIGZpcnN0LXdlZWsgZGF5IGxvY2FsIHdlZWtkYXkgLS0gd2hpY2ggbG9jYWwgd2Vla2RheSBpcyBmd2RcbiAgICAgICAgICAgIGZ3ZGx3ID0gKDcgKyBjcmVhdGVVVENEYXRlKHllYXIsIDAsIGZ3ZCkuZ2V0VVRDRGF5KCkgLSBkb3cpICUgNztcblxuICAgICAgICByZXR1cm4gLWZ3ZGx3ICsgZndkIC0gMTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlI0NhbGN1bGF0aW5nX2FfZGF0ZV9naXZlbl90aGVfeWVhci4yQ193ZWVrX251bWJlcl9hbmRfd2Vla2RheVxuICAgIGZ1bmN0aW9uIGRheU9mWWVhckZyb21XZWVrcyh5ZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgbG9jYWxXZWVrZGF5ID0gKDcgKyB3ZWVrZGF5IC0gZG93KSAlIDcsXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRheU9mWWVhciA9IDEgKyA3ICogKHdlZWsgLSAxKSArIGxvY2FsV2Vla2RheSArIHdlZWtPZmZzZXQsXG4gICAgICAgICAgICByZXNZZWFyLFxuICAgICAgICAgICAgcmVzRGF5T2ZZZWFyO1xuXG4gICAgICAgIGlmIChkYXlPZlllYXIgPD0gMCkge1xuICAgICAgICAgICAgcmVzWWVhciA9IHllYXIgLSAxO1xuICAgICAgICAgICAgcmVzRGF5T2ZZZWFyID0gZGF5c0luWWVhcihyZXNZZWFyKSArIGRheU9mWWVhcjtcbiAgICAgICAgfSBlbHNlIGlmIChkYXlPZlllYXIgPiBkYXlzSW5ZZWFyKHllYXIpKSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhciArIDE7XG4gICAgICAgICAgICByZXNEYXlPZlllYXIgPSBkYXlPZlllYXIgLSBkYXlzSW5ZZWFyKHllYXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzWWVhciA9IHllYXI7XG4gICAgICAgICAgICByZXNEYXlPZlllYXIgPSBkYXlPZlllYXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeWVhcjogcmVzWWVhcixcbiAgICAgICAgICAgIGRheU9mWWVhcjogcmVzRGF5T2ZZZWFyLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdlZWtPZlllYXIobW9tLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldChtb20ueWVhcigpLCBkb3csIGRveSksXG4gICAgICAgICAgICB3ZWVrID0gTWF0aC5mbG9vcigobW9tLmRheU9mWWVhcigpIC0gd2Vla09mZnNldCAtIDEpIC8gNykgKyAxLFxuICAgICAgICAgICAgcmVzV2VlayxcbiAgICAgICAgICAgIHJlc1llYXI7XG5cbiAgICAgICAgaWYgKHdlZWsgPCAxKSB7XG4gICAgICAgICAgICByZXNZZWFyID0gbW9tLnllYXIoKSAtIDE7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayArIHdlZWtzSW5ZZWFyKHJlc1llYXIsIGRvdywgZG95KTtcbiAgICAgICAgfSBlbHNlIGlmICh3ZWVrID4gd2Vla3NJblllYXIobW9tLnllYXIoKSwgZG93LCBkb3kpKSB7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayAtIHdlZWtzSW5ZZWFyKG1vbS55ZWFyKCksIGRvdywgZG95KTtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpO1xuICAgICAgICAgICAgcmVzV2VlayA9IHdlZWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2VlazogcmVzV2VlayxcbiAgICAgICAgICAgIHllYXI6IHJlc1llYXIsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2Vla3NJblllYXIoeWVhciwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpLFxuICAgICAgICAgICAgd2Vla09mZnNldE5leHQgPSBmaXJzdFdlZWtPZmZzZXQoeWVhciArIDEsIGRvdywgZG95KTtcbiAgICAgICAgcmV0dXJuIChkYXlzSW5ZZWFyKHllYXIpIC0gd2Vla09mZnNldCArIHdlZWtPZmZzZXROZXh0KSAvIDc7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3cnLCBbJ3d3JywgMl0sICd3bycsICd3ZWVrJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ1cnLCBbJ1dXJywgMl0sICdXbycsICdpc29XZWVrJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ3dlZWsnLCAndycpO1xuICAgIGFkZFVuaXRBbGlhcygnaXNvV2VlaycsICdXJyk7XG5cbiAgICAvLyBQUklPUklUSUVTXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3dlZWsnLCA1KTtcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2lzb1dlZWsnLCA1KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3cnLCBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3d3JywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1cnLCBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1dXJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWyd3JywgJ3d3JywgJ1cnLCAnV1cnXSwgZnVuY3Rpb24gKFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgd2VlayxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICB0b2tlblxuICAgICkge1xuICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAxKV0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICAvLyBMT0NBTEVTXG5cbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrKG1vbSkge1xuICAgICAgICByZXR1cm4gd2Vla09mWWVhcihtb20sIHRoaXMuX3dlZWsuZG93LCB0aGlzLl93ZWVrLmRveSkud2VlaztcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWsgPSB7XG4gICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mV2VlaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWsuZG93O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZUZpcnN0RGF5T2ZZZWFyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fd2Vlay5kb3k7XG4gICAgfVxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0V2VlayhpbnB1dCkge1xuICAgICAgICB2YXIgd2VlayA9IHRoaXMubG9jYWxlRGF0YSgpLndlZWsodGhpcyk7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2VlayA6IHRoaXMuYWRkKChpbnB1dCAtIHdlZWspICogNywgJ2QnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRJU09XZWVrKGlucHV0KSB7XG4gICAgICAgIHZhciB3ZWVrID0gd2Vla09mWWVhcih0aGlzLCAxLCA0KS53ZWVrO1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWsgOiB0aGlzLmFkZCgoaW5wdXQgLSB3ZWVrKSAqIDcsICdkJyk7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2QnLCAwLCAnZG8nLCAnZGF5Jyk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c01pbih0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2RkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzU2hvcnQodGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkZGRkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXModGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdlJywgMCwgMCwgJ3dlZWtkYXknKTtcbiAgICBhZGRGb3JtYXRUb2tlbignRScsIDAsIDAsICdpc29XZWVrZGF5Jyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ2RheScsICdkJyk7XG4gICAgYWRkVW5pdEFsaWFzKCd3ZWVrZGF5JywgJ2UnKTtcbiAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWtkYXknLCAnRScpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2RheScsIDExKTtcbiAgICBhZGRVbml0UHJpb3JpdHkoJ3dlZWtkYXknLCAxMSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCdpc29XZWVrZGF5JywgMTEpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignZCcsIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignZScsIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignRScsIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignZGQnLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzTWluUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZCcsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNTaG9ydFJlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcbiAgICBhZGRSZWdleFRva2VuKCdkZGRkJywgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1JlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZGQnLCAnZGRkJywgJ2RkZGQnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHZhciB3ZWVrZGF5ID0gY29uZmlnLl9sb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCwgdG9rZW4sIGNvbmZpZy5fc3RyaWN0KTtcbiAgICAgICAgLy8gaWYgd2UgZGlkbid0IGdldCBhIHdlZWtkYXkgbmFtZSwgbWFyayB0aGUgZGF0ZSBhcyBpbnZhbGlkXG4gICAgICAgIGlmICh3ZWVrZGF5ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHdlZWsuZCA9IHdlZWtkYXk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkV2Vla2RheSA9IGlucHV0O1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2QnLCAnZScsICdFJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuXSA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIGZ1bmN0aW9uIHBhcnNlV2Vla2RheShpbnB1dCwgbG9jYWxlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzTmFOKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGlucHV0LCAxMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dCA9IGxvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0KTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlSXNvV2Vla2RheShpbnB1dCwgbG9jYWxlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQpICUgNyB8fCA3O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc05hTihpbnB1dCkgPyBudWxsIDogaW5wdXQ7XG4gICAgfVxuXG4gICAgLy8gTE9DQUxFU1xuICAgIGZ1bmN0aW9uIHNoaWZ0V2Vla2RheXMod3MsIG4pIHtcbiAgICAgICAgcmV0dXJuIHdzLnNsaWNlKG4sIDcpLmNvbmNhdCh3cy5zbGljZSgwLCBuKSk7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrZGF5cyA9ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQgPSAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICBkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4gPSAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGRlZmF1bHRXZWVrZGF5c1JlZ2V4ID0gbWF0Y2hXb3JkLFxuICAgICAgICBkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4ID0gbWF0Y2hXb3JkLFxuICAgICAgICBkZWZhdWx0V2Vla2RheXNNaW5SZWdleCA9IG1hdGNoV29yZDtcblxuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzKG0sIGZvcm1hdCkge1xuICAgICAgICB2YXIgd2Vla2RheXMgPSBpc0FycmF5KHRoaXMuX3dlZWtkYXlzKVxuICAgICAgICAgICAgPyB0aGlzLl93ZWVrZGF5c1xuICAgICAgICAgICAgOiB0aGlzLl93ZWVrZGF5c1tcbiAgICAgICAgICAgICAgICAgIG0gJiYgbSAhPT0gdHJ1ZSAmJiB0aGlzLl93ZWVrZGF5cy5pc0Zvcm1hdC50ZXN0KGZvcm1hdClcbiAgICAgICAgICAgICAgICAgICAgICA/ICdmb3JtYXQnXG4gICAgICAgICAgICAgICAgICAgICAgOiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIG0gPT09IHRydWVcbiAgICAgICAgICAgID8gc2hpZnRXZWVrZGF5cyh3ZWVrZGF5cywgdGhpcy5fd2Vlay5kb3cpXG4gICAgICAgICAgICA6IG1cbiAgICAgICAgICAgID8gd2Vla2RheXNbbS5kYXkoKV1cbiAgICAgICAgICAgIDogd2Vla2RheXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNTaG9ydChtKSB7XG4gICAgICAgIHJldHVybiBtID09PSB0cnVlXG4gICAgICAgICAgICA/IHNoaWZ0V2Vla2RheXModGhpcy5fd2Vla2RheXNTaG9ydCwgdGhpcy5fd2Vlay5kb3cpXG4gICAgICAgICAgICA6IG1cbiAgICAgICAgICAgID8gdGhpcy5fd2Vla2RheXNTaG9ydFttLmRheSgpXVxuICAgICAgICAgICAgOiB0aGlzLl93ZWVrZGF5c1Nob3J0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzTWluKG0pIHtcbiAgICAgICAgcmV0dXJuIG0gPT09IHRydWVcbiAgICAgICAgICAgID8gc2hpZnRXZWVrZGF5cyh0aGlzLl93ZWVrZGF5c01pbiwgdGhpcy5fd2Vlay5kb3cpXG4gICAgICAgICAgICA6IG1cbiAgICAgICAgICAgID8gdGhpcy5fd2Vla2RheXNNaW5bbS5kYXkoKV1cbiAgICAgICAgICAgIDogdGhpcy5fd2Vla2RheXNNaW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UkMSh3ZWVrZGF5TmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBpaSxcbiAgICAgICAgICAgIG1vbSxcbiAgICAgICAgICAgIGxsYyA9IHdlZWtkYXlOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlID0gW107XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyArK2kpIHtcbiAgICAgICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXSA9IHRoaXMud2Vla2RheXNNaW4oXG4gICAgICAgICAgICAgICAgICAgIG1vbSxcbiAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICApLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldID0gdGhpcy53ZWVrZGF5c1Nob3J0KFxuICAgICAgICAgICAgICAgICAgICBtb20sXG4gICAgICAgICAgICAgICAgICAgICcnXG4gICAgICAgICAgICAgICAgKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzKG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnZGRkZCcpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2RkZCcpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2RkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2RkZCcpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrZGF5c1BhcnNlKHdlZWtkYXlOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgbW9tLCByZWdleDtcblxuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlU3RyaWN0UGFyc2UkMS5jYWxsKHRoaXMsIHdlZWtkYXlOYW1lLCBmb3JtYXQsIHN0cmljdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuXG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmICF0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICAgICAgICAgJ14nICsgdGhpcy53ZWVrZGF5cyhtb20sICcnKS5yZXBsYWNlKCcuJywgJ1xcXFwuPycpICsgJyQnLFxuICAgICAgICAgICAgICAgICAgICAnaSdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAgICAgICAgICdeJyArIHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywgJ1xcXFwuPycpICsgJyQnLFxuICAgICAgICAgICAgICAgICAgICAnaSdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgICAgICAgICAnXicgKyB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnXFxcXC4/JykgKyAnJCcsXG4gICAgICAgICAgICAgICAgICAgICdpJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICByZWdleCA9XG4gICAgICAgICAgICAgICAgICAgICdeJyArXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2Vla2RheXMobW9tLCAnJykgK1xuICAgICAgICAgICAgICAgICAgICAnfF4nICtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpICtcbiAgICAgICAgICAgICAgICAgICAgJ3xeJyArXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2Vla2RheXNNaW4obW9tLCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZVtpXSA9IG5ldyBSZWdFeHAocmVnZXgucmVwbGFjZSgnLicsICcnKSwgJ2knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRlc3QgdGhlIHJlZ2V4XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RyaWN0ICYmXG4gICAgICAgICAgICAgICAgZm9ybWF0ID09PSAnZGRkZCcgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHN0cmljdCAmJlxuICAgICAgICAgICAgICAgIGZvcm1hdCA9PT0gJ2RkZCcgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBzdHJpY3QgJiZcbiAgICAgICAgICAgICAgICBmb3JtYXQgPT09ICdkZCcgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXREYXlPZldlZWsoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXkgPSB0aGlzLl9pc1VUQyA/IHRoaXMuX2QuZ2V0VVRDRGF5KCkgOiB0aGlzLl9kLmdldERheSgpO1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaW5wdXQgPSBwYXJzZVdlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChpbnB1dCAtIGRheSwgJ2QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkYXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRMb2NhbGVEYXlPZldlZWsoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciB3ZWVrZGF5ID0gKHRoaXMuZGF5KCkgKyA3IC0gdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93KSAlIDc7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2Vla2RheSA6IHRoaXMuYWRkKGlucHV0IC0gd2Vla2RheSwgJ2QnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRJU09EYXlPZldlZWsoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYmVoYXZlcyB0aGUgc2FtZSBhcyBtb21lbnQjZGF5IGV4Y2VwdFxuICAgICAgICAvLyBhcyBhIGdldHRlciwgcmV0dXJucyA3IGluc3RlYWQgb2YgMCAoMS03IHJhbmdlIGluc3RlYWQgb2YgMC02KVxuICAgICAgICAvLyBhcyBhIHNldHRlciwgc3VuZGF5IHNob3VsZCBiZWxvbmcgdG8gdGhlIHByZXZpb3VzIHdlZWsuXG5cbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHZhciB3ZWVrZGF5ID0gcGFyc2VJc29XZWVrZGF5KGlucHV0LCB0aGlzLmxvY2FsZURhdGEoKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkodGhpcy5kYXkoKSAlIDcgPyB3ZWVrZGF5IDogd2Vla2RheSAtIDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KCkgfHwgNztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdlZWtkYXlzUmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgY29tcHV0ZVdlZWtkYXlzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUmVnZXggPSBkZWZhdWx0V2Vla2RheXNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4ICYmIGlzU3RyaWN0XG4gICAgICAgICAgICAgICAgPyB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4XG4gICAgICAgICAgICAgICAgOiB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2Vla2RheXNTaG9ydFJlZ2V4KGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNTaG9ydFJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXggPSBkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCAmJiBpc1N0cmljdFxuICAgICAgICAgICAgICAgID8gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4XG4gICAgICAgICAgICAgICAgOiB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrZGF5c01pblJlZ2V4KGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c01pblJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c01pblJlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCAmJiBpc1N0cmljdFxuICAgICAgICAgICAgICAgID8gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleFxuICAgICAgICAgICAgICAgIDogdGhpcy5fd2Vla2RheXNNaW5SZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVXZWVrZGF5c1BhcnNlKCkge1xuICAgICAgICBmdW5jdGlvbiBjbXBMZW5SZXYoYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGIubGVuZ3RoIC0gYS5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbWluUGllY2VzID0gW10sXG4gICAgICAgICAgICBzaG9ydFBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbG9uZ1BpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbWl4ZWRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBtb20sXG4gICAgICAgICAgICBtaW5wLFxuICAgICAgICAgICAgc2hvcnRwLFxuICAgICAgICAgICAgbG9uZ3A7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpO1xuICAgICAgICAgICAgbWlucCA9IHJlZ2V4RXNjYXBlKHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykpO1xuICAgICAgICAgICAgc2hvcnRwID0gcmVnZXhFc2NhcGUodGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgICAgIGxvbmdwID0gcmVnZXhFc2NhcGUodGhpcy53ZWVrZGF5cyhtb20sICcnKSk7XG4gICAgICAgICAgICBtaW5QaWVjZXMucHVzaChtaW5wKTtcbiAgICAgICAgICAgIHNob3J0UGllY2VzLnB1c2goc2hvcnRwKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKG1pbnApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChzaG9ydHApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSB3ZWVrZGF5IChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgbWluUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuXG4gICAgICAgIHRoaXMuX3dlZWtkYXlzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleCA9IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzTWluUmVnZXggPSB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuXG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgJ14oJyArIGxvbmdQaWVjZXMuam9pbignfCcpICsgJyknLFxuICAgICAgICAgICAgJ2knXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAnXignICsgc2hvcnRQaWVjZXMuam9pbignfCcpICsgJyknLFxuICAgICAgICAgICAgJ2knXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgJ14oJyArIG1pblBpZWNlcy5qb2luKCd8JykgKyAnKScsXG4gICAgICAgICAgICAnaSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBmdW5jdGlvbiBoRm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3VycygpICUgMTIgfHwgMTI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24ga0Zvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMoKSB8fCAyNDtcbiAgICB9XG5cbiAgICBhZGRGb3JtYXRUb2tlbignSCcsIFsnSEgnLCAyXSwgMCwgJ2hvdXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignaCcsIFsnaGgnLCAyXSwgMCwgaEZvcm1hdCk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ2snLCBbJ2trJywgMl0sIDAsIGtGb3JtYXQpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2htbScsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgaEZvcm1hdC5hcHBseSh0aGlzKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdobW1zcycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICcnICtcbiAgICAgICAgICAgIGhGb3JtYXQuYXBwbHkodGhpcykgK1xuICAgICAgICAgICAgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKVxuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0htbScsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgdGhpcy5ob3VycygpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0htbXNzJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgJycgK1xuICAgICAgICAgICAgdGhpcy5ob3VycygpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKSArXG4gICAgICAgICAgICB6ZXJvRmlsbCh0aGlzLnNlY29uZHMoKSwgMilcbiAgICAgICAgKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG1lcmlkaWVtKHRva2VuLCBsb3dlcmNhc2UpIHtcbiAgICAgICAgYWRkRm9ybWF0VG9rZW4odG9rZW4sIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tZXJpZGllbShcbiAgICAgICAgICAgICAgICB0aGlzLmhvdXJzKCksXG4gICAgICAgICAgICAgICAgdGhpcy5taW51dGVzKCksXG4gICAgICAgICAgICAgICAgbG93ZXJjYXNlXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBtZXJpZGllbSgnYScsIHRydWUpO1xuICAgIG1lcmlkaWVtKCdBJywgZmFsc2UpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdob3VyJywgJ2gnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdob3VyJywgMTMpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgZnVuY3Rpb24gbWF0Y2hNZXJpZGllbShpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuX21lcmlkaWVtUGFyc2U7XG4gICAgfVxuXG4gICAgYWRkUmVnZXhUb2tlbignYScsIG1hdGNoTWVyaWRpZW0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0EnLCBtYXRjaE1lcmlkaWVtKTtcbiAgICBhZGRSZWdleFRva2VuKCdIJywgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdoJywgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdrJywgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdISCcsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdoaCcsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdraycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ2htbScsIG1hdGNoM3RvNCk7XG4gICAgYWRkUmVnZXhUb2tlbignaG1tc3MnLCBtYXRjaDV0bzYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0htbScsIG1hdGNoM3RvNCk7XG4gICAgYWRkUmVnZXhUb2tlbignSG1tc3MnLCBtYXRjaDV0bzYpO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ0gnLCAnSEgnXSwgSE9VUik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ2snLCAna2snXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBrSW5wdXQgPSB0b0ludChpbnB1dCk7XG4gICAgICAgIGFycmF5W0hPVVJdID0ga0lucHV0ID09PSAyNCA/IDAgOiBrSW5wdXQ7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ2EnLCAnQSddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9pc1BtID0gY29uZmlnLl9sb2NhbGUuaXNQTShpbnB1dCk7XG4gICAgICAgIGNvbmZpZy5fbWVyaWRpZW0gPSBpbnB1dDtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKFsnaCcsICdoaCddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dCk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ2htbScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zKSk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ2htbXNzJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MxID0gaW5wdXQubGVuZ3RoIC0gNCxcbiAgICAgICAgICAgIHBvczIgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MxKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMSwgMikpO1xuICAgICAgICBhcnJheVtTRUNPTkRdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczIpKTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignSG1tJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MpKTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdIbW1zcycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zMSA9IGlucHV0Lmxlbmd0aCAtIDQsXG4gICAgICAgICAgICBwb3MyID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zMSkpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczEsIDIpKTtcbiAgICAgICAgYXJyYXlbU0VDT05EXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MyKSk7XG4gICAgfSk7XG5cbiAgICAvLyBMT0NBTEVTXG5cbiAgICBmdW5jdGlvbiBsb2NhbGVJc1BNKGlucHV0KSB7XG4gICAgICAgIC8vIElFOCBRdWlya3MgTW9kZSAmIElFNyBTdGFuZGFyZHMgTW9kZSBkbyBub3QgYWxsb3cgYWNjZXNzaW5nIHN0cmluZ3MgbGlrZSBhcnJheXNcbiAgICAgICAgLy8gVXNpbmcgY2hhckF0IHNob3VsZCBiZSBtb3JlIGNvbXBhdGlibGUuXG4gICAgICAgIHJldHVybiAoaW5wdXQgKyAnJykudG9Mb3dlckNhc2UoKS5jaGFyQXQoMCkgPT09ICdwJztcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZU1lcmlkaWVtUGFyc2UgPSAvW2FwXVxcLj9tP1xcLj8vaSxcbiAgICAgICAgLy8gU2V0dGluZyB0aGUgaG91ciBzaG91bGQga2VlcCB0aGUgdGltZSwgYmVjYXVzZSB0aGUgdXNlciBleHBsaWNpdGx5XG4gICAgICAgIC8vIHNwZWNpZmllZCB3aGljaCBob3VyIHRoZXkgd2FudC4gU28gdHJ5aW5nIHRvIG1haW50YWluIHRoZSBzYW1lIGhvdXIgKGluXG4gICAgICAgIC8vIGEgbmV3IHRpbWV6b25lKSBtYWtlcyBzZW5zZS4gQWRkaW5nL3N1YnRyYWN0aW5nIGhvdXJzIGRvZXMgbm90IGZvbGxvd1xuICAgICAgICAvLyB0aGlzIHJ1bGUuXG4gICAgICAgIGdldFNldEhvdXIgPSBtYWtlR2V0U2V0KCdIb3VycycsIHRydWUpO1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlTWVyaWRpZW0oaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgaWYgKGhvdXJzID4gMTEpIHtcbiAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ3BtJyA6ICdQTSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdhbScgOiAnQU0nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGJhc2VDb25maWcgPSB7XG4gICAgICAgIGNhbGVuZGFyOiBkZWZhdWx0Q2FsZW5kYXIsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiBkZWZhdWx0TG9uZ0RhdGVGb3JtYXQsXG4gICAgICAgIGludmFsaWREYXRlOiBkZWZhdWx0SW52YWxpZERhdGUsXG4gICAgICAgIG9yZGluYWw6IGRlZmF1bHRPcmRpbmFsLFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiBkZWZhdWx0RGF5T2ZNb250aE9yZGluYWxQYXJzZSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiBkZWZhdWx0UmVsYXRpdmVUaW1lLFxuXG4gICAgICAgIG1vbnRoczogZGVmYXVsdExvY2FsZU1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCxcblxuICAgICAgICB3ZWVrOiBkZWZhdWx0TG9jYWxlV2VlayxcblxuICAgICAgICB3ZWVrZGF5czogZGVmYXVsdExvY2FsZVdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c01pbjogZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCxcblxuICAgICAgICBtZXJpZGllbVBhcnNlOiBkZWZhdWx0TG9jYWxlTWVyaWRpZW1QYXJzZSxcbiAgICB9O1xuXG4gICAgLy8gaW50ZXJuYWwgc3RvcmFnZSBmb3IgbG9jYWxlIGNvbmZpZyBmaWxlc1xuICAgIHZhciBsb2NhbGVzID0ge30sXG4gICAgICAgIGxvY2FsZUZhbWlsaWVzID0ge30sXG4gICAgICAgIGdsb2JhbExvY2FsZTtcblxuICAgIGZ1bmN0aW9uIGNvbW1vblByZWZpeChhcnIxLCBhcnIyKSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgbWlubCA9IE1hdGgubWluKGFycjEubGVuZ3RoLCBhcnIyLmxlbmd0aCk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBtaW5sOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlmIChhcnIxW2ldICE9PSBhcnIyW2ldKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbmw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplTG9jYWxlKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5ID8ga2V5LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgnXycsICctJykgOiBrZXk7XG4gICAgfVxuXG4gICAgLy8gcGljayB0aGUgbG9jYWxlIGZyb20gdGhlIGFycmF5XG4gICAgLy8gdHJ5IFsnZW4tYXUnLCAnZW4tZ2InXSBhcyAnZW4tYXUnLCAnZW4tZ2InLCAnZW4nLCBhcyBpbiBtb3ZlIHRocm91Z2ggdGhlIGxpc3QgdHJ5aW5nIGVhY2hcbiAgICAvLyBzdWJzdHJpbmcgZnJvbSBtb3N0IHNwZWNpZmljIHRvIGxlYXN0LCBidXQgbW92ZSB0byB0aGUgbmV4dCBhcnJheSBpdGVtIGlmIGl0J3MgYSBtb3JlIHNwZWNpZmljIHZhcmlhbnQgdGhhbiB0aGUgY3VycmVudCByb290XG4gICAgZnVuY3Rpb24gY2hvb3NlTG9jYWxlKG5hbWVzKSB7XG4gICAgICAgIHZhciBpID0gMCxcbiAgICAgICAgICAgIGosXG4gICAgICAgICAgICBuZXh0LFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgc3BsaXQ7XG5cbiAgICAgICAgd2hpbGUgKGkgPCBuYW1lcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNwbGl0ID0gbm9ybWFsaXplTG9jYWxlKG5hbWVzW2ldKS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgaiA9IHNwbGl0Lmxlbmd0aDtcbiAgICAgICAgICAgIG5leHQgPSBub3JtYWxpemVMb2NhbGUobmFtZXNbaSArIDFdKTtcbiAgICAgICAgICAgIG5leHQgPSBuZXh0ID8gbmV4dC5zcGxpdCgnLScpIDogbnVsbDtcbiAgICAgICAgICAgIHdoaWxlIChqID4gMCkge1xuICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvYWRMb2NhbGUoc3BsaXQuc2xpY2UoMCwgaikuam9pbignLScpKTtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgbmV4dCAmJlxuICAgICAgICAgICAgICAgICAgICBuZXh0Lmxlbmd0aCA+PSBqICYmXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblByZWZpeChzcGxpdCwgbmV4dCkgPj0gaiAtIDFcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgLy90aGUgbmV4dCBhcnJheSBpdGVtIGlzIGJldHRlciB0aGFuIGEgc2hhbGxvd2VyIHN1YnN0cmluZyBvZiB0aGlzIG9uZVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgai0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9hZExvY2FsZShuYW1lKSB7XG4gICAgICAgIHZhciBvbGRMb2NhbGUgPSBudWxsLFxuICAgICAgICAgICAgYWxpYXNlZFJlcXVpcmU7XG4gICAgICAgIC8vIFRPRE86IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIHJlZ2lzdGVyIGFuZCBsb2FkIGFsbCB0aGUgbG9jYWxlcyBpbiBOb2RlXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgIG1vZHVsZSAmJlxuICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHNcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG9sZExvY2FsZSA9IGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICAgICAgICAgICAgICBhbGlhc2VkUmVxdWlyZSA9IHJlcXVpcmU7XG4gICAgICAgICAgICAgICAgYWxpYXNlZFJlcXVpcmUoJy4vbG9jYWxlLycgKyBuYW1lKTtcbiAgICAgICAgICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGUob2xkTG9jYWxlKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBtYXJrIGFzIG5vdCBmb3VuZCB0byBhdm9pZCByZXBlYXRpbmcgZXhwZW5zaXZlIGZpbGUgcmVxdWlyZSBjYWxsIGNhdXNpbmcgaGlnaCBDUFVcbiAgICAgICAgICAgICAgICAvLyB3aGVuIHRyeWluZyB0byBmaW5kIGVuLVVTLCBlbl9VUywgZW4tdXMgZm9yIGV2ZXJ5IGZvcm1hdCBjYWxsXG4gICAgICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IG51bGw7IC8vIG51bGwgbWVhbnMgbm90IGZvdW5kXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGxvYWQgbG9jYWxlIGFuZCB0aGVuIHNldCB0aGUgZ2xvYmFsIGxvY2FsZS4gIElmXG4gICAgLy8gbm8gYXJndW1lbnRzIGFyZSBwYXNzZWQgaW4sIGl0IHdpbGwgc2ltcGx5IHJldHVybiB0aGUgY3VycmVudCBnbG9iYWxcbiAgICAvLyBsb2NhbGUga2V5LlxuICAgIGZ1bmN0aW9uIGdldFNldEdsb2JhbExvY2FsZShrZXksIHZhbHVlcykge1xuICAgICAgICB2YXIgZGF0YTtcbiAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZ2V0TG9jYWxlKGtleSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBkZWZpbmVMb2NhbGUoa2V5LCB2YWx1ZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIC8vIG1vbWVudC5kdXJhdGlvbi5fbG9jYWxlID0gbW9tZW50Ll9sb2NhbGUgPSBkYXRhO1xuICAgICAgICAgICAgICAgIGdsb2JhbExvY2FsZSA9IGRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vd2FybiB1c2VyIGlmIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGJ1dCB0aGUgbG9jYWxlIGNvdWxkIG5vdCBiZSBzZXRcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0xvY2FsZSAnICsga2V5ICsgJyBub3QgZm91bmQuIERpZCB5b3UgZm9yZ2V0IHRvIGxvYWQgaXQ/J1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGUuX2FiYnI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVmaW5lTG9jYWxlKG5hbWUsIGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLFxuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGJhc2VDb25maWc7XG4gICAgICAgICAgICBjb25maWcuYWJiciA9IG5hbWU7XG4gICAgICAgICAgICBpZiAobG9jYWxlc1tuYW1lXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZGVwcmVjYXRlU2ltcGxlKFxuICAgICAgICAgICAgICAgICAgICAnZGVmaW5lTG9jYWxlT3ZlcnJpZGUnLFxuICAgICAgICAgICAgICAgICAgICAndXNlIG1vbWVudC51cGRhdGVMb2NhbGUobG9jYWxlTmFtZSwgY29uZmlnKSB0byBjaGFuZ2UgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnYW4gZXhpc3RpbmcgbG9jYWxlLiBtb21lbnQuZGVmaW5lTG9jYWxlKGxvY2FsZU5hbWUsICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpZykgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgY3JlYXRpbmcgYSBuZXcgbG9jYWxlICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1NlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RlZmluZS1sb2NhbGUvIGZvciBtb3JlIGluZm8uJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gbG9jYWxlc1tuYW1lXS5fY29uZmlnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb25maWcucGFyZW50TG9jYWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlc1tjb25maWcucGFyZW50TG9jYWxlXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGxvY2FsZXNbY29uZmlnLnBhcmVudExvY2FsZV0uX2NvbmZpZztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2FkTG9jYWxlKGNvbmZpZy5wYXJlbnRMb2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGxvY2FsZS5fY29uZmlnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2NhbGVGYW1pbGllc1tjb25maWcucGFyZW50TG9jYWxlXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZUZhbWlsaWVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tjb25maWcucGFyZW50TG9jYWxlXS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzogY29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBuZXcgTG9jYWxlKG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNvbmZpZykpO1xuXG4gICAgICAgICAgICBpZiAobG9jYWxlRmFtaWxpZXNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmluZUxvY2FsZSh4Lm5hbWUsIHguY29uZmlnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlXG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2Ugc2V0IHRoZSBsb2NhbGUgQUZURVIgYWxsIGNoaWxkIGxvY2FsZXMgaGF2ZSBiZWVuXG4gICAgICAgICAgICAvLyBjcmVhdGVkLCBzbyB3ZSB3b24ndCBlbmQgdXAgd2l0aCB0aGUgY2hpbGQgbG9jYWxlIHNldC5cbiAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShuYW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB1c2VmdWwgZm9yIHRlc3RpbmdcbiAgICAgICAgICAgIGRlbGV0ZSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVMb2NhbGUobmFtZSwgY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIGxvY2FsZSxcbiAgICAgICAgICAgICAgICB0bXBMb2NhbGUsXG4gICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gYmFzZUNvbmZpZztcblxuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCAmJiBsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIGV4aXN0aW5nIGNoaWxkIGxvY2FsZSBpbi1wbGFjZSB0byBhdm9pZCBtZW1vcnktbGVha3NcbiAgICAgICAgICAgICAgICBsb2NhbGVzW25hbWVdLnNldChtZXJnZUNvbmZpZ3MobG9jYWxlc1tuYW1lXS5fY29uZmlnLCBjb25maWcpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gTUVSR0VcbiAgICAgICAgICAgICAgICB0bXBMb2NhbGUgPSBsb2FkTG9jYWxlKG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICh0bXBMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSB0bXBMb2NhbGUuX2NvbmZpZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uZmlnID0gbWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY29uZmlnKTtcbiAgICAgICAgICAgICAgICBpZiAodG1wTG9jYWxlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlTG9jYWxlIGlzIGNhbGxlZCBmb3IgY3JlYXRpbmcgYSBuZXcgbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgIC8vIFNldCBhYmJyIHNvIGl0IHdpbGwgaGF2ZSBhIG5hbWUgKGdldHRlcnMgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgIC8vIHVuZGVmaW5lZCBvdGhlcndpc2UpLlxuICAgICAgICAgICAgICAgICAgICBjb25maWcuYWJiciA9IG5hbWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvY2FsZSA9IG5ldyBMb2NhbGUoY29uZmlnKTtcbiAgICAgICAgICAgICAgICBsb2NhbGUucGFyZW50TG9jYWxlID0gbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbG9jYWxlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBiYWNrd2FyZHMgY29tcGF0IGZvciBub3c6IGFsc28gc2V0IHRoZSBsb2NhbGVcbiAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHBhc3MgbnVsbCBmb3IgY29uZmlnIHRvIHVudXBkYXRlLCB1c2VmdWwgZm9yIHRlc3RzXG4gICAgICAgICAgICBpZiAobG9jYWxlc1tuYW1lXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0ucGFyZW50TG9jYWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IGxvY2FsZXNbbmFtZV0ucGFyZW50TG9jYWxlO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gZ2V0U2V0R2xvYmFsTG9jYWxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobG9jYWxlc1tuYW1lXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICB9XG5cbiAgICAvLyByZXR1cm5zIGxvY2FsZSBkYXRhXG4gICAgZnVuY3Rpb24gZ2V0TG9jYWxlKGtleSkge1xuICAgICAgICB2YXIgbG9jYWxlO1xuXG4gICAgICAgIGlmIChrZXkgJiYga2V5Ll9sb2NhbGUgJiYga2V5Ll9sb2NhbGUuX2FiYnIpIHtcbiAgICAgICAgICAgIGtleSA9IGtleS5fbG9jYWxlLl9hYmJyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzQXJyYXkoa2V5KSkge1xuICAgICAgICAgICAgLy9zaG9ydC1jaXJjdWl0IGV2ZXJ5dGhpbmcgZWxzZVxuICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShrZXkpO1xuICAgICAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBrZXkgPSBba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjaG9vc2VMb2NhbGUoa2V5KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TG9jYWxlcygpIHtcbiAgICAgICAgcmV0dXJuIGtleXMobG9jYWxlcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2tPdmVyZmxvdyhtKSB7XG4gICAgICAgIHZhciBvdmVyZmxvdyxcbiAgICAgICAgICAgIGEgPSBtLl9hO1xuXG4gICAgICAgIGlmIChhICYmIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9PT0gLTIpIHtcbiAgICAgICAgICAgIG92ZXJmbG93ID1cbiAgICAgICAgICAgICAgICBhW01PTlRIXSA8IDAgfHwgYVtNT05USF0gPiAxMVxuICAgICAgICAgICAgICAgICAgICA/IE1PTlRIXG4gICAgICAgICAgICAgICAgICAgIDogYVtEQVRFXSA8IDEgfHwgYVtEQVRFXSA+IGRheXNJbk1vbnRoKGFbWUVBUl0sIGFbTU9OVEhdKVxuICAgICAgICAgICAgICAgICAgICA/IERBVEVcbiAgICAgICAgICAgICAgICAgICAgOiBhW0hPVVJdIDwgMCB8fFxuICAgICAgICAgICAgICAgICAgICAgIGFbSE9VUl0gPiAyNCB8fFxuICAgICAgICAgICAgICAgICAgICAgIChhW0hPVVJdID09PSAyNCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYVtNSU5VVEVdICE9PSAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW1NFQ09ORF0gIT09IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbTUlMTElTRUNPTkRdICE9PSAwKSlcbiAgICAgICAgICAgICAgICAgICAgPyBIT1VSXG4gICAgICAgICAgICAgICAgICAgIDogYVtNSU5VVEVdIDwgMCB8fCBhW01JTlVURV0gPiA1OVxuICAgICAgICAgICAgICAgICAgICA/IE1JTlVURVxuICAgICAgICAgICAgICAgICAgICA6IGFbU0VDT05EXSA8IDAgfHwgYVtTRUNPTkRdID4gNTlcbiAgICAgICAgICAgICAgICAgICAgPyBTRUNPTkRcbiAgICAgICAgICAgICAgICAgICAgOiBhW01JTExJU0VDT05EXSA8IDAgfHwgYVtNSUxMSVNFQ09ORF0gPiA5OTlcbiAgICAgICAgICAgICAgICAgICAgPyBNSUxMSVNFQ09ORFxuICAgICAgICAgICAgICAgICAgICA6IC0xO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd0RheU9mWWVhciAmJlxuICAgICAgICAgICAgICAgIChvdmVyZmxvdyA8IFlFQVIgfHwgb3ZlcmZsb3cgPiBEQVRFKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBEQVRFO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGdldFBhcnNpbmdGbGFncyhtKS5fb3ZlcmZsb3dXZWVrcyAmJiBvdmVyZmxvdyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IFdFRUs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd1dlZWtkYXkgJiYgb3ZlcmZsb3cgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBXRUVLREFZO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MobSkub3ZlcmZsb3cgPSBvdmVyZmxvdztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIC8vIGlzbyA4NjAxIHJlZ2V4XG4gICAgLy8gMDAwMC0wMC0wMCAwMDAwLVcwMCBvciAwMDAwLVcwMC0wICsgVCArIDAwIG9yIDAwOjAwIG9yIDAwOjAwOjAwIG9yIDAwOjAwOjAwLjAwMCArICswMDowMCBvciArMDAwMCBvciArMDApXG4gICAgdmFyIGV4dGVuZGVkSXNvUmVnZXggPSAvXlxccyooKD86WystXVxcZHs2fXxcXGR7NH0pLSg/OlxcZFxcZC1cXGRcXGR8V1xcZFxcZC1cXGR8V1xcZFxcZHxcXGRcXGRcXGR8XFxkXFxkKSkoPzooVHwgKShcXGRcXGQoPzo6XFxkXFxkKD86OlxcZFxcZCg/OlsuLF1cXGQrKT8pPyk/KShbKy1dXFxkXFxkKD86Oj9cXGRcXGQpP3xcXHMqWik/KT8kLyxcbiAgICAgICAgYmFzaWNJc29SZWdleCA9IC9eXFxzKigoPzpbKy1dXFxkezZ9fFxcZHs0fSkoPzpcXGRcXGRcXGRcXGR8V1xcZFxcZFxcZHxXXFxkXFxkfFxcZFxcZFxcZHxcXGRcXGR8KSkoPzooVHwgKShcXGRcXGQoPzpcXGRcXGQoPzpcXGRcXGQoPzpbLixdXFxkKyk/KT8pPykoWystXVxcZFxcZCg/Ojo/XFxkXFxkKT98XFxzKlopPyk/JC8sXG4gICAgICAgIHR6UmVnZXggPSAvWnxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPy8sXG4gICAgICAgIGlzb0RhdGVzID0gW1xuICAgICAgICAgICAgWydZWVlZWVktTU0tREQnLCAvWystXVxcZHs2fS1cXGRcXGQtXFxkXFxkL10sXG4gICAgICAgICAgICBbJ1lZWVktTU0tREQnLCAvXFxkezR9LVxcZFxcZC1cXGRcXGQvXSxcbiAgICAgICAgICAgIFsnR0dHRy1bV11XVy1FJywgL1xcZHs0fS1XXFxkXFxkLVxcZC9dLFxuICAgICAgICAgICAgWydHR0dHLVtXXVdXJywgL1xcZHs0fS1XXFxkXFxkLywgZmFsc2VdLFxuICAgICAgICAgICAgWydZWVlZLURERCcsIC9cXGR7NH0tXFxkezN9L10sXG4gICAgICAgICAgICBbJ1lZWVktTU0nLCAvXFxkezR9LVxcZFxcZC8sIGZhbHNlXSxcbiAgICAgICAgICAgIFsnWVlZWVlZTU1ERCcsIC9bKy1dXFxkezEwfS9dLFxuICAgICAgICAgICAgWydZWVlZTU1ERCcsIC9cXGR7OH0vXSxcbiAgICAgICAgICAgIFsnR0dHR1tXXVdXRScsIC9cXGR7NH1XXFxkezN9L10sXG4gICAgICAgICAgICBbJ0dHR0dbV11XVycsIC9cXGR7NH1XXFxkezJ9LywgZmFsc2VdLFxuICAgICAgICAgICAgWydZWVlZREREJywgL1xcZHs3fS9dLFxuICAgICAgICAgICAgWydZWVlZTU0nLCAvXFxkezZ9LywgZmFsc2VdLFxuICAgICAgICAgICAgWydZWVlZJywgL1xcZHs0fS8sIGZhbHNlXSxcbiAgICAgICAgXSxcbiAgICAgICAgLy8gaXNvIHRpbWUgZm9ybWF0cyBhbmQgcmVnZXhlc1xuICAgICAgICBpc29UaW1lcyA9IFtcbiAgICAgICAgICAgIFsnSEg6bW06c3MuU1NTUycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZFxcLlxcZCsvXSxcbiAgICAgICAgICAgIFsnSEg6bW06c3MsU1NTUycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZCxcXGQrL10sXG4gICAgICAgICAgICBbJ0hIOm1tOnNzJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkL10sXG4gICAgICAgICAgICBbJ0hIOm1tJywgL1xcZFxcZDpcXGRcXGQvXSxcbiAgICAgICAgICAgIFsnSEhtbXNzLlNTU1MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkXFwuXFxkKy9dLFxuICAgICAgICAgICAgWydISG1tc3MsU1NTUycsIC9cXGRcXGRcXGRcXGRcXGRcXGQsXFxkKy9dLFxuICAgICAgICAgICAgWydISG1tc3MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkL10sXG4gICAgICAgICAgICBbJ0hIbW0nLCAvXFxkXFxkXFxkXFxkL10sXG4gICAgICAgICAgICBbJ0hIJywgL1xcZFxcZC9dLFxuICAgICAgICBdLFxuICAgICAgICBhc3BOZXRKc29uUmVnZXggPSAvXlxcLz9EYXRlXFwoKC0/XFxkKykvaSxcbiAgICAgICAgLy8gUkZDIDI4MjIgcmVnZXg6IEZvciBkZXRhaWxzIHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjgyMiNzZWN0aW9uLTMuM1xuICAgICAgICByZmMyODIyID0gL14oPzooTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSw/XFxzKT8oXFxkezEsMn0pXFxzKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxccyhcXGR7Miw0fSlcXHMoXFxkXFxkKTooXFxkXFxkKSg/OjooXFxkXFxkKSk/XFxzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfChbKy1dXFxkezR9KSkkLyxcbiAgICAgICAgb2JzT2Zmc2V0cyA9IHtcbiAgICAgICAgICAgIFVUOiAwLFxuICAgICAgICAgICAgR01UOiAwLFxuICAgICAgICAgICAgRURUOiAtNCAqIDYwLFxuICAgICAgICAgICAgRVNUOiAtNSAqIDYwLFxuICAgICAgICAgICAgQ0RUOiAtNSAqIDYwLFxuICAgICAgICAgICAgQ1NUOiAtNiAqIDYwLFxuICAgICAgICAgICAgTURUOiAtNiAqIDYwLFxuICAgICAgICAgICAgTVNUOiAtNyAqIDYwLFxuICAgICAgICAgICAgUERUOiAtNyAqIDYwLFxuICAgICAgICAgICAgUFNUOiAtOCAqIDYwLFxuICAgICAgICB9O1xuXG4gICAgLy8gZGF0ZSBmcm9tIGlzbyBmb3JtYXRcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tSVNPKGNvbmZpZykge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGwsXG4gICAgICAgICAgICBzdHJpbmcgPSBjb25maWcuX2ksXG4gICAgICAgICAgICBtYXRjaCA9IGV4dGVuZGVkSXNvUmVnZXguZXhlYyhzdHJpbmcpIHx8IGJhc2ljSXNvUmVnZXguZXhlYyhzdHJpbmcpLFxuICAgICAgICAgICAgYWxsb3dUaW1lLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdCxcbiAgICAgICAgICAgIHRpbWVGb3JtYXQsXG4gICAgICAgICAgICB0ekZvcm1hdDtcblxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmlzbyA9IHRydWU7XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSBpc29EYXRlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNvRGF0ZXNbaV1bMV0uZXhlYyhtYXRjaFsxXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCA9IGlzb0RhdGVzW2ldWzBdO1xuICAgICAgICAgICAgICAgICAgICBhbGxvd1RpbWUgPSBpc29EYXRlc1tpXVsyXSAhPT0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRlRm9ybWF0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF0Y2hbM10pIHtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gaXNvVGltZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc29UaW1lc1tpXVsxXS5leGVjKG1hdGNoWzNdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hbMl0gc2hvdWxkIGJlICdUJyBvciBzcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdCA9IChtYXRjaFsyXSB8fCAnICcpICsgaXNvVGltZXNbaV1bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGltZUZvcm1hdCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhbGxvd1RpbWUgJiYgdGltZUZvcm1hdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoWzRdKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR6UmVnZXguZXhlYyhtYXRjaFs0XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHpGb3JtYXQgPSAnWic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25maWcuX2YgPSBkYXRlRm9ybWF0ICsgKHRpbWVGb3JtYXQgfHwgJycpICsgKHR6Rm9ybWF0IHx8ICcnKTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyhcbiAgICAgICAgeWVhclN0cixcbiAgICAgICAgbW9udGhTdHIsXG4gICAgICAgIGRheVN0cixcbiAgICAgICAgaG91clN0cixcbiAgICAgICAgbWludXRlU3RyLFxuICAgICAgICBzZWNvbmRTdHJcbiAgICApIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtcbiAgICAgICAgICAgIHVudHJ1bmNhdGVZZWFyKHllYXJTdHIpLFxuICAgICAgICAgICAgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpLFxuICAgICAgICAgICAgcGFyc2VJbnQoZGF5U3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChob3VyU3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChtaW51dGVTdHIsIDEwKSxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAoc2Vjb25kU3RyKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChwYXJzZUludChzZWNvbmRTdHIsIDEwKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXJTdHIpIHtcbiAgICAgICAgdmFyIHllYXIgPSBwYXJzZUludCh5ZWFyU3RyLCAxMCk7XG4gICAgICAgIGlmICh5ZWFyIDw9IDQ5KSB7XG4gICAgICAgICAgICByZXR1cm4gMjAwMCArIHllYXI7XG4gICAgICAgIH0gZWxzZSBpZiAoeWVhciA8PSA5OTkpIHtcbiAgICAgICAgICAgIHJldHVybiAxOTAwICsgeWVhcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geWVhcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7XG4gICAgICAgIC8vIFJlbW92ZSBjb21tZW50cyBhbmQgZm9sZGluZyB3aGl0ZXNwYWNlIGFuZCByZXBsYWNlIG11bHRpcGxlLXNwYWNlcyB3aXRoIGEgc2luZ2xlIHNwYWNlXG4gICAgICAgIHJldHVybiBzXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwoW14pXSpcXCl8W1xcblxcdF0vZywgJyAnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLyhcXHNcXHMrKS9nLCAnICcpXG4gICAgICAgICAgICAucmVwbGFjZSgvXlxcc1xccyovLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHNcXHMqJC8sICcnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja1dlZWtkYXkod2Vla2RheVN0ciwgcGFyc2VkSW5wdXQsIGNvbmZpZykge1xuICAgICAgICBpZiAod2Vla2RheVN0cikge1xuICAgICAgICAgICAgLy8gVE9ETzogUmVwbGFjZSB0aGUgdmFuaWxsYSBKUyBEYXRlIG9iamVjdCB3aXRoIGFuIGluZGVwZW5kZW50IGRheS1vZi13ZWVrIGNoZWNrLlxuICAgICAgICAgICAgdmFyIHdlZWtkYXlQcm92aWRlZCA9IGRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0ciksXG4gICAgICAgICAgICAgICAgd2Vla2RheUFjdHVhbCA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRJbnB1dFswXSxcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkSW5wdXRbMV0sXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZElucHV0WzJdXG4gICAgICAgICAgICAgICAgKS5nZXREYXkoKTtcbiAgICAgICAgICAgIGlmICh3ZWVrZGF5UHJvdmlkZWQgIT09IHdlZWtkYXlBY3R1YWwpIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS53ZWVrZGF5TWlzbWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYWxjdWxhdGVPZmZzZXQob2JzT2Zmc2V0LCBtaWxpdGFyeU9mZnNldCwgbnVtT2Zmc2V0KSB7XG4gICAgICAgIGlmIChvYnNPZmZzZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBvYnNPZmZzZXRzW29ic09mZnNldF07XG4gICAgICAgIH0gZWxzZSBpZiAobWlsaXRhcnlPZmZzZXQpIHtcbiAgICAgICAgICAgIC8vIHRoZSBvbmx5IGFsbG93ZWQgbWlsaXRhcnkgdHogaXMgWlxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBwYXJzZUludChudW1PZmZzZXQsIDEwKSxcbiAgICAgICAgICAgICAgICBtID0gaG0gJSAxMDAsXG4gICAgICAgICAgICAgICAgaCA9IChobSAtIG0pIC8gMTAwO1xuICAgICAgICAgICAgcmV0dXJuIGggKiA2MCArIG07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGFuZCB0aW1lIGZyb20gcmVmIDI4MjIgZm9ybWF0XG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVJGQzI4MjIoY29uZmlnKSB7XG4gICAgICAgIHZhciBtYXRjaCA9IHJmYzI4MjIuZXhlYyhwcmVwcm9jZXNzUkZDMjgyMihjb25maWcuX2kpKSxcbiAgICAgICAgICAgIHBhcnNlZEFycmF5O1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIHBhcnNlZEFycmF5ID0gZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyhcbiAgICAgICAgICAgICAgICBtYXRjaFs0XSxcbiAgICAgICAgICAgICAgICBtYXRjaFszXSxcbiAgICAgICAgICAgICAgICBtYXRjaFsyXSxcbiAgICAgICAgICAgICAgICBtYXRjaFs1XSxcbiAgICAgICAgICAgICAgICBtYXRjaFs2XSxcbiAgICAgICAgICAgICAgICBtYXRjaFs3XVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghY2hlY2tXZWVrZGF5KG1hdGNoWzFdLCBwYXJzZWRBcnJheSwgY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uZmlnLl9hID0gcGFyc2VkQXJyYXk7XG4gICAgICAgICAgICBjb25maWcuX3R6bSA9IGNhbGN1bGF0ZU9mZnNldChtYXRjaFs4XSwgbWF0Y2hbOV0sIG1hdGNoWzEwXSk7XG5cbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IGNyZWF0ZVVUQ0RhdGUuYXBwbHkobnVsbCwgY29uZmlnLl9hKTtcbiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgLSBjb25maWcuX3R6bSk7XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnJmYzI4MjIgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGZyb20gMSkgQVNQLk5FVCwgMikgSVNPLCAzKSBSRkMgMjgyMiBmb3JtYXRzLCBvciA0KSBvcHRpb25hbCBmYWxsYmFjayBpZiBwYXJzaW5nIGlzbid0IHN0cmljdFxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmcoY29uZmlnKSB7XG4gICAgICAgIHZhciBtYXRjaGVkID0gYXNwTmV0SnNvblJlZ2V4LmV4ZWMoY29uZmlnLl9pKTtcbiAgICAgICAgaWYgKG1hdGNoZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKCttYXRjaGVkWzFdKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0Zyb21JU08oY29uZmlnKTtcbiAgICAgICAgaWYgKGNvbmZpZy5faXNWYWxpZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBjb25maWcuX2lzVmFsaWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25maWdGcm9tUkZDMjgyMihjb25maWcpO1xuICAgICAgICBpZiAoY29uZmlnLl9pc1ZhbGlkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZGVsZXRlIGNvbmZpZy5faXNWYWxpZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuX3N0cmljdCkge1xuICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGaW5hbCBhdHRlbXB0LCB1c2UgSW5wdXQgRmFsbGJhY2tcbiAgICAgICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBob29rcy5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ3ZhbHVlIHByb3ZpZGVkIGlzIG5vdCBpbiBhIHJlY29nbml6ZWQgUkZDMjgyMiBvciBJU08gZm9ybWF0LiBtb21lbnQgY29uc3RydWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZSgpLCAnICtcbiAgICAgICAgICAgICd3aGljaCBpcyBub3QgcmVsaWFibGUgYWNyb3NzIGFsbCBicm93c2VycyBhbmQgdmVyc2lvbnMuIE5vbiBSRkMyODIyL0lTTyBkYXRlIGZvcm1hdHMgYXJlICcgK1xuICAgICAgICAgICAgJ2Rpc2NvdXJhZ2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYW4gdXBjb21pbmcgbWFqb3IgcmVsZWFzZS4gUGxlYXNlIHJlZmVyIHRvICcgK1xuICAgICAgICAgICAgJ2h0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvanMtZGF0ZS8gZm9yIG1vcmUgaW5mby4nLFxuICAgICAgICBmdW5jdGlvbiAoY29uZmlnKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShjb25maWcuX2kgKyAoY29uZmlnLl91c2VVVEMgPyAnIFVUQycgOiAnJykpO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIC8vIFBpY2sgdGhlIGZpcnN0IGRlZmluZWQgb2YgdHdvIG9yIHRocmVlIGFyZ3VtZW50cy5cbiAgICBmdW5jdGlvbiBkZWZhdWx0cyhhLCBiLCBjKSB7XG4gICAgICAgIGlmIChhICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGN1cnJlbnREYXRlQXJyYXkoY29uZmlnKSB7XG4gICAgICAgIC8vIGhvb2tzIGlzIGFjdHVhbGx5IHRoZSBleHBvcnRlZCBtb21lbnQgb2JqZWN0XG4gICAgICAgIHZhciBub3dWYWx1ZSA9IG5ldyBEYXRlKGhvb2tzLm5vdygpKTtcbiAgICAgICAgaWYgKGNvbmZpZy5fdXNlVVRDKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIG5vd1ZhbHVlLmdldFVUQ0Z1bGxZZWFyKCksXG4gICAgICAgICAgICAgICAgbm93VmFsdWUuZ2V0VVRDTW9udGgoKSxcbiAgICAgICAgICAgICAgICBub3dWYWx1ZS5nZXRVVENEYXRlKCksXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbbm93VmFsdWUuZ2V0RnVsbFllYXIoKSwgbm93VmFsdWUuZ2V0TW9udGgoKSwgbm93VmFsdWUuZ2V0RGF0ZSgpXTtcbiAgICB9XG5cbiAgICAvLyBjb252ZXJ0IGFuIGFycmF5IHRvIGEgZGF0ZS5cbiAgICAvLyB0aGUgYXJyYXkgc2hvdWxkIG1pcnJvciB0aGUgcGFyYW1ldGVycyBiZWxvd1xuICAgIC8vIG5vdGU6IGFsbCB2YWx1ZXMgcGFzdCB0aGUgeWVhciBhcmUgb3B0aW9uYWwgYW5kIHdpbGwgZGVmYXVsdCB0byB0aGUgbG93ZXN0IHBvc3NpYmxlIHZhbHVlLlxuICAgIC8vIFt5ZWFyLCBtb250aCwgZGF5ICwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXVxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21BcnJheShjb25maWcpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgaW5wdXQgPSBbXSxcbiAgICAgICAgICAgIGN1cnJlbnREYXRlLFxuICAgICAgICAgICAgZXhwZWN0ZWRXZWVrZGF5LFxuICAgICAgICAgICAgeWVhclRvVXNlO1xuXG4gICAgICAgIGlmIChjb25maWcuX2QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnREYXRlID0gY3VycmVudERhdGVBcnJheShjb25maWcpO1xuXG4gICAgICAgIC8vY29tcHV0ZSBkYXkgb2YgdGhlIHllYXIgZnJvbSB3ZWVrcyBhbmQgd2Vla2RheXNcbiAgICAgICAgaWYgKGNvbmZpZy5fdyAmJiBjb25maWcuX2FbREFURV0gPT0gbnVsbCAmJiBjb25maWcuX2FbTU9OVEhdID09IG51bGwpIHtcbiAgICAgICAgICAgIGRheU9mWWVhckZyb21XZWVrSW5mbyhjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9pZiB0aGUgZGF5IG9mIHRoZSB5ZWFyIGlzIHNldCwgZmlndXJlIG91dCB3aGF0IGl0IGlzXG4gICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhciAhPSBudWxsKSB7XG4gICAgICAgICAgICB5ZWFyVG9Vc2UgPSBkZWZhdWx0cyhjb25maWcuX2FbWUVBUl0sIGN1cnJlbnREYXRlW1lFQVJdKTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID4gZGF5c0luWWVhcih5ZWFyVG9Vc2UpIHx8XG4gICAgICAgICAgICAgICAgY29uZmlnLl9kYXlPZlllYXIgPT09IDBcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd0RheU9mWWVhciA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGUgPSBjcmVhdGVVVENEYXRlKHllYXJUb1VzZSwgMCwgY29uZmlnLl9kYXlPZlllYXIpO1xuICAgICAgICAgICAgY29uZmlnLl9hW01PTlRIXSA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtEQVRFXSA9IGRhdGUuZ2V0VVRDRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmYXVsdCB0byBjdXJyZW50IGRhdGUuXG4gICAgICAgIC8vICogaWYgbm8geWVhciwgbW9udGgsIGRheSBvZiBtb250aCBhcmUgZ2l2ZW4sIGRlZmF1bHQgdG8gdG9kYXlcbiAgICAgICAgLy8gKiBpZiBkYXkgb2YgbW9udGggaXMgZ2l2ZW4sIGRlZmF1bHQgbW9udGggYW5kIHllYXJcbiAgICAgICAgLy8gKiBpZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBvbmx5IHllYXJcbiAgICAgICAgLy8gKiBpZiB5ZWFyIGlzIGdpdmVuLCBkb24ndCBkZWZhdWx0IGFueXRoaW5nXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAzICYmIGNvbmZpZy5fYVtpXSA9PSBudWxsOyArK2kpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9IGlucHV0W2ldID0gY3VycmVudERhdGVbaV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBaZXJvIG91dCB3aGF0ZXZlciB3YXMgbm90IGRlZmF1bHRlZCwgaW5jbHVkaW5nIHRpbWVcbiAgICAgICAgZm9yICg7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9IGlucHV0W2ldID1cbiAgICAgICAgICAgICAgICBjb25maWcuX2FbaV0gPT0gbnVsbCA/IChpID09PSAyID8gMSA6IDApIDogY29uZmlnLl9hW2ldO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIDI0OjAwOjAwLjAwMFxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPT09IDI0ICYmXG4gICAgICAgICAgICBjb25maWcuX2FbTUlOVVRFXSA9PT0gMCAmJlxuICAgICAgICAgICAgY29uZmlnLl9hW1NFQ09ORF0gPT09IDAgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fYVtNSUxMSVNFQ09ORF0gPT09IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25maWcuX25leHREYXkgPSB0cnVlO1xuICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZy5fZCA9IChjb25maWcuX3VzZVVUQyA/IGNyZWF0ZVVUQ0RhdGUgOiBjcmVhdGVEYXRlKS5hcHBseShcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBpbnB1dFxuICAgICAgICApO1xuICAgICAgICBleHBlY3RlZFdlZWtkYXkgPSBjb25maWcuX3VzZVVUQ1xuICAgICAgICAgICAgPyBjb25maWcuX2QuZ2V0VVRDRGF5KClcbiAgICAgICAgICAgIDogY29uZmlnLl9kLmdldERheSgpO1xuXG4gICAgICAgIC8vIEFwcGx5IHRpbWV6b25lIG9mZnNldCBmcm9tIGlucHV0LiBUaGUgYWN0dWFsIHV0Y09mZnNldCBjYW4gYmUgY2hhbmdlZFxuICAgICAgICAvLyB3aXRoIHBhcnNlWm9uZS5cbiAgICAgICAgaWYgKGNvbmZpZy5fdHptICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgLSBjb25maWcuX3R6bSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLl9uZXh0RGF5KSB7XG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPSAyNDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNoZWNrIGZvciBtaXNtYXRjaGluZyBkYXkgb2Ygd2Vla1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maWcuX3cgJiZcbiAgICAgICAgICAgIHR5cGVvZiBjb25maWcuX3cuZCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fdy5kICE9PSBleHBlY3RlZFdlZWtkYXlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS53ZWVrZGF5TWlzbWF0Y2ggPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGF5T2ZZZWFyRnJvbVdlZWtJbmZvKGNvbmZpZykge1xuICAgICAgICB2YXIgdywgd2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95LCB0ZW1wLCB3ZWVrZGF5T3ZlcmZsb3csIGN1cldlZWs7XG5cbiAgICAgICAgdyA9IGNvbmZpZy5fdztcbiAgICAgICAgaWYgKHcuR0cgIT0gbnVsbCB8fCB3LlcgIT0gbnVsbCB8fCB3LkUgIT0gbnVsbCkge1xuICAgICAgICAgICAgZG93ID0gMTtcbiAgICAgICAgICAgIGRveSA9IDQ7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IFdlIG5lZWQgdG8gdGFrZSB0aGUgY3VycmVudCBpc29XZWVrWWVhciwgYnV0IHRoYXQgZGVwZW5kcyBvblxuICAgICAgICAgICAgLy8gaG93IHdlIGludGVycHJldCBub3cgKGxvY2FsLCB1dGMsIGZpeGVkIG9mZnNldCkuIFNvIGNyZWF0ZVxuICAgICAgICAgICAgLy8gYSBub3cgdmVyc2lvbiBvZiBjdXJyZW50IGNvbmZpZyAodGFrZSBsb2NhbC91dGMvb2Zmc2V0IGZsYWdzLCBhbmRcbiAgICAgICAgICAgIC8vIGNyZWF0ZSBub3cpLlxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyhcbiAgICAgICAgICAgICAgICB3LkdHLFxuICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtZRUFSXSxcbiAgICAgICAgICAgICAgICB3ZWVrT2ZZZWFyKGNyZWF0ZUxvY2FsKCksIDEsIDQpLnllYXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB3ZWVrID0gZGVmYXVsdHMody5XLCAxKTtcbiAgICAgICAgICAgIHdlZWtkYXkgPSBkZWZhdWx0cyh3LkUsIDEpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAxIHx8IHdlZWtkYXkgPiA3KSB7XG4gICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvdyA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRvdztcbiAgICAgICAgICAgIGRveSA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRveTtcblxuICAgICAgICAgICAgY3VyV2VlayA9IHdlZWtPZlllYXIoY3JlYXRlTG9jYWwoKSwgZG93LCBkb3kpO1xuXG4gICAgICAgICAgICB3ZWVrWWVhciA9IGRlZmF1bHRzKHcuZ2csIGNvbmZpZy5fYVtZRUFSXSwgY3VyV2Vlay55ZWFyKTtcblxuICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBjdXJyZW50IHdlZWsuXG4gICAgICAgICAgICB3ZWVrID0gZGVmYXVsdHMody53LCBjdXJXZWVrLndlZWspO1xuXG4gICAgICAgICAgICBpZiAody5kICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyB3ZWVrZGF5IC0tIGxvdyBkYXkgbnVtYmVycyBhcmUgY29uc2lkZXJlZCBuZXh0IHdlZWtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gdy5kO1xuICAgICAgICAgICAgICAgIGlmICh3ZWVrZGF5IDwgMCB8fCB3ZWVrZGF5ID4gNikge1xuICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5T3ZlcmZsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAody5lICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBsb2NhbCB3ZWVrZGF5IC0tIGNvdW50aW5nIHN0YXJ0cyBmcm9tIGJlZ2lubmluZyBvZiB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IHcuZSArIGRvdztcbiAgICAgICAgICAgICAgICBpZiAody5lIDwgMCB8fCB3LmUgPiA2KSB7XG4gICAgICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvIGJlZ2lubmluZyBvZiB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IGRvdztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAod2VlayA8IDEgfHwgd2VlayA+IHdlZWtzSW5ZZWFyKHdlZWtZZWFyLCBkb3csIGRveSkpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd1dlZWtzID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh3ZWVrZGF5T3ZlcmZsb3cgIT0gbnVsbCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93V2Vla2RheSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0ZW1wID0gZGF5T2ZZZWFyRnJvbVdlZWtzKHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSk7XG4gICAgICAgICAgICBjb25maWcuX2FbWUVBUl0gPSB0ZW1wLnllYXI7XG4gICAgICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRlbXAuZGF5T2ZZZWFyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gY29uc3RhbnQgdGhhdCByZWZlcnMgdG8gdGhlIElTTyBzdGFuZGFyZFxuICAgIGhvb2tzLklTT184NjAxID0gZnVuY3Rpb24gKCkge307XG5cbiAgICAvLyBjb25zdGFudCB0aGF0IHJlZmVycyB0byB0aGUgUkZDIDI4MjIgZm9ybVxuICAgIGhvb2tzLlJGQ18yODIyID0gZnVuY3Rpb24gKCkge307XG5cbiAgICAvLyBkYXRlIGZyb20gc3RyaW5nIGFuZCBmb3JtYXQgc3RyaW5nXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpIHtcbiAgICAgICAgLy8gVE9ETzogTW92ZSB0aGlzIHRvIGFub3RoZXIgcGFydCBvZiB0aGUgY3JlYXRpb24gZmxvdyB0byBwcmV2ZW50IGNpcmN1bGFyIGRlcHNcbiAgICAgICAgaWYgKGNvbmZpZy5fZiA9PT0gaG9va3MuSVNPXzg2MDEpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21JU08oY29uZmlnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnLl9mID09PSBob29rcy5SRkNfMjgyMikge1xuICAgICAgICAgICAgY29uZmlnRnJvbVJGQzI4MjIoY29uZmlnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25maWcuX2EgPSBbXTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuZW1wdHkgPSB0cnVlO1xuXG4gICAgICAgIC8vIFRoaXMgYXJyYXkgaXMgdXNlZCB0byBtYWtlIGEgRGF0ZSwgZWl0aGVyIHdpdGggYG5ldyBEYXRlYCBvciBgRGF0ZS5VVENgXG4gICAgICAgIHZhciBzdHJpbmcgPSAnJyArIGNvbmZpZy5faSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBwYXJzZWRJbnB1dCxcbiAgICAgICAgICAgIHRva2VucyxcbiAgICAgICAgICAgIHRva2VuLFxuICAgICAgICAgICAgc2tpcHBlZCxcbiAgICAgICAgICAgIHN0cmluZ0xlbmd0aCA9IHN0cmluZy5sZW5ndGgsXG4gICAgICAgICAgICB0b3RhbFBhcnNlZElucHV0TGVuZ3RoID0gMCxcbiAgICAgICAgICAgIGVyYTtcblxuICAgICAgICB0b2tlbnMgPVxuICAgICAgICAgICAgZXhwYW5kRm9ybWF0KGNvbmZpZy5fZiwgY29uZmlnLl9sb2NhbGUpLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpIHx8IFtdO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5zW2ldO1xuICAgICAgICAgICAgcGFyc2VkSW5wdXQgPSAoc3RyaW5nLm1hdGNoKGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSkgfHxcbiAgICAgICAgICAgICAgICBbXSlbMF07XG4gICAgICAgICAgICBpZiAocGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBza2lwcGVkID0gc3RyaW5nLnN1YnN0cigwLCBzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkpO1xuICAgICAgICAgICAgICAgIGlmIChza2lwcGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkSW5wdXQucHVzaChza2lwcGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnNsaWNlKFxuICAgICAgICAgICAgICAgICAgICBzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkgKyBwYXJzZWRJbnB1dC5sZW5ndGhcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGggKz0gcGFyc2VkSW5wdXQubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZG9uJ3QgcGFyc2UgaWYgaXQncyBub3QgYSBrbm93biB0b2tlblxuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW3Rva2VuXSkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJzZWRJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZFRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4odG9rZW4sIHBhcnNlZElucHV0LCBjb25maWcpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb25maWcuX3N0cmljdCAmJiAhcGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhZGQgcmVtYWluaW5nIHVucGFyc2VkIGlucHV0IGxlbmd0aCB0byB0aGUgc3RyaW5nXG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmNoYXJzTGVmdE92ZXIgPVxuICAgICAgICAgICAgc3RyaW5nTGVuZ3RoIC0gdG90YWxQYXJzZWRJbnB1dExlbmd0aDtcbiAgICAgICAgaWYgKHN0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRJbnB1dC5wdXNoKHN0cmluZyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjbGVhciBfMTJoIGZsYWcgaWYgaG91ciBpcyA8PSAxMlxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPD0gMTIgJiZcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPT09IHRydWUgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykucGFyc2VkRGF0ZVBhcnRzID0gY29uZmlnLl9hLnNsaWNlKDApO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5tZXJpZGllbSA9IGNvbmZpZy5fbWVyaWRpZW07XG4gICAgICAgIC8vIGhhbmRsZSBtZXJpZGllbVxuICAgICAgICBjb25maWcuX2FbSE9VUl0gPSBtZXJpZGllbUZpeFdyYXAoXG4gICAgICAgICAgICBjb25maWcuX2xvY2FsZSxcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSxcbiAgICAgICAgICAgIGNvbmZpZy5fbWVyaWRpZW1cbiAgICAgICAgKTtcblxuICAgICAgICAvLyBoYW5kbGUgZXJhXG4gICAgICAgIGVyYSA9IGdldFBhcnNpbmdGbGFncyhjb25maWcpLmVyYTtcbiAgICAgICAgaWYgKGVyYSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9hW1lFQVJdID0gY29uZmlnLl9sb2NhbGUuZXJhc0NvbnZlcnRZZWFyKGVyYSwgY29uZmlnLl9hW1lFQVJdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgICAgICBjaGVja092ZXJmbG93KGNvbmZpZyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyaWRpZW1GaXhXcmFwKGxvY2FsZSwgaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgdmFyIGlzUG07XG5cbiAgICAgICAgaWYgKG1lcmlkaWVtID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbGUubWVyaWRpZW1Ib3VyICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbGUubWVyaWRpZW1Ib3VyKGhvdXIsIG1lcmlkaWVtKTtcbiAgICAgICAgfSBlbHNlIGlmIChsb2NhbGUuaXNQTSAhPSBudWxsKSB7XG4gICAgICAgICAgICAvLyBGYWxsYmFja1xuICAgICAgICAgICAgaXNQbSA9IGxvY2FsZS5pc1BNKG1lcmlkaWVtKTtcbiAgICAgICAgICAgIGlmIChpc1BtICYmIGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzUG0gJiYgaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyBub3Qgc3VwcG9zZWQgdG8gaGFwcGVuXG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGFycmF5IG9mIGZvcm1hdCBzdHJpbmdzXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVN0cmluZ0FuZEFycmF5KGNvbmZpZykge1xuICAgICAgICB2YXIgdGVtcENvbmZpZyxcbiAgICAgICAgICAgIGJlc3RNb21lbnQsXG4gICAgICAgICAgICBzY29yZVRvQmVhdCxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBjdXJyZW50U2NvcmUsXG4gICAgICAgICAgICB2YWxpZEZvcm1hdEZvdW5kLFxuICAgICAgICAgICAgYmVzdEZvcm1hdElzVmFsaWQgPSBmYWxzZTtcblxuICAgICAgICBpZiAoY29uZmlnLl9mLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZEZvcm1hdCA9IHRydWU7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShOYU4pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbmZpZy5fZi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY3VycmVudFNjb3JlID0gMDtcbiAgICAgICAgICAgIHZhbGlkRm9ybWF0Rm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRlbXBDb25maWcgPSBjb3B5Q29uZmlnKHt9LCBjb25maWcpO1xuICAgICAgICAgICAgaWYgKGNvbmZpZy5fdXNlVVRDICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0ZW1wQ29uZmlnLl91c2VVVEMgPSBjb25maWcuX3VzZVVUQztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRlbXBDb25maWcuX2YgPSBjb25maWcuX2ZbaV07XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KHRlbXBDb25maWcpO1xuXG4gICAgICAgICAgICBpZiAoaXNWYWxpZCh0ZW1wQ29uZmlnKSkge1xuICAgICAgICAgICAgICAgIHZhbGlkRm9ybWF0Rm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhbnkgaW5wdXQgdGhhdCB3YXMgbm90IHBhcnNlZCBhZGQgYSBwZW5hbHR5IGZvciB0aGF0IGZvcm1hdFxuICAgICAgICAgICAgY3VycmVudFNjb3JlICs9IGdldFBhcnNpbmdGbGFncyh0ZW1wQ29uZmlnKS5jaGFyc0xlZnRPdmVyO1xuXG4gICAgICAgICAgICAvL29yIHRva2Vuc1xuICAgICAgICAgICAgY3VycmVudFNjb3JlICs9IGdldFBhcnNpbmdGbGFncyh0ZW1wQ29uZmlnKS51bnVzZWRUb2tlbnMubGVuZ3RoICogMTA7XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyh0ZW1wQ29uZmlnKS5zY29yZSA9IGN1cnJlbnRTY29yZTtcblxuICAgICAgICAgICAgaWYgKCFiZXN0Rm9ybWF0SXNWYWxpZCkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgc2NvcmVUb0JlYXQgPT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2NvcmUgPCBzY29yZVRvQmVhdCB8fFxuICAgICAgICAgICAgICAgICAgICB2YWxpZEZvcm1hdEZvdW5kXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3JlVG9CZWF0ID0gY3VycmVudFNjb3JlO1xuICAgICAgICAgICAgICAgICAgICBiZXN0TW9tZW50ID0gdGVtcENvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkRm9ybWF0Rm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RGb3JtYXRJc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTY29yZSA8IHNjb3JlVG9CZWF0KSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3JlVG9CZWF0ID0gY3VycmVudFNjb3JlO1xuICAgICAgICAgICAgICAgICAgICBiZXN0TW9tZW50ID0gdGVtcENvbmZpZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHRlbmQoY29uZmlnLCBiZXN0TW9tZW50IHx8IHRlbXBDb25maWcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21PYmplY3QoY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcuX2QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpID0gbm9ybWFsaXplT2JqZWN0VW5pdHMoY29uZmlnLl9pKSxcbiAgICAgICAgICAgIGRheU9yRGF0ZSA9IGkuZGF5ID09PSB1bmRlZmluZWQgPyBpLmRhdGUgOiBpLmRheTtcbiAgICAgICAgY29uZmlnLl9hID0gbWFwKFxuICAgICAgICAgICAgW2kueWVhciwgaS5tb250aCwgZGF5T3JEYXRlLCBpLmhvdXIsIGkubWludXRlLCBpLnNlY29uZCwgaS5taWxsaXNlY29uZF0sXG4gICAgICAgICAgICBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9iaiAmJiBwYXJzZUludChvYmosIDEwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVGcm9tQ29uZmlnKGNvbmZpZykge1xuICAgICAgICB2YXIgcmVzID0gbmV3IE1vbWVudChjaGVja092ZXJmbG93KHByZXBhcmVDb25maWcoY29uZmlnKSkpO1xuICAgICAgICBpZiAocmVzLl9uZXh0RGF5KSB7XG4gICAgICAgICAgICAvLyBBZGRpbmcgaXMgc21hcnQgZW5vdWdoIGFyb3VuZCBEU1RcbiAgICAgICAgICAgIHJlcy5hZGQoMSwgJ2QnKTtcbiAgICAgICAgICAgIHJlcy5fbmV4dERheSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJlcGFyZUNvbmZpZyhjb25maWcpIHtcbiAgICAgICAgdmFyIGlucHV0ID0gY29uZmlnLl9pLFxuICAgICAgICAgICAgZm9ybWF0ID0gY29uZmlnLl9mO1xuXG4gICAgICAgIGNvbmZpZy5fbG9jYWxlID0gY29uZmlnLl9sb2NhbGUgfHwgZ2V0TG9jYWxlKGNvbmZpZy5fbCk7XG5cbiAgICAgICAgaWYgKGlucHV0ID09PSBudWxsIHx8IChmb3JtYXQgPT09IHVuZGVmaW5lZCAmJiBpbnB1dCA9PT0gJycpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCh7IG51bGxJbnB1dDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25maWcuX2kgPSBpbnB1dCA9IGNvbmZpZy5fbG9jYWxlLnByZXBhcnNlKGlucHV0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc01vbWVudChpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTW9tZW50KGNoZWNrT3ZlcmZsb3coaW5wdXQpKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0RhdGUoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBpbnB1dDtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheShjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCkge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnRnJvbUlucHV0KGNvbmZpZyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzVmFsaWQoY29uZmlnKSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbUlucHV0KGNvbmZpZykge1xuICAgICAgICB2YXIgaW5wdXQgPSBjb25maWcuX2k7XG4gICAgICAgIGlmIChpc1VuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGhvb2tzLm5vdygpKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0RhdGUoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShpbnB1dC52YWx1ZU9mKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmcoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9hID0gbWFwKGlucHV0LnNsaWNlKDApLCBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KG9iaiwgMTApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc09iamVjdChpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21PYmplY3QoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc051bWJlcihpbnB1dCkpIHtcbiAgICAgICAgICAgIC8vIGZyb20gbWlsbGlzZWNvbmRzXG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShpbnB1dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBob29rcy5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayhjb25maWcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlTG9jYWxPclVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgaXNVVEMpIHtcbiAgICAgICAgdmFyIGMgPSB7fTtcblxuICAgICAgICBpZiAoZm9ybWF0ID09PSB0cnVlIHx8IGZvcm1hdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHN0cmljdCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2NhbGUgPT09IHRydWUgfHwgbG9jYWxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgc3RyaWN0ID0gbG9jYWxlO1xuICAgICAgICAgICAgbG9jYWxlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGlzT2JqZWN0KGlucHV0KSAmJiBpc09iamVjdEVtcHR5KGlucHV0KSkgfHxcbiAgICAgICAgICAgIChpc0FycmF5KGlucHV0KSAmJiBpbnB1dC5sZW5ndGggPT09IDApXG4gICAgICAgICkge1xuICAgICAgICAgICAgaW5wdXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gb2JqZWN0IGNvbnN0cnVjdGlvbiBtdXN0IGJlIGRvbmUgdGhpcyB3YXkuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8xNDIzXG4gICAgICAgIGMuX2lzQU1vbWVudE9iamVjdCA9IHRydWU7XG4gICAgICAgIGMuX3VzZVVUQyA9IGMuX2lzVVRDID0gaXNVVEM7XG4gICAgICAgIGMuX2wgPSBsb2NhbGU7XG4gICAgICAgIGMuX2kgPSBpbnB1dDtcbiAgICAgICAgYy5fZiA9IGZvcm1hdDtcbiAgICAgICAgYy5fc3RyaWN0ID0gc3RyaWN0O1xuXG4gICAgICAgIHJldHVybiBjcmVhdGVGcm9tQ29uZmlnKGMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUxvY2FsKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvdHlwZU1pbiA9IGRlcHJlY2F0ZShcbiAgICAgICAgICAgICdtb21lbnQoKS5taW4gaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5tYXggaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LycsXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciA8IHRoaXMgPyB0aGlzIDogb3RoZXI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUludmFsaWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIHByb3RvdHlwZU1heCA9IGRlcHJlY2F0ZShcbiAgICAgICAgICAgICdtb21lbnQoKS5tYXggaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LycsXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciA+IHRoaXMgPyB0aGlzIDogb3RoZXI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUludmFsaWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAvLyBQaWNrIGEgbW9tZW50IG0gZnJvbSBtb21lbnRzIHNvIHRoYXQgbVtmbl0ob3RoZXIpIGlzIHRydWUgZm9yIGFsbFxuICAgIC8vIG90aGVyLiBUaGlzIHJlbGllcyBvbiB0aGUgZnVuY3Rpb24gZm4gdG8gYmUgdHJhbnNpdGl2ZS5cbiAgICAvL1xuICAgIC8vIG1vbWVudHMgc2hvdWxkIGVpdGhlciBiZSBhbiBhcnJheSBvZiBtb21lbnQgb2JqZWN0cyBvciBhbiBhcnJheSwgd2hvc2VcbiAgICAvLyBmaXJzdCBlbGVtZW50IGlzIGFuIGFycmF5IG9mIG1vbWVudCBvYmplY3RzLlxuICAgIGZ1bmN0aW9uIHBpY2tCeShmbiwgbW9tZW50cykge1xuICAgICAgICB2YXIgcmVzLCBpO1xuICAgICAgICBpZiAobW9tZW50cy5sZW5ndGggPT09IDEgJiYgaXNBcnJheShtb21lbnRzWzBdKSkge1xuICAgICAgICAgICAgbW9tZW50cyA9IG1vbWVudHNbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtb21lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzID0gbW9tZW50c1swXTtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IG1vbWVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmICghbW9tZW50c1tpXS5pc1ZhbGlkKCkgfHwgbW9tZW50c1tpXVtmbl0ocmVzKSkge1xuICAgICAgICAgICAgICAgIHJlcyA9IG1vbWVudHNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgW10uc29ydCBpbnN0ZWFkP1xuICAgIGZ1bmN0aW9uIG1pbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgICAgICAgcmV0dXJuIHBpY2tCeSgnaXNCZWZvcmUnLCBhcmdzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXgoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuXG4gICAgICAgIHJldHVybiBwaWNrQnkoJ2lzQWZ0ZXInLCBhcmdzKTtcbiAgICB9XG5cbiAgICB2YXIgbm93ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gRGF0ZS5ub3cgPyBEYXRlLm5vdygpIDogK25ldyBEYXRlKCk7XG4gICAgfTtcblxuICAgIHZhciBvcmRlcmluZyA9IFtcbiAgICAgICAgJ3llYXInLFxuICAgICAgICAncXVhcnRlcicsXG4gICAgICAgICdtb250aCcsXG4gICAgICAgICd3ZWVrJyxcbiAgICAgICAgJ2RheScsXG4gICAgICAgICdob3VyJyxcbiAgICAgICAgJ21pbnV0ZScsXG4gICAgICAgICdzZWNvbmQnLFxuICAgICAgICAnbWlsbGlzZWNvbmQnLFxuICAgIF07XG5cbiAgICBmdW5jdGlvbiBpc0R1cmF0aW9uVmFsaWQobSkge1xuICAgICAgICB2YXIga2V5LFxuICAgICAgICAgICAgdW5pdEhhc0RlY2ltYWwgPSBmYWxzZSxcbiAgICAgICAgICAgIGk7XG4gICAgICAgIGZvciAoa2V5IGluIG0pIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBoYXNPd25Qcm9wKG0sIGtleSkgJiZcbiAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICBpbmRleE9mLmNhbGwob3JkZXJpbmcsIGtleSkgIT09IC0xICYmXG4gICAgICAgICAgICAgICAgICAgIChtW2tleV0gPT0gbnVsbCB8fCAhaXNOYU4obVtrZXldKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb3JkZXJpbmcubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChtW29yZGVyaW5nW2ldXSkge1xuICAgICAgICAgICAgICAgIGlmICh1bml0SGFzRGVjaW1hbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG9ubHkgYWxsb3cgbm9uLWludGVnZXJzIGZvciBzbWFsbGVzdCB1bml0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwYXJzZUZsb2F0KG1bb3JkZXJpbmdbaV1dKSAhPT0gdG9JbnQobVtvcmRlcmluZ1tpXV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaXRIYXNEZWNpbWFsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1ZhbGlkJDEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUludmFsaWQkMSgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKE5hTik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gRHVyYXRpb24oZHVyYXRpb24pIHtcbiAgICAgICAgdmFyIG5vcm1hbGl6ZWRJbnB1dCA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGR1cmF0aW9uKSxcbiAgICAgICAgICAgIHllYXJzID0gbm9ybWFsaXplZElucHV0LnllYXIgfHwgMCxcbiAgICAgICAgICAgIHF1YXJ0ZXJzID0gbm9ybWFsaXplZElucHV0LnF1YXJ0ZXIgfHwgMCxcbiAgICAgICAgICAgIG1vbnRocyA9IG5vcm1hbGl6ZWRJbnB1dC5tb250aCB8fCAwLFxuICAgICAgICAgICAgd2Vla3MgPSBub3JtYWxpemVkSW5wdXQud2VlayB8fCBub3JtYWxpemVkSW5wdXQuaXNvV2VlayB8fCAwLFxuICAgICAgICAgICAgZGF5cyA9IG5vcm1hbGl6ZWRJbnB1dC5kYXkgfHwgMCxcbiAgICAgICAgICAgIGhvdXJzID0gbm9ybWFsaXplZElucHV0LmhvdXIgfHwgMCxcbiAgICAgICAgICAgIG1pbnV0ZXMgPSBub3JtYWxpemVkSW5wdXQubWludXRlIHx8IDAsXG4gICAgICAgICAgICBzZWNvbmRzID0gbm9ybWFsaXplZElucHV0LnNlY29uZCB8fCAwLFxuICAgICAgICAgICAgbWlsbGlzZWNvbmRzID0gbm9ybWFsaXplZElucHV0Lm1pbGxpc2Vjb25kIHx8IDA7XG5cbiAgICAgICAgdGhpcy5faXNWYWxpZCA9IGlzRHVyYXRpb25WYWxpZChub3JtYWxpemVkSW5wdXQpO1xuXG4gICAgICAgIC8vIHJlcHJlc2VudGF0aW9uIGZvciBkYXRlQWRkUmVtb3ZlXG4gICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyA9XG4gICAgICAgICAgICArbWlsbGlzZWNvbmRzICtcbiAgICAgICAgICAgIHNlY29uZHMgKiAxZTMgKyAvLyAxMDAwXG4gICAgICAgICAgICBtaW51dGVzICogNmU0ICsgLy8gMTAwMCAqIDYwXG4gICAgICAgICAgICBob3VycyAqIDEwMDAgKiA2MCAqIDYwOyAvL3VzaW5nIDEwMDAgKiA2MCAqIDYwIGluc3RlYWQgb2YgMzZlNSB0byBhdm9pZCBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvcnMgaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzI5NzhcbiAgICAgICAgLy8gQmVjYXVzZSBvZiBkYXRlQWRkUmVtb3ZlIHRyZWF0cyAyNCBob3VycyBhcyBkaWZmZXJlbnQgZnJvbSBhXG4gICAgICAgIC8vIGRheSB3aGVuIHdvcmtpbmcgYXJvdW5kIERTVCwgd2UgbmVlZCB0byBzdG9yZSB0aGVtIHNlcGFyYXRlbHlcbiAgICAgICAgdGhpcy5fZGF5cyA9ICtkYXlzICsgd2Vla3MgKiA3O1xuICAgICAgICAvLyBJdCBpcyBpbXBvc3NpYmxlIHRvIHRyYW5zbGF0ZSBtb250aHMgaW50byBkYXlzIHdpdGhvdXQga25vd2luZ1xuICAgICAgICAvLyB3aGljaCBtb250aHMgeW91IGFyZSBhcmUgdGFsa2luZyBhYm91dCwgc28gd2UgaGF2ZSB0byBzdG9yZVxuICAgICAgICAvLyBpdCBzZXBhcmF0ZWx5LlxuICAgICAgICB0aGlzLl9tb250aHMgPSArbW9udGhzICsgcXVhcnRlcnMgKiAzICsgeWVhcnMgKiAxMjtcblxuICAgICAgICB0aGlzLl9kYXRhID0ge307XG5cbiAgICAgICAgdGhpcy5fbG9jYWxlID0gZ2V0TG9jYWxlKCk7XG5cbiAgICAgICAgdGhpcy5fYnViYmxlKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEdXJhdGlvbihvYmopIHtcbiAgICAgICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIER1cmF0aW9uO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic1JvdW5kKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoLTEgKiBudW1iZXIpICogLTE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gY29tcGFyZSB0d28gYXJyYXlzLCByZXR1cm4gdGhlIG51bWJlciBvZiBkaWZmZXJlbmNlc1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVBcnJheXMoYXJyYXkxLCBhcnJheTIsIGRvbnRDb252ZXJ0KSB7XG4gICAgICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcnJheTEubGVuZ3RoLCBhcnJheTIubGVuZ3RoKSxcbiAgICAgICAgICAgIGxlbmd0aERpZmYgPSBNYXRoLmFicyhhcnJheTEubGVuZ3RoIC0gYXJyYXkyLmxlbmd0aCksXG4gICAgICAgICAgICBkaWZmcyA9IDAsXG4gICAgICAgICAgICBpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAoZG9udENvbnZlcnQgJiYgYXJyYXkxW2ldICE9PSBhcnJheTJbaV0pIHx8XG4gICAgICAgICAgICAgICAgKCFkb250Q29udmVydCAmJiB0b0ludChhcnJheTFbaV0pICE9PSB0b0ludChhcnJheTJbaV0pKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZGlmZnMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlmZnMgKyBsZW5ndGhEaWZmO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGZ1bmN0aW9uIG9mZnNldCh0b2tlbiwgc2VwYXJhdG9yKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKHRva2VuLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy51dGNPZmZzZXQoKSxcbiAgICAgICAgICAgICAgICBzaWduID0gJysnO1xuICAgICAgICAgICAgaWYgKG9mZnNldCA8IDApIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtb2Zmc2V0O1xuICAgICAgICAgICAgICAgIHNpZ24gPSAnLSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHNpZ24gK1xuICAgICAgICAgICAgICAgIHplcm9GaWxsKH5+KG9mZnNldCAvIDYwKSwgMikgK1xuICAgICAgICAgICAgICAgIHNlcGFyYXRvciArXG4gICAgICAgICAgICAgICAgemVyb0ZpbGwofn5vZmZzZXQgJSA2MCwgMilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9mZnNldCgnWicsICc6Jyk7XG4gICAgb2Zmc2V0KCdaWicsICcnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1onLCBtYXRjaFNob3J0T2Zmc2V0KTtcbiAgICBhZGRSZWdleFRva2VuKCdaWicsIG1hdGNoU2hvcnRPZmZzZXQpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydaJywgJ1paJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX3VzZVVUQyA9IHRydWU7XG4gICAgICAgIGNvbmZpZy5fdHptID0gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaFNob3J0T2Zmc2V0LCBpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICAvLyB0aW1lem9uZSBjaHVua2VyXG4gICAgLy8gJysxMDowMCcgPiBbJzEwJywgICcwMCddXG4gICAgLy8gJy0xNTMwJyAgPiBbJy0xNScsICczMCddXG4gICAgdmFyIGNodW5rT2Zmc2V0ID0gLyhbXFwrXFwtXXxcXGRcXGQpL2dpO1xuXG4gICAgZnVuY3Rpb24gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaGVyLCBzdHJpbmcpIHtcbiAgICAgICAgdmFyIG1hdGNoZXMgPSAoc3RyaW5nIHx8ICcnKS5tYXRjaChtYXRjaGVyKSxcbiAgICAgICAgICAgIGNodW5rLFxuICAgICAgICAgICAgcGFydHMsXG4gICAgICAgICAgICBtaW51dGVzO1xuXG4gICAgICAgIGlmIChtYXRjaGVzID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNodW5rID0gbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdIHx8IFtdO1xuICAgICAgICBwYXJ0cyA9IChjaHVuayArICcnKS5tYXRjaChjaHVua09mZnNldCkgfHwgWyctJywgMCwgMF07XG4gICAgICAgIG1pbnV0ZXMgPSArKHBhcnRzWzFdICogNjApICsgdG9JbnQocGFydHNbMl0pO1xuXG4gICAgICAgIHJldHVybiBtaW51dGVzID09PSAwID8gMCA6IHBhcnRzWzBdID09PSAnKycgPyBtaW51dGVzIDogLW1pbnV0ZXM7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGEgbW9tZW50IGZyb20gaW5wdXQsIHRoYXQgaXMgbG9jYWwvdXRjL3pvbmUgZXF1aXZhbGVudCB0byBtb2RlbC5cbiAgICBmdW5jdGlvbiBjbG9uZVdpdGhPZmZzZXQoaW5wdXQsIG1vZGVsKSB7XG4gICAgICAgIHZhciByZXMsIGRpZmY7XG4gICAgICAgIGlmIChtb2RlbC5faXNVVEMpIHtcbiAgICAgICAgICAgIHJlcyA9IG1vZGVsLmNsb25lKCk7XG4gICAgICAgICAgICBkaWZmID1cbiAgICAgICAgICAgICAgICAoaXNNb21lbnQoaW5wdXQpIHx8IGlzRGF0ZShpbnB1dClcbiAgICAgICAgICAgICAgICAgICAgPyBpbnB1dC52YWx1ZU9mKClcbiAgICAgICAgICAgICAgICAgICAgOiBjcmVhdGVMb2NhbChpbnB1dCkudmFsdWVPZigpKSAtIHJlcy52YWx1ZU9mKCk7XG4gICAgICAgICAgICAvLyBVc2UgbG93LWxldmVsIGFwaSwgYmVjYXVzZSB0aGlzIGZuIGlzIGxvdy1sZXZlbCBhcGkuXG4gICAgICAgICAgICByZXMuX2Quc2V0VGltZShyZXMuX2QudmFsdWVPZigpICsgZGlmZik7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQocmVzLCBmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsKGlucHV0KS5sb2NhbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RGF0ZU9mZnNldChtKSB7XG4gICAgICAgIC8vIE9uIEZpcmVmb3guMjQgRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIGEgZmxvYXRpbmcgcG9pbnQuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L3B1bGwvMTg3MVxuICAgICAgICByZXR1cm4gLU1hdGgucm91bmQobS5fZC5nZXRUaW1lem9uZU9mZnNldCgpKTtcbiAgICB9XG5cbiAgICAvLyBIT09LU1xuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBhIG1vbWVudCBpcyBtdXRhdGVkLlxuICAgIC8vIEl0IGlzIGludGVuZGVkIHRvIGtlZXAgdGhlIG9mZnNldCBpbiBzeW5jIHdpdGggdGhlIHRpbWV6b25lLlxuICAgIGhvb2tzLnVwZGF0ZU9mZnNldCA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgLy8ga2VlcExvY2FsVGltZSA9IHRydWUgbWVhbnMgb25seSBjaGFuZ2UgdGhlIHRpbWV6b25lLCB3aXRob3V0XG4gICAgLy8gYWZmZWN0aW5nIHRoZSBsb2NhbCBob3VyLiBTbyA1OjMxOjI2ICswMzAwIC0tW3V0Y09mZnNldCgyLCB0cnVlKV0tLT5cbiAgICAvLyA1OjMxOjI2ICswMjAwIEl0IGlzIHBvc3NpYmxlIHRoYXQgNTozMToyNiBkb2Vzbid0IGV4aXN0IHdpdGggb2Zmc2V0XG4gICAgLy8gKzAyMDAsIHNvIHdlIGFkanVzdCB0aGUgdGltZSBhcyBuZWVkZWQsIHRvIGJlIHZhbGlkLlxuICAgIC8vXG4gICAgLy8gS2VlcGluZyB0aGUgdGltZSBhY3R1YWxseSBhZGRzL3N1YnRyYWN0cyAob25lIGhvdXIpXG4gICAgLy8gZnJvbSB0aGUgYWN0dWFsIHJlcHJlc2VudGVkIHRpbWUuIFRoYXQgaXMgd2h5IHdlIGNhbGwgdXBkYXRlT2Zmc2V0XG4gICAgLy8gYSBzZWNvbmQgdGltZS4gSW4gY2FzZSBpdCB3YW50cyB1cyB0byBjaGFuZ2UgdGhlIG9mZnNldCBhZ2FpblxuICAgIC8vIF9jaGFuZ2VJblByb2dyZXNzID09IHRydWUgY2FzZSwgdGhlbiB3ZSBoYXZlIHRvIGFkanVzdCwgYmVjYXVzZVxuICAgIC8vIHRoZXJlIGlzIG5vIHN1Y2ggdGltZSBpbiB0aGUgZ2l2ZW4gdGltZXpvbmUuXG4gICAgZnVuY3Rpb24gZ2V0U2V0T2Zmc2V0KGlucHV0LCBrZWVwTG9jYWxUaW1lLCBrZWVwTWludXRlcykge1xuICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5fb2Zmc2V0IHx8IDAsXG4gICAgICAgICAgICBsb2NhbEFkanVzdDtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlucHV0ID0gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaFNob3J0T2Zmc2V0LCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoaW5wdXQpIDwgMTYgJiYgIWtlZXBNaW51dGVzKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQgPSBpbnB1dCAqIDYwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1VUQyAmJiBrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxBZGp1c3QgPSBnZXREYXRlT2Zmc2V0KHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fb2Zmc2V0ID0gaW5wdXQ7XG4gICAgICAgICAgICB0aGlzLl9pc1VUQyA9IHRydWU7XG4gICAgICAgICAgICBpZiAobG9jYWxBZGp1c3QgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkKGxvY2FsQWRqdXN0LCAnbScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9mZnNldCAhPT0gaW5wdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWtlZXBMb2NhbFRpbWUgfHwgdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICBhZGRTdWJ0cmFjdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVEdXJhdGlvbihpbnB1dCAtIG9mZnNldCwgJ20nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcyA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyBvZmZzZXQgOiBnZXREYXRlT2Zmc2V0KHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0Wm9uZShpbnB1dCwga2VlcExvY2FsVGltZSkge1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IC1pbnB1dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoaW5wdXQsIGtlZXBMb2NhbFRpbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAtdGhpcy51dGNPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvVVRDKGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsIGtlZXBMb2NhbFRpbWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvTG9jYWwoa2VlcExvY2FsVGltZSkge1xuICAgICAgICBpZiAodGhpcy5faXNVVEMpIHtcbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KDAsIGtlZXBMb2NhbFRpbWUpO1xuICAgICAgICAgICAgdGhpcy5faXNVVEMgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnRyYWN0KGdldERhdGVPZmZzZXQodGhpcyksICdtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0T2Zmc2V0VG9QYXJzZWRPZmZzZXQoKSB7XG4gICAgICAgIGlmICh0aGlzLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuX2kgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YXIgdFpvbmUgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoT2Zmc2V0LCB0aGlzLl9pKTtcbiAgICAgICAgICAgIGlmICh0Wm9uZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodFpvbmUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgwLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNBbGlnbmVkSG91ck9mZnNldChpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXQgPSBpbnB1dCA/IGNyZWF0ZUxvY2FsKGlucHV0KS51dGNPZmZzZXQoKSA6IDA7XG5cbiAgICAgICAgcmV0dXJuICh0aGlzLnV0Y09mZnNldCgpIC0gaW5wdXQpICUgNjAgPT09IDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXlsaWdodFNhdmluZ1RpbWUoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDApLnV0Y09mZnNldCgpIHx8XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09mZnNldCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkKCkge1xuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHRoaXMuX2lzRFNUU2hpZnRlZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYyA9IHt9LFxuICAgICAgICAgICAgb3RoZXI7XG5cbiAgICAgICAgY29weUNvbmZpZyhjLCB0aGlzKTtcbiAgICAgICAgYyA9IHByZXBhcmVDb25maWcoYyk7XG5cbiAgICAgICAgaWYgKGMuX2EpIHtcbiAgICAgICAgICAgIG90aGVyID0gYy5faXNVVEMgPyBjcmVhdGVVVEMoYy5fYSkgOiBjcmVhdGVMb2NhbChjLl9hKTtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9XG4gICAgICAgICAgICAgICAgdGhpcy5pc1ZhbGlkKCkgJiYgY29tcGFyZUFycmF5cyhjLl9hLCBvdGhlci50b0FycmF5KCkpID4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xvY2FsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyAhdGhpcy5faXNVVEMgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1V0Y09mZnNldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5faXNVVEMgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1V0YygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5faXNVVEMgJiYgdGhpcy5fb2Zmc2V0ID09PSAwIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQVNQLk5FVCBqc29uIGRhdGUgZm9ybWF0IHJlZ2V4XG4gICAgdmFyIGFzcE5ldFJlZ2V4ID0gL14oLXxcXCspPyg/OihcXGQqKVsuIF0pPyhcXGQrKTooXFxkKykoPzo6KFxcZCspKFxcLlxcZCopPyk/JC8sXG4gICAgICAgIC8vIGZyb20gaHR0cDovL2RvY3MuY2xvc3VyZS1saWJyYXJ5Lmdvb2dsZWNvZGUuY29tL2dpdC9jbG9zdXJlX2dvb2dfZGF0ZV9kYXRlLmpzLnNvdXJjZS5odG1sXG4gICAgICAgIC8vIHNvbWV3aGF0IG1vcmUgaW4gbGluZSB3aXRoIDQuNC4zLjIgMjAwNCBzcGVjLCBidXQgYWxsb3dzIGRlY2ltYWwgYW55d2hlcmVcbiAgICAgICAgLy8gYW5kIGZ1cnRoZXIgbW9kaWZpZWQgdG8gYWxsb3cgZm9yIHN0cmluZ3MgY29udGFpbmluZyBib3RoIHdlZWsgYW5kIGRheVxuICAgICAgICBpc29SZWdleCA9IC9eKC18XFwrKT9QKD86KFstK10/WzAtOSwuXSopWSk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopVyk/KD86KFstK10/WzAtOSwuXSopRCk/KD86VCg/OihbLStdP1swLTksLl0qKUgpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVMpPyk/JC87XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVEdXJhdGlvbihpbnB1dCwga2V5KSB7XG4gICAgICAgIHZhciBkdXJhdGlvbiA9IGlucHV0LFxuICAgICAgICAgICAgLy8gbWF0Y2hpbmcgYWdhaW5zdCByZWdleHAgaXMgZXhwZW5zaXZlLCBkbyBpdCBvbiBkZW1hbmRcbiAgICAgICAgICAgIG1hdGNoID0gbnVsbCxcbiAgICAgICAgICAgIHNpZ24sXG4gICAgICAgICAgICByZXQsXG4gICAgICAgICAgICBkaWZmUmVzO1xuXG4gICAgICAgIGlmIChpc0R1cmF0aW9uKGlucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgbXM6IGlucHV0Ll9taWxsaXNlY29uZHMsXG4gICAgICAgICAgICAgICAgZDogaW5wdXQuX2RheXMsXG4gICAgICAgICAgICAgICAgTTogaW5wdXQuX21vbnRocyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIoaW5wdXQpIHx8ICFpc05hTigraW5wdXQpKSB7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHt9O1xuICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uW2tleV0gPSAraW5wdXQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uLm1pbGxpc2Vjb25kcyA9ICtpbnB1dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICgobWF0Y2ggPSBhc3BOZXRSZWdleC5leGVjKGlucHV0KSkpIHtcbiAgICAgICAgICAgIHNpZ24gPSBtYXRjaFsxXSA9PT0gJy0nID8gLTEgOiAxO1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgICBkOiB0b0ludChtYXRjaFtEQVRFXSkgKiBzaWduLFxuICAgICAgICAgICAgICAgIGg6IHRvSW50KG1hdGNoW0hPVVJdKSAqIHNpZ24sXG4gICAgICAgICAgICAgICAgbTogdG9JbnQobWF0Y2hbTUlOVVRFXSkgKiBzaWduLFxuICAgICAgICAgICAgICAgIHM6IHRvSW50KG1hdGNoW1NFQ09ORF0pICogc2lnbixcbiAgICAgICAgICAgICAgICBtczogdG9JbnQoYWJzUm91bmQobWF0Y2hbTUlMTElTRUNPTkRdICogMTAwMCkpICogc2lnbiwgLy8gdGhlIG1pbGxpc2Vjb25kIGRlY2ltYWwgcG9pbnQgaXMgaW5jbHVkZWQgaW4gdGhlIG1hdGNoXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKChtYXRjaCA9IGlzb1JlZ2V4LmV4ZWMoaW5wdXQpKSkge1xuICAgICAgICAgICAgc2lnbiA9IG1hdGNoWzFdID09PSAnLScgPyAtMSA6IDE7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICB5OiBwYXJzZUlzbyhtYXRjaFsyXSwgc2lnbiksXG4gICAgICAgICAgICAgICAgTTogcGFyc2VJc28obWF0Y2hbM10sIHNpZ24pLFxuICAgICAgICAgICAgICAgIHc6IHBhcnNlSXNvKG1hdGNoWzRdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBkOiBwYXJzZUlzbyhtYXRjaFs1XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgaDogcGFyc2VJc28obWF0Y2hbNl0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIG06IHBhcnNlSXNvKG1hdGNoWzddLCBzaWduKSxcbiAgICAgICAgICAgICAgICBzOiBwYXJzZUlzbyhtYXRjaFs4XSwgc2lnbiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGR1cmF0aW9uID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge307XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0eXBlb2YgZHVyYXRpb24gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAoJ2Zyb20nIGluIGR1cmF0aW9uIHx8ICd0bycgaW4gZHVyYXRpb24pXG4gICAgICAgICkge1xuICAgICAgICAgICAgZGlmZlJlcyA9IG1vbWVudHNEaWZmZXJlbmNlKFxuICAgICAgICAgICAgICAgIGNyZWF0ZUxvY2FsKGR1cmF0aW9uLmZyb20pLFxuICAgICAgICAgICAgICAgIGNyZWF0ZUxvY2FsKGR1cmF0aW9uLnRvKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgICAgIGR1cmF0aW9uLm1zID0gZGlmZlJlcy5taWxsaXNlY29uZHM7XG4gICAgICAgICAgICBkdXJhdGlvbi5NID0gZGlmZlJlcy5tb250aHM7XG4gICAgICAgIH1cblxuICAgICAgICByZXQgPSBuZXcgRHVyYXRpb24oZHVyYXRpb24pO1xuXG4gICAgICAgIGlmIChpc0R1cmF0aW9uKGlucHV0KSAmJiBoYXNPd25Qcm9wKGlucHV0LCAnX2xvY2FsZScpKSB7XG4gICAgICAgICAgICByZXQuX2xvY2FsZSA9IGlucHV0Ll9sb2NhbGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEdXJhdGlvbihpbnB1dCkgJiYgaGFzT3duUHJvcChpbnB1dCwgJ19pc1ZhbGlkJykpIHtcbiAgICAgICAgICAgIHJldC5faXNWYWxpZCA9IGlucHV0Ll9pc1ZhbGlkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICBjcmVhdGVEdXJhdGlvbi5mbiA9IER1cmF0aW9uLnByb3RvdHlwZTtcbiAgICBjcmVhdGVEdXJhdGlvbi5pbnZhbGlkID0gY3JlYXRlSW52YWxpZCQxO1xuXG4gICAgZnVuY3Rpb24gcGFyc2VJc28oaW5wLCBzaWduKSB7XG4gICAgICAgIC8vIFdlJ2Qgbm9ybWFsbHkgdXNlIH5+aW5wIGZvciB0aGlzLCBidXQgdW5mb3J0dW5hdGVseSBpdCBhbHNvXG4gICAgICAgIC8vIGNvbnZlcnRzIGZsb2F0cyB0byBpbnRzLlxuICAgICAgICAvLyBpbnAgbWF5IGJlIHVuZGVmaW5lZCwgc28gY2FyZWZ1bCBjYWxsaW5nIHJlcGxhY2Ugb24gaXQuXG4gICAgICAgIHZhciByZXMgPSBpbnAgJiYgcGFyc2VGbG9hdChpbnAucmVwbGFjZSgnLCcsICcuJykpO1xuICAgICAgICAvLyBhcHBseSBzaWduIHdoaWxlIHdlJ3JlIGF0IGl0XG4gICAgICAgIHJldHVybiAoaXNOYU4ocmVzKSA/IDAgOiByZXMpICogc2lnbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXMgPSB7fTtcblxuICAgICAgICByZXMubW9udGhzID1cbiAgICAgICAgICAgIG90aGVyLm1vbnRoKCkgLSBiYXNlLm1vbnRoKCkgKyAob3RoZXIueWVhcigpIC0gYmFzZS55ZWFyKCkpICogMTI7XG4gICAgICAgIGlmIChiYXNlLmNsb25lKCkuYWRkKHJlcy5tb250aHMsICdNJykuaXNBZnRlcihvdGhlcikpIHtcbiAgICAgICAgICAgIC0tcmVzLm1vbnRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcy5taWxsaXNlY29uZHMgPSArb3RoZXIgLSArYmFzZS5jbG9uZSgpLmFkZChyZXMubW9udGhzLCAnTScpO1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9tZW50c0RpZmZlcmVuY2UoYmFzZSwgb3RoZXIpIHtcbiAgICAgICAgdmFyIHJlcztcbiAgICAgICAgaWYgKCEoYmFzZS5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgbWlsbGlzZWNvbmRzOiAwLCBtb250aHM6IDAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIG90aGVyID0gY2xvbmVXaXRoT2Zmc2V0KG90aGVyLCBiYXNlKTtcbiAgICAgICAgaWYgKGJhc2UuaXNCZWZvcmUob3RoZXIpKSB7XG4gICAgICAgICAgICByZXMgPSBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyA9IHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2Uob3RoZXIsIGJhc2UpO1xuICAgICAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9IC1yZXMubWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgcmVzLm1vbnRocyA9IC1yZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiByZW1vdmUgJ25hbWUnIGFyZyBhZnRlciBkZXByZWNhdGlvbiBpcyByZW1vdmVkXG4gICAgZnVuY3Rpb24gY3JlYXRlQWRkZXIoZGlyZWN0aW9uLCBuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHZhciBkdXIsIHRtcDtcbiAgICAgICAgICAgIC8vaW52ZXJ0IHRoZSBhcmd1bWVudHMsIGJ1dCBjb21wbGFpbiBhYm91dCBpdFxuICAgICAgICAgICAgaWYgKHBlcmlvZCAhPT0gbnVsbCAmJiAhaXNOYU4oK3BlcmlvZCkpIHtcbiAgICAgICAgICAgICAgICBkZXByZWNhdGVTaW1wbGUoXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICdtb21lbnQoKS4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJyhwZXJpb2QsIG51bWJlcikgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBtb21lbnQoKS4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJyhudW1iZXIsIHBlcmlvZCkuICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1NlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2FkZC1pbnZlcnRlZC1wYXJhbS8gZm9yIG1vcmUgaW5mby4nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0bXAgPSB2YWw7XG4gICAgICAgICAgICAgICAgdmFsID0gcGVyaW9kO1xuICAgICAgICAgICAgICAgIHBlcmlvZCA9IHRtcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZHVyID0gY3JlYXRlRHVyYXRpb24odmFsLCBwZXJpb2QpO1xuICAgICAgICAgICAgYWRkU3VidHJhY3QodGhpcywgZHVyLCBkaXJlY3Rpb24pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkU3VidHJhY3QobW9tLCBkdXJhdGlvbiwgaXNBZGRpbmcsIHVwZGF0ZU9mZnNldCkge1xuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gZHVyYXRpb24uX21pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGRheXMgPSBhYnNSb3VuZChkdXJhdGlvbi5fZGF5cyksXG4gICAgICAgICAgICBtb250aHMgPSBhYnNSb3VuZChkdXJhdGlvbi5fbW9udGhzKTtcblxuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIC8vIE5vIG9wXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVPZmZzZXQgPSB1cGRhdGVPZmZzZXQgPT0gbnVsbCA/IHRydWUgOiB1cGRhdGVPZmZzZXQ7XG5cbiAgICAgICAgaWYgKG1vbnRocykge1xuICAgICAgICAgICAgc2V0TW9udGgobW9tLCBnZXQobW9tLCAnTW9udGgnKSArIG1vbnRocyAqIGlzQWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF5cykge1xuICAgICAgICAgICAgc2V0JDEobW9tLCAnRGF0ZScsIGdldChtb20sICdEYXRlJykgKyBkYXlzICogaXNBZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgICAgIG1vbS5fZC5zZXRUaW1lKG1vbS5fZC52YWx1ZU9mKCkgKyBtaWxsaXNlY29uZHMgKiBpc0FkZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVwZGF0ZU9mZnNldCkge1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KG1vbSwgZGF5cyB8fCBtb250aHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGFkZCA9IGNyZWF0ZUFkZGVyKDEsICdhZGQnKSxcbiAgICAgICAgc3VidHJhY3QgPSBjcmVhdGVBZGRlcigtMSwgJ3N1YnRyYWN0Jyk7XG5cbiAgICBmdW5jdGlvbiBpc1N0cmluZyhpbnB1dCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJyB8fCBpbnB1dCBpbnN0YW5jZW9mIFN0cmluZztcbiAgICB9XG5cbiAgICAvLyB0eXBlIE1vbWVudElucHV0ID0gTW9tZW50IHwgRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IChudW1iZXIgfCBzdHJpbmcpW10gfCBNb21lbnRJbnB1dE9iamVjdCB8IHZvaWQ7IC8vIG51bGwgfCB1bmRlZmluZWRcbiAgICBmdW5jdGlvbiBpc01vbWVudElucHV0KGlucHV0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpc01vbWVudChpbnB1dCkgfHxcbiAgICAgICAgICAgIGlzRGF0ZShpbnB1dCkgfHxcbiAgICAgICAgICAgIGlzU3RyaW5nKGlucHV0KSB8fFxuICAgICAgICAgICAgaXNOdW1iZXIoaW5wdXQpIHx8XG4gICAgICAgICAgICBpc051bWJlck9yU3RyaW5nQXJyYXkoaW5wdXQpIHx8XG4gICAgICAgICAgICBpc01vbWVudElucHV0T2JqZWN0KGlucHV0KSB8fFxuICAgICAgICAgICAgaW5wdXQgPT09IG51bGwgfHxcbiAgICAgICAgICAgIGlucHV0ID09PSB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc01vbWVudElucHV0T2JqZWN0KGlucHV0KSB7XG4gICAgICAgIHZhciBvYmplY3RUZXN0ID0gaXNPYmplY3QoaW5wdXQpICYmICFpc09iamVjdEVtcHR5KGlucHV0KSxcbiAgICAgICAgICAgIHByb3BlcnR5VGVzdCA9IGZhbHNlLFxuICAgICAgICAgICAgcHJvcGVydGllcyA9IFtcbiAgICAgICAgICAgICAgICAneWVhcnMnLFxuICAgICAgICAgICAgICAgICd5ZWFyJyxcbiAgICAgICAgICAgICAgICAneScsXG4gICAgICAgICAgICAgICAgJ21vbnRocycsXG4gICAgICAgICAgICAgICAgJ21vbnRoJyxcbiAgICAgICAgICAgICAgICAnTScsXG4gICAgICAgICAgICAgICAgJ2RheXMnLFxuICAgICAgICAgICAgICAgICdkYXknLFxuICAgICAgICAgICAgICAgICdkJyxcbiAgICAgICAgICAgICAgICAnZGF0ZXMnLFxuICAgICAgICAgICAgICAgICdkYXRlJyxcbiAgICAgICAgICAgICAgICAnRCcsXG4gICAgICAgICAgICAgICAgJ2hvdXJzJyxcbiAgICAgICAgICAgICAgICAnaG91cicsXG4gICAgICAgICAgICAgICAgJ2gnLFxuICAgICAgICAgICAgICAgICdtaW51dGVzJyxcbiAgICAgICAgICAgICAgICAnbWludXRlJyxcbiAgICAgICAgICAgICAgICAnbScsXG4gICAgICAgICAgICAgICAgJ3NlY29uZHMnLFxuICAgICAgICAgICAgICAgICdzZWNvbmQnLFxuICAgICAgICAgICAgICAgICdzJyxcbiAgICAgICAgICAgICAgICAnbWlsbGlzZWNvbmRzJyxcbiAgICAgICAgICAgICAgICAnbWlsbGlzZWNvbmQnLFxuICAgICAgICAgICAgICAgICdtcycsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIHByb3BlcnR5O1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV07XG4gICAgICAgICAgICBwcm9wZXJ0eVRlc3QgPSBwcm9wZXJ0eVRlc3QgfHwgaGFzT3duUHJvcChpbnB1dCwgcHJvcGVydHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9iamVjdFRlc3QgJiYgcHJvcGVydHlUZXN0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTnVtYmVyT3JTdHJpbmdBcnJheShpbnB1dCkge1xuICAgICAgICB2YXIgYXJyYXlUZXN0ID0gaXNBcnJheShpbnB1dCksXG4gICAgICAgICAgICBkYXRhVHlwZVRlc3QgPSBmYWxzZTtcbiAgICAgICAgaWYgKGFycmF5VGVzdCkge1xuICAgICAgICAgICAgZGF0YVR5cGVUZXN0ID1cbiAgICAgICAgICAgICAgICBpbnB1dC5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFpc051bWJlcihpdGVtKSAmJiBpc1N0cmluZyhpbnB1dCk7XG4gICAgICAgICAgICAgICAgfSkubGVuZ3RoID09PSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnJheVRlc3QgJiYgZGF0YVR5cGVUZXN0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQ2FsZW5kYXJTcGVjKGlucHV0KSB7XG4gICAgICAgIHZhciBvYmplY3RUZXN0ID0gaXNPYmplY3QoaW5wdXQpICYmICFpc09iamVjdEVtcHR5KGlucHV0KSxcbiAgICAgICAgICAgIHByb3BlcnR5VGVzdCA9IGZhbHNlLFxuICAgICAgICAgICAgcHJvcGVydGllcyA9IFtcbiAgICAgICAgICAgICAgICAnc2FtZURheScsXG4gICAgICAgICAgICAgICAgJ25leHREYXknLFxuICAgICAgICAgICAgICAgICdsYXN0RGF5JyxcbiAgICAgICAgICAgICAgICAnbmV4dFdlZWsnLFxuICAgICAgICAgICAgICAgICdsYXN0V2VlaycsXG4gICAgICAgICAgICAgICAgJ3NhbWVFbHNlJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgcHJvcGVydHk7XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIHByb3BlcnR5ID0gcHJvcGVydGllc1tpXTtcbiAgICAgICAgICAgIHByb3BlcnR5VGVzdCA9IHByb3BlcnR5VGVzdCB8fCBoYXNPd25Qcm9wKGlucHV0LCBwcm9wZXJ0eSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JqZWN0VGVzdCAmJiBwcm9wZXJ0eVRlc3Q7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q2FsZW5kYXJGb3JtYXQobXlNb21lbnQsIG5vdykge1xuICAgICAgICB2YXIgZGlmZiA9IG15TW9tZW50LmRpZmYobm93LCAnZGF5cycsIHRydWUpO1xuICAgICAgICByZXR1cm4gZGlmZiA8IC02XG4gICAgICAgICAgICA/ICdzYW1lRWxzZSdcbiAgICAgICAgICAgIDogZGlmZiA8IC0xXG4gICAgICAgICAgICA/ICdsYXN0V2VlaydcbiAgICAgICAgICAgIDogZGlmZiA8IDBcbiAgICAgICAgICAgID8gJ2xhc3REYXknXG4gICAgICAgICAgICA6IGRpZmYgPCAxXG4gICAgICAgICAgICA/ICdzYW1lRGF5J1xuICAgICAgICAgICAgOiBkaWZmIDwgMlxuICAgICAgICAgICAgPyAnbmV4dERheSdcbiAgICAgICAgICAgIDogZGlmZiA8IDdcbiAgICAgICAgICAgID8gJ25leHRXZWVrJ1xuICAgICAgICAgICAgOiAnc2FtZUVsc2UnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhbGVuZGFyJDEodGltZSwgZm9ybWF0cykge1xuICAgICAgICAvLyBTdXBwb3J0IGZvciBzaW5nbGUgcGFyYW1ldGVyLCBmb3JtYXRzIG9ubHkgb3ZlcmxvYWQgdG8gdGhlIGNhbGVuZGFyIGZ1bmN0aW9uXG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBpZiAoaXNNb21lbnRJbnB1dChhcmd1bWVudHNbMF0pKSB7XG4gICAgICAgICAgICAgICAgdGltZSA9IGFyZ3VtZW50c1swXTtcbiAgICAgICAgICAgICAgICBmb3JtYXRzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0NhbGVuZGFyU3BlYyhhcmd1bWVudHNbMF0pKSB7XG4gICAgICAgICAgICAgICAgZm9ybWF0cyA9IGFyZ3VtZW50c1swXTtcbiAgICAgICAgICAgICAgICB0aW1lID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFdlIHdhbnQgdG8gY29tcGFyZSB0aGUgc3RhcnQgb2YgdG9kYXksIHZzIHRoaXMuXG4gICAgICAgIC8vIEdldHRpbmcgc3RhcnQtb2YtdG9kYXkgZGVwZW5kcyBvbiB3aGV0aGVyIHdlJ3JlIGxvY2FsL3V0Yy9vZmZzZXQgb3Igbm90LlxuICAgICAgICB2YXIgbm93ID0gdGltZSB8fCBjcmVhdGVMb2NhbCgpLFxuICAgICAgICAgICAgc29kID0gY2xvbmVXaXRoT2Zmc2V0KG5vdywgdGhpcykuc3RhcnRPZignZGF5JyksXG4gICAgICAgICAgICBmb3JtYXQgPSBob29rcy5jYWxlbmRhckZvcm1hdCh0aGlzLCBzb2QpIHx8ICdzYW1lRWxzZScsXG4gICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgIGZvcm1hdHMgJiZcbiAgICAgICAgICAgICAgICAoaXNGdW5jdGlvbihmb3JtYXRzW2Zvcm1hdF0pXG4gICAgICAgICAgICAgICAgICAgID8gZm9ybWF0c1tmb3JtYXRdLmNhbGwodGhpcywgbm93KVxuICAgICAgICAgICAgICAgICAgICA6IGZvcm1hdHNbZm9ybWF0XSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0KFxuICAgICAgICAgICAgb3V0cHV0IHx8IHRoaXMubG9jYWxlRGF0YSgpLmNhbGVuZGFyKGZvcm1hdCwgdGhpcywgY3JlYXRlTG9jYWwobm93KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb21lbnQodGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBZnRlcihpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1dCkgPyBpbnB1dCA6IGNyZWF0ZUxvY2FsKGlucHV0KTtcbiAgICAgICAgaWYgKCEodGhpcy5pc1ZhbGlkKCkgJiYgbG9jYWxJbnB1dC5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cykgfHwgJ21pbGxpc2Vjb25kJztcbiAgICAgICAgaWYgKHVuaXRzID09PSAnbWlsbGlzZWNvbmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZU9mKCkgPiBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbElucHV0LnZhbHVlT2YoKSA8IHRoaXMuY2xvbmUoKS5zdGFydE9mKHVuaXRzKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0JlZm9yZShpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1dCkgPyBpbnB1dCA6IGNyZWF0ZUxvY2FsKGlucHV0KTtcbiAgICAgICAgaWYgKCEodGhpcy5pc1ZhbGlkKCkgJiYgbG9jYWxJbnB1dC5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cykgfHwgJ21pbGxpc2Vjb25kJztcbiAgICAgICAgaWYgKHVuaXRzID09PSAnbWlsbGlzZWNvbmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZU9mKCkgPCBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb25lKCkuZW5kT2YodW5pdHMpLnZhbHVlT2YoKSA8IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNCZXR3ZWVuKGZyb20sIHRvLCB1bml0cywgaW5jbHVzaXZpdHkpIHtcbiAgICAgICAgdmFyIGxvY2FsRnJvbSA9IGlzTW9tZW50KGZyb20pID8gZnJvbSA6IGNyZWF0ZUxvY2FsKGZyb20pLFxuICAgICAgICAgICAgbG9jYWxUbyA9IGlzTW9tZW50KHRvKSA/IHRvIDogY3JlYXRlTG9jYWwodG8pO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbEZyb20uaXNWYWxpZCgpICYmIGxvY2FsVG8uaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGluY2x1c2l2aXR5ID0gaW5jbHVzaXZpdHkgfHwgJygpJztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChpbmNsdXNpdml0eVswXSA9PT0gJygnXG4gICAgICAgICAgICAgICAgPyB0aGlzLmlzQWZ0ZXIobG9jYWxGcm9tLCB1bml0cylcbiAgICAgICAgICAgICAgICA6ICF0aGlzLmlzQmVmb3JlKGxvY2FsRnJvbSwgdW5pdHMpKSAmJlxuICAgICAgICAgICAgKGluY2x1c2l2aXR5WzFdID09PSAnKSdcbiAgICAgICAgICAgICAgICA/IHRoaXMuaXNCZWZvcmUobG9jYWxUbywgdW5pdHMpXG4gICAgICAgICAgICAgICAgOiAhdGhpcy5pc0FmdGVyKGxvY2FsVG8sIHVuaXRzKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWUoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCksXG4gICAgICAgICAgICBpbnB1dE1zO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB8fCAnbWlsbGlzZWNvbmQnO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA9PT0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnB1dE1zID0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuY2xvbmUoKS5zdGFydE9mKHVuaXRzKS52YWx1ZU9mKCkgPD0gaW5wdXRNcyAmJlxuICAgICAgICAgICAgICAgIGlucHV0TXMgPD0gdGhpcy5jbG9uZSgpLmVuZE9mKHVuaXRzKS52YWx1ZU9mKClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckFmdGVyKGlucHV0LCB1bml0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWUoaW5wdXQsIHVuaXRzKSB8fCB0aGlzLmlzQWZ0ZXIoaW5wdXQsIHVuaXRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckJlZm9yZShpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTYW1lKGlucHV0LCB1bml0cykgfHwgdGhpcy5pc0JlZm9yZShpbnB1dCwgdW5pdHMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpZmYoaW5wdXQsIHVuaXRzLCBhc0Zsb2F0KSB7XG4gICAgICAgIHZhciB0aGF0LCB6b25lRGVsdGEsIG91dHB1dDtcblxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhhdCA9IGNsb25lV2l0aE9mZnNldChpbnB1dCwgdGhpcyk7XG5cbiAgICAgICAgaWYgKCF0aGF0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHpvbmVEZWx0YSA9ICh0aGF0LnV0Y09mZnNldCgpIC0gdGhpcy51dGNPZmZzZXQoKSkgKiA2ZTQ7XG5cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG5cbiAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpIC8gMTI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpIC8gMztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKHRoaXMgLSB0aGF0KSAvIDFlMztcbiAgICAgICAgICAgICAgICBicmVhazsgLy8gMTAwMFxuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAodGhpcyAtIHRoYXQpIC8gNmU0O1xuICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAxMDAwICogNjBcbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh0aGlzIC0gdGhhdCkgLyAzNmU1O1xuICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAxMDAwICogNjAgKiA2MFxuICAgICAgICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAodGhpcyAtIHRoYXQgLSB6b25lRGVsdGEpIC8gODY0ZTU7XG4gICAgICAgICAgICAgICAgYnJlYWs7IC8vIDEwMDAgKiA2MCAqIDYwICogMjQsIG5lZ2F0ZSBkc3RcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh0aGlzIC0gdGhhdCAtIHpvbmVEZWx0YSkgLyA2MDQ4ZTU7XG4gICAgICAgICAgICAgICAgYnJlYWs7IC8vIDEwMDAgKiA2MCAqIDYwICogMjQgKiA3LCBuZWdhdGUgZHN0XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIG91dHB1dCA9IHRoaXMgLSB0aGF0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFzRmxvYXQgPyBvdXRwdXQgOiBhYnNGbG9vcihvdXRwdXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoRGlmZihhLCBiKSB7XG4gICAgICAgIGlmIChhLmRhdGUoKSA8IGIuZGF0ZSgpKSB7XG4gICAgICAgICAgICAvLyBlbmQtb2YtbW9udGggY2FsY3VsYXRpb25zIHdvcmsgY29ycmVjdCB3aGVuIHRoZSBzdGFydCBtb250aCBoYXMgbW9yZVxuICAgICAgICAgICAgLy8gZGF5cyB0aGFuIHRoZSBlbmQgbW9udGguXG4gICAgICAgICAgICByZXR1cm4gLW1vbnRoRGlmZihiLCBhKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBkaWZmZXJlbmNlIGluIG1vbnRoc1xuICAgICAgICB2YXIgd2hvbGVNb250aERpZmYgPSAoYi55ZWFyKCkgLSBhLnllYXIoKSkgKiAxMiArIChiLm1vbnRoKCkgLSBhLm1vbnRoKCkpLFxuICAgICAgICAgICAgLy8gYiBpcyBpbiAoYW5jaG9yIC0gMSBtb250aCwgYW5jaG9yICsgMSBtb250aClcbiAgICAgICAgICAgIGFuY2hvciA9IGEuY2xvbmUoKS5hZGQod2hvbGVNb250aERpZmYsICdtb250aHMnKSxcbiAgICAgICAgICAgIGFuY2hvcjIsXG4gICAgICAgICAgICBhZGp1c3Q7XG5cbiAgICAgICAgaWYgKGIgLSBhbmNob3IgPCAwKSB7XG4gICAgICAgICAgICBhbmNob3IyID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiAtIDEsICdtb250aHMnKTtcbiAgICAgICAgICAgIC8vIGxpbmVhciBhY3Jvc3MgdGhlIG1vbnRoXG4gICAgICAgICAgICBhZGp1c3QgPSAoYiAtIGFuY2hvcikgLyAoYW5jaG9yIC0gYW5jaG9yMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmNob3IyID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiArIDEsICdtb250aHMnKTtcbiAgICAgICAgICAgIC8vIGxpbmVhciBhY3Jvc3MgdGhlIG1vbnRoXG4gICAgICAgICAgICBhZGp1c3QgPSAoYiAtIGFuY2hvcikgLyAoYW5jaG9yMiAtIGFuY2hvcik7XG4gICAgICAgIH1cblxuICAgICAgICAvL2NoZWNrIGZvciBuZWdhdGl2ZSB6ZXJvLCByZXR1cm4gemVybyBpZiBuZWdhdGl2ZSB6ZXJvXG4gICAgICAgIHJldHVybiAtKHdob2xlTW9udGhEaWZmICsgYWRqdXN0KSB8fCAwO1xuICAgIH1cblxuICAgIGhvb2tzLmRlZmF1bHRGb3JtYXQgPSAnWVlZWS1NTS1ERFRISDptbTpzc1onO1xuICAgIGhvb2tzLmRlZmF1bHRGb3JtYXRVdGMgPSAnWVlZWS1NTS1ERFRISDptbTpzc1taXSc7XG5cbiAgICBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5sb2NhbGUoJ2VuJykuZm9ybWF0KCdkZGQgTU1NIEREIFlZWVkgSEg6bW06c3MgW0dNVF1aWicpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSVNPU3RyaW5nKGtlZXBPZmZzZXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHV0YyA9IGtlZXBPZmZzZXQgIT09IHRydWUsXG4gICAgICAgICAgICBtID0gdXRjID8gdGhpcy5jbG9uZSgpLnV0YygpIDogdGhpcztcbiAgICAgICAgaWYgKG0ueWVhcigpIDwgMCB8fCBtLnllYXIoKSA+IDk5OTkpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRNb21lbnQoXG4gICAgICAgICAgICAgICAgbSxcbiAgICAgICAgICAgICAgICB1dGNcbiAgICAgICAgICAgICAgICAgICAgPyAnWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdJ1xuICAgICAgICAgICAgICAgICAgICA6ICdZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNGdW5jdGlvbihEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZykpIHtcbiAgICAgICAgICAgIC8vIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBpcyB+NTB4IGZhc3RlciwgdXNlIGl0IHdoZW4gd2UgY2FuXG4gICAgICAgICAgICBpZiAodXRjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9EYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpICsgdGhpcy51dGNPZmZzZXQoKSAqIDYwICogMTAwMClcbiAgICAgICAgICAgICAgICAgICAgLnRvSVNPU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJ1onLCBmb3JtYXRNb21lbnQobSwgJ1onKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1hdE1vbWVudChcbiAgICAgICAgICAgIG0sXG4gICAgICAgICAgICB1dGMgPyAnWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXScgOiAnWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1onXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgaHVtYW4gcmVhZGFibGUgcmVwcmVzZW50YXRpb24gb2YgYSBtb21lbnQgdGhhdCBjYW5cbiAgICAgKiBhbHNvIGJlIGV2YWx1YXRlZCB0byBnZXQgYSBuZXcgbW9tZW50IHdoaWNoIGlzIHRoZSBzYW1lXG4gICAgICpcbiAgICAgKiBAbGluayBodHRwczovL25vZGVqcy5vcmcvZGlzdC9sYXRlc3QvZG9jcy9hcGkvdXRpbC5odG1sI3V0aWxfY3VzdG9tX2luc3BlY3RfZnVuY3Rpb25fb25fb2JqZWN0c1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluc3BlY3QoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiAnbW9tZW50LmludmFsaWQoLyogJyArIHRoaXMuX2kgKyAnICovKSc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZ1bmMgPSAnbW9tZW50JyxcbiAgICAgICAgICAgIHpvbmUgPSAnJyxcbiAgICAgICAgICAgIHByZWZpeCxcbiAgICAgICAgICAgIHllYXIsXG4gICAgICAgICAgICBkYXRldGltZSxcbiAgICAgICAgICAgIHN1ZmZpeDtcbiAgICAgICAgaWYgKCF0aGlzLmlzTG9jYWwoKSkge1xuICAgICAgICAgICAgZnVuYyA9IHRoaXMudXRjT2Zmc2V0KCkgPT09IDAgPyAnbW9tZW50LnV0YycgOiAnbW9tZW50LnBhcnNlWm9uZSc7XG4gICAgICAgICAgICB6b25lID0gJ1onO1xuICAgICAgICB9XG4gICAgICAgIHByZWZpeCA9ICdbJyArIGZ1bmMgKyAnKFwiXSc7XG4gICAgICAgIHllYXIgPSAwIDw9IHRoaXMueWVhcigpICYmIHRoaXMueWVhcigpIDw9IDk5OTkgPyAnWVlZWScgOiAnWVlZWVlZJztcbiAgICAgICAgZGF0ZXRpbWUgPSAnLU1NLUREW1RdSEg6bW06c3MuU1NTJztcbiAgICAgICAgc3VmZml4ID0gem9uZSArICdbXCIpXSc7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0KHByZWZpeCArIHllYXIgKyBkYXRldGltZSArIHN1ZmZpeCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZm9ybWF0KGlucHV0U3RyaW5nKSB7XG4gICAgICAgIGlmICghaW5wdXRTdHJpbmcpIHtcbiAgICAgICAgICAgIGlucHV0U3RyaW5nID0gdGhpcy5pc1V0YygpXG4gICAgICAgICAgICAgICAgPyBob29rcy5kZWZhdWx0Rm9ybWF0VXRjXG4gICAgICAgICAgICAgICAgOiBob29rcy5kZWZhdWx0Rm9ybWF0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBvdXRwdXQgPSBmb3JtYXRNb21lbnQodGhpcywgaW5wdXRTdHJpbmcpO1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkucG9zdGZvcm1hdChvdXRwdXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZyb20odGltZSwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQoKSAmJlxuICAgICAgICAgICAgKChpc01vbWVudCh0aW1lKSAmJiB0aW1lLmlzVmFsaWQoKSkgfHwgY3JlYXRlTG9jYWwodGltZSkuaXNWYWxpZCgpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih7IHRvOiB0aGlzLCBmcm9tOiB0aW1lIH0pXG4gICAgICAgICAgICAgICAgLmxvY2FsZSh0aGlzLmxvY2FsZSgpKVxuICAgICAgICAgICAgICAgIC5odW1hbml6ZSghd2l0aG91dFN1ZmZpeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZyb21Ob3cod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tKGNyZWF0ZUxvY2FsKCksIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvKHRpbWUsIHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pc1ZhbGlkKCkgJiZcbiAgICAgICAgICAgICgoaXNNb21lbnQodGltZSkgJiYgdGltZS5pc1ZhbGlkKCkpIHx8IGNyZWF0ZUxvY2FsKHRpbWUpLmlzVmFsaWQoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oeyBmcm9tOiB0aGlzLCB0bzogdGltZSB9KVxuICAgICAgICAgICAgICAgIC5sb2NhbGUodGhpcy5sb2NhbGUoKSlcbiAgICAgICAgICAgICAgICAuaHVtYW5pemUoIXdpdGhvdXRTdWZmaXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b05vdyh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvKGNyZWF0ZUxvY2FsKCksIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cblxuICAgIC8vIElmIHBhc3NlZCBhIGxvY2FsZSBrZXksIGl0IHdpbGwgc2V0IHRoZSBsb2NhbGUgZm9yIHRoaXNcbiAgICAvLyBpbnN0YW5jZS4gIE90aGVyd2lzZSwgaXQgd2lsbCByZXR1cm4gdGhlIGxvY2FsZSBjb25maWd1cmF0aW9uXG4gICAgLy8gdmFyaWFibGVzIGZvciB0aGlzIGluc3RhbmNlLlxuICAgIGZ1bmN0aW9uIGxvY2FsZShrZXkpIHtcbiAgICAgICAgdmFyIG5ld0xvY2FsZURhdGE7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlLl9hYmJyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3TG9jYWxlRGF0YSA9IGdldExvY2FsZShrZXkpO1xuICAgICAgICAgICAgaWYgKG5ld0xvY2FsZURhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvY2FsZSA9IG5ld0xvY2FsZURhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsYW5nID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9tZW50KCkubGFuZygpIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSBtb21lbnQoKS5sb2NhbGVEYXRhKCkgdG8gZ2V0IHRoZSBsYW5ndWFnZSBjb25maWd1cmF0aW9uLiBVc2UgbW9tZW50KCkubG9jYWxlKCkgdG8gY2hhbmdlIGxhbmd1YWdlcy4nLFxuICAgICAgICBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIGZ1bmN0aW9uIGxvY2FsZURhdGEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGU7XG4gICAgfVxuXG4gICAgdmFyIE1TX1BFUl9TRUNPTkQgPSAxMDAwLFxuICAgICAgICBNU19QRVJfTUlOVVRFID0gNjAgKiBNU19QRVJfU0VDT05ELFxuICAgICAgICBNU19QRVJfSE9VUiA9IDYwICogTVNfUEVSX01JTlVURSxcbiAgICAgICAgTVNfUEVSXzQwMF9ZRUFSUyA9ICgzNjUgKiA0MDAgKyA5NykgKiAyNCAqIE1TX1BFUl9IT1VSO1xuXG4gICAgLy8gYWN0dWFsIG1vZHVsbyAtIGhhbmRsZXMgbmVnYXRpdmUgbnVtYmVycyAoZm9yIGRhdGVzIGJlZm9yZSAxOTcwKTpcbiAgICBmdW5jdGlvbiBtb2QkMShkaXZpZGVuZCwgZGl2aXNvcikge1xuICAgICAgICByZXR1cm4gKChkaXZpZGVuZCAlIGRpdmlzb3IpICsgZGl2aXNvcikgJSBkaXZpc29yO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsU3RhcnRPZkRhdGUoeSwgbSwgZCkge1xuICAgICAgICAvLyB0aGUgZGF0ZSBjb25zdHJ1Y3RvciByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwKSB7XG4gICAgICAgICAgICAvLyBwcmVzZXJ2ZSBsZWFwIHllYXJzIHVzaW5nIGEgZnVsbCA0MDAgeWVhciBjeWNsZSwgdGhlbiByZXNldFxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHkgKyA0MDAsIG0sIGQpIC0gTVNfUEVSXzQwMF9ZRUFSUztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh5LCBtLCBkKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1dGNTdGFydE9mRGF0ZSh5LCBtLCBkKSB7XG4gICAgICAgIC8vIERhdGUuVVRDIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OVxuICAgICAgICBpZiAoeSA8IDEwMCAmJiB5ID49IDApIHtcbiAgICAgICAgICAgIC8vIHByZXNlcnZlIGxlYXAgeWVhcnMgdXNpbmcgYSBmdWxsIDQwMCB5ZWFyIGN5Y2xlLCB0aGVuIHJlc2V0XG4gICAgICAgICAgICByZXR1cm4gRGF0ZS5VVEMoeSArIDQwMCwgbSwgZCkgLSBNU19QRVJfNDAwX1lFQVJTO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIERhdGUuVVRDKHksIG0sIGQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RhcnRPZih1bml0cykge1xuICAgICAgICB2YXIgdGltZSwgc3RhcnRPZkRhdGU7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICBpZiAodW5pdHMgPT09IHVuZGVmaW5lZCB8fCB1bml0cyA9PT0gJ21pbGxpc2Vjb25kJyB8fCAhdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnRPZkRhdGUgPSB0aGlzLl9pc1VUQyA/IHV0Y1N0YXJ0T2ZEYXRlIDogbG9jYWxTdGFydE9mRGF0ZTtcblxuICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIDAsIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnllYXIoKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250aCgpIC0gKHRoaXMubW9udGgoKSAlIDMpLFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMueWVhcigpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRoKCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZSgpIC0gdGhpcy53ZWVrZGF5KClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaXNvV2Vlayc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnllYXIoKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250aCgpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGUoKSAtICh0aGlzLmlzb1dlZWtkYXkoKSAtIDEpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHRoaXMuX2QudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIHRpbWUgLT0gbW9kJDEoXG4gICAgICAgICAgICAgICAgICAgIHRpbWUgKyAodGhpcy5faXNVVEMgPyAwIDogdGhpcy51dGNPZmZzZXQoKSAqIE1TX1BFUl9NSU5VVEUpLFxuICAgICAgICAgICAgICAgICAgICBNU19QRVJfSE9VUlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lIC09IG1vZCQxKHRpbWUsIE1TX1BFUl9NSU5VVEUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSAtPSBtb2QkMSh0aW1lLCBNU19QRVJfU0VDT05EKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2Quc2V0VGltZSh0aW1lKTtcbiAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbmRPZih1bml0cykge1xuICAgICAgICB2YXIgdGltZSwgc3RhcnRPZkRhdGU7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICBpZiAodW5pdHMgPT09IHVuZGVmaW5lZCB8fCB1bml0cyA9PT0gJ21pbGxpc2Vjb25kJyB8fCAhdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnRPZkRhdGUgPSB0aGlzLl9pc1VUQyA/IHV0Y1N0YXJ0T2ZEYXRlIDogbG9jYWxTdGFydE9mRGF0ZTtcblxuICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCkgKyAxLCAwLCAxKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgICAgICB0aW1lID1cbiAgICAgICAgICAgICAgICAgICAgc3RhcnRPZkRhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnllYXIoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGgoKSAtICh0aGlzLm1vbnRoKCkgJSAzKSArIDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpICsgMSwgMSkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgICAgICAgICAgdGltZSA9XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0T2ZEYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55ZWFyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRoKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGUoKSAtIHRoaXMud2Vla2RheSgpICsgN1xuICAgICAgICAgICAgICAgICAgICApIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2lzb1dlZWsnOlxuICAgICAgICAgICAgICAgIHRpbWUgPVxuICAgICAgICAgICAgICAgICAgICBzdGFydE9mRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueWVhcigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250aCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKCkgLSAodGhpcy5pc29XZWVrZGF5KCkgLSAxKSArIDdcbiAgICAgICAgICAgICAgICAgICAgKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCksIHRoaXMuZGF0ZSgpICsgMSkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHRoaXMuX2QudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIHRpbWUgKz1cbiAgICAgICAgICAgICAgICAgICAgTVNfUEVSX0hPVVIgLVxuICAgICAgICAgICAgICAgICAgICBtb2QkMShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgKyAodGhpcy5faXNVVEMgPyAwIDogdGhpcy51dGNPZmZzZXQoKSAqIE1TX1BFUl9NSU5VVEUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgTVNfUEVSX0hPVVJcbiAgICAgICAgICAgICAgICAgICAgKSAtXG4gICAgICAgICAgICAgICAgICAgIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lICs9IE1TX1BFUl9NSU5VVEUgLSBtb2QkMSh0aW1lLCBNU19QRVJfTUlOVVRFKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lICs9IE1TX1BFUl9TRUNPTkQgLSBtb2QkMSh0aW1lLCBNU19QRVJfU0VDT05EKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kLnNldFRpbWUodGltZSk7XG4gICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmFsdWVPZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2QudmFsdWVPZigpIC0gKHRoaXMuX29mZnNldCB8fCAwKSAqIDYwMDAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVuaXgoKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMudmFsdWVPZigpIC8gMTAwMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9EYXRlKCkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQXJyYXkoKSB7XG4gICAgICAgIHZhciBtID0gdGhpcztcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG0ueWVhcigpLFxuICAgICAgICAgICAgbS5tb250aCgpLFxuICAgICAgICAgICAgbS5kYXRlKCksXG4gICAgICAgICAgICBtLmhvdXIoKSxcbiAgICAgICAgICAgIG0ubWludXRlKCksXG4gICAgICAgICAgICBtLnNlY29uZCgpLFxuICAgICAgICAgICAgbS5taWxsaXNlY29uZCgpLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvT2JqZWN0KCkge1xuICAgICAgICB2YXIgbSA9IHRoaXM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyczogbS55ZWFyKCksXG4gICAgICAgICAgICBtb250aHM6IG0ubW9udGgoKSxcbiAgICAgICAgICAgIGRhdGU6IG0uZGF0ZSgpLFxuICAgICAgICAgICAgaG91cnM6IG0uaG91cnMoKSxcbiAgICAgICAgICAgIG1pbnV0ZXM6IG0ubWludXRlcygpLFxuICAgICAgICAgICAgc2Vjb25kczogbS5zZWNvbmRzKCksXG4gICAgICAgICAgICBtaWxsaXNlY29uZHM6IG0ubWlsbGlzZWNvbmRzKCksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9KU09OKCkge1xuICAgICAgICAvLyBuZXcgRGF0ZShOYU4pLnRvSlNPTigpID09PSBudWxsXG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMudG9JU09TdHJpbmcoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWYWxpZCQyKCkge1xuICAgICAgICByZXR1cm4gaXNWYWxpZCh0aGlzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzaW5nRmxhZ3MoKSB7XG4gICAgICAgIHJldHVybiBleHRlbmQoe30sIGdldFBhcnNpbmdGbGFncyh0aGlzKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW52YWxpZEF0KCkge1xuICAgICAgICByZXR1cm4gZ2V0UGFyc2luZ0ZsYWdzKHRoaXMpLm92ZXJmbG93O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0aW9uRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlucHV0OiB0aGlzLl9pLFxuICAgICAgICAgICAgZm9ybWF0OiB0aGlzLl9mLFxuICAgICAgICAgICAgbG9jYWxlOiB0aGlzLl9sb2NhbGUsXG4gICAgICAgICAgICBpc1VUQzogdGhpcy5faXNVVEMsXG4gICAgICAgICAgICBzdHJpY3Q6IHRoaXMuX3N0cmljdCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhZGRGb3JtYXRUb2tlbignTicsIDAsIDAsICdlcmFBYmJyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ05OJywgMCwgMCwgJ2VyYUFiYnInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignTk5OJywgMCwgMCwgJ2VyYUFiYnInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignTk5OTicsIDAsIDAsICdlcmFOYW1lJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ05OTk5OJywgMCwgMCwgJ2VyYU5hcnJvdycpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3knLCBbJ3knLCAxXSwgJ3lvJywgJ2VyYVllYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigneScsIFsneXknLCAyXSwgMCwgJ2VyYVllYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigneScsIFsneXl5JywgM10sIDAsICdlcmFZZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ3knLCBbJ3l5eXknLCA0XSwgMCwgJ2VyYVllYXInKTtcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ04nLCBtYXRjaEVyYUFiYnIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ05OJywgbWF0Y2hFcmFBYmJyKTtcbiAgICBhZGRSZWdleFRva2VuKCdOTk4nLCBtYXRjaEVyYUFiYnIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ05OTk4nLCBtYXRjaEVyYU5hbWUpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ05OTk5OJywgbWF0Y2hFcmFOYXJyb3cpO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ04nLCAnTk4nLCAnTk5OJywgJ05OTk4nLCAnTk5OTk4nXSwgZnVuY3Rpb24gKFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgYXJyYXksXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgdG9rZW5cbiAgICApIHtcbiAgICAgICAgdmFyIGVyYSA9IGNvbmZpZy5fbG9jYWxlLmVyYXNQYXJzZShpbnB1dCwgdG9rZW4sIGNvbmZpZy5fc3RyaWN0KTtcbiAgICAgICAgaWYgKGVyYSkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuZXJhID0gZXJhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZEVyYSA9IGlucHV0O1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBhZGRSZWdleFRva2VuKCd5JywgbWF0Y2hVbnNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbigneXknLCBtYXRjaFVuc2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCd5eXknLCBtYXRjaFVuc2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCd5eXl5JywgbWF0Y2hVbnNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbigneW8nLCBtYXRjaEVyYVllYXJPcmRpbmFsKTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWyd5JywgJ3l5JywgJ3l5eScsICd5eXl5J10sIFlFQVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWyd5byddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHZhciBtYXRjaDtcbiAgICAgICAgaWYgKGNvbmZpZy5fbG9jYWxlLl9lcmFZZWFyT3JkaW5hbFJlZ2V4KSB7XG4gICAgICAgICAgICBtYXRjaCA9IGlucHV0Lm1hdGNoKGNvbmZpZy5fbG9jYWxlLl9lcmFZZWFyT3JkaW5hbFJlZ2V4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuX2xvY2FsZS5lcmFZZWFyT3JkaW5hbFBhcnNlKSB7XG4gICAgICAgICAgICBhcnJheVtZRUFSXSA9IGNvbmZpZy5fbG9jYWxlLmVyYVllYXJPcmRpbmFsUGFyc2UoaW5wdXQsIG1hdGNoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFycmF5W1lFQVJdID0gcGFyc2VJbnQoaW5wdXQsIDEwKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlRXJhcyhtLCBmb3JtYXQpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgIGVyYXMgPSB0aGlzLl9lcmFzIHx8IGdldExvY2FsZSgnZW4nKS5fZXJhcztcbiAgICAgICAgZm9yIChpID0gMCwgbCA9IGVyYXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBlcmFzW2ldLnNpbmNlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgLy8gdHJ1bmNhdGUgdGltZVxuICAgICAgICAgICAgICAgICAgICBkYXRlID0gaG9va3MoZXJhc1tpXS5zaW5jZSkuc3RhcnRPZignZGF5Jyk7XG4gICAgICAgICAgICAgICAgICAgIGVyYXNbaV0uc2luY2UgPSBkYXRlLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIGVyYXNbaV0udW50aWwpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICAgICAgICAgICAgICBlcmFzW2ldLnVudGlsID0gK0luZmluaXR5O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgICAgICAvLyB0cnVuY2F0ZSB0aW1lXG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPSBob29rcyhlcmFzW2ldLnVudGlsKS5zdGFydE9mKCdkYXknKS52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgICAgIGVyYXNbaV0udW50aWwgPSBkYXRlLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVyYXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlRXJhc1BhcnNlKGVyYU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIGVyYXMgPSB0aGlzLmVyYXMoKSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBhYmJyLFxuICAgICAgICAgICAgbmFycm93O1xuICAgICAgICBlcmFOYW1lID0gZXJhTmFtZS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAgIGZvciAoaSA9IDAsIGwgPSBlcmFzLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgICAgICAgbmFtZSA9IGVyYXNbaV0ubmFtZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgYWJiciA9IGVyYXNbaV0uYWJici50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgbmFycm93ID0gZXJhc1tpXS5uYXJyb3cudG9VcHBlckNhc2UoKTtcblxuICAgICAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ04nOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdOTic6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ05OTic6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWJiciA9PT0gZXJhTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTk5OTic6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gZXJhTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTk5OTk4nOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5hcnJvdyA9PT0gZXJhTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChbbmFtZSwgYWJiciwgbmFycm93XS5pbmRleE9mKGVyYU5hbWUpID49IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJhc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZUVyYXNDb252ZXJ0WWVhcihlcmEsIHllYXIpIHtcbiAgICAgICAgdmFyIGRpciA9IGVyYS5zaW5jZSA8PSBlcmEudW50aWwgPyArMSA6IC0xO1xuICAgICAgICBpZiAoeWVhciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gaG9va3MoZXJhLnNpbmNlKS55ZWFyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaG9va3MoZXJhLnNpbmNlKS55ZWFyKCkgKyAoeWVhciAtIGVyYS5vZmZzZXQpICogZGlyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RXJhTmFtZSgpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgdmFsLFxuICAgICAgICAgICAgZXJhcyA9IHRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKTtcbiAgICAgICAgZm9yIChpID0gMCwgbCA9IGVyYXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgICAvLyB0cnVuY2F0ZSB0aW1lXG4gICAgICAgICAgICB2YWwgPSB0aGlzLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTtcblxuICAgICAgICAgICAgaWYgKGVyYXNbaV0uc2luY2UgPD0gdmFsICYmIHZhbCA8PSBlcmFzW2ldLnVudGlsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV0ubmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcmFzW2ldLnVudGlsIDw9IHZhbCAmJiB2YWwgPD0gZXJhc1tpXS5zaW5jZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldLm5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RXJhTmFycm93KCkge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGwsXG4gICAgICAgICAgICB2YWwsXG4gICAgICAgICAgICBlcmFzID0gdGhpcy5sb2NhbGVEYXRhKCkuZXJhcygpO1xuICAgICAgICBmb3IgKGkgPSAwLCBsID0gZXJhcy5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICAgICAgICAgIC8vIHRydW5jYXRlIHRpbWVcbiAgICAgICAgICAgIHZhbCA9IHRoaXMuc3RhcnRPZignZGF5JykudmFsdWVPZigpO1xuXG4gICAgICAgICAgICBpZiAoZXJhc1tpXS5zaW5jZSA8PSB2YWwgJiYgdmFsIDw9IGVyYXNbaV0udW50aWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJhc1tpXS5uYXJyb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJhc1tpXS51bnRpbCA8PSB2YWwgJiYgdmFsIDw9IGVyYXNbaV0uc2luY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJhc1tpXS5uYXJyb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RXJhQWJicigpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgdmFsLFxuICAgICAgICAgICAgZXJhcyA9IHRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKTtcbiAgICAgICAgZm9yIChpID0gMCwgbCA9IGVyYXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgICAvLyB0cnVuY2F0ZSB0aW1lXG4gICAgICAgICAgICB2YWwgPSB0aGlzLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTtcblxuICAgICAgICAgICAgaWYgKGVyYXNbaV0uc2luY2UgPD0gdmFsICYmIHZhbCA8PSBlcmFzW2ldLnVudGlsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV0uYWJicjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcmFzW2ldLnVudGlsIDw9IHZhbCAmJiB2YWwgPD0gZXJhc1tpXS5zaW5jZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldLmFiYnI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RXJhWWVhcigpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgZGlyLFxuICAgICAgICAgICAgdmFsLFxuICAgICAgICAgICAgZXJhcyA9IHRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKTtcbiAgICAgICAgZm9yIChpID0gMCwgbCA9IGVyYXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgICBkaXIgPSBlcmFzW2ldLnNpbmNlIDw9IGVyYXNbaV0udW50aWwgPyArMSA6IC0xO1xuXG4gICAgICAgICAgICAvLyB0cnVuY2F0ZSB0aW1lXG4gICAgICAgICAgICB2YWwgPSB0aGlzLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChlcmFzW2ldLnNpbmNlIDw9IHZhbCAmJiB2YWwgPD0gZXJhc1tpXS51bnRpbCkgfHxcbiAgICAgICAgICAgICAgICAoZXJhc1tpXS51bnRpbCA8PSB2YWwgJiYgdmFsIDw9IGVyYXNbaV0uc2luY2UpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAodGhpcy55ZWFyKCkgLSBob29rcyhlcmFzW2ldLnNpbmNlKS55ZWFyKCkpICogZGlyICtcbiAgICAgICAgICAgICAgICAgICAgZXJhc1tpXS5vZmZzZXRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMueWVhcigpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVyYXNOYW1lUmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfZXJhc05hbWVSZWdleCcpKSB7XG4gICAgICAgICAgICBjb21wdXRlRXJhc1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzU3RyaWN0ID8gdGhpcy5fZXJhc05hbWVSZWdleCA6IHRoaXMuX2VyYXNSZWdleDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlcmFzQWJiclJlZ2V4KGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX2VyYXNBYmJyUmVnZXgnKSkge1xuICAgICAgICAgICAgY29tcHV0ZUVyYXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc1N0cmljdCA/IHRoaXMuX2VyYXNBYmJyUmVnZXggOiB0aGlzLl9lcmFzUmVnZXg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXJhc05hcnJvd1JlZ2V4KGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX2VyYXNOYXJyb3dSZWdleCcpKSB7XG4gICAgICAgICAgICBjb21wdXRlRXJhc1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzU3RyaWN0ID8gdGhpcy5fZXJhc05hcnJvd1JlZ2V4IDogdGhpcy5fZXJhc1JlZ2V4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hdGNoRXJhQWJicihpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuZXJhc0FiYnJSZWdleChpc1N0cmljdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF0Y2hFcmFOYW1lKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5lcmFzTmFtZVJlZ2V4KGlzU3RyaWN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXRjaEVyYU5hcnJvdyhpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuZXJhc05hcnJvd1JlZ2V4KGlzU3RyaWN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXRjaEVyYVllYXJPcmRpbmFsKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5fZXJhWWVhck9yZGluYWxSZWdleCB8fCBtYXRjaFVuc2lnbmVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVFcmFzUGFyc2UoKSB7XG4gICAgICAgIHZhciBhYmJyUGllY2VzID0gW10sXG4gICAgICAgICAgICBuYW1lUGllY2VzID0gW10sXG4gICAgICAgICAgICBuYXJyb3dQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIG1peGVkUGllY2VzID0gW10sXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIGVyYXMgPSB0aGlzLmVyYXMoKTtcblxuICAgICAgICBmb3IgKGkgPSAwLCBsID0gZXJhcy5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICAgICAgICAgIG5hbWVQaWVjZXMucHVzaChyZWdleEVzY2FwZShlcmFzW2ldLm5hbWUpKTtcbiAgICAgICAgICAgIGFiYnJQaWVjZXMucHVzaChyZWdleEVzY2FwZShlcmFzW2ldLmFiYnIpKTtcbiAgICAgICAgICAgIG5hcnJvd1BpZWNlcy5wdXNoKHJlZ2V4RXNjYXBlKGVyYXNbaV0ubmFycm93KSk7XG5cbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2gocmVnZXhFc2NhcGUoZXJhc1tpXS5uYW1lKSk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKHJlZ2V4RXNjYXBlKGVyYXNbaV0uYWJicikpO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChyZWdleEVzY2FwZShlcmFzW2ldLm5hcnJvdykpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZXJhc1JlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbWl4ZWRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl9lcmFzTmFtZVJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbmFtZVBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX2VyYXNBYmJyUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBhYmJyUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fZXJhc05hcnJvd1JlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICdeKCcgKyBuYXJyb3dQaWVjZXMuam9pbignfCcpICsgJyknLFxuICAgICAgICAgICAgJ2knXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydnZycsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndlZWtZZWFyKCkgJSAxMDA7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ0dHJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNvV2Vla1llYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4odG9rZW4sIGdldHRlcikge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbigwLCBbdG9rZW4sIHRva2VuLmxlbmd0aF0sIDAsIGdldHRlcik7XG4gICAgfVxuXG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignZ2dnZycsICd3ZWVrWWVhcicpO1xuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ2dnZ2dnJywgJ3dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignR0dHRycsICdpc29XZWVrWWVhcicpO1xuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ0dHR0dHJywgJ2lzb1dlZWtZZWFyJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ3dlZWtZZWFyJywgJ2dnJyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrWWVhcicsICdHRycpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnd2Vla1llYXInLCAxKTtcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2lzb1dlZWtZZWFyJywgMSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdHJywgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2cnLCBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignR0cnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignZ2cnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignR0dHRycsIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdnZ2dnJywgbWF0Y2gxdG80LCBtYXRjaDQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0dHR0dHJywgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2dnZ2dnJywgbWF0Y2gxdG82LCBtYXRjaDYpO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydnZ2dnJywgJ2dnZ2dnJywgJ0dHR0cnLCAnR0dHR0cnXSwgZnVuY3Rpb24gKFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgd2VlayxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICB0b2tlblxuICAgICkge1xuICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAyKV0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2dnJywgJ0dHJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuXSA9IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWtZZWFyKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBnZXRTZXRXZWVrWWVhckhlbHBlci5jYWxsKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgdGhpcy53ZWVrKCksXG4gICAgICAgICAgICB0aGlzLndlZWtkYXkoKSxcbiAgICAgICAgICAgIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyxcbiAgICAgICAgICAgIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRveVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT1dlZWtZZWFyKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBnZXRTZXRXZWVrWWVhckhlbHBlci5jYWxsKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgdGhpcy5pc29XZWVrKCksXG4gICAgICAgICAgICB0aGlzLmlzb1dlZWtkYXkoKSxcbiAgICAgICAgICAgIDEsXG4gICAgICAgICAgICA0XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SVNPV2Vla3NJblllYXIoKSB7XG4gICAgICAgIHJldHVybiB3ZWVrc0luWWVhcih0aGlzLnllYXIoKSwgMSwgNCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SVNPV2Vla3NJbklTT1dlZWtZZWFyKCkge1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy5pc29XZWVrWWVhcigpLCAxLCA0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXZWVrc0luWWVhcigpIHtcbiAgICAgICAgdmFyIHdlZWtJbmZvID0gdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWs7XG4gICAgICAgIHJldHVybiB3ZWVrc0luWWVhcih0aGlzLnllYXIoKSwgd2Vla0luZm8uZG93LCB3ZWVrSW5mby5kb3kpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFdlZWtzSW5XZWVrWWVhcigpIHtcbiAgICAgICAgdmFyIHdlZWtJbmZvID0gdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWs7XG4gICAgICAgIHJldHVybiB3ZWVrc0luWWVhcih0aGlzLndlZWtZZWFyKCksIHdlZWtJbmZvLmRvdywgd2Vla0luZm8uZG95KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrWWVhckhlbHBlcihpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtzVGFyZ2V0O1xuICAgICAgICBpZiAoaW5wdXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIodGhpcywgZG93LCBkb3kpLnllYXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3ZWVrc1RhcmdldCA9IHdlZWtzSW5ZZWFyKGlucHV0LCBkb3csIGRveSk7XG4gICAgICAgICAgICBpZiAod2VlayA+IHdlZWtzVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgd2VlayA9IHdlZWtzVGFyZ2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNldFdlZWtBbGwuY2FsbCh0aGlzLCBpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0V2Vla0FsbCh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIGRheU9mWWVhckRhdGEgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRhdGUgPSBjcmVhdGVVVENEYXRlKGRheU9mWWVhckRhdGEueWVhciwgMCwgZGF5T2ZZZWFyRGF0YS5kYXlPZlllYXIpO1xuXG4gICAgICAgIHRoaXMueWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpO1xuICAgICAgICB0aGlzLm1vbnRoKGRhdGUuZ2V0VVRDTW9udGgoKSk7XG4gICAgICAgIHRoaXMuZGF0ZShkYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdRJywgMCwgJ1FvJywgJ3F1YXJ0ZXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygncXVhcnRlcicsICdRJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdxdWFydGVyJywgNyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdRJywgbWF0Y2gxKTtcbiAgICBhZGRQYXJzZVRva2VuKCdRJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSAodG9JbnQoaW5wdXQpIC0gMSkgKiAzO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0UXVhcnRlcihpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbFxuICAgICAgICAgICAgPyBNYXRoLmNlaWwoKHRoaXMubW9udGgoKSArIDEpIC8gMylcbiAgICAgICAgICAgIDogdGhpcy5tb250aCgoaW5wdXQgLSAxKSAqIDMgKyAodGhpcy5tb250aCgpICUgMykpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdEJywgWydERCcsIDJdLCAnRG8nLCAnZGF0ZScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXRlJywgJ0QnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXRlJywgOSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdEJywgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdERCcsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdEbycsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBcIm9yZGluYWxQYXJzZVwiIGZhbGxiYWNrIGluIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAgICAgICAgcmV0dXJuIGlzU3RyaWN0XG4gICAgICAgICAgICA/IGxvY2FsZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZSB8fCBsb2NhbGUuX29yZGluYWxQYXJzZVxuICAgICAgICAgICAgOiBsb2NhbGUuX2RheU9mTW9udGhPcmRpbmFsUGFyc2VMZW5pZW50O1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ0QnLCAnREQnXSwgREFURSk7XG4gICAgYWRkUGFyc2VUb2tlbignRG8nLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W0RBVEVdID0gdG9JbnQoaW5wdXQubWF0Y2gobWF0Y2gxdG8yKVswXSk7XG4gICAgfSk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0RGF5T2ZNb250aCA9IG1ha2VHZXRTZXQoJ0RhdGUnLCB0cnVlKTtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdEREQnLCBbJ0REREQnLCAzXSwgJ0RERG8nLCAnZGF5T2ZZZWFyJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ2RheU9mWWVhcicsICdEREQnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXlPZlllYXInLCA0KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ0RERCcsIG1hdGNoMXRvMyk7XG4gICAgYWRkUmVnZXhUb2tlbignRERERCcsIG1hdGNoMyk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ0RERCcsICdEREREJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mWWVhcihpbnB1dCkge1xuICAgICAgICB2YXIgZGF5T2ZZZWFyID1cbiAgICAgICAgICAgIE1hdGgucm91bmQoXG4gICAgICAgICAgICAgICAgKHRoaXMuY2xvbmUoKS5zdGFydE9mKCdkYXknKSAtIHRoaXMuY2xvbmUoKS5zdGFydE9mKCd5ZWFyJykpIC8gODY0ZTVcbiAgICAgICAgICAgICkgKyAxO1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IGRheU9mWWVhciA6IHRoaXMuYWRkKGlucHV0IC0gZGF5T2ZZZWFyLCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdtJywgWydtbScsIDJdLCAwLCAnbWludXRlJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21pbnV0ZScsICdtJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtaW51dGUnLCAxNCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdtJywgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdtbScsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRQYXJzZVRva2VuKFsnbScsICdtbSddLCBNSU5VVEUpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldE1pbnV0ZSA9IG1ha2VHZXRTZXQoJ01pbnV0ZXMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigncycsIFsnc3MnLCAyXSwgMCwgJ3NlY29uZCcpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdzZWNvbmQnLCAncycpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnc2Vjb25kJywgMTUpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigncycsIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignc3MnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ3MnLCAnc3MnXSwgU0VDT05EKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRTZWNvbmQgPSBtYWtlR2V0U2V0KCdTZWNvbmRzJywgZmFsc2UpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1MnLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB+fih0aGlzLm1pbGxpc2Vjb25kKCkgLyAxMDApO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTUycsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB+fih0aGlzLm1pbGxpc2Vjb25kKCkgLyAxMCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTUycsIDNdLCAwLCAnbWlsbGlzZWNvbmQnKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1MnLCA0XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTUycsIDVdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1MnLCA2XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1MnLCA3XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1NTUycsIDhdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1NTU1MnLCA5XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDAwMDtcbiAgICB9KTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnbWlsbGlzZWNvbmQnLCAnbXMnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ21pbGxpc2Vjb25kJywgMTYpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignUycsIG1hdGNoMXRvMywgbWF0Y2gxKTtcbiAgICBhZGRSZWdleFRva2VuKCdTUycsIG1hdGNoMXRvMywgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdTU1MnLCBtYXRjaDF0bzMsIG1hdGNoMyk7XG5cbiAgICB2YXIgdG9rZW4sIGdldFNldE1pbGxpc2Vjb25kO1xuICAgIGZvciAodG9rZW4gPSAnU1NTUyc7IHRva2VuLmxlbmd0aCA8PSA5OyB0b2tlbiArPSAnUycpIHtcbiAgICAgICAgYWRkUmVnZXhUb2tlbih0b2tlbiwgbWF0Y2hVbnNpZ25lZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VNcyhpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTUlMTElTRUNPTkRdID0gdG9JbnQoKCcwLicgKyBpbnB1dCkgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmb3IgKHRva2VuID0gJ1MnOyB0b2tlbi5sZW5ndGggPD0gOTsgdG9rZW4gKz0gJ1MnKSB7XG4gICAgICAgIGFkZFBhcnNlVG9rZW4odG9rZW4sIHBhcnNlTXMpO1xuICAgIH1cblxuICAgIGdldFNldE1pbGxpc2Vjb25kID0gbWFrZUdldFNldCgnTWlsbGlzZWNvbmRzJywgZmFsc2UpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3onLCAwLCAwLCAnem9uZUFiYnInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignenonLCAwLCAwLCAnem9uZU5hbWUnKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFpvbmVBYmJyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyAnVVRDJyA6ICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFpvbmVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyAnQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUnIDogJyc7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvID0gTW9tZW50LnByb3RvdHlwZTtcblxuICAgIHByb3RvLmFkZCA9IGFkZDtcbiAgICBwcm90by5jYWxlbmRhciA9IGNhbGVuZGFyJDE7XG4gICAgcHJvdG8uY2xvbmUgPSBjbG9uZTtcbiAgICBwcm90by5kaWZmID0gZGlmZjtcbiAgICBwcm90by5lbmRPZiA9IGVuZE9mO1xuICAgIHByb3RvLmZvcm1hdCA9IGZvcm1hdDtcbiAgICBwcm90by5mcm9tID0gZnJvbTtcbiAgICBwcm90by5mcm9tTm93ID0gZnJvbU5vdztcbiAgICBwcm90by50byA9IHRvO1xuICAgIHByb3RvLnRvTm93ID0gdG9Ob3c7XG4gICAgcHJvdG8uZ2V0ID0gc3RyaW5nR2V0O1xuICAgIHByb3RvLmludmFsaWRBdCA9IGludmFsaWRBdDtcbiAgICBwcm90by5pc0FmdGVyID0gaXNBZnRlcjtcbiAgICBwcm90by5pc0JlZm9yZSA9IGlzQmVmb3JlO1xuICAgIHByb3RvLmlzQmV0d2VlbiA9IGlzQmV0d2VlbjtcbiAgICBwcm90by5pc1NhbWUgPSBpc1NhbWU7XG4gICAgcHJvdG8uaXNTYW1lT3JBZnRlciA9IGlzU2FtZU9yQWZ0ZXI7XG4gICAgcHJvdG8uaXNTYW1lT3JCZWZvcmUgPSBpc1NhbWVPckJlZm9yZTtcbiAgICBwcm90by5pc1ZhbGlkID0gaXNWYWxpZCQyO1xuICAgIHByb3RvLmxhbmcgPSBsYW5nO1xuICAgIHByb3RvLmxvY2FsZSA9IGxvY2FsZTtcbiAgICBwcm90by5sb2NhbGVEYXRhID0gbG9jYWxlRGF0YTtcbiAgICBwcm90by5tYXggPSBwcm90b3R5cGVNYXg7XG4gICAgcHJvdG8ubWluID0gcHJvdG90eXBlTWluO1xuICAgIHByb3RvLnBhcnNpbmdGbGFncyA9IHBhcnNpbmdGbGFncztcbiAgICBwcm90by5zZXQgPSBzdHJpbmdTZXQ7XG4gICAgcHJvdG8uc3RhcnRPZiA9IHN0YXJ0T2Y7XG4gICAgcHJvdG8uc3VidHJhY3QgPSBzdWJ0cmFjdDtcbiAgICBwcm90by50b0FycmF5ID0gdG9BcnJheTtcbiAgICBwcm90by50b09iamVjdCA9IHRvT2JqZWN0O1xuICAgIHByb3RvLnRvRGF0ZSA9IHRvRGF0ZTtcbiAgICBwcm90by50b0lTT1N0cmluZyA9IHRvSVNPU3RyaW5nO1xuICAgIHByb3RvLmluc3BlY3QgPSBpbnNwZWN0O1xuICAgIGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wuZm9yICE9IG51bGwpIHtcbiAgICAgICAgcHJvdG9bU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gJ01vbWVudDwnICsgdGhpcy5mb3JtYXQoKSArICc+JztcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcHJvdG8udG9KU09OID0gdG9KU09OO1xuICAgIHByb3RvLnRvU3RyaW5nID0gdG9TdHJpbmc7XG4gICAgcHJvdG8udW5peCA9IHVuaXg7XG4gICAgcHJvdG8udmFsdWVPZiA9IHZhbHVlT2Y7XG4gICAgcHJvdG8uY3JlYXRpb25EYXRhID0gY3JlYXRpb25EYXRhO1xuICAgIHByb3RvLmVyYU5hbWUgPSBnZXRFcmFOYW1lO1xuICAgIHByb3RvLmVyYU5hcnJvdyA9IGdldEVyYU5hcnJvdztcbiAgICBwcm90by5lcmFBYmJyID0gZ2V0RXJhQWJicjtcbiAgICBwcm90by5lcmFZZWFyID0gZ2V0RXJhWWVhcjtcbiAgICBwcm90by55ZWFyID0gZ2V0U2V0WWVhcjtcbiAgICBwcm90by5pc0xlYXBZZWFyID0gZ2V0SXNMZWFwWWVhcjtcbiAgICBwcm90by53ZWVrWWVhciA9IGdldFNldFdlZWtZZWFyO1xuICAgIHByb3RvLmlzb1dlZWtZZWFyID0gZ2V0U2V0SVNPV2Vla1llYXI7XG4gICAgcHJvdG8ucXVhcnRlciA9IHByb3RvLnF1YXJ0ZXJzID0gZ2V0U2V0UXVhcnRlcjtcbiAgICBwcm90by5tb250aCA9IGdldFNldE1vbnRoO1xuICAgIHByb3RvLmRheXNJbk1vbnRoID0gZ2V0RGF5c0luTW9udGg7XG4gICAgcHJvdG8ud2VlayA9IHByb3RvLndlZWtzID0gZ2V0U2V0V2VlaztcbiAgICBwcm90by5pc29XZWVrID0gcHJvdG8uaXNvV2Vla3MgPSBnZXRTZXRJU09XZWVrO1xuICAgIHByb3RvLndlZWtzSW5ZZWFyID0gZ2V0V2Vla3NJblllYXI7XG4gICAgcHJvdG8ud2Vla3NJbldlZWtZZWFyID0gZ2V0V2Vla3NJbldlZWtZZWFyO1xuICAgIHByb3RvLmlzb1dlZWtzSW5ZZWFyID0gZ2V0SVNPV2Vla3NJblllYXI7XG4gICAgcHJvdG8uaXNvV2Vla3NJbklTT1dlZWtZZWFyID0gZ2V0SVNPV2Vla3NJbklTT1dlZWtZZWFyO1xuICAgIHByb3RvLmRhdGUgPSBnZXRTZXREYXlPZk1vbnRoO1xuICAgIHByb3RvLmRheSA9IHByb3RvLmRheXMgPSBnZXRTZXREYXlPZldlZWs7XG4gICAgcHJvdG8ud2Vla2RheSA9IGdldFNldExvY2FsZURheU9mV2VlaztcbiAgICBwcm90by5pc29XZWVrZGF5ID0gZ2V0U2V0SVNPRGF5T2ZXZWVrO1xuICAgIHByb3RvLmRheU9mWWVhciA9IGdldFNldERheU9mWWVhcjtcbiAgICBwcm90by5ob3VyID0gcHJvdG8uaG91cnMgPSBnZXRTZXRIb3VyO1xuICAgIHByb3RvLm1pbnV0ZSA9IHByb3RvLm1pbnV0ZXMgPSBnZXRTZXRNaW51dGU7XG4gICAgcHJvdG8uc2Vjb25kID0gcHJvdG8uc2Vjb25kcyA9IGdldFNldFNlY29uZDtcbiAgICBwcm90by5taWxsaXNlY29uZCA9IHByb3RvLm1pbGxpc2Vjb25kcyA9IGdldFNldE1pbGxpc2Vjb25kO1xuICAgIHByb3RvLnV0Y09mZnNldCA9IGdldFNldE9mZnNldDtcbiAgICBwcm90by51dGMgPSBzZXRPZmZzZXRUb1VUQztcbiAgICBwcm90by5sb2NhbCA9IHNldE9mZnNldFRvTG9jYWw7XG4gICAgcHJvdG8ucGFyc2Vab25lID0gc2V0T2Zmc2V0VG9QYXJzZWRPZmZzZXQ7XG4gICAgcHJvdG8uaGFzQWxpZ25lZEhvdXJPZmZzZXQgPSBoYXNBbGlnbmVkSG91ck9mZnNldDtcbiAgICBwcm90by5pc0RTVCA9IGlzRGF5bGlnaHRTYXZpbmdUaW1lO1xuICAgIHByb3RvLmlzTG9jYWwgPSBpc0xvY2FsO1xuICAgIHByb3RvLmlzVXRjT2Zmc2V0ID0gaXNVdGNPZmZzZXQ7XG4gICAgcHJvdG8uaXNVdGMgPSBpc1V0YztcbiAgICBwcm90by5pc1VUQyA9IGlzVXRjO1xuICAgIHByb3RvLnpvbmVBYmJyID0gZ2V0Wm9uZUFiYnI7XG4gICAgcHJvdG8uem9uZU5hbWUgPSBnZXRab25lTmFtZTtcbiAgICBwcm90by5kYXRlcyA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ2RhdGVzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBkYXRlIGluc3RlYWQuJyxcbiAgICAgICAgZ2V0U2V0RGF5T2ZNb250aFxuICAgICk7XG4gICAgcHJvdG8ubW9udGhzID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9udGhzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb250aCBpbnN0ZWFkJyxcbiAgICAgICAgZ2V0U2V0TW9udGhcbiAgICApO1xuICAgIHByb3RvLnllYXJzID0gZGVwcmVjYXRlKFxuICAgICAgICAneWVhcnMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIHllYXIgaW5zdGVhZCcsXG4gICAgICAgIGdldFNldFllYXJcbiAgICApO1xuICAgIHByb3RvLnpvbmUgPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQoKS56b25lIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQoKS51dGNPZmZzZXQgaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy96b25lLycsXG4gICAgICAgIGdldFNldFpvbmVcbiAgICApO1xuICAgIHByb3RvLmlzRFNUU2hpZnRlZCA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ2lzRFNUU2hpZnRlZCBpcyBkZXByZWNhdGVkLiBTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9kc3Qtc2hpZnRlZC8gZm9yIG1vcmUgaW5mb3JtYXRpb24nLFxuICAgICAgICBpc0RheWxpZ2h0U2F2aW5nVGltZVNoaWZ0ZWRcbiAgICApO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlVW5peChpbnB1dCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJblpvbmUoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpLnBhcnNlWm9uZSgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZVBhcnNlUG9zdEZvcm1hdChzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8kMSA9IExvY2FsZS5wcm90b3R5cGU7XG5cbiAgICBwcm90byQxLmNhbGVuZGFyID0gY2FsZW5kYXI7XG4gICAgcHJvdG8kMS5sb25nRGF0ZUZvcm1hdCA9IGxvbmdEYXRlRm9ybWF0O1xuICAgIHByb3RvJDEuaW52YWxpZERhdGUgPSBpbnZhbGlkRGF0ZTtcbiAgICBwcm90byQxLm9yZGluYWwgPSBvcmRpbmFsO1xuICAgIHByb3RvJDEucHJlcGFyc2UgPSBwcmVQYXJzZVBvc3RGb3JtYXQ7XG4gICAgcHJvdG8kMS5wb3N0Zm9ybWF0ID0gcHJlUGFyc2VQb3N0Rm9ybWF0O1xuICAgIHByb3RvJDEucmVsYXRpdmVUaW1lID0gcmVsYXRpdmVUaW1lO1xuICAgIHByb3RvJDEucGFzdEZ1dHVyZSA9IHBhc3RGdXR1cmU7XG4gICAgcHJvdG8kMS5zZXQgPSBzZXQ7XG4gICAgcHJvdG8kMS5lcmFzID0gbG9jYWxlRXJhcztcbiAgICBwcm90byQxLmVyYXNQYXJzZSA9IGxvY2FsZUVyYXNQYXJzZTtcbiAgICBwcm90byQxLmVyYXNDb252ZXJ0WWVhciA9IGxvY2FsZUVyYXNDb252ZXJ0WWVhcjtcbiAgICBwcm90byQxLmVyYXNBYmJyUmVnZXggPSBlcmFzQWJiclJlZ2V4O1xuICAgIHByb3RvJDEuZXJhc05hbWVSZWdleCA9IGVyYXNOYW1lUmVnZXg7XG4gICAgcHJvdG8kMS5lcmFzTmFycm93UmVnZXggPSBlcmFzTmFycm93UmVnZXg7XG5cbiAgICBwcm90byQxLm1vbnRocyA9IGxvY2FsZU1vbnRocztcbiAgICBwcm90byQxLm1vbnRoc1Nob3J0ID0gbG9jYWxlTW9udGhzU2hvcnQ7XG4gICAgcHJvdG8kMS5tb250aHNQYXJzZSA9IGxvY2FsZU1vbnRoc1BhcnNlO1xuICAgIHByb3RvJDEubW9udGhzUmVnZXggPSBtb250aHNSZWdleDtcbiAgICBwcm90byQxLm1vbnRoc1Nob3J0UmVnZXggPSBtb250aHNTaG9ydFJlZ2V4O1xuICAgIHByb3RvJDEud2VlayA9IGxvY2FsZVdlZWs7XG4gICAgcHJvdG8kMS5maXJzdERheU9mWWVhciA9IGxvY2FsZUZpcnN0RGF5T2ZZZWFyO1xuICAgIHByb3RvJDEuZmlyc3REYXlPZldlZWsgPSBsb2NhbGVGaXJzdERheU9mV2VlaztcblxuICAgIHByb3RvJDEud2Vla2RheXMgPSBsb2NhbGVXZWVrZGF5cztcbiAgICBwcm90byQxLndlZWtkYXlzTWluID0gbG9jYWxlV2Vla2RheXNNaW47XG4gICAgcHJvdG8kMS53ZWVrZGF5c1Nob3J0ID0gbG9jYWxlV2Vla2RheXNTaG9ydDtcbiAgICBwcm90byQxLndlZWtkYXlzUGFyc2UgPSBsb2NhbGVXZWVrZGF5c1BhcnNlO1xuXG4gICAgcHJvdG8kMS53ZWVrZGF5c1JlZ2V4ID0gd2Vla2RheXNSZWdleDtcbiAgICBwcm90byQxLndlZWtkYXlzU2hvcnRSZWdleCA9IHdlZWtkYXlzU2hvcnRSZWdleDtcbiAgICBwcm90byQxLndlZWtkYXlzTWluUmVnZXggPSB3ZWVrZGF5c01pblJlZ2V4O1xuXG4gICAgcHJvdG8kMS5pc1BNID0gbG9jYWxlSXNQTTtcbiAgICBwcm90byQxLm1lcmlkaWVtID0gbG9jYWxlTWVyaWRpZW07XG5cbiAgICBmdW5jdGlvbiBnZXQkMShmb3JtYXQsIGluZGV4LCBmaWVsZCwgc2V0dGVyKSB7XG4gICAgICAgIHZhciBsb2NhbGUgPSBnZXRMb2NhbGUoKSxcbiAgICAgICAgICAgIHV0YyA9IGNyZWF0ZVVUQygpLnNldChzZXR0ZXIsIGluZGV4KTtcbiAgICAgICAgcmV0dXJuIGxvY2FsZVtmaWVsZF0odXRjLCBmb3JtYXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RNb250aHNJbXBsKGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgb3V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICBvdXRbaV0gPSBnZXQkMShmb3JtYXQsIGksIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIC8vICgpXG4gICAgLy8gKDUpXG4gICAgLy8gKGZtdCwgNSlcbiAgICAvLyAoZm10KVxuICAgIC8vICh0cnVlKVxuICAgIC8vICh0cnVlLCA1KVxuICAgIC8vICh0cnVlLCBmbXQsIDUpXG4gICAgLy8gKHRydWUsIGZtdClcbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNJbXBsKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgZmllbGQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGVTb3J0ZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgaWYgKGlzTnVtYmVyKGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IGxvY2FsZVNvcnRlZDtcbiAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgbG9jYWxlU29ydGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbG9jYWxlID0gZ2V0TG9jYWxlKCksXG4gICAgICAgICAgICBzaGlmdCA9IGxvY2FsZVNvcnRlZCA/IGxvY2FsZS5fd2Vlay5kb3cgOiAwLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIG91dCA9IFtdO1xuXG4gICAgICAgIGlmIChpbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEoZm9ybWF0LCAoaW5kZXggKyBzaGlmdCkgJSA3LCBmaWVsZCwgJ2RheScpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgb3V0W2ldID0gZ2V0JDEoZm9ybWF0LCAoaSArIHNoaWZ0KSAlIDcsIGZpZWxkLCAnZGF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TW9udGhzKGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RNb250aHNJbXBsKGZvcm1hdCwgaW5kZXgsICdtb250aHMnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TW9udGhzU2hvcnQoZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRoc1Nob3J0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5cycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5c1Nob3J0KGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5c1Nob3J0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzTWluKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5c01pbicpO1xuICAgIH1cblxuICAgIGdldFNldEdsb2JhbExvY2FsZSgnZW4nLCB7XG4gICAgICAgIGVyYXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzAwMDEtMDEtMDEnLFxuICAgICAgICAgICAgICAgIHVudGlsOiArSW5maW5pdHksXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdBbm5vIERvbWluaScsXG4gICAgICAgICAgICAgICAgbmFycm93OiAnQUQnLFxuICAgICAgICAgICAgICAgIGFiYnI6ICdBRCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMDAwMC0xMi0zMScsXG4gICAgICAgICAgICAgICAgdW50aWw6IC1JbmZpbml0eSxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0JlZm9yZSBDaHJpc3QnLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ0JDJyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnQkMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHRofHN0fG5kfHJkKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgdG9JbnQoKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFNpZGUgZWZmZWN0IGltcG9ydHNcblxuICAgIGhvb2tzLmxhbmcgPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQubGFuZyBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZSBpbnN0ZWFkLicsXG4gICAgICAgIGdldFNldEdsb2JhbExvY2FsZVxuICAgICk7XG4gICAgaG9va3MubGFuZ0RhdGEgPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQubGFuZ0RhdGEgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGVEYXRhIGluc3RlYWQuJyxcbiAgICAgICAgZ2V0TG9jYWxlXG4gICAgKTtcblxuICAgIHZhciBtYXRoQWJzID0gTWF0aC5hYnM7XG5cbiAgICBmdW5jdGlvbiBhYnMoKSB7XG4gICAgICAgIHZhciBkYXRhID0gdGhpcy5fZGF0YTtcblxuICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgPSBtYXRoQWJzKHRoaXMuX21pbGxpc2Vjb25kcyk7XG4gICAgICAgIHRoaXMuX2RheXMgPSBtYXRoQWJzKHRoaXMuX2RheXMpO1xuICAgICAgICB0aGlzLl9tb250aHMgPSBtYXRoQWJzKHRoaXMuX21vbnRocyk7XG5cbiAgICAgICAgZGF0YS5taWxsaXNlY29uZHMgPSBtYXRoQWJzKGRhdGEubWlsbGlzZWNvbmRzKTtcbiAgICAgICAgZGF0YS5zZWNvbmRzID0gbWF0aEFicyhkYXRhLnNlY29uZHMpO1xuICAgICAgICBkYXRhLm1pbnV0ZXMgPSBtYXRoQWJzKGRhdGEubWludXRlcyk7XG4gICAgICAgIGRhdGEuaG91cnMgPSBtYXRoQWJzKGRhdGEuaG91cnMpO1xuICAgICAgICBkYXRhLm1vbnRocyA9IG1hdGhBYnMoZGF0YS5tb250aHMpO1xuICAgICAgICBkYXRhLnllYXJzID0gbWF0aEFicyhkYXRhLnllYXJzKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTdWJ0cmFjdCQxKGR1cmF0aW9uLCBpbnB1dCwgdmFsdWUsIGRpcmVjdGlvbikge1xuICAgICAgICB2YXIgb3RoZXIgPSBjcmVhdGVEdXJhdGlvbihpbnB1dCwgdmFsdWUpO1xuXG4gICAgICAgIGR1cmF0aW9uLl9taWxsaXNlY29uZHMgKz0gZGlyZWN0aW9uICogb3RoZXIuX21pbGxpc2Vjb25kcztcbiAgICAgICAgZHVyYXRpb24uX2RheXMgKz0gZGlyZWN0aW9uICogb3RoZXIuX2RheXM7XG4gICAgICAgIGR1cmF0aW9uLl9tb250aHMgKz0gZGlyZWN0aW9uICogb3RoZXIuX21vbnRocztcblxuICAgICAgICByZXR1cm4gZHVyYXRpb24uX2J1YmJsZSgpO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnRzIG9ubHkgMi4wLXN0eWxlIGFkZCgxLCAncycpIG9yIGFkZChkdXJhdGlvbilcbiAgICBmdW5jdGlvbiBhZGQkMShpbnB1dCwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGFkZFN1YnRyYWN0JDEodGhpcywgaW5wdXQsIHZhbHVlLCAxKTtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0cyBvbmx5IDIuMC1zdHlsZSBzdWJ0cmFjdCgxLCAncycpIG9yIHN1YnRyYWN0KGR1cmF0aW9uKVxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0JDEoaW5wdXQsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBhZGRTdWJ0cmFjdCQxKHRoaXMsIGlucHV0LCB2YWx1ZSwgLTEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic0NlaWwobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW1iZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguY2VpbChudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnViYmxlKCkge1xuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gdGhpcy5fbWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgZGF5cyA9IHRoaXMuX2RheXMsXG4gICAgICAgICAgICBtb250aHMgPSB0aGlzLl9tb250aHMsXG4gICAgICAgICAgICBkYXRhID0gdGhpcy5fZGF0YSxcbiAgICAgICAgICAgIHNlY29uZHMsXG4gICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgaG91cnMsXG4gICAgICAgICAgICB5ZWFycyxcbiAgICAgICAgICAgIG1vbnRoc0Zyb21EYXlzO1xuXG4gICAgICAgIC8vIGlmIHdlIGhhdmUgYSBtaXggb2YgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHZhbHVlcywgYnViYmxlIGRvd24gZmlyc3RcbiAgICAgICAgLy8gY2hlY2s6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8yMTY2XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgKG1pbGxpc2Vjb25kcyA+PSAwICYmIGRheXMgPj0gMCAmJiBtb250aHMgPj0gMCkgfHxcbiAgICAgICAgICAgICAgICAobWlsbGlzZWNvbmRzIDw9IDAgJiYgZGF5cyA8PSAwICYmIG1vbnRocyA8PSAwKVxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHMpICsgZGF5cykgKiA4NjRlNTtcbiAgICAgICAgICAgIGRheXMgPSAwO1xuICAgICAgICAgICAgbW9udGhzID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY29kZSBidWJibGVzIHVwIHZhbHVlcywgc2VlIHRoZSB0ZXN0cyBmb3JcbiAgICAgICAgLy8gZXhhbXBsZXMgb2Ygd2hhdCB0aGF0IG1lYW5zLlxuICAgICAgICBkYXRhLm1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kcyAlIDEwMDA7XG5cbiAgICAgICAgc2Vjb25kcyA9IGFic0Zsb29yKG1pbGxpc2Vjb25kcyAvIDEwMDApO1xuICAgICAgICBkYXRhLnNlY29uZHMgPSBzZWNvbmRzICUgNjA7XG5cbiAgICAgICAgbWludXRlcyA9IGFic0Zsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgICAgIGRhdGEubWludXRlcyA9IG1pbnV0ZXMgJSA2MDtcblxuICAgICAgICBob3VycyA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIGRhdGEuaG91cnMgPSBob3VycyAlIDI0O1xuXG4gICAgICAgIGRheXMgKz0gYWJzRmxvb3IoaG91cnMgLyAyNCk7XG5cbiAgICAgICAgLy8gY29udmVydCBkYXlzIHRvIG1vbnRoc1xuICAgICAgICBtb250aHNGcm9tRGF5cyA9IGFic0Zsb29yKGRheXNUb01vbnRocyhkYXlzKSk7XG4gICAgICAgIG1vbnRocyArPSBtb250aHNGcm9tRGF5cztcbiAgICAgICAgZGF5cyAtPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHNGcm9tRGF5cykpO1xuXG4gICAgICAgIC8vIDEyIG1vbnRocyAtPiAxIHllYXJcbiAgICAgICAgeWVhcnMgPSBhYnNGbG9vcihtb250aHMgLyAxMik7XG4gICAgICAgIG1vbnRocyAlPSAxMjtcblxuICAgICAgICBkYXRhLmRheXMgPSBkYXlzO1xuICAgICAgICBkYXRhLm1vbnRocyA9IG1vbnRocztcbiAgICAgICAgZGF0YS55ZWFycyA9IHllYXJzO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheXNUb01vbnRocyhkYXlzKSB7XG4gICAgICAgIC8vIDQwMCB5ZWFycyBoYXZlIDE0NjA5NyBkYXlzICh0YWtpbmcgaW50byBhY2NvdW50IGxlYXAgeWVhciBydWxlcylcbiAgICAgICAgLy8gNDAwIHllYXJzIGhhdmUgMTIgbW9udGhzID09PSA0ODAwXG4gICAgICAgIHJldHVybiAoZGF5cyAqIDQ4MDApIC8gMTQ2MDk3O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoc1RvRGF5cyhtb250aHMpIHtcbiAgICAgICAgLy8gdGhlIHJldmVyc2Ugb2YgZGF5c1RvTW9udGhzXG4gICAgICAgIHJldHVybiAobW9udGhzICogMTQ2MDk3KSAvIDQ4MDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXModW5pdHMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGF5cyxcbiAgICAgICAgICAgIG1vbnRocyxcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyA9IHRoaXMuX21pbGxpc2Vjb25kcztcblxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcblxuICAgICAgICBpZiAodW5pdHMgPT09ICdtb250aCcgfHwgdW5pdHMgPT09ICdxdWFydGVyJyB8fCB1bml0cyA9PT0gJ3llYXInKSB7XG4gICAgICAgICAgICBkYXlzID0gdGhpcy5fZGF5cyArIG1pbGxpc2Vjb25kcyAvIDg2NGU1O1xuICAgICAgICAgICAgbW9udGhzID0gdGhpcy5fbW9udGhzICsgZGF5c1RvTW9udGhzKGRheXMpO1xuICAgICAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRocztcbiAgICAgICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRocyAvIDM7XG4gICAgICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb250aHMgLyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGhhbmRsZSBtaWxsaXNlY29uZHMgc2VwYXJhdGVseSBiZWNhdXNlIG9mIGZsb2F0aW5nIHBvaW50IG1hdGggZXJyb3JzIChpc3N1ZSAjMTg2NylcbiAgICAgICAgICAgIGRheXMgPSB0aGlzLl9kYXlzICsgTWF0aC5yb3VuZChtb250aHNUb0RheXModGhpcy5fbW9udGhzKSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXlzIC8gNyArIG1pbGxpc2Vjb25kcyAvIDYwNDhlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF5cyArIG1pbGxpc2Vjb25kcyAvIDg2NGU1O1xuICAgICAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF5cyAqIDI0ICsgbWlsbGlzZWNvbmRzIC8gMzZlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF5cyAqIDE0NDAgKyBtaWxsaXNlY29uZHMgLyA2ZTQ7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRheXMgKiA4NjQwMCArIG1pbGxpc2Vjb25kcyAvIDEwMDA7XG4gICAgICAgICAgICAgICAgLy8gTWF0aC5mbG9vciBwcmV2ZW50cyBmbG9hdGluZyBwb2ludCBtYXRoIGVycm9ycyBoZXJlXG4gICAgICAgICAgICAgICAgY2FzZSAnbWlsbGlzZWNvbmQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihkYXlzICogODY0ZTUpICsgbWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biB1bml0ICcgKyB1bml0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgdGhpcy5hcygnbXMnKT9cbiAgICBmdW5jdGlvbiB2YWx1ZU9mJDEoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyArXG4gICAgICAgICAgICB0aGlzLl9kYXlzICogODY0ZTUgK1xuICAgICAgICAgICAgKHRoaXMuX21vbnRocyAlIDEyKSAqIDI1OTJlNiArXG4gICAgICAgICAgICB0b0ludCh0aGlzLl9tb250aHMgLyAxMikgKiAzMTUzNmU2XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUFzKGFsaWFzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hcyhhbGlhcyk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGFzTWlsbGlzZWNvbmRzID0gbWFrZUFzKCdtcycpLFxuICAgICAgICBhc1NlY29uZHMgPSBtYWtlQXMoJ3MnKSxcbiAgICAgICAgYXNNaW51dGVzID0gbWFrZUFzKCdtJyksXG4gICAgICAgIGFzSG91cnMgPSBtYWtlQXMoJ2gnKSxcbiAgICAgICAgYXNEYXlzID0gbWFrZUFzKCdkJyksXG4gICAgICAgIGFzV2Vla3MgPSBtYWtlQXMoJ3cnKSxcbiAgICAgICAgYXNNb250aHMgPSBtYWtlQXMoJ00nKSxcbiAgICAgICAgYXNRdWFydGVycyA9IG1ha2VBcygnUScpLFxuICAgICAgICBhc1llYXJzID0gbWFrZUFzKCd5Jyk7XG5cbiAgICBmdW5jdGlvbiBjbG9uZSQxKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24odGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0JDIodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXNbdW5pdHMgKyAncyddKCkgOiBOYU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUdldHRlcihuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9kYXRhW25hbWVdIDogTmFOO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBtaWxsaXNlY29uZHMgPSBtYWtlR2V0dGVyKCdtaWxsaXNlY29uZHMnKSxcbiAgICAgICAgc2Vjb25kcyA9IG1ha2VHZXR0ZXIoJ3NlY29uZHMnKSxcbiAgICAgICAgbWludXRlcyA9IG1ha2VHZXR0ZXIoJ21pbnV0ZXMnKSxcbiAgICAgICAgaG91cnMgPSBtYWtlR2V0dGVyKCdob3VycycpLFxuICAgICAgICBkYXlzID0gbWFrZUdldHRlcignZGF5cycpLFxuICAgICAgICBtb250aHMgPSBtYWtlR2V0dGVyKCdtb250aHMnKSxcbiAgICAgICAgeWVhcnMgPSBtYWtlR2V0dGVyKCd5ZWFycycpO1xuXG4gICAgZnVuY3Rpb24gd2Vla3MoKSB7XG4gICAgICAgIHJldHVybiBhYnNGbG9vcih0aGlzLmRheXMoKSAvIDcpO1xuICAgIH1cblxuICAgIHZhciByb3VuZCA9IE1hdGgucm91bmQsXG4gICAgICAgIHRocmVzaG9sZHMgPSB7XG4gICAgICAgICAgICBzczogNDQsIC8vIGEgZmV3IHNlY29uZHMgdG8gc2Vjb25kc1xuICAgICAgICAgICAgczogNDUsIC8vIHNlY29uZHMgdG8gbWludXRlXG4gICAgICAgICAgICBtOiA0NSwgLy8gbWludXRlcyB0byBob3VyXG4gICAgICAgICAgICBoOiAyMiwgLy8gaG91cnMgdG8gZGF5XG4gICAgICAgICAgICBkOiAyNiwgLy8gZGF5cyB0byBtb250aC93ZWVrXG4gICAgICAgICAgICB3OiBudWxsLCAvLyB3ZWVrcyB0byBtb250aFxuICAgICAgICAgICAgTTogMTEsIC8vIG1vbnRocyB0byB5ZWFyXG4gICAgICAgIH07XG5cbiAgICAvLyBoZWxwZXIgZnVuY3Rpb24gZm9yIG1vbWVudC5mbi5mcm9tLCBtb21lbnQuZm4uZnJvbU5vdywgYW5kIG1vbWVudC5kdXJhdGlvbi5mbi5odW1hbml6ZVxuICAgIGZ1bmN0aW9uIHN1YnN0aXR1dGVUaW1lQWdvKHN0cmluZywgbnVtYmVyLCB3aXRob3V0U3VmZml4LCBpc0Z1dHVyZSwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUucmVsYXRpdmVUaW1lKG51bWJlciB8fCAxLCAhIXdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZSQxKHBvc05lZ0R1cmF0aW9uLCB3aXRob3V0U3VmZml4LCB0aHJlc2hvbGRzLCBsb2NhbGUpIHtcbiAgICAgICAgdmFyIGR1cmF0aW9uID0gY3JlYXRlRHVyYXRpb24ocG9zTmVnRHVyYXRpb24pLmFicygpLFxuICAgICAgICAgICAgc2Vjb25kcyA9IHJvdW5kKGR1cmF0aW9uLmFzKCdzJykpLFxuICAgICAgICAgICAgbWludXRlcyA9IHJvdW5kKGR1cmF0aW9uLmFzKCdtJykpLFxuICAgICAgICAgICAgaG91cnMgPSByb3VuZChkdXJhdGlvbi5hcygnaCcpKSxcbiAgICAgICAgICAgIGRheXMgPSByb3VuZChkdXJhdGlvbi5hcygnZCcpKSxcbiAgICAgICAgICAgIG1vbnRocyA9IHJvdW5kKGR1cmF0aW9uLmFzKCdNJykpLFxuICAgICAgICAgICAgd2Vla3MgPSByb3VuZChkdXJhdGlvbi5hcygndycpKSxcbiAgICAgICAgICAgIHllYXJzID0gcm91bmQoZHVyYXRpb24uYXMoJ3knKSksXG4gICAgICAgICAgICBhID1cbiAgICAgICAgICAgICAgICAoc2Vjb25kcyA8PSB0aHJlc2hvbGRzLnNzICYmIFsncycsIHNlY29uZHNdKSB8fFxuICAgICAgICAgICAgICAgIChzZWNvbmRzIDwgdGhyZXNob2xkcy5zICYmIFsnc3MnLCBzZWNvbmRzXSkgfHxcbiAgICAgICAgICAgICAgICAobWludXRlcyA8PSAxICYmIFsnbSddKSB8fFxuICAgICAgICAgICAgICAgIChtaW51dGVzIDwgdGhyZXNob2xkcy5tICYmIFsnbW0nLCBtaW51dGVzXSkgfHxcbiAgICAgICAgICAgICAgICAoaG91cnMgPD0gMSAmJiBbJ2gnXSkgfHxcbiAgICAgICAgICAgICAgICAoaG91cnMgPCB0aHJlc2hvbGRzLmggJiYgWydoaCcsIGhvdXJzXSkgfHxcbiAgICAgICAgICAgICAgICAoZGF5cyA8PSAxICYmIFsnZCddKSB8fFxuICAgICAgICAgICAgICAgIChkYXlzIDwgdGhyZXNob2xkcy5kICYmIFsnZGQnLCBkYXlzXSk7XG5cbiAgICAgICAgaWYgKHRocmVzaG9sZHMudyAhPSBudWxsKSB7XG4gICAgICAgICAgICBhID1cbiAgICAgICAgICAgICAgICBhIHx8XG4gICAgICAgICAgICAgICAgKHdlZWtzIDw9IDEgJiYgWyd3J10pIHx8XG4gICAgICAgICAgICAgICAgKHdlZWtzIDwgdGhyZXNob2xkcy53ICYmIFsnd3cnLCB3ZWVrc10pO1xuICAgICAgICB9XG4gICAgICAgIGEgPSBhIHx8XG4gICAgICAgICAgICAobW9udGhzIDw9IDEgJiYgWydNJ10pIHx8XG4gICAgICAgICAgICAobW9udGhzIDwgdGhyZXNob2xkcy5NICYmIFsnTU0nLCBtb250aHNdKSB8fFxuICAgICAgICAgICAgKHllYXJzIDw9IDEgJiYgWyd5J10pIHx8IFsneXknLCB5ZWFyc107XG5cbiAgICAgICAgYVsyXSA9IHdpdGhvdXRTdWZmaXg7XG4gICAgICAgIGFbM10gPSArcG9zTmVnRHVyYXRpb24gPiAwO1xuICAgICAgICBhWzRdID0gbG9jYWxlO1xuICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZVRpbWVBZ28uYXBwbHkobnVsbCwgYSk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHNldCB0aGUgcm91bmRpbmcgZnVuY3Rpb24gZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGdldFNldFJlbGF0aXZlVGltZVJvdW5kaW5nKHJvdW5kaW5nRnVuY3Rpb24pIHtcbiAgICAgICAgaWYgKHJvdW5kaW5nRnVuY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJvdW5kO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygcm91bmRpbmdGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcm91bmQgPSByb3VuZGluZ0Z1bmN0aW9uO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBzZXQgYSB0aHJlc2hvbGQgZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGdldFNldFJlbGF0aXZlVGltZVRocmVzaG9sZCh0aHJlc2hvbGQsIGxpbWl0KSB7XG4gICAgICAgIGlmICh0aHJlc2hvbGRzW3RocmVzaG9sZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaW1pdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyZXNob2xkc1t0aHJlc2hvbGRdO1xuICAgICAgICB9XG4gICAgICAgIHRocmVzaG9sZHNbdGhyZXNob2xkXSA9IGxpbWl0O1xuICAgICAgICBpZiAodGhyZXNob2xkID09PSAncycpIHtcbiAgICAgICAgICAgIHRocmVzaG9sZHMuc3MgPSBsaW1pdCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaHVtYW5pemUoYXJnV2l0aFN1ZmZpeCwgYXJnVGhyZXNob2xkcykge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB3aXRoU3VmZml4ID0gZmFsc2UsXG4gICAgICAgICAgICB0aCA9IHRocmVzaG9sZHMsXG4gICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICBvdXRwdXQ7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhcmdXaXRoU3VmZml4ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgYXJnVGhyZXNob2xkcyA9IGFyZ1dpdGhTdWZmaXg7XG4gICAgICAgICAgICBhcmdXaXRoU3VmZml4ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBhcmdXaXRoU3VmZml4ID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHdpdGhTdWZmaXggPSBhcmdXaXRoU3VmZml4O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgYXJnVGhyZXNob2xkcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHRoID0gT2JqZWN0LmFzc2lnbih7fSwgdGhyZXNob2xkcywgYXJnVGhyZXNob2xkcyk7XG4gICAgICAgICAgICBpZiAoYXJnVGhyZXNob2xkcy5zICE9IG51bGwgJiYgYXJnVGhyZXNob2xkcy5zcyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGguc3MgPSBhcmdUaHJlc2hvbGRzLnMgLSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxlID0gdGhpcy5sb2NhbGVEYXRhKCk7XG4gICAgICAgIG91dHB1dCA9IHJlbGF0aXZlVGltZSQxKHRoaXMsICF3aXRoU3VmZml4LCB0aCwgbG9jYWxlKTtcblxuICAgICAgICBpZiAod2l0aFN1ZmZpeCkge1xuICAgICAgICAgICAgb3V0cHV0ID0gbG9jYWxlLnBhc3RGdXR1cmUoK3RoaXMsIG91dHB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbG9jYWxlLnBvc3Rmb3JtYXQob3V0cHV0KTtcbiAgICB9XG5cbiAgICB2YXIgYWJzJDEgPSBNYXRoLmFicztcblxuICAgIGZ1bmN0aW9uIHNpZ24oeCkge1xuICAgICAgICByZXR1cm4gKHggPiAwKSAtICh4IDwgMCkgfHwgK3g7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9JU09TdHJpbmckMSgpIHtcbiAgICAgICAgLy8gZm9yIElTTyBzdHJpbmdzIHdlIGRvIG5vdCB1c2UgdGhlIG5vcm1hbCBidWJibGluZyBydWxlczpcbiAgICAgICAgLy8gICogbWlsbGlzZWNvbmRzIGJ1YmJsZSB1cCB1bnRpbCB0aGV5IGJlY29tZSBob3Vyc1xuICAgICAgICAvLyAgKiBkYXlzIGRvIG5vdCBidWJibGUgYXQgYWxsXG4gICAgICAgIC8vICAqIG1vbnRocyBidWJibGUgdXAgdW50aWwgdGhleSBiZWNvbWUgeWVhcnNcbiAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIHRoZXJlIGlzIG5vIGNvbnRleHQtZnJlZSBjb252ZXJzaW9uIGJldHdlZW4gaG91cnMgYW5kIGRheXNcbiAgICAgICAgLy8gKHRoaW5rIG9mIGNsb2NrIGNoYW5nZXMpXG4gICAgICAgIC8vIGFuZCBhbHNvIG5vdCBiZXR3ZWVuIGRheXMgYW5kIG1vbnRocyAoMjgtMzEgZGF5cyBwZXIgbW9udGgpXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNlY29uZHMgPSBhYnMkMSh0aGlzLl9taWxsaXNlY29uZHMpIC8gMTAwMCxcbiAgICAgICAgICAgIGRheXMgPSBhYnMkMSh0aGlzLl9kYXlzKSxcbiAgICAgICAgICAgIG1vbnRocyA9IGFicyQxKHRoaXMuX21vbnRocyksXG4gICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgaG91cnMsXG4gICAgICAgICAgICB5ZWFycyxcbiAgICAgICAgICAgIHMsXG4gICAgICAgICAgICB0b3RhbCA9IHRoaXMuYXNTZWNvbmRzKCksXG4gICAgICAgICAgICB0b3RhbFNpZ24sXG4gICAgICAgICAgICB5bVNpZ24sXG4gICAgICAgICAgICBkYXlzU2lnbixcbiAgICAgICAgICAgIGhtc1NpZ247XG5cbiAgICAgICAgaWYgKCF0b3RhbCkge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgc2FtZSBhcyBDIydzIChOb2RhKSBhbmQgcHl0aG9uIChpc29kYXRlKS4uLlxuICAgICAgICAgICAgLy8gYnV0IG5vdCBvdGhlciBKUyAoZ29vZy5kYXRlKVxuICAgICAgICAgICAgcmV0dXJuICdQMEQnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMzYwMCBzZWNvbmRzIC0+IDYwIG1pbnV0ZXMgLT4gMSBob3VyXG4gICAgICAgIG1pbnV0ZXMgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApO1xuICAgICAgICBob3VycyA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIHNlY29uZHMgJT0gNjA7XG4gICAgICAgIG1pbnV0ZXMgJT0gNjA7XG5cbiAgICAgICAgLy8gMTIgbW9udGhzIC0+IDEgeWVhclxuICAgICAgICB5ZWFycyA9IGFic0Zsb29yKG1vbnRocyAvIDEyKTtcbiAgICAgICAgbW9udGhzICU9IDEyO1xuXG4gICAgICAgIC8vIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9kb3JkaWxsZS9tb21lbnQtaXNvZHVyYXRpb24vYmxvYi9tYXN0ZXIvbW9tZW50Lmlzb2R1cmF0aW9uLmpzXG4gICAgICAgIHMgPSBzZWNvbmRzID8gc2Vjb25kcy50b0ZpeGVkKDMpLnJlcGxhY2UoL1xcLj8wKyQvLCAnJykgOiAnJztcblxuICAgICAgICB0b3RhbFNpZ24gPSB0b3RhbCA8IDAgPyAnLScgOiAnJztcbiAgICAgICAgeW1TaWduID0gc2lnbih0aGlzLl9tb250aHMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuICAgICAgICBkYXlzU2lnbiA9IHNpZ24odGhpcy5fZGF5cykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG4gICAgICAgIGhtc1NpZ24gPSBzaWduKHRoaXMuX21pbGxpc2Vjb25kcykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRvdGFsU2lnbiArXG4gICAgICAgICAgICAnUCcgK1xuICAgICAgICAgICAgKHllYXJzID8geW1TaWduICsgeWVhcnMgKyAnWScgOiAnJykgK1xuICAgICAgICAgICAgKG1vbnRocyA/IHltU2lnbiArIG1vbnRocyArICdNJyA6ICcnKSArXG4gICAgICAgICAgICAoZGF5cyA/IGRheXNTaWduICsgZGF5cyArICdEJyA6ICcnKSArXG4gICAgICAgICAgICAoaG91cnMgfHwgbWludXRlcyB8fCBzZWNvbmRzID8gJ1QnIDogJycpICtcbiAgICAgICAgICAgIChob3VycyA/IGhtc1NpZ24gKyBob3VycyArICdIJyA6ICcnKSArXG4gICAgICAgICAgICAobWludXRlcyA/IGhtc1NpZ24gKyBtaW51dGVzICsgJ00nIDogJycpICtcbiAgICAgICAgICAgIChzZWNvbmRzID8gaG1zU2lnbiArIHMgKyAnUycgOiAnJylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8kMiA9IER1cmF0aW9uLnByb3RvdHlwZTtcblxuICAgIHByb3RvJDIuaXNWYWxpZCA9IGlzVmFsaWQkMTtcbiAgICBwcm90byQyLmFicyA9IGFicztcbiAgICBwcm90byQyLmFkZCA9IGFkZCQxO1xuICAgIHByb3RvJDIuc3VidHJhY3QgPSBzdWJ0cmFjdCQxO1xuICAgIHByb3RvJDIuYXMgPSBhcztcbiAgICBwcm90byQyLmFzTWlsbGlzZWNvbmRzID0gYXNNaWxsaXNlY29uZHM7XG4gICAgcHJvdG8kMi5hc1NlY29uZHMgPSBhc1NlY29uZHM7XG4gICAgcHJvdG8kMi5hc01pbnV0ZXMgPSBhc01pbnV0ZXM7XG4gICAgcHJvdG8kMi5hc0hvdXJzID0gYXNIb3VycztcbiAgICBwcm90byQyLmFzRGF5cyA9IGFzRGF5cztcbiAgICBwcm90byQyLmFzV2Vla3MgPSBhc1dlZWtzO1xuICAgIHByb3RvJDIuYXNNb250aHMgPSBhc01vbnRocztcbiAgICBwcm90byQyLmFzUXVhcnRlcnMgPSBhc1F1YXJ0ZXJzO1xuICAgIHByb3RvJDIuYXNZZWFycyA9IGFzWWVhcnM7XG4gICAgcHJvdG8kMi52YWx1ZU9mID0gdmFsdWVPZiQxO1xuICAgIHByb3RvJDIuX2J1YmJsZSA9IGJ1YmJsZTtcbiAgICBwcm90byQyLmNsb25lID0gY2xvbmUkMTtcbiAgICBwcm90byQyLmdldCA9IGdldCQyO1xuICAgIHByb3RvJDIubWlsbGlzZWNvbmRzID0gbWlsbGlzZWNvbmRzO1xuICAgIHByb3RvJDIuc2Vjb25kcyA9IHNlY29uZHM7XG4gICAgcHJvdG8kMi5taW51dGVzID0gbWludXRlcztcbiAgICBwcm90byQyLmhvdXJzID0gaG91cnM7XG4gICAgcHJvdG8kMi5kYXlzID0gZGF5cztcbiAgICBwcm90byQyLndlZWtzID0gd2Vla3M7XG4gICAgcHJvdG8kMi5tb250aHMgPSBtb250aHM7XG4gICAgcHJvdG8kMi55ZWFycyA9IHllYXJzO1xuICAgIHByb3RvJDIuaHVtYW5pemUgPSBodW1hbml6ZTtcbiAgICBwcm90byQyLnRvSVNPU3RyaW5nID0gdG9JU09TdHJpbmckMTtcbiAgICBwcm90byQyLnRvU3RyaW5nID0gdG9JU09TdHJpbmckMTtcbiAgICBwcm90byQyLnRvSlNPTiA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi5sb2NhbGUgPSBsb2NhbGU7XG4gICAgcHJvdG8kMi5sb2NhbGVEYXRhID0gbG9jYWxlRGF0YTtcblxuICAgIHByb3RvJDIudG9Jc29TdHJpbmcgPSBkZXByZWNhdGUoXG4gICAgICAgICd0b0lzb1N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdG9JU09TdHJpbmcoKSBpbnN0ZWFkIChub3RpY2UgdGhlIGNhcGl0YWxzKScsXG4gICAgICAgIHRvSVNPU3RyaW5nJDFcbiAgICApO1xuICAgIHByb3RvJDIubGFuZyA9IGxhbmc7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignWCcsIDAsIDAsICd1bml4Jyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ3gnLCAwLCAwLCAndmFsdWVPZicpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigneCcsIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdYJywgbWF0Y2hUaW1lc3RhbXApO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1gnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUocGFyc2VGbG9hdChpbnB1dCkgKiAxMDAwKTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCd4JywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKHRvSW50KGlucHV0KSk7XG4gICAgfSk7XG5cbiAgICAvLyEgbW9tZW50LmpzXG5cbiAgICBob29rcy52ZXJzaW9uID0gJzIuMjcuMCc7XG5cbiAgICBzZXRIb29rQ2FsbGJhY2soY3JlYXRlTG9jYWwpO1xuXG4gICAgaG9va3MuZm4gPSBwcm90bztcbiAgICBob29rcy5taW4gPSBtaW47XG4gICAgaG9va3MubWF4ID0gbWF4O1xuICAgIGhvb2tzLm5vdyA9IG5vdztcbiAgICBob29rcy51dGMgPSBjcmVhdGVVVEM7XG4gICAgaG9va3MudW5peCA9IGNyZWF0ZVVuaXg7XG4gICAgaG9va3MubW9udGhzID0gbGlzdE1vbnRocztcbiAgICBob29rcy5pc0RhdGUgPSBpc0RhdGU7XG4gICAgaG9va3MubG9jYWxlID0gZ2V0U2V0R2xvYmFsTG9jYWxlO1xuICAgIGhvb2tzLmludmFsaWQgPSBjcmVhdGVJbnZhbGlkO1xuICAgIGhvb2tzLmR1cmF0aW9uID0gY3JlYXRlRHVyYXRpb247XG4gICAgaG9va3MuaXNNb21lbnQgPSBpc01vbWVudDtcbiAgICBob29rcy53ZWVrZGF5cyA9IGxpc3RXZWVrZGF5cztcbiAgICBob29rcy5wYXJzZVpvbmUgPSBjcmVhdGVJblpvbmU7XG4gICAgaG9va3MubG9jYWxlRGF0YSA9IGdldExvY2FsZTtcbiAgICBob29rcy5pc0R1cmF0aW9uID0gaXNEdXJhdGlvbjtcbiAgICBob29rcy5tb250aHNTaG9ydCA9IGxpc3RNb250aHNTaG9ydDtcbiAgICBob29rcy53ZWVrZGF5c01pbiA9IGxpc3RXZWVrZGF5c01pbjtcbiAgICBob29rcy5kZWZpbmVMb2NhbGUgPSBkZWZpbmVMb2NhbGU7XG4gICAgaG9va3MudXBkYXRlTG9jYWxlID0gdXBkYXRlTG9jYWxlO1xuICAgIGhvb2tzLmxvY2FsZXMgPSBsaXN0TG9jYWxlcztcbiAgICBob29rcy53ZWVrZGF5c1Nob3J0ID0gbGlzdFdlZWtkYXlzU2hvcnQ7XG4gICAgaG9va3Mubm9ybWFsaXplVW5pdHMgPSBub3JtYWxpemVVbml0cztcbiAgICBob29rcy5yZWxhdGl2ZVRpbWVSb3VuZGluZyA9IGdldFNldFJlbGF0aXZlVGltZVJvdW5kaW5nO1xuICAgIGhvb2tzLnJlbGF0aXZlVGltZVRocmVzaG9sZCA9IGdldFNldFJlbGF0aXZlVGltZVRocmVzaG9sZDtcbiAgICBob29rcy5jYWxlbmRhckZvcm1hdCA9IGdldENhbGVuZGFyRm9ybWF0O1xuICAgIGhvb2tzLnByb3RvdHlwZSA9IHByb3RvO1xuXG4gICAgLy8gY3VycmVudGx5IEhUTUw1IGlucHV0IHR5cGUgb25seSBzdXBwb3J0cyAyNC1ob3VyIGZvcm1hdHNcbiAgICBob29rcy5IVE1MNV9GTVQgPSB7XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMOiAnWVlZWS1NTS1ERFRISDptbScsIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiAvPlxuICAgICAgICBEQVRFVElNRV9MT0NBTF9TRUNPTkRTOiAnWVlZWS1NTS1ERFRISDptbTpzcycsIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiBzdGVwPVwiMVwiIC8+XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMX01TOiAnWVlZWS1NTS1ERFRISDptbTpzcy5TU1MnLCAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgc3RlcD1cIjAuMDAxXCIgLz5cbiAgICAgICAgREFURTogJ1lZWVktTU0tREQnLCAvLyA8aW5wdXQgdHlwZT1cImRhdGVcIiAvPlxuICAgICAgICBUSU1FOiAnSEg6bW0nLCAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiAvPlxuICAgICAgICBUSU1FX1NFQ09ORFM6ICdISDptbTpzcycsIC8vIDxpbnB1dCB0eXBlPVwidGltZVwiIHN0ZXA9XCIxXCIgLz5cbiAgICAgICAgVElNRV9NUzogJ0hIOm1tOnNzLlNTUycsIC8vIDxpbnB1dCB0eXBlPVwidGltZVwiIHN0ZXA9XCIwLjAwMVwiIC8+XG4gICAgICAgIFdFRUs6ICdHR0dHLVtXXVdXJywgLy8gPGlucHV0IHR5cGU9XCJ3ZWVrXCIgLz5cbiAgICAgICAgTU9OVEg6ICdZWVlZLU1NJywgLy8gPGlucHV0IHR5cGU9XCJtb250aFwiIC8+XG4gICAgfTtcblxuICAgIHJldHVybiBob29rcztcblxufSkpKTtcbiIsImZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7XG4gIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgXCJkZWZhdWx0XCI6IG9ialxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcblxuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn0iLCJmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqO1xuICAgIH07XG5cbiAgICBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqO1xuICAgIH07XG5cbiAgICBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gX3R5cGVvZihvYmopO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF90eXBlb2Y7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7IiwiaW1wb3J0IGFycmF5V2l0aEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aEhvbGVzLmpzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5TGltaXQgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIjtcbmltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IG5vbkl0ZXJhYmxlUmVzdCBmcm9tIFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkge1xuICB2YXIgX2kgPSBhcnIgJiYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgYXJyW1N5bWJvbC5pdGVyYXRvcl0gfHwgYXJyW1wiQEBpdGVyYXRvclwiXSk7XG5cbiAgaWYgKF9pID09IG51bGwpIHJldHVybjtcbiAgdmFyIF9hcnIgPSBbXTtcbiAgdmFyIF9uID0gdHJ1ZTtcbiAgdmFyIF9kID0gZmFsc2U7XG5cbiAgdmFyIF9zLCBfZTtcblxuICB0cnkge1xuICAgIGZvciAoX2kgPSBfaS5jYWxsKGFycik7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7XG5cbiAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9kID0gdHJ1ZTtcbiAgICBfZSA9IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoX2QpIHRocm93IF9lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfYXJyO1xufSIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpW1wiZGVmYXVsdFwiXTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7XG4gIGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDtcbiAgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTtcbiAgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpO1xuICByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkge1xuICAgIHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDtcbiAgfSkobm9kZUludGVyb3ApO1xufVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7XG4gIGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiB7XG4gICAgICBcImRlZmF1bHRcIjogb2JqXG4gICAgfTtcbiAgfVxuXG4gIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7XG5cbiAgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7XG4gICAgcmV0dXJuIGNhY2hlLmdldChvYmopO1xuICB9XG5cbiAgdmFyIG5ld09iaiA9IHt9O1xuICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuXG4gICAgICBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7XG5cbiAgaWYgKGNhY2hlKSB7XG4gICAgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTtcbiAgfVxuXG4gIHJldHVybiBuZXdPYmo7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQ7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7IiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBjaGVja0RDRSgpIHtcbiAgLyogZ2xvYmFsIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAqL1xuICBpZiAoXG4gICAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFICE9PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIFRoaXMgYnJhbmNoIGlzIHVucmVhY2hhYmxlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZFxuICAgIC8vIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgY29uZGl0aW9uIGlzIHRydWUgb25seSBpbiBkZXZlbG9wbWVudC5cbiAgICAvLyBUaGVyZWZvcmUgaWYgdGhlIGJyYW5jaCBpcyBzdGlsbCBoZXJlLCBkZWFkIGNvZGUgZWxpbWluYXRpb24gd2Fzbid0XG4gICAgLy8gcHJvcGVybHkgYXBwbGllZC5cbiAgICAvLyBEb24ndCBjaGFuZ2UgdGhlIG1lc3NhZ2UuIFJlYWN0IERldlRvb2xzIHJlbGllcyBvbiBpdC4gQWxzbyBtYWtlIHN1cmVcbiAgICAvLyB0aGlzIG1lc3NhZ2UgZG9lc24ndCBvY2N1ciBlbHNld2hlcmUgaW4gdGhpcyBmdW5jdGlvbiwgb3IgaXQgd2lsbCBjYXVzZVxuICAgIC8vIGEgZmFsc2UgcG9zaXRpdmUuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdeX14nKTtcbiAgfVxuICB0cnkge1xuICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBjb2RlIGFib3ZlIGhhcyBiZWVuIGRlYWQgY29kZSBlbGltaW5hdGVkIChEQ0UnZCkuXG4gICAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKGNoZWNrRENFKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gRGV2VG9vbHMgc2hvdWxkbid0IGNyYXNoIFJlYWN0LCBubyBtYXR0ZXIgd2hhdC5cbiAgICAvLyBXZSBzaG91bGQgc3RpbGwgcmVwb3J0IGluIGNhc2Ugd2UgYnJlYWsgdGhpcyBjb2RlLlxuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgfVxufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAvLyBEQ0UgY2hlY2sgc2hvdWxkIGhhcHBlbiBiZWZvcmUgUmVhY3RET00gYnVuZGxlIGV4ZWN1dGVzIHNvIHRoYXRcbiAgLy8gRGV2VG9vbHMgY2FuIHJlcG9ydCBiYWQgbWluaWZpY2F0aW9uIGR1cmluZyBpbmplY3Rpb24uXG4gIGNoZWNrRENFKCk7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWRvbS5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuXG4gIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbiAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHM7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7IiwiZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2RlZmluZVByb3BlcnR5O1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyIsImltcG9ydCBhcnJheVdpdGhvdXRIb2xlcyBmcm9tIFwiLi9hcnJheVdpdGhvdXRIb2xlcy5qc1wiO1xuaW1wb3J0IGl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi9pdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IG5vbkl0ZXJhYmxlU3ByZWFkIGZyb20gXCIuL25vbkl0ZXJhYmxlU3ByZWFkLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IGl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFycikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn0iLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KGFycik7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn0iLCJpbXBvcnQgb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiLi9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkge1xuICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcbiAgdmFyIHRhcmdldCA9IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7XG4gIHZhciBrZXksIGk7XG5cbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldO1xuICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7XG4gICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkge1xuICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gIHZhciBrZXksIGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59IiwiaW1wb3J0IF9jdXJyeTEgZnJvbSBcIi4vX2N1cnJ5MS5qc1wiO1xuaW1wb3J0IF9pc1BsYWNlaG9sZGVyIGZyb20gXCIuL19pc1BsYWNlaG9sZGVyLmpzXCI7XG4vKipcbiAqIE9wdGltaXplZCBpbnRlcm5hbCB0d28tYXJpdHkgY3VycnkgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIGN1cnJ5LlxuICogQHJldHVybiB7RnVuY3Rpb259IFRoZSBjdXJyaWVkIGZ1bmN0aW9uLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jdXJyeTIoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYyKGEsIGIpIHtcbiAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgcmV0dXJuIGYyO1xuXG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiBfaXNQbGFjZWhvbGRlcihhKSA/IGYyIDogX2N1cnJ5MShmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgICByZXR1cm4gZm4oYSwgX2IpO1xuICAgICAgICB9KTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIF9pc1BsYWNlaG9sZGVyKGEpICYmIF9pc1BsYWNlaG9sZGVyKGIpID8gZjIgOiBfaXNQbGFjZWhvbGRlcihhKSA/IF9jdXJyeTEoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgcmV0dXJuIGZuKF9hLCBiKTtcbiAgICAgICAgfSkgOiBfaXNQbGFjZWhvbGRlcihiKSA/IF9jdXJyeTEoZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgcmV0dXJuIGZuKGEsIF9iKTtcbiAgICAgICAgfSkgOiBmbihhLCBiKTtcbiAgICB9XG4gIH07XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2Fzc2lnblwiKTtcblxudmFyIF9hc3NpZ24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzaWduKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gX2Fzc2lnbjIuZGVmYXVsdCB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcblxuICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn07IiwiLyoqXG4gKiBAaWdub3JlXG4gKiBzb21lIGtleS1jb2RlcyBkZWZpbml0aW9uIGFuZCB1dGlscyBmcm9tIGNsb3N1cmUtbGlicmFyeVxuICogQGF1dGhvciB5aW1pbmdoZUBnbWFpbC5jb21cbiAqL1xudmFyIEtleUNvZGUgPSB7XG4gIC8qKlxuICAgKiBNQUNfRU5URVJcbiAgICovXG4gIE1BQ19FTlRFUjogMyxcblxuICAvKipcbiAgICogQkFDS1NQQUNFXG4gICAqL1xuICBCQUNLU1BBQ0U6IDgsXG5cbiAgLyoqXG4gICAqIFRBQlxuICAgKi9cbiAgVEFCOiA5LFxuXG4gIC8qKlxuICAgKiBOVU1MT0NLIG9uIEZGL1NhZmFyaSBNYWNcbiAgICovXG4gIE5VTV9DRU5URVI6IDEyLFxuXG4gIC8qKlxuICAgKiBFTlRFUlxuICAgKi9cbiAgRU5URVI6IDEzLFxuXG4gIC8qKlxuICAgKiBTSElGVFxuICAgKi9cbiAgU0hJRlQ6IDE2LFxuXG4gIC8qKlxuICAgKiBDVFJMXG4gICAqL1xuICBDVFJMOiAxNyxcblxuICAvKipcbiAgICogQUxUXG4gICAqL1xuICBBTFQ6IDE4LFxuXG4gIC8qKlxuICAgKiBQQVVTRVxuICAgKi9cbiAgUEFVU0U6IDE5LFxuXG4gIC8qKlxuICAgKiBDQVBTX0xPQ0tcbiAgICovXG4gIENBUFNfTE9DSzogMjAsXG5cbiAgLyoqXG4gICAqIEVTQ1xuICAgKi9cbiAgRVNDOiAyNyxcblxuICAvKipcbiAgICogU1BBQ0VcbiAgICovXG4gIFNQQUNFOiAzMixcblxuICAvKipcbiAgICogUEFHRV9VUFxuICAgKi9cbiAgUEFHRV9VUDogMzMsXG5cbiAgLyoqXG4gICAqIFBBR0VfRE9XTlxuICAgKi9cbiAgUEFHRV9ET1dOOiAzNCxcblxuICAvKipcbiAgICogRU5EXG4gICAqL1xuICBFTkQ6IDM1LFxuXG4gIC8qKlxuICAgKiBIT01FXG4gICAqL1xuICBIT01FOiAzNixcblxuICAvKipcbiAgICogTEVGVFxuICAgKi9cbiAgTEVGVDogMzcsXG5cbiAgLyoqXG4gICAqIFVQXG4gICAqL1xuICBVUDogMzgsXG5cbiAgLyoqXG4gICAqIFJJR0hUXG4gICAqL1xuICBSSUdIVDogMzksXG5cbiAgLyoqXG4gICAqIERPV05cbiAgICovXG4gIERPV046IDQwLFxuXG4gIC8qKlxuICAgKiBQUklOVF9TQ1JFRU5cbiAgICovXG4gIFBSSU5UX1NDUkVFTjogNDQsXG5cbiAgLyoqXG4gICAqIElOU0VSVFxuICAgKi9cbiAgSU5TRVJUOiA0NSxcblxuICAvKipcbiAgICogREVMRVRFXG4gICAqL1xuICBERUxFVEU6IDQ2LFxuXG4gIC8qKlxuICAgKiBaRVJPXG4gICAqL1xuICBaRVJPOiA0OCxcblxuICAvKipcbiAgICogT05FXG4gICAqL1xuICBPTkU6IDQ5LFxuXG4gIC8qKlxuICAgKiBUV09cbiAgICovXG4gIFRXTzogNTAsXG5cbiAgLyoqXG4gICAqIFRIUkVFXG4gICAqL1xuICBUSFJFRTogNTEsXG5cbiAgLyoqXG4gICAqIEZPVVJcbiAgICovXG4gIEZPVVI6IDUyLFxuXG4gIC8qKlxuICAgKiBGSVZFXG4gICAqL1xuICBGSVZFOiA1MyxcblxuICAvKipcbiAgICogU0lYXG4gICAqL1xuICBTSVg6IDU0LFxuXG4gIC8qKlxuICAgKiBTRVZFTlxuICAgKi9cbiAgU0VWRU46IDU1LFxuXG4gIC8qKlxuICAgKiBFSUdIVFxuICAgKi9cbiAgRUlHSFQ6IDU2LFxuXG4gIC8qKlxuICAgKiBOSU5FXG4gICAqL1xuICBOSU5FOiA1NyxcblxuICAvKipcbiAgICogUVVFU1RJT05fTUFSS1xuICAgKi9cbiAgUVVFU1RJT05fTUFSSzogNjMsXG5cbiAgLyoqXG4gICAqIEFcbiAgICovXG4gIEE6IDY1LFxuXG4gIC8qKlxuICAgKiBCXG4gICAqL1xuICBCOiA2NixcblxuICAvKipcbiAgICogQ1xuICAgKi9cbiAgQzogNjcsXG5cbiAgLyoqXG4gICAqIERcbiAgICovXG4gIEQ6IDY4LFxuXG4gIC8qKlxuICAgKiBFXG4gICAqL1xuICBFOiA2OSxcblxuICAvKipcbiAgICogRlxuICAgKi9cbiAgRjogNzAsXG5cbiAgLyoqXG4gICAqIEdcbiAgICovXG4gIEc6IDcxLFxuXG4gIC8qKlxuICAgKiBIXG4gICAqL1xuICBIOiA3MixcblxuICAvKipcbiAgICogSVxuICAgKi9cbiAgSTogNzMsXG5cbiAgLyoqXG4gICAqIEpcbiAgICovXG4gIEo6IDc0LFxuXG4gIC8qKlxuICAgKiBLXG4gICAqL1xuICBLOiA3NSxcblxuICAvKipcbiAgICogTFxuICAgKi9cbiAgTDogNzYsXG5cbiAgLyoqXG4gICAqIE1cbiAgICovXG4gIE06IDc3LFxuXG4gIC8qKlxuICAgKiBOXG4gICAqL1xuICBOOiA3OCxcblxuICAvKipcbiAgICogT1xuICAgKi9cbiAgTzogNzksXG5cbiAgLyoqXG4gICAqIFBcbiAgICovXG4gIFA6IDgwLFxuXG4gIC8qKlxuICAgKiBRXG4gICAqL1xuICBROiA4MSxcblxuICAvKipcbiAgICogUlxuICAgKi9cbiAgUjogODIsXG5cbiAgLyoqXG4gICAqIFNcbiAgICovXG4gIFM6IDgzLFxuXG4gIC8qKlxuICAgKiBUXG4gICAqL1xuICBUOiA4NCxcblxuICAvKipcbiAgICogVVxuICAgKi9cbiAgVTogODUsXG5cbiAgLyoqXG4gICAqIFZcbiAgICovXG4gIFY6IDg2LFxuXG4gIC8qKlxuICAgKiBXXG4gICAqL1xuICBXOiA4NyxcblxuICAvKipcbiAgICogWFxuICAgKi9cbiAgWDogODgsXG5cbiAgLyoqXG4gICAqIFlcbiAgICovXG4gIFk6IDg5LFxuXG4gIC8qKlxuICAgKiBaXG4gICAqL1xuICBaOiA5MCxcblxuICAvKipcbiAgICogTUVUQVxuICAgKi9cbiAgTUVUQTogOTEsXG5cbiAgLyoqXG4gICAqIFdJTl9LRVlfUklHSFRcbiAgICovXG4gIFdJTl9LRVlfUklHSFQ6IDkyLFxuXG4gIC8qKlxuICAgKiBDT05URVhUX01FTlVcbiAgICovXG4gIENPTlRFWFRfTUVOVTogOTMsXG5cbiAgLyoqXG4gICAqIE5VTV9aRVJPXG4gICAqL1xuICBOVU1fWkVSTzogOTYsXG5cbiAgLyoqXG4gICAqIE5VTV9PTkVcbiAgICovXG4gIE5VTV9PTkU6IDk3LFxuXG4gIC8qKlxuICAgKiBOVU1fVFdPXG4gICAqL1xuICBOVU1fVFdPOiA5OCxcblxuICAvKipcbiAgICogTlVNX1RIUkVFXG4gICAqL1xuICBOVU1fVEhSRUU6IDk5LFxuXG4gIC8qKlxuICAgKiBOVU1fRk9VUlxuICAgKi9cbiAgTlVNX0ZPVVI6IDEwMCxcblxuICAvKipcbiAgICogTlVNX0ZJVkVcbiAgICovXG4gIE5VTV9GSVZFOiAxMDEsXG5cbiAgLyoqXG4gICAqIE5VTV9TSVhcbiAgICovXG4gIE5VTV9TSVg6IDEwMixcblxuICAvKipcbiAgICogTlVNX1NFVkVOXG4gICAqL1xuICBOVU1fU0VWRU46IDEwMyxcblxuICAvKipcbiAgICogTlVNX0VJR0hUXG4gICAqL1xuICBOVU1fRUlHSFQ6IDEwNCxcblxuICAvKipcbiAgICogTlVNX05JTkVcbiAgICovXG4gIE5VTV9OSU5FOiAxMDUsXG5cbiAgLyoqXG4gICAqIE5VTV9NVUxUSVBMWVxuICAgKi9cbiAgTlVNX01VTFRJUExZOiAxMDYsXG5cbiAgLyoqXG4gICAqIE5VTV9QTFVTXG4gICAqL1xuICBOVU1fUExVUzogMTA3LFxuXG4gIC8qKlxuICAgKiBOVU1fTUlOVVNcbiAgICovXG4gIE5VTV9NSU5VUzogMTA5LFxuXG4gIC8qKlxuICAgKiBOVU1fUEVSSU9EXG4gICAqL1xuICBOVU1fUEVSSU9EOiAxMTAsXG5cbiAgLyoqXG4gICAqIE5VTV9ESVZJU0lPTlxuICAgKi9cbiAgTlVNX0RJVklTSU9OOiAxMTEsXG5cbiAgLyoqXG4gICAqIEYxXG4gICAqL1xuICBGMTogMTEyLFxuXG4gIC8qKlxuICAgKiBGMlxuICAgKi9cbiAgRjI6IDExMyxcblxuICAvKipcbiAgICogRjNcbiAgICovXG4gIEYzOiAxMTQsXG5cbiAgLyoqXG4gICAqIEY0XG4gICAqL1xuICBGNDogMTE1LFxuXG4gIC8qKlxuICAgKiBGNVxuICAgKi9cbiAgRjU6IDExNixcblxuICAvKipcbiAgICogRjZcbiAgICovXG4gIEY2OiAxMTcsXG5cbiAgLyoqXG4gICAqIEY3XG4gICAqL1xuICBGNzogMTE4LFxuXG4gIC8qKlxuICAgKiBGOFxuICAgKi9cbiAgRjg6IDExOSxcblxuICAvKipcbiAgICogRjlcbiAgICovXG4gIEY5OiAxMjAsXG5cbiAgLyoqXG4gICAqIEYxMFxuICAgKi9cbiAgRjEwOiAxMjEsXG5cbiAgLyoqXG4gICAqIEYxMVxuICAgKi9cbiAgRjExOiAxMjIsXG5cbiAgLyoqXG4gICAqIEYxMlxuICAgKi9cbiAgRjEyOiAxMjMsXG5cbiAgLyoqXG4gICAqIE5VTUxPQ0tcbiAgICovXG4gIE5VTUxPQ0s6IDE0NCxcblxuICAvKipcbiAgICogU0VNSUNPTE9OXG4gICAqL1xuICBTRU1JQ09MT046IDE4NixcblxuICAvKipcbiAgICogREFTSFxuICAgKi9cbiAgREFTSDogMTg5LFxuXG4gIC8qKlxuICAgKiBFUVVBTFNcbiAgICovXG4gIEVRVUFMUzogMTg3LFxuXG4gIC8qKlxuICAgKiBDT01NQVxuICAgKi9cbiAgQ09NTUE6IDE4OCxcblxuICAvKipcbiAgICogUEVSSU9EXG4gICAqL1xuICBQRVJJT0Q6IDE5MCxcblxuICAvKipcbiAgICogU0xBU0hcbiAgICovXG4gIFNMQVNIOiAxOTEsXG5cbiAgLyoqXG4gICAqIEFQT1NUUk9QSEVcbiAgICovXG4gIEFQT1NUUk9QSEU6IDE5MixcblxuICAvKipcbiAgICogU0lOR0xFX1FVT1RFXG4gICAqL1xuICBTSU5HTEVfUVVPVEU6IDIyMixcblxuICAvKipcbiAgICogT1BFTl9TUVVBUkVfQlJBQ0tFVFxuICAgKi9cbiAgT1BFTl9TUVVBUkVfQlJBQ0tFVDogMjE5LFxuXG4gIC8qKlxuICAgKiBCQUNLU0xBU0hcbiAgICovXG4gIEJBQ0tTTEFTSDogMjIwLFxuXG4gIC8qKlxuICAgKiBDTE9TRV9TUVVBUkVfQlJBQ0tFVFxuICAgKi9cbiAgQ0xPU0VfU1FVQVJFX0JSQUNLRVQ6IDIyMSxcblxuICAvKipcbiAgICogV0lOX0tFWVxuICAgKi9cbiAgV0lOX0tFWTogMjI0LFxuXG4gIC8qKlxuICAgKiBNQUNfRkZfTUVUQVxuICAgKi9cbiAgTUFDX0ZGX01FVEE6IDIyNCxcblxuICAvKipcbiAgICogV0lOX0lNRVxuICAgKi9cbiAgV0lOX0lNRTogMjI5LFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT0gRnVuY3Rpb24gPT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIHdoZXRoZXIgdGV4dCBhbmQgbW9kaWZpZWQga2V5IGlzIGVudGVyZWQgYXQgdGhlIHNhbWUgdGltZS5cbiAgICovXG4gIGlzVGV4dE1vZGlmeWluZ0tleUV2ZW50OiBmdW5jdGlvbiBpc1RleHRNb2RpZnlpbmdLZXlFdmVudChlKSB7XG4gICAgdmFyIGtleUNvZGUgPSBlLmtleUNvZGU7XG5cbiAgICBpZiAoZS5hbHRLZXkgJiYgIWUuY3RybEtleSB8fCBlLm1ldGFLZXkgfHwgLy8gRnVuY3Rpb24ga2V5cyBkb24ndCBnZW5lcmF0ZSB0ZXh0XG4gICAga2V5Q29kZSA+PSBLZXlDb2RlLkYxICYmIGtleUNvZGUgPD0gS2V5Q29kZS5GMTIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIFRoZSBmb2xsb3dpbmcga2V5cyBhcmUgcXVpdGUgaGFybWxlc3MsIGV2ZW4gaW4gY29tYmluYXRpb24gd2l0aFxuICAgIC8vIENUUkwsIEFMVCBvciBTSElGVC5cblxuXG4gICAgc3dpdGNoIChrZXlDb2RlKSB7XG4gICAgICBjYXNlIEtleUNvZGUuQUxUOlxuICAgICAgY2FzZSBLZXlDb2RlLkNBUFNfTE9DSzpcbiAgICAgIGNhc2UgS2V5Q29kZS5DT05URVhUX01FTlU6XG4gICAgICBjYXNlIEtleUNvZGUuQ1RSTDpcbiAgICAgIGNhc2UgS2V5Q29kZS5ET1dOOlxuICAgICAgY2FzZSBLZXlDb2RlLkVORDpcbiAgICAgIGNhc2UgS2V5Q29kZS5FU0M6XG4gICAgICBjYXNlIEtleUNvZGUuSE9NRTpcbiAgICAgIGNhc2UgS2V5Q29kZS5JTlNFUlQ6XG4gICAgICBjYXNlIEtleUNvZGUuTEVGVDpcbiAgICAgIGNhc2UgS2V5Q29kZS5NQUNfRkZfTUVUQTpcbiAgICAgIGNhc2UgS2V5Q29kZS5NRVRBOlxuICAgICAgY2FzZSBLZXlDb2RlLk5VTUxPQ0s6XG4gICAgICBjYXNlIEtleUNvZGUuTlVNX0NFTlRFUjpcbiAgICAgIGNhc2UgS2V5Q29kZS5QQUdFX0RPV046XG4gICAgICBjYXNlIEtleUNvZGUuUEFHRV9VUDpcbiAgICAgIGNhc2UgS2V5Q29kZS5QQVVTRTpcbiAgICAgIGNhc2UgS2V5Q29kZS5QUklOVF9TQ1JFRU46XG4gICAgICBjYXNlIEtleUNvZGUuUklHSFQ6XG4gICAgICBjYXNlIEtleUNvZGUuU0hJRlQ6XG4gICAgICBjYXNlIEtleUNvZGUuVVA6XG4gICAgICBjYXNlIEtleUNvZGUuV0lOX0tFWTpcbiAgICAgIGNhc2UgS2V5Q29kZS5XSU5fS0VZX1JJR0hUOlxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogd2hldGhlciBjaGFyYWN0ZXIgaXMgZW50ZXJlZC5cbiAgICovXG4gIGlzQ2hhcmFjdGVyS2V5OiBmdW5jdGlvbiBpc0NoYXJhY3RlcktleShrZXlDb2RlKSB7XG4gICAgaWYgKGtleUNvZGUgPj0gS2V5Q29kZS5aRVJPICYmIGtleUNvZGUgPD0gS2V5Q29kZS5OSU5FKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoa2V5Q29kZSA+PSBLZXlDb2RlLk5VTV9aRVJPICYmIGtleUNvZGUgPD0gS2V5Q29kZS5OVU1fTVVMVElQTFkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChrZXlDb2RlID49IEtleUNvZGUuQSAmJiBrZXlDb2RlIDw9IEtleUNvZGUuWikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSAvLyBTYWZhcmkgc2VuZHMgemVybyBrZXkgY29kZSBmb3Igbm9uLWxhdGluIGNoYXJhY3RlcnMuXG5cblxuICAgIGlmICh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdXZWJLaXQnKSAhPT0gLTEgJiYga2V5Q29kZSA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgc3dpdGNoIChrZXlDb2RlKSB7XG4gICAgICBjYXNlIEtleUNvZGUuU1BBQ0U6XG4gICAgICBjYXNlIEtleUNvZGUuUVVFU1RJT05fTUFSSzpcbiAgICAgIGNhc2UgS2V5Q29kZS5OVU1fUExVUzpcbiAgICAgIGNhc2UgS2V5Q29kZS5OVU1fTUlOVVM6XG4gICAgICBjYXNlIEtleUNvZGUuTlVNX1BFUklPRDpcbiAgICAgIGNhc2UgS2V5Q29kZS5OVU1fRElWSVNJT046XG4gICAgICBjYXNlIEtleUNvZGUuU0VNSUNPTE9OOlxuICAgICAgY2FzZSBLZXlDb2RlLkRBU0g6XG4gICAgICBjYXNlIEtleUNvZGUuRVFVQUxTOlxuICAgICAgY2FzZSBLZXlDb2RlLkNPTU1BOlxuICAgICAgY2FzZSBLZXlDb2RlLlBFUklPRDpcbiAgICAgIGNhc2UgS2V5Q29kZS5TTEFTSDpcbiAgICAgIGNhc2UgS2V5Q29kZS5BUE9TVFJPUEhFOlxuICAgICAgY2FzZSBLZXlDb2RlLlNJTkdMRV9RVU9URTpcbiAgICAgIGNhc2UgS2V5Q29kZS5PUEVOX1NRVUFSRV9CUkFDS0VUOlxuICAgICAgY2FzZSBLZXlDb2RlLkJBQ0tTTEFTSDpcbiAgICAgIGNhc2UgS2V5Q29kZS5DTE9TRV9TUVVBUkVfQlJBQ0tFVDpcbiAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCBLZXlDb2RlOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pc1BsYWNlaG9sZGVyKGEpIHtcbiAgcmV0dXJuIGEgIT0gbnVsbCAmJiB0eXBlb2YgYSA9PT0gJ29iamVjdCcgJiYgYVsnQEBmdW5jdGlvbmFsL3BsYWNlaG9sZGVyJ10gPT09IHRydWU7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn0iLCJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICByZXR1cm4gQ29uc3RydWN0b3I7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgICByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO1xuICB9O1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiO1xuaW1wb3J0IGFzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiLi9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHtcbiAgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHtcbiAgICByZXR1cm4gY2FsbDtcbiAgfVxuXG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7XG59IiwiaW1wb3J0IGdldFByb3RvdHlwZU9mIGZyb20gXCIuL2dldFByb3RvdHlwZU9mLmpzXCI7XG5pbXBvcnQgaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IGZyb20gXCIuL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qc1wiO1xuaW1wb3J0IHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIi4vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHtcbiAgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkge1xuICAgIHZhciBTdXBlciA9IGdldFByb3RvdHlwZU9mKERlcml2ZWQpLFxuICAgICAgICByZXN1bHQ7XG5cbiAgICBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkge1xuICAgICAgdmFyIE5ld1RhcmdldCA9IGdldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yO1xuICAgICAgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpO1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTtcbiAgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTtcblxuICB0cnkge1xuICAgIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gIF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICAgIG8uX19wcm90b19fID0gcDtcbiAgICByZXR1cm4gbztcbiAgfTtcblxuICByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApO1xufSIsImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gIH1cblxuICBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHN1YkNsYXNzLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufSIsImltcG9ydCBfaXNQbGFjZWhvbGRlciBmcm9tIFwiLi9faXNQbGFjZWhvbGRlci5qc1wiO1xuLyoqXG4gKiBPcHRpbWl6ZWQgaW50ZXJuYWwgb25lLWFyaXR5IGN1cnJ5IGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBjdXJyeS5cbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBUaGUgY3VycmllZCBmdW5jdGlvbi5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfY3VycnkxKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmMShhKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDAgfHwgX2lzUGxhY2Vob2xkZXIoYSkpIHtcbiAgICAgIHJldHVybiBmMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9O1xufSIsInZhciBhcnJheVdpdGhIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aEhvbGVzLmpzXCIpO1xuXG52YXIgaXRlcmFibGVUb0FycmF5TGltaXQgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiKTtcblxudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG5cbnZhciBub25JdGVyYWJsZVJlc3QgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIik7XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX3NsaWNlZFRvQXJyYXk7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNvbmZpZ0NvbnN1bWVyXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9jb250ZXh0LkNvbmZpZ0NvbnN1bWVyO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNvbmZpZ0NvbnRleHRcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2NvbnRleHQuQ29uZmlnQ29udGV4dDtcbiAgfVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IGV4cG9ydHMuZ2xvYmFsQ29uZmlnID0gZXhwb3J0cy5kZWZhdWx0UHJlZml4Q2xzID0gZXhwb3J0cy5jb25maWdDb25zdW1lclByb3BzID0gdm9pZCAwO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9Db250ZXh0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMvbGliL2NvbXBvbmVudHMvQ29udGV4dFwiKSk7XG5cbnZhciBfcmNGaWVsZEZvcm0gPSByZXF1aXJlKFwicmMtZmllbGQtZm9ybVwiKTtcblxudmFyIF91c2VNZW1vID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtdXRpbC9saWIvaG9va3MvdXNlTWVtb1wiKSk7XG5cbnZhciBfbG9jYWxlUHJvdmlkZXIgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwiLi4vbG9jYWxlLXByb3ZpZGVyXCIpKTtcblxudmFyIF9Mb2NhbGVSZWNlaXZlciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2xvY2FsZS1wcm92aWRlci9Mb2NhbGVSZWNlaXZlclwiKSk7XG5cbnZhciBfY29udGV4dCA9IHJlcXVpcmUoXCIuL2NvbnRleHRcIik7XG5cbnZhciBfU2l6ZUNvbnRleHQgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwiLi9TaXplQ29udGV4dFwiKSk7XG5cbnZhciBfbWVzc2FnZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL21lc3NhZ2VcIikpO1xuXG52YXIgX25vdGlmaWNhdGlvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL25vdGlmaWNhdGlvblwiKSk7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxudmFyIGNvbmZpZ0NvbnN1bWVyUHJvcHMgPSBbJ2dldFRhcmdldENvbnRhaW5lcicsICdnZXRQb3B1cENvbnRhaW5lcicsICdyb290UHJlZml4Q2xzJywgJ2dldFByZWZpeENscycsICdyZW5kZXJFbXB0eScsICdjc3AnLCAnYXV0b0luc2VydFNwYWNlSW5CdXR0b24nLCAnbG9jYWxlJywgJ3BhZ2VIZWFkZXInXTsgLy8gVGhlc2UgcHJvcHMgaXMgdXNlZCBieSBgdXNlQ29udGV4dGAgZGlyZWN0bHkgaW4gc3ViIGNvbXBvbmVudFxuXG5leHBvcnRzLmNvbmZpZ0NvbnN1bWVyUHJvcHMgPSBjb25maWdDb25zdW1lclByb3BzO1xudmFyIFBBU1NFRF9QUk9QUyA9IFsnZ2V0VGFyZ2V0Q29udGFpbmVyJywgJ2dldFBvcHVwQ29udGFpbmVyJywgJ3JlbmRlckVtcHR5JywgJ3BhZ2VIZWFkZXInLCAnaW5wdXQnLCAnZm9ybSddO1xudmFyIGRlZmF1bHRQcmVmaXhDbHMgPSAnYW50JztcbmV4cG9ydHMuZGVmYXVsdFByZWZpeENscyA9IGRlZmF1bHRQcmVmaXhDbHM7XG52YXIgZ2xvYmFsUHJlZml4Q2xzO1xuXG52YXIgc2V0R2xvYmFsQ29uZmlnID0gZnVuY3Rpb24gc2V0R2xvYmFsQ29uZmlnKHBhcmFtcykge1xuICBpZiAocGFyYW1zLnByZWZpeENscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZ2xvYmFsUHJlZml4Q2xzID0gcGFyYW1zLnByZWZpeENscztcbiAgfVxufTtcblxuZnVuY3Rpb24gZ2V0R2xvYmFsUHJlZml4Q2xzKCkge1xuICByZXR1cm4gZ2xvYmFsUHJlZml4Q2xzIHx8IGRlZmF1bHRQcmVmaXhDbHM7XG59XG5cbnZhciBnbG9iYWxDb25maWcgPSBmdW5jdGlvbiBnbG9iYWxDb25maWcoKSB7XG4gIHJldHVybiB7XG4gICAgZ2V0UHJlZml4Q2xzOiBmdW5jdGlvbiBnZXRQcmVmaXhDbHMoc3VmZml4Q2xzLCBjdXN0b21pemVQcmVmaXhDbHMpIHtcbiAgICAgIGlmIChjdXN0b21pemVQcmVmaXhDbHMpIHJldHVybiBjdXN0b21pemVQcmVmaXhDbHM7XG4gICAgICByZXR1cm4gc3VmZml4Q2xzID8gXCJcIi5jb25jYXQoZ2V0R2xvYmFsUHJlZml4Q2xzKCksIFwiLVwiKS5jb25jYXQoc3VmZml4Q2xzKSA6IGdldEdsb2JhbFByZWZpeENscygpO1xuICAgIH0sXG4gICAgZ2V0Um9vdFByZWZpeENsczogZnVuY3Rpb24gZ2V0Um9vdFByZWZpeENscyhyb290UHJlZml4Q2xzLCBjdXN0b21pemVQcmVmaXhDbHMpIHtcbiAgICAgIC8vIEN1c3RvbWl6ZSByb290UHJlZml4Q2xzIGlzIGZpcnN0IHByaW9yaXR5XG4gICAgICBpZiAocm9vdFByZWZpeENscykge1xuICAgICAgICByZXR1cm4gcm9vdFByZWZpeENscztcbiAgICAgIH0gLy8gSWYgR2xvYmFsIHByZWZpeENscyBwcm92aWRlZCwgdXNlIHRoaXNcblxuXG4gICAgICBpZiAoZ2xvYmFsUHJlZml4Q2xzKSB7XG4gICAgICAgIHJldHVybiBnbG9iYWxQcmVmaXhDbHM7XG4gICAgICB9IC8vIFtMZWdhY3ldIElmIGN1c3RvbWl6ZSBwcmVmaXhDbHMgcHJvdmlkZWQsIHdlIGN1dCBpdCB0byBnZXQgdGhlIHByZWZpeENsc1xuXG5cbiAgICAgIGlmIChjdXN0b21pemVQcmVmaXhDbHMgJiYgY3VzdG9taXplUHJlZml4Q2xzLmluY2x1ZGVzKCctJykpIHtcbiAgICAgICAgcmV0dXJuIGN1c3RvbWl6ZVByZWZpeENscy5yZXBsYWNlKC9eKC4qKS1bXi1dKiQvLCAnJDEnKTtcbiAgICAgIH0gLy8gRmFsbGJhY2sgdG8gZGVmYXVsdCBwcmVmaXhDbHNcblxuXG4gICAgICByZXR1cm4gZ2V0R2xvYmFsUHJlZml4Q2xzKCk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0cy5nbG9iYWxDb25maWcgPSBnbG9iYWxDb25maWc7XG5cbnZhciBQcm92aWRlckNoaWxkcmVuID0gZnVuY3Rpb24gUHJvdmlkZXJDaGlsZHJlbihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIGNzcCA9IHByb3BzLmNzcCxcbiAgICAgIGF1dG9JbnNlcnRTcGFjZUluQnV0dG9uID0gcHJvcHMuYXV0b0luc2VydFNwYWNlSW5CdXR0b24sXG4gICAgICBmb3JtID0gcHJvcHMuZm9ybSxcbiAgICAgIGxvY2FsZSA9IHByb3BzLmxvY2FsZSxcbiAgICAgIGNvbXBvbmVudFNpemUgPSBwcm9wcy5jb21wb25lbnRTaXplLFxuICAgICAgZGlyZWN0aW9uID0gcHJvcHMuZGlyZWN0aW9uLFxuICAgICAgc3BhY2UgPSBwcm9wcy5zcGFjZSxcbiAgICAgIHZpcnR1YWwgPSBwcm9wcy52aXJ0dWFsLFxuICAgICAgZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoID0gcHJvcHMuZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoLFxuICAgICAgbGVnYWN5TG9jYWxlID0gcHJvcHMubGVnYWN5TG9jYWxlLFxuICAgICAgcGFyZW50Q29udGV4dCA9IHByb3BzLnBhcmVudENvbnRleHQsXG4gICAgICBpY29uUHJlZml4Q2xzID0gcHJvcHMuaWNvblByZWZpeENscztcbiAgdmFyIGdldFByZWZpeENscyA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChzdWZmaXhDbHMsIGN1c3RvbWl6ZVByZWZpeENscykge1xuICAgIHZhciBwcmVmaXhDbHMgPSBwcm9wcy5wcmVmaXhDbHM7XG4gICAgaWYgKGN1c3RvbWl6ZVByZWZpeENscykgcmV0dXJuIGN1c3RvbWl6ZVByZWZpeENscztcbiAgICB2YXIgbWVyZ2VkUHJlZml4Q2xzID0gcHJlZml4Q2xzIHx8IHBhcmVudENvbnRleHQuZ2V0UHJlZml4Q2xzKCcnKTtcbiAgICByZXR1cm4gc3VmZml4Q2xzID8gXCJcIi5jb25jYXQobWVyZ2VkUHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KHN1ZmZpeENscykgOiBtZXJnZWRQcmVmaXhDbHM7XG4gIH0sIFtwYXJlbnRDb250ZXh0LmdldFByZWZpeENsc10pO1xuICB2YXIgY29uZmlnID0gKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKCgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgcGFyZW50Q29udGV4dCksIHtcbiAgICBjc3A6IGNzcCxcbiAgICBhdXRvSW5zZXJ0U3BhY2VJbkJ1dHRvbjogYXV0b0luc2VydFNwYWNlSW5CdXR0b24sXG4gICAgbG9jYWxlOiBsb2NhbGUgfHwgbGVnYWN5TG9jYWxlLFxuICAgIGRpcmVjdGlvbjogZGlyZWN0aW9uLFxuICAgIHNwYWNlOiBzcGFjZSxcbiAgICB2aXJ0dWFsOiB2aXJ0dWFsLFxuICAgIGRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aDogZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoLFxuICAgIGdldFByZWZpeENsczogZ2V0UHJlZml4Q2xzXG4gIH0pOyAvLyBQYXNzIHRoZSBwcm9wcyB1c2VkIGJ5IGB1c2VDb250ZXh0YCBkaXJlY3RseSB3aXRoIGNoaWxkIGNvbXBvbmVudC5cbiAgLy8gVGhlc2UgcHJvcHMgc2hvdWxkIG1lcmdlZCBpbnRvIGBjb25maWdgLlxuXG4gIFBBU1NFRF9QUk9QUy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wTmFtZSkge1xuICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG5cbiAgICBpZiAocHJvcFZhbHVlKSB7XG4gICAgICBjb25maWdbcHJvcE5hbWVdID0gcHJvcFZhbHVlO1xuICAgIH1cbiAgfSk7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzI3NjE3XG5cbiAgdmFyIG1lbW9lZENvbmZpZyA9ICgwLCBfdXNlTWVtb1tcImRlZmF1bHRcIl0pKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9LCBjb25maWcsIGZ1bmN0aW9uIChwcmV2Q29uZmlnLCBjdXJyZW50Q29uZmlnKSB7XG4gICAgdmFyIHByZXZLZXlzID0gT2JqZWN0LmtleXMocHJldkNvbmZpZyk7XG4gICAgdmFyIGN1cnJlbnRLZXlzID0gT2JqZWN0LmtleXMoY3VycmVudENvbmZpZyk7XG4gICAgcmV0dXJuIHByZXZLZXlzLmxlbmd0aCAhPT0gY3VycmVudEtleXMubGVuZ3RoIHx8IHByZXZLZXlzLnNvbWUoZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIHByZXZDb25maWdba2V5XSAhPT0gY3VycmVudENvbmZpZ1trZXldO1xuICAgIH0pO1xuICB9KTtcbiAgdmFyIG1lbW9JY29uQ29udGV4dFZhbHVlID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByZWZpeENsczogaWNvblByZWZpeENscyxcbiAgICAgIGNzcDogY3NwXG4gICAgfTtcbiAgfSwgW2ljb25QcmVmaXhDbHNdKTtcbiAgdmFyIGNoaWxkTm9kZSA9IGNoaWxkcmVuOyAvLyBBZGRpdGlvbmFsIEZvcm0gcHJvdmlkZXJcblxuICB2YXIgdmFsaWRhdGVNZXNzYWdlcyA9IHt9O1xuXG4gIGlmIChsb2NhbGUgJiYgbG9jYWxlLkZvcm0gJiYgbG9jYWxlLkZvcm0uZGVmYXVsdFZhbGlkYXRlTWVzc2FnZXMpIHtcbiAgICB2YWxpZGF0ZU1lc3NhZ2VzID0gbG9jYWxlLkZvcm0uZGVmYXVsdFZhbGlkYXRlTWVzc2FnZXM7XG4gIH1cblxuICBpZiAoZm9ybSAmJiBmb3JtLnZhbGlkYXRlTWVzc2FnZXMpIHtcbiAgICB2YWxpZGF0ZU1lc3NhZ2VzID0gKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKCgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgdmFsaWRhdGVNZXNzYWdlcyksIGZvcm0udmFsaWRhdGVNZXNzYWdlcyk7XG4gIH1cblxuICBpZiAoT2JqZWN0LmtleXModmFsaWRhdGVNZXNzYWdlcykubGVuZ3RoID4gMCkge1xuICAgIGNoaWxkTm9kZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yY0ZpZWxkRm9ybS5Gb3JtUHJvdmlkZXIsIHtcbiAgICAgIHZhbGlkYXRlTWVzc2FnZXM6IHZhbGlkYXRlTWVzc2FnZXNcbiAgICB9LCBjaGlsZHJlbik7XG4gIH1cblxuICBpZiAobG9jYWxlKSB7XG4gICAgY2hpbGROb2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2xvY2FsZVByb3ZpZGVyW1wiZGVmYXVsdFwiXSwge1xuICAgICAgbG9jYWxlOiBsb2NhbGUsXG4gICAgICBfQU5UX01BUktfXzogX2xvY2FsZVByb3ZpZGVyLkFOVF9NQVJLXG4gICAgfSwgY2hpbGROb2RlKTtcbiAgfVxuXG4gIGlmIChpY29uUHJlZml4Q2xzKSB7XG4gICAgY2hpbGROb2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0NvbnRleHRbXCJkZWZhdWx0XCJdLlByb3ZpZGVyLCB7XG4gICAgICB2YWx1ZTogbWVtb0ljb25Db250ZXh0VmFsdWVcbiAgICB9LCBjaGlsZE5vZGUpO1xuICB9XG5cbiAgaWYgKGNvbXBvbmVudFNpemUpIHtcbiAgICBjaGlsZE5vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfU2l6ZUNvbnRleHQuU2l6ZUNvbnRleHRQcm92aWRlciwge1xuICAgICAgc2l6ZTogY29tcG9uZW50U2l6ZVxuICAgIH0sIGNoaWxkTm9kZSk7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2NvbnRleHQuQ29uZmlnQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBtZW1vZWRDb25maWdcbiAgfSwgY2hpbGROb2RlKTtcbn07XG5cbnZhciBDb25maWdQcm92aWRlciA9IGZ1bmN0aW9uIENvbmZpZ1Byb3ZpZGVyKHByb3BzKSB7XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHByb3BzLmRpcmVjdGlvbikge1xuICAgICAgX21lc3NhZ2VbXCJkZWZhdWx0XCJdLmNvbmZpZyh7XG4gICAgICAgIHJ0bDogcHJvcHMuZGlyZWN0aW9uID09PSAncnRsJ1xuICAgICAgfSk7XG5cbiAgICAgIF9ub3RpZmljYXRpb25bXCJkZWZhdWx0XCJdLmNvbmZpZyh7XG4gICAgICAgIHJ0bDogcHJvcHMuZGlyZWN0aW9uID09PSAncnRsJ1xuICAgICAgfSk7XG4gICAgfVxuICB9LCBbcHJvcHMuZGlyZWN0aW9uXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfTG9jYWxlUmVjZWl2ZXJbXCJkZWZhdWx0XCJdLCBudWxsLCBmdW5jdGlvbiAoXywgX18sIGxlZ2FjeUxvY2FsZSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfY29udGV4dC5Db25maWdDb25zdW1lciwgbnVsbCwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChQcm92aWRlckNoaWxkcmVuLCAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe1xuICAgICAgICBwYXJlbnRDb250ZXh0OiBjb250ZXh0LFxuICAgICAgICBsZWdhY3lMb2NhbGU6IGxlZ2FjeUxvY2FsZVxuICAgICAgfSwgcHJvcHMpKTtcbiAgICB9KTtcbiAgfSk7XG59O1xuLyoqIEBwcml2YXRlIGludGVybmFsIFVzYWdlLiBkbyBub3QgdXNlIGluIHlvdXIgcHJvZHVjdGlvbiAqL1xuXG5cbkNvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnRleHQgPSBfY29udGV4dC5Db25maWdDb250ZXh0O1xuQ29uZmlnUHJvdmlkZXIuU2l6ZUNvbnRleHQgPSBfU2l6ZUNvbnRleHRbXCJkZWZhdWx0XCJdO1xuQ29uZmlnUHJvdmlkZXIuY29uZmlnID0gc2V0R2xvYmFsQ29uZmlnO1xudmFyIF9kZWZhdWx0ID0gQ29uZmlnUHJvdmlkZXI7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbnZhciB3YXJuZWQgPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiB3YXJuaW5nKHZhbGlkLCBtZXNzYWdlKSB7XG4gIC8vIFN1cHBvcnQgdWdsaWZ5XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF2YWxpZCAmJiBjb25zb2xlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiV2FybmluZzogXCIuY29uY2F0KG1lc3NhZ2UpKTtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIG5vdGUodmFsaWQsIG1lc3NhZ2UpIHtcbiAgLy8gU3VwcG9ydCB1Z2xpZnlcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXZhbGlkICYmIGNvbnNvbGUgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnNvbGUud2FybihcIk5vdGU6IFwiLmNvbmNhdChtZXNzYWdlKSk7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiByZXNldFdhcm5lZCgpIHtcbiAgd2FybmVkID0ge307XG59XG5leHBvcnQgZnVuY3Rpb24gY2FsbChtZXRob2QsIHZhbGlkLCBtZXNzYWdlKSB7XG4gIGlmICghdmFsaWQgJiYgIXdhcm5lZFttZXNzYWdlXSkge1xuICAgIG1ldGhvZChmYWxzZSwgbWVzc2FnZSk7XG4gICAgd2FybmVkW21lc3NhZ2VdID0gdHJ1ZTtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHdhcm5pbmdPbmNlKHZhbGlkLCBtZXNzYWdlKSB7XG4gIGNhbGwod2FybmluZywgdmFsaWQsIG1lc3NhZ2UpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vdGVPbmNlKHZhbGlkLCBtZXNzYWdlKSB7XG4gIGNhbGwobm90ZSwgdmFsaWQsIG1lc3NhZ2UpO1xufVxuZXhwb3J0IGRlZmF1bHQgd2FybmluZ09uY2U7XG4vKiBlc2xpbnQtZW5hYmxlICovIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikge1xuICAgIF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gX3R5cGVvZihvYmopO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9zbGljZWRUb0FycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiKSk7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG52YXIgX0NvbnRleHQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL0NvbnRleHRcIikpO1xuXG52YXIgX0ljb25CYXNlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9JY29uQmFzZVwiKSk7XG5cbnZhciBfdHdvVG9uZVByaW1hcnlDb2xvciA9IHJlcXVpcmUoXCIuL3R3b1RvbmVQcmltYXJ5Q29sb3JcIik7XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKFwiLi4vdXRpbHNcIik7XG5cbi8vIEluaXRpYWwgc2V0dGluZ1xuLy8gc2hvdWxkIG1vdmUgaXQgdG8gYW50ZCBtYWluIHJlcG8/XG4oMCwgX3R3b1RvbmVQcmltYXJ5Q29sb3Iuc2V0VHdvVG9uZUNvbG9yKSgnIzE4OTBmZicpO1xudmFyIEljb24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICB2YXIgX2NsYXNzTmFtZXM7XG5cbiAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIGljb24gPSBwcm9wcy5pY29uLFxuICAgICAgc3BpbiA9IHByb3BzLnNwaW4sXG4gICAgICByb3RhdGUgPSBwcm9wcy5yb3RhdGUsXG4gICAgICB0YWJJbmRleCA9IHByb3BzLnRhYkluZGV4LFxuICAgICAgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssXG4gICAgICB0d29Ub25lQ29sb3IgPSBwcm9wcy50d29Ub25lQ29sb3IsXG4gICAgICByZXN0UHJvcHMgPSAoMCwgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMi5kZWZhdWx0KShwcm9wcywgW1wiY2xhc3NOYW1lXCIsIFwiaWNvblwiLCBcInNwaW5cIiwgXCJyb3RhdGVcIiwgXCJ0YWJJbmRleFwiLCBcIm9uQ2xpY2tcIiwgXCJ0d29Ub25lQ29sb3JcIl0pO1xuXG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoX0NvbnRleHQuZGVmYXVsdCksXG4gICAgICBfUmVhY3QkdXNlQ29udGV4dCRwcmUgPSBfUmVhY3QkdXNlQ29udGV4dC5wcmVmaXhDbHMsXG4gICAgICBwcmVmaXhDbHMgPSBfUmVhY3QkdXNlQ29udGV4dCRwcmUgPT09IHZvaWQgMCA/ICdhbnRpY29uJyA6IF9SZWFjdCR1c2VDb250ZXh0JHByZTtcblxuICB2YXIgY2xhc3NTdHJpbmcgPSAoMCwgX2NsYXNzbmFtZXMuZGVmYXVsdCkocHJlZml4Q2xzLCAoX2NsYXNzTmFtZXMgPSB7fSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItXCIpLmNvbmNhdChpY29uLm5hbWUpLCAhIWljb24ubmFtZSksICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXNwaW5cIiksICEhc3BpbiB8fCBpY29uLm5hbWUgPT09ICdsb2FkaW5nJyksIF9jbGFzc05hbWVzKSwgY2xhc3NOYW1lKTtcbiAgdmFyIGljb25UYWJJbmRleCA9IHRhYkluZGV4O1xuXG4gIGlmIChpY29uVGFiSW5kZXggPT09IHVuZGVmaW5lZCAmJiBvbkNsaWNrKSB7XG4gICAgaWNvblRhYkluZGV4ID0gLTE7XG4gIH1cblxuICB2YXIgc3ZnU3R5bGUgPSByb3RhdGUgPyB7XG4gICAgbXNUcmFuc2Zvcm06IFwicm90YXRlKFwiLmNvbmNhdChyb3RhdGUsIFwiZGVnKVwiKSxcbiAgICB0cmFuc2Zvcm06IFwicm90YXRlKFwiLmNvbmNhdChyb3RhdGUsIFwiZGVnKVwiKVxuICB9IDogdW5kZWZpbmVkO1xuXG4gIHZhciBfbm9ybWFsaXplVHdvVG9uZUNvbG8gPSAoMCwgX3V0aWxzLm5vcm1hbGl6ZVR3b1RvbmVDb2xvcnMpKHR3b1RvbmVDb2xvciksXG4gICAgICBfbm9ybWFsaXplVHdvVG9uZUNvbG8yID0gKDAsIF9zbGljZWRUb0FycmF5Mi5kZWZhdWx0KShfbm9ybWFsaXplVHdvVG9uZUNvbG8sIDIpLFxuICAgICAgcHJpbWFyeUNvbG9yID0gX25vcm1hbGl6ZVR3b1RvbmVDb2xvMlswXSxcbiAgICAgIHNlY29uZGFyeUNvbG9yID0gX25vcm1hbGl6ZVR3b1RvbmVDb2xvMlsxXTtcblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIHJvbGU6IFwiaW1nXCIsXG4gICAgXCJhcmlhLWxhYmVsXCI6IGljb24ubmFtZVxuICB9LCByZXN0UHJvcHMsIHtcbiAgICByZWY6IHJlZixcbiAgICB0YWJJbmRleDogaWNvblRhYkluZGV4LFxuICAgIG9uQ2xpY2s6IG9uQ2xpY2ssXG4gICAgY2xhc3NOYW1lOiBjbGFzc1N0cmluZ1xuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0ljb25CYXNlLmRlZmF1bHQsIHtcbiAgICBpY29uOiBpY29uLFxuICAgIHByaW1hcnlDb2xvcjogcHJpbWFyeUNvbG9yLFxuICAgIHNlY29uZGFyeUNvbG9yOiBzZWNvbmRhcnlDb2xvcixcbiAgICBzdHlsZTogc3ZnU3R5bGVcbiAgfSkpO1xufSk7XG5JY29uLmRpc3BsYXlOYW1lID0gJ0FudGRJY29uJztcbkljb24uZ2V0VHdvVG9uZUNvbG9yID0gX3R3b1RvbmVQcmltYXJ5Q29sb3IuZ2V0VHdvVG9uZUNvbG9yO1xuSWNvbi5zZXRUd29Ub25lQ29sb3IgPSBfdHdvVG9uZVByaW1hcnlDb2xvci5zZXRUd29Ub25lQ29sb3I7XG52YXIgX2RlZmF1bHQgPSBJY29uO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7XG4gIGlmIChzZWxmID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIH1cblxuICByZXR1cm4gc2VsZjtcbn0iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxuZXhwb3J0cy5jb252ZXJ0RmllbGRzRXJyb3IgPSBjb252ZXJ0RmllbGRzRXJyb3I7XG5leHBvcnRzLmZvcm1hdCA9IGZvcm1hdDtcbmV4cG9ydHMuaXNFbXB0eVZhbHVlID0gaXNFbXB0eVZhbHVlO1xuZXhwb3J0cy5pc0VtcHR5T2JqZWN0ID0gaXNFbXB0eU9iamVjdDtcbmV4cG9ydHMuYXN5bmNNYXAgPSBhc3luY01hcDtcbmV4cG9ydHMuY29tcGxlbWVudEVycm9yID0gY29tcGxlbWVudEVycm9yO1xuZXhwb3J0cy5kZWVwTWVyZ2UgPSBkZWVwTWVyZ2U7XG4vKiBlc2xpbnQgbm8tY29uc29sZTowICovXG5cbnZhciBmb3JtYXRSZWdFeHAgPSAvJVtzZGolXS9nO1xuXG52YXIgd2FybmluZyA9IGV4cG9ydHMud2FybmluZyA9IGZ1bmN0aW9uIHdhcm5pbmcoKSB7fTtcblxuLy8gZG9uJ3QgcHJpbnQgd2FybmluZyBtZXNzYWdlIHdoZW4gaW4gcHJvZHVjdGlvbiBlbnYgb3Igbm9kZSBydW50aW1lXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gIGV4cG9ydHMud2FybmluZyA9IHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKHR5cGUsIGVycm9ycykge1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICBpZiAoZXJyb3JzLmV2ZXJ5KGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgZSA9PT0gJ3N0cmluZyc7XG4gICAgICB9KSkge1xuICAgICAgICBjb25zb2xlLndhcm4odHlwZSwgZXJyb3JzKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRGaWVsZHNFcnJvcihlcnJvcnMpIHtcbiAgaWYgKCFlcnJvcnMgfHwgIWVycm9ycy5sZW5ndGgpIHJldHVybiBudWxsO1xuICB2YXIgZmllbGRzID0ge307XG4gIGVycm9ycy5mb3JFYWNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgIHZhciBmaWVsZCA9IGVycm9yLmZpZWxkO1xuICAgIGZpZWxkc1tmaWVsZF0gPSBmaWVsZHNbZmllbGRdIHx8IFtdO1xuICAgIGZpZWxkc1tmaWVsZF0ucHVzaChlcnJvcik7XG4gIH0pO1xuICByZXR1cm4gZmllbGRzO1xufVxuXG5mdW5jdGlvbiBmb3JtYXQoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHZhciBpID0gMTtcbiAgdmFyIGYgPSBhcmdzWzBdO1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIGlmICh0eXBlb2YgZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3Muc2xpY2UoMSkpO1xuICB9XG4gIGlmICh0eXBlb2YgZiA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgc3RyID0gU3RyaW5nKGYpLnJlcGxhY2UoZm9ybWF0UmVnRXhwLCBmdW5jdGlvbiAoeCkge1xuICAgICAgaWYgKHggPT09ICclJScpIHtcbiAgICAgICAgcmV0dXJuICclJztcbiAgICAgIH1cbiAgICAgIGlmIChpID49IGxlbikge1xuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAoeCkge1xuICAgICAgICBjYXNlICclcyc6XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyhhcmdzW2krK10pO1xuICAgICAgICBjYXNlICclZCc6XG4gICAgICAgICAgcmV0dXJuIE51bWJlcihhcmdzW2krK10pO1xuICAgICAgICBjYXNlICclaic6XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmdzW2krK10pO1xuICAgICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB4O1xuICAgICAgfVxuICAgIH0pO1xuICAgIGZvciAodmFyIGFyZyA9IGFyZ3NbaV07IGkgPCBsZW47IGFyZyA9IGFyZ3NbKytpXSkge1xuICAgICAgc3RyICs9ICcgJyArIGFyZztcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICByZXR1cm4gZjtcbn1cblxuZnVuY3Rpb24gaXNOYXRpdmVTdHJpbmdUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGUgPT09ICd1cmwnIHx8IHR5cGUgPT09ICdoZXgnIHx8IHR5cGUgPT09ICdlbWFpbCcgfHwgdHlwZSA9PT0gJ3BhdHRlcm4nO1xufVxuXG5mdW5jdGlvbiBpc0VtcHR5VmFsdWUodmFsdWUsIHR5cGUpIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZSA9PT0gJ2FycmF5JyAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiAhdmFsdWUubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGlzTmF0aXZlU3RyaW5nVHlwZSh0eXBlKSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICF2YWx1ZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNFbXB0eU9iamVjdChvYmopIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xufVxuXG5mdW5jdGlvbiBhc3luY1BhcmFsbGVsQXJyYXkoYXJyLCBmdW5jLCBjYWxsYmFjaykge1xuICB2YXIgcmVzdWx0cyA9IFtdO1xuICB2YXIgdG90YWwgPSAwO1xuICB2YXIgYXJyTGVuZ3RoID0gYXJyLmxlbmd0aDtcblxuICBmdW5jdGlvbiBjb3VudChlcnJvcnMpIHtcbiAgICByZXN1bHRzLnB1c2guYXBwbHkocmVzdWx0cywgZXJyb3JzKTtcbiAgICB0b3RhbCsrO1xuICAgIGlmICh0b3RhbCA9PT0gYXJyTGVuZ3RoKSB7XG4gICAgICBjYWxsYmFjayhyZXN1bHRzKTtcbiAgICB9XG4gIH1cblxuICBhcnIuZm9yRWFjaChmdW5jdGlvbiAoYSkge1xuICAgIGZ1bmMoYSwgY291bnQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYXN5bmNTZXJpYWxBcnJheShhcnIsIGZ1bmMsIGNhbGxiYWNrKSB7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoZXJyb3JzKSB7XG4gICAgaWYgKGVycm9ycyAmJiBlcnJvcnMubGVuZ3RoKSB7XG4gICAgICBjYWxsYmFjayhlcnJvcnMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgb3JpZ2luYWwgPSBpbmRleDtcbiAgICBpbmRleCA9IGluZGV4ICsgMTtcbiAgICBpZiAob3JpZ2luYWwgPCBhcnJMZW5ndGgpIHtcbiAgICAgIGZ1bmMoYXJyW29yaWdpbmFsXSwgbmV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrKFtdKTtcbiAgICB9XG4gIH1cblxuICBuZXh0KFtdKTtcbn1cblxuZnVuY3Rpb24gZmxhdHRlbk9iakFycihvYmpBcnIpIHtcbiAgdmFyIHJldCA9IFtdO1xuICBPYmplY3Qua2V5cyhvYmpBcnIpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICByZXQucHVzaC5hcHBseShyZXQsIG9iakFycltrXSk7XG4gIH0pO1xuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBhc3luY01hcChvYmpBcnIsIG9wdGlvbiwgZnVuYywgY2FsbGJhY2spIHtcbiAgaWYgKG9wdGlvbi5maXJzdCkge1xuICAgIHZhciBmbGF0dGVuQXJyID0gZmxhdHRlbk9iakFycihvYmpBcnIpO1xuICAgIHJldHVybiBhc3luY1NlcmlhbEFycmF5KGZsYXR0ZW5BcnIsIGZ1bmMsIGNhbGxiYWNrKTtcbiAgfVxuICB2YXIgZmlyc3RGaWVsZHMgPSBvcHRpb24uZmlyc3RGaWVsZHMgfHwgW107XG4gIGlmIChmaXJzdEZpZWxkcyA9PT0gdHJ1ZSkge1xuICAgIGZpcnN0RmllbGRzID0gT2JqZWN0LmtleXMob2JqQXJyKTtcbiAgfVxuICB2YXIgb2JqQXJyS2V5cyA9IE9iamVjdC5rZXlzKG9iakFycik7XG4gIHZhciBvYmpBcnJMZW5ndGggPSBvYmpBcnJLZXlzLmxlbmd0aDtcbiAgdmFyIHRvdGFsID0gMDtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgdmFyIHBlbmRpbmcgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIG5leHQgPSBmdW5jdGlvbiBuZXh0KGVycm9ycykge1xuICAgICAgcmVzdWx0cy5wdXNoLmFwcGx5KHJlc3VsdHMsIGVycm9ycyk7XG4gICAgICB0b3RhbCsrO1xuICAgICAgaWYgKHRvdGFsID09PSBvYmpBcnJMZW5ndGgpIHtcbiAgICAgICAgY2FsbGJhY2socmVzdWx0cyk7XG4gICAgICAgIHJldHVybiByZXN1bHRzLmxlbmd0aCA/IHJlamVjdCh7IGVycm9yczogcmVzdWx0cywgZmllbGRzOiBjb252ZXJ0RmllbGRzRXJyb3IocmVzdWx0cykgfSkgOiByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBvYmpBcnJLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIGFyciA9IG9iakFycltrZXldO1xuICAgICAgaWYgKGZpcnN0RmllbGRzLmluZGV4T2Yoa2V5KSAhPT0gLTEpIHtcbiAgICAgICAgYXN5bmNTZXJpYWxBcnJheShhcnIsIGZ1bmMsIG5leHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXN5bmNQYXJhbGxlbEFycmF5KGFyciwgZnVuYywgbmV4dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICBwZW5kaW5nWydjYXRjaCddKGZ1bmN0aW9uIChlKSB7XG4gICAgcmV0dXJuIGU7XG4gIH0pO1xuICByZXR1cm4gcGVuZGluZztcbn1cblxuZnVuY3Rpb24gY29tcGxlbWVudEVycm9yKHJ1bGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvZSkge1xuICAgIGlmIChvZSAmJiBvZS5tZXNzYWdlKSB7XG4gICAgICBvZS5maWVsZCA9IG9lLmZpZWxkIHx8IHJ1bGUuZnVsbEZpZWxkO1xuICAgICAgcmV0dXJuIG9lO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogdHlwZW9mIG9lID09PSAnZnVuY3Rpb24nID8gb2UoKSA6IG9lLFxuICAgICAgZmllbGQ6IG9lLmZpZWxkIHx8IHJ1bGUuZnVsbEZpZWxkXG4gICAgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGVlcE1lcmdlKHRhcmdldCwgc291cmNlKSB7XG4gIGlmIChzb3VyY2UpIHtcbiAgICBmb3IgKHZhciBzIGluIHNvdXJjZSkge1xuICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShzKSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBzb3VyY2Vbc107XG4gICAgICAgIGlmICgodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZih2YWx1ZSkpID09PSAnb2JqZWN0JyAmJiBfdHlwZW9mKHRhcmdldFtzXSkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgdGFyZ2V0W3NdID0gX2V4dGVuZHMoe30sIHRhcmdldFtzXSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldFtzXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb25maWdDb25zdW1lclwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfY29udGV4dC5Db25maWdDb25zdW1lcjtcbiAgfVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IGV4cG9ydHMuY29uZmlnQ29uc3VtZXJQcm9wcyA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9sb2NhbGVQcm92aWRlciA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCIuLi9sb2NhbGUtcHJvdmlkZXJcIikpO1xuXG52YXIgX0xvY2FsZVJlY2VpdmVyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vbG9jYWxlLXByb3ZpZGVyL0xvY2FsZVJlY2VpdmVyXCIpKTtcblxudmFyIF9jb250ZXh0ID0gcmVxdWlyZShcIi4vY29udGV4dFwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxudmFyIGNvbmZpZ0NvbnN1bWVyUHJvcHMgPSBbJ2dldFBvcHVwQ29udGFpbmVyJywgJ3Jvb3RQcmVmaXhDbHMnLCAnZ2V0UHJlZml4Q2xzJywgJ3JlbmRlckVtcHR5JywgJ2NzcCcsICdhdXRvSW5zZXJ0U3BhY2VJbkJ1dHRvbicsICdsb2NhbGUnLCAncGFnZUhlYWRlciddO1xuZXhwb3J0cy5jb25maWdDb25zdW1lclByb3BzID0gY29uZmlnQ29uc3VtZXJQcm9wcztcblxudmFyIENvbmZpZ1Byb3ZpZGVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhDb25maWdQcm92aWRlciwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihDb25maWdQcm92aWRlcik7XG5cbiAgZnVuY3Rpb24gQ29uZmlnUHJvdmlkZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENvbmZpZ1Byb3ZpZGVyKTtcblxuICAgIF90aGlzID0gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgICBfdGhpcy5nZXRQcmVmaXhDbHMgPSBmdW5jdGlvbiAoc3VmZml4Q2xzLCBjdXN0b21pemVQcmVmaXhDbHMpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyRwcmVmaXhDbHMgPSBfdGhpcy5wcm9wcy5wcmVmaXhDbHMsXG4gICAgICAgICAgcHJlZml4Q2xzID0gX3RoaXMkcHJvcHMkcHJlZml4Q2xzID09PSB2b2lkIDAgPyAnYW50JyA6IF90aGlzJHByb3BzJHByZWZpeENscztcbiAgICAgIGlmIChjdXN0b21pemVQcmVmaXhDbHMpIHJldHVybiBjdXN0b21pemVQcmVmaXhDbHM7XG4gICAgICByZXR1cm4gc3VmZml4Q2xzID8gXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KHN1ZmZpeENscykgOiBwcmVmaXhDbHM7XG4gICAgfTtcblxuICAgIF90aGlzLnJlbmRlclByb3ZpZGVyID0gZnVuY3Rpb24gKGNvbnRleHQsIGxlZ2FjeUxvY2FsZSkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICBnZXRQb3B1cENvbnRhaW5lciA9IF90aGlzJHByb3BzLmdldFBvcHVwQ29udGFpbmVyLFxuICAgICAgICAgIHJlbmRlckVtcHR5ID0gX3RoaXMkcHJvcHMucmVuZGVyRW1wdHksXG4gICAgICAgICAgY3NwID0gX3RoaXMkcHJvcHMuY3NwLFxuICAgICAgICAgIGF1dG9JbnNlcnRTcGFjZUluQnV0dG9uID0gX3RoaXMkcHJvcHMuYXV0b0luc2VydFNwYWNlSW5CdXR0b24sXG4gICAgICAgICAgbG9jYWxlID0gX3RoaXMkcHJvcHMubG9jYWxlLFxuICAgICAgICAgIHBhZ2VIZWFkZXIgPSBfdGhpcyRwcm9wcy5wYWdlSGVhZGVyO1xuXG4gICAgICB2YXIgY29uZmlnID0gX2V4dGVuZHMoX2V4dGVuZHMoe30sIGNvbnRleHQpLCB7XG4gICAgICAgIGdldFByZWZpeENsczogX3RoaXMuZ2V0UHJlZml4Q2xzLFxuICAgICAgICBjc3A6IGNzcCxcbiAgICAgICAgYXV0b0luc2VydFNwYWNlSW5CdXR0b246IGF1dG9JbnNlcnRTcGFjZUluQnV0dG9uXG4gICAgICB9KTtcblxuICAgICAgaWYgKGdldFBvcHVwQ29udGFpbmVyKSB7XG4gICAgICAgIGNvbmZpZy5nZXRQb3B1cENvbnRhaW5lciA9IGdldFBvcHVwQ29udGFpbmVyO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVuZGVyRW1wdHkpIHtcbiAgICAgICAgY29uZmlnLnJlbmRlckVtcHR5ID0gcmVuZGVyRW1wdHk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYWdlSGVhZGVyKSB7XG4gICAgICAgIGNvbmZpZy5wYWdlSGVhZGVyID0gcGFnZUhlYWRlcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jb250ZXh0LkNvbmZpZ0NvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IGNvbmZpZ1xuICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2xvY2FsZVByb3ZpZGVyW1wiZGVmYXVsdFwiXSwge1xuICAgICAgICBsb2NhbGU6IGxvY2FsZSB8fCBsZWdhY3lMb2NhbGUsXG4gICAgICAgIF9BTlRfTUFSS19fOiBfbG9jYWxlUHJvdmlkZXIuQU5UX01BUktcbiAgICAgIH0sIGNoaWxkcmVuKSk7XG4gICAgfTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhDb25maWdQcm92aWRlciwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0xvY2FsZVJlY2VpdmVyW1wiZGVmYXVsdFwiXSwgbnVsbCwgZnVuY3Rpb24gKF8sIF9fLCBsZWdhY3lMb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jb250ZXh0LkNvbmZpZ0NvbnN1bWVyLCBudWxsLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczIucmVuZGVyUHJvdmlkZXIoY29udGV4dCwgbGVnYWN5TG9jYWxlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ29uZmlnUHJvdmlkZXI7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cbnZhciBfZGVmYXVsdCA9IENvbmZpZ1Byb3ZpZGVyO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIGFsbEljb25zID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zL2xpYi9kaXN0XCIpKTtcblxudmFyIF9pY29uc1JlYWN0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMtcmVhY3RcIikpO1xuXG52YXIgX0ljb25Gb250ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9JY29uRm9udFwiKSk7XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKFwiLi91dGlsc1wiKTtcblxudmFyIF93YXJuaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vX3V0aWwvd2FybmluZ1wiKSk7XG5cbnZhciBfTG9jYWxlUmVjZWl2ZXIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9sb2NhbGUtcHJvdmlkZXIvTG9jYWxlUmVjZWl2ZXJcIikpO1xuXG52YXIgX3R3b1RvbmVQcmltYXJ5Q29sb3IgPSByZXF1aXJlKFwiLi90d29Ub25lUHJpbWFyeUNvbG9yXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikgeyBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXIpKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShhcnIpOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG52YXIgX19yZXN0ID0gdm9pZCAwICYmICh2b2lkIDApLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG4gIH1cblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcbi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuXG5cbi8vIEluaXRpYWwgc2V0dGluZ1xuX2ljb25zUmVhY3RbXCJkZWZhdWx0XCJdLmFkZC5hcHBseShfaWNvbnNSZWFjdFtcImRlZmF1bHRcIl0sIF90b0NvbnN1bWFibGVBcnJheShPYmplY3Qua2V5cyhhbGxJY29ucykubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGFsbEljb25zW2tleV07XG59KSkpO1xuXG4oMCwgX3R3b1RvbmVQcmltYXJ5Q29sb3Iuc2V0VHdvVG9uZUNvbG9yKSgnIzE4OTBmZicpO1xudmFyIGRlZmF1bHRUaGVtZSA9ICdvdXRsaW5lZCc7XG52YXIgZGFuZ2Vyb3VzVGhlbWU7XG5cbmZ1bmN0aW9uIHVuc3RhYmxlX0NoYW5nZVRoZW1lT2ZJY29uc0Rhbmdlcm91c2x5KHRoZW1lKSB7XG4gICgwLCBfd2FybmluZ1tcImRlZmF1bHRcIl0pKGZhbHNlLCAnSWNvbicsIFwiWW91IGFyZSB1c2luZyB0aGUgdW5zdGFibGUgbWV0aG9kICdJY29uLnVuc3RhYmxlX0NoYW5nZVRoZW1lT2ZBbGxJY29uc0Rhbmdlcm91c2x5JywgXCIgKyBcIm1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgaWNvbnMgd2l0aCB0aGVtZSAnXCIuY29uY2F0KHRoZW1lLCBcIicgZGlzcGxheSBjb3JyZWN0bHkuXCIpKTtcbiAgZGFuZ2Vyb3VzVGhlbWUgPSB0aGVtZTtcbn1cblxuZnVuY3Rpb24gdW5zdGFibGVfQ2hhbmdlRGVmYXVsdFRoZW1lT2ZJY29ucyh0aGVtZSkge1xuICAoMCwgX3dhcm5pbmdbXCJkZWZhdWx0XCJdKShmYWxzZSwgJ0ljb24nLCBcIllvdSBhcmUgdXNpbmcgdGhlIHVuc3RhYmxlIG1ldGhvZCAnSWNvbi51bnN0YWJsZV9DaGFuZ2VEZWZhdWx0VGhlbWVPZkljb25zJywgXCIgKyBcIm1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgaWNvbnMgd2l0aCB0aGVtZSAnXCIuY29uY2F0KHRoZW1lLCBcIicgZGlzcGxheSBjb3JyZWN0bHkuXCIpKTtcbiAgZGVmYXVsdFRoZW1lID0gdGhlbWU7XG59XG5cbnZhciBJY29uID0gZnVuY3Rpb24gSWNvbihwcm9wcykge1xuICB2YXIgX2NsYXNzTmFtZXM7XG5cbiAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIHR5cGUgPSBwcm9wcy50eXBlLFxuICAgICAgQ29tcG9uZW50ID0gcHJvcHMuY29tcG9uZW50LFxuICAgICAgdmlld0JveCA9IHByb3BzLnZpZXdCb3gsXG4gICAgICBzcGluID0gcHJvcHMuc3BpbixcbiAgICAgIHJvdGF0ZSA9IHByb3BzLnJvdGF0ZSxcbiAgICAgIHRhYkluZGV4ID0gcHJvcHMudGFiSW5kZXgsXG4gICAgICBvbkNsaWNrID0gcHJvcHMub25DbGljayxcbiAgICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICB0aGVtZSA9IHByb3BzLnRoZW1lLFxuICAgICAgdHdvVG9uZUNvbG9yID0gcHJvcHMudHdvVG9uZUNvbG9yLFxuICAgICAgcmVzdFByb3BzID0gX19yZXN0KHByb3BzLCBbXCJjbGFzc05hbWVcIiwgXCJ0eXBlXCIsIFwiY29tcG9uZW50XCIsIFwidmlld0JveFwiLCBcInNwaW5cIiwgXCJyb3RhdGVcIiwgXCJ0YWJJbmRleFwiLCBcIm9uQ2xpY2tcIiwgXCJjaGlsZHJlblwiLCBcInRoZW1lXCIsIFwidHdvVG9uZUNvbG9yXCJdKTtcblxuICAoMCwgX3dhcm5pbmdbXCJkZWZhdWx0XCJdKShCb29sZWFuKHR5cGUgfHwgQ29tcG9uZW50IHx8IGNoaWxkcmVuKSwgJ0ljb24nLCAnU2hvdWxkIGhhdmUgYHR5cGVgIHByb3Agb3IgYGNvbXBvbmVudGAgcHJvcCBvciBgY2hpbGRyZW5gLicpO1xuICB2YXIgY2xhc3NTdHJpbmcgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKSgoX2NsYXNzTmFtZXMgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcImFudGljb25cIiwgdHJ1ZSksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJhbnRpY29uLVwiLmNvbmNhdCh0eXBlKSwgQm9vbGVhbih0eXBlKSksIF9jbGFzc05hbWVzKSwgY2xhc3NOYW1lKTtcbiAgdmFyIHN2Z0NsYXNzU3RyaW5nID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoX2RlZmluZVByb3BlcnR5KHt9LCBcImFudGljb24tc3BpblwiLCAhIXNwaW4gfHwgdHlwZSA9PT0gJ2xvYWRpbmcnKSk7XG4gIHZhciBzdmdTdHlsZSA9IHJvdGF0ZSA/IHtcbiAgICBtc1RyYW5zZm9ybTogXCJyb3RhdGUoXCIuY29uY2F0KHJvdGF0ZSwgXCJkZWcpXCIpLFxuICAgIHRyYW5zZm9ybTogXCJyb3RhdGUoXCIuY29uY2F0KHJvdGF0ZSwgXCJkZWcpXCIpXG4gIH0gOiB1bmRlZmluZWQ7XG5cbiAgdmFyIGlubmVyU3ZnUHJvcHMgPSBfZXh0ZW5kcyhfZXh0ZW5kcyh7fSwgX3V0aWxzLnN2Z0Jhc2VQcm9wcyksIHtcbiAgICBjbGFzc05hbWU6IHN2Z0NsYXNzU3RyaW5nLFxuICAgIHN0eWxlOiBzdmdTdHlsZSxcbiAgICB2aWV3Qm94OiB2aWV3Qm94XG4gIH0pO1xuXG4gIGlmICghdmlld0JveCkge1xuICAgIGRlbGV0ZSBpbm5lclN2Z1Byb3BzLnZpZXdCb3g7XG4gIH1cblxuICB2YXIgcmVuZGVySW5uZXJOb2RlID0gZnVuY3Rpb24gcmVuZGVySW5uZXJOb2RlKCkge1xuICAgIC8vIGNvbXBvbmVudCA+IGNoaWxkcmVuID4gdHlwZVxuICAgIGlmIChDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIGlubmVyU3ZnUHJvcHMsIGNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICgwLCBfd2FybmluZ1tcImRlZmF1bHRcIl0pKEJvb2xlYW4odmlld0JveCkgfHwgUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pID09PSAxICYmIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgJiYgUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbikudHlwZSA9PT0gJ3VzZScsICdJY29uJywgJ01ha2Ugc3VyZSB0aGF0IHlvdSBwcm92aWRlIGNvcnJlY3QgYHZpZXdCb3hgJyArICcgcHJvcCAoZGVmYXVsdCBgMCAwIDEwMjQgMTAyNGApIHRvIHRoZSBpY29uLicpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIF9leHRlbmRzKHt9LCBpbm5lclN2Z1Byb3BzLCB7XG4gICAgICAgIHZpZXdCb3g6IHZpZXdCb3hcbiAgICAgIH0pLCBjaGlsZHJlbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIGNvbXB1dGVkVHlwZSA9IHR5cGU7XG5cbiAgICAgIGlmICh0aGVtZSkge1xuICAgICAgICB2YXIgdGhlbWVJbk5hbWUgPSAoMCwgX3V0aWxzLmdldFRoZW1lRnJvbVR5cGVOYW1lKSh0eXBlKTtcbiAgICAgICAgKDAsIF93YXJuaW5nW1wiZGVmYXVsdFwiXSkoIXRoZW1lSW5OYW1lIHx8IHRoZW1lID09PSB0aGVtZUluTmFtZSwgJ0ljb24nLCBcIlRoZSBpY29uIG5hbWUgJ1wiLmNvbmNhdCh0eXBlLCBcIicgYWxyZWFkeSBzcGVjaWZ5IGEgdGhlbWUgJ1wiKS5jb25jYXQodGhlbWVJbk5hbWUsIFwiJyxcIikgKyBcIiB0aGUgJ3RoZW1lJyBwcm9wICdcIi5jb25jYXQodGhlbWUsIFwiJyB3aWxsIGJlIGlnbm9yZWQuXCIpKTtcbiAgICAgIH1cblxuICAgICAgY29tcHV0ZWRUeXBlID0gKDAsIF91dGlscy53aXRoVGhlbWVTdWZmaXgpKCgwLCBfdXRpbHMucmVtb3ZlVHlwZVRoZW1lKSgoMCwgX3V0aWxzLmFsaWFzKShjb21wdXRlZFR5cGUpKSwgZGFuZ2Vyb3VzVGhlbWUgfHwgdGhlbWUgfHwgZGVmYXVsdFRoZW1lKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfaWNvbnNSZWFjdFtcImRlZmF1bHRcIl0sIHtcbiAgICAgICAgY2xhc3NOYW1lOiBzdmdDbGFzc1N0cmluZyxcbiAgICAgICAgdHlwZTogY29tcHV0ZWRUeXBlLFxuICAgICAgICBwcmltYXJ5Q29sb3I6IHR3b1RvbmVDb2xvcixcbiAgICAgICAgc3R5bGU6IHN2Z1N0eWxlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGljb25UYWJJbmRleCA9IHRhYkluZGV4O1xuXG4gIGlmIChpY29uVGFiSW5kZXggPT09IHVuZGVmaW5lZCAmJiBvbkNsaWNrKSB7XG4gICAgaWNvblRhYkluZGV4ID0gLTE7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0xvY2FsZVJlY2VpdmVyW1wiZGVmYXVsdFwiXSwge1xuICAgIGNvbXBvbmVudE5hbWU6IFwiSWNvblwiXG4gIH0sIGZ1bmN0aW9uIChsb2NhbGUpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpXCIsIF9leHRlbmRzKHtcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiB0eXBlICYmIFwiXCIuY29uY2F0KGxvY2FsZS5pY29uLCBcIjogXCIpLmNvbmNhdCh0eXBlKVxuICAgIH0sIHJlc3RQcm9wcywge1xuICAgICAgdGFiSW5kZXg6IGljb25UYWJJbmRleCxcbiAgICAgIG9uQ2xpY2s6IG9uQ2xpY2ssXG4gICAgICBjbGFzc05hbWU6IGNsYXNzU3RyaW5nXG4gICAgfSksIHJlbmRlcklubmVyTm9kZSgpKTtcbiAgfSk7XG59O1xuXG5JY29uLmNyZWF0ZUZyb21JY29uZm9udENOID0gX0ljb25Gb250W1wiZGVmYXVsdFwiXTtcbkljb24uZ2V0VHdvVG9uZUNvbG9yID0gX3R3b1RvbmVQcmltYXJ5Q29sb3IuZ2V0VHdvVG9uZUNvbG9yO1xuSWNvbi5zZXRUd29Ub25lQ29sb3IgPSBfdHdvVG9uZVByaW1hcnlDb2xvci5zZXRUd29Ub25lQ29sb3I7XG52YXIgX2RlZmF1bHQgPSBJY29uO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCIvL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNoYWxsb3dFcXVhbChvYmpBLCBvYmpCLCBjb21wYXJlLCBjb21wYXJlQ29udGV4dCkge1xuICB2YXIgcmV0ID0gY29tcGFyZSA/IGNvbXBhcmUuY2FsbChjb21wYXJlQ29udGV4dCwgb2JqQSwgb2JqQikgOiB2b2lkIDA7XG5cbiAgaWYgKHJldCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuICEhcmV0O1xuICB9XG5cbiAgaWYgKG9iakEgPT09IG9iakIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqQSAhPT0gXCJvYmplY3RcIiB8fCAhb2JqQSB8fCB0eXBlb2Ygb2JqQiAhPT0gXCJvYmplY3RcIiB8fCAhb2JqQikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpO1xuICB2YXIga2V5c0IgPSBPYmplY3Qua2V5cyhvYmpCKTtcblxuICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgYkhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5iaW5kKG9iakIpO1xuXG4gIC8vIFRlc3QgZm9yIEEncyBrZXlzIGRpZmZlcmVudCBmcm9tIEIuXG4gIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IGtleXNBLmxlbmd0aDsgaWR4KyspIHtcbiAgICB2YXIga2V5ID0ga2V5c0FbaWR4XTtcblxuICAgIGlmICghYkhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWVBID0gb2JqQVtrZXldO1xuICAgIHZhciB2YWx1ZUIgPSBvYmpCW2tleV07XG5cbiAgICByZXQgPSBjb21wYXJlID8gY29tcGFyZS5jYWxsKGNvbXBhcmVDb250ZXh0LCB2YWx1ZUEsIHZhbHVlQiwga2V5KSA6IHZvaWQgMDtcblxuICAgIGlmIChyZXQgPT09IGZhbHNlIHx8IChyZXQgPT09IHZvaWQgMCAmJiB2YWx1ZUEgIT09IHZhbHVlQikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfcmVxdWlyZWQgPSByZXF1aXJlKCcuL3JlcXVpcmVkJyk7XG5cbnZhciBfcmVxdWlyZWQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVxdWlyZWQpO1xuXG52YXIgX3doaXRlc3BhY2UgPSByZXF1aXJlKCcuL3doaXRlc3BhY2UnKTtcblxudmFyIF93aGl0ZXNwYWNlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3doaXRlc3BhY2UpO1xuXG52YXIgX3R5cGUgPSByZXF1aXJlKCcuL3R5cGUnKTtcblxudmFyIF90eXBlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3R5cGUpO1xuXG52YXIgX3JhbmdlID0gcmVxdWlyZSgnLi9yYW5nZScpO1xuXG52YXIgX3JhbmdlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JhbmdlKTtcblxudmFyIF9lbnVtID0gcmVxdWlyZSgnLi9lbnVtJyk7XG5cbnZhciBfZW51bTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9lbnVtKTtcblxudmFyIF9wYXR0ZXJuID0gcmVxdWlyZSgnLi9wYXR0ZXJuJyk7XG5cbnZhciBfcGF0dGVybjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wYXR0ZXJuKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSB7XG4gIHJlcXVpcmVkOiBfcmVxdWlyZWQyWydkZWZhdWx0J10sXG4gIHdoaXRlc3BhY2U6IF93aGl0ZXNwYWNlMlsnZGVmYXVsdCddLFxuICB0eXBlOiBfdHlwZTJbJ2RlZmF1bHQnXSxcbiAgcmFuZ2U6IF9yYW5nZTJbJ2RlZmF1bHQnXSxcbiAgJ2VudW0nOiBfZW51bTJbJ2RlZmF1bHQnXSxcbiAgcGF0dGVybjogX3BhdHRlcm4yWydkZWZhdWx0J11cbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfdHlwZW9mMiA9IHJlcXVpcmUoXCIuLi9oZWxwZXJzL3R5cGVvZlwiKTtcblxudmFyIF90eXBlb2YzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdHlwZW9mMik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChzZWxmLCBjYWxsKSB7XG4gIGlmICghc2VsZikge1xuICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgfVxuXG4gIHJldHVybiBjYWxsICYmICgodHlwZW9mIGNhbGwgPT09IFwidW5kZWZpbmVkXCIgPyBcInVuZGVmaW5lZFwiIDogKDAsIF90eXBlb2YzLmRlZmF1bHQpKGNhbGwpKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9zZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9zZXQtcHJvdG90eXBlLW9mXCIpO1xuXG52YXIgX3NldFByb3RvdHlwZU9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NldFByb3RvdHlwZU9mKTtcblxudmFyIF9jcmVhdGUgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvY3JlYXRlXCIpO1xuXG52YXIgX2NyZWF0ZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGUpO1xuXG52YXIgX3R5cGVvZjIgPSByZXF1aXJlKFwiLi4vaGVscGVycy90eXBlb2ZcIik7XG5cbnZhciBfdHlwZW9mMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3R5cGVvZjIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgKHR5cGVvZiBzdXBlckNsYXNzID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6ICgwLCBfdHlwZW9mMy5kZWZhdWx0KShzdXBlckNsYXNzKSkpO1xuICB9XG5cbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gKDAsIF9jcmVhdGUyLmRlZmF1bHQpKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHN1YkNsYXNzLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH1cbiAgfSk7XG4gIGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2YyLmRlZmF1bHQgPyAoMCwgX3NldFByb3RvdHlwZU9mMi5kZWZhdWx0KShzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIik7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVmaW5lUHJvcGVydHkpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgICAgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgICBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICAgIGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfTtcbn0oKTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIik7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVmaW5lUHJvcGVydHkpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAob2JqLCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn0iLCJpbXBvcnQgZGVmaW5lUHJvcGVydHkgZnJvbSBcIi4vZGVmaW5lUHJvcGVydHkuanNcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcblxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpO1xuXG4gICAgaWYgKGVudW1lcmFibGVPbmx5KSB7XG4gICAgICBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0U3ByZWFkMih0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTtcblxuICAgIGlmIChpICUgMikge1xuICAgICAgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59IiwiZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gIGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgcmV0dXJuIENvbnN0cnVjdG9yO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gIF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICAgIG8uX19wcm90b19fID0gcDtcbiAgICByZXR1cm4gbztcbiAgfTtcblxuICByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gIF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gICAgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTtcbiAgfTtcbiAgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIjtcbmltcG9ydCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7XG4gIGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7XG4gICAgcmV0dXJuIGNhbGw7XG4gIH1cblxuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikge1xuICBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIHNlbGY7XG59IiwiaW1wb3J0IGdldFByb3RvdHlwZU9mIGZyb20gXCIuL2dldFByb3RvdHlwZU9mLmpzXCI7XG5pbXBvcnQgaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IGZyb20gXCIuL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qc1wiO1xuaW1wb3J0IHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIi4vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHtcbiAgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkge1xuICAgIHZhciBTdXBlciA9IGdldFByb3RvdHlwZU9mKERlcml2ZWQpLFxuICAgICAgICByZXN1bHQ7XG5cbiAgICBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkge1xuICAgICAgdmFyIE5ld1RhcmdldCA9IGdldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yO1xuICAgICAgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpO1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTtcbiAgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTtcblxuICB0cnkge1xuICAgIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbnZhciB3YXJuZWQgPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiB3YXJuaW5nKHZhbGlkLCBtZXNzYWdlKSB7XG4gIC8vIFN1cHBvcnQgdWdsaWZ5XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF2YWxpZCAmJiBjb25zb2xlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiV2FybmluZzogXCIuY29uY2F0KG1lc3NhZ2UpKTtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIG5vdGUodmFsaWQsIG1lc3NhZ2UpIHtcbiAgLy8gU3VwcG9ydCB1Z2xpZnlcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXZhbGlkICYmIGNvbnNvbGUgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnNvbGUud2FybihcIk5vdGU6IFwiLmNvbmNhdChtZXNzYWdlKSk7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiByZXNldFdhcm5lZCgpIHtcbiAgd2FybmVkID0ge307XG59XG5leHBvcnQgZnVuY3Rpb24gY2FsbChtZXRob2QsIHZhbGlkLCBtZXNzYWdlKSB7XG4gIGlmICghdmFsaWQgJiYgIXdhcm5lZFttZXNzYWdlXSkge1xuICAgIG1ldGhvZChmYWxzZSwgbWVzc2FnZSk7XG4gICAgd2FybmVkW21lc3NhZ2VdID0gdHJ1ZTtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHdhcm5pbmdPbmNlKHZhbGlkLCBtZXNzYWdlKSB7XG4gIGNhbGwod2FybmluZywgdmFsaWQsIG1lc3NhZ2UpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vdGVPbmNlKHZhbGlkLCBtZXNzYWdlKSB7XG4gIGNhbGwobm90ZSwgdmFsaWQsIG1lc3NhZ2UpO1xufVxuZXhwb3J0IGRlZmF1bHQgd2FybmluZ09uY2U7XG4vKiBlc2xpbnQtZW5hYmxlICovIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikge1xuICAgIF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gX3R5cGVvZihvYmopO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCB7IGlzTWVtbyB9IGZyb20gJ3JlYWN0LWlzJztcbmV4cG9ydCBmdW5jdGlvbiBmaWxsUmVmKHJlZiwgbm9kZSkge1xuICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJlZihub2RlKTtcbiAgfSBlbHNlIGlmIChfdHlwZW9mKHJlZikgPT09ICdvYmplY3QnICYmIHJlZiAmJiAnY3VycmVudCcgaW4gcmVmKSB7XG4gICAgcmVmLmN1cnJlbnQgPSBub2RlO1xuICB9XG59XG4vKipcbiAqIE1lcmdlIHJlZnMgaW50byBvbmUgcmVmIGZ1bmN0aW9uIHRvIHN1cHBvcnQgcmVmIHBhc3NpbmcuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2VSZWYoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCByZWZzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIHJlZnNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZWZzLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xuICAgICAgZmlsbFJlZihyZWYsIG5vZGUpO1xuICAgIH0pO1xuICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvcnRSZWYobm9kZU9yQ29tcG9uZW50KSB7XG4gIHZhciBfdHlwZSRwcm90b3R5cGUsIF9ub2RlT3JDb21wb25lbnQkcHJvdDtcblxuICB2YXIgdHlwZSA9IGlzTWVtbyhub2RlT3JDb21wb25lbnQpID8gbm9kZU9yQ29tcG9uZW50LnR5cGUudHlwZSA6IG5vZGVPckNvbXBvbmVudC50eXBlOyAvLyBGdW5jdGlvbiBjb21wb25lbnQgbm9kZVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyAmJiAhKChfdHlwZSRwcm90b3R5cGUgPSB0eXBlLnByb3RvdHlwZSkgPT09IG51bGwgfHwgX3R5cGUkcHJvdG90eXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdHlwZSRwcm90b3R5cGUucmVuZGVyKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyBDbGFzcyBjb21wb25lbnRcblxuXG4gIGlmICh0eXBlb2Ygbm9kZU9yQ29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmICEoKF9ub2RlT3JDb21wb25lbnQkcHJvdCA9IG5vZGVPckNvbXBvbmVudC5wcm90b3R5cGUpID09PSBudWxsIHx8IF9ub2RlT3JDb21wb25lbnQkcHJvdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGVPckNvbXBvbmVudCRwcm90LnJlbmRlcikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbi8qIGVzbGludC1lbmFibGUgKi8iLCJpbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBmaW5kRE9NTm9kZSBmcm9tIFwicmMtdXRpbC9lcy9Eb20vZmluZERPTU5vZGVcIjtcbmltcG9ydCB0b0FycmF5IGZyb20gXCJyYy11dGlsL2VzL0NoaWxkcmVuL3RvQXJyYXlcIjtcbmltcG9ydCB3YXJuaW5nIGZyb20gXCJyYy11dGlsL2VzL3dhcm5pbmdcIjtcbmltcG9ydCB7IGNvbXBvc2VSZWYsIHN1cHBvcnRSZWYgfSBmcm9tIFwicmMtdXRpbC9lcy9yZWZcIjtcbmltcG9ydCBSZXNpemVPYnNlcnZlciBmcm9tICdyZXNpemUtb2JzZXJ2ZXItcG9seWZpbGwnO1xudmFyIElOVEVSTkFMX1BSRUZJWF9LRVkgPSAncmMtb2JzZXJ2ZXIta2V5JzsgLy8gU3RpbGwgbmVlZCB0byBiZSBjb21wYXRpYmxlIHdpdGggUmVhY3QgMTUsIHdlIHVzZSBjbGFzcyBjb21wb25lbnQgaGVyZVxuXG52YXIgUmVhY3RSZXNpemVPYnNlcnZlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoUmVhY3RSZXNpemVPYnNlcnZlciwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihSZWFjdFJlc2l6ZU9ic2VydmVyKTtcblxuICBmdW5jdGlvbiBSZWFjdFJlc2l6ZU9ic2VydmVyKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWFjdFJlc2l6ZU9ic2VydmVyKTtcblxuICAgIF90aGlzID0gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgX3RoaXMucmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICAgIF90aGlzLmNoaWxkTm9kZSA9IG51bGw7XG4gICAgX3RoaXMuY3VycmVudEVsZW1lbnQgPSBudWxsO1xuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDAsXG4gICAgICBvZmZzZXRIZWlnaHQ6IDAsXG4gICAgICBvZmZzZXRXaWR0aDogMFxuICAgIH07XG5cbiAgICBfdGhpcy5vblJlc2l6ZSA9IGZ1bmN0aW9uIChlbnRyaWVzKSB7XG4gICAgICB2YXIgb25SZXNpemUgPSBfdGhpcy5wcm9wcy5vblJlc2l6ZTtcbiAgICAgIHZhciB0YXJnZXQgPSBlbnRyaWVzWzBdLnRhcmdldDtcblxuICAgICAgdmFyIF90YXJnZXQkZ2V0Qm91bmRpbmdDbCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgICB3aWR0aCA9IF90YXJnZXQkZ2V0Qm91bmRpbmdDbC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfdGFyZ2V0JGdldEJvdW5kaW5nQ2wuaGVpZ2h0O1xuXG4gICAgICB2YXIgb2Zmc2V0V2lkdGggPSB0YXJnZXQub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgb2Zmc2V0SGVpZ2h0ID0gdGFyZ2V0Lm9mZnNldEhlaWdodDtcbiAgICAgIC8qKlxuICAgICAgICogUmVzaXplIG9ic2VydmVyIHRyaWdnZXIgd2hlbiBjb250ZW50IHNpemUgY2hhbmdlZC5cbiAgICAgICAqIEluIG1vc3QgY2FzZSB3ZSBqdXN0IGNhcmUgYWJvdXQgZWxlbWVudCBzaXplLFxuICAgICAgICogbGV0J3MgdXNlIGBib3VuZGFyeWAgaW5zdGVhZCBvZiBgY29udGVudFJlY3RgIGhlcmUgdG8gYXZvaWQgc2hha2luZy5cbiAgICAgICAqL1xuXG4gICAgICB2YXIgZml4ZWRXaWR0aCA9IE1hdGguZmxvb3Iod2lkdGgpO1xuICAgICAgdmFyIGZpeGVkSGVpZ2h0ID0gTWF0aC5mbG9vcihoZWlnaHQpO1xuXG4gICAgICBpZiAoX3RoaXMuc3RhdGUud2lkdGggIT09IGZpeGVkV2lkdGggfHwgX3RoaXMuc3RhdGUuaGVpZ2h0ICE9PSBmaXhlZEhlaWdodCB8fCBfdGhpcy5zdGF0ZS5vZmZzZXRXaWR0aCAhPT0gb2Zmc2V0V2lkdGggfHwgX3RoaXMuc3RhdGUub2Zmc2V0SGVpZ2h0ICE9PSBvZmZzZXRIZWlnaHQpIHtcbiAgICAgICAgdmFyIHNpemUgPSB7XG4gICAgICAgICAgd2lkdGg6IGZpeGVkV2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBmaXhlZEhlaWdodCxcbiAgICAgICAgICBvZmZzZXRXaWR0aDogb2Zmc2V0V2lkdGgsXG4gICAgICAgICAgb2Zmc2V0SGVpZ2h0OiBvZmZzZXRIZWlnaHRcbiAgICAgICAgfTtcblxuICAgICAgICBfdGhpcy5zZXRTdGF0ZShzaXplKTtcblxuICAgICAgICBpZiAob25SZXNpemUpIHtcbiAgICAgICAgICAvLyBkZWZlciB0aGUgY2FsbGJhY2sgYnV0IG5vdCBkZWZlciB0byBuZXh0IGZyYW1lXG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBvblJlc2l6ZShfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHNpemUpLCB7fSwge1xuICAgICAgICAgICAgICBvZmZzZXRXaWR0aDogb2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgIG9mZnNldEhlaWdodDogb2Zmc2V0SGVpZ2h0XG4gICAgICAgICAgICB9KSwgdGFyZ2V0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5zZXRDaGlsZE5vZGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgX3RoaXMuY2hpbGROb2RlID0gbm9kZTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJlYWN0UmVzaXplT2JzZXJ2ZXIsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5vbkNvbXBvbmVudFVwZGF0ZWQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkVXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgIHRoaXMub25Db21wb25lbnRVcGRhdGVkKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdGhpcy5kZXN0cm95T2JzZXJ2ZXIoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25Db21wb25lbnRVcGRhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQ29tcG9uZW50VXBkYXRlZCgpIHtcbiAgICAgIHZhciBkaXNhYmxlZCA9IHRoaXMucHJvcHMuZGlzYWJsZWQ7IC8vIFVucmVnaXN0ZXIgaWYgZGlzYWJsZWRcblxuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveU9ic2VydmVyKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gVW5yZWdpc3RlciBpZiBlbGVtZW50IGNoYW5nZWRcblxuXG4gICAgICB2YXIgZWxlbWVudCA9IGZpbmRET01Ob2RlKHRoaXMuY2hpbGROb2RlIHx8IHRoaXMpO1xuICAgICAgdmFyIGVsZW1lbnRDaGFuZ2VkID0gZWxlbWVudCAhPT0gdGhpcy5jdXJyZW50RWxlbWVudDtcblxuICAgICAgaWYgKGVsZW1lbnRDaGFuZ2VkKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveU9ic2VydmVyKCk7XG4gICAgICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMucmVzaXplT2JzZXJ2ZXIgJiYgZWxlbWVudCkge1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKHRoaXMub25SZXNpemUpO1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lPYnNlcnZlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95T2JzZXJ2ZXIoKSB7XG4gICAgICBpZiAodGhpcy5yZXNpemVPYnNlcnZlcikge1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgdmFyIGNoaWxkTm9kZXMgPSB0b0FycmF5KGNoaWxkcmVuKTtcblxuICAgICAgaWYgKGNoaWxkTm9kZXMubGVuZ3RoID4gMSkge1xuICAgICAgICB3YXJuaW5nKGZhbHNlLCAnRmluZCBtb3JlIHRoYW4gb25lIGNoaWxkIG5vZGUgd2l0aCBgY2hpbGRyZW5gIGluIFJlc2l6ZU9ic2VydmVyLiBXaWxsIG9ubHkgb2JzZXJ2ZSBmaXJzdCBvbmUuJyk7XG4gICAgICB9IGVsc2UgaWYgKGNoaWxkTm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHdhcm5pbmcoZmFsc2UsICdgY2hpbGRyZW5gIG9mIFJlc2l6ZU9ic2VydmVyIGlzIGVtcHR5LiBOb3RoaW5nIGlzIGluIG9ic2VydmUuJyk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgY2hpbGROb2RlID0gY2hpbGROb2Rlc1swXTtcblxuICAgICAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGROb2RlKSAmJiBzdXBwb3J0UmVmKGNoaWxkTm9kZSkpIHtcbiAgICAgICAgdmFyIHJlZiA9IGNoaWxkTm9kZS5yZWY7XG4gICAgICAgIGNoaWxkTm9kZXNbMF0gPSAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkTm9kZSwge1xuICAgICAgICAgIHJlZjogY29tcG9zZVJlZihyZWYsIHRoaXMuc2V0Q2hpbGROb2RlKVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoaWxkTm9kZXMubGVuZ3RoID09PSAxID8gY2hpbGROb2Rlc1swXSA6IGNoaWxkTm9kZXMubWFwKGZ1bmN0aW9uIChub2RlLCBpbmRleCkge1xuICAgICAgICBpZiAoISAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQobm9kZSkgfHwgJ2tleScgaW4gbm9kZSAmJiBub2RlLmtleSAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQobm9kZSwge1xuICAgICAgICAgIGtleTogXCJcIi5jb25jYXQoSU5URVJOQUxfUFJFRklYX0tFWSwgXCItXCIpLmNvbmNhdChpbmRleClcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVhY3RSZXNpemVPYnNlcnZlcjtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuUmVhY3RSZXNpemVPYnNlcnZlci5kaXNwbGF5TmFtZSA9ICdSZXNpemVPYnNlcnZlcic7XG5leHBvcnQgZGVmYXVsdCBSZWFjdFJlc2l6ZU9ic2VydmVyOyIsImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gIH1cblxuICBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHN1YkNsYXNzLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufSIsImltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuLyoqXG4gKiBSZXR1cm4gaWYgYSBub2RlIGlzIGEgRE9NIG5vZGUuIEVsc2Ugd2lsbCByZXR1cm4gYnkgYGZpbmRET01Ob2RlYFxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZpbmRET01Ob2RlKG5vZGUpIHtcbiAgaWYgKG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIFJlYWN0RE9NLmZpbmRET01Ob2RlKG5vZGUpO1xufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpc0ZyYWdtZW50IH0gZnJvbSAncmVhY3QtaXMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9BcnJheShjaGlsZHJlbikge1xuICB2YXIgb3B0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgdmFyIHJldCA9IFtdO1xuICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICBpZiAoKGNoaWxkID09PSB1bmRlZmluZWQgfHwgY2hpbGQgPT09IG51bGwpICYmICFvcHRpb24ua2VlcEVtcHR5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGQpKSB7XG4gICAgICByZXQgPSByZXQuY29uY2F0KHRvQXJyYXkoY2hpbGQpKTtcbiAgICB9IGVsc2UgaWYgKGlzRnJhZ21lbnQoY2hpbGQpICYmIGNoaWxkLnByb3BzKSB7XG4gICAgICByZXQgPSByZXQuY29uY2F0KHRvQXJyYXkoY2hpbGQucHJvcHMuY2hpbGRyZW4sIG9wdGlvbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXQucHVzaChjaGlsZCk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJldDtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgeyBpc01lbW8gfSBmcm9tICdyZWFjdC1pcyc7XG5leHBvcnQgZnVuY3Rpb24gZmlsbFJlZihyZWYsIG5vZGUpIHtcbiAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZWYobm9kZSk7XG4gIH0gZWxzZSBpZiAoX3R5cGVvZihyZWYpID09PSAnb2JqZWN0JyAmJiByZWYgJiYgJ2N1cnJlbnQnIGluIHJlZikge1xuICAgIHJlZi5jdXJyZW50ID0gbm9kZTtcbiAgfVxufVxuLyoqXG4gKiBNZXJnZSByZWZzIGludG8gb25lIHJlZiBmdW5jdGlvbiB0byBzdXBwb3J0IHJlZiBwYXNzaW5nLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlUmVmKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgcmVmcyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICByZWZzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmVmcy5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgIGZpbGxSZWYocmVmLCBub2RlKTtcbiAgICB9KTtcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3J0UmVmKG5vZGVPckNvbXBvbmVudCkge1xuICB2YXIgX3R5cGUkcHJvdG90eXBlLCBfbm9kZU9yQ29tcG9uZW50JHByb3Q7XG5cbiAgdmFyIHR5cGUgPSBpc01lbW8obm9kZU9yQ29tcG9uZW50KSA/IG5vZGVPckNvbXBvbmVudC50eXBlLnR5cGUgOiBub2RlT3JDb21wb25lbnQudHlwZTsgLy8gRnVuY3Rpb24gY29tcG9uZW50IG5vZGVcblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgJiYgISgoX3R5cGUkcHJvdG90eXBlID0gdHlwZS5wcm90b3R5cGUpID09PSBudWxsIHx8IF90eXBlJHByb3RvdHlwZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3R5cGUkcHJvdG90eXBlLnJlbmRlcikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gLy8gQ2xhc3MgY29tcG9uZW50XG5cblxuICBpZiAodHlwZW9mIG5vZGVPckNvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiAhKChfbm9kZU9yQ29tcG9uZW50JHByb3QgPSBub2RlT3JDb21wb25lbnQucHJvdG90eXBlKSA9PT0gbnVsbCB8fCBfbm9kZU9yQ29tcG9uZW50JHByb3QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlT3JDb21wb25lbnQkcHJvdC5yZW5kZXIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4vKiBlc2xpbnQtZW5hYmxlICovIiwiaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyV3JhcCh0YXJnZXQsIGV2ZW50VHlwZSwgY2IsIG9wdGlvbikge1xuICAvKiBlc2xpbnQgY2FtZWxjYXNlOiAyICovXG4gIHZhciBjYWxsYmFjayA9IFJlYWN0RE9NLnVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzID8gZnVuY3Rpb24gcnVuKGUpIHtcbiAgICBSZWFjdERPTS51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyhjYiwgZSk7XG4gIH0gOiBjYjtcblxuICBpZiAodGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBvcHRpb24pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIGlmICh0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59IiwidmFyIHJhZiA9IGZ1bmN0aW9uIHJhZihjYWxsYmFjaykge1xuICByZXR1cm4gK3NldFRpbWVvdXQoY2FsbGJhY2ssIDE2KTtcbn07XG5cbnZhciBjYWYgPSBmdW5jdGlvbiBjYWYobnVtKSB7XG4gIHJldHVybiBjbGVhclRpbWVvdXQobnVtKTtcbn07XG5cbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAncmVxdWVzdEFuaW1hdGlvbkZyYW1lJyBpbiB3aW5kb3cpIHtcbiAgcmFmID0gZnVuY3Rpb24gcmFmKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2spO1xuICB9O1xuXG4gIGNhZiA9IGZ1bmN0aW9uIGNhZihoYW5kbGUpIHtcbiAgICByZXR1cm4gd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGhhbmRsZSk7XG4gIH07XG59XG5cbnZhciByYWZVVUlEID0gMDtcbnZhciByYWZJZHMgPSBuZXcgTWFwKCk7XG5cbmZ1bmN0aW9uIGNsZWFudXAoaWQpIHtcbiAgcmFmSWRzLmRlbGV0ZShpZCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdyYXBwZXJSYWYoY2FsbGJhY2spIHtcbiAgdmFyIHRpbWVzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAxO1xuICByYWZVVUlEICs9IDE7XG4gIHZhciBpZCA9IHJhZlVVSUQ7XG5cbiAgZnVuY3Rpb24gY2FsbFJlZihsZWZ0VGltZXMpIHtcbiAgICBpZiAobGVmdFRpbWVzID09PSAwKSB7XG4gICAgICAvLyBDbGVhbiB1cFxuICAgICAgY2xlYW51cChpZCk7IC8vIFRyaWdnZXJcblxuICAgICAgY2FsbGJhY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTmV4dCByYWZcbiAgICAgIHZhciByZWFsSWQgPSByYWYoZnVuY3Rpb24gKCkge1xuICAgICAgICBjYWxsUmVmKGxlZnRUaW1lcyAtIDEpO1xuICAgICAgfSk7IC8vIEJpbmQgcmVhbCByYWYgaWRcblxuICAgICAgcmFmSWRzLnNldChpZCwgcmVhbElkKTtcbiAgICB9XG4gIH1cblxuICBjYWxsUmVmKHRpbWVzKTtcbiAgcmV0dXJuIGlkO1xufVxuXG53cmFwcGVyUmFmLmNhbmNlbCA9IGZ1bmN0aW9uIChpZCkge1xuICB2YXIgcmVhbElkID0gcmFmSWRzLmdldChpZCk7XG4gIGNsZWFudXAocmVhbElkKTtcbiAgcmV0dXJuIGNhZihyZWFsSWQpO1xufTsiLCJ2YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiLi9kZWZpbmVQcm9wZXJ0eS5qc1wiKTtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcblxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpO1xuXG4gICAgaWYgKGVudW1lcmFibGVPbmx5KSB7XG4gICAgICBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkMih0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTtcblxuICAgIGlmIChpICUgMikge1xuICAgICAgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9vYmplY3RTcHJlYWQyO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyIsInZhciBhcnJheVdpdGhvdXRIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aG91dEhvbGVzLmpzXCIpO1xuXG52YXIgaXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5LmpzXCIpO1xuXG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcblxudmFyIG5vbkl0ZXJhYmxlU3ByZWFkID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVTcHJlYWQuanNcIik7XG5cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKGFycikgfHwgaXRlcmFibGVUb0FycmF5KGFycikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF90b0NvbnN1bWFibGVBcnJheTtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn0iLCJpbXBvcnQgZGVmaW5lUHJvcGVydHkgZnJvbSBcIi4vZGVmaW5lUHJvcGVydHkuanNcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcblxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpO1xuXG4gICAgaWYgKGVudW1lcmFibGVPbmx5KSB7XG4gICAgICBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0U3ByZWFkMih0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTtcblxuICAgIGlmIChpICUgMikge1xuICAgICAgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7XG4gIGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykge1xuICAgIGFycjJbaV0gPSBhcnJbaV07XG4gIH1cblxuICByZXR1cm4gYXJyMjtcbn0iLCJpbXBvcnQgYXJyYXlXaXRoSG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRoSG9sZXMuanNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXlMaW1pdCBmcm9tIFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiO1xuaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgbm9uSXRlcmFibGVSZXN0IGZyb20gXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhhcnIpIHx8IGl0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkge1xuICB2YXIgX2kgPSBhcnIgJiYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgYXJyW1N5bWJvbC5pdGVyYXRvcl0gfHwgYXJyW1wiQEBpdGVyYXRvclwiXSk7XG5cbiAgaWYgKF9pID09IG51bGwpIHJldHVybjtcbiAgdmFyIF9hcnIgPSBbXTtcbiAgdmFyIF9uID0gdHJ1ZTtcbiAgdmFyIF9kID0gZmFsc2U7XG5cbiAgdmFyIF9zLCBfZTtcblxuICB0cnkge1xuICAgIGZvciAoX2kgPSBfaS5jYWxsKGFycik7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7XG5cbiAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9kID0gdHJ1ZTtcbiAgICBfZSA9IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoX2QpIHRocm93IF9lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfYXJyO1xufSIsImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHtcbiAgaWYgKCFvKSByZXR1cm47XG4gIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbiAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpO1xuICBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lO1xuICBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTtcbiAgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7XG4gICAgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIG9iajtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfdHlwZW9mKG9iaik7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IHsgaXNNZW1vIH0gZnJvbSAncmVhY3QtaXMnO1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGxSZWYocmVmLCBub2RlKSB7XG4gIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmVmKG5vZGUpO1xuICB9IGVsc2UgaWYgKF90eXBlb2YocmVmKSA9PT0gJ29iamVjdCcgJiYgcmVmICYmICdjdXJyZW50JyBpbiByZWYpIHtcbiAgICByZWYuY3VycmVudCA9IG5vZGU7XG4gIH1cbn1cbi8qKlxuICogTWVyZ2UgcmVmcyBpbnRvIG9uZSByZWYgZnVuY3Rpb24gdG8gc3VwcG9ydCByZWYgcGFzc2luZy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZVJlZigpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHJlZnMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgcmVmc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJlZnMuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgICBmaWxsUmVmKHJlZiwgbm9kZSk7XG4gICAgfSk7XG4gIH07XG59XG5leHBvcnQgZnVuY3Rpb24gc3VwcG9ydFJlZihub2RlT3JDb21wb25lbnQpIHtcbiAgdmFyIF90eXBlJHByb3RvdHlwZSwgX25vZGVPckNvbXBvbmVudCRwcm90O1xuXG4gIHZhciB0eXBlID0gaXNNZW1vKG5vZGVPckNvbXBvbmVudCkgPyBub2RlT3JDb21wb25lbnQudHlwZS50eXBlIDogbm9kZU9yQ29tcG9uZW50LnR5cGU7IC8vIEZ1bmN0aW9uIGNvbXBvbmVudCBub2RlXG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nICYmICEoKF90eXBlJHByb3RvdHlwZSA9IHR5cGUucHJvdG90eXBlKSA9PT0gbnVsbCB8fCBfdHlwZSRwcm90b3R5cGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90eXBlJHByb3RvdHlwZS5yZW5kZXIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IC8vIENsYXNzIGNvbXBvbmVudFxuXG5cbiAgaWYgKHR5cGVvZiBub2RlT3JDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgISgoX25vZGVPckNvbXBvbmVudCRwcm90ID0gbm9kZU9yQ29tcG9uZW50LnByb3RvdHlwZSkgPT09IG51bGwgfHwgX25vZGVPckNvbXBvbmVudCRwcm90ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbm9kZU9yQ29tcG9uZW50JHByb3QucmVuZGVyKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuLyogZXNsaW50LWVuYWJsZSAqLyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNhblVzZURvbSgpIHtcbiAgcmV0dXJuICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IGNhblVzZURPTSBmcm9tIFwicmMtdXRpbC9lcy9Eb20vY2FuVXNlRG9tXCI7IC8vID09PT09PT09PT09PT09PT09IFRyYW5zaXRpb24gPT09PT09PT09PT09PT09PT1cbi8vIEV2ZW50IHdyYXBwZXIuIENvcHkgZnJvbSByZWFjdCBzb3VyY2UgY29kZVxuXG5mdW5jdGlvbiBtYWtlUHJlZml4TWFwKHN0eWxlUHJvcCwgZXZlbnROYW1lKSB7XG4gIHZhciBwcmVmaXhlcyA9IHt9O1xuICBwcmVmaXhlc1tzdHlsZVByb3AudG9Mb3dlckNhc2UoKV0gPSBldmVudE5hbWUudG9Mb3dlckNhc2UoKTtcbiAgcHJlZml4ZXNbXCJXZWJraXRcIi5jb25jYXQoc3R5bGVQcm9wKV0gPSBcIndlYmtpdFwiLmNvbmNhdChldmVudE5hbWUpO1xuICBwcmVmaXhlc1tcIk1velwiLmNvbmNhdChzdHlsZVByb3ApXSA9IFwibW96XCIuY29uY2F0KGV2ZW50TmFtZSk7XG4gIHByZWZpeGVzW1wibXNcIi5jb25jYXQoc3R5bGVQcm9wKV0gPSBcIk1TXCIuY29uY2F0KGV2ZW50TmFtZSk7XG4gIHByZWZpeGVzW1wiT1wiLmNvbmNhdChzdHlsZVByb3ApXSA9IFwib1wiLmNvbmNhdChldmVudE5hbWUudG9Mb3dlckNhc2UoKSk7XG4gIHJldHVybiBwcmVmaXhlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZlbmRvclByZWZpeGVzKGRvbVN1cHBvcnQsIHdpbikge1xuICB2YXIgcHJlZml4ZXMgPSB7XG4gICAgYW5pbWF0aW9uZW5kOiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5pbWF0aW9uRW5kJyksXG4gICAgdHJhbnNpdGlvbmVuZDogbWFrZVByZWZpeE1hcCgnVHJhbnNpdGlvbicsICdUcmFuc2l0aW9uRW5kJylcbiAgfTtcblxuICBpZiAoZG9tU3VwcG9ydCkge1xuICAgIGlmICghKCdBbmltYXRpb25FdmVudCcgaW4gd2luKSkge1xuICAgICAgZGVsZXRlIHByZWZpeGVzLmFuaW1hdGlvbmVuZC5hbmltYXRpb247XG4gICAgfVxuXG4gICAgaWYgKCEoJ1RyYW5zaXRpb25FdmVudCcgaW4gd2luKSkge1xuICAgICAgZGVsZXRlIHByZWZpeGVzLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJlZml4ZXM7XG59XG52YXIgdmVuZG9yUHJlZml4ZXMgPSBnZXRWZW5kb3JQcmVmaXhlcyhjYW5Vc2VET00oKSwgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fSk7XG52YXIgc3R5bGUgPSB7fTtcblxuaWYgKGNhblVzZURPTSgpKSB7XG4gIHZhciBfZG9jdW1lbnQkY3JlYXRlRWxlbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICBzdHlsZSA9IF9kb2N1bWVudCRjcmVhdGVFbGVtZS5zdHlsZTtcbn1cblxudmFyIHByZWZpeGVkRXZlbnROYW1lcyA9IHt9O1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKGV2ZW50TmFtZSkge1xuICBpZiAocHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0pIHtcbiAgICByZXR1cm4gcHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV07XG4gIH1cblxuICB2YXIgcHJlZml4TWFwID0gdmVuZG9yUHJlZml4ZXNbZXZlbnROYW1lXTtcblxuICBpZiAocHJlZml4TWFwKSB7XG4gICAgdmFyIHN0eWxlUHJvcExpc3QgPSBPYmplY3Qua2V5cyhwcmVmaXhNYXApO1xuICAgIHZhciBsZW4gPSBzdHlsZVByb3BMaXN0Lmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICAgIHZhciBzdHlsZVByb3AgPSBzdHlsZVByb3BMaXN0W2ldO1xuXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByZWZpeE1hcCwgc3R5bGVQcm9wKSAmJiBzdHlsZVByb3AgaW4gc3R5bGUpIHtcbiAgICAgICAgcHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0gPSBwcmVmaXhNYXBbc3R5bGVQcm9wXTtcbiAgICAgICAgcmV0dXJuIHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnJztcbn1cbnZhciBpbnRlcm5hbEFuaW1hdGlvbkVuZE5hbWUgPSBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uZW5kJyk7XG52YXIgaW50ZXJuYWxUcmFuc2l0aW9uRW5kTmFtZSA9IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCd0cmFuc2l0aW9uZW5kJyk7XG5leHBvcnQgdmFyIHN1cHBvcnRUcmFuc2l0aW9uID0gISEoaW50ZXJuYWxBbmltYXRpb25FbmROYW1lICYmIGludGVybmFsVHJhbnNpdGlvbkVuZE5hbWUpO1xuZXhwb3J0IHZhciBhbmltYXRpb25FbmROYW1lID0gaW50ZXJuYWxBbmltYXRpb25FbmROYW1lIHx8ICdhbmltYXRpb25lbmQnO1xuZXhwb3J0IHZhciB0cmFuc2l0aW9uRW5kTmFtZSA9IGludGVybmFsVHJhbnNpdGlvbkVuZE5hbWUgfHwgJ3RyYW5zaXRpb25lbmQnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zaXRpb25OYW1lKHRyYW5zaXRpb25OYW1lLCB0cmFuc2l0aW9uVHlwZSkge1xuICBpZiAoIXRyYW5zaXRpb25OYW1lKSByZXR1cm4gbnVsbDtcblxuICBpZiAoX3R5cGVvZih0cmFuc2l0aW9uTmFtZSkgPT09ICdvYmplY3QnKSB7XG4gICAgdmFyIHR5cGUgPSB0cmFuc2l0aW9uVHlwZS5yZXBsYWNlKC8tXFx3L2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgcmV0dXJuIG1hdGNoWzFdLnRvVXBwZXJDYXNlKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRyYW5zaXRpb25OYW1lW3R5cGVdO1xuICB9XG5cbiAgcmV0dXJuIFwiXCIuY29uY2F0KHRyYW5zaXRpb25OYW1lLCBcIi1cIikuY29uY2F0KHRyYW5zaXRpb25UeXBlKTtcbn0iLCJpbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU1vdW50U3RhdHVzKGRlZmF1bHRWYWx1ZSkge1xuICB2YXIgZGVzdHJveVJlZiA9IHVzZVJlZihmYWxzZSk7XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKGRlZmF1bHRWYWx1ZSksXG4gICAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICAgIHZhbCA9IF91c2VTdGF0ZTJbMF0sXG4gICAgICBzZXRWYWwgPSBfdXNlU3RhdGUyWzFdO1xuXG4gIGZ1bmN0aW9uIHNldFZhbHVlKG5leHQpIHtcbiAgICBpZiAoIWRlc3Ryb3lSZWYuY3VycmVudCkge1xuICAgICAgc2V0VmFsKG5leHQpO1xuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlc3Ryb3lSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfTtcbiAgfSwgW10pO1xuICByZXR1cm4gW3ZhbCwgc2V0VmFsdWVdO1xufSIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNhblVzZURvbSBmcm9tIFwicmMtdXRpbC9lcy9Eb20vY2FuVXNlRG9tXCI7IC8vIEl0J3Mgc2FmZSB0byB1c2UgYHVzZUxheW91dEVmZmVjdGAgYnV0IHRoZSB3YXJuaW5nIGlzIGFubm95aW5nXG5cbnZhciB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0ID0gY2FuVXNlRG9tKCkgPyB1c2VMYXlvdXRFZmZlY3QgOiB1c2VFZmZlY3Q7XG5leHBvcnQgZGVmYXVsdCB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0OyIsInZhciByYWYgPSBmdW5jdGlvbiByYWYoY2FsbGJhY2spIHtcbiAgcmV0dXJuICtzZXRUaW1lb3V0KGNhbGxiYWNrLCAxNik7XG59O1xuXG52YXIgY2FmID0gZnVuY3Rpb24gY2FmKG51bSkge1xuICByZXR1cm4gY2xlYXJUaW1lb3V0KG51bSk7XG59O1xuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ3JlcXVlc3RBbmltYXRpb25GcmFtZScgaW4gd2luZG93KSB7XG4gIHJhZiA9IGZ1bmN0aW9uIHJhZihjYWxsYmFjaykge1xuICAgIHJldHVybiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrKTtcbiAgfTtcblxuICBjYWYgPSBmdW5jdGlvbiBjYWYoaGFuZGxlKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShoYW5kbGUpO1xuICB9O1xufVxuXG52YXIgcmFmVVVJRCA9IDA7XG52YXIgcmFmSWRzID0gbmV3IE1hcCgpO1xuXG5mdW5jdGlvbiBjbGVhbnVwKGlkKSB7XG4gIHJhZklkcy5kZWxldGUoaWQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB3cmFwcGVyUmFmKGNhbGxiYWNrKSB7XG4gIHZhciB0aW1lcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMTtcbiAgcmFmVVVJRCArPSAxO1xuICB2YXIgaWQgPSByYWZVVUlEO1xuXG4gIGZ1bmN0aW9uIGNhbGxSZWYobGVmdFRpbWVzKSB7XG4gICAgaWYgKGxlZnRUaW1lcyA9PT0gMCkge1xuICAgICAgLy8gQ2xlYW4gdXBcbiAgICAgIGNsZWFudXAoaWQpOyAvLyBUcmlnZ2VyXG5cbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5leHQgcmFmXG4gICAgICB2YXIgcmVhbElkID0gcmFmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FsbFJlZihsZWZ0VGltZXMgLSAxKTtcbiAgICAgIH0pOyAvLyBCaW5kIHJlYWwgcmFmIGlkXG5cbiAgICAgIHJhZklkcy5zZXQoaWQsIHJlYWxJZCk7XG4gICAgfVxuICB9XG5cbiAgY2FsbFJlZih0aW1lcyk7XG4gIHJldHVybiBpZDtcbn1cblxud3JhcHBlclJhZi5jYW5jZWwgPSBmdW5jdGlvbiAoaWQpIHtcbiAgdmFyIHJlYWxJZCA9IHJhZklkcy5nZXQoaWQpO1xuICBjbGVhbnVwKHJlYWxJZCk7XG4gIHJldHVybiBjYWYocmVhbElkKTtcbn07IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHJhZiBmcm9tIFwicmMtdXRpbC9lcy9yYWZcIjtcbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoKSB7XG4gIHZhciBuZXh0RnJhbWVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG5cbiAgZnVuY3Rpb24gY2FuY2VsTmV4dEZyYW1lKCkge1xuICAgIHJhZi5jYW5jZWwobmV4dEZyYW1lUmVmLmN1cnJlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gbmV4dEZyYW1lKGNhbGxiYWNrKSB7XG4gICAgdmFyIGRlbGF5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAyO1xuICAgIGNhbmNlbE5leHRGcmFtZSgpO1xuICAgIHZhciBuZXh0RnJhbWVJZCA9IHJhZihmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoZGVsYXkgPD0gMSkge1xuICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgaXNDYW5jZWxlZDogZnVuY3Rpb24gaXNDYW5jZWxlZCgpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXh0RnJhbWVJZCAhPT0gbmV4dEZyYW1lUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHRGcmFtZShjYWxsYmFjaywgZGVsYXkgLSAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBuZXh0RnJhbWVSZWYuY3VycmVudCA9IG5leHRGcmFtZUlkO1xuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgY2FuY2VsTmV4dEZyYW1lKCk7XG4gICAgfTtcbiAgfSwgW10pO1xuICByZXR1cm4gW25leHRGcmFtZSwgY2FuY2VsTmV4dEZyYW1lXTtcbn0pOyIsImltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU1RFUF9QUkVQQVJFLCBTVEVQX0FDVElWRSwgU1RFUF9TVEFSVCwgU1RFUF9BQ1RJVkFURUQsIFNURVBfTk9ORSB9IGZyb20gJy4uL2ludGVyZmFjZSc7XG5pbXBvcnQgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCBmcm9tICcuL3VzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QnO1xuaW1wb3J0IHVzZU5leHRGcmFtZSBmcm9tICcuL3VzZU5leHRGcmFtZSc7XG52YXIgU1RFUF9RVUVVRSA9IFtTVEVQX1BSRVBBUkUsIFNURVBfU1RBUlQsIFNURVBfQUNUSVZFLCBTVEVQX0FDVElWQVRFRF07XG4vKiogU2tpcCBjdXJyZW50IHN0ZXAgKi9cblxuZXhwb3J0IHZhciBTa2lwU3RlcCA9IGZhbHNlO1xuLyoqIEN1cnJlbnQgc3RlcCBzaG91bGQgYmUgdXBkYXRlIGluICovXG5cbmV4cG9ydCB2YXIgRG9TdGVwID0gdHJ1ZTtcbmV4cG9ydCBmdW5jdGlvbiBpc0FjdGl2ZShzdGVwKSB7XG4gIHJldHVybiBzdGVwID09PSBTVEVQX0FDVElWRSB8fCBzdGVwID09PSBTVEVQX0FDVElWQVRFRDtcbn1cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoc3RhdHVzLCBjYWxsYmFjaykge1xuICB2YXIgX1JlYWN0JHVzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUoU1RFUF9OT05FKSxcbiAgICAgIF9SZWFjdCR1c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfUmVhY3QkdXNlU3RhdGUsIDIpLFxuICAgICAgc3RlcCA9IF9SZWFjdCR1c2VTdGF0ZTJbMF0sXG4gICAgICBzZXRTdGVwID0gX1JlYWN0JHVzZVN0YXRlMlsxXTtcblxuICB2YXIgX3VzZU5leHRGcmFtZSA9IHVzZU5leHRGcmFtZSgpLFxuICAgICAgX3VzZU5leHRGcmFtZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlTmV4dEZyYW1lLCAyKSxcbiAgICAgIG5leHRGcmFtZSA9IF91c2VOZXh0RnJhbWUyWzBdLFxuICAgICAgY2FuY2VsTmV4dEZyYW1lID0gX3VzZU5leHRGcmFtZTJbMV07XG5cbiAgZnVuY3Rpb24gc3RhcnRRdWV1ZSgpIHtcbiAgICBzZXRTdGVwKFNURVBfUFJFUEFSRSk7XG4gIH1cblxuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc3RlcCAhPT0gU1RFUF9OT05FICYmIHN0ZXAgIT09IFNURVBfQUNUSVZBVEVEKSB7XG4gICAgICB2YXIgaW5kZXggPSBTVEVQX1FVRVVFLmluZGV4T2Yoc3RlcCk7XG4gICAgICB2YXIgbmV4dFN0ZXAgPSBTVEVQX1FVRVVFW2luZGV4ICsgMV07XG4gICAgICB2YXIgcmVzdWx0ID0gY2FsbGJhY2soc3RlcCk7XG5cbiAgICAgIGlmIChyZXN1bHQgPT09IFNraXBTdGVwKSB7XG4gICAgICAgIC8vIFNraXAgd2hlbiBubyBuZWVkZWRcbiAgICAgICAgc2V0U3RlcChuZXh0U3RlcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEbyBhcyBmcmFtZSBmb3Igc3RlcCB1cGRhdGVcbiAgICAgICAgbmV4dEZyYW1lKGZ1bmN0aW9uIChpbmZvKSB7XG4gICAgICAgICAgZnVuY3Rpb24gZG9OZXh0KCkge1xuICAgICAgICAgICAgLy8gU2tpcCBzaW5jZSBjdXJyZW50IHF1ZXVlIGlzIG9vZFxuICAgICAgICAgICAgaWYgKGluZm8uaXNDYW5jZWxlZCgpKSByZXR1cm47XG4gICAgICAgICAgICBzZXRTdGVwKG5leHRTdGVwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBkb05leHQoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gT25seSBwcm9taXNlIHNob3VsZCBiZSBhc3luY1xuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkudGhlbihkb05leHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbc3RhdHVzLCBzdGVwXSk7XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbmNlbE5leHRGcmFtZSgpO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgcmV0dXJuIFtzdGFydFF1ZXVlLCBzdGVwXTtcbn0pOyIsImV4cG9ydCB2YXIgU1RBVFVTX05PTkUgPSAnbm9uZSc7XG5leHBvcnQgdmFyIFNUQVRVU19BUFBFQVIgPSAnYXBwZWFyJztcbmV4cG9ydCB2YXIgU1RBVFVTX0VOVEVSID0gJ2VudGVyJztcbmV4cG9ydCB2YXIgU1RBVFVTX0xFQVZFID0gJ2xlYXZlJztcbmV4cG9ydCB2YXIgU1RFUF9OT05FID0gJ25vbmUnO1xuZXhwb3J0IHZhciBTVEVQX1BSRVBBUkUgPSAncHJlcGFyZSc7XG5leHBvcnQgdmFyIFNURVBfU1RBUlQgPSAnc3RhcnQnO1xuZXhwb3J0IHZhciBTVEVQX0FDVElWRSA9ICdhY3RpdmUnO1xuZXhwb3J0IHZhciBTVEVQX0FDVElWQVRFRCA9ICdlbmQnOyIsImltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNUQVRVU19BUFBFQVIsIFNUQVRVU19OT05FLCBTVEFUVVNfTEVBVkUsIFNUQVRVU19FTlRFUiwgU1RFUF9QUkVQQVJFLCBTVEVQX1NUQVJULCBTVEVQX0FDVElWRSB9IGZyb20gJy4uL2ludGVyZmFjZSc7XG5pbXBvcnQgdXNlU3RhdGUgZnJvbSAnLi91c2VTdGF0ZSc7XG5pbXBvcnQgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCBmcm9tICcuL3VzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QnO1xuaW1wb3J0IHVzZVN0ZXBRdWV1ZSwgeyBEb1N0ZXAsIFNraXBTdGVwLCBpc0FjdGl2ZSB9IGZyb20gJy4vdXNlU3RlcFF1ZXVlJztcbmltcG9ydCB1c2VEb21Nb3Rpb25FdmVudHMgZnJvbSAnLi91c2VEb21Nb3Rpb25FdmVudHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlU3RhdHVzKHN1cHBvcnRNb3Rpb24sIHZpc2libGUsIGdldEVsZW1lbnQsIF9yZWYpIHtcbiAgdmFyIF9yZWYkbW90aW9uRW50ZXIgPSBfcmVmLm1vdGlvbkVudGVyLFxuICAgICAgbW90aW9uRW50ZXIgPSBfcmVmJG1vdGlvbkVudGVyID09PSB2b2lkIDAgPyB0cnVlIDogX3JlZiRtb3Rpb25FbnRlcixcbiAgICAgIF9yZWYkbW90aW9uQXBwZWFyID0gX3JlZi5tb3Rpb25BcHBlYXIsXG4gICAgICBtb3Rpb25BcHBlYXIgPSBfcmVmJG1vdGlvbkFwcGVhciA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWYkbW90aW9uQXBwZWFyLFxuICAgICAgX3JlZiRtb3Rpb25MZWF2ZSA9IF9yZWYubW90aW9uTGVhdmUsXG4gICAgICBtb3Rpb25MZWF2ZSA9IF9yZWYkbW90aW9uTGVhdmUgPT09IHZvaWQgMCA/IHRydWUgOiBfcmVmJG1vdGlvbkxlYXZlLFxuICAgICAgbW90aW9uRGVhZGxpbmUgPSBfcmVmLm1vdGlvbkRlYWRsaW5lLFxuICAgICAgbW90aW9uTGVhdmVJbW1lZGlhdGVseSA9IF9yZWYubW90aW9uTGVhdmVJbW1lZGlhdGVseSxcbiAgICAgIG9uQXBwZWFyUHJlcGFyZSA9IF9yZWYub25BcHBlYXJQcmVwYXJlLFxuICAgICAgb25FbnRlclByZXBhcmUgPSBfcmVmLm9uRW50ZXJQcmVwYXJlLFxuICAgICAgb25MZWF2ZVByZXBhcmUgPSBfcmVmLm9uTGVhdmVQcmVwYXJlLFxuICAgICAgb25BcHBlYXJTdGFydCA9IF9yZWYub25BcHBlYXJTdGFydCxcbiAgICAgIG9uRW50ZXJTdGFydCA9IF9yZWYub25FbnRlclN0YXJ0LFxuICAgICAgb25MZWF2ZVN0YXJ0ID0gX3JlZi5vbkxlYXZlU3RhcnQsXG4gICAgICBvbkFwcGVhckFjdGl2ZSA9IF9yZWYub25BcHBlYXJBY3RpdmUsXG4gICAgICBvbkVudGVyQWN0aXZlID0gX3JlZi5vbkVudGVyQWN0aXZlLFxuICAgICAgb25MZWF2ZUFjdGl2ZSA9IF9yZWYub25MZWF2ZUFjdGl2ZSxcbiAgICAgIG9uQXBwZWFyRW5kID0gX3JlZi5vbkFwcGVhckVuZCxcbiAgICAgIG9uRW50ZXJFbmQgPSBfcmVmLm9uRW50ZXJFbmQsXG4gICAgICBvbkxlYXZlRW5kID0gX3JlZi5vbkxlYXZlRW5kLFxuICAgICAgb25WaXNpYmxlQ2hhbmdlZCA9IF9yZWYub25WaXNpYmxlQ2hhbmdlZDtcblxuICAvLyBVc2VkIGZvciBvdXRlciByZW5kZXIgdXNhZ2UgdG8gYXZvaWQgYHZpc2libGU6IGZhbHNlICYgc3RhdHVzOiBub25lYCB0byByZW5kZXIgbm90aGluZ1xuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoKSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgYXN5bmNWaXNpYmxlID0gX3VzZVN0YXRlMlswXSxcbiAgICAgIHNldEFzeW5jVmlzaWJsZSA9IF91c2VTdGF0ZTJbMV07XG5cbiAgdmFyIF91c2VTdGF0ZTMgPSB1c2VTdGF0ZShTVEFUVVNfTk9ORSksXG4gICAgICBfdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMywgMiksXG4gICAgICBzdGF0dXMgPSBfdXNlU3RhdGU0WzBdLFxuICAgICAgc2V0U3RhdHVzID0gX3VzZVN0YXRlNFsxXTtcblxuICB2YXIgX3VzZVN0YXRlNSA9IHVzZVN0YXRlKG51bGwpLFxuICAgICAgX3VzZVN0YXRlNiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTUsIDIpLFxuICAgICAgc3R5bGUgPSBfdXNlU3RhdGU2WzBdLFxuICAgICAgc2V0U3R5bGUgPSBfdXNlU3RhdGU2WzFdO1xuXG4gIHZhciBtb3VudGVkUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgdmFyIGRlYWRsaW5lUmVmID0gdXNlUmVmKG51bGwpO1xuICB2YXIgZGVzdHJveWVkUmVmID0gdXNlUmVmKGZhbHNlKTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09IERvbSBOb2RlID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBjYWNoZUVsZW1lbnRSZWYgPSB1c2VSZWYobnVsbCk7XG5cbiAgZnVuY3Rpb24gZ2V0RG9tRWxlbWVudCgpIHtcbiAgICB2YXIgZWxlbWVudCA9IGdldEVsZW1lbnQoKTtcbiAgICByZXR1cm4gZWxlbWVudCB8fCBjYWNoZUVsZW1lbnRSZWYuY3VycmVudDtcbiAgfSAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PSBNb3Rpb24gRW5kID09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuICB2YXIgYWN0aXZlUmVmID0gdXNlUmVmKGZhbHNlKTtcblxuICBmdW5jdGlvbiBvbkludGVybmFsTW90aW9uRW5kKGV2ZW50KSB7XG4gICAgdmFyIGVsZW1lbnQgPSBnZXREb21FbGVtZW50KCk7XG5cbiAgICBpZiAoZXZlbnQgJiYgIWV2ZW50LmRlYWRsaW5lICYmIGV2ZW50LnRhcmdldCAhPT0gZWxlbWVudCkge1xuICAgICAgLy8gZXZlbnQgZXhpc3RzXG4gICAgICAvLyBub3QgaW5pdGlhdGVkIGJ5IGRlYWRsaW5lXG4gICAgICAvLyB0cmFuc2l0aW9uRW5kIG5vdCBmaXJlZCBieSBpbm5lciBlbGVtZW50c1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjYW5FbmQ7XG5cbiAgICBpZiAoc3RhdHVzID09PSBTVEFUVVNfQVBQRUFSICYmIGFjdGl2ZVJlZi5jdXJyZW50KSB7XG4gICAgICBjYW5FbmQgPSBvbkFwcGVhckVuZCA9PT0gbnVsbCB8fCBvbkFwcGVhckVuZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25BcHBlYXJFbmQoZWxlbWVudCwgZXZlbnQpO1xuICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSBTVEFUVVNfRU5URVIgJiYgYWN0aXZlUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNhbkVuZCA9IG9uRW50ZXJFbmQgPT09IG51bGwgfHwgb25FbnRlckVuZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25FbnRlckVuZChlbGVtZW50LCBldmVudCk7XG4gICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IFNUQVRVU19MRUFWRSAmJiBhY3RpdmVSZWYuY3VycmVudCkge1xuICAgICAgY2FuRW5kID0gb25MZWF2ZUVuZCA9PT0gbnVsbCB8fCBvbkxlYXZlRW5kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkxlYXZlRW5kKGVsZW1lbnQsIGV2ZW50KTtcbiAgICB9IC8vIE9ubHkgdXBkYXRlIHN0YXR1cyB3aGVuIGBjYW5FbmRgIGFuZCBub3QgZGVzdHJveWVkXG5cblxuICAgIGlmIChjYW5FbmQgIT09IGZhbHNlICYmICFkZXN0cm95ZWRSZWYuY3VycmVudCkge1xuICAgICAgc2V0U3RhdHVzKFNUQVRVU19OT05FKTtcbiAgICAgIHNldFN0eWxlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBfdXNlRG9tTW90aW9uRXZlbnRzID0gdXNlRG9tTW90aW9uRXZlbnRzKG9uSW50ZXJuYWxNb3Rpb25FbmQpLFxuICAgICAgX3VzZURvbU1vdGlvbkV2ZW50czIgPSBfc2xpY2VkVG9BcnJheShfdXNlRG9tTW90aW9uRXZlbnRzLCAxKSxcbiAgICAgIHBhdGNoTW90aW9uRXZlbnRzID0gX3VzZURvbU1vdGlvbkV2ZW50czJbMF07IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFN0ZXAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gIHZhciBldmVudEhhbmRsZXJzID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9yZWYyLCBfcmVmMywgX3JlZjQ7XG5cbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnYXBwZWFyJzpcbiAgICAgICAgcmV0dXJuIF9yZWYyID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfcmVmMiwgU1RFUF9QUkVQQVJFLCBvbkFwcGVhclByZXBhcmUpLCBfZGVmaW5lUHJvcGVydHkoX3JlZjIsIFNURVBfU1RBUlQsIG9uQXBwZWFyU3RhcnQpLCBfZGVmaW5lUHJvcGVydHkoX3JlZjIsIFNURVBfQUNUSVZFLCBvbkFwcGVhckFjdGl2ZSksIF9yZWYyO1xuXG4gICAgICBjYXNlICdlbnRlcic6XG4gICAgICAgIHJldHVybiBfcmVmMyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX3JlZjMsIFNURVBfUFJFUEFSRSwgb25FbnRlclByZXBhcmUpLCBfZGVmaW5lUHJvcGVydHkoX3JlZjMsIFNURVBfU1RBUlQsIG9uRW50ZXJTdGFydCksIF9kZWZpbmVQcm9wZXJ0eShfcmVmMywgU1RFUF9BQ1RJVkUsIG9uRW50ZXJBY3RpdmUpLCBfcmVmMztcblxuICAgICAgY2FzZSAnbGVhdmUnOlxuICAgICAgICByZXR1cm4gX3JlZjQgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9yZWY0LCBTVEVQX1BSRVBBUkUsIG9uTGVhdmVQcmVwYXJlKSwgX2RlZmluZVByb3BlcnR5KF9yZWY0LCBTVEVQX1NUQVJULCBvbkxlYXZlU3RhcnQpLCBfZGVmaW5lUHJvcGVydHkoX3JlZjQsIFNURVBfQUNUSVZFLCBvbkxlYXZlQWN0aXZlKSwgX3JlZjQ7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH0sIFtzdGF0dXNdKTtcblxuICB2YXIgX3VzZVN0ZXBRdWV1ZSA9IHVzZVN0ZXBRdWV1ZShzdGF0dXMsIGZ1bmN0aW9uIChuZXdTdGVwKSB7XG4gICAgLy8gT25seSBwcmVwYXJlIHN0ZXAgY2FuIGJlIHNraXBcbiAgICBpZiAobmV3U3RlcCA9PT0gU1RFUF9QUkVQQVJFKSB7XG4gICAgICB2YXIgb25QcmVwYXJlID0gZXZlbnRIYW5kbGVyc1tTVEVQX1BSRVBBUkVdO1xuXG4gICAgICBpZiAoIW9uUHJlcGFyZSkge1xuICAgICAgICByZXR1cm4gU2tpcFN0ZXA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvblByZXBhcmUoZ2V0RG9tRWxlbWVudCgpKTtcbiAgICB9IC8vIFJlc3Qgc3RlcCBpcyBzeW5jIHVwZGF0ZVxuXG5cbiAgICAvLyBSZXN0IHN0ZXAgaXMgc3luYyB1cGRhdGVcbiAgICBpZiAoc3RlcCBpbiBldmVudEhhbmRsZXJzKSB7XG4gICAgICB2YXIgX2V2ZW50SGFuZGxlcnMkc3RlcDtcblxuICAgICAgc2V0U3R5bGUoKChfZXZlbnRIYW5kbGVycyRzdGVwID0gZXZlbnRIYW5kbGVyc1tzdGVwXSkgPT09IG51bGwgfHwgX2V2ZW50SGFuZGxlcnMkc3RlcCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2V2ZW50SGFuZGxlcnMkc3RlcC5jYWxsKGV2ZW50SGFuZGxlcnMsIGdldERvbUVsZW1lbnQoKSwgbnVsbCkpIHx8IG51bGwpO1xuICAgIH1cblxuICAgIGlmIChzdGVwID09PSBTVEVQX0FDVElWRSkge1xuICAgICAgLy8gUGF0Y2ggZXZlbnRzIHdoZW4gbW90aW9uIG5lZWRlZFxuICAgICAgcGF0Y2hNb3Rpb25FdmVudHMoZ2V0RG9tRWxlbWVudCgpKTtcblxuICAgICAgaWYgKG1vdGlvbkRlYWRsaW5lID4gMCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoZGVhZGxpbmVSZWYuY3VycmVudCk7XG4gICAgICAgIGRlYWRsaW5lUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBvbkludGVybmFsTW90aW9uRW5kKHtcbiAgICAgICAgICAgIGRlYWRsaW5lOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sIG1vdGlvbkRlYWRsaW5lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gRG9TdGVwO1xuICB9KSxcbiAgICAgIF91c2VTdGVwUXVldWUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0ZXBRdWV1ZSwgMiksXG4gICAgICBzdGFydFN0ZXAgPSBfdXNlU3RlcFF1ZXVlMlswXSxcbiAgICAgIHN0ZXAgPSBfdXNlU3RlcFF1ZXVlMlsxXTtcblxuICB2YXIgYWN0aXZlID0gaXNBY3RpdmUoc3RlcCk7XG4gIGFjdGl2ZVJlZi5jdXJyZW50ID0gYWN0aXZlOyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IFN0YXR1cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVwZGF0ZSB3aXRoIG5ldyBzdGF0dXNcblxuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBzZXRBc3luY1Zpc2libGUodmlzaWJsZSk7XG4gICAgdmFyIGlzTW91bnRlZCA9IG1vdW50ZWRSZWYuY3VycmVudDtcbiAgICBtb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgaWYgKCFzdXBwb3J0TW90aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG5leHRTdGF0dXM7IC8vIEFwcGVhclxuXG4gICAgaWYgKCFpc01vdW50ZWQgJiYgdmlzaWJsZSAmJiBtb3Rpb25BcHBlYXIpIHtcbiAgICAgIG5leHRTdGF0dXMgPSBTVEFUVVNfQVBQRUFSO1xuICAgIH0gLy8gRW50ZXJcblxuXG4gICAgaWYgKGlzTW91bnRlZCAmJiB2aXNpYmxlICYmIG1vdGlvbkVudGVyKSB7XG4gICAgICBuZXh0U3RhdHVzID0gU1RBVFVTX0VOVEVSO1xuICAgIH0gLy8gTGVhdmVcblxuXG4gICAgaWYgKGlzTW91bnRlZCAmJiAhdmlzaWJsZSAmJiBtb3Rpb25MZWF2ZSB8fCAhaXNNb3VudGVkICYmIG1vdGlvbkxlYXZlSW1tZWRpYXRlbHkgJiYgIXZpc2libGUgJiYgbW90aW9uTGVhdmUpIHtcbiAgICAgIG5leHRTdGF0dXMgPSBTVEFUVVNfTEVBVkU7XG4gICAgfSAvLyBVcGRhdGUgdG8gbmV4dCBzdGF0dXNcblxuXG4gICAgaWYgKG5leHRTdGF0dXMpIHtcbiAgICAgIHNldFN0YXR1cyhuZXh0U3RhdHVzKTtcbiAgICAgIHN0YXJ0U3RlcCgpO1xuICAgIH1cbiAgfSwgW3Zpc2libGVdKTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PSBFZmZlY3QgPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBSZXNldCB3aGVuIG1vdGlvbiBjaGFuZ2VkXG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIC8vIENhbmNlbCBhcHBlYXJcbiAgICBzdGF0dXMgPT09IFNUQVRVU19BUFBFQVIgJiYgIW1vdGlvbkFwcGVhciB8fCAvLyBDYW5jZWwgZW50ZXJcbiAgICBzdGF0dXMgPT09IFNUQVRVU19FTlRFUiAmJiAhbW90aW9uRW50ZXIgfHwgLy8gQ2FuY2VsIGxlYXZlXG4gICAgc3RhdHVzID09PSBTVEFUVVNfTEVBVkUgJiYgIW1vdGlvbkxlYXZlKSB7XG4gICAgICBzZXRTdGF0dXMoU1RBVFVTX05PTkUpO1xuICAgIH1cbiAgfSwgW21vdGlvbkFwcGVhciwgbW90aW9uRW50ZXIsIG1vdGlvbkxlYXZlXSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWFkbGluZVJlZi5jdXJyZW50KTtcbiAgICAgIGRlc3Ryb3llZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9O1xuICB9LCBbXSk7IC8vIFRyaWdnZXIgYG9uVmlzaWJsZUNoYW5nZWRgXG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoYXN5bmNWaXNpYmxlICE9PSB1bmRlZmluZWQgJiYgc3RhdHVzID09PSBTVEFUVVNfTk9ORSkge1xuICAgICAgb25WaXNpYmxlQ2hhbmdlZCA9PT0gbnVsbCB8fCBvblZpc2libGVDaGFuZ2VkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblZpc2libGVDaGFuZ2VkKGFzeW5jVmlzaWJsZSk7XG4gICAgfVxuICB9LCBbYXN5bmNWaXNpYmxlLCBzdGF0dXNdKTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PSBTdHlsZXMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBtZXJnZWRTdHlsZSA9IHN0eWxlO1xuXG4gIGlmIChldmVudEhhbmRsZXJzW1NURVBfUFJFUEFSRV0gJiYgc3RlcCA9PT0gU1RFUF9TVEFSVCkge1xuICAgIG1lcmdlZFN0eWxlID0gX29iamVjdFNwcmVhZCh7XG4gICAgICB0cmFuc2l0aW9uOiAnbm9uZSdcbiAgICB9LCBtZXJnZWRTdHlsZSk7XG4gIH1cblxuICByZXR1cm4gW3N0YXR1cywgc3RlcCwgbWVyZ2VkU3R5bGUsIGFzeW5jVmlzaWJsZSAhPT0gbnVsbCAmJiBhc3luY1Zpc2libGUgIT09IHZvaWQgMCA/IGFzeW5jVmlzaWJsZSA6IHZpc2libGVdO1xufSIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGFuaW1hdGlvbkVuZE5hbWUsIHRyYW5zaXRpb25FbmROYW1lIH0gZnJvbSAnLi4vdXRpbC9tb3Rpb24nO1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB2YXIgY2FjaGVFbGVtZW50UmVmID0gdXNlUmVmKCk7IC8vIENhY2hlIGNhbGxiYWNrXG5cbiAgdmFyIGNhbGxiYWNrUmVmID0gdXNlUmVmKGNhbGxiYWNrKTtcbiAgY2FsbGJhY2tSZWYuY3VycmVudCA9IGNhbGxiYWNrOyAvLyBJbnRlcm5hbCBtb3Rpb24gZXZlbnQgaGFuZGxlclxuXG4gIHZhciBvbkludGVybmFsTW90aW9uRW5kID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgY2FsbGJhY2tSZWYuY3VycmVudChldmVudCk7XG4gIH0sIFtdKTsgLy8gUmVtb3ZlIGV2ZW50c1xuXG4gIGZ1bmN0aW9uIHJlbW92ZU1vdGlvbkV2ZW50cyhlbGVtZW50KSB7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9uRW5kTmFtZSwgb25JbnRlcm5hbE1vdGlvbkVuZCk7XG4gICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoYW5pbWF0aW9uRW5kTmFtZSwgb25JbnRlcm5hbE1vdGlvbkVuZCk7XG4gICAgfVxuICB9IC8vIFBhdGNoIGV2ZW50c1xuXG5cbiAgZnVuY3Rpb24gcGF0Y2hNb3Rpb25FdmVudHMoZWxlbWVudCkge1xuICAgIGlmIChjYWNoZUVsZW1lbnRSZWYuY3VycmVudCAmJiBjYWNoZUVsZW1lbnRSZWYuY3VycmVudCAhPT0gZWxlbWVudCkge1xuICAgICAgcmVtb3ZlTW90aW9uRXZlbnRzKGNhY2hlRWxlbWVudFJlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50ICE9PSBjYWNoZUVsZW1lbnRSZWYuY3VycmVudCkge1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHRyYW5zaXRpb25FbmROYW1lLCBvbkludGVybmFsTW90aW9uRW5kKTtcbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihhbmltYXRpb25FbmROYW1lLCBvbkludGVybmFsTW90aW9uRW5kKTsgLy8gU2F2ZSBhcyBjYWNoZSBpbiBjYXNlIGRvbSByZW1vdmVkIHRyaWdnZXIgYnkgYG1vdGlvbkRlYWRsaW5lYFxuXG4gICAgICBjYWNoZUVsZW1lbnRSZWYuY3VycmVudCA9IGVsZW1lbnQ7XG4gICAgfVxuICB9IC8vIENsZWFuIHVwIHdoZW4gcmVtb3ZlZFxuXG5cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmVtb3ZlTW90aW9uRXZlbnRzKGNhY2hlRWxlbWVudFJlZi5jdXJyZW50KTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIHJldHVybiBbcGF0Y2hNb3Rpb25FdmVudHMsIHJlbW92ZU1vdGlvbkV2ZW50c107XG59KTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufSIsImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gIGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gIHJldHVybiBDb25zdHJ1Y3Rvcjtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgICBvLl9fcHJvdG9fXyA9IHA7XG4gICAgcmV0dXJuIG87XG4gIH07XG5cbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTtcbn0iLCJpbXBvcnQgc2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vc2V0UHJvdG90eXBlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykge1xuICBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB9XG5cbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgaWYgKHN1cGVyQ2xhc3MpIHNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2Yobykge1xuICBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2Yobykge1xuICAgIHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7XG4gIH07XG4gIHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCI7XG5pbXBvcnQgYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkge1xuICBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkge1xuICAgIHJldHVybiBjYWxsO1xuICB9XG5cbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHtcbiAgaWYgKHNlbGYgPT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgfVxuXG4gIHJldHVybiBzZWxmO1xufSIsImltcG9ydCBnZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9nZXRQcm90b3R5cGVPZi5qc1wiO1xuaW1wb3J0IGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCBmcm9tIFwiLi9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanNcIjtcbmltcG9ydCBwb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCIuL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7XG4gIHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7XG4gIHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHtcbiAgICB2YXIgU3VwZXIgPSBnZXRQcm90b3R5cGVPZihEZXJpdmVkKSxcbiAgICAgICAgcmVzdWx0O1xuXG4gICAgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHtcbiAgICAgIHZhciBOZXdUYXJnZXQgPSBnZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjtcbiAgICAgIHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTtcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7XG4gIGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7XG4gIGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7XG5cbiAgdHJ5IHtcbiAgICBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn0iLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG52YXIgRG9tV3JhcHBlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoRG9tV3JhcHBlciwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihEb21XcmFwcGVyKTtcblxuICBmdW5jdGlvbiBEb21XcmFwcGVyKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEb21XcmFwcGVyKTtcblxuICAgIHJldHVybiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhEb21XcmFwcGVyLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIERvbVdyYXBwZXI7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cbmV4cG9ydCBkZWZhdWx0IERvbVdyYXBwZXI7IiwiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcblxuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZGVmYXVsdC1wcm9wcy1tYXRjaC1wcm9wLXR5cGVzLCByZWFjdC9uby1tdWx0aS1jb21wLCByZWFjdC9wcm9wLXR5cGVzICovXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZmluZERPTU5vZGUgZnJvbSBcInJjLXV0aWwvZXMvRG9tL2ZpbmRET01Ob2RlXCI7XG5pbXBvcnQgeyBmaWxsUmVmIH0gZnJvbSBcInJjLXV0aWwvZXMvcmVmXCI7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IGdldFRyYW5zaXRpb25OYW1lLCBzdXBwb3J0VHJhbnNpdGlvbiB9IGZyb20gJy4vdXRpbC9tb3Rpb24nO1xuaW1wb3J0IHsgU1RBVFVTX05PTkUsIFNURVBfUFJFUEFSRSwgU1RFUF9TVEFSVCB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB1c2VTdGF0dXMgZnJvbSAnLi9ob29rcy91c2VTdGF0dXMnO1xuaW1wb3J0IERvbVdyYXBwZXIgZnJvbSAnLi9Eb21XcmFwcGVyJztcbmltcG9ydCB7IGlzQWN0aXZlIH0gZnJvbSAnLi9ob29rcy91c2VTdGVwUXVldWUnO1xuLyoqXG4gKiBgdHJhbnNpdGlvblN1cHBvcnRgIGlzIHVzZWQgZm9yIG5vbmUgdHJhbnNpdGlvbiB0ZXN0IGNhc2UuXG4gKiBEZWZhdWx0IHdlIHVzZSBicm93c2VyIHRyYW5zaXRpb24gZXZlbnQgc3VwcG9ydCBjaGVjay5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuQ1NTTW90aW9uKGNvbmZpZykge1xuICB2YXIgdHJhbnNpdGlvblN1cHBvcnQgPSBjb25maWc7XG5cbiAgaWYgKF90eXBlb2YoY29uZmlnKSA9PT0gJ29iamVjdCcpIHtcbiAgICB0cmFuc2l0aW9uU3VwcG9ydCA9IGNvbmZpZy50cmFuc2l0aW9uU3VwcG9ydDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzU3VwcG9ydFRyYW5zaXRpb24ocHJvcHMpIHtcbiAgICByZXR1cm4gISEocHJvcHMubW90aW9uTmFtZSAmJiB0cmFuc2l0aW9uU3VwcG9ydCk7XG4gIH1cblxuICB2YXIgQ1NTTW90aW9uID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgICB2YXIgX3Byb3BzJHZpc2libGUgPSBwcm9wcy52aXNpYmxlLFxuICAgICAgICB2aXNpYmxlID0gX3Byb3BzJHZpc2libGUgPT09IHZvaWQgMCA/IHRydWUgOiBfcHJvcHMkdmlzaWJsZSxcbiAgICAgICAgX3Byb3BzJHJlbW92ZU9uTGVhdmUgPSBwcm9wcy5yZW1vdmVPbkxlYXZlLFxuICAgICAgICByZW1vdmVPbkxlYXZlID0gX3Byb3BzJHJlbW92ZU9uTGVhdmUgPT09IHZvaWQgMCA/IHRydWUgOiBfcHJvcHMkcmVtb3ZlT25MZWF2ZSxcbiAgICAgICAgZm9yY2VSZW5kZXIgPSBwcm9wcy5mb3JjZVJlbmRlcixcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgbW90aW9uTmFtZSA9IHByb3BzLm1vdGlvbk5hbWUsXG4gICAgICAgIGxlYXZlZENsYXNzTmFtZSA9IHByb3BzLmxlYXZlZENsYXNzTmFtZSxcbiAgICAgICAgZXZlbnRQcm9wcyA9IHByb3BzLmV2ZW50UHJvcHM7XG4gICAgdmFyIHN1cHBvcnRNb3Rpb24gPSBpc1N1cHBvcnRUcmFuc2l0aW9uKHByb3BzKTsgLy8gUmVmIHRvIHRoZSByZWFjdCBub2RlLCBpdCBtYXkgYmUgYSBIVE1MRWxlbWVudFxuXG4gICAgdmFyIG5vZGVSZWYgPSB1c2VSZWYoKTsgLy8gUmVmIHRvIHRoZSBkb20gd3JhcHBlciBpbiBjYXNlIHJlZiBjYW4gbm90IHBhc3MgdG8gSFRNTEVsZW1lbnRcblxuICAgIHZhciB3cmFwcGVyTm9kZVJlZiA9IHVzZVJlZigpO1xuXG4gICAgZnVuY3Rpb24gZ2V0RG9tRWxlbWVudCgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBmaW5kRE9NTm9kZShub2RlUmVmLmN1cnJlbnQgfHwgd3JhcHBlck5vZGVSZWYuY3VycmVudCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIE9ubHkgaGFwcGVuIHdoZW4gYG1vdGlvbkRlYWRsaW5lYCB0cmlnZ2VyIGJ1dCBlbGVtZW50IHJlbW92ZWQuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBfdXNlU3RhdHVzID0gdXNlU3RhdHVzKHN1cHBvcnRNb3Rpb24sIHZpc2libGUsIGdldERvbUVsZW1lbnQsIHByb3BzKSxcbiAgICAgICAgX3VzZVN0YXR1czIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdHVzLCA0KSxcbiAgICAgICAgc3RhdHVzID0gX3VzZVN0YXR1czJbMF0sXG4gICAgICAgIHN0YXR1c1N0ZXAgPSBfdXNlU3RhdHVzMlsxXSxcbiAgICAgICAgc3RhdHVzU3R5bGUgPSBfdXNlU3RhdHVzMlsyXSxcbiAgICAgICAgbWVyZ2VkVmlzaWJsZSA9IF91c2VTdGF0dXMyWzNdOyAvLyBSZWNvcmQgd2hldGhlciBjb250ZW50IGhhcyByZW5kZWRcbiAgICAvLyBXaWxsIHJldHVybiBudWxsIGZvciB1bi1yZW5kZXJlZCBldmVuIHdoZW4gYHJlbW92ZU9uTGVhdmU9e2ZhbHNlfWBcblxuXG4gICAgdmFyIHJlbmRlcmVkUmVmID0gUmVhY3QudXNlUmVmKG1lcmdlZFZpc2libGUpO1xuXG4gICAgaWYgKG1lcmdlZFZpc2libGUpIHtcbiAgICAgIHJlbmRlcmVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0gLy8gPT09PT09PT09PT09PT09PT09PT09PSBSZWZzID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gICAgdmFyIG9yaWdpblJlZiA9IHVzZVJlZihyZWYpO1xuICAgIG9yaWdpblJlZi5jdXJyZW50ID0gcmVmO1xuICAgIHZhciBzZXROb2RlUmVmID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIG5vZGVSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBmaWxsUmVmKG9yaWdpblJlZi5jdXJyZW50LCBub2RlKTtcbiAgICB9LCBbXSk7IC8vID09PT09PT09PT09PT09PT09PT09PSBSZW5kZXIgPT09PT09PT09PT09PT09PT09PT09XG5cbiAgICB2YXIgbW90aW9uQ2hpbGRyZW47XG5cbiAgICB2YXIgbWVyZ2VkUHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGV2ZW50UHJvcHMpLCB7fSwge1xuICAgICAgdmlzaWJsZTogdmlzaWJsZVxuICAgIH0pO1xuXG4gICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgLy8gTm8gY2hpbGRyZW5cbiAgICAgIG1vdGlvbkNoaWxkcmVuID0gbnVsbDtcbiAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gU1RBVFVTX05PTkUgfHwgIWlzU3VwcG9ydFRyYW5zaXRpb24ocHJvcHMpKSB7XG4gICAgICAvLyBTdGFibGUgY2hpbGRyZW5cbiAgICAgIGlmIChtZXJnZWRWaXNpYmxlKSB7XG4gICAgICAgIG1vdGlvbkNoaWxkcmVuID0gY2hpbGRyZW4oX29iamVjdFNwcmVhZCh7fSwgbWVyZ2VkUHJvcHMpLCBzZXROb2RlUmVmKTtcbiAgICAgIH0gZWxzZSBpZiAoIXJlbW92ZU9uTGVhdmUgJiYgcmVuZGVyZWRSZWYuY3VycmVudCkge1xuICAgICAgICBtb3Rpb25DaGlsZHJlbiA9IGNoaWxkcmVuKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgbWVyZ2VkUHJvcHMpLCB7fSwge1xuICAgICAgICAgIGNsYXNzTmFtZTogbGVhdmVkQ2xhc3NOYW1lXG4gICAgICAgIH0pLCBzZXROb2RlUmVmKTtcbiAgICAgIH0gZWxzZSBpZiAoZm9yY2VSZW5kZXIpIHtcbiAgICAgICAgbW90aW9uQ2hpbGRyZW4gPSBjaGlsZHJlbihfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG1lcmdlZFByb3BzKSwge30sIHtcbiAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgZGlzcGxheTogJ25vbmUnXG4gICAgICAgICAgfVxuICAgICAgICB9KSwgc2V0Tm9kZVJlZik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb3Rpb25DaGlsZHJlbiA9IG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfY2xhc3NOYW1lcztcblxuICAgICAgLy8gSW4gbW90aW9uXG4gICAgICB2YXIgc3RhdHVzU3VmZml4O1xuXG4gICAgICBpZiAoc3RhdHVzU3RlcCA9PT0gU1RFUF9QUkVQQVJFKSB7XG4gICAgICAgIHN0YXR1c1N1ZmZpeCA9ICdwcmVwYXJlJztcbiAgICAgIH0gZWxzZSBpZiAoaXNBY3RpdmUoc3RhdHVzU3RlcCkpIHtcbiAgICAgICAgc3RhdHVzU3VmZml4ID0gJ2FjdGl2ZSc7XG4gICAgICB9IGVsc2UgaWYgKHN0YXR1c1N0ZXAgPT09IFNURVBfU1RBUlQpIHtcbiAgICAgICAgc3RhdHVzU3VmZml4ID0gJ3N0YXJ0JztcbiAgICAgIH1cblxuICAgICAgbW90aW9uQ2hpbGRyZW4gPSBjaGlsZHJlbihfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG1lcmdlZFByb3BzKSwge30sIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGdldFRyYW5zaXRpb25OYW1lKG1vdGlvbk5hbWUsIHN0YXR1cyksIChfY2xhc3NOYW1lcyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIGdldFRyYW5zaXRpb25OYW1lKG1vdGlvbk5hbWUsIFwiXCIuY29uY2F0KHN0YXR1cywgXCItXCIpLmNvbmNhdChzdGF0dXNTdWZmaXgpKSwgc3RhdHVzU3VmZml4KSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBtb3Rpb25OYW1lLCB0eXBlb2YgbW90aW9uTmFtZSA9PT0gJ3N0cmluZycpLCBfY2xhc3NOYW1lcykpLFxuICAgICAgICBzdHlsZTogc3RhdHVzU3R5bGVcbiAgICAgIH0pLCBzZXROb2RlUmVmKTtcbiAgICB9XG5cbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRG9tV3JhcHBlciwge1xuICAgICAgcmVmOiB3cmFwcGVyTm9kZVJlZlxuICAgIH0sIG1vdGlvbkNoaWxkcmVuKTtcbiAgfSk7XG4gIENTU01vdGlvbi5kaXNwbGF5TmFtZSA9ICdDU1NNb3Rpb24nO1xuICByZXR1cm4gQ1NTTW90aW9uO1xufVxuZXhwb3J0IGRlZmF1bHQgZ2VuQ1NTTW90aW9uKHN1cHBvcnRUcmFuc2l0aW9uKTsiLCJpbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbi8qKlxuICogUmV0dXJuIGlmIGEgbm9kZSBpcyBhIERPTSBub2RlLiBFbHNlIHdpbGwgcmV0dXJuIGJ5IGBmaW5kRE9NTm9kZWBcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmaW5kRE9NTm9kZShub2RlKSB7XG4gIGlmIChub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHJldHVybiBSZWFjdERPTS5maW5kRE9NTm9kZShub2RlKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuXG4gIHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufSIsImltcG9ydCBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCIuL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICB2YXIgdGFyZ2V0ID0gb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTtcbiAgdmFyIGtleSwgaTtcblxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07XG4gICAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTtcbiAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgdmFyIGtleSwgaTtcblxuICBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IHNvdXJjZUtleXNbaV07XG4gICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn0iLCJpbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuZXhwb3J0IHZhciBTVEFUVVNfQUREID0gJ2FkZCc7XG5leHBvcnQgdmFyIFNUQVRVU19LRUVQID0gJ2tlZXAnO1xuZXhwb3J0IHZhciBTVEFUVVNfUkVNT1ZFID0gJ3JlbW92ZSc7XG5leHBvcnQgdmFyIFNUQVRVU19SRU1PVkVEID0gJ3JlbW92ZWQnO1xuZXhwb3J0IGZ1bmN0aW9uIHdyYXBLZXlUb09iamVjdChrZXkpIHtcbiAgdmFyIGtleU9iajtcblxuICBpZiAoa2V5ICYmIF90eXBlb2Yoa2V5KSA9PT0gJ29iamVjdCcgJiYgJ2tleScgaW4ga2V5KSB7XG4gICAga2V5T2JqID0ga2V5O1xuICB9IGVsc2Uge1xuICAgIGtleU9iaiA9IHtcbiAgICAgIGtleToga2V5XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGtleU9iaiksIHt9LCB7XG4gICAga2V5OiBTdHJpbmcoa2V5T2JqLmtleSlcbiAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VLZXlzKCkge1xuICB2YXIga2V5cyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogW107XG4gIHJldHVybiBrZXlzLm1hcCh3cmFwS2V5VG9PYmplY3QpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZLZXlzKCkge1xuICB2YXIgcHJldktleXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IFtdO1xuICB2YXIgY3VycmVudEtleXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IFtdO1xuICB2YXIgbGlzdCA9IFtdO1xuICB2YXIgY3VycmVudEluZGV4ID0gMDtcbiAgdmFyIGN1cnJlbnRMZW4gPSBjdXJyZW50S2V5cy5sZW5ndGg7XG4gIHZhciBwcmV2S2V5T2JqZWN0cyA9IHBhcnNlS2V5cyhwcmV2S2V5cyk7XG4gIHZhciBjdXJyZW50S2V5T2JqZWN0cyA9IHBhcnNlS2V5cyhjdXJyZW50S2V5cyk7IC8vIENoZWNrIHByZXYga2V5cyB0byBpbnNlcnQgb3Iga2VlcFxuXG4gIHByZXZLZXlPYmplY3RzLmZvckVhY2goZnVuY3Rpb24gKGtleU9iaikge1xuICAgIHZhciBoaXQgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSBjdXJyZW50SW5kZXg7IGkgPCBjdXJyZW50TGVuOyBpICs9IDEpIHtcbiAgICAgIHZhciBjdXJyZW50S2V5T2JqID0gY3VycmVudEtleU9iamVjdHNbaV07XG5cbiAgICAgIGlmIChjdXJyZW50S2V5T2JqLmtleSA9PT0ga2V5T2JqLmtleSkge1xuICAgICAgICAvLyBOZXcgYWRkZWQga2V5cyBzaG91bGQgYWRkIGJlZm9yZSBjdXJyZW50IGtleVxuICAgICAgICBpZiAoY3VycmVudEluZGV4IDwgaSkge1xuICAgICAgICAgIGxpc3QgPSBsaXN0LmNvbmNhdChjdXJyZW50S2V5T2JqZWN0cy5zbGljZShjdXJyZW50SW5kZXgsIGkpLm1hcChmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvYmopLCB7fSwge1xuICAgICAgICAgICAgICBzdGF0dXM6IFNUQVRVU19BRERcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgICBjdXJyZW50SW5kZXggPSBpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGlzdC5wdXNoKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY3VycmVudEtleU9iaiksIHt9LCB7XG4gICAgICAgICAgc3RhdHVzOiBTVEFUVVNfS0VFUFxuICAgICAgICB9KSk7XG4gICAgICAgIGN1cnJlbnRJbmRleCArPSAxO1xuICAgICAgICBoaXQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IC8vIElmIG5vdCBoaXQsIGl0IG1lYW5zIGtleSBpcyByZW1vdmVkXG5cblxuICAgIGlmICghaGl0KSB7XG4gICAgICBsaXN0LnB1c2goX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBrZXlPYmopLCB7fSwge1xuICAgICAgICBzdGF0dXM6IFNUQVRVU19SRU1PVkVcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0pOyAvLyBBZGQgcmVzdCB0byB0aGUgbGlzdFxuXG4gIGlmIChjdXJyZW50SW5kZXggPCBjdXJyZW50TGVuKSB7XG4gICAgbGlzdCA9IGxpc3QuY29uY2F0KGN1cnJlbnRLZXlPYmplY3RzLnNsaWNlKGN1cnJlbnRJbmRleCkubWFwKGZ1bmN0aW9uIChvYmopIHtcbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9iaiksIHt9LCB7XG4gICAgICAgIHN0YXR1czogU1RBVFVTX0FERFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG4gIC8qKlxuICAgKiBNZXJnZSBzYW1lIGtleSB3aGVuIGl0IHJlbW92ZSBhbmQgYWRkIGFnYWluOlxuICAgKiAgICBbMSAtIGFkZCwgMiAtIGtlZXAsIDEgLSByZW1vdmVdIC0+IFsxIC0ga2VlcCwgMiAtIGtlZXBdXG4gICAqL1xuXG5cbiAgdmFyIGtleXMgPSB7fTtcbiAgbGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIGtleSA9IF9yZWYua2V5O1xuICAgIGtleXNba2V5XSA9IChrZXlzW2tleV0gfHwgMCkgKyAxO1xuICB9KTtcbiAgdmFyIGR1cGxpY2F0ZWRLZXlzID0gT2JqZWN0LmtleXMoa2V5cykuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4ga2V5c1trZXldID4gMTtcbiAgfSk7XG4gIGR1cGxpY2F0ZWRLZXlzLmZvckVhY2goZnVuY3Rpb24gKG1hdGNoS2V5KSB7XG4gICAgLy8gUmVtb3ZlIGBTVEFUVVNfUkVNT1ZFYCBub2RlLlxuICAgIGxpc3QgPSBsaXN0LmZpbHRlcihmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgIHZhciBrZXkgPSBfcmVmMi5rZXksXG4gICAgICAgICAgc3RhdHVzID0gX3JlZjIuc3RhdHVzO1xuICAgICAgcmV0dXJuIGtleSAhPT0gbWF0Y2hLZXkgfHwgc3RhdHVzICE9PSBTVEFUVVNfUkVNT1ZFO1xuICAgIH0pOyAvLyBVcGRhdGUgYFNUQVRVU19BRERgIHRvIGBTVEFUVVNfS0VFUGBcblxuICAgIGxpc3QuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgaWYgKG5vZGUua2V5ID09PSBtYXRjaEtleSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgbm9kZS5zdGF0dXMgPSBTVEFUVVNfS0VFUDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBsaXN0O1xufSIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIjtcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuXG4vKiBlc2xpbnQgcmVhY3QvcHJvcC10eXBlczogMCAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IE9yaWdpbkNTU01vdGlvbiBmcm9tICcuL0NTU01vdGlvbic7XG5pbXBvcnQgeyBzdXBwb3J0VHJhbnNpdGlvbiB9IGZyb20gJy4vdXRpbC9tb3Rpb24nO1xuaW1wb3J0IHsgU1RBVFVTX0FERCwgU1RBVFVTX0tFRVAsIFNUQVRVU19SRU1PVkUsIFNUQVRVU19SRU1PVkVELCBkaWZmS2V5cywgcGFyc2VLZXlzIH0gZnJvbSAnLi91dGlsL2RpZmYnO1xudmFyIE1PVElPTl9QUk9QX05BTUVTID0gWydldmVudFByb3BzJywgJ3Zpc2libGUnLCAnY2hpbGRyZW4nLCAnbW90aW9uTmFtZScsICdtb3Rpb25BcHBlYXInLCAnbW90aW9uRW50ZXInLCAnbW90aW9uTGVhdmUnLCAnbW90aW9uTGVhdmVJbW1lZGlhdGVseScsICdtb3Rpb25EZWFkbGluZScsICdyZW1vdmVPbkxlYXZlJywgJ2xlYXZlZENsYXNzTmFtZScsICdvbkFwcGVhclN0YXJ0JywgJ29uQXBwZWFyQWN0aXZlJywgJ29uQXBwZWFyRW5kJywgJ29uRW50ZXJTdGFydCcsICdvbkVudGVyQWN0aXZlJywgJ29uRW50ZXJFbmQnLCAnb25MZWF2ZVN0YXJ0JywgJ29uTGVhdmVBY3RpdmUnLCAnb25MZWF2ZUVuZCddO1xuLyoqXG4gKiBHZW5lcmF0ZSBhIENTU01vdGlvbkxpc3QgY29tcG9uZW50IHdpdGggY29uZmlnXG4gKiBAcGFyYW0gdHJhbnNpdGlvblN1cHBvcnQgTm8gbmVlZCBzaW5jZSBDU1NNb3Rpb25MaXN0IG5vIGxvbmdlciBkZXBlbmRzIG9uIHRyYW5zaXRpb24gc3VwcG9ydFxuICogQHBhcmFtIENTU01vdGlvbiBDU1NNb3Rpb24gY29tcG9uZW50XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbkNTU01vdGlvbkxpc3QodHJhbnNpdGlvblN1cHBvcnQpIHtcbiAgdmFyIENTU01vdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogT3JpZ2luQ1NTTW90aW9uO1xuXG4gIHZhciBDU1NNb3Rpb25MaXN0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gICAgX2luaGVyaXRzKENTU01vdGlvbkxpc3QsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gICAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihDU1NNb3Rpb25MaXN0KTtcblxuICAgIGZ1bmN0aW9uIENTU01vdGlvbkxpc3QoKSB7XG4gICAgICB2YXIgX3RoaXM7XG5cbiAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDU1NNb3Rpb25MaXN0KTtcblxuICAgICAgX3RoaXMgPSBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgICBrZXlFbnRpdGllczogW11cbiAgICAgIH07XG5cbiAgICAgIF90aGlzLnJlbW92ZUtleSA9IGZ1bmN0aW9uIChyZW1vdmVLZXkpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgICB2YXIga2V5RW50aXRpZXMgPSBfcmVmLmtleUVudGl0aWVzO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBrZXlFbnRpdGllczoga2V5RW50aXRpZXMubWFwKGZ1bmN0aW9uIChlbnRpdHkpIHtcbiAgICAgICAgICAgICAgaWYgKGVudGl0eS5rZXkgIT09IHJlbW92ZUtleSkgcmV0dXJuIGVudGl0eTtcbiAgICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50aXR5KSwge30sIHtcbiAgICAgICAgICAgICAgICBzdGF0dXM6IFNUQVRVU19SRU1PVkVEXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG5cbiAgICBfY3JlYXRlQ2xhc3MoQ1NTTW90aW9uTGlzdCwgW3tcbiAgICAgIGtleTogXCJyZW5kZXJcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICAgIHZhciBrZXlFbnRpdGllcyA9IHRoaXMuc3RhdGUua2V5RW50aXRpZXM7XG5cbiAgICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICAgIGNvbXBvbmVudCA9IF90aGlzJHByb3BzLmNvbXBvbmVudCxcbiAgICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMuY2hpbGRyZW4sXG4gICAgICAgICAgICBfb25WaXNpYmxlQ2hhbmdlZCA9IF90aGlzJHByb3BzLm9uVmlzaWJsZUNoYW5nZWQsXG4gICAgICAgICAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHMsIFtcImNvbXBvbmVudFwiLCBcImNoaWxkcmVuXCIsIFwib25WaXNpYmxlQ2hhbmdlZFwiXSk7XG5cbiAgICAgICAgdmFyIENvbXBvbmVudCA9IGNvbXBvbmVudCB8fCBSZWFjdC5GcmFnbWVudDtcbiAgICAgICAgdmFyIG1vdGlvblByb3BzID0ge307XG4gICAgICAgIE1PVElPTl9QUk9QX05BTUVTLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICBtb3Rpb25Qcm9wc1twcm9wXSA9IHJlc3RQcm9wc1twcm9wXTtcbiAgICAgICAgICBkZWxldGUgcmVzdFByb3BzW3Byb3BdO1xuICAgICAgICB9KTtcbiAgICAgICAgZGVsZXRlIHJlc3RQcm9wcy5rZXlzO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50LCByZXN0UHJvcHMsIGtleUVudGl0aWVzLm1hcChmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgICAgICB2YXIgc3RhdHVzID0gX3JlZjIuc3RhdHVzLFxuICAgICAgICAgICAgICBldmVudFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYyLCBbXCJzdGF0dXNcIl0pO1xuXG4gICAgICAgICAgdmFyIHZpc2libGUgPSBzdGF0dXMgPT09IFNUQVRVU19BREQgfHwgc3RhdHVzID09PSBTVEFUVVNfS0VFUDtcbiAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ1NTTW90aW9uLCBfZXh0ZW5kcyh7fSwgbW90aW9uUHJvcHMsIHtcbiAgICAgICAgICAgIGtleTogZXZlbnRQcm9wcy5rZXksXG4gICAgICAgICAgICB2aXNpYmxlOiB2aXNpYmxlLFxuICAgICAgICAgICAgZXZlbnRQcm9wczogZXZlbnRQcm9wcyxcbiAgICAgICAgICAgIG9uVmlzaWJsZUNoYW5nZWQ6IGZ1bmN0aW9uIG9uVmlzaWJsZUNoYW5nZWQoY2hhbmdlZFZpc2libGUpIHtcbiAgICAgICAgICAgICAgX29uVmlzaWJsZUNoYW5nZWQgPT09IG51bGwgfHwgX29uVmlzaWJsZUNoYW5nZWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vblZpc2libGVDaGFuZ2VkKGNoYW5nZWRWaXNpYmxlLCB7XG4gICAgICAgICAgICAgICAga2V5OiBldmVudFByb3BzLmtleVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoIWNoYW5nZWRWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMyLnJlbW92ZUtleShldmVudFByb3BzLmtleSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSwgY2hpbGRyZW4pO1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfV0sIFt7XG4gICAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKF9yZWYzLCBfcmVmNCkge1xuICAgICAgICB2YXIga2V5cyA9IF9yZWYzLmtleXM7XG4gICAgICAgIHZhciBrZXlFbnRpdGllcyA9IF9yZWY0LmtleUVudGl0aWVzO1xuICAgICAgICB2YXIgcGFyc2VkS2V5T2JqZWN0cyA9IHBhcnNlS2V5cyhrZXlzKTtcbiAgICAgICAgdmFyIG1peGVkS2V5RW50aXRpZXMgPSBkaWZmS2V5cyhrZXlFbnRpdGllcywgcGFyc2VkS2V5T2JqZWN0cyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2V5RW50aXRpZXM6IG1peGVkS2V5RW50aXRpZXMuZmlsdGVyKGZ1bmN0aW9uIChlbnRpdHkpIHtcbiAgICAgICAgICAgIHZhciBwcmV2RW50aXR5ID0ga2V5RW50aXRpZXMuZmluZChmdW5jdGlvbiAoX3JlZjUpIHtcbiAgICAgICAgICAgICAgdmFyIGtleSA9IF9yZWY1LmtleTtcbiAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eS5rZXkgPT09IGtleTtcbiAgICAgICAgICAgIH0pOyAvLyBSZW1vdmUgaWYgYWxyZWFkeSBtYXJrIGFzIHJlbW92ZWRcblxuICAgICAgICAgICAgaWYgKHByZXZFbnRpdHkgJiYgcHJldkVudGl0eS5zdGF0dXMgPT09IFNUQVRVU19SRU1PVkVEICYmIGVudGl0eS5zdGF0dXMgPT09IFNUQVRVU19SRU1PVkUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBDU1NNb3Rpb25MaXN0O1xuICB9KFJlYWN0LkNvbXBvbmVudCk7XG5cbiAgQ1NTTW90aW9uTGlzdC5kZWZhdWx0UHJvcHMgPSB7XG4gICAgY29tcG9uZW50OiAnZGl2J1xuICB9O1xuICByZXR1cm4gQ1NTTW90aW9uTGlzdDtcbn1cbmV4cG9ydCBkZWZhdWx0IGdlbkNTU01vdGlvbkxpc3Qoc3VwcG9ydFRyYW5zaXRpb24pOyIsImltcG9ydCBDU1NNb3Rpb24gZnJvbSAnLi9DU1NNb3Rpb24nO1xuaW1wb3J0IENTU01vdGlvbkxpc3QgZnJvbSAnLi9DU1NNb3Rpb25MaXN0JztcbmV4cG9ydCB7IENTU01vdGlvbkxpc3QgfTtcbmV4cG9ydCBkZWZhdWx0IENTU01vdGlvbjsiLCJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi42LjEyJyB9O1xuaWYgKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpIF9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiIsInZhciBzdG9yZSA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCd3a3MnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5TeW1ib2w7XG52YXIgVVNFX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcblxudmFyICRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID1cbiAgICBVU0VfU1lNQk9MICYmIFN5bWJvbFtuYW1lXSB8fCAoVVNFX1NZTUJPTCA/IFN5bWJvbCA6IHVpZCkoJ1N5bWJvbC4nICsgbmFtZSkpO1xufTtcblxuJGV4cG9ydHMuc3RvcmUgPSBzdG9yZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgVGFibGVDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG52YXIgX2RlZmF1bHQgPSBUYWJsZUNvbnRleHQ7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9jbGFzc0NhbGxDaGVjaztcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX2J1dHRvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vYnV0dG9uXCIpKTtcblxudmFyIF9idXR0b25Hcm91cCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vYnV0dG9uLWdyb3VwXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbl9idXR0b25bXCJkZWZhdWx0XCJdLkdyb3VwID0gX2J1dHRvbkdyb3VwW1wiZGVmYXVsdFwiXTtcbnZhciBfZGVmYXVsdCA9IF9idXR0b25bXCJkZWZhdWx0XCJdO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJ2YXIgb2JqO1xudmFyIE5PVEhJTkcgPSB0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiID8gU3ltYm9sKFwiaW1tZXItbm90aGluZ1wiKSA6ICggb2JqID0ge30sIG9ialtcImltbWVyLW5vdGhpbmdcIl0gPSB0cnVlLCBvYmogKTtcbnZhciBEUkFGVEFCTEUgPSB0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIFN5bWJvbC5mb3IgPyBTeW1ib2wuZm9yKFwiaW1tZXItZHJhZnRhYmxlXCIpIDogXCJfXyRpbW1lcl9kcmFmdGFibGVcIjtcbnZhciBEUkFGVF9TVEFURSA9IHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgU3ltYm9sLmZvciA/IFN5bWJvbC5mb3IoXCJpbW1lci1zdGF0ZVwiKSA6IFwiX18kaW1tZXJfc3RhdGVcIjtcbmZ1bmN0aW9uIGlzRHJhZnQodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgISF2YWx1ZVtEUkFGVF9TVEFURV07XG59XG5mdW5jdGlvbiBpc0RyYWZ0YWJsZSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIikgeyByZXR1cm4gZmFsc2U7IH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7IHJldHVybiB0cnVlOyB9XG4gIHZhciBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XG4gIGlmICghcHJvdG8gfHwgcHJvdG8gPT09IE9iamVjdC5wcm90b3R5cGUpIHsgcmV0dXJuIHRydWU7IH1cbiAgcmV0dXJuICEhdmFsdWVbRFJBRlRBQkxFXSB8fCAhIXZhbHVlLmNvbnN0cnVjdG9yW0RSQUZUQUJMRV07XG59XG5mdW5jdGlvbiBvcmlnaW5hbCh2YWx1ZSkge1xuICBpZiAodmFsdWUgJiYgdmFsdWVbRFJBRlRfU1RBVEVdKSB7XG4gICAgcmV0dXJuIHZhbHVlW0RSQUZUX1NUQVRFXS5iYXNlO1xuICB9IC8vIG90aGVyd2lzZSByZXR1cm4gdW5kZWZpbmVkXG5cbn1cbnZhciBhc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHZhbHVlKSB7XG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmIChoYXModmFsdWUsIGtleSkpIHtcbiAgICAgIHRhcmdldFtrZXldID0gdmFsdWVba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufTtcbnZhciBvd25LZXlzID0gdHlwZW9mIFJlZmxlY3QgIT09IFwidW5kZWZpbmVkXCIgJiYgUmVmbGVjdC5vd25LZXlzID8gUmVmbGVjdC5vd25LZXlzIDogdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgIT09IFwidW5kZWZpbmVkXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iaikpOyB9IDogT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7XG5mdW5jdGlvbiBzaGFsbG93Q29weShiYXNlLCBpbnZva2VHZXR0ZXJzKSB7XG4gIGlmICggaW52b2tlR2V0dGVycyA9PT0gdm9pZCAwICkgaW52b2tlR2V0dGVycyA9IGZhbHNlO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KGJhc2UpKSB7IHJldHVybiBiYXNlLnNsaWNlKCk7IH1cbiAgdmFyIGNsb25lID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoYmFzZSkpO1xuICBvd25LZXlzKGJhc2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChrZXkgPT09IERSQUZUX1NUQVRFKSB7XG4gICAgICByZXR1cm47IC8vIE5ldmVyIGNvcHkgb3ZlciBkcmFmdCBzdGF0ZS5cbiAgICB9XG5cbiAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYmFzZSwga2V5KTtcbiAgICB2YXIgdmFsdWUgPSBkZXNjLnZhbHVlO1xuXG4gICAgaWYgKGRlc2MuZ2V0KSB7XG4gICAgICBpZiAoaW52b2tlR2V0dGVycykge1xuICAgICAgICB2YWx1ZSA9IGRlc2MuZ2V0LmNhbGwoYmFzZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlc2MuZW51bWVyYWJsZSkge1xuICAgICAgY2xvbmVba2V5XSA9IHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoaW52b2tlR2V0dGVycykge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNsb25lLCBrZXksIHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY2xvbmU7XG59XG5mdW5jdGlvbiBlYWNoKHZhbHVlLCBjYikge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7IGNiKGksIHZhbHVlW2ldLCB2YWx1ZSk7IH1cbiAgfSBlbHNlIHtcbiAgICBvd25LZXlzKHZhbHVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGNiKGtleSwgdmFsdWVba2V5XSwgdmFsdWUpOyB9KTtcbiAgfVxufVxuZnVuY3Rpb24gaXNFbnVtZXJhYmxlKGJhc2UsIHByb3ApIHtcbiAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGJhc2UsIHByb3ApO1xuICByZXR1cm4gISFkZXNjICYmIGRlc2MuZW51bWVyYWJsZTtcbn1cbmZ1bmN0aW9uIGhhcyh0aGluZywgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaW5nLCBwcm9wKTtcbn1cbmZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgLy8gRnJvbTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2ZianMvYmxvYi9jNjk5MDRhNTExYjkwMDI2NjkzNTE2ODIyMzA2M2RkODc3MmRmYzQwL3BhY2thZ2VzL2ZianMvc3JjL2NvcmUvc2hhbGxvd0VxdWFsLmpzXG4gIGlmICh4ID09PSB5KSB7XG4gICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG4gIH1cbn1cblxuLyoqIEVhY2ggc2NvcGUgcmVwcmVzZW50cyBhIGBwcm9kdWNlYCBjYWxsLiAqL1xuXG52YXIgSW1tZXJTY29wZSA9IGZ1bmN0aW9uIEltbWVyU2NvcGUocGFyZW50KSB7XG4gIHRoaXMuZHJhZnRzID0gW107XG4gIHRoaXMucGFyZW50ID0gcGFyZW50OyAvLyBXaGVuZXZlciB0aGUgbW9kaWZpZWQgZHJhZnQgY29udGFpbnMgYSBkcmFmdCBmcm9tIGFub3RoZXIgc2NvcGUsIHdlXG4gIC8vIG5lZWQgdG8gcHJldmVudCBhdXRvLWZyZWV6aW5nIHNvIHRoZSB1bm93bmVkIGRyYWZ0IGNhbiBiZSBmaW5hbGl6ZWQuXG5cbiAgdGhpcy5jYW5BdXRvRnJlZXplID0gdHJ1ZTsgLy8gVG8gYXZvaWQgcHJvdG90eXBlIGxvb2t1cHM6XG5cbiAgdGhpcy5wYXRjaGVzID0gbnVsbDtcbn07XG5cbkltbWVyU2NvcGUucHJvdG90eXBlLnVzZVBhdGNoZXMgPSBmdW5jdGlvbiB1c2VQYXRjaGVzIChwYXRjaExpc3RlbmVyKSB7XG4gIGlmIChwYXRjaExpc3RlbmVyKSB7XG4gICAgdGhpcy5wYXRjaGVzID0gW107XG4gICAgdGhpcy5pbnZlcnNlUGF0Y2hlcyA9IFtdO1xuICAgIHRoaXMucGF0Y2hMaXN0ZW5lciA9IHBhdGNoTGlzdGVuZXI7XG4gIH1cbn07XG5cbkltbWVyU2NvcGUucHJvdG90eXBlLnJldm9rZSA9IGZ1bmN0aW9uIHJldm9rZSQxICgpIHtcbiAgdGhpcy5sZWF2ZSgpO1xuICB0aGlzLmRyYWZ0cy5mb3JFYWNoKHJldm9rZSk7XG4gIHRoaXMuZHJhZnRzID0gbnVsbDsgLy8gTWFrZSBkcmFmdC1yZWxhdGVkIG1ldGhvZHMgdGhyb3cuXG59O1xuXG5JbW1lclNjb3BlLnByb3RvdHlwZS5sZWF2ZSA9IGZ1bmN0aW9uIGxlYXZlICgpIHtcbiAgaWYgKHRoaXMgPT09IEltbWVyU2NvcGUuY3VycmVudCkge1xuICAgIEltbWVyU2NvcGUuY3VycmVudCA9IHRoaXMucGFyZW50O1xuICB9XG59O1xuSW1tZXJTY29wZS5jdXJyZW50ID0gbnVsbDtcblxuSW1tZXJTY29wZS5lbnRlciA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuY3VycmVudCA9IG5ldyBJbW1lclNjb3BlKHRoaXMuY3VycmVudCk7XG59O1xuXG5mdW5jdGlvbiByZXZva2UoZHJhZnQpIHtcbiAgZHJhZnRbRFJBRlRfU1RBVEVdLnJldm9rZSgpO1xufVxuXG4vLyBidXQgc2hhcmUgdGhlbSBhbGwgaW5zdGVhZFxuXG52YXIgZGVzY3JpcHRvcnMgPSB7fTtcbmZ1bmN0aW9uIHdpbGxGaW5hbGl6ZShzY29wZSwgcmVzdWx0LCBpc1JlcGxhY2VkKSB7XG4gIHNjb3BlLmRyYWZ0cy5mb3JFYWNoKGZ1bmN0aW9uIChkcmFmdCkge1xuICAgIGRyYWZ0W0RSQUZUX1NUQVRFXS5maW5hbGl6aW5nID0gdHJ1ZTtcbiAgfSk7XG5cbiAgaWYgKCFpc1JlcGxhY2VkKSB7XG4gICAgaWYgKHNjb3BlLnBhdGNoZXMpIHtcbiAgICAgIG1hcmtDaGFuZ2VzUmVjdXJzaXZlbHkoc2NvcGUuZHJhZnRzWzBdKTtcbiAgICB9IC8vIFRoaXMgaXMgZmFzdGVyIHdoZW4gd2UgZG9uJ3QgY2FyZSBhYm91dCB3aGljaCBhdHRyaWJ1dGVzIGNoYW5nZWQuXG5cblxuICAgIG1hcmtDaGFuZ2VzU3dlZXAoc2NvcGUuZHJhZnRzKTtcbiAgfSAvLyBXaGVuIGEgY2hpbGQgZHJhZnQgaXMgcmV0dXJuZWQsIGxvb2sgZm9yIGNoYW5nZXMuXG4gIGVsc2UgaWYgKGlzRHJhZnQocmVzdWx0KSAmJiByZXN1bHRbRFJBRlRfU1RBVEVdLnNjb3BlID09PSBzY29wZSkge1xuICAgICAgbWFya0NoYW5nZXNTd2VlcChzY29wZS5kcmFmdHMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZVByb3h5KGJhc2UsIHBhcmVudCkge1xuICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoYmFzZSk7XG4gIHZhciBkcmFmdCA9IGNsb25lUG90ZW50aWFsRHJhZnQoYmFzZSk7XG4gIGVhY2goZHJhZnQsIGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgcHJveHlQcm9wZXJ0eShkcmFmdCwgcHJvcCwgaXNBcnJheSB8fCBpc0VudW1lcmFibGUoYmFzZSwgcHJvcCkpO1xuICB9KTsgLy8gU2VlIFwicHJveHkuanNcIiBmb3IgcHJvcGVydHkgZG9jdW1lbnRhdGlvbi5cblxuICB2YXIgc2NvcGUgPSBwYXJlbnQgPyBwYXJlbnQuc2NvcGUgOiBJbW1lclNjb3BlLmN1cnJlbnQ7XG4gIHZhciBzdGF0ZSA9IHtcbiAgICBzY29wZTogc2NvcGUsXG4gICAgbW9kaWZpZWQ6IGZhbHNlLFxuICAgIGZpbmFsaXppbmc6IGZhbHNlLFxuICAgIC8vIGVzNSBvbmx5XG4gICAgZmluYWxpemVkOiBmYWxzZSxcbiAgICBhc3NpZ25lZDoge30sXG4gICAgcGFyZW50OiBwYXJlbnQsXG4gICAgYmFzZTogYmFzZSxcbiAgICBkcmFmdDogZHJhZnQsXG4gICAgY29weTogbnVsbCxcbiAgICByZXZva2U6IHJldm9rZSQxLFxuICAgIHJldm9rZWQ6IGZhbHNlIC8vIGVzNSBvbmx5XG5cbiAgfTtcbiAgY3JlYXRlSGlkZGVuUHJvcGVydHkoZHJhZnQsIERSQUZUX1NUQVRFLCBzdGF0ZSk7XG4gIHNjb3BlLmRyYWZ0cy5wdXNoKGRyYWZ0KTtcbiAgcmV0dXJuIGRyYWZ0O1xufVxuXG5mdW5jdGlvbiByZXZva2UkMSgpIHtcbiAgdGhpcy5yZXZva2VkID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gc291cmNlKHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5jb3B5IHx8IHN0YXRlLmJhc2U7XG59IC8vIEFjY2VzcyBhIHByb3BlcnR5IHdpdGhvdXQgY3JlYXRpbmcgYW4gSW1tZXIgZHJhZnQuXG5cblxuZnVuY3Rpb24gcGVlayhkcmFmdCwgcHJvcCkge1xuICB2YXIgc3RhdGUgPSBkcmFmdFtEUkFGVF9TVEFURV07XG5cbiAgaWYgKHN0YXRlICYmICFzdGF0ZS5maW5hbGl6aW5nKSB7XG4gICAgc3RhdGUuZmluYWxpemluZyA9IHRydWU7XG4gICAgdmFyIHZhbHVlID0gZHJhZnRbcHJvcF07XG4gICAgc3RhdGUuZmluYWxpemluZyA9IGZhbHNlO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBkcmFmdFtwcm9wXTtcbn1cblxuZnVuY3Rpb24gZ2V0KHN0YXRlLCBwcm9wKSB7XG4gIGFzc2VydFVucmV2b2tlZChzdGF0ZSk7XG4gIHZhciB2YWx1ZSA9IHBlZWsoc291cmNlKHN0YXRlKSwgcHJvcCk7XG4gIGlmIChzdGF0ZS5maW5hbGl6aW5nKSB7IHJldHVybiB2YWx1ZTsgfSAvLyBDcmVhdGUgYSBkcmFmdCBpZiB0aGUgdmFsdWUgaXMgdW5tb2RpZmllZC5cblxuICBpZiAodmFsdWUgPT09IHBlZWsoc3RhdGUuYmFzZSwgcHJvcCkgJiYgaXNEcmFmdGFibGUodmFsdWUpKSB7XG4gICAgcHJlcGFyZUNvcHkoc3RhdGUpO1xuICAgIHJldHVybiBzdGF0ZS5jb3B5W3Byb3BdID0gY3JlYXRlUHJveHkodmFsdWUsIHN0YXRlKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gc2V0KHN0YXRlLCBwcm9wLCB2YWx1ZSkge1xuICBhc3NlcnRVbnJldm9rZWQoc3RhdGUpO1xuICBzdGF0ZS5hc3NpZ25lZFtwcm9wXSA9IHRydWU7XG5cbiAgaWYgKCFzdGF0ZS5tb2RpZmllZCkge1xuICAgIGlmIChpcyh2YWx1ZSwgcGVlayhzb3VyY2Uoc3RhdGUpLCBwcm9wKSkpIHsgcmV0dXJuOyB9XG4gICAgbWFya0NoYW5nZWQoc3RhdGUpO1xuICAgIHByZXBhcmVDb3B5KHN0YXRlKTtcbiAgfVxuXG4gIHN0YXRlLmNvcHlbcHJvcF0gPSB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gbWFya0NoYW5nZWQoc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5tb2RpZmllZCkge1xuICAgIHN0YXRlLm1vZGlmaWVkID0gdHJ1ZTtcbiAgICBpZiAoc3RhdGUucGFyZW50KSB7IG1hcmtDaGFuZ2VkKHN0YXRlLnBhcmVudCk7IH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcmVwYXJlQ29weShzdGF0ZSkge1xuICBpZiAoIXN0YXRlLmNvcHkpIHsgc3RhdGUuY29weSA9IGNsb25lUG90ZW50aWFsRHJhZnQoc3RhdGUuYmFzZSk7IH1cbn1cblxuZnVuY3Rpb24gY2xvbmVQb3RlbnRpYWxEcmFmdChiYXNlKSB7XG4gIHZhciBzdGF0ZSA9IGJhc2UgJiYgYmFzZVtEUkFGVF9TVEFURV07XG5cbiAgaWYgKHN0YXRlKSB7XG4gICAgc3RhdGUuZmluYWxpemluZyA9IHRydWU7XG4gICAgdmFyIGRyYWZ0ID0gc2hhbGxvd0NvcHkoc3RhdGUuZHJhZnQsIHRydWUpO1xuICAgIHN0YXRlLmZpbmFsaXppbmcgPSBmYWxzZTtcbiAgICByZXR1cm4gZHJhZnQ7XG4gIH1cblxuICByZXR1cm4gc2hhbGxvd0NvcHkoYmFzZSk7XG59XG5cbmZ1bmN0aW9uIHByb3h5UHJvcGVydHkoZHJhZnQsIHByb3AsIGVudW1lcmFibGUpIHtcbiAgdmFyIGRlc2MgPSBkZXNjcmlwdG9yc1twcm9wXTtcblxuICBpZiAoZGVzYykge1xuICAgIGRlc2MuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gIH0gZWxzZSB7XG4gICAgZGVzY3JpcHRvcnNbcHJvcF0gPSBkZXNjID0ge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogZW51bWVyYWJsZSxcblxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQkMSgpIHtcbiAgICAgICAgcmV0dXJuIGdldCh0aGlzW0RSQUZUX1NUQVRFXSwgcHJvcCk7XG4gICAgICB9LFxuXG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCQxKHZhbHVlKSB7XG4gICAgICAgIHNldCh0aGlzW0RSQUZUX1NUQVRFXSwgcHJvcCwgdmFsdWUpO1xuICAgICAgfVxuXG4gICAgfTtcbiAgfVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkcmFmdCwgcHJvcCwgZGVzYyk7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFVucmV2b2tlZChzdGF0ZSkge1xuICBpZiAoc3RhdGUucmV2b2tlZCA9PT0gdHJ1ZSkgeyB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgdXNlIGEgcHJveHkgdGhhdCBoYXMgYmVlbiByZXZva2VkLiBEaWQgeW91IHBhc3MgYW4gb2JqZWN0IGZyb20gaW5zaWRlIGFuIGltbWVyIGZ1bmN0aW9uIHRvIGFuIGFzeW5jIHByb2Nlc3M/IFwiICsgSlNPTi5zdHJpbmdpZnkoc291cmNlKHN0YXRlKSkpOyB9XG59IC8vIFRoaXMgbG9va3MgZXhwZW5zaXZlLCBidXQgb25seSBwcm94aWVzIGFyZSB2aXNpdGVkLCBhbmQgb25seSBvYmplY3RzIHdpdGhvdXQga25vd24gY2hhbmdlcyBhcmUgc2Nhbm5lZC5cblxuXG5mdW5jdGlvbiBtYXJrQ2hhbmdlc1N3ZWVwKGRyYWZ0cykge1xuICAvLyBUaGUgbmF0dXJhbCBvcmRlciBvZiBkcmFmdHMgaW4gdGhlIGBzY29wZWAgYXJyYXkgaXMgYmFzZWQgb24gd2hlbiB0aGV5XG4gIC8vIHdlcmUgYWNjZXNzZWQuIEJ5IHByb2Nlc3NpbmcgZHJhZnRzIGluIHJldmVyc2UgbmF0dXJhbCBvcmRlciwgd2UgaGF2ZSBhXG4gIC8vIGJldHRlciBjaGFuY2Ugb2YgcHJvY2Vzc2luZyBsZWFmIG5vZGVzIGZpcnN0LiBXaGVuIGEgbGVhZiBub2RlIGlzIGtub3duIHRvXG4gIC8vIGhhdmUgY2hhbmdlZCwgd2UgY2FuIGF2b2lkIGFueSB0cmF2ZXJzYWwgb2YgaXRzIGFuY2VzdG9yIG5vZGVzLlxuICBmb3IgKHZhciBpID0gZHJhZnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHN0YXRlID0gZHJhZnRzW2ldW0RSQUZUX1NUQVRFXTtcblxuICAgIGlmICghc3RhdGUubW9kaWZpZWQpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHN0YXRlLmJhc2UpKSB7XG4gICAgICAgIGlmIChoYXNBcnJheUNoYW5nZXMoc3RhdGUpKSB7IG1hcmtDaGFuZ2VkKHN0YXRlKTsgfVxuICAgICAgfSBlbHNlIGlmIChoYXNPYmplY3RDaGFuZ2VzKHN0YXRlKSkgeyBtYXJrQ2hhbmdlZChzdGF0ZSk7IH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFya0NoYW5nZXNSZWN1cnNpdmVseShvYmplY3QpIHtcbiAgaWYgKCFvYmplY3QgfHwgdHlwZW9mIG9iamVjdCAhPT0gXCJvYmplY3RcIikgeyByZXR1cm47IH1cbiAgdmFyIHN0YXRlID0gb2JqZWN0W0RSQUZUX1NUQVRFXTtcbiAgaWYgKCFzdGF0ZSkgeyByZXR1cm47IH1cbiAgdmFyIGJhc2UgPSBzdGF0ZS5iYXNlO1xuICB2YXIgZHJhZnQgPSBzdGF0ZS5kcmFmdDtcbiAgdmFyIGFzc2lnbmVkID0gc3RhdGUuYXNzaWduZWQ7XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KG9iamVjdCkpIHtcbiAgICAvLyBMb29rIGZvciBhZGRlZCBrZXlzLlxuICAgIE9iamVjdC5rZXlzKGRyYWZ0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIC8vIFRoZSBgdW5kZWZpbmVkYCBjaGVjayBpcyBhIGZhc3QgcGF0aCBmb3IgcHJlLWV4aXN0aW5nIGtleXMuXG4gICAgICBpZiAoYmFzZVtrZXldID09PSB1bmRlZmluZWQgJiYgIWhhcyhiYXNlLCBrZXkpKSB7XG4gICAgICAgIGFzc2lnbmVkW2tleV0gPSB0cnVlO1xuICAgICAgICBtYXJrQ2hhbmdlZChzdGF0ZSk7XG4gICAgICB9IGVsc2UgaWYgKCFhc3NpZ25lZFtrZXldKSB7XG4gICAgICAgIC8vIE9ubHkgdW50b3VjaGVkIHByb3BlcnRpZXMgdHJpZ2dlciByZWN1cnNpb24uXG4gICAgICAgIG1hcmtDaGFuZ2VzUmVjdXJzaXZlbHkoZHJhZnRba2V5XSk7XG4gICAgICB9XG4gICAgfSk7IC8vIExvb2sgZm9yIHJlbW92ZWQga2V5cy5cblxuICAgIE9iamVjdC5rZXlzKGJhc2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgLy8gVGhlIGB1bmRlZmluZWRgIGNoZWNrIGlzIGEgZmFzdCBwYXRoIGZvciBwcmUtZXhpc3Rpbmcga2V5cy5cbiAgICAgIGlmIChkcmFmdFtrZXldID09PSB1bmRlZmluZWQgJiYgIWhhcyhkcmFmdCwga2V5KSkge1xuICAgICAgICBhc3NpZ25lZFtrZXldID0gZmFsc2U7XG4gICAgICAgIG1hcmtDaGFuZ2VkKHN0YXRlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIGlmIChoYXNBcnJheUNoYW5nZXMoc3RhdGUpKSB7XG4gICAgbWFya0NoYW5nZWQoc3RhdGUpO1xuICAgIGFzc2lnbmVkLmxlbmd0aCA9IHRydWU7XG5cbiAgICBpZiAoZHJhZnQubGVuZ3RoIDwgYmFzZS5sZW5ndGgpIHtcbiAgICAgIGZvciAodmFyIGkgPSBkcmFmdC5sZW5ndGg7IGkgPCBiYXNlLmxlbmd0aDsgaSsrKSB7IGFzc2lnbmVkW2ldID0gZmFsc2U7IH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSQxID0gYmFzZS5sZW5ndGg7IGkkMSA8IGRyYWZ0Lmxlbmd0aDsgaSQxKyspIHsgYXNzaWduZWRbaSQxXSA9IHRydWU7IH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBpJDIgPSAwOyBpJDIgPCBkcmFmdC5sZW5ndGg7IGkkMisrKSB7XG4gICAgICAvLyBPbmx5IHVudG91Y2hlZCBpbmRpY2VzIHRyaWdnZXIgcmVjdXJzaW9uLlxuICAgICAgaWYgKGFzc2lnbmVkW2kkMl0gPT09IHVuZGVmaW5lZCkgeyBtYXJrQ2hhbmdlc1JlY3Vyc2l2ZWx5KGRyYWZ0W2kkMl0pOyB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGhhc09iamVjdENoYW5nZXMoc3RhdGUpIHtcbiAgdmFyIGJhc2UgPSBzdGF0ZS5iYXNlO1xuICB2YXIgZHJhZnQgPSBzdGF0ZS5kcmFmdDsgLy8gU2VhcmNoIGZvciBhZGRlZCBrZXlzIGFuZCBjaGFuZ2VkIGtleXMuIFN0YXJ0IGF0IHRoZSBiYWNrLCBiZWNhdXNlXG4gIC8vIG5vbi1udW1lcmljIGtleXMgYXJlIG9yZGVyZWQgYnkgdGltZSBvZiBkZWZpbml0aW9uIG9uIHRoZSBvYmplY3QuXG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhkcmFmdCk7XG5cbiAgZm9yICh2YXIgaSA9IGtleXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICB2YXIgYmFzZVZhbHVlID0gYmFzZVtrZXldOyAvLyBUaGUgYHVuZGVmaW5lZGAgY2hlY2sgaXMgYSBmYXN0IHBhdGggZm9yIHByZS1leGlzdGluZyBrZXlzLlxuXG4gICAgaWYgKGJhc2VWYWx1ZSA9PT0gdW5kZWZpbmVkICYmICFoYXMoYmFzZSwga2V5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSAvLyBPbmNlIGEgYmFzZSBrZXkgaXMgZGVsZXRlZCwgZnV0dXJlIGNoYW5nZXMgZ28gdW5kZXRlY3RlZCwgYmVjYXVzZSBpdHNcbiAgICAvLyBkZXNjcmlwdG9yIGlzIGVyYXNlZC4gVGhpcyBicmFuY2ggZGV0ZWN0cyBhbnkgbWlzc2VkIGNoYW5nZXMuXG4gICAgZWxzZSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGRyYWZ0W2tleV07XG4gICAgICAgIHZhciBzdGF0ZSQxID0gdmFsdWUgJiYgdmFsdWVbRFJBRlRfU1RBVEVdO1xuXG4gICAgICAgIGlmIChzdGF0ZSQxID8gc3RhdGUkMS5iYXNlICE9PSBiYXNlVmFsdWUgOiAhaXModmFsdWUsIGJhc2VWYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9IC8vIEF0IHRoaXMgcG9pbnQsIG5vIGtleXMgd2VyZSBhZGRlZCBvciBjaGFuZ2VkLlxuICAvLyBDb21wYXJlIGtleSBjb3VudCB0byBkZXRlcm1pbmUgaWYga2V5cyB3ZXJlIGRlbGV0ZWQuXG5cblxuICByZXR1cm4ga2V5cy5sZW5ndGggIT09IE9iamVjdC5rZXlzKGJhc2UpLmxlbmd0aDtcbn1cblxuZnVuY3Rpb24gaGFzQXJyYXlDaGFuZ2VzKHN0YXRlKSB7XG4gIHZhciBkcmFmdCA9IHN0YXRlLmRyYWZ0O1xuICBpZiAoZHJhZnQubGVuZ3RoICE9PSBzdGF0ZS5iYXNlLmxlbmd0aCkgeyByZXR1cm4gdHJ1ZTsgfSAvLyBTZWUgIzExNlxuICAvLyBJZiB3ZSBmaXJzdCBzaG9ydGVuIHRoZSBsZW5ndGgsIG91ciBhcnJheSBpbnRlcmNlcHRvcnMgd2lsbCBiZSByZW1vdmVkLlxuICAvLyBJZiBhZnRlciB0aGF0IG5ldyBpdGVtcyBhcmUgYWRkZWQsIHJlc3VsdCBpbiB0aGUgc2FtZSBvcmlnaW5hbCBsZW5ndGgsXG4gIC8vIHRob3NlIGxhc3QgaXRlbXMgd2lsbCBoYXZlIG5vIGludGVyY2VwdGluZyBwcm9wZXJ0eS5cbiAgLy8gU28gaWYgdGhlcmUgaXMgbm8gb3duIGRlc2NyaXB0b3Igb24gdGhlIGxhc3QgcG9zaXRpb24sIHdlIGtub3cgdGhhdCBpdGVtcyB3ZXJlIHJlbW92ZWQgYW5kIGFkZGVkXG4gIC8vIE4uQi46IHNwbGljZSwgdW5zaGlmdCwgZXRjIG9ubHkgc2hpZnQgdmFsdWVzIGFyb3VuZCwgYnV0IG5vdCBwcm9wIGRlc2NyaXB0b3JzLCBzbyB3ZSBvbmx5IGhhdmUgdG8gY2hlY2tcbiAgLy8gdGhlIGxhc3Qgb25lXG5cbiAgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRyYWZ0LCBkcmFmdC5sZW5ndGggLSAxKTsgLy8gZGVzY3JpcHRvciBjYW4gYmUgbnVsbCwgYnV0IG9ubHkgZm9yIG5ld2x5IGNyZWF0ZWQgc3BhcnNlIGFycmF5cywgZWcuIG5ldyBBcnJheSgxMClcblxuICBpZiAoZGVzY3JpcHRvciAmJiAhZGVzY3JpcHRvci5nZXQpIHsgcmV0dXJuIHRydWU7IH0gLy8gRm9yIGFsbCBvdGhlciBjYXNlcywgd2UgZG9uJ3QgaGF2ZSB0byBjb21wYXJlLCBhcyB0aGV5IHdvdWxkIGhhdmUgYmVlbiBwaWNrZWQgdXAgYnkgdGhlIGluZGV4IHNldHRlcnNcblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUhpZGRlblByb3BlcnR5KHRhcmdldCwgcHJvcCwgdmFsdWUpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcCwge1xuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KTtcbn1cblxudmFyIGxlZ2FjeVByb3h5ID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICAgIHdpbGxGaW5hbGl6ZTogd2lsbEZpbmFsaXplLFxuICAgIGNyZWF0ZVByb3h5OiBjcmVhdGVQcm94eVxufSk7XG5cbmZ1bmN0aW9uIHdpbGxGaW5hbGl6ZSQxKCkge31cbmZ1bmN0aW9uIGNyZWF0ZVByb3h5JDEoYmFzZSwgcGFyZW50KSB7XG4gIHZhciBzY29wZSA9IHBhcmVudCA/IHBhcmVudC5zY29wZSA6IEltbWVyU2NvcGUuY3VycmVudDtcbiAgdmFyIHN0YXRlID0ge1xuICAgIC8vIFRyYWNrIHdoaWNoIHByb2R1Y2UgY2FsbCB0aGlzIGlzIGFzc29jaWF0ZWQgd2l0aC5cbiAgICBzY29wZTogc2NvcGUsXG4gICAgLy8gVHJ1ZSBmb3IgYm90aCBzaGFsbG93IGFuZCBkZWVwIGNoYW5nZXMuXG4gICAgbW9kaWZpZWQ6IGZhbHNlLFxuICAgIC8vIFVzZWQgZHVyaW5nIGZpbmFsaXphdGlvbi5cbiAgICBmaW5hbGl6ZWQ6IGZhbHNlLFxuICAgIC8vIFRyYWNrIHdoaWNoIHByb3BlcnRpZXMgaGF2ZSBiZWVuIGFzc2lnbmVkICh0cnVlKSBvciBkZWxldGVkIChmYWxzZSkuXG4gICAgYXNzaWduZWQ6IHt9LFxuICAgIC8vIFRoZSBwYXJlbnQgZHJhZnQgc3RhdGUuXG4gICAgcGFyZW50OiBwYXJlbnQsXG4gICAgLy8gVGhlIGJhc2Ugc3RhdGUuXG4gICAgYmFzZTogYmFzZSxcbiAgICAvLyBUaGUgYmFzZSBwcm94eS5cbiAgICBkcmFmdDogbnVsbCxcbiAgICAvLyBBbnkgcHJvcGVydHkgcHJveGllcy5cbiAgICBkcmFmdHM6IHt9LFxuICAgIC8vIFRoZSBiYXNlIGNvcHkgd2l0aCBhbnkgdXBkYXRlZCB2YWx1ZXMuXG4gICAgY29weTogbnVsbCxcbiAgICAvLyBDYWxsZWQgYnkgdGhlIGBwcm9kdWNlYCBmdW5jdGlvbi5cbiAgICByZXZva2U6IG51bGxcbiAgfTtcbiAgdmFyIHJlZiA9IEFycmF5LmlzQXJyYXkoYmFzZSkgPyAvLyBbc3RhdGVdIGlzIHVzZWQgZm9yIGFycmF5cywgdG8gbWFrZSBzdXJlIHRoZSBwcm94eSBpcyBhcnJheS1pc2ggYW5kIG5vdCB2aW9sYXRlIGludmFyaWFudHMsXG4gIC8vIGFsdGhvdWdoIHN0YXRlIGl0c2VsZiBpcyBhbiBvYmplY3RcbiAgUHJveHkucmV2b2NhYmxlKFtzdGF0ZV0sIGFycmF5VHJhcHMpIDogUHJveHkucmV2b2NhYmxlKHN0YXRlLCBvYmplY3RUcmFwcyk7XG4gIHZhciByZXZva2UgPSByZWYucmV2b2tlO1xuICB2YXIgcHJveHkgPSByZWYucHJveHk7XG4gIHN0YXRlLmRyYWZ0ID0gcHJveHk7XG4gIHN0YXRlLnJldm9rZSA9IHJldm9rZTtcbiAgc2NvcGUuZHJhZnRzLnB1c2gocHJveHkpO1xuICByZXR1cm4gcHJveHk7XG59XG52YXIgb2JqZWN0VHJhcHMgPSB7XG4gIGdldDogZ2V0JDEsXG5cbiAgaGFzOiBmdW5jdGlvbiBoYXModGFyZ2V0LCBwcm9wKSB7XG4gICAgcmV0dXJuIHByb3AgaW4gc291cmNlJDEodGFyZ2V0KTtcbiAgfSxcblxuICBvd25LZXlzOiBmdW5jdGlvbiBvd25LZXlzKHRhcmdldCkge1xuICAgIHJldHVybiBSZWZsZWN0Lm93bktleXMoc291cmNlJDEodGFyZ2V0KSk7XG4gIH0sXG5cbiAgc2V0OiBzZXQkMSxcbiAgZGVsZXRlUHJvcGVydHk6IGRlbGV0ZVByb3BlcnR5LFxuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6IGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcblxuICBkZWZpbmVQcm9wZXJ0eTogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiT2JqZWN0LmRlZmluZVByb3BlcnR5KCkgY2Fubm90IGJlIHVzZWQgb24gYW4gSW1tZXIgZHJhZnRcIik7IC8vIHByZXR0aWVyLWlnbm9yZVxuICB9LFxuXG4gIGdldFByb3RvdHlwZU9mOiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZih0YXJnZXQpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldC5iYXNlKTtcbiAgfSxcblxuICBzZXRQcm90b3R5cGVPZjogZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiT2JqZWN0LnNldFByb3RvdHlwZU9mKCkgY2Fubm90IGJlIHVzZWQgb24gYW4gSW1tZXIgZHJhZnRcIik7IC8vIHByZXR0aWVyLWlnbm9yZVxuICB9XG5cbn07XG52YXIgYXJyYXlUcmFwcyA9IHt9O1xuZWFjaChvYmplY3RUcmFwcywgZnVuY3Rpb24gKGtleSwgZm4pIHtcbiAgYXJyYXlUcmFwc1trZXldID0gZnVuY3Rpb24gKCkge1xuICAgIGFyZ3VtZW50c1swXSA9IGFyZ3VtZW50c1swXVswXTtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn0pO1xuXG5hcnJheVRyYXBzLmRlbGV0ZVByb3BlcnR5ID0gZnVuY3Rpb24gKHN0YXRlLCBwcm9wKSB7XG4gIGlmIChpc05hTihwYXJzZUludChwcm9wKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbW1lciBvbmx5IHN1cHBvcnRzIGRlbGV0aW5nIGFycmF5IGluZGljZXNcIik7IC8vIHByZXR0aWVyLWlnbm9yZVxuICB9XG5cbiAgcmV0dXJuIG9iamVjdFRyYXBzLmRlbGV0ZVByb3BlcnR5LmNhbGwodGhpcywgc3RhdGVbMF0sIHByb3ApO1xufTtcblxuYXJyYXlUcmFwcy5zZXQgPSBmdW5jdGlvbiAoc3RhdGUsIHByb3AsIHZhbHVlKSB7XG4gIGlmIChwcm9wICE9PSBcImxlbmd0aFwiICYmIGlzTmFOKHBhcnNlSW50KHByb3ApKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkltbWVyIG9ubHkgc3VwcG9ydHMgc2V0dGluZyBhcnJheSBpbmRpY2VzIGFuZCB0aGUgJ2xlbmd0aCcgcHJvcGVydHlcIik7IC8vIHByZXR0aWVyLWlnbm9yZVxuICB9XG5cbiAgcmV0dXJuIG9iamVjdFRyYXBzLnNldC5jYWxsKHRoaXMsIHN0YXRlWzBdLCBwcm9wLCB2YWx1ZSk7XG59OyAvLyByZXR1cm5zIHRoZSBvYmplY3Qgd2Ugc2hvdWxkIGJlIHJlYWRpbmcgdGhlIGN1cnJlbnQgdmFsdWUgZnJvbSwgd2hpY2ggaXMgYmFzZSwgdW50aWwgc29tZSBjaGFuZ2UgaGFzIGJlZW4gbWFkZVxuXG5cbmZ1bmN0aW9uIHNvdXJjZSQxKHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5jb3B5IHx8IHN0YXRlLmJhc2U7XG59IC8vIEFjY2VzcyBhIHByb3BlcnR5IHdpdGhvdXQgY3JlYXRpbmcgYW4gSW1tZXIgZHJhZnQuXG5cblxuZnVuY3Rpb24gcGVlayQxKGRyYWZ0LCBwcm9wKSB7XG4gIHZhciBzdGF0ZSA9IGRyYWZ0W0RSQUZUX1NUQVRFXTtcbiAgdmFyIGRlc2MgPSBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdGF0ZSA/IHNvdXJjZSQxKHN0YXRlKSA6IGRyYWZ0LCBwcm9wKTtcbiAgcmV0dXJuIGRlc2MgJiYgZGVzYy52YWx1ZTtcbn1cblxuZnVuY3Rpb24gZ2V0JDEoc3RhdGUsIHByb3ApIHtcbiAgaWYgKHByb3AgPT09IERSQUZUX1NUQVRFKSB7IHJldHVybiBzdGF0ZTsgfVxuICB2YXIgZHJhZnRzID0gc3RhdGUuZHJhZnRzOyAvLyBDaGVjayBmb3IgZXhpc3RpbmcgZHJhZnQgaW4gdW5tb2RpZmllZCBzdGF0ZS5cblxuICBpZiAoIXN0YXRlLm1vZGlmaWVkICYmIGhhcyhkcmFmdHMsIHByb3ApKSB7XG4gICAgcmV0dXJuIGRyYWZ0c1twcm9wXTtcbiAgfVxuXG4gIHZhciB2YWx1ZSA9IHNvdXJjZSQxKHN0YXRlKVtwcm9wXTtcblxuICBpZiAoc3RhdGUuZmluYWxpemVkIHx8ICFpc0RyYWZ0YWJsZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0gLy8gQ2hlY2sgZm9yIGV4aXN0aW5nIGRyYWZ0IGluIG1vZGlmaWVkIHN0YXRlLlxuXG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVkKSB7XG4gICAgLy8gQXNzaWduZWQgdmFsdWVzIGFyZSBuZXZlciBkcmFmdGVkLiBUaGlzIGNhdGNoZXMgYW55IGRyYWZ0cyB3ZSBjcmVhdGVkLCB0b28uXG4gICAgaWYgKHZhbHVlICE9PSBwZWVrJDEoc3RhdGUuYmFzZSwgcHJvcCkpIHsgcmV0dXJuIHZhbHVlOyB9IC8vIFN0b3JlIGRyYWZ0cyBvbiB0aGUgY29weSAod2hlbiBvbmUgZXhpc3RzKS5cblxuICAgIGRyYWZ0cyA9IHN0YXRlLmNvcHk7XG4gIH1cblxuICByZXR1cm4gZHJhZnRzW3Byb3BdID0gY3JlYXRlUHJveHkkMSh2YWx1ZSwgc3RhdGUpO1xufVxuXG5mdW5jdGlvbiBzZXQkMShzdGF0ZSwgcHJvcCwgdmFsdWUpIHtcbiAgaWYgKCFzdGF0ZS5tb2RpZmllZCkge1xuICAgIHZhciBiYXNlVmFsdWUgPSBwZWVrJDEoc3RhdGUuYmFzZSwgcHJvcCk7IC8vIE9wdGltaXplIGJhc2VkIG9uIHZhbHVlJ3MgdHJ1dGhpbmVzcy4gVHJ1dGh5IHZhbHVlcyBhcmUgZ3VhcmFudGVlZCB0b1xuICAgIC8vIG5ldmVyIGJlIHVuZGVmaW5lZCwgc28gd2UgY2FuIGF2b2lkIHRoZSBgaW5gIG9wZXJhdG9yLiBMYXN0bHksIHRydXRoeVxuICAgIC8vIHZhbHVlcyBtYXkgYmUgZHJhZnRzLCBidXQgZmFsc3kgdmFsdWVzIGFyZSBuZXZlciBkcmFmdHMuXG5cbiAgICB2YXIgaXNVbmNoYW5nZWQgPSB2YWx1ZSA/IGlzKGJhc2VWYWx1ZSwgdmFsdWUpIHx8IHZhbHVlID09PSBzdGF0ZS5kcmFmdHNbcHJvcF0gOiBpcyhiYXNlVmFsdWUsIHZhbHVlKSAmJiBwcm9wIGluIHN0YXRlLmJhc2U7XG4gICAgaWYgKGlzVW5jaGFuZ2VkKSB7IHJldHVybiB0cnVlOyB9XG4gICAgbWFya0NoYW5nZWQkMShzdGF0ZSk7XG4gIH1cblxuICBzdGF0ZS5hc3NpZ25lZFtwcm9wXSA9IHRydWU7XG4gIHN0YXRlLmNvcHlbcHJvcF0gPSB2YWx1ZTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGRlbGV0ZVByb3BlcnR5KHN0YXRlLCBwcm9wKSB7XG4gIC8vIFRoZSBgdW5kZWZpbmVkYCBjaGVjayBpcyBhIGZhc3QgcGF0aCBmb3IgcHJlLWV4aXN0aW5nIGtleXMuXG4gIGlmIChwZWVrJDEoc3RhdGUuYmFzZSwgcHJvcCkgIT09IHVuZGVmaW5lZCB8fCBwcm9wIGluIHN0YXRlLmJhc2UpIHtcbiAgICBzdGF0ZS5hc3NpZ25lZFtwcm9wXSA9IGZhbHNlO1xuICAgIG1hcmtDaGFuZ2VkJDEoc3RhdGUpO1xuICB9XG5cbiAgaWYgKHN0YXRlLmNvcHkpIHsgZGVsZXRlIHN0YXRlLmNvcHlbcHJvcF07IH1cbiAgcmV0dXJuIHRydWU7XG59IC8vIE5vdGU6IFdlIG5ldmVyIGNvZXJjZSBgZGVzYy52YWx1ZWAgaW50byBhbiBJbW1lciBkcmFmdCwgYmVjYXVzZSB3ZSBjYW4ndCBtYWtlXG4vLyB0aGUgc2FtZSBndWFyYW50ZWUgaW4gRVM1IG1vZGUuXG5cblxuZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHN0YXRlLCBwcm9wKSB7XG4gIHZhciBvd25lciA9IHNvdXJjZSQxKHN0YXRlKTtcbiAgdmFyIGRlc2MgPSBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvd25lciwgcHJvcCk7XG5cbiAgaWYgKGRlc2MpIHtcbiAgICBkZXNjLndyaXRhYmxlID0gdHJ1ZTtcbiAgICBkZXNjLmNvbmZpZ3VyYWJsZSA9ICFBcnJheS5pc0FycmF5KG93bmVyKSB8fCBwcm9wICE9PSBcImxlbmd0aFwiO1xuICB9XG5cbiAgcmV0dXJuIGRlc2M7XG59XG5cbmZ1bmN0aW9uIG1hcmtDaGFuZ2VkJDEoc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5tb2RpZmllZCkge1xuICAgIHN0YXRlLm1vZGlmaWVkID0gdHJ1ZTtcbiAgICBzdGF0ZS5jb3B5ID0gYXNzaWduKHNoYWxsb3dDb3B5KHN0YXRlLmJhc2UpLCBzdGF0ZS5kcmFmdHMpO1xuICAgIHN0YXRlLmRyYWZ0cyA9IG51bGw7XG4gICAgaWYgKHN0YXRlLnBhcmVudCkgeyBtYXJrQ2hhbmdlZCQxKHN0YXRlLnBhcmVudCk7IH1cbiAgfVxufVxuXG52YXIgbW9kZXJuUHJveHkgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7XG4gICAgd2lsbEZpbmFsaXplOiB3aWxsRmluYWxpemUkMSxcbiAgICBjcmVhdGVQcm94eTogY3JlYXRlUHJveHkkMVxufSk7XG5cbmZ1bmN0aW9uIGdlbmVyYXRlUGF0Y2hlcyhzdGF0ZSwgYmFzZVBhdGgsIHBhdGNoZXMsIGludmVyc2VQYXRjaGVzKSB7XG4gIEFycmF5LmlzQXJyYXkoc3RhdGUuYmFzZSkgPyBnZW5lcmF0ZUFycmF5UGF0Y2hlcyhzdGF0ZSwgYmFzZVBhdGgsIHBhdGNoZXMsIGludmVyc2VQYXRjaGVzKSA6IGdlbmVyYXRlT2JqZWN0UGF0Y2hlcyhzdGF0ZSwgYmFzZVBhdGgsIHBhdGNoZXMsIGludmVyc2VQYXRjaGVzKTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVBcnJheVBhdGNoZXMoc3RhdGUsIGJhc2VQYXRoLCBwYXRjaGVzLCBpbnZlcnNlUGF0Y2hlcykge1xuICB2YXIgYXNzaWduLCBhc3NpZ24kMTtcblxuICB2YXIgYmFzZSA9IHN0YXRlLmJhc2U7XG4gIHZhciBjb3B5ID0gc3RhdGUuY29weTtcbiAgdmFyIGFzc2lnbmVkID0gc3RhdGUuYXNzaWduZWQ7IC8vIFJlZHVjZSBjb21wbGV4aXR5IGJ5IGVuc3VyaW5nIGBiYXNlYCBpcyBuZXZlciBsb25nZXIuXG5cbiAgaWYgKGNvcHkubGVuZ3RoIDwgYmFzZS5sZW5ndGgpIHtcbiAgICAoYXNzaWduID0gW2NvcHksIGJhc2VdLCBiYXNlID0gYXNzaWduWzBdLCBjb3B5ID0gYXNzaWduWzFdKTtcbiAgICAoYXNzaWduJDEgPSBbaW52ZXJzZVBhdGNoZXMsIHBhdGNoZXNdLCBwYXRjaGVzID0gYXNzaWduJDFbMF0sIGludmVyc2VQYXRjaGVzID0gYXNzaWduJDFbMV0pO1xuICB9XG5cbiAgdmFyIGRlbHRhID0gY29weS5sZW5ndGggLSBiYXNlLmxlbmd0aDsgLy8gRmluZCB0aGUgZmlyc3QgcmVwbGFjZWQgaW5kZXguXG5cbiAgdmFyIHN0YXJ0ID0gMDtcblxuICB3aGlsZSAoYmFzZVtzdGFydF0gPT09IGNvcHlbc3RhcnRdICYmIHN0YXJ0IDwgYmFzZS5sZW5ndGgpIHtcbiAgICArK3N0YXJ0O1xuICB9IC8vIEZpbmQgdGhlIGxhc3QgcmVwbGFjZWQgaW5kZXguIFNlYXJjaCBmcm9tIHRoZSBlbmQgdG8gb3B0aW1pemUgc3BsaWNlIHBhdGNoZXMuXG5cblxuICB2YXIgZW5kID0gYmFzZS5sZW5ndGg7XG5cbiAgd2hpbGUgKGVuZCA+IHN0YXJ0ICYmIGJhc2VbZW5kIC0gMV0gPT09IGNvcHlbZW5kICsgZGVsdGEgLSAxXSkge1xuICAgIC0tZW5kO1xuICB9IC8vIFByb2Nlc3MgcmVwbGFjZWQgaW5kaWNlcy5cblxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgaWYgKGFzc2lnbmVkW2ldICYmIGNvcHlbaV0gIT09IGJhc2VbaV0pIHtcbiAgICAgIHZhciBwYXRoID0gYmFzZVBhdGguY29uY2F0KFtpXSk7XG4gICAgICBwYXRjaGVzLnB1c2goe1xuICAgICAgICBvcDogXCJyZXBsYWNlXCIsXG4gICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgIHZhbHVlOiBjb3B5W2ldXG4gICAgICB9KTtcbiAgICAgIGludmVyc2VQYXRjaGVzLnB1c2goe1xuICAgICAgICBvcDogXCJyZXBsYWNlXCIsXG4gICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgIHZhbHVlOiBiYXNlW2ldXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB2YXIgdXNlUmVtb3ZlID0gZW5kICE9IGJhc2UubGVuZ3RoO1xuICB2YXIgcmVwbGFjZUNvdW50ID0gcGF0Y2hlcy5sZW5ndGg7IC8vIFByb2Nlc3MgYWRkZWQgaW5kaWNlcy5cblxuICBmb3IgKHZhciBpJDEgPSBlbmQgKyBkZWx0YSAtIDE7IGkkMSA+PSBlbmQ7IC0taSQxKSB7XG4gICAgdmFyIHBhdGgkMSA9IGJhc2VQYXRoLmNvbmNhdChbaSQxXSk7XG4gICAgcGF0Y2hlc1tyZXBsYWNlQ291bnQgKyBpJDEgLSBlbmRdID0ge1xuICAgICAgb3A6IFwiYWRkXCIsXG4gICAgICBwYXRoOiBwYXRoJDEsXG4gICAgICB2YWx1ZTogY29weVtpJDFdXG4gICAgfTtcblxuICAgIGlmICh1c2VSZW1vdmUpIHtcbiAgICAgIGludmVyc2VQYXRjaGVzLnB1c2goe1xuICAgICAgICBvcDogXCJyZW1vdmVcIixcbiAgICAgICAgcGF0aDogcGF0aCQxXG4gICAgICB9KTtcbiAgICB9XG4gIH0gLy8gT25lIFwicmVwbGFjZVwiIHBhdGNoIHJldmVyc2VzIGFsbCBub24tc3BsaWNpbmcgXCJhZGRcIiBwYXRjaGVzLlxuXG5cbiAgaWYgKCF1c2VSZW1vdmUpIHtcbiAgICBpbnZlcnNlUGF0Y2hlcy5wdXNoKHtcbiAgICAgIG9wOiBcInJlcGxhY2VcIixcbiAgICAgIHBhdGg6IGJhc2VQYXRoLmNvbmNhdChbXCJsZW5ndGhcIl0pLFxuICAgICAgdmFsdWU6IGJhc2UubGVuZ3RoXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVPYmplY3RQYXRjaGVzKHN0YXRlLCBiYXNlUGF0aCwgcGF0Y2hlcywgaW52ZXJzZVBhdGNoZXMpIHtcbiAgdmFyIGJhc2UgPSBzdGF0ZS5iYXNlO1xuICB2YXIgY29weSA9IHN0YXRlLmNvcHk7XG4gIGVhY2goc3RhdGUuYXNzaWduZWQsIGZ1bmN0aW9uIChrZXksIGFzc2lnbmVkVmFsdWUpIHtcbiAgICB2YXIgb3JpZ1ZhbHVlID0gYmFzZVtrZXldO1xuICAgIHZhciB2YWx1ZSA9IGNvcHlba2V5XTtcbiAgICB2YXIgb3AgPSAhYXNzaWduZWRWYWx1ZSA/IFwicmVtb3ZlXCIgOiBrZXkgaW4gYmFzZSA/IFwicmVwbGFjZVwiIDogXCJhZGRcIjtcbiAgICBpZiAob3JpZ1ZhbHVlID09PSB2YWx1ZSAmJiBvcCA9PT0gXCJyZXBsYWNlXCIpIHsgcmV0dXJuOyB9XG4gICAgdmFyIHBhdGggPSBiYXNlUGF0aC5jb25jYXQoa2V5KTtcbiAgICBwYXRjaGVzLnB1c2gob3AgPT09IFwicmVtb3ZlXCIgPyB7XG4gICAgICBvcDogb3AsXG4gICAgICBwYXRoOiBwYXRoXG4gICAgfSA6IHtcbiAgICAgIG9wOiBvcCxcbiAgICAgIHBhdGg6IHBhdGgsXG4gICAgICB2YWx1ZTogdmFsdWVcbiAgICB9KTtcbiAgICBpbnZlcnNlUGF0Y2hlcy5wdXNoKG9wID09PSBcImFkZFwiID8ge1xuICAgICAgb3A6IFwicmVtb3ZlXCIsXG4gICAgICBwYXRoOiBwYXRoXG4gICAgfSA6IG9wID09PSBcInJlbW92ZVwiID8ge1xuICAgICAgb3A6IFwiYWRkXCIsXG4gICAgICBwYXRoOiBwYXRoLFxuICAgICAgdmFsdWU6IG9yaWdWYWx1ZVxuICAgIH0gOiB7XG4gICAgICBvcDogXCJyZXBsYWNlXCIsXG4gICAgICBwYXRoOiBwYXRoLFxuICAgICAgdmFsdWU6IG9yaWdWYWx1ZVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYXBwbHlQYXRjaGVzKGRyYWZ0LCBwYXRjaGVzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0Y2hlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwYXRjaCA9IHBhdGNoZXNbaV07XG4gICAgdmFyIHBhdGggPSBwYXRjaC5wYXRoO1xuXG4gICAgaWYgKHBhdGgubGVuZ3RoID09PSAwICYmIHBhdGNoLm9wID09PSBcInJlcGxhY2VcIikge1xuICAgICAgZHJhZnQgPSBwYXRjaC52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGJhc2UgPSBkcmFmdDtcblxuICAgICAgZm9yICh2YXIgaSQxID0gMDsgaSQxIDwgcGF0aC5sZW5ndGggLSAxOyBpJDErKykge1xuICAgICAgICBiYXNlID0gYmFzZVtwYXRoW2kkMV1dO1xuICAgICAgICBpZiAoIWJhc2UgfHwgdHlwZW9mIGJhc2UgIT09IFwib2JqZWN0XCIpIHsgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGFwcGx5IHBhdGNoLCBwYXRoIGRvZXNuJ3QgcmVzb2x2ZTogXCIgKyBwYXRoLmpvaW4oXCIvXCIpKTsgfSAvLyBwcmV0dGllci1pZ25vcmVcbiAgICAgIH1cblxuICAgICAgdmFyIGtleSA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcblxuICAgICAgc3dpdGNoIChwYXRjaC5vcCkge1xuICAgICAgICBjYXNlIFwicmVwbGFjZVwiOlxuICAgICAgICAgIGJhc2Vba2V5XSA9IHBhdGNoLnZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgXCJhZGRcIjpcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShiYXNlKSkge1xuICAgICAgICAgICAgLy8gVE9ETzogc3VwcG9ydCBcImZvby8tXCIgcGF0aHMgZm9yIGFwcGVuZGluZyB0byBhbiBhcnJheVxuICAgICAgICAgICAgYmFzZS5zcGxpY2Uoa2V5LCAwLCBwYXRjaC52YWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2Vba2V5XSA9IHBhdGNoLnZhbHVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgXCJyZW1vdmVcIjpcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShiYXNlKSkge1xuICAgICAgICAgICAgYmFzZS5zcGxpY2Uoa2V5LCAxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVsZXRlIGJhc2Vba2V5XTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHBhdGNoIG9wZXJhdGlvbjogXCIgKyBwYXRjaC5vcCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRyYWZ0O1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlNaW5pZmllZCgpIHt9XG5cbnZhciBjb25maWdEZWZhdWx0cyA9IHtcbiAgdXNlUHJveGllczogdHlwZW9mIFByb3h5ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBSZWZsZWN0ICE9PSBcInVuZGVmaW5lZFwiLFxuICBhdXRvRnJlZXplOiB0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA6IHZlcmlmeU1pbmlmaWVkLm5hbWUgPT09IFwidmVyaWZ5TWluaWZpZWRcIixcbiAgb25Bc3NpZ246IG51bGwsXG4gIG9uRGVsZXRlOiBudWxsLFxuICBvbkNvcHk6IG51bGxcbn07XG52YXIgSW1tZXIgPSBmdW5jdGlvbiBJbW1lcihjb25maWcpIHtcbiAgYXNzaWduKHRoaXMsIGNvbmZpZ0RlZmF1bHRzLCBjb25maWcpO1xuICB0aGlzLnNldFVzZVByb3hpZXModGhpcy51c2VQcm94aWVzKTtcbiAgdGhpcy5wcm9kdWNlID0gdGhpcy5wcm9kdWNlLmJpbmQodGhpcyk7XG59O1xuXG5JbW1lci5wcm90b3R5cGUucHJvZHVjZSA9IGZ1bmN0aW9uIHByb2R1Y2UgKGJhc2UsIHJlY2lwZSwgcGF0Y2hMaXN0ZW5lcikge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIC8vIGN1cnJpZWQgaW52b2NhdGlvblxuICBpZiAodHlwZW9mIGJhc2UgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgcmVjaXBlICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgZGVmYXVsdEJhc2UgPSByZWNpcGU7XG4gICAgcmVjaXBlID0gYmFzZTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGN1cnJpZWRQcm9kdWNlKGJhc2UpIHtcbiAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgIGlmICggYmFzZSA9PT0gdm9pZCAwICkgYmFzZSA9IGRlZmF1bHRCYXNlO1xuICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgd2hpbGUgKCBsZW4tLSA+IDAgKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgMSBdO1xuXG4gICAgICByZXR1cm4gc2VsZi5wcm9kdWNlKGJhc2UsIGZ1bmN0aW9uIChkcmFmdCkgeyByZXR1cm4gcmVjaXBlLmNhbGwuYXBwbHkocmVjaXBlLCBbIHRoaXMkMSwgZHJhZnQgXS5jb25jYXQoIGFyZ3MgKSk7IH0pOyAvLyBwcmV0dGllci1pZ25vcmVcbiAgICB9O1xuICB9IC8vIHByZXR0aWVyLWlnbm9yZVxuXG5cbiAge1xuICAgIGlmICh0eXBlb2YgcmVjaXBlICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBmaXJzdCBvciBzZWNvbmQgYXJndW1lbnQgdG8gYHByb2R1Y2VgIG11c3QgYmUgYSBmdW5jdGlvblwiKTtcbiAgICB9XG5cbiAgICBpZiAocGF0Y2hMaXN0ZW5lciAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBwYXRjaExpc3RlbmVyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSB0aGlyZCBhcmd1bWVudCB0byBgcHJvZHVjZWAgbXVzdCBiZSBhIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZFwiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHJlc3VsdDsgLy8gT25seSBwbGFpbiBvYmplY3RzLCBhcnJheXMsIGFuZCBcImltbWVyYWJsZSBjbGFzc2VzXCIgYXJlIGRyYWZ0ZWQuXG5cbiAgaWYgKGlzRHJhZnRhYmxlKGJhc2UpKSB7XG4gICAgdmFyIHNjb3BlID0gSW1tZXJTY29wZS5lbnRlcigpO1xuICAgIHZhciBwcm94eSA9IHRoaXMuY3JlYXRlUHJveHkoYmFzZSk7XG4gICAgdmFyIGhhc0Vycm9yID0gdHJ1ZTtcblxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSByZWNpcGUocHJveHkpO1xuICAgICAgaGFzRXJyb3IgPSBmYWxzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gZmluYWxseSBpbnN0ZWFkIG9mIGNhdGNoICsgcmV0aHJvdyBiZXR0ZXIgcHJlc2VydmVzIG9yaWdpbmFsIHN0YWNrXG4gICAgICBpZiAoaGFzRXJyb3IpIHsgc2NvcGUucmV2b2tlKCk7IH1lbHNlIHsgc2NvcGUubGVhdmUoKTsgfVxuICAgIH1cblxuICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICByZXR1cm4gcmVzdWx0LnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICBzY29wZS51c2VQYXRjaGVzKHBhdGNoTGlzdGVuZXIpO1xuICAgICAgICByZXR1cm4gdGhpcyQxLnByb2Nlc3NSZXN1bHQocmVzdWx0LCBzY29wZSk7XG4gICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgc2NvcGUucmV2b2tlKCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2NvcGUudXNlUGF0Y2hlcyhwYXRjaExpc3RlbmVyKTtcbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzUmVzdWx0KHJlc3VsdCwgc2NvcGUpO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9IHJlY2lwZShiYXNlKTtcbiAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIGJhc2U7IH1cbiAgICByZXR1cm4gcmVzdWx0ICE9PSBOT1RISU5HID8gcmVzdWx0IDogdW5kZWZpbmVkO1xuICB9XG59O1xuXG5JbW1lci5wcm90b3R5cGUuY3JlYXRlRHJhZnQgPSBmdW5jdGlvbiBjcmVhdGVEcmFmdCAoYmFzZSkge1xuICBpZiAoIWlzRHJhZnRhYmxlKGJhc2UpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRmlyc3QgYXJndW1lbnQgdG8gYGNyZWF0ZURyYWZ0YCBtdXN0IGJlIGEgcGxhaW4gb2JqZWN0LCBhbiBhcnJheSwgb3IgYW4gaW1tZXJhYmxlIG9iamVjdFwiKTsgLy8gcHJldHRpZXItaWdub3JlXG4gIH1cblxuICB2YXIgc2NvcGUgPSBJbW1lclNjb3BlLmVudGVyKCk7XG4gIHZhciBwcm94eSA9IHRoaXMuY3JlYXRlUHJveHkoYmFzZSk7XG4gIHByb3h5W0RSQUZUX1NUQVRFXS5pc01hbnVhbCA9IHRydWU7XG4gIHNjb3BlLmxlYXZlKCk7XG4gIHJldHVybiBwcm94eTtcbn07XG5cbkltbWVyLnByb3RvdHlwZS5maW5pc2hEcmFmdCA9IGZ1bmN0aW9uIGZpbmlzaERyYWZ0IChkcmFmdCwgcGF0Y2hMaXN0ZW5lcikge1xuICB2YXIgc3RhdGUgPSBkcmFmdCAmJiBkcmFmdFtEUkFGVF9TVEFURV07XG5cbiAgaWYgKCFzdGF0ZSB8fCAhc3RhdGUuaXNNYW51YWwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJGaXJzdCBhcmd1bWVudCB0byBgZmluaXNoRHJhZnRgIG11c3QgYmUgYSBkcmFmdCByZXR1cm5lZCBieSBgY3JlYXRlRHJhZnRgXCIpOyAvLyBwcmV0dGllci1pZ25vcmVcbiAgfVxuXG4gIGlmIChzdGF0ZS5maW5hbGl6ZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgZ2l2ZW4gZHJhZnQgaXMgYWxyZWFkeSBmaW5hbGl6ZWRcIik7IC8vIHByZXR0aWVyLWlnbm9yZVxuICB9XG5cbiAgdmFyIHNjb3BlID0gc3RhdGUuc2NvcGU7XG4gIHNjb3BlLnVzZVBhdGNoZXMocGF0Y2hMaXN0ZW5lcik7XG4gIHJldHVybiB0aGlzLnByb2Nlc3NSZXN1bHQodW5kZWZpbmVkLCBzY29wZSk7XG59O1xuXG5JbW1lci5wcm90b3R5cGUuc2V0QXV0b0ZyZWV6ZSA9IGZ1bmN0aW9uIHNldEF1dG9GcmVlemUgKHZhbHVlKSB7XG4gIHRoaXMuYXV0b0ZyZWV6ZSA9IHZhbHVlO1xufTtcblxuSW1tZXIucHJvdG90eXBlLnNldFVzZVByb3hpZXMgPSBmdW5jdGlvbiBzZXRVc2VQcm94aWVzICh2YWx1ZSkge1xuICB0aGlzLnVzZVByb3hpZXMgPSB2YWx1ZTtcbiAgYXNzaWduKHRoaXMsIHZhbHVlID8gbW9kZXJuUHJveHkgOiBsZWdhY3lQcm94eSk7XG59O1xuXG5JbW1lci5wcm90b3R5cGUuYXBwbHlQYXRjaGVzID0gZnVuY3Rpb24gYXBwbHlQYXRjaGVzJDEgKGJhc2UsIHBhdGNoZXMpIHtcbiAgLy8gTXV0YXRlIHRoZSBiYXNlIHN0YXRlIHdoZW4gYSBkcmFmdCBpcyBwYXNzZWQuXG4gIGlmIChpc0RyYWZ0KGJhc2UpKSB7XG4gICAgcmV0dXJuIGFwcGx5UGF0Y2hlcyhiYXNlLCBwYXRjaGVzKTtcbiAgfSAvLyBPdGhlcndpc2UsIHByb2R1Y2UgYSBjb3B5IG9mIHRoZSBiYXNlIHN0YXRlLlxuXG5cbiAgcmV0dXJuIHRoaXMucHJvZHVjZShiYXNlLCBmdW5jdGlvbiAoZHJhZnQpIHsgcmV0dXJuIGFwcGx5UGF0Y2hlcyhkcmFmdCwgcGF0Y2hlcyk7IH0pO1xufTtcbi8qKiBAaW50ZXJuYWwgKi9cblxuXG5JbW1lci5wcm90b3R5cGUucHJvY2Vzc1Jlc3VsdCA9IGZ1bmN0aW9uIHByb2Nlc3NSZXN1bHQgKHJlc3VsdCwgc2NvcGUpIHtcbiAgdmFyIGJhc2VEcmFmdCA9IHNjb3BlLmRyYWZ0c1swXTtcbiAgdmFyIGlzUmVwbGFjZWQgPSByZXN1bHQgIT09IHVuZGVmaW5lZCAmJiByZXN1bHQgIT09IGJhc2VEcmFmdDtcbiAgdGhpcy53aWxsRmluYWxpemUoc2NvcGUsIHJlc3VsdCwgaXNSZXBsYWNlZCk7XG5cbiAgaWYgKGlzUmVwbGFjZWQpIHtcbiAgICBpZiAoYmFzZURyYWZ0W0RSQUZUX1NUQVRFXS5tb2RpZmllZCkge1xuICAgICAgc2NvcGUucmV2b2tlKCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBbiBpbW1lciBwcm9kdWNlciByZXR1cm5lZCBhIG5ldyB2YWx1ZSAqYW5kKiBtb2RpZmllZCBpdHMgZHJhZnQuIEVpdGhlciByZXR1cm4gYSBuZXcgdmFsdWUgKm9yKiBtb2RpZnkgdGhlIGRyYWZ0LlwiKTsgLy8gcHJldHRpZXItaWdub3JlXG4gICAgfVxuXG4gICAgaWYgKGlzRHJhZnRhYmxlKHJlc3VsdCkpIHtcbiAgICAgIC8vIEZpbmFsaXplIHRoZSByZXN1bHQgaW4gY2FzZSBpdCBjb250YWlucyAob3IgaXMpIGEgc3Vic2V0IG9mIHRoZSBkcmFmdC5cbiAgICAgIHJlc3VsdCA9IHRoaXMuZmluYWxpemUocmVzdWx0LCBudWxsLCBzY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKHNjb3BlLnBhdGNoZXMpIHtcbiAgICAgIHNjb3BlLnBhdGNoZXMucHVzaCh7XG4gICAgICAgIG9wOiBcInJlcGxhY2VcIixcbiAgICAgICAgcGF0aDogW10sXG4gICAgICAgIHZhbHVlOiByZXN1bHRcbiAgICAgIH0pO1xuICAgICAgc2NvcGUuaW52ZXJzZVBhdGNoZXMucHVzaCh7XG4gICAgICAgIG9wOiBcInJlcGxhY2VcIixcbiAgICAgICAgcGF0aDogW10sXG4gICAgICAgIHZhbHVlOiBiYXNlRHJhZnRbRFJBRlRfU1RBVEVdLmJhc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBGaW5hbGl6ZSB0aGUgYmFzZSBkcmFmdC5cbiAgICByZXN1bHQgPSB0aGlzLmZpbmFsaXplKGJhc2VEcmFmdCwgW10sIHNjb3BlKTtcbiAgfVxuXG4gIHNjb3BlLnJldm9rZSgpO1xuXG4gIGlmIChzY29wZS5wYXRjaGVzKSB7XG4gICAgc2NvcGUucGF0Y2hMaXN0ZW5lcihzY29wZS5wYXRjaGVzLCBzY29wZS5pbnZlcnNlUGF0Y2hlcyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0ICE9PSBOT1RISU5HID8gcmVzdWx0IDogdW5kZWZpbmVkO1xufTtcbi8qKlxuICogQGludGVybmFsXG4gKiBGaW5hbGl6ZSBhIGRyYWZ0LCByZXR1cm5pbmcgZWl0aGVyIHRoZSB1bm1vZGlmaWVkIGJhc2Ugc3RhdGUgb3IgYSBtb2RpZmllZFxuICogY29weSBvZiB0aGUgYmFzZSBzdGF0ZS5cbiAqL1xuXG5cbkltbWVyLnByb3RvdHlwZS5maW5hbGl6ZSA9IGZ1bmN0aW9uIGZpbmFsaXplIChkcmFmdCwgcGF0aCwgc2NvcGUpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgc3RhdGUgPSBkcmFmdFtEUkFGVF9TVEFURV07XG5cbiAgaWYgKCFzdGF0ZSkge1xuICAgIGlmIChPYmplY3QuaXNGcm96ZW4oZHJhZnQpKSB7IHJldHVybiBkcmFmdDsgfVxuICAgIHJldHVybiB0aGlzLmZpbmFsaXplVHJlZShkcmFmdCwgbnVsbCwgc2NvcGUpO1xuICB9IC8vIE5ldmVyIGZpbmFsaXplIGRyYWZ0cyBvd25lZCBieSBhbm90aGVyIHNjb3BlLlxuXG5cbiAgaWYgKHN0YXRlLnNjb3BlICE9PSBzY29wZSkge1xuICAgIHJldHVybiBkcmFmdDtcbiAgfVxuXG4gIGlmICghc3RhdGUubW9kaWZpZWQpIHtcbiAgICByZXR1cm4gc3RhdGUuYmFzZTtcbiAgfVxuXG4gIGlmICghc3RhdGUuZmluYWxpemVkKSB7XG4gICAgc3RhdGUuZmluYWxpemVkID0gdHJ1ZTtcbiAgICB0aGlzLmZpbmFsaXplVHJlZShzdGF0ZS5kcmFmdCwgcGF0aCwgc2NvcGUpO1xuXG4gICAgaWYgKHRoaXMub25EZWxldGUpIHtcbiAgICAgIC8vIFRoZSBgYXNzaWduZWRgIG9iamVjdCBpcyB1bnJlbGlhYmxlIHdpdGggRVM1IGRyYWZ0cy5cbiAgICAgIGlmICh0aGlzLnVzZVByb3hpZXMpIHtcbiAgICAgICAgdmFyIGFzc2lnbmVkID0gc3RhdGUuYXNzaWduZWQ7XG5cbiAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBhc3NpZ25lZCkge1xuICAgICAgICAgIGlmICghYXNzaWduZWRbcHJvcF0pIHsgdGhpcy5vbkRlbGV0ZShzdGF0ZSwgcHJvcCk7IH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGJhc2UgPSBzdGF0ZS5iYXNlO1xuICAgICAgICAgIHZhciBjb3B5ID0gc3RhdGUuY29weTtcbiAgICAgICAgZWFjaChiYXNlLCBmdW5jdGlvbiAocHJvcCkge1xuICAgICAgICAgIGlmICghaGFzKGNvcHksIHByb3ApKSB7IHRoaXMkMS5vbkRlbGV0ZShzdGF0ZSwgcHJvcCk7IH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub25Db3B5KSB7XG4gICAgICB0aGlzLm9uQ29weShzdGF0ZSk7XG4gICAgfSAvLyBBdCB0aGlzIHBvaW50LCBhbGwgZGVzY2VuZGFudHMgb2YgYHN0YXRlLmNvcHlgIGhhdmUgYmVlbiBmaW5hbGl6ZWQsXG4gICAgLy8gc28gd2UgY2FuIGJlIHN1cmUgdGhhdCBgc2NvcGUuY2FuQXV0b0ZyZWV6ZWAgaXMgYWNjdXJhdGUuXG5cblxuICAgIGlmICh0aGlzLmF1dG9GcmVlemUgJiYgc2NvcGUuY2FuQXV0b0ZyZWV6ZSkge1xuICAgICAgT2JqZWN0LmZyZWV6ZShzdGF0ZS5jb3B5KTtcbiAgICB9XG5cbiAgICBpZiAocGF0aCAmJiBzY29wZS5wYXRjaGVzKSB7XG4gICAgICBnZW5lcmF0ZVBhdGNoZXMoc3RhdGUsIHBhdGgsIHNjb3BlLnBhdGNoZXMsIHNjb3BlLmludmVyc2VQYXRjaGVzKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGUuY29weTtcbn07XG4vKipcbiAqIEBpbnRlcm5hbFxuICogRmluYWxpemUgYWxsIGRyYWZ0cyBpbiB0aGUgZ2l2ZW4gc3RhdGUgdHJlZS5cbiAqL1xuXG5cbkltbWVyLnByb3RvdHlwZS5maW5hbGl6ZVRyZWUgPSBmdW5jdGlvbiBmaW5hbGl6ZVRyZWUgKHJvb3QsIHJvb3RQYXRoLCBzY29wZSkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHZhciBzdGF0ZSA9IHJvb3RbRFJBRlRfU1RBVEVdO1xuXG4gIGlmIChzdGF0ZSkge1xuICAgIGlmICghdGhpcy51c2VQcm94aWVzKSB7XG4gICAgICAvLyBDcmVhdGUgdGhlIGZpbmFsIGNvcHksIHdpdGggYWRkZWQga2V5cyBhbmQgd2l0aG91dCBkZWxldGVkIGtleXMuXG4gICAgICBzdGF0ZS5jb3B5ID0gc2hhbGxvd0NvcHkoc3RhdGUuZHJhZnQsIHRydWUpO1xuICAgIH1cblxuICAgIHJvb3QgPSBzdGF0ZS5jb3B5O1xuICB9XG5cbiAgdmFyIG5lZWRQYXRjaGVzID0gISFyb290UGF0aCAmJiAhIXNjb3BlLnBhdGNoZXM7XG5cbiAgdmFyIGZpbmFsaXplUHJvcGVydHkgPSBmdW5jdGlvbiAocHJvcCwgdmFsdWUsIHBhcmVudCkge1xuICAgIGlmICh2YWx1ZSA9PT0gcGFyZW50KSB7XG4gICAgICB0aHJvdyBFcnJvcihcIkltbWVyIGZvcmJpZHMgY2lyY3VsYXIgcmVmZXJlbmNlc1wiKTtcbiAgICB9IC8vIEluIHRoZSBgZmluYWxpemVUcmVlYCBtZXRob2QsIG9ubHkgdGhlIGByb290YCBvYmplY3QgbWF5IGJlIGEgZHJhZnQuXG5cblxuICAgIHZhciBpc0RyYWZ0UHJvcCA9ICEhc3RhdGUgJiYgcGFyZW50ID09PSByb290O1xuXG4gICAgaWYgKGlzRHJhZnQodmFsdWUpKSB7XG4gICAgICB2YXIgcGF0aCA9IGlzRHJhZnRQcm9wICYmIG5lZWRQYXRjaGVzICYmICFzdGF0ZS5hc3NpZ25lZFtwcm9wXSA/IHJvb3RQYXRoLmNvbmNhdChwcm9wKSA6IG51bGw7IC8vIERyYWZ0cyBvd25lZCBieSBgc2NvcGVgIGFyZSBmaW5hbGl6ZWQgaGVyZS5cblxuICAgICAgdmFsdWUgPSB0aGlzJDEuZmluYWxpemUodmFsdWUsIHBhdGgsIHNjb3BlKTsgLy8gRHJhZnRzIGZyb20gYW5vdGhlciBzY29wZSBtdXN0IHByZXZlbnQgYXV0by1mcmVlemluZy5cblxuICAgICAgaWYgKGlzRHJhZnQodmFsdWUpKSB7XG4gICAgICAgIHNjb3BlLmNhbkF1dG9GcmVlemUgPSBmYWxzZTtcbiAgICAgIH0gLy8gUHJlc2VydmUgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cblxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJlbnQpIHx8IGlzRW51bWVyYWJsZShwYXJlbnQsIHByb3ApKSB7XG4gICAgICAgIHBhcmVudFtwcm9wXSA9IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHBhcmVudCwgcHJvcCwge1xuICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gLy8gVW5jaGFuZ2VkIGRyYWZ0cyBhcmUgbmV2ZXIgcGFzc2VkIHRvIHRoZSBgb25Bc3NpZ25gIGhvb2suXG5cblxuICAgICAgaWYgKGlzRHJhZnRQcm9wICYmIHZhbHVlID09PSBzdGF0ZS5iYXNlW3Byb3BdKSB7IHJldHVybjsgfVxuICAgIH0gLy8gVW5jaGFuZ2VkIGRyYWZ0IHByb3BlcnRpZXMgYXJlIGlnbm9yZWQuXG4gICAgZWxzZSBpZiAoaXNEcmFmdFByb3AgJiYgaXModmFsdWUsIHN0YXRlLmJhc2VbcHJvcF0pKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gU2VhcmNoIG5ldyBvYmplY3RzIGZvciB1bmZpbmFsaXplZCBkcmFmdHMuIEZyb3plbiBvYmplY3RzIHNob3VsZCBuZXZlciBjb250YWluIGRyYWZ0cy5cbiAgICAgIGVsc2UgaWYgKGlzRHJhZnRhYmxlKHZhbHVlKSAmJiAhT2JqZWN0LmlzRnJvemVuKHZhbHVlKSkge1xuICAgICAgICAgIGVhY2godmFsdWUsIGZpbmFsaXplUHJvcGVydHkpO1xuICAgICAgICB9XG5cbiAgICBpZiAoaXNEcmFmdFByb3AgJiYgdGhpcyQxLm9uQXNzaWduKSB7XG4gICAgICB0aGlzJDEub25Bc3NpZ24oc3RhdGUsIHByb3AsIHZhbHVlKTtcbiAgICB9XG4gIH07XG5cbiAgZWFjaChyb290LCBmaW5hbGl6ZVByb3BlcnR5KTtcbiAgcmV0dXJuIHJvb3Q7XG59O1xuXG52YXIgaW1tZXIgPSBuZXcgSW1tZXIoKTtcbi8qKlxuICogVGhlIGBwcm9kdWNlYCBmdW5jdGlvbiB0YWtlcyBhIHZhbHVlIGFuZCBhIFwicmVjaXBlIGZ1bmN0aW9uXCIgKHdob3NlXG4gKiByZXR1cm4gdmFsdWUgb2Z0ZW4gZGVwZW5kcyBvbiB0aGUgYmFzZSBzdGF0ZSkuIFRoZSByZWNpcGUgZnVuY3Rpb24gaXNcbiAqIGZyZWUgdG8gbXV0YXRlIGl0cyBmaXJzdCBhcmd1bWVudCBob3dldmVyIGl0IHdhbnRzLiBBbGwgbXV0YXRpb25zIGFyZVxuICogb25seSBldmVyIGFwcGxpZWQgdG8gYSBfX2NvcHlfXyBvZiB0aGUgYmFzZSBzdGF0ZS5cbiAqXG4gKiBQYXNzIG9ubHkgYSBmdW5jdGlvbiB0byBjcmVhdGUgYSBcImN1cnJpZWQgcHJvZHVjZXJcIiB3aGljaCByZWxpZXZlcyB5b3VcbiAqIGZyb20gcGFzc2luZyB0aGUgcmVjaXBlIGZ1bmN0aW9uIGV2ZXJ5IHRpbWUuXG4gKlxuICogT25seSBwbGFpbiBvYmplY3RzIGFuZCBhcnJheXMgYXJlIG1hZGUgbXV0YWJsZS4gQWxsIG90aGVyIG9iamVjdHMgYXJlXG4gKiBjb25zaWRlcmVkIHVuY29weWFibGUuXG4gKlxuICogTm90ZTogVGhpcyBmdW5jdGlvbiBpcyBfX2JvdW5kX18gdG8gaXRzIGBJbW1lcmAgaW5zdGFuY2UuXG4gKlxuICogQHBhcmFtIHthbnl9IGJhc2UgLSB0aGUgaW5pdGlhbCBzdGF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJvZHVjZXIgLSBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIGEgcHJveHkgb2YgdGhlIGJhc2Ugc3RhdGUgYXMgZmlyc3QgYXJndW1lbnQgYW5kIHdoaWNoIGNhbiBiZSBmcmVlbHkgbW9kaWZpZWRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhdGNoTGlzdGVuZXIgLSBvcHRpb25hbCBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggYWxsIHRoZSBwYXRjaGVzIHByb2R1Y2VkIGhlcmVcbiAqIEByZXR1cm5zIHthbnl9IGEgbmV3IHN0YXRlLCBvciB0aGUgaW5pdGlhbCBzdGF0ZSBpZiBub3RoaW5nIHdhcyBtb2RpZmllZFxuICovXG5cbnZhciBwcm9kdWNlID0gaW1tZXIucHJvZHVjZTtcbi8qKlxuICogUGFzcyB0cnVlIHRvIGF1dG9tYXRpY2FsbHkgZnJlZXplIGFsbCBjb3BpZXMgY3JlYXRlZCBieSBJbW1lci5cbiAqXG4gKiBCeSBkZWZhdWx0LCBhdXRvLWZyZWV6aW5nIGlzIGRpc2FibGVkIGluIHByb2R1Y3Rpb24uXG4gKi9cblxudmFyIHNldEF1dG9GcmVlemUgPSBpbW1lci5zZXRBdXRvRnJlZXplLmJpbmQoaW1tZXIpO1xuLyoqXG4gKiBQYXNzIHRydWUgdG8gdXNlIHRoZSBFUzIwMTUgYFByb3h5YCBjbGFzcyB3aGVuIGNyZWF0aW5nIGRyYWZ0cywgd2hpY2ggaXNcbiAqIGFsd2F5cyBmYXN0ZXIgdGhhbiB1c2luZyBFUzUgcHJveGllcy5cbiAqXG4gKiBCeSBkZWZhdWx0LCBmZWF0dXJlIGRldGVjdGlvbiBpcyB1c2VkLCBzbyBjYWxsaW5nIHRoaXMgaXMgcmFyZWx5IG5lY2Vzc2FyeS5cbiAqL1xuXG52YXIgc2V0VXNlUHJveGllcyA9IGltbWVyLnNldFVzZVByb3hpZXMuYmluZChpbW1lcik7XG4vKipcbiAqIEFwcGx5IGFuIGFycmF5IG9mIEltbWVyIHBhdGNoZXMgdG8gdGhlIGZpcnN0IGFyZ3VtZW50LlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gaXMgYSBwcm9kdWNlciwgd2hpY2ggbWVhbnMgY29weS1vbi13cml0ZSBpcyBpbiBlZmZlY3QuXG4gKi9cblxudmFyIGFwcGx5UGF0Y2hlcyQxID0gaW1tZXIuYXBwbHlQYXRjaGVzLmJpbmQoaW1tZXIpO1xuLyoqXG4gKiBDcmVhdGUgYW4gSW1tZXIgZHJhZnQgZnJvbSB0aGUgZ2l2ZW4gYmFzZSBzdGF0ZSwgd2hpY2ggbWF5IGJlIGEgZHJhZnQgaXRzZWxmLlxuICogVGhlIGRyYWZ0IGNhbiBiZSBtb2RpZmllZCB1bnRpbCB5b3UgZmluYWxpemUgaXQgd2l0aCB0aGUgYGZpbmlzaERyYWZ0YCBmdW5jdGlvbi5cbiAqL1xuXG52YXIgY3JlYXRlRHJhZnQgPSBpbW1lci5jcmVhdGVEcmFmdC5iaW5kKGltbWVyKTtcbi8qKlxuICogRmluYWxpemUgYW4gSW1tZXIgZHJhZnQgZnJvbSBhIGBjcmVhdGVEcmFmdGAgY2FsbCwgcmV0dXJuaW5nIHRoZSBiYXNlIHN0YXRlXG4gKiAoaWYgbm8gY2hhbmdlcyB3ZXJlIG1hZGUpIG9yIGEgbW9kaWZpZWQgY29weS4gVGhlIGRyYWZ0IG11c3QgKm5vdCogYmVcbiAqIG11dGF0ZWQgYWZ0ZXJ3YXJkcy5cbiAqXG4gKiBQYXNzIGEgZnVuY3Rpb24gYXMgdGhlIDJuZCBhcmd1bWVudCB0byBnZW5lcmF0ZSBJbW1lciBwYXRjaGVzIGJhc2VkIG9uIHRoZVxuICogY2hhbmdlcyB0aGF0IHdlcmUgbWFkZS5cbiAqL1xuXG52YXIgZmluaXNoRHJhZnQgPSBpbW1lci5maW5pc2hEcmFmdC5iaW5kKGltbWVyKTtcblxuZXhwb3J0IGRlZmF1bHQgcHJvZHVjZTtcbmV4cG9ydCB7IEltbWVyLCBhcHBseVBhdGNoZXMkMSBhcyBhcHBseVBhdGNoZXMsIGNyZWF0ZURyYWZ0LCBmaW5pc2hEcmFmdCwgRFJBRlRBQkxFIGFzIGltbWVyYWJsZSwgaXNEcmFmdCwgaXNEcmFmdGFibGUsIE5PVEhJTkcgYXMgbm90aGluZywgb3JpZ2luYWwsIHByb2R1Y2UsIHNldEF1dG9GcmVlemUsIHNldFVzZVByb3hpZXMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWltbWVyLm1vZHVsZS5qcy5tYXBcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJyZXNldFdhcm5lZFwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfd2FybmluZy5yZXNldFdhcm5lZDtcbiAgfVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF93YXJuaW5nID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJjLXV0aWwvbGliL3dhcm5pbmdcIikpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgX2RlZmF1bHQgPSBmdW5jdGlvbiBfZGVmYXVsdCh2YWxpZCwgY29tcG9uZW50LCBtZXNzYWdlKSB7XG4gICgwLCBfd2FybmluZ1tcImRlZmF1bHRcIl0pKHZhbGlkLCBcIlthbnRkOiBcIi5jb25jYXQoY29tcG9uZW50LCBcIl0gXCIpLmNvbmNhdChtZXNzYWdlKSk7XG59O1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsInZhciBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlID0gcmVxdWlyZShcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiKTtcblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpO1xuICB2YXIga2V5LCBpO1xuXG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTtcbiAgICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlO1xuICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcztcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiLCJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICByZXR1cm4gQ29uc3RydWN0b3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZUNsYXNzO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyIsInZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL3NldFByb3RvdHlwZU9mLmpzXCIpO1xuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogc3ViQ2xhc3MsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH1cbiAgfSk7XG4gIGlmIChzdXBlckNsYXNzKSBzZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2luaGVyaXRzO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyIsInZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL2dldFByb3RvdHlwZU9mLmpzXCIpO1xuXG52YXIgaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gcmVxdWlyZShcIi4vaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzXCIpO1xuXG52YXIgcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiA9IHJlcXVpcmUoXCIuL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanNcIik7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7XG4gIHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7XG4gIHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHtcbiAgICB2YXIgU3VwZXIgPSBnZXRQcm90b3R5cGVPZihEZXJpdmVkKSxcbiAgICAgICAgcmVzdWx0O1xuXG4gICAgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHtcbiAgICAgIHZhciBOZXdUYXJnZXQgPSBnZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjtcbiAgICAgIHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfY3JlYXRlU3VwZXI7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGlzRnJhZ21lbnQgfSBmcm9tICdyZWFjdC1pcyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0FycmF5KGNoaWxkcmVuKSB7XG4gIHZhciBvcHRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICB2YXIgcmV0ID0gW107XG4gIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIGlmICgoY2hpbGQgPT09IHVuZGVmaW5lZCB8fCBjaGlsZCA9PT0gbnVsbCkgJiYgIW9wdGlvbi5rZWVwRW1wdHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZCkpIHtcbiAgICAgIHJldCA9IHJldC5jb25jYXQodG9BcnJheShjaGlsZCkpO1xuICAgIH0gZWxzZSBpZiAoaXNGcmFnbWVudChjaGlsZCkgJiYgY2hpbGQucHJvcHMpIHtcbiAgICAgIHJldCA9IHJldC5jb25jYXQodG9BcnJheShjaGlsZC5wcm9wcy5jaGlsZHJlbiwgb3B0aW9uKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldC5wdXNoKGNoaWxkKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmV0O1xufSIsInZhciBTVEFSVF9FVkVOVF9OQU1FX01BUCA9IHtcbiAgdHJhbnNpdGlvbnN0YXJ0OiB7XG4gICAgdHJhbnNpdGlvbjogJ3RyYW5zaXRpb25zdGFydCcsXG4gICAgV2Via2l0VHJhbnNpdGlvbjogJ3dlYmtpdFRyYW5zaXRpb25TdGFydCcsXG4gICAgTW96VHJhbnNpdGlvbjogJ21velRyYW5zaXRpb25TdGFydCcsXG4gICAgT1RyYW5zaXRpb246ICdvVHJhbnNpdGlvblN0YXJ0JyxcbiAgICBtc1RyYW5zaXRpb246ICdNU1RyYW5zaXRpb25TdGFydCdcbiAgfSxcblxuICBhbmltYXRpb25zdGFydDoge1xuICAgIGFuaW1hdGlvbjogJ2FuaW1hdGlvbnN0YXJ0JyxcbiAgICBXZWJraXRBbmltYXRpb246ICd3ZWJraXRBbmltYXRpb25TdGFydCcsXG4gICAgTW96QW5pbWF0aW9uOiAnbW96QW5pbWF0aW9uU3RhcnQnLFxuICAgIE9BbmltYXRpb246ICdvQW5pbWF0aW9uU3RhcnQnLFxuICAgIG1zQW5pbWF0aW9uOiAnTVNBbmltYXRpb25TdGFydCdcbiAgfVxufTtcblxudmFyIEVORF9FVkVOVF9OQU1FX01BUCA9IHtcbiAgdHJhbnNpdGlvbmVuZDoge1xuICAgIHRyYW5zaXRpb246ICd0cmFuc2l0aW9uZW5kJyxcbiAgICBXZWJraXRUcmFuc2l0aW9uOiAnd2Via2l0VHJhbnNpdGlvbkVuZCcsXG4gICAgTW96VHJhbnNpdGlvbjogJ21velRyYW5zaXRpb25FbmQnLFxuICAgIE9UcmFuc2l0aW9uOiAnb1RyYW5zaXRpb25FbmQnLFxuICAgIG1zVHJhbnNpdGlvbjogJ01TVHJhbnNpdGlvbkVuZCdcbiAgfSxcblxuICBhbmltYXRpb25lbmQ6IHtcbiAgICBhbmltYXRpb246ICdhbmltYXRpb25lbmQnLFxuICAgIFdlYmtpdEFuaW1hdGlvbjogJ3dlYmtpdEFuaW1hdGlvbkVuZCcsXG4gICAgTW96QW5pbWF0aW9uOiAnbW96QW5pbWF0aW9uRW5kJyxcbiAgICBPQW5pbWF0aW9uOiAnb0FuaW1hdGlvbkVuZCcsXG4gICAgbXNBbmltYXRpb246ICdNU0FuaW1hdGlvbkVuZCdcbiAgfVxufTtcblxudmFyIHN0YXJ0RXZlbnRzID0gW107XG52YXIgZW5kRXZlbnRzID0gW107XG5cbmZ1bmN0aW9uIGRldGVjdEV2ZW50cygpIHtcbiAgdmFyIHRlc3RFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICB2YXIgc3R5bGUgPSB0ZXN0RWwuc3R5bGU7XG5cbiAgaWYgKCEoJ0FuaW1hdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7XG4gICAgZGVsZXRlIFNUQVJUX0VWRU5UX05BTUVfTUFQLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbjtcbiAgICBkZWxldGUgRU5EX0VWRU5UX05BTUVfTUFQLmFuaW1hdGlvbmVuZC5hbmltYXRpb247XG4gIH1cblxuICBpZiAoISgnVHJhbnNpdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7XG4gICAgZGVsZXRlIFNUQVJUX0VWRU5UX05BTUVfTUFQLnRyYW5zaXRpb25zdGFydC50cmFuc2l0aW9uO1xuICAgIGRlbGV0ZSBFTkRfRVZFTlRfTkFNRV9NQVAudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gcHJvY2VzcyhFVkVOVF9OQU1FX01BUCwgZXZlbnRzKSB7XG4gICAgZm9yICh2YXIgYmFzZUV2ZW50TmFtZSBpbiBFVkVOVF9OQU1FX01BUCkge1xuICAgICAgaWYgKEVWRU5UX05BTUVfTUFQLmhhc093blByb3BlcnR5KGJhc2VFdmVudE5hbWUpKSB7XG4gICAgICAgIHZhciBiYXNlRXZlbnRzID0gRVZFTlRfTkFNRV9NQVBbYmFzZUV2ZW50TmFtZV07XG4gICAgICAgIGZvciAodmFyIHN0eWxlTmFtZSBpbiBiYXNlRXZlbnRzKSB7XG4gICAgICAgICAgaWYgKHN0eWxlTmFtZSBpbiBzdHlsZSkge1xuICAgICAgICAgICAgZXZlbnRzLnB1c2goYmFzZUV2ZW50c1tzdHlsZU5hbWVdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3MoU1RBUlRfRVZFTlRfTkFNRV9NQVAsIHN0YXJ0RXZlbnRzKTtcbiAgcHJvY2VzcyhFTkRfRVZFTlRfTkFNRV9NQVAsIGVuZEV2ZW50cyk7XG59XG5cbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gIGRldGVjdEV2ZW50cygpO1xufVxuXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TmFtZSwgZXZlbnRMaXN0ZW5lcikge1xuICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBldmVudExpc3RlbmVyLCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnROYW1lLCBldmVudExpc3RlbmVyKSB7XG4gIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGV2ZW50TGlzdGVuZXIsIGZhbHNlKTtcbn1cblxudmFyIFRyYW5zaXRpb25FdmVudHMgPSB7XG4gIC8vIFN0YXJ0IGV2ZW50c1xuICBzdGFydEV2ZW50czogc3RhcnRFdmVudHMsXG5cbiAgYWRkU3RhcnRFdmVudExpc3RlbmVyOiBmdW5jdGlvbiBhZGRTdGFydEV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnRMaXN0ZW5lcikge1xuICAgIGlmIChzdGFydEV2ZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGV2ZW50TGlzdGVuZXIsIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdGFydEV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzdGFydEV2ZW50KSB7XG4gICAgICBhZGRFdmVudExpc3RlbmVyKG5vZGUsIHN0YXJ0RXZlbnQsIGV2ZW50TGlzdGVuZXIpO1xuICAgIH0pO1xuICB9LFxuICByZW1vdmVTdGFydEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uIHJlbW92ZVN0YXJ0RXZlbnRMaXN0ZW5lcihub2RlLCBldmVudExpc3RlbmVyKSB7XG4gICAgaWYgKHN0YXJ0RXZlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdGFydEV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzdGFydEV2ZW50KSB7XG4gICAgICByZW1vdmVFdmVudExpc3RlbmVyKG5vZGUsIHN0YXJ0RXZlbnQsIGV2ZW50TGlzdGVuZXIpO1xuICAgIH0pO1xuICB9LFxuXG5cbiAgLy8gRW5kIGV2ZW50c1xuICBlbmRFdmVudHM6IGVuZEV2ZW50cyxcblxuICBhZGRFbmRFdmVudExpc3RlbmVyOiBmdW5jdGlvbiBhZGRFbmRFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TGlzdGVuZXIpIHtcbiAgICBpZiAoZW5kRXZlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoZXZlbnRMaXN0ZW5lciwgMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVuZEV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbmRFdmVudCkge1xuICAgICAgYWRkRXZlbnRMaXN0ZW5lcihub2RlLCBlbmRFdmVudCwgZXZlbnRMaXN0ZW5lcik7XG4gICAgfSk7XG4gIH0sXG4gIHJlbW92ZUVuZEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uIHJlbW92ZUVuZEV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnRMaXN0ZW5lcikge1xuICAgIGlmIChlbmRFdmVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVuZEV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbmRFdmVudCkge1xuICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlLCBlbmRFdmVudCwgZXZlbnRMaXN0ZW5lcik7XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRyYW5zaXRpb25FdmVudHM7IiwiaW1wb3J0IF90eXBlb2YgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZic7XG5pbXBvcnQgRXZlbnQgZnJvbSAnLi9FdmVudCc7XG5pbXBvcnQgY2xhc3NlcyBmcm9tICdjb21wb25lbnQtY2xhc3Nlcyc7XG5cbnZhciBpc0Nzc0FuaW1hdGlvblN1cHBvcnRlZCA9IEV2ZW50LmVuZEV2ZW50cy5sZW5ndGggIT09IDA7XG52YXIgY2FwaXRhbFByZWZpeGVzID0gWydXZWJraXQnLCAnTW96JywgJ08nLFxuLy8gbXMgaXMgc3BlY2lhbCAuLi4uICFcbidtcyddO1xudmFyIHByZWZpeGVzID0gWyctd2Via2l0LScsICctbW96LScsICctby0nLCAnbXMtJywgJyddO1xuXG5mdW5jdGlvbiBnZXRTdHlsZVByb3BlcnR5KG5vZGUsIG5hbWUpIHtcbiAgLy8gb2xkIGZmIG5lZWQgbnVsbCwgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dpbmRvdy9nZXRDb21wdXRlZFN0eWxlXG4gIHZhciBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG5vZGUsIG51bGwpO1xuICB2YXIgcmV0ID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICByZXQgPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHByZWZpeGVzW2ldICsgbmFtZSk7XG4gICAgaWYgKHJldCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGZpeEJyb3dzZXJCeVRpbWVvdXQobm9kZSkge1xuICBpZiAoaXNDc3NBbmltYXRpb25TdXBwb3J0ZWQpIHtcbiAgICB2YXIgdHJhbnNpdGlvbkRlbGF5ID0gcGFyc2VGbG9hdChnZXRTdHlsZVByb3BlcnR5KG5vZGUsICd0cmFuc2l0aW9uLWRlbGF5JykpIHx8IDA7XG4gICAgdmFyIHRyYW5zaXRpb25EdXJhdGlvbiA9IHBhcnNlRmxvYXQoZ2V0U3R5bGVQcm9wZXJ0eShub2RlLCAndHJhbnNpdGlvbi1kdXJhdGlvbicpKSB8fCAwO1xuICAgIHZhciBhbmltYXRpb25EZWxheSA9IHBhcnNlRmxvYXQoZ2V0U3R5bGVQcm9wZXJ0eShub2RlLCAnYW5pbWF0aW9uLWRlbGF5JykpIHx8IDA7XG4gICAgdmFyIGFuaW1hdGlvbkR1cmF0aW9uID0gcGFyc2VGbG9hdChnZXRTdHlsZVByb3BlcnR5KG5vZGUsICdhbmltYXRpb24tZHVyYXRpb24nKSkgfHwgMDtcbiAgICB2YXIgdGltZSA9IE1hdGgubWF4KHRyYW5zaXRpb25EdXJhdGlvbiArIHRyYW5zaXRpb25EZWxheSwgYW5pbWF0aW9uRHVyYXRpb24gKyBhbmltYXRpb25EZWxheSk7XG4gICAgLy8gc29tZXRpbWVzLCBicm93c2VyIGJ1Z1xuICAgIG5vZGUucmNFbmRBbmltVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgbm9kZS5yY0VuZEFuaW1UaW1lb3V0ID0gbnVsbDtcbiAgICAgIGlmIChub2RlLnJjRW5kTGlzdGVuZXIpIHtcbiAgICAgICAgbm9kZS5yY0VuZExpc3RlbmVyKCk7XG4gICAgICB9XG4gICAgfSwgdGltZSAqIDEwMDAgKyAyMDApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFyQnJvd3NlckJ1Z1RpbWVvdXQobm9kZSkge1xuICBpZiAobm9kZS5yY0VuZEFuaW1UaW1lb3V0KSB7XG4gICAgY2xlYXJUaW1lb3V0KG5vZGUucmNFbmRBbmltVGltZW91dCk7XG4gICAgbm9kZS5yY0VuZEFuaW1UaW1lb3V0ID0gbnVsbDtcbiAgfVxufVxuXG52YXIgY3NzQW5pbWF0aW9uID0gZnVuY3Rpb24gY3NzQW5pbWF0aW9uKG5vZGUsIHRyYW5zaXRpb25OYW1lLCBlbmRDYWxsYmFjaykge1xuICB2YXIgbmFtZUlzT2JqID0gKHR5cGVvZiB0cmFuc2l0aW9uTmFtZSA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YodHJhbnNpdGlvbk5hbWUpKSA9PT0gJ29iamVjdCc7XG4gIHZhciBjbGFzc05hbWUgPSBuYW1lSXNPYmogPyB0cmFuc2l0aW9uTmFtZS5uYW1lIDogdHJhbnNpdGlvbk5hbWU7XG4gIHZhciBhY3RpdmVDbGFzc05hbWUgPSBuYW1lSXNPYmogPyB0cmFuc2l0aW9uTmFtZS5hY3RpdmUgOiB0cmFuc2l0aW9uTmFtZSArICctYWN0aXZlJztcbiAgdmFyIGVuZCA9IGVuZENhbGxiYWNrO1xuICB2YXIgc3RhcnQgPSB2b2lkIDA7XG4gIHZhciBhY3RpdmUgPSB2b2lkIDA7XG4gIHZhciBub2RlQ2xhc3NlcyA9IGNsYXNzZXMobm9kZSk7XG5cbiAgaWYgKGVuZENhbGxiYWNrICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlbmRDYWxsYmFjaykgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgZW5kID0gZW5kQ2FsbGJhY2suZW5kO1xuICAgIHN0YXJ0ID0gZW5kQ2FsbGJhY2suc3RhcnQ7XG4gICAgYWN0aXZlID0gZW5kQ2FsbGJhY2suYWN0aXZlO1xuICB9XG5cbiAgaWYgKG5vZGUucmNFbmRMaXN0ZW5lcikge1xuICAgIG5vZGUucmNFbmRMaXN0ZW5lcigpO1xuICB9XG5cbiAgbm9kZS5yY0VuZExpc3RlbmVyID0gZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoZSAmJiBlLnRhcmdldCAhPT0gbm9kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChub2RlLnJjQW5pbVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dChub2RlLnJjQW5pbVRpbWVvdXQpO1xuICAgICAgbm9kZS5yY0FuaW1UaW1lb3V0ID0gbnVsbDtcbiAgICB9XG5cbiAgICBjbGVhckJyb3dzZXJCdWdUaW1lb3V0KG5vZGUpO1xuXG4gICAgbm9kZUNsYXNzZXMucmVtb3ZlKGNsYXNzTmFtZSk7XG4gICAgbm9kZUNsYXNzZXMucmVtb3ZlKGFjdGl2ZUNsYXNzTmFtZSk7XG5cbiAgICBFdmVudC5yZW1vdmVFbmRFdmVudExpc3RlbmVyKG5vZGUsIG5vZGUucmNFbmRMaXN0ZW5lcik7XG4gICAgbm9kZS5yY0VuZExpc3RlbmVyID0gbnVsbDtcblxuICAgIC8vIFVzdWFsbHkgdGhpcyBvcHRpb25hbCBlbmQgaXMgdXNlZCBmb3IgaW5mb3JtaW5nIGFuIG93bmVyIG9mXG4gICAgLy8gYSBsZWF2ZSBhbmltYXRpb24gYW5kIHRlbGxpbmcgaXQgdG8gcmVtb3ZlIHRoZSBjaGlsZC5cbiAgICBpZiAoZW5kKSB7XG4gICAgICBlbmQoKTtcbiAgICB9XG4gIH07XG5cbiAgRXZlbnQuYWRkRW5kRXZlbnRMaXN0ZW5lcihub2RlLCBub2RlLnJjRW5kTGlzdGVuZXIpO1xuXG4gIGlmIChzdGFydCkge1xuICAgIHN0YXJ0KCk7XG4gIH1cbiAgbm9kZUNsYXNzZXMuYWRkKGNsYXNzTmFtZSk7XG5cbiAgbm9kZS5yY0FuaW1UaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgbm9kZS5yY0FuaW1UaW1lb3V0ID0gbnVsbDtcbiAgICBub2RlQ2xhc3Nlcy5hZGQoYWN0aXZlQ2xhc3NOYW1lKTtcbiAgICBpZiAoYWN0aXZlKSB7XG4gICAgICBzZXRUaW1lb3V0KGFjdGl2ZSwgMCk7XG4gICAgfVxuICAgIGZpeEJyb3dzZXJCeVRpbWVvdXQobm9kZSk7XG4gICAgLy8gMzBtcyBmb3IgZmlyZWZveFxuICB9LCAzMCk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdG9wOiBmdW5jdGlvbiBzdG9wKCkge1xuICAgICAgaWYgKG5vZGUucmNFbmRMaXN0ZW5lcikge1xuICAgICAgICBub2RlLnJjRW5kTGlzdGVuZXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG5jc3NBbmltYXRpb24uc3R5bGUgPSBmdW5jdGlvbiAobm9kZSwgc3R5bGUsIGNhbGxiYWNrKSB7XG4gIGlmIChub2RlLnJjRW5kTGlzdGVuZXIpIHtcbiAgICBub2RlLnJjRW5kTGlzdGVuZXIoKTtcbiAgfVxuXG4gIG5vZGUucmNFbmRMaXN0ZW5lciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGUgJiYgZS50YXJnZXQgIT09IG5vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5yY0FuaW1UaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQobm9kZS5yY0FuaW1UaW1lb3V0KTtcbiAgICAgIG5vZGUucmNBbmltVGltZW91dCA9IG51bGw7XG4gICAgfVxuXG4gICAgY2xlYXJCcm93c2VyQnVnVGltZW91dChub2RlKTtcblxuICAgIEV2ZW50LnJlbW92ZUVuZEV2ZW50TGlzdGVuZXIobm9kZSwgbm9kZS5yY0VuZExpc3RlbmVyKTtcbiAgICBub2RlLnJjRW5kTGlzdGVuZXIgPSBudWxsO1xuXG4gICAgLy8gVXN1YWxseSB0aGlzIG9wdGlvbmFsIGNhbGxiYWNrIGlzIHVzZWQgZm9yIGluZm9ybWluZyBhbiBvd25lciBvZlxuICAgIC8vIGEgbGVhdmUgYW5pbWF0aW9uIGFuZCB0ZWxsaW5nIGl0IHRvIHJlbW92ZSB0aGUgY2hpbGQuXG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH1cbiAgfTtcblxuICBFdmVudC5hZGRFbmRFdmVudExpc3RlbmVyKG5vZGUsIG5vZGUucmNFbmRMaXN0ZW5lcik7XG5cbiAgbm9kZS5yY0FuaW1UaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgcyBpbiBzdHlsZSkge1xuICAgICAgaWYgKHN0eWxlLmhhc093blByb3BlcnR5KHMpKSB7XG4gICAgICAgIG5vZGUuc3R5bGVbc10gPSBzdHlsZVtzXTtcbiAgICAgIH1cbiAgICB9XG4gICAgbm9kZS5yY0FuaW1UaW1lb3V0ID0gbnVsbDtcbiAgICBmaXhCcm93c2VyQnlUaW1lb3V0KG5vZGUpO1xuICB9LCAwKTtcbn07XG5cbmNzc0FuaW1hdGlvbi5zZXRUcmFuc2l0aW9uID0gZnVuY3Rpb24gKG5vZGUsIHAsIHZhbHVlKSB7XG4gIHZhciBwcm9wZXJ0eSA9IHA7XG4gIHZhciB2ID0gdmFsdWU7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdiA9IHByb3BlcnR5O1xuICAgIHByb3BlcnR5ID0gJyc7XG4gIH1cbiAgcHJvcGVydHkgPSBwcm9wZXJ0eSB8fCAnJztcbiAgY2FwaXRhbFByZWZpeGVzLmZvckVhY2goZnVuY3Rpb24gKHByZWZpeCkge1xuICAgIG5vZGUuc3R5bGVbcHJlZml4ICsgJ1RyYW5zaXRpb24nICsgcHJvcGVydHldID0gdjtcbiAgfSk7XG59O1xuXG5jc3NBbmltYXRpb24uaXNDc3NBbmltYXRpb25TdXBwb3J0ZWQgPSBpc0Nzc0FuaW1hdGlvblN1cHBvcnRlZDtcblxuZXhwb3J0IHsgaXNDc3NBbmltYXRpb25TdXBwb3J0ZWQgfTtcblxuZXhwb3J0IGRlZmF1bHQgY3NzQW5pbWF0aW9uOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZ2VuZXJhdG9yLXJ1bnRpbWVcIik7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxudmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoXG4gID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICA6IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5pZiAodHlwZW9mIF9fZyA9PSAnbnVtYmVyJykgX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBkUCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIScpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwiLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMud2FybmluZyA9IHdhcm5pbmc7XG5leHBvcnRzLm5vdGUgPSBub3RlO1xuZXhwb3J0cy5yZXNldFdhcm5lZCA9IHJlc2V0V2FybmVkO1xuZXhwb3J0cy5jYWxsID0gY2FsbDtcbmV4cG9ydHMud2FybmluZ09uY2UgPSB3YXJuaW5nT25jZTtcbmV4cG9ydHMubm90ZU9uY2UgPSBub3RlT25jZTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xudmFyIHdhcm5lZCA9IHt9O1xuXG5mdW5jdGlvbiB3YXJuaW5nKHZhbGlkLCBtZXNzYWdlKSB7XG4gIC8vIFN1cHBvcnQgdWdsaWZ5XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF2YWxpZCAmJiBjb25zb2xlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiV2FybmluZzogXCIuY29uY2F0KG1lc3NhZ2UpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBub3RlKHZhbGlkLCBtZXNzYWdlKSB7XG4gIC8vIFN1cHBvcnQgdWdsaWZ5XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF2YWxpZCAmJiBjb25zb2xlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zb2xlLndhcm4oXCJOb3RlOiBcIi5jb25jYXQobWVzc2FnZSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc2V0V2FybmVkKCkge1xuICB3YXJuZWQgPSB7fTtcbn1cblxuZnVuY3Rpb24gY2FsbChtZXRob2QsIHZhbGlkLCBtZXNzYWdlKSB7XG4gIGlmICghdmFsaWQgJiYgIXdhcm5lZFttZXNzYWdlXSkge1xuICAgIG1ldGhvZChmYWxzZSwgbWVzc2FnZSk7XG4gICAgd2FybmVkW21lc3NhZ2VdID0gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3YXJuaW5nT25jZSh2YWxpZCwgbWVzc2FnZSkge1xuICBjYWxsKHdhcm5pbmcsIHZhbGlkLCBtZXNzYWdlKTtcbn1cblxuZnVuY3Rpb24gbm90ZU9uY2UodmFsaWQsIG1lc3NhZ2UpIHtcbiAgY2FsbChub3RlLCB2YWxpZCwgbWVzc2FnZSk7XG59XG5cbnZhciBfZGVmYXVsdCA9IHdhcm5pbmdPbmNlO1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF90eXBlb2YgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJyZXNldFdhcm5lZFwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfd2FybmluZy5yZXNldFdhcm5lZDtcbiAgfVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF93YXJuaW5nID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJjLXV0aWwvbGliL3dhcm5pbmdcIikpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBfZGVmYXVsdCA9IGZ1bmN0aW9uIF9kZWZhdWx0KHZhbGlkLCBjb21wb25lbnQsIG1lc3NhZ2UpIHtcbiAgKDAsIF93YXJuaW5nW1wiZGVmYXVsdFwiXSkodmFsaWQsIFwiW2FudGQ6IFwiLmNvbmNhdChjb21wb25lbnQsIFwiXSBcIikuY29uY2F0KG1lc3NhZ2UpKTtcbn07XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5yZXBsYWNlRWxlbWVudCA9IHJlcGxhY2VFbGVtZW50O1xuZXhwb3J0cy5jbG9uZUVsZW1lbnQgPSBjbG9uZUVsZW1lbnQ7XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBpc1ZhbGlkRWxlbWVudCA9IFJlYWN0LmlzVmFsaWRFbGVtZW50O1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudCA9IGlzVmFsaWRFbGVtZW50O1xuXG5mdW5jdGlvbiByZXBsYWNlRWxlbWVudChlbGVtZW50LCByZXBsYWNlbWVudCwgcHJvcHMpIHtcbiAgaWYgKCFpc1ZhbGlkRWxlbWVudChlbGVtZW50KSkgcmV0dXJuIHJlcGxhY2VtZW50O1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChlbGVtZW50LCB0eXBlb2YgcHJvcHMgPT09ICdmdW5jdGlvbicgPyBwcm9wcyhlbGVtZW50LnByb3BzIHx8IHt9KSA6IHByb3BzKTtcbn1cblxuZnVuY3Rpb24gY2xvbmVFbGVtZW50KGVsZW1lbnQsIHByb3BzKSB7XG4gIHJldHVybiByZXBsYWNlRWxlbWVudChlbGVtZW50LCBlbGVtZW50LCBwcm9wcyk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FyaXR5KG4sIGZuKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4gIHN3aXRjaCAobikge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcblxuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoYTApIHtcbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuXG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwgYTEpIHtcbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuXG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwgYTEsIGEyKSB7XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcblxuICAgIGNhc2UgNDpcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoYTAsIGExLCBhMiwgYTMpIHtcbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuXG4gICAgY2FzZSA1OlxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwgYTEsIGEyLCBhMywgYTQpIHtcbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuXG4gICAgY2FzZSA2OlxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSB7XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcblxuICAgIGNhc2UgNzpcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpIHtcbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuXG4gICAgY2FzZSA4OlxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIHtcbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuXG4gICAgY2FzZSA5OlxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSB7XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcblxuICAgIGNhc2UgMTA6XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSB7XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpcnN0IGFyZ3VtZW50IHRvIF9hcml0eSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgbm8gZ3JlYXRlciB0aGFuIHRlbicpO1xuICB9XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29udGFpbnMocm9vdCwgbikge1xuICBpZiAoIXJvb3QpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gcm9vdC5jb250YWlucyhuKTtcbn0iLCJpbXBvcnQgeyB1c2VSZWYsIHVzZUVmZmVjdCwgZm9yd2FyZFJlZiwgdXNlSW1wZXJhdGl2ZUhhbmRsZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IGNhblVzZURvbSBmcm9tICcuL0RvbS9jYW5Vc2VEb20nO1xudmFyIFBvcnRhbCA9IGZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgdmFyIGRpZFVwZGF0ZSA9IHByb3BzLmRpZFVwZGF0ZSxcbiAgICAgIGdldENvbnRhaW5lciA9IHByb3BzLmdldENvbnRhaW5lcixcbiAgICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG4gIHZhciBjb250YWluZXJSZWYgPSB1c2VSZWYoKTsgLy8gUmVmIHJldHVybiBub3RoaW5nLCBvbmx5IGZvciB3cmFwcGVyIGNoZWNrIGV4aXN0XG5cbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge307XG4gIH0pOyAvLyBDcmVhdGUgY29udGFpbmVyIGluIGNsaWVudCBzaWRlIHdpdGggc3luYyB0byBhdm9pZCB1c2VFZmZlY3Qgbm90IGdldCByZWZcblxuICB2YXIgaW5pdFJlZiA9IHVzZVJlZihmYWxzZSk7XG5cbiAgaWYgKCFpbml0UmVmLmN1cnJlbnQgJiYgY2FuVXNlRG9tKCkpIHtcbiAgICBjb250YWluZXJSZWYuY3VycmVudCA9IGdldENvbnRhaW5lcigpO1xuICAgIGluaXRSZWYuY3VycmVudCA9IHRydWU7XG4gIH0gLy8gW0xlZ2FjeV0gVXNlZCBieSBgcmMtdHJpZ2dlcmBcblxuXG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgZGlkVXBkYXRlID09PSBudWxsIHx8IGRpZFVwZGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGlkVXBkYXRlKHByb3BzKTtcbiAgfSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfY29udGFpbmVyUmVmJGN1cnJlbnQsIF9jb250YWluZXJSZWYkY3VycmVudDI7XG5cbiAgICAgIC8vIFtMZWdhY3ldIFRoaXMgc2hvdWxkIG5vdCBiZSBoYW5kbGUgYnkgUG9ydGFsIGJ1dCBwYXJlbnQgUG9ydGFsV3JhcHBlciBpbnN0ZWFkLlxuICAgICAgLy8gU2luY2Ugc29tZSBjb21wb25lbnQgdXNlIGBQb3J0YWxgIGRpcmVjdGx5LCB3ZSBoYXZlIHRvIGtlZXAgdGhlIGxvZ2ljIGhlcmUuXG4gICAgICAoX2NvbnRhaW5lclJlZiRjdXJyZW50ID0gY29udGFpbmVyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jb250YWluZXJSZWYkY3VycmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9jb250YWluZXJSZWYkY3VycmVudDIgPSBfY29udGFpbmVyUmVmJGN1cnJlbnQucGFyZW50Tm9kZSkgPT09IG51bGwgfHwgX2NvbnRhaW5lclJlZiRjdXJyZW50MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NvbnRhaW5lclJlZiRjdXJyZW50Mi5yZW1vdmVDaGlsZChjb250YWluZXJSZWYuY3VycmVudCk7XG4gICAgfTtcbiAgfSwgW10pO1xuICByZXR1cm4gY29udGFpbmVyUmVmLmN1cnJlbnQgPyBSZWFjdERPTS5jcmVhdGVQb3J0YWwoY2hpbGRyZW4sIGNvbnRhaW5lclJlZi5jdXJyZW50KSA6IG51bGw7XG59KTtcbmV4cG9ydCBkZWZhdWx0IFBvcnRhbDsiLCJpbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuXG5mdW5jdGlvbiBpc1BvaW50c0VxKGExLCBhMiwgaXNBbGlnblBvaW50KSB7XG4gIGlmIChpc0FsaWduUG9pbnQpIHtcbiAgICByZXR1cm4gYTFbMF0gPT09IGEyWzBdO1xuICB9XG5cbiAgcmV0dXJuIGExWzBdID09PSBhMlswXSAmJiBhMVsxXSA9PT0gYTJbMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGlnbkZyb21QbGFjZW1lbnQoYnVpbHRpblBsYWNlbWVudHMsIHBsYWNlbWVudFN0ciwgYWxpZ24pIHtcbiAgdmFyIGJhc2VBbGlnbiA9IGJ1aWx0aW5QbGFjZW1lbnRzW3BsYWNlbWVudFN0cl0gfHwge307XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGJhc2VBbGlnbiksIGFsaWduKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGlnblBvcHVwQ2xhc3NOYW1lKGJ1aWx0aW5QbGFjZW1lbnRzLCBwcmVmaXhDbHMsIGFsaWduLCBpc0FsaWduUG9pbnQpIHtcbiAgdmFyIHBvaW50cyA9IGFsaWduLnBvaW50cztcbiAgdmFyIHBsYWNlbWVudHMgPSBPYmplY3Qua2V5cyhidWlsdGluUGxhY2VtZW50cyk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbGFjZW1lbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdmFyIHBsYWNlbWVudCA9IHBsYWNlbWVudHNbaV07XG5cbiAgICBpZiAoaXNQb2ludHNFcShidWlsdGluUGxhY2VtZW50c1twbGFjZW1lbnRdLnBvaW50cywgcG9pbnRzLCBpc0FsaWduUG9pbnQpKSB7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1wbGFjZW1lbnQtXCIpLmNvbmNhdChwbGFjZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnJztcbn0iLCJleHBvcnQgZnVuY3Rpb24gZ2V0TW90aW9uKF9yZWYpIHtcbiAgdmFyIHByZWZpeENscyA9IF9yZWYucHJlZml4Q2xzLFxuICAgICAgbW90aW9uID0gX3JlZi5tb3Rpb24sXG4gICAgICBhbmltYXRpb24gPSBfcmVmLmFuaW1hdGlvbixcbiAgICAgIHRyYW5zaXRpb25OYW1lID0gX3JlZi50cmFuc2l0aW9uTmFtZTtcblxuICBpZiAobW90aW9uKSB7XG4gICAgcmV0dXJuIG1vdGlvbjtcbiAgfVxuXG4gIGlmIChhbmltYXRpb24pIHtcbiAgICByZXR1cm4ge1xuICAgICAgbW90aW9uTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KGFuaW1hdGlvbilcbiAgICB9O1xuICB9XG5cbiAgaWYgKHRyYW5zaXRpb25OYW1lKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vdGlvbk5hbWU6IHRyYW5zaXRpb25OYW1lXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufSIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IENTU01vdGlvbiBmcm9tICdyYy1tb3Rpb24nO1xuaW1wb3J0IHsgZ2V0TW90aW9uIH0gZnJvbSAnLi4vdXRpbHMvbGVnYWN5VXRpbCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNYXNrKHByb3BzKSB7XG4gIHZhciBwcmVmaXhDbHMgPSBwcm9wcy5wcmVmaXhDbHMsXG4gICAgICB2aXNpYmxlID0gcHJvcHMudmlzaWJsZSxcbiAgICAgIHpJbmRleCA9IHByb3BzLnpJbmRleCxcbiAgICAgIG1hc2sgPSBwcm9wcy5tYXNrLFxuICAgICAgbWFza01vdGlvbiA9IHByb3BzLm1hc2tNb3Rpb24sXG4gICAgICBtYXNrQW5pbWF0aW9uID0gcHJvcHMubWFza0FuaW1hdGlvbixcbiAgICAgIG1hc2tUcmFuc2l0aW9uTmFtZSA9IHByb3BzLm1hc2tUcmFuc2l0aW9uTmFtZTtcblxuICBpZiAoIW1hc2spIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBtb3Rpb24gPSB7fTtcblxuICBpZiAobWFza01vdGlvbiB8fCBtYXNrVHJhbnNpdGlvbk5hbWUgfHwgbWFza0FuaW1hdGlvbikge1xuICAgIG1vdGlvbiA9IF9vYmplY3RTcHJlYWQoe1xuICAgICAgbW90aW9uQXBwZWFyOiB0cnVlXG4gICAgfSwgZ2V0TW90aW9uKHtcbiAgICAgIG1vdGlvbjogbWFza01vdGlvbixcbiAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgdHJhbnNpdGlvbk5hbWU6IG1hc2tUcmFuc2l0aW9uTmFtZSxcbiAgICAgIGFuaW1hdGlvbjogbWFza0FuaW1hdGlvblxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDU1NNb3Rpb24sIF9leHRlbmRzKHt9LCBtb3Rpb24sIHtcbiAgICB2aXNpYmxlOiB2aXNpYmxlLFxuICAgIHJlbW92ZU9uTGVhdmU6IHRydWVcbiAgfSksIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIGNsYXNzTmFtZSA9IF9yZWYuY2xhc3NOYW1lO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICBzdHlsZToge1xuICAgICAgICB6SW5kZXg6IHpJbmRleFxuICAgICAgfSxcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLW1hc2tcIiksIGNsYXNzTmFtZSlcbiAgICB9KTtcbiAgfSk7XG59IiwidmFyIHZlbmRvclByZWZpeCA9IHZvaWQgMDtcblxudmFyIGpzQ3NzTWFwID0ge1xuICBXZWJraXQ6ICctd2Via2l0LScsXG4gIE1vejogJy1tb3otJyxcbiAgLy8gSUUgZGlkIGl0IHdyb25nIGFnYWluIC4uLlxuICBtczogJy1tcy0nLFxuICBPOiAnLW8tJ1xufTtcblxuZnVuY3Rpb24gZ2V0VmVuZG9yUHJlZml4KCkge1xuICBpZiAodmVuZG9yUHJlZml4ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdmVuZG9yUHJlZml4O1xuICB9XG4gIHZlbmRvclByZWZpeCA9ICcnO1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJykuc3R5bGU7XG4gIHZhciB0ZXN0UHJvcCA9ICdUcmFuc2Zvcm0nO1xuICBmb3IgKHZhciBrZXkgaW4ganNDc3NNYXApIHtcbiAgICBpZiAoa2V5ICsgdGVzdFByb3AgaW4gc3R5bGUpIHtcbiAgICAgIHZlbmRvclByZWZpeCA9IGtleTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZlbmRvclByZWZpeDtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNpdGlvbk5hbWUoKSB7XG4gIHJldHVybiBnZXRWZW5kb3JQcmVmaXgoKSA/IGdldFZlbmRvclByZWZpeCgpICsgJ1RyYW5zaXRpb25Qcm9wZXJ0eScgOiAndHJhbnNpdGlvblByb3BlcnR5Jztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zZm9ybU5hbWUoKSB7XG4gIHJldHVybiBnZXRWZW5kb3JQcmVmaXgoKSA/IGdldFZlbmRvclByZWZpeCgpICsgJ1RyYW5zZm9ybScgOiAndHJhbnNmb3JtJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFRyYW5zaXRpb25Qcm9wZXJ0eShub2RlLCB2YWx1ZSkge1xuICB2YXIgbmFtZSA9IGdldFRyYW5zaXRpb25OYW1lKCk7XG4gIGlmIChuYW1lKSB7XG4gICAgbm9kZS5zdHlsZVtuYW1lXSA9IHZhbHVlO1xuICAgIGlmIChuYW1lICE9PSAndHJhbnNpdGlvblByb3BlcnR5Jykge1xuICAgICAgbm9kZS5zdHlsZS50cmFuc2l0aW9uUHJvcGVydHkgPSB2YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0VHJhbnNmb3JtKG5vZGUsIHZhbHVlKSB7XG4gIHZhciBuYW1lID0gZ2V0VHJhbnNmb3JtTmFtZSgpO1xuICBpZiAobmFtZSkge1xuICAgIG5vZGUuc3R5bGVbbmFtZV0gPSB2YWx1ZTtcbiAgICBpZiAobmFtZSAhPT0gJ3RyYW5zZm9ybScpIHtcbiAgICAgIG5vZGUuc3R5bGUudHJhbnNmb3JtID0gdmFsdWU7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2l0aW9uUHJvcGVydHkobm9kZSkge1xuICByZXR1cm4gbm9kZS5zdHlsZS50cmFuc2l0aW9uUHJvcGVydHkgfHwgbm9kZS5zdHlsZVtnZXRUcmFuc2l0aW9uTmFtZSgpXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zZm9ybVhZKG5vZGUpIHtcbiAgdmFyIHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUobm9kZSwgbnVsbCk7XG4gIHZhciB0cmFuc2Zvcm0gPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCd0cmFuc2Zvcm0nKSB8fCBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGdldFRyYW5zZm9ybU5hbWUoKSk7XG4gIGlmICh0cmFuc2Zvcm0gJiYgdHJhbnNmb3JtICE9PSAnbm9uZScpIHtcbiAgICB2YXIgbWF0cml4ID0gdHJhbnNmb3JtLnJlcGxhY2UoL1teMC05XFwtLixdL2csICcnKS5zcGxpdCgnLCcpO1xuICAgIHJldHVybiB7IHg6IHBhcnNlRmxvYXQobWF0cml4WzEyXSB8fCBtYXRyaXhbNF0sIDApLCB5OiBwYXJzZUZsb2F0KG1hdHJpeFsxM10gfHwgbWF0cml4WzVdLCAwKSB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG59XG5cbnZhciBtYXRyaXgyZCA9IC9tYXRyaXhcXCgoLiopXFwpLztcbnZhciBtYXRyaXgzZCA9IC9tYXRyaXgzZFxcKCguKilcXCkvO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0VHJhbnNmb3JtWFkobm9kZSwgeHkpIHtcbiAgdmFyIHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUobm9kZSwgbnVsbCk7XG4gIHZhciB0cmFuc2Zvcm0gPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCd0cmFuc2Zvcm0nKSB8fCBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGdldFRyYW5zZm9ybU5hbWUoKSk7XG4gIGlmICh0cmFuc2Zvcm0gJiYgdHJhbnNmb3JtICE9PSAnbm9uZScpIHtcbiAgICB2YXIgYXJyID0gdm9pZCAwO1xuICAgIHZhciBtYXRjaDJkID0gdHJhbnNmb3JtLm1hdGNoKG1hdHJpeDJkKTtcbiAgICBpZiAobWF0Y2gyZCkge1xuICAgICAgbWF0Y2gyZCA9IG1hdGNoMmRbMV07XG4gICAgICBhcnIgPSBtYXRjaDJkLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KGl0ZW0sIDEwKTtcbiAgICAgIH0pO1xuICAgICAgYXJyWzRdID0geHkueDtcbiAgICAgIGFycls1XSA9IHh5Lnk7XG4gICAgICBzZXRUcmFuc2Zvcm0obm9kZSwgJ21hdHJpeCgnICsgYXJyLmpvaW4oJywnKSArICcpJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBtYXRjaDNkID0gdHJhbnNmb3JtLm1hdGNoKG1hdHJpeDNkKVsxXTtcbiAgICAgIGFyciA9IG1hdGNoM2Quc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoaXRlbSwgMTApO1xuICAgICAgfSk7XG4gICAgICBhcnJbMTJdID0geHkueDtcbiAgICAgIGFyclsxM10gPSB4eS55O1xuICAgICAgc2V0VHJhbnNmb3JtKG5vZGUsICdtYXRyaXgzZCgnICsgYXJyLmpvaW4oJywnKSArICcpJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHNldFRyYW5zZm9ybShub2RlLCAndHJhbnNsYXRlWCgnICsgeHkueCArICdweCkgdHJhbnNsYXRlWSgnICsgeHkueSArICdweCkgdHJhbnNsYXRlWigwKScpO1xuICB9XG59IiwidmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG5pbXBvcnQgeyBzZXRUcmFuc2l0aW9uUHJvcGVydHksIGdldFRyYW5zaXRpb25Qcm9wZXJ0eSwgZ2V0VHJhbnNmb3JtWFksIHNldFRyYW5zZm9ybVhZLCBnZXRUcmFuc2Zvcm1OYW1lIH0gZnJvbSAnLi9wcm9wZXJ0eVV0aWxzJztcblxudmFyIFJFX05VTSA9IC9bXFwtK10/KD86XFxkKlxcLnwpXFxkKyg/OltlRV1bXFwtK10/XFxkK3wpLy5zb3VyY2U7XG5cbnZhciBnZXRDb21wdXRlZFN0eWxlWCA9IHZvaWQgMDtcblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM0ODU2NTQvMzA0MDYwNVxuZnVuY3Rpb24gZm9yY2VSZWxheW91dChlbGVtKSB7XG4gIHZhciBvcmlnaW5hbFN0eWxlID0gZWxlbS5zdHlsZS5kaXNwbGF5O1xuICBlbGVtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGVsZW0ub2Zmc2V0SGVpZ2h0OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gIGVsZW0uc3R5bGUuZGlzcGxheSA9IG9yaWdpbmFsU3R5bGU7XG59XG5cbmZ1bmN0aW9uIGNzcyhlbCwgbmFtZSwgdikge1xuICB2YXIgdmFsdWUgPSB2O1xuICBpZiAoKHR5cGVvZiBuYW1lID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihuYW1lKSkgPT09ICdvYmplY3QnKSB7XG4gICAgZm9yICh2YXIgaSBpbiBuYW1lKSB7XG4gICAgICBpZiAobmFtZS5oYXNPd25Qcm9wZXJ0eShpKSkge1xuICAgICAgICBjc3MoZWwsIGksIG5hbWVbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgKyAncHgnO1xuICAgIH1cbiAgICBlbC5zdHlsZVtuYW1lXSA9IHZhbHVlO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGVYKGVsLCBuYW1lKTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UG9zaXRpb24oZWxlbSkge1xuICB2YXIgYm94ID0gdm9pZCAwO1xuICB2YXIgeCA9IHZvaWQgMDtcbiAgdmFyIHkgPSB2b2lkIDA7XG4gIHZhciBkb2MgPSBlbGVtLm93bmVyRG9jdW1lbnQ7XG4gIHZhciBib2R5ID0gZG9jLmJvZHk7XG4gIHZhciBkb2NFbGVtID0gZG9jICYmIGRvYy5kb2N1bWVudEVsZW1lbnQ7XG4gIC8vIOagueaNriBHQlMg5pyA5paw5pWw5o2u77yMQS1HcmFkZSBCcm93c2VycyDpg73lt7LmlK/mjIEgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IOaWueazle+8jOS4jeeUqOWGjeiAg+iZkeS8oOe7n+eahOWunueOsOaWueW8j1xuICBib3ggPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gIC8vIOazqO+8mmpRdWVyeSDov5jogIPomZHlh4/ljrsgZG9jRWxlbS5jbGllbnRMZWZ0L2NsaWVudFRvcFxuICAvLyDkvYbmtYvor5Xlj5HnjrDvvIzov5nmoLflj43ogIzkvJrlr7zoh7TlvZMgaHRtbCDlkowgYm9keSDmnInovrnot50v6L655qGG5qC35byP5pe277yM6I635Y+W55qE5YC85LiN5q2j56GuXG4gIC8vIOatpOWklu+8jGllNiDkvJrlv73nlaUgaHRtbCDnmoQgbWFyZ2luIOWAvO+8jOW5uOi/kOWcsOaYr+ayoeacieiwgeS8muWOu+iuvue9riBodG1sIOeahCBtYXJnaW5cblxuICB4ID0gYm94LmxlZnQ7XG4gIHkgPSBib3gudG9wO1xuXG4gIC8vIEluIElFLCBtb3N0IG9mIHRoZSB0aW1lLCAyIGV4dHJhIHBpeGVscyBhcmUgYWRkZWQgdG8gdGhlIHRvcCBhbmQgbGVmdFxuICAvLyBkdWUgdG8gdGhlIGltcGxpY2l0IDItcGl4ZWwgaW5zZXQgYm9yZGVyLiAgSW4gSUU2LzcgcXVpcmtzIG1vZGUgYW5kXG4gIC8vIElFNiBzdGFuZGFyZHMgbW9kZSwgdGhpcyBib3JkZXIgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc2V0dGluZyB0aGVcbiAgLy8gZG9jdW1lbnQgZWxlbWVudCdzIGJvcmRlciB0byB6ZXJvIC0tIHRodXMsIHdlIGNhbm5vdCByZWx5IG9uIHRoZVxuICAvLyBvZmZzZXQgYWx3YXlzIGJlaW5nIDIgcGl4ZWxzLlxuXG4gIC8vIEluIHF1aXJrcyBtb2RlLCB0aGUgb2Zmc2V0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHF1ZXJ5aW5nIHRoZSBib2R5J3NcbiAgLy8gY2xpZW50TGVmdC9jbGllbnRUb3AsIGJ1dCBpbiBzdGFuZGFyZHMgbW9kZSwgaXQgaXMgZm91bmQgYnkgcXVlcnlpbmdcbiAgLy8gdGhlIGRvY3VtZW50IGVsZW1lbnQncyBjbGllbnRMZWZ0L2NsaWVudFRvcC4gIFNpbmNlIHdlIGFscmVhZHkgY2FsbGVkXG4gIC8vIGdldENsaWVudEJvdW5kaW5nUmVjdCB3ZSBoYXZlIGFscmVhZHkgZm9yY2VkIGEgcmVmbG93LCBzbyBpdCBpcyBub3RcbiAgLy8gdG9vIGV4cGVuc2l2ZSBqdXN0IHRvIHF1ZXJ5IHRoZW0gYWxsLlxuXG4gIC8vIGllIOS4i+W6lOivpeWHj+WOu+eql+WPo+eahOi+ueahhuWQp++8jOavleern+m7mOiupCBhYnNvbHV0ZSDpg73mmK/nm7jlr7nnqpflj6PlrprkvY3nmoRcbiAgLy8g56qX5Y+j6L655qGG5qCH5YeG5piv6K6+IGRvY3VtZW50RWxlbWVudCAscXVpcmtzIOaXtuiuvue9riBib2R5XG4gIC8vIOacgOWlveemgeatouWcqCBib2R5IOWSjCBodG1sIOS4iui+ueahhiDvvIzkvYYgaWUgPCA5IGh0bWwg6buY6K6k5pyJIDJweCDvvIzlh4/ljrtcbiAgLy8g5L2G5piv6Z2eIGllIOS4jeWPr+iDveiuvue9rueql+WPo+i+ueahhu+8jGJvZHkgaHRtbCDkuZ/kuI3mmK/nqpflj6MgLGllIOWPr+S7pemAmui/hyBodG1sLGJvZHkg6K6+572uXG4gIC8vIOagh+WHhiBpZSDkuIsgZG9jRWxlbS5jbGllbnRUb3Ag5bCx5pivIGJvcmRlci10b3BcbiAgLy8gaWU3IGh0bWwg5Y2z56qX5Y+j6L655qGG5pS55Y+Y5LiN5LqG44CC5rC46L+c5Li6IDJcbiAgLy8g5L2G5qCH5YeGIGZpcmVmb3gvY2hyb21lL2llOSDkuIsgZG9jRWxlbS5jbGllbnRUb3Ag5piv56qX5Y+j6L655qGG77yM5Y2z5L2/6K6+5LqGIGJvcmRlci10b3Ag5Lmf5Li6IDBcblxuICB4IC09IGRvY0VsZW0uY2xpZW50TGVmdCB8fCBib2R5LmNsaWVudExlZnQgfHwgMDtcbiAgeSAtPSBkb2NFbGVtLmNsaWVudFRvcCB8fCBib2R5LmNsaWVudFRvcCB8fCAwO1xuXG4gIHJldHVybiB7XG4gICAgbGVmdDogeCxcbiAgICB0b3A6IHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2Nyb2xsKHcsIHRvcCkge1xuICB2YXIgcmV0ID0gd1sncGFnZScgKyAodG9wID8gJ1knIDogJ1gnKSArICdPZmZzZXQnXTtcbiAgdmFyIG1ldGhvZCA9ICdzY3JvbGwnICsgKHRvcCA/ICdUb3AnIDogJ0xlZnQnKTtcbiAgaWYgKHR5cGVvZiByZXQgIT09ICdudW1iZXInKSB7XG4gICAgdmFyIGQgPSB3LmRvY3VtZW50O1xuICAgIC8vIGllNiw3LDggc3RhbmRhcmQgbW9kZVxuICAgIHJldCA9IGQuZG9jdW1lbnRFbGVtZW50W21ldGhvZF07XG4gICAgaWYgKHR5cGVvZiByZXQgIT09ICdudW1iZXInKSB7XG4gICAgICAvLyBxdWlya3MgbW9kZVxuICAgICAgcmV0ID0gZC5ib2R5W21ldGhvZF07XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGdldFNjcm9sbExlZnQodykge1xuICByZXR1cm4gZ2V0U2Nyb2xsKHcpO1xufVxuXG5mdW5jdGlvbiBnZXRTY3JvbGxUb3Aodykge1xuICByZXR1cm4gZ2V0U2Nyb2xsKHcsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBnZXRPZmZzZXQoZWwpIHtcbiAgdmFyIHBvcyA9IGdldENsaWVudFBvc2l0aW9uKGVsKTtcbiAgdmFyIGRvYyA9IGVsLm93bmVyRG9jdW1lbnQ7XG4gIHZhciB3ID0gZG9jLmRlZmF1bHRWaWV3IHx8IGRvYy5wYXJlbnRXaW5kb3c7XG4gIHBvcy5sZWZ0ICs9IGdldFNjcm9sbExlZnQodyk7XG4gIHBvcy50b3AgKz0gZ2V0U2Nyb2xsVG9wKHcpO1xuICByZXR1cm4gcG9zO1xufVxuXG4vKipcbiAqIEEgY3J1ZGUgd2F5IG9mIGRldGVybWluaW5nIGlmIGFuIG9iamVjdCBpcyBhIHdpbmRvd1xuICogQG1lbWJlciB1dGlsXG4gKi9cbmZ1bmN0aW9uIGlzV2luZG93KG9iaikge1xuICAvLyBtdXN0IHVzZSA9PSBmb3IgaWU4XG4gIC8qIGVzbGludCBlcWVxZXE6MCAqL1xuICByZXR1cm4gb2JqICE9PSBudWxsICYmIG9iaiAhPT0gdW5kZWZpbmVkICYmIG9iaiA9PSBvYmoud2luZG93O1xufVxuXG5mdW5jdGlvbiBnZXREb2N1bWVudChub2RlKSB7XG4gIGlmIChpc1dpbmRvdyhub2RlKSkge1xuICAgIHJldHVybiBub2RlLmRvY3VtZW50O1xuICB9XG4gIGlmIChub2RlLm5vZGVUeXBlID09PSA5KSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbiAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudDtcbn1cblxuZnVuY3Rpb24gX2dldENvbXB1dGVkU3R5bGUoZWxlbSwgbmFtZSwgY3MpIHtcbiAgdmFyIGNvbXB1dGVkU3R5bGUgPSBjcztcbiAgdmFyIHZhbCA9ICcnO1xuICB2YXIgZCA9IGdldERvY3VtZW50KGVsZW0pO1xuICBjb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZSB8fCBkLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbSwgbnVsbCk7XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2tpc3N5dGVhbS9raXNzeS9pc3N1ZXMvNjFcbiAgaWYgKGNvbXB1dGVkU3R5bGUpIHtcbiAgICB2YWwgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUobmFtZSkgfHwgY29tcHV0ZWRTdHlsZVtuYW1lXTtcbiAgfVxuXG4gIHJldHVybiB2YWw7XG59XG5cbnZhciBfUkVfTlVNX05PX1BYID0gbmV3IFJlZ0V4cCgnXignICsgUkVfTlVNICsgJykoPyFweClbYS16JV0rJCcsICdpJyk7XG52YXIgUkVfUE9TID0gL14odG9wfHJpZ2h0fGJvdHRvbXxsZWZ0KSQvO1xudmFyIENVUlJFTlRfU1RZTEUgPSAnY3VycmVudFN0eWxlJztcbnZhciBSVU5USU1FX1NUWUxFID0gJ3J1bnRpbWVTdHlsZSc7XG52YXIgTEVGVCA9ICdsZWZ0JztcbnZhciBQWCA9ICdweCc7XG5cbmZ1bmN0aW9uIF9nZXRDb21wdXRlZFN0eWxlSUUoZWxlbSwgbmFtZSkge1xuICAvLyBjdXJyZW50U3R5bGUgbWF5YmUgbnVsbFxuICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1MzUyMzEuYXNweFxuICB2YXIgcmV0ID0gZWxlbVtDVVJSRU5UX1NUWUxFXSAmJiBlbGVtW0NVUlJFTlRfU1RZTEVdW25hbWVdO1xuXG4gIC8vIOW9kyB3aWR0aC9oZWlnaHQg6K6+572u5Li655m+5YiG5q+U5pe277yM6YCa6L+HIHBpeGVsTGVmdCDmlrnlvI/ovazmjaLnmoQgd2lkdGgvaGVpZ2h0IOWAvFxuICAvLyDkuIDlvIDlp4vlsLHlpITnkIbkuoYhIENVU1RPTV9TVFlMRS5oZWlnaHQsQ1VTVE9NX1NUWUxFLndpZHRoICxjc3NIb29rIOino+WGs0AyMDExLTA4LTE5XG4gIC8vIOWcqCBpZSDkuIvkuI3lr7nvvIzpnIDopoHnm7TmjqXnlKggb2Zmc2V0IOaWueW8j1xuICAvLyBib3JkZXJXaWR0aCDnrYnlgLzkuZ/mnInpl67popjvvIzkvYbogIPomZHliLAgYm9yZGVyV2lkdGgg6K6+5Li655m+5YiG5q+U55qE5qaC546H5b6I5bCP77yM6L+Z6YeM5bCx5LiN6ICD6JmR5LqGXG5cbiAgLy8gRnJvbSB0aGUgYXdlc29tZSBoYWNrIGJ5IERlYW4gRWR3YXJkc1xuICAvLyBodHRwOi8vZXJpay5lYWUubmV0L2FyY2hpdmVzLzIwMDcvMDcvMjcvMTguNTQuMTUvI2NvbW1lbnQtMTAyMjkxXG4gIC8vIElmIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggYSByZWd1bGFyIHBpeGVsIG51bWJlclxuICAvLyBidXQgYSBudW1iZXIgdGhhdCBoYXMgYSB3ZWlyZCBlbmRpbmcsIHdlIG5lZWQgdG8gY29udmVydCBpdCB0byBwaXhlbHNcbiAgLy8gZXhjbHVkZSBsZWZ0IHJpZ2h0IGZvciByZWxhdGl2aXR5XG4gIGlmIChfUkVfTlVNX05PX1BYLnRlc3QocmV0KSAmJiAhUkVfUE9TLnRlc3QobmFtZSkpIHtcbiAgICAvLyBSZW1lbWJlciB0aGUgb3JpZ2luYWwgdmFsdWVzXG4gICAgdmFyIHN0eWxlID0gZWxlbS5zdHlsZTtcbiAgICB2YXIgbGVmdCA9IHN0eWxlW0xFRlRdO1xuICAgIHZhciByc0xlZnQgPSBlbGVtW1JVTlRJTUVfU1RZTEVdW0xFRlRdO1xuXG4gICAgLy8gcHJldmVudCBmbGFzaGluZyBvZiBjb250ZW50XG4gICAgZWxlbVtSVU5USU1FX1NUWUxFXVtMRUZUXSA9IGVsZW1bQ1VSUkVOVF9TVFlMRV1bTEVGVF07XG5cbiAgICAvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0XG4gICAgc3R5bGVbTEVGVF0gPSBuYW1lID09PSAnZm9udFNpemUnID8gJzFlbScgOiByZXQgfHwgMDtcbiAgICByZXQgPSBzdHlsZS5waXhlbExlZnQgKyBQWDtcblxuICAgIC8vIFJldmVydCB0aGUgY2hhbmdlZCB2YWx1ZXNcbiAgICBzdHlsZVtMRUZUXSA9IGxlZnQ7XG5cbiAgICBlbGVtW1JVTlRJTUVfU1RZTEVdW0xFRlRdID0gcnNMZWZ0O1xuICB9XG4gIHJldHVybiByZXQgPT09ICcnID8gJ2F1dG8nIDogcmV0O1xufVxuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgZ2V0Q29tcHV0ZWRTdHlsZVggPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSA/IF9nZXRDb21wdXRlZFN0eWxlIDogX2dldENvbXB1dGVkU3R5bGVJRTtcbn1cblxuZnVuY3Rpb24gZ2V0T2Zmc2V0RGlyZWN0aW9uKGRpciwgb3B0aW9uKSB7XG4gIGlmIChkaXIgPT09ICdsZWZ0Jykge1xuICAgIHJldHVybiBvcHRpb24udXNlQ3NzUmlnaHQgPyAncmlnaHQnIDogZGlyO1xuICB9XG4gIHJldHVybiBvcHRpb24udXNlQ3NzQm90dG9tID8gJ2JvdHRvbScgOiBkaXI7XG59XG5cbmZ1bmN0aW9uIG9wcG9zaXRlT2Zmc2V0RGlyZWN0aW9uKGRpcikge1xuICBpZiAoZGlyID09PSAnbGVmdCcpIHtcbiAgICByZXR1cm4gJ3JpZ2h0JztcbiAgfSBlbHNlIGlmIChkaXIgPT09ICdyaWdodCcpIHtcbiAgICByZXR1cm4gJ2xlZnQnO1xuICB9IGVsc2UgaWYgKGRpciA9PT0gJ3RvcCcpIHtcbiAgICByZXR1cm4gJ2JvdHRvbSc7XG4gIH0gZWxzZSBpZiAoZGlyID09PSAnYm90dG9tJykge1xuICAgIHJldHVybiAndG9wJztcbiAgfVxufVxuXG4vLyDorr7nva4gZWxlbSDnm7jlr7kgZWxlbS5vd25lckRvY3VtZW50IOeahOWdkOagh1xuZnVuY3Rpb24gc2V0TGVmdFRvcChlbGVtLCBvZmZzZXQsIG9wdGlvbikge1xuICAvLyBzZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBlbGVtXG4gIGlmIChjc3MoZWxlbSwgJ3Bvc2l0aW9uJykgPT09ICdzdGF0aWMnKSB7XG4gICAgZWxlbS5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gIH1cbiAgdmFyIHByZXNldEggPSAtOTk5O1xuICB2YXIgcHJlc2V0ViA9IC05OTk7XG4gIHZhciBob3Jpem9udGFsUHJvcGVydHkgPSBnZXRPZmZzZXREaXJlY3Rpb24oJ2xlZnQnLCBvcHRpb24pO1xuICB2YXIgdmVydGljYWxQcm9wZXJ0eSA9IGdldE9mZnNldERpcmVjdGlvbigndG9wJywgb3B0aW9uKTtcbiAgdmFyIG9wcG9zaXRlSG9yaXpvbnRhbFByb3BlcnR5ID0gb3Bwb3NpdGVPZmZzZXREaXJlY3Rpb24oaG9yaXpvbnRhbFByb3BlcnR5KTtcbiAgdmFyIG9wcG9zaXRlVmVydGljYWxQcm9wZXJ0eSA9IG9wcG9zaXRlT2Zmc2V0RGlyZWN0aW9uKHZlcnRpY2FsUHJvcGVydHkpO1xuXG4gIGlmIChob3Jpem9udGFsUHJvcGVydHkgIT09ICdsZWZ0Jykge1xuICAgIHByZXNldEggPSA5OTk7XG4gIH1cblxuICBpZiAodmVydGljYWxQcm9wZXJ0eSAhPT0gJ3RvcCcpIHtcbiAgICBwcmVzZXRWID0gOTk5O1xuICB9XG4gIHZhciBvcmlnaW5hbFRyYW5zaXRpb24gPSAnJztcbiAgdmFyIG9yaWdpbmFsT2Zmc2V0ID0gZ2V0T2Zmc2V0KGVsZW0pO1xuICBpZiAoJ2xlZnQnIGluIG9mZnNldCB8fCAndG9wJyBpbiBvZmZzZXQpIHtcbiAgICBvcmlnaW5hbFRyYW5zaXRpb24gPSBnZXRUcmFuc2l0aW9uUHJvcGVydHkoZWxlbSkgfHwgJyc7XG4gICAgc2V0VHJhbnNpdGlvblByb3BlcnR5KGVsZW0sICdub25lJyk7XG4gIH1cbiAgaWYgKCdsZWZ0JyBpbiBvZmZzZXQpIHtcbiAgICBlbGVtLnN0eWxlW29wcG9zaXRlSG9yaXpvbnRhbFByb3BlcnR5XSA9ICcnO1xuICAgIGVsZW0uc3R5bGVbaG9yaXpvbnRhbFByb3BlcnR5XSA9IHByZXNldEggKyAncHgnO1xuICB9XG4gIGlmICgndG9wJyBpbiBvZmZzZXQpIHtcbiAgICBlbGVtLnN0eWxlW29wcG9zaXRlVmVydGljYWxQcm9wZXJ0eV0gPSAnJztcbiAgICBlbGVtLnN0eWxlW3ZlcnRpY2FsUHJvcGVydHldID0gcHJlc2V0ViArICdweCc7XG4gIH1cbiAgLy8gZm9yY2UgcmVsYXlvdXRcbiAgZm9yY2VSZWxheW91dChlbGVtKTtcbiAgdmFyIG9sZCA9IGdldE9mZnNldChlbGVtKTtcbiAgdmFyIG9yaWdpbmFsU3R5bGUgPSB7fTtcbiAgZm9yICh2YXIga2V5IGluIG9mZnNldCkge1xuICAgIGlmIChvZmZzZXQuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgdmFyIGRpciA9IGdldE9mZnNldERpcmVjdGlvbihrZXksIG9wdGlvbik7XG4gICAgICB2YXIgcHJlc2V0ID0ga2V5ID09PSAnbGVmdCcgPyBwcmVzZXRIIDogcHJlc2V0VjtcbiAgICAgIHZhciBvZmYgPSBvcmlnaW5hbE9mZnNldFtrZXldIC0gb2xkW2tleV07XG4gICAgICBpZiAoZGlyID09PSBrZXkpIHtcbiAgICAgICAgb3JpZ2luYWxTdHlsZVtkaXJdID0gcHJlc2V0ICsgb2ZmO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3JpZ2luYWxTdHlsZVtkaXJdID0gcHJlc2V0IC0gb2ZmO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjc3MoZWxlbSwgb3JpZ2luYWxTdHlsZSk7XG4gIC8vIGZvcmNlIHJlbGF5b3V0XG4gIGZvcmNlUmVsYXlvdXQoZWxlbSk7XG4gIGlmICgnbGVmdCcgaW4gb2Zmc2V0IHx8ICd0b3AnIGluIG9mZnNldCkge1xuICAgIHNldFRyYW5zaXRpb25Qcm9wZXJ0eShlbGVtLCBvcmlnaW5hbFRyYW5zaXRpb24pO1xuICB9XG4gIHZhciByZXQgPSB7fTtcbiAgZm9yICh2YXIgX2tleSBpbiBvZmZzZXQpIHtcbiAgICBpZiAob2Zmc2V0Lmhhc093blByb3BlcnR5KF9rZXkpKSB7XG4gICAgICB2YXIgX2RpciA9IGdldE9mZnNldERpcmVjdGlvbihfa2V5LCBvcHRpb24pO1xuICAgICAgdmFyIF9vZmYgPSBvZmZzZXRbX2tleV0gLSBvcmlnaW5hbE9mZnNldFtfa2V5XTtcbiAgICAgIGlmIChfa2V5ID09PSBfZGlyKSB7XG4gICAgICAgIHJldFtfZGlyXSA9IG9yaWdpbmFsU3R5bGVbX2Rpcl0gKyBfb2ZmO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0W19kaXJdID0gb3JpZ2luYWxTdHlsZVtfZGlyXSAtIF9vZmY7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNzcyhlbGVtLCByZXQpO1xufVxuXG5mdW5jdGlvbiBzZXRUcmFuc2Zvcm0oZWxlbSwgb2Zmc2V0KSB7XG4gIHZhciBvcmlnaW5hbE9mZnNldCA9IGdldE9mZnNldChlbGVtKTtcbiAgdmFyIG9yaWdpbmFsWFkgPSBnZXRUcmFuc2Zvcm1YWShlbGVtKTtcbiAgdmFyIHJlc3VsdFhZID0geyB4OiBvcmlnaW5hbFhZLngsIHk6IG9yaWdpbmFsWFkueSB9O1xuICBpZiAoJ2xlZnQnIGluIG9mZnNldCkge1xuICAgIHJlc3VsdFhZLnggPSBvcmlnaW5hbFhZLnggKyBvZmZzZXQubGVmdCAtIG9yaWdpbmFsT2Zmc2V0LmxlZnQ7XG4gIH1cbiAgaWYgKCd0b3AnIGluIG9mZnNldCkge1xuICAgIHJlc3VsdFhZLnkgPSBvcmlnaW5hbFhZLnkgKyBvZmZzZXQudG9wIC0gb3JpZ2luYWxPZmZzZXQudG9wO1xuICB9XG4gIHNldFRyYW5zZm9ybVhZKGVsZW0sIHJlc3VsdFhZKTtcbn1cblxuZnVuY3Rpb24gc2V0T2Zmc2V0KGVsZW0sIG9mZnNldCwgb3B0aW9uKSB7XG4gIGlmIChvcHRpb24uaWdub3JlU2hha2UpIHtcbiAgICB2YXIgb3JpT2Zmc2V0ID0gZ2V0T2Zmc2V0KGVsZW0pO1xuXG4gICAgdmFyIG9MZWZ0ID0gb3JpT2Zmc2V0LmxlZnQudG9GaXhlZCgwKTtcbiAgICB2YXIgb1RvcCA9IG9yaU9mZnNldC50b3AudG9GaXhlZCgwKTtcbiAgICB2YXIgdExlZnQgPSBvZmZzZXQubGVmdC50b0ZpeGVkKDApO1xuICAgIHZhciB0VG9wID0gb2Zmc2V0LnRvcC50b0ZpeGVkKDApO1xuXG4gICAgaWYgKG9MZWZ0ID09PSB0TGVmdCAmJiBvVG9wID09PSB0VG9wKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdGlvbi51c2VDc3NSaWdodCB8fCBvcHRpb24udXNlQ3NzQm90dG9tKSB7XG4gICAgc2V0TGVmdFRvcChlbGVtLCBvZmZzZXQsIG9wdGlvbik7XG4gIH0gZWxzZSBpZiAob3B0aW9uLnVzZUNzc1RyYW5zZm9ybSAmJiBnZXRUcmFuc2Zvcm1OYW1lKCkgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSkge1xuICAgIHNldFRyYW5zZm9ybShlbGVtLCBvZmZzZXQsIG9wdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgc2V0TGVmdFRvcChlbGVtLCBvZmZzZXQsIG9wdGlvbik7XG4gIH1cbn1cblxuZnVuY3Rpb24gZWFjaChhcnIsIGZuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgZm4oYXJyW2ldKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0JvcmRlckJveEZuKGVsZW0pIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGVYKGVsZW0sICdib3hTaXppbmcnKSA9PT0gJ2JvcmRlci1ib3gnO1xufVxuXG52YXIgQk9YX01PREVMUyA9IFsnbWFyZ2luJywgJ2JvcmRlcicsICdwYWRkaW5nJ107XG52YXIgQ09OVEVOVF9JTkRFWCA9IC0xO1xudmFyIFBBRERJTkdfSU5ERVggPSAyO1xudmFyIEJPUkRFUl9JTkRFWCA9IDE7XG52YXIgTUFSR0lOX0lOREVYID0gMDtcblxuZnVuY3Rpb24gc3dhcChlbGVtLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgb2xkID0ge307XG4gIHZhciBzdHlsZSA9IGVsZW0uc3R5bGU7XG4gIHZhciBuYW1lID0gdm9pZCAwO1xuXG4gIC8vIFJlbWVtYmVyIHRoZSBvbGQgdmFsdWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lc1xuICBmb3IgKG5hbWUgaW4gb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBvbGRbbmFtZV0gPSBzdHlsZVtuYW1lXTtcbiAgICAgIHN0eWxlW25hbWVdID0gb3B0aW9uc1tuYW1lXTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjay5jYWxsKGVsZW0pO1xuXG4gIC8vIFJldmVydCB0aGUgb2xkIHZhbHVlc1xuICBmb3IgKG5hbWUgaW4gb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBzdHlsZVtuYW1lXSA9IG9sZFtuYW1lXTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0UEJNV2lkdGgoZWxlbSwgcHJvcHMsIHdoaWNoKSB7XG4gIHZhciB2YWx1ZSA9IDA7XG4gIHZhciBwcm9wID0gdm9pZCAwO1xuICB2YXIgaiA9IHZvaWQgMDtcbiAgdmFyIGkgPSB2b2lkIDA7XG4gIGZvciAoaiA9IDA7IGogPCBwcm9wcy5sZW5ndGg7IGorKykge1xuICAgIHByb3AgPSBwcm9wc1tqXTtcbiAgICBpZiAocHJvcCkge1xuICAgICAgZm9yIChpID0gMDsgaSA8IHdoaWNoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjc3NQcm9wID0gdm9pZCAwO1xuICAgICAgICBpZiAocHJvcCA9PT0gJ2JvcmRlcicpIHtcbiAgICAgICAgICBjc3NQcm9wID0gJycgKyBwcm9wICsgd2hpY2hbaV0gKyAnV2lkdGgnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNzc1Byb3AgPSBwcm9wICsgd2hpY2hbaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUgKz0gcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlWChlbGVtLCBjc3NQcm9wKSkgfHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG52YXIgZG9tVXRpbHMgPSB7fTtcblxuZWFjaChbJ1dpZHRoJywgJ0hlaWdodCddLCBmdW5jdGlvbiAobmFtZSkge1xuICBkb21VdGlsc1snZG9jJyArIG5hbWVdID0gZnVuY3Rpb24gKHJlZldpbikge1xuICAgIHZhciBkID0gcmVmV2luLmRvY3VtZW50O1xuICAgIHJldHVybiBNYXRoLm1heChcbiAgICAvLyBmaXJlZm94IGNocm9tZSBkb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0PCBib2R5LnNjcm9sbEhlaWdodFxuICAgIC8vIGllIHN0YW5kYXJkIG1vZGUgOiBkb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0PiBib2R5LnNjcm9sbEhlaWdodFxuICAgIGQuZG9jdW1lbnRFbGVtZW50WydzY3JvbGwnICsgbmFtZV0sXG4gICAgLy8gcXVpcmtzIDogZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCDmnIDlpKfnrYnkuo7lj6/op4bnqpflj6PlpJrkuIDngrnvvJ9cbiAgICBkLmJvZHlbJ3Njcm9sbCcgKyBuYW1lXSwgZG9tVXRpbHNbJ3ZpZXdwb3J0JyArIG5hbWVdKGQpKTtcbiAgfTtcblxuICBkb21VdGlsc1sndmlld3BvcnQnICsgbmFtZV0gPSBmdW5jdGlvbiAod2luKSB7XG4gICAgLy8gcGMgYnJvd3NlciBpbmNsdWRlcyBzY3JvbGxiYXIgaW4gd2luZG93LmlubmVyV2lkdGhcbiAgICB2YXIgcHJvcCA9ICdjbGllbnQnICsgbmFtZTtcbiAgICB2YXIgZG9jID0gd2luLmRvY3VtZW50O1xuICAgIHZhciBib2R5ID0gZG9jLmJvZHk7XG4gICAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7XG4gICAgdmFyIGRvY3VtZW50RWxlbWVudFByb3AgPSBkb2N1bWVudEVsZW1lbnRbcHJvcF07XG4gICAgLy8g5qCH5YeG5qih5byP5Y+WIGRvY3VtZW50RWxlbWVudFxuICAgIC8vIGJhY2tjb21wYXQg5Y+WIGJvZHlcbiAgICByZXR1cm4gZG9jLmNvbXBhdE1vZGUgPT09ICdDU1MxQ29tcGF0JyAmJiBkb2N1bWVudEVsZW1lbnRQcm9wIHx8IGJvZHkgJiYgYm9keVtwcm9wXSB8fCBkb2N1bWVudEVsZW1lbnRQcm9wO1xuICB9O1xufSk7XG5cbi8qXG4g5b6X5Yiw5YWD57Sg55qE5aSn5bCP5L+h5oGvXG4gQHBhcmFtIGVsZW1cbiBAcGFyYW0gbmFtZVxuIEBwYXJhbSB7U3RyaW5nfSBbZXh0cmFdICAncGFkZGluZycgOiAoY3NzIHdpZHRoKSArIHBhZGRpbmdcbiAnYm9yZGVyJyA6IChjc3Mgd2lkdGgpICsgcGFkZGluZyArIGJvcmRlclxuICdtYXJnaW4nIDogKGNzcyB3aWR0aCkgKyBwYWRkaW5nICsgYm9yZGVyICsgbWFyZ2luXG4gKi9cbmZ1bmN0aW9uIGdldFdIKGVsZW0sIG5hbWUsIGV4KSB7XG4gIHZhciBleHRyYSA9IGV4O1xuICBpZiAoaXNXaW5kb3coZWxlbSkpIHtcbiAgICByZXR1cm4gbmFtZSA9PT0gJ3dpZHRoJyA/IGRvbVV0aWxzLnZpZXdwb3J0V2lkdGgoZWxlbSkgOiBkb21VdGlscy52aWV3cG9ydEhlaWdodChlbGVtKTtcbiAgfSBlbHNlIGlmIChlbGVtLm5vZGVUeXBlID09PSA5KSB7XG4gICAgcmV0dXJuIG5hbWUgPT09ICd3aWR0aCcgPyBkb21VdGlscy5kb2NXaWR0aChlbGVtKSA6IGRvbVV0aWxzLmRvY0hlaWdodChlbGVtKTtcbiAgfVxuICB2YXIgd2hpY2ggPSBuYW1lID09PSAnd2lkdGgnID8gWydMZWZ0JywgJ1JpZ2h0J10gOiBbJ1RvcCcsICdCb3R0b20nXTtcbiAgdmFyIGJvcmRlckJveFZhbHVlID0gbmFtZSA9PT0gJ3dpZHRoJyA/IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggOiBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgdmFyIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlWChlbGVtKTtcbiAgdmFyIGlzQm9yZGVyQm94ID0gaXNCb3JkZXJCb3hGbihlbGVtLCBjb21wdXRlZFN0eWxlKTtcbiAgdmFyIGNzc0JveFZhbHVlID0gMDtcbiAgaWYgKGJvcmRlckJveFZhbHVlID09PSBudWxsIHx8IGJvcmRlckJveFZhbHVlID09PSB1bmRlZmluZWQgfHwgYm9yZGVyQm94VmFsdWUgPD0gMCkge1xuICAgIGJvcmRlckJveFZhbHVlID0gdW5kZWZpbmVkO1xuICAgIC8vIEZhbGwgYmFjayB0byBjb21wdXRlZCB0aGVuIHVuIGNvbXB1dGVkIGNzcyBpZiBuZWNlc3NhcnlcbiAgICBjc3NCb3hWYWx1ZSA9IGdldENvbXB1dGVkU3R5bGVYKGVsZW0sIG5hbWUpO1xuICAgIGlmIChjc3NCb3hWYWx1ZSA9PT0gbnVsbCB8fCBjc3NCb3hWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IE51bWJlcihjc3NCb3hWYWx1ZSkgPCAwKSB7XG4gICAgICBjc3NCb3hWYWx1ZSA9IGVsZW0uc3R5bGVbbmFtZV0gfHwgMDtcbiAgICB9XG4gICAgLy8gTm9ybWFsaXplICcnLCBhdXRvLCBhbmQgcHJlcGFyZSBmb3IgZXh0cmFcbiAgICBjc3NCb3hWYWx1ZSA9IHBhcnNlRmxvYXQoY3NzQm94VmFsdWUpIHx8IDA7XG4gIH1cbiAgaWYgKGV4dHJhID09PSB1bmRlZmluZWQpIHtcbiAgICBleHRyYSA9IGlzQm9yZGVyQm94ID8gQk9SREVSX0lOREVYIDogQ09OVEVOVF9JTkRFWDtcbiAgfVxuICB2YXIgYm9yZGVyQm94VmFsdWVPcklzQm9yZGVyQm94ID0gYm9yZGVyQm94VmFsdWUgIT09IHVuZGVmaW5lZCB8fCBpc0JvcmRlckJveDtcbiAgdmFyIHZhbCA9IGJvcmRlckJveFZhbHVlIHx8IGNzc0JveFZhbHVlO1xuICBpZiAoZXh0cmEgPT09IENPTlRFTlRfSU5ERVgpIHtcbiAgICBpZiAoYm9yZGVyQm94VmFsdWVPcklzQm9yZGVyQm94KSB7XG4gICAgICByZXR1cm4gdmFsIC0gZ2V0UEJNV2lkdGgoZWxlbSwgWydib3JkZXInLCAncGFkZGluZyddLCB3aGljaCwgY29tcHV0ZWRTdHlsZSk7XG4gICAgfVxuICAgIHJldHVybiBjc3NCb3hWYWx1ZTtcbiAgfSBlbHNlIGlmIChib3JkZXJCb3hWYWx1ZU9ySXNCb3JkZXJCb3gpIHtcbiAgICBpZiAoZXh0cmEgPT09IEJPUkRFUl9JTkRFWCkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbCArIChleHRyYSA9PT0gUEFERElOR19JTkRFWCA/IC1nZXRQQk1XaWR0aChlbGVtLCBbJ2JvcmRlciddLCB3aGljaCwgY29tcHV0ZWRTdHlsZSkgOiBnZXRQQk1XaWR0aChlbGVtLCBbJ21hcmdpbiddLCB3aGljaCwgY29tcHV0ZWRTdHlsZSkpO1xuICB9XG4gIHJldHVybiBjc3NCb3hWYWx1ZSArIGdldFBCTVdpZHRoKGVsZW0sIEJPWF9NT0RFTFMuc2xpY2UoZXh0cmEpLCB3aGljaCwgY29tcHV0ZWRTdHlsZSk7XG59XG5cbnZhciBjc3NTaG93ID0ge1xuICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gIGRpc3BsYXk6ICdibG9jaydcbn07XG5cbi8vIGZpeCAjMTE5IDogaHR0cHM6Ly9naXRodWIuY29tL2tpc3N5dGVhbS9raXNzeS9pc3N1ZXMvMTE5XG5mdW5jdGlvbiBnZXRXSElnbm9yZURpc3BsYXkoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuOyBfa2V5MisrKSB7XG4gICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICB9XG5cbiAgdmFyIHZhbCA9IHZvaWQgMDtcbiAgdmFyIGVsZW0gPSBhcmdzWzBdO1xuICAvLyBpbiBjYXNlIGVsZW0gaXMgd2luZG93XG4gIC8vIGVsZW0ub2Zmc2V0V2lkdGggPT09IHVuZGVmaW5lZFxuICBpZiAoZWxlbS5vZmZzZXRXaWR0aCAhPT0gMCkge1xuICAgIHZhbCA9IGdldFdILmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgc3dhcChlbGVtLCBjc3NTaG93LCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YWwgPSBnZXRXSC5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiB2YWw7XG59XG5cbmVhY2goWyd3aWR0aCcsICdoZWlnaHQnXSwgZnVuY3Rpb24gKG5hbWUpIHtcbiAgdmFyIGZpcnN0ID0gbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSk7XG4gIGRvbVV0aWxzWydvdXRlcicgKyBmaXJzdF0gPSBmdW5jdGlvbiAoZWwsIGluY2x1ZGVNYXJnaW4pIHtcbiAgICByZXR1cm4gZWwgJiYgZ2V0V0hJZ25vcmVEaXNwbGF5KGVsLCBuYW1lLCBpbmNsdWRlTWFyZ2luID8gTUFSR0lOX0lOREVYIDogQk9SREVSX0lOREVYKTtcbiAgfTtcbiAgdmFyIHdoaWNoID0gbmFtZSA9PT0gJ3dpZHRoJyA/IFsnTGVmdCcsICdSaWdodCddIDogWydUb3AnLCAnQm90dG9tJ107XG5cbiAgZG9tVXRpbHNbbmFtZV0gPSBmdW5jdGlvbiAoZWxlbSwgdikge1xuICAgIHZhciB2YWwgPSB2O1xuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGVsZW0pIHtcbiAgICAgICAgdmFyIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlWChlbGVtKTtcbiAgICAgICAgdmFyIGlzQm9yZGVyQm94ID0gaXNCb3JkZXJCb3hGbihlbGVtKTtcbiAgICAgICAgaWYgKGlzQm9yZGVyQm94KSB7XG4gICAgICAgICAgdmFsICs9IGdldFBCTVdpZHRoKGVsZW0sIFsncGFkZGluZycsICdib3JkZXInXSwgd2hpY2gsIGNvbXB1dGVkU3R5bGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjc3MoZWxlbSwgbmFtZSwgdmFsKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBlbGVtICYmIGdldFdISWdub3JlRGlzcGxheShlbGVtLCBuYW1lLCBDT05URU5UX0lOREVYKTtcbiAgfTtcbn0pO1xuXG5mdW5jdGlvbiBtaXgodG8sIGZyb20pIHtcbiAgZm9yICh2YXIgaSBpbiBmcm9tKSB7XG4gICAgaWYgKGZyb20uaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgIHRvW2ldID0gZnJvbVtpXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvO1xufVxuXG52YXIgdXRpbHMgPSB7XG4gIGdldFdpbmRvdzogZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgICBpZiAobm9kZSAmJiBub2RlLmRvY3VtZW50ICYmIG5vZGUuc2V0VGltZW91dCkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIHZhciBkb2MgPSBub2RlLm93bmVyRG9jdW1lbnQgfHwgbm9kZTtcbiAgICByZXR1cm4gZG9jLmRlZmF1bHRWaWV3IHx8IGRvYy5wYXJlbnRXaW5kb3c7XG4gIH0sXG5cbiAgZ2V0RG9jdW1lbnQ6IGdldERvY3VtZW50LFxuICBvZmZzZXQ6IGZ1bmN0aW9uIG9mZnNldChlbCwgdmFsdWUsIG9wdGlvbikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBzZXRPZmZzZXQoZWwsIHZhbHVlLCBvcHRpb24gfHwge30pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ2V0T2Zmc2V0KGVsKTtcbiAgICB9XG4gIH0sXG5cbiAgaXNXaW5kb3c6IGlzV2luZG93LFxuICBlYWNoOiBlYWNoLFxuICBjc3M6IGNzcyxcbiAgY2xvbmU6IGZ1bmN0aW9uIGNsb25lKG9iaikge1xuICAgIHZhciBpID0gdm9pZCAwO1xuICAgIHZhciByZXQgPSB7fTtcbiAgICBmb3IgKGkgaW4gb2JqKSB7XG4gICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGkpKSB7XG4gICAgICAgIHJldFtpXSA9IG9ialtpXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG92ZXJmbG93ID0gb2JqLm92ZXJmbG93O1xuICAgIGlmIChvdmVyZmxvdykge1xuICAgICAgZm9yIChpIGluIG9iaikge1xuICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGkpKSB7XG4gICAgICAgICAgcmV0Lm92ZXJmbG93W2ldID0gb2JqLm92ZXJmbG93W2ldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0sXG5cbiAgbWl4OiBtaXgsXG4gIGdldFdpbmRvd1Njcm9sbExlZnQ6IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbExlZnQodykge1xuICAgIHJldHVybiBnZXRTY3JvbGxMZWZ0KHcpO1xuICB9LFxuICBnZXRXaW5kb3dTY3JvbGxUb3A6IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbFRvcCh3KSB7XG4gICAgcmV0dXJuIGdldFNjcm9sbFRvcCh3KTtcbiAgfSxcbiAgbWVyZ2U6IGZ1bmN0aW9uIG1lcmdlKCkge1xuICAgIHZhciByZXQgPSB7fTtcblxuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yKSwgX2tleTMgPSAwOyBfa2V5MyA8IF9sZW4yOyBfa2V5MysrKSB7XG4gICAgICBhcmdzW19rZXkzXSA9IGFyZ3VtZW50c1tfa2V5M107XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB1dGlscy5taXgocmV0LCBhcmdzW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICB2aWV3cG9ydFdpZHRoOiAwLFxuICB2aWV3cG9ydEhlaWdodDogMFxufTtcblxubWl4KHV0aWxzLCBkb21VdGlscyk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0aWxzOyIsImltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiDlvpfliLDkvJrlr7zoh7TlhYPntKDmmL7npLrkuI3lhajnmoTnpZblhYjlhYPntKBcbiAqL1xuXG5mdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICBpZiAodXRpbHMuaXNXaW5kb3coZWxlbWVudCkgfHwgZWxlbWVudC5ub2RlVHlwZSA9PT0gOSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIGllIOi/meS4quS5n+S4jeaYr+WujOWFqOWPr+ihjFxuICAvKlxuICAgPGRpdiBzdHlsZT1cIndpZHRoOiA1MHB4O2hlaWdodDogMTAwcHg7b3ZlcmZsb3c6IGhpZGRlblwiPlxuICAgPGRpdiBzdHlsZT1cIndpZHRoOiA1MHB4O2hlaWdodDogMTAwcHg7cG9zaXRpb246IHJlbGF0aXZlO1wiIGlkPVwiZDZcIj5cbiAgIOWFg+e0oCA2IOmrmCAxMDBweCDlrr0gNTBweDxici8+XG4gICA8L2Rpdj5cbiAgIDwvZGl2PlxuICAgKi9cbiAgLy8gZWxlbWVudC5vZmZzZXRQYXJlbnQgZG9lcyB0aGUgcmlnaHQgdGhpbmcgaW4gaWU3IGFuZCBiZWxvdy4gUmV0dXJuIHBhcmVudCB3aXRoIGxheW91dCFcbiAgLy8gIEluIG90aGVyIGJyb3dzZXJzIGl0IG9ubHkgaW5jbHVkZXMgZWxlbWVudHMgd2l0aCBwb3NpdGlvbiBhYnNvbHV0ZSwgcmVsYXRpdmUgb3JcbiAgLy8gZml4ZWQsIG5vdCBlbGVtZW50cyB3aXRoIG92ZXJmbG93IHNldCB0byBhdXRvIG9yIHNjcm9sbC5cbiAgLy8gICAgICAgIGlmIChVQS5pZSAmJiBpZU1vZGUgPCA4KSB7XG4gIC8vICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0UGFyZW50O1xuICAvLyAgICAgICAgfVxuICAvLyDnu5/kuIDnmoQgb2Zmc2V0UGFyZW50IOaWueazlVxuICB2YXIgZG9jID0gdXRpbHMuZ2V0RG9jdW1lbnQoZWxlbWVudCk7XG4gIHZhciBib2R5ID0gZG9jLmJvZHk7XG4gIHZhciBwYXJlbnQgPSB2b2lkIDA7XG4gIHZhciBwb3NpdGlvblN0eWxlID0gdXRpbHMuY3NzKGVsZW1lbnQsICdwb3NpdGlvbicpO1xuICB2YXIgc2tpcFN0YXRpYyA9IHBvc2l0aW9uU3R5bGUgPT09ICdmaXhlZCcgfHwgcG9zaXRpb25TdHlsZSA9PT0gJ2Fic29sdXRlJztcblxuICBpZiAoIXNraXBTdGF0aWMpIHtcbiAgICByZXR1cm4gZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaHRtbCcgPyBudWxsIDogZWxlbWVudC5wYXJlbnROb2RlO1xuICB9XG5cbiAgZm9yIChwYXJlbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7IHBhcmVudCAmJiBwYXJlbnQgIT09IGJvZHk7IHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlKSB7XG4gICAgcG9zaXRpb25TdHlsZSA9IHV0aWxzLmNzcyhwYXJlbnQsICdwb3NpdGlvbicpO1xuICAgIGlmIChwb3NpdGlvblN0eWxlICE9PSAnc3RhdGljJykge1xuICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldE9mZnNldFBhcmVudDsiLCJpbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gJy4vZ2V0T2Zmc2V0UGFyZW50JztcbmltcG9ydCBpc0FuY2VzdG9yRml4ZWQgZnJvbSAnLi9pc0FuY2VzdG9yRml4ZWQnO1xuXG4vKipcbiAqIOiOt+W+l+WFg+e0oOeahOaYvuekuumDqOWIhueahOWMuuWfn1xuICovXG5mdW5jdGlvbiBnZXRWaXNpYmxlUmVjdEZvckVsZW1lbnQoZWxlbWVudCkge1xuICB2YXIgdmlzaWJsZVJlY3QgPSB7XG4gICAgbGVmdDogMCxcbiAgICByaWdodDogSW5maW5pdHksXG4gICAgdG9wOiAwLFxuICAgIGJvdHRvbTogSW5maW5pdHlcbiAgfTtcbiAgdmFyIGVsID0gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpO1xuICB2YXIgZG9jID0gdXRpbHMuZ2V0RG9jdW1lbnQoZWxlbWVudCk7XG4gIHZhciB3aW4gPSBkb2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdpbmRvdztcbiAgdmFyIGJvZHkgPSBkb2MuYm9keTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgLy8gRGV0ZXJtaW5lIHRoZSBzaXplIG9mIHRoZSB2aXNpYmxlIHJlY3QgYnkgY2xpbWJpbmcgdGhlIGRvbSBhY2NvdW50aW5nIGZvclxuICAvLyBhbGwgc2Nyb2xsYWJsZSBjb250YWluZXJzLlxuICB3aGlsZSAoZWwpIHtcbiAgICAvLyBjbGllbnRXaWR0aCBpcyB6ZXJvIGZvciBpbmxpbmUgYmxvY2sgZWxlbWVudHMgaW4gaWUuXG4gICAgaWYgKChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ01TSUUnKSA9PT0gLTEgfHwgZWwuY2xpZW50V2lkdGggIT09IDApICYmXG4gICAgLy8gYm9keSBtYXkgaGF2ZSBvdmVyZmxvdyBzZXQgb24gaXQsIHlldCB3ZSBzdGlsbCBnZXQgdGhlIGVudGlyZVxuICAgIC8vIHZpZXdwb3J0LiBJbiBzb21lIGJyb3dzZXJzLCBlbC5vZmZzZXRQYXJlbnQgbWF5IGJlXG4gICAgLy8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBzbyBjaGVjayBmb3IgdGhhdCB0b28uXG4gICAgZWwgIT09IGJvZHkgJiYgZWwgIT09IGRvY3VtZW50RWxlbWVudCAmJiB1dGlscy5jc3MoZWwsICdvdmVyZmxvdycpICE9PSAndmlzaWJsZScpIHtcbiAgICAgIHZhciBwb3MgPSB1dGlscy5vZmZzZXQoZWwpO1xuICAgICAgLy8gYWRkIGJvcmRlclxuICAgICAgcG9zLmxlZnQgKz0gZWwuY2xpZW50TGVmdDtcbiAgICAgIHBvcy50b3AgKz0gZWwuY2xpZW50VG9wO1xuICAgICAgdmlzaWJsZVJlY3QudG9wID0gTWF0aC5tYXgodmlzaWJsZVJlY3QudG9wLCBwb3MudG9wKTtcbiAgICAgIHZpc2libGVSZWN0LnJpZ2h0ID0gTWF0aC5taW4odmlzaWJsZVJlY3QucmlnaHQsXG4gICAgICAvLyBjb25zaWRlciBhcmVhIHdpdGhvdXQgc2Nyb2xsQmFyXG4gICAgICBwb3MubGVmdCArIGVsLmNsaWVudFdpZHRoKTtcbiAgICAgIHZpc2libGVSZWN0LmJvdHRvbSA9IE1hdGgubWluKHZpc2libGVSZWN0LmJvdHRvbSwgcG9zLnRvcCArIGVsLmNsaWVudEhlaWdodCk7XG4gICAgICB2aXNpYmxlUmVjdC5sZWZ0ID0gTWF0aC5tYXgodmlzaWJsZVJlY3QubGVmdCwgcG9zLmxlZnQpO1xuICAgIH0gZWxzZSBpZiAoZWwgPT09IGJvZHkgfHwgZWwgPT09IGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGVsID0gZ2V0T2Zmc2V0UGFyZW50KGVsKTtcbiAgfVxuXG4gIC8vIFNldCBlbGVtZW50IHBvc2l0aW9uIHRvIGZpeGVkXG4gIC8vIG1ha2Ugc3VyZSBhYnNvbHV0ZSBlbGVtZW50IGl0c2VsZiBkb24ndCBhZmZlY3QgaXQncyB2aXNpYmxlIGFyZWFcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvNzYwMVxuICB2YXIgb3JpZ2luYWxQb3NpdGlvbiA9IG51bGw7XG4gIGlmICghdXRpbHMuaXNXaW5kb3coZWxlbWVudCkgJiYgZWxlbWVudC5ub2RlVHlwZSAhPT0gOSkge1xuICAgIG9yaWdpbmFsUG9zaXRpb24gPSBlbGVtZW50LnN0eWxlLnBvc2l0aW9uO1xuICAgIHZhciBwb3NpdGlvbiA9IHV0aWxzLmNzcyhlbGVtZW50LCAncG9zaXRpb24nKTtcbiAgICBpZiAocG9zaXRpb24gPT09ICdhYnNvbHV0ZScpIHtcbiAgICAgIGVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgIH1cbiAgfVxuXG4gIHZhciBzY3JvbGxYID0gdXRpbHMuZ2V0V2luZG93U2Nyb2xsTGVmdCh3aW4pO1xuICB2YXIgc2Nyb2xsWSA9IHV0aWxzLmdldFdpbmRvd1Njcm9sbFRvcCh3aW4pO1xuICB2YXIgdmlld3BvcnRXaWR0aCA9IHV0aWxzLnZpZXdwb3J0V2lkdGgod2luKTtcbiAgdmFyIHZpZXdwb3J0SGVpZ2h0ID0gdXRpbHMudmlld3BvcnRIZWlnaHQod2luKTtcbiAgdmFyIGRvY3VtZW50V2lkdGggPSBkb2N1bWVudEVsZW1lbnQuc2Nyb2xsV2lkdGg7XG4gIHZhciBkb2N1bWVudEhlaWdodCA9IGRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQ7XG5cbiAgLy8gc2Nyb2xsWFhYIG9uIGh0bWwgaXMgc3luYyB3aXRoIGJvZHkgd2hpY2ggbWVhbnMgb3ZlcmZsb3c6IGhpZGRlbiBvbiBib2R5IGdldHMgd3Jvbmcgc2Nyb2xsWFhYLlxuICAvLyBXZSBzaG91bGQgY3V0IHRoaXMgb3Vyc2VsZi5cbiAgdmFyIGJvZHlTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGJvZHkpO1xuICBpZiAoYm9keVN0eWxlLm92ZXJmbG93WCA9PT0gJ2hpZGRlbicpIHtcbiAgICBkb2N1bWVudFdpZHRoID0gd2luLmlubmVyV2lkdGg7XG4gIH1cbiAgaWYgKGJvZHlTdHlsZS5vdmVyZmxvd1kgPT09ICdoaWRkZW4nKSB7XG4gICAgZG9jdW1lbnRIZWlnaHQgPSB3aW4uaW5uZXJIZWlnaHQ7XG4gIH1cblxuICAvLyBSZXNldCBlbGVtZW50IHBvc2l0aW9uIGFmdGVyIGNhbGN1bGF0ZSB0aGUgdmlzaWJsZSBhcmVhXG4gIGlmIChlbGVtZW50LnN0eWxlKSB7XG4gICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9IG9yaWdpbmFsUG9zaXRpb247XG4gIH1cblxuICBpZiAoaXNBbmNlc3RvckZpeGVkKGVsZW1lbnQpKSB7XG4gICAgLy8gQ2xpcCBieSB2aWV3cG9ydCdzIHNpemUuXG4gICAgdmlzaWJsZVJlY3QubGVmdCA9IE1hdGgubWF4KHZpc2libGVSZWN0LmxlZnQsIHNjcm9sbFgpO1xuICAgIHZpc2libGVSZWN0LnRvcCA9IE1hdGgubWF4KHZpc2libGVSZWN0LnRvcCwgc2Nyb2xsWSk7XG4gICAgdmlzaWJsZVJlY3QucmlnaHQgPSBNYXRoLm1pbih2aXNpYmxlUmVjdC5yaWdodCwgc2Nyb2xsWCArIHZpZXdwb3J0V2lkdGgpO1xuICAgIHZpc2libGVSZWN0LmJvdHRvbSA9IE1hdGgubWluKHZpc2libGVSZWN0LmJvdHRvbSwgc2Nyb2xsWSArIHZpZXdwb3J0SGVpZ2h0KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDbGlwIGJ5IGRvY3VtZW50J3Mgc2l6ZS5cbiAgICB2YXIgbWF4VmlzaWJsZVdpZHRoID0gTWF0aC5tYXgoZG9jdW1lbnRXaWR0aCwgc2Nyb2xsWCArIHZpZXdwb3J0V2lkdGgpO1xuICAgIHZpc2libGVSZWN0LnJpZ2h0ID0gTWF0aC5taW4odmlzaWJsZVJlY3QucmlnaHQsIG1heFZpc2libGVXaWR0aCk7XG5cbiAgICB2YXIgbWF4VmlzaWJsZUhlaWdodCA9IE1hdGgubWF4KGRvY3VtZW50SGVpZ2h0LCBzY3JvbGxZICsgdmlld3BvcnRIZWlnaHQpO1xuICAgIHZpc2libGVSZWN0LmJvdHRvbSA9IE1hdGgubWluKHZpc2libGVSZWN0LmJvdHRvbSwgbWF4VmlzaWJsZUhlaWdodCk7XG4gIH1cblxuICByZXR1cm4gdmlzaWJsZVJlY3QudG9wID49IDAgJiYgdmlzaWJsZVJlY3QubGVmdCA+PSAwICYmIHZpc2libGVSZWN0LmJvdHRvbSA+IHZpc2libGVSZWN0LnRvcCAmJiB2aXNpYmxlUmVjdC5yaWdodCA+IHZpc2libGVSZWN0LmxlZnQgPyB2aXNpYmxlUmVjdCA6IG51bGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldFZpc2libGVSZWN0Rm9yRWxlbWVudDsiLCJpbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQW5jZXN0b3JGaXhlZChlbGVtZW50KSB7XG4gIGlmICh1dGlscy5pc1dpbmRvdyhlbGVtZW50KSB8fCBlbGVtZW50Lm5vZGVUeXBlID09PSA5KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGRvYyA9IHV0aWxzLmdldERvY3VtZW50KGVsZW1lbnQpO1xuICB2YXIgYm9keSA9IGRvYy5ib2R5O1xuICB2YXIgcGFyZW50ID0gbnVsbDtcbiAgZm9yIChwYXJlbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7IHBhcmVudCAmJiBwYXJlbnQgIT09IGJvZHk7IHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlKSB7XG4gICAgdmFyIHBvc2l0aW9uU3R5bGUgPSB1dGlscy5jc3MocGFyZW50LCAncG9zaXRpb24nKTtcbiAgICBpZiAocG9zaXRpb25TdHlsZSA9PT0gJ2ZpeGVkJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn0iLCJpbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmZ1bmN0aW9uIGFkanVzdEZvclZpZXdwb3J0KGVsRnV0dXJlUG9zLCBlbFJlZ2lvbiwgdmlzaWJsZVJlY3QsIG92ZXJmbG93KSB7XG4gIHZhciBwb3MgPSB1dGlscy5jbG9uZShlbEZ1dHVyZVBvcyk7XG4gIHZhciBzaXplID0ge1xuICAgIHdpZHRoOiBlbFJlZ2lvbi53aWR0aCxcbiAgICBoZWlnaHQ6IGVsUmVnaW9uLmhlaWdodFxuICB9O1xuXG4gIGlmIChvdmVyZmxvdy5hZGp1c3RYICYmIHBvcy5sZWZ0IDwgdmlzaWJsZVJlY3QubGVmdCkge1xuICAgIHBvcy5sZWZ0ID0gdmlzaWJsZVJlY3QubGVmdDtcbiAgfVxuXG4gIC8vIExlZnQgZWRnZSBpbnNpZGUgYW5kIHJpZ2h0IGVkZ2Ugb3V0c2lkZSB2aWV3cG9ydCwgdHJ5IHRvIHJlc2l6ZSBpdC5cbiAgaWYgKG92ZXJmbG93LnJlc2l6ZVdpZHRoICYmIHBvcy5sZWZ0ID49IHZpc2libGVSZWN0LmxlZnQgJiYgcG9zLmxlZnQgKyBzaXplLndpZHRoID4gdmlzaWJsZVJlY3QucmlnaHQpIHtcbiAgICBzaXplLndpZHRoIC09IHBvcy5sZWZ0ICsgc2l6ZS53aWR0aCAtIHZpc2libGVSZWN0LnJpZ2h0O1xuICB9XG5cbiAgLy8gUmlnaHQgZWRnZSBvdXRzaWRlIHZpZXdwb3J0LCB0cnkgdG8gbW92ZSBpdC5cbiAgaWYgKG92ZXJmbG93LmFkanVzdFggJiYgcG9zLmxlZnQgKyBzaXplLndpZHRoID4gdmlzaWJsZVJlY3QucmlnaHQpIHtcbiAgICAvLyDkv53or4Hlt6bovrnnlYzlkozlj6/op4bljLrln5/lt6bovrnnlYzlr7npvZBcbiAgICBwb3MubGVmdCA9IE1hdGgubWF4KHZpc2libGVSZWN0LnJpZ2h0IC0gc2l6ZS53aWR0aCwgdmlzaWJsZVJlY3QubGVmdCk7XG4gIH1cblxuICAvLyBUb3AgZWRnZSBvdXRzaWRlIHZpZXdwb3J0LCB0cnkgdG8gbW92ZSBpdC5cbiAgaWYgKG92ZXJmbG93LmFkanVzdFkgJiYgcG9zLnRvcCA8IHZpc2libGVSZWN0LnRvcCkge1xuICAgIHBvcy50b3AgPSB2aXNpYmxlUmVjdC50b3A7XG4gIH1cblxuICAvLyBUb3AgZWRnZSBpbnNpZGUgYW5kIGJvdHRvbSBlZGdlIG91dHNpZGUgdmlld3BvcnQsIHRyeSB0byByZXNpemUgaXQuXG4gIGlmIChvdmVyZmxvdy5yZXNpemVIZWlnaHQgJiYgcG9zLnRvcCA+PSB2aXNpYmxlUmVjdC50b3AgJiYgcG9zLnRvcCArIHNpemUuaGVpZ2h0ID4gdmlzaWJsZVJlY3QuYm90dG9tKSB7XG4gICAgc2l6ZS5oZWlnaHQgLT0gcG9zLnRvcCArIHNpemUuaGVpZ2h0IC0gdmlzaWJsZVJlY3QuYm90dG9tO1xuICB9XG5cbiAgLy8gQm90dG9tIGVkZ2Ugb3V0c2lkZSB2aWV3cG9ydCwgdHJ5IHRvIG1vdmUgaXQuXG4gIGlmIChvdmVyZmxvdy5hZGp1c3RZICYmIHBvcy50b3AgKyBzaXplLmhlaWdodCA+IHZpc2libGVSZWN0LmJvdHRvbSkge1xuICAgIC8vIOS/neivgeS4iui+ueeVjOWSjOWPr+inhuWMuuWfn+S4iui+ueeVjOWvuem9kFxuICAgIHBvcy50b3AgPSBNYXRoLm1heCh2aXNpYmxlUmVjdC5ib3R0b20gLSBzaXplLmhlaWdodCwgdmlzaWJsZVJlY3QudG9wKTtcbiAgfVxuXG4gIHJldHVybiB1dGlscy5taXgocG9zLCBzaXplKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYWRqdXN0Rm9yVmlld3BvcnQ7IiwiaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5mdW5jdGlvbiBnZXRSZWdpb24obm9kZSkge1xuICB2YXIgb2Zmc2V0ID0gdm9pZCAwO1xuICB2YXIgdyA9IHZvaWQgMDtcbiAgdmFyIGggPSB2b2lkIDA7XG4gIGlmICghdXRpbHMuaXNXaW5kb3cobm9kZSkgJiYgbm9kZS5ub2RlVHlwZSAhPT0gOSkge1xuICAgIG9mZnNldCA9IHV0aWxzLm9mZnNldChub2RlKTtcbiAgICB3ID0gdXRpbHMub3V0ZXJXaWR0aChub2RlKTtcbiAgICBoID0gdXRpbHMub3V0ZXJIZWlnaHQobm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHdpbiA9IHV0aWxzLmdldFdpbmRvdyhub2RlKTtcbiAgICBvZmZzZXQgPSB7XG4gICAgICBsZWZ0OiB1dGlscy5nZXRXaW5kb3dTY3JvbGxMZWZ0KHdpbiksXG4gICAgICB0b3A6IHV0aWxzLmdldFdpbmRvd1Njcm9sbFRvcCh3aW4pXG4gICAgfTtcbiAgICB3ID0gdXRpbHMudmlld3BvcnRXaWR0aCh3aW4pO1xuICAgIGggPSB1dGlscy52aWV3cG9ydEhlaWdodCh3aW4pO1xuICB9XG4gIG9mZnNldC53aWR0aCA9IHc7XG4gIG9mZnNldC5oZWlnaHQgPSBoO1xuICByZXR1cm4gb2Zmc2V0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRSZWdpb247IiwiLyoqXG4gKiDojrflj5Ygbm9kZSDkuIrnmoQgYWxpZ24g5a+56b2Q54K5IOebuOWvueS6jumhtemdoueahOWdkOagh1xuICovXG5cbmZ1bmN0aW9uIGdldEFsaWduT2Zmc2V0KHJlZ2lvbiwgYWxpZ24pIHtcbiAgdmFyIFYgPSBhbGlnbi5jaGFyQXQoMCk7XG4gIHZhciBIID0gYWxpZ24uY2hhckF0KDEpO1xuICB2YXIgdyA9IHJlZ2lvbi53aWR0aDtcbiAgdmFyIGggPSByZWdpb24uaGVpZ2h0O1xuXG4gIHZhciB4ID0gcmVnaW9uLmxlZnQ7XG4gIHZhciB5ID0gcmVnaW9uLnRvcDtcblxuICBpZiAoViA9PT0gJ2MnKSB7XG4gICAgeSArPSBoIC8gMjtcbiAgfSBlbHNlIGlmIChWID09PSAnYicpIHtcbiAgICB5ICs9IGg7XG4gIH1cblxuICBpZiAoSCA9PT0gJ2MnKSB7XG4gICAgeCArPSB3IC8gMjtcbiAgfSBlbHNlIGlmIChIID09PSAncicpIHtcbiAgICB4ICs9IHc7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxlZnQ6IHgsXG4gICAgdG9wOiB5XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldEFsaWduT2Zmc2V0OyIsImltcG9ydCBnZXRBbGlnbk9mZnNldCBmcm9tICcuL2dldEFsaWduT2Zmc2V0JztcblxuZnVuY3Rpb24gZ2V0RWxGdXR1cmVQb3MoZWxSZWdpb24sIHJlZk5vZGVSZWdpb24sIHBvaW50cywgb2Zmc2V0LCB0YXJnZXRPZmZzZXQpIHtcbiAgdmFyIHAxID0gZ2V0QWxpZ25PZmZzZXQocmVmTm9kZVJlZ2lvbiwgcG9pbnRzWzFdKTtcbiAgdmFyIHAyID0gZ2V0QWxpZ25PZmZzZXQoZWxSZWdpb24sIHBvaW50c1swXSk7XG4gIHZhciBkaWZmID0gW3AyLmxlZnQgLSBwMS5sZWZ0LCBwMi50b3AgLSBwMS50b3BdO1xuXG4gIHJldHVybiB7XG4gICAgbGVmdDogTWF0aC5yb3VuZChlbFJlZ2lvbi5sZWZ0IC0gZGlmZlswXSArIG9mZnNldFswXSAtIHRhcmdldE9mZnNldFswXSksXG4gICAgdG9wOiBNYXRoLnJvdW5kKGVsUmVnaW9uLnRvcCAtIGRpZmZbMV0gKyBvZmZzZXRbMV0gLSB0YXJnZXRPZmZzZXRbMV0pXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldEVsRnV0dXJlUG9zOyIsIi8qKlxuICogYWxpZ24gZG9tIG5vZGUgZmxleGlibHlcbiAqIEBhdXRob3IgeWltaW5naGVAZ21haWwuY29tXG4gKi9cblxuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBnZXRWaXNpYmxlUmVjdEZvckVsZW1lbnQgZnJvbSAnLi4vZ2V0VmlzaWJsZVJlY3RGb3JFbGVtZW50JztcbmltcG9ydCBhZGp1c3RGb3JWaWV3cG9ydCBmcm9tICcuLi9hZGp1c3RGb3JWaWV3cG9ydCc7XG5pbXBvcnQgZ2V0UmVnaW9uIGZyb20gJy4uL2dldFJlZ2lvbic7XG5pbXBvcnQgZ2V0RWxGdXR1cmVQb3MgZnJvbSAnLi4vZ2V0RWxGdXR1cmVQb3MnO1xuXG4vLyBodHRwOi8veWltaW5naGUuaXRleWUuY29tL2Jsb2cvMTEyNDcyMFxuXG5mdW5jdGlvbiBpc0ZhaWxYKGVsRnV0dXJlUG9zLCBlbFJlZ2lvbiwgdmlzaWJsZVJlY3QpIHtcbiAgcmV0dXJuIGVsRnV0dXJlUG9zLmxlZnQgPCB2aXNpYmxlUmVjdC5sZWZ0IHx8IGVsRnV0dXJlUG9zLmxlZnQgKyBlbFJlZ2lvbi53aWR0aCA+IHZpc2libGVSZWN0LnJpZ2h0O1xufVxuXG5mdW5jdGlvbiBpc0ZhaWxZKGVsRnV0dXJlUG9zLCBlbFJlZ2lvbiwgdmlzaWJsZVJlY3QpIHtcbiAgcmV0dXJuIGVsRnV0dXJlUG9zLnRvcCA8IHZpc2libGVSZWN0LnRvcCB8fCBlbEZ1dHVyZVBvcy50b3AgKyBlbFJlZ2lvbi5oZWlnaHQgPiB2aXNpYmxlUmVjdC5ib3R0b207XG59XG5cbmZ1bmN0aW9uIGlzQ29tcGxldGVGYWlsWChlbEZ1dHVyZVBvcywgZWxSZWdpb24sIHZpc2libGVSZWN0KSB7XG4gIHJldHVybiBlbEZ1dHVyZVBvcy5sZWZ0ID4gdmlzaWJsZVJlY3QucmlnaHQgfHwgZWxGdXR1cmVQb3MubGVmdCArIGVsUmVnaW9uLndpZHRoIDwgdmlzaWJsZVJlY3QubGVmdDtcbn1cblxuZnVuY3Rpb24gaXNDb21wbGV0ZUZhaWxZKGVsRnV0dXJlUG9zLCBlbFJlZ2lvbiwgdmlzaWJsZVJlY3QpIHtcbiAgcmV0dXJuIGVsRnV0dXJlUG9zLnRvcCA+IHZpc2libGVSZWN0LmJvdHRvbSB8fCBlbEZ1dHVyZVBvcy50b3AgKyBlbFJlZ2lvbi5oZWlnaHQgPCB2aXNpYmxlUmVjdC50b3A7XG59XG5cbmZ1bmN0aW9uIGZsaXAocG9pbnRzLCByZWcsIG1hcCkge1xuICB2YXIgcmV0ID0gW107XG4gIHV0aWxzLmVhY2gocG9pbnRzLCBmdW5jdGlvbiAocCkge1xuICAgIHJldC5wdXNoKHAucmVwbGFjZShyZWcsIGZ1bmN0aW9uIChtKSB7XG4gICAgICByZXR1cm4gbWFwW21dO1xuICAgIH0pKTtcbiAgfSk7XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGZsaXBPZmZzZXQob2Zmc2V0LCBpbmRleCkge1xuICBvZmZzZXRbaW5kZXhdID0gLW9mZnNldFtpbmRleF07XG4gIHJldHVybiBvZmZzZXQ7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRPZmZzZXQoc3RyLCBvZmZzZXRMZW4pIHtcbiAgdmFyIG4gPSB2b2lkIDA7XG4gIGlmICgvJSQvLnRlc3Qoc3RyKSkge1xuICAgIG4gPSBwYXJzZUludChzdHIuc3Vic3RyaW5nKDAsIHN0ci5sZW5ndGggLSAxKSwgMTApIC8gMTAwICogb2Zmc2V0TGVuO1xuICB9IGVsc2Uge1xuICAgIG4gPSBwYXJzZUludChzdHIsIDEwKTtcbiAgfVxuICByZXR1cm4gbiB8fCAwO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVPZmZzZXQob2Zmc2V0LCBlbCkge1xuICBvZmZzZXRbMF0gPSBjb252ZXJ0T2Zmc2V0KG9mZnNldFswXSwgZWwud2lkdGgpO1xuICBvZmZzZXRbMV0gPSBjb252ZXJ0T2Zmc2V0KG9mZnNldFsxXSwgZWwuaGVpZ2h0KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gZWxcbiAqIEBwYXJhbSB0Z3RSZWdpb24g5Y+C54Wn6IqC54K55omA5Y2g55qE5Yy65Z+fOiB7IGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCB9XG4gKiBAcGFyYW0gYWxpZ25cbiAqL1xuZnVuY3Rpb24gZG9BbGlnbihlbCwgdGd0UmVnaW9uLCBhbGlnbiwgaXNUZ3RSZWdpb25WaXNpYmxlKSB7XG4gIHZhciBwb2ludHMgPSBhbGlnbi5wb2ludHM7XG4gIHZhciBvZmZzZXQgPSBhbGlnbi5vZmZzZXQgfHwgWzAsIDBdO1xuICB2YXIgdGFyZ2V0T2Zmc2V0ID0gYWxpZ24udGFyZ2V0T2Zmc2V0IHx8IFswLCAwXTtcbiAgdmFyIG92ZXJmbG93ID0gYWxpZ24ub3ZlcmZsb3c7XG4gIHZhciBzb3VyY2UgPSBhbGlnbi5zb3VyY2UgfHwgZWw7XG4gIG9mZnNldCA9IFtdLmNvbmNhdChvZmZzZXQpO1xuICB0YXJnZXRPZmZzZXQgPSBbXS5jb25jYXQodGFyZ2V0T2Zmc2V0KTtcbiAgb3ZlcmZsb3cgPSBvdmVyZmxvdyB8fCB7fTtcbiAgdmFyIG5ld092ZXJmbG93Q2ZnID0ge307XG4gIHZhciBmYWlsID0gMDtcbiAgLy8g5b2T5YmN6IqC54K55Y+v5Lul6KKr5pS+572u55qE5pi+56S65Yy65Z+fXG4gIHZhciB2aXNpYmxlUmVjdCA9IGdldFZpc2libGVSZWN0Rm9yRWxlbWVudChzb3VyY2UpO1xuICAvLyDlvZPliY3oioLngrnmiYDljaDnmoTljLrln58sIGxlZnQvdG9wL3dpZHRoL2hlaWdodFxuICB2YXIgZWxSZWdpb24gPSBnZXRSZWdpb24oc291cmNlKTtcbiAgLy8g5bCGIG9mZnNldCDovazmjaLmiJDmlbDlgLzvvIzmlK/mjIHnmb7liIbmr5RcbiAgbm9ybWFsaXplT2Zmc2V0KG9mZnNldCwgZWxSZWdpb24pO1xuICBub3JtYWxpemVPZmZzZXQodGFyZ2V0T2Zmc2V0LCB0Z3RSZWdpb24pO1xuICAvLyDlvZPliY3oioLngrnlsIbopoHooqvmlL7nva7nmoTkvY3nva5cbiAgdmFyIGVsRnV0dXJlUG9zID0gZ2V0RWxGdXR1cmVQb3MoZWxSZWdpb24sIHRndFJlZ2lvbiwgcG9pbnRzLCBvZmZzZXQsIHRhcmdldE9mZnNldCk7XG4gIC8vIOW9k+WJjeiKgueCueWwhuimgeaJgOWkhOeahOWMuuWfn1xuICB2YXIgbmV3RWxSZWdpb24gPSB1dGlscy5tZXJnZShlbFJlZ2lvbiwgZWxGdXR1cmVQb3MpO1xuXG4gIC8vIOWmguaenOWPr+inhuWMuuWfn+S4jeiDveWujOWFqOaUvue9ruW9k+WJjeiKgueCueaXtuWFgeiuuOiwg+aVtFxuICBpZiAodmlzaWJsZVJlY3QgJiYgKG92ZXJmbG93LmFkanVzdFggfHwgb3ZlcmZsb3cuYWRqdXN0WSkgJiYgaXNUZ3RSZWdpb25WaXNpYmxlKSB7XG4gICAgaWYgKG92ZXJmbG93LmFkanVzdFgpIHtcbiAgICAgIC8vIOWmguaenOaoquWQkeS4jeiDveaUvuS4i1xuICAgICAgaWYgKGlzRmFpbFgoZWxGdXR1cmVQb3MsIGVsUmVnaW9uLCB2aXNpYmxlUmVjdCkpIHtcbiAgICAgICAgLy8g5a+56b2Q5L2N572u5Y+N5LiLXG4gICAgICAgIHZhciBuZXdQb2ludHMgPSBmbGlwKHBvaW50cywgL1tscl0vaWcsIHtcbiAgICAgICAgICBsOiAncicsXG4gICAgICAgICAgcjogJ2wnXG4gICAgICAgIH0pO1xuICAgICAgICAvLyDlgY/np7vph4/kuZ/lj43kuItcbiAgICAgICAgdmFyIG5ld09mZnNldCA9IGZsaXBPZmZzZXQob2Zmc2V0LCAwKTtcbiAgICAgICAgdmFyIG5ld1RhcmdldE9mZnNldCA9IGZsaXBPZmZzZXQodGFyZ2V0T2Zmc2V0LCAwKTtcbiAgICAgICAgdmFyIG5ld0VsRnV0dXJlUG9zID0gZ2V0RWxGdXR1cmVQb3MoZWxSZWdpb24sIHRndFJlZ2lvbiwgbmV3UG9pbnRzLCBuZXdPZmZzZXQsIG5ld1RhcmdldE9mZnNldCk7XG5cbiAgICAgICAgaWYgKCFpc0NvbXBsZXRlRmFpbFgobmV3RWxGdXR1cmVQb3MsIGVsUmVnaW9uLCB2aXNpYmxlUmVjdCkpIHtcbiAgICAgICAgICBmYWlsID0gMTtcbiAgICAgICAgICBwb2ludHMgPSBuZXdQb2ludHM7XG4gICAgICAgICAgb2Zmc2V0ID0gbmV3T2Zmc2V0O1xuICAgICAgICAgIHRhcmdldE9mZnNldCA9IG5ld1RhcmdldE9mZnNldDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvdmVyZmxvdy5hZGp1c3RZKSB7XG4gICAgICAvLyDlpoLmnpznurXlkJHkuI3og73mlL7kuItcbiAgICAgIGlmIChpc0ZhaWxZKGVsRnV0dXJlUG9zLCBlbFJlZ2lvbiwgdmlzaWJsZVJlY3QpKSB7XG4gICAgICAgIC8vIOWvuem9kOS9jee9ruWPjeS4i1xuICAgICAgICB2YXIgX25ld1BvaW50cyA9IGZsaXAocG9pbnRzLCAvW3RiXS9pZywge1xuICAgICAgICAgIHQ6ICdiJyxcbiAgICAgICAgICBiOiAndCdcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIOWBj+enu+mHj+S5n+WPjeS4i1xuICAgICAgICB2YXIgX25ld09mZnNldCA9IGZsaXBPZmZzZXQob2Zmc2V0LCAxKTtcbiAgICAgICAgdmFyIF9uZXdUYXJnZXRPZmZzZXQgPSBmbGlwT2Zmc2V0KHRhcmdldE9mZnNldCwgMSk7XG4gICAgICAgIHZhciBfbmV3RWxGdXR1cmVQb3MgPSBnZXRFbEZ1dHVyZVBvcyhlbFJlZ2lvbiwgdGd0UmVnaW9uLCBfbmV3UG9pbnRzLCBfbmV3T2Zmc2V0LCBfbmV3VGFyZ2V0T2Zmc2V0KTtcblxuICAgICAgICBpZiAoIWlzQ29tcGxldGVGYWlsWShfbmV3RWxGdXR1cmVQb3MsIGVsUmVnaW9uLCB2aXNpYmxlUmVjdCkpIHtcbiAgICAgICAgICBmYWlsID0gMTtcbiAgICAgICAgICBwb2ludHMgPSBfbmV3UG9pbnRzO1xuICAgICAgICAgIG9mZnNldCA9IF9uZXdPZmZzZXQ7XG4gICAgICAgICAgdGFyZ2V0T2Zmc2V0ID0gX25ld1RhcmdldE9mZnNldDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIOWmguaenOWksei0pe+8jOmHjeaWsOiuoeeul+W9k+WJjeiKgueCueWwhuimgeiiq+aUvue9rueahOS9jee9rlxuICAgIGlmIChmYWlsKSB7XG4gICAgICBlbEZ1dHVyZVBvcyA9IGdldEVsRnV0dXJlUG9zKGVsUmVnaW9uLCB0Z3RSZWdpb24sIHBvaW50cywgb2Zmc2V0LCB0YXJnZXRPZmZzZXQpO1xuICAgICAgdXRpbHMubWl4KG5ld0VsUmVnaW9uLCBlbEZ1dHVyZVBvcyk7XG4gICAgfVxuICAgIHZhciBpc1N0aWxsRmFpbFggPSBpc0ZhaWxYKGVsRnV0dXJlUG9zLCBlbFJlZ2lvbiwgdmlzaWJsZVJlY3QpO1xuICAgIHZhciBpc1N0aWxsRmFpbFkgPSBpc0ZhaWxZKGVsRnV0dXJlUG9zLCBlbFJlZ2lvbiwgdmlzaWJsZVJlY3QpO1xuICAgIC8vIOajgOafpeWPjeS4i+WQjueahOS9jee9ruaYr+WQpuWPr+S7peaUvuS4i+S6hu+8jOWmguaenOS7jeeEtuaUvuS4jeS4i++8mlxuICAgIC8vIDEuIOWkjeWOn+S/ruaUuei/h+eahOWumuS9jeWPguaVsFxuICAgIGlmIChpc1N0aWxsRmFpbFggfHwgaXNTdGlsbEZhaWxZKSB7XG4gICAgICBwb2ludHMgPSBhbGlnbi5wb2ludHM7XG4gICAgICBvZmZzZXQgPSBhbGlnbi5vZmZzZXQgfHwgWzAsIDBdO1xuICAgICAgdGFyZ2V0T2Zmc2V0ID0gYWxpZ24udGFyZ2V0T2Zmc2V0IHx8IFswLCAwXTtcbiAgICB9XG4gICAgLy8gMi4g5Y+q5pyJ5oyH5a6a5LqG5Y+v5Lul6LCD5pW05b2T5YmN5pa55ZCR5omN6LCD5pW0XG4gICAgbmV3T3ZlcmZsb3dDZmcuYWRqdXN0WCA9IG92ZXJmbG93LmFkanVzdFggJiYgaXNTdGlsbEZhaWxYO1xuICAgIG5ld092ZXJmbG93Q2ZnLmFkanVzdFkgPSBvdmVyZmxvdy5hZGp1c3RZICYmIGlzU3RpbGxGYWlsWTtcblxuICAgIC8vIOehruWunuimgeiwg+aVtO+8jOeUmuiHs+WPr+iDveS8muiwg+aVtOmrmOW6puWuveW6plxuICAgIGlmIChuZXdPdmVyZmxvd0NmZy5hZGp1c3RYIHx8IG5ld092ZXJmbG93Q2ZnLmFkanVzdFkpIHtcbiAgICAgIG5ld0VsUmVnaW9uID0gYWRqdXN0Rm9yVmlld3BvcnQoZWxGdXR1cmVQb3MsIGVsUmVnaW9uLCB2aXNpYmxlUmVjdCwgbmV3T3ZlcmZsb3dDZmcpO1xuICAgIH1cbiAgfVxuXG4gIC8vIG5lZWQganVkZ2UgdG8gaW4gY2FzZSBzZXQgZml4ZWQgd2l0aCBpbiBjc3Mgb24gaGVpZ2h0IGF1dG8gZWxlbWVudFxuICBpZiAobmV3RWxSZWdpb24ud2lkdGggIT09IGVsUmVnaW9uLndpZHRoKSB7XG4gICAgdXRpbHMuY3NzKHNvdXJjZSwgJ3dpZHRoJywgdXRpbHMud2lkdGgoc291cmNlKSArIG5ld0VsUmVnaW9uLndpZHRoIC0gZWxSZWdpb24ud2lkdGgpO1xuICB9XG5cbiAgaWYgKG5ld0VsUmVnaW9uLmhlaWdodCAhPT0gZWxSZWdpb24uaGVpZ2h0KSB7XG4gICAgdXRpbHMuY3NzKHNvdXJjZSwgJ2hlaWdodCcsIHV0aWxzLmhlaWdodChzb3VyY2UpICsgbmV3RWxSZWdpb24uaGVpZ2h0IC0gZWxSZWdpb24uaGVpZ2h0KTtcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9raXNzeXRlYW0va2lzc3kvaXNzdWVzLzE5MFxuICAvLyDnm7jlr7nkuo7lsY/luZXkvY3nva7msqHlj5jvvIzogIwgbGVmdC90b3Ag5Y+Y5LqGXG4gIC8vIOS+i+WmgiA8ZGl2ICdyZWxhdGl2ZSc+PGVsIGFic29sdXRlPjwvZGl2PlxuICB1dGlscy5vZmZzZXQoc291cmNlLCB7XG4gICAgbGVmdDogbmV3RWxSZWdpb24ubGVmdCxcbiAgICB0b3A6IG5ld0VsUmVnaW9uLnRvcFxuICB9LCB7XG4gICAgdXNlQ3NzUmlnaHQ6IGFsaWduLnVzZUNzc1JpZ2h0LFxuICAgIHVzZUNzc0JvdHRvbTogYWxpZ24udXNlQ3NzQm90dG9tLFxuICAgIHVzZUNzc1RyYW5zZm9ybTogYWxpZ24udXNlQ3NzVHJhbnNmb3JtLFxuICAgIGlnbm9yZVNoYWtlOiBhbGlnbi5pZ25vcmVTaGFrZVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHBvaW50czogcG9pbnRzLFxuICAgIG9mZnNldDogb2Zmc2V0LFxuICAgIHRhcmdldE9mZnNldDogdGFyZ2V0T2Zmc2V0LFxuICAgIG92ZXJmbG93OiBuZXdPdmVyZmxvd0NmZ1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBkb0FsaWduO1xuLyoqXG4gKiAgMjAxMi0wNC0yNiB5aW1pbmdoZUBnbWFpbC5jb21cbiAqICAgLSDkvJjljJbmmbrog73lr7npvZDnrpfms5VcbiAqICAgLSDmhY7nlKggcmVzaXplWFhcbiAqXG4gKiAgMjAxMS0wNy0xMyB5aW1pbmdoZUBnbWFpbC5jb20gbm90ZTpcbiAqICAgLSDlop7liqDmmbrog73lr7npvZDvvIzku6Xlj4rlpKflsI/osIPmlbTpgInpoblcbiAqKi8iLCJpbXBvcnQgZG9BbGlnbiBmcm9tICcuL2FsaWduJztcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSAnLi4vZ2V0T2Zmc2V0UGFyZW50JztcbmltcG9ydCBnZXRWaXNpYmxlUmVjdEZvckVsZW1lbnQgZnJvbSAnLi4vZ2V0VmlzaWJsZVJlY3RGb3JFbGVtZW50JztcbmltcG9ydCBnZXRSZWdpb24gZnJvbSAnLi4vZ2V0UmVnaW9uJztcblxuZnVuY3Rpb24gaXNPdXRPZlZpc2libGVSZWN0KHRhcmdldCkge1xuICB2YXIgdmlzaWJsZVJlY3QgPSBnZXRWaXNpYmxlUmVjdEZvckVsZW1lbnQodGFyZ2V0KTtcbiAgdmFyIHRhcmdldFJlZ2lvbiA9IGdldFJlZ2lvbih0YXJnZXQpO1xuXG4gIHJldHVybiAhdmlzaWJsZVJlY3QgfHwgdGFyZ2V0UmVnaW9uLmxlZnQgKyB0YXJnZXRSZWdpb24ud2lkdGggPD0gdmlzaWJsZVJlY3QubGVmdCB8fCB0YXJnZXRSZWdpb24udG9wICsgdGFyZ2V0UmVnaW9uLmhlaWdodCA8PSB2aXNpYmxlUmVjdC50b3AgfHwgdGFyZ2V0UmVnaW9uLmxlZnQgPj0gdmlzaWJsZVJlY3QucmlnaHQgfHwgdGFyZ2V0UmVnaW9uLnRvcCA+PSB2aXNpYmxlUmVjdC5ib3R0b207XG59XG5cbmZ1bmN0aW9uIGFsaWduRWxlbWVudChlbCwgcmVmTm9kZSwgYWxpZ24pIHtcbiAgdmFyIHRhcmdldCA9IGFsaWduLnRhcmdldCB8fCByZWZOb2RlO1xuICB2YXIgcmVmTm9kZVJlZ2lvbiA9IGdldFJlZ2lvbih0YXJnZXQpO1xuXG4gIHZhciBpc1RhcmdldE5vdE91dE9mVmlzaWJsZSA9ICFpc091dE9mVmlzaWJsZVJlY3QodGFyZ2V0KTtcblxuICByZXR1cm4gZG9BbGlnbihlbCwgcmVmTm9kZVJlZ2lvbiwgYWxpZ24sIGlzVGFyZ2V0Tm90T3V0T2ZWaXNpYmxlKTtcbn1cblxuYWxpZ25FbGVtZW50Ll9fZ2V0T2Zmc2V0UGFyZW50ID0gZ2V0T2Zmc2V0UGFyZW50O1xuXG5hbGlnbkVsZW1lbnQuX19nZXRWaXNpYmxlUmVjdEZvckVsZW1lbnQgPSBnZXRWaXNpYmxlUmVjdEZvckVsZW1lbnQ7XG5cbmV4cG9ydCBkZWZhdWx0IGFsaWduRWxlbWVudDsiLCJ2YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IGRvQWxpZ24gZnJvbSAnLi9hbGlnbic7XG5cbi8qKlxuICogYHRndFBvaW50YDogeyBwYWdlWCwgcGFnZVkgfSBvciB7IGNsaWVudFgsIGNsaWVudFkgfS5cbiAqIElmIGNsaWVudCBwb3NpdGlvbiBwcm92aWRlZCwgd2lsbCBpbnRlcm5hbCBjb252ZXJ0IHRvIHBhZ2UgcG9zaXRpb24uXG4gKi9cblxuZnVuY3Rpb24gYWxpZ25Qb2ludChlbCwgdGd0UG9pbnQsIGFsaWduKSB7XG4gIHZhciBwYWdlWCA9IHZvaWQgMDtcbiAgdmFyIHBhZ2VZID0gdm9pZCAwO1xuXG4gIHZhciBkb2MgPSB1dGlscy5nZXREb2N1bWVudChlbCk7XG4gIHZhciB3aW4gPSBkb2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdpbmRvdztcblxuICB2YXIgc2Nyb2xsWCA9IHV0aWxzLmdldFdpbmRvd1Njcm9sbExlZnQod2luKTtcbiAgdmFyIHNjcm9sbFkgPSB1dGlscy5nZXRXaW5kb3dTY3JvbGxUb3Aod2luKTtcbiAgdmFyIHZpZXdwb3J0V2lkdGggPSB1dGlscy52aWV3cG9ydFdpZHRoKHdpbik7XG4gIHZhciB2aWV3cG9ydEhlaWdodCA9IHV0aWxzLnZpZXdwb3J0SGVpZ2h0KHdpbik7XG5cbiAgaWYgKCdwYWdlWCcgaW4gdGd0UG9pbnQpIHtcbiAgICBwYWdlWCA9IHRndFBvaW50LnBhZ2VYO1xuICB9IGVsc2Uge1xuICAgIHBhZ2VYID0gc2Nyb2xsWCArIHRndFBvaW50LmNsaWVudFg7XG4gIH1cblxuICBpZiAoJ3BhZ2VZJyBpbiB0Z3RQb2ludCkge1xuICAgIHBhZ2VZID0gdGd0UG9pbnQucGFnZVk7XG4gIH0gZWxzZSB7XG4gICAgcGFnZVkgPSBzY3JvbGxZICsgdGd0UG9pbnQuY2xpZW50WTtcbiAgfVxuXG4gIHZhciB0Z3RSZWdpb24gPSB7XG4gICAgbGVmdDogcGFnZVgsXG4gICAgdG9wOiBwYWdlWSxcbiAgICB3aWR0aDogMCxcbiAgICBoZWlnaHQ6IDBcbiAgfTtcblxuICB2YXIgcG9pbnRJblZpZXcgPSBwYWdlWCA+PSAwICYmIHBhZ2VYIDw9IHNjcm9sbFggKyB2aWV3cG9ydFdpZHRoICYmIHBhZ2VZID49IDAgJiYgcGFnZVkgPD0gc2Nyb2xsWSArIHZpZXdwb3J0SGVpZ2h0O1xuXG4gIC8vIFByb3ZpZGUgZGVmYXVsdCB0YXJnZXQgcG9pbnRcbiAgdmFyIHBvaW50cyA9IFthbGlnbi5wb2ludHNbMF0sICdjYyddO1xuXG4gIHJldHVybiBkb0FsaWduKGVsLCB0Z3RSZWdpb24sIF9leHRlbmRzKHt9LCBhbGlnbiwgeyBwb2ludHM6IHBvaW50cyB9KSwgcG9pbnRJblZpZXcpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhbGlnblBvaW50OyIsImltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheVwiO1xuaW1wb3J0IFJlc2l6ZU9ic2VydmVyIGZyb20gJ3Jlc2l6ZS1vYnNlcnZlci1wb2x5ZmlsbCc7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcInJjLXV0aWwvZXMvRG9tL2NvbnRhaW5zXCI7XG5leHBvcnQgZnVuY3Rpb24gaXNTYW1lUG9pbnQocHJldiwgbmV4dCkge1xuICBpZiAocHJldiA9PT0gbmV4dCkgcmV0dXJuIHRydWU7XG4gIGlmICghcHJldiB8fCAhbmV4dCkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmICgncGFnZVgnIGluIG5leHQgJiYgJ3BhZ2VZJyBpbiBuZXh0KSB7XG4gICAgcmV0dXJuIHByZXYucGFnZVggPT09IG5leHQucGFnZVggJiYgcHJldi5wYWdlWSA9PT0gbmV4dC5wYWdlWTtcbiAgfVxuXG4gIGlmICgnY2xpZW50WCcgaW4gbmV4dCAmJiAnY2xpZW50WScgaW4gbmV4dCkge1xuICAgIHJldHVybiBwcmV2LmNsaWVudFggPT09IG5leHQuY2xpZW50WCAmJiBwcmV2LmNsaWVudFkgPT09IG5leHQuY2xpZW50WTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZXN0b3JlRm9jdXMoYWN0aXZlRWxlbWVudCwgY29udGFpbmVyKSB7XG4gIC8vIEZvY3VzIGJhY2sgaWYgaXMgaW4gdGhlIGNvbnRhaW5lclxuICBpZiAoYWN0aXZlRWxlbWVudCAhPT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiBjb250YWlucyhjb250YWluZXIsIGFjdGl2ZUVsZW1lbnQpICYmIHR5cGVvZiBhY3RpdmVFbGVtZW50LmZvY3VzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYWN0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gbW9uaXRvclJlc2l6ZShlbGVtZW50LCBjYWxsYmFjaykge1xuICB2YXIgcHJldldpZHRoID0gbnVsbDtcbiAgdmFyIHByZXZIZWlnaHQgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIG9uUmVzaXplKF9yZWYpIHtcbiAgICB2YXIgX3JlZjIgPSBfc2xpY2VkVG9BcnJheShfcmVmLCAxKSxcbiAgICAgICAgdGFyZ2V0ID0gX3JlZjJbMF0udGFyZ2V0O1xuXG4gICAgaWYgKCFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY29udGFpbnModGFyZ2V0KSkgcmV0dXJuO1xuXG4gICAgdmFyIF90YXJnZXQkZ2V0Qm91bmRpbmdDbCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgd2lkdGggPSBfdGFyZ2V0JGdldEJvdW5kaW5nQ2wud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IF90YXJnZXQkZ2V0Qm91bmRpbmdDbC5oZWlnaHQ7XG5cbiAgICB2YXIgZml4ZWRXaWR0aCA9IE1hdGguZmxvb3Iod2lkdGgpO1xuICAgIHZhciBmaXhlZEhlaWdodCA9IE1hdGguZmxvb3IoaGVpZ2h0KTtcblxuICAgIGlmIChwcmV2V2lkdGggIT09IGZpeGVkV2lkdGggfHwgcHJldkhlaWdodCAhPT0gZml4ZWRIZWlnaHQpIHtcbiAgICAgIC8vIGh0dHBzOi8vd2Via2l0Lm9yZy9ibG9nLzk5OTcvcmVzaXplb2JzZXJ2ZXItaW4td2Via2l0L1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICB3aWR0aDogZml4ZWRXaWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IGZpeGVkSGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJldldpZHRoID0gZml4ZWRXaWR0aDtcbiAgICBwcmV2SGVpZ2h0ID0gZml4ZWRIZWlnaHQ7XG4gIH1cblxuICB2YXIgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIob25SZXNpemUpO1xuXG4gIGlmIChlbGVtZW50KSB7XG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9O1xufSIsImltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheVwiO1xuaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuXG4vKipcbiAqIFJlbW92ZWQgcHJvcHM6XG4gKiAgLSBjaGlsZHJlblByb3BzXG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjb21wb3NlUmVmIH0gZnJvbSBcInJjLXV0aWwvZXMvcmVmXCI7XG5pbXBvcnQgaXNWaXNpYmxlIGZyb20gXCJyYy11dGlsL2VzL0RvbS9pc1Zpc2libGVcIjtcbmltcG9ydCB7IGFsaWduRWxlbWVudCwgYWxpZ25Qb2ludCB9IGZyb20gJ2RvbS1hbGlnbic7XG5pbXBvcnQgYWRkRXZlbnRMaXN0ZW5lciBmcm9tIFwicmMtdXRpbC9lcy9Eb20vYWRkRXZlbnRMaXN0ZW5lclwiO1xuaW1wb3J0IHsgaXNTYW1lUG9pbnQsIHJlc3RvcmVGb2N1cywgbW9uaXRvclJlc2l6ZSB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgdXNlQnVmZmVyIGZyb20gJy4vaG9va3MvdXNlQnVmZmVyJztcblxuZnVuY3Rpb24gZ2V0RWxlbWVudChmdW5jKSB7XG4gIGlmICh0eXBlb2YgZnVuYyAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIG51bGw7XG4gIHJldHVybiBmdW5jKCk7XG59XG5cbmZ1bmN0aW9uIGdldFBvaW50KHBvaW50KSB7XG4gIGlmIChfdHlwZW9mKHBvaW50KSAhPT0gJ29iamVjdCcgfHwgIXBvaW50KSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIHBvaW50O1xufVxuXG52YXIgQWxpZ24gPSBmdW5jdGlvbiBBbGlnbihfcmVmLCByZWYpIHtcbiAgdmFyIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICAgIGRpc2FibGVkID0gX3JlZi5kaXNhYmxlZCxcbiAgICAgIHRhcmdldCA9IF9yZWYudGFyZ2V0LFxuICAgICAgYWxpZ24gPSBfcmVmLmFsaWduLFxuICAgICAgb25BbGlnbiA9IF9yZWYub25BbGlnbixcbiAgICAgIG1vbml0b3JXaW5kb3dSZXNpemUgPSBfcmVmLm1vbml0b3JXaW5kb3dSZXNpemUsXG4gICAgICBfcmVmJG1vbml0b3JCdWZmZXJUaW0gPSBfcmVmLm1vbml0b3JCdWZmZXJUaW1lLFxuICAgICAgbW9uaXRvckJ1ZmZlclRpbWUgPSBfcmVmJG1vbml0b3JCdWZmZXJUaW0gPT09IHZvaWQgMCA/IDAgOiBfcmVmJG1vbml0b3JCdWZmZXJUaW07XG4gIHZhciBjYWNoZVJlZiA9IFJlYWN0LnVzZVJlZih7fSk7XG4gIHZhciBub2RlUmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIHZhciBjaGlsZE5vZGUgPSBSZWFjdC5DaGlsZHJlbi5vbmx5KGNoaWxkcmVuKTsgLy8gPT09PT09PT09PT09PT09PT09PT09IEFsaWduID09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gV2Ugc2F2ZSB0aGUgcHJvcHMgaGVyZSB0byBhdm9pZCBjbG9zdXJlIG1ha2VzIHByb3BzIG9vZFxuXG4gIHZhciBmb3JjZUFsaWduUHJvcHNSZWYgPSBSZWFjdC51c2VSZWYoe30pO1xuICBmb3JjZUFsaWduUHJvcHNSZWYuY3VycmVudC5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICBmb3JjZUFsaWduUHJvcHNSZWYuY3VycmVudC50YXJnZXQgPSB0YXJnZXQ7XG4gIGZvcmNlQWxpZ25Qcm9wc1JlZi5jdXJyZW50Lm9uQWxpZ24gPSBvbkFsaWduO1xuXG4gIHZhciBfdXNlQnVmZmVyID0gdXNlQnVmZmVyKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX2ZvcmNlQWxpZ25Qcm9wc1JlZiRjID0gZm9yY2VBbGlnblByb3BzUmVmLmN1cnJlbnQsXG4gICAgICAgIGxhdGVzdERpc2FibGVkID0gX2ZvcmNlQWxpZ25Qcm9wc1JlZiRjLmRpc2FibGVkLFxuICAgICAgICBsYXRlc3RUYXJnZXQgPSBfZm9yY2VBbGlnblByb3BzUmVmJGMudGFyZ2V0LFxuICAgICAgICBsYXRlc3RPbkFsaWduID0gX2ZvcmNlQWxpZ25Qcm9wc1JlZiRjLm9uQWxpZ247XG5cbiAgICBpZiAoIWxhdGVzdERpc2FibGVkICYmIGxhdGVzdFRhcmdldCkge1xuICAgICAgdmFyIHNvdXJjZSA9IG5vZGVSZWYuY3VycmVudDtcbiAgICAgIHZhciByZXN1bHQ7XG4gICAgICB2YXIgZWxlbWVudCA9IGdldEVsZW1lbnQobGF0ZXN0VGFyZ2V0KTtcbiAgICAgIHZhciBwb2ludCA9IGdldFBvaW50KGxhdGVzdFRhcmdldCk7XG4gICAgICBjYWNoZVJlZi5jdXJyZW50LmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgY2FjaGVSZWYuY3VycmVudC5wb2ludCA9IHBvaW50OyAvLyBJRSBsb3NlIGZvY3VzIGFmdGVyIGVsZW1lbnQgcmVhbGlnblxuICAgICAgLy8gV2Ugc2hvdWxkIHJlY29yZCBhY3RpdmVFbGVtZW50IGFuZCByZXN0b3JlIGxhdGVyXG5cbiAgICAgIHZhciBfZG9jdW1lbnQgPSBkb2N1bWVudCxcbiAgICAgICAgICBhY3RpdmVFbGVtZW50ID0gX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7IC8vIFdlIG9ubHkgYWxpZ24gd2hlbiBlbGVtZW50IGlzIHZpc2libGVcblxuICAgICAgaWYgKGVsZW1lbnQgJiYgaXNWaXNpYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgIHJlc3VsdCA9IGFsaWduRWxlbWVudChzb3VyY2UsIGVsZW1lbnQsIGFsaWduKTtcbiAgICAgIH0gZWxzZSBpZiAocG9pbnQpIHtcbiAgICAgICAgcmVzdWx0ID0gYWxpZ25Qb2ludChzb3VyY2UsIHBvaW50LCBhbGlnbik7XG4gICAgICB9XG5cbiAgICAgIHJlc3RvcmVGb2N1cyhhY3RpdmVFbGVtZW50LCBzb3VyY2UpO1xuXG4gICAgICBpZiAobGF0ZXN0T25BbGlnbiAmJiByZXN1bHQpIHtcbiAgICAgICAgbGF0ZXN0T25BbGlnbihzb3VyY2UsIHJlc3VsdCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgbW9uaXRvckJ1ZmZlclRpbWUpLFxuICAgICAgX3VzZUJ1ZmZlcjIgPSBfc2xpY2VkVG9BcnJheShfdXNlQnVmZmVyLCAyKSxcbiAgICAgIF9mb3JjZUFsaWduID0gX3VzZUJ1ZmZlcjJbMF0sXG4gICAgICBjYW5jZWxGb3JjZUFsaWduID0gX3VzZUJ1ZmZlcjJbMV07IC8vID09PT09PT09PT09PT09PT09PT09PSBFZmZlY3QgPT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExpc3RlbiBmb3IgdGFyZ2V0IHVwZGF0ZWRcblxuXG4gIHZhciByZXNpemVNb25pdG9yID0gUmVhY3QudXNlUmVmKHtcbiAgICBjYW5jZWw6IGZ1bmN0aW9uIGNhbmNlbCgpIHt9XG4gIH0pOyAvLyBMaXN0ZW4gZm9yIHNvdXJjZSB1cGRhdGVkXG5cbiAgdmFyIHNvdXJjZVJlc2l6ZU1vbml0b3IgPSBSZWFjdC51c2VSZWYoe1xuICAgIGNhbmNlbDogZnVuY3Rpb24gY2FuY2VsKCkge31cbiAgfSk7XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBnZXRFbGVtZW50KHRhcmdldCk7XG4gICAgdmFyIHBvaW50ID0gZ2V0UG9pbnQodGFyZ2V0KTtcblxuICAgIGlmIChub2RlUmVmLmN1cnJlbnQgIT09IHNvdXJjZVJlc2l6ZU1vbml0b3IuY3VycmVudC5lbGVtZW50KSB7XG4gICAgICBzb3VyY2VSZXNpemVNb25pdG9yLmN1cnJlbnQuY2FuY2VsKCk7XG4gICAgICBzb3VyY2VSZXNpemVNb25pdG9yLmN1cnJlbnQuZWxlbWVudCA9IG5vZGVSZWYuY3VycmVudDtcbiAgICAgIHNvdXJjZVJlc2l6ZU1vbml0b3IuY3VycmVudC5jYW5jZWwgPSBtb25pdG9yUmVzaXplKG5vZGVSZWYuY3VycmVudCwgX2ZvcmNlQWxpZ24pO1xuICAgIH1cblxuICAgIGlmIChjYWNoZVJlZi5jdXJyZW50LmVsZW1lbnQgIT09IGVsZW1lbnQgfHwgIWlzU2FtZVBvaW50KGNhY2hlUmVmLmN1cnJlbnQucG9pbnQsIHBvaW50KSkge1xuICAgICAgX2ZvcmNlQWxpZ24oKTsgLy8gQWRkIHJlc2l6ZSBvYnNlcnZlclxuXG5cbiAgICAgIGlmIChyZXNpemVNb25pdG9yLmN1cnJlbnQuZWxlbWVudCAhPT0gZWxlbWVudCkge1xuICAgICAgICByZXNpemVNb25pdG9yLmN1cnJlbnQuY2FuY2VsKCk7XG4gICAgICAgIHJlc2l6ZU1vbml0b3IuY3VycmVudC5lbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgcmVzaXplTW9uaXRvci5jdXJyZW50LmNhbmNlbCA9IG1vbml0b3JSZXNpemUoZWxlbWVudCwgX2ZvcmNlQWxpZ24pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7IC8vIExpc3RlbiBmb3IgZGlzYWJsZWQgY2hhbmdlXG5cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICBfZm9yY2VBbGlnbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYW5jZWxGb3JjZUFsaWduKCk7XG4gICAgfVxuICB9LCBbZGlzYWJsZWRdKTsgLy8gTGlzdGVuIGZvciB3aW5kb3cgcmVzaXplXG5cbiAgdmFyIHdpblJlc2l6ZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAobW9uaXRvcldpbmRvd1Jlc2l6ZSkge1xuICAgICAgaWYgKCF3aW5SZXNpemVSZWYuY3VycmVudCkge1xuICAgICAgICB3aW5SZXNpemVSZWYuY3VycmVudCA9IGFkZEV2ZW50TGlzdGVuZXIod2luZG93LCAncmVzaXplJywgX2ZvcmNlQWxpZ24pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAod2luUmVzaXplUmVmLmN1cnJlbnQpIHtcbiAgICAgIHdpblJlc2l6ZVJlZi5jdXJyZW50LnJlbW92ZSgpO1xuICAgICAgd2luUmVzaXplUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSwgW21vbml0b3JXaW5kb3dSZXNpemVdKTsgLy8gQ2xlYXIgYWxsIGlmIHVubW91bnRcblxuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXNpemVNb25pdG9yLmN1cnJlbnQuY2FuY2VsKCk7XG4gICAgICBzb3VyY2VSZXNpemVNb25pdG9yLmN1cnJlbnQuY2FuY2VsKCk7XG4gICAgICBpZiAod2luUmVzaXplUmVmLmN1cnJlbnQpIHdpblJlc2l6ZVJlZi5jdXJyZW50LnJlbW92ZSgpO1xuICAgICAgY2FuY2VsRm9yY2VBbGlnbigpO1xuICAgIH07XG4gIH0sIFtdKTsgLy8gPT09PT09PT09PT09PT09PT09PT09PSBSZWYgPT09PT09PT09PT09PT09PT09PT09PT1cblxuICBSZWFjdC51c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBmb3JjZUFsaWduOiBmdW5jdGlvbiBmb3JjZUFsaWduKCkge1xuICAgICAgICByZXR1cm4gX2ZvcmNlQWxpZ24odHJ1ZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7IC8vID09PT09PT09PT09PT09PT09PT09PSBSZW5kZXIgPT09PT09PT09PT09PT09PT09PT09XG5cbiAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkTm9kZSkpIHtcbiAgICBjaGlsZE5vZGUgPSBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGROb2RlLCB7XG4gICAgICByZWY6IGNvbXBvc2VSZWYoY2hpbGROb2RlLnJlZiwgbm9kZVJlZilcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBjaGlsZE5vZGU7XG59O1xuXG52YXIgUmVmQWxpZ24gPSBSZWFjdC5mb3J3YXJkUmVmKEFsaWduKTtcblJlZkFsaWduLmRpc3BsYXlOYW1lID0gJ0FsaWduJztcbmV4cG9ydCBkZWZhdWx0IFJlZkFsaWduOyIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGNhbGxiYWNrLCBidWZmZXIpIHtcbiAgdmFyIGNhbGxlZFJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIHZhciB0aW1lb3V0UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuXG4gIGZ1bmN0aW9uIGNhbmNlbFRyaWdnZXIoKSB7XG4gICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJpZ2dlcihmb3JjZSkge1xuICAgIGlmICghY2FsbGVkUmVmLmN1cnJlbnQgfHwgZm9yY2UgPT09IHRydWUpIHtcbiAgICAgIGlmIChjYWxsYmFjaygpID09PSBmYWxzZSkge1xuICAgICAgICAvLyBOb3QgZGVsYXkgc2luY2UgY2FsbGJhY2sgY2FuY2VsbGVkIHNlbGZcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjYWxsZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICBjYW5jZWxUcmlnZ2VyKCk7XG4gICAgICB0aW1lb3V0UmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhbGxlZFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICB9LCBidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYW5jZWxUcmlnZ2VyKCk7XG4gICAgICB0aW1lb3V0UmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhbGxlZFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIHRyaWdnZXIoKTtcbiAgICAgIH0sIGJ1ZmZlcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFt0cmlnZ2VyLCBmdW5jdGlvbiAoKSB7XG4gICAgY2FsbGVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICBjYW5jZWxUcmlnZ2VyKCk7XG4gIH1dO1xufSk7IiwiLy8gZXhwb3J0IHRoaXMgcGFja2FnZSdzIGFwaVxuaW1wb3J0IEFsaWduIGZyb20gJy4vQWxpZ24nO1xuZXhwb3J0IGRlZmF1bHQgQWxpZ247IiwiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICB0cnkge1xuICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlamVjdChlcnJvcik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGluZm8uZG9uZSkge1xuICAgIHJlc29sdmUodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcyxcbiAgICAgICAgYXJncyA9IGFyZ3VtZW50cztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuXG4gICAgICBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIF90aHJvdyhlcnIpIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIGVycik7XG4gICAgICB9XG5cbiAgICAgIF9uZXh0KHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH07XG59IiwiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheVwiO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHJhZiBmcm9tIFwicmMtdXRpbC9lcy9yYWZcIjtcbnZhciBTdGF0dXNRdWV1ZSA9IFsnbWVhc3VyZScsICdhbGlnbicsIG51bGwsICdtb3Rpb24nXTtcbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAodmlzaWJsZSwgZG9NZWFzdXJlKSB7XG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZShudWxsKSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgc3RhdHVzID0gX3VzZVN0YXRlMlswXSxcbiAgICAgIHNldEludGVybmFsU3RhdHVzID0gX3VzZVN0YXRlMlsxXTtcblxuICB2YXIgcmFmUmVmID0gdXNlUmVmKCk7XG4gIHZhciBkZXN0cm95UmVmID0gdXNlUmVmKGZhbHNlKTtcblxuICBmdW5jdGlvbiBzZXRTdGF0dXMobmV4dFN0YXR1cykge1xuICAgIGlmICghZGVzdHJveVJlZi5jdXJyZW50KSB7XG4gICAgICBzZXRJbnRlcm5hbFN0YXR1cyhuZXh0U3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWxSYWYoKSB7XG4gICAgcmFmLmNhbmNlbChyYWZSZWYuY3VycmVudCk7XG4gIH1cblxuICBmdW5jdGlvbiBnb05leHRTdGF0dXMoY2FsbGJhY2spIHtcbiAgICBjYW5jZWxSYWYoKTtcbiAgICByYWZSZWYuY3VycmVudCA9IHJhZihmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBPbmx5IGFsaWduIHNob3VsZCBiZSBtYW51YWxseSB0cmlnZ2VyXG4gICAgICBzZXRTdGF0dXMoZnVuY3Rpb24gKHByZXYpIHtcbiAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICBjYXNlICdhbGlnbic6XG4gICAgICAgICAgICByZXR1cm4gJ21vdGlvbic7XG5cbiAgICAgICAgICBjYXNlICdtb3Rpb24nOlxuICAgICAgICAgICAgcmV0dXJuICdzdGFibGUnO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgfSk7XG4gICAgICBjYWxsYmFjayA9PT0gbnVsbCB8fCBjYWxsYmFjayA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2FsbGJhY2soKTtcbiAgICB9KTtcbiAgfSAvLyBJbml0IHN0YXR1c1xuXG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBzZXRTdGF0dXMoJ21lYXN1cmUnKTtcbiAgfSwgW3Zpc2libGVdKTsgLy8gR28gbmV4dCBzdGF0dXNcblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdtZWFzdXJlJzpcbiAgICAgICAgZG9NZWFzdXJlKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cblxuICAgIGlmIChzdGF0dXMpIHtcbiAgICAgIHJhZlJlZi5jdXJyZW50ID0gcmFmKCAvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcbiAgICAgICAgdmFyIGluZGV4LCBuZXh0U3RhdHVzO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGluZGV4ID0gU3RhdHVzUXVldWUuaW5kZXhPZihzdGF0dXMpO1xuICAgICAgICAgICAgICAgIG5leHRTdGF0dXMgPSBTdGF0dXNRdWV1ZVtpbmRleCArIDFdO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5leHRTdGF0dXMgJiYgaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICBzZXRTdGF0dXMobmV4dFN0YXR1cyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlKTtcbiAgICAgIH0pKSk7XG4gICAgfVxuICB9LCBbc3RhdHVzXSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlc3Ryb3lSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICBjYW5jZWxSYWYoKTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIHJldHVybiBbc3RhdHVzLCBnb05leHRTdGF0dXNdO1xufSk7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEFsaWduIGZyb20gJ3JjLWFsaWduJztcbmltcG9ydCBDU1NNb3Rpb24gZnJvbSAncmMtbW90aW9uJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHVzZVZpc2libGVTdGF0dXMgZnJvbSAnLi91c2VWaXNpYmxlU3RhdHVzJztcbmltcG9ydCB7IGdldE1vdGlvbiB9IGZyb20gJy4uL3V0aWxzL2xlZ2FjeVV0aWwnO1xuaW1wb3J0IHVzZVN0cmV0Y2hTdHlsZSBmcm9tICcuL3VzZVN0cmV0Y2hTdHlsZSc7XG52YXIgUG9wdXBJbm5lciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciB2aXNpYmxlID0gcHJvcHMudmlzaWJsZSxcbiAgICAgIHByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsXG4gICAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgekluZGV4ID0gcHJvcHMuekluZGV4LFxuICAgICAgc3RyZXRjaCA9IHByb3BzLnN0cmV0Y2gsXG4gICAgICBkZXN0cm95UG9wdXBPbkhpZGUgPSBwcm9wcy5kZXN0cm95UG9wdXBPbkhpZGUsXG4gICAgICBmb3JjZVJlbmRlciA9IHByb3BzLmZvcmNlUmVuZGVyLFxuICAgICAgYWxpZ24gPSBwcm9wcy5hbGlnbixcbiAgICAgIHBvaW50ID0gcHJvcHMucG9pbnQsXG4gICAgICBnZXRSb290RG9tTm9kZSA9IHByb3BzLmdldFJvb3REb21Ob2RlLFxuICAgICAgZ2V0Q2xhc3NOYW1lRnJvbUFsaWduID0gcHJvcHMuZ2V0Q2xhc3NOYW1lRnJvbUFsaWduLFxuICAgICAgb25BbGlnbiA9IHByb3BzLm9uQWxpZ24sXG4gICAgICBvbk1vdXNlRW50ZXIgPSBwcm9wcy5vbk1vdXNlRW50ZXIsXG4gICAgICBvbk1vdXNlTGVhdmUgPSBwcm9wcy5vbk1vdXNlTGVhdmUsXG4gICAgICBvbk1vdXNlRG93biA9IHByb3BzLm9uTW91c2VEb3duLFxuICAgICAgb25Ub3VjaFN0YXJ0ID0gcHJvcHMub25Ub3VjaFN0YXJ0O1xuICB2YXIgYWxpZ25SZWYgPSB1c2VSZWYoKTtcbiAgdmFyIGVsZW1lbnRSZWYgPSB1c2VSZWYoKTtcblxuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoKSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgYWxpZ25lZENsYXNzTmFtZSA9IF91c2VTdGF0ZTJbMF0sXG4gICAgICBzZXRBbGlnbmVkQ2xhc3NOYW1lID0gX3VzZVN0YXRlMlsxXTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT0gTWVhc3VyZSA9PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gIHZhciBfdXNlU3RyZXRjaFN0eWxlID0gdXNlU3RyZXRjaFN0eWxlKHN0cmV0Y2gpLFxuICAgICAgX3VzZVN0cmV0Y2hTdHlsZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RyZXRjaFN0eWxlLCAyKSxcbiAgICAgIHN0cmV0Y2hTdHlsZSA9IF91c2VTdHJldGNoU3R5bGUyWzBdLFxuICAgICAgbWVhc3VyZVN0cmV0Y2hTdHlsZSA9IF91c2VTdHJldGNoU3R5bGUyWzFdO1xuXG4gIGZ1bmN0aW9uIGRvTWVhc3VyZSgpIHtcbiAgICBpZiAoc3RyZXRjaCkge1xuICAgICAgbWVhc3VyZVN0cmV0Y2hTdHlsZShnZXRSb290RG9tTm9kZSgpKTtcbiAgICB9XG4gIH0gLy8gPT09PT09PT09PT09PT09PT09PT09PT09IFN0YXR1cyA9PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gIHZhciBfdXNlVmlzaWJsZVN0YXR1cyA9IHVzZVZpc2libGVTdGF0dXModmlzaWJsZSwgZG9NZWFzdXJlKSxcbiAgICAgIF91c2VWaXNpYmxlU3RhdHVzMiA9IF9zbGljZWRUb0FycmF5KF91c2VWaXNpYmxlU3RhdHVzLCAyKSxcbiAgICAgIHN0YXR1cyA9IF91c2VWaXNpYmxlU3RhdHVzMlswXSxcbiAgICAgIGdvTmV4dFN0YXR1cyA9IF91c2VWaXNpYmxlU3RhdHVzMlsxXTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09IEFsaWducyA9PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gIHZhciBwcmVwYXJlUmVzb2x2ZVJlZiA9IHVzZVJlZigpOyAvLyBgdGFyZ2V0YCBvbiBgcmMtYWxpZ25gIGNhbiBhY2NlcHQgYXMgYSBmdW5jdGlvbiB0byBnZXQgdGhlIGJpbmQgZWxlbWVudCBvciBhIHBvaW50LlxuICAvLyByZWY6IGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3JjLWFsaWduXG5cbiAgZnVuY3Rpb24gZ2V0QWxpZ25UYXJnZXQoKSB7XG4gICAgaWYgKHBvaW50KSB7XG4gICAgICByZXR1cm4gcG9pbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFJvb3REb21Ob2RlO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9yY2VBbGlnbigpIHtcbiAgICB2YXIgX2FsaWduUmVmJGN1cnJlbnQ7XG5cbiAgICAoX2FsaWduUmVmJGN1cnJlbnQgPSBhbGlnblJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYWxpZ25SZWYkY3VycmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FsaWduUmVmJGN1cnJlbnQuZm9yY2VBbGlnbigpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25JbnRlcm5hbEFsaWduKHBvcHVwRG9tTm9kZSwgbWF0Y2hBbGlnbikge1xuICAgIGlmIChzdGF0dXMgPT09ICdhbGlnbicpIHtcbiAgICAgIHZhciBuZXh0QWxpZ25lZENsYXNzTmFtZSA9IGdldENsYXNzTmFtZUZyb21BbGlnbihtYXRjaEFsaWduKTtcbiAgICAgIHNldEFsaWduZWRDbGFzc05hbWUobmV4dEFsaWduZWRDbGFzc05hbWUpOyAvLyBSZXBlYXQgdW50aWwgbm90IG1vcmUgYWxpZ24gbmVlZGVkXG5cbiAgICAgIGlmIChhbGlnbmVkQ2xhc3NOYW1lICE9PSBuZXh0QWxpZ25lZENsYXNzTmFtZSkge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBmb3JjZUFsaWduKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ29OZXh0U3RhdHVzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgX3ByZXBhcmVSZXNvbHZlUmVmJGN1O1xuXG4gICAgICAgICAgKF9wcmVwYXJlUmVzb2x2ZVJlZiRjdSA9IHByZXBhcmVSZXNvbHZlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9wcmVwYXJlUmVzb2x2ZVJlZiRjdSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3ByZXBhcmVSZXNvbHZlUmVmJGN1LmNhbGwocHJlcGFyZVJlc29sdmVSZWYpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgb25BbGlnbiA9PT0gbnVsbCB8fCBvbkFsaWduID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkFsaWduKHBvcHVwRG9tTm9kZSwgbWF0Y2hBbGlnbik7XG4gICAgfVxuICB9IC8vID09PT09PT09PT09PT09PT09PT09PT09PSBNb3Rpb24gPT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuICB2YXIgbW90aW9uID0gX29iamVjdFNwcmVhZCh7fSwgZ2V0TW90aW9uKHByb3BzKSk7XG5cbiAgWydvbkFwcGVhckVuZCcsICdvbkVudGVyRW5kJywgJ29uTGVhdmVFbmQnXS5mb3JFYWNoKGZ1bmN0aW9uIChldmVudE5hbWUpIHtcbiAgICB2YXIgb3JpZ2luSGFuZGxlciA9IG1vdGlvbltldmVudE5hbWVdO1xuXG4gICAgbW90aW9uW2V2ZW50TmFtZV0gPSBmdW5jdGlvbiAoZWxlbWVudCwgZXZlbnQpIHtcbiAgICAgIGdvTmV4dFN0YXR1cygpO1xuICAgICAgcmV0dXJuIG9yaWdpbkhhbmRsZXIgPT09IG51bGwgfHwgb3JpZ2luSGFuZGxlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3JpZ2luSGFuZGxlcihlbGVtZW50LCBldmVudCk7XG4gICAgfTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gb25TaG93UHJlcGFyZSgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgIHByZXBhcmVSZXNvbHZlUmVmLmN1cnJlbnQgPSByZXNvbHZlO1xuICAgIH0pO1xuICB9IC8vIEdvIHRvIHN0YWJsZSBkaXJlY3RseSB3aGVuIG1vdGlvbiBub3QgcHJvdmlkZWRcblxuXG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFtb3Rpb24ubW90aW9uTmFtZSAmJiBzdGF0dXMgPT09ICdtb3Rpb24nKSB7XG4gICAgICBnb05leHRTdGF0dXMoKTtcbiAgICB9XG4gIH0sIFttb3Rpb24ubW90aW9uTmFtZSwgc3RhdHVzXSk7IC8vID09PT09PT09PT09PT09PT09PT09PT09PT0gUmVmcyA9PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9yY2VBbGlnbjogZm9yY2VBbGlnbixcbiAgICAgIGdldEVsZW1lbnQ6IGZ1bmN0aW9uIGdldEVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50UmVmLmN1cnJlbnQ7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7IC8vID09PT09PT09PT09PT09PT09PT09PT09PSBSZW5kZXIgPT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIG1lcmdlZFN0eWxlID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBzdHJldGNoU3R5bGUpLCB7fSwge1xuICAgIHpJbmRleDogekluZGV4LFxuICAgIG9wYWNpdHk6IHN0YXR1cyA9PT0gJ21vdGlvbicgfHwgc3RhdHVzID09PSAnc3RhYmxlJyB8fCAhdmlzaWJsZSA/IHVuZGVmaW5lZCA6IDAsXG4gICAgcG9pbnRlckV2ZW50czogc3RhdHVzID09PSAnc3RhYmxlJyA/IHVuZGVmaW5lZCA6ICdub25lJ1xuICB9LCBzdHlsZSk7IC8vIEFsaWduIHN0YXR1c1xuXG5cbiAgdmFyIGFsaWduRGlzYWJsZWQgPSB0cnVlO1xuXG4gIGlmICgoYWxpZ24gPT09IG51bGwgfHwgYWxpZ24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFsaWduLnBvaW50cykgJiYgKHN0YXR1cyA9PT0gJ2FsaWduJyB8fCBzdGF0dXMgPT09ICdzdGFibGUnKSkge1xuICAgIGFsaWduRGlzYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBjaGlsZE5vZGUgPSBjaGlsZHJlbjsgLy8gV3JhcHBlciB3aGVuIG11bHRpcGxlIGNoaWxkcmVuXG5cbiAgaWYgKFJlYWN0LkNoaWxkcmVuLmNvdW50KGNoaWxkcmVuKSA+IDEpIHtcbiAgICBjaGlsZE5vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY29udGVudFwiKVxuICAgIH0sIGNoaWxkcmVuKTtcbiAgfVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDU1NNb3Rpb24sIF9leHRlbmRzKHtcbiAgICB2aXNpYmxlOiB2aXNpYmxlLFxuICAgIHJlZjogZWxlbWVudFJlZixcbiAgICBsZWF2ZWRDbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaGlkZGVuXCIpXG4gIH0sIG1vdGlvbiwge1xuICAgIG9uQXBwZWFyUHJlcGFyZTogb25TaG93UHJlcGFyZSxcbiAgICBvbkVudGVyUHJlcGFyZTogb25TaG93UHJlcGFyZSxcbiAgICByZW1vdmVPbkxlYXZlOiBkZXN0cm95UG9wdXBPbkhpZGUsXG4gICAgZm9yY2VSZW5kZXI6IGZvcmNlUmVuZGVyXG4gIH0pLCBmdW5jdGlvbiAoX3JlZiwgbW90aW9uUmVmKSB7XG4gICAgdmFyIG1vdGlvbkNsYXNzTmFtZSA9IF9yZWYuY2xhc3NOYW1lLFxuICAgICAgICBtb3Rpb25TdHlsZSA9IF9yZWYuc3R5bGU7XG4gICAgdmFyIG1lcmdlZENsYXNzTmFtZSA9IGNsYXNzTmFtZXMocHJlZml4Q2xzLCBjbGFzc05hbWUsIGFsaWduZWRDbGFzc05hbWUsIG1vdGlvbkNsYXNzTmFtZSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEFsaWduLCB7XG4gICAgICB0YXJnZXQ6IGdldEFsaWduVGFyZ2V0KCksXG4gICAgICBrZXk6IFwicG9wdXBcIixcbiAgICAgIHJlZjogYWxpZ25SZWYsXG4gICAgICBtb25pdG9yV2luZG93UmVzaXplOiB0cnVlLFxuICAgICAgZGlzYWJsZWQ6IGFsaWduRGlzYWJsZWQsXG4gICAgICBhbGlnbjogYWxpZ24sXG4gICAgICBvbkFsaWduOiBvbkludGVybmFsQWxpZ25cbiAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICByZWY6IG1vdGlvblJlZixcbiAgICAgIGNsYXNzTmFtZTogbWVyZ2VkQ2xhc3NOYW1lLFxuICAgICAgb25Nb3VzZUVudGVyOiBvbk1vdXNlRW50ZXIsXG4gICAgICBvbk1vdXNlTGVhdmU6IG9uTW91c2VMZWF2ZSxcbiAgICAgIG9uTW91c2VEb3duQ2FwdHVyZTogb25Nb3VzZURvd24sXG4gICAgICBvblRvdWNoU3RhcnRDYXB0dXJlOiBvblRvdWNoU3RhcnQsXG4gICAgICBzdHlsZTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBtb3Rpb25TdHlsZSksIG1lcmdlZFN0eWxlKVxuICAgIH0sIGNoaWxkTm9kZSkpO1xuICB9KTtcbn0pO1xuUG9wdXBJbm5lci5kaXNwbGF5TmFtZSA9ICdQb3B1cElubmVyJztcbmV4cG9ydCBkZWZhdWx0IFBvcHVwSW5uZXI7IiwiaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKHN0cmV0Y2gpIHtcbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICB3aWR0aDogMCxcbiAgICBoZWlnaHQ6IDBcbiAgfSksXG4gICAgICBfUmVhY3QkdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX1JlYWN0JHVzZVN0YXRlLCAyKSxcbiAgICAgIHRhcmdldFNpemUgPSBfUmVhY3QkdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0VGFyZ2V0U2l6ZSA9IF9SZWFjdCR1c2VTdGF0ZTJbMV07XG5cbiAgZnVuY3Rpb24gbWVhc3VyZVN0cmV0Y2goZWxlbWVudCkge1xuICAgIHNldFRhcmdldFNpemUoe1xuICAgICAgd2lkdGg6IGVsZW1lbnQub2Zmc2V0V2lkdGgsXG4gICAgICBoZWlnaHQ6IGVsZW1lbnQub2Zmc2V0SGVpZ2h0XG4gICAgfSk7XG4gIH0gLy8gTWVyZ2Ugc3RyZXRjaCBzdHlsZVxuXG5cbiAgdmFyIHN0eWxlID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNpemVTdHlsZSA9IHt9O1xuXG4gICAgaWYgKHN0cmV0Y2gpIHtcbiAgICAgIHZhciB3aWR0aCA9IHRhcmdldFNpemUud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gdGFyZ2V0U2l6ZS5oZWlnaHQ7IC8vIFN0cmV0Y2ggd2l0aCB0YXJnZXRcblxuICAgICAgaWYgKHN0cmV0Y2guaW5kZXhPZignaGVpZ2h0JykgIT09IC0xICYmIGhlaWdodCkge1xuICAgICAgICBzaXplU3R5bGUuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgfSBlbHNlIGlmIChzdHJldGNoLmluZGV4T2YoJ21pbkhlaWdodCcpICE9PSAtMSAmJiBoZWlnaHQpIHtcbiAgICAgICAgc2l6ZVN0eWxlLm1pbkhlaWdodCA9IGhlaWdodDtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0cmV0Y2guaW5kZXhPZignd2lkdGgnKSAhPT0gLTEgJiYgd2lkdGgpIHtcbiAgICAgICAgc2l6ZVN0eWxlLndpZHRoID0gd2lkdGg7XG4gICAgICB9IGVsc2UgaWYgKHN0cmV0Y2guaW5kZXhPZignbWluV2lkdGgnKSAhPT0gLTEgJiYgd2lkdGgpIHtcbiAgICAgICAgc2l6ZVN0eWxlLm1pbldpZHRoID0gd2lkdGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpemVTdHlsZTtcbiAgfSwgW3N0cmV0Y2gsIHRhcmdldFNpemVdKTtcbiAgcmV0dXJuIFtzdHlsZSwgbWVhc3VyZVN0cmV0Y2hdO1xufSk7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IENTU01vdGlvbiBmcm9tICdyYy1tb3Rpb24nO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG52YXIgTW9iaWxlUG9wdXBJbm5lciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBwcmVmaXhDbHMgPSBwcm9wcy5wcmVmaXhDbHMsXG4gICAgICB2aXNpYmxlID0gcHJvcHMudmlzaWJsZSxcbiAgICAgIHpJbmRleCA9IHByb3BzLnpJbmRleCxcbiAgICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICBfcHJvcHMkbW9iaWxlID0gcHJvcHMubW9iaWxlO1xuICBfcHJvcHMkbW9iaWxlID0gX3Byb3BzJG1vYmlsZSA9PT0gdm9pZCAwID8ge30gOiBfcHJvcHMkbW9iaWxlO1xuICB2YXIgcG9wdXBDbGFzc05hbWUgPSBfcHJvcHMkbW9iaWxlLnBvcHVwQ2xhc3NOYW1lLFxuICAgICAgcG9wdXBTdHlsZSA9IF9wcm9wcyRtb2JpbGUucG9wdXBTdHlsZSxcbiAgICAgIF9wcm9wcyRtb2JpbGUkcG9wdXBNbyA9IF9wcm9wcyRtb2JpbGUucG9wdXBNb3Rpb24sXG4gICAgICBwb3B1cE1vdGlvbiA9IF9wcm9wcyRtb2JpbGUkcG9wdXBNbyA9PT0gdm9pZCAwID8ge30gOiBfcHJvcHMkbW9iaWxlJHBvcHVwTW8sXG4gICAgICBwb3B1cFJlbmRlciA9IF9wcm9wcyRtb2JpbGUucG9wdXBSZW5kZXI7XG4gIHZhciBlbGVtZW50UmVmID0gUmVhY3QudXNlUmVmKCk7IC8vID09PT09PT09PT09PT09PT09PT09PT09PT0gUmVmcyA9PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9yY2VBbGlnbjogZnVuY3Rpb24gZm9yY2VBbGlnbigpIHt9LFxuICAgICAgZ2V0RWxlbWVudDogZnVuY3Rpb24gZ2V0RWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnRSZWYuY3VycmVudDtcbiAgICAgIH1cbiAgICB9O1xuICB9KTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09IFJlbmRlciA9PT09PT09PT09PT09PT09PT09PT09PT1cblxuICB2YXIgbWVyZ2VkU3R5bGUgPSBfb2JqZWN0U3ByZWFkKHtcbiAgICB6SW5kZXg6IHpJbmRleFxuICB9LCBwb3B1cFN0eWxlKTtcblxuICB2YXIgY2hpbGROb2RlID0gY2hpbGRyZW47IC8vIFdyYXBwZXIgd2hlbiBtdWx0aXBsZSBjaGlsZHJlblxuXG4gIGlmIChSZWFjdC5DaGlsZHJlbi5jb3VudChjaGlsZHJlbikgPiAxKSB7XG4gICAgY2hpbGROb2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNvbnRlbnRcIilcbiAgICB9LCBjaGlsZHJlbik7XG4gIH0gLy8gTW9iaWxlIHN1cHBvcnQgYWRkaXRpb25hbCByZW5kZXJcblxuXG4gIGlmIChwb3B1cFJlbmRlcikge1xuICAgIGNoaWxkTm9kZSA9IHBvcHVwUmVuZGVyKGNoaWxkTm9kZSk7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ1NTTW90aW9uLCBfZXh0ZW5kcyh7XG4gICAgdmlzaWJsZTogdmlzaWJsZSxcbiAgICByZWY6IGVsZW1lbnRSZWYsXG4gICAgcmVtb3ZlT25MZWF2ZTogdHJ1ZVxuICB9LCBwb3B1cE1vdGlvbiksIGZ1bmN0aW9uIChfcmVmLCBtb3Rpb25SZWYpIHtcbiAgICB2YXIgbW90aW9uQ2xhc3NOYW1lID0gX3JlZi5jbGFzc05hbWUsXG4gICAgICAgIG1vdGlvblN0eWxlID0gX3JlZi5zdHlsZTtcbiAgICB2YXIgbWVyZ2VkQ2xhc3NOYW1lID0gY2xhc3NOYW1lcyhwcmVmaXhDbHMsIHBvcHVwQ2xhc3NOYW1lLCBtb3Rpb25DbGFzc05hbWUpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICByZWY6IG1vdGlvblJlZixcbiAgICAgIGNsYXNzTmFtZTogbWVyZ2VkQ2xhc3NOYW1lLFxuICAgICAgc3R5bGU6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgbW90aW9uU3R5bGUpLCBtZXJnZWRTdHlsZSlcbiAgICB9LCBjaGlsZE5vZGUpO1xuICB9KTtcbn0pO1xuTW9iaWxlUG9wdXBJbm5lci5kaXNwbGF5TmFtZSA9ICdNb2JpbGVQb3B1cElubmVyJztcbmV4cG9ydCBkZWZhdWx0IE1vYmlsZVBvcHVwSW5uZXI7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc01vYmlsZSBmcm9tIFwicmMtdXRpbC9lcy9pc01vYmlsZVwiO1xuaW1wb3J0IE1hc2sgZnJvbSAnLi9NYXNrJztcbmltcG9ydCBQb3B1cElubmVyIGZyb20gJy4vUG9wdXBJbm5lcic7XG5pbXBvcnQgTW9iaWxlUG9wdXBJbm5lciBmcm9tICcuL01vYmlsZVBvcHVwSW5uZXInO1xudmFyIFBvcHVwID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKF9yZWYsIHJlZikge1xuICB2YXIgdmlzaWJsZSA9IF9yZWYudmlzaWJsZSxcbiAgICAgIG1vYmlsZSA9IF9yZWYubW9iaWxlLFxuICAgICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgW1widmlzaWJsZVwiLCBcIm1vYmlsZVwiXSk7XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKHZpc2libGUpLFxuICAgICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgICBpbm5lclZpc2libGUgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2VySW5uZXJWaXNpYmxlID0gX3VzZVN0YXRlMlsxXTtcblxuICB2YXIgX3VzZVN0YXRlMyA9IHVzZVN0YXRlKGZhbHNlKSxcbiAgICAgIF91c2VTdGF0ZTQgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUzLCAyKSxcbiAgICAgIGluTW9iaWxlID0gX3VzZVN0YXRlNFswXSxcbiAgICAgIHNldEluTW9iaWxlID0gX3VzZVN0YXRlNFsxXTtcblxuICB2YXIgY2xvbmVQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCB7fSwge1xuICAgIHZpc2libGU6IGlubmVyVmlzaWJsZVxuICB9KTsgLy8gV2UgY2hlY2sgbW9iaWxlIGluIHZpc2libGUgY2hhbmdlZCBoZXJlLlxuICAvLyBBbmQgdGhpcyBhbHNvIGRlbGF5IHNldCBgaW5uZXJWaXNpYmxlYCB0byBhdm9pZCBwb3B1cCBjb21wb25lbnQgcmVuZGVyIGZsYXNoXG5cblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHNlcklubmVyVmlzaWJsZSh2aXNpYmxlKTtcblxuICAgIGlmICh2aXNpYmxlICYmIG1vYmlsZSkge1xuICAgICAgc2V0SW5Nb2JpbGUoaXNNb2JpbGUoKSk7XG4gICAgfVxuICB9LCBbdmlzaWJsZSwgbW9iaWxlXSk7XG4gIHZhciBwb3B1cE5vZGUgPSBpbk1vYmlsZSA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE1vYmlsZVBvcHVwSW5uZXIsIF9leHRlbmRzKHt9LCBjbG9uZVByb3BzLCB7XG4gICAgbW9iaWxlOiBtb2JpbGUsXG4gICAgcmVmOiByZWZcbiAgfSkpIDogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUG9wdXBJbm5lciwgX2V4dGVuZHMoe30sIGNsb25lUHJvcHMsIHtcbiAgICByZWY6IHJlZlxuICB9KSk7IC8vIFdlIGNhbiB1c2UgZnJhZ21lbnQgZGlyZWN0bHkgYnV0IHRoaXMgbWF5IGZhaWxlZCBzb21lIHNlbGVjdG9yIHVzYWdlLiBLZWVwIGFzIG9yaWdpbiBsb2dpY1xuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChNYXNrLCBjbG9uZVByb3BzKSwgcG9wdXBOb2RlKTtcbn0pO1xuUG9wdXAuZGlzcGxheU5hbWUgPSAnUG9wdXAnO1xuZXhwb3J0IGRlZmF1bHQgUG9wdXA7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xudmFyIFRyaWdnZXJDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5leHBvcnQgZGVmYXVsdCBUcmlnZ2VyQ29udGV4dDsiLCJpbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgcmFmIGZyb20gXCJyYy11dGlsL2VzL3JhZlwiO1xuaW1wb3J0IGNvbnRhaW5zIGZyb20gXCJyYy11dGlsL2VzL0RvbS9jb250YWluc1wiO1xuaW1wb3J0IGZpbmRET01Ob2RlIGZyb20gXCJyYy11dGlsL2VzL0RvbS9maW5kRE9NTm9kZVwiO1xuaW1wb3J0IHsgY29tcG9zZVJlZiwgc3VwcG9ydFJlZiB9IGZyb20gXCJyYy11dGlsL2VzL3JlZlwiO1xuaW1wb3J0IGFkZEV2ZW50TGlzdGVuZXIgZnJvbSBcInJjLXV0aWwvZXMvRG9tL2FkZEV2ZW50TGlzdGVuZXJcIjtcbmltcG9ydCBQb3J0YWwgZnJvbSBcInJjLXV0aWwvZXMvUG9ydGFsXCI7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IGdldEFsaWduRnJvbVBsYWNlbWVudCwgZ2V0QWxpZ25Qb3B1cENsYXNzTmFtZSB9IGZyb20gJy4vdXRpbHMvYWxpZ25VdGlsJztcbmltcG9ydCBQb3B1cCBmcm9tICcuL1BvcHVwJztcbmltcG9ydCBUcmlnZ2VyQ29udGV4dCBmcm9tICcuL2NvbnRleHQnO1xuXG5mdW5jdGlvbiBub29wKCkge31cblxuZnVuY3Rpb24gcmV0dXJuRW1wdHlTdHJpbmcoKSB7XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gcmV0dXJuRG9jdW1lbnQoZWxlbWVudCkge1xuICBpZiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm93bmVyRG9jdW1lbnQ7XG4gIH1cblxuICByZXR1cm4gd2luZG93LmRvY3VtZW50O1xufVxuXG52YXIgQUxMX0hBTkRMRVJTID0gWydvbkNsaWNrJywgJ29uTW91c2VEb3duJywgJ29uVG91Y2hTdGFydCcsICdvbk1vdXNlRW50ZXInLCAnb25Nb3VzZUxlYXZlJywgJ29uRm9jdXMnLCAnb25CbHVyJywgJ29uQ29udGV4dE1lbnUnXTtcbi8qKlxuICogSW50ZXJuYWwgdXNhZ2UuIERvIG5vdCB1c2UgaW4geW91ciBjb2RlIHNpbmNlIHRoaXMgd2lsbCBiZSByZW1vdmVkLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVRyaWdnZXIoUG9ydGFsQ29tcG9uZW50KSB7XG4gIHZhciBUcmlnZ2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gICAgX2luaGVyaXRzKFRyaWdnZXIsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gICAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihUcmlnZ2VyKTtcblxuICAgIGZ1bmN0aW9uIFRyaWdnZXIocHJvcHMpIHtcbiAgICAgIHZhciBfdGhpcztcblxuICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRyaWdnZXIpO1xuXG4gICAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKTtcbiAgICAgIF90aGlzLnBvcHVwUmVmID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZVJlZigpO1xuICAgICAgX3RoaXMudHJpZ2dlclJlZiA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVSZWYoKTtcblxuICAgICAgX3RoaXMub25Nb3VzZUVudGVyID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIG1vdXNlRW50ZXJEZWxheSA9IF90aGlzLnByb3BzLm1vdXNlRW50ZXJEZWxheTtcblxuICAgICAgICBfdGhpcy5maXJlRXZlbnRzKCdvbk1vdXNlRW50ZXInLCBlKTtcblxuICAgICAgICBfdGhpcy5kZWxheVNldFBvcHVwVmlzaWJsZSh0cnVlLCBtb3VzZUVudGVyRGVsYXksIG1vdXNlRW50ZXJEZWxheSA/IG51bGwgOiBlKTtcbiAgICAgIH07XG5cbiAgICAgIF90aGlzLm9uTW91c2VNb3ZlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgX3RoaXMuZmlyZUV2ZW50cygnb25Nb3VzZU1vdmUnLCBlKTtcblxuICAgICAgICBfdGhpcy5zZXRQb2ludChlKTtcbiAgICAgIH07XG5cbiAgICAgIF90aGlzLm9uTW91c2VMZWF2ZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIF90aGlzLmZpcmVFdmVudHMoJ29uTW91c2VMZWF2ZScsIGUpO1xuXG4gICAgICAgIF90aGlzLmRlbGF5U2V0UG9wdXBWaXNpYmxlKGZhbHNlLCBfdGhpcy5wcm9wcy5tb3VzZUxlYXZlRGVsYXkpO1xuICAgICAgfTtcblxuICAgICAgX3RoaXMub25Qb3B1cE1vdXNlRW50ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLmNsZWFyRGVsYXlUaW1lcigpO1xuICAgICAgfTtcblxuICAgICAgX3RoaXMub25Qb3B1cE1vdXNlTGVhdmUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgX3RoaXMkcG9wdXBSZWYkY3VycmVuO1xuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdC1jb21wb25lbnQvdHJpZ2dlci9wdWxsLzEzXG4gICAgICAgIC8vIHJlYWN0IGJ1Zz9cbiAgICAgICAgaWYgKGUucmVsYXRlZFRhcmdldCAmJiAhZS5yZWxhdGVkVGFyZ2V0LnNldFRpbWVvdXQgJiYgY29udGFpbnMoKF90aGlzJHBvcHVwUmVmJGN1cnJlbiA9IF90aGlzLnBvcHVwUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF90aGlzJHBvcHVwUmVmJGN1cnJlbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcG9wdXBSZWYkY3VycmVuLmdldEVsZW1lbnQoKSwgZS5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLmRlbGF5U2V0UG9wdXBWaXNpYmxlKGZhbHNlLCBfdGhpcy5wcm9wcy5tb3VzZUxlYXZlRGVsYXkpO1xuICAgICAgfTtcblxuICAgICAgX3RoaXMub25Gb2N1cyA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIF90aGlzLmZpcmVFdmVudHMoJ29uRm9jdXMnLCBlKTsgLy8gaW5jYXNlIGZvY3VzaW4gYW5kIGZvY3Vzb3V0XG5cblxuICAgICAgICBfdGhpcy5jbGVhckRlbGF5VGltZXIoKTtcblxuICAgICAgICBpZiAoX3RoaXMuaXNGb2N1c1RvU2hvdygpKSB7XG4gICAgICAgICAgX3RoaXMuZm9jdXNUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgICAgICAgIF90aGlzLmRlbGF5U2V0UG9wdXBWaXNpYmxlKHRydWUsIF90aGlzLnByb3BzLmZvY3VzRGVsYXkpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBfdGhpcy5vbk1vdXNlRG93biA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIF90aGlzLmZpcmVFdmVudHMoJ29uTW91c2VEb3duJywgZSk7XG5cbiAgICAgICAgX3RoaXMucHJlQ2xpY2tUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgIH07XG5cbiAgICAgIF90aGlzLm9uVG91Y2hTdGFydCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIF90aGlzLmZpcmVFdmVudHMoJ29uVG91Y2hTdGFydCcsIGUpO1xuXG4gICAgICAgIF90aGlzLnByZVRvdWNoVGltZSA9IERhdGUubm93KCk7XG4gICAgICB9O1xuXG4gICAgICBfdGhpcy5vbkJsdXIgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBfdGhpcy5maXJlRXZlbnRzKCdvbkJsdXInLCBlKTtcblxuICAgICAgICBfdGhpcy5jbGVhckRlbGF5VGltZXIoKTtcblxuICAgICAgICBpZiAoX3RoaXMuaXNCbHVyVG9IaWRlKCkpIHtcbiAgICAgICAgICBfdGhpcy5kZWxheVNldFBvcHVwVmlzaWJsZShmYWxzZSwgX3RoaXMucHJvcHMuYmx1ckRlbGF5KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgX3RoaXMub25Db250ZXh0TWVudSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBfdGhpcy5maXJlRXZlbnRzKCdvbkNvbnRleHRNZW51JywgZSk7XG5cbiAgICAgICAgX3RoaXMuc2V0UG9wdXBWaXNpYmxlKHRydWUsIGUpO1xuICAgICAgfTtcblxuICAgICAgX3RoaXMub25Db250ZXh0TWVudUNsb3NlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoX3RoaXMuaXNDb250ZXh0TWVudVRvU2hvdygpKSB7XG4gICAgICAgICAgX3RoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgX3RoaXMub25DbGljayA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBfdGhpcy5maXJlRXZlbnRzKCdvbkNsaWNrJywgZXZlbnQpOyAvLyBmb2N1cyB3aWxsIHRyaWdnZXIgY2xpY2tcblxuXG4gICAgICAgIGlmIChfdGhpcy5mb2N1c1RpbWUpIHtcbiAgICAgICAgICB2YXIgcHJlVGltZTtcblxuICAgICAgICAgIGlmIChfdGhpcy5wcmVDbGlja1RpbWUgJiYgX3RoaXMucHJlVG91Y2hUaW1lKSB7XG4gICAgICAgICAgICBwcmVUaW1lID0gTWF0aC5taW4oX3RoaXMucHJlQ2xpY2tUaW1lLCBfdGhpcy5wcmVUb3VjaFRpbWUpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoX3RoaXMucHJlQ2xpY2tUaW1lKSB7XG4gICAgICAgICAgICBwcmVUaW1lID0gX3RoaXMucHJlQ2xpY2tUaW1lO1xuICAgICAgICAgIH0gZWxzZSBpZiAoX3RoaXMucHJlVG91Y2hUaW1lKSB7XG4gICAgICAgICAgICBwcmVUaW1lID0gX3RoaXMucHJlVG91Y2hUaW1lO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChNYXRoLmFicyhwcmVUaW1lIC0gX3RoaXMuZm9jdXNUaW1lKSA8IDIwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgX3RoaXMuZm9jdXNUaW1lID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLnByZUNsaWNrVGltZSA9IDA7XG4gICAgICAgIF90aGlzLnByZVRvdWNoVGltZSA9IDA7IC8vIE9ubHkgcHJldmVudCBkZWZhdWx0IHdoZW4gYWxsIHRoZSBhY3Rpb24gaXMgY2xpY2suXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzE3MDQzXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzE3MjkxXG5cbiAgICAgICAgaWYgKF90aGlzLmlzQ2xpY2tUb1Nob3coKSAmJiAoX3RoaXMuaXNDbGlja1RvSGlkZSgpIHx8IF90aGlzLmlzQmx1clRvSGlkZSgpKSAmJiBldmVudCAmJiBldmVudC5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbmV4dFZpc2libGUgPSAhX3RoaXMuc3RhdGUucG9wdXBWaXNpYmxlO1xuXG4gICAgICAgIGlmIChfdGhpcy5pc0NsaWNrVG9IaWRlKCkgJiYgIW5leHRWaXNpYmxlIHx8IG5leHRWaXNpYmxlICYmIF90aGlzLmlzQ2xpY2tUb1Nob3coKSkge1xuICAgICAgICAgIF90aGlzLnNldFBvcHVwVmlzaWJsZSghX3RoaXMuc3RhdGUucG9wdXBWaXNpYmxlLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIF90aGlzLm9uUG9wdXBNb3VzZURvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLmhhc1BvcHVwTW91c2VEb3duID0gdHJ1ZTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KF90aGlzLm1vdXNlRG93blRpbWVvdXQpO1xuICAgICAgICBfdGhpcy5tb3VzZURvd25UaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzLmhhc1BvcHVwTW91c2VEb3duID0gZmFsc2U7XG4gICAgICAgIH0sIDApO1xuXG4gICAgICAgIGlmIChfdGhpcy5jb250ZXh0KSB7XG4gICAgICAgICAgdmFyIF90aGlzJGNvbnRleHQ7XG5cbiAgICAgICAgICAoX3RoaXMkY29udGV4dCA9IF90aGlzLmNvbnRleHQpLm9uUG9wdXBNb3VzZURvd24uYXBwbHkoX3RoaXMkY29udGV4dCwgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgX3RoaXMub25Eb2N1bWVudENsaWNrID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChfdGhpcy5wcm9wcy5tYXNrICYmICFfdGhpcy5wcm9wcy5tYXNrQ2xvc2FibGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuXG4gICAgICAgIHZhciByb290ID0gX3RoaXMuZ2V0Um9vdERvbU5vZGUoKTtcblxuICAgICAgICB2YXIgcG9wdXBOb2RlID0gX3RoaXMuZ2V0UG9wdXBEb21Ob2RlKCk7XG5cbiAgICAgICAgaWYgKCAvLyBtb3VzZWRvd24gb24gdGhlIHRhcmdldCBzaG91bGQgYWxzbyBjbG9zZSBwb3B1cCB3aGVuIGFjdGlvbiBpcyBjb250ZXh0TWVudS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMjk4NTNcbiAgICAgICAgKCFjb250YWlucyhyb290LCB0YXJnZXQpIHx8IF90aGlzLmlzQ29udGV4dE1lbnVPbmx5KCkpICYmICFjb250YWlucyhwb3B1cE5vZGUsIHRhcmdldCkgJiYgIV90aGlzLmhhc1BvcHVwTW91c2VEb3duKSB7XG4gICAgICAgICAgX3RoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgX3RoaXMuZ2V0Um9vdERvbU5vZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBnZXRUcmlnZ2VyRE9NTm9kZSA9IF90aGlzLnByb3BzLmdldFRyaWdnZXJET01Ob2RlO1xuXG4gICAgICAgIGlmIChnZXRUcmlnZ2VyRE9NTm9kZSkge1xuICAgICAgICAgIHJldHVybiBnZXRUcmlnZ2VyRE9NTm9kZShfdGhpcy50cmlnZ2VyUmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB2YXIgZG9tTm9kZSA9IGZpbmRET01Ob2RlKF90aGlzLnRyaWdnZXJSZWYuY3VycmVudCk7XG5cbiAgICAgICAgICBpZiAoZG9tTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHsvLyBEbyBub3RoaW5nXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUmVhY3RET00uZmluZERPTU5vZGUoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuICAgICAgfTtcblxuICAgICAgX3RoaXMuZ2V0UG9wdXBDbGFzc05hbWVGcm9tQWxpZ24gPSBmdW5jdGlvbiAoYWxpZ24pIHtcbiAgICAgICAgdmFyIGNsYXNzTmFtZSA9IFtdO1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICAgIHBvcHVwUGxhY2VtZW50ID0gX3RoaXMkcHJvcHMucG9wdXBQbGFjZW1lbnQsXG4gICAgICAgICAgICBidWlsdGluUGxhY2VtZW50cyA9IF90aGlzJHByb3BzLmJ1aWx0aW5QbGFjZW1lbnRzLFxuICAgICAgICAgICAgcHJlZml4Q2xzID0gX3RoaXMkcHJvcHMucHJlZml4Q2xzLFxuICAgICAgICAgICAgYWxpZ25Qb2ludCA9IF90aGlzJHByb3BzLmFsaWduUG9pbnQsXG4gICAgICAgICAgICBnZXRQb3B1cENsYXNzTmFtZUZyb21BbGlnbiA9IF90aGlzJHByb3BzLmdldFBvcHVwQ2xhc3NOYW1lRnJvbUFsaWduO1xuXG4gICAgICAgIGlmIChwb3B1cFBsYWNlbWVudCAmJiBidWlsdGluUGxhY2VtZW50cykge1xuICAgICAgICAgIGNsYXNzTmFtZS5wdXNoKGdldEFsaWduUG9wdXBDbGFzc05hbWUoYnVpbHRpblBsYWNlbWVudHMsIHByZWZpeENscywgYWxpZ24sIGFsaWduUG9pbnQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChnZXRQb3B1cENsYXNzTmFtZUZyb21BbGlnbikge1xuICAgICAgICAgIGNsYXNzTmFtZS5wdXNoKGdldFBvcHVwQ2xhc3NOYW1lRnJvbUFsaWduKGFsaWduKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2xhc3NOYW1lLmpvaW4oJyAnKTtcbiAgICAgIH07XG5cbiAgICAgIF90aGlzLmdldENvbXBvbmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzLFxuICAgICAgICAgICAgcHJlZml4Q2xzID0gX3RoaXMkcHJvcHMyLnByZWZpeENscyxcbiAgICAgICAgICAgIGRlc3Ryb3lQb3B1cE9uSGlkZSA9IF90aGlzJHByb3BzMi5kZXN0cm95UG9wdXBPbkhpZGUsXG4gICAgICAgICAgICBwb3B1cENsYXNzTmFtZSA9IF90aGlzJHByb3BzMi5wb3B1cENsYXNzTmFtZSxcbiAgICAgICAgICAgIG9uUG9wdXBBbGlnbiA9IF90aGlzJHByb3BzMi5vblBvcHVwQWxpZ24sXG4gICAgICAgICAgICBwb3B1cE1vdGlvbiA9IF90aGlzJHByb3BzMi5wb3B1cE1vdGlvbixcbiAgICAgICAgICAgIHBvcHVwQW5pbWF0aW9uID0gX3RoaXMkcHJvcHMyLnBvcHVwQW5pbWF0aW9uLFxuICAgICAgICAgICAgcG9wdXBUcmFuc2l0aW9uTmFtZSA9IF90aGlzJHByb3BzMi5wb3B1cFRyYW5zaXRpb25OYW1lLFxuICAgICAgICAgICAgcG9wdXBTdHlsZSA9IF90aGlzJHByb3BzMi5wb3B1cFN0eWxlLFxuICAgICAgICAgICAgbWFzayA9IF90aGlzJHByb3BzMi5tYXNrLFxuICAgICAgICAgICAgbWFza0FuaW1hdGlvbiA9IF90aGlzJHByb3BzMi5tYXNrQW5pbWF0aW9uLFxuICAgICAgICAgICAgbWFza1RyYW5zaXRpb25OYW1lID0gX3RoaXMkcHJvcHMyLm1hc2tUcmFuc2l0aW9uTmFtZSxcbiAgICAgICAgICAgIG1hc2tNb3Rpb24gPSBfdGhpcyRwcm9wczIubWFza01vdGlvbixcbiAgICAgICAgICAgIHpJbmRleCA9IF90aGlzJHByb3BzMi56SW5kZXgsXG4gICAgICAgICAgICBwb3B1cCA9IF90aGlzJHByb3BzMi5wb3B1cCxcbiAgICAgICAgICAgIHN0cmV0Y2ggPSBfdGhpcyRwcm9wczIuc3RyZXRjaCxcbiAgICAgICAgICAgIGFsaWduUG9pbnQgPSBfdGhpcyRwcm9wczIuYWxpZ25Qb2ludCxcbiAgICAgICAgICAgIG1vYmlsZSA9IF90aGlzJHByb3BzMi5tb2JpbGUsXG4gICAgICAgICAgICBmb3JjZVJlbmRlciA9IF90aGlzJHByb3BzMi5mb3JjZVJlbmRlcjtcbiAgICAgICAgdmFyIF90aGlzJHN0YXRlID0gX3RoaXMuc3RhdGUsXG4gICAgICAgICAgICBwb3B1cFZpc2libGUgPSBfdGhpcyRzdGF0ZS5wb3B1cFZpc2libGUsXG4gICAgICAgICAgICBwb2ludCA9IF90aGlzJHN0YXRlLnBvaW50O1xuXG4gICAgICAgIHZhciBhbGlnbiA9IF90aGlzLmdldFBvcHVwQWxpZ24oKTtcblxuICAgICAgICB2YXIgbW91c2VQcm9wcyA9IHt9O1xuXG4gICAgICAgIGlmIChfdGhpcy5pc01vdXNlRW50ZXJUb1Nob3coKSkge1xuICAgICAgICAgIG1vdXNlUHJvcHMub25Nb3VzZUVudGVyID0gX3RoaXMub25Qb3B1cE1vdXNlRW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX3RoaXMuaXNNb3VzZUxlYXZlVG9IaWRlKCkpIHtcbiAgICAgICAgICBtb3VzZVByb3BzLm9uTW91c2VMZWF2ZSA9IF90aGlzLm9uUG9wdXBNb3VzZUxlYXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgbW91c2VQcm9wcy5vbk1vdXNlRG93biA9IF90aGlzLm9uUG9wdXBNb3VzZURvd247XG4gICAgICAgIG1vdXNlUHJvcHMub25Ub3VjaFN0YXJ0ID0gX3RoaXMub25Qb3B1cE1vdXNlRG93bjtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFBvcHVwLCBfZXh0ZW5kcyh7XG4gICAgICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICAgICAgZGVzdHJveVBvcHVwT25IaWRlOiBkZXN0cm95UG9wdXBPbkhpZGUsXG4gICAgICAgICAgdmlzaWJsZTogcG9wdXBWaXNpYmxlLFxuICAgICAgICAgIHBvaW50OiBhbGlnblBvaW50ICYmIHBvaW50LFxuICAgICAgICAgIGNsYXNzTmFtZTogcG9wdXBDbGFzc05hbWUsXG4gICAgICAgICAgYWxpZ246IGFsaWduLFxuICAgICAgICAgIG9uQWxpZ246IG9uUG9wdXBBbGlnbixcbiAgICAgICAgICBhbmltYXRpb246IHBvcHVwQW5pbWF0aW9uLFxuICAgICAgICAgIGdldENsYXNzTmFtZUZyb21BbGlnbjogX3RoaXMuZ2V0UG9wdXBDbGFzc05hbWVGcm9tQWxpZ25cbiAgICAgICAgfSwgbW91c2VQcm9wcywge1xuICAgICAgICAgIHN0cmV0Y2g6IHN0cmV0Y2gsXG4gICAgICAgICAgZ2V0Um9vdERvbU5vZGU6IF90aGlzLmdldFJvb3REb21Ob2RlLFxuICAgICAgICAgIHN0eWxlOiBwb3B1cFN0eWxlLFxuICAgICAgICAgIG1hc2s6IG1hc2ssXG4gICAgICAgICAgekluZGV4OiB6SW5kZXgsXG4gICAgICAgICAgdHJhbnNpdGlvbk5hbWU6IHBvcHVwVHJhbnNpdGlvbk5hbWUsXG4gICAgICAgICAgbWFza0FuaW1hdGlvbjogbWFza0FuaW1hdGlvbixcbiAgICAgICAgICBtYXNrVHJhbnNpdGlvbk5hbWU6IG1hc2tUcmFuc2l0aW9uTmFtZSxcbiAgICAgICAgICBtYXNrTW90aW9uOiBtYXNrTW90aW9uLFxuICAgICAgICAgIHJlZjogX3RoaXMucG9wdXBSZWYsXG4gICAgICAgICAgbW90aW9uOiBwb3B1cE1vdGlvbixcbiAgICAgICAgICBtb2JpbGU6IG1vYmlsZSxcbiAgICAgICAgICBmb3JjZVJlbmRlcjogZm9yY2VSZW5kZXJcbiAgICAgICAgfSksIHR5cGVvZiBwb3B1cCA9PT0gJ2Z1bmN0aW9uJyA/IHBvcHVwKCkgOiBwb3B1cCk7XG4gICAgICB9O1xuXG4gICAgICBfdGhpcy5hdHRhY2hQYXJlbnQgPSBmdW5jdGlvbiAocG9wdXBDb250YWluZXIpIHtcbiAgICAgICAgcmFmLmNhbmNlbChfdGhpcy5hdHRhY2hJZCk7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICAgIGdldFBvcHVwQ29udGFpbmVyID0gX3RoaXMkcHJvcHMzLmdldFBvcHVwQ29udGFpbmVyLFxuICAgICAgICAgICAgZ2V0RG9jdW1lbnQgPSBfdGhpcyRwcm9wczMuZ2V0RG9jdW1lbnQ7XG5cbiAgICAgICAgdmFyIGRvbU5vZGUgPSBfdGhpcy5nZXRSb290RG9tTm9kZSgpO1xuXG4gICAgICAgIHZhciBtb3VudE5vZGU7XG5cbiAgICAgICAgaWYgKCFnZXRQb3B1cENvbnRhaW5lcikge1xuICAgICAgICAgIG1vdW50Tm9kZSA9IGdldERvY3VtZW50KF90aGlzLmdldFJvb3REb21Ob2RlKCkpLmJvZHk7XG4gICAgICAgIH0gZWxzZSBpZiAoZG9tTm9kZSB8fCBnZXRQb3B1cENvbnRhaW5lci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAvLyBDb21wYXRpYmxlIGZvciBsZWdhY3kgZ2V0UG9wdXBDb250YWluZXIgd2l0aCBkb21Ob2RlIGFyZ3VtZW50LlxuICAgICAgICAgIC8vIElmIG5vIG5lZWQgYGRvbU5vZGVgIGFyZ3VtZW50LCB3aWxsIGNhbGwgZGlyZWN0bHkuXG4gICAgICAgICAgLy8gaHR0cHM6Ly9jb2Rlc2FuZGJveC5pby9zL2Vsb3F1ZW50LW1jbGVhbi1zczkzbT9maWxlPS9zcmMvQXBwLmpzXG4gICAgICAgICAgbW91bnROb2RlID0gZ2V0UG9wdXBDb250YWluZXIoZG9tTm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW91bnROb2RlKSB7XG4gICAgICAgICAgbW91bnROb2RlLmFwcGVuZENoaWxkKHBvcHVwQ29udGFpbmVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSZXRyeSBhZnRlciBmcmFtZSByZW5kZXIgaW4gY2FzZSBwYXJlbnQgbm90IHJlYWR5XG4gICAgICAgICAgX3RoaXMuYXR0YWNoSWQgPSByYWYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMuYXR0YWNoUGFyZW50KHBvcHVwQ29udGFpbmVyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgX3RoaXMuZ2V0Q29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZ2V0RG9jdW1lbnQgPSBfdGhpcy5wcm9wcy5nZXREb2N1bWVudDtcbiAgICAgICAgdmFyIHBvcHVwQ29udGFpbmVyID0gZ2V0RG9jdW1lbnQoX3RoaXMuZ2V0Um9vdERvbU5vZGUoKSkuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IC8vIE1ha2Ugc3VyZSBkZWZhdWx0IHBvcHVwIGNvbnRhaW5lciB3aWxsIG5ldmVyIGNhdXNlIHNjcm9sbGJhciBhcHBlYXJpbmdcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0LWNvbXBvbmVudC90cmlnZ2VyL2lzc3Vlcy80MVxuXG4gICAgICAgIHBvcHVwQ29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgcG9wdXBDb250YWluZXIuc3R5bGUudG9wID0gJzAnO1xuICAgICAgICBwb3B1cENvbnRhaW5lci5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgICAgICBwb3B1cENvbnRhaW5lci5zdHlsZS53aWR0aCA9ICcxMDAlJztcblxuICAgICAgICBfdGhpcy5hdHRhY2hQYXJlbnQocG9wdXBDb250YWluZXIpO1xuXG4gICAgICAgIHJldHVybiBwb3B1cENvbnRhaW5lcjtcbiAgICAgIH07XG5cbiAgICAgIF90aGlzLnNldFBvaW50ID0gZnVuY3Rpb24gKHBvaW50KSB7XG4gICAgICAgIHZhciBhbGlnblBvaW50ID0gX3RoaXMucHJvcHMuYWxpZ25Qb2ludDtcbiAgICAgICAgaWYgKCFhbGlnblBvaW50IHx8ICFwb2ludCkgcmV0dXJuO1xuXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBwb2ludDoge1xuICAgICAgICAgICAgcGFnZVg6IHBvaW50LnBhZ2VYLFxuICAgICAgICAgICAgcGFnZVk6IHBvaW50LnBhZ2VZXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIF90aGlzLmhhbmRsZVBvcnRhbFVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKF90aGlzLnN0YXRlLnByZXZQb3B1cFZpc2libGUgIT09IF90aGlzLnN0YXRlLnBvcHVwVmlzaWJsZSkge1xuICAgICAgICAgIF90aGlzLnByb3BzLmFmdGVyUG9wdXBWaXNpYmxlQ2hhbmdlKF90aGlzLnN0YXRlLnBvcHVwVmlzaWJsZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHZhciBwb3B1cFZpc2libGU7XG5cbiAgICAgIGlmICgncG9wdXBWaXNpYmxlJyBpbiBwcm9wcykge1xuICAgICAgICBwb3B1cFZpc2libGUgPSAhIXByb3BzLnBvcHVwVmlzaWJsZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvcHVwVmlzaWJsZSA9ICEhcHJvcHMuZGVmYXVsdFBvcHVwVmlzaWJsZTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICAgIHByZXZQb3B1cFZpc2libGU6IHBvcHVwVmlzaWJsZSxcbiAgICAgICAgcG9wdXBWaXNpYmxlOiBwb3B1cFZpc2libGVcbiAgICAgIH07XG4gICAgICBBTExfSEFORExFUlMuZm9yRWFjaChmdW5jdGlvbiAoaCkge1xuICAgICAgICBfdGhpc1tcImZpcmVcIi5jb25jYXQoaCldID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICBfdGhpcy5maXJlRXZlbnRzKGgsIGUpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKFRyaWdnZXIsIFt7XG4gICAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnREaWRVcGRhdGUoKTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiY29tcG9uZW50RGlkVXBkYXRlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuICAgICAgICB2YXIgc3RhdGUgPSB0aGlzLnN0YXRlOyAvLyBXZSBtdXN0IGxpc3RlbiB0byBgbW91c2Vkb3duYCBvciBgdG91Y2hzdGFydGAsIGVkZ2UgY2FzZTpcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvNTgwNFxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcmVhY3QtY29tcG9uZW50L2NhbGVuZGFyL2lzc3Vlcy8yNTBcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0LWNvbXBvbmVudC90cmlnZ2VyL2lzc3Vlcy81MFxuXG4gICAgICAgIGlmIChzdGF0ZS5wb3B1cFZpc2libGUpIHtcbiAgICAgICAgICB2YXIgY3VycmVudERvY3VtZW50O1xuXG4gICAgICAgICAgaWYgKCF0aGlzLmNsaWNrT3V0c2lkZUhhbmRsZXIgJiYgKHRoaXMuaXNDbGlja1RvSGlkZSgpIHx8IHRoaXMuaXNDb250ZXh0TWVudVRvU2hvdygpKSkge1xuICAgICAgICAgICAgY3VycmVudERvY3VtZW50ID0gcHJvcHMuZ2V0RG9jdW1lbnQodGhpcy5nZXRSb290RG9tTm9kZSgpKTtcbiAgICAgICAgICAgIHRoaXMuY2xpY2tPdXRzaWRlSGFuZGxlciA9IGFkZEV2ZW50TGlzdGVuZXIoY3VycmVudERvY3VtZW50LCAnbW91c2Vkb3duJywgdGhpcy5vbkRvY3VtZW50Q2xpY2spO1xuICAgICAgICAgIH0gLy8gYWx3YXlzIGhpZGUgb24gbW9iaWxlXG5cblxuICAgICAgICAgIGlmICghdGhpcy50b3VjaE91dHNpZGVIYW5kbGVyKSB7XG4gICAgICAgICAgICBjdXJyZW50RG9jdW1lbnQgPSBjdXJyZW50RG9jdW1lbnQgfHwgcHJvcHMuZ2V0RG9jdW1lbnQodGhpcy5nZXRSb290RG9tTm9kZSgpKTtcbiAgICAgICAgICAgIHRoaXMudG91Y2hPdXRzaWRlSGFuZGxlciA9IGFkZEV2ZW50TGlzdGVuZXIoY3VycmVudERvY3VtZW50LCAndG91Y2hzdGFydCcsIHRoaXMub25Eb2N1bWVudENsaWNrKTtcbiAgICAgICAgICB9IC8vIGNsb3NlIHBvcHVwIHdoZW4gdHJpZ2dlciB0eXBlIGNvbnRhaW5zICdvbkNvbnRleHRNZW51JyBhbmQgZG9jdW1lbnQgaXMgc2Nyb2xsaW5nLlxuXG5cbiAgICAgICAgICBpZiAoIXRoaXMuY29udGV4dE1lbnVPdXRzaWRlSGFuZGxlcjEgJiYgdGhpcy5pc0NvbnRleHRNZW51VG9TaG93KCkpIHtcbiAgICAgICAgICAgIGN1cnJlbnREb2N1bWVudCA9IGN1cnJlbnREb2N1bWVudCB8fCBwcm9wcy5nZXREb2N1bWVudCh0aGlzLmdldFJvb3REb21Ob2RlKCkpO1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0TWVudU91dHNpZGVIYW5kbGVyMSA9IGFkZEV2ZW50TGlzdGVuZXIoY3VycmVudERvY3VtZW50LCAnc2Nyb2xsJywgdGhpcy5vbkNvbnRleHRNZW51Q2xvc2UpO1xuICAgICAgICAgIH0gLy8gY2xvc2UgcG9wdXAgd2hlbiB0cmlnZ2VyIHR5cGUgY29udGFpbnMgJ29uQ29udGV4dE1lbnUnIGFuZCB3aW5kb3cgaXMgYmx1ci5cblxuXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbnRleHRNZW51T3V0c2lkZUhhbmRsZXIyICYmIHRoaXMuaXNDb250ZXh0TWVudVRvU2hvdygpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHRNZW51T3V0c2lkZUhhbmRsZXIyID0gYWRkRXZlbnRMaXN0ZW5lcih3aW5kb3csICdibHVyJywgdGhpcy5vbkNvbnRleHRNZW51Q2xvc2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xlYXJPdXRzaWRlSGFuZGxlcigpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgICB0aGlzLmNsZWFyRGVsYXlUaW1lcigpO1xuICAgICAgICB0aGlzLmNsZWFyT3V0c2lkZUhhbmRsZXIoKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubW91c2VEb3duVGltZW91dCk7XG4gICAgICAgIHJhZi5jYW5jZWwodGhpcy5hdHRhY2hJZCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImdldFBvcHVwRG9tTm9kZVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldFBvcHVwRG9tTm9kZSgpIHtcbiAgICAgICAgdmFyIF90aGlzJHBvcHVwUmVmJGN1cnJlbjI7XG5cbiAgICAgICAgLy8gZm9yIHRlc3RcbiAgICAgICAgcmV0dXJuICgoX3RoaXMkcG9wdXBSZWYkY3VycmVuMiA9IHRoaXMucG9wdXBSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX3RoaXMkcG9wdXBSZWYkY3VycmVuMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcG9wdXBSZWYkY3VycmVuMi5nZXRFbGVtZW50KCkpIHx8IG51bGw7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImdldFBvcHVwQWxpZ25cIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQb3B1cEFsaWduKCkge1xuICAgICAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuICAgICAgICB2YXIgcG9wdXBQbGFjZW1lbnQgPSBwcm9wcy5wb3B1cFBsYWNlbWVudCxcbiAgICAgICAgICAgIHBvcHVwQWxpZ24gPSBwcm9wcy5wb3B1cEFsaWduLFxuICAgICAgICAgICAgYnVpbHRpblBsYWNlbWVudHMgPSBwcm9wcy5idWlsdGluUGxhY2VtZW50cztcblxuICAgICAgICBpZiAocG9wdXBQbGFjZW1lbnQgJiYgYnVpbHRpblBsYWNlbWVudHMpIHtcbiAgICAgICAgICByZXR1cm4gZ2V0QWxpZ25Gcm9tUGxhY2VtZW50KGJ1aWx0aW5QbGFjZW1lbnRzLCBwb3B1cFBsYWNlbWVudCwgcG9wdXBBbGlnbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcG9wdXBBbGlnbjtcbiAgICAgIH1cbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIHBvcHVwVmlzaWJsZSAgICBTaG93IG9yIG5vdCB0aGUgcG9wdXAgZWxlbWVudFxuICAgICAgICogQHBhcmFtIGV2ZW50ICAgICAgICAgICBTeW50aGV0aWNFdmVudCwgdXNlZCBmb3IgYHBvaW50QWxpZ25gXG4gICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgIGtleTogXCJzZXRQb3B1cFZpc2libGVcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRQb3B1cFZpc2libGUocG9wdXBWaXNpYmxlLCBldmVudCkge1xuICAgICAgICB2YXIgYWxpZ25Qb2ludCA9IHRoaXMucHJvcHMuYWxpZ25Qb2ludDtcbiAgICAgICAgdmFyIHByZXZQb3B1cFZpc2libGUgPSB0aGlzLnN0YXRlLnBvcHVwVmlzaWJsZTtcbiAgICAgICAgdGhpcy5jbGVhckRlbGF5VGltZXIoKTtcblxuICAgICAgICBpZiAocHJldlBvcHVwVmlzaWJsZSAhPT0gcG9wdXBWaXNpYmxlKSB7XG4gICAgICAgICAgaWYgKCEoJ3BvcHVwVmlzaWJsZScgaW4gdGhpcy5wcm9wcykpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBwb3B1cFZpc2libGU6IHBvcHVwVmlzaWJsZSxcbiAgICAgICAgICAgICAgcHJldlBvcHVwVmlzaWJsZTogcHJldlBvcHVwVmlzaWJsZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5wcm9wcy5vblBvcHVwVmlzaWJsZUNoYW5nZShwb3B1cFZpc2libGUpO1xuICAgICAgICB9IC8vIEFsd2F5cyByZWNvcmQgdGhlIHBvaW50IHBvc2l0aW9uIHNpbmNlIG1vdXNlRW50ZXJEZWxheSB3aWxsIGRlbGF5IHRoZSBzaG93XG5cblxuICAgICAgICBpZiAoYWxpZ25Qb2ludCAmJiBldmVudCAmJiBwb3B1cFZpc2libGUpIHtcbiAgICAgICAgICB0aGlzLnNldFBvaW50KGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJkZWxheVNldFBvcHVwVmlzaWJsZVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGRlbGF5U2V0UG9wdXBWaXNpYmxlKHZpc2libGUsIGRlbGF5UywgZXZlbnQpIHtcbiAgICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgICAgdmFyIGRlbGF5ID0gZGVsYXlTICogMTAwMDtcbiAgICAgICAgdGhpcy5jbGVhckRlbGF5VGltZXIoKTtcblxuICAgICAgICBpZiAoZGVsYXkpIHtcbiAgICAgICAgICB2YXIgcG9pbnQgPSBldmVudCA/IHtcbiAgICAgICAgICAgIHBhZ2VYOiBldmVudC5wYWdlWCxcbiAgICAgICAgICAgIHBhZ2VZOiBldmVudC5wYWdlWVxuICAgICAgICAgIH0gOiBudWxsO1xuICAgICAgICAgIHRoaXMuZGVsYXlUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzMi5zZXRQb3B1cFZpc2libGUodmlzaWJsZSwgcG9pbnQpO1xuXG4gICAgICAgICAgICBfdGhpczIuY2xlYXJEZWxheVRpbWVyKCk7XG4gICAgICAgICAgfSwgZGVsYXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2V0UG9wdXBWaXNpYmxlKHZpc2libGUsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJjbGVhckRlbGF5VGltZXJcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhckRlbGF5VGltZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRlbGF5VGltZXIpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5kZWxheVRpbWVyKTtcbiAgICAgICAgICB0aGlzLmRlbGF5VGltZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImNsZWFyT3V0c2lkZUhhbmRsZXJcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhck91dHNpZGVIYW5kbGVyKCkge1xuICAgICAgICBpZiAodGhpcy5jbGlja091dHNpZGVIYW5kbGVyKSB7XG4gICAgICAgICAgdGhpcy5jbGlja091dHNpZGVIYW5kbGVyLnJlbW92ZSgpO1xuICAgICAgICAgIHRoaXMuY2xpY2tPdXRzaWRlSGFuZGxlciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb250ZXh0TWVudU91dHNpZGVIYW5kbGVyMSkge1xuICAgICAgICAgIHRoaXMuY29udGV4dE1lbnVPdXRzaWRlSGFuZGxlcjEucmVtb3ZlKCk7XG4gICAgICAgICAgdGhpcy5jb250ZXh0TWVudU91dHNpZGVIYW5kbGVyMSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb250ZXh0TWVudU91dHNpZGVIYW5kbGVyMikge1xuICAgICAgICAgIHRoaXMuY29udGV4dE1lbnVPdXRzaWRlSGFuZGxlcjIucmVtb3ZlKCk7XG4gICAgICAgICAgdGhpcy5jb250ZXh0TWVudU91dHNpZGVIYW5kbGVyMiA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50b3VjaE91dHNpZGVIYW5kbGVyKSB7XG4gICAgICAgICAgdGhpcy50b3VjaE91dHNpZGVIYW5kbGVyLnJlbW92ZSgpO1xuICAgICAgICAgIHRoaXMudG91Y2hPdXRzaWRlSGFuZGxlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiY3JlYXRlVHdvQ2hhaW5zXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlVHdvQ2hhaW5zKGV2ZW50KSB7XG4gICAgICAgIHZhciBjaGlsZFByb3MgPSB0aGlzLnByb3BzLmNoaWxkcmVuLnByb3BzO1xuICAgICAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGlmIChjaGlsZFByb3NbZXZlbnRdICYmIHByb3BzW2V2ZW50XSkge1xuICAgICAgICAgIHJldHVybiB0aGlzW1wiZmlyZVwiLmNvbmNhdChldmVudCldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNoaWxkUHJvc1tldmVudF0gfHwgcHJvcHNbZXZlbnRdO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJpc0NsaWNrVG9TaG93XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gaXNDbGlja1RvU2hvdygpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzNCA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgICBhY3Rpb24gPSBfdGhpcyRwcm9wczQuYWN0aW9uLFxuICAgICAgICAgICAgc2hvd0FjdGlvbiA9IF90aGlzJHByb3BzNC5zaG93QWN0aW9uO1xuICAgICAgICByZXR1cm4gYWN0aW9uLmluZGV4T2YoJ2NsaWNrJykgIT09IC0xIHx8IHNob3dBY3Rpb24uaW5kZXhPZignY2xpY2snKSAhPT0gLTE7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImlzQ29udGV4dE1lbnVPbmx5XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gaXNDb250ZXh0TWVudU9ubHkoKSB7XG4gICAgICAgIHZhciBhY3Rpb24gPSB0aGlzLnByb3BzLmFjdGlvbjtcbiAgICAgICAgcmV0dXJuIGFjdGlvbiA9PT0gJ2NvbnRleHRNZW51JyB8fCBhY3Rpb24ubGVuZ3RoID09PSAxICYmIGFjdGlvblswXSA9PT0gJ2NvbnRleHRNZW51JztcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiaXNDb250ZXh0TWVudVRvU2hvd1wiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGlzQ29udGV4dE1lbnVUb1Nob3coKSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wczUgPSB0aGlzLnByb3BzLFxuICAgICAgICAgICAgYWN0aW9uID0gX3RoaXMkcHJvcHM1LmFjdGlvbixcbiAgICAgICAgICAgIHNob3dBY3Rpb24gPSBfdGhpcyRwcm9wczUuc2hvd0FjdGlvbjtcbiAgICAgICAgcmV0dXJuIGFjdGlvbi5pbmRleE9mKCdjb250ZXh0TWVudScpICE9PSAtMSB8fCBzaG93QWN0aW9uLmluZGV4T2YoJ2NvbnRleHRNZW51JykgIT09IC0xO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJpc0NsaWNrVG9IaWRlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gaXNDbGlja1RvSGlkZSgpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgICBhY3Rpb24gPSBfdGhpcyRwcm9wczYuYWN0aW9uLFxuICAgICAgICAgICAgaGlkZUFjdGlvbiA9IF90aGlzJHByb3BzNi5oaWRlQWN0aW9uO1xuICAgICAgICByZXR1cm4gYWN0aW9uLmluZGV4T2YoJ2NsaWNrJykgIT09IC0xIHx8IGhpZGVBY3Rpb24uaW5kZXhPZignY2xpY2snKSAhPT0gLTE7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImlzTW91c2VFbnRlclRvU2hvd1wiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGlzTW91c2VFbnRlclRvU2hvdygpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzNyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgICBhY3Rpb24gPSBfdGhpcyRwcm9wczcuYWN0aW9uLFxuICAgICAgICAgICAgc2hvd0FjdGlvbiA9IF90aGlzJHByb3BzNy5zaG93QWN0aW9uO1xuICAgICAgICByZXR1cm4gYWN0aW9uLmluZGV4T2YoJ2hvdmVyJykgIT09IC0xIHx8IHNob3dBY3Rpb24uaW5kZXhPZignbW91c2VFbnRlcicpICE9PSAtMTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiaXNNb3VzZUxlYXZlVG9IaWRlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gaXNNb3VzZUxlYXZlVG9IaWRlKCkge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHM4ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICAgIGFjdGlvbiA9IF90aGlzJHByb3BzOC5hY3Rpb24sXG4gICAgICAgICAgICBoaWRlQWN0aW9uID0gX3RoaXMkcHJvcHM4LmhpZGVBY3Rpb247XG4gICAgICAgIHJldHVybiBhY3Rpb24uaW5kZXhPZignaG92ZXInKSAhPT0gLTEgfHwgaGlkZUFjdGlvbi5pbmRleE9mKCdtb3VzZUxlYXZlJykgIT09IC0xO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJpc0ZvY3VzVG9TaG93XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gaXNGb2N1c1RvU2hvdygpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzOSA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgICBhY3Rpb24gPSBfdGhpcyRwcm9wczkuYWN0aW9uLFxuICAgICAgICAgICAgc2hvd0FjdGlvbiA9IF90aGlzJHByb3BzOS5zaG93QWN0aW9uO1xuICAgICAgICByZXR1cm4gYWN0aW9uLmluZGV4T2YoJ2ZvY3VzJykgIT09IC0xIHx8IHNob3dBY3Rpb24uaW5kZXhPZignZm9jdXMnKSAhPT0gLTE7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImlzQmx1clRvSGlkZVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGlzQmx1clRvSGlkZSgpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzMTAgPSB0aGlzLnByb3BzLFxuICAgICAgICAgICAgYWN0aW9uID0gX3RoaXMkcHJvcHMxMC5hY3Rpb24sXG4gICAgICAgICAgICBoaWRlQWN0aW9uID0gX3RoaXMkcHJvcHMxMC5oaWRlQWN0aW9uO1xuICAgICAgICByZXR1cm4gYWN0aW9uLmluZGV4T2YoJ2ZvY3VzJykgIT09IC0xIHx8IGhpZGVBY3Rpb24uaW5kZXhPZignYmx1cicpICE9PSAtMTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZm9yY2VQb3B1cEFsaWduXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZm9yY2VQb3B1cEFsaWduKCkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5wb3B1cFZpc2libGUpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkcG9wdXBSZWYkY3VycmVuMztcblxuICAgICAgICAgIChfdGhpcyRwb3B1cFJlZiRjdXJyZW4zID0gdGhpcy5wb3B1cFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfdGhpcyRwb3B1cFJlZiRjdXJyZW4zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwb3B1cFJlZiRjdXJyZW4zLmZvcmNlQWxpZ24oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJmaXJlRXZlbnRzXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZmlyZUV2ZW50cyh0eXBlLCBlKSB7XG4gICAgICAgIHZhciBjaGlsZENhbGxiYWNrID0gdGhpcy5wcm9wcy5jaGlsZHJlbi5wcm9wc1t0eXBlXTtcblxuICAgICAgICBpZiAoY2hpbGRDYWxsYmFjaykge1xuICAgICAgICAgIGNoaWxkQ2FsbGJhY2soZSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY2FsbGJhY2sgPSB0aGlzLnByb3BzW3R5cGVdO1xuXG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGNhbGxiYWNrKGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImNsb3NlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICAgIHRoaXMuc2V0UG9wdXBWaXNpYmxlKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgICB2YXIgcG9wdXBWaXNpYmxlID0gdGhpcy5zdGF0ZS5wb3B1cFZpc2libGU7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wczExID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMxMS5jaGlsZHJlbixcbiAgICAgICAgICAgIGZvcmNlUmVuZGVyID0gX3RoaXMkcHJvcHMxMS5mb3JjZVJlbmRlcixcbiAgICAgICAgICAgIGFsaWduUG9pbnQgPSBfdGhpcyRwcm9wczExLmFsaWduUG9pbnQsXG4gICAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczExLmNsYXNzTmFtZSxcbiAgICAgICAgICAgIGF1dG9EZXN0cm95ID0gX3RoaXMkcHJvcHMxMS5hdXRvRGVzdHJveTtcbiAgICAgICAgdmFyIGNoaWxkID0gUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbik7XG4gICAgICAgIHZhciBuZXdDaGlsZFByb3BzID0ge1xuICAgICAgICAgIGtleTogJ3RyaWdnZXInXG4gICAgICAgIH07IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBWaXNpYmxlIEhhbmRsZXJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyA+Pj4gQ29udGV4dE1lbnVcblxuICAgICAgICBpZiAodGhpcy5pc0NvbnRleHRNZW51VG9TaG93KCkpIHtcbiAgICAgICAgICBuZXdDaGlsZFByb3BzLm9uQ29udGV4dE1lbnUgPSB0aGlzLm9uQ29udGV4dE1lbnU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3Q2hpbGRQcm9wcy5vbkNvbnRleHRNZW51ID0gdGhpcy5jcmVhdGVUd29DaGFpbnMoJ29uQ29udGV4dE1lbnUnKTtcbiAgICAgICAgfSAvLyA+Pj4gQ2xpY2tcblxuXG4gICAgICAgIGlmICh0aGlzLmlzQ2xpY2tUb0hpZGUoKSB8fCB0aGlzLmlzQ2xpY2tUb1Nob3coKSkge1xuICAgICAgICAgIG5ld0NoaWxkUHJvcHMub25DbGljayA9IHRoaXMub25DbGljaztcbiAgICAgICAgICBuZXdDaGlsZFByb3BzLm9uTW91c2VEb3duID0gdGhpcy5vbk1vdXNlRG93bjtcbiAgICAgICAgICBuZXdDaGlsZFByb3BzLm9uVG91Y2hTdGFydCA9IHRoaXMub25Ub3VjaFN0YXJ0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0NoaWxkUHJvcHMub25DbGljayA9IHRoaXMuY3JlYXRlVHdvQ2hhaW5zKCdvbkNsaWNrJyk7XG4gICAgICAgICAgbmV3Q2hpbGRQcm9wcy5vbk1vdXNlRG93biA9IHRoaXMuY3JlYXRlVHdvQ2hhaW5zKCdvbk1vdXNlRG93bicpO1xuICAgICAgICAgIG5ld0NoaWxkUHJvcHMub25Ub3VjaFN0YXJ0ID0gdGhpcy5jcmVhdGVUd29DaGFpbnMoJ29uVG91Y2hTdGFydCcpO1xuICAgICAgICB9IC8vID4+PiBIb3ZlcihlbnRlcilcblxuXG4gICAgICAgIGlmICh0aGlzLmlzTW91c2VFbnRlclRvU2hvdygpKSB7XG4gICAgICAgICAgbmV3Q2hpbGRQcm9wcy5vbk1vdXNlRW50ZXIgPSB0aGlzLm9uTW91c2VFbnRlcjsgLy8gUG9pbnQgYWxpZ25cblxuICAgICAgICAgIGlmIChhbGlnblBvaW50KSB7XG4gICAgICAgICAgICBuZXdDaGlsZFByb3BzLm9uTW91c2VNb3ZlID0gdGhpcy5vbk1vdXNlTW92ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3Q2hpbGRQcm9wcy5vbk1vdXNlRW50ZXIgPSB0aGlzLmNyZWF0ZVR3b0NoYWlucygnb25Nb3VzZUVudGVyJyk7XG4gICAgICAgIH0gLy8gPj4+IEhvdmVyKGxlYXZlKVxuXG5cbiAgICAgICAgaWYgKHRoaXMuaXNNb3VzZUxlYXZlVG9IaWRlKCkpIHtcbiAgICAgICAgICBuZXdDaGlsZFByb3BzLm9uTW91c2VMZWF2ZSA9IHRoaXMub25Nb3VzZUxlYXZlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0NoaWxkUHJvcHMub25Nb3VzZUxlYXZlID0gdGhpcy5jcmVhdGVUd29DaGFpbnMoJ29uTW91c2VMZWF2ZScpO1xuICAgICAgICB9IC8vID4+PiBGb2N1c1xuXG5cbiAgICAgICAgaWYgKHRoaXMuaXNGb2N1c1RvU2hvdygpIHx8IHRoaXMuaXNCbHVyVG9IaWRlKCkpIHtcbiAgICAgICAgICBuZXdDaGlsZFByb3BzLm9uRm9jdXMgPSB0aGlzLm9uRm9jdXM7XG4gICAgICAgICAgbmV3Q2hpbGRQcm9wcy5vbkJsdXIgPSB0aGlzLm9uQmx1cjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdDaGlsZFByb3BzLm9uRm9jdXMgPSB0aGlzLmNyZWF0ZVR3b0NoYWlucygnb25Gb2N1cycpO1xuICAgICAgICAgIG5ld0NoaWxkUHJvcHMub25CbHVyID0gdGhpcy5jcmVhdGVUd29DaGFpbnMoJ29uQmx1cicpO1xuICAgICAgICB9IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFJlbmRlciA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbiAgICAgICAgdmFyIGNoaWxkcmVuQ2xhc3NOYW1lID0gY2xhc3NOYW1lcyhjaGlsZCAmJiBjaGlsZC5wcm9wcyAmJiBjaGlsZC5wcm9wcy5jbGFzc05hbWUsIGNsYXNzTmFtZSk7XG5cbiAgICAgICAgaWYgKGNoaWxkcmVuQ2xhc3NOYW1lKSB7XG4gICAgICAgICAgbmV3Q2hpbGRQcm9wcy5jbGFzc05hbWUgPSBjaGlsZHJlbkNsYXNzTmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjbG9uZVByb3BzID0gX29iamVjdFNwcmVhZCh7fSwgbmV3Q2hpbGRQcm9wcyk7XG5cbiAgICAgICAgaWYgKHN1cHBvcnRSZWYoY2hpbGQpKSB7XG4gICAgICAgICAgY2xvbmVQcm9wcy5yZWYgPSBjb21wb3NlUmVmKHRoaXMudHJpZ2dlclJlZiwgY2hpbGQucmVmKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0cmlnZ2VyID0gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgY2xvbmVQcm9wcyk7XG4gICAgICAgIHZhciBwb3J0YWw7IC8vIHByZXZlbnQgdW5tb3VudGluZyBhZnRlciBpdCdzIHJlbmRlcmVkXG5cbiAgICAgICAgaWYgKHBvcHVwVmlzaWJsZSB8fCB0aGlzLnBvcHVwUmVmLmN1cnJlbnQgfHwgZm9yY2VSZW5kZXIpIHtcbiAgICAgICAgICBwb3J0YWwgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChQb3J0YWxDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGtleTogXCJwb3J0YWxcIixcbiAgICAgICAgICAgIGdldENvbnRhaW5lcjogdGhpcy5nZXRDb250YWluZXIsXG4gICAgICAgICAgICBkaWRVcGRhdGU6IHRoaXMuaGFuZGxlUG9ydGFsVXBkYXRlXG4gICAgICAgICAgfSwgdGhpcy5nZXRDb21wb25lbnQoKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBvcHVwVmlzaWJsZSAmJiBhdXRvRGVzdHJveSkge1xuICAgICAgICAgIHBvcnRhbCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVHJpZ2dlckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgb25Qb3B1cE1vdXNlRG93bjogdGhpcy5vblBvcHVwTW91c2VEb3duXG4gICAgICAgICAgfVxuICAgICAgICB9LCB0cmlnZ2VyLCBwb3J0YWwpO1xuICAgICAgfVxuICAgIH1dLCBbe1xuICAgICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhfcmVmLCBwcmV2U3RhdGUpIHtcbiAgICAgICAgdmFyIHBvcHVwVmlzaWJsZSA9IF9yZWYucG9wdXBWaXNpYmxlO1xuICAgICAgICB2YXIgbmV3U3RhdGUgPSB7fTtcblxuICAgICAgICBpZiAocG9wdXBWaXNpYmxlICE9PSB1bmRlZmluZWQgJiYgcHJldlN0YXRlLnBvcHVwVmlzaWJsZSAhPT0gcG9wdXBWaXNpYmxlKSB7XG4gICAgICAgICAgbmV3U3RhdGUucG9wdXBWaXNpYmxlID0gcG9wdXBWaXNpYmxlO1xuICAgICAgICAgIG5ld1N0YXRlLnByZXZQb3B1cFZpc2libGUgPSBwcmV2U3RhdGUucG9wdXBWaXNpYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ld1N0YXRlO1xuICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBUcmlnZ2VyO1xuICB9KFJlYWN0LkNvbXBvbmVudCk7XG5cbiAgVHJpZ2dlci5jb250ZXh0VHlwZSA9IFRyaWdnZXJDb250ZXh0O1xuICBUcmlnZ2VyLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBwcmVmaXhDbHM6ICdyYy10cmlnZ2VyLXBvcHVwJyxcbiAgICBnZXRQb3B1cENsYXNzTmFtZUZyb21BbGlnbjogcmV0dXJuRW1wdHlTdHJpbmcsXG4gICAgZ2V0RG9jdW1lbnQ6IHJldHVybkRvY3VtZW50LFxuICAgIG9uUG9wdXBWaXNpYmxlQ2hhbmdlOiBub29wLFxuICAgIGFmdGVyUG9wdXBWaXNpYmxlQ2hhbmdlOiBub29wLFxuICAgIG9uUG9wdXBBbGlnbjogbm9vcCxcbiAgICBwb3B1cENsYXNzTmFtZTogJycsXG4gICAgbW91c2VFbnRlckRlbGF5OiAwLFxuICAgIG1vdXNlTGVhdmVEZWxheTogMC4xLFxuICAgIGZvY3VzRGVsYXk6IDAsXG4gICAgYmx1ckRlbGF5OiAwLjE1LFxuICAgIHBvcHVwU3R5bGU6IHt9LFxuICAgIGRlc3Ryb3lQb3B1cE9uSGlkZTogZmFsc2UsXG4gICAgcG9wdXBBbGlnbjoge30sXG4gICAgZGVmYXVsdFBvcHVwVmlzaWJsZTogZmFsc2UsXG4gICAgbWFzazogZmFsc2UsXG4gICAgbWFza0Nsb3NhYmxlOiB0cnVlLFxuICAgIGFjdGlvbjogW10sXG4gICAgc2hvd0FjdGlvbjogW10sXG4gICAgaGlkZUFjdGlvbjogW10sXG4gICAgYXV0b0Rlc3Ryb3k6IGZhbHNlXG4gIH07XG4gIHJldHVybiBUcmlnZ2VyO1xufVxuZXhwb3J0IGRlZmF1bHQgZ2VuZXJhdGVUcmlnZ2VyKFBvcnRhbCk7IiwiaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG4vKipcbiAqIFJldHVybiBpZiBhIG5vZGUgaXMgYSBET00gbm9kZS4gRWxzZSB3aWxsIHJldHVybiBieSBgZmluZERPTU5vZGVgXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZmluZERPTU5vZGUobm9kZSkge1xuICBpZiAobm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gUmVhY3RET00uZmluZERPTU5vZGUobm9kZSk7XG59IiwiaW1wb3J0IF9hcml0eSBmcm9tIFwiLi9pbnRlcm5hbC9fYXJpdHkuanNcIjtcbmltcG9ydCBfY3VycnkxIGZyb20gXCIuL2ludGVybmFsL19jdXJyeTEuanNcIjtcbmltcG9ydCBfY3VycnkyIGZyb20gXCIuL2ludGVybmFsL19jdXJyeTIuanNcIjtcbmltcG9ydCBfY3VycnlOIGZyb20gXCIuL2ludGVybmFsL19jdXJyeU4uanNcIjtcbi8qKlxuICogUmV0dXJucyBhIGN1cnJpZWQgZXF1aXZhbGVudCBvZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24sIHdpdGggdGhlIHNwZWNpZmllZFxuICogYXJpdHkuIFRoZSBjdXJyaWVkIGZ1bmN0aW9uIGhhcyB0d28gdW51c3VhbCBjYXBhYmlsaXRpZXMuIEZpcnN0LCBpdHNcbiAqIGFyZ3VtZW50cyBuZWVkbid0IGJlIHByb3ZpZGVkIG9uZSBhdCBhIHRpbWUuIElmIGBnYCBpcyBgUi5jdXJyeU4oMywgZilgLCB0aGVcbiAqIGZvbGxvd2luZyBhcmUgZXF1aXZhbGVudDpcbiAqXG4gKiAgIC0gYGcoMSkoMikoMylgXG4gKiAgIC0gYGcoMSkoMiwgMylgXG4gKiAgIC0gYGcoMSwgMikoMylgXG4gKiAgIC0gYGcoMSwgMiwgMylgXG4gKlxuICogU2Vjb25kbHksIHRoZSBzcGVjaWFsIHBsYWNlaG9sZGVyIHZhbHVlIFtgUi5fX2BdKCNfXykgbWF5IGJlIHVzZWQgdG8gc3BlY2lmeVxuICogXCJnYXBzXCIsIGFsbG93aW5nIHBhcnRpYWwgYXBwbGljYXRpb24gb2YgYW55IGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyxcbiAqIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgcG9zaXRpb25zLiBJZiBgZ2AgaXMgYXMgYWJvdmUgYW5kIGBfYCBpcyBbYFIuX19gXSgjX18pLFxuICogdGhlIGZvbGxvd2luZyBhcmUgZXF1aXZhbGVudDpcbiAqXG4gKiAgIC0gYGcoMSwgMiwgMylgXG4gKiAgIC0gYGcoXywgMiwgMykoMSlgXG4gKiAgIC0gYGcoXywgXywgMykoMSkoMilgXG4gKiAgIC0gYGcoXywgXywgMykoMSwgMilgXG4gKiAgIC0gYGcoXywgMikoMSkoMylgXG4gKiAgIC0gYGcoXywgMikoMSwgMylgXG4gKiAgIC0gYGcoXywgMikoXywgMykoMSlgXG4gKlxuICogQGZ1bmNcbiAqIEBtZW1iZXJPZiBSXG4gKiBAc2luY2UgdjAuNS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBzaWcgTnVtYmVyIC0+ICgqIC0+IGEpIC0+ICgqIC0+IGEpXG4gKiBAcGFyYW0ge051bWJlcn0gbGVuZ3RoIFRoZSBhcml0eSBmb3IgdGhlIHJldHVybmVkIGZ1bmN0aW9uLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIGN1cnJ5LlxuICogQHJldHVybiB7RnVuY3Rpb259IEEgbmV3LCBjdXJyaWVkIGZ1bmN0aW9uLlxuICogQHNlZSBSLmN1cnJ5XG4gKiBAZXhhbXBsZVxuICpcbiAqICAgICAgY29uc3Qgc3VtQXJncyA9ICguLi5hcmdzKSA9PiBSLnN1bShhcmdzKTtcbiAqXG4gKiAgICAgIGNvbnN0IGN1cnJpZWRBZGRGb3VyTnVtYmVycyA9IFIuY3VycnlOKDQsIHN1bUFyZ3MpO1xuICogICAgICBjb25zdCBmID0gY3VycmllZEFkZEZvdXJOdW1iZXJzKDEsIDIpO1xuICogICAgICBjb25zdCBnID0gZigzKTtcbiAqICAgICAgZyg0KTsgLy89PiAxMFxuICovXG5cbnZhciBjdXJyeU4gPVxuLyojX19QVVJFX18qL1xuX2N1cnJ5MihmdW5jdGlvbiBjdXJyeU4obGVuZ3RoLCBmbikge1xuICBpZiAobGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIF9jdXJyeTEoZm4pO1xuICB9XG5cbiAgcmV0dXJuIF9hcml0eShsZW5ndGgsIF9jdXJyeU4obGVuZ3RoLCBbXSwgZm4pKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjdXJyeU47IiwiaW1wb3J0IF9hcml0eSBmcm9tIFwiLi9fYXJpdHkuanNcIjtcbmltcG9ydCBfaXNQbGFjZWhvbGRlciBmcm9tIFwiLi9faXNQbGFjZWhvbGRlci5qc1wiO1xuLyoqXG4gKiBJbnRlcm5hbCBjdXJyeU4gZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtOdW1iZXJ9IGxlbmd0aCBUaGUgYXJpdHkgb2YgdGhlIGN1cnJpZWQgZnVuY3Rpb24uXG4gKiBAcGFyYW0ge0FycmF5fSByZWNlaXZlZCBBbiBhcnJheSBvZiBhcmd1bWVudHMgcmVjZWl2ZWQgdGh1cyBmYXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gY3VycnkuXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gVGhlIGN1cnJpZWQgZnVuY3Rpb24uXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2N1cnJ5TihsZW5ndGgsIHJlY2VpdmVkLCBmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjb21iaW5lZCA9IFtdO1xuICAgIHZhciBhcmdzSWR4ID0gMDtcbiAgICB2YXIgbGVmdCA9IGxlbmd0aDtcbiAgICB2YXIgY29tYmluZWRJZHggPSAwO1xuXG4gICAgd2hpbGUgKGNvbWJpbmVkSWR4IDwgcmVjZWl2ZWQubGVuZ3RoIHx8IGFyZ3NJZHggPCBhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuXG4gICAgICBpZiAoY29tYmluZWRJZHggPCByZWNlaXZlZC5sZW5ndGggJiYgKCFfaXNQbGFjZWhvbGRlcihyZWNlaXZlZFtjb21iaW5lZElkeF0pIHx8IGFyZ3NJZHggPj0gYXJndW1lbnRzLmxlbmd0aCkpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVjZWl2ZWRbY29tYmluZWRJZHhdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gYXJndW1lbnRzW2FyZ3NJZHhdO1xuICAgICAgICBhcmdzSWR4ICs9IDE7XG4gICAgICB9XG5cbiAgICAgIGNvbWJpbmVkW2NvbWJpbmVkSWR4XSA9IHJlc3VsdDtcblxuICAgICAgaWYgKCFfaXNQbGFjZWhvbGRlcihyZXN1bHQpKSB7XG4gICAgICAgIGxlZnQgLT0gMTtcbiAgICAgIH1cblxuICAgICAgY29tYmluZWRJZHggKz0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGVmdCA8PSAwID8gZm4uYXBwbHkodGhpcywgY29tYmluZWQpIDogX2FyaXR5KGxlZnQsIF9jdXJyeU4obGVuZ3RoLCBjb21iaW5lZCwgZm4pKTtcbiAgfTtcbn0iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnO1xuaW1wb3J0IHsgZ2VuZXJhdGUgYXMgZ2VuZXJhdGVDb2xvciB9IGZyb20gJ0BhbnQtZGVzaWduL2NvbG9ycyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHtcbiAgICBpZiAoIShwcm9jZXNzICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tAYW50LWRlc2lnbi9pY29ucy1yZWFjdF06ICcgKyBtZXNzYWdlICsgJy4nKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaXNJY29uRGVmaW5pdGlvbih0YXJnZXQpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRhcmdldCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHRhcmdldC5uYW1lID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgdGFyZ2V0LnRoZW1lID09PSAnc3RyaW5nJyAmJiAodHlwZW9mIHRhcmdldC5pY29uID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdGFyZ2V0Lmljb24gPT09ICdmdW5jdGlvbicpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUF0dHJzKCkge1xuICAgIHZhciBhdHRycyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYXR0cnMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBrZXkpIHtcbiAgICAgICAgdmFyIHZhbCA9IGF0dHJzW2tleV07XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdjbGFzcyc6XG4gICAgICAgICAgICAgICAgYWNjLmNsYXNzTmFtZSA9IHZhbDtcbiAgICAgICAgICAgICAgICBkZWxldGUgYWNjWydjbGFzcyddO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBhY2Nba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbn1cbmV4cG9ydCB2YXIgTWluaU1hcCA9IGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBNaW5pTWFwKCkge1xuICAgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWluaU1hcCk7XG5cbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uID0ge307XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKE1pbmlNYXAsIFt7XG4gICAgICAgIGtleTogJ2NsZWFyJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgICAgICAgdGhpcy5jb2xsZWN0aW9uID0ge307XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2RlbGV0ZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfZGVsZXRlKGtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZSB0aGlzLmNvbGxlY3Rpb25ba2V5XTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnZ2V0JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb25ba2V5XTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnaGFzJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGhhcyhrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBCb29sZWFuKHRoaXMuY29sbGVjdGlvbltrZXldKTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnc2V0JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbGxlY3Rpb25ba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3NpemUnLFxuICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNvbGxlY3Rpb24pLmxlbmd0aDtcbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBNaW5pTWFwO1xufSgpO1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlKG5vZGUsIGtleSwgcm9vdFByb3BzKSB7XG4gICAgaWYgKCFyb290UHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQobm9kZS50YWcsIF9leHRlbmRzKHsga2V5OiBrZXkgfSwgbm9ybWFsaXplQXR0cnMobm9kZS5hdHRycykpLCAobm9kZS5jaGlsZHJlbiB8fCBbXSkubWFwKGZ1bmN0aW9uIChjaGlsZCwgaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZShjaGlsZCwga2V5ICsgJy0nICsgbm9kZS50YWcgKyAnLScgKyBpbmRleCk7XG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQobm9kZS50YWcsIF9leHRlbmRzKHtcbiAgICAgICAga2V5OiBrZXlcbiAgICB9LCBub3JtYWxpemVBdHRycyhub2RlLmF0dHJzKSwgcm9vdFByb3BzKSwgKG5vZGUuY2hpbGRyZW4gfHwgW10pLm1hcChmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBnZW5lcmF0ZShjaGlsZCwga2V5ICsgJy0nICsgbm9kZS50YWcgKyAnLScgKyBpbmRleCk7XG4gICAgfSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlY29uZGFyeUNvbG9yKHByaW1hcnlDb2xvcikge1xuICAgIC8vIGNob29zZSB0aGUgc2Vjb25kIGNvbG9yXG4gICAgcmV0dXJuIGdlbmVyYXRlQ29sb3IocHJpbWFyeUNvbG9yKVswXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3VmZml4KG5hbWUsIHRoZW1lKSB7XG4gICAgc3dpdGNoICh0aGVtZSkge1xuICAgICAgICBjYXNlICdmaWxsJzpcbiAgICAgICAgICAgIHJldHVybiBuYW1lICsgJy1maWxsJztcbiAgICAgICAgY2FzZSAnb3V0bGluZSc6XG4gICAgICAgICAgICByZXR1cm4gbmFtZSArICctbyc7XG4gICAgICAgIGNhc2UgJ3R3b3RvbmUnOlxuICAgICAgICAgICAgcmV0dXJuIG5hbWUgKyAnLXR3b3RvbmUnO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biB0aGVtZSB0eXBlOiAnICsgdGhlbWUgKyAnLCBuYW1lOiAnICsgbmFtZSk7XG4gICAgfVxufSIsInZhciBnO1xuXG4vLyBUaGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9kZVxuZyA9IChmdW5jdGlvbigpIHtcblx0cmV0dXJuIHRoaXM7XG59KSgpO1xuXG50cnkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcblx0ZyA9IGcgfHwgbmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcbn0gY2F0Y2ggKGUpIHtcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcblx0aWYgKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpIGcgPSB3aW5kb3c7XG59XG5cbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XG5cbm1vZHVsZS5leHBvcnRzID0gZztcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVztcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGtleSwgb3duLCBvdXQ7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG93biAmJiBoYXMoZXhwb3J0cywga2V5KSkgY29udGludWU7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlc1xuICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKVxuICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG4gICAgOiBJU19XUkFQICYmIHRhcmdldFtrZXldID09IG91dCA/IChmdW5jdGlvbiAoQykge1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEMpIHtcbiAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDKCk7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDKGEsIGIpO1xuICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuICAgICAgcmV0dXJuIEY7XG4gICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lvbnMgZm9yIHByb3RvdHlwZSBtZXRob2RzXG4gICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmIChJU19QUk9UTykge1xuICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0O1xuICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcbiAgICAgIGlmICh0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKSBoaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG4gICAgfVxuICB9XG59O1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuIiwidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IG9taXQ7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7ICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIG9taXQob2JqLCBmaWVsZHMpIHtcbiAgdmFyIGNsb25lID0gX29iamVjdFNwcmVhZCh7fSwgb2JqKTtcblxuICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZHMpKSB7XG4gICAgZmllbGRzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgZGVsZXRlIGNsb25lW2tleV07XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gY2xvbmU7XG59IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiO1xuZnVuY3Rpb24gb21pdChvYmosIGZpZWxkcykge1xuICB2YXIgc2hhbGxvd0NvcHkgPSBfZXh0ZW5kcyh7fSwgb2JqKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0gZmllbGRzW2ldO1xuICAgIGRlbGV0ZSBzaGFsbG93Q29weVtrZXldO1xuICB9XG4gIHJldHVybiBzaGFsbG93Q29weTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgb21pdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMudHVwbGVOdW0gPSBleHBvcnRzLnR1cGxlID0gdm9pZCAwO1xuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80NjE3NjE2NS93YXlzLXRvLWdldC1zdHJpbmctbGl0ZXJhbC10eXBlLW9mLWFycmF5LXZhbHVlcy13aXRob3V0LWVudW0tb3ZlcmhlYWRcbnZhciB0dXBsZSA9IGZ1bmN0aW9uIHR1cGxlKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIGFyZ3M7XG59O1xuXG5leHBvcnRzLnR1cGxlID0gdHVwbGU7XG5cbnZhciB0dXBsZU51bSA9IGZ1bmN0aW9uIHR1cGxlTnVtKCkge1xuICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gIH1cblxuICByZXR1cm4gYXJncztcbn07XG5cbmV4cG9ydHMudHVwbGVOdW0gPSB0dXBsZU51bTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmZ1bmN0aW9uIGNvbXBvbmVudFdpbGxNb3VudCgpIHtcbiAgLy8gQ2FsbCB0aGlzLmNvbnN0cnVjdG9yLmdEU0ZQIHRvIHN1cHBvcnQgc3ViLWNsYXNzZXMuXG4gIHZhciBzdGF0ZSA9IHRoaXMuY29uc3RydWN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHRoaXMucHJvcHMsIHRoaXMuc3RhdGUpO1xuICBpZiAoc3RhdGUgIT09IG51bGwgJiYgc3RhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc2V0U3RhdGUoc3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gIC8vIENhbGwgdGhpcy5jb25zdHJ1Y3Rvci5nRFNGUCB0byBzdXBwb3J0IHN1Yi1jbGFzc2VzLlxuICAvLyBVc2UgdGhlIHNldFN0YXRlKCkgdXBkYXRlciB0byBlbnN1cmUgc3RhdGUgaXNuJ3Qgc3RhbGUgaW4gY2VydGFpbiBlZGdlIGNhc2VzLlxuICBmdW5jdGlvbiB1cGRhdGVyKHByZXZTdGF0ZSkge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuY29uc3RydWN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wcywgcHJldlN0YXRlKTtcbiAgICByZXR1cm4gc3RhdGUgIT09IG51bGwgJiYgc3RhdGUgIT09IHVuZGVmaW5lZCA/IHN0YXRlIDogbnVsbDtcbiAgfVxuICAvLyBCaW5kaW5nIFwidGhpc1wiIGlzIGltcG9ydGFudCBmb3Igc2hhbGxvdyByZW5kZXJlciBzdXBwb3J0LlxuICB0aGlzLnNldFN0YXRlKHVwZGF0ZXIuYmluZCh0aGlzKSk7XG59XG5cbmZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVcGRhdGUobmV4dFByb3BzLCBuZXh0U3RhdGUpIHtcbiAgdHJ5IHtcbiAgICB2YXIgcHJldlByb3BzID0gdGhpcy5wcm9wcztcbiAgICB2YXIgcHJldlN0YXRlID0gdGhpcy5zdGF0ZTtcbiAgICB0aGlzLnByb3BzID0gbmV4dFByb3BzO1xuICAgIHRoaXMuc3RhdGUgPSBuZXh0U3RhdGU7XG4gICAgdGhpcy5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEZsYWcgPSB0cnVlO1xuICAgIHRoaXMuX19yZWFjdEludGVybmFsU25hcHNob3QgPSB0aGlzLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKFxuICAgICAgcHJldlByb3BzLFxuICAgICAgcHJldlN0YXRlXG4gICAgKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0aGlzLnByb3BzID0gcHJldlByb3BzO1xuICAgIHRoaXMuc3RhdGUgPSBwcmV2U3RhdGU7XG4gIH1cbn1cblxuLy8gUmVhY3QgbWF5IHdhcm4gYWJvdXQgY1dNL2NXUlAvY1dVIG1ldGhvZHMgYmVpbmcgZGVwcmVjYXRlZC5cbi8vIEFkZCBhIGZsYWcgdG8gc3VwcHJlc3MgdGhlc2Ugd2FybmluZ3MgZm9yIHRoaXMgc3BlY2lhbCBjYXNlLlxuY29tcG9uZW50V2lsbE1vdW50Ll9fc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmcgPSB0cnVlO1xuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcy5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nID0gdHJ1ZTtcbmNvbXBvbmVudFdpbGxVcGRhdGUuX19zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZyA9IHRydWU7XG5cbmZ1bmN0aW9uIHBvbHlmaWxsKENvbXBvbmVudCkge1xuICB2YXIgcHJvdG90eXBlID0gQ29tcG9uZW50LnByb3RvdHlwZTtcblxuICBpZiAoIXByb3RvdHlwZSB8fCAhcHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbiBvbmx5IHBvbHlmaWxsIGNsYXNzIGNvbXBvbmVudHMnKTtcbiAgfVxuXG4gIGlmIChcbiAgICB0eXBlb2YgQ29tcG9uZW50LmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyAhPT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBwcm90b3R5cGUuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgIT09ICdmdW5jdGlvbidcbiAgKSB7XG4gICAgcmV0dXJuIENvbXBvbmVudDtcbiAgfVxuXG4gIC8vIElmIG5ldyBjb21wb25lbnQgQVBJcyBhcmUgZGVmaW5lZCwgXCJ1bnNhZmVcIiBsaWZlY3ljbGVzIHdvbid0IGJlIGNhbGxlZC5cbiAgLy8gRXJyb3IgaWYgYW55IG9mIHRoZXNlIGxpZmVjeWNsZXMgYXJlIHByZXNlbnQsXG4gIC8vIEJlY2F1c2UgdGhleSB3b3VsZCB3b3JrIGRpZmZlcmVudGx5IGJldHdlZW4gb2xkZXIgYW5kIG5ld2VyICgxNi4zKykgdmVyc2lvbnMgb2YgUmVhY3QuXG4gIHZhciBmb3VuZFdpbGxNb3VudE5hbWUgPSBudWxsO1xuICB2YXIgZm91bmRXaWxsUmVjZWl2ZVByb3BzTmFtZSA9IG51bGw7XG4gIHZhciBmb3VuZFdpbGxVcGRhdGVOYW1lID0gbnVsbDtcbiAgaWYgKHR5cGVvZiBwcm90b3R5cGUuY29tcG9uZW50V2lsbE1vdW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm91bmRXaWxsTW91bnROYW1lID0gJ2NvbXBvbmVudFdpbGxNb3VudCc7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHByb3RvdHlwZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm91bmRXaWxsTW91bnROYW1lID0gJ1VOU0FGRV9jb21wb25lbnRXaWxsTW91bnQnO1xuICB9XG4gIGlmICh0eXBlb2YgcHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBmb3VuZFdpbGxSZWNlaXZlUHJvcHNOYW1lID0gJ2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMnO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBwcm90b3R5cGUuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBmb3VuZFdpbGxSZWNlaXZlUHJvcHNOYW1lID0gJ1VOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJztcbiAgfVxuICBpZiAodHlwZW9mIHByb3RvdHlwZS5jb21wb25lbnRXaWxsVXBkYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm91bmRXaWxsVXBkYXRlTmFtZSA9ICdjb21wb25lbnRXaWxsVXBkYXRlJztcbiAgfSBlbHNlIGlmICh0eXBlb2YgcHJvdG90eXBlLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm91bmRXaWxsVXBkYXRlTmFtZSA9ICdVTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSc7XG4gIH1cbiAgaWYgKFxuICAgIGZvdW5kV2lsbE1vdW50TmFtZSAhPT0gbnVsbCB8fFxuICAgIGZvdW5kV2lsbFJlY2VpdmVQcm9wc05hbWUgIT09IG51bGwgfHxcbiAgICBmb3VuZFdpbGxVcGRhdGVOYW1lICE9PSBudWxsXG4gICkge1xuICAgIHZhciBjb21wb25lbnROYW1lID0gQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lO1xuICAgIHZhciBuZXdBcGlOYW1lID1cbiAgICAgIHR5cGVvZiBDb21wb25lbnQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gJ2dldERlcml2ZWRTdGF0ZUZyb21Qcm9wcygpJ1xuICAgICAgICA6ICdnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSgpJztcblxuICAgIHRocm93IEVycm9yKFxuICAgICAgJ1Vuc2FmZSBsZWdhY3kgbGlmZWN5Y2xlcyB3aWxsIG5vdCBiZSBjYWxsZWQgZm9yIGNvbXBvbmVudHMgdXNpbmcgbmV3IGNvbXBvbmVudCBBUElzLlxcblxcbicgK1xuICAgICAgICBjb21wb25lbnROYW1lICtcbiAgICAgICAgJyB1c2VzICcgK1xuICAgICAgICBuZXdBcGlOYW1lICtcbiAgICAgICAgJyBidXQgYWxzbyBjb250YWlucyB0aGUgZm9sbG93aW5nIGxlZ2FjeSBsaWZlY3ljbGVzOicgK1xuICAgICAgICAoZm91bmRXaWxsTW91bnROYW1lICE9PSBudWxsID8gJ1xcbiAgJyArIGZvdW5kV2lsbE1vdW50TmFtZSA6ICcnKSArXG4gICAgICAgIChmb3VuZFdpbGxSZWNlaXZlUHJvcHNOYW1lICE9PSBudWxsXG4gICAgICAgICAgPyAnXFxuICAnICsgZm91bmRXaWxsUmVjZWl2ZVByb3BzTmFtZVxuICAgICAgICAgIDogJycpICtcbiAgICAgICAgKGZvdW5kV2lsbFVwZGF0ZU5hbWUgIT09IG51bGwgPyAnXFxuICAnICsgZm91bmRXaWxsVXBkYXRlTmFtZSA6ICcnKSArXG4gICAgICAgICdcXG5cXG5UaGUgYWJvdmUgbGlmZWN5Y2xlcyBzaG91bGQgYmUgcmVtb3ZlZC4gTGVhcm4gbW9yZSBhYm91dCB0aGlzIHdhcm5pbmcgaGVyZTpcXG4nICtcbiAgICAgICAgJ2h0dHBzOi8vZmIubWUvcmVhY3QtYXN5bmMtY29tcG9uZW50LWxpZmVjeWNsZS1ob29rcydcbiAgICApO1xuICB9XG5cbiAgLy8gUmVhY3QgPD0gMTYuMiBkb2VzIG5vdCBzdXBwb3J0IHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMuXG4gIC8vIEFzIGEgd29ya2Fyb3VuZCwgdXNlIGNXTSBhbmQgY1dSUCB0byBpbnZva2UgdGhlIG5ldyBzdGF0aWMgbGlmZWN5Y2xlLlxuICAvLyBOZXdlciB2ZXJzaW9ucyBvZiBSZWFjdCB3aWxsIGlnbm9yZSB0aGVzZSBsaWZlY3ljbGVzIGlmIGdEU0ZQIGV4aXN0cy5cbiAgaWYgKHR5cGVvZiBDb21wb25lbnQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcHJvdG90eXBlLmNvbXBvbmVudFdpbGxNb3VudCA9IGNvbXBvbmVudFdpbGxNb3VudDtcbiAgICBwcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyA9IGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM7XG4gIH1cblxuICAvLyBSZWFjdCA8PSAxNi4yIGRvZXMgbm90IHN1cHBvcnQgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUuXG4gIC8vIEFzIGEgd29ya2Fyb3VuZCwgdXNlIGNXVSB0byBpbnZva2UgdGhlIG5ldyBsaWZlY3ljbGUuXG4gIC8vIE5ld2VyIHZlcnNpb25zIG9mIFJlYWN0IHdpbGwgaWdub3JlIHRoYXQgbGlmZWN5Y2xlIGlmIGdTQlUgZXhpc3RzLlxuICBpZiAodHlwZW9mIHByb3RvdHlwZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmICh0eXBlb2YgcHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ2Fubm90IHBvbHlmaWxsIGdldFNuYXBzaG90QmVmb3JlVXBkYXRlKCkgZm9yIGNvbXBvbmVudHMgdGhhdCBkbyBub3QgZGVmaW5lIGNvbXBvbmVudERpZFVwZGF0ZSgpIG9uIHRoZSBwcm90b3R5cGUnXG4gICAgICApO1xuICAgIH1cblxuICAgIHByb3RvdHlwZS5jb21wb25lbnRXaWxsVXBkYXRlID0gY29tcG9uZW50V2lsbFVwZGF0ZTtcblxuICAgIHZhciBjb21wb25lbnREaWRVcGRhdGUgPSBwcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlO1xuXG4gICAgcHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZSA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZVBvbHlmaWxsKFxuICAgICAgcHJldlByb3BzLFxuICAgICAgcHJldlN0YXRlLFxuICAgICAgbWF5YmVTbmFwc2hvdFxuICAgICkge1xuICAgICAgLy8gMTYuMysgd2lsbCBub3QgZXhlY3V0ZSBvdXIgd2lsbC11cGRhdGUgbWV0aG9kO1xuICAgICAgLy8gSXQgd2lsbCBwYXNzIGEgc25hcHNob3QgdmFsdWUgdG8gZGlkLXVwZGF0ZSB0aG91Z2guXG4gICAgICAvLyBPbGRlciB2ZXJzaW9ucyB3aWxsIHJlcXVpcmUgb3VyIHBvbHlmaWxsZWQgd2lsbC11cGRhdGUgdmFsdWUuXG4gICAgICAvLyBXZSBuZWVkIHRvIGhhbmRsZSBib3RoIGNhc2VzLCBidXQgY2FuJ3QganVzdCBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIFwibWF5YmVTbmFwc2hvdFwiLFxuICAgICAgLy8gQmVjYXVzZSBmb3IgPD0gMTUueCB2ZXJzaW9ucyB0aGlzIG1pZ2h0IGJlIGEgXCJwcmV2Q29udGV4dFwiIG9iamVjdC5cbiAgICAgIC8vIFdlIGFsc28gY2FuJ3QganVzdCBjaGVjayBcIl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90XCIsXG4gICAgICAvLyBCZWNhdXNlIGdldC1zbmFwc2hvdCBtaWdodCByZXR1cm4gYSBmYWxzeSB2YWx1ZS5cbiAgICAgIC8vIFNvIGNoZWNrIGZvciB0aGUgZXhwbGljaXQgX19yZWFjdEludGVybmFsU25hcHNob3RGbGFnIGZsYWcgdG8gZGV0ZXJtaW5lIGJlaGF2aW9yLlxuICAgICAgdmFyIHNuYXBzaG90ID0gdGhpcy5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEZsYWdcbiAgICAgICAgPyB0aGlzLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90XG4gICAgICAgIDogbWF5YmVTbmFwc2hvdDtcblxuICAgICAgY29tcG9uZW50RGlkVXBkYXRlLmNhbGwodGhpcywgcHJldlByb3BzLCBwcmV2U3RhdGUsIHNuYXBzaG90KTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIENvbXBvbmVudDtcbn1cblxuZXhwb3J0IHsgcG9seWZpbGwgfTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyoqXHJcbiAqIEEgY29sbGVjdGlvbiBvZiBzaGltcyB0aGF0IHByb3ZpZGUgbWluaW1hbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSBFUzYgY29sbGVjdGlvbnMuXHJcbiAqXHJcbiAqIFRoZXNlIGltcGxlbWVudGF0aW9ucyBhcmUgbm90IG1lYW50IHRvIGJlIHVzZWQgb3V0c2lkZSBvZiB0aGUgUmVzaXplT2JzZXJ2ZXJcclxuICogbW9kdWxlcyBhcyB0aGV5IGNvdmVyIG9ubHkgYSBsaW1pdGVkIHJhbmdlIG9mIHVzZSBjYXNlcy5cclxuICovXHJcbi8qIGVzbGludC1kaXNhYmxlIHJlcXVpcmUtanNkb2MsIHZhbGlkLWpzZG9jICovXHJcbnZhciBNYXBTaGltID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGlmICh0eXBlb2YgTWFwICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIHJldHVybiBNYXA7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgaW5kZXggaW4gcHJvdmlkZWQgYXJyYXkgdGhhdCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQga2V5LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7QXJyYXk8QXJyYXk+fSBhcnJcclxuICAgICAqIEBwYXJhbSB7Kn0ga2V5XHJcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBnZXRJbmRleChhcnIsIGtleSkge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSAtMTtcclxuICAgICAgICBhcnIuc29tZShmdW5jdGlvbiAoZW50cnksIGluZGV4KSB7XHJcbiAgICAgICAgICAgIGlmIChlbnRyeVswXSA9PT0ga2V5KSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBmdW5jdGlvbiBjbGFzc18xKCkge1xyXG4gICAgICAgICAgICB0aGlzLl9fZW50cmllc19fID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjbGFzc18xLnByb3RvdHlwZSwgXCJzaXplXCIsIHtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fX2VudHJpZXNfXy5sZW5ndGg7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBwYXJhbSB7Kn0ga2V5XHJcbiAgICAgICAgICogQHJldHVybnMgeyp9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY2xhc3NfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICB2YXIgaW5kZXggPSBnZXRJbmRleCh0aGlzLl9fZW50cmllc19fLCBrZXkpO1xyXG4gICAgICAgICAgICB2YXIgZW50cnkgPSB0aGlzLl9fZW50cmllc19fW2luZGV4XTtcclxuICAgICAgICAgICAgcmV0dXJuIGVudHJ5ICYmIGVudHJ5WzFdO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQHBhcmFtIHsqfSBrZXlcclxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlXHJcbiAgICAgICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY2xhc3NfMS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcclxuICAgICAgICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXgodGhpcy5fX2VudHJpZXNfXywga2V5KTtcclxuICAgICAgICAgICAgaWYgKH5pbmRleCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fX2VudHJpZXNfX1tpbmRleF1bMV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX19lbnRyaWVzX18ucHVzaChba2V5LCB2YWx1ZV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAcGFyYW0geyp9IGtleVxyXG4gICAgICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGNsYXNzXzEucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICAgICAgdmFyIGVudHJpZXMgPSB0aGlzLl9fZW50cmllc19fO1xyXG4gICAgICAgICAgICB2YXIgaW5kZXggPSBnZXRJbmRleChlbnRyaWVzLCBrZXkpO1xyXG4gICAgICAgICAgICBpZiAofmluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICBlbnRyaWVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBwYXJhbSB7Kn0ga2V5XHJcbiAgICAgICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY2xhc3NfMS5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gISF+Z2V0SW5kZXgodGhpcy5fX2VudHJpZXNfXywga2V5KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGNsYXNzXzEucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB0aGlzLl9fZW50cmllc19fLnNwbGljZSgwKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXHJcbiAgICAgICAgICogQHBhcmFtIHsqfSBbY3R4PW51bGxdXHJcbiAgICAgICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY2xhc3NfMS5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChjYWxsYmFjaywgY3R4KSB7XHJcbiAgICAgICAgICAgIGlmIChjdHggPT09IHZvaWQgMCkgeyBjdHggPSBudWxsOyB9XHJcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSB0aGlzLl9fZW50cmllc19fOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gX2FbX2ldO1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbChjdHgsIGVudHJ5WzFdLCBlbnRyeVswXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBjbGFzc18xO1xyXG4gICAgfSgpKTtcclxufSkoKTtcblxuLyoqXHJcbiAqIERldGVjdHMgd2hldGhlciB3aW5kb3cgYW5kIGRvY3VtZW50IG9iamVjdHMgYXJlIGF2YWlsYWJsZSBpbiBjdXJyZW50IGVudmlyb25tZW50LlxyXG4gKi9cclxudmFyIGlzQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50ID09PSBkb2N1bWVudDtcblxuLy8gUmV0dXJucyBnbG9iYWwgb2JqZWN0IG9mIGEgY3VycmVudCBlbnZpcm9ubWVudC5cclxudmFyIGdsb2JhbCQxID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGlmICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwuTWF0aCA9PT0gTWF0aCkge1xyXG4gICAgICAgIHJldHVybiBnbG9iYWw7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PT0gTWF0aCkge1xyXG4gICAgICAgIHJldHVybiBzZWxmO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09PSBNYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuIHdpbmRvdztcclxuICAgIH1cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xyXG4gICAgcmV0dXJuIEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XHJcbn0pKCk7XG5cbi8qKlxyXG4gKiBBIHNoaW0gZm9yIHRoZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgd2hpY2ggZmFsbHMgYmFjayB0byB0aGUgc2V0VGltZW91dCBpZlxyXG4gKiBmaXJzdCBvbmUgaXMgbm90IHN1cHBvcnRlZC5cclxuICpcclxuICogQHJldHVybnMge251bWJlcn0gUmVxdWVzdHMnIGlkZW50aWZpZXIuXHJcbiAqL1xyXG52YXIgcmVxdWVzdEFuaW1hdGlvbkZyYW1lJDEgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgaWYgKHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAvLyBJdCdzIHJlcXVpcmVkIHRvIHVzZSBhIGJvdW5kZWQgZnVuY3Rpb24gYmVjYXVzZSBJRSBzb21ldGltZXMgdGhyb3dzXHJcbiAgICAgICAgLy8gYW4gXCJJbnZhbGlkIGNhbGxpbmcgb2JqZWN0XCIgZXJyb3IgaWYgckFGIGlzIGludm9rZWQgd2l0aG91dCB0aGUgZ2xvYmFsXHJcbiAgICAgICAgLy8gb2JqZWN0IG9uIHRoZSBsZWZ0IGhhbmQgc2lkZS5cclxuICAgICAgICByZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQoZ2xvYmFsJDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChjYWxsYmFjaykgeyByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiBjYWxsYmFjayhEYXRlLm5vdygpKTsgfSwgMTAwMCAvIDYwKTsgfTtcclxufSkoKTtcblxuLy8gRGVmaW5lcyBtaW5pbXVtIHRpbWVvdXQgYmVmb3JlIGFkZGluZyBhIHRyYWlsaW5nIGNhbGwuXHJcbnZhciB0cmFpbGluZ1RpbWVvdXQgPSAyO1xyXG4vKipcclxuICogQ3JlYXRlcyBhIHdyYXBwZXIgZnVuY3Rpb24gd2hpY2ggZW5zdXJlcyB0aGF0IHByb3ZpZGVkIGNhbGxiYWNrIHdpbGwgYmVcclxuICogaW52b2tlZCBvbmx5IG9uY2UgZHVyaW5nIHRoZSBzcGVjaWZpZWQgZGVsYXkgcGVyaW9kLlxyXG4gKlxyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGJlIGludm9rZWQgYWZ0ZXIgdGhlIGRlbGF5IHBlcmlvZC5cclxuICogQHBhcmFtIHtudW1iZXJ9IGRlbGF5IC0gRGVsYXkgYWZ0ZXIgd2hpY2ggdG8gaW52b2tlIGNhbGxiYWNrLlxyXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XHJcbiAqL1xyXG5mdW5jdGlvbiB0aHJvdHRsZSAoY2FsbGJhY2ssIGRlbGF5KSB7XHJcbiAgICB2YXIgbGVhZGluZ0NhbGwgPSBmYWxzZSwgdHJhaWxpbmdDYWxsID0gZmFsc2UsIGxhc3RDYWxsVGltZSA9IDA7XHJcbiAgICAvKipcclxuICAgICAqIEludm9rZXMgdGhlIG9yaWdpbmFsIGNhbGxiYWNrIGZ1bmN0aW9uIGFuZCBzY2hlZHVsZXMgbmV3IGludm9jYXRpb24gaWZcclxuICAgICAqIHRoZSBcInByb3h5XCIgd2FzIGNhbGxlZCBkdXJpbmcgY3VycmVudCByZXF1ZXN0LlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiByZXNvbHZlUGVuZGluZygpIHtcclxuICAgICAgICBpZiAobGVhZGluZ0NhbGwpIHtcclxuICAgICAgICAgICAgbGVhZGluZ0NhbGwgPSBmYWxzZTtcclxuICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRyYWlsaW5nQ2FsbCkge1xyXG4gICAgICAgICAgICBwcm94eSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgaW52b2tlZCBhZnRlciB0aGUgc3BlY2lmaWVkIGRlbGF5LiBJdCB3aWxsIGZ1cnRoZXIgcG9zdHBvbmVcclxuICAgICAqIGludm9jYXRpb24gb2YgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGRlbGVnYXRpbmcgaXQgdG8gdGhlXHJcbiAgICAgKiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIHRpbWVvdXRDYWxsYmFjaygpIHtcclxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUkMShyZXNvbHZlUGVuZGluZyk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFNjaGVkdWxlcyBpbnZvY2F0aW9uIG9mIHRoZSBvcmlnaW5hbCBmdW5jdGlvbi5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gcHJveHkoKSB7XHJcbiAgICAgICAgdmFyIHRpbWVTdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgaWYgKGxlYWRpbmdDYWxsKSB7XHJcbiAgICAgICAgICAgIC8vIFJlamVjdCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgY2FsbHMuXHJcbiAgICAgICAgICAgIGlmICh0aW1lU3RhbXAgLSBsYXN0Q2FsbFRpbWUgPCB0cmFpbGluZ1RpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBTY2hlZHVsZSBuZXcgY2FsbCB0byBiZSBpbiBpbnZva2VkIHdoZW4gdGhlIHBlbmRpbmcgb25lIGlzIHJlc29sdmVkLlxyXG4gICAgICAgICAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBmb3IgXCJ0cmFuc2l0aW9uc1wiIHdoaWNoIG5ldmVyIGFjdHVhbGx5IHN0YXJ0XHJcbiAgICAgICAgICAgIC8vIGltbWVkaWF0ZWx5IHNvIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgd2UgbWlnaHQgbWlzcyBvbmUgaWYgY2hhbmdlXHJcbiAgICAgICAgICAgIC8vIGhhcHBlbnMgYW1pZHMgdGhlIHBlbmRpbmcgaW52b2NhdGlvbi5cclxuICAgICAgICAgICAgdHJhaWxpbmdDYWxsID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxlYWRpbmdDYWxsID0gdHJ1ZTtcclxuICAgICAgICAgICAgdHJhaWxpbmdDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQodGltZW91dENhbGxiYWNrLCBkZWxheSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxhc3RDYWxsVGltZSA9IHRpbWVTdGFtcDtcclxuICAgIH1cclxuICAgIHJldHVybiBwcm94eTtcclxufVxuXG4vLyBNaW5pbXVtIGRlbGF5IGJlZm9yZSBpbnZva2luZyB0aGUgdXBkYXRlIG9mIG9ic2VydmVycy5cclxudmFyIFJFRlJFU0hfREVMQVkgPSAyMDtcclxuLy8gQSBsaXN0IG9mIHN1YnN0cmluZ3Mgb2YgQ1NTIHByb3BlcnRpZXMgdXNlZCB0byBmaW5kIHRyYW5zaXRpb24gZXZlbnRzIHRoYXRcclxuLy8gbWlnaHQgYWZmZWN0IGRpbWVuc2lvbnMgb2Ygb2JzZXJ2ZWQgZWxlbWVudHMuXHJcbnZhciB0cmFuc2l0aW9uS2V5cyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0JywgJ3dpZHRoJywgJ2hlaWdodCcsICdzaXplJywgJ3dlaWdodCddO1xyXG4vLyBDaGVjayBpZiBNdXRhdGlvbk9ic2VydmVyIGlzIGF2YWlsYWJsZS5cclxudmFyIG11dGF0aW9uT2JzZXJ2ZXJTdXBwb3J0ZWQgPSB0eXBlb2YgTXV0YXRpb25PYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCc7XHJcbi8qKlxyXG4gKiBTaW5nbGV0b24gY29udHJvbGxlciBjbGFzcyB3aGljaCBoYW5kbGVzIHVwZGF0ZXMgb2YgUmVzaXplT2JzZXJ2ZXIgaW5zdGFuY2VzLlxyXG4gKi9cclxudmFyIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIuXHJcbiAgICAgKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyKCkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEluZGljYXRlcyB3aGV0aGVyIERPTSBsaXN0ZW5lcnMgaGF2ZSBiZWVuIGFkZGVkLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHByaXZhdGUge2Jvb2xlYW59XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5jb25uZWN0ZWRfID0gZmFsc2U7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogVGVsbHMgdGhhdCBjb250cm9sbGVyIGhhcyBzdWJzY3JpYmVkIGZvciBNdXRhdGlvbiBFdmVudHMuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcHJpdmF0ZSB7Ym9vbGVhbn1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLm11dGF0aW9uRXZlbnRzQWRkZWRfID0gZmFsc2U7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogS2VlcHMgcmVmZXJlbmNlIHRvIHRoZSBpbnN0YW5jZSBvZiBNdXRhdGlvbk9ic2VydmVyLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHByaXZhdGUge011dGF0aW9uT2JzZXJ2ZXJ9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5tdXRhdGlvbnNPYnNlcnZlcl8gPSBudWxsO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEEgbGlzdCBvZiBjb25uZWN0ZWQgb2JzZXJ2ZXJzLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHByaXZhdGUge0FycmF5PFJlc2l6ZU9ic2VydmVyU1BJPn1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLm9ic2VydmVyc18gPSBbXTtcclxuICAgICAgICB0aGlzLm9uVHJhbnNpdGlvbkVuZF8gPSB0aGlzLm9uVHJhbnNpdGlvbkVuZF8uYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2ggPSB0aHJvdHRsZSh0aGlzLnJlZnJlc2guYmluZCh0aGlzKSwgUkVGUkVTSF9ERUxBWSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgb2JzZXJ2ZXIgdG8gb2JzZXJ2ZXJzIGxpc3QuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtSZXNpemVPYnNlcnZlclNQSX0gb2JzZXJ2ZXIgLSBPYnNlcnZlciB0byBiZSBhZGRlZC5cclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIucHJvdG90eXBlLmFkZE9ic2VydmVyID0gZnVuY3Rpb24gKG9ic2VydmVyKSB7XHJcbiAgICAgICAgaWYgKCF+dGhpcy5vYnNlcnZlcnNfLmluZGV4T2Yob2JzZXJ2ZXIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXJzXy5wdXNoKG9ic2VydmVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gQWRkIGxpc3RlbmVycyBpZiB0aGV5IGhhdmVuJ3QgYmVlbiBhZGRlZCB5ZXQuXHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbm5lY3RlZF8pIHtcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0XygpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgb2JzZXJ2ZXIgZnJvbSBvYnNlcnZlcnMgbGlzdC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge1Jlc2l6ZU9ic2VydmVyU1BJfSBvYnNlcnZlciAtIE9ic2VydmVyIHRvIGJlIHJlbW92ZWQuXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmVPYnNlcnZlciA9IGZ1bmN0aW9uIChvYnNlcnZlcikge1xyXG4gICAgICAgIHZhciBvYnNlcnZlcnMgPSB0aGlzLm9ic2VydmVyc187XHJcbiAgICAgICAgdmFyIGluZGV4ID0gb2JzZXJ2ZXJzLmluZGV4T2Yob2JzZXJ2ZXIpO1xyXG4gICAgICAgIC8vIFJlbW92ZSBvYnNlcnZlciBpZiBpdCdzIHByZXNlbnQgaW4gcmVnaXN0cnkuXHJcbiAgICAgICAgaWYgKH5pbmRleCkge1xyXG4gICAgICAgICAgICBvYnNlcnZlcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gUmVtb3ZlIGxpc3RlbmVycyBpZiBjb250cm9sbGVyIGhhcyBubyBjb25uZWN0ZWQgb2JzZXJ2ZXJzLlxyXG4gICAgICAgIGlmICghb2JzZXJ2ZXJzLmxlbmd0aCAmJiB0aGlzLmNvbm5lY3RlZF8pIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNjb25uZWN0XygpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEludm9rZXMgdGhlIHVwZGF0ZSBvZiBvYnNlcnZlcnMuIEl0IHdpbGwgY29udGludWUgcnVubmluZyB1cGRhdGVzIGluc29mYXJcclxuICAgICAqIGl0IGRldGVjdHMgY2hhbmdlcy5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLnByb3RvdHlwZS5yZWZyZXNoID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBjaGFuZ2VzRGV0ZWN0ZWQgPSB0aGlzLnVwZGF0ZU9ic2VydmVyc18oKTtcclxuICAgICAgICAvLyBDb250aW51ZSBydW5uaW5nIHVwZGF0ZXMgaWYgY2hhbmdlcyBoYXZlIGJlZW4gZGV0ZWN0ZWQgYXMgdGhlcmUgbWlnaHRcclxuICAgICAgICAvLyBiZSBmdXR1cmUgb25lcyBjYXVzZWQgYnkgQ1NTIHRyYW5zaXRpb25zLlxyXG4gICAgICAgIGlmIChjaGFuZ2VzRGV0ZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyBldmVyeSBvYnNlcnZlciBmcm9tIG9ic2VydmVycyBsaXN0IGFuZCBub3RpZmllcyB0aGVtIG9mIHF1ZXVlZFxyXG4gICAgICogZW50cmllcy5cclxuICAgICAqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgXCJ0cnVlXCIgaWYgYW55IG9ic2VydmVyIGhhcyBkZXRlY3RlZCBjaGFuZ2VzIGluXHJcbiAgICAgKiAgICAgIGRpbWVuc2lvbnMgb2YgaXQncyBlbGVtZW50cy5cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVPYnNlcnZlcnNfID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vIENvbGxlY3Qgb2JzZXJ2ZXJzIHRoYXQgaGF2ZSBhY3RpdmUgb2JzZXJ2YXRpb25zLlxyXG4gICAgICAgIHZhciBhY3RpdmVPYnNlcnZlcnMgPSB0aGlzLm9ic2VydmVyc18uZmlsdGVyKGZ1bmN0aW9uIChvYnNlcnZlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gb2JzZXJ2ZXIuZ2F0aGVyQWN0aXZlKCksIG9ic2VydmVyLmhhc0FjdGl2ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIERlbGl2ZXIgbm90aWZpY2F0aW9ucyBpbiBhIHNlcGFyYXRlIGN5Y2xlIGluIG9yZGVyIHRvIGF2b2lkIGFueVxyXG4gICAgICAgIC8vIGNvbGxpc2lvbnMgYmV0d2VlbiBvYnNlcnZlcnMsIGUuZy4gd2hlbiBtdWx0aXBsZSBpbnN0YW5jZXMgb2ZcclxuICAgICAgICAvLyBSZXNpemVPYnNlcnZlciBhcmUgdHJhY2tpbmcgdGhlIHNhbWUgZWxlbWVudCBhbmQgdGhlIGNhbGxiYWNrIG9mIG9uZVxyXG4gICAgICAgIC8vIG9mIHRoZW0gY2hhbmdlcyBjb250ZW50IGRpbWVuc2lvbnMgb2YgdGhlIG9ic2VydmVkIHRhcmdldC4gU29tZXRpbWVzXHJcbiAgICAgICAgLy8gdGhpcyBtYXkgcmVzdWx0IGluIG5vdGlmaWNhdGlvbnMgYmVpbmcgYmxvY2tlZCBmb3IgdGhlIHJlc3Qgb2Ygb2JzZXJ2ZXJzLlxyXG4gICAgICAgIGFjdGl2ZU9ic2VydmVycy5mb3JFYWNoKGZ1bmN0aW9uIChvYnNlcnZlcikgeyByZXR1cm4gb2JzZXJ2ZXIuYnJvYWRjYXN0QWN0aXZlKCk7IH0pO1xyXG4gICAgICAgIHJldHVybiBhY3RpdmVPYnNlcnZlcnMubGVuZ3RoID4gMDtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIERPTSBsaXN0ZW5lcnMuXHJcbiAgICAgKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIucHJvdG90eXBlLmNvbm5lY3RfID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgcnVubmluZyBpbiBhIG5vbi1icm93c2VyIGVudmlyb25tZW50IG9yIGlmIGxpc3RlbmVyc1xyXG4gICAgICAgIC8vIGhhdmUgYmVlbiBhbHJlYWR5IGFkZGVkLlxyXG4gICAgICAgIGlmICghaXNCcm93c2VyIHx8IHRoaXMuY29ubmVjdGVkXykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFN1YnNjcmlwdGlvbiB0byB0aGUgXCJUcmFuc2l0aW9uZW5kXCIgZXZlbnQgaXMgdXNlZCBhcyBhIHdvcmthcm91bmQgZm9yXHJcbiAgICAgICAgLy8gZGVsYXllZCB0cmFuc2l0aW9ucy4gVGhpcyB3YXkgaXQncyBwb3NzaWJsZSB0byBjYXB0dXJlIGF0IGxlYXN0IHRoZVxyXG4gICAgICAgIC8vIGZpbmFsIHN0YXRlIG9mIGFuIGVsZW1lbnQuXHJcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIHRoaXMub25UcmFuc2l0aW9uRW5kXyk7XHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVmcmVzaCk7XHJcbiAgICAgICAgaWYgKG11dGF0aW9uT2JzZXJ2ZXJTdXBwb3J0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5tdXRhdGlvbnNPYnNlcnZlcl8gPSBuZXcgTXV0YXRpb25PYnNlcnZlcih0aGlzLnJlZnJlc2gpO1xyXG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uc09ic2VydmVyXy5vYnNlcnZlKGRvY3VtZW50LCB7XHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01TdWJ0cmVlTW9kaWZpZWQnLCB0aGlzLnJlZnJlc2gpO1xyXG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uRXZlbnRzQWRkZWRfID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb25uZWN0ZWRfID0gdHJ1ZTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgRE9NIGxpc3RlbmVycy5cclxuICAgICAqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5wcm90b3R5cGUuZGlzY29ubmVjdF8gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBydW5uaW5nIGluIGEgbm9uLWJyb3dzZXIgZW52aXJvbm1lbnQgb3IgaWYgbGlzdGVuZXJzXHJcbiAgICAgICAgLy8gaGF2ZSBiZWVuIGFscmVhZHkgcmVtb3ZlZC5cclxuICAgICAgICBpZiAoIWlzQnJvd3NlciB8fCAhdGhpcy5jb25uZWN0ZWRfKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIHRoaXMub25UcmFuc2l0aW9uRW5kXyk7XHJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVmcmVzaCk7XHJcbiAgICAgICAgaWYgKHRoaXMubXV0YXRpb25zT2JzZXJ2ZXJfKSB7XHJcbiAgICAgICAgICAgIHRoaXMubXV0YXRpb25zT2JzZXJ2ZXJfLmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubXV0YXRpb25FdmVudHNBZGRlZF8pIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignRE9NU3VidHJlZU1vZGlmaWVkJywgdGhpcy5yZWZyZXNoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tdXRhdGlvbnNPYnNlcnZlcl8gPSBudWxsO1xyXG4gICAgICAgIHRoaXMubXV0YXRpb25FdmVudHNBZGRlZF8gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbm5lY3RlZF8gPSBmYWxzZTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFwiVHJhbnNpdGlvbmVuZFwiIGV2ZW50IGhhbmRsZXIuXHJcbiAgICAgKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIEBwYXJhbSB7VHJhbnNpdGlvbkV2ZW50fSBldmVudFxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5wcm90b3R5cGUub25UcmFuc2l0aW9uRW5kXyA9IGZ1bmN0aW9uIChfYSkge1xyXG4gICAgICAgIHZhciBfYiA9IF9hLnByb3BlcnR5TmFtZSwgcHJvcGVydHlOYW1lID0gX2IgPT09IHZvaWQgMCA/ICcnIDogX2I7XHJcbiAgICAgICAgLy8gRGV0ZWN0IHdoZXRoZXIgdHJhbnNpdGlvbiBtYXkgYWZmZWN0IGRpbWVuc2lvbnMgb2YgYW4gZWxlbWVudC5cclxuICAgICAgICB2YXIgaXNSZWZsb3dQcm9wZXJ0eSA9IHRyYW5zaXRpb25LZXlzLnNvbWUoZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gISF+cHJvcGVydHlOYW1lLmluZGV4T2Yoa2V5KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoaXNSZWZsb3dQcm9wZXJ0eSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGluc3RhbmNlIG9mIHRoZSBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge1Jlc2l6ZU9ic2VydmVyQ29udHJvbGxlcn1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLmdldEluc3RhbmNlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pbnN0YW5jZV8pIHtcclxuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZV8gPSBuZXcgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlXztcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEhvbGRzIHJlZmVyZW5jZSB0byB0aGUgY29udHJvbGxlcidzIGluc3RhbmNlLlxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlIHtSZXNpemVPYnNlcnZlckNvbnRyb2xsZXJ9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5pbnN0YW5jZV8gPSBudWxsO1xyXG4gICAgcmV0dXJuIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlcjtcclxufSgpKTtcblxuLyoqXHJcbiAqIERlZmluZXMgbm9uLXdyaXRhYmxlL2VudW1lcmFibGUgcHJvcGVydGllcyBvZiB0aGUgcHJvdmlkZWQgdGFyZ2V0IG9iamVjdC5cclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IHRhcmdldCAtIE9iamVjdCBmb3Igd2hpY2ggdG8gZGVmaW5lIHByb3BlcnRpZXMuXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIFByb3BlcnRpZXMgdG8gYmUgZGVmaW5lZC5cclxuICogQHJldHVybnMge09iamVjdH0gVGFyZ2V0IG9iamVjdC5cclxuICovXHJcbnZhciBkZWZpbmVDb25maWd1cmFibGUgPSAoZnVuY3Rpb24gKHRhcmdldCwgcHJvcHMpIHtcclxuICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSBPYmplY3Qua2V5cyhwcm9wcyk7IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgdmFyIGtleSA9IF9hW19pXTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcclxuICAgICAgICAgICAgdmFsdWU6IHByb3BzW2tleV0sXHJcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRhcmdldDtcclxufSk7XG5cbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBnbG9iYWwgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBwcm92aWRlZCBlbGVtZW50LlxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gdGFyZ2V0XHJcbiAqIEByZXR1cm5zIHtPYmplY3R9XHJcbiAqL1xyXG52YXIgZ2V0V2luZG93T2YgPSAoZnVuY3Rpb24gKHRhcmdldCkge1xyXG4gICAgLy8gQXNzdW1lIHRoYXQgdGhlIGVsZW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgTm9kZSwgd2hpY2ggbWVhbnMgdGhhdCBpdFxyXG4gICAgLy8gaGFzIHRoZSBcIm93bmVyRG9jdW1lbnRcIiBwcm9wZXJ0eSBmcm9tIHdoaWNoIHdlIGNhbiByZXRyaWV2ZSBhXHJcbiAgICAvLyBjb3JyZXNwb25kaW5nIGdsb2JhbCBvYmplY3QuXHJcbiAgICB2YXIgb3duZXJHbG9iYWwgPSB0YXJnZXQgJiYgdGFyZ2V0Lm93bmVyRG9jdW1lbnQgJiYgdGFyZ2V0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XHJcbiAgICAvLyBSZXR1cm4gdGhlIGxvY2FsIGdsb2JhbCBvYmplY3QgaWYgaXQncyBub3QgcG9zc2libGUgZXh0cmFjdCBvbmUgZnJvbVxyXG4gICAgLy8gcHJvdmlkZWQgZWxlbWVudC5cclxuICAgIHJldHVybiBvd25lckdsb2JhbCB8fCBnbG9iYWwkMTtcclxufSk7XG5cbi8vIFBsYWNlaG9sZGVyIG9mIGFuIGVtcHR5IGNvbnRlbnQgcmVjdGFuZ2xlLlxyXG52YXIgZW1wdHlSZWN0ID0gY3JlYXRlUmVjdEluaXQoMCwgMCwgMCwgMCk7XHJcbi8qKlxyXG4gKiBDb252ZXJ0cyBwcm92aWRlZCBzdHJpbmcgdG8gYSBudW1iZXIuXHJcbiAqXHJcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gdmFsdWVcclxuICogQHJldHVybnMge251bWJlcn1cclxuICovXHJcbmZ1bmN0aW9uIHRvRmxvYXQodmFsdWUpIHtcclxuICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKSB8fCAwO1xyXG59XHJcbi8qKlxyXG4gKiBFeHRyYWN0cyBib3JkZXJzIHNpemUgZnJvbSBwcm92aWRlZCBzdHlsZXMuXHJcbiAqXHJcbiAqIEBwYXJhbSB7Q1NTU3R5bGVEZWNsYXJhdGlvbn0gc3R5bGVzXHJcbiAqIEBwYXJhbSB7Li4uc3RyaW5nfSBwb3NpdGlvbnMgLSBCb3JkZXJzIHBvc2l0aW9ucyAodG9wLCByaWdodCwgLi4uKVxyXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0Qm9yZGVyc1NpemUoc3R5bGVzKSB7XHJcbiAgICB2YXIgcG9zaXRpb25zID0gW107XHJcbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgIHBvc2l0aW9uc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcclxuICAgIH1cclxuICAgIHJldHVybiBwb3NpdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChzaXplLCBwb3NpdGlvbikge1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlc1snYm9yZGVyLScgKyBwb3NpdGlvbiArICctd2lkdGgnXTtcclxuICAgICAgICByZXR1cm4gc2l6ZSArIHRvRmxvYXQodmFsdWUpO1xyXG4gICAgfSwgMCk7XHJcbn1cclxuLyoqXHJcbiAqIEV4dHJhY3RzIHBhZGRpbmdzIHNpemVzIGZyb20gcHJvdmlkZWQgc3R5bGVzLlxyXG4gKlxyXG4gKiBAcGFyYW0ge0NTU1N0eWxlRGVjbGFyYXRpb259IHN0eWxlc1xyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBQYWRkaW5ncyBib3guXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRQYWRkaW5ncyhzdHlsZXMpIHtcclxuICAgIHZhciBwb3NpdGlvbnMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xyXG4gICAgdmFyIHBhZGRpbmdzID0ge307XHJcbiAgICBmb3IgKHZhciBfaSA9IDAsIHBvc2l0aW9uc18xID0gcG9zaXRpb25zOyBfaSA8IHBvc2l0aW9uc18xLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgIHZhciBwb3NpdGlvbiA9IHBvc2l0aW9uc18xW19pXTtcclxuICAgICAgICB2YXIgdmFsdWUgPSBzdHlsZXNbJ3BhZGRpbmctJyArIHBvc2l0aW9uXTtcclxuICAgICAgICBwYWRkaW5nc1twb3NpdGlvbl0gPSB0b0Zsb2F0KHZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYWRkaW5ncztcclxufVxyXG4vKipcclxuICogQ2FsY3VsYXRlcyBjb250ZW50IHJlY3RhbmdsZSBvZiBwcm92aWRlZCBTVkcgZWxlbWVudC5cclxuICpcclxuICogQHBhcmFtIHtTVkdHcmFwaGljc0VsZW1lbnR9IHRhcmdldCAtIEVsZW1lbnQgY29udGVudCByZWN0YW5nbGUgb2Ygd2hpY2ggbmVlZHNcclxuICogICAgICB0byBiZSBjYWxjdWxhdGVkLlxyXG4gKiBAcmV0dXJucyB7RE9NUmVjdEluaXR9XHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRTVkdDb250ZW50UmVjdCh0YXJnZXQpIHtcclxuICAgIHZhciBiYm94ID0gdGFyZ2V0LmdldEJCb3goKTtcclxuICAgIHJldHVybiBjcmVhdGVSZWN0SW5pdCgwLCAwLCBiYm94LndpZHRoLCBiYm94LmhlaWdodCk7XHJcbn1cclxuLyoqXHJcbiAqIENhbGN1bGF0ZXMgY29udGVudCByZWN0YW5nbGUgb2YgcHJvdmlkZWQgSFRNTEVsZW1lbnQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IHRhcmdldCAtIEVsZW1lbnQgZm9yIHdoaWNoIHRvIGNhbGN1bGF0ZSB0aGUgY29udGVudCByZWN0YW5nbGUuXHJcbiAqIEByZXR1cm5zIHtET01SZWN0SW5pdH1cclxuICovXHJcbmZ1bmN0aW9uIGdldEhUTUxFbGVtZW50Q29udGVudFJlY3QodGFyZ2V0KSB7XHJcbiAgICAvLyBDbGllbnQgd2lkdGggJiBoZWlnaHQgcHJvcGVydGllcyBjYW4ndCBiZVxyXG4gICAgLy8gdXNlZCBleGNsdXNpdmVseSBhcyB0aGV5IHByb3ZpZGUgcm91bmRlZCB2YWx1ZXMuXHJcbiAgICB2YXIgY2xpZW50V2lkdGggPSB0YXJnZXQuY2xpZW50V2lkdGgsIGNsaWVudEhlaWdodCA9IHRhcmdldC5jbGllbnRIZWlnaHQ7XHJcbiAgICAvLyBCeSB0aGlzIGNvbmRpdGlvbiB3ZSBjYW4gY2F0Y2ggYWxsIG5vbi1yZXBsYWNlZCBpbmxpbmUsIGhpZGRlbiBhbmRcclxuICAgIC8vIGRldGFjaGVkIGVsZW1lbnRzLiBUaG91Z2ggZWxlbWVudHMgd2l0aCB3aWR0aCAmIGhlaWdodCBwcm9wZXJ0aWVzIGxlc3NcclxuICAgIC8vIHRoYW4gMC41IHdpbGwgYmUgZGlzY2FyZGVkIGFzIHdlbGwuXHJcbiAgICAvL1xyXG4gICAgLy8gV2l0aG91dCBpdCB3ZSB3b3VsZCBuZWVkIHRvIGltcGxlbWVudCBzZXBhcmF0ZSBtZXRob2RzIGZvciBlYWNoIG9mXHJcbiAgICAvLyB0aG9zZSBjYXNlcyBhbmQgaXQncyBub3QgcG9zc2libGUgdG8gcGVyZm9ybSBhIHByZWNpc2UgYW5kIHBlcmZvcm1hbmNlXHJcbiAgICAvLyBlZmZlY3RpdmUgdGVzdCBmb3IgaGlkZGVuIGVsZW1lbnRzLiBFLmcuIGV2ZW4galF1ZXJ5J3MgJzp2aXNpYmxlJyBmaWx0ZXJcclxuICAgIC8vIGdpdmVzIHdyb25nIHJlc3VsdHMgZm9yIGVsZW1lbnRzIHdpdGggd2lkdGggJiBoZWlnaHQgbGVzcyB0aGFuIDAuNS5cclxuICAgIGlmICghY2xpZW50V2lkdGggJiYgIWNsaWVudEhlaWdodCkge1xyXG4gICAgICAgIHJldHVybiBlbXB0eVJlY3Q7XHJcbiAgICB9XHJcbiAgICB2YXIgc3R5bGVzID0gZ2V0V2luZG93T2YodGFyZ2V0KS5nZXRDb21wdXRlZFN0eWxlKHRhcmdldCk7XHJcbiAgICB2YXIgcGFkZGluZ3MgPSBnZXRQYWRkaW5ncyhzdHlsZXMpO1xyXG4gICAgdmFyIGhvcml6UGFkID0gcGFkZGluZ3MubGVmdCArIHBhZGRpbmdzLnJpZ2h0O1xyXG4gICAgdmFyIHZlcnRQYWQgPSBwYWRkaW5ncy50b3AgKyBwYWRkaW5ncy5ib3R0b207XHJcbiAgICAvLyBDb21wdXRlZCBzdHlsZXMgb2Ygd2lkdGggJiBoZWlnaHQgYXJlIGJlaW5nIHVzZWQgYmVjYXVzZSB0aGV5IGFyZSB0aGVcclxuICAgIC8vIG9ubHkgZGltZW5zaW9ucyBhdmFpbGFibGUgdG8gSlMgdGhhdCBjb250YWluIG5vbi1yb3VuZGVkIHZhbHVlcy4gSXQgY291bGRcclxuICAgIC8vIGJlIHBvc3NpYmxlIHRvIHV0aWxpemUgdGhlIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBpZiBvbmx5IGl0J3MgZGF0YSB3YXNuJ3RcclxuICAgIC8vIGFmZmVjdGVkIGJ5IENTUyB0cmFuc2Zvcm1hdGlvbnMgbGV0IGFsb25lIHBhZGRpbmdzLCBib3JkZXJzIGFuZCBzY3JvbGwgYmFycy5cclxuICAgIHZhciB3aWR0aCA9IHRvRmxvYXQoc3R5bGVzLndpZHRoKSwgaGVpZ2h0ID0gdG9GbG9hdChzdHlsZXMuaGVpZ2h0KTtcclxuICAgIC8vIFdpZHRoICYgaGVpZ2h0IGluY2x1ZGUgcGFkZGluZ3MgYW5kIGJvcmRlcnMgd2hlbiB0aGUgJ2JvcmRlci1ib3gnIGJveFxyXG4gICAgLy8gbW9kZWwgaXMgYXBwbGllZCAoZXhjZXB0IGZvciBJRSkuXHJcbiAgICBpZiAoc3R5bGVzLmJveFNpemluZyA9PT0gJ2JvcmRlci1ib3gnKSB7XHJcbiAgICAgICAgLy8gRm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGhhbmRsZSBJbnRlcm5ldCBFeHBsb3JlciB3aGljaFxyXG4gICAgICAgIC8vIGRvZXNuJ3QgaW5jbHVkZSBwYWRkaW5ncyBhbmQgYm9yZGVycyB0byBjb21wdXRlZCBDU1MgZGltZW5zaW9ucy5cclxuICAgICAgICAvL1xyXG4gICAgICAgIC8vIFdlIGNhbiBzYXkgdGhhdCBpZiBDU1MgZGltZW5zaW9ucyArIHBhZGRpbmdzIGFyZSBlcXVhbCB0byB0aGUgXCJjbGllbnRcIlxyXG4gICAgICAgIC8vIHByb3BlcnRpZXMgdGhlbiBpdCdzIGVpdGhlciBJRSwgYW5kIHRodXMgd2UgZG9uJ3QgbmVlZCB0byBzdWJ0cmFjdFxyXG4gICAgICAgIC8vIGFueXRoaW5nLCBvciBhbiBlbGVtZW50IG1lcmVseSBkb2Vzbid0IGhhdmUgcGFkZGluZ3MvYm9yZGVycyBzdHlsZXMuXHJcbiAgICAgICAgaWYgKE1hdGgucm91bmQod2lkdGggKyBob3JpelBhZCkgIT09IGNsaWVudFdpZHRoKSB7XHJcbiAgICAgICAgICAgIHdpZHRoIC09IGdldEJvcmRlcnNTaXplKHN0eWxlcywgJ2xlZnQnLCAncmlnaHQnKSArIGhvcml6UGFkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoTWF0aC5yb3VuZChoZWlnaHQgKyB2ZXJ0UGFkKSAhPT0gY2xpZW50SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIGhlaWdodCAtPSBnZXRCb3JkZXJzU2l6ZShzdHlsZXMsICd0b3AnLCAnYm90dG9tJykgKyB2ZXJ0UGFkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIEZvbGxvd2luZyBzdGVwcyBjYW4ndCBiZSBhcHBsaWVkIHRvIHRoZSBkb2N1bWVudCdzIHJvb3QgZWxlbWVudCBhcyBpdHNcclxuICAgIC8vIGNsaWVudFtXaWR0aC9IZWlnaHRdIHByb3BlcnRpZXMgcmVwcmVzZW50IHZpZXdwb3J0IGFyZWEgb2YgdGhlIHdpbmRvdy5cclxuICAgIC8vIEJlc2lkZXMsIGl0J3MgYXMgd2VsbCBub3QgbmVjZXNzYXJ5IGFzIHRoZSA8aHRtbD4gaXRzZWxmIG5laXRoZXIgaGFzXHJcbiAgICAvLyByZW5kZXJlZCBzY3JvbGwgYmFycyBub3IgaXQgY2FuIGJlIGNsaXBwZWQuXHJcbiAgICBpZiAoIWlzRG9jdW1lbnRFbGVtZW50KHRhcmdldCkpIHtcclxuICAgICAgICAvLyBJbiBzb21lIGJyb3dzZXJzIChvbmx5IGluIEZpcmVmb3gsIGFjdHVhbGx5KSBDU1Mgd2lkdGggJiBoZWlnaHRcclxuICAgICAgICAvLyBpbmNsdWRlIHNjcm9sbCBiYXJzIHNpemUgd2hpY2ggY2FuIGJlIHJlbW92ZWQgYXQgdGhpcyBzdGVwIGFzIHNjcm9sbFxyXG4gICAgICAgIC8vIGJhcnMgYXJlIHRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiByb3VuZGVkIGRpbWVuc2lvbnMgKyBwYWRkaW5nc1xyXG4gICAgICAgIC8vIGFuZCBcImNsaWVudFwiIHByb3BlcnRpZXMsIHRob3VnaCB0aGF0IGlzIG5vdCBhbHdheXMgdHJ1ZSBpbiBDaHJvbWUuXHJcbiAgICAgICAgdmFyIHZlcnRTY3JvbGxiYXIgPSBNYXRoLnJvdW5kKHdpZHRoICsgaG9yaXpQYWQpIC0gY2xpZW50V2lkdGg7XHJcbiAgICAgICAgdmFyIGhvcml6U2Nyb2xsYmFyID0gTWF0aC5yb3VuZChoZWlnaHQgKyB2ZXJ0UGFkKSAtIGNsaWVudEhlaWdodDtcclxuICAgICAgICAvLyBDaHJvbWUgaGFzIGEgcmF0aGVyIHdlaXJkIHJvdW5kaW5nIG9mIFwiY2xpZW50XCIgcHJvcGVydGllcy5cclxuICAgICAgICAvLyBFLmcuIGZvciBhbiBlbGVtZW50IHdpdGggY29udGVudCB3aWR0aCBvZiAzMTQuMnB4IGl0IHNvbWV0aW1lcyBnaXZlc1xyXG4gICAgICAgIC8vIHRoZSBjbGllbnQgd2lkdGggb2YgMzE1cHggYW5kIGZvciB0aGUgd2lkdGggb2YgMzE0LjdweCBpdCBtYXkgZ2l2ZVxyXG4gICAgICAgIC8vIDMxNHB4LiBBbmQgaXQgZG9lc24ndCBoYXBwZW4gYWxsIHRoZSB0aW1lLiBTbyBqdXN0IGlnbm9yZSB0aGlzIGRlbHRhXHJcbiAgICAgICAgLy8gYXMgYSBub24tcmVsZXZhbnQuXHJcbiAgICAgICAgaWYgKE1hdGguYWJzKHZlcnRTY3JvbGxiYXIpICE9PSAxKSB7XHJcbiAgICAgICAgICAgIHdpZHRoIC09IHZlcnRTY3JvbGxiYXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChNYXRoLmFicyhob3JpelNjcm9sbGJhcikgIT09IDEpIHtcclxuICAgICAgICAgICAgaGVpZ2h0IC09IGhvcml6U2Nyb2xsYmFyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjcmVhdGVSZWN0SW5pdChwYWRkaW5ncy5sZWZ0LCBwYWRkaW5ncy50b3AsIHdpZHRoLCBoZWlnaHQpO1xyXG59XHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBwcm92aWRlZCBlbGVtZW50IGlzIGFuIGluc3RhbmNlIG9mIHRoZSBTVkdHcmFwaGljc0VsZW1lbnQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7RWxlbWVudH0gdGFyZ2V0IC0gRWxlbWVudCB0byBiZSBjaGVja2VkLlxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICovXHJcbnZhciBpc1NWR0dyYXBoaWNzRWxlbWVudCA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICAvLyBTb21lIGJyb3dzZXJzLCBuYW1lbHkgSUUgYW5kIEVkZ2UsIGRvbid0IGhhdmUgdGhlIFNWR0dyYXBoaWNzRWxlbWVudFxyXG4gICAgLy8gaW50ZXJmYWNlLlxyXG4gICAgaWYgKHR5cGVvZiBTVkdHcmFwaGljc0VsZW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQpIHsgcmV0dXJuIHRhcmdldCBpbnN0YW5jZW9mIGdldFdpbmRvd09mKHRhcmdldCkuU1ZHR3JhcGhpY3NFbGVtZW50OyB9O1xyXG4gICAgfVxyXG4gICAgLy8gSWYgaXQncyBzbywgdGhlbiBjaGVjayB0aGF0IGVsZW1lbnQgaXMgYXQgbGVhc3QgYW4gaW5zdGFuY2Ugb2YgdGhlXHJcbiAgICAvLyBTVkdFbGVtZW50IGFuZCB0aGF0IGl0IGhhcyB0aGUgXCJnZXRCQm94XCIgbWV0aG9kLlxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWV4dHJhLXBhcmVuc1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQpIHsgcmV0dXJuICh0YXJnZXQgaW5zdGFuY2VvZiBnZXRXaW5kb3dPZih0YXJnZXQpLlNWR0VsZW1lbnQgJiZcclxuICAgICAgICB0eXBlb2YgdGFyZ2V0LmdldEJCb3ggPT09ICdmdW5jdGlvbicpOyB9O1xyXG59KSgpO1xyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgcHJvdmlkZWQgZWxlbWVudCBpcyBhIGRvY3VtZW50IGVsZW1lbnQgKDxodG1sPikuXHJcbiAqXHJcbiAqIEBwYXJhbSB7RWxlbWVudH0gdGFyZ2V0IC0gRWxlbWVudCB0byBiZSBjaGVja2VkLlxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICovXHJcbmZ1bmN0aW9uIGlzRG9jdW1lbnRFbGVtZW50KHRhcmdldCkge1xyXG4gICAgcmV0dXJuIHRhcmdldCA9PT0gZ2V0V2luZG93T2YodGFyZ2V0KS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XHJcbn1cclxuLyoqXHJcbiAqIENhbGN1bGF0ZXMgYW4gYXBwcm9wcmlhdGUgY29udGVudCByZWN0YW5nbGUgZm9yIHByb3ZpZGVkIGh0bWwgb3Igc3ZnIGVsZW1lbnQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7RWxlbWVudH0gdGFyZ2V0IC0gRWxlbWVudCBjb250ZW50IHJlY3RhbmdsZSBvZiB3aGljaCBuZWVkcyB0byBiZSBjYWxjdWxhdGVkLlxyXG4gKiBAcmV0dXJucyB7RE9NUmVjdEluaXR9XHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRDb250ZW50UmVjdCh0YXJnZXQpIHtcclxuICAgIGlmICghaXNCcm93c2VyKSB7XHJcbiAgICAgICAgcmV0dXJuIGVtcHR5UmVjdDtcclxuICAgIH1cclxuICAgIGlmIChpc1NWR0dyYXBoaWNzRWxlbWVudCh0YXJnZXQpKSB7XHJcbiAgICAgICAgcmV0dXJuIGdldFNWR0NvbnRlbnRSZWN0KHRhcmdldCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZ2V0SFRNTEVsZW1lbnRDb250ZW50UmVjdCh0YXJnZXQpO1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGVzIHJlY3RhbmdsZSB3aXRoIGFuIGludGVyZmFjZSBvZiB0aGUgRE9NUmVjdFJlYWRPbmx5LlxyXG4gKiBTcGVjOiBodHRwczovL2RyYWZ0cy5meHRmLm9yZy9nZW9tZXRyeS8jZG9tcmVjdHJlYWRvbmx5XHJcbiAqXHJcbiAqIEBwYXJhbSB7RE9NUmVjdEluaXR9IHJlY3RJbml0IC0gT2JqZWN0IHdpdGggcmVjdGFuZ2xlJ3MgeC95IGNvb3JkaW5hdGVzIGFuZCBkaW1lbnNpb25zLlxyXG4gKiBAcmV0dXJucyB7RE9NUmVjdFJlYWRPbmx5fVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlUmVhZE9ubHlSZWN0KF9hKSB7XHJcbiAgICB2YXIgeCA9IF9hLngsIHkgPSBfYS55LCB3aWR0aCA9IF9hLndpZHRoLCBoZWlnaHQgPSBfYS5oZWlnaHQ7XHJcbiAgICAvLyBJZiBET01SZWN0UmVhZE9ubHkgaXMgYXZhaWxhYmxlIHVzZSBpdCBhcyBhIHByb3RvdHlwZSBmb3IgdGhlIHJlY3RhbmdsZS5cclxuICAgIHZhciBDb25zdHIgPSB0eXBlb2YgRE9NUmVjdFJlYWRPbmx5ICE9PSAndW5kZWZpbmVkJyA/IERPTVJlY3RSZWFkT25seSA6IE9iamVjdDtcclxuICAgIHZhciByZWN0ID0gT2JqZWN0LmNyZWF0ZShDb25zdHIucHJvdG90eXBlKTtcclxuICAgIC8vIFJlY3RhbmdsZSdzIHByb3BlcnRpZXMgYXJlIG5vdCB3cml0YWJsZSBhbmQgbm9uLWVudW1lcmFibGUuXHJcbiAgICBkZWZpbmVDb25maWd1cmFibGUocmVjdCwge1xyXG4gICAgICAgIHg6IHgsIHk6IHksIHdpZHRoOiB3aWR0aCwgaGVpZ2h0OiBoZWlnaHQsXHJcbiAgICAgICAgdG9wOiB5LFxyXG4gICAgICAgIHJpZ2h0OiB4ICsgd2lkdGgsXHJcbiAgICAgICAgYm90dG9tOiBoZWlnaHQgKyB5LFxyXG4gICAgICAgIGxlZnQ6IHhcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlY3Q7XHJcbn1cclxuLyoqXHJcbiAqIENyZWF0ZXMgRE9NUmVjdEluaXQgb2JqZWN0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBkaW1lbnNpb25zIGFuZCB0aGUgeC95IGNvb3JkaW5hdGVzLlxyXG4gKiBTcGVjOiBodHRwczovL2RyYWZ0cy5meHRmLm9yZy9nZW9tZXRyeS8jZGljdGRlZi1kb21yZWN0aW5pdFxyXG4gKlxyXG4gKiBAcGFyYW0ge251bWJlcn0geCAtIFggY29vcmRpbmF0ZS5cclxuICogQHBhcmFtIHtudW1iZXJ9IHkgLSBZIGNvb3JkaW5hdGUuXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCAtIFJlY3RhbmdsZSdzIHdpZHRoLlxyXG4gKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0IC0gUmVjdGFuZ2xlJ3MgaGVpZ2h0LlxyXG4gKiBAcmV0dXJucyB7RE9NUmVjdEluaXR9XHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVSZWN0SW5pdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7XHJcbiAgICByZXR1cm4geyB4OiB4LCB5OiB5LCB3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0IH07XHJcbn1cblxuLyoqXHJcbiAqIENsYXNzIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIGNvbXB1dGF0aW9ucyBvZiB0aGUgY29udGVudCByZWN0YW5nbGUgb2ZcclxuICogcHJvdmlkZWQgRE9NIGVsZW1lbnQgYW5kIGZvciBrZWVwaW5nIHRyYWNrIG9mIGl0J3MgY2hhbmdlcy5cclxuICovXHJcbnZhciBSZXNpemVPYnNlcnZhdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBSZXNpemVPYnNlcnZhdGlvbi5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IHRhcmdldCAtIEVsZW1lbnQgdG8gYmUgb2JzZXJ2ZWQuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIFJlc2l6ZU9ic2VydmF0aW9uKHRhcmdldCkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEJyb2FkY2FzdGVkIHdpZHRoIG9mIGNvbnRlbnQgcmVjdGFuZ2xlLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHR5cGUge251bWJlcn1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmJyb2FkY2FzdFdpZHRoID0gMDtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBCcm9hZGNhc3RlZCBoZWlnaHQgb2YgY29udGVudCByZWN0YW5nbGUuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0SGVpZ2h0ID0gMDtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIGxhc3Qgb2JzZXJ2ZWQgY29udGVudCByZWN0YW5nbGUuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcHJpdmF0ZSB7RE9NUmVjdEluaXR9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5jb250ZW50UmVjdF8gPSBjcmVhdGVSZWN0SW5pdCgwLCAwLCAwLCAwKTtcclxuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyBjb250ZW50IHJlY3RhbmdsZSBhbmQgdGVsbHMgd2hldGhlciBpdCdzIHdpZHRoIG9yIGhlaWdodCBwcm9wZXJ0aWVzXHJcbiAgICAgKiBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgYnJvYWRjYXN0LlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZhdGlvbi5wcm90b3R5cGUuaXNBY3RpdmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHJlY3QgPSBnZXRDb250ZW50UmVjdCh0aGlzLnRhcmdldCk7XHJcbiAgICAgICAgdGhpcy5jb250ZW50UmVjdF8gPSByZWN0O1xyXG4gICAgICAgIHJldHVybiAocmVjdC53aWR0aCAhPT0gdGhpcy5icm9hZGNhc3RXaWR0aCB8fFxyXG4gICAgICAgICAgICByZWN0LmhlaWdodCAhPT0gdGhpcy5icm9hZGNhc3RIZWlnaHQpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyAnYnJvYWRjYXN0V2lkdGgnIGFuZCAnYnJvYWRjYXN0SGVpZ2h0JyBwcm9wZXJ0aWVzIHdpdGggYSBkYXRhXHJcbiAgICAgKiBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnRpZXMgb2YgdGhlIGxhc3Qgb2JzZXJ2ZWQgY29udGVudCByZWN0YW5nbGUuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge0RPTVJlY3RJbml0fSBMYXN0IG9ic2VydmVkIGNvbnRlbnQgcmVjdGFuZ2xlLlxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZhdGlvbi5wcm90b3R5cGUuYnJvYWRjYXN0UmVjdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgcmVjdCA9IHRoaXMuY29udGVudFJlY3RfO1xyXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0V2lkdGggPSByZWN0LndpZHRoO1xyXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0SGVpZ2h0ID0gcmVjdC5oZWlnaHQ7XHJcbiAgICAgICAgcmV0dXJuIHJlY3Q7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFJlc2l6ZU9ic2VydmF0aW9uO1xyXG59KCkpO1xuXG52YXIgUmVzaXplT2JzZXJ2ZXJFbnRyeSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBSZXNpemVPYnNlcnZlckVudHJ5LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gdGFyZ2V0IC0gRWxlbWVudCB0aGF0IGlzIGJlaW5nIG9ic2VydmVkLlxyXG4gICAgICogQHBhcmFtIHtET01SZWN0SW5pdH0gcmVjdEluaXQgLSBEYXRhIG9mIHRoZSBlbGVtZW50J3MgY29udGVudCByZWN0YW5nbGUuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIFJlc2l6ZU9ic2VydmVyRW50cnkodGFyZ2V0LCByZWN0SW5pdCkge1xyXG4gICAgICAgIHZhciBjb250ZW50UmVjdCA9IGNyZWF0ZVJlYWRPbmx5UmVjdChyZWN0SW5pdCk7XHJcbiAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGFyZSBub3Qgd3JpdGFibGVcclxuICAgICAgICAvLyBhbmQgYXJlIGFsc28gbm90IGVudW1lcmFibGUgaW4gdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbi5cclxuICAgICAgICAvL1xyXG4gICAgICAgIC8vIFByb3BlcnR5IGFjY2Vzc29ycyBhcmUgbm90IGJlaW5nIHVzZWQgYXMgdGhleSdkIHJlcXVpcmUgdG8gZGVmaW5lIGFcclxuICAgICAgICAvLyBwcml2YXRlIFdlYWtNYXAgc3RvcmFnZSB3aGljaCBtYXkgY2F1c2UgbWVtb3J5IGxlYWtzIGluIGJyb3dzZXJzIHRoYXRcclxuICAgICAgICAvLyBkb24ndCBzdXBwb3J0IHRoaXMgdHlwZSBvZiBjb2xsZWN0aW9ucy5cclxuICAgICAgICBkZWZpbmVDb25maWd1cmFibGUodGhpcywgeyB0YXJnZXQ6IHRhcmdldCwgY29udGVudFJlY3Q6IGNvbnRlbnRSZWN0IH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFJlc2l6ZU9ic2VydmVyRW50cnk7XHJcbn0oKSk7XG5cbnZhciBSZXNpemVPYnNlcnZlclNQSSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBSZXNpemVPYnNlcnZlci5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge1Jlc2l6ZU9ic2VydmVyQ2FsbGJhY2t9IGNhbGxiYWNrIC0gQ2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBpbnZva2VkXHJcbiAgICAgKiAgICAgIHdoZW4gb25lIG9mIHRoZSBvYnNlcnZlZCBlbGVtZW50cyBjaGFuZ2VzIGl0J3MgY29udGVudCBkaW1lbnNpb25zLlxyXG4gICAgICogQHBhcmFtIHtSZXNpemVPYnNlcnZlckNvbnRyb2xsZXJ9IGNvbnRyb2xsZXIgLSBDb250cm9sbGVyIGluc3RhbmNlIHdoaWNoXHJcbiAgICAgKiAgICAgIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgdXBkYXRlcyBvZiBvYnNlcnZlci5cclxuICAgICAqIEBwYXJhbSB7UmVzaXplT2JzZXJ2ZXJ9IGNhbGxiYWNrQ3R4IC0gUmVmZXJlbmNlIHRvIHRoZSBwdWJsaWNcclxuICAgICAqICAgICAgUmVzaXplT2JzZXJ2ZXIgaW5zdGFuY2Ugd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gY2FsbGJhY2sgZnVuY3Rpb24uXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIFJlc2l6ZU9ic2VydmVyU1BJKGNhbGxiYWNrLCBjb250cm9sbGVyLCBjYWxsYmFja0N0eCkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIENvbGxlY3Rpb24gb2YgcmVzaXplIG9ic2VydmF0aW9ucyB0aGF0IGhhdmUgZGV0ZWN0ZWQgY2hhbmdlcyBpbiBkaW1lbnNpb25zXHJcbiAgICAgICAgICogb2YgZWxlbWVudHMuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcHJpdmF0ZSB7QXJyYXk8UmVzaXplT2JzZXJ2YXRpb24+fVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuYWN0aXZlT2JzZXJ2YXRpb25zXyA9IFtdO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFJlZ2lzdHJ5IG9mIHRoZSBSZXNpemVPYnNlcnZhdGlvbiBpbnN0YW5jZXMuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcHJpdmF0ZSB7TWFwPEVsZW1lbnQsIFJlc2l6ZU9ic2VydmF0aW9uPn1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLm9ic2VydmF0aW9uc18gPSBuZXcgTWFwU2hpbSgpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGNhbGxiYWNrIHByb3ZpZGVkIGFzIHBhcmFtZXRlciAxIGlzIG5vdCBhIGZ1bmN0aW9uLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNhbGxiYWNrXyA9IGNhbGxiYWNrO1xyXG4gICAgICAgIHRoaXMuY29udHJvbGxlcl8gPSBjb250cm9sbGVyO1xyXG4gICAgICAgIHRoaXMuY2FsbGJhY2tDdHhfID0gY2FsbGJhY2tDdHg7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFN0YXJ0cyBvYnNlcnZpbmcgcHJvdmlkZWQgZWxlbWVudC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IHRhcmdldCAtIEVsZW1lbnQgdG8gYmUgb2JzZXJ2ZWQuXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJTUEkucHJvdG90eXBlLm9ic2VydmUgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XHJcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5IDAgcHJlc2VudC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBjdXJyZW50IGVudmlyb25tZW50IGRvZXNuJ3QgaGF2ZSB0aGUgRWxlbWVudCBpbnRlcmZhY2UuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBFbGVtZW50ID09PSAndW5kZWZpbmVkJyB8fCAhKEVsZW1lbnQgaW5zdGFuY2VvZiBPYmplY3QpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2YgZ2V0V2luZG93T2YodGFyZ2V0KS5FbGVtZW50KSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwYXJhbWV0ZXIgMSBpcyBub3Qgb2YgdHlwZSBcIkVsZW1lbnRcIi4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG9ic2VydmF0aW9ucyA9IHRoaXMub2JzZXJ2YXRpb25zXztcclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGVsZW1lbnQgaXMgYWxyZWFkeSBiZWluZyBvYnNlcnZlZC5cclxuICAgICAgICBpZiAob2JzZXJ2YXRpb25zLmhhcyh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgb2JzZXJ2YXRpb25zLnNldCh0YXJnZXQsIG5ldyBSZXNpemVPYnNlcnZhdGlvbih0YXJnZXQpKTtcclxuICAgICAgICB0aGlzLmNvbnRyb2xsZXJfLmFkZE9ic2VydmVyKHRoaXMpO1xyXG4gICAgICAgIC8vIEZvcmNlIHRoZSB1cGRhdGUgb2Ygb2JzZXJ2YXRpb25zLlxyXG4gICAgICAgIHRoaXMuY29udHJvbGxlcl8ucmVmcmVzaCgpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogU3RvcHMgb2JzZXJ2aW5nIHByb3ZpZGVkIGVsZW1lbnQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSB0YXJnZXQgLSBFbGVtZW50IHRvIHN0b3Agb2JzZXJ2aW5nLlxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyU1BJLnByb3RvdHlwZS51bm9ic2VydmUgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XHJcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5IDAgcHJlc2VudC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBjdXJyZW50IGVudmlyb25tZW50IGRvZXNuJ3QgaGF2ZSB0aGUgRWxlbWVudCBpbnRlcmZhY2UuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBFbGVtZW50ID09PSAndW5kZWZpbmVkJyB8fCAhKEVsZW1lbnQgaW5zdGFuY2VvZiBPYmplY3QpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2YgZ2V0V2luZG93T2YodGFyZ2V0KS5FbGVtZW50KSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwYXJhbWV0ZXIgMSBpcyBub3Qgb2YgdHlwZSBcIkVsZW1lbnRcIi4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG9ic2VydmF0aW9ucyA9IHRoaXMub2JzZXJ2YXRpb25zXztcclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGVsZW1lbnQgaXMgbm90IGJlaW5nIG9ic2VydmVkLlxyXG4gICAgICAgIGlmICghb2JzZXJ2YXRpb25zLmhhcyh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgb2JzZXJ2YXRpb25zLmRlbGV0ZSh0YXJnZXQpO1xyXG4gICAgICAgIGlmICghb2JzZXJ2YXRpb25zLnNpemUpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sbGVyXy5yZW1vdmVPYnNlcnZlcih0aGlzKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBTdG9wcyBvYnNlcnZpbmcgYWxsIGVsZW1lbnRzLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlclNQSS5wcm90b3R5cGUuZGlzY29ubmVjdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLmNsZWFyQWN0aXZlKCk7XHJcbiAgICAgICAgdGhpcy5vYnNlcnZhdGlvbnNfLmNsZWFyKCk7XHJcbiAgICAgICAgdGhpcy5jb250cm9sbGVyXy5yZW1vdmVPYnNlcnZlcih0aGlzKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIENvbGxlY3RzIG9ic2VydmF0aW9uIGluc3RhbmNlcyB0aGUgYXNzb2NpYXRlZCBlbGVtZW50IG9mIHdoaWNoIGhhcyBjaGFuZ2VkXHJcbiAgICAgKiBpdCdzIGNvbnRlbnQgcmVjdGFuZ2xlLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlclNQSS5wcm90b3R5cGUuZ2F0aGVyQWN0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5jbGVhckFjdGl2ZSgpO1xyXG4gICAgICAgIHRoaXMub2JzZXJ2YXRpb25zXy5mb3JFYWNoKGZ1bmN0aW9uIChvYnNlcnZhdGlvbikge1xyXG4gICAgICAgICAgICBpZiAob2JzZXJ2YXRpb24uaXNBY3RpdmUoKSkge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuYWN0aXZlT2JzZXJ2YXRpb25zXy5wdXNoKG9ic2VydmF0aW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogSW52b2tlcyBpbml0aWFsIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGggYSBsaXN0IG9mIFJlc2l6ZU9ic2VydmVyRW50cnlcclxuICAgICAqIGluc3RhbmNlcyBjb2xsZWN0ZWQgZnJvbSBhY3RpdmUgcmVzaXplIG9ic2VydmF0aW9ucy5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJTUEkucHJvdG90eXBlLmJyb2FkY2FzdEFjdGl2ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIG9ic2VydmVyIGRvZXNuJ3QgaGF2ZSBhY3RpdmUgb2JzZXJ2YXRpb25zLlxyXG4gICAgICAgIGlmICghdGhpcy5oYXNBY3RpdmUoKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBjdHggPSB0aGlzLmNhbGxiYWNrQ3R4XztcclxuICAgICAgICAvLyBDcmVhdGUgUmVzaXplT2JzZXJ2ZXJFbnRyeSBpbnN0YW5jZSBmb3IgZXZlcnkgYWN0aXZlIG9ic2VydmF0aW9uLlxyXG4gICAgICAgIHZhciBlbnRyaWVzID0gdGhpcy5hY3RpdmVPYnNlcnZhdGlvbnNfLm1hcChmdW5jdGlvbiAob2JzZXJ2YXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZXNpemVPYnNlcnZlckVudHJ5KG9ic2VydmF0aW9uLnRhcmdldCwgb2JzZXJ2YXRpb24uYnJvYWRjYXN0UmVjdCgpKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmNhbGxiYWNrXy5jYWxsKGN0eCwgZW50cmllcywgY3R4KTtcclxuICAgICAgICB0aGlzLmNsZWFyQWN0aXZlKCk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDbGVhcnMgdGhlIGNvbGxlY3Rpb24gb2YgYWN0aXZlIG9ic2VydmF0aW9ucy5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJTUEkucHJvdG90eXBlLmNsZWFyQWN0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlT2JzZXJ2YXRpb25zXy5zcGxpY2UoMCk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyB3aGV0aGVyIG9ic2VydmVyIGhhcyBhY3RpdmUgb2JzZXJ2YXRpb25zLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlclNQSS5wcm90b3R5cGUuaGFzQWN0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZU9ic2VydmF0aW9uc18ubGVuZ3RoID4gMDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gUmVzaXplT2JzZXJ2ZXJTUEk7XHJcbn0oKSk7XG5cbi8vIFJlZ2lzdHJ5IG9mIGludGVybmFsIG9ic2VydmVycy4gSWYgV2Vha01hcCBpcyBub3QgYXZhaWxhYmxlIHVzZSBjdXJyZW50IHNoaW1cclxuLy8gZm9yIHRoZSBNYXAgY29sbGVjdGlvbiBhcyBpdCBoYXMgYWxsIHJlcXVpcmVkIG1ldGhvZHMgYW5kIGJlY2F1c2UgV2Vha01hcFxyXG4vLyBjYW4ndCBiZSBmdWxseSBwb2x5ZmlsbGVkIGFueXdheS5cclxudmFyIG9ic2VydmVycyA9IHR5cGVvZiBXZWFrTWFwICE9PSAndW5kZWZpbmVkJyA/IG5ldyBXZWFrTWFwKCkgOiBuZXcgTWFwU2hpbSgpO1xyXG4vKipcclxuICogUmVzaXplT2JzZXJ2ZXIgQVBJLiBFbmNhcHN1bGF0ZXMgdGhlIFJlc2l6ZU9ic2VydmVyIFNQSSBpbXBsZW1lbnRhdGlvblxyXG4gKiBleHBvc2luZyBvbmx5IHRob3NlIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgdGhhdCBhcmUgZGVmaW5lZCBpbiB0aGUgc3BlYy5cclxuICovXHJcbnZhciBSZXNpemVPYnNlcnZlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBSZXNpemVPYnNlcnZlci5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge1Jlc2l6ZU9ic2VydmVyQ2FsbGJhY2t9IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdGhhdCBpcyBpbnZva2VkIHdoZW5cclxuICAgICAqICAgICAgZGltZW5zaW9ucyBvZiB0aGUgb2JzZXJ2ZWQgZWxlbWVudHMgY2hhbmdlLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBSZXNpemVPYnNlcnZlcihjYWxsYmFjaykge1xyXG4gICAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXNpemVPYnNlcnZlcikpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgMCBwcmVzZW50LicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgY29udHJvbGxlciA9IFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpO1xyXG4gICAgICAgIHZhciBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlclNQSShjYWxsYmFjaywgY29udHJvbGxlciwgdGhpcyk7XHJcbiAgICAgICAgb2JzZXJ2ZXJzLnNldCh0aGlzLCBvYnNlcnZlcik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gUmVzaXplT2JzZXJ2ZXI7XHJcbn0oKSk7XHJcbi8vIEV4cG9zZSBwdWJsaWMgbWV0aG9kcyBvZiBSZXNpemVPYnNlcnZlci5cclxuW1xyXG4gICAgJ29ic2VydmUnLFxyXG4gICAgJ3Vub2JzZXJ2ZScsXHJcbiAgICAnZGlzY29ubmVjdCdcclxuXS5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcclxuICAgIFJlc2l6ZU9ic2VydmVyLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBfYTtcclxuICAgICAgICByZXR1cm4gKF9hID0gb2JzZXJ2ZXJzLmdldCh0aGlzKSlbbWV0aG9kXS5hcHBseShfYSwgYXJndW1lbnRzKTtcclxuICAgIH07XHJcbn0pO1xuXG52YXIgaW5kZXggPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgLy8gRXhwb3J0IGV4aXN0aW5nIGltcGxlbWVudGF0aW9uIGlmIGF2YWlsYWJsZS5cclxuICAgIGlmICh0eXBlb2YgZ2xvYmFsJDEuUmVzaXplT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgcmV0dXJuIGdsb2JhbCQxLlJlc2l6ZU9ic2VydmVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFJlc2l6ZU9ic2VydmVyO1xyXG59KSgpO1xuXG5leHBvcnQgZGVmYXVsdCBpbmRleDtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZ2VuZXJhdG9yLXJ1bnRpbWVcIik7XG4iLCJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xufTtcbiIsIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iLCJ2YXIgYmFzZUlzTmF0aXZlID0gcmVxdWlyZSgnLi9fYmFzZUlzTmF0aXZlJyksXG4gICAgZ2V0VmFsdWUgPSByZXF1aXJlKCcuL19nZXRWYWx1ZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE5hdGl2ZTtcbiIsImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHtcbiAgaWYgKCFvKSByZXR1cm47XG4gIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbiAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpO1xuICBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lO1xuICBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTtcbiAgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG59IiwiLypcbm9iamVjdC1hc3NpZ25cbihjKSBTaW5kcmUgU29yaHVzXG5AbGljZW5zZSBNSVRcbiovXG5cbid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbmZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xuXHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTtcblx0fVxuXG5cdHJldHVybiBPYmplY3QodmFsKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkge1xuXHR0cnkge1xuXHRcdGlmICghT2JqZWN0LmFzc2lnbikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9ucy5cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMThcblx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3LXdyYXBwZXJzXG5cdFx0dGVzdDFbNV0gPSAnZGUnO1xuXHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDIgPSB7fTtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdHRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHR9XG5cdFx0dmFyIG9yZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtcblx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHR9KTtcblx0XHRpZiAob3JkZXIyLmpvaW4oJycpICE9PSAnMDEyMzQ1Njc4OScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QzID0ge307XG5cdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG5cdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdH0pO1xuXHRcdGlmIChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpvaW4oJycpICE9PVxuXHRcdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdC8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0dGVyIHRvIGJlIHNhZmUuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7XG5cdHZhciBmcm9tO1xuXHR2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQpO1xuXHR2YXIgc3ltYm9scztcblxuXHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykge1xuXHRcdGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTtcblxuXHRcdGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG5cdFx0XHRpZiAoaGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkpKSB7XG5cdFx0XHRcdHRvW2tleV0gPSBmcm9tW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0c3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9scyhmcm9tKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7XG5cdFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRvO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5nZXRQYXRoVmFsdWUgPSBnZXRQYXRoVmFsdWU7XG5leHBvcnRzLmdldENvbHVtbnNLZXkgPSBnZXRDb2x1bW5zS2V5O1xuZXhwb3J0cy5tZXJnZU9iamVjdCA9IG1lcmdlT2JqZWN0O1xuZXhwb3J0cy52YWxpZGF0ZVZhbHVlID0gdmFsaWRhdGVWYWx1ZTtcblxudmFyIF90eXBlb2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIikpO1xuXG52YXIgSU5URVJOQUxfS0VZX1BSRUZJWCA9ICdSQ19UQUJMRV9LRVknO1xuXG5mdW5jdGlvbiB0b0FycmF5KGFycikge1xuICBpZiAoYXJyID09PSB1bmRlZmluZWQgfHwgYXJyID09PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXJyKSA/IGFyciA6IFthcnJdO1xufVxuXG5mdW5jdGlvbiBnZXRQYXRoVmFsdWUocmVjb3JkLCBwYXRoKSB7XG4gIC8vIFNraXAgaWYgcGF0aCBpcyBlbXB0eVxuICBpZiAoIXBhdGggJiYgdHlwZW9mIHBhdGggIT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfVxuXG4gIHZhciBwYXRoTGlzdCA9IHRvQXJyYXkocGF0aCk7XG4gIHZhciBjdXJyZW50ID0gcmVjb3JkO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aExpc3QubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBwcm9wID0gcGF0aExpc3RbaV07XG4gICAgY3VycmVudCA9IGN1cnJlbnRbcHJvcF07XG4gIH1cblxuICByZXR1cm4gY3VycmVudDtcbn1cblxuZnVuY3Rpb24gZ2V0Q29sdW1uc0tleShjb2x1bW5zKSB7XG4gIHZhciBjb2x1bW5LZXlzID0gW107XG4gIHZhciBrZXlzID0ge307XG4gIGNvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sdW1uKSB7XG4gICAgdmFyIF9yZWYgPSBjb2x1bW4gfHwge30sXG4gICAgICAgIGtleSA9IF9yZWYua2V5LFxuICAgICAgICBkYXRhSW5kZXggPSBfcmVmLmRhdGFJbmRleDtcblxuICAgIHZhciBtZXJnZWRLZXkgPSBrZXkgfHwgdG9BcnJheShkYXRhSW5kZXgpLmpvaW4oJy0nKSB8fCBJTlRFUk5BTF9LRVlfUFJFRklYO1xuXG4gICAgd2hpbGUgKGtleXNbbWVyZ2VkS2V5XSkge1xuICAgICAgbWVyZ2VkS2V5ID0gXCJcIi5jb25jYXQobWVyZ2VkS2V5LCBcIl9uZXh0XCIpO1xuICAgIH1cblxuICAgIGtleXNbbWVyZ2VkS2V5XSA9IHRydWU7XG4gICAgY29sdW1uS2V5cy5wdXNoKG1lcmdlZEtleSk7XG4gIH0pO1xuICByZXR1cm4gY29sdW1uS2V5cztcbn1cblxuZnVuY3Rpb24gbWVyZ2VPYmplY3QoKSB7XG4gIHZhciBtZXJnZWQgPSB7fTtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cblxuICBmdW5jdGlvbiBmaWxsUHJvcHMob2JqLCBjbG9uZSkge1xuICAgIGlmIChjbG9uZSkge1xuICAgICAgT2JqZWN0LmtleXMoY2xvbmUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBjbG9uZVtrZXldO1xuXG4gICAgICAgIGlmICh2YWx1ZSAmJiAoMCwgX3R5cGVvZjIuZGVmYXVsdCkodmFsdWUpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIG9ialtrZXldID0gb2JqW2tleV0gfHwge307XG4gICAgICAgICAgZmlsbFByb3BzKG9ialtrZXldLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8qIGVzbGludC1lbmFibGUgKi9cblxuXG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBvYmplY3RzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIG9iamVjdHNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBvYmplY3RzLmZvckVhY2goZnVuY3Rpb24gKGNsb25lKSB7XG4gICAgZmlsbFByb3BzKG1lcmdlZCwgY2xvbmUpO1xuICB9KTtcbiAgcmV0dXJuIG1lcmdlZDtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVWYWx1ZSh2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHVuZGVmaW5lZDtcbn0iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgZ2V0UmF3VGFnID0gcmVxdWlyZSgnLi9fZ2V0UmF3VGFnJyksXG4gICAgb2JqZWN0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19vYmplY3RUb1N0cmluZycpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0VGFnO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3RMaWtlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBleHBvcnRzLlNpemVDb250ZXh0UHJvdmlkZXIgPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxudmFyIFNpemVDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQodW5kZWZpbmVkKTtcblxudmFyIFNpemVDb250ZXh0UHJvdmlkZXIgPSBmdW5jdGlvbiBTaXplQ29udGV4dFByb3ZpZGVyKF9yZWYpIHtcbiAgdmFyIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICAgIHNpemUgPSBfcmVmLnNpemU7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTaXplQ29udGV4dC5Db25zdW1lciwgbnVsbCwgZnVuY3Rpb24gKG9yaWdpblNpemUpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2l6ZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgIHZhbHVlOiBzaXplIHx8IG9yaWdpblNpemVcbiAgICB9LCBjaGlsZHJlbik7XG4gIH0pO1xufTtcblxuZXhwb3J0cy5TaXplQ29udGV4dFByb3ZpZGVyID0gU2l6ZUNvbnRleHRQcm92aWRlcjtcbnZhciBfZGVmYXVsdCA9IFNpemVDb250ZXh0O1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZml4Q29udHJvbGxlZFZhbHVlID0gZml4Q29udHJvbGxlZFZhbHVlO1xuZXhwb3J0cy5yZXNvbHZlT25DaGFuZ2UgPSByZXNvbHZlT25DaGFuZ2U7XG5leHBvcnRzLmdldElucHV0Q2xhc3NOYW1lID0gZ2V0SW5wdXRDbGFzc05hbWU7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IGV4cG9ydHMuSW5wdXRTaXplcyA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIFByb3BUeXBlcyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpKTtcblxudmFyIF9yZWFjdExpZmVjeWNsZXNDb21wYXQgPSByZXF1aXJlKFwicmVhY3QtbGlmZWN5Y2xlcy1jb21wYXRcIik7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG52YXIgX29taXQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJvbWl0LmpzXCIpKTtcblxudmFyIF90eXBlID0gcmVxdWlyZShcIi4uL191dGlsL3R5cGVcIik7XG5cbnZhciBfQ2xlYXJhYmxlTGFiZWxlZElucHV0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4vQ2xlYXJhYmxlTGFiZWxlZElucHV0XCIpKTtcblxudmFyIF9jb25maWdQcm92aWRlciA9IHJlcXVpcmUoXCIuLi9jb25maWctcHJvdmlkZXJcIik7XG5cbnZhciBfd2FybmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL191dGlsL3dhcm5pbmdcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG52YXIgSW5wdXRTaXplcyA9ICgwLCBfdHlwZS50dXBsZSkoJ3NtYWxsJywgJ2RlZmF1bHQnLCAnbGFyZ2UnKTtcbmV4cG9ydHMuSW5wdXRTaXplcyA9IElucHV0U2l6ZXM7XG5cbmZ1bmN0aW9uIGZpeENvbnRyb2xsZWRWYWx1ZSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZU9uQ2hhbmdlKHRhcmdldCwgZSwgb25DaGFuZ2UpIHtcbiAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgdmFyIGV2ZW50ID0gZTtcblxuICAgIGlmIChlLnR5cGUgPT09ICdjbGljaycpIHtcbiAgICAgIC8vIGNsaWNrIGNsZWFyIGljb25cbiAgICAgIGV2ZW50ID0gT2JqZWN0LmNyZWF0ZShlKTtcbiAgICAgIGV2ZW50LnRhcmdldCA9IHRhcmdldDtcbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSB0YXJnZXQ7XG4gICAgICB2YXIgb3JpZ2luYWxJbnB1dFZhbHVlID0gdGFyZ2V0LnZhbHVlOyAvLyBjaGFuZ2UgdGFyZ2V0IHJlZiB2YWx1ZSBjYXVzZSBlLnRhcmdldC52YWx1ZSBzaG91bGQgYmUgJycgd2hlbiBjbGVhciBpbnB1dFxuXG4gICAgICB0YXJnZXQudmFsdWUgPSAnJztcbiAgICAgIG9uQ2hhbmdlKGV2ZW50KTsgLy8gcmVzZXQgdGFyZ2V0IHJlZiB2YWx1ZVxuXG4gICAgICB0YXJnZXQudmFsdWUgPSBvcmlnaW5hbElucHV0VmFsdWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgb25DaGFuZ2UoZXZlbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldElucHV0Q2xhc3NOYW1lKHByZWZpeENscywgc2l6ZSwgZGlzYWJsZWQpIHtcbiAgdmFyIF9jbGFzc05hbWVzO1xuXG4gIHJldHVybiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShwcmVmaXhDbHMsIChfY2xhc3NOYW1lcyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc21cIiksIHNpemUgPT09ICdzbWFsbCcpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbGdcIiksIHNpemUgPT09ICdsYXJnZScpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZGlzYWJsZWRcIiksIGRpc2FibGVkKSwgX2NsYXNzTmFtZXMpKTtcbn1cblxudmFyIElucHV0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhJbnB1dCwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihJbnB1dCk7XG5cbiAgZnVuY3Rpb24gSW5wdXQocHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSW5wdXQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwcm9wcyk7XG5cbiAgICBfdGhpcy5zYXZlQ2xlYXJhYmxlSW5wdXQgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgIF90aGlzLmNsZWFyYWJsZUlucHV0ID0gaW5wdXQ7XG4gICAgfTtcblxuICAgIF90aGlzLnNhdmVJbnB1dCA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgX3RoaXMuaW5wdXQgPSBpbnB1dDtcbiAgICB9O1xuXG4gICAgX3RoaXMuaGFuZGxlUmVzZXQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgX3RoaXMuc2V0VmFsdWUoJycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMuZm9jdXMoKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXNvbHZlT25DaGFuZ2UoX3RoaXMuaW5wdXQsIGUsIF90aGlzLnByb3BzLm9uQ2hhbmdlKTtcbiAgICB9O1xuXG4gICAgX3RoaXMucmVuZGVySW5wdXQgPSBmdW5jdGlvbiAocHJlZml4Q2xzKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgYWRkb25CZWZvcmUgPSBfdGhpcyRwcm9wcy5hZGRvbkJlZm9yZSxcbiAgICAgICAgICBhZGRvbkFmdGVyID0gX3RoaXMkcHJvcHMuYWRkb25BZnRlcixcbiAgICAgICAgICBzaXplID0gX3RoaXMkcHJvcHMuc2l6ZSxcbiAgICAgICAgICBkaXNhYmxlZCA9IF90aGlzJHByb3BzLmRpc2FibGVkOyAvLyBGaXggaHR0cHM6Ly9mYi5tZS9yZWFjdC11bmtub3duLXByb3BcblxuICAgICAgdmFyIG90aGVyUHJvcHMgPSAoMCwgX29taXRbXCJkZWZhdWx0XCJdKShfdGhpcy5wcm9wcywgWydwcmVmaXhDbHMnLCAnb25QcmVzc0VudGVyJywgJ2FkZG9uQmVmb3JlJywgJ2FkZG9uQWZ0ZXInLCAncHJlZml4JywgJ3N1ZmZpeCcsICdhbGxvd0NsZWFyJywgLy8gSW5wdXQgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQsXG4gICAgICAvLyBzcGVjaWZ5IGVpdGhlciB0aGUgdmFsdWUgcHJvcCwgb3IgdGhlIGRlZmF1bHRWYWx1ZSBwcm9wLCBidXQgbm90IGJvdGguXG4gICAgICAnZGVmYXVsdFZhbHVlJywgJ3NpemUnLCAnaW5wdXRUeXBlJ10pO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwgX2V4dGVuZHMoe30sIG90aGVyUHJvcHMsIHtcbiAgICAgICAgb25DaGFuZ2U6IF90aGlzLmhhbmRsZUNoYW5nZSxcbiAgICAgICAgb25LZXlEb3duOiBfdGhpcy5oYW5kbGVLZXlEb3duLFxuICAgICAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKGdldElucHV0Q2xhc3NOYW1lKHByZWZpeENscywgc2l6ZSwgZGlzYWJsZWQpLCBfZGVmaW5lUHJvcGVydHkoe30sIGNsYXNzTmFtZSwgY2xhc3NOYW1lICYmICFhZGRvbkJlZm9yZSAmJiAhYWRkb25BZnRlcikpLFxuICAgICAgICByZWY6IF90aGlzLnNhdmVJbnB1dFxuICAgICAgfSkpO1xuICAgIH07XG5cbiAgICBfdGhpcy5jbGVhclBhc3N3b3JkVmFsdWVBdHRyaWJ1dGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8yMDU0MVxuICAgICAgX3RoaXMucmVtb3ZlUGFzc3dvcmRUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChfdGhpcy5pbnB1dCAmJiBfdGhpcy5pbnB1dC5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSA9PT0gJ3Bhc3N3b3JkJyAmJiBfdGhpcy5pbnB1dC5oYXNBdHRyaWJ1dGUoJ3ZhbHVlJykpIHtcbiAgICAgICAgICBfdGhpcy5pbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfdGhpcy5oYW5kbGVDaGFuZ2UgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgX3RoaXMuc2V0VmFsdWUoZS50YXJnZXQudmFsdWUsIF90aGlzLmNsZWFyUGFzc3dvcmRWYWx1ZUF0dHJpYnV0ZSk7XG5cbiAgICAgIHJlc29sdmVPbkNoYW5nZShfdGhpcy5pbnB1dCwgZSwgX3RoaXMucHJvcHMub25DaGFuZ2UpO1xuICAgIH07XG5cbiAgICBfdGhpcy5oYW5kbGVLZXlEb3duID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBvblByZXNzRW50ZXIgPSBfdGhpcyRwcm9wczIub25QcmVzc0VudGVyLFxuICAgICAgICAgIG9uS2V5RG93biA9IF90aGlzJHByb3BzMi5vbktleURvd247XG5cbiAgICAgIGlmIChlLmtleUNvZGUgPT09IDEzICYmIG9uUHJlc3NFbnRlcikge1xuICAgICAgICBvblByZXNzRW50ZXIoZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvbktleURvd24pIHtcbiAgICAgICAgb25LZXlEb3duKGUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5yZW5kZXJDb21wb25lbnQgPSBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgdmFyIGdldFByZWZpeENscyA9IF9yZWYuZ2V0UHJlZml4Q2xzO1xuICAgICAgdmFyIHZhbHVlID0gX3RoaXMuc3RhdGUudmFsdWU7XG4gICAgICB2YXIgY3VzdG9taXplUHJlZml4Q2xzID0gX3RoaXMucHJvcHMucHJlZml4Q2xzO1xuICAgICAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygnaW5wdXQnLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9DbGVhcmFibGVMYWJlbGVkSW5wdXRbXCJkZWZhdWx0XCJdLCBfZXh0ZW5kcyh7fSwgX3RoaXMucHJvcHMsIHtcbiAgICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICAgIGlucHV0VHlwZTogXCJpbnB1dFwiLFxuICAgICAgICB2YWx1ZTogZml4Q29udHJvbGxlZFZhbHVlKHZhbHVlKSxcbiAgICAgICAgZWxlbWVudDogX3RoaXMucmVuZGVySW5wdXQocHJlZml4Q2xzKSxcbiAgICAgICAgaGFuZGxlUmVzZXQ6IF90aGlzLmhhbmRsZVJlc2V0LFxuICAgICAgICByZWY6IF90aGlzLnNhdmVDbGVhcmFibGVJbnB1dFxuICAgICAgfSkpO1xuICAgIH07XG5cbiAgICB2YXIgdmFsdWUgPSB0eXBlb2YgcHJvcHMudmFsdWUgPT09ICd1bmRlZmluZWQnID8gcHJvcHMuZGVmYXVsdFZhbHVlIDogcHJvcHMudmFsdWU7XG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICB2YWx1ZTogdmFsdWVcbiAgICB9O1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhJbnB1dCwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB0aGlzLmNsZWFyUGFzc3dvcmRWYWx1ZUF0dHJpYnV0ZSgpO1xuICAgIH0gLy8gU2luY2UgcG9seWZpbGwgYGdldFNuYXBzaG90QmVmb3JlVXBkYXRlYCBuZWVkIHdvcmsgd2l0aCBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAgICAvLyBXZSBrZWVwIGFuIGVtcHR5IGZ1bmN0aW9uIGhlcmUuXG5cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKCkge31cbiAgfSwge1xuICAgIGtleTogXCJnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICAgIGlmICgoMCwgX0NsZWFyYWJsZUxhYmVsZWRJbnB1dC5oYXNQcmVmaXhTdWZmaXgpKHByZXZQcm9wcykgIT09ICgwLCBfQ2xlYXJhYmxlTGFiZWxlZElucHV0Lmhhc1ByZWZpeFN1ZmZpeCkodGhpcy5wcm9wcykpIHtcbiAgICAgICAgKDAsIF93YXJuaW5nW1wiZGVmYXVsdFwiXSkodGhpcy5pbnB1dCAhPT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgJ0lucHV0JywgXCJXaGVuIElucHV0IGlzIGZvY3VzZWQsIGR5bmFtaWMgYWRkIG9yIHJlbW92ZSBwcmVmaXggLyBzdWZmaXggd2lsbCBtYWtlIGl0IGxvc2UgZm9jdXMgY2F1c2VkIGJ5IGRvbSBzdHJ1Y3R1cmUgY2hhbmdlLiBSZWFkIG1vcmU6IGh0dHBzOi8vYW50LmRlc2lnbi9jb21wb25lbnRzL2lucHV0LyNGQVFcIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnJlbW92ZVBhc3N3b3JkVGltZW91dCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZW1vdmVQYXNzd29yZFRpbWVvdXQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmb2N1c1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb2N1cygpIHtcbiAgICAgIHRoaXMuaW5wdXQuZm9jdXMoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYmx1clwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBibHVyKCkge1xuICAgICAgdGhpcy5pbnB1dC5ibHVyKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNlbGVjdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZWxlY3QoKSB7XG4gICAgICB0aGlzLmlucHV0LnNlbGVjdCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRWYWx1ZSh2YWx1ZSwgY2FsbGJhY2spIHtcbiAgICAgIGlmICghKCd2YWx1ZScgaW4gdGhpcy5wcm9wcykpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgIH0sIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfY29uZmlnUHJvdmlkZXIuQ29uZmlnQ29uc3VtZXIsIG51bGwsIHRoaXMucmVuZGVyQ29tcG9uZW50KTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wcykge1xuICAgICAgaWYgKCd2YWx1ZScgaW4gbmV4dFByb3BzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdmFsdWU6IG5leHRQcm9wcy52YWx1ZVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gSW5wdXQ7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cbklucHV0LmRlZmF1bHRQcm9wcyA9IHtcbiAgdHlwZTogJ3RleHQnXG59O1xuSW5wdXQucHJvcFR5cGVzID0ge1xuICB0eXBlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2l6ZTogUHJvcFR5cGVzLm9uZU9mKElucHV0U2l6ZXMpLFxuICBtYXhMZW5ndGg6IFByb3BUeXBlcy5udW1iZXIsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgdmFsdWU6IFByb3BUeXBlcy5hbnksXG4gIGRlZmF1bHRWYWx1ZTogUHJvcFR5cGVzLmFueSxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBhZGRvbkJlZm9yZTogUHJvcFR5cGVzLm5vZGUsXG4gIGFkZG9uQWZ0ZXI6IFByb3BUeXBlcy5ub2RlLFxuICBwcmVmaXhDbHM6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uUHJlc3NFbnRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uS2V5VXA6IFByb3BUeXBlcy5mdW5jLFxuICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgcHJlZml4OiBQcm9wVHlwZXMubm9kZSxcbiAgc3VmZml4OiBQcm9wVHlwZXMubm9kZSxcbiAgYWxsb3dDbGVhcjogUHJvcFR5cGVzLmJvb2xcbn07XG4oMCwgX3JlYWN0TGlmZWN5Y2xlc0NvbXBhdC5wb2x5ZmlsbCkoSW5wdXQpO1xudmFyIF9kZWZhdWx0ID0gSW5wdXQ7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7XG4gIGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykge1xuICAgIGFycjJbaV0gPSBhcnJbaV07XG4gIH1cblxuICByZXR1cm4gYXJyMjtcbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24gdG9BcnJheUNoaWxkcmVuKGNoaWxkcmVuKSB7XG4gIHZhciByZXQgPSBbXTtcbiAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaChjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgcmV0LnB1c2goY2hpbGQpO1xuICB9KTtcbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDaGlsZEluQ2hpbGRyZW5CeUtleShjaGlsZHJlbiwga2V5KSB7XG4gIHZhciByZXQgPSBudWxsO1xuICBpZiAoY2hpbGRyZW4pIHtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgaWYgKHJldCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoY2hpbGQgJiYgY2hpbGQua2V5ID09PSBrZXkpIHtcbiAgICAgICAgcmV0ID0gY2hpbGQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRTaG93bkNoaWxkSW5DaGlsZHJlbkJ5S2V5KGNoaWxkcmVuLCBrZXksIHNob3dQcm9wKSB7XG4gIHZhciByZXQgPSBudWxsO1xuICBpZiAoY2hpbGRyZW4pIHtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmtleSA9PT0ga2V5ICYmIGNoaWxkLnByb3BzW3Nob3dQcm9wXSkge1xuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0d28gY2hpbGQgd2l0aCBzYW1lIGtleSBmb3IgPHJjLWFuaW1hdGU+IGNoaWxkcmVuJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0ID0gY2hpbGQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRIaWRkZW5DaGlsZEluQ2hpbGRyZW5CeUtleShjaGlsZHJlbiwga2V5LCBzaG93UHJvcCkge1xuICB2YXIgZm91bmQgPSAwO1xuICBpZiAoY2hpbGRyZW4pIHtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZvdW5kID0gY2hpbGQgJiYgY2hpbGQua2V5ID09PSBrZXkgJiYgIWNoaWxkLnByb3BzW3Nob3dQcm9wXTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZm91bmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NhbWVDaGlsZHJlbihjMSwgYzIsIHNob3dQcm9wKSB7XG4gIHZhciBzYW1lID0gYzEubGVuZ3RoID09PSBjMi5sZW5ndGg7XG4gIGlmIChzYW1lKSB7XG4gICAgYzEuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XG4gICAgICB2YXIgY2hpbGQyID0gYzJbaW5kZXhdO1xuICAgICAgaWYgKGNoaWxkICYmIGNoaWxkMikge1xuICAgICAgICBpZiAoY2hpbGQgJiYgIWNoaWxkMiB8fCAhY2hpbGQgJiYgY2hpbGQyKSB7XG4gICAgICAgICAgc2FtZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLmtleSAhPT0gY2hpbGQyLmtleSkge1xuICAgICAgICAgIHNhbWUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChzaG93UHJvcCAmJiBjaGlsZC5wcm9wc1tzaG93UHJvcF0gIT09IGNoaWxkMi5wcm9wc1tzaG93UHJvcF0pIHtcbiAgICAgICAgICBzYW1lID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gc2FtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQ2hpbGRyZW4ocHJldiwgbmV4dCkge1xuICB2YXIgcmV0ID0gW107XG5cbiAgLy8gRm9yIGVhY2gga2V5IG9mIGBuZXh0YCwgdGhlIGxpc3Qgb2Yga2V5cyB0byBpbnNlcnQgYmVmb3JlIHRoYXQga2V5IGluXG4gIC8vIHRoZSBjb21iaW5lZCBsaXN0XG4gIHZhciBuZXh0Q2hpbGRyZW5QZW5kaW5nID0ge307XG4gIHZhciBwZW5kaW5nQ2hpbGRyZW4gPSBbXTtcbiAgcHJldi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIGlmIChjaGlsZCAmJiBmaW5kQ2hpbGRJbkNoaWxkcmVuQnlLZXkobmV4dCwgY2hpbGQua2V5KSkge1xuICAgICAgaWYgKHBlbmRpbmdDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgbmV4dENoaWxkcmVuUGVuZGluZ1tjaGlsZC5rZXldID0gcGVuZGluZ0NoaWxkcmVuO1xuICAgICAgICBwZW5kaW5nQ2hpbGRyZW4gPSBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVuZGluZ0NoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgIH1cbiAgfSk7XG5cbiAgbmV4dC5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIGlmIChjaGlsZCAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobmV4dENoaWxkcmVuUGVuZGluZywgY2hpbGQua2V5KSkge1xuICAgICAgcmV0ID0gcmV0LmNvbmNhdChuZXh0Q2hpbGRyZW5QZW5kaW5nW2NoaWxkLmtleV0pO1xuICAgIH1cbiAgICByZXQucHVzaChjaGlsZCk7XG4gIH0pO1xuXG4gIHJldCA9IHJldC5jb25jYXQocGVuZGluZ0NoaWxkcmVuKTtcblxuICByZXR1cm4gcmV0O1xufSIsInZhciB1dGlsID0ge1xuICBpc0FwcGVhclN1cHBvcnRlZDogZnVuY3Rpb24gaXNBcHBlYXJTdXBwb3J0ZWQocHJvcHMpIHtcbiAgICByZXR1cm4gcHJvcHMudHJhbnNpdGlvbk5hbWUgJiYgcHJvcHMudHJhbnNpdGlvbkFwcGVhciB8fCBwcm9wcy5hbmltYXRpb24uYXBwZWFyO1xuICB9LFxuICBpc0VudGVyU3VwcG9ydGVkOiBmdW5jdGlvbiBpc0VudGVyU3VwcG9ydGVkKHByb3BzKSB7XG4gICAgcmV0dXJuIHByb3BzLnRyYW5zaXRpb25OYW1lICYmIHByb3BzLnRyYW5zaXRpb25FbnRlciB8fCBwcm9wcy5hbmltYXRpb24uZW50ZXI7XG4gIH0sXG4gIGlzTGVhdmVTdXBwb3J0ZWQ6IGZ1bmN0aW9uIGlzTGVhdmVTdXBwb3J0ZWQocHJvcHMpIHtcbiAgICByZXR1cm4gcHJvcHMudHJhbnNpdGlvbk5hbWUgJiYgcHJvcHMudHJhbnNpdGlvbkxlYXZlIHx8IHByb3BzLmFuaW1hdGlvbi5sZWF2ZTtcbiAgfSxcbiAgYWxsb3dBcHBlYXJDYWxsYmFjazogZnVuY3Rpb24gYWxsb3dBcHBlYXJDYWxsYmFjayhwcm9wcykge1xuICAgIHJldHVybiBwcm9wcy50cmFuc2l0aW9uQXBwZWFyIHx8IHByb3BzLmFuaW1hdGlvbi5hcHBlYXI7XG4gIH0sXG4gIGFsbG93RW50ZXJDYWxsYmFjazogZnVuY3Rpb24gYWxsb3dFbnRlckNhbGxiYWNrKHByb3BzKSB7XG4gICAgcmV0dXJuIHByb3BzLnRyYW5zaXRpb25FbnRlciB8fCBwcm9wcy5hbmltYXRpb24uZW50ZXI7XG4gIH0sXG4gIGFsbG93TGVhdmVDYWxsYmFjazogZnVuY3Rpb24gYWxsb3dMZWF2ZUNhbGxiYWNrKHByb3BzKSB7XG4gICAgcmV0dXJuIHByb3BzLnRyYW5zaXRpb25MZWF2ZSB8fCBwcm9wcy5hbmltYXRpb24ubGVhdmU7XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCB1dGlsOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJztcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJztcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybic7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9pbmhlcml0cyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNzc0FuaW1hdGUsIHsgaXNDc3NBbmltYXRpb25TdXBwb3J0ZWQgfSBmcm9tICdjc3MtYW5pbWF0aW9uJztcbmltcG9ydCBhbmltVXRpbCBmcm9tICcuL3V0aWwvYW5pbWF0ZSc7XG5cbnZhciB0cmFuc2l0aW9uTWFwID0ge1xuICBlbnRlcjogJ3RyYW5zaXRpb25FbnRlcicsXG4gIGFwcGVhcjogJ3RyYW5zaXRpb25BcHBlYXInLFxuICBsZWF2ZTogJ3RyYW5zaXRpb25MZWF2ZSdcbn07XG5cbnZhciBBbmltYXRlQ2hpbGQgPSBmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQW5pbWF0ZUNoaWxkLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBBbmltYXRlQ2hpbGQoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFuaW1hdGVDaGlsZCk7XG5cbiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgKEFuaW1hdGVDaGlsZC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKEFuaW1hdGVDaGlsZCkpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEFuaW1hdGVDaGlsZCwgW3tcbiAgICBrZXk6ICdjb21wb25lbnRXaWxsVW5tb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdGhpcy5zdG9wKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnY29tcG9uZW50V2lsbEVudGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbEVudGVyKGRvbmUpIHtcbiAgICAgIGlmIChhbmltVXRpbC5pc0VudGVyU3VwcG9ydGVkKHRoaXMucHJvcHMpKSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvbignZW50ZXInLCBkb25lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdjb21wb25lbnRXaWxsQXBwZWFyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbEFwcGVhcihkb25lKSB7XG4gICAgICBpZiAoYW5pbVV0aWwuaXNBcHBlYXJTdXBwb3J0ZWQodGhpcy5wcm9wcykpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uKCdhcHBlYXInLCBkb25lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdjb21wb25lbnRXaWxsTGVhdmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsTGVhdmUoZG9uZSkge1xuICAgICAgaWYgKGFuaW1VdGlsLmlzTGVhdmVTdXBwb3J0ZWQodGhpcy5wcm9wcykpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uKCdsZWF2ZScsIGRvbmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gYWx3YXlzIHN5bmMsIGRvIG5vdCBpbnRlcnVwdCB3aXRoIHJlYWN0IGNvbXBvbmVudCBsaWZlIGN5Y2xlXG4gICAgICAgIC8vIHVwZGF0ZSBoaWRkZW4gLT4gYW5pbWF0ZSBoaWRkZW4gLT5cbiAgICAgICAgLy8gZGlkVXBkYXRlIC0+IGFuaW1hdGUgbGVhdmUgLT4gdW5tb3VudCAoaWYgYW5pbWF0ZSBpcyBub25lKVxuICAgICAgICBkb25lKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAndHJhbnNpdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRyYW5zaXRpb24oYW5pbWF0aW9uVHlwZSwgZmluaXNoQ2FsbGJhY2spIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgbm9kZSA9IFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpO1xuICAgICAgdmFyIHByb3BzID0gdGhpcy5wcm9wcztcbiAgICAgIHZhciB0cmFuc2l0aW9uTmFtZSA9IHByb3BzLnRyYW5zaXRpb25OYW1lO1xuICAgICAgdmFyIG5hbWVJc09iaiA9IHR5cGVvZiB0cmFuc2l0aW9uTmFtZSA9PT0gJ29iamVjdCc7XG4gICAgICB0aGlzLnN0b3AoKTtcbiAgICAgIHZhciBlbmQgPSBmdW5jdGlvbiBlbmQoKSB7XG4gICAgICAgIF90aGlzMi5zdG9wcGVyID0gbnVsbDtcbiAgICAgICAgZmluaXNoQ2FsbGJhY2soKTtcbiAgICAgIH07XG4gICAgICBpZiAoKGlzQ3NzQW5pbWF0aW9uU3VwcG9ydGVkIHx8ICFwcm9wcy5hbmltYXRpb25bYW5pbWF0aW9uVHlwZV0pICYmIHRyYW5zaXRpb25OYW1lICYmIHByb3BzW3RyYW5zaXRpb25NYXBbYW5pbWF0aW9uVHlwZV1dKSB7XG4gICAgICAgIHZhciBuYW1lID0gbmFtZUlzT2JqID8gdHJhbnNpdGlvbk5hbWVbYW5pbWF0aW9uVHlwZV0gOiB0cmFuc2l0aW9uTmFtZSArICctJyArIGFuaW1hdGlvblR5cGU7XG4gICAgICAgIHZhciBhY3RpdmVOYW1lID0gbmFtZSArICctYWN0aXZlJztcbiAgICAgICAgaWYgKG5hbWVJc09iaiAmJiB0cmFuc2l0aW9uTmFtZVthbmltYXRpb25UeXBlICsgJ0FjdGl2ZSddKSB7XG4gICAgICAgICAgYWN0aXZlTmFtZSA9IHRyYW5zaXRpb25OYW1lW2FuaW1hdGlvblR5cGUgKyAnQWN0aXZlJ107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdG9wcGVyID0gY3NzQW5pbWF0ZShub2RlLCB7XG4gICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICBhY3RpdmU6IGFjdGl2ZU5hbWVcbiAgICAgICAgfSwgZW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RvcHBlciA9IHByb3BzLmFuaW1hdGlvblthbmltYXRpb25UeXBlXShub2RlLCBlbmQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3N0b3AnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdG9wKCkge1xuICAgICAgdmFyIHN0b3BwZXIgPSB0aGlzLnN0b3BwZXI7XG4gICAgICBpZiAoc3RvcHBlcikge1xuICAgICAgICB0aGlzLnN0b3BwZXIgPSBudWxsO1xuICAgICAgICBzdG9wcGVyLnN0b3AoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZW5kZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQW5pbWF0ZUNoaWxkO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5BbmltYXRlQ2hpbGQucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLmFueVxufTtcbmV4cG9ydCBkZWZhdWx0IEFuaW1hdGVDaGlsZDsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHknO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuJztcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgdG9BcnJheUNoaWxkcmVuLCBtZXJnZUNoaWxkcmVuLCBmaW5kU2hvd25DaGlsZEluQ2hpbGRyZW5CeUtleSwgZmluZENoaWxkSW5DaGlsZHJlbkJ5S2V5LCBpc1NhbWVDaGlsZHJlbiB9IGZyb20gJy4vQ2hpbGRyZW5VdGlscyc7XG5pbXBvcnQgQW5pbWF0ZUNoaWxkIGZyb20gJy4vQW5pbWF0ZUNoaWxkJztcbmltcG9ydCBhbmltVXRpbCBmcm9tICcuL3V0aWwvYW5pbWF0ZSc7XG5cbnZhciBkZWZhdWx0S2V5ID0gJ3JjX2FuaW1hdGVfJyArIERhdGUubm93KCk7XG5cbmZ1bmN0aW9uIGdldENoaWxkcmVuRnJvbVByb3BzKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pKSB7XG4gICAgaWYgKCFjaGlsZHJlbi5rZXkpIHtcbiAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgICAga2V5OiBkZWZhdWx0S2V5XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNoaWxkcmVuO1xufVxuXG5mdW5jdGlvbiBub29wKCkge31cblxudmFyIEFuaW1hdGUgPSBmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQW5pbWF0ZSwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gIGZ1bmN0aW9uIEFuaW1hdGUocHJvcHMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQW5pbWF0ZSk7XG5cbiAgICB2YXIgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCAoQW5pbWF0ZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKEFuaW1hdGUpKS5jYWxsKHRoaXMsIHByb3BzKSk7XG5cbiAgICBfaW5pdGlhbGlzZVByb3BzLmNhbGwoX3RoaXMpO1xuXG4gICAgX3RoaXMuY3VycmVudGx5QW5pbWF0aW5nS2V5cyA9IHt9O1xuICAgIF90aGlzLmtleXNUb0VudGVyID0gW107XG4gICAgX3RoaXMua2V5c1RvTGVhdmUgPSBbXTtcblxuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgY2hpbGRyZW46IHRvQXJyYXlDaGlsZHJlbihnZXRDaGlsZHJlbkZyb21Qcm9wcyhwcm9wcykpXG4gICAgfTtcblxuICAgIF90aGlzLmNoaWxkcmVuUmVmcyA9IHt9O1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhBbmltYXRlLCBbe1xuICAgIGtleTogJ2NvbXBvbmVudERpZE1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIHNob3dQcm9wID0gdGhpcy5wcm9wcy5zaG93UHJvcDtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuc3RhdGUuY2hpbGRyZW47XG4gICAgICBpZiAoc2hvd1Byb3ApIHtcbiAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgcmV0dXJuICEhY2hpbGQucHJvcHNbc2hvd1Byb3BdO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICAgIF90aGlzMi5wZXJmb3JtQXBwZWFyKGNoaWxkLmtleSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHRoaXMubmV4dFByb3BzID0gbmV4dFByb3BzO1xuICAgICAgdmFyIG5leHRDaGlsZHJlbiA9IHRvQXJyYXlDaGlsZHJlbihnZXRDaGlsZHJlbkZyb21Qcm9wcyhuZXh0UHJvcHMpKTtcbiAgICAgIHZhciBwcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgICAvLyBleGNsdXNpdmUgbmVlZHMgaW1tZWRpYXRlIHJlc3BvbnNlXG4gICAgICBpZiAocHJvcHMuZXhjbHVzaXZlKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY3VycmVudGx5QW5pbWF0aW5nS2V5cykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgX3RoaXMzLnN0b3Aoa2V5KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB2YXIgc2hvd1Byb3AgPSBwcm9wcy5zaG93UHJvcDtcbiAgICAgIHZhciBjdXJyZW50bHlBbmltYXRpbmdLZXlzID0gdGhpcy5jdXJyZW50bHlBbmltYXRpbmdLZXlzO1xuICAgICAgLy8gbGFzdCBwcm9wcyBjaGlsZHJlbiBpZiBleGNsdXNpdmVcbiAgICAgIHZhciBjdXJyZW50Q2hpbGRyZW4gPSBwcm9wcy5leGNsdXNpdmUgPyB0b0FycmF5Q2hpbGRyZW4oZ2V0Q2hpbGRyZW5Gcm9tUHJvcHMocHJvcHMpKSA6IHRoaXMuc3RhdGUuY2hpbGRyZW47XG4gICAgICAvLyBpbiBjYXNlIGRlc3Ryb3kgaW4gc2hvd1Byb3AgbW9kZVxuICAgICAgdmFyIG5ld0NoaWxkcmVuID0gW107XG4gICAgICBpZiAoc2hvd1Byb3ApIHtcbiAgICAgICAgY3VycmVudENoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGN1cnJlbnRDaGlsZCkge1xuICAgICAgICAgIHZhciBuZXh0Q2hpbGQgPSBjdXJyZW50Q2hpbGQgJiYgZmluZENoaWxkSW5DaGlsZHJlbkJ5S2V5KG5leHRDaGlsZHJlbiwgY3VycmVudENoaWxkLmtleSk7XG4gICAgICAgICAgdmFyIG5ld0NoaWxkID0gdm9pZCAwO1xuICAgICAgICAgIGlmICgoIW5leHRDaGlsZCB8fCAhbmV4dENoaWxkLnByb3BzW3Nob3dQcm9wXSkgJiYgY3VycmVudENoaWxkLnByb3BzW3Nob3dQcm9wXSkge1xuICAgICAgICAgICAgbmV3Q2hpbGQgPSBSZWFjdC5jbG9uZUVsZW1lbnQobmV4dENoaWxkIHx8IGN1cnJlbnRDaGlsZCwgX2RlZmluZVByb3BlcnR5KHt9LCBzaG93UHJvcCwgdHJ1ZSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdDaGlsZCA9IG5leHRDaGlsZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5ld0NoaWxkKSB7XG4gICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG5ld0NoaWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBuZXh0Q2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAobmV4dENoaWxkKSB7XG4gICAgICAgICAgaWYgKCFuZXh0Q2hpbGQgfHwgIWZpbmRDaGlsZEluQ2hpbGRyZW5CeUtleShjdXJyZW50Q2hpbGRyZW4sIG5leHRDaGlsZC5rZXkpKSB7XG4gICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG5leHRDaGlsZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld0NoaWxkcmVuID0gbWVyZ2VDaGlsZHJlbihjdXJyZW50Q2hpbGRyZW4sIG5leHRDaGlsZHJlbik7XG4gICAgICB9XG5cbiAgICAgIC8vIG5lZWQgcmVuZGVyIHRvIGF2b2lkIHVwZGF0ZVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNoaWxkcmVuOiBuZXdDaGlsZHJlblxuICAgICAgfSk7XG5cbiAgICAgIG5leHRDaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICB2YXIga2V5ID0gY2hpbGQgJiYgY2hpbGQua2V5O1xuICAgICAgICBpZiAoY2hpbGQgJiYgY3VycmVudGx5QW5pbWF0aW5nS2V5c1trZXldKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBoYXNQcmV2ID0gY2hpbGQgJiYgZmluZENoaWxkSW5DaGlsZHJlbkJ5S2V5KGN1cnJlbnRDaGlsZHJlbiwga2V5KTtcbiAgICAgICAgaWYgKHNob3dQcm9wKSB7XG4gICAgICAgICAgdmFyIHNob3dJbk5leHQgPSBjaGlsZC5wcm9wc1tzaG93UHJvcF07XG4gICAgICAgICAgaWYgKGhhc1ByZXYpIHtcbiAgICAgICAgICAgIHZhciBzaG93SW5Ob3cgPSBmaW5kU2hvd25DaGlsZEluQ2hpbGRyZW5CeUtleShjdXJyZW50Q2hpbGRyZW4sIGtleSwgc2hvd1Byb3ApO1xuICAgICAgICAgICAgaWYgKCFzaG93SW5Ob3cgJiYgc2hvd0luTmV4dCkge1xuICAgICAgICAgICAgICBfdGhpczMua2V5c1RvRW50ZXIucHVzaChrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoc2hvd0luTmV4dCkge1xuICAgICAgICAgICAgX3RoaXMzLmtleXNUb0VudGVyLnB1c2goa2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc1ByZXYpIHtcbiAgICAgICAgICBfdGhpczMua2V5c1RvRW50ZXIucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY3VycmVudENoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIHZhciBrZXkgPSBjaGlsZCAmJiBjaGlsZC5rZXk7XG4gICAgICAgIGlmIChjaGlsZCAmJiBjdXJyZW50bHlBbmltYXRpbmdLZXlzW2tleV0pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGhhc05leHQgPSBjaGlsZCAmJiBmaW5kQ2hpbGRJbkNoaWxkcmVuQnlLZXkobmV4dENoaWxkcmVuLCBrZXkpO1xuICAgICAgICBpZiAoc2hvd1Byb3ApIHtcbiAgICAgICAgICB2YXIgc2hvd0luTm93ID0gY2hpbGQucHJvcHNbc2hvd1Byb3BdO1xuICAgICAgICAgIGlmIChoYXNOZXh0KSB7XG4gICAgICAgICAgICB2YXIgc2hvd0luTmV4dCA9IGZpbmRTaG93bkNoaWxkSW5DaGlsZHJlbkJ5S2V5KG5leHRDaGlsZHJlbiwga2V5LCBzaG93UHJvcCk7XG4gICAgICAgICAgICBpZiAoIXNob3dJbk5leHQgJiYgc2hvd0luTm93KSB7XG4gICAgICAgICAgICAgIF90aGlzMy5rZXlzVG9MZWF2ZS5wdXNoKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChzaG93SW5Ob3cpIHtcbiAgICAgICAgICAgIF90aGlzMy5rZXlzVG9MZWF2ZS5wdXNoKGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNOZXh0KSB7XG4gICAgICAgICAgX3RoaXMzLmtleXNUb0xlYXZlLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnY29tcG9uZW50RGlkVXBkYXRlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgdmFyIGtleXNUb0VudGVyID0gdGhpcy5rZXlzVG9FbnRlcjtcbiAgICAgIHRoaXMua2V5c1RvRW50ZXIgPSBbXTtcbiAgICAgIGtleXNUb0VudGVyLmZvckVhY2godGhpcy5wZXJmb3JtRW50ZXIpO1xuICAgICAgdmFyIGtleXNUb0xlYXZlID0gdGhpcy5rZXlzVG9MZWF2ZTtcbiAgICAgIHRoaXMua2V5c1RvTGVhdmUgPSBbXTtcbiAgICAgIGtleXNUb0xlYXZlLmZvckVhY2godGhpcy5wZXJmb3JtTGVhdmUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2lzVmFsaWRDaGlsZEJ5S2V5JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNWYWxpZENoaWxkQnlLZXkoY3VycmVudENoaWxkcmVuLCBrZXkpIHtcbiAgICAgIHZhciBzaG93UHJvcCA9IHRoaXMucHJvcHMuc2hvd1Byb3A7XG4gICAgICBpZiAoc2hvd1Byb3ApIHtcbiAgICAgICAgcmV0dXJuIGZpbmRTaG93bkNoaWxkSW5DaGlsZHJlbkJ5S2V5KGN1cnJlbnRDaGlsZHJlbiwga2V5LCBzaG93UHJvcCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmluZENoaWxkSW5DaGlsZHJlbkJ5S2V5KGN1cnJlbnRDaGlsZHJlbiwga2V5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdzdG9wJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3RvcChrZXkpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmN1cnJlbnRseUFuaW1hdGluZ0tleXNba2V5XTtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmNoaWxkcmVuUmVmc1trZXldO1xuICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICBjb21wb25lbnQuc3RvcCgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuICAgICAgdGhpcy5uZXh0UHJvcHMgPSBwcm9wcztcbiAgICAgIHZhciBzdGF0ZUNoaWxkcmVuID0gdGhpcy5zdGF0ZS5jaGlsZHJlbjtcbiAgICAgIHZhciBjaGlsZHJlbiA9IG51bGw7XG4gICAgICBpZiAoc3RhdGVDaGlsZHJlbikge1xuICAgICAgICBjaGlsZHJlbiA9IHN0YXRlQ2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgIGlmIChjaGlsZCA9PT0gbnVsbCB8fCBjaGlsZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghY2hpbGQua2V5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ211c3Qgc2V0IGtleSBmb3IgPHJjLWFuaW1hdGU+IGNoaWxkcmVuJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgQW5pbWF0ZUNoaWxkLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYobm9kZSkge1xuICAgICAgICAgICAgICAgIF90aGlzNC5jaGlsZHJlblJlZnNbY2hpbGQua2V5XSA9IG5vZGU7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGFuaW1hdGlvbjogcHJvcHMuYW5pbWF0aW9uLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uTmFtZTogcHJvcHMudHJhbnNpdGlvbk5hbWUsXG4gICAgICAgICAgICAgIHRyYW5zaXRpb25FbnRlcjogcHJvcHMudHJhbnNpdGlvbkVudGVyLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uQXBwZWFyOiBwcm9wcy50cmFuc2l0aW9uQXBwZWFyLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uTGVhdmU6IHByb3BzLnRyYW5zaXRpb25MZWF2ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNoaWxkXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB2YXIgQ29tcG9uZW50ID0gcHJvcHMuY29tcG9uZW50O1xuICAgICAgaWYgKENvbXBvbmVudCkge1xuICAgICAgICB2YXIgcGFzc2VkUHJvcHMgPSBwcm9wcztcbiAgICAgICAgaWYgKHR5cGVvZiBDb21wb25lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcGFzc2VkUHJvcHMgPSBfZXh0ZW5kcyh7XG4gICAgICAgICAgICBjbGFzc05hbWU6IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgIHN0eWxlOiBwcm9wcy5zdHlsZVxuICAgICAgICAgIH0sIHByb3BzLmNvbXBvbmVudFByb3BzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICBDb21wb25lbnQsXG4gICAgICAgICAgcGFzc2VkUHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjaGlsZHJlblswXSB8fCBudWxsO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBBbmltYXRlO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5BbmltYXRlLmlzQW5pbWF0ZSA9IHRydWU7XG5BbmltYXRlLnByb3BUeXBlcyA9IHtcbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuYW55LFxuICBjb21wb25lbnRQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgYW5pbWF0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICB0cmFuc2l0aW9uTmFtZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICB0cmFuc2l0aW9uRW50ZXI6IFByb3BUeXBlcy5ib29sLFxuICB0cmFuc2l0aW9uQXBwZWFyOiBQcm9wVHlwZXMuYm9vbCxcbiAgZXhjbHVzaXZlOiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJhbnNpdGlvbkxlYXZlOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25FbmQ6IFByb3BUeXBlcy5mdW5jLFxuICBvbkVudGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25MZWF2ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQXBwZWFyOiBQcm9wVHlwZXMuZnVuYyxcbiAgc2hvd1Byb3A6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZVxufTtcbkFuaW1hdGUuZGVmYXVsdFByb3BzID0ge1xuICBhbmltYXRpb246IHt9LFxuICBjb21wb25lbnQ6ICdzcGFuJyxcbiAgY29tcG9uZW50UHJvcHM6IHt9LFxuICB0cmFuc2l0aW9uRW50ZXI6IHRydWUsXG4gIHRyYW5zaXRpb25MZWF2ZTogdHJ1ZSxcbiAgdHJhbnNpdGlvbkFwcGVhcjogZmFsc2UsXG4gIG9uRW5kOiBub29wLFxuICBvbkVudGVyOiBub29wLFxuICBvbkxlYXZlOiBub29wLFxuICBvbkFwcGVhcjogbm9vcFxufTtcblxudmFyIF9pbml0aWFsaXNlUHJvcHMgPSBmdW5jdGlvbiBfaW5pdGlhbGlzZVByb3BzKCkge1xuICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICB0aGlzLnBlcmZvcm1FbnRlciA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAvLyBtYXkgYWxyZWFkeSByZW1vdmUgYnkgZXhjbHVzaXZlXG4gICAgaWYgKF90aGlzNS5jaGlsZHJlblJlZnNba2V5XSkge1xuICAgICAgX3RoaXM1LmN1cnJlbnRseUFuaW1hdGluZ0tleXNba2V5XSA9IHRydWU7XG4gICAgICBfdGhpczUuY2hpbGRyZW5SZWZzW2tleV0uY29tcG9uZW50V2lsbEVudGVyKF90aGlzNS5oYW5kbGVEb25lQWRkaW5nLmJpbmQoX3RoaXM1LCBrZXksICdlbnRlcicpKTtcbiAgICB9XG4gIH07XG5cbiAgdGhpcy5wZXJmb3JtQXBwZWFyID0gZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChfdGhpczUuY2hpbGRyZW5SZWZzW2tleV0pIHtcbiAgICAgIF90aGlzNS5jdXJyZW50bHlBbmltYXRpbmdLZXlzW2tleV0gPSB0cnVlO1xuICAgICAgX3RoaXM1LmNoaWxkcmVuUmVmc1trZXldLmNvbXBvbmVudFdpbGxBcHBlYXIoX3RoaXM1LmhhbmRsZURvbmVBZGRpbmcuYmluZChfdGhpczUsIGtleSwgJ2FwcGVhcicpKTtcbiAgICB9XG4gIH07XG5cbiAgdGhpcy5oYW5kbGVEb25lQWRkaW5nID0gZnVuY3Rpb24gKGtleSwgdHlwZSkge1xuICAgIHZhciBwcm9wcyA9IF90aGlzNS5wcm9wcztcbiAgICBkZWxldGUgX3RoaXM1LmN1cnJlbnRseUFuaW1hdGluZ0tleXNba2V5XTtcbiAgICAvLyBpZiB1cGRhdGUgb24gZXhjbHVzaXZlIG1vZGUsIHNraXAgY2hlY2tcbiAgICBpZiAocHJvcHMuZXhjbHVzaXZlICYmIHByb3BzICE9PSBfdGhpczUubmV4dFByb3BzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBjdXJyZW50Q2hpbGRyZW4gPSB0b0FycmF5Q2hpbGRyZW4oZ2V0Q2hpbGRyZW5Gcm9tUHJvcHMocHJvcHMpKTtcbiAgICBpZiAoIV90aGlzNS5pc1ZhbGlkQ2hpbGRCeUtleShjdXJyZW50Q2hpbGRyZW4sIGtleSkpIHtcbiAgICAgIC8vIGV4Y2x1c2l2ZSB3aWxsIG5vdCBuZWVkIHRoaXNcbiAgICAgIF90aGlzNS5wZXJmb3JtTGVhdmUoa2V5KTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhcHBlYXInKSB7XG4gICAgICBpZiAoYW5pbVV0aWwuYWxsb3dBcHBlYXJDYWxsYmFjayhwcm9wcykpIHtcbiAgICAgICAgcHJvcHMub25BcHBlYXIoa2V5KTtcbiAgICAgICAgcHJvcHMub25FbmQoa2V5LCB0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGFuaW1VdGlsLmFsbG93RW50ZXJDYWxsYmFjayhwcm9wcykpIHtcbiAgICAgIHByb3BzLm9uRW50ZXIoa2V5KTtcbiAgICAgIHByb3BzLm9uRW5kKGtleSwgdHJ1ZSk7XG4gICAgfVxuICB9O1xuXG4gIHRoaXMucGVyZm9ybUxlYXZlID0gZnVuY3Rpb24gKGtleSkge1xuICAgIC8vIG1heSBhbHJlYWR5IHJlbW92ZSBieSBleGNsdXNpdmVcbiAgICBpZiAoX3RoaXM1LmNoaWxkcmVuUmVmc1trZXldKSB7XG4gICAgICBfdGhpczUuY3VycmVudGx5QW5pbWF0aW5nS2V5c1trZXldID0gdHJ1ZTtcbiAgICAgIF90aGlzNS5jaGlsZHJlblJlZnNba2V5XS5jb21wb25lbnRXaWxsTGVhdmUoX3RoaXM1LmhhbmRsZURvbmVMZWF2aW5nLmJpbmQoX3RoaXM1LCBrZXkpKTtcbiAgICB9XG4gIH07XG5cbiAgdGhpcy5oYW5kbGVEb25lTGVhdmluZyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgcHJvcHMgPSBfdGhpczUucHJvcHM7XG4gICAgZGVsZXRlIF90aGlzNS5jdXJyZW50bHlBbmltYXRpbmdLZXlzW2tleV07XG4gICAgLy8gaWYgdXBkYXRlIG9uIGV4Y2x1c2l2ZSBtb2RlLCBza2lwIGNoZWNrXG4gICAgaWYgKHByb3BzLmV4Y2x1c2l2ZSAmJiBwcm9wcyAhPT0gX3RoaXM1Lm5leHRQcm9wcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgY3VycmVudENoaWxkcmVuID0gdG9BcnJheUNoaWxkcmVuKGdldENoaWxkcmVuRnJvbVByb3BzKHByb3BzKSk7XG4gICAgLy8gaW4gY2FzZSBzdGF0ZSBjaGFuZ2UgaXMgdG9vIGZhc3RcbiAgICBpZiAoX3RoaXM1LmlzVmFsaWRDaGlsZEJ5S2V5KGN1cnJlbnRDaGlsZHJlbiwga2V5KSkge1xuICAgICAgX3RoaXM1LnBlcmZvcm1FbnRlcihrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZW5kID0gZnVuY3Rpb24gZW5kKCkge1xuICAgICAgICBpZiAoYW5pbVV0aWwuYWxsb3dMZWF2ZUNhbGxiYWNrKHByb3BzKSkge1xuICAgICAgICAgIHByb3BzLm9uTGVhdmUoa2V5KTtcbiAgICAgICAgICBwcm9wcy5vbkVuZChrZXksIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmICghaXNTYW1lQ2hpbGRyZW4oX3RoaXM1LnN0YXRlLmNoaWxkcmVuLCBjdXJyZW50Q2hpbGRyZW4sIHByb3BzLnNob3dQcm9wKSkge1xuICAgICAgICBfdGhpczUuc2V0U3RhdGUoe1xuICAgICAgICAgIGNoaWxkcmVuOiBjdXJyZW50Q2hpbGRyZW5cbiAgICAgICAgfSwgZW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVuZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFuaW1hdGU7IiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsIi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG4iLCJ2YXIgaWQgPSAwO1xudmFyIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xufTtcbiIsImV4cG9ydHMuZiA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuIiwiLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgUHJvcFR5cGVzID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInByb3AtdHlwZXNcIikpO1xuXG52YXIgX2RlZmF1bHQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2RlZmF1bHRcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG52YXIgTG9jYWxlUmVjZWl2ZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKExvY2FsZVJlY2VpdmVyLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKExvY2FsZVJlY2VpdmVyKTtcblxuICBmdW5jdGlvbiBMb2NhbGVSZWNlaXZlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTG9jYWxlUmVjZWl2ZXIpO1xuXG4gICAgcmV0dXJuIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKExvY2FsZVJlY2VpdmVyLCBbe1xuICAgIGtleTogXCJnZXRMb2NhbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9jYWxlKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjb21wb25lbnROYW1lID0gX3RoaXMkcHJvcHMuY29tcG9uZW50TmFtZSxcbiAgICAgICAgICBkZWZhdWx0TG9jYWxlID0gX3RoaXMkcHJvcHMuZGVmYXVsdExvY2FsZTtcbiAgICAgIHZhciBsb2NhbGUgPSBkZWZhdWx0TG9jYWxlIHx8IF9kZWZhdWx0W1wiZGVmYXVsdFwiXVtjb21wb25lbnROYW1lIHx8ICdnbG9iYWwnXTtcbiAgICAgIHZhciBhbnRMb2NhbGUgPSB0aGlzLmNvbnRleHQuYW50TG9jYWxlO1xuICAgICAgdmFyIGxvY2FsZUZyb21Db250ZXh0ID0gY29tcG9uZW50TmFtZSAmJiBhbnRMb2NhbGUgPyBhbnRMb2NhbGVbY29tcG9uZW50TmFtZV0gOiB7fTtcbiAgICAgIHJldHVybiBfZXh0ZW5kcyhfZXh0ZW5kcyh7fSwgdHlwZW9mIGxvY2FsZSA9PT0gJ2Z1bmN0aW9uJyA/IGxvY2FsZSgpIDogbG9jYWxlKSwgbG9jYWxlRnJvbUNvbnRleHQgfHwge30pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRMb2NhbGVDb2RlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldExvY2FsZUNvZGUoKSB7XG4gICAgICB2YXIgYW50TG9jYWxlID0gdGhpcy5jb250ZXh0LmFudExvY2FsZTtcbiAgICAgIHZhciBsb2NhbGVDb2RlID0gYW50TG9jYWxlICYmIGFudExvY2FsZS5sb2NhbGU7IC8vIEhhZCB1c2UgTG9jYWxlUHJvdmlkZSBidXQgZGlkbid0IHNldCBsb2NhbGVcblxuICAgICAgaWYgKGFudExvY2FsZSAmJiBhbnRMb2NhbGUuZXhpc3QgJiYgIWxvY2FsZUNvZGUpIHtcbiAgICAgICAgcmV0dXJuIF9kZWZhdWx0W1wiZGVmYXVsdFwiXS5sb2NhbGU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBsb2NhbGVDb2RlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW4odGhpcy5nZXRMb2NhbGUoKSwgdGhpcy5nZXRMb2NhbGVDb2RlKCksIHRoaXMuY29udGV4dC5hbnRMb2NhbGUpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBMb2NhbGVSZWNlaXZlcjtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBMb2NhbGVSZWNlaXZlcjtcbkxvY2FsZVJlY2VpdmVyLmRlZmF1bHRQcm9wcyA9IHtcbiAgY29tcG9uZW50TmFtZTogJ2dsb2JhbCdcbn07XG5Mb2NhbGVSZWNlaXZlci5jb250ZXh0VHlwZXMgPSB7XG4gIGFudExvY2FsZTogUHJvcFR5cGVzLm9iamVjdFxufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmZpbGxSZWYgPSBmaWxsUmVmO1xuZXhwb3J0cy5jb21wb3NlUmVmID0gY29tcG9zZVJlZjtcbmV4cG9ydHMuc3VwcG9ydFJlZiA9IHN1cHBvcnRSZWY7XG5cbnZhciBfdHlwZW9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpKTtcblxudmFyIF9yZWFjdElzID0gcmVxdWlyZShcInJlYWN0LWlzXCIpO1xuXG5mdW5jdGlvbiBmaWxsUmVmKHJlZiwgbm9kZSkge1xuICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJlZihub2RlKTtcbiAgfSBlbHNlIGlmICgoMCwgX3R5cGVvZjIuZGVmYXVsdCkocmVmKSA9PT0gJ29iamVjdCcgJiYgcmVmICYmICdjdXJyZW50JyBpbiByZWYpIHtcbiAgICByZWYuY3VycmVudCA9IG5vZGU7XG4gIH1cbn1cbi8qKlxuICogTWVyZ2UgcmVmcyBpbnRvIG9uZSByZWYgZnVuY3Rpb24gdG8gc3VwcG9ydCByZWYgcGFzc2luZy5cbiAqL1xuXG5cbmZ1bmN0aW9uIGNvbXBvc2VSZWYoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCByZWZzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIHJlZnNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZWZzLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xuICAgICAgZmlsbFJlZihyZWYsIG5vZGUpO1xuICAgIH0pO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdXBwb3J0UmVmKG5vZGVPckNvbXBvbmVudCkge1xuICB2YXIgX3R5cGUkcHJvdG90eXBlLCBfbm9kZU9yQ29tcG9uZW50JHByb3Q7XG5cbiAgdmFyIHR5cGUgPSAoMCwgX3JlYWN0SXMuaXNNZW1vKShub2RlT3JDb21wb25lbnQpID8gbm9kZU9yQ29tcG9uZW50LnR5cGUudHlwZSA6IG5vZGVPckNvbXBvbmVudC50eXBlOyAvLyBGdW5jdGlvbiBjb21wb25lbnQgbm9kZVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyAmJiAhKChfdHlwZSRwcm90b3R5cGUgPSB0eXBlLnByb3RvdHlwZSkgPT09IG51bGwgfHwgX3R5cGUkcHJvdG90eXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdHlwZSRwcm90b3R5cGUucmVuZGVyKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyBDbGFzcyBjb21wb25lbnRcblxuXG4gIGlmICh0eXBlb2Ygbm9kZU9yQ29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmICEoKF9ub2RlT3JDb21wb25lbnQkcHJvdCA9IG5vZGVPckNvbXBvbmVudC5wcm90b3R5cGUpID09PSBudWxsIHx8IF9ub2RlT3JDb21wb25lbnQkcHJvdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGVPckNvbXBvbmVudCRwcm90LnJlbmRlcikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbi8qIGVzbGludC1lbmFibGUgKi8iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfb2JqZWN0U3ByZWFkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMlwiKSk7XG5cbnZhciBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKSk7XG5cbnZhciBfdHlwZW9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfcmVmMyA9IHJlcXVpcmUoXCJyYy11dGlsL2xpYi9yZWZcIik7XG5cbnZhciBfdmFsdWVVdGlsID0gcmVxdWlyZShcIi4uL3V0aWxzL3ZhbHVlVXRpbFwiKTtcblxuZnVuY3Rpb24gaXNSZW5kZXJDZWxsKGRhdGEpIHtcbiAgcmV0dXJuIGRhdGEgJiYgKDAsIF90eXBlb2YyLmRlZmF1bHQpKGRhdGEpID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShkYXRhKSAmJiAhIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChkYXRhKTtcbn1cblxuZnVuY3Rpb24gaXNSZWZDb21wb25lbnQoY29tcG9uZW50KSB7XG4gIC8vIFN0cmluZyB0YWcgY29tcG9uZW50IGFsc28gc3VwcG9ydCByZWZcbiAgaWYgKHR5cGVvZiBjb21wb25lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gKDAsIF9yZWYzLnN1cHBvcnRSZWYpKGNvbXBvbmVudCk7XG59XG5cbmZ1bmN0aW9uIENlbGwoX3JlZiwgcmVmKSB7XG4gIHZhciBfY2xhc3NOYW1lcztcblxuICB2YXIgcHJlZml4Q2xzID0gX3JlZi5wcmVmaXhDbHMsXG4gICAgICBjbGFzc05hbWUgPSBfcmVmLmNsYXNzTmFtZSxcbiAgICAgIHJlY29yZCA9IF9yZWYucmVjb3JkLFxuICAgICAgaW5kZXggPSBfcmVmLmluZGV4LFxuICAgICAgZGF0YUluZGV4ID0gX3JlZi5kYXRhSW5kZXgsXG4gICAgICByZW5kZXIgPSBfcmVmLnJlbmRlcixcbiAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICAgIF9yZWYkY29tcG9uZW50ID0gX3JlZi5jb21wb25lbnQsXG4gICAgICBDb21wb25lbnQgPSBfcmVmJGNvbXBvbmVudCA9PT0gdm9pZCAwID8gJ3RkJyA6IF9yZWYkY29tcG9uZW50LFxuICAgICAgY29sU3BhbiA9IF9yZWYuY29sU3BhbixcbiAgICAgIHJvd1NwYW4gPSBfcmVmLnJvd1NwYW4sXG4gICAgICBmaXhMZWZ0ID0gX3JlZi5maXhMZWZ0LFxuICAgICAgZml4UmlnaHQgPSBfcmVmLmZpeFJpZ2h0LFxuICAgICAgZmlyc3RGaXhMZWZ0ID0gX3JlZi5maXJzdEZpeExlZnQsXG4gICAgICBsYXN0Rml4TGVmdCA9IF9yZWYubGFzdEZpeExlZnQsXG4gICAgICBmaXJzdEZpeFJpZ2h0ID0gX3JlZi5maXJzdEZpeFJpZ2h0LFxuICAgICAgbGFzdEZpeFJpZ2h0ID0gX3JlZi5sYXN0Rml4UmlnaHQsXG4gICAgICBhcHBlbmROb2RlID0gX3JlZi5hcHBlbmROb2RlLFxuICAgICAgX3JlZiRhZGRpdGlvbmFsUHJvcHMgPSBfcmVmLmFkZGl0aW9uYWxQcm9wcyxcbiAgICAgIGFkZGl0aW9uYWxQcm9wcyA9IF9yZWYkYWRkaXRpb25hbFByb3BzID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkYWRkaXRpb25hbFByb3BzLFxuICAgICAgZWxsaXBzaXMgPSBfcmVmLmVsbGlwc2lzLFxuICAgICAgYWxpZ24gPSBfcmVmLmFsaWduLFxuICAgICAgcm93VHlwZSA9IF9yZWYucm93VHlwZSxcbiAgICAgIGlzU3RpY2t5ID0gX3JlZi5pc1N0aWNreTtcbiAgdmFyIGNlbGxQcmVmaXhDbHMgPSBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNlbGxcIik7IC8vID09PT09PT09PT09PT09PT09PT09IENoaWxkIE5vZGUgPT09PT09PT09PT09PT09PT09PT1cblxuICB2YXIgY2VsbFByb3BzO1xuICB2YXIgY2hpbGROb2RlO1xuXG4gIGlmIChjaGlsZHJlbikge1xuICAgIGNoaWxkTm9kZSA9IGNoaWxkcmVuO1xuICB9IGVsc2Uge1xuICAgIHZhciB2YWx1ZSA9ICgwLCBfdmFsdWVVdGlsLmdldFBhdGhWYWx1ZSkocmVjb3JkLCBkYXRhSW5kZXgpOyAvLyBDdXN0b21pemUgcmVuZGVyIG5vZGVcblxuICAgIGNoaWxkTm9kZSA9IHZhbHVlO1xuXG4gICAgaWYgKHJlbmRlcikge1xuICAgICAgdmFyIHJlbmRlckRhdGEgPSByZW5kZXIodmFsdWUsIHJlY29yZCwgaW5kZXgpO1xuXG4gICAgICBpZiAoaXNSZW5kZXJDZWxsKHJlbmRlckRhdGEpKSB7XG4gICAgICAgIGNoaWxkTm9kZSA9IHJlbmRlckRhdGEuY2hpbGRyZW47XG4gICAgICAgIGNlbGxQcm9wcyA9IHJlbmRlckRhdGEucHJvcHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGlsZE5vZGUgPSByZW5kZXJEYXRhO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBOb3QgY3Jhc2ggaWYgZmluYWwgYGNoaWxkTm9kZWAgaXMgbm90IHZhbGlkYXRlIFJlYWN0Tm9kZVxuXG5cbiAgaWYgKCgwLCBfdHlwZW9mMi5kZWZhdWx0KShjaGlsZE5vZGUpID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShjaGlsZE5vZGUpICYmICEgLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkTm9kZSkpIHtcbiAgICBjaGlsZE5vZGUgPSBudWxsO1xuICB9XG5cbiAgaWYgKGVsbGlwc2lzICYmIChsYXN0Rml4TGVmdCB8fCBmaXJzdEZpeFJpZ2h0KSkge1xuICAgIGNoaWxkTm9kZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KGNlbGxQcmVmaXhDbHMsIFwiLWNvbnRlbnRcIilcbiAgICB9LCBjaGlsZE5vZGUpO1xuICB9XG5cbiAgdmFyIF9yZWYyID0gY2VsbFByb3BzIHx8IHt9LFxuICAgICAgY2VsbENvbFNwYW4gPSBfcmVmMi5jb2xTcGFuLFxuICAgICAgY2VsbFJvd1NwYW4gPSBfcmVmMi5yb3dTcGFuLFxuICAgICAgY2VsbFN0eWxlID0gX3JlZjIuc3R5bGUsXG4gICAgICBjZWxsQ2xhc3NOYW1lID0gX3JlZjIuY2xhc3NOYW1lLFxuICAgICAgcmVzdENlbGxQcm9wcyA9ICgwLCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyLmRlZmF1bHQpKF9yZWYyLCBbXCJjb2xTcGFuXCIsIFwicm93U3BhblwiLCBcInN0eWxlXCIsIFwiY2xhc3NOYW1lXCJdKTtcblxuICB2YXIgbWVyZ2VkQ29sU3BhbiA9IGNlbGxDb2xTcGFuICE9PSB1bmRlZmluZWQgPyBjZWxsQ29sU3BhbiA6IGNvbFNwYW47XG4gIHZhciBtZXJnZWRSb3dTcGFuID0gY2VsbFJvd1NwYW4gIT09IHVuZGVmaW5lZCA/IGNlbGxSb3dTcGFuIDogcm93U3BhbjtcblxuICBpZiAobWVyZ2VkQ29sU3BhbiA9PT0gMCB8fCBtZXJnZWRSb3dTcGFuID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gPT09PT09PT09PT09PT09PT09PT09PSBGaXhlZCA9PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbiAgdmFyIGZpeGVkU3R5bGUgPSB7fTtcbiAgdmFyIGlzRml4TGVmdCA9IHR5cGVvZiBmaXhMZWZ0ID09PSAnbnVtYmVyJztcbiAgdmFyIGlzRml4UmlnaHQgPSB0eXBlb2YgZml4UmlnaHQgPT09ICdudW1iZXInO1xuXG4gIGlmIChpc0ZpeExlZnQpIHtcbiAgICBmaXhlZFN0eWxlLnBvc2l0aW9uID0gJ3N0aWNreSc7XG4gICAgZml4ZWRTdHlsZS5sZWZ0ID0gZml4TGVmdDtcbiAgfVxuXG4gIGlmIChpc0ZpeFJpZ2h0KSB7XG4gICAgZml4ZWRTdHlsZS5wb3NpdGlvbiA9ICdzdGlja3knO1xuICAgIGZpeGVkU3R5bGUucmlnaHQgPSBmaXhSaWdodDtcbiAgfSAvLyA9PT09PT09PT09PT09PT09PT09PT09IEFsaWduID09PT09PT09PT09PT09PT09PT09PT09XG5cblxuICB2YXIgYWxpZ25TdHlsZSA9IHt9O1xuXG4gIGlmIChhbGlnbikge1xuICAgIGFsaWduU3R5bGUudGV4dEFsaWduID0gYWxpZ247XG4gIH0gLy8gPT09PT09PT09PT09PT09PT09PT09PSBSZW5kZXIgPT09PT09PT09PT09PT09PT09PT09PVxuXG5cbiAgdmFyIHRpdGxlO1xuICB2YXIgZWxsaXBzaXNDb25maWcgPSBlbGxpcHNpcyA9PT0gdHJ1ZSA/IHtcbiAgICBzaG93VGl0bGU6IHRydWVcbiAgfSA6IGVsbGlwc2lzO1xuXG4gIGlmIChlbGxpcHNpc0NvbmZpZyAmJiAoZWxsaXBzaXNDb25maWcuc2hvd1RpdGxlIHx8IHJvd1R5cGUgPT09ICdoZWFkZXInKSkge1xuICAgIGlmICh0eXBlb2YgY2hpbGROb2RlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY2hpbGROb2RlID09PSAnbnVtYmVyJykge1xuICAgICAgdGl0bGUgPSBjaGlsZE5vZGUudG9TdHJpbmcoKTtcbiAgICB9IGVsc2UgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGROb2RlKSAmJiB0eXBlb2YgY2hpbGROb2RlLnByb3BzLmNoaWxkcmVuID09PSAnc3RyaW5nJykge1xuICAgICAgdGl0bGUgPSBjaGlsZE5vZGUucHJvcHMuY2hpbGRyZW47XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbXBvbmVudFByb3BzID0gKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKCgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSgoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoe1xuICAgIHRpdGxlOiB0aXRsZVxuICB9LCByZXN0Q2VsbFByb3BzKSwgYWRkaXRpb25hbFByb3BzKSwge30sIHtcbiAgICBjb2xTcGFuOiBtZXJnZWRDb2xTcGFuICYmIG1lcmdlZENvbFNwYW4gIT09IDEgPyBtZXJnZWRDb2xTcGFuIDogbnVsbCxcbiAgICByb3dTcGFuOiBtZXJnZWRSb3dTcGFuICYmIG1lcmdlZFJvd1NwYW4gIT09IDEgPyBtZXJnZWRSb3dTcGFuIDogbnVsbCxcbiAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lcy5kZWZhdWx0KShjZWxsUHJlZml4Q2xzLCBjbGFzc05hbWUsIChfY2xhc3NOYW1lcyA9IHt9LCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQoY2VsbFByZWZpeENscywgXCItZml4LWxlZnRcIiksIGlzRml4TGVmdCksICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChjZWxsUHJlZml4Q2xzLCBcIi1maXgtbGVmdC1maXJzdFwiKSwgZmlyc3RGaXhMZWZ0KSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KGNlbGxQcmVmaXhDbHMsIFwiLWZpeC1sZWZ0LWxhc3RcIiksIGxhc3RGaXhMZWZ0KSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KGNlbGxQcmVmaXhDbHMsIFwiLWZpeC1yaWdodFwiKSwgaXNGaXhSaWdodCksICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChjZWxsUHJlZml4Q2xzLCBcIi1maXgtcmlnaHQtZmlyc3RcIiksIGZpcnN0Rml4UmlnaHQpLCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQoY2VsbFByZWZpeENscywgXCItZml4LXJpZ2h0LWxhc3RcIiksIGxhc3RGaXhSaWdodCksICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChjZWxsUHJlZml4Q2xzLCBcIi1lbGxpcHNpc1wiKSwgZWxsaXBzaXMpLCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQoY2VsbFByZWZpeENscywgXCItd2l0aC1hcHBlbmRcIiksIGFwcGVuZE5vZGUpLCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQoY2VsbFByZWZpeENscywgXCItZml4LXN0aWNreVwiKSwgKGlzRml4TGVmdCB8fCBpc0ZpeFJpZ2h0KSAmJiBpc1N0aWNreSksIF9jbGFzc05hbWVzKSwgYWRkaXRpb25hbFByb3BzLmNsYXNzTmFtZSwgY2VsbENsYXNzTmFtZSksXG4gICAgc3R5bGU6ICgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSgoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKCgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSh7fSwgYWRkaXRpb25hbFByb3BzLnN0eWxlKSwgYWxpZ25TdHlsZSksIGZpeGVkU3R5bGUpLCBjZWxsU3R5bGUpLFxuICAgIHJlZjogaXNSZWZDb21wb25lbnQoQ29tcG9uZW50KSA/IHJlZiA6IG51bGxcbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIGNvbXBvbmVudFByb3BzLCBhcHBlbmROb2RlLCBjaGlsZE5vZGUpO1xufVxuXG52YXIgUmVmQ2VsbCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKENlbGwpO1xuUmVmQ2VsbC5kaXNwbGF5TmFtZSA9ICdDZWxsJztcbnZhciBNZW1vQ2VsbCA9IC8qI19fUFVSRV9fKi9SZWFjdC5tZW1vKFJlZkNlbGwsIGZ1bmN0aW9uIChwcmV2LCBuZXh0KSB7XG4gIGlmIChuZXh0LnNob3VsZENlbGxVcGRhdGUpIHtcbiAgICByZXR1cm4gIW5leHQuc2hvdWxkQ2VsbFVwZGF0ZShuZXh0LnJlY29yZCwgcHJldi5yZWNvcmQpO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufSk7XG52YXIgX2RlZmF1bHQgPSBNZW1vQ2VsbDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnR1cGxlTnVtID0gZXhwb3J0cy50dXBsZSA9IHZvaWQgMDtcblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDYxNzYxNjUvd2F5cy10by1nZXQtc3RyaW5nLWxpdGVyYWwtdHlwZS1vZi1hcnJheS12YWx1ZXMtd2l0aG91dC1lbnVtLW92ZXJoZWFkXG52YXIgdHVwbGUgPSBmdW5jdGlvbiB0dXBsZSgpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBhcmdzO1xufTtcblxuZXhwb3J0cy50dXBsZSA9IHR1cGxlO1xuXG52YXIgdHVwbGVOdW0gPSBmdW5jdGlvbiB0dXBsZU51bSgpIHtcbiAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICB9XG5cbiAgcmV0dXJuIGFyZ3M7XG59O1xuXG5leHBvcnRzLnR1cGxlTnVtID0gdHVwbGVOdW07IiwidmFyIGxpc3RDYWNoZUNsZWFyID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlQ2xlYXInKSxcbiAgICBsaXN0Q2FjaGVEZWxldGUgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVEZWxldGUnKSxcbiAgICBsaXN0Q2FjaGVHZXQgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVHZXQnKSxcbiAgICBsaXN0Q2FjaGVIYXMgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVIYXMnKSxcbiAgICBsaXN0Q2FjaGVTZXQgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbkxpc3RDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBsaXN0Q2FjaGVDbGVhcjtcbkxpc3RDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbGlzdENhY2hlRGVsZXRlO1xuTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmhhcyA9IGxpc3RDYWNoZUhhcztcbkxpc3RDYWNoZS5wcm90b3R5cGUuc2V0ID0gbGlzdENhY2hlU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExpc3RDYWNoZTtcbiIsInZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YCBvZiBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NvY0luZGV4T2Y7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlQ3JlYXRlO1xuIiwidmFyIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByZWZlcmVuY2Uga2V5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICovXG5mdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCwga2V5KSB7XG4gIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgIDogZGF0YS5tYXA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWFwRGF0YTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXk7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlQ3JlYXRlO1xuIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBga2V5YCBpcyBmb3VuZCBpbiBgYXJyYXlgIG9mIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc29jSW5kZXhPZjtcbiIsInZhciBpc0tleWFibGUgPSByZXF1aXJlKCcuL19pc0tleWFibGUnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICB2YXIgZGF0YSA9IG1hcC5fX2RhdGFfXztcbiAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICA6IGRhdGEubWFwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE1hcERhdGE7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9pdGVyYXRvciA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvclwiKTtcblxudmFyIF9pdGVyYXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pdGVyYXRvcik7XG5cbnZhciBfc3ltYm9sID0gcmVxdWlyZShcIi4uL2NvcmUtanMvc3ltYm9sXCIpO1xuXG52YXIgX3N5bWJvbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zeW1ib2wpO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIF9pdGVyYXRvcjIuZGVmYXVsdCA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IF9zeW1ib2wyLmRlZmF1bHQgJiYgb2JqICE9PSBfc3ltYm9sMi5kZWZhdWx0LnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIF90eXBlb2YoX2l0ZXJhdG9yMi5kZWZhdWx0KSA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwidW5kZWZpbmVkXCIgPyBcInVuZGVmaW5lZFwiIDogX3R5cGVvZihvYmopO1xufSA6IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmogPT09IFwidW5kZWZpbmVkXCIgPyBcInVuZGVmaW5lZFwiIDogX3R5cGVvZihvYmopO1xufTsiLCIvKiBnbG9iYWxzIHdwbWxfd2l6YXJkLCBXUE1MX2NvcmUgKi9cbmltcG9ydCB7dXNlRmV0Y2h9IGZyb20gXCJAYmpvcm5hZ2gvdXNlLWZldGNoXCI7XG5pbXBvcnQge2N1cnJ5TiwgZmxpcH0gZnJvbSBcInJhbWRhXCI7XG5pbXBvcnQgcXVlcnlTdHJpbmcgZnJvbSBcInF1ZXJ5LXN0cmluZ1wiO1xuXG5nbG9iYWwuV1BNTF9jb3JlID0gZ2xvYmFsLldQTUxfY29yZSB8fCB7fTtcbldQTUxfY29yZS5hamF4SW5Qcm9ncmVzcyA9IDA7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVBamF4ID0gKHtcblx0XHRcdFx0XHRcdFx0ICAgbWV0aG9kID0gXCJQT1NUXCIsXG5cdFx0XHRcdFx0XHRcdCAgIGNvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCdcblx0XHRcdFx0XHRcdCAgIH0gPSB7fSkgPT4gdXNlRmV0Y2goe1xuXHR1cmw6IGFqYXh1cmwsXG5cdG1ldGhvZCxcblx0aW5pdDoge1xuXHRcdGhlYWRlcnM6IHtcblx0XHRcdCdDb250ZW50LVR5cGUnOiBjb250ZW50VHlwZVxuXHRcdH1cblx0fVxufSk7XG5cbmV4cG9ydCBjb25zdCBkb0FqYXggPSAocGF5bG9hZCwge1xuXHRtZXRob2QgPSBcIlBPU1RcIixcblx0Y29udGVudFR5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04J1xufSA9IHt9KSA9PiB7XG5cdFdQTUxfY29yZS5hamF4SW5Qcm9ncmVzcysrO1xuXG5cdHJldHVybiBmZXRjaChhamF4dXJsLCB7XG5cdFx0bWV0aG9kLFxuXHRcdGhlYWRlcnM6IHtcblx0XHRcdCdDb250ZW50LVR5cGUnOiBjb250ZW50VHlwZVxuXHRcdH0sXG5cdFx0Y3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbicsXG5cdFx0Ym9keTogc3RyaW5naWZ5KHBheWxvYWQpLFxuXHR9KVxuXHRcdC50aGVuKGFzeW5jIHJlcyA9PiB7XG5cdFx0XHRpZiAocmVzLm9rKSB7XG5cdFx0XHRcdGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuanNvbigpO1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdC4uLnJlcyxcblx0XHRcdFx0XHRkYXRhLFxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdC4uLnJlcyxcblx0XHRcdFx0ZGF0YToge1xuXHRcdFx0XHRcdHN1Y2Nlc3M6IGZhbHNlLFxuXHRcdFx0XHRcdGRhdGE6IHtcblx0XHRcdFx0XHRcdHR5cGU6ICdhamF4RXJyb3InLFxuXHRcdFx0XHRcdFx0bWVzc2FnZTogcmVzLnN0YXR1c1RleHQsXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH0pXG5cdFx0LmZpbmFsbHkoKCkgPT4ge1xuXHRcdFx0V1BNTF9jb3JlLmFqYXhJblByb2dyZXNzLS07XG5cdFx0fSk7XG59XG5cbmV4cG9ydCBjb25zdCBjYWxsRW5kcG9pbnQgPSBjdXJyeU4oMiwgKHtub25jZSwgZW5kcG9pbnR9LCBkYXRhKSA9PiBkb0FqYXgoYnVpbGRBamF4UGF5bG9hZChub25jZSwgZW5kcG9pbnQsIGRhdGEpKSk7XG5cbmV4cG9ydCBjb25zdCBkb1JlcXVlc3RHRVQgPSAodXJsLCApID0+IHtcblx0V1BNTF9jb3JlLmFqYXhJblByb2dyZXNzKys7XG5cblx0cmV0dXJuIGZldGNoKHVybCwge21ldGhvZDogJ0dFVCcgfSkuXG5cdFx0dGhlbihyZXMgPT4gKFxuXHRcdFx0e1xuXHRcdFx0XHQuLi5yZXMsXG5cdFx0XHRcdHN1Y2Nlc3M6IHRydWUsXG5cdFx0XHRcdGRhdGE6IEpTT04ucGFyc2UoIHJlcy5fYm9keVRleHQgKSxcblx0XHRcdH1cblx0XHQpKS5cblx0XHRjYXRjaChlcnIgPT4gKFxuXHRcdFx0eyBzdWNjZXNzOiBmYWxzZSwgfVxuXHRcdCkpLlxuXHRcdGZpbmFsbHkoKCkgPT4ge1xuXHRcdFx0V1BNTF9jb3JlLmFqYXhJblByb2dyZXNzIC0tO1xuXHRcdH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkQWpheFBheWxvYWQgPSAobm9uY2UsIGVuZHBvaW50LCBkYXRhKSA9PiAoe1xuXHRhY3Rpb246ICd3cG1sX2FjdGlvbicsXG5cdG5vbmNlLFxuXHRlbmRwb2ludCxcblx0ZGF0YTogSlNPTi5zdHJpbmdpZnkoZGF0YSlcbn0pO1xuXG5leHBvcnQgY29uc3Qgc3RyaW5naWZ5ID0gZmxpcChxdWVyeVN0cmluZy5zdHJpbmdpZnkpKHthcnJheUZvcm1hdDogJ2JyYWNrZXQnfSk7XG5cbmV4cG9ydCBjb25zdCBidWlsZFBheWxvYWQgPSBjdXJyeU4oMywgKG5vbmNlLCBlbmRwb2ludCwgZGF0YSkgPT4gKFxuXHRcdHtcblx0XHRcdGJvZHk6IHN0cmluZ2lmeSh7XG5cdFx0XHRcdGFjdGlvbjogJ3dwbWxfYWN0aW9uJyxcblx0XHRcdFx0bm9uY2UsXG5cdFx0XHRcdGVuZHBvaW50LFxuXHRcdFx0XHRkYXRhOiBKU09OLnN0cmluZ2lmeShkYXRhKVxuXHRcdFx0fSlcblx0XHR9XG5cdClcbik7XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHtcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlcltcIkBAaXRlcmF0b3JcIl0gIT0gbnVsbCkgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59IiwiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIGlmICghZWxlbWVudCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChlbGVtZW50Lm9mZnNldFBhcmVudCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGVsZW1lbnQuZ2V0QkJveCkge1xuICAgIHZhciBib3ggPSBlbGVtZW50LmdldEJCb3goKTtcblxuICAgIGlmIChib3gud2lkdGggfHwgYm94LmhlaWdodCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSB7XG4gICAgdmFyIF9ib3ggPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgaWYgKF9ib3gud2lkdGggfHwgX2JveC5oZWlnaHQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn0pOyIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2FuVXNlRG9tKCkge1xuICByZXR1cm4gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbn0iLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKCkge1xuICBpZiAodHlwZW9mIG5hdmlnYXRvciA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgYWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50IHx8IG5hdmlnYXRvci52ZW5kb3IgfHwgd2luZG93Lm9wZXJhO1xuXG4gIGlmICgvKGFuZHJvaWR8YmJcXGQrfG1lZWdvKS4rbW9iaWxlfGF2YW50Z298YmFkYVxcL3xibGFja2JlcnJ5fGJsYXplcnxjb21wYWx8ZWxhaW5lfGZlbm5lY3xoaXB0b3B8aWVtb2JpbGV8aXAoaG9uZXxvZCl8aXJpc3xraW5kbGV8bGdlIHxtYWVtb3xtaWRwfG1tcHxtb2JpbGUuK2ZpcmVmb3h8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXFwvfHBsdWNrZXJ8cG9ja2V0fHBzcHxzZXJpZXMoNHw2KTB8c3ltYmlhbnx0cmVvfHVwXFwuKGJyb3dzZXJ8bGluayl8dm9kYWZvbmV8d2FwfHdpbmRvd3MgY2V8eGRhfHhpaW5vfGFuZHJvaWR8aXBhZHxwbGF5Ym9va3xzaWxrL2kudGVzdChhZ2VudCkgfHwgLzEyMDd8NjMxMHw2NTkwfDNnc298NHRocHw1MFsxLTZdaXw3NzBzfDgwMnN8YSB3YXxhYmFjfGFjKGVyfG9vfHMtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfC1tfHIgfHMgKXxhdmFufGJlKGNrfGxsfG5xKXxiaShsYnxyZCl8YmwoYWN8YXopfGJyKGV8dil3fGJ1bWJ8YnctKG58dSl8YzU1XFwvfGNhcGl8Y2N3YXxjZG0tfGNlbGx8Y2h0bXxjbGRjfGNtZC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGMtc3xkZXZpfGRpY2F8ZG1vYnxkbyhjfHApb3xkcygxMnwtZCl8ZWwoNDl8YWkpfGVtKGwyfHVsKXxlcihpY3xrMCl8ZXNsOHxleihbNC03XTB8b3N8d2F8emUpfGZldGN8Zmx5KC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2YtNXxnLW1vfGdvKFxcLnd8b2QpfGdyKGFkfHVuKXxoYWllfGhjaXR8aGQtKG18cHx0KXxoZWktfGhpKHB0fHRhKXxocCggaXxpcCl8aHMtY3xodChjKC18IHxffGF8Z3xwfHN8dCl8dHApfGh1KGF3fHRjKXxpLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHwtfFxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcXC8pfGtsb258a3B0IHxrd2MtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcXC8oa3xsfHUpfDUwfDU0fC1bYS13XSl8bGlid3xseW54fG0xLXd8bTNnYXxtNTBcXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtLWNyfG1lKHJjfHJpKXxtaShvOHxvYXx0cyl8bW1lZnxtbygwMXwwMnxiaXxkZXxkb3x0KC18IHxvfHYpfHp6KXxtdCg1MHxwMXx2ICl8bXdicHxteXdhfG4xMFswLTJdfG4yMFsyLTNdfG4zMCgwfDIpfG41MCgwfDJ8NSl8bjcoMCgwfDEpfDEwKXxuZSgoY3xtKS18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfC0oWzEtOF18YykpfHBoaWx8cGlyZXxwbChheXx1Yyl8cG4tMnxwbyhja3xydHxzZSl8cHJveHxwc2lvfHB0LWd8cWEtYXxxYygwN3wxMnwyMXwzMnw2MHwtWzItN118aS0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XFwvfHNhKGdlfG1hfG1tfG1zfG55fHZhKXxzYygwMXxoLXxvb3xwLSl8c2RrXFwvfHNlKGMoLXwwfDEpfDQ3fG1jfG5kfHJpKXxzZ2gtfHNoYXJ8c2llKC18bSl8c2stMHxzbCg0NXxpZCl8c20oYWx8YXJ8YjN8aXR8dDUpfHNvKGZ0fG55KXxzcCgwMXxoLXx2LXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbC18dGRnLXx0ZWwoaXxtKXx0aW0tfHQtbW98dG8ocGx8c2gpfHRzKDcwfG0tfG0zfG01KXx0eC05fHVwKFxcLmJ8ZzF8c2kpfHV0c3R8djQwMHx2NzUwfHZlcml8dmkocmd8dGUpfHZrKDQwfDVbMC0zXXwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYygtfCApfHdlYmN8d2hpdHx3aShnIHxuY3xudyl8d21sYnx3b251fHg3MDB8eWFzLXx5b3VyfHpldG98enRlLS9pLnRlc3QoYWdlbnQgPT09IG51bGwgfHwgYWdlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFnZW50LnN1YnN0cigwLCA0KSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn0pOyIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuIiwiLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIDcuMS40IFRvSW50ZWdlclxudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzTmFOKGl0ID0gK2l0KSA/IDAgOiAoaXQgPiAwID8gZmxvb3IgOiBjZWlsKShpdCk7XG59O1xuIiwidmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCdrZXlzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIHNoYXJlZFtrZXldIHx8IChzaGFyZWRba2V5XSA9IHVpZChrZXkpKTtcbn07XG4iLCJ2YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246IGNvcmUudmVyc2lvbixcbiAgbW9kZTogcmVxdWlyZSgnLi9fbGlicmFyeScpID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMjAgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcbiIsIi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gKFxuICAnY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mJ1xuKS5zcGxpdCgnLCcpO1xuIiwiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsIi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZFBzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnaWZyYW1lJyk7XG4gIHZhciBpID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB2YXIgbHQgPSAnPCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgcmVxdWlyZSgnLi9faHRtbCcpLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZS5zcmMgPSAnamF2YXNjcmlwdDonOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNjcmlwdC11cmxcbiAgLy8gY3JlYXRlRGljdCA9IGlmcmFtZS5jb250ZW50V2luZG93Lk9iamVjdDtcbiAgLy8gaHRtbC5yZW1vdmVDaGlsZChpZnJhbWUpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgJ3NjcmlwdCcgKyBndCArICdkb2N1bWVudC5GPU9iamVjdCcgKyBsdCArICcvc2NyaXB0JyArIGd0KTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgY3JlYXRlRGljdCA9IGlmcmFtZURvY3VtZW50LkY7XG4gIHdoaWxlIChpLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRQcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcbiIsInZhciBkZWYgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgdGFnLCBzdGF0KSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gc3RhdCA/IGl0IDogaXQucHJvdG90eXBlLCBUQUcpKSBkZWYoaXQsIFRBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiB0YWcgfSk7XG59O1xuIiwiZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fd2tzJyk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciAkU3ltYm9sID0gY29yZS5TeW1ib2wgfHwgKGNvcmUuU3ltYm9sID0gTElCUkFSWSA/IHt9IDogZ2xvYmFsLlN5bWJvbCB8fCB7fSk7XG4gIGlmIChuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKSBkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7IHZhbHVlOiB3a3NFeHQuZihuYW1lKSB9KTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRpZiAoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcblx0XHRtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24oKSB7fTtcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XG5cdH1cblx0cmV0dXJuIG1vZHVsZTtcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuY2hhbmdlQ29uZmlybUxvY2FsZSA9IGNoYW5nZUNvbmZpcm1Mb2NhbGU7XG5leHBvcnRzLmdldENvbmZpcm1Mb2NhbGUgPSBnZXRDb25maXJtTG9jYWxlO1xuXG52YXIgX2RlZmF1bHQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9sb2NhbGUvZGVmYXVsdFwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG52YXIgcnVudGltZUxvY2FsZSA9IF9leHRlbmRzKHt9LCBfZGVmYXVsdFtcImRlZmF1bHRcIl0uTW9kYWwpO1xuXG5mdW5jdGlvbiBjaGFuZ2VDb25maXJtTG9jYWxlKG5ld0xvY2FsZSkge1xuICBpZiAobmV3TG9jYWxlKSB7XG4gICAgcnVudGltZUxvY2FsZSA9IF9leHRlbmRzKF9leHRlbmRzKHt9LCBydW50aW1lTG9jYWxlKSwgbmV3TG9jYWxlKTtcbiAgfSBlbHNlIHtcbiAgICBydW50aW1lTG9jYWxlID0gX2V4dGVuZHMoe30sIF9kZWZhdWx0W1wiZGVmYXVsdFwiXS5Nb2RhbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Q29uZmlybUxvY2FsZSgpIHtcbiAgcmV0dXJuIHJ1bnRpbWVMb2NhbGU7XG59IiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBfaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG5cbnZhciBfaW1wbGVtZW50YXRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW1wbGVtZW50YXRpb24pO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlQ29udGV4dCB8fCBfaW1wbGVtZW50YXRpb24yLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTaW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2FsXG4gKiBwYXRocy4gUmVtb3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBrZWVwIHRoZVxuICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuXG4gKi9cblxudmFyIF9fREVWX18gPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nO1xuXG52YXIgd2FybmluZyA9IGZ1bmN0aW9uKCkge307XG5cbmlmIChfX0RFVl9fKSB7XG4gIHZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbiBwcmludFdhcm5pbmcoZm9ybWF0LCBhcmdzKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgYXJncyA9IG5ldyBBcnJheShsZW4gPiAxID8gbGVuIC0gMSA6IDApO1xuICAgIGZvciAodmFyIGtleSA9IDE7IGtleSA8IGxlbjsga2V5KyspIHtcbiAgICAgIGFyZ3Nba2V5IC0gMV0gPSBhcmd1bWVudHNba2V5XTtcbiAgICB9XG4gICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICtcbiAgICAgIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgICB9KTtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNoICh4KSB7fVxuICB9XG5cbiAgd2FybmluZyA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgZm9ybWF0LCBhcmdzKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgYXJncyA9IG5ldyBBcnJheShsZW4gPiAyID8gbGVuIC0gMiA6IDApO1xuICAgIGZvciAodmFyIGtleSA9IDI7IGtleSA8IGxlbjsga2V5KyspIHtcbiAgICAgIGFyZ3Nba2V5IC0gMl0gPSBhcmd1bWVudHNba2V5XTtcbiAgICB9XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ2B3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgK1xuICAgICAgICAgICdtZXNzYWdlIGFyZ3VtZW50J1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgIHByaW50V2FybmluZy5hcHBseShudWxsLCBbZm9ybWF0XS5jb25jYXQoYXJncykpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3YXJuaW5nO1xuIiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheTtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmdldEV4cGFuZGFibGVQcm9wcyA9IGdldEV4cGFuZGFibGVQcm9wcztcbmV4cG9ydHMuZ2V0RGF0YUFuZEFyaWFQcm9wcyA9IGdldERhdGFBbmRBcmlhUHJvcHM7XG5leHBvcnRzLklOVEVSTkFMX0NPTF9ERUZJTkUgPSB2b2lkIDA7XG5cbnZhciBfb2JqZWN0U3ByZWFkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMlwiKSk7XG5cbnZhciBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKSk7XG5cbnZhciBfd2FybmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXV0aWwvbGliL3dhcm5pbmdcIikpO1xuXG52YXIgSU5URVJOQUxfQ09MX0RFRklORSA9ICdSQ19UQUJMRV9JTlRFUk5BTF9DT0xfREVGSU5FJztcbmV4cG9ydHMuSU5URVJOQUxfQ09MX0RFRklORSA9IElOVEVSTkFMX0NPTF9ERUZJTkU7XG5cbmZ1bmN0aW9uIGdldEV4cGFuZGFibGVQcm9wcyhwcm9wcykge1xuICB2YXIgZXhwYW5kYWJsZSA9IHByb3BzLmV4cGFuZGFibGUsXG4gICAgICBsZWdhY3lFeHBhbmRhYmxlQ29uZmlnID0gKDAsIF9vYmplY3RXaXRob3V0UHJvcGVydGllczIuZGVmYXVsdCkocHJvcHMsIFtcImV4cGFuZGFibGVcIl0pO1xuXG4gIGlmICgnZXhwYW5kYWJsZScgaW4gcHJvcHMpIHtcbiAgICByZXR1cm4gKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKCgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSh7fSwgbGVnYWN5RXhwYW5kYWJsZUNvbmZpZyksIGV4cGFuZGFibGUpO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgWydpbmRlbnRTaXplJywgJ2V4cGFuZGVkUm93S2V5cycsICdkZWZhdWx0RXhwYW5kZWRSb3dLZXlzJywgJ2RlZmF1bHRFeHBhbmRBbGxSb3dzJywgJ2V4cGFuZGVkUm93UmVuZGVyJywgJ2V4cGFuZFJvd0J5Q2xpY2snLCAnZXhwYW5kSWNvbicsICdvbkV4cGFuZCcsICdvbkV4cGFuZGVkUm93c0NoYW5nZScsICdleHBhbmRlZFJvd0NsYXNzTmFtZScsICdleHBhbmRJY29uQ29sdW1uSW5kZXgnXS5zb21lKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgcmV0dXJuIHByb3AgaW4gcHJvcHM7XG4gIH0pKSB7XG4gICAgKDAsIF93YXJuaW5nLmRlZmF1bHQpKGZhbHNlLCAnZXhwYW5kZWQgcmVsYXRlZCBwcm9wcyBoYXZlIGJlZW4gbW92ZWQgaW50byBgZXhwYW5kYWJsZWAuJyk7XG4gIH1cblxuICByZXR1cm4gbGVnYWN5RXhwYW5kYWJsZUNvbmZpZztcbn1cbi8qKlxuICogUmV0dXJucyBvbmx5IGRhdGEtIGFuZCBhcmlhLSBrZXkvdmFsdWUgcGFpcnNcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICovXG5cblxuZnVuY3Rpb24gZ2V0RGF0YUFuZEFyaWFQcm9wcyhwcm9wcykge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuICByZXR1cm4gT2JqZWN0LmtleXMocHJvcHMpLnJlZHVjZShmdW5jdGlvbiAobWVtbywga2V5KSB7XG4gICAgaWYgKGtleS5zdWJzdHIoMCwgNSkgPT09ICdkYXRhLScgfHwga2V5LnN1YnN0cigwLCA1KSA9PT0gJ2FyaWEtJykge1xuICAgICAgbWVtb1trZXldID0gcHJvcHNba2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtbztcbiAgfSwge30pO1xuICAvKiBlc2xpbnQtZW5hYmxlICovXG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlV2lsZGNhcmRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBCb2R5Q29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xudmFyIF9kZWZhdWx0ID0gQm9keUNvbnRleHQ7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB0b0FycmF5O1xuXG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX3JlYWN0SXMgPSByZXF1aXJlKFwicmVhY3QtaXNcIik7XG5cbmZ1bmN0aW9uIHRvQXJyYXkoY2hpbGRyZW4pIHtcbiAgdmFyIG9wdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gIHZhciByZXQgPSBbXTtcblxuICBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICBpZiAoKGNoaWxkID09PSB1bmRlZmluZWQgfHwgY2hpbGQgPT09IG51bGwpICYmICFvcHRpb24ua2VlcEVtcHR5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGQpKSB7XG4gICAgICByZXQgPSByZXQuY29uY2F0KHRvQXJyYXkoY2hpbGQpKTtcbiAgICB9IGVsc2UgaWYgKCgwLCBfcmVhY3RJcy5pc0ZyYWdtZW50KShjaGlsZCkgJiYgY2hpbGQucHJvcHMpIHtcbiAgICAgIHJldCA9IHJldC5jb25jYXQodG9BcnJheShjaGlsZC5wcm9wcy5jaGlsZHJlbiwgb3B0aW9uKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldC5wdXNoKGNoaWxkKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXQ7XG59IiwiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7XG4gIGlmIChzZWxmID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIH1cblxuICByZXR1cm4gc2VsZjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW1ib2w7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcblxudmFyIEljb25Db250ZXh0ID0gLyojX19QVVJFX18qLygwLCBfcmVhY3QuY3JlYXRlQ29udGV4dCkoe30pO1xudmFyIF9kZWZhdWx0ID0gSWNvbkNvbnRleHQ7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9lbl9VUyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXBhZ2luYXRpb24vbGliL2xvY2FsZS9lbl9VU1wiKSk7XG5cbnZhciBfZW5fVVMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZGF0ZS1waWNrZXIvbG9jYWxlL2VuX1VTXCIpKTtcblxudmFyIF9lbl9VUzMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi90aW1lLXBpY2tlci9sb2NhbGUvZW5fVVNcIikpO1xuXG52YXIgX2VuX1VTNCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2NhbGVuZGFyL2xvY2FsZS9lbl9VU1wiKSk7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZyAqL1xudmFyIHR5cGVUZW1wbGF0ZSA9ICcke2xhYmVsfSBpcyBub3QgYSB2YWxpZCAke3R5cGV9JztcbnZhciBsb2NhbGVWYWx1ZXMgPSB7XG4gIGxvY2FsZTogJ2VuJyxcbiAgUGFnaW5hdGlvbjogX2VuX1VTW1wiZGVmYXVsdFwiXSxcbiAgRGF0ZVBpY2tlcjogX2VuX1VTMltcImRlZmF1bHRcIl0sXG4gIFRpbWVQaWNrZXI6IF9lbl9VUzNbXCJkZWZhdWx0XCJdLFxuICBDYWxlbmRhcjogX2VuX1VTNFtcImRlZmF1bHRcIl0sXG4gIGdsb2JhbDoge1xuICAgIHBsYWNlaG9sZGVyOiAnUGxlYXNlIHNlbGVjdCdcbiAgfSxcbiAgVGFibGU6IHtcbiAgICBmaWx0ZXJUaXRsZTogJ0ZpbHRlciBtZW51JyxcbiAgICBmaWx0ZXJDb25maXJtOiAnT0snLFxuICAgIGZpbHRlclJlc2V0OiAnUmVzZXQnLFxuICAgIGZpbHRlckVtcHR5VGV4dDogJ05vIGZpbHRlcnMnLFxuICAgIGVtcHR5VGV4dDogJ05vIGRhdGEnLFxuICAgIHNlbGVjdEFsbDogJ1NlbGVjdCBjdXJyZW50IHBhZ2UnLFxuICAgIHNlbGVjdEludmVydDogJ0ludmVydCBjdXJyZW50IHBhZ2UnLFxuICAgIHNlbGVjdE5vbmU6ICdDbGVhciBhbGwgZGF0YScsXG4gICAgc2VsZWN0aW9uQWxsOiAnU2VsZWN0IGFsbCBkYXRhJyxcbiAgICBzb3J0VGl0bGU6ICdTb3J0JyxcbiAgICBleHBhbmQ6ICdFeHBhbmQgcm93JyxcbiAgICBjb2xsYXBzZTogJ0NvbGxhcHNlIHJvdycsXG4gICAgdHJpZ2dlckRlc2M6ICdDbGljayB0byBzb3J0IGRlc2NlbmRpbmcnLFxuICAgIHRyaWdnZXJBc2M6ICdDbGljayB0byBzb3J0IGFzY2VuZGluZycsXG4gICAgY2FuY2VsU29ydDogJ0NsaWNrIHRvIGNhbmNlbCBzb3J0aW5nJ1xuICB9LFxuICBNb2RhbDoge1xuICAgIG9rVGV4dDogJ09LJyxcbiAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJyxcbiAgICBqdXN0T2tUZXh0OiAnT0snXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ0NhbmNlbCdcbiAgfSxcbiAgVHJhbnNmZXI6IHtcbiAgICB0aXRsZXM6IFsnJywgJyddLFxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIGhlcmUnLFxuICAgIGl0ZW1Vbml0OiAnaXRlbScsXG4gICAgaXRlbXNVbml0OiAnaXRlbXMnLFxuICAgIHJlbW92ZTogJ1JlbW92ZScsXG4gICAgc2VsZWN0Q3VycmVudDogJ1NlbGVjdCBjdXJyZW50IHBhZ2UnLFxuICAgIHJlbW92ZUN1cnJlbnQ6ICdSZW1vdmUgY3VycmVudCBwYWdlJyxcbiAgICBzZWxlY3RBbGw6ICdTZWxlY3QgYWxsIGRhdGEnLFxuICAgIHJlbW92ZUFsbDogJ1JlbW92ZSBhbGwgZGF0YScsXG4gICAgc2VsZWN0SW52ZXJ0OiAnSW52ZXJ0IGN1cnJlbnQgcGFnZSdcbiAgfSxcbiAgVXBsb2FkOiB7XG4gICAgdXBsb2FkaW5nOiAnVXBsb2FkaW5nLi4uJyxcbiAgICByZW1vdmVGaWxlOiAnUmVtb3ZlIGZpbGUnLFxuICAgIHVwbG9hZEVycm9yOiAnVXBsb2FkIGVycm9yJyxcbiAgICBwcmV2aWV3RmlsZTogJ1ByZXZpZXcgZmlsZScsXG4gICAgZG93bmxvYWRGaWxlOiAnRG93bmxvYWQgZmlsZSdcbiAgfSxcbiAgRW1wdHk6IHtcbiAgICBkZXNjcmlwdGlvbjogJ05vIERhdGEnXG4gIH0sXG4gIEljb246IHtcbiAgICBpY29uOiAnaWNvbidcbiAgfSxcbiAgVGV4dDoge1xuICAgIGVkaXQ6ICdFZGl0JyxcbiAgICBjb3B5OiAnQ29weScsXG4gICAgY29waWVkOiAnQ29waWVkJyxcbiAgICBleHBhbmQ6ICdFeHBhbmQnXG4gIH0sXG4gIFBhZ2VIZWFkZXI6IHtcbiAgICBiYWNrOiAnQmFjaydcbiAgfSxcbiAgRm9ybToge1xuICAgIG9wdGlvbmFsOiAnKG9wdGlvbmFsKScsXG4gICAgZGVmYXVsdFZhbGlkYXRlTWVzc2FnZXM6IHtcbiAgICAgIFwiZGVmYXVsdFwiOiAnRmllbGQgdmFsaWRhdGlvbiBlcnJvciBmb3IgJHtsYWJlbH0nLFxuICAgICAgcmVxdWlyZWQ6ICdQbGVhc2UgZW50ZXIgJHtsYWJlbH0nLFxuICAgICAgXCJlbnVtXCI6ICcke2xhYmVsfSBtdXN0IGJlIG9uZSBvZiBbJHtlbnVtfV0nLFxuICAgICAgd2hpdGVzcGFjZTogJyR7bGFiZWx9IGNhbm5vdCBiZSBhIGJsYW5rIGNoYXJhY3RlcicsXG4gICAgICBkYXRlOiB7XG4gICAgICAgIGZvcm1hdDogJyR7bGFiZWx9IGRhdGUgZm9ybWF0IGlzIGludmFsaWQnLFxuICAgICAgICBwYXJzZTogJyR7bGFiZWx9IGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBkYXRlJyxcbiAgICAgICAgaW52YWxpZDogJyR7bGFiZWx9IGlzIGFuIGludmFsaWQgZGF0ZSdcbiAgICAgIH0sXG4gICAgICB0eXBlczoge1xuICAgICAgICBzdHJpbmc6IHR5cGVUZW1wbGF0ZSxcbiAgICAgICAgbWV0aG9kOiB0eXBlVGVtcGxhdGUsXG4gICAgICAgIGFycmF5OiB0eXBlVGVtcGxhdGUsXG4gICAgICAgIG9iamVjdDogdHlwZVRlbXBsYXRlLFxuICAgICAgICBudW1iZXI6IHR5cGVUZW1wbGF0ZSxcbiAgICAgICAgZGF0ZTogdHlwZVRlbXBsYXRlLFxuICAgICAgICBcImJvb2xlYW5cIjogdHlwZVRlbXBsYXRlLFxuICAgICAgICBpbnRlZ2VyOiB0eXBlVGVtcGxhdGUsXG4gICAgICAgIFwiZmxvYXRcIjogdHlwZVRlbXBsYXRlLFxuICAgICAgICByZWdleHA6IHR5cGVUZW1wbGF0ZSxcbiAgICAgICAgZW1haWw6IHR5cGVUZW1wbGF0ZSxcbiAgICAgICAgdXJsOiB0eXBlVGVtcGxhdGUsXG4gICAgICAgIGhleDogdHlwZVRlbXBsYXRlXG4gICAgICB9LFxuICAgICAgc3RyaW5nOiB7XG4gICAgICAgIGxlbjogJyR7bGFiZWx9IG11c3QgYmUgJHtsZW59IGNoYXJhY3RlcnMnLFxuICAgICAgICBtaW46ICcke2xhYmVsfSBtdXN0IGJlIGF0IGxlYXN0ICR7bWlufSBjaGFyYWN0ZXJzJyxcbiAgICAgICAgbWF4OiAnJHtsYWJlbH0gbXVzdCBiZSB1cCB0byAke21heH0gY2hhcmFjdGVycycsXG4gICAgICAgIHJhbmdlOiAnJHtsYWJlbH0gbXVzdCBiZSBiZXR3ZWVuICR7bWlufS0ke21heH0gY2hhcmFjdGVycydcbiAgICAgIH0sXG4gICAgICBudW1iZXI6IHtcbiAgICAgICAgbGVuOiAnJHtsYWJlbH0gbXVzdCBiZSBlcXVhbCB0byAke2xlbn0nLFxuICAgICAgICBtaW46ICcke2xhYmVsfSBtdXN0IGJlIG1pbmltdW0gJHttaW59JyxcbiAgICAgICAgbWF4OiAnJHtsYWJlbH0gbXVzdCBiZSBtYXhpbXVtICR7bWF4fScsXG4gICAgICAgIHJhbmdlOiAnJHtsYWJlbH0gbXVzdCBiZSBiZXR3ZWVuICR7bWlufS0ke21heH0nXG4gICAgICB9LFxuICAgICAgYXJyYXk6IHtcbiAgICAgICAgbGVuOiAnTXVzdCBiZSAke2xlbn0gJHtsYWJlbH0nLFxuICAgICAgICBtaW46ICdBdCBsZWFzdCAke21pbn0gJHtsYWJlbH0nLFxuICAgICAgICBtYXg6ICdBdCBtb3N0ICR7bWF4fSAke2xhYmVsfScsXG4gICAgICAgIHJhbmdlOiAnVGhlIGFtb3VudCBvZiAke2xhYmVsfSBtdXN0IGJlIGJldHdlZW4gJHttaW59LSR7bWF4fSdcbiAgICAgIH0sXG4gICAgICBwYXR0ZXJuOiB7XG4gICAgICAgIG1pc21hdGNoOiAnJHtsYWJlbH0gZG9lcyBub3QgbWF0Y2ggdGhlIHBhdHRlcm4gJHtwYXR0ZXJufSdcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIEltYWdlOiB7XG4gICAgcHJldmlldzogJ1ByZXZpZXcnXG4gIH1cbn07XG52YXIgX2RlZmF1bHQgPSBsb2NhbGVWYWx1ZXM7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF90eXBlb2YgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnVzZUxvY2FsZVJlY2VpdmVyID0gdXNlTG9jYWxlUmVjZWl2ZXI7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9leHRlbmRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKSk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiKSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiKSk7XG5cbnZhciBfaW5oZXJpdHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiKSk7XG5cbnZhciBfY3JlYXRlU3VwZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVTdXBlclwiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfZGVmYXVsdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vZGVmYXVsdFwiKSk7XG5cbnZhciBfY29udGV4dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vY29udGV4dFwiKSk7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxudmFyIExvY2FsZVJlY2VpdmVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gICgwLCBfaW5oZXJpdHMyW1wiZGVmYXVsdFwiXSkoTG9jYWxlUmVjZWl2ZXIsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSAoMCwgX2NyZWF0ZVN1cGVyMltcImRlZmF1bHRcIl0pKExvY2FsZVJlY2VpdmVyKTtcblxuICBmdW5jdGlvbiBMb2NhbGVSZWNlaXZlcigpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMltcImRlZmF1bHRcIl0pKHRoaXMsIExvY2FsZVJlY2VpdmVyKTtcbiAgICByZXR1cm4gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMltcImRlZmF1bHRcIl0pKExvY2FsZVJlY2VpdmVyLCBbe1xuICAgIGtleTogXCJnZXRMb2NhbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9jYWxlKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjb21wb25lbnROYW1lID0gX3RoaXMkcHJvcHMuY29tcG9uZW50TmFtZSxcbiAgICAgICAgICBkZWZhdWx0TG9jYWxlID0gX3RoaXMkcHJvcHMuZGVmYXVsdExvY2FsZTtcbiAgICAgIHZhciBsb2NhbGUgPSBkZWZhdWx0TG9jYWxlIHx8IF9kZWZhdWx0W1wiZGVmYXVsdFwiXVtjb21wb25lbnROYW1lIHx8ICdnbG9iYWwnXTtcbiAgICAgIHZhciBhbnRMb2NhbGUgPSB0aGlzLmNvbnRleHQ7XG4gICAgICB2YXIgbG9jYWxlRnJvbUNvbnRleHQgPSBjb21wb25lbnROYW1lICYmIGFudExvY2FsZSA/IGFudExvY2FsZVtjb21wb25lbnROYW1lXSA6IHt9O1xuICAgICAgcmV0dXJuICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIHR5cGVvZiBsb2NhbGUgPT09ICdmdW5jdGlvbicgPyBsb2NhbGUoKSA6IGxvY2FsZSksIGxvY2FsZUZyb21Db250ZXh0IHx8IHt9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0TG9jYWxlQ29kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRMb2NhbGVDb2RlKCkge1xuICAgICAgdmFyIGFudExvY2FsZSA9IHRoaXMuY29udGV4dDtcbiAgICAgIHZhciBsb2NhbGVDb2RlID0gYW50TG9jYWxlICYmIGFudExvY2FsZS5sb2NhbGU7IC8vIEhhZCB1c2UgTG9jYWxlUHJvdmlkZSBidXQgZGlkbid0IHNldCBsb2NhbGVcblxuICAgICAgaWYgKGFudExvY2FsZSAmJiBhbnRMb2NhbGUuZXhpc3QgJiYgIWxvY2FsZUNvZGUpIHtcbiAgICAgICAgcmV0dXJuIF9kZWZhdWx0W1wiZGVmYXVsdFwiXS5sb2NhbGU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBsb2NhbGVDb2RlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW4odGhpcy5nZXRMb2NhbGUoKSwgdGhpcy5nZXRMb2NhbGVDb2RlKCksIHRoaXMuY29udGV4dCk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBMb2NhbGVSZWNlaXZlcjtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBMb2NhbGVSZWNlaXZlcjtcbkxvY2FsZVJlY2VpdmVyLmRlZmF1bHRQcm9wcyA9IHtcbiAgY29tcG9uZW50TmFtZTogJ2dsb2JhbCdcbn07XG5Mb2NhbGVSZWNlaXZlci5jb250ZXh0VHlwZSA9IF9jb250ZXh0W1wiZGVmYXVsdFwiXTtcblxuZnVuY3Rpb24gdXNlTG9jYWxlUmVjZWl2ZXIoY29tcG9uZW50TmFtZSwgZGVmYXVsdExvY2FsZSkge1xuICB2YXIgYW50TG9jYWxlID0gUmVhY3QudXNlQ29udGV4dChfY29udGV4dFtcImRlZmF1bHRcIl0pO1xuICB2YXIgY29tcG9uZW50TG9jYWxlID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxvY2FsZSA9IGRlZmF1bHRMb2NhbGUgfHwgX2RlZmF1bHRbXCJkZWZhdWx0XCJdW2NvbXBvbmVudE5hbWUgfHwgJ2dsb2JhbCddO1xuICAgIHZhciBsb2NhbGVGcm9tQ29udGV4dCA9IGNvbXBvbmVudE5hbWUgJiYgYW50TG9jYWxlID8gYW50TG9jYWxlW2NvbXBvbmVudE5hbWVdIDoge307XG4gICAgcmV0dXJuICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIHR5cGVvZiBsb2NhbGUgPT09ICdmdW5jdGlvbicgPyBsb2NhbGUoKSA6IGxvY2FsZSksIGxvY2FsZUZyb21Db250ZXh0IHx8IHt9KTtcbiAgfSwgW2NvbXBvbmVudE5hbWUsIGRlZmF1bHRMb2NhbGUsIGFudExvY2FsZV0pO1xuICByZXR1cm4gW2NvbXBvbmVudExvY2FsZV07XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMud2l0aENvbmZpZ0NvbnN1bWVyID0gd2l0aENvbmZpZ0NvbnN1bWVyO1xuZXhwb3J0cy5Db25maWdDb25zdW1lciA9IGV4cG9ydHMuQ29uZmlnQ29udGV4dCA9IHZvaWQgMDtcblxudmFyIF9leHRlbmRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfcmVuZGVyRW1wdHkgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3JlbmRlckVtcHR5XCIpKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgZGVmYXVsdEdldFByZWZpeENscyA9IGZ1bmN0aW9uIGRlZmF1bHRHZXRQcmVmaXhDbHMoc3VmZml4Q2xzLCBjdXN0b21pemVQcmVmaXhDbHMpIHtcbiAgaWYgKGN1c3RvbWl6ZVByZWZpeENscykgcmV0dXJuIGN1c3RvbWl6ZVByZWZpeENscztcbiAgcmV0dXJuIHN1ZmZpeENscyA/IFwiYW50LVwiLmNvbmNhdChzdWZmaXhDbHMpIDogJ2FudCc7XG59O1xuXG52YXIgQ29uZmlnQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgLy8gV2UgcHJvdmlkZSBhIGRlZmF1bHQgZnVuY3Rpb24gZm9yIENvbnRleHQgd2l0aG91dCBwcm92aWRlclxuICBnZXRQcmVmaXhDbHM6IGRlZmF1bHRHZXRQcmVmaXhDbHMsXG4gIHJlbmRlckVtcHR5OiBfcmVuZGVyRW1wdHlbXCJkZWZhdWx0XCJdXG59KTtcbmV4cG9ydHMuQ29uZmlnQ29udGV4dCA9IENvbmZpZ0NvbnRleHQ7XG52YXIgQ29uZmlnQ29uc3VtZXIgPSBDb25maWdDb250ZXh0LkNvbnN1bWVyO1xuLyoqIEBkZXByZWNhdGVkIFVzZSBob29rcyBpbnN0ZWFkLiBUaGlzIGlzIGEgbGVnYWN5IGZ1bmN0aW9uICovXG5cbmV4cG9ydHMuQ29uZmlnQ29uc3VtZXIgPSBDb25maWdDb25zdW1lcjtcblxuZnVuY3Rpb24gd2l0aENvbmZpZ0NvbnN1bWVyKGNvbmZpZykge1xuICByZXR1cm4gZnVuY3Rpb24gd2l0aENvbmZpZ0NvbnN1bWVyRnVuYyhDb21wb25lbnQpIHtcbiAgICAvLyBXcmFwIHdpdGggQ29uZmlnQ29uc3VtZXIuIFNpbmNlIHdlIG5lZWQgY29tcGF0aWJsZSB3aXRoIHJlYWN0IDE1LCBiZSBjYXJlIHdoZW4gdXNpbmcgcmVmIG1ldGhvZHNcbiAgICB2YXIgU0ZDID0gZnVuY3Rpb24gU0ZDKHByb3BzKSB7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ29uZmlnQ29uc3VtZXIsIG51bGwsIGZ1bmN0aW9uIChjb25maWdQcm9wcykge1xuICAgICAgICB2YXIgYmFzaWNQcmVmaXhDbHMgPSBjb25maWcucHJlZml4Q2xzO1xuICAgICAgICB2YXIgZ2V0UHJlZml4Q2xzID0gY29uZmlnUHJvcHMuZ2V0UHJlZml4Q2xzO1xuICAgICAgICB2YXIgY3VzdG9taXplUHJlZml4Q2xzID0gcHJvcHMucHJlZml4Q2xzO1xuICAgICAgICB2YXIgcHJlZml4Q2xzID0gZ2V0UHJlZml4Q2xzKGJhc2ljUHJlZml4Q2xzLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50LCAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIGNvbmZpZ1Byb3BzLCBwcm9wcywge1xuICAgICAgICAgIHByZWZpeENsczogcHJlZml4Q2xzXG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB2YXIgY29ucyA9IENvbXBvbmVudC5jb25zdHJ1Y3RvcjtcbiAgICB2YXIgbmFtZSA9IGNvbnMgJiYgY29ucy5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JztcbiAgICBTRkMuZGlzcGxheU5hbWUgPSBcIndpdGhDb25maWdDb25zdW1lcihcIi5jb25jYXQobmFtZSwgXCIpXCIpO1xuICAgIHJldHVybiBTRkM7XG4gIH07XG59IiwiJ3VzZSBzdHJpY3QnO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxuICB9KTtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuICBcbiAgdmFyIF9Mb2FkaW5nT3V0bGluZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoJy4vbGliL2ljb25zL0xvYWRpbmdPdXRsaW5lZCcpKTtcbiAgXG4gIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cbiAgXG4gIHZhciBfZGVmYXVsdCA9IF9Mb2FkaW5nT3V0bGluZWQ7XG4gIGV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuICBtb2R1bGUuZXhwb3J0cyA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMud2FybmluZyA9IHdhcm5pbmc7XG5leHBvcnRzLmlzSWNvbkRlZmluaXRpb24gPSBpc0ljb25EZWZpbml0aW9uO1xuZXhwb3J0cy5ub3JtYWxpemVBdHRycyA9IG5vcm1hbGl6ZUF0dHJzO1xuZXhwb3J0cy5nZW5lcmF0ZSA9IGdlbmVyYXRlO1xuZXhwb3J0cy5nZXRTZWNvbmRhcnlDb2xvciA9IGdldFNlY29uZGFyeUNvbG9yO1xuZXhwb3J0cy5ub3JtYWxpemVUd29Ub25lQ29sb3JzID0gbm9ybWFsaXplVHdvVG9uZUNvbG9ycztcbmV4cG9ydHMudXNlSW5zZXJ0U3R5bGVzID0gZXhwb3J0cy5pY29uU3R5bGVzID0gZXhwb3J0cy5zdmdCYXNlUHJvcHMgPSB2b2lkIDA7XG5cbnZhciBfb2JqZWN0U3ByZWFkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMlwiKSk7XG5cbnZhciBfdHlwZW9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpKTtcblxudmFyIF9jb2xvcnMgPSByZXF1aXJlKFwiQGFudC1kZXNpZ24vY29sb3JzXCIpO1xuXG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF93YXJuaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtdXRpbC9saWIvd2FybmluZ1wiKSk7XG5cbnZhciBfZHluYW1pY0NTUyA9IHJlcXVpcmUoXCJyYy11dGlsL2xpYi9Eb20vZHluYW1pY0NTU1wiKTtcblxudmFyIF9Db250ZXh0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnRzL0NvbnRleHRcIikpO1xuXG5mdW5jdGlvbiB3YXJuaW5nKHZhbGlkLCBtZXNzYWdlKSB7XG4gICgwLCBfd2FybmluZy5kZWZhdWx0KSh2YWxpZCwgXCJbQGFudC1kZXNpZ24vaWNvbnNdIFwiLmNvbmNhdChtZXNzYWdlKSk7XG59XG5cbmZ1bmN0aW9uIGlzSWNvbkRlZmluaXRpb24odGFyZ2V0KSB7XG4gIHJldHVybiAoMCwgX3R5cGVvZjIuZGVmYXVsdCkodGFyZ2V0KSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHRhcmdldC5uYW1lID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgdGFyZ2V0LnRoZW1lID09PSAnc3RyaW5nJyAmJiAoKDAsIF90eXBlb2YyLmRlZmF1bHQpKHRhcmdldC5pY29uKSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHRhcmdldC5pY29uID09PSAnZnVuY3Rpb24nKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplQXR0cnMoKSB7XG4gIHZhciBhdHRycyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gIHJldHVybiBPYmplY3Qua2V5cyhhdHRycykucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgIHZhciB2YWwgPSBhdHRyc1trZXldO1xuXG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICAgIGNhc2UgJ2NsYXNzJzpcbiAgICAgICAgYWNjLmNsYXNzTmFtZSA9IHZhbDtcbiAgICAgICAgZGVsZXRlIGFjYy5jbGFzcztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFjY1trZXldID0gdmFsO1xuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGUobm9kZSwga2V5LCByb290UHJvcHMpIHtcbiAgaWYgKCFyb290UHJvcHMpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobm9kZS50YWcsICgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSh7XG4gICAgICBrZXk6IGtleVxuICAgIH0sIG5vcm1hbGl6ZUF0dHJzKG5vZGUuYXR0cnMpKSwgKG5vZGUuY2hpbGRyZW4gfHwgW10pLm1hcChmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gZ2VuZXJhdGUoY2hpbGQsIFwiXCIuY29uY2F0KGtleSwgXCItXCIpLmNvbmNhdChub2RlLnRhZywgXCItXCIpLmNvbmNhdChpbmRleCkpO1xuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChub2RlLnRhZywgKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKCgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSh7XG4gICAga2V5OiBrZXlcbiAgfSwgbm9ybWFsaXplQXR0cnMobm9kZS5hdHRycykpLCByb290UHJvcHMpLCAobm9kZS5jaGlsZHJlbiB8fCBbXSkubWFwKGZ1bmN0aW9uIChjaGlsZCwgaW5kZXgpIHtcbiAgICByZXR1cm4gZ2VuZXJhdGUoY2hpbGQsIFwiXCIuY29uY2F0KGtleSwgXCItXCIpLmNvbmNhdChub2RlLnRhZywgXCItXCIpLmNvbmNhdChpbmRleCkpO1xuICB9KSk7XG59XG5cbmZ1bmN0aW9uIGdldFNlY29uZGFyeUNvbG9yKHByaW1hcnlDb2xvcikge1xuICAvLyBjaG9vc2UgdGhlIHNlY29uZCBjb2xvclxuICByZXR1cm4gKDAsIF9jb2xvcnMuZ2VuZXJhdGUpKHByaW1hcnlDb2xvcilbMF07XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVR3b1RvbmVDb2xvcnModHdvVG9uZUNvbG9yKSB7XG4gIGlmICghdHdvVG9uZUNvbG9yKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHdvVG9uZUNvbG9yKSA/IHR3b1RvbmVDb2xvciA6IFt0d29Ub25lQ29sb3JdO1xufSAvLyBUaGVzZSBwcm9wcyBtYWtlIHN1cmUgdGhhdCB0aGUgU1ZHIGJlaGF2aW91cnMgbGlrZSBnZW5lcmFsIHRleHQuXG4vLyBSZWZlcmVuY2U6IGh0dHBzOi8vYmxvZy5wcm90b3R5cHIuaW8vYWxpZ24tc3ZnLWljb25zLXRvLXRleHQtYW5kLXNheS1nb29kYnllLXRvLWZvbnQtaWNvbnMtZDQ0YjNkN2IyNmI0XG5cblxudmFyIHN2Z0Jhc2VQcm9wcyA9IHtcbiAgd2lkdGg6ICcxZW0nLFxuICBoZWlnaHQ6ICcxZW0nLFxuICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnLFxuICBmb2N1c2FibGU6ICdmYWxzZSdcbn07XG5leHBvcnRzLnN2Z0Jhc2VQcm9wcyA9IHN2Z0Jhc2VQcm9wcztcbnZhciBpY29uU3R5bGVzID0gXCJcXG4uYW50aWNvbiB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBjb2xvcjogaW5oZXJpdDtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gIGxpbmUtaGVpZ2h0OiAwO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XFxuICB2ZXJ0aWNhbC1hbGlnbjogLTAuMTI1ZW07XFxuICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XFxuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xcbn1cXG5cXG4uYW50aWNvbiA+ICoge1xcbiAgbGluZS1oZWlnaHQ6IDE7XFxufVxcblxcbi5hbnRpY29uIHN2ZyB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcblxcbi5hbnRpY29uOjpiZWZvcmUge1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLmFudGljb24gLmFudGljb24taWNvbiB7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuXFxuLmFudGljb25bdGFiaW5kZXhdIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLmFudGljb24tc3Bpbjo6YmVmb3JlLFxcbi5hbnRpY29uLXNwaW4ge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgLXdlYmtpdC1hbmltYXRpb246IGxvYWRpbmdDaXJjbGUgMXMgaW5maW5pdGUgbGluZWFyO1xcbiAgYW5pbWF0aW9uOiBsb2FkaW5nQ2lyY2xlIDFzIGluZmluaXRlIGxpbmVhcjtcXG59XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIGxvYWRpbmdDaXJjbGUge1xcbiAgMTAwJSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuXFxuQGtleWZyYW1lcyBsb2FkaW5nQ2lyY2xlIHtcXG4gIDEwMCUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcblwiO1xuZXhwb3J0cy5pY29uU3R5bGVzID0gaWNvblN0eWxlcztcblxudmFyIHVzZUluc2VydFN0eWxlcyA9IGZ1bmN0aW9uIHVzZUluc2VydFN0eWxlcygpIHtcbiAgdmFyIHN0eWxlU3RyID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBpY29uU3R5bGVzO1xuXG4gIHZhciBfdXNlQ29udGV4dCA9ICgwLCBfcmVhY3QudXNlQ29udGV4dCkoX0NvbnRleHQuZGVmYXVsdCksXG4gICAgICBjc3AgPSBfdXNlQ29udGV4dC5jc3A7XG5cbiAgKDAsIF9yZWFjdC51c2VFZmZlY3QpKGZ1bmN0aW9uICgpIHtcbiAgICAoMCwgX2R5bmFtaWNDU1MudXBkYXRlQ1NTKShzdHlsZVN0ciwgJ0BhbnQtZGVzaWduLWljb25zJywge1xuICAgICAgcHJlcGVuZDogdHJ1ZSxcbiAgICAgIGNzcDogY3NwXG4gICAgfSk7XG4gIH0sIFtdKTtcbn07XG5cbmV4cG9ydHMudXNlSW5zZXJ0U3R5bGVzID0gdXNlSW5zZXJ0U3R5bGVzOyIsIid1c2Ugc3RyaWN0JztcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbiAgfSk7XG4gIGV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbiAgXG4gIHZhciBfUmlnaHRPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZSgnLi9saWIvaWNvbnMvUmlnaHRPdXRsaW5lZCcpKTtcbiAgXG4gIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cbiAgXG4gIHZhciBfZGVmYXVsdCA9IF9SaWdodE91dGxpbmVkO1xuICBleHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcbiAgbW9kdWxlLmV4cG9ydHMgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gZXhwb3J0cy5nZXRUcmFuc2l0aW9uTmFtZSA9IHZvaWQgMDtcblxuLy8gPT09PT09PT09PT09PT09PT09IENvbGxhcHNlIE1vdGlvbiA9PT09PT09PT09PT09PT09PT1cbnZhciBnZXRDb2xsYXBzZWRIZWlnaHQgPSBmdW5jdGlvbiBnZXRDb2xsYXBzZWRIZWlnaHQoKSB7XG4gIHJldHVybiB7XG4gICAgaGVpZ2h0OiAwLFxuICAgIG9wYWNpdHk6IDBcbiAgfTtcbn07XG5cbnZhciBnZXRSZWFsSGVpZ2h0ID0gZnVuY3Rpb24gZ2V0UmVhbEhlaWdodChub2RlKSB7XG4gIHJldHVybiB7XG4gICAgaGVpZ2h0OiBub2RlLnNjcm9sbEhlaWdodCxcbiAgICBvcGFjaXR5OiAxXG4gIH07XG59O1xuXG52YXIgZ2V0Q3VycmVudEhlaWdodCA9IGZ1bmN0aW9uIGdldEN1cnJlbnRIZWlnaHQobm9kZSkge1xuICByZXR1cm4ge1xuICAgIGhlaWdodDogbm9kZS5vZmZzZXRIZWlnaHRcbiAgfTtcbn07XG5cbnZhciBza2lwT3BhY2l0eVRyYW5zaXRpb24gPSBmdW5jdGlvbiBza2lwT3BhY2l0eVRyYW5zaXRpb24oXywgZXZlbnQpIHtcbiAgcmV0dXJuIGV2ZW50LnByb3BlcnR5TmFtZSA9PT0gJ2hlaWdodCc7XG59O1xuXG52YXIgY29sbGFwc2VNb3Rpb24gPSB7XG4gIG1vdGlvbk5hbWU6ICdhbnQtbW90aW9uLWNvbGxhcHNlJyxcbiAgb25BcHBlYXJTdGFydDogZ2V0Q29sbGFwc2VkSGVpZ2h0LFxuICBvbkVudGVyU3RhcnQ6IGdldENvbGxhcHNlZEhlaWdodCxcbiAgb25BcHBlYXJBY3RpdmU6IGdldFJlYWxIZWlnaHQsXG4gIG9uRW50ZXJBY3RpdmU6IGdldFJlYWxIZWlnaHQsXG4gIG9uTGVhdmVTdGFydDogZ2V0Q3VycmVudEhlaWdodCxcbiAgb25MZWF2ZUFjdGl2ZTogZ2V0Q29sbGFwc2VkSGVpZ2h0LFxuICBvbkFwcGVhckVuZDogc2tpcE9wYWNpdHlUcmFuc2l0aW9uLFxuICBvbkVudGVyRW5kOiBza2lwT3BhY2l0eVRyYW5zaXRpb24sXG4gIG9uTGVhdmVFbmQ6IHNraXBPcGFjaXR5VHJhbnNpdGlvbixcbiAgbW90aW9uRGVhZGxpbmU6IDUwMFxufTtcblxudmFyIGdldFRyYW5zaXRpb25OYW1lID0gZnVuY3Rpb24gZ2V0VHJhbnNpdGlvbk5hbWUocm9vdFByZWZpeENscywgbW90aW9uLCB0cmFuc2l0aW9uTmFtZSkge1xuICBpZiAodHJhbnNpdGlvbk5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0cmFuc2l0aW9uTmFtZTtcbiAgfVxuXG4gIHJldHVybiBcIlwiLmNvbmNhdChyb290UHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KG1vdGlvbik7XG59O1xuXG5leHBvcnRzLmdldFRyYW5zaXRpb25OYW1lID0gZ2V0VHJhbnNpdGlvbk5hbWU7XG52YXIgX2RlZmF1bHQgPSBjb2xsYXBzZU1vdGlvbjtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5hcnJEZWwgPSBhcnJEZWw7XG5leHBvcnRzLmFyckFkZCA9IGFyckFkZDtcbmV4cG9ydHMucG9zVG9BcnIgPSBwb3NUb0FycjtcbmV4cG9ydHMuZ2V0UG9zaXRpb24gPSBnZXRQb3NpdGlvbjtcbmV4cG9ydHMuaXNUcmVlTm9kZSA9IGlzVHJlZU5vZGU7XG5leHBvcnRzLmdldERyYWdDaGlsZHJlbktleXMgPSBnZXREcmFnQ2hpbGRyZW5LZXlzO1xuZXhwb3J0cy5pc0xhc3RDaGlsZCA9IGlzTGFzdENoaWxkO1xuZXhwb3J0cy5pc0ZpcnN0Q2hpbGQgPSBpc0ZpcnN0Q2hpbGQ7XG5leHBvcnRzLmNhbGNEcm9wUG9zaXRpb24gPSBjYWxjRHJvcFBvc2l0aW9uO1xuZXhwb3J0cy5jYWxjU2VsZWN0ZWRLZXlzID0gY2FsY1NlbGVjdGVkS2V5cztcbmV4cG9ydHMuY29udmVydERhdGFUb1RyZWUgPSBjb252ZXJ0RGF0YVRvVHJlZTtcbmV4cG9ydHMucGFyc2VDaGVja2VkS2V5cyA9IHBhcnNlQ2hlY2tlZEtleXM7XG5leHBvcnRzLmNvbmR1Y3RFeHBhbmRQYXJlbnQgPSBjb25kdWN0RXhwYW5kUGFyZW50O1xuZXhwb3J0cy5nZXREYXRhQW5kQXJpYSA9IGdldERhdGFBbmRBcmlhO1xuXG52YXIgX3RvQ29uc3VtYWJsZUFycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIikpO1xuXG52YXIgX3R5cGVvZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKSk7XG5cbnZhciBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKSk7XG5cbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfd2FybmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXV0aWwvbGliL3dhcm5pbmdcIikpO1xuXG52YXIgX1RyZWVOb2RlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9UcmVlTm9kZVwiKSk7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLWxvbmVseS1pZiAqL1xuXG4vKipcbiAqIExlZ2FjeSBjb2RlLiBTaG91bGQgYXZvaWQgdG8gdXNlIGlmIHlvdSBhcmUgbmV3IHRvIGltcG9ydCB0aGVzZSBjb2RlLlxuICovXG5mdW5jdGlvbiBhcnJEZWwobGlzdCwgdmFsdWUpIHtcbiAgdmFyIGNsb25lID0gbGlzdC5zbGljZSgpO1xuICB2YXIgaW5kZXggPSBjbG9uZS5pbmRleE9mKHZhbHVlKTtcblxuICBpZiAoaW5kZXggPj0gMCkge1xuICAgIGNsb25lLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICByZXR1cm4gY2xvbmU7XG59XG5cbmZ1bmN0aW9uIGFyckFkZChsaXN0LCB2YWx1ZSkge1xuICB2YXIgY2xvbmUgPSBsaXN0LnNsaWNlKCk7XG5cbiAgaWYgKGNsb25lLmluZGV4T2YodmFsdWUpID09PSAtMSkge1xuICAgIGNsb25lLnB1c2godmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIGNsb25lO1xufVxuXG5mdW5jdGlvbiBwb3NUb0Fycihwb3MpIHtcbiAgcmV0dXJuIHBvcy5zcGxpdCgnLScpO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NpdGlvbihsZXZlbCwgaW5kZXgpIHtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KGxldmVsLCBcIi1cIikuY29uY2F0KGluZGV4KTtcbn1cblxuZnVuY3Rpb24gaXNUcmVlTm9kZShub2RlKSB7XG4gIHJldHVybiBub2RlICYmIG5vZGUudHlwZSAmJiBub2RlLnR5cGUuaXNUcmVlTm9kZTtcbn1cblxuZnVuY3Rpb24gZ2V0RHJhZ0NoaWxkcmVuS2V5cyhkcmFnTm9kZUtleSwga2V5RW50aXRpZXMpIHtcbiAgLy8gbm90IGNvbnRhaW5zIHNlbGZcbiAgLy8gc2VsZiBmb3IgbGVmdCBvciByaWdodCBkcmFnXG4gIHZhciBkcmFnQ2hpbGRyZW5LZXlzID0gW107XG4gIHZhciBlbnRpdHkgPSBrZXlFbnRpdGllc1tkcmFnTm9kZUtleV07XG5cbiAgZnVuY3Rpb24gZGlnKCkge1xuICAgIHZhciBsaXN0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBbXTtcbiAgICBsaXN0LmZvckVhY2goZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciBrZXkgPSBfcmVmLmtleSxcbiAgICAgICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG4gICAgICBkcmFnQ2hpbGRyZW5LZXlzLnB1c2goa2V5KTtcbiAgICAgIGRpZyhjaGlsZHJlbik7XG4gICAgfSk7XG4gIH1cblxuICBkaWcoZW50aXR5LmNoaWxkcmVuKTtcbiAgcmV0dXJuIGRyYWdDaGlsZHJlbktleXM7XG59XG5cbmZ1bmN0aW9uIGlzTGFzdENoaWxkKHRyZWVOb2RlRW50aXR5KSB7XG4gIGlmICh0cmVlTm9kZUVudGl0eS5wYXJlbnQpIHtcbiAgICB2YXIgcG9zQXJyID0gcG9zVG9BcnIodHJlZU5vZGVFbnRpdHkucG9zKTtcbiAgICByZXR1cm4gTnVtYmVyKHBvc0Fycltwb3NBcnIubGVuZ3RoIC0gMV0pID09PSB0cmVlTm9kZUVudGl0eS5wYXJlbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNGaXJzdENoaWxkKHRyZWVOb2RlRW50aXR5KSB7XG4gIHZhciBwb3NBcnIgPSBwb3NUb0Fycih0cmVlTm9kZUVudGl0eS5wb3MpO1xuICByZXR1cm4gTnVtYmVyKHBvc0Fycltwb3NBcnIubGVuZ3RoIC0gMV0pID09PSAwO1xufSAvLyBPbmx5IHVzZWQgd2hlbiBkcmFnLCBub3QgYWZmZWN0IFNTUi5cblxuXG5mdW5jdGlvbiBjYWxjRHJvcFBvc2l0aW9uKGV2ZW50LCBkcmFnTm9kZSwgdGFyZ2V0Tm9kZSwgaW5kZW50LCBzdGFydE1vdXNlUG9zaXRpb24sIGFsbG93RHJvcCwgZmxhdHRlbmVkTm9kZXMsIGtleUVudGl0aWVzLCBleHBhbmRLZXlzLCBkaXJlY3Rpb24pIHtcbiAgdmFyIF9hYnN0cmFjdERyb3BOb2RlRW50aTtcblxuICB2YXIgY2xpZW50WCA9IGV2ZW50LmNsaWVudFgsXG4gICAgICBjbGllbnRZID0gZXZlbnQuY2xpZW50WTtcblxuICB2YXIgX2V2ZW50JHRhcmdldCRnZXRCb3VuID0gZXZlbnQudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgdG9wID0gX2V2ZW50JHRhcmdldCRnZXRCb3VuLnRvcCxcbiAgICAgIGhlaWdodCA9IF9ldmVudCR0YXJnZXQkZ2V0Qm91bi5oZWlnaHQ7IC8vIG9wdGlvbmFsIGNoYWluIGZvciB0ZXN0aW5nXG5cblxuICB2YXIgaG9yaXpvbnRhbE1vdXNlT2Zmc2V0ID0gKGRpcmVjdGlvbiA9PT0gJ3J0bCcgPyAtMSA6IDEpICogKCgoc3RhcnRNb3VzZVBvc2l0aW9uID09PSBudWxsIHx8IHN0YXJ0TW91c2VQb3NpdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhcnRNb3VzZVBvc2l0aW9uLngpIHx8IDApIC0gY2xpZW50WCk7XG4gIHZhciByYXdEcm9wTGV2ZWxPZmZzZXQgPSAoaG9yaXpvbnRhbE1vdXNlT2Zmc2V0IC0gMTIpIC8gaW5kZW50OyAvLyBmaW5kIGFic3RyYWN0IGRyb3Agbm9kZSBieSBob3Jpem9udGFsIG9mZnNldFxuXG4gIHZhciBhYnN0cmFjdERyb3BOb2RlRW50aXR5ID0ga2V5RW50aXRpZXNbdGFyZ2V0Tm9kZS5wcm9wcy5ldmVudEtleV07XG5cbiAgaWYgKGNsaWVudFkgPCB0b3AgKyBoZWlnaHQgLyAyKSB7XG4gICAgLy8gZmlyc3QgaGFsZiwgc2V0IGFic3RyYWN0IGRyb3Agbm9kZSB0byBwcmV2aW91cyBub2RlXG4gICAgdmFyIG5vZGVJbmRleCA9IGZsYXR0ZW5lZE5vZGVzLmZpbmRJbmRleChmdW5jdGlvbiAoZmxhdHRlbmVkTm9kZSkge1xuICAgICAgcmV0dXJuIGZsYXR0ZW5lZE5vZGUuZGF0YS5rZXkgPT09IGFic3RyYWN0RHJvcE5vZGVFbnRpdHkua2V5O1xuICAgIH0pO1xuICAgIHZhciBwcmV2Tm9kZUluZGV4ID0gbm9kZUluZGV4IDw9IDAgPyAwIDogbm9kZUluZGV4IC0gMTtcbiAgICB2YXIgcHJldk5vZGVLZXkgPSBmbGF0dGVuZWROb2Rlc1twcmV2Tm9kZUluZGV4XS5kYXRhLmtleTtcbiAgICBhYnN0cmFjdERyb3BOb2RlRW50aXR5ID0ga2V5RW50aXRpZXNbcHJldk5vZGVLZXldO1xuICB9XG5cbiAgdmFyIGluaXRpYWxBYnN0cmFjdERyb3BOb2RlS2V5ID0gYWJzdHJhY3REcm9wTm9kZUVudGl0eS5rZXk7XG4gIHZhciBhYnN0cmFjdERyYWdPdmVyRW50aXR5ID0gYWJzdHJhY3REcm9wTm9kZUVudGl0eTtcbiAgdmFyIGRyYWdPdmVyTm9kZUtleSA9IGFic3RyYWN0RHJvcE5vZGVFbnRpdHkua2V5O1xuICB2YXIgZHJvcFBvc2l0aW9uID0gMDtcbiAgdmFyIGRyb3BMZXZlbE9mZnNldCA9IDA7IC8vIE9ubHkgYWxsb3cgY3Jvc3MgbGV2ZWwgZHJvcCB3aGVuIGRyYWdnaW5nIG9uIGEgbm9uLWV4cGFuZGVkIG5vZGVcblxuICBpZiAoIWV4cGFuZEtleXMuaW5jbHVkZXMoaW5pdGlhbEFic3RyYWN0RHJvcE5vZGVLZXkpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYXdEcm9wTGV2ZWxPZmZzZXQ7IGkgKz0gMSkge1xuICAgICAgaWYgKGlzTGFzdENoaWxkKGFic3RyYWN0RHJvcE5vZGVFbnRpdHkpKSB7XG4gICAgICAgIGFic3RyYWN0RHJvcE5vZGVFbnRpdHkgPSBhYnN0cmFjdERyb3BOb2RlRW50aXR5LnBhcmVudDtcbiAgICAgICAgZHJvcExldmVsT2Zmc2V0ICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgYWJzdHJhY3REcm9wRGF0YU5vZGUgPSBhYnN0cmFjdERyb3BOb2RlRW50aXR5Lm5vZGU7XG4gIHZhciBkcm9wQWxsb3dlZCA9IHRydWU7XG5cbiAgaWYgKGlzRmlyc3RDaGlsZChhYnN0cmFjdERyb3BOb2RlRW50aXR5KSAmJiBhYnN0cmFjdERyb3BOb2RlRW50aXR5LmxldmVsID09PSAwICYmIGNsaWVudFkgPCB0b3AgKyBoZWlnaHQgLyAyICYmIGFsbG93RHJvcCh7XG4gICAgZHJvcE5vZGU6IGFic3RyYWN0RHJvcERhdGFOb2RlLFxuICAgIGRyb3BQb3NpdGlvbjogLTFcbiAgfSkgJiYgYWJzdHJhY3REcm9wTm9kZUVudGl0eS5rZXkgPT09IHRhcmdldE5vZGUucHJvcHMuZXZlbnRLZXkpIHtcbiAgICAvLyBmaXJzdCBoYWxmIG9mIGZpcnN0IG5vZGUgaW4gZmlyc3QgbGV2ZWxcbiAgICBkcm9wUG9zaXRpb24gPSAtMTtcbiAgfSBlbHNlIGlmICgoYWJzdHJhY3REcmFnT3ZlckVudGl0eS5jaGlsZHJlbiB8fCBbXSkubGVuZ3RoICYmIGV4cGFuZEtleXMuaW5jbHVkZXMoZHJhZ092ZXJOb2RlS2V5KSkge1xuICAgIC8vIGRyb3Agb24gZXhwYW5kZWQgbm9kZVxuICAgIC8vIG9ubHkgYWxsb3cgZHJvcCBpbnNpZGVcbiAgICBpZiAoYWxsb3dEcm9wKHtcbiAgICAgIGRyb3BOb2RlOiBhYnN0cmFjdERyb3BEYXRhTm9kZSxcbiAgICAgIGRyb3BQb3NpdGlvbjogMFxuICAgIH0pKSB7XG4gICAgICBkcm9wUG9zaXRpb24gPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBkcm9wQWxsb3dlZCA9IGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChkcm9wTGV2ZWxPZmZzZXQgPT09IDApIHtcbiAgICBpZiAocmF3RHJvcExldmVsT2Zmc2V0ID4gLTEuNSkge1xuICAgICAgLy8gfCBOb2RlICAgICB8IDwtIGFic3RyYWN0RHJvcE5vZGVcbiAgICAgIC8vIHwgLV4tPT09PT0gfCA8LSBtb3VzZVBvc2l0aW9uXG4gICAgICAvLyAxLiB0cnkgZHJvcCBhZnRlclxuICAgICAgLy8gMi4gZG8gbm90IGFsbG93IGRyb3BcbiAgICAgIGlmIChhbGxvd0Ryb3Aoe1xuICAgICAgICBkcm9wTm9kZTogYWJzdHJhY3REcm9wRGF0YU5vZGUsXG4gICAgICAgIGRyb3BQb3NpdGlvbjogMVxuICAgICAgfSkpIHtcbiAgICAgICAgZHJvcFBvc2l0aW9uID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRyb3BBbGxvd2VkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHwgTm9kZSAgICAgfCA8LSBhYnN0cmFjdERyb3BOb2RlXG4gICAgICAvLyB8IC0tLT09Xj09IHwgPC0gbW91c2VQb3NpdGlvblxuICAgICAgLy8gd2hldGhlciBpdCBoYXMgY2hpbGRyZW4gb3IgZG9lc24ndCBoYXMgY2hpbGRyZW5cbiAgICAgIC8vIGFsd2F5c1xuICAgICAgLy8gMS4gdHJ5IGRyb3AgaW5zaWRlXG4gICAgICAvLyAyLiB0cnkgZHJvcCBhZnRlclxuICAgICAgLy8gMy4gZG8gbm90IGFsbG93IGRyb3BcbiAgICAgIGlmIChhbGxvd0Ryb3Aoe1xuICAgICAgICBkcm9wTm9kZTogYWJzdHJhY3REcm9wRGF0YU5vZGUsXG4gICAgICAgIGRyb3BQb3NpdGlvbjogMFxuICAgICAgfSkpIHtcbiAgICAgICAgZHJvcFBvc2l0aW9uID0gMDtcbiAgICAgIH0gZWxzZSBpZiAoYWxsb3dEcm9wKHtcbiAgICAgICAgZHJvcE5vZGU6IGFic3RyYWN0RHJvcERhdGFOb2RlLFxuICAgICAgICBkcm9wUG9zaXRpb246IDFcbiAgICAgIH0pKSB7XG4gICAgICAgIGRyb3BQb3NpdGlvbiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkcm9wQWxsb3dlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyB8IE5vZGUxIHwgPC0gYWJzdHJhY3REcm9wTm9kZVxuICAgIC8vICAgICAgfCAgTm9kZTIgIHxcbiAgICAvLyAtLV4tLXwtLS0tPT09PT18IDwtIG1vdXNlUG9zaXRpb25cbiAgICAvLyAxLiB0cnkgaW5zZXJ0IGFmdGVyIE5vZGUxXG4gICAgLy8gMi4gZG8gbm90IGFsbG93IGRyb3BcbiAgICBpZiAoYWxsb3dEcm9wKHtcbiAgICAgIGRyb3BOb2RlOiBhYnN0cmFjdERyb3BEYXRhTm9kZSxcbiAgICAgIGRyb3BQb3NpdGlvbjogMVxuICAgIH0pKSB7XG4gICAgICBkcm9wUG9zaXRpb24gPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBkcm9wQWxsb3dlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZHJvcFBvc2l0aW9uOiBkcm9wUG9zaXRpb24sXG4gICAgZHJvcExldmVsT2Zmc2V0OiBkcm9wTGV2ZWxPZmZzZXQsXG4gICAgZHJvcFRhcmdldEtleTogYWJzdHJhY3REcm9wTm9kZUVudGl0eS5rZXksXG4gICAgZHJvcFRhcmdldFBvczogYWJzdHJhY3REcm9wTm9kZUVudGl0eS5wb3MsXG4gICAgZHJhZ092ZXJOb2RlS2V5OiBkcmFnT3Zlck5vZGVLZXksXG4gICAgZHJvcENvbnRhaW5lcktleTogZHJvcFBvc2l0aW9uID09PSAwID8gbnVsbCA6ICgoX2Fic3RyYWN0RHJvcE5vZGVFbnRpID0gYWJzdHJhY3REcm9wTm9kZUVudGl0eS5wYXJlbnQpID09PSBudWxsIHx8IF9hYnN0cmFjdERyb3BOb2RlRW50aSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Fic3RyYWN0RHJvcE5vZGVFbnRpLmtleSkgfHwgbnVsbCxcbiAgICBkcm9wQWxsb3dlZDogZHJvcEFsbG93ZWRcbiAgfTtcbn1cbi8qKlxuICogUmV0dXJuIHNlbGVjdGVkS2V5cyBhY2NvcmRpbmcgd2l0aCBtdWx0aXBsZSBwcm9wXG4gKiBAcGFyYW0gc2VsZWN0ZWRLZXlzXG4gKiBAcGFyYW0gcHJvcHNcbiAqIEByZXR1cm5zIFtzdHJpbmddXG4gKi9cblxuXG5mdW5jdGlvbiBjYWxjU2VsZWN0ZWRLZXlzKHNlbGVjdGVkS2V5cywgcHJvcHMpIHtcbiAgaWYgKCFzZWxlY3RlZEtleXMpIHJldHVybiB1bmRlZmluZWQ7XG4gIHZhciBtdWx0aXBsZSA9IHByb3BzLm11bHRpcGxlO1xuXG4gIGlmIChtdWx0aXBsZSkge1xuICAgIHJldHVybiBzZWxlY3RlZEtleXMuc2xpY2UoKTtcbiAgfVxuXG4gIGlmIChzZWxlY3RlZEtleXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIFtzZWxlY3RlZEtleXNbMF1dO1xuICB9XG5cbiAgcmV0dXJuIHNlbGVjdGVkS2V5cztcbn1cblxudmFyIGludGVybmFsUHJvY2Vzc1Byb3BzID0gZnVuY3Rpb24gaW50ZXJuYWxQcm9jZXNzUHJvcHMocHJvcHMpIHtcbiAgcmV0dXJuIHByb3BzO1xufTtcblxuZnVuY3Rpb24gY29udmVydERhdGFUb1RyZWUodHJlZURhdGEsIHByb2Nlc3Nvcikge1xuICBpZiAoIXRyZWVEYXRhKSByZXR1cm4gW107XG5cbiAgdmFyIF9yZWYyID0gcHJvY2Vzc29yIHx8IHt9LFxuICAgICAgX3JlZjIkcHJvY2Vzc1Byb3BzID0gX3JlZjIucHJvY2Vzc1Byb3BzLFxuICAgICAgcHJvY2Vzc1Byb3BzID0gX3JlZjIkcHJvY2Vzc1Byb3BzID09PSB2b2lkIDAgPyBpbnRlcm5hbFByb2Nlc3NQcm9wcyA6IF9yZWYyJHByb2Nlc3NQcm9wcztcblxuICB2YXIgbGlzdCA9IEFycmF5LmlzQXJyYXkodHJlZURhdGEpID8gdHJlZURhdGEgOiBbdHJlZURhdGFdO1xuICByZXR1cm4gbGlzdC5tYXAoZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gX3JlZjMuY2hpbGRyZW4sXG4gICAgICAgIHByb3BzID0gKDAsIF9vYmplY3RXaXRob3V0UHJvcGVydGllczIuZGVmYXVsdCkoX3JlZjMsIFtcImNoaWxkcmVuXCJdKTtcbiAgICB2YXIgY2hpbGRyZW5Ob2RlcyA9IGNvbnZlcnREYXRhVG9UcmVlKGNoaWxkcmVuLCBwcm9jZXNzb3IpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfVHJlZU5vZGUuZGVmYXVsdCwgcHJvY2Vzc1Byb3BzKHByb3BzKSwgY2hpbGRyZW5Ob2Rlcyk7XG4gIH0pO1xufVxuLyoqXG4gKiBQYXJzZSBgY2hlY2tlZEtleXNgIHRvIHsgY2hlY2tlZEtleXMsIGhhbGZDaGVja2VkS2V5cyB9IHN0eWxlXG4gKi9cblxuXG5mdW5jdGlvbiBwYXJzZUNoZWNrZWRLZXlzKGtleXMpIHtcbiAgaWYgKCFrZXlzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gQ29udmVydCBrZXlzIHRvIG9iamVjdCBmb3JtYXRcblxuXG4gIHZhciBrZXlQcm9wcztcblxuICBpZiAoQXJyYXkuaXNBcnJheShrZXlzKSkge1xuICAgIC8vIFtMZWdhY3ldIEZvbGxvdyB0aGUgYXBpIGRvY1xuICAgIGtleVByb3BzID0ge1xuICAgICAgY2hlY2tlZEtleXM6IGtleXMsXG4gICAgICBoYWxmQ2hlY2tlZEtleXM6IHVuZGVmaW5lZFxuICAgIH07XG4gIH0gZWxzZSBpZiAoKDAsIF90eXBlb2YyLmRlZmF1bHQpKGtleXMpID09PSAnb2JqZWN0Jykge1xuICAgIGtleVByb3BzID0ge1xuICAgICAgY2hlY2tlZEtleXM6IGtleXMuY2hlY2tlZCB8fCB1bmRlZmluZWQsXG4gICAgICBoYWxmQ2hlY2tlZEtleXM6IGtleXMuaGFsZkNoZWNrZWQgfHwgdW5kZWZpbmVkXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICAoMCwgX3dhcm5pbmcuZGVmYXVsdCkoZmFsc2UsICdgY2hlY2tlZEtleXNgIGlzIG5vdCBhbiBhcnJheSBvciBhbiBvYmplY3QnKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBrZXlQcm9wcztcbn1cbi8qKlxuICogSWYgdXNlciB1c2UgYGF1dG9FeHBhbmRQYXJlbnRgIHdlIHNob3VsZCBnZXQgdGhlIGxpc3Qgb2YgcGFyZW50IG5vZGVcbiAqIEBwYXJhbSBrZXlMaXN0XG4gKiBAcGFyYW0ga2V5RW50aXRpZXNcbiAqL1xuXG5cbmZ1bmN0aW9uIGNvbmR1Y3RFeHBhbmRQYXJlbnQoa2V5TGlzdCwga2V5RW50aXRpZXMpIHtcbiAgdmFyIGV4cGFuZGVkS2V5cyA9IG5ldyBTZXQoKTtcblxuICBmdW5jdGlvbiBjb25kdWN0VXAoa2V5KSB7XG4gICAgaWYgKGV4cGFuZGVkS2V5cy5oYXMoa2V5KSkgcmV0dXJuO1xuICAgIHZhciBlbnRpdHkgPSBrZXlFbnRpdGllc1trZXldO1xuICAgIGlmICghZW50aXR5KSByZXR1cm47XG4gICAgZXhwYW5kZWRLZXlzLmFkZChrZXkpO1xuICAgIHZhciBwYXJlbnQgPSBlbnRpdHkucGFyZW50LFxuICAgICAgICBub2RlID0gZW50aXR5Lm5vZGU7XG4gICAgaWYgKG5vZGUuZGlzYWJsZWQpIHJldHVybjtcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIGNvbmR1Y3RVcChwYXJlbnQua2V5KTtcbiAgICB9XG4gIH1cblxuICAoa2V5TGlzdCB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgY29uZHVjdFVwKGtleSk7XG4gIH0pO1xuICByZXR1cm4gKDAsIF90b0NvbnN1bWFibGVBcnJheTIuZGVmYXVsdCkoZXhwYW5kZWRLZXlzKTtcbn1cbi8qKlxuICogUmV0dXJucyBvbmx5IHRoZSBkYXRhLSBhbmQgYXJpYS0ga2V5L3ZhbHVlIHBhaXJzXG4gKi9cblxuXG5mdW5jdGlvbiBnZXREYXRhQW5kQXJpYShwcm9wcykge1xuICB2YXIgb21pdFByb3BzID0ge307XG4gIE9iamVjdC5rZXlzKHByb3BzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2RhdGEtJykgfHwga2V5LnN0YXJ0c1dpdGgoJ2FyaWEtJykpIHtcbiAgICAgIG9taXRQcm9wc1trZXldID0gcHJvcHNba2V5XTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb21pdFByb3BzO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHVzZUNvbnRyb2xsZWRTdGF0ZTtcblxudmFyIF9zbGljZWRUb0FycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbmZ1bmN0aW9uIHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0U3RhdGVWYWx1ZSwgb3B0aW9uKSB7XG4gIHZhciBfcmVmID0gb3B0aW9uIHx8IHt9LFxuICAgICAgZGVmYXVsdFZhbHVlID0gX3JlZi5kZWZhdWx0VmFsdWUsXG4gICAgICB2YWx1ZSA9IF9yZWYudmFsdWUsXG4gICAgICBvbkNoYW5nZSA9IF9yZWYub25DaGFuZ2UsXG4gICAgICBwb3N0U3RhdGUgPSBfcmVmLnBvc3RTdGF0ZTtcblxuICB2YXIgX1JlYWN0JHVzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUoZnVuY3Rpb24gKCkge1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGRlZmF1bHRWYWx1ZSgpIDogZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlb2YgZGVmYXVsdFN0YXRlVmFsdWUgPT09ICdmdW5jdGlvbicgPyBkZWZhdWx0U3RhdGVWYWx1ZSgpIDogZGVmYXVsdFN0YXRlVmFsdWU7XG4gIH0pLFxuICAgICAgX1JlYWN0JHVzZVN0YXRlMiA9ICgwLCBfc2xpY2VkVG9BcnJheTIuZGVmYXVsdCkoX1JlYWN0JHVzZVN0YXRlLCAyKSxcbiAgICAgIGlubmVyVmFsdWUgPSBfUmVhY3QkdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0SW5uZXJWYWx1ZSA9IF9SZWFjdCR1c2VTdGF0ZTJbMV07XG5cbiAgdmFyIG1lcmdlZFZhbHVlID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogaW5uZXJWYWx1ZTtcblxuICBpZiAocG9zdFN0YXRlKSB7XG4gICAgbWVyZ2VkVmFsdWUgPSBwb3N0U3RhdGUobWVyZ2VkVmFsdWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJpZ2dlckNoYW5nZShuZXdWYWx1ZSkge1xuICAgIHNldElubmVyVmFsdWUobmV3VmFsdWUpO1xuXG4gICAgaWYgKG1lcmdlZFZhbHVlICE9PSBuZXdWYWx1ZSAmJiBvbkNoYW5nZSkge1xuICAgICAgb25DaGFuZ2UobmV3VmFsdWUsIG1lcmdlZFZhbHVlKTtcbiAgICB9XG4gIH0gLy8gRWZmZWN0IG9mIHJlc2V0IHZhbHVlIHRvIGB1bmRlZmluZWRgXG5cblxuICB2YXIgZmlyc3RSZW5kZXJSZWYgPSBSZWFjdC51c2VSZWYodHJ1ZSk7XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGZpcnN0UmVuZGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGZpcnN0UmVuZGVyUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgc2V0SW5uZXJWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9LCBbdmFsdWVdKTtcbiAgcmV0dXJuIFttZXJnZWRWYWx1ZSwgdHJpZ2dlckNoYW5nZV07XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcblxudmFyIE1lbnVDb250ZXh0ID0gLyojX19QVVJFX18qLygwLCBfcmVhY3QuY3JlYXRlQ29udGV4dCkoe1xuICBpbmxpbmVDb2xsYXBzZWQ6IGZhbHNlXG59KTtcbnZhciBfZGVmYXVsdCA9IE1lbnVDb250ZXh0O1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfZXh0ZW5kczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIikpO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX3JjQ2hlY2tib3ggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYy1jaGVja2JveFwiKSk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG52YXIgX3JlZiA9IHJlcXVpcmUoXCJyYy11dGlsL2xpYi9yZWZcIik7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX2NvbnRleHQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2NvbnRleHRcIikpO1xuXG52YXIgX2Rldldhcm5pbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9fdXRpbC9kZXZXYXJuaW5nXCIpKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgX19yZXN0ID0gdm9pZCAwICYmICh2b2lkIDApLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG4gIH1cblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxudmFyIEludGVybmFsUmFkaW8gPSBmdW5jdGlvbiBJbnRlcm5hbFJhZGlvKHByb3BzLCByZWYpIHtcbiAgdmFyIF9jbGFzc05hbWVzO1xuXG4gIHZhciBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChfY29udGV4dFtcImRlZmF1bHRcIl0pO1xuXG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnRleHQpLFxuICAgICAgZ2V0UHJlZml4Q2xzID0gX1JlYWN0JHVzZUNvbnRleHQuZ2V0UHJlZml4Q2xzLFxuICAgICAgZGlyZWN0aW9uID0gX1JlYWN0JHVzZUNvbnRleHQuZGlyZWN0aW9uO1xuXG4gIHZhciBpbm5lclJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICB2YXIgbWVyZ2VkUmVmID0gKDAsIF9yZWYuY29tcG9zZVJlZikocmVmLCBpbm5lclJlZik7XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgKDAsIF9kZXZXYXJuaW5nW1wiZGVmYXVsdFwiXSkoISgnb3B0aW9uVHlwZScgaW4gcHJvcHMpLCAnUmFkaW8nLCAnYG9wdGlvblR5cGVgIGlzIG9ubHkgc3VwcG9ydCBpbiBSYWRpby5Hcm91cC4nKTtcbiAgfSwgW10pO1xuXG4gIHZhciBvbkNoYW5nZSA9IGZ1bmN0aW9uIG9uQ2hhbmdlKGUpIHtcbiAgICB2YXIgX2EsIF9iO1xuXG4gICAgKF9hID0gcHJvcHMub25DaGFuZ2UpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHByb3BzLCBlKTtcbiAgICAoX2IgPSBjb250ZXh0ID09PSBudWxsIHx8IGNvbnRleHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRleHQub25DaGFuZ2UpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKGNvbnRleHQsIGUpO1xuICB9O1xuXG4gIHZhciBjdXN0b21pemVQcmVmaXhDbHMgPSBwcm9wcy5wcmVmaXhDbHMsXG4gICAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgc3R5bGUgPSBwcm9wcy5zdHlsZSxcbiAgICAgIHJlc3RQcm9wcyA9IF9fcmVzdChwcm9wcywgW1wicHJlZml4Q2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwiY2hpbGRyZW5cIiwgXCJzdHlsZVwiXSk7XG5cbiAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygncmFkaW8nLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICB2YXIgcmFkaW9Qcm9wcyA9ICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgcmVzdFByb3BzKTtcblxuICBpZiAoY29udGV4dCkge1xuICAgIHJhZGlvUHJvcHMubmFtZSA9IGNvbnRleHQubmFtZTtcbiAgICByYWRpb1Byb3BzLm9uQ2hhbmdlID0gb25DaGFuZ2U7XG4gICAgcmFkaW9Qcm9wcy5jaGVja2VkID0gcHJvcHMudmFsdWUgPT09IGNvbnRleHQudmFsdWU7XG4gICAgcmFkaW9Qcm9wcy5kaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkIHx8IGNvbnRleHQuZGlzYWJsZWQ7XG4gIH1cblxuICB2YXIgd3JhcHBlckNsYXNzU3RyaW5nID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi13cmFwcGVyXCIpLCAoX2NsYXNzTmFtZXMgPSB7fSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi13cmFwcGVyLWNoZWNrZWRcIiksIHJhZGlvUHJvcHMuY2hlY2tlZCksICgwLCBfZGVmaW5lUHJvcGVydHkyW1wiZGVmYXVsdFwiXSkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItd3JhcHBlci1kaXNhYmxlZFwiKSwgcmFkaW9Qcm9wcy5kaXNhYmxlZCksICgwLCBfZGVmaW5lUHJvcGVydHkyW1wiZGVmYXVsdFwiXSkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItd3JhcHBlci1ydGxcIiksIGRpcmVjdGlvbiA9PT0gJ3J0bCcpLCBfY2xhc3NOYW1lcyksIGNsYXNzTmFtZSk7XG4gIHJldHVybiAoXG4gICAgLyojX19QVVJFX18qL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9sYWJlbC1oYXMtYXNzb2NpYXRlZC1jb250cm9sXG4gICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImxhYmVsXCIsIHtcbiAgICAgIGNsYXNzTmFtZTogd3JhcHBlckNsYXNzU3RyaW5nLFxuICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgb25Nb3VzZUVudGVyOiBwcm9wcy5vbk1vdXNlRW50ZXIsXG4gICAgICBvbk1vdXNlTGVhdmU6IHByb3BzLm9uTW91c2VMZWF2ZVxuICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yY0NoZWNrYm94W1wiZGVmYXVsdFwiXSwgKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCByYWRpb1Byb3BzLCB7XG4gICAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgIHJlZjogbWVyZ2VkUmVmXG4gICAgfSkpLCBjaGlsZHJlbiAhPT0gdW5kZWZpbmVkID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIGNoaWxkcmVuKSA6IG51bGwpXG4gICk7XG59O1xuXG52YXIgUmFkaW8gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihJbnRlcm5hbFJhZGlvKTtcblJhZGlvLmRpc3BsYXlOYW1lID0gJ1JhZGlvJztcblJhZGlvLmRlZmF1bHRQcm9wcyA9IHtcbiAgdHlwZTogJ3JhZGlvJ1xufTtcbnZhciBfZGVmYXVsdCA9IFJhZGlvO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF90eXBlb2YgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IGV4cG9ydHMuUmFkaW9Hcm91cENvbnRleHRQcm92aWRlciA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgUmFkaW9Hcm91cENvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbnZhciBSYWRpb0dyb3VwQ29udGV4dFByb3ZpZGVyID0gUmFkaW9Hcm91cENvbnRleHQuUHJvdmlkZXI7XG5leHBvcnRzLlJhZGlvR3JvdXBDb250ZXh0UHJvdmlkZXIgPSBSYWRpb0dyb3VwQ29udGV4dFByb3ZpZGVyO1xudmFyIF9kZWZhdWx0ID0gUmFkaW9Hcm91cENvbnRleHQ7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5nZXRDb2x1bW5LZXkgPSBnZXRDb2x1bW5LZXk7XG5leHBvcnRzLmdldENvbHVtblBvcyA9IGdldENvbHVtblBvcztcbmV4cG9ydHMucmVuZGVyQ29sdW1uVGl0bGUgPSByZW5kZXJDb2x1bW5UaXRsZTtcblxuZnVuY3Rpb24gZ2V0Q29sdW1uS2V5KGNvbHVtbiwgZGVmYXVsdEtleSkge1xuICBpZiAoJ2tleScgaW4gY29sdW1uICYmIGNvbHVtbi5rZXkgIT09IHVuZGVmaW5lZCAmJiBjb2x1bW4ua2V5ICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGNvbHVtbi5rZXk7XG4gIH1cblxuICBpZiAoY29sdW1uLmRhdGFJbmRleCkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGNvbHVtbi5kYXRhSW5kZXgpID8gY29sdW1uLmRhdGFJbmRleC5qb2luKCcuJykgOiBjb2x1bW4uZGF0YUluZGV4O1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRLZXk7XG59XG5cbmZ1bmN0aW9uIGdldENvbHVtblBvcyhpbmRleCwgcG9zKSB7XG4gIHJldHVybiBwb3MgPyBcIlwiLmNvbmNhdChwb3MsIFwiLVwiKS5jb25jYXQoaW5kZXgpIDogXCJcIi5jb25jYXQoaW5kZXgpO1xufVxuXG5mdW5jdGlvbiByZW5kZXJDb2x1bW5UaXRsZSh0aXRsZSwgcHJvcHMpIHtcbiAgaWYgKHR5cGVvZiB0aXRsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB0aXRsZShwcm9wcyk7XG4gIH1cblxuICByZXR1cm4gdGl0bGU7XG59IiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXk7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMudmFsaWRQcm9ncmVzcyA9IHZhbGlkUHJvZ3Jlc3M7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvcHJlZmVyLWRlZmF1bHQtZXhwb3J0XG5mdW5jdGlvbiB2YWxpZFByb2dyZXNzKHByb2dyZXNzKSB7XG4gIGlmICghcHJvZ3Jlc3MgfHwgcHJvZ3Jlc3MgPCAwKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZiAocHJvZ3Jlc3MgPiAxMDApIHtcbiAgICByZXR1cm4gMTAwO1xuICB9XG5cbiAgcmV0dXJuIHByb2dyZXNzO1xufSIsInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHN0cmluZ1RvUGF0aCA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvUGF0aCcpLFxuICAgIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGlzS2V5KHZhbHVlLCBvYmplY3QpID8gW3ZhbHVlXSA6IHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RQYXRoO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3ltYm9sO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGdldFJhd1RhZyA9IHJlcXVpcmUoJy4vX2dldFJhd1RhZycpLFxuICAgIG9iamVjdFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fb2JqZWN0VG9TdHJpbmcnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXSc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgfVxuICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldFRhZztcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW1ib2w7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG4iLCJ2YXIgYmFzZUlzTmF0aXZlID0gcmVxdWlyZSgnLi9fYmFzZUlzTmF0aXZlJyksXG4gICAgZ2V0VmFsdWUgPSByZXF1aXJlKCcuL19nZXRWYWx1ZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE5hdGl2ZTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIiwiLyoqXG4gKiBQZXJmb3JtcyBhXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXE7XG4iLCJ2YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyBrZXkgaWYgaXQncyBub3QgYSBzdHJpbmcgb3Igc3ltYm9sLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMge3N0cmluZ3xzeW1ib2x9IFJldHVybnMgdGhlIGtleS5cbiAqL1xuZnVuY3Rpb24gdG9LZXkodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvS2V5O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2V4dGVuZHMyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnKTtcblxudmFyIF9leHRlbmRzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4dGVuZHMyKTtcblxuZXhwb3J0cy5hcmd1bWVudENvbnRhaW5lciA9IGFyZ3VtZW50Q29udGFpbmVyO1xuZXhwb3J0cy5pZGVudGl0eSA9IGlkZW50aXR5O1xuZXhwb3J0cy5mbGF0dGVuQXJyYXkgPSBmbGF0dGVuQXJyYXk7XG5leHBvcnRzLnRyZWVUcmF2ZXJzZSA9IHRyZWVUcmF2ZXJzZTtcbmV4cG9ydHMuZmxhdHRlbkZpZWxkcyA9IGZsYXR0ZW5GaWVsZHM7XG5leHBvcnRzLm5vcm1hbGl6ZVZhbGlkYXRlUnVsZXMgPSBub3JtYWxpemVWYWxpZGF0ZVJ1bGVzO1xuZXhwb3J0cy5nZXRWYWxpZGF0ZVRyaWdnZXJzID0gZ2V0VmFsaWRhdGVUcmlnZ2VycztcbmV4cG9ydHMuZ2V0VmFsdWVGcm9tRXZlbnQgPSBnZXRWYWx1ZUZyb21FdmVudDtcbmV4cG9ydHMuZ2V0RXJyb3JTdHJzID0gZ2V0RXJyb3JTdHJzO1xuZXhwb3J0cy5nZXRQYXJhbXMgPSBnZXRQYXJhbXM7XG5leHBvcnRzLmlzRW1wdHlPYmplY3QgPSBpc0VtcHR5T2JqZWN0O1xuZXhwb3J0cy5oYXNSdWxlcyA9IGhhc1J1bGVzO1xuZXhwb3J0cy5zdGFydHNXaXRoID0gc3RhcnRzV2l0aDtcblxudmFyIF9ob2lzdE5vblJlYWN0U3RhdGljcyA9IHJlcXVpcmUoJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJyk7XG5cbnZhciBfaG9pc3ROb25SZWFjdFN0YXRpY3MyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaG9pc3ROb25SZWFjdFN0YXRpY3MpO1xuXG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCd3YXJuaW5nJyk7XG5cbnZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBnZXREaXNwbGF5TmFtZShXcmFwcGVkQ29tcG9uZW50KSB7XG4gIHJldHVybiBXcmFwcGVkQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IFdyYXBwZWRDb21wb25lbnQubmFtZSB8fCAnV3JhcHBlZENvbXBvbmVudCc7XG59XG5cbmZ1bmN0aW9uIGFyZ3VtZW50Q29udGFpbmVyKENvbnRhaW5lciwgV3JhcHBlZENvbXBvbmVudCkge1xuICAvKiBlc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCAqL1xuICBDb250YWluZXIuZGlzcGxheU5hbWUgPSAnRm9ybSgnICsgZ2V0RGlzcGxheU5hbWUoV3JhcHBlZENvbXBvbmVudCkgKyAnKSc7XG4gIENvbnRhaW5lci5XcmFwcGVkQ29tcG9uZW50ID0gV3JhcHBlZENvbXBvbmVudDtcbiAgcmV0dXJuICgwLCBfaG9pc3ROb25SZWFjdFN0YXRpY3MyWydkZWZhdWx0J10pKENvbnRhaW5lciwgV3JhcHBlZENvbXBvbmVudCk7XG59XG5cbmZ1bmN0aW9uIGlkZW50aXR5KG9iaikge1xuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBmbGF0dGVuQXJyYXkoYXJyKSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBhcnIpO1xufVxuXG5mdW5jdGlvbiB0cmVlVHJhdmVyc2UoKSB7XG4gIHZhciBwYXRoID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnJztcbiAgdmFyIHRyZWUgPSBhcmd1bWVudHNbMV07XG4gIHZhciBpc0xlYWZOb2RlID0gYXJndW1lbnRzWzJdO1xuICB2YXIgZXJyb3JNZXNzYWdlID0gYXJndW1lbnRzWzNdO1xuICB2YXIgY2FsbGJhY2sgPSBhcmd1bWVudHNbNF07XG5cbiAgaWYgKGlzTGVhZk5vZGUocGF0aCwgdHJlZSkpIHtcbiAgICBjYWxsYmFjayhwYXRoLCB0cmVlKTtcbiAgfSBlbHNlIGlmICh0cmVlID09PSB1bmRlZmluZWQgfHwgdHJlZSA9PT0gbnVsbCkge1xuICAgIC8vIERvIG5vdGhpbmdcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRyZWUpKSB7XG4gICAgdHJlZS5mb3JFYWNoKGZ1bmN0aW9uIChzdWJUcmVlLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHRyZWVUcmF2ZXJzZShwYXRoICsgJ1snICsgaW5kZXggKyAnXScsIHN1YlRyZWUsIGlzTGVhZk5vZGUsIGVycm9yTWVzc2FnZSwgY2FsbGJhY2spO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIC8vIEl0J3Mgb2JqZWN0IGFuZCBub3QgYSBsZWFmIG5vZGVcbiAgICBpZiAodHlwZW9mIHRyZWUgIT09ICdvYmplY3QnKSB7XG4gICAgICAoMCwgX3dhcm5pbmcyWydkZWZhdWx0J10pKGZhbHNlLCBlcnJvck1lc3NhZ2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBPYmplY3Qua2V5cyh0cmVlKS5mb3JFYWNoKGZ1bmN0aW9uIChzdWJUcmVlS2V5KSB7XG4gICAgICB2YXIgc3ViVHJlZSA9IHRyZWVbc3ViVHJlZUtleV07XG4gICAgICB0cmVlVHJhdmVyc2UoJycgKyBwYXRoICsgKHBhdGggPyAnLicgOiAnJykgKyBzdWJUcmVlS2V5LCBzdWJUcmVlLCBpc0xlYWZOb2RlLCBlcnJvck1lc3NhZ2UsIGNhbGxiYWNrKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmbGF0dGVuRmllbGRzKG1heWJlTmVzdGVkRmllbGRzLCBpc0xlYWZOb2RlLCBlcnJvck1lc3NhZ2UpIHtcbiAgdmFyIGZpZWxkcyA9IHt9O1xuICB0cmVlVHJhdmVyc2UodW5kZWZpbmVkLCBtYXliZU5lc3RlZEZpZWxkcywgaXNMZWFmTm9kZSwgZXJyb3JNZXNzYWdlLCBmdW5jdGlvbiAocGF0aCwgbm9kZSkge1xuICAgIGZpZWxkc1twYXRoXSA9IG5vZGU7XG4gIH0pO1xuICByZXR1cm4gZmllbGRzO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWxpZGF0ZVJ1bGVzKHZhbGlkYXRlLCBydWxlcywgdmFsaWRhdGVUcmlnZ2VyKSB7XG4gIHZhciB2YWxpZGF0ZVJ1bGVzID0gdmFsaWRhdGUubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIG5ld0l0ZW0gPSAoMCwgX2V4dGVuZHMzWydkZWZhdWx0J10pKHt9LCBpdGVtLCB7XG4gICAgICB0cmlnZ2VyOiBpdGVtLnRyaWdnZXIgfHwgW11cbiAgICB9KTtcbiAgICBpZiAodHlwZW9mIG5ld0l0ZW0udHJpZ2dlciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG5ld0l0ZW0udHJpZ2dlciA9IFtuZXdJdGVtLnRyaWdnZXJdO1xuICAgIH1cbiAgICByZXR1cm4gbmV3SXRlbTtcbiAgfSk7XG4gIGlmIChydWxlcykge1xuICAgIHZhbGlkYXRlUnVsZXMucHVzaCh7XG4gICAgICB0cmlnZ2VyOiB2YWxpZGF0ZVRyaWdnZXIgPyBbXS5jb25jYXQodmFsaWRhdGVUcmlnZ2VyKSA6IFtdLFxuICAgICAgcnVsZXM6IHJ1bGVzXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHZhbGlkYXRlUnVsZXM7XG59XG5cbmZ1bmN0aW9uIGdldFZhbGlkYXRlVHJpZ2dlcnModmFsaWRhdGVSdWxlcykge1xuICByZXR1cm4gdmFsaWRhdGVSdWxlcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICByZXR1cm4gISFpdGVtLnJ1bGVzICYmIGl0ZW0ucnVsZXMubGVuZ3RoO1xuICB9KS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS50cmlnZ2VyO1xuICB9KS5yZWR1Y2UoZnVuY3Rpb24gKHByZSwgY3Vycikge1xuICAgIHJldHVybiBwcmUuY29uY2F0KGN1cnIpO1xuICB9LCBbXSk7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRnJvbUV2ZW50KGUpIHtcbiAgLy8gVG8gc3VwcG9ydCBjdXN0b20gZWxlbWVudFxuICBpZiAoIWUgfHwgIWUudGFyZ2V0KSB7XG4gICAgcmV0dXJuIGU7XG4gIH1cbiAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuXG4gIHJldHVybiB0YXJnZXQudHlwZSA9PT0gJ2NoZWNrYm94JyA/IHRhcmdldC5jaGVja2VkIDogdGFyZ2V0LnZhbHVlO1xufVxuXG5mdW5jdGlvbiBnZXRFcnJvclN0cnMoZXJyb3JzKSB7XG4gIGlmIChlcnJvcnMpIHtcbiAgICByZXR1cm4gZXJyb3JzLm1hcChmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKGUgJiYgZS5tZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBlLm1lc3NhZ2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gZTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZXJyb3JzO1xufVxuXG5mdW5jdGlvbiBnZXRQYXJhbXMobnMsIG9wdCwgY2IpIHtcbiAgdmFyIG5hbWVzID0gbnM7XG4gIHZhciBvcHRpb25zID0gb3B0O1xuICB2YXIgY2FsbGJhY2sgPSBjYjtcbiAgaWYgKGNiID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIG5hbWVzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYWxsYmFjayA9IG5hbWVzO1xuICAgICAgb3B0aW9ucyA9IHt9O1xuICAgICAgbmFtZXMgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG5hbWVzKSkge1xuICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgIG9wdGlvbnMgPSBuYW1lcyB8fCB7fTtcbiAgICAgIG5hbWVzID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWVzOiBuYW1lcyxcbiAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgIGNhbGxiYWNrOiBjYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiBpc0VtcHR5T2JqZWN0KG9iaikge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDA7XG59XG5cbmZ1bmN0aW9uIGhhc1J1bGVzKHZhbGlkYXRlKSB7XG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIHJldHVybiB2YWxpZGF0ZS5zb21lKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbS5ydWxlcyAmJiBpdGVtLnJ1bGVzLmxlbmd0aDtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0c1dpdGgoc3RyLCBwcmVmaXgpIHtcbiAgcmV0dXJuIHN0ci5sYXN0SW5kZXhPZihwcmVmaXgsIDApID09PSAwO1xufSIsInZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IHZhciBNaW5pU3RvcmVDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbnZhciBQcm92aWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUHJvdmlkZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUHJvdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgUHJvdmlkZXIucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KE1pbmlTdG9yZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHRoaXMucHJvcHMuc3RvcmUgfSwgdGhpcy5wcm9wcy5jaGlsZHJlbikpO1xuICAgIH07XG4gICAgcmV0dXJuIFByb3ZpZGVyO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydCB7IFByb3ZpZGVyIH07XG4iLCJ2YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc2hhbGxvd0VxdWFsIGZyb20gJ3NoYWxsb3dlcXVhbCc7XG5pbXBvcnQgaG9pc3RTdGF0aWNzIGZyb20gJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcbmltcG9ydCB7IE1pbmlTdG9yZUNvbnRleHQgfSBmcm9tICcuL1Byb3ZpZGVyJztcbmZ1bmN0aW9uIGdldERpc3BsYXlOYW1lKFdyYXBwZWRDb21wb25lbnQpIHtcbiAgICByZXR1cm4gV3JhcHBlZENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBXcmFwcGVkQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCc7XG59XG52YXIgZGVmYXVsdE1hcFN0YXRlVG9Qcm9wcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7fSk7IH07XG5leHBvcnQgZnVuY3Rpb24gY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBzaG91bGRTdWJzY3JpYmUgPSAhIW1hcFN0YXRlVG9Qcm9wcztcbiAgICB2YXIgZmluYWxNYXBTdGF0ZVRvUHJvcHMgPSBtYXBTdGF0ZVRvUHJvcHMgfHwgZGVmYXVsdE1hcFN0YXRlVG9Qcm9wcztcbiAgICByZXR1cm4gZnVuY3Rpb24gd3JhcFdpdGhDb25uZWN0KFdyYXBwZWRDb21wb25lbnQpIHtcbiAgICAgICAgdmFyIENvbm5lY3QgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgICAgICAgICBfX2V4dGVuZHMoQ29ubmVjdCwgX3N1cGVyKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIENvbm5lY3QocHJvcHMsIGNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwcm9wcywgY29udGV4dCkgfHwgdGhpcztcbiAgICAgICAgICAgICAgICBfdGhpcy51bnN1YnNjcmliZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGFuZGxlQ2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIV90aGlzLnVuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRTdGF0ZSA9IGZpbmFsTWFwU3RhdGVUb1Byb3BzKF90aGlzLnN0b3JlLmdldFN0YXRlKCksIF90aGlzLnByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBzdWJzY3JpYmVkOiBuZXh0U3RhdGUgfSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBfdGhpcy5zdG9yZSA9IF90aGlzLmNvbnRleHQ7XG4gICAgICAgICAgICAgICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZWQ6IGZpbmFsTWFwU3RhdGVUb1Byb3BzKF90aGlzLnN0b3JlLmdldFN0YXRlKCksIHByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgc3RvcmU6IF90aGlzLnN0b3JlLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBDb25uZWN0LmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9IGZ1bmN0aW9uIChwcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gdXNpbmcgb3duUHJvcHNcbiAgICAgICAgICAgICAgICBpZiAobWFwU3RhdGVUb1Byb3BzICYmIG1hcFN0YXRlVG9Qcm9wcy5sZW5ndGggPT09IDIgJiYgcHJvcHMgIT09IHByZXZTdGF0ZS5wcm9wcykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlZDogZmluYWxNYXBTdGF0ZVRvUHJvcHMocHJldlN0YXRlLnN0b3JlLmdldFN0YXRlKCksIHByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcHJvcHM6IHByb3BzIH07XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgQ29ubmVjdC5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cnlTdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBDb25uZWN0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyeVVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgQ29ubmVjdC5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gZnVuY3Rpb24gKG5leHRQcm9wcywgbmV4dFN0YXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICghc2hhbGxvd0VxdWFsKHRoaXMucHJvcHMsIG5leHRQcm9wcykgfHxcbiAgICAgICAgICAgICAgICAgICAgIXNoYWxsb3dFcXVhbCh0aGlzLnN0YXRlLnN1YnNjcmliZWQsIG5leHRTdGF0ZS5zdWJzY3JpYmVkKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgQ29ubmVjdC5wcm90b3R5cGUudHJ5U3Vic2NyaWJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmIChzaG91bGRTdWJzY3JpYmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSA9IHRoaXMuc3RvcmUuc3Vic2NyaWJlKHRoaXMuaGFuZGxlQ2hhbmdlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgQ29ubmVjdC5wcm90b3R5cGUudHJ5VW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudW5zdWJzY3JpYmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgQ29ubmVjdC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wcyA9IF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCB0aGlzLnByb3BzKSwgdGhpcy5zdGF0ZS5zdWJzY3JpYmVkKSwgeyBzdG9yZTogdGhpcy5zdG9yZSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChXcmFwcGVkQ29tcG9uZW50LCBfX2Fzc2lnbih7fSwgcHJvcHMsIHsgcmVmOiB0aGlzLnByb3BzLm1pbmlTdG9yZUZvcndhcmRlZFJlZiB9KSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgQ29ubmVjdC5kaXNwbGF5TmFtZSA9IFwiQ29ubmVjdChcIiArIGdldERpc3BsYXlOYW1lKFdyYXBwZWRDb21wb25lbnQpICsgXCIpXCI7XG4gICAgICAgICAgICBDb25uZWN0LmNvbnRleHRUeXBlID0gTWluaVN0b3JlQ29udGV4dDtcbiAgICAgICAgICAgIHJldHVybiBDb25uZWN0O1xuICAgICAgICB9KFJlYWN0LkNvbXBvbmVudCkpO1xuICAgICAgICBpZiAob3B0aW9ucy5mb3J3YXJkUmVmKSB7XG4gICAgICAgICAgICB2YXIgZm9yd2FyZGVkID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KENvbm5lY3QsIF9fYXNzaWduKHt9LCBwcm9wcywgeyBtaW5pU3RvcmVGb3J3YXJkZWRSZWY6IHJlZiB9KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBob2lzdFN0YXRpY3MoZm9yd2FyZGVkLCBXcmFwcGVkQ29tcG9uZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaG9pc3RTdGF0aWNzKENvbm5lY3QsIFdyYXBwZWRDb21wb25lbnQpO1xuICAgIH07XG59XG4iLCJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZShpbml0aWFsU3RhdGUpIHtcbiAgICB2YXIgc3RhdGUgPSBpbml0aWFsU3RhdGU7XG4gICAgdmFyIGxpc3RlbmVycyA9IFtdO1xuICAgIGZ1bmN0aW9uIHNldFN0YXRlKHBhcnRpYWwpIHtcbiAgICAgICAgc3RhdGUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGUpLCBwYXJ0aWFsKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxpc3RlbmVyc1tpXSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFN0YXRlKCkge1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHN1YnNjcmliZShsaXN0ZW5lcikge1xuICAgICAgICBsaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiB1bnN1YnNjcmliZSgpIHtcbiAgICAgICAgICAgIHZhciBpbmRleCA9IGxpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcbiAgICAgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBzZXRTdGF0ZTogc2V0U3RhdGUsXG4gICAgICAgIGdldFN0YXRlOiBnZXRTdGF0ZSxcbiAgICAgICAgc3Vic2NyaWJlOiBzdWJzY3JpYmUsXG4gICAgfTtcbn1cbiIsImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvbWl0KG9iaiwgZmllbGRzKSB7XG4gIHZhciBjbG9uZSA9IF9vYmplY3RTcHJlYWQoe30sIG9iaik7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGRzKSkge1xuICAgIGZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIGRlbGV0ZSBjbG9uZVtrZXldO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNsb25lO1xufSIsIi8qKlxuICogU2FmZSBjaGFpbmVkIGZ1bmN0aW9uXG4gKlxuICogV2lsbCBvbmx5IGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBpZiBuZWVkZWQsXG4gKiBvdGhlcndpc2Ugd2lsbCBwYXNzIGJhY2sgZXhpc3RpbmcgZnVuY3Rpb25zIG9yIG51bGwuXG4gKlxuICogQHJldHVybnMge2Z1bmN0aW9ufG51bGx9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUNoYWluZWRGdW5jdGlvbigpIHtcbiAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIGFyZ3NbMF07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gY2hhaW5lZEZ1bmN0aW9uKCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFyZ3NbaV0gJiYgYXJnc1tpXS5hcHBseSkge1xuICAgICAgICBhcmdzW2ldLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufSIsImltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXlcIjtcbi8vIE1JVCBMaWNlbnNlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2thaW1hbGxlYS9pc01vYmlsZVxudmFyIGFwcGxlUGhvbmUgPSAvaVBob25lL2k7XG52YXIgYXBwbGVJcG9kID0gL2lQb2QvaTtcbnZhciBhcHBsZVRhYmxldCA9IC9pUGFkL2k7XG52YXIgYW5kcm9pZFBob25lID0gL1xcYkFuZHJvaWQoPzouKylNb2JpbGVcXGIvaTsgLy8gTWF0Y2ggJ0FuZHJvaWQnIEFORCAnTW9iaWxlJ1xuXG52YXIgYW5kcm9pZFRhYmxldCA9IC9BbmRyb2lkL2k7XG52YXIgYW1hem9uUGhvbmUgPSAvXFxiQW5kcm9pZCg/Oi4rKVNENDkzMFVSXFxiL2k7XG52YXIgYW1hem9uVGFibGV0ID0gL1xcYkFuZHJvaWQoPzouKykoPzpLRltBLVpdezIsNH0pXFxiL2k7XG52YXIgd2luZG93c1Bob25lID0gL1dpbmRvd3MgUGhvbmUvaTtcbnZhciB3aW5kb3dzVGFibGV0ID0gL1xcYldpbmRvd3MoPzouKylBUk1cXGIvaTsgLy8gTWF0Y2ggJ1dpbmRvd3MnIEFORCAnQVJNJ1xuXG52YXIgb3RoZXJCbGFja2JlcnJ5ID0gL0JsYWNrQmVycnkvaTtcbnZhciBvdGhlckJsYWNrYmVycnkxMCA9IC9CQjEwL2k7XG52YXIgb3RoZXJPcGVyYSA9IC9PcGVyYSBNaW5pL2k7XG52YXIgb3RoZXJDaHJvbWUgPSAvXFxiKENyaU9TfENocm9tZSkoPzouKylNb2JpbGUvaTtcbnZhciBvdGhlckZpcmVmb3ggPSAvTW9iaWxlKD86LispRmlyZWZveFxcYi9pOyAvLyBNYXRjaCAnTW9iaWxlJyBBTkQgJ0ZpcmVmb3gnXG5cbmZ1bmN0aW9uIG1hdGNoKHJlZ2V4LCB1c2VyQWdlbnQpIHtcbiAgcmV0dXJuIHJlZ2V4LnRlc3QodXNlckFnZW50KTtcbn1cblxuZnVuY3Rpb24gaXNNb2JpbGUodXNlckFnZW50KSB7XG4gIHZhciB1YSA9IHVzZXJBZ2VudCB8fCAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgPyBuYXZpZ2F0b3IudXNlckFnZW50IDogJycpOyAvLyBGYWNlYm9vayBtb2JpbGUgYXBwJ3MgaW50ZWdyYXRlZCBicm93c2VyIGFkZHMgYSBidW5jaCBvZiBzdHJpbmdzIHRoYXRcbiAgLy8gbWF0Y2ggZXZlcnl0aGluZy4gU3RyaXAgaXQgb3V0IGlmIGl0IGV4aXN0cy5cblxuICB2YXIgdG1wID0gdWEuc3BsaXQoJ1tGQkFOJyk7XG5cbiAgaWYgKHR5cGVvZiB0bXBbMV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdmFyIF90bXAgPSB0bXA7XG5cbiAgICB2YXIgX3RtcDIgPSBfc2xpY2VkVG9BcnJheShfdG1wLCAxKTtcblxuICAgIHVhID0gX3RtcDJbMF07XG4gIH0gLy8gVHdpdHRlciBtb2JpbGUgYXBwJ3MgaW50ZWdyYXRlZCBicm93c2VyIG9uIGlQYWQgYWRkcyBhIFwiVHdpdHRlciBmb3JcbiAgLy8gaVBob25lXCIgc3RyaW5nLiBTYW1lIHByb2JhYmx5IGhhcHBlbnMgb24gb3RoZXIgdGFibGV0IHBsYXRmb3Jtcy5cbiAgLy8gVGhpcyB3aWxsIGNvbmZ1c2UgZGV0ZWN0aW9uIHNvIHN0cmlwIGl0IG91dCBpZiBpdCBleGlzdHMuXG5cblxuICB0bXAgPSB1YS5zcGxpdCgnVHdpdHRlcicpO1xuXG4gIGlmICh0eXBlb2YgdG1wWzFdICE9PSAndW5kZWZpbmVkJykge1xuICAgIHZhciBfdG1wMyA9IHRtcDtcblxuICAgIHZhciBfdG1wNCA9IF9zbGljZWRUb0FycmF5KF90bXAzLCAxKTtcblxuICAgIHVhID0gX3RtcDRbMF07XG4gIH1cblxuICB2YXIgcmVzdWx0ID0ge1xuICAgIGFwcGxlOiB7XG4gICAgICBwaG9uZTogbWF0Y2goYXBwbGVQaG9uZSwgdWEpICYmICFtYXRjaCh3aW5kb3dzUGhvbmUsIHVhKSxcbiAgICAgIGlwb2Q6IG1hdGNoKGFwcGxlSXBvZCwgdWEpLFxuICAgICAgdGFibGV0OiAhbWF0Y2goYXBwbGVQaG9uZSwgdWEpICYmIG1hdGNoKGFwcGxlVGFibGV0LCB1YSkgJiYgIW1hdGNoKHdpbmRvd3NQaG9uZSwgdWEpLFxuICAgICAgZGV2aWNlOiAobWF0Y2goYXBwbGVQaG9uZSwgdWEpIHx8IG1hdGNoKGFwcGxlSXBvZCwgdWEpIHx8IG1hdGNoKGFwcGxlVGFibGV0LCB1YSkpICYmICFtYXRjaCh3aW5kb3dzUGhvbmUsIHVhKVxuICAgIH0sXG4gICAgYW1hem9uOiB7XG4gICAgICBwaG9uZTogbWF0Y2goYW1hem9uUGhvbmUsIHVhKSxcbiAgICAgIHRhYmxldDogIW1hdGNoKGFtYXpvblBob25lLCB1YSkgJiYgbWF0Y2goYW1hem9uVGFibGV0LCB1YSksXG4gICAgICBkZXZpY2U6IG1hdGNoKGFtYXpvblBob25lLCB1YSkgfHwgbWF0Y2goYW1hem9uVGFibGV0LCB1YSlcbiAgICB9LFxuICAgIGFuZHJvaWQ6IHtcbiAgICAgIHBob25lOiAhbWF0Y2god2luZG93c1Bob25lLCB1YSkgJiYgbWF0Y2goYW1hem9uUGhvbmUsIHVhKSB8fCAhbWF0Y2god2luZG93c1Bob25lLCB1YSkgJiYgbWF0Y2goYW5kcm9pZFBob25lLCB1YSksXG4gICAgICB0YWJsZXQ6ICFtYXRjaCh3aW5kb3dzUGhvbmUsIHVhKSAmJiAhbWF0Y2goYW1hem9uUGhvbmUsIHVhKSAmJiAhbWF0Y2goYW5kcm9pZFBob25lLCB1YSkgJiYgKG1hdGNoKGFtYXpvblRhYmxldCwgdWEpIHx8IG1hdGNoKGFuZHJvaWRUYWJsZXQsIHVhKSksXG4gICAgICBkZXZpY2U6ICFtYXRjaCh3aW5kb3dzUGhvbmUsIHVhKSAmJiAobWF0Y2goYW1hem9uUGhvbmUsIHVhKSB8fCBtYXRjaChhbWF6b25UYWJsZXQsIHVhKSB8fCBtYXRjaChhbmRyb2lkUGhvbmUsIHVhKSB8fCBtYXRjaChhbmRyb2lkVGFibGV0LCB1YSkpIHx8IG1hdGNoKC9cXGJva2h0dHBcXGIvaSwgdWEpXG4gICAgfSxcbiAgICB3aW5kb3dzOiB7XG4gICAgICBwaG9uZTogbWF0Y2god2luZG93c1Bob25lLCB1YSksXG4gICAgICB0YWJsZXQ6IG1hdGNoKHdpbmRvd3NUYWJsZXQsIHVhKSxcbiAgICAgIGRldmljZTogbWF0Y2god2luZG93c1Bob25lLCB1YSkgfHwgbWF0Y2god2luZG93c1RhYmxldCwgdWEpXG4gICAgfSxcbiAgICBvdGhlcjoge1xuICAgICAgYmxhY2tiZXJyeTogbWF0Y2gob3RoZXJCbGFja2JlcnJ5LCB1YSksXG4gICAgICBibGFja2JlcnJ5MTA6IG1hdGNoKG90aGVyQmxhY2tiZXJyeTEwLCB1YSksXG4gICAgICBvcGVyYTogbWF0Y2gob3RoZXJPcGVyYSwgdWEpLFxuICAgICAgZmlyZWZveDogbWF0Y2gob3RoZXJGaXJlZm94LCB1YSksXG4gICAgICBjaHJvbWU6IG1hdGNoKG90aGVyQ2hyb21lLCB1YSksXG4gICAgICBkZXZpY2U6IG1hdGNoKG90aGVyQmxhY2tiZXJyeSwgdWEpIHx8IG1hdGNoKG90aGVyQmxhY2tiZXJyeTEwLCB1YSkgfHwgbWF0Y2gob3RoZXJPcGVyYSwgdWEpIHx8IG1hdGNoKG90aGVyRmlyZWZveCwgdWEpIHx8IG1hdGNoKG90aGVyQ2hyb21lLCB1YSlcbiAgICB9LFxuICAgIC8vIEFkZGl0aW9uYWxcbiAgICBhbnk6IG51bGwsXG4gICAgcGhvbmU6IG51bGwsXG4gICAgdGFibGV0OiBudWxsXG4gIH07XG4gIHJlc3VsdC5hbnkgPSByZXN1bHQuYXBwbGUuZGV2aWNlIHx8IHJlc3VsdC5hbmRyb2lkLmRldmljZSB8fCByZXN1bHQud2luZG93cy5kZXZpY2UgfHwgcmVzdWx0Lm90aGVyLmRldmljZTsgLy8gZXhjbHVkZXMgJ290aGVyJyBkZXZpY2VzIGFuZCBpcG9kcywgdGFyZ2V0aW5nIHRvdWNoc2NyZWVuIHBob25lc1xuXG4gIHJlc3VsdC5waG9uZSA9IHJlc3VsdC5hcHBsZS5waG9uZSB8fCByZXN1bHQuYW5kcm9pZC5waG9uZSB8fCByZXN1bHQud2luZG93cy5waG9uZTtcbiAgcmVzdWx0LnRhYmxldCA9IHJlc3VsdC5hcHBsZS50YWJsZXQgfHwgcmVzdWx0LmFuZHJvaWQudGFibGV0IHx8IHJlc3VsdC53aW5kb3dzLnRhYmxldDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxudmFyIGRlZmF1bHRSZXN1bHQgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGlzTW9iaWxlKCkpLCB7fSwge1xuICBpc01vYmlsZTogaXNNb2JpbGVcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0UmVzdWx0OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc01vYmlsZSBmcm9tICcuL3V0aWxzL2lzTW9iaWxlJztcbmV4cG9ydCBmdW5jdGlvbiBub29wKCkge31cbmV4cG9ydCBmdW5jdGlvbiBnZXRLZXlGcm9tQ2hpbGRyZW5JbmRleChjaGlsZCwgbWVudUV2ZW50S2V5LCBpbmRleCkge1xuICB2YXIgcHJlZml4ID0gbWVudUV2ZW50S2V5IHx8ICcnO1xuICByZXR1cm4gY2hpbGQua2V5IHx8IFwiXCIuY29uY2F0KHByZWZpeCwgXCJpdGVtX1wiKS5jb25jYXQoaW5kZXgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE1lbnVJZEZyb21TdWJNZW51RXZlbnRLZXkoZXZlbnRLZXkpIHtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KGV2ZW50S2V5LCBcIi1tZW51LVwiKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsb29wTWVudUl0ZW0oY2hpbGRyZW4sIGNiKSB7XG4gIHZhciBpbmRleCA9IC0xO1xuICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoYykge1xuICAgIGluZGV4ICs9IDE7XG5cbiAgICBpZiAoYyAmJiBjLnR5cGUgJiYgYy50eXBlLmlzTWVudUl0ZW1Hcm91cCkge1xuICAgICAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaChjLnByb3BzLmNoaWxkcmVuLCBmdW5jdGlvbiAoYzIpIHtcbiAgICAgICAgaW5kZXggKz0gMTtcbiAgICAgICAgY2IoYzIsIGluZGV4KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYihjLCBpbmRleCk7XG4gICAgfVxuICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsb29wTWVudUl0ZW1SZWN1cnNpdmVseShjaGlsZHJlbiwga2V5cywgcmV0KSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWNoaWxkcmVuIHx8IHJldC5maW5kKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaChjaGlsZHJlbiwgZnVuY3Rpb24gKGMpIHtcbiAgICBpZiAoYykge1xuICAgICAgdmFyIGNvbnN0cnVjdCA9IGMudHlwZTtcblxuICAgICAgaWYgKCFjb25zdHJ1Y3QgfHwgIShjb25zdHJ1Y3QuaXNTdWJNZW51IHx8IGNvbnN0cnVjdC5pc01lbnVJdGVtIHx8IGNvbnN0cnVjdC5pc01lbnVJdGVtR3JvdXApKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGtleXMuaW5kZXhPZihjLmtleSkgIT09IC0xKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICByZXQuZmluZCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGMucHJvcHMuY2hpbGRyZW4pIHtcbiAgICAgICAgbG9vcE1lbnVJdGVtUmVjdXJzaXZlbHkoYy5wcm9wcy5jaGlsZHJlbiwga2V5cywgcmV0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuZXhwb3J0IHZhciBtZW51QWxsUHJvcHMgPSBbJ2RlZmF1bHRTZWxlY3RlZEtleXMnLCAnc2VsZWN0ZWRLZXlzJywgJ2RlZmF1bHRPcGVuS2V5cycsICdvcGVuS2V5cycsICdtb2RlJywgJ2dldFBvcHVwQ29udGFpbmVyJywgJ29uU2VsZWN0JywgJ29uRGVzZWxlY3QnLCAnb25EZXN0cm95JywgJ29wZW5UcmFuc2l0aW9uTmFtZScsICdvcGVuQW5pbWF0aW9uJywgJ3N1Yk1lbnVPcGVuRGVsYXknLCAnc3ViTWVudUNsb3NlRGVsYXknLCAnZm9yY2VTdWJNZW51UmVuZGVyJywgJ3RyaWdnZXJTdWJNZW51QWN0aW9uJywgJ2xldmVsJywgJ3NlbGVjdGFibGUnLCAnbXVsdGlwbGUnLCAnb25PcGVuQ2hhbmdlJywgJ3Zpc2libGUnLCAnZm9jdXNhYmxlJywgJ2RlZmF1bHRBY3RpdmVGaXJzdCcsICdwcmVmaXhDbHMnLCAnaW5saW5lSW5kZW50JywgJ3BhcmVudE1lbnUnLCAndGl0bGUnLCAncm9vdFByZWZpeENscycsICdldmVudEtleScsICdhY3RpdmUnLCAnb25JdGVtSG92ZXInLCAnb25UaXRsZU1vdXNlRW50ZXInLCAnb25UaXRsZU1vdXNlTGVhdmUnLCAnb25UaXRsZUNsaWNrJywgJ3BvcHVwQWxpZ24nLCAncG9wdXBPZmZzZXQnLCAnaXNPcGVuJywgJ3JlbmRlck1lbnVJdGVtJywgJ21hbnVhbFJlZicsICdzdWJNZW51S2V5JywgJ2Rpc2FibGVkJywgJ2luZGV4JywgJ2lzU2VsZWN0ZWQnLCAnc3RvcmUnLCAnYWN0aXZlS2V5JywgJ2J1aWx0aW5QbGFjZW1lbnRzJywgJ292ZXJmbG93ZWRJbmRpY2F0b3InLCAnbW90aW9uJywgLy8gdGhlIGZvbGxvd2luZyBrZXlzIGZvdW5kIG5lZWQgdG8gYmUgcmVtb3ZlZCBmcm9tIHRlc3QgcmVncmVzc2lvblxuJ2F0dHJpYnV0ZScsICd2YWx1ZScsICdwb3B1cENsYXNzTmFtZScsICdpbmxpbmVDb2xsYXBzZWQnLCAnbWVudScsICd0aGVtZScsICdpdGVtSWNvbicsICdleHBhbmRJY29uJ107IC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMTQwMDdcbi8vIHJlZjogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MzYwODg5XG4vLyBnZXRCb3VuZGluZ0NsaWVudFJlY3QgcmV0dXJuIHRoZSBmdWxsIHByZWNpc2lvbiB2YWx1ZSwgd2hpY2ggaXNcbi8vIG5vdCB0aGUgc2FtZSBiZWhhdmlvciBhcyBvbiBjaHJvbWUuIFNldCB0aGUgcHJlY2lzaW9uIHRvIDYgdG9cbi8vIHVuaWZ5IHRoZWlyIGJlaGF2aW9yXG5cbmV4cG9ydCB2YXIgZ2V0V2lkdGggPSBmdW5jdGlvbiBnZXRXaWR0aChlbGVtKSB7XG4gIHZhciBpbmNsdWRlTWFyZ2luID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTtcbiAgdmFyIHdpZHRoID0gZWxlbSAmJiB0eXBlb2YgZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QgPT09ICdmdW5jdGlvbicgJiYgZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcblxuICBpZiAod2lkdGgpIHtcbiAgICBpZiAoaW5jbHVkZU1hcmdpbikge1xuICAgICAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtKSxcbiAgICAgICAgICBtYXJnaW5MZWZ0ID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luTGVmdCxcbiAgICAgICAgICBtYXJnaW5SaWdodCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblJpZ2h0O1xuXG4gICAgICB3aWR0aCArPSArbWFyZ2luTGVmdC5yZXBsYWNlKCdweCcsICcnKSArICttYXJnaW5SaWdodC5yZXBsYWNlKCdweCcsICcnKTtcbiAgICB9XG5cbiAgICB3aWR0aCA9ICt3aWR0aC50b0ZpeGVkKDYpO1xuICB9XG5cbiAgcmV0dXJuIHdpZHRoIHx8IDA7XG59O1xuZXhwb3J0IHZhciBzZXRTdHlsZSA9IGZ1bmN0aW9uIHNldFN0eWxlKGVsZW0sIHN0eWxlUHJvcGVydHksIHZhbHVlKSB7XG4gIGlmIChlbGVtICYmIF90eXBlb2YoZWxlbS5zdHlsZSkgPT09ICdvYmplY3QnKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgZWxlbS5zdHlsZVtzdHlsZVByb3BlcnR5XSA9IHZhbHVlO1xuICB9XG59O1xuZXhwb3J0IHZhciBpc01vYmlsZURldmljZSA9IGZ1bmN0aW9uIGlzTW9iaWxlRGV2aWNlKCkge1xuICByZXR1cm4gaXNNb2JpbGUuYW55O1xufTsiLCJ2YXIgYXV0b0FkanVzdE92ZXJmbG93ID0ge1xuICBhZGp1c3RYOiAxLFxuICBhZGp1c3RZOiAxXG59O1xuZXhwb3J0IHZhciBwbGFjZW1lbnRzID0ge1xuICB0b3BMZWZ0OiB7XG4gICAgcG9pbnRzOiBbJ2JsJywgJ3RsJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvdyxcbiAgICBvZmZzZXQ6IFswLCAtN11cbiAgfSxcbiAgYm90dG9tTGVmdDoge1xuICAgIHBvaW50czogWyd0bCcsICdibCddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3csXG4gICAgb2Zmc2V0OiBbMCwgN11cbiAgfSxcbiAgbGVmdFRvcDoge1xuICAgIHBvaW50czogWyd0cicsICd0bCddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3csXG4gICAgb2Zmc2V0OiBbLTQsIDBdXG4gIH0sXG4gIHJpZ2h0VG9wOiB7XG4gICAgcG9pbnRzOiBbJ3RsJywgJ3RyJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvdyxcbiAgICBvZmZzZXQ6IFs0LCAwXVxuICB9XG59O1xuZXhwb3J0IHZhciBwbGFjZW1lbnRzUnRsID0ge1xuICB0b3BMZWZ0OiB7XG4gICAgcG9pbnRzOiBbJ2JsJywgJ3RsJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvdyxcbiAgICBvZmZzZXQ6IFswLCAtN11cbiAgfSxcbiAgYm90dG9tTGVmdDoge1xuICAgIHBvaW50czogWyd0bCcsICdibCddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3csXG4gICAgb2Zmc2V0OiBbMCwgN11cbiAgfSxcbiAgcmlnaHRUb3A6IHtcbiAgICBwb2ludHM6IFsndHInLCAndGwnXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93LFxuICAgIG9mZnNldDogWy00LCAwXVxuICB9LFxuICBsZWZ0VG9wOiB7XG4gICAgcG9pbnRzOiBbJ3RsJywgJ3RyJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvdyxcbiAgICBvZmZzZXQ6IFs0LCAwXVxuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgcGxhY2VtZW50czsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgVHJpZ2dlciBmcm9tICdyYy10cmlnZ2VyJztcbmltcG9ydCByYWYgZnJvbSBcInJjLXV0aWwvZXMvcmFmXCI7XG5pbXBvcnQgS2V5Q29kZSBmcm9tIFwicmMtdXRpbC9lcy9LZXlDb2RlXCI7XG5pbXBvcnQgQ1NTTW90aW9uIGZyb20gJ3JjLW1vdGlvbic7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tICdtaW5pLXN0b3JlJztcbmltcG9ydCBTdWJQb3B1cE1lbnUgZnJvbSAnLi9TdWJQb3B1cE1lbnUnO1xuaW1wb3J0IHsgcGxhY2VtZW50cywgcGxhY2VtZW50c1J0bCB9IGZyb20gJy4vcGxhY2VtZW50cyc7XG5pbXBvcnQgeyBub29wLCBsb29wTWVudUl0ZW1SZWN1cnNpdmVseSwgZ2V0TWVudUlkRnJvbVN1Yk1lbnVFdmVudEtleSwgbWVudUFsbFByb3BzIH0gZnJvbSAnLi91dGlsJztcbnZhciBndWlkID0gMDtcbnZhciBwb3B1cFBsYWNlbWVudE1hcCA9IHtcbiAgaG9yaXpvbnRhbDogJ2JvdHRvbUxlZnQnLFxuICB2ZXJ0aWNhbDogJ3JpZ2h0VG9wJyxcbiAgJ3ZlcnRpY2FsLWxlZnQnOiAncmlnaHRUb3AnLFxuICAndmVydGljYWwtcmlnaHQnOiAnbGVmdFRvcCdcbn07XG5cbnZhciB1cGRhdGVEZWZhdWx0QWN0aXZlRmlyc3QgPSBmdW5jdGlvbiB1cGRhdGVEZWZhdWx0QWN0aXZlRmlyc3Qoc3RvcmUsIGV2ZW50S2V5LCBkZWZhdWx0QWN0aXZlRmlyc3QpIHtcbiAgdmFyIG1lbnVJZCA9IGdldE1lbnVJZEZyb21TdWJNZW51RXZlbnRLZXkoZXZlbnRLZXkpO1xuICB2YXIgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICBzdG9yZS5zZXRTdGF0ZSh7XG4gICAgZGVmYXVsdEFjdGl2ZUZpcnN0OiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHN0YXRlLmRlZmF1bHRBY3RpdmVGaXJzdCksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIG1lbnVJZCwgZGVmYXVsdEFjdGl2ZUZpcnN0KSlcbiAgfSk7XG59O1xuXG5leHBvcnQgdmFyIFN1Yk1lbnUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFN1Yk1lbnUsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoU3ViTWVudSk7XG5cbiAgZnVuY3Rpb24gU3ViTWVudShwcm9wcykge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdWJNZW51KTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcHJvcHMpO1xuXG4gICAgX3RoaXMub25EZXN0cm95ID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgX3RoaXMucHJvcHMub25EZXN0cm95KGtleSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBub3RlOlxuICAgICAqICBUaGlzIGxlZ2FjeSBjb2RlIHRoYXQgYG9uS2V5RG93bmAgaXMgY2FsbGVkIGJ5IHBhcmVudCBpbnN0ZWFkIG9mIGRvbSBzZWxmLlxuICAgICAqICB3aGljaCBuZWVkIHJldHVybiBjb2RlIHRvIGNoZWNrIGlmIHRoaXMgZXZlbnQgaXMgaGFuZGxlZFxuICAgICAqL1xuXG5cbiAgICBfdGhpcy5vbktleURvd24gPSBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIGtleUNvZGUgPSBlLmtleUNvZGU7XG4gICAgICB2YXIgbWVudSA9IF90aGlzLm1lbnVJbnN0YW5jZTtcbiAgICAgIHZhciBzdG9yZSA9IF90aGlzLnByb3BzLnN0b3JlO1xuXG4gICAgICB2YXIgdmlzaWJsZSA9IF90aGlzLmdldFZpc2libGUoKTtcblxuICAgICAgaWYgKGtleUNvZGUgPT09IEtleUNvZGUuRU5URVIpIHtcbiAgICAgICAgX3RoaXMub25UaXRsZUNsaWNrKGUpO1xuXG4gICAgICAgIHVwZGF0ZURlZmF1bHRBY3RpdmVGaXJzdChzdG9yZSwgX3RoaXMucHJvcHMuZXZlbnRLZXksIHRydWUpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGtleUNvZGUgPT09IEtleUNvZGUuUklHSFQpIHtcbiAgICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgICBtZW51Lm9uS2V5RG93bihlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy50cmlnZ2VyT3BlbkNoYW5nZSh0cnVlKTsgLy8gbmVlZCB0byB1cGRhdGUgY3VycmVudCBtZW51J3MgZGVmYXVsdEFjdGl2ZUZpcnN0IHZhbHVlXG5cblxuICAgICAgICAgIHVwZGF0ZURlZmF1bHRBY3RpdmVGaXJzdChzdG9yZSwgX3RoaXMucHJvcHMuZXZlbnRLZXksIHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChrZXlDb2RlID09PSBLZXlDb2RlLkxFRlQpIHtcbiAgICAgICAgdmFyIGhhbmRsZWQ7XG5cbiAgICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgICBoYW5kbGVkID0gbWVudS5vbktleURvd24oZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaGFuZGxlZCkge1xuICAgICAgICAgIF90aGlzLnRyaWdnZXJPcGVuQ2hhbmdlKGZhbHNlKTtcblxuICAgICAgICAgIGhhbmRsZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGhhbmRsZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmICh2aXNpYmxlICYmIChrZXlDb2RlID09PSBLZXlDb2RlLlVQIHx8IGtleUNvZGUgPT09IEtleUNvZGUuRE9XTikpIHtcbiAgICAgICAgcmV0dXJuIG1lbnUub25LZXlEb3duKGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICBfdGhpcy5vbk9wZW5DaGFuZ2UgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgX3RoaXMucHJvcHMub25PcGVuQ2hhbmdlKGUpO1xuICAgIH07XG5cbiAgICBfdGhpcy5vblBvcHVwVmlzaWJsZUNoYW5nZSA9IGZ1bmN0aW9uICh2aXNpYmxlKSB7XG4gICAgICBfdGhpcy50cmlnZ2VyT3BlbkNoYW5nZSh2aXNpYmxlLCB2aXNpYmxlID8gJ21vdXNlZW50ZXInIDogJ21vdXNlbGVhdmUnKTtcbiAgICB9O1xuXG4gICAgX3RoaXMub25Nb3VzZUVudGVyID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIGtleSA9IF90aGlzJHByb3BzLmV2ZW50S2V5LFxuICAgICAgICAgIG9uTW91c2VFbnRlciA9IF90aGlzJHByb3BzLm9uTW91c2VFbnRlcixcbiAgICAgICAgICBzdG9yZSA9IF90aGlzJHByb3BzLnN0b3JlO1xuICAgICAgdXBkYXRlRGVmYXVsdEFjdGl2ZUZpcnN0KHN0b3JlLCBfdGhpcy5wcm9wcy5ldmVudEtleSwgZmFsc2UpO1xuICAgICAgb25Nb3VzZUVudGVyKHtcbiAgICAgICAga2V5OiBrZXksXG4gICAgICAgIGRvbUV2ZW50OiBlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX3RoaXMub25Nb3VzZUxlYXZlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBwYXJlbnRNZW51ID0gX3RoaXMkcHJvcHMyLnBhcmVudE1lbnUsXG4gICAgICAgICAgZXZlbnRLZXkgPSBfdGhpcyRwcm9wczIuZXZlbnRLZXksXG4gICAgICAgICAgb25Nb3VzZUxlYXZlID0gX3RoaXMkcHJvcHMyLm9uTW91c2VMZWF2ZTtcbiAgICAgIHBhcmVudE1lbnUuc3ViTWVudUluc3RhbmNlID0gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICBvbk1vdXNlTGVhdmUoe1xuICAgICAgICBrZXk6IGV2ZW50S2V5LFxuICAgICAgICBkb21FdmVudDogZVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIF90aGlzLm9uVGl0bGVNb3VzZUVudGVyID0gZnVuY3Rpb24gKGRvbUV2ZW50KSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAga2V5ID0gX3RoaXMkcHJvcHMzLmV2ZW50S2V5LFxuICAgICAgICAgIG9uSXRlbUhvdmVyID0gX3RoaXMkcHJvcHMzLm9uSXRlbUhvdmVyLFxuICAgICAgICAgIG9uVGl0bGVNb3VzZUVudGVyID0gX3RoaXMkcHJvcHMzLm9uVGl0bGVNb3VzZUVudGVyO1xuICAgICAgb25JdGVtSG92ZXIoe1xuICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgaG92ZXI6IHRydWVcbiAgICAgIH0pO1xuICAgICAgb25UaXRsZU1vdXNlRW50ZXIoe1xuICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgZG9tRXZlbnQ6IGRvbUV2ZW50XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX3RoaXMub25UaXRsZU1vdXNlTGVhdmUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNCA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIHBhcmVudE1lbnUgPSBfdGhpcyRwcm9wczQucGFyZW50TWVudSxcbiAgICAgICAgICBldmVudEtleSA9IF90aGlzJHByb3BzNC5ldmVudEtleSxcbiAgICAgICAgICBvbkl0ZW1Ib3ZlciA9IF90aGlzJHByb3BzNC5vbkl0ZW1Ib3ZlcixcbiAgICAgICAgICBvblRpdGxlTW91c2VMZWF2ZSA9IF90aGlzJHByb3BzNC5vblRpdGxlTW91c2VMZWF2ZTtcbiAgICAgIHBhcmVudE1lbnUuc3ViTWVudUluc3RhbmNlID0gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICBvbkl0ZW1Ib3Zlcih7XG4gICAgICAgIGtleTogZXZlbnRLZXksXG4gICAgICAgIGhvdmVyOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICBvblRpdGxlTW91c2VMZWF2ZSh7XG4gICAgICAgIGtleTogZXZlbnRLZXksXG4gICAgICAgIGRvbUV2ZW50OiBlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX3RoaXMub25UaXRsZUNsaWNrID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBfYXNzZXJ0VGhpc0luaXRpYWxpemUgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSxcbiAgICAgICAgICBwcm9wcyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZS5wcm9wcztcblxuICAgICAgcHJvcHMub25UaXRsZUNsaWNrKHtcbiAgICAgICAga2V5OiBwcm9wcy5ldmVudEtleSxcbiAgICAgICAgZG9tRXZlbnQ6IGVcbiAgICAgIH0pO1xuXG4gICAgICBpZiAocHJvcHMudHJpZ2dlclN1Yk1lbnVBY3Rpb24gPT09ICdob3ZlcicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy50cmlnZ2VyT3BlbkNoYW5nZSghX3RoaXMuZ2V0VmlzaWJsZSgpLCAnY2xpY2snKTtcblxuICAgICAgdXBkYXRlRGVmYXVsdEFjdGl2ZUZpcnN0KHByb3BzLnN0b3JlLCBfdGhpcy5wcm9wcy5ldmVudEtleSwgZmFsc2UpO1xuICAgIH07XG5cbiAgICBfdGhpcy5vblN1Yk1lbnVDbGljayA9IGZ1bmN0aW9uIChpbmZvKSB7XG4gICAgICAvLyBpbiB0aGUgY2FzZSBvZiBvdmVyZmxvd2VkIHN1Ym1lbnVcbiAgICAgIC8vIG9uQ2xpY2sgaXMgbm90IGNvcGllZCBvdmVyXG4gICAgICBpZiAodHlwZW9mIF90aGlzLnByb3BzLm9uQ2xpY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25DbGljayhfdGhpcy5hZGRLZXlQYXRoKGluZm8pKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3RoaXMub25TZWxlY3QgPSBmdW5jdGlvbiAoaW5mbykge1xuICAgICAgX3RoaXMucHJvcHMub25TZWxlY3QoaW5mbyk7XG4gICAgfTtcblxuICAgIF90aGlzLm9uRGVzZWxlY3QgPSBmdW5jdGlvbiAoaW5mbykge1xuICAgICAgX3RoaXMucHJvcHMub25EZXNlbGVjdChpbmZvKTtcbiAgICB9O1xuXG4gICAgX3RoaXMuZ2V0UHJlZml4Q2xzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KF90aGlzLnByb3BzLnJvb3RQcmVmaXhDbHMsIFwiLXN1Ym1lbnVcIik7XG4gICAgfTtcblxuICAgIF90aGlzLmdldEFjdGl2ZUNsYXNzTmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdChfdGhpcy5nZXRQcmVmaXhDbHMoKSwgXCItYWN0aXZlXCIpO1xuICAgIH07XG5cbiAgICBfdGhpcy5nZXREaXNhYmxlZENsYXNzTmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdChfdGhpcy5nZXRQcmVmaXhDbHMoKSwgXCItZGlzYWJsZWRcIik7XG4gICAgfTtcblxuICAgIF90aGlzLmdldFNlbGVjdGVkQ2xhc3NOYW1lID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KF90aGlzLmdldFByZWZpeENscygpLCBcIi1zZWxlY3RlZFwiKTtcbiAgICB9O1xuXG4gICAgX3RoaXMuZ2V0T3BlbkNsYXNzTmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdChfdGhpcy5wcm9wcy5yb290UHJlZml4Q2xzLCBcIi1zdWJtZW51LW9wZW5cIik7XG4gICAgfTtcblxuICAgIF90aGlzLmdldFZpc2libGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMuc3RhdGUuaXNPcGVuO1xuICAgIH07XG5cbiAgICBfdGhpcy5nZXRNb2RlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnN0YXRlLm1vZGU7XG4gICAgfTtcblxuICAgIF90aGlzLnNhdmVNZW51SW5zdGFuY2UgPSBmdW5jdGlvbiAoYykge1xuICAgICAgLy8gY2hpbGRyZW4gbWVudSBpbnN0YW5jZVxuICAgICAgX3RoaXMubWVudUluc3RhbmNlID0gYztcbiAgICB9O1xuXG4gICAgX3RoaXMuYWRkS2V5UGF0aCA9IGZ1bmN0aW9uIChpbmZvKSB7XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBpbmZvKSwge30sIHtcbiAgICAgICAga2V5UGF0aDogKGluZm8ua2V5UGF0aCB8fCBbXSkuY29uY2F0KF90aGlzLnByb3BzLmV2ZW50S2V5KVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIF90aGlzLnRyaWdnZXJPcGVuQ2hhbmdlID0gZnVuY3Rpb24gKG9wZW4sIHR5cGUpIHtcbiAgICAgIHZhciBrZXkgPSBfdGhpcy5wcm9wcy5ldmVudEtleTtcblxuICAgICAgdmFyIG9wZW5DaGFuZ2UgPSBmdW5jdGlvbiBvcGVuQ2hhbmdlKCkge1xuICAgICAgICBfdGhpcy5vbk9wZW5DaGFuZ2Uoe1xuICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgIGl0ZW06IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLFxuICAgICAgICAgIHRyaWdnZXI6IHR5cGUsXG4gICAgICAgICAgb3Blbjogb3BlblxuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGlmICh0eXBlID09PSAnbW91c2VlbnRlcicpIHtcbiAgICAgICAgLy8gbWFrZSBzdXJlIG1vdXNlZW50ZXIgaGFwcGVuIGFmdGVyIG90aGVyIG1lbnUgaXRlbSdzIG1vdXNlbGVhdmVcbiAgICAgICAgX3RoaXMubW91c2VlbnRlclRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBvcGVuQ2hhbmdlKCk7XG4gICAgICAgIH0sIDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3BlbkNoYW5nZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5pc0NoaWxkcmVuU2VsZWN0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcmV0ID0ge1xuICAgICAgICBmaW5kOiBmYWxzZVxuICAgICAgfTtcbiAgICAgIGxvb3BNZW51SXRlbVJlY3Vyc2l2ZWx5KF90aGlzLnByb3BzLmNoaWxkcmVuLCBfdGhpcy5wcm9wcy5zZWxlY3RlZEtleXMsIHJldCk7XG4gICAgICByZXR1cm4gcmV0LmZpbmQ7XG4gICAgfTtcblxuICAgIF90aGlzLmlzSW5saW5lTW9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5nZXRNb2RlKCkgPT09ICdpbmxpbmUnO1xuICAgIH07XG5cbiAgICBfdGhpcy5hZGp1c3RXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKCFfdGhpcy5zdWJNZW51VGl0bGUgfHwgIV90aGlzLm1lbnVJbnN0YW5jZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBwb3B1cE1lbnUgPSBSZWFjdERPTS5maW5kRE9NTm9kZShfdGhpcy5tZW51SW5zdGFuY2UpO1xuXG4gICAgICBpZiAocG9wdXBNZW51Lm9mZnNldFdpZHRoID49IF90aGlzLnN1Yk1lbnVUaXRsZS5vZmZzZXRXaWR0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXG5cbiAgICAgIHBvcHVwTWVudS5zdHlsZS5taW5XaWR0aCA9IFwiXCIuY29uY2F0KF90aGlzLnN1Yk1lbnVUaXRsZS5vZmZzZXRXaWR0aCwgXCJweFwiKTtcbiAgICB9O1xuXG4gICAgX3RoaXMuc2F2ZVN1Yk1lbnVUaXRsZSA9IGZ1bmN0aW9uIChzdWJNZW51VGl0bGUpIHtcbiAgICAgIF90aGlzLnN1Yk1lbnVUaXRsZSA9IHN1Yk1lbnVUaXRsZTtcbiAgICB9O1xuXG4gICAgX3RoaXMuZ2V0QmFzZVByb3BzID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTIgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSxcbiAgICAgICAgICBwcm9wcyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTIucHJvcHM7XG5cbiAgICAgIHZhciBtZXJnZWRNb2RlID0gX3RoaXMuZ2V0TW9kZSgpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiBtZXJnZWRNb2RlID09PSAnaG9yaXpvbnRhbCcgPyAndmVydGljYWwnIDogbWVyZ2VkTW9kZSxcbiAgICAgICAgdmlzaWJsZTogX3RoaXMuZ2V0VmlzaWJsZSgpLFxuICAgICAgICBsZXZlbDogcHJvcHMubGV2ZWwgKyAxLFxuICAgICAgICBpbmxpbmVJbmRlbnQ6IHByb3BzLmlubGluZUluZGVudCxcbiAgICAgICAgZm9jdXNhYmxlOiBmYWxzZSxcbiAgICAgICAgb25DbGljazogX3RoaXMub25TdWJNZW51Q2xpY2ssXG4gICAgICAgIG9uU2VsZWN0OiBfdGhpcy5vblNlbGVjdCxcbiAgICAgICAgb25EZXNlbGVjdDogX3RoaXMub25EZXNlbGVjdCxcbiAgICAgICAgb25EZXN0cm95OiBfdGhpcy5vbkRlc3Ryb3ksXG4gICAgICAgIHNlbGVjdGVkS2V5czogcHJvcHMuc2VsZWN0ZWRLZXlzLFxuICAgICAgICBldmVudEtleTogXCJcIi5jb25jYXQocHJvcHMuZXZlbnRLZXksIFwiLW1lbnUtXCIpLFxuICAgICAgICBvcGVuS2V5czogcHJvcHMub3BlbktleXMsXG4gICAgICAgIG1vdGlvbjogcHJvcHMubW90aW9uLFxuICAgICAgICBvbk9wZW5DaGFuZ2U6IF90aGlzLm9uT3BlbkNoYW5nZSxcbiAgICAgICAgc3ViTWVudU9wZW5EZWxheTogcHJvcHMuc3ViTWVudU9wZW5EZWxheSxcbiAgICAgICAgcGFyZW50TWVudTogX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksXG4gICAgICAgIHN1Yk1lbnVDbG9zZURlbGF5OiBwcm9wcy5zdWJNZW51Q2xvc2VEZWxheSxcbiAgICAgICAgZm9yY2VTdWJNZW51UmVuZGVyOiBwcm9wcy5mb3JjZVN1Yk1lbnVSZW5kZXIsXG4gICAgICAgIHRyaWdnZXJTdWJNZW51QWN0aW9uOiBwcm9wcy50cmlnZ2VyU3ViTWVudUFjdGlvbixcbiAgICAgICAgYnVpbHRpblBsYWNlbWVudHM6IHByb3BzLmJ1aWx0aW5QbGFjZW1lbnRzLFxuICAgICAgICBkZWZhdWx0QWN0aXZlRmlyc3Q6IHByb3BzLnN0b3JlLmdldFN0YXRlKCkuZGVmYXVsdEFjdGl2ZUZpcnN0W2dldE1lbnVJZEZyb21TdWJNZW51RXZlbnRLZXkocHJvcHMuZXZlbnRLZXkpXSxcbiAgICAgICAgbXVsdGlwbGU6IHByb3BzLm11bHRpcGxlLFxuICAgICAgICBwcmVmaXhDbHM6IHByb3BzLnJvb3RQcmVmaXhDbHMsXG4gICAgICAgIGlkOiBfdGhpcy5pbnRlcm5hbE1lbnVJZCxcbiAgICAgICAgbWFudWFsUmVmOiBfdGhpcy5zYXZlTWVudUluc3RhbmNlLFxuICAgICAgICBpdGVtSWNvbjogcHJvcHMuaXRlbUljb24sXG4gICAgICAgIGV4cGFuZEljb246IHByb3BzLmV4cGFuZEljb24sXG4gICAgICAgIGRpcmVjdGlvbjogcHJvcHMuZGlyZWN0aW9uXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBfdGhpcy5nZXRNb3Rpb24gPSBmdW5jdGlvbiAobW9kZSwgdmlzaWJsZSkge1xuICAgICAgdmFyIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSxcbiAgICAgICAgICBoYXZlUmVuZGVyZWQgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemUzLmhhdmVSZW5kZXJlZDtcblxuICAgICAgdmFyIF90aGlzJHByb3BzNSA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIG1vdGlvbiA9IF90aGlzJHByb3BzNS5tb3Rpb24sXG4gICAgICAgICAgcm9vdFByZWZpeENscyA9IF90aGlzJHByb3BzNS5yb290UHJlZml4Q2xzOyAvLyBkb24ndCBzaG93IHRyYW5zaXRpb24gb24gZmlyc3QgcmVuZGVyaW5nIChubyBhbmltYXRpb24gZm9yIG9wZW5lZCBtZW51KVxuICAgICAgLy8gc2hvdyBhcHBlYXIgdHJhbnNpdGlvbiBpZiBpdCdzIG5vdCB2aXNpYmxlIChub3Qgc3VyZSB3aHkpXG4gICAgICAvLyBzaG93IGFwcGVhciB0cmFuc2l0aW9uIGlmIGl0J3Mgbm90IGlubGluZSBtb2RlXG5cbiAgICAgIHZhciBtZXJnZWRNb3Rpb24gPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG1vdGlvbiksIHt9LCB7XG4gICAgICAgIGxlYXZlZENsYXNzTmFtZTogXCJcIi5jb25jYXQocm9vdFByZWZpeENscywgXCItaGlkZGVuXCIpLFxuICAgICAgICByZW1vdmVPbkxlYXZlOiBmYWxzZSxcbiAgICAgICAgbW90aW9uQXBwZWFyOiBoYXZlUmVuZGVyZWQgfHwgIXZpc2libGUgfHwgbW9kZSAhPT0gJ2lubGluZSdcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbWVyZ2VkTW90aW9uO1xuICAgIH07XG5cbiAgICB2YXIgc3RvcmUgPSBwcm9wcy5zdG9yZSxcbiAgICAgICAgZXZlbnRLZXkgPSBwcm9wcy5ldmVudEtleTtcblxuICAgIHZhciBfc3RvcmUkZ2V0U3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpLFxuICAgICAgICBkZWZhdWx0QWN0aXZlRmlyc3QgPSBfc3RvcmUkZ2V0U3RhdGUuZGVmYXVsdEFjdGl2ZUZpcnN0O1xuXG4gICAgX3RoaXMuaXNSb290TWVudSA9IGZhbHNlO1xuICAgIHZhciB2YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKGRlZmF1bHRBY3RpdmVGaXJzdCkge1xuICAgICAgdmFsdWUgPSBkZWZhdWx0QWN0aXZlRmlyc3RbZXZlbnRLZXldO1xuICAgIH1cblxuICAgIHVwZGF0ZURlZmF1bHRBY3RpdmVGaXJzdChzdG9yZSwgZXZlbnRLZXksIHZhbHVlKTtcbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIG1vZGU6IHByb3BzLm1vZGUsXG4gICAgICBpc09wZW46IHByb3BzLmlzT3BlblxuICAgIH07XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFN1Yk1lbnUsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5jb21wb25lbnREaWRVcGRhdGUoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkVXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBtb2RlID0gX3RoaXMkcHJvcHM2Lm1vZGUsXG4gICAgICAgICAgcGFyZW50TWVudSA9IF90aGlzJHByb3BzNi5wYXJlbnRNZW51LFxuICAgICAgICAgIG1hbnVhbFJlZiA9IF90aGlzJHByb3BzNi5tYW51YWxSZWYsXG4gICAgICAgICAgaXNPcGVuID0gX3RoaXMkcHJvcHM2LmlzT3BlbjtcblxuICAgICAgdmFyIHVwZGF0ZVN0YXRlID0gZnVuY3Rpb24gdXBkYXRlU3RhdGUoKSB7XG4gICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgbW9kZTogbW9kZSxcbiAgICAgICAgICBpc09wZW46IGlzT3BlblxuICAgICAgICB9KTtcbiAgICAgIH07IC8vIERlbGF5IHN5bmMgd2hlbiBtb2RlIGNoYW5nZWQgaW4gY2FzZSBvcGVuS2V5cyBjaGFuZ2Ugbm90IHN5bmNcblxuXG4gICAgICB2YXIgaXNPcGVuQ2hhbmdlZCA9IGlzT3BlbiAhPT0gdGhpcy5zdGF0ZS5pc09wZW47XG4gICAgICB2YXIgaXNNb2RlQ2hhbmdlZCA9IG1vZGUgIT09IHRoaXMuc3RhdGUubW9kZTtcblxuICAgICAgaWYgKGlzTW9kZUNoYW5nZWQgfHwgaXNPcGVuQ2hhbmdlZCkge1xuICAgICAgICByYWYuY2FuY2VsKHRoaXMudXBkYXRlU3RhdGVSYWYpO1xuXG4gICAgICAgIGlmIChpc01vZGVDaGFuZ2VkKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZVJhZiA9IHJhZih1cGRhdGVTdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXBkYXRlU3RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBpbnZva2UgY3VzdG9taXplZCByZWYgdG8gZXhwb3NlIGNvbXBvbmVudCB0byBtaXhpblxuXG5cbiAgICAgIGlmIChtYW51YWxSZWYpIHtcbiAgICAgICAgbWFudWFsUmVmKHRoaXMpO1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSAhPT0gJ2hvcml6b250YWwnIHx8ICEocGFyZW50TWVudSA9PT0gbnVsbCB8fCBwYXJlbnRNZW51ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXJlbnRNZW51LmlzUm9vdE1lbnUpIHx8ICFpc09wZW4pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm1pbldpZHRoVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMyLmFkanVzdFdpZHRoKCk7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM3ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBvbkRlc3Ryb3kgPSBfdGhpcyRwcm9wczcub25EZXN0cm95LFxuICAgICAgICAgIGV2ZW50S2V5ID0gX3RoaXMkcHJvcHM3LmV2ZW50S2V5O1xuXG4gICAgICBpZiAob25EZXN0cm95KSB7XG4gICAgICAgIG9uRGVzdHJveShldmVudEtleSk7XG4gICAgICB9XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cblxuXG4gICAgICBpZiAodGhpcy5taW5XaWR0aFRpbWVvdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubWluV2lkdGhUaW1lb3V0KTtcbiAgICAgIH1cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXG5cbiAgICAgIGlmICh0aGlzLm1vdXNlZW50ZXJUaW1lb3V0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLm1vdXNlZW50ZXJUaW1lb3V0KTtcbiAgICAgIH1cblxuICAgICAgcmFmLmNhbmNlbCh0aGlzLnVwZGF0ZVN0YXRlUmFmKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyUG9wdXBNZW51XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclBvcHVwTWVudShjbGFzc05hbWUsIHN0eWxlKSB7XG4gICAgICB2YXIgYmFzZVByb3BzID0gdGhpcy5nZXRCYXNlUHJvcHMoKTtcbiAgICAgIC8qKlxuICAgICAgICogem9tYmllajogV2h5IFN1YlBvcHVwTWVudSBoZXJlP1xuICAgICAgICogU2VlbXMgd2hhdGV2ZXIgcG9wdXAgb3IgaW5saW5lIG1vZGUgYm90aCB3aWxsIHJlbmRlciBTdWJQb3B1cE1lbnUuXG4gICAgICAgKiBJdCdzIGNvbnRyb2xsZWQgYnkgVHJpZ2dlciBmb3IgcG9wdXAgb3Igbm90LlxuICAgICAgICovXG5cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTdWJQb3B1cE1lbnUsIF9leHRlbmRzKHt9LCBiYXNlUHJvcHMsIHtcbiAgICAgICAgaWQ6IHRoaXMuaW50ZXJuYWxNZW51SWQsXG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgICBzdHlsZTogc3R5bGVcbiAgICAgIH0pLCB0aGlzLnByb3BzLmNoaWxkcmVuKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQ2hpbGRyZW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQ2hpbGRyZW4oKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgdmFyIGJhc2VQcm9wcyA9IHRoaXMuZ2V0QmFzZVByb3BzKCk7XG4gICAgICB2YXIgbW9kZSA9IGJhc2VQcm9wcy5tb2RlLFxuICAgICAgICAgIHZpc2libGUgPSBiYXNlUHJvcHMudmlzaWJsZSxcbiAgICAgICAgICBmb3JjZVN1Yk1lbnVSZW5kZXIgPSBiYXNlUHJvcHMuZm9yY2VTdWJNZW51UmVuZGVyLFxuICAgICAgICAgIGRpcmVjdGlvbiA9IGJhc2VQcm9wcy5kaXJlY3Rpb247IC8vIFtMZWdhY3ldIGdldE1vdGlvbiBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYGhhdmVSZW5kZXJlZGBcblxuICAgICAgdmFyIG1lcmdlZE1vdGlvbiA9IHRoaXMuZ2V0TW90aW9uKG1vZGUsIHZpc2libGUpO1xuICAgICAgdGhpcy5oYXZlUmVuZGVyZWQgPSB0cnVlO1xuICAgICAgdGhpcy5oYXZlT3BlbmVkID0gdGhpcy5oYXZlT3BlbmVkIHx8IHZpc2libGUgfHwgZm9yY2VTdWJNZW51UmVuZGVyOyAvLyBuZXZlciByZW5kZXJlZCBub3QgcGxhbm5pbmcgdG8sIGRvbid0IHJlbmRlclxuXG4gICAgICBpZiAoIXRoaXMuaGF2ZU9wZW5lZCkge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgbnVsbCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBzaGFyZWRDbGFzc05hbWUgPSBjbGFzc05hbWVzKFwiXCIuY29uY2F0KGJhc2VQcm9wcy5wcmVmaXhDbHMsIFwiLXN1YlwiKSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChiYXNlUHJvcHMucHJlZml4Q2xzLCBcIi1ydGxcIiksIGRpcmVjdGlvbiA9PT0gJ3J0bCcpKTtcblxuICAgICAgaWYgKCF0aGlzLmlzSW5saW5lTW9kZSgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlclBvcHVwTWVudShzaGFyZWRDbGFzc05hbWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ1NTTW90aW9uLCBfZXh0ZW5kcyh7XG4gICAgICAgIHZpc2libGU6IGJhc2VQcm9wcy52aXNpYmxlXG4gICAgICB9LCBtZXJnZWRNb3Rpb24pLCBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICB2YXIgY2xhc3NOYW1lID0gX3JlZi5jbGFzc05hbWUsXG4gICAgICAgICAgICBzdHlsZSA9IF9yZWYuc3R5bGU7XG4gICAgICAgIHZhciBtZXJnZWRDbGFzc05hbWUgPSBjbGFzc05hbWVzKHNoYXJlZENsYXNzTmFtZSwgY2xhc3NOYW1lKTtcbiAgICAgICAgcmV0dXJuIF90aGlzMy5yZW5kZXJQb3B1cE1lbnUobWVyZ2VkQ2xhc3NOYW1lLCBzdHlsZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfY2xhc3NOYW1lczIsIF9wcm9wcyRwYXJlbnRNZW51LCBfY2xhc3NOYW1lczM7XG5cbiAgICAgIHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoe30sIHRoaXMucHJvcHMpO1xuXG4gICAgICB2YXIgdmlzaWJsZSA9IHRoaXMuZ2V0VmlzaWJsZSgpO1xuICAgICAgdmFyIHByZWZpeENscyA9IHRoaXMuZ2V0UHJlZml4Q2xzKCk7XG4gICAgICB2YXIgaW5saW5lID0gdGhpcy5pc0lubGluZU1vZGUoKTtcbiAgICAgIHZhciBtZXJnZWRNb2RlID0gdGhpcy5nZXRNb2RlKCk7XG4gICAgICB2YXIgY2xhc3NOYW1lID0gY2xhc3NOYW1lcyhwcmVmaXhDbHMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItXCIpLmNvbmNhdChtZXJnZWRNb2RlKSwgKF9jbGFzc05hbWVzMiA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMyLCBwcm9wcy5jbGFzc05hbWUsICEhcHJvcHMuY2xhc3NOYW1lKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzMiwgdGhpcy5nZXRPcGVuQ2xhc3NOYW1lKCksIHZpc2libGUpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMyLCB0aGlzLmdldEFjdGl2ZUNsYXNzTmFtZSgpLCBwcm9wcy5hY3RpdmUgfHwgdmlzaWJsZSAmJiAhaW5saW5lKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzMiwgdGhpcy5nZXREaXNhYmxlZENsYXNzTmFtZSgpLCBwcm9wcy5kaXNhYmxlZCksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lczIsIHRoaXMuZ2V0U2VsZWN0ZWRDbGFzc05hbWUoKSwgdGhpcy5pc0NoaWxkcmVuU2VsZWN0ZWQoKSksIF9jbGFzc05hbWVzMikpO1xuXG4gICAgICBpZiAoIXRoaXMuaW50ZXJuYWxNZW51SWQpIHtcbiAgICAgICAgaWYgKHByb3BzLmV2ZW50S2V5KSB7XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbE1lbnVJZCA9IFwiXCIuY29uY2F0KHByb3BzLmV2ZW50S2V5LCBcIiRNZW51XCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGd1aWQgKz0gMTtcbiAgICAgICAgICB0aGlzLmludGVybmFsTWVudUlkID0gXCIkX18kXCIuY29uY2F0KGd1aWQsIFwiJE1lbnVcIik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIG1vdXNlRXZlbnRzID0ge307XG4gICAgICB2YXIgdGl0bGVDbGlja0V2ZW50cyA9IHt9O1xuICAgICAgdmFyIHRpdGxlTW91c2VFdmVudHMgPSB7fTtcblxuICAgICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgICBtb3VzZUV2ZW50cyA9IHtcbiAgICAgICAgICBvbk1vdXNlTGVhdmU6IHRoaXMub25Nb3VzZUxlYXZlLFxuICAgICAgICAgIG9uTW91c2VFbnRlcjogdGhpcy5vbk1vdXNlRW50ZXJcbiAgICAgICAgfTsgLy8gb25seSB3b3JrcyBpbiB0aXRsZSwgbm90IG91dGVyIGxpXG5cbiAgICAgICAgdGl0bGVDbGlja0V2ZW50cyA9IHtcbiAgICAgICAgICBvbkNsaWNrOiB0aGlzLm9uVGl0bGVDbGlja1xuICAgICAgICB9O1xuICAgICAgICB0aXRsZU1vdXNlRXZlbnRzID0ge1xuICAgICAgICAgIG9uTW91c2VFbnRlcjogdGhpcy5vblRpdGxlTW91c2VFbnRlcixcbiAgICAgICAgICBvbk1vdXNlTGVhdmU6IHRoaXMub25UaXRsZU1vdXNlTGVhdmVcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdmFyIHN0eWxlID0ge307XG4gICAgICB2YXIgZGlyZWN0aW9uID0gcHJvcHMuZGlyZWN0aW9uO1xuICAgICAgdmFyIGlzUlRMID0gZGlyZWN0aW9uID09PSAncnRsJztcblxuICAgICAgaWYgKGlubGluZSkge1xuICAgICAgICBpZiAoaXNSVEwpIHtcbiAgICAgICAgICBzdHlsZS5wYWRkaW5nUmlnaHQgPSBwcm9wcy5pbmxpbmVJbmRlbnQgKiBwcm9wcy5sZXZlbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHlsZS5wYWRkaW5nTGVmdCA9IHByb3BzLmlubGluZUluZGVudCAqIHByb3BzLmxldmVsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBhcmlhT3ducyA9IHt9OyAvLyBvbmx5IHNldCBhcmlhLW93bnMgd2hlbiBtZW51IGlzIG9wZW5cbiAgICAgIC8vIG90aGVyd2lzZSBpdCB3b3VsZCBiZSBhbiBpbnZhbGlkIGFyaWEtb3ducyB2YWx1ZVxuICAgICAgLy8gc2luY2UgY29ycmVzcG9uZGluZyBub2RlIGNhbm5vdCBiZSBmb3VuZFxuXG4gICAgICBpZiAodGhpcy5nZXRWaXNpYmxlKCkpIHtcbiAgICAgICAgYXJpYU93bnMgPSB7XG4gICAgICAgICAgJ2FyaWEtb3ducyc6IHRoaXMuaW50ZXJuYWxNZW51SWRcbiAgICAgICAgfTtcbiAgICAgIH0gLy8gZXhwYW5kIGN1c3RvbSBpY29uIHNob3VsZCBOT1QgYmUgZGlzcGxheWVkIGluIG1lbnUgd2l0aCBob3Jpem9udGFsIG1vZGUuXG5cblxuICAgICAgdmFyIGljb24gPSBudWxsO1xuXG4gICAgICBpZiAobWVyZ2VkTW9kZSAhPT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgIGljb24gPSB0aGlzLnByb3BzLmV4cGFuZEljb247IC8vIFJlYWN0Tm9kZVxuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5leHBhbmRJY29uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgaWNvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KHRoaXMucHJvcHMuZXhwYW5kSWNvbiwgX29iamVjdFNwcmVhZCh7fSwgdGhpcy5wcm9wcykpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB0aXRsZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICAgICAgcmVmOiB0aGlzLnNhdmVTdWJNZW51VGl0bGUsXG4gICAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXRpdGxlXCIpLFxuICAgICAgICByb2xlOiBcImJ1dHRvblwiXG4gICAgICB9LCB0aXRsZU1vdXNlRXZlbnRzLCB0aXRsZUNsaWNrRXZlbnRzLCB7XG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiB2aXNpYmxlXG4gICAgICB9LCBhcmlhT3ducywge1xuICAgICAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJ0cnVlXCIsXG4gICAgICAgIHRpdGxlOiB0eXBlb2YgcHJvcHMudGl0bGUgPT09ICdzdHJpbmcnID8gcHJvcHMudGl0bGUgOiB1bmRlZmluZWRcbiAgICAgIH0pLCBwcm9wcy50aXRsZSwgaWNvbiB8fCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImlcIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItYXJyb3dcIilcbiAgICAgIH0pKTtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucmVuZGVyQ2hpbGRyZW4oKTtcbiAgICAgIHZhciBnZXRQb3B1cENvbnRhaW5lciA9ICgoX3Byb3BzJHBhcmVudE1lbnUgPSBwcm9wcy5wYXJlbnRNZW51KSA9PT0gbnVsbCB8fCBfcHJvcHMkcGFyZW50TWVudSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3Byb3BzJHBhcmVudE1lbnUuaXNSb290TWVudSkgPyBwcm9wcy5wYXJlbnRNZW51LnByb3BzLmdldFBvcHVwQ29udGFpbmVyIDogZnVuY3Rpb24gKHRyaWdnZXJOb2RlKSB7XG4gICAgICAgIHJldHVybiB0cmlnZ2VyTm9kZS5wYXJlbnROb2RlO1xuICAgICAgfTtcbiAgICAgIHZhciBwb3B1cFBsYWNlbWVudCA9IHBvcHVwUGxhY2VtZW50TWFwW21lcmdlZE1vZGVdO1xuICAgICAgdmFyIHBvcHVwQWxpZ24gPSBwcm9wcy5wb3B1cE9mZnNldCA/IHtcbiAgICAgICAgb2Zmc2V0OiBwcm9wcy5wb3B1cE9mZnNldFxuICAgICAgfSA6IHt9O1xuICAgICAgdmFyIHBvcHVwQ2xhc3NOYW1lID0gY2xhc3NOYW1lcygoX2NsYXNzTmFtZXMzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lczMsIHByb3BzLnBvcHVwQ2xhc3NOYW1lLCBwcm9wcy5wb3B1cENsYXNzTmFtZSAmJiAhaW5saW5lKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzMywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ydGxcIiksIGlzUlRMKSwgX2NsYXNzTmFtZXMzKSk7XG4gICAgICB2YXIgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZCxcbiAgICAgICAgICB0cmlnZ2VyU3ViTWVudUFjdGlvbiA9IHByb3BzLnRyaWdnZXJTdWJNZW51QWN0aW9uLFxuICAgICAgICAgIHN1Yk1lbnVPcGVuRGVsYXkgPSBwcm9wcy5zdWJNZW51T3BlbkRlbGF5LFxuICAgICAgICAgIGZvcmNlU3ViTWVudVJlbmRlciA9IHByb3BzLmZvcmNlU3ViTWVudVJlbmRlcixcbiAgICAgICAgICBzdWJNZW51Q2xvc2VEZWxheSA9IHByb3BzLnN1Yk1lbnVDbG9zZURlbGF5LFxuICAgICAgICAgIGJ1aWx0aW5QbGFjZW1lbnRzID0gcHJvcHMuYnVpbHRpblBsYWNlbWVudHM7XG4gICAgICBtZW51QWxsUHJvcHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiBkZWxldGUgcHJvcHNba2V5XTtcbiAgICAgIH0pOyAvLyBTZXQgb25DbGljayB0byBudWxsLCB0byBpZ25vcmUgcHJvcGFnYXRlZCBvbkNsaWNrIGV2ZW50XG5cbiAgICAgIGRlbGV0ZSBwcm9wcy5vbkNsaWNrO1xuICAgICAgdmFyIHBsYWNlbWVudCA9IGlzUlRMID8gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwbGFjZW1lbnRzUnRsKSwgYnVpbHRpblBsYWNlbWVudHMpIDogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwbGFjZW1lbnRzKSwgYnVpbHRpblBsYWNlbWVudHMpO1xuICAgICAgZGVsZXRlIHByb3BzLmRpcmVjdGlvbjsgLy8gW0xlZ2FjeV0gSXQncyBhIGZhc3QgZml4LFxuICAgICAgLy8gYnV0IHdlIHNob3VsZCBjaGVjayBpZiB3ZSBjYW4gcmVmYWN0b3IgdGhpcyB0byBtYWtlIGNvZGUgbW9yZSBlYXN5IHRvIHVuZGVyc3RhbmRcblxuICAgICAgdmFyIGJhc2VQcm9wcyA9IHRoaXMuZ2V0QmFzZVByb3BzKCk7XG4gICAgICB2YXIgbWVyZ2VkTW90aW9uID0gaW5saW5lID8gbnVsbCA6IHRoaXMuZ2V0TW90aW9uKGJhc2VQcm9wcy5tb2RlLCBiYXNlUHJvcHMudmlzaWJsZSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaVwiLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIG1vdXNlRXZlbnRzLCB7XG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgICByb2xlOiBcIm1lbnVpdGVtXCJcbiAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUcmlnZ2VyLCB7XG4gICAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgICBwb3B1cENsYXNzTmFtZTogY2xhc3NOYW1lcyhcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXBvcHVwXCIpLCBwb3B1cENsYXNzTmFtZSksXG4gICAgICAgIGdldFBvcHVwQ29udGFpbmVyOiBnZXRQb3B1cENvbnRhaW5lcixcbiAgICAgICAgYnVpbHRpblBsYWNlbWVudHM6IHBsYWNlbWVudCxcbiAgICAgICAgcG9wdXBQbGFjZW1lbnQ6IHBvcHVwUGxhY2VtZW50LFxuICAgICAgICBwb3B1cFZpc2libGU6IGlubGluZSA/IGZhbHNlIDogdmlzaWJsZSxcbiAgICAgICAgcG9wdXBBbGlnbjogcG9wdXBBbGlnbixcbiAgICAgICAgcG9wdXA6IGlubGluZSA/IG51bGwgOiBjaGlsZHJlbixcbiAgICAgICAgYWN0aW9uOiBkaXNhYmxlZCB8fCBpbmxpbmUgPyBbXSA6IFt0cmlnZ2VyU3ViTWVudUFjdGlvbl0sXG4gICAgICAgIG1vdXNlRW50ZXJEZWxheTogc3ViTWVudU9wZW5EZWxheSxcbiAgICAgICAgbW91c2VMZWF2ZURlbGF5OiBzdWJNZW51Q2xvc2VEZWxheSxcbiAgICAgICAgb25Qb3B1cFZpc2libGVDaGFuZ2U6IHRoaXMub25Qb3B1cFZpc2libGVDaGFuZ2UsXG4gICAgICAgIGZvcmNlUmVuZGVyOiBmb3JjZVN1Yk1lbnVSZW5kZXIsXG4gICAgICAgIHBvcHVwTW90aW9uOiBtZXJnZWRNb3Rpb25cbiAgICAgIH0sIHRpdGxlKSwgaW5saW5lID8gY2hpbGRyZW4gOiBudWxsKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU3ViTWVudTtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblN1Yk1lbnUuZGVmYXVsdFByb3BzID0ge1xuICBvbk1vdXNlRW50ZXI6IG5vb3AsXG4gIG9uTW91c2VMZWF2ZTogbm9vcCxcbiAgb25UaXRsZU1vdXNlRW50ZXI6IG5vb3AsXG4gIG9uVGl0bGVNb3VzZUxlYXZlOiBub29wLFxuICBvblRpdGxlQ2xpY2s6IG5vb3AsXG4gIG1hbnVhbFJlZjogbm9vcCxcbiAgbW9kZTogJ3ZlcnRpY2FsJyxcbiAgdGl0bGU6ICcnXG59O1xudmFyIGNvbm5lY3RlZCA9IGNvbm5lY3QoZnVuY3Rpb24gKF9yZWYyLCBfcmVmMykge1xuICB2YXIgb3BlbktleXMgPSBfcmVmMi5vcGVuS2V5cyxcbiAgICAgIGFjdGl2ZUtleSA9IF9yZWYyLmFjdGl2ZUtleSxcbiAgICAgIHNlbGVjdGVkS2V5cyA9IF9yZWYyLnNlbGVjdGVkS2V5cztcbiAgdmFyIGV2ZW50S2V5ID0gX3JlZjMuZXZlbnRLZXksXG4gICAgICBzdWJNZW51S2V5ID0gX3JlZjMuc3ViTWVudUtleTtcbiAgcmV0dXJuIHtcbiAgICBpc09wZW46IG9wZW5LZXlzLmluZGV4T2YoZXZlbnRLZXkpID4gLTEsXG4gICAgYWN0aXZlOiBhY3RpdmVLZXlbc3ViTWVudUtleV0gPT09IGV2ZW50S2V5LFxuICAgIHNlbGVjdGVkS2V5czogc2VsZWN0ZWRLZXlzXG4gIH07XG59KShTdWJNZW51KTtcbmNvbm5lY3RlZC5pc1N1Yk1lbnUgPSB0cnVlO1xuZXhwb3J0IGRlZmF1bHQgY29ubmVjdGVkOyIsImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5XCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZXNpemVPYnNlcnZlciBmcm9tICdyZXNpemUtb2JzZXJ2ZXItcG9seWZpbGwnO1xuaW1wb3J0IFN1Yk1lbnUgZnJvbSAnLi9TdWJNZW51JztcbmltcG9ydCB7IGdldFdpZHRoLCBzZXRTdHlsZSwgbWVudUFsbFByb3BzIH0gZnJvbSAnLi91dGlsJztcbnZhciBNRU5VSVRFTV9PVkVSRkxPV0VEX0NMQVNTTkFNRSA9ICdtZW51aXRlbS1vdmVyZmxvd2VkJztcbnZhciBGTE9BVF9QUkVDSVNJT05fQURKVVNUID0gMC41O1xuXG52YXIgRE9NV3JhcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoRE9NV3JhcCwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihET01XcmFwKTtcblxuICBmdW5jdGlvbiBET01XcmFwKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBET01XcmFwKTtcblxuICAgIF90aGlzID0gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgX3RoaXMucmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICAgIF90aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBudWxsOyAvLyBvcmlnaW5hbCBzY3JvbGwgc2l6ZSBvZiB0aGUgbGlzdFxuXG4gICAgX3RoaXMub3JpZ2luYWxUb3RhbFdpZHRoID0gMDsgLy8gY29weSBvZiBvdmVyZmxvd2VkIGl0ZW1zXG5cbiAgICBfdGhpcy5vdmVyZmxvd2VkSXRlbXMgPSBbXTsgLy8gY2FjaGUgaXRlbSBvZiB0aGUgb3JpZ2luYWwgaXRlbXMgKHNvIHdlIGNhbiB0cmFjayB0aGUgc2l6ZSBhbmQgb3JkZXIpXG5cbiAgICBfdGhpcy5tZW51SXRlbVNpemVzID0gW107XG4gICAgX3RoaXMuY2FuY2VsRnJhbWVJZCA9IG51bGw7XG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICBsYXN0VmlzaWJsZUluZGV4OiB1bmRlZmluZWRcbiAgICB9O1xuICAgIF90aGlzLmNoaWxkUmVmID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZVJlZigpOyAvLyBnZXQgYWxsIHZhbGlkIG1lbnVJdGVtIG5vZGVzXG5cbiAgICBfdGhpcy5nZXRNZW51SXRlbU5vZGVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHByZWZpeENscyA9IF90aGlzLnByb3BzLnByZWZpeENscztcbiAgICAgIHZhciB1bCA9IF90aGlzLmNoaWxkUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmICghdWwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfSAvLyBmaWx0ZXIgb3V0IGFsbCBvdmVyZmxvd2VkIGluZGljYXRvciBwbGFjZWhvbGRlclxuXG5cbiAgICAgIHJldHVybiBbXS5zbGljZS5jYWxsKHVsLmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuY2xhc3NOYW1lLnNwbGl0KCcgJykuaW5kZXhPZihcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLW92ZXJmbG93ZWQtc3VibWVudVwiKSkgPCAwO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIF90aGlzLmdldE92ZXJmbG93ZWRTdWJNZW51SXRlbSA9IGZ1bmN0aW9uIChrZXlQcmVmaXgsIG92ZXJmbG93ZWRJdGVtcywgcmVuZGVyUGxhY2Vob2xkZXIpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIG92ZXJmbG93ZWRJbmRpY2F0b3IgPSBfdGhpcyRwcm9wcy5vdmVyZmxvd2VkSW5kaWNhdG9yLFxuICAgICAgICAgIGxldmVsID0gX3RoaXMkcHJvcHMubGV2ZWwsXG4gICAgICAgICAgbW9kZSA9IF90aGlzJHByb3BzLm1vZGUsXG4gICAgICAgICAgcHJlZml4Q2xzID0gX3RoaXMkcHJvcHMucHJlZml4Q2xzLFxuICAgICAgICAgIHRoZW1lID0gX3RoaXMkcHJvcHMudGhlbWU7XG5cbiAgICAgIGlmIChsZXZlbCAhPT0gMSB8fCBtb2RlICE9PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IC8vIHB1dCBhbGwgdGhlIG92ZXJmbG93ZWQgaXRlbSBpbnNpZGUgYSBzdWJtZW51XG4gICAgICAvLyB3aXRoIGEgdGl0bGUgb2Ygb3ZlcmZsb3cgaW5kaWNhdG9yICgnLi4uJylcblxuXG4gICAgICB2YXIgY29weSA9IF90aGlzLnByb3BzLmNoaWxkcmVuWzBdO1xuXG4gICAgICB2YXIgX2NvcHkkcHJvcHMgPSBjb3B5LnByb3BzLFxuICAgICAgICAgIHRocm93QXdheSA9IF9jb3B5JHByb3BzLmNoaWxkcmVuLFxuICAgICAgICAgIHRpdGxlID0gX2NvcHkkcHJvcHMudGl0bGUsXG4gICAgICAgICAgcHJvcFN0eWxlID0gX2NvcHkkcHJvcHMuc3R5bGUsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfY29weSRwcm9wcywgW1wiY2hpbGRyZW5cIiwgXCJ0aXRsZVwiLCBcInN0eWxlXCJdKTtcblxuICAgICAgdmFyIHN0eWxlID0gX29iamVjdFNwcmVhZCh7fSwgcHJvcFN0eWxlKTtcblxuICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGtleVByZWZpeCwgXCItb3ZlcmZsb3dlZC1pbmRpY2F0b3JcIik7XG4gICAgICB2YXIgZXZlbnRLZXkgPSBcIlwiLmNvbmNhdChrZXlQcmVmaXgsIFwiLW92ZXJmbG93ZWQtaW5kaWNhdG9yXCIpO1xuXG4gICAgICBpZiAob3ZlcmZsb3dlZEl0ZW1zLmxlbmd0aCA9PT0gMCAmJiByZW5kZXJQbGFjZWhvbGRlciAhPT0gdHJ1ZSkge1xuICAgICAgICBzdHlsZSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgc3R5bGUpLCB7fSwge1xuICAgICAgICAgIGRpc3BsYXk6ICdub25lJ1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAocmVuZGVyUGxhY2Vob2xkZXIpIHtcbiAgICAgICAgc3R5bGUgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHN0eWxlKSwge30sIHtcbiAgICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICAgICAgICAvLyBwcmV2ZW50IGZyb20gdGFraW5nIG5vcm1hbCBkb20gc3BhY2VcbiAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgICAgICB9KTtcbiAgICAgICAga2V5ID0gXCJcIi5jb25jYXQoa2V5LCBcIi1wbGFjZWhvbGRlclwiKTtcbiAgICAgICAgZXZlbnRLZXkgPSBcIlwiLmNvbmNhdChldmVudEtleSwgXCItcGxhY2Vob2xkZXJcIik7XG4gICAgICB9XG5cbiAgICAgIHZhciBwb3B1cENsYXNzTmFtZSA9IHRoZW1lID8gXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KHRoZW1lKSA6ICcnO1xuICAgICAgdmFyIHByb3BzID0ge307XG4gICAgICBtZW51QWxsUHJvcHMuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICBpZiAocmVzdFtrXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcHJvcHNba10gPSByZXN0W2tdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTdWJNZW51LCBfZXh0ZW5kcyh7XG4gICAgICAgIHRpdGxlOiBvdmVyZmxvd2VkSW5kaWNhdG9yLFxuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItb3ZlcmZsb3dlZC1zdWJtZW51XCIpLFxuICAgICAgICBwb3B1cENsYXNzTmFtZTogcG9wdXBDbGFzc05hbWVcbiAgICAgIH0sIHByb3BzLCB7XG4gICAgICAgIGtleToga2V5LFxuICAgICAgICBldmVudEtleTogZXZlbnRLZXksXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgc3R5bGU6IHN0eWxlXG4gICAgICB9KSwgb3ZlcmZsb3dlZEl0ZW1zKTtcbiAgICB9OyAvLyBtZW1vcml6ZSByZW5kZXJlZCBtZW51U2l6ZVxuXG5cbiAgICBfdGhpcy5zZXRDaGlsZHJlbldpZHRoQW5kUmVzaXplID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKF90aGlzLnByb3BzLm1vZGUgIT09ICdob3Jpem9udGFsJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciB1bCA9IF90aGlzLmNoaWxkUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmICghdWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgdWxDaGlsZHJlbk5vZGVzID0gdWwuY2hpbGRyZW47XG5cbiAgICAgIGlmICghdWxDaGlsZHJlbk5vZGVzIHx8IHVsQ2hpbGRyZW5Ob2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgbGFzdE92ZXJmbG93ZWRJbmRpY2F0b3JQbGFjZWhvbGRlciA9IHVsLmNoaWxkcmVuW3VsQ2hpbGRyZW5Ob2Rlcy5sZW5ndGggLSAxXTsgLy8gbmVlZCBsYXN0IG92ZXJmbG93ZWQgaW5kaWNhdG9yIGZvciBjYWxjdWxhdGluZyBsZW5ndGg7XG5cbiAgICAgIHNldFN0eWxlKGxhc3RPdmVyZmxvd2VkSW5kaWNhdG9yUGxhY2Vob2xkZXIsICdkaXNwbGF5JywgJ2lubGluZS1ibG9jaycpO1xuXG4gICAgICB2YXIgbWVudUl0ZW1Ob2RlcyA9IF90aGlzLmdldE1lbnVJdGVtTm9kZXMoKTsgLy8gcmVzZXQgZGlzcGxheSBhdHRyaWJ1dGUgZm9yIGFsbCBoaWRkZW4gZWxlbWVudHMgY2F1c2VkIGJ5IG92ZXJmbG93IHRvIGNhbGN1bGF0ZSB1cGRhdGVkIHdpZHRoXG4gICAgICAvLyBhbmQgdGhlbiByZXNldCB0byBvcmlnaW5hbCBzdGF0ZSBhZnRlciB3aWR0aCBjYWxjdWxhdGlvblxuXG5cbiAgICAgIHZhciBvdmVyZmxvd2VkSXRlbXMgPSBtZW51SXRlbU5vZGVzLmZpbHRlcihmdW5jdGlvbiAoYykge1xuICAgICAgICByZXR1cm4gYy5jbGFzc05hbWUuc3BsaXQoJyAnKS5pbmRleE9mKE1FTlVJVEVNX09WRVJGTE9XRURfQ0xBU1NOQU1FKSA+PSAwO1xuICAgICAgfSk7XG4gICAgICBvdmVyZmxvd2VkSXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoYykge1xuICAgICAgICBzZXRTdHlsZShjLCAnZGlzcGxheScsICdpbmxpbmUtYmxvY2snKTtcbiAgICAgIH0pO1xuICAgICAgX3RoaXMubWVudUl0ZW1TaXplcyA9IG1lbnVJdGVtTm9kZXMubWFwKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgIHJldHVybiBnZXRXaWR0aChjLCB0cnVlKTtcbiAgICAgIH0pO1xuICAgICAgb3ZlcmZsb3dlZEl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgc2V0U3R5bGUoYywgJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgfSk7XG4gICAgICBfdGhpcy5vdmVyZmxvd2VkSW5kaWNhdG9yV2lkdGggPSBnZXRXaWR0aCh1bC5jaGlsZHJlblt1bC5jaGlsZHJlbi5sZW5ndGggLSAxXSwgdHJ1ZSk7XG4gICAgICBfdGhpcy5vcmlnaW5hbFRvdGFsV2lkdGggPSBfdGhpcy5tZW51SXRlbVNpemVzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBjdXIpIHtcbiAgICAgICAgcmV0dXJuIGFjYyArIGN1cjtcbiAgICAgIH0sIDApO1xuXG4gICAgICBfdGhpcy5oYW5kbGVSZXNpemUoKTsgLy8gcHJldmVudCB0aGUgb3ZlcmZsb3dlZCBpbmRpY2F0b3IgZnJvbSB0YWtpbmcgc3BhY2U7XG5cblxuICAgICAgc2V0U3R5bGUobGFzdE92ZXJmbG93ZWRJbmRpY2F0b3JQbGFjZWhvbGRlciwgJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgIH07XG5cbiAgICBfdGhpcy5oYW5kbGVSZXNpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMucHJvcHMubW9kZSAhPT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHVsID0gX3RoaXMuY2hpbGRSZWYuY3VycmVudDtcblxuICAgICAgaWYgKCF1bCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciB3aWR0aCA9IGdldFdpZHRoKHVsKTtcbiAgICAgIF90aGlzLm92ZXJmbG93ZWRJdGVtcyA9IFtdO1xuICAgICAgdmFyIGN1cnJlbnRTdW1XaWR0aCA9IDA7IC8vIGluZGV4IGZvciBsYXN0IHZpc2libGUgY2hpbGQgaW4gaG9yaXpvbnRhbCBtb2RlXG5cbiAgICAgIHZhciBsYXN0VmlzaWJsZUluZGV4OyAvLyBmbG9hdCBudW1iZXIgY29tcGFyaXNvbiBjb3VsZCBiZSBwcm9ibGVtYXRpY1xuICAgICAgLy8gZS5nLiAwLjEgKyAwLjIgPiAwLjMgPT09PT0+IHRydWVcbiAgICAgIC8vIHRodXMgdXNpbmcgRkxPQVRfUFJFQ0lTSU9OX0FESlVTVCBhcyBidWZmZXIgdG8gaGVscCB0aGUgc2l0dWF0aW9uXG5cbiAgICAgIGlmIChfdGhpcy5vcmlnaW5hbFRvdGFsV2lkdGggPiB3aWR0aCArIEZMT0FUX1BSRUNJU0lPTl9BREpVU1QpIHtcbiAgICAgICAgbGFzdFZpc2libGVJbmRleCA9IC0xO1xuXG4gICAgICAgIF90aGlzLm1lbnVJdGVtU2l6ZXMuZm9yRWFjaChmdW5jdGlvbiAobGlXaWR0aCkge1xuICAgICAgICAgIGN1cnJlbnRTdW1XaWR0aCArPSBsaVdpZHRoO1xuXG4gICAgICAgICAgaWYgKGN1cnJlbnRTdW1XaWR0aCArIF90aGlzLm92ZXJmbG93ZWRJbmRpY2F0b3JXaWR0aCA8PSB3aWR0aCkge1xuICAgICAgICAgICAgbGFzdFZpc2libGVJbmRleCArPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgbGFzdFZpc2libGVJbmRleDogbGFzdFZpc2libGVJbmRleFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhET01XcmFwLCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB0aGlzLnNldENoaWxkcmVuV2lkdGhBbmRSZXNpemUoKTtcblxuICAgICAgaWYgKHRoaXMucHJvcHMubGV2ZWwgPT09IDEgJiYgdGhpcy5wcm9wcy5tb2RlID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgdmFyIG1lbnVVbCA9IHRoaXMuY2hpbGRSZWYuY3VycmVudDtcblxuICAgICAgICBpZiAoIW1lbnVVbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24gKGVudHJpZXMpIHtcbiAgICAgICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNhbmNlbEZyYW1lSWQgPSBfdGhpczIuY2FuY2VsRnJhbWVJZDtcbiAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGNhbmNlbEZyYW1lSWQpO1xuICAgICAgICAgICAgX3RoaXMyLmNhbmNlbEZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoX3RoaXMyLnNldENoaWxkcmVuV2lkdGhBbmRSZXNpemUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgW10uc2xpY2UuY2FsbChtZW51VWwuY2hpbGRyZW4pLmNvbmNhdChtZW51VWwpLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgX3RoaXMyLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWwpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMyLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcblxuICAgICAgICAgICAgW10uc2xpY2UuY2FsbChtZW51VWwuY2hpbGRyZW4pLmNvbmNhdChtZW51VWwpLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICAgIF90aGlzMi5yZXNpemVPYnNlcnZlci5vYnNlcnZlKGVsKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBfdGhpczIuc2V0Q2hpbGRyZW5XaWR0aEFuZFJlc2l6ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKG1lbnVVbCwge1xuICAgICAgICAgICAgYXR0cmlidXRlczogZmFsc2UsXG4gICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICBzdWJUcmVlOiBmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm11dGF0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cblxuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5jYW5jZWxGcmFtZUlkKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQ2hpbGRyZW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQ2hpbGRyZW4oY2hpbGRyZW4pIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICAvLyBuZWVkIHRvIHRha2UgY2FyZSBvZiBvdmVyZmxvd2VkIGl0ZW1zIGluIGhvcml6b250YWwgbW9kZVxuICAgICAgdmFyIGxhc3RWaXNpYmxlSW5kZXggPSB0aGlzLnN0YXRlLmxhc3RWaXNpYmxlSW5kZXg7XG4gICAgICByZXR1cm4gKGNoaWxkcmVuIHx8IFtdKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgY2hpbGROb2RlLCBpbmRleCkge1xuICAgICAgICB2YXIgaXRlbSA9IGNoaWxkTm9kZTtcblxuICAgICAgICBpZiAoX3RoaXMzLnByb3BzLm1vZGUgPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgIHZhciBvdmVyZmxvd2VkID0gX3RoaXMzLmdldE92ZXJmbG93ZWRTdWJNZW51SXRlbShjaGlsZE5vZGUucHJvcHMuZXZlbnRLZXksIFtdKTtcblxuICAgICAgICAgIGlmIChsYXN0VmlzaWJsZUluZGV4ICE9PSB1bmRlZmluZWQgJiYgX3RoaXMzLnByb3BzLmNsYXNzTmFtZS5pbmRleE9mKFwiXCIuY29uY2F0KF90aGlzMy5wcm9wcy5wcmVmaXhDbHMsIFwiLXJvb3RcIikpICE9PSAtMSkge1xuICAgICAgICAgICAgaWYgKGluZGV4ID4gbGFzdFZpc2libGVJbmRleCkge1xuICAgICAgICAgICAgICBpdGVtID0gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZE5vZGUsIC8vIOi/memHjOS/ruaUuSBldmVudEtleSDmmK/kuLrkuobpmLLmraLpmpDol4/nirbmgIHkuIvov5jkvJrop6blj5Egb3BlbmtleXMg5LqL5Lu2XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ25vbmUnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBldmVudEtleTogXCJcIi5jb25jYXQoY2hpbGROb2RlLnByb3BzLmV2ZW50S2V5LCBcIi1oaWRkZW5cIiksXG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBMZWdhY3kgY29kZS4gSGVyZSBgY2xhc3NOYW1lYCBuZXZlciB1c2VkOlxuICAgICAgICAgICAgICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdC1jb21wb25lbnQvbWVudS9jb21taXQvNGNkNmI0OWZjZTlkMTE2NzI2ZjRlYTAwZGRhODUzMjVkNmYyNjUwMCNkaWZmLWUyZmE0OGY3NWMyZGQyMzE4Mjk1Y2RlNDI4NTU2YTc2UjI0MFxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQoTUVOVUlURU1fT1ZFUkZMT1dFRF9DTEFTU05BTUUpXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IGxhc3RWaXNpYmxlSW5kZXggKyAxKSB7XG4gICAgICAgICAgICAgIF90aGlzMy5vdmVyZmxvd2VkSXRlbXMgPSBjaGlsZHJlbi5zbGljZShsYXN0VmlzaWJsZUluZGV4ICsgMSkubWFwKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoYywgLy8gY2hpbGRyZW5baW5kZXhdLmtleSB3aWxsIGJlY29tZSAnLiRrZXknIGluIGNsb25lIGJ5IGRlZmF1bHQsXG4gICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSB0byBvdmVyd3JpdGUgd2l0aCB0aGUgY29ycmVjdCBrZXkgZXhwbGljaXRseVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGtleTogYy5wcm9wcy5ldmVudEtleSxcbiAgICAgICAgICAgICAgICAgIG1vZGU6ICd2ZXJ0aWNhbC1sZWZ0J1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgb3ZlcmZsb3dlZCA9IF90aGlzMy5nZXRPdmVyZmxvd2VkU3ViTWVudUl0ZW0oY2hpbGROb2RlLnByb3BzLmV2ZW50S2V5LCBfdGhpczMub3ZlcmZsb3dlZEl0ZW1zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgcmV0ID0gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShhY2MpLCBbb3ZlcmZsb3dlZCwgaXRlbV0pO1xuXG4gICAgICAgICAgaWYgKGluZGV4ID09PSBjaGlsZHJlbi5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAvLyBuZWVkIGEgcGxhY2Vob2xkZXIgZm9yIGNhbGN1bGF0aW5nIG92ZXJmbG93ZWQgaW5kaWNhdG9yIHdpZHRoXG4gICAgICAgICAgICByZXQucHVzaChfdGhpczMuZ2V0T3ZlcmZsb3dlZFN1Yk1lbnVJdGVtKGNoaWxkTm9kZS5wcm9wcy5ldmVudEtleSwgW10sIHRydWUpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoYWNjKSwgW2l0ZW1dKTtcbiAgICAgIH0sIFtdKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHZpc2libGUgPSBfdGhpcyRwcm9wczIudmlzaWJsZSxcbiAgICAgICAgICBwcmVmaXhDbHMgPSBfdGhpcyRwcm9wczIucHJlZml4Q2xzLFxuICAgICAgICAgIG92ZXJmbG93ZWRJbmRpY2F0b3IgPSBfdGhpcyRwcm9wczIub3ZlcmZsb3dlZEluZGljYXRvcixcbiAgICAgICAgICBtb2RlID0gX3RoaXMkcHJvcHMyLm1vZGUsXG4gICAgICAgICAgbGV2ZWwgPSBfdGhpcyRwcm9wczIubGV2ZWwsXG4gICAgICAgICAgdGFnID0gX3RoaXMkcHJvcHMyLnRhZyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzMi5jaGlsZHJlbixcbiAgICAgICAgICB0aGVtZSA9IF90aGlzJHByb3BzMi50aGVtZSxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzMiwgW1widmlzaWJsZVwiLCBcInByZWZpeENsc1wiLCBcIm92ZXJmbG93ZWRJbmRpY2F0b3JcIiwgXCJtb2RlXCIsIFwibGV2ZWxcIiwgXCJ0YWdcIiwgXCJjaGlsZHJlblwiLCBcInRoZW1lXCJdKTtcblxuICAgICAgdmFyIFRhZyA9IHRhZztcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUYWcsIF9leHRlbmRzKHtcbiAgICAgICAgcmVmOiB0aGlzLmNoaWxkUmVmXG4gICAgICB9LCByZXN0KSwgdGhpcy5yZW5kZXJDaGlsZHJlbihjaGlsZHJlbikpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBET01XcmFwO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5ET01XcmFwLmRlZmF1bHRQcm9wcyA9IHtcbiAgdGFnOiAnZGl2JyxcbiAgY2xhc3NOYW1lOiAnJ1xufTtcbmV4cG9ydCBkZWZhdWx0IERPTVdyYXA7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjb25uZWN0IH0gZnJvbSAnbWluaS1zdG9yZSc7XG5pbXBvcnQgS2V5Q29kZSBmcm9tIFwicmMtdXRpbC9lcy9LZXlDb2RlXCI7XG5pbXBvcnQgY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIGZyb20gXCJyYy11dGlsL2VzL2NyZWF0ZUNoYWluZWRGdW5jdGlvblwiO1xuaW1wb3J0IHRvQXJyYXkgZnJvbSBcInJjLXV0aWwvZXMvQ2hpbGRyZW4vdG9BcnJheVwiO1xuaW1wb3J0IHNoYWxsb3dFcXVhbCBmcm9tICdzaGFsbG93ZXF1YWwnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBnZXRLZXlGcm9tQ2hpbGRyZW5JbmRleCwgbG9vcE1lbnVJdGVtLCBub29wLCBtZW51QWxsUHJvcHMsIGlzTW9iaWxlRGV2aWNlIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCBET01XcmFwIGZyb20gJy4vRE9NV3JhcCc7XG5cbmZ1bmN0aW9uIGFsbERpc2FibGVkKGFycikge1xuICBpZiAoIWFyci5sZW5ndGgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBhcnIuZXZlcnkoZnVuY3Rpb24gKGMpIHtcbiAgICByZXR1cm4gISFjLnByb3BzLmRpc2FibGVkO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQWN0aXZlS2V5KHN0b3JlLCBtZW51SWQsIGFjdGl2ZUtleSkge1xuICB2YXIgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICBzdG9yZS5zZXRTdGF0ZSh7XG4gICAgYWN0aXZlS2V5OiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHN0YXRlLmFjdGl2ZUtleSksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIG1lbnVJZCwgYWN0aXZlS2V5KSlcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEV2ZW50S2V5KHByb3BzKSB7XG4gIC8vIHdoZW4gZXZlbnRLZXkgbm90IGF2YWlsYWJsZSAsaXQncyBtZW51IGFuZCByZXR1cm4gbWVudSBpZCAnMC1tZW51LSdcbiAgcmV0dXJuIHByb3BzLmV2ZW50S2V5IHx8ICcwLW1lbnUtJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFjdGl2ZUtleShwcm9wcywgb3JpZ2luYWxBY3RpdmVLZXkpIHtcbiAgdmFyIGFjdGl2ZUtleSA9IG9yaWdpbmFsQWN0aXZlS2V5O1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIGV2ZW50S2V5ID0gcHJvcHMuZXZlbnRLZXk7XG5cbiAgaWYgKGFjdGl2ZUtleSkge1xuICAgIHZhciBmb3VuZDtcbiAgICBsb29wTWVudUl0ZW0oY2hpbGRyZW4sIGZ1bmN0aW9uIChjLCBpKSB7XG4gICAgICBpZiAoYyAmJiBjLnByb3BzICYmICFjLnByb3BzLmRpc2FibGVkICYmIGFjdGl2ZUtleSA9PT0gZ2V0S2V5RnJvbUNoaWxkcmVuSW5kZXgoYywgZXZlbnRLZXksIGkpKSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChmb3VuZCkge1xuICAgICAgcmV0dXJuIGFjdGl2ZUtleTtcbiAgICB9XG4gIH1cblxuICBhY3RpdmVLZXkgPSBudWxsO1xuXG4gIGlmIChwcm9wcy5kZWZhdWx0QWN0aXZlRmlyc3QpIHtcbiAgICBsb29wTWVudUl0ZW0oY2hpbGRyZW4sIGZ1bmN0aW9uIChjLCBpKSB7XG4gICAgICBpZiAoIWFjdGl2ZUtleSAmJiBjICYmICFjLnByb3BzLmRpc2FibGVkKSB7XG4gICAgICAgIGFjdGl2ZUtleSA9IGdldEtleUZyb21DaGlsZHJlbkluZGV4KGMsIGV2ZW50S2V5LCBpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWN0aXZlS2V5O1xuICB9XG5cbiAgcmV0dXJuIGFjdGl2ZUtleTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzYXZlUmVmKGMpIHtcbiAgaWYgKCFjKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1pbnZhbGlkLXRoaXMgKi9cblxuXG4gIHZhciBpbmRleCA9IHRoaXMuaW5zdGFuY2VBcnJheS5pbmRleE9mKGMpO1xuXG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAvLyB1cGRhdGUgY29tcG9uZW50IGlmIGl0J3MgYWxyZWFkeSBpbnNpZGUgaW5zdGFuY2VBcnJheVxuICAgIHRoaXMuaW5zdGFuY2VBcnJheVtpbmRleF0gPSBjO1xuICB9IGVsc2Uge1xuICAgIC8vIGFkZCBjb21wb25lbnQgaWYgaXQncyBub3QgaW4gaW5zdGFuY2VBcnJheSB5ZXQ7XG4gICAgdGhpcy5pbnN0YW5jZUFycmF5LnB1c2goYyk7XG4gIH1cbiAgLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC10aGlzICovXG5cbn1cbmV4cG9ydCB2YXIgU3ViUG9wdXBNZW51ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhTdWJQb3B1cE1lbnUsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoU3ViUG9wdXBNZW51KTtcblxuICBmdW5jdGlvbiBTdWJQb3B1cE1lbnUocHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3ViUG9wdXBNZW51KTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcHJvcHMpO1xuICAgIC8qKlxuICAgICAqIGFsbCBrZXlib2FyZCBldmVudHMgY2FsbGJhY2tzIHJ1biBmcm9tIGhlcmUgYXQgZmlyc3RcbiAgICAgKlxuICAgICAqIG5vdGU6XG4gICAgICogIFRoaXMgbGVnYWN5IGNvZGUgdGhhdCBgb25LZXlEb3duYCBpcyBjYWxsZWQgYnkgcGFyZW50IGluc3RlYWQgb2YgZG9tIHNlbGYuXG4gICAgICogIHdoaWNoIG5lZWQgcmV0dXJuIGNvZGUgdG8gY2hlY2sgaWYgdGhpcyBldmVudCBpcyBoYW5kbGVkXG4gICAgICovXG5cbiAgICBfdGhpcy5vbktleURvd24gPSBmdW5jdGlvbiAoZSwgY2FsbGJhY2spIHtcbiAgICAgIHZhciBrZXlDb2RlID0gZS5rZXlDb2RlO1xuICAgICAgdmFyIGhhbmRsZWQ7XG5cbiAgICAgIF90aGlzLmdldEZsYXRJbnN0YW5jZUFycmF5KCkuZm9yRWFjaChmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgIGlmIChvYmogJiYgb2JqLnByb3BzLmFjdGl2ZSAmJiBvYmoub25LZXlEb3duKSB7XG4gICAgICAgICAgaGFuZGxlZCA9IG9iai5vbktleURvd24oZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoaGFuZGxlZCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cblxuICAgICAgdmFyIGFjdGl2ZUl0ZW0gPSBudWxsO1xuXG4gICAgICBpZiAoa2V5Q29kZSA9PT0gS2V5Q29kZS5VUCB8fCBrZXlDb2RlID09PSBLZXlDb2RlLkRPV04pIHtcbiAgICAgICAgYWN0aXZlSXRlbSA9IF90aGlzLnN0ZXAoa2V5Q29kZSA9PT0gS2V5Q29kZS5VUCA/IC0xIDogMSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdXBkYXRlQWN0aXZlS2V5KF90aGlzLnByb3BzLnN0b3JlLCBnZXRFdmVudEtleShfdGhpcy5wcm9wcyksIGFjdGl2ZUl0ZW0ucHJvcHMuZXZlbnRLZXkpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBjYWxsYmFjayhhY3RpdmVJdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICBfdGhpcy5vbkl0ZW1Ib3ZlciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIga2V5ID0gZS5rZXksXG4gICAgICAgICAgaG92ZXIgPSBlLmhvdmVyO1xuICAgICAgdXBkYXRlQWN0aXZlS2V5KF90aGlzLnByb3BzLnN0b3JlLCBnZXRFdmVudEtleShfdGhpcy5wcm9wcyksIGhvdmVyID8ga2V5IDogbnVsbCk7XG4gICAgfTtcblxuICAgIF90aGlzLm9uRGVzZWxlY3QgPSBmdW5jdGlvbiAoc2VsZWN0SW5mbykge1xuICAgICAgX3RoaXMucHJvcHMub25EZXNlbGVjdChzZWxlY3RJbmZvKTtcbiAgICB9O1xuXG4gICAgX3RoaXMub25TZWxlY3QgPSBmdW5jdGlvbiAoc2VsZWN0SW5mbykge1xuICAgICAgX3RoaXMucHJvcHMub25TZWxlY3Qoc2VsZWN0SW5mbyk7XG4gICAgfTtcblxuICAgIF90aGlzLm9uQ2xpY2sgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgX3RoaXMucHJvcHMub25DbGljayhlKTtcbiAgICB9O1xuXG4gICAgX3RoaXMub25PcGVuQ2hhbmdlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIF90aGlzLnByb3BzLm9uT3BlbkNoYW5nZShlKTtcbiAgICB9O1xuXG4gICAgX3RoaXMub25EZXN0cm95ID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIF90aGlzLnByb3BzLm9uRGVzdHJveShrZXkpO1xuICAgIH07XG5cbiAgICBfdGhpcy5nZXRGbGF0SW5zdGFuY2VBcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5pbnN0YW5jZUFycmF5O1xuICAgIH07XG5cbiAgICBfdGhpcy5zdGVwID0gZnVuY3Rpb24gKGRpcmVjdGlvbikge1xuICAgICAgdmFyIGNoaWxkcmVuID0gX3RoaXMuZ2V0RmxhdEluc3RhbmNlQXJyYXkoKTtcblxuICAgICAgdmFyIGFjdGl2ZUtleSA9IF90aGlzLnByb3BzLnN0b3JlLmdldFN0YXRlKCkuYWN0aXZlS2V5W2dldEV2ZW50S2V5KF90aGlzLnByb3BzKV07XG5cbiAgICAgIHZhciBsZW4gPSBjaGlsZHJlbi5sZW5ndGg7XG5cbiAgICAgIGlmICghbGVuKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGlyZWN0aW9uIDwgMCkge1xuICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmNvbmNhdCgpLnJldmVyc2UoKTtcbiAgICAgIH0gLy8gZmluZCBjdXJyZW50IGFjdGl2ZUluZGV4XG5cblxuICAgICAgdmFyIGFjdGl2ZUluZGV4ID0gLTE7XG4gICAgICBjaGlsZHJlbi5ldmVyeShmdW5jdGlvbiAoYywgY2kpIHtcbiAgICAgICAgaWYgKGMgJiYgYy5wcm9wcy5ldmVudEtleSA9PT0gYWN0aXZlS2V5KSB7XG4gICAgICAgICAgYWN0aXZlSW5kZXggPSBjaTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIV90aGlzLnByb3BzLmRlZmF1bHRBY3RpdmVGaXJzdCAmJiBhY3RpdmVJbmRleCAhPT0gLTEgJiYgYWxsRGlzYWJsZWQoY2hpbGRyZW4uc2xpY2UoYWN0aXZlSW5kZXgsIGxlbiAtIDEpKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3RhcnQgPSAoYWN0aXZlSW5kZXggKyAxKSAlIGxlbjtcbiAgICAgIHZhciBpID0gc3RhcnQ7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV07XG5cbiAgICAgICAgaWYgKCFjaGlsZCB8fCBjaGlsZC5wcm9wcy5kaXNhYmxlZCkge1xuICAgICAgICAgIGkgPSAoaSArIDEpICUgbGVuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgfVxuICAgICAgfSB3aGlsZSAoaSAhPT0gc3RhcnQpO1xuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuXG4gICAgX3RoaXMucmVuZGVyQ29tbW9uTWVudUl0ZW0gPSBmdW5jdGlvbiAoY2hpbGQsIGksIGV4dHJhUHJvcHMpIHtcbiAgICAgIHZhciBzdGF0ZSA9IF90aGlzLnByb3BzLnN0b3JlLmdldFN0YXRlKCk7XG5cbiAgICAgIHZhciBfYXNzZXJ0VGhpc0luaXRpYWxpemUgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSxcbiAgICAgICAgICBwcm9wcyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZS5wcm9wcztcblxuICAgICAgdmFyIGtleSA9IGdldEtleUZyb21DaGlsZHJlbkluZGV4KGNoaWxkLCBwcm9wcy5ldmVudEtleSwgaSk7XG4gICAgICB2YXIgY2hpbGRQcm9wcyA9IGNoaWxkLnByb3BzOyAvLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8xMTUxNyNpc3N1ZWNvbW1lbnQtNDc3NDAzMDU1XG5cbiAgICAgIGlmICghY2hpbGRQcm9wcyB8fCB0eXBlb2YgY2hpbGQudHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgfVxuXG4gICAgICB2YXIgaXNBY3RpdmUgPSBrZXkgPT09IHN0YXRlLmFjdGl2ZUtleTtcblxuICAgICAgdmFyIG5ld0NoaWxkUHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBtb2RlOiBjaGlsZFByb3BzLm1vZGUgfHwgcHJvcHMubW9kZSxcbiAgICAgICAgbGV2ZWw6IHByb3BzLmxldmVsLFxuICAgICAgICBpbmxpbmVJbmRlbnQ6IHByb3BzLmlubGluZUluZGVudCxcbiAgICAgICAgcmVuZGVyTWVudUl0ZW06IF90aGlzLnJlbmRlck1lbnVJdGVtLFxuICAgICAgICByb290UHJlZml4Q2xzOiBwcm9wcy5wcmVmaXhDbHMsXG4gICAgICAgIGluZGV4OiBpLFxuICAgICAgICBwYXJlbnRNZW51OiBwcm9wcy5wYXJlbnRNZW51LFxuICAgICAgICAvLyBjdXN0b21pemVkIHJlZiBmdW5jdGlvbiwgbmVlZCB0byBiZSBpbnZva2VkIG1hbnVhbGx5IGluIGNoaWxkJ3MgY29tcG9uZW50RGlkTW91bnRcbiAgICAgICAgbWFudWFsUmVmOiBjaGlsZFByb3BzLmRpc2FibGVkID8gdW5kZWZpbmVkIDogY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKGNoaWxkLnJlZiwgc2F2ZVJlZi5iaW5kKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSksXG4gICAgICAgIGV2ZW50S2V5OiBrZXksXG4gICAgICAgIGFjdGl2ZTogIWNoaWxkUHJvcHMuZGlzYWJsZWQgJiYgaXNBY3RpdmUsXG4gICAgICAgIG11bHRpcGxlOiBwcm9wcy5tdWx0aXBsZSxcbiAgICAgICAgb25DbGljazogZnVuY3Rpb24gb25DbGljayhlKSB7XG4gICAgICAgICAgKGNoaWxkUHJvcHMub25DbGljayB8fCBub29wKShlKTtcblxuICAgICAgICAgIF90aGlzLm9uQ2xpY2soZSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uSXRlbUhvdmVyOiBfdGhpcy5vbkl0ZW1Ib3ZlcixcbiAgICAgICAgbW90aW9uOiBwcm9wcy5tb3Rpb24sXG4gICAgICAgIHN1Yk1lbnVPcGVuRGVsYXk6IHByb3BzLnN1Yk1lbnVPcGVuRGVsYXksXG4gICAgICAgIHN1Yk1lbnVDbG9zZURlbGF5OiBwcm9wcy5zdWJNZW51Q2xvc2VEZWxheSxcbiAgICAgICAgZm9yY2VTdWJNZW51UmVuZGVyOiBwcm9wcy5mb3JjZVN1Yk1lbnVSZW5kZXIsXG4gICAgICAgIG9uT3BlbkNoYW5nZTogX3RoaXMub25PcGVuQ2hhbmdlLFxuICAgICAgICBvbkRlc2VsZWN0OiBfdGhpcy5vbkRlc2VsZWN0LFxuICAgICAgICBvblNlbGVjdDogX3RoaXMub25TZWxlY3QsXG4gICAgICAgIGJ1aWx0aW5QbGFjZW1lbnRzOiBwcm9wcy5idWlsdGluUGxhY2VtZW50cyxcbiAgICAgICAgaXRlbUljb246IGNoaWxkUHJvcHMuaXRlbUljb24gfHwgX3RoaXMucHJvcHMuaXRlbUljb24sXG4gICAgICAgIGV4cGFuZEljb246IGNoaWxkUHJvcHMuZXhwYW5kSWNvbiB8fCBfdGhpcy5wcm9wcy5leHBhbmRJY29uXG4gICAgICB9LCBleHRyYVByb3BzKSwge30sIHtcbiAgICAgICAgZGlyZWN0aW9uOiBwcm9wcy5kaXJlY3Rpb25cbiAgICAgIH0pOyAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzEzOTQzXG5cblxuICAgICAgaWYgKHByb3BzLm1vZGUgPT09ICdpbmxpbmUnIHx8IGlzTW9iaWxlRGV2aWNlKCkpIHtcbiAgICAgICAgbmV3Q2hpbGRQcm9wcy50cmlnZ2VyU3ViTWVudUFjdGlvbiA9ICdjbGljayc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG5ld0NoaWxkUHJvcHMpLCB7fSwge1xuICAgICAgICBrZXk6IGtleSB8fCBpXG4gICAgICB9KSk7XG4gICAgfTtcblxuICAgIF90aGlzLnJlbmRlck1lbnVJdGVtID0gZnVuY3Rpb24gKGMsIGksIHN1Yk1lbnVLZXkpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKCFjKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3RhdGUgPSBfdGhpcy5wcm9wcy5zdG9yZS5nZXRTdGF0ZSgpO1xuXG4gICAgICB2YXIgZXh0cmFQcm9wcyA9IHtcbiAgICAgICAgb3BlbktleXM6IHN0YXRlLm9wZW5LZXlzLFxuICAgICAgICBzZWxlY3RlZEtleXM6IHN0YXRlLnNlbGVjdGVkS2V5cyxcbiAgICAgICAgdHJpZ2dlclN1Yk1lbnVBY3Rpb246IF90aGlzLnByb3BzLnRyaWdnZXJTdWJNZW51QWN0aW9uLFxuICAgICAgICBzdWJNZW51S2V5OiBzdWJNZW51S2V5XG4gICAgICB9O1xuICAgICAgcmV0dXJuIF90aGlzLnJlbmRlckNvbW1vbk1lbnVJdGVtKGMsIGksIGV4dHJhUHJvcHMpO1xuICAgIH07XG5cbiAgICBwcm9wcy5zdG9yZS5zZXRTdGF0ZSh7XG4gICAgICBhY3RpdmVLZXk6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMuc3RvcmUuZ2V0U3RhdGUoKS5hY3RpdmVLZXkpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBwcm9wcy5ldmVudEtleSwgZ2V0QWN0aXZlS2V5KHByb3BzLCBwcm9wcy5hY3RpdmVLZXkpKSlcbiAgICB9KTtcbiAgICBfdGhpcy5pbnN0YW5jZUFycmF5ID0gW107XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFN1YlBvcHVwTWVudSwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAvLyBpbnZva2UgY3VzdG9taXplZCByZWYgdG8gZXhwb3NlIGNvbXBvbmVudCB0byBtaXhpblxuICAgICAgaWYgKHRoaXMucHJvcHMubWFudWFsUmVmKSB7XG4gICAgICAgIHRoaXMucHJvcHMubWFudWFsUmVmKHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzaG91bGRDb21wb25lbnRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcykge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMudmlzaWJsZSB8fCBuZXh0UHJvcHMudmlzaWJsZSB8fCB0aGlzLnByb3BzLmNsYXNzTmFtZSAhPT0gbmV4dFByb3BzLmNsYXNzTmFtZSB8fCAhc2hhbGxvd0VxdWFsKHRoaXMucHJvcHMuc3R5bGUsIG5leHRQcm9wcy5zdHlsZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuICAgICAgdmFyIG9yaWdpbmFsQWN0aXZlS2V5ID0gJ2FjdGl2ZUtleScgaW4gcHJvcHMgPyBwcm9wcy5hY3RpdmVLZXkgOiBwcm9wcy5zdG9yZS5nZXRTdGF0ZSgpLmFjdGl2ZUtleVtnZXRFdmVudEtleShwcm9wcyldO1xuICAgICAgdmFyIGFjdGl2ZUtleSA9IGdldEFjdGl2ZUtleShwcm9wcywgb3JpZ2luYWxBY3RpdmVLZXkpO1xuXG4gICAgICBpZiAoYWN0aXZlS2V5ICE9PSBvcmlnaW5hbEFjdGl2ZUtleSkge1xuICAgICAgICB1cGRhdGVBY3RpdmVLZXkocHJvcHMuc3RvcmUsIGdldEV2ZW50S2V5KHByb3BzKSwgYWN0aXZlS2V5KTtcbiAgICAgIH0gZWxzZSBpZiAoJ2FjdGl2ZUtleScgaW4gcHJldlByb3BzKSB7XG4gICAgICAgIC8vIElmIHByZXYgYWN0aXZlS2V5IGlzIG5vdCBzYW1lIGFzIGN1cnJlbnQgYWN0aXZlS2V5LFxuICAgICAgICAvLyB3ZSBzaG91bGQgc2V0IGl0LlxuICAgICAgICB2YXIgcHJldkFjdGl2ZUtleSA9IGdldEFjdGl2ZUtleShwcmV2UHJvcHMsIHByZXZQcm9wcy5hY3RpdmVLZXkpO1xuXG4gICAgICAgIGlmIChhY3RpdmVLZXkgIT09IHByZXZBY3RpdmVLZXkpIHtcbiAgICAgICAgICB1cGRhdGVBY3RpdmVLZXkocHJvcHMuc3RvcmUsIGdldEV2ZW50S2V5KHByb3BzKSwgYWN0aXZlS2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBwcm9wcyA9IF9leHRlbmRzKHt9LCB0aGlzLnByb3BzKTtcblxuICAgICAgdGhpcy5pbnN0YW5jZUFycmF5ID0gW107XG4gICAgICB2YXIgY2xhc3NOYW1lID0gY2xhc3NOYW1lcyhwcm9wcy5wcmVmaXhDbHMsIHByb3BzLmNsYXNzTmFtZSwgXCJcIi5jb25jYXQocHJvcHMucHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KHByb3BzLm1vZGUpKTtcbiAgICAgIHZhciBkb21Qcm9wcyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICAgIC8vIHJvbGUgY291bGQgYmUgJ3NlbGVjdCcgYW5kIGJ5IGRlZmF1bHQgc2V0IHRvIG1lbnVcbiAgICAgICAgcm9sZTogcHJvcHMucm9sZSB8fCAnbWVudSdcbiAgICAgIH07XG5cbiAgICAgIGlmIChwcm9wcy5pZCkge1xuICAgICAgICBkb21Qcm9wcy5pZCA9IHByb3BzLmlkO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcHMuZm9jdXNhYmxlKSB7XG4gICAgICAgIGRvbVByb3BzLnRhYkluZGV4ID0gMDtcbiAgICAgICAgZG9tUHJvcHMub25LZXlEb3duID0gdGhpcy5vbktleURvd247XG4gICAgICB9XG5cbiAgICAgIHZhciBwcmVmaXhDbHMgPSBwcm9wcy5wcmVmaXhDbHMsXG4gICAgICAgICAgZXZlbnRLZXkgPSBwcm9wcy5ldmVudEtleSxcbiAgICAgICAgICB2aXNpYmxlID0gcHJvcHMudmlzaWJsZSxcbiAgICAgICAgICBsZXZlbCA9IHByb3BzLmxldmVsLFxuICAgICAgICAgIG1vZGUgPSBwcm9wcy5tb2RlLFxuICAgICAgICAgIG92ZXJmbG93ZWRJbmRpY2F0b3IgPSBwcm9wcy5vdmVyZmxvd2VkSW5kaWNhdG9yLFxuICAgICAgICAgIHRoZW1lID0gcHJvcHMudGhlbWU7XG4gICAgICBtZW51QWxsUHJvcHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiBkZWxldGUgcHJvcHNba2V5XTtcbiAgICAgIH0pOyAvLyBPdGhlcndpc2UsIHRoZSBwcm9wYWdhdGVkIGNsaWNrIGV2ZW50IHdpbGwgdHJpZ2dlciBhbm90aGVyIG9uQ2xpY2tcblxuICAgICAgZGVsZXRlIHByb3BzLm9uQ2xpY2s7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRE9NV3JhcCwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgICBtb2RlOiBtb2RlLFxuICAgICAgICB0YWc6IFwidWxcIixcbiAgICAgICAgbGV2ZWw6IGxldmVsLFxuICAgICAgICB0aGVtZTogdGhlbWUsXG4gICAgICAgIHZpc2libGU6IHZpc2libGUsXG4gICAgICAgIG92ZXJmbG93ZWRJbmRpY2F0b3I6IG92ZXJmbG93ZWRJbmRpY2F0b3JcbiAgICAgIH0sIGRvbVByb3BzKSwgdG9BcnJheShwcm9wcy5jaGlsZHJlbikubWFwKGZ1bmN0aW9uIChjLCBpKSB7XG4gICAgICAgIHJldHVybiBfdGhpczIucmVuZGVyTWVudUl0ZW0oYywgaSwgZXZlbnRLZXkgfHwgJzAtbWVudS0nKTtcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU3ViUG9wdXBNZW51O1xufShSZWFjdC5Db21wb25lbnQpO1xuU3ViUG9wdXBNZW51LmRlZmF1bHRQcm9wcyA9IHtcbiAgcHJlZml4Q2xzOiAncmMtbWVudScsXG4gIGNsYXNzTmFtZTogJycsXG4gIG1vZGU6ICd2ZXJ0aWNhbCcsXG4gIGxldmVsOiAxLFxuICBpbmxpbmVJbmRlbnQ6IDI0LFxuICB2aXNpYmxlOiB0cnVlLFxuICBmb2N1c2FibGU6IHRydWUsXG4gIHN0eWxlOiB7fSxcbiAgbWFudWFsUmVmOiBub29wXG59O1xudmFyIGNvbm5lY3RlZCA9IGNvbm5lY3QoKShTdWJQb3B1cE1lbnUpO1xuZXhwb3J0IGRlZmF1bHQgY29ubmVjdGVkOyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCB3YXJuaW5nIGZyb20gXCJyYy11dGlsL2VzL3dhcm5pbmdcIjtcbmV4cG9ydCBmdW5jdGlvbiBnZXRNb3Rpb24oX3JlZiwgX3JlZjIsIG1lbnVNb2RlKSB7XG4gIHZhciBwcmVmaXhDbHMgPSBfcmVmLnByZWZpeENscyxcbiAgICAgIG1vdGlvbiA9IF9yZWYubW90aW9uLFxuICAgICAgX3JlZiRkZWZhdWx0TW90aW9ucyA9IF9yZWYuZGVmYXVsdE1vdGlvbnMsXG4gICAgICBkZWZhdWx0TW90aW9ucyA9IF9yZWYkZGVmYXVsdE1vdGlvbnMgPT09IHZvaWQgMCA/IHt9IDogX3JlZiRkZWZhdWx0TW90aW9ucyxcbiAgICAgIG9wZW5BbmltYXRpb24gPSBfcmVmLm9wZW5BbmltYXRpb24sXG4gICAgICBvcGVuVHJhbnNpdGlvbk5hbWUgPSBfcmVmLm9wZW5UcmFuc2l0aW9uTmFtZTtcbiAgdmFyIHN3aXRjaGluZ01vZGVGcm9tSW5saW5lID0gX3JlZjIuc3dpdGNoaW5nTW9kZUZyb21JbmxpbmU7XG5cbiAgaWYgKG1vdGlvbikge1xuICAgIHJldHVybiBtb3Rpb247XG4gIH1cblxuICBpZiAoX3R5cGVvZihvcGVuQW5pbWF0aW9uKSA9PT0gJ29iamVjdCcgJiYgb3BlbkFuaW1hdGlvbikge1xuICAgIHdhcm5pbmcoZmFsc2UsICdPYmplY3QgdHlwZSBvZiBgb3BlbkFuaW1hdGlvbmAgaXMgcmVtb3ZlZC4gUGxlYXNlIHVzZSBgbW90aW9uYCBpbnN0ZWFkLicpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBvcGVuQW5pbWF0aW9uID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7XG4gICAgICBtb3Rpb25OYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLW9wZW4tXCIpLmNvbmNhdChvcGVuQW5pbWF0aW9uKVxuICAgIH07XG4gIH1cblxuICBpZiAob3BlblRyYW5zaXRpb25OYW1lKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vdGlvbk5hbWU6IG9wZW5UcmFuc2l0aW9uTmFtZVxuICAgIH07XG4gIH0gLy8gRGVmYXVsdCBsb2dpY1xuXG5cbiAgdmFyIGRlZmF1bHRNb3Rpb24gPSBkZWZhdWx0TW90aW9uc1ttZW51TW9kZV07XG5cbiAgaWYgKGRlZmF1bHRNb3Rpb24pIHtcbiAgICByZXR1cm4gZGVmYXVsdE1vdGlvbjtcbiAgfSAvLyBXaGVuIG1vZGUgc3dpdGNoIGZyb20gaW5saW5lXG4gIC8vIHN1Ym1lbnUgc2hvdWxkIGhpZGUgd2l0aG91dCBhbmltYXRpb25cblxuXG4gIHJldHVybiBzd2l0Y2hpbmdNb2RlRnJvbUlubGluZSA/IG51bGwgOiBkZWZhdWx0TW90aW9ucy5vdGhlcjtcbn0iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUHJvdmlkZXIsIGNyZWF0ZSB9IGZyb20gJ21pbmktc3RvcmUnO1xuaW1wb3J0IG9taXQgZnJvbSBcInJjLXV0aWwvZXMvb21pdFwiO1xuaW1wb3J0IFN1YlBvcHVwTWVudSwgeyBnZXRBY3RpdmVLZXkgfSBmcm9tICcuL1N1YlBvcHVwTWVudSc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IGdldE1vdGlvbiB9IGZyb20gJy4vdXRpbHMvbGVnYWN5VXRpbCc7XG5cbnZhciBNZW51ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhNZW51LCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE1lbnUpO1xuXG4gIGZ1bmN0aW9uIE1lbnUocHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWVudSk7XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKTtcblxuICAgIF90aGlzLm9uU2VsZWN0ID0gZnVuY3Rpb24gKHNlbGVjdEluZm8pIHtcbiAgICAgIHZhciBfYXNzZXJ0VGhpc0luaXRpYWxpemUgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSxcbiAgICAgICAgICBwcm9wcyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZS5wcm9wcztcblxuICAgICAgaWYgKHByb3BzLnNlbGVjdGFibGUpIHtcbiAgICAgICAgLy8gcm9vdCBtZW51XG4gICAgICAgIHZhciBfdGhpcyRzdG9yZSRnZXRTdGF0ZSA9IF90aGlzLnN0b3JlLmdldFN0YXRlKCksXG4gICAgICAgICAgICBfc2VsZWN0ZWRLZXlzID0gX3RoaXMkc3RvcmUkZ2V0U3RhdGUuc2VsZWN0ZWRLZXlzO1xuXG4gICAgICAgIHZhciBzZWxlY3RlZEtleSA9IHNlbGVjdEluZm8ua2V5O1xuXG4gICAgICAgIGlmIChwcm9wcy5tdWx0aXBsZSkge1xuICAgICAgICAgIF9zZWxlY3RlZEtleXMgPSBfc2VsZWN0ZWRLZXlzLmNvbmNhdChbc2VsZWN0ZWRLZXldKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfc2VsZWN0ZWRLZXlzID0gW3NlbGVjdGVkS2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKCdzZWxlY3RlZEtleXMnIGluIHByb3BzKSkge1xuICAgICAgICAgIF90aGlzLnN0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHNlbGVjdGVkS2V5czogX3NlbGVjdGVkS2V5c1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvcHMub25TZWxlY3QoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBzZWxlY3RJbmZvKSwge30sIHtcbiAgICAgICAgICBzZWxlY3RlZEtleXM6IF9zZWxlY3RlZEtleXNcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5vbkNsaWNrID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBtb2RlID0gX3RoaXMuZ2V0UmVhbE1lbnVNb2RlKCk7XG5cbiAgICAgIHZhciBfYXNzZXJ0VGhpc0luaXRpYWxpemUyID0gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksXG4gICAgICAgICAgc3RvcmUgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemUyLnN0b3JlLFxuICAgICAgICAgIG9uT3BlbkNoYW5nZSA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTIucHJvcHMub25PcGVuQ2hhbmdlO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2lubGluZScgJiYgISgnb3BlbktleXMnIGluIF90aGlzLnByb3BzKSkge1xuICAgICAgICAvLyBjbG9zaW5nIHZlcnRpY2FsIHBvcHVwIHN1Ym1lbnUgYWZ0ZXIgY2xpY2sgaXRcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICAgIG9wZW5LZXlzOiBbXVxuICAgICAgICB9KTtcbiAgICAgICAgb25PcGVuQ2hhbmdlKFtdKTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMucHJvcHMub25DbGljayhlKTtcbiAgICB9OyAvLyBvbktleURvd24gbmVlZHMgdG8gYmUgZXhwb3NlZCBhcyBhIGluc3RhbmNlIG1ldGhvZFxuICAgIC8vIGUuZy4sIGluIHJjLXNlbGVjdCwgd2UgbmVlZCB0byBuYXZpZ2F0ZSBtZW51IGl0ZW0gd2hpbGVcbiAgICAvLyBjdXJyZW50IGFjdGl2ZSBpdGVtIGlzIHJjLXNlbGVjdCBpbnB1dCBib3ggcmF0aGVyIHRoYW4gdGhlIG1lbnUgaXRzZWxmXG5cblxuICAgIF90aGlzLm9uS2V5RG93biA9IGZ1bmN0aW9uIChlLCBjYWxsYmFjaykge1xuICAgICAgX3RoaXMuaW5uZXJNZW51LmdldFdyYXBwZWRJbnN0YW5jZSgpLm9uS2V5RG93bihlLCBjYWxsYmFjayk7XG4gICAgfTtcblxuICAgIF90aGlzLm9uT3BlbkNoYW5nZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgdmFyIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSxcbiAgICAgICAgICBwcm9wcyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTMucHJvcHM7XG5cbiAgICAgIHZhciBvcGVuS2V5cyA9IF90aGlzLnN0b3JlLmdldFN0YXRlKCkub3BlbktleXMuY29uY2F0KCk7XG5cbiAgICAgIHZhciBjaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgIHZhciBwcm9jZXNzU2luZ2xlID0gZnVuY3Rpb24gcHJvY2Vzc1NpbmdsZShlKSB7XG4gICAgICAgIHZhciBvbmVDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKGUub3Blbikge1xuICAgICAgICAgIG9uZUNoYW5nZWQgPSBvcGVuS2V5cy5pbmRleE9mKGUua2V5KSA9PT0gLTE7XG5cbiAgICAgICAgICBpZiAob25lQ2hhbmdlZCkge1xuICAgICAgICAgICAgb3BlbktleXMucHVzaChlLmtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBpbmRleCA9IG9wZW5LZXlzLmluZGV4T2YoZS5rZXkpO1xuICAgICAgICAgIG9uZUNoYW5nZWQgPSBpbmRleCAhPT0gLTE7XG5cbiAgICAgICAgICBpZiAob25lQ2hhbmdlZCkge1xuICAgICAgICAgICAgb3BlbktleXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjaGFuZ2VkID0gY2hhbmdlZCB8fCBvbmVDaGFuZ2VkO1xuICAgICAgfTtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgICAgIC8vIGJhdGNoIGNoYW5nZSBjYWxsXG4gICAgICAgIGV2ZW50LmZvckVhY2gocHJvY2Vzc1NpbmdsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzU2luZ2xlKGV2ZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgaWYgKCEoJ29wZW5LZXlzJyBpbiBfdGhpcy5wcm9wcykpIHtcbiAgICAgICAgICBfdGhpcy5zdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBvcGVuS2V5czogb3BlbktleXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb3BzLm9uT3BlbkNoYW5nZShvcGVuS2V5cyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLm9uRGVzZWxlY3QgPSBmdW5jdGlvbiAoc2VsZWN0SW5mbykge1xuICAgICAgdmFyIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTQgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSxcbiAgICAgICAgICBwcm9wcyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTQucHJvcHM7XG5cbiAgICAgIGlmIChwcm9wcy5zZWxlY3RhYmxlKSB7XG4gICAgICAgIHZhciBfc2VsZWN0ZWRLZXlzMiA9IF90aGlzLnN0b3JlLmdldFN0YXRlKCkuc2VsZWN0ZWRLZXlzLmNvbmNhdCgpO1xuXG4gICAgICAgIHZhciBzZWxlY3RlZEtleSA9IHNlbGVjdEluZm8ua2V5O1xuXG4gICAgICAgIHZhciBpbmRleCA9IF9zZWxlY3RlZEtleXMyLmluZGV4T2Yoc2VsZWN0ZWRLZXkpO1xuXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBfc2VsZWN0ZWRLZXlzMi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEoJ3NlbGVjdGVkS2V5cycgaW4gcHJvcHMpKSB7XG4gICAgICAgICAgX3RoaXMuc3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICAgICAgc2VsZWN0ZWRLZXlzOiBfc2VsZWN0ZWRLZXlzMlxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvcHMub25EZXNlbGVjdChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHNlbGVjdEluZm8pLCB7fSwge1xuICAgICAgICAgIHNlbGVjdGVkS2V5czogX3NlbGVjdGVkS2V5czJcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH07IC8vIFJlc3RvcmUgdmVydGljYWwgbW9kZSB3aGVuIG1lbnUgaXMgY29sbGFwc2VkIHJlc3BvbnNpdmVseSB3aGVuIG1vdW50ZWRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8xMzEwNFxuICAgIC8vIFRPRE86IG5vdCBhIHBlcmZlY3Qgc29sdXRpb24sXG4gICAgLy8gbG9va2luZyBhIG5ldyB3YXkgdG8gYXZvaWQgc2V0dGluZyBzd2l0Y2hpbmdNb2RlRnJvbUlubGluZSBpbiB0aGlzIHNpdHVhdGlvblxuXG5cbiAgICBfdGhpcy5vbk1vdXNlRW50ZXIgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgX3RoaXMucmVzdG9yZU1vZGVWZXJ0aWNhbEZyb21JbmxpbmUoKTtcblxuICAgICAgdmFyIG9uTW91c2VFbnRlciA9IF90aGlzLnByb3BzLm9uTW91c2VFbnRlcjtcblxuICAgICAgaWYgKG9uTW91c2VFbnRlcikge1xuICAgICAgICBvbk1vdXNlRW50ZXIoZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLm9uVHJhbnNpdGlvbkVuZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAvLyB3aGVuIGlubGluZUNvbGxhcHNlZCBtZW51IHdpZHRoIGFuaW1hdGlvbiBmaW5pc2hlZFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMTI4NjRcbiAgICAgIHZhciB3aWR0aENvbGxhcHNlZCA9IGUucHJvcGVydHlOYW1lID09PSAnd2lkdGgnICYmIGUudGFyZ2V0ID09PSBlLmN1cnJlbnRUYXJnZXQ7IC8vIEZpeCBTVkdFbGVtZW50IGUudGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mIGlzIG5vdCBhIGZ1bmN0aW9uXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8xNTY5OVxuXG4gICAgICB2YXIgY2xhc3NOYW1lID0gZS50YXJnZXQuY2xhc3NOYW1lOyAvLyBTVkdBbmltYXRlZFN0cmluZy5hbmltVmFsIHNob3VsZCBiZSBpZGVudGljYWwgdG8gU1ZHQW5pbWF0ZWRTdHJpbmcuYmFzZVZhbCxcbiAgICAgIC8vIHVubGVzcyBkdXJpbmcgYW4gYW5pbWF0aW9uLlxuXG4gICAgICB2YXIgY2xhc3NOYW1lVmFsdWUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoY2xhc3NOYW1lKSA9PT0gJ1tvYmplY3QgU1ZHQW5pbWF0ZWRTdHJpbmddJyA/IGNsYXNzTmFtZS5hbmltVmFsIDogY2xhc3NOYW1lOyAvLyBGaXggZm9yIDxNZW51IHN0eWxlPXt7IHdpZHRoOiAnMTAwJScgfX0gLz4sXG4gICAgICAvLyB0aGUgd2lkdGggdHJhbnNpdGlvbiB3b24ndCB0cmlnZ2VyIHdoZW4gbWVudSBpcyBjb2xsYXBzZWRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24tcHJvL2lzc3Vlcy8yNzgzXG5cbiAgICAgIHZhciBpY29uU2NhbGVkID0gZS5wcm9wZXJ0eU5hbWUgPT09ICdmb250LXNpemUnICYmIGNsYXNzTmFtZVZhbHVlLmluZGV4T2YoJ2FudGljb24nKSA+PSAwO1xuXG4gICAgICBpZiAod2lkdGhDb2xsYXBzZWQgfHwgaWNvblNjYWxlZCkge1xuICAgICAgICBfdGhpcy5yZXN0b3JlTW9kZVZlcnRpY2FsRnJvbUlubGluZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5zZXRJbm5lck1lbnUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgX3RoaXMuaW5uZXJNZW51ID0gbm9kZTtcbiAgICB9O1xuXG4gICAgX3RoaXMuaXNSb290TWVudSA9IHRydWU7XG4gICAgdmFyIHNlbGVjdGVkS2V5cyA9IHByb3BzLmRlZmF1bHRTZWxlY3RlZEtleXM7XG4gICAgdmFyIG9wZW5LZXlzID0gcHJvcHMuZGVmYXVsdE9wZW5LZXlzO1xuXG4gICAgaWYgKCdzZWxlY3RlZEtleXMnIGluIHByb3BzKSB7XG4gICAgICBzZWxlY3RlZEtleXMgPSBwcm9wcy5zZWxlY3RlZEtleXMgfHwgW107XG4gICAgfVxuXG4gICAgaWYgKCdvcGVuS2V5cycgaW4gcHJvcHMpIHtcbiAgICAgIG9wZW5LZXlzID0gcHJvcHMub3BlbktleXMgfHwgW107XG4gICAgfVxuXG4gICAgX3RoaXMuc3RvcmUgPSBjcmVhdGUoe1xuICAgICAgc2VsZWN0ZWRLZXlzOiBzZWxlY3RlZEtleXMsXG4gICAgICBvcGVuS2V5czogb3BlbktleXMsXG4gICAgICBhY3RpdmVLZXk6IHtcbiAgICAgICAgJzAtbWVudS0nOiBnZXRBY3RpdmVLZXkocHJvcHMsIHByb3BzLmFjdGl2ZUtleSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHN3aXRjaGluZ01vZGVGcm9tSW5saW5lOiBmYWxzZSxcbiAgICAgIHByZXZQcm9wczogcHJvcHMsXG4gICAgICBpbmxpbmVPcGVuS2V5czogW10sXG4gICAgICBzdG9yZTogX3RoaXMuc3RvcmVcbiAgICB9O1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhNZW51LCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMudXBkYXRlTWluaVN0b3JlKCk7XG4gICAgICB0aGlzLnVwZGF0ZU1lbnVEaXNwbGF5KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHNpZGVyQ29sbGFwc2VkID0gX3RoaXMkcHJvcHMuc2lkZXJDb2xsYXBzZWQsXG4gICAgICAgICAgaW5saW5lQ29sbGFwc2VkID0gX3RoaXMkcHJvcHMuaW5saW5lQ29sbGFwc2VkLFxuICAgICAgICAgIG9uT3BlbkNoYW5nZSA9IF90aGlzJHByb3BzLm9uT3BlbkNoYW5nZTtcblxuICAgICAgaWYgKCFwcmV2UHJvcHMuaW5saW5lQ29sbGFwc2VkICYmIGlubGluZUNvbGxhcHNlZCB8fCAhcHJldlByb3BzLnNpZGVyQ29sbGFwc2VkICYmIHNpZGVyQ29sbGFwc2VkKSB7XG4gICAgICAgIG9uT3BlbkNoYW5nZShbXSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudXBkYXRlTWluaVN0b3JlKCk7XG4gICAgICB0aGlzLnVwZGF0ZU1lbnVEaXNwbGF5KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZU1lbnVEaXNwbGF5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZU1lbnVEaXNwbGF5KCkge1xuICAgICAgdmFyIGNvbGxhcHNlZFdpZHRoID0gdGhpcy5wcm9wcy5jb2xsYXBzZWRXaWR0aCxcbiAgICAgICAgICBzdG9yZSA9IHRoaXMuc3RvcmUsXG4gICAgICAgICAgcHJldk9wZW5LZXlzID0gdGhpcy5wcmV2T3BlbktleXM7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzg1ODdcblxuICAgICAgdmFyIGhpZGVNZW51ID0gdGhpcy5nZXRJbmxpbmVDb2xsYXBzZWQoKSAmJiAoY29sbGFwc2VkV2lkdGggPT09IDAgfHwgY29sbGFwc2VkV2lkdGggPT09ICcwJyB8fCBjb2xsYXBzZWRXaWR0aCA9PT0gJzBweCcpO1xuXG4gICAgICBpZiAoaGlkZU1lbnUpIHtcbiAgICAgICAgdGhpcy5wcmV2T3BlbktleXMgPSBzdG9yZS5nZXRTdGF0ZSgpLm9wZW5LZXlzLmNvbmNhdCgpO1xuICAgICAgICB0aGlzLnN0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgICBvcGVuS2V5czogW11cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHByZXZPcGVuS2V5cykge1xuICAgICAgICB0aGlzLnN0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgICBvcGVuS2V5czogcHJldk9wZW5LZXlzXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnByZXZPcGVuS2V5cyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFJlYWxNZW51TW9kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRSZWFsTWVudU1vZGUoKSB7XG4gICAgICB2YXIgbW9kZSA9IHRoaXMucHJvcHMubW9kZTtcbiAgICAgIHZhciBzd2l0Y2hpbmdNb2RlRnJvbUlubGluZSA9IHRoaXMuc3RhdGUuc3dpdGNoaW5nTW9kZUZyb21JbmxpbmU7XG4gICAgICB2YXIgaW5saW5lQ29sbGFwc2VkID0gdGhpcy5nZXRJbmxpbmVDb2xsYXBzZWQoKTtcblxuICAgICAgaWYgKHN3aXRjaGluZ01vZGVGcm9tSW5saW5lICYmIGlubGluZUNvbGxhcHNlZCkge1xuICAgICAgICByZXR1cm4gJ2lubGluZSc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbmxpbmVDb2xsYXBzZWQgPyAndmVydGljYWwnIDogbW9kZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0SW5saW5lQ29sbGFwc2VkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldElubGluZUNvbGxhcHNlZCgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGlubGluZUNvbGxhcHNlZCA9IF90aGlzJHByb3BzMi5pbmxpbmVDb2xsYXBzZWQsXG4gICAgICAgICAgc2lkZXJDb2xsYXBzZWQgPSBfdGhpcyRwcm9wczIuc2lkZXJDb2xsYXBzZWQ7XG5cbiAgICAgIGlmIChzaWRlckNvbGxhcHNlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBzaWRlckNvbGxhcHNlZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlubGluZUNvbGxhcHNlZDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVzdG9yZU1vZGVWZXJ0aWNhbEZyb21JbmxpbmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzdG9yZU1vZGVWZXJ0aWNhbEZyb21JbmxpbmUoKSB7XG4gICAgICB2YXIgc3dpdGNoaW5nTW9kZUZyb21JbmxpbmUgPSB0aGlzLnN0YXRlLnN3aXRjaGluZ01vZGVGcm9tSW5saW5lO1xuXG4gICAgICBpZiAoc3dpdGNoaW5nTW9kZUZyb21JbmxpbmUpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgc3dpdGNoaW5nTW9kZUZyb21JbmxpbmU6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVNaW5pU3RvcmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlTWluaVN0b3JlKCkge1xuICAgICAgaWYgKCdzZWxlY3RlZEtleXMnIGluIHRoaXMucHJvcHMpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgc2VsZWN0ZWRLZXlzOiB0aGlzLnByb3BzLnNlbGVjdGVkS2V5cyB8fCBbXVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCdvcGVuS2V5cycgaW4gdGhpcy5wcm9wcykge1xuICAgICAgICB0aGlzLnN0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgICBvcGVuS2V5czogdGhpcy5wcm9wcy5vcGVuS2V5cyB8fCBbXVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoe30sIG9taXQodGhpcy5wcm9wcywgWydjb2xsYXBzZWRXaWR0aCcsICdzaWRlckNvbGxhcHNlZCcsICdkZWZhdWx0TW90aW9ucyddKSk7XG5cbiAgICAgIHZhciBtb2RlID0gdGhpcy5nZXRSZWFsTWVudU1vZGUoKTtcbiAgICAgIHByb3BzLmNsYXNzTmFtZSArPSBcIiBcIi5jb25jYXQocHJvcHMucHJlZml4Q2xzLCBcIi1yb290XCIpO1xuXG4gICAgICBpZiAocHJvcHMuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgICAgICBwcm9wcy5jbGFzc05hbWUgKz0gXCIgXCIuY29uY2F0KHByb3BzLnByZWZpeENscywgXCItcnRsXCIpO1xuICAgICAgfVxuXG4gICAgICBwcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCB7fSwge1xuICAgICAgICBtb2RlOiBtb2RlLFxuICAgICAgICBvbkNsaWNrOiB0aGlzLm9uQ2xpY2ssXG4gICAgICAgIG9uT3BlbkNoYW5nZTogdGhpcy5vbk9wZW5DaGFuZ2UsXG4gICAgICAgIG9uRGVzZWxlY3Q6IHRoaXMub25EZXNlbGVjdCxcbiAgICAgICAgb25TZWxlY3Q6IHRoaXMub25TZWxlY3QsXG4gICAgICAgIG9uTW91c2VFbnRlcjogdGhpcy5vbk1vdXNlRW50ZXIsXG4gICAgICAgIG9uVHJhbnNpdGlvbkVuZDogdGhpcy5vblRyYW5zaXRpb25FbmQsXG4gICAgICAgIHBhcmVudE1lbnU6IHRoaXMsXG4gICAgICAgIG1vdGlvbjogZ2V0TW90aW9uKHRoaXMucHJvcHMsIHRoaXMuc3RhdGUsIG1vZGUpXG4gICAgICB9KTtcbiAgICAgIGRlbGV0ZSBwcm9wcy5vcGVuQW5pbWF0aW9uO1xuICAgICAgZGVsZXRlIHByb3BzLm9wZW5UcmFuc2l0aW9uTmFtZTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChQcm92aWRlciwge1xuICAgICAgICBzdG9yZTogdGhpcy5zdG9yZVxuICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU3ViUG9wdXBNZW51LCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiB0aGlzLnNldElubmVyTWVudVxuICAgICAgfSksIHRoaXMucHJvcHMuY2hpbGRyZW4pKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICB2YXIgcHJldlByb3BzID0gcHJldlN0YXRlLnByZXZQcm9wcyxcbiAgICAgICAgICBzdG9yZSA9IHByZXZTdGF0ZS5zdG9yZTtcbiAgICAgIHZhciBwcmV2U3RvcmVTdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgICB2YXIgbmV3U3RvcmVTdGF0ZSA9IHt9O1xuICAgICAgdmFyIG5ld1N0YXRlID0ge1xuICAgICAgICBwcmV2UHJvcHM6IG5leHRQcm9wc1xuICAgICAgfTtcblxuICAgICAgaWYgKHByZXZQcm9wcy5tb2RlID09PSAnaW5saW5lJyAmJiBuZXh0UHJvcHMubW9kZSAhPT0gJ2lubGluZScpIHtcbiAgICAgICAgbmV3U3RhdGUuc3dpdGNoaW5nTW9kZUZyb21JbmxpbmUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoJ29wZW5LZXlzJyBpbiBuZXh0UHJvcHMpIHtcbiAgICAgICAgbmV3U3RvcmVTdGF0ZS5vcGVuS2V5cyA9IG5leHRQcm9wcy5vcGVuS2V5cyB8fCBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFtMZWdhY3ldIE9sZCBjb2RlIHdpbGwgcmV0dXJuIGFmdGVyIGBvcGVuS2V5c2AgY2hhbmdlZC5cbiAgICAgICAgLy8gTm90IHN1cmUgdGhlIHJlYXNvbiwgd2Ugc2hvdWxkIGtlZXAgdGhpcyBsb2dpYyBzdGlsbC5cbiAgICAgICAgaWYgKG5leHRQcm9wcy5pbmxpbmVDb2xsYXBzZWQgJiYgIXByZXZQcm9wcy5pbmxpbmVDb2xsYXBzZWQgfHwgbmV4dFByb3BzLnNpZGVyQ29sbGFwc2VkICYmICFwcmV2UHJvcHMuc2lkZXJDb2xsYXBzZWQpIHtcbiAgICAgICAgICBuZXdTdGF0ZS5zd2l0Y2hpbmdNb2RlRnJvbUlubGluZSA9IHRydWU7XG4gICAgICAgICAgbmV3U3RhdGUuaW5saW5lT3BlbktleXMgPSBwcmV2U3RvcmVTdGF0ZS5vcGVuS2V5cztcbiAgICAgICAgICBuZXdTdG9yZVN0YXRlLm9wZW5LZXlzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW5leHRQcm9wcy5pbmxpbmVDb2xsYXBzZWQgJiYgcHJldlByb3BzLmlubGluZUNvbGxhcHNlZCB8fCAhbmV4dFByb3BzLnNpZGVyQ29sbGFwc2VkICYmIHByZXZQcm9wcy5zaWRlckNvbGxhcHNlZCkge1xuICAgICAgICAgIG5ld1N0b3JlU3RhdGUub3BlbktleXMgPSBwcmV2U3RhdGUuaW5saW5lT3BlbktleXM7XG4gICAgICAgICAgbmV3U3RhdGUuaW5saW5lT3BlbktleXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoT2JqZWN0LmtleXMobmV3U3RvcmVTdGF0ZSkubGVuZ3RoKSB7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKG5ld1N0b3JlU3RhdGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE1lbnU7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cbk1lbnUuZGVmYXVsdFByb3BzID0ge1xuICBzZWxlY3RhYmxlOiB0cnVlLFxuICBvbkNsaWNrOiBub29wLFxuICBvblNlbGVjdDogbm9vcCxcbiAgb25PcGVuQ2hhbmdlOiBub29wLFxuICBvbkRlc2VsZWN0OiBub29wLFxuICBkZWZhdWx0U2VsZWN0ZWRLZXlzOiBbXSxcbiAgZGVmYXVsdE9wZW5LZXlzOiBbXSxcbiAgc3ViTWVudU9wZW5EZWxheTogMC4xLFxuICBzdWJNZW51Q2xvc2VEZWxheTogMC4xLFxuICB0cmlnZ2VyU3ViTWVudUFjdGlvbjogJ2hvdmVyJyxcbiAgcHJlZml4Q2xzOiAncmMtbWVudScsXG4gIGNsYXNzTmFtZTogJycsXG4gIG1vZGU6ICd2ZXJ0aWNhbCcsXG4gIHN0eWxlOiB7fSxcbiAgYnVpbHRpblBsYWNlbWVudHM6IHt9LFxuICBvdmVyZmxvd2VkSW5kaWNhdG9yOiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCwgXCJcXHhCN1xceEI3XFx4QjdcIilcbn07XG5leHBvcnQgZGVmYXVsdCBNZW51OyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEtleUNvZGUgZnJvbSBcInJjLXV0aWwvZXMvS2V5Q29kZVwiO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgb21pdCBmcm9tIFwicmMtdXRpbC9lcy9vbWl0XCI7XG5pbXBvcnQgeyBjb25uZWN0IH0gZnJvbSAnbWluaS1zdG9yZSc7XG5pbXBvcnQgeyBub29wLCBtZW51QWxsUHJvcHMgfSBmcm9tICcuL3V0aWwnO1xuZXhwb3J0IHZhciBNZW51SXRlbSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoTWVudUl0ZW0sIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoTWVudUl0ZW0pO1xuXG4gIGZ1bmN0aW9uIE1lbnVJdGVtKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNZW51SXRlbSk7XG5cbiAgICBfdGhpcyA9IF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXG4gICAgX3RoaXMub25LZXlEb3duID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBrZXlDb2RlID0gZS5rZXlDb2RlO1xuXG4gICAgICBpZiAoa2V5Q29kZSA9PT0gS2V5Q29kZS5FTlRFUikge1xuICAgICAgICBfdGhpcy5vbkNsaWNrKGUpO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICBfdGhpcy5vbk1vdXNlTGVhdmUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgZXZlbnRLZXkgPSBfdGhpcyRwcm9wcy5ldmVudEtleSxcbiAgICAgICAgICBvbkl0ZW1Ib3ZlciA9IF90aGlzJHByb3BzLm9uSXRlbUhvdmVyLFxuICAgICAgICAgIG9uTW91c2VMZWF2ZSA9IF90aGlzJHByb3BzLm9uTW91c2VMZWF2ZTtcbiAgICAgIG9uSXRlbUhvdmVyKHtcbiAgICAgICAga2V5OiBldmVudEtleSxcbiAgICAgICAgaG92ZXI6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIG9uTW91c2VMZWF2ZSh7XG4gICAgICAgIGtleTogZXZlbnRLZXksXG4gICAgICAgIGRvbUV2ZW50OiBlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX3RoaXMub25Nb3VzZUVudGVyID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBldmVudEtleSA9IF90aGlzJHByb3BzMi5ldmVudEtleSxcbiAgICAgICAgICBvbkl0ZW1Ib3ZlciA9IF90aGlzJHByb3BzMi5vbkl0ZW1Ib3ZlcixcbiAgICAgICAgICBvbk1vdXNlRW50ZXIgPSBfdGhpcyRwcm9wczIub25Nb3VzZUVudGVyO1xuICAgICAgb25JdGVtSG92ZXIoe1xuICAgICAgICBrZXk6IGV2ZW50S2V5LFxuICAgICAgICBob3ZlcjogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBvbk1vdXNlRW50ZXIoe1xuICAgICAgICBrZXk6IGV2ZW50S2V5LFxuICAgICAgICBkb21FdmVudDogZVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIF90aGlzLm9uQ2xpY2sgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMyA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIGV2ZW50S2V5ID0gX3RoaXMkcHJvcHMzLmV2ZW50S2V5LFxuICAgICAgICAgIG11bHRpcGxlID0gX3RoaXMkcHJvcHMzLm11bHRpcGxlLFxuICAgICAgICAgIG9uQ2xpY2sgPSBfdGhpcyRwcm9wczMub25DbGljayxcbiAgICAgICAgICBvblNlbGVjdCA9IF90aGlzJHByb3BzMy5vblNlbGVjdCxcbiAgICAgICAgICBvbkRlc2VsZWN0ID0gX3RoaXMkcHJvcHMzLm9uRGVzZWxlY3QsXG4gICAgICAgICAgaXNTZWxlY3RlZCA9IF90aGlzJHByb3BzMy5pc1NlbGVjdGVkO1xuICAgICAgdmFyIGluZm8gPSB7XG4gICAgICAgIGtleTogZXZlbnRLZXksXG4gICAgICAgIGtleVBhdGg6IFtldmVudEtleV0sXG4gICAgICAgIGl0ZW06IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLFxuICAgICAgICBkb21FdmVudDogZVxuICAgICAgfTtcbiAgICAgIG9uQ2xpY2soaW5mbyk7XG5cbiAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICAgIG9uRGVzZWxlY3QoaW5mbyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25TZWxlY3QoaW5mbyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWlzU2VsZWN0ZWQpIHtcbiAgICAgICAgb25TZWxlY3QoaW5mbyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLnNhdmVOb2RlID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIF90aGlzLm5vZGUgPSBub2RlO1xuICAgIH07XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTWVudUl0ZW0sIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgLy8gaW52b2tlIGN1c3RvbWl6ZWQgcmVmIHRvIGV4cG9zZSBjb21wb25lbnQgdG8gbWl4aW5cbiAgICAgIHRoaXMuY2FsbFJlZigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgdGhpcy5jYWxsUmVmKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdmFyIHByb3BzID0gdGhpcy5wcm9wcztcblxuICAgICAgaWYgKHByb3BzLm9uRGVzdHJveSkge1xuICAgICAgICBwcm9wcy5vbkRlc3Ryb3kocHJvcHMuZXZlbnRLZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRQcmVmaXhDbHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UHJlZml4Q2xzKCkge1xuICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHRoaXMucHJvcHMucm9vdFByZWZpeENscywgXCItaXRlbVwiKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0QWN0aXZlQ2xhc3NOYW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEFjdGl2ZUNsYXNzTmFtZSgpIHtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdCh0aGlzLmdldFByZWZpeENscygpLCBcIi1hY3RpdmVcIik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNlbGVjdGVkQ2xhc3NOYW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNlbGVjdGVkQ2xhc3NOYW1lKCkge1xuICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHRoaXMuZ2V0UHJlZml4Q2xzKCksIFwiLXNlbGVjdGVkXCIpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXREaXNhYmxlZENsYXNzTmFtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREaXNhYmxlZENsYXNzTmFtZSgpIHtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdCh0aGlzLmdldFByZWZpeENscygpLCBcIi1kaXNhYmxlZFwiKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY2FsbFJlZlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjYWxsUmVmKCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMubWFudWFsUmVmKSB7XG4gICAgICAgIHRoaXMucHJvcHMubWFudWFsUmVmKHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF9jbGFzc05hbWVzO1xuXG4gICAgICB2YXIgcHJvcHMgPSBfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLnByb3BzKTtcblxuICAgICAgdmFyIGNsYXNzTmFtZSA9IGNsYXNzTmFtZXModGhpcy5nZXRQcmVmaXhDbHMoKSwgcHJvcHMuY2xhc3NOYW1lLCAoX2NsYXNzTmFtZXMgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCB0aGlzLmdldEFjdGl2ZUNsYXNzTmFtZSgpLCAhcHJvcHMuZGlzYWJsZWQgJiYgcHJvcHMuYWN0aXZlKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCB0aGlzLmdldFNlbGVjdGVkQ2xhc3NOYW1lKCksIHByb3BzLmlzU2VsZWN0ZWQpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIHRoaXMuZ2V0RGlzYWJsZWRDbGFzc05hbWUoKSwgcHJvcHMuZGlzYWJsZWQpLCBfY2xhc3NOYW1lcykpO1xuXG4gICAgICB2YXIgYXR0cnMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BzLmF0dHJpYnV0ZSksIHt9LCB7XG4gICAgICAgIHRpdGxlOiB0eXBlb2YgcHJvcHMudGl0bGUgPT09ICdzdHJpbmcnID8gcHJvcHMudGl0bGUgOiB1bmRlZmluZWQsXG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgICAvLyBzZXQgdG8gbWVudWl0ZW0gYnkgZGVmYXVsdFxuICAgICAgICByb2xlOiBwcm9wcy5yb2xlIHx8ICdtZW51aXRlbScsXG4gICAgICAgICdhcmlhLWRpc2FibGVkJzogcHJvcHMuZGlzYWJsZWRcbiAgICAgIH0pO1xuXG4gICAgICBpZiAocHJvcHMucm9sZSA9PT0gJ29wdGlvbicpIHtcbiAgICAgICAgLy8gb3ZlcndyaXRlIHRvIG9wdGlvblxuICAgICAgICBhdHRycyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYXR0cnMpLCB7fSwge1xuICAgICAgICAgIHJvbGU6ICdvcHRpb24nLFxuICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogcHJvcHMuaXNTZWxlY3RlZFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcHMucm9sZSA9PT0gbnVsbCB8fCBwcm9wcy5yb2xlID09PSAnbm9uZScpIHtcbiAgICAgICAgLy8gc29tZXRpbWVzIHdlIHdhbnQgdG8gc3BlY2lmeSByb2xlIGluc2lkZSA8bGkvPiBlbGVtZW50XG4gICAgICAgIC8vIDxsaT48YSByb2xlPSdtZW51aXRlbSc+TGluazwvYT48L2xpPiB3b3VsZCBiZSBhIGdvb2QgZXhhbXBsZVxuICAgICAgICAvLyBpbiB0aGlzIGNhc2UgdGhlIHJvbGUgb24gPGxpLz4gc2hvdWxkIGJlIFwibm9uZVwiIHRvXG4gICAgICAgIC8vIHJlbW92ZSB0aGUgaW1wbGllZCBsaXN0aXRlbSByb2xlLlxuICAgICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLTEuMS9leGFtcGxlcy9tZW51YmFyL21lbnViYXItMS9tZW51YmFyLTEuaHRtbFxuICAgICAgICBhdHRycy5yb2xlID0gJ25vbmUnO1xuICAgICAgfSAvLyBJbiBjYXNlIHRoYXQgb25DbGljay9vbk1vdXNlTGVhdmUvb25Nb3VzZUVudGVyIGlzIHBhc3NlZCBkb3duIGZyb20gb3duZXJcblxuXG4gICAgICB2YXIgbW91c2VFdmVudCA9IHtcbiAgICAgICAgb25DbGljazogcHJvcHMuZGlzYWJsZWQgPyBudWxsIDogdGhpcy5vbkNsaWNrLFxuICAgICAgICBvbk1vdXNlTGVhdmU6IHByb3BzLmRpc2FibGVkID8gbnVsbCA6IHRoaXMub25Nb3VzZUxlYXZlLFxuICAgICAgICBvbk1vdXNlRW50ZXI6IHByb3BzLmRpc2FibGVkID8gbnVsbCA6IHRoaXMub25Nb3VzZUVudGVyXG4gICAgICB9O1xuXG4gICAgICB2YXIgc3R5bGUgPSBfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcy5zdHlsZSk7XG5cbiAgICAgIGlmIChwcm9wcy5tb2RlID09PSAnaW5saW5lJykge1xuICAgICAgICBpZiAocHJvcHMuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgICAgICAgIHN0eWxlLnBhZGRpbmdSaWdodCA9IHByb3BzLmlubGluZUluZGVudCAqIHByb3BzLmxldmVsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0eWxlLnBhZGRpbmdMZWZ0ID0gcHJvcHMuaW5saW5lSW5kZW50ICogcHJvcHMubGV2ZWw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbWVudUFsbFByb3BzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4gZGVsZXRlIHByb3BzW2tleV07XG4gICAgICB9KTtcbiAgICAgIGRlbGV0ZSBwcm9wcy5kaXJlY3Rpb247XG4gICAgICB2YXIgaWNvbiA9IHRoaXMucHJvcHMuaXRlbUljb247XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5pdGVtSWNvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBUT0RPOiBUaGlzIGlzIGEgYnVnIHdoaWNoIHNob3VsZCBmaXhlZCBhZnRlciBUUyByZWZhY3RvclxuICAgICAgICBpY29uID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQodGhpcy5wcm9wcy5pdGVtSWNvbiwgdGhpcy5wcm9wcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIF9leHRlbmRzKHt9LCBvbWl0KHByb3BzLCBbJ29uQ2xpY2snLCAnb25Nb3VzZUVudGVyJywgJ29uTW91c2VMZWF2ZScsICdvblNlbGVjdCddKSwgYXR0cnMsIG1vdXNlRXZlbnQsIHtcbiAgICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgICByZWY6IHRoaXMuc2F2ZU5vZGVcbiAgICAgIH0pLCBwcm9wcy5jaGlsZHJlbiwgaWNvbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE1lbnVJdGVtO1xufShSZWFjdC5Db21wb25lbnQpO1xuTWVudUl0ZW0uaXNNZW51SXRlbSA9IHRydWU7XG5NZW51SXRlbS5kZWZhdWx0UHJvcHMgPSB7XG4gIG9uU2VsZWN0OiBub29wLFxuICBvbk1vdXNlRW50ZXI6IG5vb3AsXG4gIG9uTW91c2VMZWF2ZTogbm9vcCxcbiAgbWFudWFsUmVmOiBub29wXG59O1xudmFyIGNvbm5lY3RlZCA9IGNvbm5lY3QoZnVuY3Rpb24gKF9yZWYsIF9yZWYyKSB7XG4gIHZhciBhY3RpdmVLZXkgPSBfcmVmLmFjdGl2ZUtleSxcbiAgICAgIHNlbGVjdGVkS2V5cyA9IF9yZWYuc2VsZWN0ZWRLZXlzO1xuICB2YXIgZXZlbnRLZXkgPSBfcmVmMi5ldmVudEtleSxcbiAgICAgIHN1Yk1lbnVLZXkgPSBfcmVmMi5zdWJNZW51S2V5O1xuICByZXR1cm4ge1xuICAgIGFjdGl2ZTogYWN0aXZlS2V5W3N1Yk1lbnVLZXldID09PSBldmVudEtleSxcbiAgICAvLyBzZWxlY3RlZEtleXMgc2hvdWxkIGJlIGFycmF5IGluIGFueSBjaXJjdW1zdGFuY2VcbiAgICAvLyB3aGVuIGl0IGlzIG5vdCwgd2UgaGF2ZSBmYWxsYmFjayBsb2dpYyBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMjk0MzBcbiAgICBpc1NlbGVjdGVkOiBBcnJheS5pc0FycmF5KHNlbGVjdGVkS2V5cykgPyBzZWxlY3RlZEtleXMuaW5kZXhPZihldmVudEtleSkgIT09IC0xIDogc2VsZWN0ZWRLZXlzID09PSBldmVudEtleVxuICB9O1xufSkoTWVudUl0ZW0pO1xuZXhwb3J0IGRlZmF1bHQgY29ubmVjdGVkOyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IG1lbnVBbGxQcm9wcyB9IGZyb20gJy4vdXRpbCc7XG5cbnZhciBNZW51SXRlbUdyb3VwID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhNZW51SXRlbUdyb3VwLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE1lbnVJdGVtR3JvdXApO1xuXG4gIGZ1bmN0aW9uIE1lbnVJdGVtR3JvdXAoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE1lbnVJdGVtR3JvdXApO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIF90aGlzLnJlbmRlcklubmVyTWVudUl0ZW0gPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgcmVuZGVyTWVudUl0ZW0gPSBfdGhpcyRwcm9wcy5yZW5kZXJNZW51SXRlbSxcbiAgICAgICAgICBpbmRleCA9IF90aGlzJHByb3BzLmluZGV4O1xuICAgICAgcmV0dXJuIHJlbmRlck1lbnVJdGVtKGl0ZW0sIGluZGV4LCBfdGhpcy5wcm9wcy5zdWJNZW51S2V5KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKE1lbnVJdGVtR3JvdXAsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgcHJvcHMgPSBfZXh0ZW5kcyh7fSwgdGhpcy5wcm9wcyk7XG5cbiAgICAgIHZhciBfcHJvcHMkY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF9wcm9wcyRjbGFzc05hbWUgPT09IHZvaWQgMCA/ICcnIDogX3Byb3BzJGNsYXNzTmFtZSxcbiAgICAgICAgICByb290UHJlZml4Q2xzID0gcHJvcHMucm9vdFByZWZpeENscztcbiAgICAgIHZhciB0aXRsZUNsYXNzTmFtZSA9IFwiXCIuY29uY2F0KHJvb3RQcmVmaXhDbHMsIFwiLWl0ZW0tZ3JvdXAtdGl0bGVcIik7XG4gICAgICB2YXIgbGlzdENsYXNzTmFtZSA9IFwiXCIuY29uY2F0KHJvb3RQcmVmaXhDbHMsIFwiLWl0ZW0tZ3JvdXAtbGlzdFwiKTtcbiAgICAgIHZhciB0aXRsZSA9IHByb3BzLnRpdGxlLFxuICAgICAgICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG4gICAgICBtZW51QWxsUHJvcHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiBkZWxldGUgcHJvcHNba2V5XTtcbiAgICAgIH0pO1xuICAgICAgZGVsZXRlIHByb3BzLmRpcmVjdGlvbjtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGUpIHtcbiAgICAgICAgICByZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChjbGFzc05hbWUsIFwiIFwiKS5jb25jYXQocm9vdFByZWZpeENscywgXCItaXRlbS1ncm91cFwiKVxuICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiB0aXRsZUNsYXNzTmFtZSxcbiAgICAgICAgdGl0bGU6IHR5cGVvZiB0aXRsZSA9PT0gJ3N0cmluZycgPyB0aXRsZSA6IHVuZGVmaW5lZFxuICAgICAgfSwgdGl0bGUpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInVsXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBsaXN0Q2xhc3NOYW1lXG4gICAgICB9LCBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIHRoaXMucmVuZGVySW5uZXJNZW51SXRlbSkpKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTWVudUl0ZW1Hcm91cDtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuTWVudUl0ZW1Hcm91cC5pc01lbnVJdGVtR3JvdXAgPSB0cnVlO1xuTWVudUl0ZW1Hcm91cC5kZWZhdWx0UHJvcHMgPSB7XG4gIGRpc2FibGVkOiB0cnVlXG59O1xuZXhwb3J0IGRlZmF1bHQgTWVudUl0ZW1Hcm91cDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbnZhciBEaXZpZGVyID0gZnVuY3Rpb24gRGl2aWRlcihfcmVmKSB7XG4gIHZhciBjbGFzc05hbWUgPSBfcmVmLmNsYXNzTmFtZSxcbiAgICAgIHJvb3RQcmVmaXhDbHMgPSBfcmVmLnJvb3RQcmVmaXhDbHMsXG4gICAgICBzdHlsZSA9IF9yZWYuc3R5bGU7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KGNsYXNzTmFtZSwgXCIgXCIpLmNvbmNhdChyb290UHJlZml4Q2xzLCBcIi1pdGVtLWRpdmlkZXJcIiksXG4gICAgc3R5bGU6IHN0eWxlXG4gIH0pO1xufTtcblxuRGl2aWRlci5kZWZhdWx0UHJvcHMgPSB7XG4gIC8vIFRvIGZpeCBrZXlib2FyZCBVWC5cbiAgZGlzYWJsZWQ6IHRydWUsXG4gIGNsYXNzTmFtZTogJycsXG4gIHN0eWxlOiB7fVxufTtcbmV4cG9ydCBkZWZhdWx0IERpdmlkZXI7IiwiaW1wb3J0IE1lbnUgZnJvbSAnLi9NZW51JztcbmltcG9ydCBTdWJNZW51IGZyb20gJy4vU3ViTWVudSc7XG5pbXBvcnQgTWVudUl0ZW0gZnJvbSAnLi9NZW51SXRlbSc7XG5pbXBvcnQgTWVudUl0ZW1Hcm91cCBmcm9tICcuL01lbnVJdGVtR3JvdXAnO1xuaW1wb3J0IERpdmlkZXIgZnJvbSAnLi9EaXZpZGVyJztcbmV4cG9ydCB7IFN1Yk1lbnUsIE1lbnVJdGVtIGFzIEl0ZW0sIE1lbnVJdGVtLCBNZW51SXRlbUdyb3VwLCBNZW51SXRlbUdyb3VwIGFzIEl0ZW1Hcm91cCwgRGl2aWRlciB9O1xuZXhwb3J0IGRlZmF1bHQgTWVudTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKG9iaiwga2V5cykge1xuICB2YXIgdGFyZ2V0ID0ge307XG5cbiAgZm9yICh2YXIgaSBpbiBvYmopIHtcbiAgICBpZiAoa2V5cy5pbmRleE9mKGkpID49IDApIGNvbnRpbnVlO1xuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgaSkpIGNvbnRpbnVlO1xuICAgIHRhcmdldFtpXSA9IG9ialtpXTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBSZWFjdERPTSA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdC1kb21cIikpO1xuXG52YXIgUHJvcFR5cGVzID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInByb3AtdHlwZXNcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9yY0FuaW1hdGUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYy1hbmltYXRlXCIpKTtcblxudmFyIF9vbWl0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwib21pdC5qc1wiKSk7XG5cbnZhciBfcm93ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZ3JpZC9yb3dcIikpO1xuXG52YXIgX2NvbCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2dyaWQvY29sXCIpKTtcblxudmFyIF9pY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vaWNvblwiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX3dhcm5pbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9fdXRpbC93YXJuaW5nXCIpKTtcblxudmFyIF90eXBlID0gcmVxdWlyZShcIi4uL191dGlsL3R5cGVcIik7XG5cbnZhciBfY29uc3RhbnRzID0gcmVxdWlyZShcIi4vY29uc3RhbnRzXCIpO1xuXG52YXIgX2NvbnRleHQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2NvbnRleHRcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoaXRlcikpIHJldHVybiBBcnJheS5mcm9tKGl0ZXIpOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KGFycik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbnZhciBfX3Jlc3QgPSB2b2lkIDAgJiYgKHZvaWQgMCkuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcbiAgfVxuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuXG52YXIgVmFsaWRhdGVTdGF0dXNlcyA9ICgwLCBfdHlwZS50dXBsZSkoJ3N1Y2Nlc3MnLCAnd2FybmluZycsICdlcnJvcicsICd2YWxpZGF0aW5nJywgJycpO1xudmFyIEZvcm1MYWJlbEFsaWducyA9ICgwLCBfdHlwZS50dXBsZSkoJ2xlZnQnLCAncmlnaHQnKTtcblxuZnVuY3Rpb24gaW50ZXJzcGVyc2VTcGFjZShsaXN0KSB7XG4gIHJldHVybiBsaXN0LnJlZHVjZShmdW5jdGlvbiAoY3VycmVudCwgaXRlbSkge1xuICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGN1cnJlbnQpLCBbJyAnLCBpdGVtXSk7XG4gIH0sIFtdKS5zbGljZSgxKTtcbn1cblxudmFyIEZvcm1JdGVtID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhGb3JtSXRlbSwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihGb3JtSXRlbSk7XG5cbiAgZnVuY3Rpb24gRm9ybUl0ZW0oKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEZvcm1JdGVtKTtcblxuICAgIF90aGlzID0gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgX3RoaXMuaGVscFNob3cgPSBmYWxzZTsgLy8gUmVzb2x2ZSBkdXBsaWNhdGVkIGlkcyBidWcgYmV0d2VlbiBkaWZmZXJlbnQgZm9ybXNcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy83MzUxXG5cbiAgICBfdGhpcy5vbkxhYmVsQ2xpY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgaWQgPSBfdGhpcy5wcm9wcy5pZCB8fCBfdGhpcy5nZXRJZCgpO1xuXG4gICAgICBpZiAoIWlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGZvcm1JdGVtTm9kZSA9IFJlYWN0RE9NLmZpbmRET01Ob2RlKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcbiAgICAgIHZhciBjb250cm9sID0gZm9ybUl0ZW1Ob2RlLnF1ZXJ5U2VsZWN0b3IoXCJbaWQ9XFxcIlwiLmNvbmNhdChpZCwgXCJcXFwiXVwiKSk7XG5cbiAgICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wuZm9jdXMpIHtcbiAgICAgICAgY29udHJvbC5mb2N1cygpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5vbkhlbHBBbmltRW5kID0gZnVuY3Rpb24gKF9rZXksIGhlbHBTaG93KSB7XG4gICAgICBfdGhpcy5oZWxwU2hvdyA9IGhlbHBTaG93O1xuXG4gICAgICBpZiAoIWhlbHBTaG93KSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHt9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3RoaXMucmVuZGVyRm9ybUl0ZW0gPSBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgdmFyIF9pdGVtQ2xhc3NOYW1lO1xuXG4gICAgICB2YXIgZ2V0UHJlZml4Q2xzID0gX3JlZi5nZXRQcmVmaXhDbHM7XG5cbiAgICAgIHZhciBfYSA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIGN1c3RvbWl6ZVByZWZpeENscyA9IF9hLnByZWZpeENscyxcbiAgICAgICAgICBzdHlsZSA9IF9hLnN0eWxlLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF9hLmNsYXNzTmFtZSxcbiAgICAgICAgICByZXN0UHJvcHMgPSBfX3Jlc3QoX2EsIFtcInByZWZpeENsc1wiLCBcInN0eWxlXCIsIFwiY2xhc3NOYW1lXCJdKTtcblxuICAgICAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygnZm9ybScsIGN1c3RvbWl6ZVByZWZpeENscyk7XG5cbiAgICAgIHZhciBjaGlsZHJlbiA9IF90aGlzLnJlbmRlckNoaWxkcmVuKHByZWZpeENscyk7XG5cbiAgICAgIHZhciBpdGVtQ2xhc3NOYW1lID0gKF9pdGVtQ2xhc3NOYW1lID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfaXRlbUNsYXNzTmFtZSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pdGVtXCIpLCB0cnVlKSwgX2RlZmluZVByb3BlcnR5KF9pdGVtQ2xhc3NOYW1lLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWl0ZW0td2l0aC1oZWxwXCIpLCBfdGhpcy5oZWxwU2hvdyksIF9kZWZpbmVQcm9wZXJ0eShfaXRlbUNsYXNzTmFtZSwgXCJcIi5jb25jYXQoY2xhc3NOYW1lKSwgISFjbGFzc05hbWUpLCBfaXRlbUNsYXNzTmFtZSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX3Jvd1tcImRlZmF1bHRcIl0sIF9leHRlbmRzKHtcbiAgICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShpdGVtQ2xhc3NOYW1lKSxcbiAgICAgICAgc3R5bGU6IHN0eWxlXG4gICAgICB9LCAoMCwgX29taXRbXCJkZWZhdWx0XCJdKShyZXN0UHJvcHMsIFsnaWQnLCAnaHRtbEZvcicsICdsYWJlbCcsICdsYWJlbEFsaWduJywgJ2xhYmVsQ29sJywgJ3dyYXBwZXJDb2wnLCAnaGVscCcsICdleHRyYScsICd2YWxpZGF0ZVN0YXR1cycsICdoYXNGZWVkYmFjaycsICdyZXF1aXJlZCcsICdjb2xvbiddKSwge1xuICAgICAgICBrZXk6IFwicm93XCJcbiAgICAgIH0pLCBjaGlsZHJlbik7XG4gICAgfTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhGb3JtSXRlbSwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMuY2hpbGRyZW4sXG4gICAgICAgICAgaGVscCA9IF90aGlzJHByb3BzLmhlbHAsXG4gICAgICAgICAgdmFsaWRhdGVTdGF0dXMgPSBfdGhpcyRwcm9wcy52YWxpZGF0ZVN0YXR1cyxcbiAgICAgICAgICBpZCA9IF90aGlzJHByb3BzLmlkO1xuICAgICAgKDAsIF93YXJuaW5nW1wiZGVmYXVsdFwiXSkodGhpcy5nZXRDb250cm9scyhjaGlsZHJlbiwgdHJ1ZSkubGVuZ3RoIDw9IDEgfHwgaGVscCAhPT0gdW5kZWZpbmVkIHx8IHZhbGlkYXRlU3RhdHVzICE9PSB1bmRlZmluZWQsICdGb3JtLkl0ZW0nLCAnQ2Fubm90IGdlbmVyYXRlIGB2YWxpZGF0ZVN0YXR1c2AgYW5kIGBoZWxwYCBhdXRvbWF0aWNhbGx5LCAnICsgJ3doaWxlIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIGBnZXRGaWVsZERlY29yYXRvcmAgaW4gaXQuJyk7XG4gICAgICAoMCwgX3dhcm5pbmdbXCJkZWZhdWx0XCJdKSghaWQsICdGb3JtLkl0ZW0nLCAnYGlkYCBpcyBkZXByZWNhdGVkIGZvciBpdHMgbGFiZWwgYGh0bWxGb3JgLiBQbGVhc2UgdXNlIGBodG1sRm9yYCBkaXJlY3RseS4nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0SGVscE1lc3NhZ2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SGVscE1lc3NhZ2UoKSB7XG4gICAgICB2YXIgaGVscCA9IHRoaXMucHJvcHMuaGVscDtcblxuICAgICAgaWYgKGhlbHAgPT09IHVuZGVmaW5lZCAmJiB0aGlzLmdldE9ubHlDb250cm9sKCkpIHtcbiAgICAgICAgdmFyIF90aGlzJGdldEZpZWxkID0gdGhpcy5nZXRGaWVsZCgpLFxuICAgICAgICAgICAgZXJyb3JzID0gX3RoaXMkZ2V0RmllbGQuZXJyb3JzO1xuXG4gICAgICAgIGlmIChlcnJvcnMpIHtcbiAgICAgICAgICByZXR1cm4gaW50ZXJzcGVyc2VTcGFjZShlcnJvcnMubWFwKGZ1bmN0aW9uIChlLCBpbmRleCkge1xuICAgICAgICAgICAgdmFyIG5vZGUgPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAoIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChlKSkge1xuICAgICAgICAgICAgICBub2RlID0gZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChlLm1lc3NhZ2UpKSB7XG4gICAgICAgICAgICAgIG5vZGUgPSBlLm1lc3NhZ2U7XG4gICAgICAgICAgICB9IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblxuXG4gICAgICAgICAgICByZXR1cm4gbm9kZSA/IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQobm9kZSwge1xuICAgICAgICAgICAgICBrZXk6IGluZGV4XG4gICAgICAgICAgICB9KSA6IGUubWVzc2FnZTtcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBoZWxwO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDb250cm9sc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb250cm9scyhjaGlsZHJlbiwgcmVjdXJzaXZlbHkpIHtcbiAgICAgIHZhciBjb250cm9scyA9IFtdO1xuICAgICAgdmFyIGNoaWxkcmVuQXJyYXkgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghcmVjdXJzaXZlbHkgJiYgY29udHJvbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5BcnJheVtpXTtcblxuICAgICAgICBpZiAoY2hpbGQudHlwZSAmJiAoY2hpbGQudHlwZSA9PT0gRm9ybUl0ZW0gfHwgY2hpbGQudHlwZS5kaXNwbGF5TmFtZSA9PT0gJ0Zvcm1JdGVtJykpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY2hpbGQucHJvcHMpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfY29uc3RhbnRzLkZJRUxEX01FVEFfUFJPUCBpbiBjaGlsZC5wcm9wcykge1xuICAgICAgICAgIC8vIEFuZCBtZWFucyBGSUVMRF9EQVRBX1BST1AgaW4gY2hpbGQucHJvcHMsIHRvby5cbiAgICAgICAgICBjb250cm9scy5wdXNoKGNoaWxkKTtcbiAgICAgICAgfSBlbHNlIGlmIChjaGlsZC5wcm9wcy5jaGlsZHJlbikge1xuICAgICAgICAgIGNvbnRyb2xzID0gY29udHJvbHMuY29uY2F0KHRoaXMuZ2V0Q29udHJvbHMoY2hpbGQucHJvcHMuY2hpbGRyZW4sIHJlY3Vyc2l2ZWx5KSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRyb2xzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRPbmx5Q29udHJvbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRPbmx5Q29udHJvbCgpIHtcbiAgICAgIHZhciBjaGlsZCA9IHRoaXMuZ2V0Q29udHJvbHModGhpcy5wcm9wcy5jaGlsZHJlbiwgZmFsc2UpWzBdO1xuICAgICAgcmV0dXJuIGNoaWxkICE9PSB1bmRlZmluZWQgPyBjaGlsZCA6IG51bGw7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENoaWxkUHJvcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDaGlsZFByb3AocHJvcCkge1xuICAgICAgdmFyIGNoaWxkID0gdGhpcy5nZXRPbmx5Q29udHJvbCgpO1xuICAgICAgcmV0dXJuIGNoaWxkICYmIGNoaWxkLnByb3BzICYmIGNoaWxkLnByb3BzW3Byb3BdO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRJZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENoaWxkUHJvcCgnaWQnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0TWV0YVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNZXRhKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2hpbGRQcm9wKF9jb25zdGFudHMuRklFTERfTUVUQV9QUk9QKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RmllbGRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RmllbGQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDaGlsZFByb3AoX2NvbnN0YW50cy5GSUVMRF9EQVRBX1BST1ApO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRWYWxpZGF0ZVN0YXR1c1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRWYWxpZGF0ZVN0YXR1cygpIHtcbiAgICAgIHZhciBvbmx5Q29udHJvbCA9IHRoaXMuZ2V0T25seUNvbnRyb2woKTtcblxuICAgICAgaWYgKCFvbmx5Q29udHJvbCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICAgIHZhciBmaWVsZCA9IHRoaXMuZ2V0RmllbGQoKTtcblxuICAgICAgaWYgKGZpZWxkLnZhbGlkYXRpbmcpIHtcbiAgICAgICAgcmV0dXJuICd2YWxpZGF0aW5nJztcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLmVycm9ycykge1xuICAgICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICAgIH1cblxuICAgICAgdmFyIGZpZWxkVmFsdWUgPSAndmFsdWUnIGluIGZpZWxkID8gZmllbGQudmFsdWUgOiB0aGlzLmdldE1ldGEoKS5pbml0aWFsVmFsdWU7XG5cbiAgICAgIGlmIChmaWVsZFZhbHVlICE9PSB1bmRlZmluZWQgJiYgZmllbGRWYWx1ZSAhPT0gbnVsbCAmJiBmaWVsZFZhbHVlICE9PSAnJykge1xuICAgICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzUmVxdWlyZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNSZXF1aXJlZCgpIHtcbiAgICAgIHZhciByZXF1aXJlZCA9IHRoaXMucHJvcHMucmVxdWlyZWQ7XG5cbiAgICAgIGlmIChyZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlZDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZ2V0T25seUNvbnRyb2woKSkge1xuICAgICAgICB2YXIgbWV0YSA9IHRoaXMuZ2V0TWV0YSgpIHx8IHt9O1xuICAgICAgICB2YXIgdmFsaWRhdGUgPSBtZXRhLnZhbGlkYXRlIHx8IFtdO1xuICAgICAgICByZXR1cm4gdmFsaWRhdGUuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuICEhaXRlbS5ydWxlcztcbiAgICAgICAgfSkuc29tZShmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIHJldHVybiBpdGVtLnJ1bGVzLnNvbWUoZnVuY3Rpb24gKHJ1bGUpIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLnJlcXVpcmVkO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJIZWxwXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckhlbHAocHJlZml4Q2xzKSB7XG4gICAgICB2YXIgaGVscCA9IHRoaXMuZ2V0SGVscE1lc3NhZ2UoKTtcbiAgICAgIHZhciBjaGlsZHJlbiA9IGhlbHAgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1leHBsYWluXCIpLFxuICAgICAgICBrZXk6IFwiaGVscFwiXG4gICAgICB9LCBoZWxwKSA6IG51bGw7XG5cbiAgICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgICB0aGlzLmhlbHBTaG93ID0gISFjaGlsZHJlbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yY0FuaW1hdGVbXCJkZWZhdWx0XCJdLCB7XG4gICAgICAgIHRyYW5zaXRpb25OYW1lOiBcInNob3ctaGVscFwiLFxuICAgICAgICBjb21wb25lbnQ6IFwiXCIsXG4gICAgICAgIHRyYW5zaXRpb25BcHBlYXI6IHRydWUsXG4gICAgICAgIGtleTogXCJoZWxwXCIsXG4gICAgICAgIG9uRW5kOiB0aGlzLm9uSGVscEFuaW1FbmRcbiAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyRXh0cmFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyRXh0cmEocHJlZml4Q2xzKSB7XG4gICAgICB2YXIgZXh0cmEgPSB0aGlzLnByb3BzLmV4dHJhO1xuICAgICAgcmV0dXJuIGV4dHJhID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZXh0cmFcIilcbiAgICAgIH0sIGV4dHJhKSA6IG51bGw7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclZhbGlkYXRlV3JhcHBlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJWYWxpZGF0ZVdyYXBwZXIocHJlZml4Q2xzLCBjMSwgYzIsIGMzKSB7XG4gICAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuICAgICAgdmFyIG9ubHlDb250cm9sID0gdGhpcy5nZXRPbmx5Q29udHJvbDtcbiAgICAgIHZhciB2YWxpZGF0ZVN0YXR1cyA9IHByb3BzLnZhbGlkYXRlU3RhdHVzID09PSB1bmRlZmluZWQgJiYgb25seUNvbnRyb2wgPyB0aGlzLmdldFZhbGlkYXRlU3RhdHVzKCkgOiBwcm9wcy52YWxpZGF0ZVN0YXR1cztcbiAgICAgIHZhciBjbGFzc2VzID0gXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pdGVtLWNvbnRyb2xcIik7XG5cbiAgICAgIGlmICh2YWxpZGF0ZVN0YXR1cykge1xuICAgICAgICBjbGFzc2VzID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pdGVtLWNvbnRyb2xcIiksIHtcbiAgICAgICAgICAnaGFzLWZlZWRiYWNrJzogdmFsaWRhdGVTdGF0dXMgJiYgcHJvcHMuaGFzRmVlZGJhY2ssXG4gICAgICAgICAgJ2hhcy1zdWNjZXNzJzogdmFsaWRhdGVTdGF0dXMgPT09ICdzdWNjZXNzJyxcbiAgICAgICAgICAnaGFzLXdhcm5pbmcnOiB2YWxpZGF0ZVN0YXR1cyA9PT0gJ3dhcm5pbmcnLFxuICAgICAgICAgICdoYXMtZXJyb3InOiB2YWxpZGF0ZVN0YXR1cyA9PT0gJ2Vycm9yJyxcbiAgICAgICAgICAnaXMtdmFsaWRhdGluZyc6IHZhbGlkYXRlU3RhdHVzID09PSAndmFsaWRhdGluZydcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBpY29uVHlwZSA9ICcnO1xuXG4gICAgICBzd2l0Y2ggKHZhbGlkYXRlU3RhdHVzKSB7XG4gICAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICAgIGljb25UeXBlID0gJ2NoZWNrLWNpcmNsZSc7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgICAgaWNvblR5cGUgPSAnZXhjbGFtYXRpb24tY2lyY2xlJztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgaWNvblR5cGUgPSAnY2xvc2UtY2lyY2xlJztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd2YWxpZGF0aW5nJzpcbiAgICAgICAgICBpY29uVHlwZSA9ICdsb2FkaW5nJztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGljb25UeXBlID0gJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHZhciBpY29uID0gcHJvcHMuaGFzRmVlZGJhY2sgJiYgaWNvblR5cGUgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaXRlbS1jaGlsZHJlbi1pY29uXCIpXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfaWNvbltcImRlZmF1bHRcIl0sIHtcbiAgICAgICAgdHlwZTogaWNvblR5cGUsXG4gICAgICAgIHRoZW1lOiBpY29uVHlwZSA9PT0gJ2xvYWRpbmcnID8gJ291dGxpbmVkJyA6ICdmaWxsZWQnXG4gICAgICB9KSkgOiBudWxsO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaXRlbS1jaGlsZHJlblwiKVxuICAgICAgfSwgYzEsIGljb24pLCBjMiwgYzMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJXcmFwcGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcldyYXBwZXIocHJlZml4Q2xzLCBjaGlsZHJlbikge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfY29udGV4dFtcImRlZmF1bHRcIl0uQ29uc3VtZXIsIHtcbiAgICAgICAga2V5OiBcIndyYXBwZXJcIlxuICAgICAgfSwgZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgIHZhciBjb250ZXh0V3JhcHBlckNvbCA9IF9yZWYyLndyYXBwZXJDb2wsXG4gICAgICAgICAgICB2ZXJ0aWNhbCA9IF9yZWYyLnZlcnRpY2FsO1xuICAgICAgICB2YXIgd3JhcHBlckNvbCA9IF90aGlzMi5wcm9wcy53cmFwcGVyQ29sO1xuICAgICAgICB2YXIgbWVyZ2VkV3JhcHBlckNvbCA9ICgnd3JhcHBlckNvbCcgaW4gX3RoaXMyLnByb3BzID8gd3JhcHBlckNvbCA6IGNvbnRleHRXcmFwcGVyQ29sKSB8fCB7fTtcbiAgICAgICAgdmFyIGNsYXNzTmFtZSA9ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaXRlbS1jb250cm9sLXdyYXBwZXJcIiksIG1lcmdlZFdyYXBwZXJDb2wuY2xhc3NOYW1lKTsgLy8gTm8gcGFzcyBGb3JtQ29udGV4dCBzaW5jZSBpdCdzIHVzZWxlc3NcblxuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2NvbnRleHRbXCJkZWZhdWx0XCJdLlByb3ZpZGVyLCB7XG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIHZlcnRpY2FsOiB2ZXJ0aWNhbFxuICAgICAgICAgIH1cbiAgICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2NvbFtcImRlZmF1bHRcIl0sIF9leHRlbmRzKHt9LCBtZXJnZWRXcmFwcGVyQ29sLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVcbiAgICAgICAgfSksIGNoaWxkcmVuKSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTGFiZWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyTGFiZWwocHJlZml4Q2xzKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jb250ZXh0W1wiZGVmYXVsdFwiXS5Db25zdW1lciwge1xuICAgICAgICBrZXk6IFwibGFiZWxcIlxuICAgICAgfSwgZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICAgIHZhciBfY2xhc3NOYW1lcztcblxuICAgICAgICB2YXIgdmVydGljYWwgPSBfcmVmMy52ZXJ0aWNhbCxcbiAgICAgICAgICAgIGNvbnRleHRMYWJlbEFsaWduID0gX3JlZjMubGFiZWxBbGlnbixcbiAgICAgICAgICAgIGNvbnRleHRMYWJlbENvbCA9IF9yZWYzLmxhYmVsQ29sLFxuICAgICAgICAgICAgY29udGV4dENvbG9uID0gX3JlZjMuY29sb247XG4gICAgICAgIHZhciBfdGhpczMkcHJvcHMgPSBfdGhpczMucHJvcHMsXG4gICAgICAgICAgICBsYWJlbCA9IF90aGlzMyRwcm9wcy5sYWJlbCxcbiAgICAgICAgICAgIGxhYmVsQ29sID0gX3RoaXMzJHByb3BzLmxhYmVsQ29sLFxuICAgICAgICAgICAgbGFiZWxBbGlnbiA9IF90aGlzMyRwcm9wcy5sYWJlbEFsaWduLFxuICAgICAgICAgICAgY29sb24gPSBfdGhpczMkcHJvcHMuY29sb24sXG4gICAgICAgICAgICBpZCA9IF90aGlzMyRwcm9wcy5pZCxcbiAgICAgICAgICAgIGh0bWxGb3IgPSBfdGhpczMkcHJvcHMuaHRtbEZvcjtcblxuICAgICAgICB2YXIgcmVxdWlyZWQgPSBfdGhpczMuaXNSZXF1aXJlZCgpO1xuXG4gICAgICAgIHZhciBtZXJnZWRMYWJlbENvbCA9ICgnbGFiZWxDb2wnIGluIF90aGlzMy5wcm9wcyA/IGxhYmVsQ29sIDogY29udGV4dExhYmVsQ29sKSB8fCB7fTtcbiAgICAgICAgdmFyIG1lcmdlZExhYmVsQWxpZ24gPSAnbGFiZWxBbGlnbicgaW4gX3RoaXMzLnByb3BzID8gbGFiZWxBbGlnbiA6IGNvbnRleHRMYWJlbEFsaWduO1xuICAgICAgICB2YXIgbGFiZWxDbHNCYXNpYyA9IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaXRlbS1sYWJlbFwiKTtcbiAgICAgICAgdmFyIGxhYmVsQ29sQ2xhc3NOYW1lID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkobGFiZWxDbHNCYXNpYywgbWVyZ2VkTGFiZWxBbGlnbiA9PT0gJ2xlZnQnICYmIFwiXCIuY29uY2F0KGxhYmVsQ2xzQmFzaWMsIFwiLWxlZnRcIiksIG1lcmdlZExhYmVsQ29sLmNsYXNzTmFtZSk7XG4gICAgICAgIHZhciBsYWJlbENoaWxkcmVuID0gbGFiZWw7IC8vIEtlZXAgbGFiZWwgaXMgb3JpZ2luYWwgd2hlcmUgdGhlcmUgc2hvdWxkIGhhdmUgbm8gY29sb25cblxuICAgICAgICB2YXIgY29tcHV0ZWRDb2xvbiA9IGNvbG9uID09PSB0cnVlIHx8IGNvbnRleHRDb2xvbiAhPT0gZmFsc2UgJiYgY29sb24gIT09IGZhbHNlO1xuICAgICAgICB2YXIgaGF2ZUNvbG9uID0gY29tcHV0ZWRDb2xvbiAmJiAhdmVydGljYWw7IC8vIFJlbW92ZSBkdXBsaWNhdGVkIHVzZXIgaW5wdXQgY29sb25cblxuICAgICAgICBpZiAoaGF2ZUNvbG9uICYmIHR5cGVvZiBsYWJlbCA9PT0gJ3N0cmluZycgJiYgbGFiZWwudHJpbSgpICE9PSAnJykge1xuICAgICAgICAgIGxhYmVsQ2hpbGRyZW4gPSBsYWJlbC5yZXBsYWNlKC9b77yaOl1cXHMqJC8sICcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBsYWJlbENsYXNzTmFtZSA9ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKChfY2xhc3NOYW1lcyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaXRlbS1yZXF1aXJlZFwiKSwgcmVxdWlyZWQpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaXRlbS1uby1jb2xvblwiKSwgIWNvbXB1dGVkQ29sb24pLCBfY2xhc3NOYW1lcykpO1xuICAgICAgICByZXR1cm4gbGFiZWwgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfY29sW1wiZGVmYXVsdFwiXSwgX2V4dGVuZHMoe30sIG1lcmdlZExhYmVsQ29sLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBsYWJlbENvbENsYXNzTmFtZVxuICAgICAgICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsYWJlbFwiLCB7XG4gICAgICAgICAgaHRtbEZvcjogaHRtbEZvciB8fCBpZCB8fCBfdGhpczMuZ2V0SWQoKSxcbiAgICAgICAgICBjbGFzc05hbWU6IGxhYmVsQ2xhc3NOYW1lLFxuICAgICAgICAgIHRpdGxlOiB0eXBlb2YgbGFiZWwgPT09ICdzdHJpbmcnID8gbGFiZWwgOiAnJyxcbiAgICAgICAgICBvbkNsaWNrOiBfdGhpczMub25MYWJlbENsaWNrXG4gICAgICAgIH0sIGxhYmVsQ2hpbGRyZW4pKSA6IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQ2hpbGRyZW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQ2hpbGRyZW4ocHJlZml4Q2xzKSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgcmV0dXJuIFt0aGlzLnJlbmRlckxhYmVsKHByZWZpeENscyksIHRoaXMucmVuZGVyV3JhcHBlcihwcmVmaXhDbHMsIHRoaXMucmVuZGVyVmFsaWRhdGVXcmFwcGVyKHByZWZpeENscywgY2hpbGRyZW4sIHRoaXMucmVuZGVySGVscChwcmVmaXhDbHMpLCB0aGlzLnJlbmRlckV4dHJhKHByZWZpeENscykpKV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnN1bWVyLCBudWxsLCB0aGlzLnJlbmRlckZvcm1JdGVtKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRm9ybUl0ZW07XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gRm9ybUl0ZW07XG5Gb3JtSXRlbS5kZWZhdWx0UHJvcHMgPSB7XG4gIGhhc0ZlZWRiYWNrOiBmYWxzZVxufTtcbkZvcm1JdGVtLnByb3BUeXBlcyA9IHtcbiAgcHJlZml4Q2xzOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBsYWJlbDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm5vZGVdKSxcbiAgbGFiZWxDb2w6IFByb3BUeXBlcy5vYmplY3QsXG4gIGhlbHA6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5ub2RlLCBQcm9wVHlwZXMuYm9vbF0pLFxuICB2YWxpZGF0ZVN0YXR1czogUHJvcFR5cGVzLm9uZU9mKFZhbGlkYXRlU3RhdHVzZXMpLFxuICBoYXNGZWVkYmFjazogUHJvcFR5cGVzLmJvb2wsXG4gIHdyYXBwZXJDb2w6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgY29sb246IFByb3BUeXBlcy5ib29sXG59OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZ2VuZXJhdG9yLXJ1bnRpbWVcIik7XG4iLCIoZnVuY3Rpb24oZil7aWYodHlwZW9mIGV4cG9ydHM9PT1cIm9iamVjdFwiJiZ0eXBlb2YgbW9kdWxlIT09XCJ1bmRlZmluZWRcIil7bW9kdWxlLmV4cG9ydHM9ZigpfWVsc2UgaWYodHlwZW9mIGRlZmluZT09PVwiZnVuY3Rpb25cIiYmZGVmaW5lLmFtZCl7ZGVmaW5lKFtdLGYpfWVsc2V7dmFyIGc7aWYodHlwZW9mIHdpbmRvdyE9PVwidW5kZWZpbmVkXCIpe2c9d2luZG93fWVsc2UgaWYodHlwZW9mIGdsb2JhbCE9PVwidW5kZWZpbmVkXCIpe2c9Z2xvYmFsfWVsc2UgaWYodHlwZW9mIHNlbGYhPT1cInVuZGVmaW5lZFwiKXtnPXNlbGZ9ZWxzZXtnPXRoaXN9Zy5tZW1vaXplcmlmaWMgPSBmKCl9fSkoZnVuY3Rpb24oKXt2YXIgZGVmaW5lLG1vZHVsZSxleHBvcnRzO3JldHVybiAoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSh7MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmNlU2ltaWxhcikge1xuXHRpZiAodHlwZW9mIE1hcCAhPT0gJ2Z1bmN0aW9uJyB8fCBmb3JjZVNpbWlsYXIpIHtcblx0XHR2YXIgU2ltaWxhciA9IF9kZXJlcV8oJy4vc2ltaWxhcicpO1xuXHRcdHJldHVybiBuZXcgU2ltaWxhcigpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdHJldHVybiBuZXcgTWFwKCk7XG5cdH1cbn1cblxufSx7XCIuL3NpbWlsYXJcIjoyfV0sMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5mdW5jdGlvbiBTaW1pbGFyKCkge1xuXHR0aGlzLmxpc3QgPSBbXTtcblx0dGhpcy5sYXN0SXRlbSA9IHVuZGVmaW5lZDtcblx0dGhpcy5zaXplID0gMDtcblxuXHRyZXR1cm4gdGhpcztcbn1cblxuU2ltaWxhci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oa2V5KSB7XG5cdHZhciBpbmRleDtcblxuXHRpZiAodGhpcy5sYXN0SXRlbSAmJiB0aGlzLmlzRXF1YWwodGhpcy5sYXN0SXRlbS5rZXksIGtleSkpIHtcblx0XHRyZXR1cm4gdGhpcy5sYXN0SXRlbS52YWw7XG5cdH1cblxuXHRpbmRleCA9IHRoaXMuaW5kZXhPZihrZXkpO1xuXHRpZiAoaW5kZXggPj0gMCkge1xuXHRcdHRoaXMubGFzdEl0ZW0gPSB0aGlzLmxpc3RbaW5kZXhdO1xuXHRcdHJldHVybiB0aGlzLmxpc3RbaW5kZXhdLnZhbDtcblx0fVxuXG5cdHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5TaW1pbGFyLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihrZXksIHZhbCkge1xuXHR2YXIgaW5kZXg7XG5cblx0aWYgKHRoaXMubGFzdEl0ZW0gJiYgdGhpcy5pc0VxdWFsKHRoaXMubGFzdEl0ZW0ua2V5LCBrZXkpKSB7XG5cdFx0dGhpcy5sYXN0SXRlbS52YWwgPSB2YWw7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRpbmRleCA9IHRoaXMuaW5kZXhPZihrZXkpO1xuXHRpZiAoaW5kZXggPj0gMCkge1xuXHRcdHRoaXMubGFzdEl0ZW0gPSB0aGlzLmxpc3RbaW5kZXhdO1xuXHRcdHRoaXMubGlzdFtpbmRleF0udmFsID0gdmFsO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0dGhpcy5sYXN0SXRlbSA9IHsga2V5OiBrZXksIHZhbDogdmFsIH07XG5cdHRoaXMubGlzdC5wdXNoKHRoaXMubGFzdEl0ZW0pO1xuXHR0aGlzLnNpemUrKztcblxuXHRyZXR1cm4gdGhpcztcbn07XG5cblNpbWlsYXIucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uKGtleSkge1xuXHR2YXIgaW5kZXg7XG5cblx0aWYgKHRoaXMubGFzdEl0ZW0gJiYgdGhpcy5pc0VxdWFsKHRoaXMubGFzdEl0ZW0ua2V5LCBrZXkpKSB7XG5cdFx0dGhpcy5sYXN0SXRlbSA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGluZGV4ID0gdGhpcy5pbmRleE9mKGtleSk7XG5cdGlmIChpbmRleCA+PSAwKSB7XG5cdFx0dGhpcy5zaXplLS07XG5cdFx0cmV0dXJuIHRoaXMubGlzdC5zcGxpY2UoaW5kZXgsIDEpWzBdO1xuXHR9XG5cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cblxuLy8gaW1wb3J0YW50IHRoYXQgaGFzKCkgZG9lc24ndCB1c2UgZ2V0KCkgaW4gY2FzZSBhbiBleGlzdGluZyBrZXkgaGFzIGEgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2UgaGFzKCkgd291bGQgcmV0dXJuIGZhbHNlXG5TaW1pbGFyLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihrZXkpIHtcblx0dmFyIGluZGV4O1xuXG5cdGlmICh0aGlzLmxhc3RJdGVtICYmIHRoaXMuaXNFcXVhbCh0aGlzLmxhc3RJdGVtLmtleSwga2V5KSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0aW5kZXggPSB0aGlzLmluZGV4T2Yoa2V5KTtcblx0aWYgKGluZGV4ID49IDApIHtcblx0XHR0aGlzLmxhc3RJdGVtID0gdGhpcy5saXN0W2luZGV4XTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHJldHVybiBmYWxzZTtcbn07XG5cblNpbWlsYXIucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihjYWxsYmFjaywgdGhpc0FyZykge1xuXHR2YXIgaTtcblx0Zm9yIChpID0gMDsgaSA8IHRoaXMuc2l6ZTsgaSsrKSB7XG5cdFx0Y2FsbGJhY2suY2FsbCh0aGlzQXJnIHx8IHRoaXMsIHRoaXMubGlzdFtpXS52YWwsIHRoaXMubGlzdFtpXS5rZXksIHRoaXMpO1xuXHR9XG59O1xuXG5TaW1pbGFyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24oa2V5KSB7XG5cdHZhciBpO1xuXHRmb3IgKGkgPSAwOyBpIDwgdGhpcy5zaXplOyBpKyspIHtcblx0XHRpZiAodGhpcy5pc0VxdWFsKHRoaXMubGlzdFtpXS5rZXksIGtleSkpIHtcblx0XHRcdHJldHVybiBpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gLTE7XG59O1xuXG4vLyBjaGVjayBpZiB0aGUgbnVtYmVycyBhcmUgZXF1YWwsIG9yIHdoZXRoZXIgdGhleSBhcmUgYm90aCBwcmVjaXNlbHkgTmFOIChpc05hTiByZXR1cm5zIHRydWUgZm9yIGFsbCBub24tbnVtYmVycylcblNpbWlsYXIucHJvdG90eXBlLmlzRXF1YWwgPSBmdW5jdGlvbih2YWwxLCB2YWwyKSB7XG5cdHJldHVybiB2YWwxID09PSB2YWwyIHx8ICh2YWwxICE9PSB2YWwxICYmIHZhbDIgIT09IHZhbDIpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBTaW1pbGFyO1xufSx7fV0sMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG52YXIgTWFwT3JTaW1pbGFyID0gX2RlcmVxXygnbWFwLW9yLXNpbWlsYXInKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGltaXQpIHtcblx0dmFyIGNhY2hlID0gbmV3IE1hcE9yU2ltaWxhcih1bmRlZmluZWQgPT09ICd0cnVlJyksXG5cdFx0bHJ1ID0gW107XG5cblx0cmV0dXJuIGZ1bmN0aW9uIChmbikge1xuXHRcdHZhciBtZW1vaXplcmlmaWMgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHR2YXIgY3VycmVudENhY2hlID0gY2FjaGUsXG5cdFx0XHRcdG5ld01hcCxcblx0XHRcdFx0Zm5SZXN1bHQsXG5cdFx0XHRcdGFyZ3NMZW5ndGhNaW51c09uZSA9IGFyZ3VtZW50cy5sZW5ndGggLSAxLFxuXHRcdFx0XHRscnVQYXRoID0gQXJyYXkoYXJnc0xlbmd0aE1pbnVzT25lICsgMSksXG5cdFx0XHRcdGlzTWVtb2l6ZWQgPSB0cnVlLFxuXHRcdFx0XHRpO1xuXG5cdFx0XHRpZiAoKG1lbW9pemVyaWZpYy5udW1BcmdzIHx8IG1lbW9pemVyaWZpYy5udW1BcmdzID09PSAwKSAmJiBtZW1vaXplcmlmaWMubnVtQXJncyAhPT0gYXJnc0xlbmd0aE1pbnVzT25lICsgMSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ01lbW9pemVyaWZpYyBmdW5jdGlvbnMgc2hvdWxkIGFsd2F5cyBiZSBjYWxsZWQgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgYXJndW1lbnRzJyk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIGxvb3AgdGhyb3VnaCBlYWNoIGFyZ3VtZW50IHRvIHRyYXZlcnNlIHRoZSBtYXAgdHJlZVxuXHRcdFx0Zm9yIChpID0gMDsgaSA8IGFyZ3NMZW5ndGhNaW51c09uZTsgaSsrKSB7XG5cdFx0XHRcdGxydVBhdGhbaV0gPSB7XG5cdFx0XHRcdFx0Y2FjaGVJdGVtOiBjdXJyZW50Q2FjaGUsXG5cdFx0XHRcdFx0YXJnOiBhcmd1bWVudHNbaV1cblx0XHRcdFx0fTtcblxuXHRcdFx0XHQvLyBjbGltYiB0aHJvdWdoIHRoZSBoaWVyYXJjaGljYWwgbWFwIHRyZWUgdW50aWwgdGhlIHNlY29uZC1sYXN0IGFyZ3VtZW50IGhhcyBiZWVuIGZvdW5kLCBvciBhbiBhcmd1bWVudCBpcyBtaXNzaW5nLlxuXHRcdFx0XHQvLyBpZiBhbGwgYXJndW1lbnRzIHVwIHRvIHRoZSBzZWNvbmQtbGFzdCBoYXZlIGJlZW4gZm91bmQsIHRoaXMgd2lsbCBwb3RlbnRpYWxseSBiZSBhIGNhY2hlIGhpdCAoZGV0ZXJtaW5lZCBsYXRlcilcblx0XHRcdFx0aWYgKGN1cnJlbnRDYWNoZS5oYXMoYXJndW1lbnRzW2ldKSkge1xuXHRcdFx0XHRcdGN1cnJlbnRDYWNoZSA9IGN1cnJlbnRDYWNoZS5nZXQoYXJndW1lbnRzW2ldKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlzTWVtb2l6ZWQgPSBmYWxzZTtcblxuXHRcdFx0XHQvLyBtYWtlIG1hcHMgdW50aWwgbGFzdCB2YWx1ZVxuXHRcdFx0XHRuZXdNYXAgPSBuZXcgTWFwT3JTaW1pbGFyKHVuZGVmaW5lZCA9PT0gJ3RydWUnKTtcblx0XHRcdFx0Y3VycmVudENhY2hlLnNldChhcmd1bWVudHNbaV0sIG5ld01hcCk7XG5cdFx0XHRcdGN1cnJlbnRDYWNoZSA9IG5ld01hcDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gd2UgYXJlIGF0IHRoZSBsYXN0IGFyZywgY2hlY2sgaWYgaXQgaXMgcmVhbGx5IG1lbW9pemVkXG5cdFx0XHRpZiAoaXNNZW1vaXplZCkge1xuXHRcdFx0XHRpZiAoY3VycmVudENhY2hlLmhhcyhhcmd1bWVudHNbYXJnc0xlbmd0aE1pbnVzT25lXSkpIHtcblx0XHRcdFx0XHRmblJlc3VsdCA9IGN1cnJlbnRDYWNoZS5nZXQoYXJndW1lbnRzW2FyZ3NMZW5ndGhNaW51c09uZV0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdGlzTWVtb2l6ZWQgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIWlzTWVtb2l6ZWQpIHtcblx0XHRcdFx0Zm5SZXN1bHQgPSBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRjdXJyZW50Q2FjaGUuc2V0KGFyZ3VtZW50c1thcmdzTGVuZ3RoTWludXNPbmVdLCBmblJlc3VsdCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChsaW1pdCA+IDApIHtcblx0XHRcdFx0bHJ1UGF0aFthcmdzTGVuZ3RoTWludXNPbmVdID0ge1xuXHRcdFx0XHRcdGNhY2hlSXRlbTogY3VycmVudENhY2hlLFxuXHRcdFx0XHRcdGFyZzogYXJndW1lbnRzW2FyZ3NMZW5ndGhNaW51c09uZV1cblx0XHRcdFx0fTtcblxuXHRcdFx0XHRpZiAoaXNNZW1vaXplZCkge1xuXHRcdFx0XHRcdG1vdmVUb01vc3RSZWNlbnRMcnUobHJ1LCBscnVQYXRoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRscnUucHVzaChscnVQYXRoKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChscnUubGVuZ3RoID4gbGltaXQpIHtcblx0XHRcdFx0XHRyZW1vdmVDYWNoZWRSZXN1bHQobHJ1LnNoaWZ0KCkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdG1lbW9pemVyaWZpYy53YXNNZW1vaXplZCA9IGlzTWVtb2l6ZWQ7XG5cdFx0XHRtZW1vaXplcmlmaWMubnVtQXJncyA9IGFyZ3NMZW5ndGhNaW51c09uZSArIDE7XG5cblx0XHRcdHJldHVybiBmblJlc3VsdDtcblx0XHR9O1xuXG5cdFx0bWVtb2l6ZXJpZmljLmxpbWl0ID0gbGltaXQ7XG5cdFx0bWVtb2l6ZXJpZmljLndhc01lbW9pemVkID0gZmFsc2U7XG5cdFx0bWVtb2l6ZXJpZmljLmNhY2hlID0gY2FjaGU7XG5cdFx0bWVtb2l6ZXJpZmljLmxydSA9IGxydTtcblxuXHRcdHJldHVybiBtZW1vaXplcmlmaWM7XG5cdH07XG59O1xuXG4vLyBtb3ZlIGN1cnJlbnQgYXJncyB0byBtb3N0IHJlY2VudCBwb3NpdGlvblxuZnVuY3Rpb24gbW92ZVRvTW9zdFJlY2VudExydShscnUsIGxydVBhdGgpIHtcblx0dmFyIGxydUxlbiA9IGxydS5sZW5ndGgsXG5cdFx0bHJ1UGF0aExlbiA9IGxydVBhdGgubGVuZ3RoLFxuXHRcdGlzTWF0Y2gsXG5cdFx0aSwgaWk7XG5cblx0Zm9yIChpID0gMDsgaSA8IGxydUxlbjsgaSsrKSB7XG5cdFx0aXNNYXRjaCA9IHRydWU7XG5cdFx0Zm9yIChpaSA9IDA7IGlpIDwgbHJ1UGF0aExlbjsgaWkrKykge1xuXHRcdFx0aWYgKCFpc0VxdWFsKGxydVtpXVtpaV0uYXJnLCBscnVQYXRoW2lpXS5hcmcpKSB7XG5cdFx0XHRcdGlzTWF0Y2ggPSBmYWxzZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChpc01hdGNoKSB7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHRscnUucHVzaChscnUuc3BsaWNlKGksIDEpWzBdKTtcbn1cblxuLy8gcmVtb3ZlIGxlYXN0IHJlY2VudGx5IHVzZWQgY2FjaGUgaXRlbSBhbmQgYWxsIGRlYWQgYnJhbmNoZXNcbmZ1bmN0aW9uIHJlbW92ZUNhY2hlZFJlc3VsdChyZW1vdmVkTHJ1KSB7XG5cdHZhciByZW1vdmVkTHJ1TGVuID0gcmVtb3ZlZExydS5sZW5ndGgsXG5cdFx0Y3VycmVudExydSA9IHJlbW92ZWRMcnVbcmVtb3ZlZExydUxlbiAtIDFdLFxuXHRcdHRtcCxcblx0XHRpO1xuXG5cdGN1cnJlbnRMcnUuY2FjaGVJdGVtLmRlbGV0ZShjdXJyZW50THJ1LmFyZyk7XG5cblx0Ly8gd2FsayBkb3duIHRoZSB0cmVlIHJlbW92aW5nIGRlYWQgYnJhbmNoZXMgKHNpemUgMCkgYWxvbmcgdGhlIHdheVxuXHRmb3IgKGkgPSByZW1vdmVkTHJ1TGVuIC0gMjsgaSA+PSAwOyBpLS0pIHtcblx0XHRjdXJyZW50THJ1ID0gcmVtb3ZlZExydVtpXTtcblx0XHR0bXAgPSBjdXJyZW50THJ1LmNhY2hlSXRlbS5nZXQoY3VycmVudExydS5hcmcpO1xuXG5cdFx0aWYgKCF0bXAgfHwgIXRtcC5zaXplKSB7XG5cdFx0XHRjdXJyZW50THJ1LmNhY2hlSXRlbS5kZWxldGUoY3VycmVudExydS5hcmcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH1cbn1cblxuLy8gY2hlY2sgaWYgdGhlIG51bWJlcnMgYXJlIGVxdWFsLCBvciB3aGV0aGVyIHRoZXkgYXJlIGJvdGggcHJlY2lzZWx5IE5hTiAoaXNOYU4gcmV0dXJucyB0cnVlIGZvciBhbGwgbm9uLW51bWJlcnMpXG5mdW5jdGlvbiBpc0VxdWFsKHZhbDEsIHZhbDIpIHtcblx0cmV0dXJuIHZhbDEgPT09IHZhbDIgfHwgKHZhbDEgIT09IHZhbDEgJiYgdmFsMiAhPT0gdmFsMik7XG59XG59LHtcIm1hcC1vci1zaW1pbGFyXCI6MX1dfSx7fSxbM10pKDMpXG59KTsiLCIvKiBnbG9iYWwgd2luZG93ICovXG5pbXBvcnQgcG9ueWZpbGwgZnJvbSAnLi9wb255ZmlsbC5qcyc7XG5cbnZhciByb290O1xuXG5pZiAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnKSB7XG4gIHJvb3QgPSBzZWxmO1xufSBlbHNlIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICByb290ID0gd2luZG93O1xufSBlbHNlIGlmICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJykge1xuICByb290ID0gZ2xvYmFsO1xufSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuICByb290ID0gbW9kdWxlO1xufSBlbHNlIHtcbiAgcm9vdCA9IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG59XG5cbnZhciByZXN1bHQgPSBwb255ZmlsbChyb290KTtcbmV4cG9ydCBkZWZhdWx0IHJlc3VsdDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1LCBZYWhvbyEgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG52YXIgUkVBQ1RfU1RBVElDUyA9IHtcbiAgY2hpbGRDb250ZXh0VHlwZXM6IHRydWUsXG4gIGNvbnRleHRUeXBlOiB0cnVlLFxuICBjb250ZXh0VHlwZXM6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIGdldERlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yOiB0cnVlLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM6IHRydWUsXG4gIG1peGluczogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlLFxuICB0eXBlOiB0cnVlXG59O1xudmFyIEtOT1dOX1NUQVRJQ1MgPSB7XG4gIG5hbWU6IHRydWUsXG4gIGxlbmd0aDogdHJ1ZSxcbiAgcHJvdG90eXBlOiB0cnVlLFxuICBjYWxsZXI6IHRydWUsXG4gIGNhbGxlZTogdHJ1ZSxcbiAgYXJndW1lbnRzOiB0cnVlLFxuICBhcml0eTogdHJ1ZVxufTtcbnZhciBGT1JXQVJEX1JFRl9TVEFUSUNTID0ge1xuICAnJCR0eXBlb2YnOiB0cnVlLFxuICByZW5kZXI6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZVxufTtcbnZhciBNRU1PX1NUQVRJQ1MgPSB7XG4gICckJHR5cGVvZic6IHRydWUsXG4gIGNvbXBhcmU6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZSxcbiAgdHlwZTogdHJ1ZVxufTtcbnZhciBUWVBFX1NUQVRJQ1MgPSB7fTtcblRZUEVfU1RBVElDU1tyZWFjdElzLkZvcndhcmRSZWZdID0gRk9SV0FSRF9SRUZfU1RBVElDUztcblRZUEVfU1RBVElDU1tyZWFjdElzLk1lbW9dID0gTUVNT19TVEFUSUNTO1xuXG5mdW5jdGlvbiBnZXRTdGF0aWNzKGNvbXBvbmVudCkge1xuICAvLyBSZWFjdCB2MTYuMTEgYW5kIGJlbG93XG4gIGlmIChyZWFjdElzLmlzTWVtbyhjb21wb25lbnQpKSB7XG4gICAgcmV0dXJuIE1FTU9fU1RBVElDUztcbiAgfSAvLyBSZWFjdCB2MTYuMTIgYW5kIGFib3ZlXG5cblxuICByZXR1cm4gVFlQRV9TVEFUSUNTW2NvbXBvbmVudFsnJCR0eXBlb2YnXV0gfHwgUkVBQ1RfU1RBVElDUztcbn1cblxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG52YXIgb2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcbmZ1bmN0aW9uIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgc291cmNlQ29tcG9uZW50LCBibGFja2xpc3QpIHtcbiAgaWYgKHR5cGVvZiBzb3VyY2VDb21wb25lbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgaG9pc3Qgb3ZlciBzdHJpbmcgKGh0bWwpIGNvbXBvbmVudHNcbiAgICBpZiAob2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICB2YXIgaW5oZXJpdGVkQ29tcG9uZW50ID0gZ2V0UHJvdG90eXBlT2Yoc291cmNlQ29tcG9uZW50KTtcblxuICAgICAgaWYgKGluaGVyaXRlZENvbXBvbmVudCAmJiBpbmhlcml0ZWRDb21wb25lbnQgIT09IG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgICBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIGluaGVyaXRlZENvbXBvbmVudCwgYmxhY2tsaXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoc291cmNlQ29tcG9uZW50KTtcblxuICAgIGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICAgIGtleXMgPSBrZXlzLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlQ29tcG9uZW50KSk7XG4gICAgfVxuXG4gICAgdmFyIHRhcmdldFN0YXRpY3MgPSBnZXRTdGF0aWNzKHRhcmdldENvbXBvbmVudCk7XG4gICAgdmFyIHNvdXJjZVN0YXRpY3MgPSBnZXRTdGF0aWNzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAoIUtOT1dOX1NUQVRJQ1Nba2V5XSAmJiAhKGJsYWNrbGlzdCAmJiBibGFja2xpc3Rba2V5XSkgJiYgIShzb3VyY2VTdGF0aWNzICYmIHNvdXJjZVN0YXRpY3Nba2V5XSkgJiYgISh0YXJnZXRTdGF0aWNzICYmIHRhcmdldFN0YXRpY3Nba2V5XSkpIHtcbiAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlQ29tcG9uZW50LCBrZXkpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gQXZvaWQgZmFpbHVyZXMgZnJvbSByZWFkLW9ubHkgcHJvcGVydGllc1xuICAgICAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldENvbXBvbmVudCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0Q29tcG9uZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhvaXN0Tm9uUmVhY3RTdGF0aWNzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9Db2xsYXBzZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vQ29sbGFwc2VcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxudmFyIF9kZWZhdWx0ID0gX0NvbGxhcHNlW1wiZGVmYXVsdFwiXTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG52YXIgcnVudGltZSA9IChmdW5jdGlvbiAoZXhwb3J0cykge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7XG4gIHZhciB1bmRlZmluZWQ7IC8vIE1vcmUgY29tcHJlc3NpYmxlIHRoYW4gdm9pZCAwLlxuICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICB2YXIgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuICB2YXIgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiO1xuICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuXG4gIGZ1bmN0aW9uIGRlZmluZShvYmosIGtleSwgdmFsdWUpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBvYmpba2V5XTtcbiAgfVxuICB0cnkge1xuICAgIC8vIElFIDggaGFzIGEgYnJva2VuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB0aGF0IG9ubHkgd29ya3Mgb24gRE9NIG9iamVjdHMuXG4gICAgZGVmaW5lKHt9LCBcIlwiKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZGVmaW5lID0gZnVuY3Rpb24ob2JqLCBrZXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gb2JqW2tleV0gPSB2YWx1ZTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIC8vIElmIG91dGVyRm4gcHJvdmlkZWQgYW5kIG91dGVyRm4ucHJvdG90eXBlIGlzIGEgR2VuZXJhdG9yLCB0aGVuIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yLlxuICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yO1xuICAgIHZhciBnZW5lcmF0b3IgPSBPYmplY3QuY3JlYXRlKHByb3RvR2VuZXJhdG9yLnByb3RvdHlwZSk7XG4gICAgdmFyIGNvbnRleHQgPSBuZXcgQ29udGV4dCh0cnlMb2NzTGlzdCB8fCBbXSk7XG5cbiAgICAvLyBUaGUgLl9pbnZva2UgbWV0aG9kIHVuaWZpZXMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzLlxuICAgIGdlbmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH1cbiAgZXhwb3J0cy53cmFwID0gd3JhcDtcblxuICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cbiAgLy8gcmVjb3JkIGxpa2UgY29udGV4dC50cnlFbnRyaWVzW2ldLmNvbXBsZXRpb24uIFRoaXMgaW50ZXJmYWNlIGNvdWxkXG4gIC8vIGhhdmUgYmVlbiAoYW5kIHdhcyBwcmV2aW91c2x5KSBkZXNpZ25lZCB0byB0YWtlIGEgY2xvc3VyZSB0byBiZVxuICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZXRob2Qgd2Ugd2FudCB0byBjYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWRcbiAgLy8gdG8gY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIG9iamVjdC4gV2UgY2FuIGV2ZW4gZ2V0IGF3YXkgd2l0aCBhc3N1bWluZ1xuICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuICAvLyBpbiBldmVyeSBjYXNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRvdWNoIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBUaGVcbiAgLy8gb25seSBhZGRpdGlvbmFsIGFsbG9jYXRpb24gcmVxdWlyZWQgaXMgdGhlIGNvbXBsZXRpb24gcmVjb3JkLCB3aGljaFxuICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG4gIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInRocm93XCIsIGFyZzogZXJyIH07XG4gICAgfVxuICB9XG5cbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkU3RhcnQgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkID0gXCJzdXNwZW5kZWRZaWVsZFwiO1xuICB2YXIgR2VuU3RhdGVFeGVjdXRpbmcgPSBcImV4ZWN1dGluZ1wiO1xuICB2YXIgR2VuU3RhdGVDb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xuXG4gIC8vIFJldHVybmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBpbm5lckZuIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXNcbiAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuXG4gIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZFxuICAvLyAuY29uc3RydWN0b3IucHJvdG90eXBlIHByb3BlcnRpZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcbiAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG5cbiAgLy8gVGhpcyBpcyBhIHBvbHlmaWxsIGZvciAlSXRlcmF0b3JQcm90b3R5cGUlIGZvciBlbnZpcm9ubWVudHMgdGhhdFxuICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LlxuICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbiAgSXRlcmF0b3JQcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbiAgdmFyIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG8gJiYgZ2V0UHJvdG8oZ2V0UHJvdG8odmFsdWVzKFtdKSkpO1xuICBpZiAoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgJiZcbiAgICAgIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPcCAmJlxuICAgICAgaGFzT3duLmNhbGwoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUsIGl0ZXJhdG9yU3ltYm9sKSkge1xuICAgIC8vIFRoaXMgZW52aXJvbm1lbnQgaGFzIGEgbmF0aXZlICVJdGVyYXRvclByb3RvdHlwZSU7IHVzZSBpdCBpbnN0ZWFkXG4gICAgLy8gb2YgdGhlIHBvbHlmaWxsLlxuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gTmF0aXZlSXRlcmF0b3JQcm90b3R5cGU7XG4gIH1cblxuICB2YXIgR3AgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPVxuICAgIEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbjtcbiAgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBkZWZpbmUoXG4gICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsXG4gICAgdG9TdHJpbmdUYWdTeW1ib2wsXG4gICAgXCJHZW5lcmF0b3JGdW5jdGlvblwiXG4gICk7XG5cbiAgLy8gSGVscGVyIGZvciBkZWZpbmluZyB0aGUgLm5leHQsIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcyBvZiB0aGVcbiAgLy8gSXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC5cbiAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHByb3RvdHlwZSkge1xuICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgICAgZGVmaW5lKHByb3RvdHlwZSwgbWV0aG9kLCBmdW5jdGlvbihhcmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGV4cG9ydHMuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIHZhciBjdG9yID0gdHlwZW9mIGdlbkZ1biA9PT0gXCJmdW5jdGlvblwiICYmIGdlbkZ1bi5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gY3RvclxuICAgICAgPyBjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fFxuICAgICAgICAvLyBGb3IgdGhlIG5hdGl2ZSBHZW5lcmF0b3JGdW5jdGlvbiBjb25zdHJ1Y3RvciwgdGhlIGJlc3Qgd2UgY2FuXG4gICAgICAgIC8vIGRvIGlzIHRvIGNoZWNrIGl0cyAubmFtZSBwcm9wZXJ0eS5cbiAgICAgICAgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSA9PT0gXCJHZW5lcmF0b3JGdW5jdGlvblwiXG4gICAgICA6IGZhbHNlO1xuICB9O1xuXG4gIGV4cG9ydHMubWFyayA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIGlmIChPYmplY3Quc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihnZW5GdW4sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ2VuRnVuLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICAgICAgZGVmaW5lKGdlbkZ1biwgdG9TdHJpbmdUYWdTeW1ib2wsIFwiR2VuZXJhdG9yRnVuY3Rpb25cIik7XG4gICAgfVxuICAgIGdlbkZ1bi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEdwKTtcbiAgICByZXR1cm4gZ2VuRnVuO1xuICB9O1xuXG4gIC8vIFdpdGhpbiB0aGUgYm9keSBvZiBhbnkgYXN5bmMgZnVuY3Rpb24sIGBhd2FpdCB4YCBpcyB0cmFuc2Zvcm1lZCB0b1xuICAvLyBgeWllbGQgcmVnZW5lcmF0b3JSdW50aW1lLmF3cmFwKHgpYCwgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gdGVzdFxuICAvLyBgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKWAgdG8gZGV0ZXJtaW5lIGlmIHRoZSB5aWVsZGVkIHZhbHVlIGlzXG4gIC8vIG1lYW50IHRvIGJlIGF3YWl0ZWQuXG4gIGV4cG9ydHMuYXdyYXAgPSBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4geyBfX2F3YWl0OiBhcmcgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvciwgUHJvbWlzZUltcGwpIHtcbiAgICBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGdlbmVyYXRvclttZXRob2RdLCBnZW5lcmF0b3IsIGFyZyk7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICByZWplY3QocmVjb3JkLmFyZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZztcbiAgICAgICAgdmFyIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlSW1wbC5yZXNvbHZlKHZhbHVlLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIGludm9rZShcIm5leHRcIiwgdmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJ0aHJvd1wiLCBlcnIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZUltcGwucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbih1bndyYXBwZWQpIHtcbiAgICAgICAgICAvLyBXaGVuIGEgeWllbGRlZCBQcm9taXNlIGlzIHJlc29sdmVkLCBpdHMgZmluYWwgdmFsdWUgYmVjb21lc1xuICAgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZVxuICAgICAgICAgIC8vIGN1cnJlbnQgaXRlcmF0aW9uLlxuICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZDtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgICAgLy8gSWYgYSByZWplY3RlZCBQcm9taXNlIHdhcyB5aWVsZGVkLCB0aHJvdyB0aGUgcmVqZWN0aW9uIGJhY2tcbiAgICAgICAgICAvLyBpbnRvIHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gc28gaXQgY2FuIGJlIGhhbmRsZWQgdGhlcmUuXG4gICAgICAgICAgcmV0dXJuIGludm9rZShcInRocm93XCIsIGVycm9yLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuXG4gICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUltcGwoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzUHJvbWlzZSA9XG4gICAgICAgIC8vIElmIGVucXVldWUgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiB3ZSB3YW50IHRvIHdhaXQgdW50aWxcbiAgICAgICAgLy8gYWxsIHByZXZpb3VzIFByb21pc2VzIGhhdmUgYmVlbiByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyBpbnZva2UsXG4gICAgICAgIC8vIHNvIHRoYXQgcmVzdWx0cyBhcmUgYWx3YXlzIGRlbGl2ZXJlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSWZcbiAgICAgICAgLy8gZW5xdWV1ZSBoYXMgbm90IGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiBpdCBpcyBpbXBvcnRhbnQgdG9cbiAgICAgICAgLy8gY2FsbCBpbnZva2UgaW1tZWRpYXRlbHksIHdpdGhvdXQgd2FpdGluZyBvbiBhIGNhbGxiYWNrIHRvIGZpcmUsXG4gICAgICAgIC8vIHNvIHRoYXQgdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvXG4gICAgICAgIC8vIGFueSBuZWNlc3Nhcnkgc2V0dXAgaW4gYSBwcmVkaWN0YWJsZSB3YXkuIFRoaXMgcHJlZGljdGFiaWxpdHlcbiAgICAgICAgLy8gaXMgd2h5IHRoZSBQcm9taXNlIGNvbnN0cnVjdG9yIHN5bmNocm9ub3VzbHkgaW52b2tlcyBpdHNcbiAgICAgICAgLy8gZXhlY3V0b3IgY2FsbGJhY2ssIGFuZCB3aHkgYXN5bmMgZnVuY3Rpb25zIHN5bmNocm9ub3VzbHlcbiAgICAgICAgLy8gZXhlY3V0ZSBjb2RlIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQuIFNpbmNlIHdlIGltcGxlbWVudCBzaW1wbGVcbiAgICAgICAgLy8gYXN5bmMgZnVuY3Rpb25zIGluIHRlcm1zIG9mIGFzeW5jIGdlbmVyYXRvcnMsIGl0IGlzIGVzcGVjaWFsbHlcbiAgICAgICAgLy8gaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBldmVuIHRob3VnaCBpdCByZXF1aXJlcyBjYXJlLlxuICAgICAgICBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbihcbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyxcbiAgICAgICAgICAvLyBBdm9pZCBwcm9wYWdhdGluZyBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieSBsYXRlclxuICAgICAgICAgIC8vIGludm9jYXRpb25zIG9mIHRoZSBpdGVyYXRvci5cbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZ1xuICAgICAgICApIDogY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKTtcbiAgICB9XG5cbiAgICAvLyBEZWZpbmUgdGhlIHVuaWZpZWQgaGVscGVyIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gaW1wbGVtZW50IC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLlxuICAgIHRoaXMuX2ludm9rZSA9IGVucXVldWU7XG4gIH1cblxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpO1xuICBBc3luY0l0ZXJhdG9yLnByb3RvdHlwZVthc3luY0l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgZXhwb3J0cy5Bc3luY0l0ZXJhdG9yID0gQXN5bmNJdGVyYXRvcjtcblxuICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG4gIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci5cbiAgZXhwb3J0cy5hc3luYyA9IGZ1bmN0aW9uKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0LCBQcm9taXNlSW1wbCkge1xuICAgIGlmIChQcm9taXNlSW1wbCA9PT0gdm9pZCAwKSBQcm9taXNlSW1wbCA9IFByb21pc2U7XG5cbiAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKFxuICAgICAgd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCksXG4gICAgICBQcm9taXNlSW1wbFxuICAgICk7XG5cbiAgICByZXR1cm4gZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pXG4gICAgICA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICB9KTtcbiAgfTtcblxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2YgdGhlIHNwZWM6XG4gICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcbiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7XG4gICAgICBjb250ZXh0LmFyZyA9IGFyZztcblxuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgICAvLyBTZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcbiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgICB0aHJvdyBjb250ZXh0LmFyZztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKTtcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgY29udGV4dC5hcmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG4gICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgID8gR2VuU3RhdGVDb21wbGV0ZWRcbiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIENhbGwgZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdKGNvbnRleHQuYXJnKSBhbmQgaGFuZGxlIHRoZVxuICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlXG4gIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAvLyBzZXR0aW5nIGNvbnRleHQuZGVsZWdhdGUgdG8gbnVsbCwgYW5kIHJldHVybmluZyB0aGUgQ29udGludWVTZW50aW5lbC5cbiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkge1xuICAgIHZhciBtZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF07XG4gICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3dcbiAgICAgIC8vIG1ldGhvZCBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgLy8gTm90ZTogW1wicmV0dXJuXCJdIG11c3QgYmUgdXNlZCBmb3IgRVMzIHBhcnNpbmcgY29tcGF0aWJpbGl0eS5cbiAgICAgICAgaWYgKGRlbGVnYXRlLml0ZXJhdG9yW1wicmV0dXJuXCJdKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBhIHJldHVybiBtZXRob2QsIGdpdmUgaXQgYVxuICAgICAgICAgIC8vIGNoYW5jZSB0byBjbGVhbiB1cC5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgLy8gSWYgbWF5YmVJbnZva2VEZWxlZ2F0ZShjb250ZXh0KSBjaGFuZ2VkIGNvbnRleHQubWV0aG9kIGZyb21cbiAgICAgICAgICAgIC8vIFwicmV0dXJuXCIgdG8gXCJ0aHJvd1wiLCBsZXQgdGhhdCBvdmVycmlkZSB0aGUgVHlwZUVycm9yIGJlbG93LlxuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2RcIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChtZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBjb250ZXh0LmFyZyk7XG5cbiAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciBpbmZvID0gcmVjb3JkLmFyZztcblxuICAgIGlmICghIGluZm8pIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIik7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgIC8vIEFzc2lnbiB0aGUgcmVzdWx0IG9mIHRoZSBmaW5pc2hlZCBkZWxlZ2F0ZSB0byB0aGUgdGVtcG9yYXJ5XG4gICAgICAvLyB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgZGVsZWdhdGUucmVzdWx0TmFtZSAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7XG5cbiAgICAgIC8vIFJlc3VtZSBleGVjdXRpb24gYXQgdGhlIGRlc2lyZWQgbG9jYXRpb24gKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2M7XG5cbiAgICAgIC8vIElmIGNvbnRleHQubWV0aG9kIHdhcyBcInRocm93XCIgYnV0IHRoZSBkZWxlZ2F0ZSBoYW5kbGVkIHRoZVxuICAgICAgLy8gZXhjZXB0aW9uLCBsZXQgdGhlIG91dGVyIGdlbmVyYXRvciBwcm9jZWVkIG5vcm1hbGx5LiBJZlxuICAgICAgLy8gY29udGV4dC5tZXRob2Qgd2FzIFwibmV4dFwiLCBmb3JnZXQgY29udGV4dC5hcmcgc2luY2UgaXQgaGFzIGJlZW5cbiAgICAgIC8vIFwiY29uc3VtZWRcIiBieSB0aGUgZGVsZWdhdGUgaXRlcmF0b3IuIElmIGNvbnRleHQubWV0aG9kIHdhc1xuICAgICAgLy8gXCJyZXR1cm5cIiwgYWxsb3cgdGhlIG9yaWdpbmFsIC5yZXR1cm4gY2FsbCB0byBjb250aW51ZSBpbiB0aGVcbiAgICAgIC8vIG91dGVyIGdlbmVyYXRvci5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCAhPT0gXCJyZXR1cm5cIikge1xuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZS15aWVsZCB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBkZWxlZ2F0ZSBtZXRob2QuXG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICAvLyBUaGUgZGVsZWdhdGUgaXRlcmF0b3IgaXMgZmluaXNoZWQsIHNvIGZvcmdldCBpdCBhbmQgY29udGludWUgd2l0aFxuICAgIC8vIHRoZSBvdXRlciBnZW5lcmF0b3IuXG4gICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gIH1cblxuICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZVxuICAvLyB1bmlmaWVkIC5faW52b2tlIGhlbHBlciBtZXRob2QuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhHcCk7XG5cbiAgZGVmaW5lKEdwLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JcIik7XG5cbiAgLy8gQSBHZW5lcmF0b3Igc2hvdWxkIGFsd2F5cyByZXR1cm4gaXRzZWxmIGFzIHRoZSBpdGVyYXRvciBvYmplY3Qgd2hlbiB0aGVcbiAgLy8gQEBpdGVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucyBvZiB0aGVcbiAgLy8gaXRlcmF0b3IgcHJvdG90eXBlIGNoYWluIGluY29ycmVjdGx5IGltcGxlbWVudCB0aGlzLCBjYXVzaW5nIHRoZSBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0IHRvIG5vdCBiZSByZXR1cm5lZCBmcm9tIHRoaXMgY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQgZG9lc24ndCBoYXBwZW4uXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3NCBmb3IgbW9yZSBkZXRhaWxzLlxuICBHcFtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG4gICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuICAgIGlmICgxIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoMiBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcbiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcbiAgICB9XG5cbiAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG4gICAgcmVjb3JkLnR5cGUgPSBcIm5vcm1hbFwiO1xuICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG4gIH1cblxuICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG4gICAgLy8gb3IgYSBmaW5hbGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbVxuICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuICAgIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKTtcbiAgICB0aGlzLnJlc2V0KHRydWUpO1xuICB9XG5cbiAgZXhwb3J0cy5rZXlzID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB9XG4gICAga2V5cy5yZXZlcnNlKCk7XG5cbiAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuICAgIC8vIHRoaW5ncyBzaW1wbGUgYW5kIHJldHVybiB0aGUgbmV4dCBmdW5jdGlvbiBpdHNlbGYuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXMucG9wKCk7XG4gICAgICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTtcbiAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWVcbiAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG4gICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgbWluaWZpZXIgd2lsbCBub3QgYW5vbnltaXplIHRoZSBmdW5jdGlvbi5cbiAgICAgIG5leHQuZG9uZSA9IHRydWU7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbaXRlcmF0b3JTeW1ib2xdO1xuICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcbiAgICAgICAgdmFyIGkgPSAtMSwgbmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgd2hpbGUgKCsraSA8IGl0ZXJhYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkge1xuICAgICAgICAgICAgICBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV07XG4gICAgICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0LnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYW4gaXRlcmF0b3Igd2l0aCBubyB2YWx1ZXMuXG4gICAgcmV0dXJuIHsgbmV4dDogZG9uZVJlc3VsdCB9O1xuICB9XG4gIGV4cG9ydHMudmFsdWVzID0gdmFsdWVzO1xuXG4gIGZ1bmN0aW9uIGRvbmVSZXN1bHQoKSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9XG5cbiAgQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IENvbnRleHQsXG5cbiAgICByZXNldDogZnVuY3Rpb24oc2tpcFRlbXBSZXNldCkge1xuICAgICAgdGhpcy5wcmV2ID0gMDtcbiAgICAgIHRoaXMubmV4dCA9IDA7XG4gICAgICAvLyBSZXNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgIHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpO1xuXG4gICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHtcbiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzKSB7XG4gICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcbiAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09IFwidFwiICYmXG4gICAgICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmXG4gICAgICAgICAgICAgICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHtcbiAgICAgICAgICAgIHRoaXNbbmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcblxuICAgICAgdmFyIHJvb3RFbnRyeSA9IHRoaXMudHJ5RW50cmllc1swXTtcbiAgICAgIHZhciByb290UmVjb3JkID0gcm9vdEVudHJ5LmNvbXBsZXRpb247XG4gICAgICBpZiAocm9vdFJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcm9vdFJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcblxuICAgIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbihleGNlcHRpb24pIHtcbiAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG4gICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcbiAgICAgICAgcmVjb3JkLnR5cGUgPSBcInRocm93XCI7XG4gICAgICAgIHJlY29yZC5hcmcgPSBleGNlcHRpb247XG4gICAgICAgIGNvbnRleHQubmV4dCA9IGxvYztcblxuICAgICAgICBpZiAoY2F1Z2h0KSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoZWQgZXhjZXB0aW9uIHdhcyBjYXVnaHQgYnkgYSBjYXRjaCBibG9jayxcbiAgICAgICAgICAvLyB0aGVuIGxldCB0aGF0IGNhdGNoIGJsb2NrIGhhbmRsZSB0aGUgZXhjZXB0aW9uIG5vcm1hbGx5LlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gISEgY2F1Z2h0O1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gXCJyb290XCIpIHtcbiAgICAgICAgICAvLyBFeGNlcHRpb24gdGhyb3duIG91dHNpZGUgb2YgYW55IHRyeSBibG9jayB0aGF0IGNvdWxkIGhhbmRsZVxuICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuICAgICAgICAgIC8vIHRocm93IHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG4gICAgICAgICAgdmFyIGhhc0NhdGNoID0gaGFzT3duLmNhbGwoZW50cnksIFwiY2F0Y2hMb2NcIik7XG4gICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuXG4gICAgICAgICAgaWYgKGhhc0NhdGNoICYmIGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBhYnJ1cHQ6IGZ1bmN0aW9uKHR5cGUsIGFyZykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmXG4gICAgICAgICAgICB0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkgJiZcbiAgICAgICAgICAodHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgIHR5cGUgPT09IFwiY29udGludWVcIikgJiZcbiAgICAgICAgICBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJlxuICAgICAgICAgIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAvLyBJZ25vcmUgdGhlIGZpbmFsbHkgZW50cnkgaWYgY29udHJvbCBpcyBub3QganVtcGluZyB0byBhXG4gICAgICAgIC8vIGxvY2F0aW9uIG91dHNpZGUgdGhlIHRyeS9jYXRjaCBibG9jay5cbiAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307XG4gICAgICByZWNvcmQudHlwZSA9IHR5cGU7XG4gICAgICByZWNvcmQuYXJnID0gYXJnO1xuXG4gICAgICBpZiAoZmluYWxseUVudHJ5KSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jO1xuICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY29tcGxldGUocmVjb3JkKTtcbiAgICB9LFxuXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uKHJlY29yZCwgYWZ0ZXJMb2MpIHtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgcmVjb3JkLnR5cGUgPT09IFwiY29udGludWVcIikge1xuICAgICAgICB0aGlzLm5leHQgPSByZWNvcmQuYXJnO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICB0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gXCJlbmRcIjtcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH0sXG5cbiAgICBmaW5pc2g6IGZ1bmN0aW9uKGZpbmFsbHlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkuZmluYWxseUxvYyA9PT0gZmluYWxseUxvYykge1xuICAgICAgICAgIHRoaXMuY29tcGxldGUoZW50cnkuY29tcGxldGlvbiwgZW50cnkuYWZ0ZXJMb2MpO1xuICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIFwiY2F0Y2hcIjogZnVuY3Rpb24odHJ5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG4gICAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG4gICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aHJvd247XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGNvbnRleHQuY2F0Y2ggbWV0aG9kIG11c3Qgb25seSBiZSBjYWxsZWQgd2l0aCBhIGxvY2F0aW9uXG4gICAgICAvLyBhcmd1bWVudCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEga25vd24gY2F0Y2ggYmxvY2suXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG4gICAgfSxcblxuICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uKGl0ZXJhYmxlLCByZXN1bHROYW1lLCBuZXh0TG9jKSB7XG4gICAgICB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcbiAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgbmV4dExvYzogbmV4dExvY1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndFxuICAgICAgICAvLyBhY2NpZGVudGFsbHkgcGFzcyBpdCBvbiB0byB0aGUgZGVsZWdhdGUuXG4gICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG4gIH07XG5cbiAgLy8gUmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZVxuICAvLyBvciBub3QsIHJldHVybiB0aGUgcnVudGltZSBvYmplY3Qgc28gdGhhdCB3ZSBjYW4gZGVjbGFyZSB0aGUgdmFyaWFibGVcbiAgLy8gcmVnZW5lcmF0b3JSdW50aW1lIGluIHRoZSBvdXRlciBzY29wZSwgd2hpY2ggYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlXG4gIC8vIGluamVjdGVkIGVhc2lseSBieSBgYmluL3JlZ2VuZXJhdG9yIC0taW5jbHVkZS1ydW50aW1lIHNjcmlwdC5qc2AuXG4gIHJldHVybiBleHBvcnRzO1xuXG59KFxuICAvLyBJZiB0aGlzIHNjcmlwdCBpcyBleGVjdXRpbmcgYXMgYSBDb21tb25KUyBtb2R1bGUsIHVzZSBtb2R1bGUuZXhwb3J0c1xuICAvLyBhcyB0aGUgcmVnZW5lcmF0b3JSdW50aW1lIG5hbWVzcGFjZS4gT3RoZXJ3aXNlIGNyZWF0ZSBhIG5ldyBlbXB0eVxuICAvLyBvYmplY3QuIEVpdGhlciB3YXksIHRoZSByZXN1bHRpbmcgb2JqZWN0IHdpbGwgYmUgdXNlZCB0byBpbml0aWFsaXplXG4gIC8vIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgdmFyaWFibGUgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuXG4gIHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgPyBtb2R1bGUuZXhwb3J0cyA6IHt9XG4pKTtcblxudHJ5IHtcbiAgcmVnZW5lcmF0b3JSdW50aW1lID0gcnVudGltZTtcbn0gY2F0Y2ggKGFjY2lkZW50YWxTdHJpY3RNb2RlKSB7XG4gIC8vIFRoaXMgbW9kdWxlIHNob3VsZCBub3QgYmUgcnVubmluZyBpbiBzdHJpY3QgbW9kZSwgc28gdGhlIGFib3ZlXG4gIC8vIGFzc2lnbm1lbnQgc2hvdWxkIGFsd2F5cyB3b3JrIHVubGVzcyBzb21ldGhpbmcgaXMgbWlzY29uZmlndXJlZC4gSnVzdFxuICAvLyBpbiBjYXNlIHJ1bnRpbWUuanMgYWNjaWRlbnRhbGx5IHJ1bnMgaW4gc3RyaWN0IG1vZGUsIHdlIGNhbiBlc2NhcGVcbiAgLy8gc3RyaWN0IG1vZGUgdXNpbmcgYSBnbG9iYWwgRnVuY3Rpb24gY2FsbC4gVGhpcyBjb3VsZCBjb25jZWl2YWJseSBmYWlsXG4gIC8vIGlmIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZm9yYmlkcyB1c2luZyBGdW5jdGlvbiwgYnV0IGluIHRoYXQgY2FzZVxuICAvLyB0aGUgcHJvcGVyIHNvbHV0aW9uIGlzIHRvIGZpeCB0aGUgYWNjaWRlbnRhbCBzdHJpY3QgbW9kZSBwcm9ibGVtLiBJZlxuICAvLyB5b3UndmUgbWlzY29uZmlndXJlZCB5b3VyIGJ1bmRsZXIgdG8gZm9yY2Ugc3RyaWN0IG1vZGUgYW5kIGFwcGxpZWQgYVxuICAvLyBDU1AgdG8gZm9yYmlkIEZ1bmN0aW9uLCBhbmQgeW91J3JlIG5vdCB3aWxsaW5nIHRvIGZpeCBlaXRoZXIgb2YgdGhvc2VcbiAgLy8gcHJvYmxlbXMsIHBsZWFzZSBkZXRhaWwgeW91ciB1bmlxdWUgcHJlZGljYW1lbnQgaW4gYSBHaXRIdWIgaXNzdWUuXG4gIEZ1bmN0aW9uKFwiclwiLCBcInJlZ2VuZXJhdG9yUnVudGltZSA9IHJcIikocnVudGltZSk7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCJ2YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGFycmF5SW5kZXhPZiA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykoZmFsc2UpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSBpZiAoa2V5ICE9IElFX1BST1RPKSBoYXMoTywga2V5KSAmJiByZXN1bHQucHVzaChrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmFycmF5SW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcmVzdWx0LnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApID8gT2JqZWN0IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcbn07XG4iLCIvLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZGVmaW5lLXByb3BlcnR5XCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwiJ3VzZSBzdHJpY3QnO1xudmFyICRhdCA9IHJlcXVpcmUoJy4vX3N0cmluZy1hdCcpKHRydWUpO1xuXG4vLyAyMS4xLjMuMjcgU3RyaW5nLnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKFN0cmluZywgJ1N0cmluZycsIGZ1bmN0aW9uIChpdGVyYXRlZCkge1xuICB0aGlzLl90ID0gU3RyaW5nKGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4vLyAyMS4xLjUuMi4xICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGluZGV4ID0gdGhpcy5faTtcbiAgdmFyIHBvaW50O1xuICBpZiAoaW5kZXggPj0gTy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgcG9pbnQgPSAkYXQoTywgaW5kZXgpO1xuICB0aGlzLl9pICs9IHBvaW50Lmxlbmd0aDtcbiAgcmV0dXJuIHsgdmFsdWU6IHBvaW50LCBkb25lOiBmYWxzZSB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgJGl0ZXJDcmVhdGUgPSByZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEJVR0dZID0gIShbXS5rZXlzICYmICduZXh0JyBpbiBbXS5rZXlzKCkpOyAvLyBTYWZhcmkgaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG52YXIgRkZfSVRFUkFUT1IgPSAnQEBpdGVyYXRvcic7XG52YXIgS0VZUyA9ICdrZXlzJztcbnZhciBWQUxVRVMgPSAndmFsdWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChCYXNlLCBOQU1FLCBDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpIHtcbiAgJGl0ZXJDcmVhdGUoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuICB2YXIgZ2V0TWV0aG9kID0gZnVuY3Rpb24gKGtpbmQpIHtcbiAgICBpZiAoIUJVR0dZICYmIGtpbmQgaW4gcHJvdG8pIHJldHVybiBwcm90b1traW5kXTtcbiAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICB9IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICB9O1xuICB2YXIgVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICB2YXIgREVGX1ZBTFVFUyA9IERFRkFVTFQgPT0gVkFMVUVTO1xuICB2YXIgVkFMVUVTX0JVRyA9IGZhbHNlO1xuICB2YXIgcHJvdG8gPSBCYXNlLnByb3RvdHlwZTtcbiAgdmFyICRuYXRpdmUgPSBwcm90b1tJVEVSQVRPUl0gfHwgcHJvdG9bRkZfSVRFUkFUT1JdIHx8IERFRkFVTFQgJiYgcHJvdG9bREVGQVVMVF07XG4gIHZhciAkZGVmYXVsdCA9ICRuYXRpdmUgfHwgZ2V0TWV0aG9kKERFRkFVTFQpO1xuICB2YXIgJGVudHJpZXMgPSBERUZBVUxUID8gIURFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZCgnZW50cmllcycpIDogdW5kZWZpbmVkO1xuICB2YXIgJGFueU5hdGl2ZSA9IE5BTUUgPT0gJ0FycmF5JyA/IHByb3RvLmVudHJpZXMgfHwgJG5hdGl2ZSA6ICRuYXRpdmU7XG4gIHZhciBtZXRob2RzLCBrZXksIEl0ZXJhdG9yUHJvdG90eXBlO1xuICAvLyBGaXggbmF0aXZlXG4gIGlmICgkYW55TmF0aXZlKSB7XG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZigkYW55TmF0aXZlLmNhbGwobmV3IEJhc2UoKSkpO1xuICAgIGlmIChJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBJdGVyYXRvclByb3RvdHlwZS5uZXh0KSB7XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvclByb3RvdHlwZSwgVEFHLCB0cnVlKTtcbiAgICAgIC8vIGZpeCBmb3Igc29tZSBvbGQgZW5naW5lc1xuICAgICAgaWYgKCFMSUJSQVJZICYmIHR5cGVvZiBJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0gIT0gJ2Z1bmN0aW9uJykgaGlkZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgIH1cbiAgfVxuICAvLyBmaXggQXJyYXkje3ZhbHVlcywgQEBpdGVyYXRvcn0ubmFtZSBpbiBWOCAvIEZGXG4gIGlmIChERUZfVkFMVUVTICYmICRuYXRpdmUgJiYgJG5hdGl2ZS5uYW1lICE9PSBWQUxVRVMpIHtcbiAgICBWQUxVRVNfQlVHID0gdHJ1ZTtcbiAgICAkZGVmYXVsdCA9IGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuICRuYXRpdmUuY2FsbCh0aGlzKTsgfTtcbiAgfVxuICAvLyBEZWZpbmUgaXRlcmF0b3JcbiAgaWYgKCghTElCUkFSWSB8fCBGT1JDRUQpICYmIChCVUdHWSB8fCBWQUxVRVNfQlVHIHx8ICFwcm90b1tJVEVSQVRPUl0pKSB7XG4gICAgaGlkZShwcm90bywgSVRFUkFUT1IsICRkZWZhdWx0KTtcbiAgfVxuICAvLyBQbHVnIGZvciBsaWJyYXJ5XG4gIEl0ZXJhdG9yc1tOQU1FXSA9ICRkZWZhdWx0O1xuICBJdGVyYXRvcnNbVEFHXSA9IHJldHVyblRoaXM7XG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChLRVlTKSxcbiAgICAgIGVudHJpZXM6ICRlbnRyaWVzXG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSBmb3IgKGtleSBpbiBtZXRob2RzKSB7XG4gICAgICBpZiAoIShrZXkgaW4gcHJvdG8pKSByZWRlZmluZShwcm90bywga2V5LCBtZXRob2RzW2tleV0pO1xuICAgIH0gZWxzZSAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChCVUdHWSB8fCBWQUxVRVNfQlVHKSwgTkFNRSwgbWV0aG9kcyk7XG4gIH1cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7XG4iLCIvLyAxOS4xLjIuNyAvIDE1LjIuMy40IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJykuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICByZXR1cm4gJGtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwidmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciBnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZ09QRChPLCBQKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGFyciwgb2JqKXtcbiAgaWYgKGFyci5pbmRleE9mKSByZXR1cm4gYXJyLmluZGV4T2Yob2JqKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoYXJyW2ldID09PSBvYmopIHJldHVybiBpO1xuICB9XG4gIHJldHVybiAtMTtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLndhcm5pbmcgPSB3YXJuaW5nO1xuZXhwb3J0cy5ub3RlID0gbm90ZTtcbmV4cG9ydHMucmVzZXRXYXJuZWQgPSByZXNldFdhcm5lZDtcbmV4cG9ydHMuY2FsbCA9IGNhbGw7XG5leHBvcnRzLndhcm5pbmdPbmNlID0gd2FybmluZ09uY2U7XG5leHBvcnRzLm5vdGVPbmNlID0gbm90ZU9uY2U7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbnZhciB3YXJuZWQgPSB7fTtcblxuZnVuY3Rpb24gd2FybmluZyh2YWxpZCwgbWVzc2FnZSkge1xuICAvLyBTdXBwb3J0IHVnbGlmeVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdmFsaWQgJiYgY29uc29sZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc29sZS5lcnJvcihcIldhcm5pbmc6IFwiLmNvbmNhdChtZXNzYWdlKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbm90ZSh2YWxpZCwgbWVzc2FnZSkge1xuICAvLyBTdXBwb3J0IHVnbGlmeVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdmFsaWQgJiYgY29uc29sZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc29sZS53YXJuKFwiTm90ZTogXCIuY29uY2F0KG1lc3NhZ2UpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNldFdhcm5lZCgpIHtcbiAgd2FybmVkID0ge307XG59XG5cbmZ1bmN0aW9uIGNhbGwobWV0aG9kLCB2YWxpZCwgbWVzc2FnZSkge1xuICBpZiAoIXZhbGlkICYmICF3YXJuZWRbbWVzc2FnZV0pIHtcbiAgICBtZXRob2QoZmFsc2UsIG1lc3NhZ2UpO1xuICAgIHdhcm5lZFttZXNzYWdlXSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gd2FybmluZ09uY2UodmFsaWQsIG1lc3NhZ2UpIHtcbiAgY2FsbCh3YXJuaW5nLCB2YWxpZCwgbWVzc2FnZSk7XG59XG5cbmZ1bmN0aW9uIG5vdGVPbmNlKHZhbGlkLCBtZXNzYWdlKSB7XG4gIGNhbGwobm90ZSwgdmFsaWQsIG1lc3NhZ2UpO1xufVxuXG52YXIgX2RlZmF1bHQgPSB3YXJuaW5nT25jZTtcbi8qIGVzbGludC1lbmFibGUgKi9cblxuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9lbl9VUyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXBhZ2luYXRpb24vbGliL2xvY2FsZS9lbl9VU1wiKSk7XG5cbnZhciBfZW5fVVMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZGF0ZS1waWNrZXIvbG9jYWxlL2VuX1VTXCIpKTtcblxudmFyIF9lbl9VUzMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi90aW1lLXBpY2tlci9sb2NhbGUvZW5fVVNcIikpO1xuXG52YXIgX2VuX1VTNCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2NhbGVuZGFyL2xvY2FsZS9lbl9VU1wiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG52YXIgX2RlZmF1bHQgPSB7XG4gIGxvY2FsZTogJ2VuJyxcbiAgUGFnaW5hdGlvbjogX2VuX1VTW1wiZGVmYXVsdFwiXSxcbiAgRGF0ZVBpY2tlcjogX2VuX1VTMltcImRlZmF1bHRcIl0sXG4gIFRpbWVQaWNrZXI6IF9lbl9VUzNbXCJkZWZhdWx0XCJdLFxuICBDYWxlbmRhcjogX2VuX1VTNFtcImRlZmF1bHRcIl0sXG4gIGdsb2JhbDoge1xuICAgIHBsYWNlaG9sZGVyOiAnUGxlYXNlIHNlbGVjdCdcbiAgfSxcbiAgVGFibGU6IHtcbiAgICBmaWx0ZXJUaXRsZTogJ0ZpbHRlciBtZW51JyxcbiAgICBmaWx0ZXJDb25maXJtOiAnT0snLFxuICAgIGZpbHRlclJlc2V0OiAnUmVzZXQnLFxuICAgIHNlbGVjdEFsbDogJ1NlbGVjdCBjdXJyZW50IHBhZ2UnLFxuICAgIHNlbGVjdEludmVydDogJ0ludmVydCBjdXJyZW50IHBhZ2UnLFxuICAgIHNvcnRUaXRsZTogJ1NvcnQnLFxuICAgIGV4cGFuZDogJ0V4cGFuZCByb3cnLFxuICAgIGNvbGxhcHNlOiAnQ29sbGFwc2Ugcm93J1xuICB9LFxuICBNb2RhbDoge1xuICAgIG9rVGV4dDogJ09LJyxcbiAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJyxcbiAgICBqdXN0T2tUZXh0OiAnT0snXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ0NhbmNlbCdcbiAgfSxcbiAgVHJhbnNmZXI6IHtcbiAgICB0aXRsZXM6IFsnJywgJyddLFxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIGhlcmUnLFxuICAgIGl0ZW1Vbml0OiAnaXRlbScsXG4gICAgaXRlbXNVbml0OiAnaXRlbXMnXG4gIH0sXG4gIFVwbG9hZDoge1xuICAgIHVwbG9hZGluZzogJ1VwbG9hZGluZy4uLicsXG4gICAgcmVtb3ZlRmlsZTogJ1JlbW92ZSBmaWxlJyxcbiAgICB1cGxvYWRFcnJvcjogJ1VwbG9hZCBlcnJvcicsXG4gICAgcHJldmlld0ZpbGU6ICdQcmV2aWV3IGZpbGUnLFxuICAgIGRvd25sb2FkRmlsZTogJ0Rvd25sb2FkIGZpbGUnXG4gIH0sXG4gIEVtcHR5OiB7XG4gICAgZGVzY3JpcHRpb246ICdObyBEYXRhJ1xuICB9LFxuICBJY29uOiB7XG4gICAgaWNvbjogJ2ljb24nXG4gIH0sXG4gIFRleHQ6IHtcbiAgICBlZGl0OiAnRWRpdCcsXG4gICAgY29weTogJ0NvcHknLFxuICAgIGNvcGllZDogJ0NvcGllZCcsXG4gICAgZXhwYW5kOiAnRXhwYW5kJ1xuICB9LFxuICBQYWdlSGVhZGVyOiB7XG4gICAgYmFjazogJ0JhY2snXG4gIH1cbn07XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfZW5fVVMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYy1jYWxlbmRhci9saWIvbG9jYWxlL2VuX1VTXCIpKTtcblxudmFyIF9lbl9VUzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi90aW1lLXBpY2tlci9sb2NhbGUvZW5fVVNcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuLy8gTWVyZ2UgaW50byBhIGxvY2FsZSBvYmplY3RcbnZhciBsb2NhbGUgPSB7XG4gIGxhbmc6IF9leHRlbmRzKHtcbiAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBkYXRlJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ1N0YXJ0IGRhdGUnLCAnRW5kIGRhdGUnXVxuICB9LCBfZW5fVVNbXCJkZWZhdWx0XCJdKSxcbiAgdGltZVBpY2tlckxvY2FsZTogX2V4dGVuZHMoe30sIF9lbl9VUzJbXCJkZWZhdWx0XCJdKVxufTsgLy8gQWxsIHNldHRpbmdzIGF0OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9ibG9iL21hc3Rlci9jb21wb25lbnRzL2RhdGUtcGlja2VyL2xvY2FsZS9leGFtcGxlLmpzb25cblxudmFyIF9kZWZhdWx0ID0gbG9jYWxlO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xudmFyIGxvY2FsZSA9IHtcbiAgcGxhY2Vob2xkZXI6ICdTZWxlY3QgdGltZSdcbn07XG52YXIgX2RlZmF1bHQgPSBsb2NhbGU7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBZnJpa2FhbnMgW2FmXVxuLy8hIGF1dGhvciA6IFdlcm5lciBNb2xsZW50emUgOiBodHRwczovL2dpdGh1Yi5jb20vd2VybmVybVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGFmID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYWYnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcmllX0ZlYnJ1YXJpZV9NYWFydF9BcHJpbF9NZWlfSnVuaWVfSnVsaWVfQXVndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVzZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NcnRfQXByX01laV9KdW5fSnVsX0F1Z19TZXBfT2t0X05vdl9EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU29uZGFnX01hYW5kYWdfRGluc2RhZ19Xb2Vuc2RhZ19Eb25kZXJkYWdfVnJ5ZGFnX1NhdGVyZGFnJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU29uX01hYV9EaW5fV29lX0Rvbl9WcnlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1NvX01hX0RpX1dvX0RvX1ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvdm18bm0vaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL15ubSQvaS50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICd2bScgOiAnVk0nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdubScgOiAnTk0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1ZhbmRhZyBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tNw7RyZSBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tHaXN0ZXIgb21dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0xhYXNdIGRkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ29vciAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgZ2VsZWRlJyxcbiAgICAgICAgICAgIHM6IFwiJ24gcGFhciBzZWtvbmRlc1wiLFxuICAgICAgICAgICAgc3M6ICclZCBzZWtvbmRlcycsXG4gICAgICAgICAgICBtOiBcIiduIG1pbnV1dFwiLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGUnLFxuICAgICAgICAgICAgaDogXCInbiB1dXJcIixcbiAgICAgICAgICAgIGhoOiAnJWQgdXJlJyxcbiAgICAgICAgICAgIGQ6IFwiJ24gZGFnXCIsXG4gICAgICAgICAgICBkZDogJyVkIGRhZScsXG4gICAgICAgICAgICBNOiBcIiduIG1hYW5kXCIsXG4gICAgICAgICAgICBNTTogJyVkIG1hYW5kZScsXG4gICAgICAgICAgICB5OiBcIiduIGphYXJcIixcbiAgICAgICAgICAgIHl5OiAnJWQgamFhcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdGV8ZGUpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBudW1iZXIgK1xuICAgICAgICAgICAgICAgIChudW1iZXIgPT09IDEgfHwgbnVtYmVyID09PSA4IHx8IG51bWJlciA+PSAyMCA/ICdzdGUnIDogJ2RlJylcbiAgICAgICAgICAgICk7IC8vIFRoYW5rcyB0byBKb3JpcyBSw7ZsaW5nIDogaHR0cHM6Ly9naXRodWIuY29tL2pqdXBpdGVyXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTWFhbmRhZyBpcyBkaWUgZWVyc3RlIGRhZyB2YW4gZGllIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIERpZSB3ZWVrIHdhdCBkaWUgNGRlIEphbnVhcmllIGJldmF0IGlzIGRpZSBlZXJzdGUgd2VlayB2YW4gZGllIGphYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYWY7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQXJhYmljIFthcl1cbi8vISBhdXRob3IgOiBBYmRlbCBTYWlkOiBodHRwczovL2dpdGh1Yi5jb20vYWJkZWxzYWlkXG4vLyEgYXV0aG9yIDogQWhtZWQgRWxraGF0aWJcbi8vISBhdXRob3IgOiBmb3JhYmkgaHR0cHM6Ly9naXRodWIuY29tL2ZvcmFiaVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgICcxJzogJ9mhJyxcbiAgICAgICAgICAgICcyJzogJ9miJyxcbiAgICAgICAgICAgICczJzogJ9mjJyxcbiAgICAgICAgICAgICc0JzogJ9mkJyxcbiAgICAgICAgICAgICc1JzogJ9mlJyxcbiAgICAgICAgICAgICc2JzogJ9mmJyxcbiAgICAgICAgICAgICc3JzogJ9mnJyxcbiAgICAgICAgICAgICc4JzogJ9moJyxcbiAgICAgICAgICAgICc5JzogJ9mpJyxcbiAgICAgICAgICAgICcwJzogJ9mgJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ9mhJzogJzEnLFxuICAgICAgICAgICAgJ9miJzogJzInLFxuICAgICAgICAgICAgJ9mjJzogJzMnLFxuICAgICAgICAgICAgJ9mkJzogJzQnLFxuICAgICAgICAgICAgJ9mlJzogJzUnLFxuICAgICAgICAgICAgJ9mmJzogJzYnLFxuICAgICAgICAgICAgJ9mnJzogJzcnLFxuICAgICAgICAgICAgJ9moJzogJzgnLFxuICAgICAgICAgICAgJ9mpJzogJzknLFxuICAgICAgICAgICAgJ9mgJzogJzAnLFxuICAgICAgICB9LFxuICAgICAgICBwbHVyYWxGb3JtID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgIHJldHVybiBuID09PSAwXG4gICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgOiBuID09PSAxXG4gICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgOiBuID09PSAyXG4gICAgICAgICAgICAgICAgPyAyXG4gICAgICAgICAgICAgICAgOiBuICUgMTAwID49IDMgJiYgbiAlIDEwMCA8PSAxMFxuICAgICAgICAgICAgICAgID8gM1xuICAgICAgICAgICAgICAgIDogbiAlIDEwMCA+PSAxMVxuICAgICAgICAgICAgICAgID8gNFxuICAgICAgICAgICAgICAgIDogNTtcbiAgICAgICAgfSxcbiAgICAgICAgcGx1cmFscyA9IHtcbiAgICAgICAgICAgIHM6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICAgICAgJ9ir2KfZhtmK2Kkg2YjYp9it2K/YqScsXG4gICAgICAgICAgICAgICAgWyfYq9in2YbZitiq2KfZhicsICfYq9in2YbZitiq2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYq9mI2KfZhicsXG4gICAgICAgICAgICAgICAgJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgICAgICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINiv2YLZitmC2KknLFxuICAgICAgICAgICAgICAgICfYr9mC2YrZgtipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2K/ZgtmK2YLYqtin2YYnLCAn2K/ZgtmK2YLYqtmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICAgICAgJyVkINiv2YLZitmC2KknLFxuICAgICAgICAgICAgICAgICclZCDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBoOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINiz2KfYudipJyxcbiAgICAgICAgICAgICAgICAn2LPYp9i52Kkg2YjYp9it2K/YqScsXG4gICAgICAgICAgICAgICAgWyfYs9in2LnYqtin2YYnLCAn2LPYp9i52KrZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYqScsXG4gICAgICAgICAgICAgICAgJyVkINiz2KfYudipJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBkOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINmK2YjZhScsXG4gICAgICAgICAgICAgICAgJ9mK2YjZhSDZiNin2K3YrycsXG4gICAgICAgICAgICAgICAgWyfZitmI2YXYp9mGJywgJ9mK2YjZhdmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgICAgICclZCDZitmI2YXZi9inJyxcbiAgICAgICAgICAgICAgICAnJWQg2YrZiNmFJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBNOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINi02YfYsScsXG4gICAgICAgICAgICAgICAgJ9i02YfYsSDZiNin2K3YrycsXG4gICAgICAgICAgICAgICAgWyfYtNmH2LHYp9mGJywgJ9i02YfYsdmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgICAgICclZCDYtNmH2LHYpycsXG4gICAgICAgICAgICAgICAgJyVkINi02YfYsScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgeTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYudin2YUnLFxuICAgICAgICAgICAgICAgICfYudin2YUg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2LnYp9mF2KfZhicsICfYudin2YXZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2LnZiNin2YUnLFxuICAgICAgICAgICAgICAgICclZCDYudin2YXZi9inJyxcbiAgICAgICAgICAgICAgICAnJWQg2LnYp9mFJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHBsdXJhbGl6ZSA9IGZ1bmN0aW9uICh1KSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgIHZhciBmID0gcGx1cmFsRm9ybShudW1iZXIpLFxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBwbHVyYWxzW3VdW3BsdXJhbEZvcm0obnVtYmVyKV07XG4gICAgICAgICAgICAgICAgaWYgKGYgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gc3RyW3dpdGhvdXRTdWZmaXggPyAwIDogMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRocyA9IFtcbiAgICAgICAgICAgICfZitmG2KfZitixJyxcbiAgICAgICAgICAgICfZgdio2LHYp9mK2LEnLFxuICAgICAgICAgICAgJ9mF2KfYsdizJyxcbiAgICAgICAgICAgICfYo9io2LHZitmEJyxcbiAgICAgICAgICAgICfZhdin2YrZiCcsXG4gICAgICAgICAgICAn2YrZiNmG2YrZiCcsXG4gICAgICAgICAgICAn2YrZiNmE2YrZiCcsXG4gICAgICAgICAgICAn2KPYutiz2LfYsycsXG4gICAgICAgICAgICAn2LPYqNiq2YXYqNixJyxcbiAgICAgICAgICAgICfYo9mD2KrZiNio2LEnLFxuICAgICAgICAgICAgJ9mG2YjZgdmF2KjYsScsXG4gICAgICAgICAgICAn2K/Zitiz2YXYqNixJyxcbiAgICAgICAgXTtcblxuICAgIHZhciBhciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyJywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnRC9cXHUyMDBGTS9cXHUyMDBGWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i1fNmFLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9mL2Kcg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn2KjYudivICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBzczogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBtOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIG1tOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIGg6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgaGg6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgZDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBkZDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBNOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIE1NOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIHk6IHBsdXJhbGl6ZSgneScpLFxuICAgICAgICAgICAgeXk6IHBsdXJhbGl6ZSgneScpLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9b2aHZotmj2aTZpdmm2afZqNmp2aBdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiAxMiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBcmFiaWMgKEFsZ2VyaWEpIFthci1kel1cbi8vISBhdXRob3IgOiBBbWluZSBSb3VraDogaHR0cHM6Ly9naXRodWIuY29tL0FtaW5lMjdcbi8vISBhdXRob3IgOiBBYmRlbCBTYWlkOiBodHRwczovL2dpdGh1Yi5jb20vYWJkZWxzYWlkXG4vLyEgYXV0aG9yIDogQWhtZWQgRWxraGF0aWJcbi8vISBhdXRob3IgOiBmb3JhYmkgaHR0cHM6Ly9naXRodWIuY29tL2ZvcmFiaVxuLy8hIGF1dGhvciA6IE5vdXJlZGRpbmUgTE9VQUhFREogOiBodHRwczovL2dpdGh1Yi5jb20vbm91cmVkZGluZW1cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBwbHVyYWxGb3JtID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgIHJldHVybiBuID09PSAwXG4gICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgOiBuID09PSAxXG4gICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgOiBuID09PSAyXG4gICAgICAgICAgICAgICAgPyAyXG4gICAgICAgICAgICAgICAgOiBuICUgMTAwID49IDMgJiYgbiAlIDEwMCA8PSAxMFxuICAgICAgICAgICAgICAgID8gM1xuICAgICAgICAgICAgICAgIDogbiAlIDEwMCA+PSAxMVxuICAgICAgICAgICAgICAgID8gNFxuICAgICAgICAgICAgICAgIDogNTtcbiAgICAgICAgfSxcbiAgICAgICAgcGx1cmFscyA9IHtcbiAgICAgICAgICAgIHM6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICAgICAgJ9ir2KfZhtmK2Kkg2YjYp9it2K/YqScsXG4gICAgICAgICAgICAgICAgWyfYq9in2YbZitiq2KfZhicsICfYq9in2YbZitiq2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYq9mI2KfZhicsXG4gICAgICAgICAgICAgICAgJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgICAgICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINiv2YLZitmC2KknLFxuICAgICAgICAgICAgICAgICfYr9mC2YrZgtipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2K/ZgtmK2YLYqtin2YYnLCAn2K/ZgtmK2YLYqtmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICAgICAgJyVkINiv2YLZitmC2KknLFxuICAgICAgICAgICAgICAgICclZCDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBoOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINiz2KfYudipJyxcbiAgICAgICAgICAgICAgICAn2LPYp9i52Kkg2YjYp9it2K/YqScsXG4gICAgICAgICAgICAgICAgWyfYs9in2LnYqtin2YYnLCAn2LPYp9i52KrZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYqScsXG4gICAgICAgICAgICAgICAgJyVkINiz2KfYudipJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBkOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINmK2YjZhScsXG4gICAgICAgICAgICAgICAgJ9mK2YjZhSDZiNin2K3YrycsXG4gICAgICAgICAgICAgICAgWyfZitmI2YXYp9mGJywgJ9mK2YjZhdmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgICAgICclZCDZitmI2YXZi9inJyxcbiAgICAgICAgICAgICAgICAnJWQg2YrZiNmFJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBNOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINi02YfYsScsXG4gICAgICAgICAgICAgICAgJ9i02YfYsSDZiNin2K3YrycsXG4gICAgICAgICAgICAgICAgWyfYtNmH2LHYp9mGJywgJ9i02YfYsdmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgICAgICclZCDYtNmH2LHYpycsXG4gICAgICAgICAgICAgICAgJyVkINi02YfYsScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgeTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYudin2YUnLFxuICAgICAgICAgICAgICAgICfYudin2YUg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2LnYp9mF2KfZhicsICfYudin2YXZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2LnZiNin2YUnLFxuICAgICAgICAgICAgICAgICclZCDYudin2YXZi9inJyxcbiAgICAgICAgICAgICAgICAnJWQg2LnYp9mFJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHBsdXJhbGl6ZSA9IGZ1bmN0aW9uICh1KSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgIHZhciBmID0gcGx1cmFsRm9ybShudW1iZXIpLFxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBwbHVyYWxzW3VdW3BsdXJhbEZvcm0obnVtYmVyKV07XG4gICAgICAgICAgICAgICAgaWYgKGYgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gc3RyW3dpdGhvdXRTdWZmaXggPyAwIDogMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRocyA9IFtcbiAgICAgICAgICAgICfYrNin2YbZgdmKJyxcbiAgICAgICAgICAgICfZgdmK2YHYsdmKJyxcbiAgICAgICAgICAgICfZhdin2LHYsycsXG4gICAgICAgICAgICAn2KPZgdix2YrZhCcsXG4gICAgICAgICAgICAn2YXYp9mKJyxcbiAgICAgICAgICAgICfYrNmI2KfZhicsXG4gICAgICAgICAgICAn2KzZiNmK2YTZitipJyxcbiAgICAgICAgICAgICfYo9mI2KonLFxuICAgICAgICAgICAgJ9iz2KjYqtmF2KjYsScsXG4gICAgICAgICAgICAn2KPZg9iq2YjYqNixJyxcbiAgICAgICAgICAgICfZhtmI2YHZhdio2LEnLFxuICAgICAgICAgICAgJ9iv2YrYs9mF2KjYsScsXG4gICAgICAgIF07XG5cbiAgICB2YXIgYXJEeiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLWR6Jywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnRC9cXHUyMDBGTS9cXHUyMDBGWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i1fNmFLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9mL2Kcg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn2KjYudivICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBzczogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBtOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIG1tOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIGg6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgaGg6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgZDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBkZDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBNOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIE1NOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIHk6IHBsdXJhbGl6ZSgneScpLFxuICAgICAgICAgICAgeXk6IHBsdXJhbGl6ZSgneScpLFxuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhckR6O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFyYWJpYyAoS3V3YWl0KSBbYXIta3ddXG4vLyEgYXV0aG9yIDogTnVzcmV0IFBhcmxhazogaHR0cHM6Ly9naXRodWIuY29tL251c3JldHBhcmxha1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGFyS3cgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1rdycsIHtcbiAgICAgICAgbW9udGhzOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZil/ZitmI2YbZitmIX9mK2YjZhNmK2YjYsl/Yuti02Kpf2LTYqtmG2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmG2KjYsV/Yr9is2YbYqNixJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ9in2YTYo9it2K9f2KfZhNil2KrZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9in2K3Yr1/Yp9iq2YbZitmGX9ir2YTYp9ir2KfYoV/Yp9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9mB2YogJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3M6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG06ICfYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIG1tOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGg6ICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgIGQ6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQ6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNOiAn2LTZh9ixJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeTogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eTogJyVkINiz2YbZiNin2KonLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiAxMiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhckt3O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFyYWJpYyAoTHliaWEpIFthci1seV1cbi8vISBhdXRob3IgOiBBbGkgSG1lcjogaHR0cHM6Ly9naXRodWIuY29tL2tpa29hbmlzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgJzEnOiAnMScsXG4gICAgICAgICAgICAnMic6ICcyJyxcbiAgICAgICAgICAgICczJzogJzMnLFxuICAgICAgICAgICAgJzQnOiAnNCcsXG4gICAgICAgICAgICAnNSc6ICc1JyxcbiAgICAgICAgICAgICc2JzogJzYnLFxuICAgICAgICAgICAgJzcnOiAnNycsXG4gICAgICAgICAgICAnOCc6ICc4JyxcbiAgICAgICAgICAgICc5JzogJzknLFxuICAgICAgICAgICAgJzAnOiAnMCcsXG4gICAgICAgIH0sXG4gICAgICAgIHBsdXJhbEZvcm0gPSBmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgcmV0dXJuIG4gPT09IDBcbiAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICA6IG4gPT09IDFcbiAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICA6IG4gPT09IDJcbiAgICAgICAgICAgICAgICA/IDJcbiAgICAgICAgICAgICAgICA6IG4gJSAxMDAgPj0gMyAmJiBuICUgMTAwIDw9IDEwXG4gICAgICAgICAgICAgICAgPyAzXG4gICAgICAgICAgICAgICAgOiBuICUgMTAwID49IDExXG4gICAgICAgICAgICAgICAgPyA0XG4gICAgICAgICAgICAgICAgOiA1O1xuICAgICAgICB9LFxuICAgICAgICBwbHVyYWxzID0ge1xuICAgICAgICAgICAgczogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYq9in2YbZitipJyxcbiAgICAgICAgICAgICAgICAn2KvYp9mG2YrYqSDZiNin2K3Yr9ipJyxcbiAgICAgICAgICAgICAgICBbJ9ir2KfZhtmK2KrYp9mGJywgJ9ir2KfZhtmK2KrZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINir2YjYp9mGJyxcbiAgICAgICAgICAgICAgICAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICAgICAgJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG06IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICAgICAgJ9iv2YLZitmC2Kkg2YjYp9it2K/YqScsXG4gICAgICAgICAgICAgICAgWyfYr9mC2YrZgtiq2KfZhicsICfYr9mC2YrZgtiq2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYr9mC2KfYptmCJyxcbiAgICAgICAgICAgICAgICAnJWQg2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICAgICAgJyVkINiv2YLZitmC2KknLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2LPYp9i52KknLFxuICAgICAgICAgICAgICAgICfYs9in2LnYqSDZiNin2K3Yr9ipJyxcbiAgICAgICAgICAgICAgICBbJ9iz2KfYudiq2KfZhicsICfYs9in2LnYqtmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICAgICAgJyVkINiz2KfYudipJyxcbiAgICAgICAgICAgICAgICAnJWQg2LPYp9i52KknLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGQ6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2YrZiNmFJyxcbiAgICAgICAgICAgICAgICAn2YrZiNmFINmI2KfYrdivJyxcbiAgICAgICAgICAgICAgICBbJ9mK2YjZhdin2YYnLCAn2YrZiNmF2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICAgICAgJyVkINmK2YjZhdmL2KcnLFxuICAgICAgICAgICAgICAgICclZCDZitmI2YUnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIE06IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2LTZh9ixJyxcbiAgICAgICAgICAgICAgICAn2LTZh9ixINmI2KfYrdivJyxcbiAgICAgICAgICAgICAgICBbJ9i02YfYsdin2YYnLCAn2LTZh9ix2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYo9i02YfYsScsXG4gICAgICAgICAgICAgICAgJyVkINi02YfYsdinJyxcbiAgICAgICAgICAgICAgICAnJWQg2LTZh9ixJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB5OiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINi52KfZhScsXG4gICAgICAgICAgICAgICAgJ9i52KfZhSDZiNin2K3YrycsXG4gICAgICAgICAgICAgICAgWyfYudin2YXYp9mGJywgJ9i52KfZhdmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KPYudmI2KfZhScsXG4gICAgICAgICAgICAgICAgJyVkINi52KfZhdmL2KcnLFxuICAgICAgICAgICAgICAgICclZCDYudin2YUnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgcGx1cmFsaXplID0gZnVuY3Rpb24gKHUpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGYgPSBwbHVyYWxGb3JtKG51bWJlciksXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IHBsdXJhbHNbdV1bcGx1cmFsRm9ybShudW1iZXIpXTtcbiAgICAgICAgICAgICAgICBpZiAoZiA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICBzdHIgPSBzdHJbd2l0aG91dFN1ZmZpeCA/IDAgOiAxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8lZC9pLCBudW1iZXIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzID0gW1xuICAgICAgICAgICAgJ9mK2YbYp9mK2LEnLFxuICAgICAgICAgICAgJ9mB2KjYsdin2YrYsScsXG4gICAgICAgICAgICAn2YXYp9ix2LMnLFxuICAgICAgICAgICAgJ9ij2KjYsdmK2YQnLFxuICAgICAgICAgICAgJ9mF2KfZitmIJyxcbiAgICAgICAgICAgICfZitmI2YbZitmIJyxcbiAgICAgICAgICAgICfZitmI2YTZitmIJyxcbiAgICAgICAgICAgICfYo9i62LPYt9izJyxcbiAgICAgICAgICAgICfYs9io2KrZhdio2LEnLFxuICAgICAgICAgICAgJ9ij2YPYqtmI2KjYsScsXG4gICAgICAgICAgICAn2YbZiNmB2YXYqNixJyxcbiAgICAgICAgICAgICfYr9mK2LPZhdio2LEnLFxuICAgICAgICBdO1xuXG4gICAgdmFyIGFyTHkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1seScsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0QvXFx1MjAwRk0vXFx1MjAwRllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YtXzZhS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mFJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/Zi9inINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9io2LnYryAlcycsXG4gICAgICAgICAgICBwYXN0OiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHM6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgc3M6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgbTogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBtbTogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBoOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGhoOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGQ6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgZGQ6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgTTogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICBNTTogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICB5OiBwbHVyYWxpemUoJ3knKSxcbiAgICAgICAgICAgIHl5OiBwbHVyYWxpemUoJ3knKSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJMeTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBcmFiaWMgKE1vcm9jY28pIFthci1tYV1cbi8vISBhdXRob3IgOiBFbEZhZGlsaSBZYXNzaW5lIDogaHR0cHM6Ly9naXRodWIuY29tL0VsRmFkaWxpWVxuLy8hIGF1dGhvciA6IEFiZGVsIFNhaWQgOiBodHRwczovL2dpdGh1Yi5jb20vYWJkZWxzYWlkXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgYXJNYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLW1hJywge1xuICAgICAgICBtb250aHM6ICfZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZil/ZitmI2YbZitmIX9mK2YjZhNmK2YjYsl/Yuti02Kpf2LTYqtmG2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmG2KjYsV/Yr9is2YbYqNixJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn2KfYrdivX9in2KvZhtmK2YZf2KvZhNin2KvYp9ihX9in2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn2YHZiiAlcycsXG4gICAgICAgICAgICBwYXN0OiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHM6ICfYq9mI2KfZhicsXG4gICAgICAgICAgICBzczogJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgbTogJ9iv2YLZitmC2KknLFxuICAgICAgICAgICAgbW06ICclZCDYr9mC2KfYptmCJyxcbiAgICAgICAgICAgIGg6ICfYs9in2LnYqScsXG4gICAgICAgICAgICBoaDogJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgZDogJ9mK2YjZhScsXG4gICAgICAgICAgICBkZDogJyVkINij2YrYp9mFJyxcbiAgICAgICAgICAgIE06ICfYtNmH2LEnLFxuICAgICAgICAgICAgTU06ICclZCDYo9i02YfYsScsXG4gICAgICAgICAgICB5OiAn2LPZhtipJyxcbiAgICAgICAgICAgIHl5OiAnJWQg2LPZhtmI2KfYqicsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJNYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBcmFiaWMgKFNhdWRpIEFyYWJpYSkgW2FyLXNhXVxuLy8hIGF1dGhvciA6IFN1aGFpbCBBbGtvd2FpbGVldCA6IGh0dHBzOi8vZ2l0aHViLmNvbS94c29oXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgJzEnOiAn2aEnLFxuICAgICAgICAgICAgJzInOiAn2aInLFxuICAgICAgICAgICAgJzMnOiAn2aMnLFxuICAgICAgICAgICAgJzQnOiAn2aQnLFxuICAgICAgICAgICAgJzUnOiAn2aUnLFxuICAgICAgICAgICAgJzYnOiAn2aYnLFxuICAgICAgICAgICAgJzcnOiAn2acnLFxuICAgICAgICAgICAgJzgnOiAn2agnLFxuICAgICAgICAgICAgJzknOiAn2aknLFxuICAgICAgICAgICAgJzAnOiAn2aAnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn2aEnOiAnMScsXG4gICAgICAgICAgICAn2aInOiAnMicsXG4gICAgICAgICAgICAn2aMnOiAnMycsXG4gICAgICAgICAgICAn2aQnOiAnNCcsXG4gICAgICAgICAgICAn2aUnOiAnNScsXG4gICAgICAgICAgICAn2aYnOiAnNicsXG4gICAgICAgICAgICAn2acnOiAnNycsXG4gICAgICAgICAgICAn2agnOiAnOCcsXG4gICAgICAgICAgICAn2aknOiAnOScsXG4gICAgICAgICAgICAn2aAnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgYXJTYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLXNhJywge1xuICAgICAgICBtb250aHM6ICfZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZitmIX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiF/Yo9i62LPYt9izX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZitmIX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiF/Yo9i62LPYt9izX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i1fNmFLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9mB2YogJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3M6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG06ICfYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIG1tOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGg6ICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgIGQ6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQ6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNOiAn2LTZh9ixJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeTogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eTogJyVkINiz2YbZiNin2KonLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9b2aHZotmj2aTZpdmm2afZqNmp2aBdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyU2E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlICA6ICBBcmFiaWMgKFR1bmlzaWEpIFthci10bl1cbi8vISBhdXRob3IgOiBOYWRlciBUb3VrYWJyaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9uYWRlcmlvXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgYXJUbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLXRuJywge1xuICAgICAgICBtb250aHM6ICfYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn2KzYp9mG2YHZil/ZgdmK2YHYsdmKX9mF2KfYsdizX9ij2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mGX9is2YjZitmE2YrYqV/Yo9mI2Kpf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9ij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9mB2YogJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3M6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG06ICfYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIG1tOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGg6ICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgIGQ6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQ6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNOiAn2LTZh9ixJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeTogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eTogJyVkINiz2YbZiNin2KonLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJUbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBemVyYmFpamFuaSBbYXpdXG4vLyEgYXV0aG9yIDogdG9wY2hpeWV2IDogaHR0cHM6Ly9naXRodWIuY29tL3RvcGNoaXlldlxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN1ZmZpeGVzID0ge1xuICAgICAgICAxOiAnLWluY2knLFxuICAgICAgICA1OiAnLWluY2knLFxuICAgICAgICA4OiAnLWluY2knLFxuICAgICAgICA3MDogJy1pbmNpJyxcbiAgICAgICAgODA6ICctaW5jaScsXG4gICAgICAgIDI6ICctbmNpJyxcbiAgICAgICAgNzogJy1uY2knLFxuICAgICAgICAyMDogJy1uY2knLFxuICAgICAgICA1MDogJy1uY2knLFxuICAgICAgICAzOiAnLcO8bmPDvCcsXG4gICAgICAgIDQ6ICctw7xuY8O8JyxcbiAgICAgICAgMTAwOiAnLcO8bmPDvCcsXG4gICAgICAgIDY6ICctbmPEsScsXG4gICAgICAgIDk6ICctdW5jdScsXG4gICAgICAgIDEwOiAnLXVuY3UnLFxuICAgICAgICAzMDogJy11bmN1JyxcbiAgICAgICAgNjA6ICctxLFuY8SxJyxcbiAgICAgICAgOTA6ICctxLFuY8SxJyxcbiAgICB9O1xuXG4gICAgdmFyIGF6ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXonLCB7XG4gICAgICAgIG1vbnRoczogJ3lhbnZhcl9mZXZyYWxfbWFydF9hcHJlbF9tYXlfaXl1bl9peXVsX2F2cXVzdF9zZW50eWFicl9va3R5YWJyX25veWFicl9kZWthYnInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAneWFuX2Zldl9tYXJfYXByX21heV9peW5faXlsX2F2cV9zZW5fb2t0X25veV9kZWsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnQmF6YXJfQmF6YXIgZXJ0yZlzaV/Dh8mZcsWfyZluYsmZIGF4xZ9hbcSxX8OHyZlyxZ/JmW5iyZlfQ8O8bcmZIGF4xZ9hbcSxX0PDvG3JmV/FnsmZbmLJmScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0Jhel9CekVfw4dBeF/Dh8mZcl9DQXhfQ8O8bV/FnsmZbicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdCel9CRV/Dh0Ffw4fJmV9DQV9Dw7xfxZ7JmScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2J1Z8O8biBzYWF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3NhYmFoIHNhYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW2fJmWzJmW4gaMmZZnTJmV0gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tkw7xuyZluXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1trZcOnyZluIGjJmWZ0yZldIGRkZGQgW3NhYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMgc29ucmEnLFxuICAgICAgICAgICAgcGFzdDogJyVzIMmZdnbJmWwnLFxuICAgICAgICAgICAgczogJ2Jpcm5lw6fJmSBzYW5pecmZJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2FuaXnJmScsXG4gICAgICAgICAgICBtOiAnYmlyIGTJmXFpccmZJyxcbiAgICAgICAgICAgIG1tOiAnJWQgZMmZcWlxyZknLFxuICAgICAgICAgICAgaDogJ2JpciBzYWF0JyxcbiAgICAgICAgICAgIGhoOiAnJWQgc2FhdCcsXG4gICAgICAgICAgICBkOiAnYmlyIGfDvG4nLFxuICAgICAgICAgICAgZGQ6ICclZCBnw7xuJyxcbiAgICAgICAgICAgIE06ICdiaXIgYXknLFxuICAgICAgICAgICAgTU06ICclZCBheScsXG4gICAgICAgICAgICB5OiAnYmlyIGlsJyxcbiAgICAgICAgICAgIHl5OiAnJWQgaWwnLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZ2VjyZl8c8mZaMmZcnxnw7xuZMO8enxheMWfYW0vLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXihnw7xuZMO8enxheMWfYW0pJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2dlY8mZJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzyZloyZlyJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdnw7xuZMO8eic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnYXjFn2FtJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjEsW5jxLF8aW5jaXxuY2l8w7xuY8O8fG5jxLF8dW5jdSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciB6ZXJvXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICctxLFuY8SxJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgYiA9IChudW1iZXIgJSAxMDApIC0gYSxcbiAgICAgICAgICAgICAgICBjID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdIHx8IHN1ZmZpeGVzW2NdKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF6O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJlbGFydXNpYW4gW2JlXVxuLy8hIGF1dGhvciA6IERtaXRyeSBEZW1pZG92IDogaHR0cHM6Ly9naXRodWIuY29tL2RlbWlkb3Y5MVxuLy8hIGF1dGhvcjogUHJhbGVza2E6IGh0dHA6Ly9wcmFsZXNrYS5wcm8vXG4vLyEgQXV0aG9yIDogTWVuZWxpb24gRWxlbnPDumxlIDogaHR0cHM6Ly9naXRodWIuY29tL09pcmVcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHBsdXJhbCh3b3JkLCBudW0pIHtcbiAgICAgICAgdmFyIGZvcm1zID0gd29yZC5zcGxpdCgnXycpO1xuICAgICAgICByZXR1cm4gbnVtICUgMTAgPT09IDEgJiYgbnVtICUgMTAwICE9PSAxMVxuICAgICAgICAgICAgPyBmb3Jtc1swXVxuICAgICAgICAgICAgOiBudW0gJSAxMCA+PSAyICYmIG51bSAlIDEwIDw9IDQgJiYgKG51bSAlIDEwMCA8IDEwIHx8IG51bSAlIDEwMCA+PSAyMClcbiAgICAgICAgICAgID8gZm9ybXNbMV1cbiAgICAgICAgICAgIDogZm9ybXNbMl07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIHNzOiB3aXRob3V0U3VmZml4ID8gJ9GB0LXQutGD0L3QtNCwX9GB0LXQutGD0L3QtNGLX9GB0LXQutGD0L3QtCcgOiAn0YHQtdC60YPQvdC00YNf0YHQtdC60YPQvdC00Ytf0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIG1tOiB3aXRob3V0U3VmZml4ID8gJ9GF0LLRltC70ZbQvdCwX9GF0LLRltC70ZbQvdGLX9GF0LLRltC70ZbQvScgOiAn0YXQstGW0LvRltC90YNf0YXQstGW0LvRltC90Ytf0YXQstGW0LvRltC9JyxcbiAgICAgICAgICAgIGhoOiB3aXRob3V0U3VmZml4ID8gJ9Cz0LDQtNC30ZbQvdCwX9Cz0LDQtNC30ZbQvdGLX9Cz0LDQtNC30ZbQvScgOiAn0LPQsNC00LfRltC90YNf0LPQsNC00LfRltC90Ytf0LPQsNC00LfRltC9JyxcbiAgICAgICAgICAgIGRkOiAn0LTQt9C10L3RjF/QtNC90ZZf0LTQt9GR0L0nLFxuICAgICAgICAgICAgTU06ICfQvNC10YHRj9GGX9C80LXRgdGP0YbRi1/QvNC10YHRj9GG0LDRnicsXG4gICAgICAgICAgICB5eTogJ9Cz0L7QtF/Qs9Cw0LTRi1/Qs9Cw0LTQvtGeJyxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGtleSA9PT0gJ20nKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfRhdCy0ZbQu9GW0L3QsCcgOiAn0YXQstGW0LvRltC90YMnO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2gnKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfQs9Cw0LTQt9GW0L3QsCcgOiAn0LPQsNC00LfRltC90YMnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHBsdXJhbChmb3JtYXRba2V5XSwgK251bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYmUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdiZScsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfRgdGC0YPQtNC30LXQvdGPX9C70Y7RgtCw0LPQsF/RgdCw0LrQsNCy0ZbQutCwX9C60YDQsNGB0LDQstGW0LrQsF/RgtGA0LDRntC90Y9f0YfRjdGA0LLQtdC90Y9f0LvRltC/0LXQvdGPX9C20L3RltGe0L3Rj1/QstC10YDQsNGB0L3Rj1/QutCw0YHRgtGA0YvRh9C90ZbQutCwX9C70ZbRgdGC0LDQv9Cw0LTQsF/RgdC90LXQttC90Y8nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICfRgdGC0YPQtNC30LXQvdGMX9C70Y7RgtGLX9GB0LDQutCw0LLRltC6X9C60YDQsNGB0LDQstGW0Lpf0YLRgNCw0LLQtdC90Yxf0YfRjdGA0LLQtdC90Yxf0LvRltC/0LXQvdGMX9C20L3RltCy0LXQvdGMX9Cy0LXRgNCw0YHQtdC90Yxf0LrQsNGB0YLRgNGL0YfQvdGW0Lpf0LvRltGB0YLQsNC/0LDQtF/RgdC90LXQttCw0L3RjCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDogJ9GB0YLRg9C0X9C70Y7Rgl/RgdCw0Lpf0LrRgNCw0YFf0YLRgNCw0LJf0YfRjdGA0LJf0LvRltC/X9C20L3RltCyX9Cy0LXRgF/QutCw0YHRgl/Qu9GW0YHRgl/RgdC90LXQticuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ9C90Y/QtNC30LXQu9GOX9C/0LDQvdGP0LTQt9C10LvQsNC6X9Cw0Z7RgtC+0YDQsNC6X9GB0LXRgNCw0LTRg1/Rh9Cw0YbQstC10YBf0L/Rj9GC0L3RltGG0YNf0YHRg9Cx0L7RgtGDJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOiAn0L3Rj9C00LfQtdC70Y9f0L/QsNC90Y/QtNC30LXQu9Cw0Lpf0LDRntGC0L7RgNCw0Lpf0YHQtdGA0LDQtNCwX9GH0LDRhtCy0LXRgF/Qv9GP0YLQvdGW0YbQsF/RgdGD0LHQvtGC0LAnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvXFxbID9b0KPRg9GeXSA/KD860LzRltC90YPQu9GD0Y580L3QsNGB0YLRg9C/0L3Rg9GOKT8gP1xcXSA/ZGRkZC8sXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQvdC0X9C/0L1f0LDRgl/RgdGAX9GH0YZf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9C90LRf0L/QvV/QsNGCX9GB0YBf0YfRhl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVkg0LMuJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZINCzLiwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZINCzLiwgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQodGR0L3QvdGPINGeXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9CX0LDRntGC0YDQsCDRnl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQo9GH0L7RgNCwINGeXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW9CjXSBkZGRkIFvRnl0gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CjINC80ZbQvdGD0LvRg9GOXSBkZGRkIFvRnl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0KMg0LzRltC90YPQu9GLXSBkZGRkIFvRnl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9C/0YDQsNC3ICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDRgtCw0LzRgycsXG4gICAgICAgICAgICBzOiAn0L3QtdC60LDQu9GM0LrRliDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG1tOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGhoOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgZDogJ9C00LfQtdC90YwnLFxuICAgICAgICAgICAgZGQ6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNOiAn0LzQtdGB0Y/RhicsXG4gICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHk6ICfQs9C+0LQnLFxuICAgICAgICAgICAgeXk6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/QvdC+0YfRi3zRgNCw0L3RltGG0Yt80LTQvdGPfNCy0LXRh9Cw0YDQsC8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNC00L3Rj3zQstC10YfQsNGA0LApJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C90L7Rh9GLJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRgNCw0L3RltGG0YsnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C00L3Rjyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LLQtdGH0LDRgNCwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRlnzRi3zQs9CwKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG51bWJlciAlIDEwID09PSAyIHx8IG51bWJlciAlIDEwID09PSAzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyICUgMTAwICE9PSAxMiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyICUgMTAwICE9PSAxM1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBudW1iZXIgKyAnLdGWJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBudW1iZXIgKyAnLdGLJztcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LPQsCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJ1bGdhcmlhbiBbYmddXG4vLyEgYXV0aG9yIDogS3Jhc2VuIEJvcmlzb3YgOiBodHRwczovL2dpdGh1Yi5jb20va3JhelxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGJnID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYmcnLCB7XG4gICAgICAgIG1vbnRoczogJ9GP0L3Rg9Cw0YDQuF/RhNC10LLRgNGD0LDRgNC4X9C80LDRgNGCX9Cw0L/RgNC40Ltf0LzQsNC5X9GO0L3QuF/RjtC70Lhf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCy0YDQuF/QvtC60YLQvtC80LLRgNC4X9C90L7QtdC80LLRgNC4X9C00LXQutC10LzQstGA0LgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0Y/QvdGDX9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDQuV/RjtC90Lhf0Y7Qu9C4X9Cw0LLQs1/RgdC10L9f0L7QutGCX9C90L7QtV/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn0L3QtdC00LXQu9GPX9C/0L7QvdC10LTQtdC70L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDRj9C00LBf0YfQtdGC0LLRitGA0YLRitC6X9C/0LXRgtGK0Lpf0YHRitCx0L7RgtCwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0L3QtdC0X9C/0L7QvV/QstGC0L5f0YHRgNGPX9GH0LXRgl/Qv9C10YJf0YHRitCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9C90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnRC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9CU0L3QtdGBINCyXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9Cj0YLRgNC1INCyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9CyXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9CS0YfQtdGA0LAg0LJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQnNC40L3QsNC70LDRgtCwXSBkZGRkIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQnNC40L3QsNC70LjRj10gZGRkZCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfRgdC70LXQtCAlcycsXG4gICAgICAgICAgICBwYXN0OiAn0L/RgNC10LTQuCAlcycsXG4gICAgICAgICAgICBzOiAn0L3Rj9C60L7Qu9C60L4g0YHQtdC60YPQvdC00LgnLFxuICAgICAgICAgICAgc3M6ICclZCDRgdC10LrRg9C90LTQuCcsXG4gICAgICAgICAgICBtOiAn0LzQuNC90YPRgtCwJyxcbiAgICAgICAgICAgIG1tOiAnJWQg0LzQuNC90YPRgtC4JyxcbiAgICAgICAgICAgIGg6ICfRh9Cw0YEnLFxuICAgICAgICAgICAgaGg6ICclZCDRh9Cw0YHQsCcsXG4gICAgICAgICAgICBkOiAn0LTQtdC9JyxcbiAgICAgICAgICAgIGRkOiAnJWQg0LTQtdC90LAnLFxuICAgICAgICAgICAgTTogJ9C80LXRgdC10YYnLFxuICAgICAgICAgICAgTU06ICclZCDQvNC10YHQtdGG0LAnLFxuICAgICAgICAgICAgeTogJ9Cz0L7QtNC40L3QsCcsXG4gICAgICAgICAgICB5eTogJyVkINCz0L7QtNC40L3QuCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0LXQsnzQtdC9fNGC0Lh80LLQuHzRgNC4fNC80LgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGxhc3REaWdpdCA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGxhc3QyRGlnaXRzID0gbnVtYmVyICUgMTAwO1xuICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC10LInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0cyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC10L0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0cyA+IDEwICYmIGxhc3QyRGlnaXRzIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgtC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LLQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGA0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDcgfHwgbGFzdERpZ2l0ID09PSA4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LzQuCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGC0LgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmc7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQmFtYmFyYSBbYm1dXG4vLyEgYXV0aG9yIDogRXN0ZWxsZSBDb21tZW50IDogaHR0cHM6Ly9naXRodWIuY29tL2VzdGVsbGVjb21tZW50XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgYm0gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdibScsIHtcbiAgICAgICAgbW9udGhzOiAnWmFud3V5ZWthbG9fRmV3dXJ1eWVrYWxvX01hcmlzaWthbG9fQXdpcmlsaWthbG9fTcmba2Fsb19adXfJm25rYWxvX1p1bHV5ZWthbG9fVXRpa2Fsb19TyZt0YW5idXJ1a2Fsb1/JlGt1dMmUYnVydWthbG9fTm93YW5idXJ1a2Fsb19EZXNhbmJ1cnVrYWxvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ1phbl9GZXdfTWFyX0F3aV9NyZtfWnV3X1p1bF9VdGlfU8mbdF/JlGt1X05vd19EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnS2FyaV9OdMmbbsmbbl9UYXJhdGFfQXJhYmFfQWxhbWlzYV9KdW1hX1NpYmlyaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0thcl9OdMmbX1Rhcl9BcmFfQWxhX0p1bV9TaWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnS2FfTnRfVGFfQXJfQWxfSnVfU2knLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnTU1NTSBbdGlsZV0gRCBbc2FuXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ01NTU0gW3RpbGVdIEQgW3Nhbl0gWVlZWSBbbMmbcsmbXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBNTU1NIFt0aWxlXSBEIFtzYW5dIFlZWVkgW2zJm3LJm10gSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tCaSBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbU2luaSBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbZG9uIGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tLdW51IGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFt0yZttyZtuZW4gbMmbcsmbXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIGvJlG7JlCcsXG4gICAgICAgICAgICBwYXN0OiAnYSBiyZsgJXMgYsmUJyxcbiAgICAgICAgICAgIHM6ICdzYW5nYSBkYW1hIGRhbWEnLFxuICAgICAgICAgICAgc3M6ICdzZWtvbmRpICVkJyxcbiAgICAgICAgICAgIG06ICdtaW5pdGkga2VsZW4nLFxuICAgICAgICAgICAgbW06ICdtaW5pdGkgJWQnLFxuICAgICAgICAgICAgaDogJ2zJm3LJmyBrZWxlbicsXG4gICAgICAgICAgICBoaDogJ2zJm3LJmyAlZCcsXG4gICAgICAgICAgICBkOiAndGlsZSBrZWxlbicsXG4gICAgICAgICAgICBkZDogJ3RpbGUgJWQnLFxuICAgICAgICAgICAgTTogJ2thbG8ga2VsZW4nLFxuICAgICAgICAgICAgTU06ICdrYWxvICVkJyxcbiAgICAgICAgICAgIHk6ICdzYW4ga2VsZW4nLFxuICAgICAgICAgICAgeXk6ICdzYW4gJWQnLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm07XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQmVuZ2FsaSBbYm5dXG4vLyEgYXV0aG9yIDogS2F1c2hpayBHYW5kaGkgOiBodHRwczovL2dpdGh1Yi5jb20va2F1c2hpa2dhbmRoaVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgICcxJzogJ+CnpycsXG4gICAgICAgICAgICAnMic6ICfgp6gnLFxuICAgICAgICAgICAgJzMnOiAn4KepJyxcbiAgICAgICAgICAgICc0JzogJ+CnqicsXG4gICAgICAgICAgICAnNSc6ICfgp6snLFxuICAgICAgICAgICAgJzYnOiAn4KesJyxcbiAgICAgICAgICAgICc3JzogJ+CnrScsXG4gICAgICAgICAgICAnOCc6ICfgp64nLFxuICAgICAgICAgICAgJzknOiAn4KevJyxcbiAgICAgICAgICAgICcwJzogJ+CnpicsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgp6cnOiAnMScsXG4gICAgICAgICAgICAn4KeoJzogJzInLFxuICAgICAgICAgICAgJ+CnqSc6ICczJyxcbiAgICAgICAgICAgICfgp6onOiAnNCcsXG4gICAgICAgICAgICAn4KerJzogJzUnLFxuICAgICAgICAgICAgJ+CnrCc6ICc2JyxcbiAgICAgICAgICAgICfgp60nOiAnNycsXG4gICAgICAgICAgICAn4KeuJzogJzgnLFxuICAgICAgICAgICAgJ+Cnryc6ICc5JyxcbiAgICAgICAgICAgICfgp6YnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgYm4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdibicsIHtcbiAgICAgICAgbW9udGhzOiAn4Kac4Ka+4Kao4KeB4Kef4Ka+4Kaw4Ka/X+Cmq+Cnh+CmrOCnjeCmsOCngeCnn+CmvuCmsOCmv1/gpq7gpr7gprDgp43gpppf4KaP4Kaq4KeN4Kaw4Ka/4KayX+CmruCnh1/gppzgp4Hgpqhf4Kac4KeB4Kay4Ka+4KaHX+CmhuCml+CmuOCnjeCmn1/gprjgp4fgpqrgp43gpp/gp4fgpq7gp43gpqzgprBf4KaF4KaV4KeN4Kaf4KeL4Kas4KawX+CmqOCmreCnh+CmruCnjeCmrOCmsF/gpqHgpr/gprjgp4fgpq7gp43gpqzgprAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn4Kac4Ka+4Kao4KeBX+Cmq+Cnh+CmrOCnjeCmsOCngV/gpq7gpr7gprDgp43gpppf4KaP4Kaq4KeN4Kaw4Ka/4KayX+CmruCnh1/gppzgp4Hgpqhf4Kac4KeB4Kay4Ka+4KaHX+CmhuCml+CmuOCnjeCmn1/gprjgp4fgpqrgp43gpp9f4KaF4KaV4KeN4Kaf4KeLX+CmqOCmreCnh1/gpqHgpr/gprjgp4cnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn4Kaw4Kas4Ka/4Kas4Ka+4KawX+CmuOCni+CmruCmrOCmvuCmsF/gpq7gppngp43gppfgprLgpqzgpr7gprBf4Kas4KeB4Kan4Kas4Ka+4KawX+CmrOCng+CmueCmuOCnjeCmquCmpOCmv+CmrOCmvuCmsF/gprbgp4HgppXgp43gprDgpqzgpr7gprBf4Ka24Kao4Ka/4Kas4Ka+4KawJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4Kaw4Kas4Ka/X+CmuOCni+Cmrl/gpq7gppngp43gppfgprJf4Kas4KeB4KanX+CmrOCng+CmueCmuOCnjeCmquCmpOCmv1/gprbgp4HgppXgp43gprBf4Ka24Kao4Ka/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CmsOCmrOCmv1/gprjgp4vgpq5f4Kau4KaZ4KeN4KaX4KayX+CmrOCngeCmp1/gpqzgp4Pgprlf4Ka24KeB4KaV4KeN4KawX+CmtuCmqOCmvycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIOCmuOCmruCnnycsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3Mg4Ka44Kau4KefJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgprjgpq7gp58nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4Ka44Kau4KefJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KaG4KacXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CmhuCml+CmvuCmruCngOCmleCmvuCmsl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+Cml+CmpOCmleCmvuCmsl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4KaX4KakXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOCmquCmsOCnhycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4KaG4KaX4KeHJyxcbiAgICAgICAgICAgIHM6ICfgppXgp5/gp4fgppUg4Ka44KeH4KaV4KeH4Kao4KeN4KahJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Ka44KeH4KaV4KeH4Kao4KeN4KahJyxcbiAgICAgICAgICAgIG06ICfgpo/gppUg4Kau4Ka/4Kao4Ka/4KafJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4Kau4Ka/4Kao4Ka/4KafJyxcbiAgICAgICAgICAgIGg6ICfgpo/gppUg4KaY4Kao4KeN4Kaf4Ka+JyxcbiAgICAgICAgICAgIGhoOiAnJWQg4KaY4Kao4KeN4Kaf4Ka+JyxcbiAgICAgICAgICAgIGQ6ICfgpo/gppUg4Kam4Ka/4KaoJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Kam4Ka/4KaoJyxcbiAgICAgICAgICAgIE06ICfgpo/gppUg4Kau4Ka+4Ka4JyxcbiAgICAgICAgICAgIE1NOiAnJWQg4Kau4Ka+4Ka4JyxcbiAgICAgICAgICAgIHk6ICfgpo/gppUg4Kas4Kab4KawJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4Kas4Kab4KawJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Cnp+CnqOCnqeCnquCnq+CnrOCnreCnruCnr+Cnpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CmsOCmvuCmpHzgprjgppXgpr7gprJ84Kam4KeB4Kaq4KeB4KawfOCmrOCmv+CmleCmvuCmsnzgprDgpr7gpqQvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKG1lcmlkaWVtID09PSAn4Kaw4Ka+4KakJyAmJiBob3VyID49IDQpIHx8XG4gICAgICAgICAgICAgICAgKG1lcmlkaWVtID09PSAn4Kam4KeB4Kaq4KeB4KawJyAmJiBob3VyIDwgNSkgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+CmrOCmv+CmleCmvuCmsidcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgprDgpr7gpqQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmuOCmleCmvuCmsic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kam4KeB4Kaq4KeB4KawJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpqzgpr/gppXgpr7gprInO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmsOCmvuCmpCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBibjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUaWJldGFuIFtib11cbi8vISBhdXRob3IgOiBUaHVwdGVuIE4uIENoYWtyaXNoYXIgOiBodHRwczovL2dpdGh1Yi5jb20vdmFqcmFkb2dcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAnMSc6ICfgvKEnLFxuICAgICAgICAgICAgJzInOiAn4LyiJyxcbiAgICAgICAgICAgICczJzogJ+C8oycsXG4gICAgICAgICAgICAnNCc6ICfgvKQnLFxuICAgICAgICAgICAgJzUnOiAn4LylJyxcbiAgICAgICAgICAgICc2JzogJ+C8picsXG4gICAgICAgICAgICAnNyc6ICfgvKcnLFxuICAgICAgICAgICAgJzgnOiAn4LyoJyxcbiAgICAgICAgICAgICc5JzogJ+C8qScsXG4gICAgICAgICAgICAnMCc6ICfgvKAnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4LyhJzogJzEnLFxuICAgICAgICAgICAgJ+C8oic6ICcyJyxcbiAgICAgICAgICAgICfgvKMnOiAnMycsXG4gICAgICAgICAgICAn4LykJzogJzQnLFxuICAgICAgICAgICAgJ+C8pSc6ICc1JyxcbiAgICAgICAgICAgICfgvKYnOiAnNicsXG4gICAgICAgICAgICAn4LynJzogJzcnLFxuICAgICAgICAgICAgJ+C8qCc6ICc4JyxcbiAgICAgICAgICAgICfgvKknOiAnOScsXG4gICAgICAgICAgICAn4LygJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIGJvID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYm8nLCB7XG4gICAgICAgIG1vbnRoczogJ+C9n+C+s+C8i+C9luC8i+C9keC9hOC8i+C9lOC9vF/gvZ/gvrPgvIvgvZbgvIvgvYLgvYngvbLgvabgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2C4L2m4L204L2Y4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9nuC9suC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvaPgvpTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2R4L6y4L204L2C4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9keC9tOC9k+C8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvaLgvpLgvrHgvZHgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2R4L2C4L204LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9tOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXgvbTgvIvgvYLgvYXgvbLgvYLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2F4L204LyL4L2C4L2J4L2y4L2m4LyL4L2UJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ+C9n+C+s+C8izFf4L2f4L6z4LyLMl/gvZ/gvrPgvIszX+C9n+C+s+C8izRf4L2f4L6z4LyLNV/gvZ/gvrPgvIs2X+C9n+C+s+C8izdf4L2f4L6z4LyLOF/gvZ/gvrPgvIs5X+C9n+C+s+C8izEwX+C9n+C+s+C8izExX+C9n+C+s+C8izEyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiAvXijgvZ/gvrPgvItcXGR7MSwyfSkvLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ+C9guC9n+C9oOC8i+C9ieC9suC8i+C9mOC8i1/gvYLgvZ/gvaDgvIvgvZ/gvrPgvIvgvZbgvItf4L2C4L2f4L2g4LyL4L2Y4L2y4L2C4LyL4L2R4L2Y4L2i4LyLX+C9guC9n+C9oOC8i+C9o+C+t+C9guC8i+C9lOC8i1/gvYLgvZ/gvaDgvIvgvZXgvbTgvaLgvIvgvZbgvbRf4L2C4L2f4L2g4LyL4L2U4LyL4L2m4L2E4L2m4LyLX+C9guC9n+C9oOC8i+C9puC+pOC9uuC9k+C8i+C9lOC8iycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+C9ieC9suC8i+C9mOC8i1/gvZ/gvrPgvIvgvZbgvItf4L2Y4L2y4L2C4LyL4L2R4L2Y4L2i4LyLX+C9o+C+t+C9guC8i+C9lOC8i1/gvZXgvbTgvaLgvIvgvZbgvbRf4L2U4LyL4L2m4L2E4L2m4LyLX+C9puC+pOC9uuC9k+C8i+C9lOC8iycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgvYngvbJf4L2f4L6zX+C9mOC9suC9gl/gvaPgvrfgvYJf4L2V4L204L2iX+C9puC9hOC9pl/gvabgvqTgvbrgvZMnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbScsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4L2R4L2y4LyL4L2i4L2y4L2EXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+C9puC9hOC8i+C9ieC9suC9k10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb4L2W4L2R4L204L2T4LyL4L2V4L6y4L2C4LyL4L2i4L6X4L264L2m4LyL4L2YXSwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgvYHgvIvgvabgvYRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+C9luC9keC9tOC9k+C8i+C9leC+suC9guC8i+C9mOC9kOC9oOC8i+C9mF0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgvaPgvIsnLFxuICAgICAgICAgICAgcGFzdDogJyVzIOC9puC+lOC9k+C8i+C9oycsXG4gICAgICAgICAgICBzOiAn4L2j4L2Y4LyL4L2m4L2EJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4L2m4L6Q4L2i4LyL4L2G4LyNJyxcbiAgICAgICAgICAgIG06ICfgvabgvpDgvaLgvIvgvZjgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgbW06ICclZCDgvabgvpDgvaLgvIvgvZgnLFxuICAgICAgICAgICAgaDogJ+C9huC9tOC8i+C9muC9vOC9keC8i+C9guC9heC9suC9gicsXG4gICAgICAgICAgICBoaDogJyVkIOC9huC9tOC8i+C9muC9vOC9kScsXG4gICAgICAgICAgICBkOiAn4L2J4L2y4L2T4LyL4L2C4L2F4L2y4L2CJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4L2J4L2y4L2T4LyLJyxcbiAgICAgICAgICAgIE06ICfgvZ/gvrPgvIvgvZbgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgTU06ICclZCDgvZ/gvrPgvIvgvZYnLFxuICAgICAgICAgICAgeTogJ+C9o+C9vOC8i+C9guC9heC9suC9gicsXG4gICAgICAgICAgICB5eTogJyVkIOC9o+C9vCcsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgvKHgvKLgvKPgvKTgvKXgvKbgvKfgvKjgvKngvKBdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gvZjgvZrgvZPgvIvgvZjgvbx84L2e4L284L2C4L2m4LyL4L2A4L2mfOC9ieC9suC9k+C8i+C9guC9tOC9hHzgvZHgvYLgvbzgvYTgvIvgvZHgvYJ84L2Y4L2a4L2T4LyL4L2Y4L28LyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChtZXJpZGllbSA9PT0gJ+C9mOC9muC9k+C8i+C9mOC9vCcgJiYgaG91ciA+PSA0KSB8fFxuICAgICAgICAgICAgICAgIChtZXJpZGllbSA9PT0gJ+C9ieC9suC9k+C8i+C9guC9tOC9hCcgJiYgaG91ciA8IDUpIHx8XG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgvZHgvYLgvbzgvYTgvIvgvZHgvYInXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2Y4L2a4L2T4LyL4L2Y4L28JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgvZ7gvbzgvYLgvabgvIvgvYDgvaYnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C9ieC9suC9k+C8i+C9guC9tOC9hCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2R4L2C4L284L2E4LyL4L2R4L2CJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgvZjgvZrgvZPgvIvgvZjgvbwnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQnJldG9uIFticl1cbi8vISBhdXRob3IgOiBKZWFuLUJhcHRpc3RlIExlIER1aWdvdSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qYmxlZHVpZ291XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoTXV0YXRpb24obnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIG1tOiAnbXVudXRlbm4nLFxuICAgICAgICAgICAgTU06ICdtaXonLFxuICAgICAgICAgICAgZGQ6ICdkZXZlemgnLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgbXV0YXRpb24oZm9ybWF0W2tleV0sIG51bWJlcik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNwZWNpYWxNdXRhdGlvbkZvclllYXJzKG51bWJlcikge1xuICAgICAgICBzd2l0Y2ggKGxhc3ROdW1iZXIobnVtYmVyKSkge1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnIGJsb2F6JztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgdmxvYXonO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGxhc3ROdW1iZXIobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPiA5KSB7XG4gICAgICAgICAgICByZXR1cm4gbGFzdE51bWJlcihudW1iZXIgJSAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG4gICAgZnVuY3Rpb24gbXV0YXRpb24odGV4dCwgbnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgIHJldHVybiBzb2Z0TXV0YXRpb24odGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNvZnRNdXRhdGlvbih0ZXh0KSB7XG4gICAgICAgIHZhciBtdXRhdGlvblRhYmxlID0ge1xuICAgICAgICAgICAgbTogJ3YnLFxuICAgICAgICAgICAgYjogJ3YnLFxuICAgICAgICAgICAgZDogJ3onLFxuICAgICAgICB9O1xuICAgICAgICBpZiAobXV0YXRpb25UYWJsZVt0ZXh0LmNoYXJBdCgwKV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG11dGF0aW9uVGFibGVbdGV4dC5jaGFyQXQoMCldICsgdGV4dC5zdWJzdHJpbmcoMSk7XG4gICAgfVxuXG4gICAgdmFyIG1vbnRoc1BhcnNlID0gW1xuICAgICAgICAgICAgL15nZW4vaSxcbiAgICAgICAgICAgIC9eY1vKvFxcJ11od2UvaSxcbiAgICAgICAgICAgIC9ebWV1L2ksXG4gICAgICAgICAgICAvXmVici9pLFxuICAgICAgICAgICAgL15tYWUvaSxcbiAgICAgICAgICAgIC9eKG1lenxldmUpL2ksXG4gICAgICAgICAgICAvXmdvdS9pLFxuICAgICAgICAgICAgL15lb3MvaSxcbiAgICAgICAgICAgIC9eZ3dlL2ksXG4gICAgICAgICAgICAvXmhlci9pLFxuICAgICAgICAgICAgL15kdS9pLFxuICAgICAgICAgICAgL15rZXIvaSxcbiAgICAgICAgXSxcbiAgICAgICAgbW9udGhzUmVnZXggPSAvXihnZW52ZXJ8Y1vKvFxcJ11od2V2cmVyfG1ldXJ6aHxlYnJlbHxtYWV8bWV6aGV2ZW58Z291ZXJlfGVvc3R8Z3dlbmdvbG98aGVyZXxkdXxrZXJ6dXxnZW58Y1vKvFxcJ11od2V8bWV1fGVicnxtYWV8ZXZlfGdvdXxlb3N8Z3dlfGhlcnxkdXxrZXIpL2ksXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4ID0gL14oZ2VudmVyfGNbyrxcXCddaHdldnJlcnxtZXVyemh8ZWJyZWx8bWFlfG1lemhldmVufGdvdWVyZXxlb3N0fGd3ZW5nb2xvfGhlcmV8ZHV8a2VyenUpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXggPSAvXihnZW58Y1vKvFxcJ11od2V8bWV1fGVicnxtYWV8ZXZlfGdvdXxlb3N8Z3dlfGhlcnxkdXxrZXIpL2ksXG4gICAgICAgIGZ1bGxXZWVrZGF5c1BhcnNlID0gW1xuICAgICAgICAgICAgL15zdWwvaSxcbiAgICAgICAgICAgIC9ebHVuL2ksXG4gICAgICAgICAgICAvXm1ldXJ6aC9pLFxuICAgICAgICAgICAgL15tZXJjW8q8XFwnXWhlci9pLFxuICAgICAgICAgICAgL155YW91L2ksXG4gICAgICAgICAgICAvXmd3ZW5lci9pLFxuICAgICAgICAgICAgL15zYWRvcm4vaSxcbiAgICAgICAgXSxcbiAgICAgICAgc2hvcnRXZWVrZGF5c1BhcnNlID0gW1xuICAgICAgICAgICAgL15TdWwvaSxcbiAgICAgICAgICAgIC9eTHVuL2ksXG4gICAgICAgICAgICAvXk1ldS9pLFxuICAgICAgICAgICAgL15NZXIvaSxcbiAgICAgICAgICAgIC9eWWFvL2ksXG4gICAgICAgICAgICAvXkd3ZS9pLFxuICAgICAgICAgICAgL15TYWQvaSxcbiAgICAgICAgXSxcbiAgICAgICAgbWluV2Vla2RheXNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9eU3UvaSxcbiAgICAgICAgICAgIC9eTHUvaSxcbiAgICAgICAgICAgIC9eTWUoW15yXXwkKS9pLFxuICAgICAgICAgICAgL15NZXIvaSxcbiAgICAgICAgICAgIC9eWWEvaSxcbiAgICAgICAgICAgIC9eR3cvaSxcbiAgICAgICAgICAgIC9eU2EvaSxcbiAgICAgICAgXTtcblxuICAgIHZhciBiciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JyJywge1xuICAgICAgICBtb250aHM6ICdHZW52ZXJfQ8q8aHdldnJlcl9NZXVyemhfRWJyZWxfTWFlX01lemhldmVuX0dvdWVyZV9Fb3N0X0d3ZW5nb2xvX0hlcmVfRHVfS2VyenUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnR2VuX0PKvGh3ZV9NZXVfRWJyX01hZV9FdmVfR291X0Vvc19Hd2VfSGVyX0R1X0tlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdWxfTHVuX01ldXJ6aF9NZXJjyrxoZXJfWWFvdV9Hd2VuZXJfU2Fkb3JuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VsX0x1bl9NZXVfTWVyX1lhb19Hd2VfU2FkJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X0x1X01lX01lcl9ZYV9Hd19TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZTogbWluV2Vla2RheXNQYXJzZSxcbiAgICAgICAgZnVsbFdlZWtkYXlzUGFyc2U6IGZ1bGxXZWVrZGF5c1BhcnNlLFxuICAgICAgICBzaG9ydFdlZWtkYXlzUGFyc2U6IHNob3J0V2Vla2RheXNQYXJzZSxcbiAgICAgICAgbWluV2Vla2RheXNQYXJzZTogbWluV2Vla2RheXNQYXJzZSxcblxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogbW9udGhzU3RyaWN0UmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IG1vbnRoc1Nob3J0U3RyaWN0UmVnZXgsXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG5cbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIFthIHZpel0gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW2Egdml6XSBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2Egdml6XSBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIaXppdiBkYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tXYXJjyrxob2F6aCBkYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtkYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tEZWPKvGggZGFdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbcGFzZXQgZGFdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnYS1iZW5uICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDKvHpvJyxcbiAgICAgICAgICAgIHM6ICd1biBuZWJldWQgc2Vnb25kZW5ub8O5JyxcbiAgICAgICAgICAgIHNzOiAnJWQgZWlsZW5uJyxcbiAgICAgICAgICAgIG06ICd1ciB2dW51dGVubicsXG4gICAgICAgICAgICBtbTogcmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uLFxuICAgICAgICAgICAgaDogJ3VuIGV1cicsXG4gICAgICAgICAgICBoaDogJyVkIGV1cicsXG4gICAgICAgICAgICBkOiAndW4gZGV2ZXpoJyxcbiAgICAgICAgICAgIGRkOiByZWxhdGl2ZVRpbWVXaXRoTXV0YXRpb24sXG4gICAgICAgICAgICBNOiAndXIgbWl6JyxcbiAgICAgICAgICAgIE1NOiByZWxhdGl2ZVRpbWVXaXRoTXV0YXRpb24sXG4gICAgICAgICAgICB5OiAndXIgYmxvYXonLFxuICAgICAgICAgICAgeXk6IHNwZWNpYWxNdXRhdGlvbkZvclllYXJzLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oYcOxfHZldCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gbnVtYmVyID09PSAxID8gJ2HDsScgOiAndmV0JztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL2EubS58Zy5tLi8sIC8vIGdvdWRlIG1lcmVubiB8IGEtcmFvayBtZXJlbm5cbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW4gPT09ICdnLm0uJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBob3VyIDwgMTIgPyAnYS5tLicgOiAnZy5tLic7XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQm9zbmlhbiBbYnNdXG4vLyEgYXV0aG9yIDogTmVkaW0gQ2hvbGljaCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9mcm9udHlhcmRcbi8vISBiYXNlZCBvbiAoaHIpIHRyYW5zbGF0aW9uIGJ5IEJvamFuIE1hcmtvdmnEh1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRlJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnamVkbmEgbWludXRhJyA6ICdqZWRuZSBtaW51dGUnO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRhJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2plZGFuIHNhdCcgOiAnamVkbm9nIHNhdGEnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdGknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdkYW4nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZGFuYSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlYyc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlY2EnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGJzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYnMnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcl9mZWJydWFyX21hcnRfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmFyX29rdG9iYXJfbm92ZW1iYXJfZGVjZW1iYXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFuLl9mZWIuX21hci5fYXByLl9tYWouX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnbmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfxI1ldHZydGFrX3BldGFrX3N1Ym90YScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ25lZC5fcG9uLl91dG8uX3NyaS5fxI1ldC5fcGV0Ll9zdWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ25lX3BvX3V0X3NyX8SNZV9wZV9zdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZGFuYXMgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tzdXRyYSB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbbmVkamVsanVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzcmlqZWR1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3Vib3R1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbanXEjWVyIHVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWxpXSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ByaWplICVzJyxcbiAgICAgICAgICAgIHM6ICdwYXIgc2VrdW5kaScsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiAnZGFuJyxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiAnbWplc2VjJyxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiAnZ29kaW51JyxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ2F0YWxhbiBbY2FdXG4vLyEgYXV0aG9yIDogSnVhbiBHLiBIdXJ0YWRvIDogaHR0cHM6Ly9naXRodWIuY29tL2p1YW5naHVydGFkb1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGNhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnY2EnLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ2dlbmVyX2ZlYnJlcl9tYXLDp19hYnJpbF9tYWlnX2p1bnlfanVsaW9sX2Fnb3N0X3NldGVtYnJlX29jdHVicmVfbm92ZW1icmVfZGVzZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZvcm1hdDogXCJkZSBnZW5lcl9kZSBmZWJyZXJfZGUgbWFyw6dfZCdhYnJpbF9kZSBtYWlnX2RlIGp1bnlfZGUganVsaW9sX2QnYWdvc3RfZGUgc2V0ZW1icmVfZCdvY3R1YnJlX2RlIG5vdmVtYnJlX2RlIGRlc2VtYnJlXCIuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9EW29EXT8oXFxzKStNTU1NLyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdnZW4uX2ZlYnIuX21hcsOnX2Fici5fbWFpZ19qdW55X2p1bC5fYWcuX3NldC5fb2N0Ll9ub3YuX2Rlcy4nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnZGl1bWVuZ2VfZGlsbHVuc19kaW1hcnRzX2RpbWVjcmVzX2Rpam91c19kaXZlbmRyZXNfZGlzc2FidGUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkZy5fZGwuX2R0Ll9kYy5fZGouX2R2Ll9kcy4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZGdfZGxfZHRfZGNfZGpfZHZfZHMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBsbDogJ0QgTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFtkZV0gWVlZWSBbYSBsZXNdIEg6bW0nLFxuICAgICAgICAgICAgbGxsOiAnRCBNTU0gWVlZWSwgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gW2RlXSBZWVlZIFthIGxlc10gSDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkIEQgTU1NIFlZWVksIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2F2dWkgYSAnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdsZXMnIDogJ2xhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2RlbcOgIGEgJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAnbGVzJyA6ICdsYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFthICcgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ2xlcycgOiAnbGEnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbYWhpciBhICcgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ2xlcycgOiAnbGEnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdbZWxdIGRkZGQgW3Bhc3NhdCBhICcgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpICE9PSAxID8gJ2xlcycgOiAnbGEnKSArXG4gICAgICAgICAgICAgICAgICAgICddIExUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6IFwiZCdhcXXDrSAlc1wiLFxuICAgICAgICAgICAgcGFzdDogJ2ZhICVzJyxcbiAgICAgICAgICAgIHM6ICd1bnMgc2Vnb25zJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vnb25zJyxcbiAgICAgICAgICAgIG06ICd1biBtaW51dCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0cycsXG4gICAgICAgICAgICBoOiAndW5hIGhvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBob3JlcycsXG4gICAgICAgICAgICBkOiAndW4gZGlhJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGllcycsXG4gICAgICAgICAgICBNOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzb3MnLFxuICAgICAgICAgICAgeTogJ3VuIGFueScsXG4gICAgICAgICAgICB5eTogJyVkIGFueXMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0ocnxufHR8w6h8YSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPVxuICAgICAgICAgICAgICAgIG51bWJlciA9PT0gMVxuICAgICAgICAgICAgICAgICAgICA/ICdyJ1xuICAgICAgICAgICAgICAgICAgICA6IG51bWJlciA9PT0gMlxuICAgICAgICAgICAgICAgICAgICA/ICduJ1xuICAgICAgICAgICAgICAgICAgICA6IG51bWJlciA9PT0gM1xuICAgICAgICAgICAgICAgICAgICA/ICdyJ1xuICAgICAgICAgICAgICAgICAgICA6IG51bWJlciA9PT0gNFxuICAgICAgICAgICAgICAgICAgICA/ICd0J1xuICAgICAgICAgICAgICAgICAgICA6ICfDqCc7XG4gICAgICAgICAgICBpZiAocGVyaW9kID09PSAndycgfHwgcGVyaW9kID09PSAnVycpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAnYSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ3plY2ggW2NzXVxuLy8hIGF1dGhvciA6IHBldHJiZWxhIDogaHR0cHM6Ly9naXRodWIuY29tL3BldHJiZWxhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzID0gJ2xlZGVuX8O6bm9yX2LFmWV6ZW5fZHViZW5fa3bEm3Rlbl/EjWVydmVuX8SNZXJ2ZW5lY19zcnBlbl96w6HFmcOtX8WZw61qZW5fbGlzdG9wYWRfcHJvc2luZWMnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2xlZF/Dum5vX2LFmWVfZHViX2t2xJtfxI12bl/EjXZjX3NycF96w6HFmV/FmcOtal9saXNfcHJvJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9ebGVkL2ksXG4gICAgICAgICAgICAvXsO6bm8vaSxcbiAgICAgICAgICAgIC9eYsWZZS9pLFxuICAgICAgICAgICAgL15kdWIvaSxcbiAgICAgICAgICAgIC9ea3bEmy9pLFxuICAgICAgICAgICAgL14oxI12bnzEjWVydmVuJHzEjWVydm5hKS9pLFxuICAgICAgICAgICAgL14oxI12Y3zEjWVydmVuZWN8xI1lcnZlbmNlKS9pLFxuICAgICAgICAgICAgL15zcnAvaSxcbiAgICAgICAgICAgIC9eesOhxZkvaSxcbiAgICAgICAgICAgIC9exZnDrWovaSxcbiAgICAgICAgICAgIC9ebGlzL2ksXG4gICAgICAgICAgICAvXnByby9pLFxuICAgICAgICBdLFxuICAgICAgICAvLyBOT1RFOiAnxI1lcnZlbicgaXMgc3Vic3RyaW5nIG9mICfEjWVydmVuZWMnOyB0aGVyZWZvcmUgJ8SNZXJ2ZW5lYycgbXVzdCBwcmVjZWRlICfEjWVydmVuJyBpbiB0aGUgcmVnZXggdG8gYmUgZnVsbHkgbWF0Y2hlZC5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIHBhcnNlciBtYXRjaGVzICcxLiDEjWVydmVuZWMnIGFzICcxLiDEjWVydmVuJyArICdlYycuXG4gICAgICAgIG1vbnRoc1JlZ2V4ID0gL14obGVkZW58w7pub3J8YsWZZXplbnxkdWJlbnxrdsSbdGVufMSNZXJ2ZW5lY3zEjWVydmVuY2V8xI1lcnZlbnzEjWVydm5hfHNycGVufHrDocWZw618xZnDrWplbnxsaXN0b3BhZHxwcm9zaW5lY3xsZWR8w7pub3xixZllfGR1YnxrdsSbfMSNdm58xI12Y3xzcnB8esOhxZl8xZnDrWp8bGlzfHBybykvaTtcblxuICAgIGZ1bmN0aW9uIHBsdXJhbChuKSB7XG4gICAgICAgIHJldHVybiBuID4gMSAmJiBuIDwgNSAmJiB+fihuIC8gMTApICE9PSAxO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzogLy8gYSBmZXcgc2Vjb25kcyAvIGluIGEgZmV3IHNlY29uZHMgLyBhIGZldyBzZWNvbmRzIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3DDoXIgc2VrdW5kJyA6ICdww6FyIHNla3VuZGFtaSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6IC8vIDkgc2Vjb25kcyAvIGluIDkgc2Vjb25kcyAvIDkgc2Vjb25kcyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Nla3VuZHknIDogJ3Nla3VuZCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnc2VrdW5kYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdtJzogLy8gYSBtaW51dGUgLyBpbiBhIG1pbnV0ZSAvIGEgbWludXRlIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ21pbnV0YScgOiBpc0Z1dHVyZSA/ICdtaW51dHUnIDogJ21pbnV0b3UnO1xuICAgICAgICAgICAgY2FzZSAnbW0nOiAvLyA5IG1pbnV0ZXMgLyBpbiA5IG1pbnV0ZXMgLyA5IG1pbnV0ZXMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtaW51dHknIDogJ21pbnV0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtaW51dGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnaCc6IC8vIGFuIGhvdXIgLyBpbiBhbiBob3VyIC8gYW4gaG91ciBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdob2RpbmEnIDogaXNGdXR1cmUgPyAnaG9kaW51JyA6ICdob2Rpbm91JztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzogLy8gOSBob3VycyAvIGluIDkgaG91cnMgLyA5IGhvdXJzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnaG9kaW55JyA6ICdob2RpbicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnaG9kaW5hbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2QnOiAvLyBhIGRheSAvIGluIGEgZGF5IC8gYSBkYXkgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZGVuJyA6ICdkbmVtJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzogLy8gOSBkYXlzIC8gaW4gOSBkYXlzIC8gOSBkYXlzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnZG55JyA6ICdkbsOtJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdkbnknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ00nOiAvLyBhIG1vbnRoIC8gaW4gYSBtb250aCAvIGEgbW9udGggYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbcSbc8OtYycgOiAnbcSbc8OtY2VtJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzogLy8gOSBtb250aHMgLyBpbiA5IG1vbnRocyAvIDkgbW9udGhzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbcSbc8OtY2UnIDogJ23Em3PDrWPFrycpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcSbc8OtY2knO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3knOiAvLyBhIHllYXIgLyBpbiBhIHllYXIgLyBhIHllYXIgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAncm9rJyA6ICdyb2tlbSc7XG4gICAgICAgICAgICBjYXNlICd5eSc6IC8vIDkgeWVhcnMgLyBpbiA5IHllYXJzIC8gOSB5ZWFycyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Jva3knIDogJ2xldCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbGV0eSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnY3MnLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzU2hvcnQsXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIC8vIE5PVEU6ICfEjWVydmVuJyBpcyBzdWJzdHJpbmcgb2YgJ8SNZXJ2ZW5lYyc7IHRoZXJlZm9yZSAnxI1lcnZlbmVjJyBtdXN0IHByZWNlZGUgJ8SNZXJ2ZW4nIGluIHRoZSByZWdleCB0byBiZSBmdWxseSBtYXRjaGVkLlxuICAgICAgICAvLyBPdGhlcndpc2UgcGFyc2VyIG1hdGNoZXMgJzEuIMSNZXJ2ZW5lYycgYXMgJzEuIMSNZXJ2ZW4nICsgJ2VjJy5cbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IC9eKGxlZGVufGxlZG5hfMO6bm9yYXzDum5vcnxixZllemVufGLFmWV6bmF8ZHViZW58ZHVibmF8a3bEm3RlbnxrdsSbdG5hfMSNZXJ2ZW5lY3zEjWVydmVuY2V8xI1lcnZlbnzEjWVydm5hfHNycGVufHNycG5hfHrDocWZw618xZnDrWplbnzFmcOtam5hfGxpc3RvcGFkdXxsaXN0b3BhZHxwcm9zaW5lY3xwcm9zaW5jZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDogL14obGVkfMO6bm98YsWZZXxkdWJ8a3bEm3zEjXZufMSNdmN8c3JwfHrDocWZfMWZw61qfGxpc3xwcm8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzOiAnbmVkxJtsZV9wb25kxJtsw61fw7p0ZXLDvV9zdMWZZWRhX8SNdHZydGVrX3DDoXRla19zb2JvdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICduZV9wb1/DunRfc3RfxI10X3DDoV9zbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICduZV9wb1/DunRfc3RfxI10X3DDoV9zbycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIGw6ICdELiBNLiBZWVlZJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZG5lcyB2XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3rDrXRyYSB2XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IG5lZMSbbGkgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIGRkZGQgW3ZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdmUgc3TFmWVkdSB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZlIMSNdHZydGVrIHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBww6F0ZWsgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IHNvYm90dSB2XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbdsSNZXJhIHZdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsb3UgbmVkxJtsaSB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDqV0gZGRkZCBbdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bG91IHN0xZllZHUgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw71dIGRkZGQgW3ZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWxvdSBzb2JvdHUgdl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwxZllZCAlcycsXG4gICAgICAgICAgICBzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3M7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ2h1dmFzaCBbY3ZdXG4vLyEgYXV0aG9yIDogQW5hdG9seSBNaXJvbm92IDogaHR0cHM6Ly9naXRodWIuY29tL21pcm9udG9saVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGN2ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnY3YnLCB7XG4gICAgICAgIG1vbnRoczogJ9C605HRgNC70LDRh1/QvdCw0YDTkdGBX9C/0YPRiF/QsNC60LBf0LzQsNC5X9Kr05fRgNGC0LzQtV/Rg9GC05Ff0qvRg9GA0LvQsF/QsNCy05HQvV/RjtC/0LBf0YfTs9C6X9GA0LDRiNGC0LDQsicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfQutOR0YBf0L3QsNGAX9C/0YPRiF/QsNC60LBf0LzQsNC5X9Kr05fRgF/Rg9GC05Ff0qvRg9GAX9Cw0LLQvV/RjtC/0LBf0YfTs9C6X9GA0LDRiCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfQstGL0YDRgdCw0YDQvdC40LrRg9C9X9GC0YPQvdGC0LjQutGD0L1f0YvRgtC70LDRgNC40LrRg9C9X9GO0L3QutGD0L1f0LrTl9Kr0L3QtdGA0L3QuNC60YPQvV/RjdGA0L3QtdC60YPQvV/RiNOR0LzQsNGC0LrRg9C9Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0LLRi9GAX9GC0YPQvV/Ri9GC0Ltf0Y7QvV/QutOX0qtf0Y3RgNC9X9GI05HQvCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQstGAX9GC0L1f0YvRgl/RjtC9X9C60qtf0Y3RgF/RiNC8Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQtTU0tWVlZWScsXG4gICAgICAgICAgICBMTDogJ1lZWVkgW9Kr0YPQu9GF0LhdIE1NTU0gW9GD0LnTkdGF05fQvV0gRFst0LzTl9GI05ddJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVkgW9Kr0YPQu9GF0LhdIE1NTU0gW9GD0LnTkdGF05fQvV0gRFst0LzTl9GI05ddLCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgWVlZWSBb0qvRg9C70YXQuF0gTU1NTSBb0YPQudOR0YXTl9C9XSBEWy3QvNOX0YjTl10sIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0J/QsNGP0L1dIExUIFvRgdC10YXQtdGC0YDQtV0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQq9GA0LDQvV0gTFQgW9GB0LXRhdC10YLRgNC1XScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9OW0L3QtdGAXSBMVCBb0YHQtdGF0LXRgtGA0LVdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW9Kq0LjRgtC10YFdIGRkZGQgTFQgW9GB0LXRhdC10YLRgNC1XScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vQmNGA0YLQvdOXXSBkZGRkIExUIFvRgdC10YXQtdGC0YDQtV0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6IGZ1bmN0aW9uIChvdXRwdXQpIHtcbiAgICAgICAgICAgICAgICB2YXIgYWZmaXggPSAv0YHQtdGF0LXRgiQvaS5leGVjKG91dHB1dClcbiAgICAgICAgICAgICAgICAgICAgPyAn0YDQtdC9J1xuICAgICAgICAgICAgICAgICAgICA6IC/Sq9GD0LskL2kuZXhlYyhvdXRwdXQpXG4gICAgICAgICAgICAgICAgICAgID8gJ9GC0LDQvSdcbiAgICAgICAgICAgICAgICAgICAgOiAn0YDQsNC9JztcbiAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0ICsgYWZmaXg7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdDogJyVzINC60LDRj9C70LvQsCcsXG4gICAgICAgICAgICBzOiAn0L/Tl9GALdC40Log0qvQtdC60LrRg9C90YInLFxuICAgICAgICAgICAgc3M6ICclZCDSq9C10LrQutGD0L3RgicsXG4gICAgICAgICAgICBtOiAn0L/Tl9GAINC80LjQvdGD0YInLFxuICAgICAgICAgICAgbW06ICclZCDQvNC40L3Rg9GCJyxcbiAgICAgICAgICAgIGg6ICfQv9OX0YAg0YHQtdGF0LXRgicsXG4gICAgICAgICAgICBoaDogJyVkINGB0LXRhdC10YInLFxuICAgICAgICAgICAgZDogJ9C/05fRgCDQutGD0L0nLFxuICAgICAgICAgICAgZGQ6ICclZCDQutGD0L0nLFxuICAgICAgICAgICAgTTogJ9C/05fRgCDRg9C505HRhScsXG4gICAgICAgICAgICBNTTogJyVkINGD0LnTkdGFJyxcbiAgICAgICAgICAgIHk6ICfQv9OX0YAg0qvRg9C7JyxcbiAgICAgICAgICAgIHl5OiAnJWQg0qvRg9C7JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LdC805fRiC8sXG4gICAgICAgIG9yZGluYWw6ICclZC3QvNOX0YgnLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3Y7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogV2Vsc2ggW2N5XVxuLy8hIGF1dGhvciA6IFJvYmVydCBBbGxlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yb2JnYWxsZW5cbi8vISBhdXRob3IgOiBodHRwczovL2dpdGh1Yi5jb20vcnlhbmdyZWF2ZXNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBjeSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2N5Jywge1xuICAgICAgICBtb250aHM6ICdJb25hd3JfQ2h3ZWZyb3JfTWF3cnRoX0VicmlsbF9NYWlfTWVoZWZpbl9Hb3JmZmVubmFmX0F3c3RfTWVkaV9IeWRyZWZfVGFjaHdlZGRfUmhhZ2Z5cicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdJb25fQ2h3ZV9NYXdfRWJyX01haV9NZWhfR29yX0F3c19NZWRfSHlkX1RhY2hfUmhhZycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICdEeWRkIFN1bF9EeWRkIExsdW5fRHlkZCBNYXdydGhfRHlkZCBNZXJjaGVyX0R5ZGQgSWF1X0R5ZGQgR3dlbmVyX0R5ZGQgU2Fkd3JuJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VsX0xsdW5fTWF3X01lcl9JYXVfR3dlX1NhZCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9MbF9NYV9NZV9JYV9Hd19TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICAvLyB0aW1lIGZvcm1hdHMgYXJlIHRoZSBzYW1lIGFzIGVuLWdiXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSGVkZGl3IGFtXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1lmb3J5IGFtXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FtXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0Rkb2UgYW1dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZGl3ZXRoYWYgYW1dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnbWV3biAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgeW4gw7RsJyxcbiAgICAgICAgICAgIHM6ICd5Y2h5ZGlnIGVpbGlhZGF1JyxcbiAgICAgICAgICAgIHNzOiAnJWQgZWlsaWFkJyxcbiAgICAgICAgICAgIG06ICdtdW51ZCcsXG4gICAgICAgICAgICBtbTogJyVkIG11bnVkJyxcbiAgICAgICAgICAgIGg6ICdhd3InLFxuICAgICAgICAgICAgaGg6ICclZCBhd3InLFxuICAgICAgICAgICAgZDogJ2Rpd3Jub2QnLFxuICAgICAgICAgICAgZGQ6ICclZCBkaXdybm9kJyxcbiAgICAgICAgICAgIE06ICdtaXMnLFxuICAgICAgICAgICAgTU06ICclZCBtaXMnLFxuICAgICAgICAgICAgeTogJ2Jsd3lkZHluJyxcbiAgICAgICAgICAgIHl5OiAnJWQgZmx5bmVkZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShmZWR8YWlufGFmfGlsfHlkZHxlZHxlZykvLFxuICAgICAgICAvLyB0cmFkaXRpb25hbCBvcmRpbmFsIG51bWJlcnMgYWJvdmUgMzEgYXJlIG5vdCBjb21tb25seSB1c2VkIGluIGNvbGxvcXVpYWwgV2Vsc2hcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gJycsXG4gICAgICAgICAgICAgICAgbG9va3VwID0gW1xuICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2FmJyxcbiAgICAgICAgICAgICAgICAgICAgJ2lsJyxcbiAgICAgICAgICAgICAgICAgICAgJ3lkZCcsXG4gICAgICAgICAgICAgICAgICAgICd5ZGQnLFxuICAgICAgICAgICAgICAgICAgICAnZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZmVkJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZlZCcsXG4gICAgICAgICAgICAgICAgICAgICdmZWQnLCAvLyAxYWYgdG8gMTBmZWRcbiAgICAgICAgICAgICAgICAgICAgJ2VnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZlZCcsXG4gICAgICAgICAgICAgICAgICAgICdlZycsXG4gICAgICAgICAgICAgICAgICAgICdlZycsXG4gICAgICAgICAgICAgICAgICAgICdmZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZWcnLFxuICAgICAgICAgICAgICAgICAgICAnZWcnLFxuICAgICAgICAgICAgICAgICAgICAnZmVkJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZlZCcsIC8vIDExZWcgdG8gMjBmZWRcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgaWYgKGIgPiAyMCkge1xuICAgICAgICAgICAgICAgIGlmIChiID09PSA0MCB8fCBiID09PSA1MCB8fCBiID09PSA2MCB8fCBiID09PSA4MCB8fCBiID09PSAxMDApIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ2ZlZCc7IC8vIG5vdCAzMGFpbiwgNzBhaW4gb3IgOTBhaW5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnYWluJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIgPiAwKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gbG9va3VwW2JdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGN5O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IERhbmlzaCBbZGFdXG4vLyEgYXV0aG9yIDogVWxyaWsgTmllbHNlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tcmJhc2VcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBkYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2RhJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJ0c19hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdzw7huZGFnX21hbmRhZ190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7hyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc8O4bl9tYW5fdGlyX29uc190b3JfZnJlX2zDuHInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnc8O4X21hX3RpX29uX3RvX2ZyX2zDuCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIFtkLl0gRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaSBkYWcga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2kgbW9yZ2VuIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdww6UgZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2kgZ8OlciBrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2ldIGRkZGRbcyBrbC5dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb20gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHNpZGVuJyxcbiAgICAgICAgICAgIHM6ICdmw6Ugc2VrdW5kZXInLFxuICAgICAgICAgICAgc3M6ICclZCBzZWt1bmRlcicsXG4gICAgICAgICAgICBtOiAnZXQgbWludXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dHRlcicsXG4gICAgICAgICAgICBoOiAnZW4gdGltZScsXG4gICAgICAgICAgICBoaDogJyVkIHRpbWVyJyxcbiAgICAgICAgICAgIGQ6ICdlbiBkYWcnLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWdlJyxcbiAgICAgICAgICAgIE06ICdlbiBtw6VuZWQnLFxuICAgICAgICAgICAgTU06ICclZCBtw6VuZWRlcicsXG4gICAgICAgICAgICB5OiAnZXQgw6VyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgw6VyJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBkYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBHZXJtYW4gW2RlXVxuLy8hIGF1dGhvciA6IGxsdWNocyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9sbHVjaHNcbi8vISBhdXRob3I6IE1lbmVsaW9uIEVsZW5zw7psZTogaHR0cHM6Ly9naXRodWIuY29tL09pcmVcbi8vISBhdXRob3IgOiBNaWtvbGFqIERhZGVsYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWswMWFqXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgbTogWydlaW5lIE1pbnV0ZScsICdlaW5lciBNaW51dGUnXSxcbiAgICAgICAgICAgIGg6IFsnZWluZSBTdHVuZGUnLCAnZWluZXIgU3R1bmRlJ10sXG4gICAgICAgICAgICBkOiBbJ2VpbiBUYWcnLCAnZWluZW0gVGFnJ10sXG4gICAgICAgICAgICBkZDogW251bWJlciArICcgVGFnZScsIG51bWJlciArICcgVGFnZW4nXSxcbiAgICAgICAgICAgIHc6IFsnZWluZSBXb2NoZScsICdlaW5lciBXb2NoZSddLFxuICAgICAgICAgICAgTTogWydlaW4gTW9uYXQnLCAnZWluZW0gTW9uYXQnXSxcbiAgICAgICAgICAgIE1NOiBbbnVtYmVyICsgJyBNb25hdGUnLCBudW1iZXIgKyAnIE1vbmF0ZW4nXSxcbiAgICAgICAgICAgIHk6IFsnZWluIEphaHInLCAnZWluZW0gSmFociddLFxuICAgICAgICAgICAgeXk6IFtudW1iZXIgKyAnIEphaHJlJywgbnVtYmVyICsgJyBKYWhyZW4nXSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBkZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2RlJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW4uX0ZlYi5fTcOkcnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6Licuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1NvLl9Nby5fRGkuX01pLl9Eby5fRnIuX1NhLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTb19Nb19EaV9NaV9Eb19Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2hldXRlIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttb3JnZW4gdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZ2VzdGVybiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAndm9yICVzJyxcbiAgICAgICAgICAgIHM6ICdlaW4gcGFhciBTZWt1bmRlbicsXG4gICAgICAgICAgICBzczogJyVkIFNla3VuZGVuJyxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogJyVkIE1pbnV0ZW4nLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiAnJWQgU3R1bmRlbicsXG4gICAgICAgICAgICBkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB3OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgd3c6ICclZCBXb2NoZW4nLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEdlcm1hbiAoQXVzdHJpYSkgW2RlLWF0XVxuLy8hIGF1dGhvciA6IGxsdWNocyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9sbHVjaHNcbi8vISBhdXRob3I6IE1lbmVsaW9uIEVsZW5zw7psZTogaHR0cHM6Ly9naXRodWIuY29tL09pcmVcbi8vISBhdXRob3IgOiBNYXJ0aW4gR3JvbGxlciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9NYWRNR1xuLy8hIGF1dGhvciA6IE1pa29sYWogRGFkZWxhIDogaHR0cHM6Ly9naXRodWIuY29tL21pazAxYWpcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBtOiBbJ2VpbmUgTWludXRlJywgJ2VpbmVyIE1pbnV0ZSddLFxuICAgICAgICAgICAgaDogWydlaW5lIFN0dW5kZScsICdlaW5lciBTdHVuZGUnXSxcbiAgICAgICAgICAgIGQ6IFsnZWluIFRhZycsICdlaW5lbSBUYWcnXSxcbiAgICAgICAgICAgIGRkOiBbbnVtYmVyICsgJyBUYWdlJywgbnVtYmVyICsgJyBUYWdlbiddLFxuICAgICAgICAgICAgdzogWydlaW5lIFdvY2hlJywgJ2VpbmVyIFdvY2hlJ10sXG4gICAgICAgICAgICBNOiBbJ2VpbiBNb25hdCcsICdlaW5lbSBNb25hdCddLFxuICAgICAgICAgICAgTU06IFtudW1iZXIgKyAnIE1vbmF0ZScsIG51bWJlciArICcgTW9uYXRlbiddLFxuICAgICAgICAgICAgeTogWydlaW4gSmFocicsICdlaW5lbSBKYWhyJ10sXG4gICAgICAgICAgICB5eTogW251bWJlciArICcgSmFocmUnLCBudW1iZXIgKyAnIEphaHJlbiddLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGRlQXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdkZS1hdCcsIHtcbiAgICAgICAgbW9udGhzOiAnSsOkbm5lcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0rDpG4uX0ZlYi5fTcOkcnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6Licuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1NvLl9Nby5fRGkuX01pLl9Eby5fRnIuX1NhLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTb19Nb19EaV9NaV9Eb19Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2hldXRlIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttb3JnZW4gdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZ2VzdGVybiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAndm9yICVzJyxcbiAgICAgICAgICAgIHM6ICdlaW4gcGFhciBTZWt1bmRlbicsXG4gICAgICAgICAgICBzczogJyVkIFNla3VuZGVuJyxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogJyVkIE1pbnV0ZW4nLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiAnJWQgU3R1bmRlbicsXG4gICAgICAgICAgICBkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB3OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgd3c6ICclZCBXb2NoZW4nLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlQXQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogR2VybWFuIChTd2l0emVybGFuZCkgW2RlLWNoXVxuLy8hIGF1dGhvciA6IHNzY2h1ZWxsZXIgOiBodHRwczovL2dpdGh1Yi5jb20vc3NjaHVlbGxlclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIG06IFsnZWluZSBNaW51dGUnLCAnZWluZXIgTWludXRlJ10sXG4gICAgICAgICAgICBoOiBbJ2VpbmUgU3R1bmRlJywgJ2VpbmVyIFN0dW5kZSddLFxuICAgICAgICAgICAgZDogWydlaW4gVGFnJywgJ2VpbmVtIFRhZyddLFxuICAgICAgICAgICAgZGQ6IFtudW1iZXIgKyAnIFRhZ2UnLCBudW1iZXIgKyAnIFRhZ2VuJ10sXG4gICAgICAgICAgICB3OiBbJ2VpbmUgV29jaGUnLCAnZWluZXIgV29jaGUnXSxcbiAgICAgICAgICAgIE06IFsnZWluIE1vbmF0JywgJ2VpbmVtIE1vbmF0J10sXG4gICAgICAgICAgICBNTTogW251bWJlciArICcgTW9uYXRlJywgbnVtYmVyICsgJyBNb25hdGVuJ10sXG4gICAgICAgICAgICB5OiBbJ2VpbiBKYWhyJywgJ2VpbmVtIEphaHInXSxcbiAgICAgICAgICAgIHl5OiBbbnVtYmVyICsgJyBKYWhyZScsIG51bWJlciArICcgSmFocmVuJ10sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG5cbiAgICB2YXIgZGVDaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2RlLWNoJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW4uX0ZlYi5fTcOkcnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6Licuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaGV1dGUgdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnZXN0ZXJuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICd2b3IgJXMnLFxuICAgICAgICAgICAgczogJ2VpbiBwYWFyIFNla3VuZGVuJyxcbiAgICAgICAgICAgIHNzOiAnJWQgU2VrdW5kZW4nLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiAnJWQgTWludXRlbicsXG4gICAgICAgICAgICBoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGg6ICclZCBTdHVuZGVuJyxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHc6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB3dzogJyVkIFdvY2hlbicsXG4gICAgICAgICAgICBNOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVDaDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYWxkaXZpYW4gW2R2XVxuLy8hIGF1dGhvciA6IEphd2lzaCBIYW1lZWQgOiBodHRwczovL2dpdGh1Yi5jb20vamF3aXNoXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAgICAgJ96W3qzegt6q3ofept6D3qknLFxuICAgICAgICAgICAgJ96K3qzehN6w3oPeqt6H3qbeg96pJyxcbiAgICAgICAgICAgICfeid6n3oPeqN6X3qonLFxuICAgICAgICAgICAgJ96H3q3eld6w3oPeqd6N3qonLFxuICAgICAgICAgICAgJ96J3q0nLFxuICAgICAgICAgICAgJ96W3qvegt6wJyxcbiAgICAgICAgICAgICfelt6q3o3ept6H3qgnLFxuICAgICAgICAgICAgJ96H3q/ejt6m3pDesN6T3qonLFxuICAgICAgICAgICAgJ96Q3qzeld6w3pPerN6J3rDehN6m3oPeqicsXG4gICAgICAgICAgICAn3ofert6G3rDek96v3oTept6D3qonLFxuICAgICAgICAgICAgJ96C3q7eiN6s3onesN6E3qbeg96qJyxcbiAgICAgICAgICAgICfekd6o3pDerN6J3rDehN6m3oPeqicsXG4gICAgICAgIF0sXG4gICAgICAgIHdlZWtkYXlzID0gW1xuICAgICAgICAgICAgJ96H3qfei96o3ofesN6M3qYnLFxuICAgICAgICAgICAgJ96A3q/eid6mJyxcbiAgICAgICAgICAgICfeh96m3oLesN6O3qfeg96mJyxcbiAgICAgICAgICAgICfehN6q3ovepicsXG4gICAgICAgICAgICAn3oTeqt6D3qfekN6w3orept6M3qgnLFxuICAgICAgICAgICAgJ96A3qreht6q3oPeqicsXG4gICAgICAgICAgICAn3oDert6C3qjegN6o3oPeqicsXG4gICAgICAgIF07XG5cbiAgICB2YXIgZHYgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdkdicsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzOiB3ZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogd2Vla2RheXMsXG4gICAgICAgIHdlZWtkYXlzTWluOiAn3ofep96L3qhf3oDer96J3qZf3ofept6C3rBf3oTeqt6L3qZf3oTeqt6D3qdf3oDeqt6G3qpf3oDert6C3qgnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdEL00vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL96J3oZ83oneii8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfeid6KJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfeid6GJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfeid6KJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb3oneqN6H3qbei96qXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW96J3qfei96m3onep10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb3ofeqN6H3rDelN6sXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1veit6n3ofeqN6M3qreiN6oXSBkZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn3ozerN6D3q3ejt6m3ofeqCAlcycsXG4gICAgICAgICAgICBwYXN0OiAn3obeqt6D3qjegt6wICVzJyxcbiAgICAgICAgICAgIHM6ICfekN6o3obeqt6C3rDejN6q3obert6F3qzeh96wJyxcbiAgICAgICAgICAgIHNzOiAnZCUg3pDeqN6G3qregt6w3ozeqicsXG4gICAgICAgICAgICBtOiAn3oneqN6C3qjek96s3ofesCcsXG4gICAgICAgICAgICBtbTogJ96J3qjegt6o3pPeqiAlZCcsXG4gICAgICAgICAgICBoOiAn3o7ept6R3qjeh96o3oPerN6H3rAnLFxuICAgICAgICAgICAgaGg6ICfejt6m3pHeqN6H3qjeg96qICVkJyxcbiAgICAgICAgICAgIGQ6ICfei96q3ojept6A3qzeh96wJyxcbiAgICAgICAgICAgIGRkOiAn3oveqt6I3qbekN6wICVkJyxcbiAgICAgICAgICAgIE06ICfeid6m3oDerN6H3rAnLFxuICAgICAgICAgICAgTU06ICfeid6m3pDesCAlZCcsXG4gICAgICAgICAgICB5OiAn3ofept6A3qbeg96s3ofesCcsXG4gICAgICAgICAgICB5eTogJ96H3qbegN6m3oPeqiAlZCcsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiA3LCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZHY7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogR3JlZWsgW2VsXVxuLy8hIGF1dGhvciA6IEFnZ2Vsb3MgS2FyYWxpYXMgOiBodHRwczovL2dpdGh1Yi5jb20vbWVoaWVsXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKGlucHV0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodHlwZW9mIEZ1bmN0aW9uICE9PSAndW5kZWZpbmVkJyAmJiBpbnB1dCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fFxuICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHZhciBlbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VsJywge1xuICAgICAgICBtb250aHNOb21pbmF0aXZlRWw6ICfOmc6xzr3Ov8+FzqzPgc65zr/Pgl/Ops61zrLPgc6/z4XOrM+BzrnOv8+CX86czqzPgc+EzrnOv8+CX86Rz4DPgc6vzrvOuc6/z4JfzpzOrM65zr/Pgl/Omc6/z43Ovc65zr/Pgl/Omc6/z43Ou865zr/Pgl/Okc+NzrPOv8+Fz4PPhM6/z4JfzqPOtc+Az4TOrc68zrLPgc65zr/Pgl/On866z4TPjs6yz4HOuc6/z4Jfzp3Ov86tzrzOss+BzrnOv8+CX86UzrXOus6tzrzOss+BzrnOv8+CJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNHZW5pdGl2ZUVsOiAnzpnOsc69zr/Phc6xz4HOr86/z4VfzqbOtc6yz4HOv8+FzrHPgc6vzr/PhV/OnM6xz4HPhM6vzr/PhV/Okc+Az4HOuc67zq/Ov8+FX86czrHOkM6/z4VfzpnOv8+Fzr3Or86/z4VfzpnOv8+FzrvOr86/z4VfzpHPhc6zzr/Pjc+Dz4TOv8+FX86jzrXPgM+EzrXOvM6yz4HOr86/z4Vfzp/Ous+Ez4nOss+Bzq/Ov8+FX86dzr/Otc68zrLPgc6vzr/PhV/OlM61zrrOtc68zrLPgc6vzr/PhScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzOiBmdW5jdGlvbiAobW9tZW50VG9Gb3JtYXQsIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtb21lbnRUb0Zvcm1hdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNOb21pbmF0aXZlRWw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHR5cGVvZiBmb3JtYXQgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgL0QvLnRlc3QoZm9ybWF0LnN1YnN0cmluZygwLCBmb3JtYXQuaW5kZXhPZignTU1NTScpKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgZGF5IG51bWJlciBiZWZvcmUgJ01NTU0nXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc0dlbml0aXZlRWxbbW9tZW50VG9Gb3JtYXQubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNOb21pbmF0aXZlRWxbbW9tZW50VG9Gb3JtYXQubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnzpnOsc69X86mzrXOsl/OnM6xz4FfzpHPgM+BX86czrHPil/Omc6/z4XOvV/Omc6/z4XOu1/Okc+FzrNfzqPOtc+AX86fzrrPhF/Onc6/zrVfzpTOtc66Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ86az4XPgc65zrHOus6uX86UzrXPhc+Ezq3Pgc6xX86kz4HOr8+EzrdfzqTOtc+EzqzPgc+EzrdfzqDOrc68z4DPhM63X86gzrHPgc6xz4POus61z4XOrl/Oo86szrLOss6xz4TOvycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ86az4XPgV/OlM61z4VfzqTPgc65X86kzrXPhF/OoM61zrxfzqDOsc+BX86jzrHOsicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfOms+FX86UzrVfzqTPgV/OpM61X86gzrVfzqDOsV/Oo86xJy5zcGxpdCgnXycpLFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ868zrwnIDogJ86czpwnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfPgM68JyA6ICfOoM6cJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gKGlucHV0ICsgJycpLnRvTG93ZXJDYXNlKClbMF0gPT09ICfOvCc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9bzqDOnF1cXC4/zpw/XFwuPy9pLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhckVsOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW86jzq7OvM61z4HOsSB7fV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vOkc+Nz4HOuc6/IHt9XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3t9XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW86nzrjOtc+CIHt9XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vPhM6/IM+Az4HOv863zrPOv8+NzrzOtc69zr9dIGRkZGQgW3t9XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vPhM63zr0gz4DPgc6/zrfOs86/z43OvM61zr3Ot10gZGRkZCBbe31dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IGZ1bmN0aW9uIChrZXksIG1vbSkge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuX2NhbGVuZGFyRWxba2V5XSxcbiAgICAgICAgICAgICAgICBob3VycyA9IG1vbSAmJiBtb20uaG91cnMoKTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKG91dHB1dCkpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQuYXBwbHkobW9tKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQucmVwbGFjZSgne30nLCBob3VycyAlIDEyID09PSAxID8gJ8+Dz4TOtycgOiAnz4PPhM65z4InKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfPg861ICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDPgM+BzrnOvScsXG4gICAgICAgICAgICBzOiAnzrvOr86zzrEgzrTOtc+Fz4TOtc+Bz4zOu861z4DPhM6xJyxcbiAgICAgICAgICAgIHNzOiAnJWQgzrTOtc+Fz4TOtc+Bz4zOu861z4DPhM6xJyxcbiAgICAgICAgICAgIG06ICfOrc69zrEgzrvOtc+Az4TPjCcsXG4gICAgICAgICAgICBtbTogJyVkIM67zrXPgM+EzqwnLFxuICAgICAgICAgICAgaDogJ868zq/OsSDPjs+BzrEnLFxuICAgICAgICAgICAgaGg6ICclZCDPjs+BzrXPgicsXG4gICAgICAgICAgICBkOiAnzrzOr86xIM68zq3Pgc6xJyxcbiAgICAgICAgICAgIGRkOiAnJWQgzrzOrc+BzrXPgicsXG4gICAgICAgICAgICBNOiAnzq3Ovc6xz4IgzrzOrs69zrHPgicsXG4gICAgICAgICAgICBNTTogJyVkIM68zq7Ovc61z4InLFxuICAgICAgICAgICAgeTogJ86tzr3Osc+CIM+Hz4HPjM69zr/PgicsXG4gICAgICAgICAgICB5eTogJyVkIM+Hz4HPjM69zrnOsScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfc63LyxcbiAgICAgICAgb3JkaW5hbDogJyVkzrcnLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0c3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZWw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoQXVzdHJhbGlhKSBbZW4tYXVdXG4vLyEgYXV0aG9yIDogSmFyZWQgTW9yc2UgOiBodHRwczovL2dpdGh1Yi5jb20vamFyY29hbFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuQXUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1hdScsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUzogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHM6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTTogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5OiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgeWVhcnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5BdTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBFbmdsaXNoIChDYW5hZGEpIFtlbi1jYV1cbi8vISBhdXRob3IgOiBKb25hdGhhbiBBYm91cmJpaCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb25iY2FcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBlbkNhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4tY2EnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEw6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnTU1NTSBELCBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlbkNhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVuZ2xpc2ggKFVuaXRlZCBLaW5nZG9tKSBbZW4tZ2JdXG4vLyEgYXV0aG9yIDogQ2hyaXMgR2VkcmltIDogaHR0cHM6Ly9naXRodWIuY29tL2NocmlzZ2VkcmltXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZW5HYiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWdiJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuR2I7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoSXJlbGFuZCkgW2VuLWllXVxuLy8hIGF1dGhvciA6IENocmlzIENhcnRsaWRnZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc2NhcnRsaWRnZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuSWUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1pZScsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuSWU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoSXNyYWVsKSBbZW4taWxdXG4vLyEgYXV0aG9yIDogQ2hyaXMgR2VkcmltIDogaHR0cHM6Ly9naXRodWIuY29tL2NocmlzZ2VkcmltXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZW5JbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWlsJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlbklsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVuZ2xpc2ggKEluZGlhKSBbZW4taW5dXG4vLyEgYXV0aG9yIDogSmF0aW4gQWdyYXdhbCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qYXRpbmFnMjJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBlbkluID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4taW4nLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuSW47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoTmV3IFplYWxhbmQpIFtlbi1uel1cbi8vISBhdXRob3IgOiBMdWtlIE1jR3JlZ29yIDogaHR0cHM6Ly9naXRodWIuY29tL2x1a2VtY2dyZWdvclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuTnogPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1ueicsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUzogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHM6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTTogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5OiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgeWVhcnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5OejtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBFbmdsaXNoIChTaW5nYXBvcmUpIFtlbi1zZ11cbi8vISBhdXRob3IgOiBNYXR0aGV3IENhc3RyaWxsb24tTWFkcmlnYWwgOiBodHRwczovL2dpdGh1Yi5jb20vdGVjaGRpbWVuc2lvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuU2cgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1zZycsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBhZ28nLFxuICAgICAgICAgICAgczogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG06ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGg6ICclZCBob3VycycsXG4gICAgICAgICAgICBkOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQ6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE06ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHk6ICdhIHllYXInLFxuICAgICAgICAgICAgeXk6ICclZCB5ZWFycycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlblNnO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVzcGVyYW50byBbZW9dXG4vLyEgYXV0aG9yIDogQ29saW4gRGVhbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jb2xpbmRlYW5cbi8vISBhdXRob3IgOiBNaWEgTm9yZGVudG9mdCBJbXBlcmF0b3JpIDogaHR0cHM6Ly9naXRodWIuY29tL21pZXN0YXNtaWFcbi8vISBjb21tZW50IDogbWllc3Rhc21pYSBjb3JyZWN0ZWQgdGhlIHRyYW5zbGF0aW9uIGJ5IGNvbGluZGVhblxuLy8hIGNvbW1lbnQgOiBWaXZha3ZvIGNvcnJlY3RlZCB0aGUgdHJhbnNsYXRpb24gYnkgY29saW5kZWFuIGFuZCBtaWVzdGFzbWlhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZW8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbycsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyb19mZWJydWFyb19tYXJ0b19hcHJpbG9fbWFqb19qdW5pb19qdWxpb19hxa1ndXN0b19zZXB0ZW1icm9fb2t0b2Jyb19ub3ZlbWJyb19kZWNlbWJybycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcnRfYXByX21hal9qdW5fanVsX2HFrWdfc2VwdF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdkaW1hbsSJb19sdW5kb19tYXJkb19tZXJrcmVkb1/EtWHFrWRvX3ZlbmRyZWRvX3NhYmF0bycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RpbV9sdW5fbWFyZF9tZXJrX8S1YcWtX3Zlbl9zYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZGlfbHVfbWFfbWVfxLVhX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ1tsYV0gRFstYW4gZGVdIE1NTU0sIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnW2xhXSBEWy1hbiBkZV0gTU1NTSwgWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZFtuXSwgW2xhXSBEWy1hbiBkZV0gTU1NTSwgWVlZWSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBbbGFdIERbLWFuIGRlXSBNTU0sIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvW2FwXVxcLnRcXC5tL2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpID09PSAncCc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAncC50Lm0uJyA6ICdQLlQuTS4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdhLnQubS4nIDogJ0EuVC5NLic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hvZGlhxa0gamVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbTW9yZ2HFrSBqZV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkW24gamVdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSGllcmHFrSBqZV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbcGFzaW50YW5dIGRkZGRbbiBqZV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdwb3N0ICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdhbnRhxa0gJXMnLFxuICAgICAgICAgICAgczogJ2tlbGthaiBzZWt1bmRvaicsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZG9qJyxcbiAgICAgICAgICAgIG06ICd1bnUgbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvaicsXG4gICAgICAgICAgICBoOiAndW51IGhvcm8nLFxuICAgICAgICAgICAgaGg6ICclZCBob3JvaicsXG4gICAgICAgICAgICBkOiAndW51IHRhZ28nLCAvL25lICdkaXVybm8nLCDEiWFyIGVzdGFzIHV6aXRhIHBvciBwcm9rc2ltdW1vXG4gICAgICAgICAgICBkZDogJyVkIHRhZ29qJyxcbiAgICAgICAgICAgIE06ICd1bnUgbW9uYXRvJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9uYXRvaicsXG4gICAgICAgICAgICB5OiAndW51IGphcm8nLFxuICAgICAgICAgICAgeXk6ICclZCBqYXJvaicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfWEvLFxuICAgICAgICBvcmRpbmFsOiAnJWRhJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNwYW5pc2ggW2VzXVxuLy8hIGF1dGhvciA6IEp1bGlvIE5hcHVyw60gOiBodHRwczovL2dpdGh1Yi5jb20vanVsaW9uY1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0RG90ID0gJ2VuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmVuZS9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9ebWFyL2ksXG4gICAgICAgICAgICAvXmFici9pLFxuICAgICAgICAgICAgL15tYXkvaSxcbiAgICAgICAgICAgIC9eanVuL2ksXG4gICAgICAgICAgICAvXmp1bC9pLFxuICAgICAgICAgICAgL15hZ28vaSxcbiAgICAgICAgICAgIC9ec2VwL2ksXG4gICAgICAgICAgICAvXm9jdC9pLFxuICAgICAgICAgICAgL15ub3YvaSxcbiAgICAgICAgICAgIC9eZGljL2ksXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1JlZ2V4ID0gL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaTtcblxuICAgIHZhciBlcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VzJywge1xuICAgICAgICBtb250aHM6ICdlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90O1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3RbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IC9eKGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pLFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5czogJ2RvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RvbS5fbHVuLl9tYXIuX21pw6kuX2p1ZS5fdmllLl9zw6FiLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkb19sdV9tYV9taV9qdV92aV9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbaG95IGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbbWHDsWFuYSBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW2EgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbYXllciBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW2VsXSBkZGRkIFtwYXNhZG8gYSBsYScgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgJ10gTFQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2VuICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdoYWNlICVzJyxcbiAgICAgICAgICAgIHM6ICd1bm9zIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaDogJ3VuYSBob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZDogJ3VuIGTDrWEnLFxuICAgICAgICAgICAgZGQ6ICclZCBkw61hcycsXG4gICAgICAgICAgICBNOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeTogJ3VuIGHDsW8nLFxuICAgICAgICAgICAgeXk6ICclZCBhw7FvcycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgICAgIGludmFsaWREYXRlOiAnRmVjaGEgaW52YWxpZGEnLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNwYW5pc2ggKERvbWluaWNhbiBSZXB1YmxpYykgW2VzLWRvXVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0RG90ID0gJ2VuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmVuZS9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9ebWFyL2ksXG4gICAgICAgICAgICAvXmFici9pLFxuICAgICAgICAgICAgL15tYXkvaSxcbiAgICAgICAgICAgIC9eanVuL2ksXG4gICAgICAgICAgICAvXmp1bC9pLFxuICAgICAgICAgICAgL15hZ28vaSxcbiAgICAgICAgICAgIC9ec2VwL2ksXG4gICAgICAgICAgICAvXm9jdC9pLFxuICAgICAgICAgICAgL15ub3YvaSxcbiAgICAgICAgICAgIC9eZGljL2ksXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1JlZ2V4ID0gL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaTtcblxuICAgIHZhciBlc0RvID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZXMtZG8nLCB7XG4gICAgICAgIG1vbnRoczogJ2VuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0W20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDogL14oZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzOiAnZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNfdmllcm5lc19zw6FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tLl9sdW4uX21hci5fbWnDqS5fanVlLl92aWUuX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RvX2x1X21hX21pX2p1X3ZpX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2hveSBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7FhbmEgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFthIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2F5ZXIgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgJ1tlbF0gZGRkZCBbcGFzYWRvIGEgbGEnICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAgICddIExUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdlbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnaGFjZSAlcycsXG4gICAgICAgICAgICBzOiAndW5vcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG06ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGg6ICd1bmEgaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQ6ICd1biBkw61hJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZMOtYXMnLFxuICAgICAgICAgICAgTTogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHk6ICd1biBhw7FvJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYcOxb3MnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVzRG87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU3BhbmlzaCAoVW5pdGVkIFN0YXRlcykgW2VzLXVzXVxuLy8hIGF1dGhvciA6IGJ1c3R0YSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9idXN0dGFcbi8vISBhdXRob3IgOiBjaHJpc3JvZHogOiBodHRwczovL2dpdGh1Yi5jb20vY2hyaXNyb2R6XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzU2hvcnREb3QgPSAnZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2VuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9eZW5lL2ksXG4gICAgICAgICAgICAvXmZlYi9pLFxuICAgICAgICAgICAgL15tYXIvaSxcbiAgICAgICAgICAgIC9eYWJyL2ksXG4gICAgICAgICAgICAvXm1heS9pLFxuICAgICAgICAgICAgL15qdW4vaSxcbiAgICAgICAgICAgIC9eanVsL2ksXG4gICAgICAgICAgICAvXmFnby9pLFxuICAgICAgICAgICAgL15zZXAvaSxcbiAgICAgICAgICAgIC9eb2N0L2ksXG4gICAgICAgICAgICAvXm5vdi9pLFxuICAgICAgICAgICAgL15kaWMvaSxcbiAgICAgICAgXSxcbiAgICAgICAgbW9udGhzUmVnZXggPSAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pO1xuXG4gICAgdmFyIGVzVXMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlcy11cycsIHtcbiAgICAgICAgbW9udGhzOiAnZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90W20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OiAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OiAvXihlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaSxcbiAgICAgICAgbW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgd2Vla2RheXM6ICdkb21pbmdvX2x1bmVzX21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZG9fbHVfbWFfbWlfanVfdmlfc8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTDogJ01NL0REL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbaG95IGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbbWHDsWFuYSBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW2EgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbYXllciBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW2VsXSBkZGRkIFtwYXNhZG8gYSBsYScgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgJ10gTFQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2VuICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdoYWNlICVzJyxcbiAgICAgICAgICAgIHM6ICd1bm9zIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaDogJ3VuYSBob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZDogJ3VuIGTDrWEnLFxuICAgICAgICAgICAgZGQ6ICclZCBkw61hcycsXG4gICAgICAgICAgICBNOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeTogJ3VuIGHDsW8nLFxuICAgICAgICAgICAgeXk6ICclZCBhw7FvcycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXNVcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBFc3RvbmlhbiBbZXRdXG4vLyEgYXV0aG9yIDogSGVucnkgS2VobG1hbm4gOiBodHRwczovL2dpdGh1Yi5jb20vbWFkaGVucnlcbi8vISBpbXByb3ZlbWVudHMgOiBJbGxpbWFyIFRhbWJlayA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yYWd1bGthXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgczogWydtw7VuZSBzZWt1bmRpJywgJ23DtW5pIHNla3VuZCcsICdwYWFyIHNla3VuZGl0J10sXG4gICAgICAgICAgICBzczogW251bWJlciArICdzZWt1bmRpJywgbnVtYmVyICsgJ3Nla3VuZGl0J10sXG4gICAgICAgICAgICBtOiBbJ8O8aGUgbWludXRpJywgJ8O8a3MgbWludXQnXSxcbiAgICAgICAgICAgIG1tOiBbbnVtYmVyICsgJyBtaW51dGknLCBudW1iZXIgKyAnIG1pbnV0aXQnXSxcbiAgICAgICAgICAgIGg6IFsnw7xoZSB0dW5uaScsICd0dW5kIGFlZ2EnLCAnw7xrcyB0dW5kJ10sXG4gICAgICAgICAgICBoaDogW251bWJlciArICcgdHVubmknLCBudW1iZXIgKyAnIHR1bmRpJ10sXG4gICAgICAgICAgICBkOiBbJ8O8aGUgcMOkZXZhJywgJ8O8a3MgcMOkZXYnXSxcbiAgICAgICAgICAgIE06IFsna3V1IGFqYScsICdrdXUgYWVnYScsICfDvGtzIGt1dSddLFxuICAgICAgICAgICAgTU06IFtudW1iZXIgKyAnIGt1dScsIG51bWJlciArICcga3V1ZCddLFxuICAgICAgICAgICAgeTogWyfDvGhlIGFhc3RhJywgJ2Fhc3RhJywgJ8O8a3MgYWFzdGEnXSxcbiAgICAgICAgICAgIHl5OiBbbnVtYmVyICsgJyBhYXN0YScsIG51bWJlciArICcgYWFzdGF0J10sXG4gICAgICAgIH07XG4gICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0W2tleV1bMl0gPyBmb3JtYXRba2V5XVsyXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0Z1dHVyZSA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGV0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZXQnLCB7XG4gICAgICAgIG1vbnRoczogJ2phYW51YXJfdmVlYnJ1YXJfbcOkcnRzX2FwcmlsbF9tYWlfanV1bmlfanV1bGlfYXVndXN0X3NlcHRlbWJlcl9va3Rvb2Jlcl9ub3ZlbWJlcl9kZXRzZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFhbl92ZWVicl9tw6RydHNfYXByX21haV9qdXVuaV9qdXVsaV9hdWdfc2VwdF9va3Rfbm92X2RldHMnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAncMO8aGFww6Rldl9lc21hc3DDpGV2X3RlaXNpcMOkZXZfa29sbWFww6Rldl9uZWxqYXDDpGV2X3JlZWRlX2xhdXDDpGV2Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnUF9FX1RfS19OX1JfTCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdQX0VfVF9LX05fUl9MJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVMOkbmEsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0hvbW1lLF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdbSsOkcmdtaW5lXSBkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbRWlsZSxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0VlbG1pbmVdIGRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBww6RyYXN0JyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyB0YWdhc2knLFxuICAgICAgICAgICAgczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiAnJWQgcMOkZXZhJyxcbiAgICAgICAgICAgIE06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBldDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBCYXNxdWUgW2V1XVxuLy8hIGF1dGhvciA6IEVuZWtvIElsbGFycmFtZW5kaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9laWxsYXJyYVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGV1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZXUnLCB7XG4gICAgICAgIG1vbnRoczogJ3VydGFycmlsYV9vdHNhaWxhX21hcnR4b2FfYXBpcmlsYV9tYWlhdHphX2VrYWluYV91enRhaWxhX2FidXp0dWFfaXJhaWxhX3VycmlhX2F6YXJvYV9hYmVuZHVhJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ3VydC5fb3RzLl9tYXIuX2FwaS5fbWFpLl9la2EuX3V6dC5fYWJ1Ll9pcmEuX3Vyci5fYXphLl9hYmUuJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ2lnYW5kZWFfYXN0ZWxlaGVuYV9hc3RlYXJ0ZWFfYXN0ZWF6a2VuYV9vc3RlZ3VuYV9vc3RpcmFsYV9sYXJ1bmJhdGEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdpZy5fYWwuX2FyLl9hei5fb2cuX29sLl9sci4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnaWdfYWxfYXJfYXpfb2dfb2xfbHInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgWVlZWVtrb10gTU1NTVtyZW5dIERbYV0gSEg6bW0nLFxuICAgICAgICAgICAgbDogJ1lZWVktTS1EJyxcbiAgICAgICAgICAgIGxsOiAnWVlZWVtrb10gTU1NIERbYV0nLFxuICAgICAgICAgICAgbGxsOiAnWVlZWVtrb10gTU1NIERbYV0gSEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCwgWVlZWVtrb10gTU1NIERbYV0gSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tnYXVyXSBMVFtldGFuXScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2JpaGFyXSBMVFtldGFuXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgTFRbZXRhbl0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1thdHpvXSBMVFtldGFuXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1thdXJyZWtvXSBkZGRkIExUW2V0YW5dJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMgYmFycnUnLFxuICAgICAgICAgICAgcGFzdDogJ2R1ZWxhICVzJyxcbiAgICAgICAgICAgIHM6ICdzZWd1bmRvIGJhdHp1aycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG8nLFxuICAgICAgICAgICAgbTogJ21pbnV0dSBiYXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dHUnLFxuICAgICAgICAgICAgaDogJ29yZHUgYmF0JyxcbiAgICAgICAgICAgIGhoOiAnJWQgb3JkdScsXG4gICAgICAgICAgICBkOiAnZWd1biBiYXQnLFxuICAgICAgICAgICAgZGQ6ICclZCBlZ3VuJyxcbiAgICAgICAgICAgIE06ICdoaWxhYmV0ZSBiYXQnLFxuICAgICAgICAgICAgTU06ICclZCBoaWxhYmV0ZScsXG4gICAgICAgICAgICB5OiAndXJ0ZSBiYXQnLFxuICAgICAgICAgICAgeXk6ICclZCB1cnRlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBldTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBQZXJzaWFuIFtmYV1cbi8vISBhdXRob3IgOiBFYnJhaGltIEJ5YWdvd2kgOiBodHRwczovL2dpdGh1Yi5jb20vZWJyYW1pbmlvXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgJzEnOiAn27EnLFxuICAgICAgICAgICAgJzInOiAn27InLFxuICAgICAgICAgICAgJzMnOiAn27MnLFxuICAgICAgICAgICAgJzQnOiAn27QnLFxuICAgICAgICAgICAgJzUnOiAn27UnLFxuICAgICAgICAgICAgJzYnOiAn27YnLFxuICAgICAgICAgICAgJzcnOiAn27cnLFxuICAgICAgICAgICAgJzgnOiAn27gnLFxuICAgICAgICAgICAgJzknOiAn27knLFxuICAgICAgICAgICAgJzAnOiAn27AnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn27EnOiAnMScsXG4gICAgICAgICAgICAn27InOiAnMicsXG4gICAgICAgICAgICAn27MnOiAnMycsXG4gICAgICAgICAgICAn27QnOiAnNCcsXG4gICAgICAgICAgICAn27UnOiAnNScsXG4gICAgICAgICAgICAn27YnOiAnNicsXG4gICAgICAgICAgICAn27cnOiAnNycsXG4gICAgICAgICAgICAn27gnOiAnOCcsXG4gICAgICAgICAgICAn27knOiAnOScsXG4gICAgICAgICAgICAn27AnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgZmEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmYScsIHtcbiAgICAgICAgbW9udGhzOiAn2pjYp9mG2YjbjNmHX9mB2YjYsduM2Ydf2YXYp9ix2LNf2KLZiNix24zZhF/ZhdmHX9qY2YjYptmGX9qY2YjYptuM2Ydf2KfZiNiqX9iz2b7Yqtin2YXYqNixX9in2qnYqtio2LFf2YbZiNin2YXYqNixX9iv2LPYp9mF2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfamNin2YbZiNuM2Ydf2YHZiNix24zZh1/Zhdin2LHYs1/YotmI2LHbjNmEX9mF2Ydf2pjZiNim2YZf2pjZiNim24zZh1/Yp9mI2Kpf2LPZvtiq2KfZhdio2LFf2Kfaqdiq2KjYsV/ZhtmI2KfZhdio2LFf2K/Ys9in2YXYqNixJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ9uM2qlcXHUyMDBj2LTZhtio2Ydf2K/ZiNi02YbYqNmHX9iz2YdcXHUyMDBj2LTZhtio2Ydf2obZh9in2LHYtNmG2KjZh1/ZvtmG2KxcXHUyMDBj2LTZhtio2Ydf2KzZhdi52Ydf2LTZhtio2YcnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfbjNqpXFx1MjAwY9i02YbYqNmHX9iv2YjYtNmG2KjZh1/Ys9mHXFx1MjAwY9i02YbYqNmHX9qG2YfYp9ix2LTZhtio2Ydf2b7ZhtisXFx1MjAwY9i02YbYqNmHX9is2YXYudmHX9i02YbYqNmHJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9uMX9ivX9izX9qGX9m+X9isX9i0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9mC2KjZhCDYp9iyINi42YfYsXzYqNi52K8g2KfYsiDYuNmH2LEvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAv2KjYudivINin2LIg2LjZh9ixLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mC2KjZhCDYp9iyINi42YfYsSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2KjYudivINin2LIg2LjZh9ixJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhdix2YjYsiDYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vZgdix2K/YpyDYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYr9uM2LHZiNiyINiz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9m+24zYtF0gW9iz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9iv2LEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzINm+24zYtCcsXG4gICAgICAgICAgICBzOiAn2obZhtivINir2KfZhtuM2YcnLFxuICAgICAgICAgICAgc3M6ICclZCDYq9in2YbbjNmHJyxcbiAgICAgICAgICAgIG06ICfbjNqpINiv2YLbjNmC2YcnLFxuICAgICAgICAgICAgbW06ICclZCDYr9mC24zZgtmHJyxcbiAgICAgICAgICAgIGg6ICfbjNqpINiz2KfYudiqJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9i52KonLFxuICAgICAgICAgICAgZDogJ9uM2qkg2LHZiNiyJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2LHZiNiyJyxcbiAgICAgICAgICAgIE06ICfbjNqpINmF2KfZhycsXG4gICAgICAgICAgICBNTTogJyVkINmF2KfZhycsXG4gICAgICAgICAgICB5OiAn24zaqSDYs9in2YQnLFxuICAgICAgICAgICAgeXk6ICclZCDYs9in2YQnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9b27At27ldL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ92YUvLFxuICAgICAgICBvcmRpbmFsOiAnJWTZhScsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRmlubmlzaCBbZmldXG4vLyEgYXV0aG9yIDogVGFybW8gQWlkYW50YXVzdGEgOiBodHRwczovL2dpdGh1Yi5jb20vYmxlYWRvZlxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG51bWJlcnNQYXN0ID0gJ25vbGxhIHlrc2kga2Frc2kga29sbWUgbmVsasOkIHZpaXNpIGt1dXNpIHNlaXRzZW3DpG4ga2FoZGVrc2FuIHloZGVrc8Okbicuc3BsaXQoXG4gICAgICAgICAgICAnICdcbiAgICAgICAgKSxcbiAgICAgICAgbnVtYmVyc0Z1dHVyZSA9IFtcbiAgICAgICAgICAgICdub2xsYScsXG4gICAgICAgICAgICAneWhkZW4nLFxuICAgICAgICAgICAgJ2thaGRlbicsXG4gICAgICAgICAgICAna29sbWVuJyxcbiAgICAgICAgICAgICduZWxqw6RuJyxcbiAgICAgICAgICAgICd2aWlkZW4nLFxuICAgICAgICAgICAgJ2t1dWRlbicsXG4gICAgICAgICAgICBudW1iZXJzUGFzdFs3XSxcbiAgICAgICAgICAgIG51bWJlcnNQYXN0WzhdLFxuICAgICAgICAgICAgbnVtYmVyc1Bhc3RbOV0sXG4gICAgICAgIF07XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAnbXV1dGFtYW4gc2VrdW5uaW4nIDogJ211dXRhbWEgc2VrdW50aSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAnc2VrdW5uaW4nIDogJ3Nla3VudGlhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdtaW51dXRpbicgOiAnbWludXV0dGknO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ21pbnV1dGluJyA6ICdtaW51dXR0aWEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ3R1bm5pbicgOiAndHVudGknO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ3R1bm5pbicgOiAndHVudGlhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdww6RpdsOkbicgOiAncMOkaXbDpCc7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAncMOkaXbDpG4nIDogJ3DDpGl2w6TDpCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAna3V1a2F1ZGVuJyA6ICdrdXVrYXVzaSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAna3V1a2F1ZGVuJyA6ICdrdXVrYXV0dGEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ3Z1b2RlbicgOiAndnVvc2knO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ3Z1b2RlbicgOiAndnVvdHRhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSB2ZXJiYWxOdW1iZXIobnVtYmVyLCBpc0Z1dHVyZSkgKyAnICcgKyByZXN1bHQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHZlcmJhbE51bWJlcihudW1iZXIsIGlzRnV0dXJlKSB7XG4gICAgICAgIHJldHVybiBudW1iZXIgPCAxMFxuICAgICAgICAgICAgPyBpc0Z1dHVyZVxuICAgICAgICAgICAgICAgID8gbnVtYmVyc0Z1dHVyZVtudW1iZXJdXG4gICAgICAgICAgICAgICAgOiBudW1iZXJzUGFzdFtudW1iZXJdXG4gICAgICAgICAgICA6IG51bWJlcjtcbiAgICB9XG5cbiAgICB2YXIgZmkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmaScsIHtcbiAgICAgICAgbW9udGhzOiAndGFtbWlrdXVfaGVsbWlrdXVfbWFhbGlza3V1X2h1aHRpa3V1X3RvdWtva3V1X2tlc8Oka3V1X2hlaW7DpGt1dV9lbG9rdXVfc3l5c2t1dV9sb2tha3V1X21hcnJhc2t1dV9qb3VsdWt1dScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICd0YW1taV9oZWxtaV9tYWFsaXNfaHVodGlfdG91a29fa2Vzw6RfaGVpbsOkX2Vsb19zeXlzX2xva2FfbWFycmFzX2pvdWx1Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ3N1bm51bnRhaV9tYWFuYW50YWlfdGlpc3RhaV9rZXNraXZpaWtrb190b3JzdGFpX3BlcmphbnRhaV9sYXVhbnRhaScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3N1X21hX3RpX2tlX3RvX3BlX2xhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3N1X21hX3RpX2tlX3RvX3BlX2xhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISC5tbScsXG4gICAgICAgICAgICBMVFM6ICdISC5tbS5zcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0RvIE1NTU1bdGFdIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gSEgubW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIERvIE1NTU1bdGFdIFlZWVksIFtrbG9dIEhILm1tJyxcbiAgICAgICAgICAgIGw6ICdELk0uWVlZWScsXG4gICAgICAgICAgICBsbDogJ0RvIE1NTSBZWVlZJyxcbiAgICAgICAgICAgIGxsbDogJ0RvIE1NTSBZWVlZLCBba2xvXSBISC5tbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBEbyBNTU0gWVlZWSwgW2tsb10gSEgubW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1t0w6Ruw6TDpG5dIFtrbG9dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbaHVvbWVubmFdIFtrbG9dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBba2xvXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2VpbGVuXSBba2xvXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1t2aWltZV0gZGRkZFtuYV0gW2tsb10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBww6TDpHN0w6QnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHNpdHRlbicsXG4gICAgICAgICAgICBzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRmlsaXBpbm8gW2ZpbF1cbi8vISBhdXRob3IgOiBEYW4gSGFnbWFuIDogaHR0cHM6Ly9naXRodWIuY29tL2hhZ21hbmRhblxuLy8hIGF1dGhvciA6IE1hdHRoZXcgQ28gOiBodHRwczovL2dpdGh1Yi5jb20vbWF0dGhld2RlZWNvXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZmlsID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZmlsJywge1xuICAgICAgICBtb250aHM6ICdFbmVyb19QZWJyZXJvX01hcnNvX0FicmlsX01heW9fSHVueW9fSHVseW9fQWdvc3RvX1NldHllbWJyZV9Pa3R1YnJlX05vYnllbWJyZV9EaXN5ZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnRW5lX1BlYl9NYXJfQWJyX01heV9IdW5fSHVsX0Fnb19TZXRfT2t0X05vYl9EaXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnTGluZ2dvX0x1bmVzX01hcnRlc19NaXllcmt1bGVzX0h1d2ViZXNfQml5ZXJuZXNfU2FiYWRvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnTGluX0x1bl9NYXJfTWl5X0h1d19CaXlfU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0xpX0x1X01hX01pX0h1X0JpX1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ01NL0QvWVlZWScsXG4gICAgICAgICAgICBMTDogJ01NTU0gRCwgWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdNTU1NIEQsIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIE1NTU0gREQsIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ0xUIFtuZ2F5b25nIGFyYXddJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQnVrYXMgbmddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnTFQgW3NhIHN1c3Vub2QgbmFdIGRkZGQnLFxuICAgICAgICAgICAgbGFzdERheTogJ0xUIFtrYWhhcG9uXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ0xUIFtub29uZyBuYWthcmFhbmddIGRkZGQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdzYSBsb29iIG5nICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBhbmcgbmFrYWxpcGFzJyxcbiAgICAgICAgICAgIHM6ICdpbGFuZyBzZWd1bmRvJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kbycsXG4gICAgICAgICAgICBtOiAnaXNhbmcgbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvJyxcbiAgICAgICAgICAgIGg6ICdpc2FuZyBvcmFzJyxcbiAgICAgICAgICAgIGhoOiAnJWQgb3JhcycsXG4gICAgICAgICAgICBkOiAnaXNhbmcgYXJhdycsXG4gICAgICAgICAgICBkZDogJyVkIGFyYXcnLFxuICAgICAgICAgICAgTTogJ2lzYW5nIGJ1d2FuJyxcbiAgICAgICAgICAgIE1NOiAnJWQgYnV3YW4nLFxuICAgICAgICAgICAgeTogJ2lzYW5nIHRhb24nLFxuICAgICAgICAgICAgeXk6ICclZCB0YW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBGYXJvZXNlIFtmb11cbi8vISBhdXRob3IgOiBSYWduYXIgSm9oYW5uZXNlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yYWduYXIxMjNcbi8vISBhdXRob3IgOiBLcmlzdGlhbiBTYWthcmlzc29uIDogaHR0cHM6Ly9naXRodWIuY29tL3Nha2FyaXNzb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBmbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZvJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJzX2FwcsOtbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcl9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdzdW5udWRhZ3VyX23DoW5hZGFndXJfdMO9c2RhZ3VyX21pa3VkYWd1cl9ow7NzZGFndXJfZnLDrWdnamFkYWd1cl9sZXlnYXJkYWd1cicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3N1bl9tw6FuX3TDvXNfbWlrX2jDs3NfZnLDrV9sZXknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnc3VfbcOhX3TDvV9taV9ow7NfZnJfbGUnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRC4gTU1NTSwgWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW8ONIGRhZyBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbw40gbW9yZ2luIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbw40gZ2rDoXIga2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tzw63DsHN0dV0gZGRkZCBba2xdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAndW0gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHPDrcOwYW5pJyxcbiAgICAgICAgICAgIHM6ICdmw6Egc2VrdW5kJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VrdW5kaXInLFxuICAgICAgICAgICAgbTogJ2VpbiBtaW51dHR1cicsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0dGlyJyxcbiAgICAgICAgICAgIGg6ICdlaW4gdMOtbWknLFxuICAgICAgICAgICAgaGg6ICclZCB0w61tYXInLFxuICAgICAgICAgICAgZDogJ2VpbiBkYWd1cicsXG4gICAgICAgICAgICBkZDogJyVkIGRhZ2FyJyxcbiAgICAgICAgICAgIE06ICdlaW4gbcOhbmHDsHVyJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOhbmHDsGlyJyxcbiAgICAgICAgICAgIHk6ICdlaXR0IMOhcicsXG4gICAgICAgICAgICB5eTogJyVkIMOhcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZm87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRnJlbmNoIFtmcl1cbi8vISBhdXRob3IgOiBKb2huIEZpc2NoZXIgOiBodHRwczovL2dpdGh1Yi5jb20vamZyb2ZmaWNlXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzU3RyaWN0UmVnZXggPSAvXihqYW52aWVyfGbDqXZyaWVyfG1hcnN8YXZyaWx8bWFpfGp1aW58anVpbGxldHxhb8O7dHxzZXB0ZW1icmV8b2N0b2JyZXxub3ZlbWJyZXxkw6ljZW1icmUpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXggPSAvKGphbnZcXC4/fGbDqXZyXFwuP3xtYXJzfGF2clxcLj98bWFpfGp1aW58anVpbFxcLj98YW/Du3R8c2VwdFxcLj98b2N0XFwuP3xub3ZcXC4/fGTDqWNcXC4/KS9pLFxuICAgICAgICBtb250aHNSZWdleCA9IC8oamFudlxcLj98ZsOpdnJcXC4/fG1hcnN8YXZyXFwuP3xtYWl8anVpbnxqdWlsXFwuP3xhb8O7dHxzZXB0XFwuP3xvY3RcXC4/fG5vdlxcLj98ZMOpY1xcLj98amFudmllcnxmw6l2cmllcnxtYXJzfGF2cmlsfG1haXxqdWlufGp1aWxsZXR8YW/Du3R8c2VwdGVtYnJlfG9jdG9icmV8bm92ZW1icmV8ZMOpY2VtYnJlKS9pLFxuICAgICAgICBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9eamFudi9pLFxuICAgICAgICAgICAgL15mw6l2ci9pLFxuICAgICAgICAgICAgL15tYXJzL2ksXG4gICAgICAgICAgICAvXmF2ci9pLFxuICAgICAgICAgICAgL15tYWkvaSxcbiAgICAgICAgICAgIC9eanVpbi9pLFxuICAgICAgICAgICAgL15qdWlsL2ksXG4gICAgICAgICAgICAvXmFvw7t0L2ksXG4gICAgICAgICAgICAvXnNlcHQvaSxcbiAgICAgICAgICAgIC9eb2N0L2ksXG4gICAgICAgICAgICAvXm5vdi9pLFxuICAgICAgICAgICAgL15kw6ljL2ksXG4gICAgICAgIF07XG5cbiAgICB2YXIgZnIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmcicsIHtcbiAgICAgICAgbW9udGhzOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbnYuX2bDqXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW/Du3Rfc2VwdC5fb2N0Ll9ub3YuX2TDqWMuJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogbW9udGhzU3RyaWN0UmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IG1vbnRoc1Nob3J0U3RyaWN0UmVnZXgsXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzOiAnZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkaV9sdV9tYV9tZV9qZV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbQXVqb3VyZOKAmWh1aSDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tEZW1haW4gw6BdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSGllciDDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtkZXJuaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2RhbnMgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2lsIHkgYSAlcycsXG4gICAgICAgICAgICBzOiAncXVlbHF1ZXMgc2Vjb25kZXMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRlcycsXG4gICAgICAgICAgICBtOiAndW5lIG1pbnV0ZScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaDogJ3VuZSBoZXVyZScsXG4gICAgICAgICAgICBoaDogJyVkIGhldXJlcycsXG4gICAgICAgICAgICBkOiAndW4gam91cicsXG4gICAgICAgICAgICBkZDogJyVkIGpvdXJzJyxcbiAgICAgICAgICAgIE06ICd1biBtb2lzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9pcycsXG4gICAgICAgICAgICB5OiAndW4gYW4nLFxuICAgICAgICAgICAgeXk6ICclZCBhbnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZXJ8KS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBSZXR1cm4gJ2UnIHdoZW4gZGF5IG9mIG1vbnRoID4gMS4gTW92ZSB0aGlzIGNhc2UgaW5zaWRlXG4gICAgICAgICAgICAgICAgLy8gYmxvY2sgZm9yIG1hc2N1bGluZSB3b3JkcyBiZWxvdy5cbiAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzMzNzVcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAnZXInIDogJycpO1xuXG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBtYXNjdWxpbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBtb2lzLCB0cmltZXN0cmUsIGpvdXJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ2VyJyA6ICdlJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIGZlbWluaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogc2VtYWluZVxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdyZScgOiAnZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRnJlbmNoIChDYW5hZGEpIFtmci1jYV1cbi8vISBhdXRob3IgOiBKb25hdGhhbiBBYm91cmJpaCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb25iY2FcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBmckNhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZnItY2EnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RpX2x1X21hX21lX2plX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tBdWpvdXJk4oCZaHVpIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0RlbWFpbiDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tIaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2Rlcm5pZXIgw6BdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZGFucyAlcycsXG4gICAgICAgICAgICBwYXN0OiAnaWwgeSBhICVzJyxcbiAgICAgICAgICAgIHM6ICdxdWVscXVlcyBzZWNvbmRlcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZGVzJyxcbiAgICAgICAgICAgIG06ICd1bmUgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAndW5lIGhldXJlJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaGV1cmVzJyxcbiAgICAgICAgICAgIGQ6ICd1biBqb3VyJyxcbiAgICAgICAgICAgIGRkOiAnJWQgam91cnMnLFxuICAgICAgICAgICAgTTogJ3VuIG1vaXMnLFxuICAgICAgICAgICAgTU06ICclZCBtb2lzJyxcbiAgICAgICAgICAgIHk6ICd1biBhbicsXG4gICAgICAgICAgICB5eTogJyVkIGFucycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShlcnxlKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIG1hc2N1bGluZSBncmFtbWF0aWNhbCBnZW5kZXI6IG1vaXMsIHRyaW1lc3RyZSwgam91clxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAnZXInIDogJ2UnKTtcblxuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggZmVtaW5pbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBzZW1haW5lXG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ3JlJyA6ICdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnJDYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBGcmVuY2ggKFN3aXR6ZXJsYW5kKSBbZnItY2hdXG4vLyEgYXV0aG9yIDogR2FzcGFyZCBCdWNoZXIgOiBodHRwczovL2dpdGh1Yi5jb20vZ2FzcGFyZFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGZyQ2ggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmci1jaCcsIHtcbiAgICAgICAgbW9udGhzOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbnYuX2bDqXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW/Du3Rfc2VwdC5fb2N0Ll9ub3YuX2TDqWMuJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ2RpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZGlfbHVfbWFfbWVfamVfdmVfc2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0F1am91cmTigJlodWkgw6BdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbRGVtYWluIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8OgXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0hpZXIgw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZGVybmllciDDoF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdkYW5zICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdpbCB5IGEgJXMnLFxuICAgICAgICAgICAgczogJ3F1ZWxxdWVzIHNlY29uZGVzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kZXMnLFxuICAgICAgICAgICAgbTogJ3VuZSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICd1bmUgaGV1cmUnLFxuICAgICAgICAgICAgaGg6ICclZCBoZXVyZXMnLFxuICAgICAgICAgICAgZDogJ3VuIGpvdXInLFxuICAgICAgICAgICAgZGQ6ICclZCBqb3VycycsXG4gICAgICAgICAgICBNOiAndW4gbW9pcycsXG4gICAgICAgICAgICBNTTogJyVkIG1vaXMnLFxuICAgICAgICAgICAgeTogJ3VuIGFuJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYW5zJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGVyfGUpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggbWFzY3VsaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogbW9pcywgdHJpbWVzdHJlLCBqb3VyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdlcicgOiAnZScpO1xuXG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBmZW1pbmluZSBncmFtbWF0aWNhbCBnZW5kZXI6IHNlbWFpbmVcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAncmUnIDogJ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZyQ2g7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRnJpc2lhbiBbZnldXG4vLyEgYXV0aG9yIDogUm9iaW4gdmFuIGRlciBWbGlldCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yb2JpbjB2YW4wZGVyMHZcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHNTaG9ydFdpdGhEb3RzID0gJ2phbi5fZmViLl9tcnQuX2Fwci5fbWFpX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2Rlcy4nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0V2l0aG91dERvdHMgPSAnamFuX2ZlYl9tcnRfYXByX21haV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZXMnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICk7XG5cbiAgICB2YXIgZnkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmeScsIHtcbiAgICAgICAgbW9udGhzOiAnamFubmV3YXJpc19mZWJyZXdhcmlzX21hYXJ0X2FwcmlsX21hYWllX2p1bnlfanVseV9hdWd1c3R1c19zZXB0aW1iZXJfb2t0b2Jlcl9ub3ZpbWJlcl9kZXNpbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhvdXREb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnc25laW5fbW9hbmRlaV90aWlzZGVpX3dvYW5zZGVpX3RvbmdlcnNkZWlfZnJlZWRfc25lb24nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdzaS5fbW8uX3RpLl93by5fdG8uX2ZyLl9zby4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU2lfTW9fVGlfV29fVG9fRnJfU28nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELU1NLVlZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2hqb2VkIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vYXJuIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2p1c3RlciBvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbw7RmcsO7bmVdIGRkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ29lciAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgbHluJyxcbiAgICAgICAgICAgIHM6ICdpbiBwZWFyIHNla29uZGVuJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vrb25kZW4nLFxuICAgICAgICAgICAgbTogJ2llbiBtaW7DunQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVuJyxcbiAgICAgICAgICAgIGg6ICdpZW4gb2VyZScsXG4gICAgICAgICAgICBoaDogJyVkIG9lcmVuJyxcbiAgICAgICAgICAgIGQ6ICdpZW4gZGVpJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGFnZW4nLFxuICAgICAgICAgICAgTTogJ2llbiBtb2FubmUnLFxuICAgICAgICAgICAgTU06ICclZCBtb2FubmVuJyxcbiAgICAgICAgICAgIHk6ICdpZW4gamllcicsXG4gICAgICAgICAgICB5eTogJyVkIGppZXJyZW4nLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3RlfGRlKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgbnVtYmVyICtcbiAgICAgICAgICAgICAgICAobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8fCBudW1iZXIgPj0gMjAgPyAnc3RlJyA6ICdkZScpXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSXJpc2ggb3IgSXJpc2ggR2FlbGljIFtnYV1cbi8vISBhdXRob3IgOiBBbmRyw6kgU2lsdmEgOiBodHRwczovL2dpdGh1Yi5jb20vYXNrcHRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHMgPSBbXG4gICAgICAgICAgICAnRWFuw6FpcicsXG4gICAgICAgICAgICAnRmVhYmhyYScsXG4gICAgICAgICAgICAnTcOhcnRhJyxcbiAgICAgICAgICAgICdBaWJyZcOhbicsXG4gICAgICAgICAgICAnQmVhbHRhaW5lJyxcbiAgICAgICAgICAgICdNZWl0aGVhbWgnLFxuICAgICAgICAgICAgJ0nDumlsJyxcbiAgICAgICAgICAgICdMw7puYXNhJyxcbiAgICAgICAgICAgICdNZcOhbiBGw7NtaGFpcicsXG4gICAgICAgICAgICAnRGVpcmVhZGggRsOzbWhhaXInLFxuICAgICAgICAgICAgJ1NhbWhhaW4nLFxuICAgICAgICAgICAgJ05vbGxhaWcnLFxuICAgICAgICBdLFxuICAgICAgICBtb250aHNTaG9ydCA9IFtcbiAgICAgICAgICAgICdFYW4nLFxuICAgICAgICAgICAgJ0ZlYWJoJyxcbiAgICAgICAgICAgICdNw6FydCcsXG4gICAgICAgICAgICAnQWliJyxcbiAgICAgICAgICAgICdCZWFsJyxcbiAgICAgICAgICAgICdNZWl0aCcsXG4gICAgICAgICAgICAnScO6aWwnLFxuICAgICAgICAgICAgJ0zDum4nLFxuICAgICAgICAgICAgJ00uRi4nLFxuICAgICAgICAgICAgJ0QuRi4nLFxuICAgICAgICAgICAgJ1NhbWgnLFxuICAgICAgICAgICAgJ05vbGwnLFxuICAgICAgICBdLFxuICAgICAgICB3ZWVrZGF5cyA9IFtcbiAgICAgICAgICAgICdEw6kgRG9taG5haWdoJyxcbiAgICAgICAgICAgICdEw6kgTHVhaW4nLFxuICAgICAgICAgICAgJ0TDqSBNw6FpcnQnLFxuICAgICAgICAgICAgJ0TDqSBDw6lhZGFvaW4nLFxuICAgICAgICAgICAgJ0TDqWFyZGFvaW4nLFxuICAgICAgICAgICAgJ0TDqSBoQW9pbmUnLFxuICAgICAgICAgICAgJ0TDqSBTYXRoYWlybicsXG4gICAgICAgIF0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgPSBbJ0RvbWgnLCAnTHVhbicsICdNw6FpcnQnLCAnQ8OpYWQnLCAnRMOpYXInLCAnQW9pbmUnLCAnU2F0aCddLFxuICAgICAgICB3ZWVrZGF5c01pbiA9IFsnRG8nLCAnTHUnLCAnTcOhJywgJ0PDqScsICdEw6knLCAnQScsICdTYSddO1xuXG4gICAgdmFyIGdhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ2EnLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzU2hvcnQsXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiB3ZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogd2Vla2RheXNTaG9ydCxcbiAgICAgICAgd2Vla2RheXNNaW46IHdlZWtkYXlzTWluLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0lubml1IGFnXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0Ftw6FyYWNoIGFnXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FnXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0lubsOpIGFnXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3NlbyBjYWl0ZV0gW2FnXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2kgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIMOzIHNoaW4nLFxuICAgICAgICAgICAgczogJ2PDunBsYSBzb2ljaW5kJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc29pY2luZCcsXG4gICAgICAgICAgICBtOiAnbsOzaW3DqWFkJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbsOzaW3DqWFkJyxcbiAgICAgICAgICAgIGg6ICd1YWlyIGFuIGNobG9pZycsXG4gICAgICAgICAgICBoaDogJyVkIHVhaXIgYW4gY2hsb2lnJyxcbiAgICAgICAgICAgIGQ6ICdsw6EnLFxuICAgICAgICAgICAgZGQ6ICclZCBsw6EnLFxuICAgICAgICAgICAgTTogJ23DrScsXG4gICAgICAgICAgICBNTTogJyVkIG3DrW9ubmEnLFxuICAgICAgICAgICAgeTogJ2JsaWFpbicsXG4gICAgICAgICAgICB5eTogJyVkIGJsaWFpbicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShkfG5hfG1oKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSBudW1iZXIgPT09IDEgPyAnZCcgOiBudW1iZXIgJSAxMCA9PT0gMiA/ICduYScgOiAnbWgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNjb3R0aXNoIEdhZWxpYyBbZ2RdXG4vLyEgYXV0aG9yIDogSm9uIEFzaGRvd24gOiBodHRwczovL2dpdGh1Yi5jb20vam9uYXNoZG93blxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRocyA9IFtcbiAgICAgICAgICAgICdBbSBGYW9pbGxlYWNoJyxcbiAgICAgICAgICAgICdBbiBHZWFycmFuJyxcbiAgICAgICAgICAgICdBbSBNw6BydCcsXG4gICAgICAgICAgICAnQW4gR2libGVhbicsXG4gICAgICAgICAgICAnQW4gQ8OoaXRlYW4nLFxuICAgICAgICAgICAgJ0FuIHQtw5JnbWhpb3MnLFxuICAgICAgICAgICAgJ0FuIHQtSXVjaGFyJyxcbiAgICAgICAgICAgICdBbiBMw7luYXN0YWwnLFxuICAgICAgICAgICAgJ0FuIHQtU3VsdGFpbicsXG4gICAgICAgICAgICAnQW4gRMOgbWhhaXInLFxuICAgICAgICAgICAgJ0FuIHQtU2FtaGFpbicsXG4gICAgICAgICAgICAnQW4gRMO5YmhsYWNoZCcsXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gW1xuICAgICAgICAgICAgJ0Zhb2knLFxuICAgICAgICAgICAgJ0dlYXInLFxuICAgICAgICAgICAgJ03DoHJ0JyxcbiAgICAgICAgICAgICdHaWJsJyxcbiAgICAgICAgICAgICdDw6hpdCcsXG4gICAgICAgICAgICAnw5JnbWgnLFxuICAgICAgICAgICAgJ0l1Y2gnLFxuICAgICAgICAgICAgJ0zDuW4nLFxuICAgICAgICAgICAgJ1N1bHQnLFxuICAgICAgICAgICAgJ0TDoG1oJyxcbiAgICAgICAgICAgICdTYW1oJyxcbiAgICAgICAgICAgICdEw7liaCcsXG4gICAgICAgIF0sXG4gICAgICAgIHdlZWtkYXlzID0gW1xuICAgICAgICAgICAgJ0RpZMOybWhuYWljaCcsXG4gICAgICAgICAgICAnRGlsdWFpbicsXG4gICAgICAgICAgICAnRGltw6BpcnQnLFxuICAgICAgICAgICAgJ0RpY2lhZGFpbicsXG4gICAgICAgICAgICAnRGlhcmRhb2luJyxcbiAgICAgICAgICAgICdEaWhhb2luZScsXG4gICAgICAgICAgICAnRGlzYXRoYWlybmUnLFxuICAgICAgICBdLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0ID0gWydEaWQnLCAnRGlsJywgJ0RpbScsICdEaWMnLCAnRGlhJywgJ0RpaCcsICdEaXMnXSxcbiAgICAgICAgd2Vla2RheXNNaW4gPSBbJ0TDsicsICdMdScsICdNw6AnLCAnQ2knLCAnQXInLCAnSGEnLCAnU2EnXTtcblxuICAgIHZhciBnZCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2dkJywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRoc1Nob3J0LFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogd2Vla2RheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6IHdlZWtkYXlzU2hvcnQsXG4gICAgICAgIHdlZWtkYXlzTWluOiB3ZWVrZGF5c01pbixcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tBbi1kaXVnaCBhaWddIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQS1tw6BpcmVhY2ggYWlnXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FpZ10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tBbi1kw6ggYWlnXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3NlbyBjaGFpZGhdIFthaWddIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnYW5uIGFuICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdiaG8gY2hpb25uICVzJyxcbiAgICAgICAgICAgIHM6ICdiZWFnYW4gZGlvZ2FuJyxcbiAgICAgICAgICAgIHNzOiAnJWQgZGlvZ2FuJyxcbiAgICAgICAgICAgIG06ICdtaW9uYWlkJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWlvbmFpZGVhbicsXG4gICAgICAgICAgICBoOiAndWFpcicsXG4gICAgICAgICAgICBoaDogJyVkIHVhaXJlYW4nLFxuICAgICAgICAgICAgZDogJ2xhdGhhJyxcbiAgICAgICAgICAgIGRkOiAnJWQgbGF0aGEnLFxuICAgICAgICAgICAgTTogJ23DrG9zJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOsb3NhbicsXG4gICAgICAgICAgICB5OiAnYmxpYWRobmEnLFxuICAgICAgICAgICAgeXk6ICclZCBibGlhZGhuYScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShkfG5hfG1oKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSBudW1iZXIgPT09IDEgPyAnZCcgOiBudW1iZXIgJSAxMCA9PT0gMiA/ICduYScgOiAnbWgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdkO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEdhbGljaWFuIFtnbF1cbi8vISBhdXRob3IgOiBKdWFuIEcuIEh1cnRhZG8gOiBodHRwczovL2dpdGh1Yi5jb20vanVhbmdodXJ0YWRvXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZ2wgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdnbCcsIHtcbiAgICAgICAgbW9udGhzOiAneGFuZWlyb19mZWJyZWlyb19tYXJ6b19hYnJpbF9tYWlvX3h1w7FvX3h1bGxvX2Fnb3N0b19zZXRlbWJyb19vdXR1YnJvX25vdmVtYnJvX2RlY2VtYnJvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ3hhbi5fZmViLl9tYXIuX2Fici5fbWFpLl94dcOxLl94dWwuX2Fnby5fc2V0Ll9vdXQuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdkb21pbmdvX2x1bnNfbWFydGVzX23DqXJjb3Jlc194b3Zlc192ZW5yZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RvbS5fbHVuLl9tYXIuX23DqXIuX3hvdi5fdmVuLl9zw6FiLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkb19sdV9tYV9tw6lfeG9fdmVfc8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2hveGUgJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAnw6FzJyA6ICfDoScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1ttYcOxw6EgJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAnw6FzJyA6ICfDoScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFsnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICfDoXMnIDogJ2EnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbb250ZSAnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICfDoScgOiAnYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgJ1tvXSBkZGRkIFtwYXNhZG8gJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAnw6FzJyA6ICdhJykgKyAnXSBMVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ci5pbmRleE9mKCd1bicpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnbicgKyBzdHI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAnZW4gJyArIHN0cjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXN0OiAnaGFpICVzJyxcbiAgICAgICAgICAgIHM6ICd1bnMgc2VndW5kb3MnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoOiAndW5oYSBob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZDogJ3VuIGTDrWEnLFxuICAgICAgICAgICAgZGQ6ICclZCBkw61hcycsXG4gICAgICAgICAgICBNOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeTogJ3VuIGFubycsXG4gICAgICAgICAgICB5eTogJyVkIGFub3MnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEtvbmthbmkgRGV2YW5hZ2FyaSBzY3JpcHQgW2dvbS1kZXZhXVxuLy8hIGF1dGhvciA6IFRoZSBEaXNjb3ZlcmVyIDogaHR0cHM6Ly9naXRodWIuY29tL1dpa2lEaXNjb3ZlcmVyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgczogWyfgpKXgpYvgpKHgpK/gpL4g4KS44KWF4KSV4KSC4KSh4KS+4KSC4KSo4KWAJywgJ+CkpeCli+CkoeClhyDgpLjgpYXgpJXgpILgpKEnXSxcbiAgICAgICAgICAgIHNzOiBbbnVtYmVyICsgJyDgpLjgpYXgpJXgpILgpKHgpL7gpILgpKjgpYAnLCBudW1iZXIgKyAnIOCkuOClheCkleCkguCkoSddLFxuICAgICAgICAgICAgbTogWyfgpI/gpJXgpL4g4KSu4KS/4KSj4KSf4KS+4KSoJywgJ+Ckj+CklSDgpK7gpL/gpKjgpYLgpJ8nXSxcbiAgICAgICAgICAgIG1tOiBbbnVtYmVyICsgJyDgpK7gpL/gpKPgpJ/gpL7gpILgpKjgpYAnLCBudW1iZXIgKyAnIOCkruCkv+Cko+Ckn+CkvuCkgiddLFxuICAgICAgICAgICAgaDogWyfgpI/gpJXgpL4g4KS14KSw4KS+4KSoJywgJ+Ckj+CklSDgpLXgpLAnXSxcbiAgICAgICAgICAgIGhoOiBbbnVtYmVyICsgJyDgpLXgpLDgpL7gpILgpKjgpYAnLCBudW1iZXIgKyAnIOCkteCksOCkvuCkgiddLFxuICAgICAgICAgICAgZDogWyfgpI/gpJXgpL4g4KSm4KS/4KS44KS+4KSoJywgJ+Ckj+CklSDgpKbgpYDgpLgnXSxcbiAgICAgICAgICAgIGRkOiBbbnVtYmVyICsgJyDgpKbgpL/gpLjgpL7gpILgpKjgpYAnLCBudW1iZXIgKyAnIOCkpuClgOCkuCddLFxuICAgICAgICAgICAgTTogWyfgpI/gpJXgpL4g4KSu4KWN4KS54KSv4KSo4KWN4KSv4KS+4KSoJywgJ+Ckj+CklSDgpK7gpY3gpLngpK/gpKjgpYsnXSxcbiAgICAgICAgICAgIE1NOiBbbnVtYmVyICsgJyDgpK7gpY3gpLngpK/gpKjgpY3gpK/gpL7gpKjgpYAnLCBudW1iZXIgKyAnIOCkruCljeCkueCkr+CkqOClhyddLFxuICAgICAgICAgICAgeTogWyfgpI/gpJXgpL4g4KS14KSw4KWN4KS44KS+4KSoJywgJ+Ckj+CklSDgpLXgpLDgpY3gpLgnXSxcbiAgICAgICAgICAgIHl5OiBbbnVtYmVyICsgJyDgpLXgpLDgpY3gpLjgpL7gpILgpKjgpYAnLCBudW1iZXIgKyAnIOCkteCksOCljeCkuOCkvuCkgiddLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBnb21EZXZhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ29tLWRldmEnLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ+CknOCkvuCkqOClh+CkteCkvuCksOClgF/gpKvgpYfgpKzgpY3gpLDgpYHgpLXgpL7gpLDgpYBf4KSu4KS+4KSw4KWN4KSaX+Ckj+CkquCljeCksOClgOCksl/gpK7gpYdf4KSc4KWC4KSoX+CknOClgeCksuCkr1/gpJHgpJfgpLjgpY3gpJ9f4KS44KSq4KWN4KSf4KWH4KSC4KSs4KSwX+CkkeCkleCljeCkn+Cli+CkrOCksF/gpKjgpYvgpLXgpY3gpLngpYfgpILgpKzgpLBf4KSh4KS/4KS44KWH4KSC4KSs4KSwJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmb3JtYXQ6ICfgpJzgpL7gpKjgpYfgpLXgpL7gpLDgpYDgpJrgpY3gpK/gpL5f4KSr4KWH4KSs4KWN4KSw4KWB4KS14KS+4KSw4KWA4KSa4KWN4KSv4KS+X+CkruCkvuCksOCljeCkmuCkvuCkmuCljeCkr+Ckvl/gpI/gpKrgpY3gpLDgpYDgpLLgpL7gpJrgpY3gpK/gpL5f4KSu4KWH4KSv4KS+4KSa4KWN4KSv4KS+X+CknOClguCkqOCkvuCkmuCljeCkr+Ckvl/gpJzgpYHgpLLgpK/gpL7gpJrgpY3gpK/gpL5f4KSR4KSX4KS44KWN4KSf4KS+4KSa4KWN4KSv4KS+X+CkuOCkquCljeCkn+Clh+CkguCkrOCksOCkvuCkmuCljeCkr+Ckvl/gpJHgpJXgpY3gpJ/gpYvgpKzgpLDgpL7gpJrgpY3gpK/gpL5f4KSo4KWL4KS14KWN4KS54KWH4KSC4KSs4KSw4KS+4KSa4KWN4KSv4KS+X+CkoeCkv+CkuOClh+CkguCkrOCksOCkvuCkmuCljeCkr+Ckvicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9NTU1NKFxccykrRFtvRF0/LyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfgpJzgpL7gpKjgpYcuX+Ckq+Clh+CkrOCljeCksOClgS5f4KSu4KS+4KSw4KWN4KSaX+Ckj+CkquCljeCksOClgC5f4KSu4KWHX+CknOClguCkqF/gpJzgpYHgpLIuX+CkkeCkly5f4KS44KSq4KWN4KSf4KWH4KSCLl/gpJHgpJXgpY3gpJ/gpYsuX+CkqOCli+CkteCljeCkueClh+Ckgi5f4KSh4KS/4KS44KWH4KSCLicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfgpIbgpK/gpKTgpL7gpLBf4KS44KWL4KSu4KS+4KSwX+CkruCkguCkl+Cks+CkvuCksF/gpKzgpYHgpKfgpLXgpL7gpLBf4KSs4KS/4KSw4KWH4KS44KWN4KSk4KS+4KSwX+CkuOClgeCkleCljeCksOCkvuCksF/gpLbgpYfgpKjgpLXgpL7gpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgpIbgpK/gpKQuX+CkuOCli+Ckri5f4KSu4KSC4KSX4KSzLl/gpKzgpYHgpKcuX+CkrOCljeCksOClh+CkuOCljeCkpC5f4KS44KWB4KSV4KWN4KSwLl/gpLbgpYfgpKguJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+Ckhl/gpLjgpYtf4KSu4KSCX+CkrOClgV/gpKzgpY3gpLDgpYdf4KS44KWBX+CktuClhycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0gW+CkteCkvuCknOCkpOCkvuCkgl0nLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzIFvgpLXgpL7gpJzgpKTgpL7gpIJdJyxcbiAgICAgICAgICAgIEw6ICdERC1NTS1ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgQSBoOm1tIFvgpLXgpL7gpJzgpKTgpL7gpIJdJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBNTU1NIERvLCBZWVlZLCBBIGg6bW0gW+CkteCkvuCknOCkpOCkvuCkgl0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCwgRCBNTU0gWVlZWSwgQSBoOm1tIFvgpLXgpL7gpJzgpKTgpL7gpIJdJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KSG4KSv4KScXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+Ckq+CkvuCksuCljeCkr+CkvuCkgl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb4KSr4KWB4KSh4KSy4KWLXSBkZGRkWyxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KSV4KS+4KSyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgpKvgpL7gpJ/gpLLgpYtdIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4KSG4KSm4KWA4KSCJyxcbiAgICAgICAgICAgIHM6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBzczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOCkteClh+CksCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhlIG9yZGluYWwgJ+CkteClh+CksCcgb25seSBhcHBsaWVzIHRvIGRheSBvZiB0aGUgbW9udGhcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfgpLXgpYfgpLAnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4KSw4KS+4KSk4KWAfOCkuOCkleCkvuCks+ClgOCkgnzgpKbgpKjgpKrgpL7gpLDgpL7gpIJ84KS44KS+4KSC4KSc4KWHLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4KSw4KS+4KSk4KWAJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS44KSV4KS+4KSz4KWA4KSCJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkpuCkqOCkquCkvuCksOCkvuCkgicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+IDEyID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLjgpL7gpILgpJzgpYcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KWAJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLjgpJXgpL7gpLPgpYDgpIInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkpuCkqOCkquCkvuCksOCkvuCkgic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KS+4KSC4KSc4KWHJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKTgpYAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdvbURldmE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogS29ua2FuaSBMYXRpbiBzY3JpcHQgW2dvbS1sYXRuXVxuLy8hIGF1dGhvciA6IFRoZSBEaXNjb3ZlcmVyIDogaHR0cHM6Ly9naXRodWIuY29tL1dpa2lEaXNjb3ZlcmVyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgczogWyd0aG9kZGVhIHNla29uZGFtbmknLCAndGhvZGRlIHNla29uZCddLFxuICAgICAgICAgICAgc3M6IFtudW1iZXIgKyAnIHNla29uZGFtbmknLCBudW1iZXIgKyAnIHNla29uZCddLFxuICAgICAgICAgICAgbTogWydla2EgbWludGFuJywgJ2VrIG1pbnV0J10sXG4gICAgICAgICAgICBtbTogW251bWJlciArICcgbWludGFtbmknLCBudW1iZXIgKyAnIG1pbnRhbSddLFxuICAgICAgICAgICAgaDogWydla2Egdm9yYW4nLCAnZWsgdm9yJ10sXG4gICAgICAgICAgICBoaDogW251bWJlciArICcgdm9yYW1uaScsIG51bWJlciArICcgdm9yYW0nXSxcbiAgICAgICAgICAgIGQ6IFsnZWthIGRpc2FuJywgJ2VrIGRpcyddLFxuICAgICAgICAgICAgZGQ6IFtudW1iZXIgKyAnIGRpc2FtbmknLCBudW1iZXIgKyAnIGRpcyddLFxuICAgICAgICAgICAgTTogWydla2EgbWhvaW5lYW4nLCAnZWsgbWhvaW5vJ10sXG4gICAgICAgICAgICBNTTogW251bWJlciArICcgbWhvaW5lYW1uaScsIG51bWJlciArICcgbWhvaW5lJ10sXG4gICAgICAgICAgICB5OiBbJ2VrYSB2b3JzYW4nLCAnZWsgdm9yb3MnXSxcbiAgICAgICAgICAgIHl5OiBbbnVtYmVyICsgJyB2b3JzYW1uaScsIG51bWJlciArICcgdm9yc2FtJ10sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBpc0Z1dHVyZSA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGdvbUxhdG4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdnb20tbGF0bicsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOiAnSmFuZXJfRmVicmVyX01hcnNfQWJyaWxfTWFpX0p1bl9KdWxhaV9BZ29zdF9TZXRlbWJyX090dWJyX05vdmVtYnJfRGV6ZW1icicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZm9ybWF0OiAnSmFuZXJhY2hlYV9GZWJyZXJhY2hlYV9NYXJzYWNoZWFfQWJyaWxhY2hlYV9NYWlhY2hlYV9KdW5hY2hlYV9KdWxhaWFjaGVhX0Fnb3N0YWNoZWFfU2V0ZW1icmFjaGVhX090dWJyYWNoZWFfTm92ZW1icmFjaGVhX0RlemVtYnJhY2hlYScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9NTU1NKFxccykrRFtvRF0/LyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW4uX0ZlYi5fTWFyc19BYnIuX01haV9KdW5fSnVsLl9BZ28uX1NldC5fT3R1Ll9Ob3YuX0Rlei4nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiBcIkFpdGFyX1NvbWFyX01vbmdsbGFyX0J1ZGh2YXJfQmlyZXN0YXJfU3VrcmFyX1Nvbid2YXJcIi5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnQWl0Ll9Tb20uX01vbi5fQnVkLl9CcmUuX1N1ay5fU29uLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdBaV9TbV9Nb19CdV9Ccl9TdV9Tbicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0gW3ZhenRhXScsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3MgW3ZhenRhXScsXG4gICAgICAgICAgICBMOiAnREQtTU0tWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEEgaDptbSBbdmF6dGFdJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBNTU1NIERvLCBZWVlZLCBBIGg6bW0gW3ZhenRhXScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBEIE1NTSBZWVlZLCBBIGg6bW0gW3ZhenRhXScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0Fpel0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tGYWxlYW1dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW0Z1ZGRsb10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0thbF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbRmF0dGxvXSBkZGRkWyxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFkaW0nLFxuICAgICAgICAgICAgczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZXIpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIHRoZSBvcmRpbmFsICdlcicgb25seSBhcHBsaWVzIHRvIGRheSBvZiB0aGUgbW9udGhcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICdlcic7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9yYXRpfHNva2FsbGltfGRvbnBhcmFtfHNhbmplLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAncmF0aScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3Nva2FsbGltJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ2RvbnBhcmFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID4gMTIgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3NhbmplJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JhdGknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3Nva2FsbGltJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkb25wYXJhbSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc2FuamUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JhdGknO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdvbUxhdG47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogR3VqYXJhdGkgW2d1XVxuLy8hIGF1dGhvciA6IEthdXNoaWsgVGhhbmtpIDogaHR0cHM6Ly9naXRodWIuY29tL0thdXNoaWsxOTg3XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgJzEnOiAn4KunJyxcbiAgICAgICAgICAgICcyJzogJ+CrqCcsXG4gICAgICAgICAgICAnMyc6ICfgq6knLFxuICAgICAgICAgICAgJzQnOiAn4KuqJyxcbiAgICAgICAgICAgICc1JzogJ+CrqycsXG4gICAgICAgICAgICAnNic6ICfgq6wnLFxuICAgICAgICAgICAgJzcnOiAn4KutJyxcbiAgICAgICAgICAgICc4JzogJ+CrricsXG4gICAgICAgICAgICAnOSc6ICfgq68nLFxuICAgICAgICAgICAgJzAnOiAn4KumJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+Crpyc6ICcxJyxcbiAgICAgICAgICAgICfgq6gnOiAnMicsXG4gICAgICAgICAgICAn4KupJzogJzMnLFxuICAgICAgICAgICAgJ+Crqic6ICc0JyxcbiAgICAgICAgICAgICfgq6snOiAnNScsXG4gICAgICAgICAgICAn4KusJzogJzYnLFxuICAgICAgICAgICAgJ+CrrSc6ICc3JyxcbiAgICAgICAgICAgICfgq64nOiAnOCcsXG4gICAgICAgICAgICAn4KuvJzogJzknLFxuICAgICAgICAgICAgJ+Crpic6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBndSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2d1Jywge1xuICAgICAgICBtb250aHM6ICfgqpzgqr7gqqjgq43gqq/gq4HgqobgqrDgq4Bf4Kqr4KuH4Kqs4KuN4Kqw4KuB4KqG4Kqw4KuAX+CqruCqvuCqsOCrjeCqml/gqo/gqqrgq43gqrDgqr/gqrJf4Kqu4KuHX+CqnOCrguCqqF/gqpzgq4HgqrLgqr7gqohf4KqR4KqX4Kq44KuN4KqfX+CquOCqquCrjeCqn+Crh+CqruCrjeCqrOCqsF/gqpHgqpXgq43gqp/gq43gqqzgqrBf4Kqo4Kq14KuH4Kqu4KuN4Kqs4KqwX+CqoeCqv+CquOCrh+CqruCrjeCqrOCqsCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfgqpzgqr7gqqjgq43gqq/gq4EuX+Cqq+Crh+CqrOCrjeCqsOCrgS5f4Kqu4Kq+4Kqw4KuN4KqaX+Cqj+CqquCrjeCqsOCqvy5f4Kqu4KuHX+CqnOCrguCqqF/gqpzgq4HgqrLgqr4uX+CqkeCqly5f4Kq44Kqq4KuN4Kqf4KuHLl/gqpHgqpXgq43gqp/gq40uX+CqqOCqteCrhy5f4Kqh4Kq/4Kq44KuHLicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfgqrDgqrXgqr/gqrXgqr7gqrBf4Kq44KuL4Kqu4Kq14Kq+4KqwX+CqruCqguCql+Cqs+CqteCqvuCqsF/gqqzgq4Hgqqfgq43gqrXgqr7gqrBf4KqX4KuB4Kqw4KuB4Kq14Kq+4KqwX+CqtuCrgeCqleCrjeCqsOCqteCqvuCqsF/gqrbgqqjgqr/gqrXgqr7gqrAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgqrDgqrXgqr9f4Kq44KuL4KquX+CqruCqguCql+Cqs1/gqqzgq4Hgqqfgq41f4KqX4KuB4Kqw4KuBX+CqtuCrgeCqleCrjeCqsF/gqrbgqqjgqr8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4KqwX+CquOCri1/gqq7gqoJf4Kqs4KuBX+Cql+CrgV/gqrbgq4Ff4Kq2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0g4Kq14Kq+4KqX4KuN4Kqv4KuHJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyDgqrXgqr7gqpfgq43gqq/gq4cnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCqteCqvuCql+CrjeCqr+CrhycsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgqrXgqr7gqpfgq43gqq/gq4cnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgqobgqpxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KqV4Kq+4Kqy4KuHXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KqX4KqH4KqV4Kq+4Kqy4KuHXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgqqrgqr7gqpvgqrLgqr5dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4Kqu4Kq+JyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgqqrgqrngq4fgqrLgqr4nLFxuICAgICAgICAgICAgczogJ+CqheCqruCrgeCqlSDgqqrgqrPgq4snLFxuICAgICAgICAgICAgc3M6ICclZCDgqrjgq4fgqpXgqoLgqqEnLFxuICAgICAgICAgICAgbTogJ+Cqj+CqlSDgqq7gqr/gqqjgqr/gqp8nLFxuICAgICAgICAgICAgbW06ICclZCDgqq7gqr/gqqjgqr/gqp8nLFxuICAgICAgICAgICAgaDogJ+Cqj+CqlSDgqpXgqrLgqr7gqpUnLFxuICAgICAgICAgICAgaGg6ICclZCDgqpXgqrLgqr7gqpUnLFxuICAgICAgICAgICAgZDogJ+Cqj+CqlSDgqqbgqr/gqrXgqrgnLFxuICAgICAgICAgICAgZGQ6ICclZCDgqqbgqr/gqrXgqrgnLFxuICAgICAgICAgICAgTTogJ+Cqj+CqlSDgqq7gqrngqr/gqqjgq4snLFxuICAgICAgICAgICAgTU06ICclZCDgqq7gqrngqr/gqqjgq4snLFxuICAgICAgICAgICAgeTogJ+Cqj+CqlSDgqrXgqrDgq43gqrcnLFxuICAgICAgICAgICAgeXk6ICclZCDgqrXgqrDgq43gqrcnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Kun4Kuo4Kup4Kuq4Kur4Kus4Kut4Kuu4Kuv4KumXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyBHdWphcmF0aSBub3RhdGlvbiBmb3IgbWVyaWRpZW1zIGFyZSBxdWl0ZSBmdXp6eSBpbiBwcmFjdGljZS4gV2hpbGUgdGhlcmUgZXhpc3RzXG4gICAgICAgIC8vIGEgcmlnaWQgbm90aW9uIG9mIGEgJ1BhaGFyJyBpdCBpcyBub3QgdXNlZCBhcyByaWdpZGx5IGluIG1vZGVybiBHdWphcmF0aS5cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CqsOCqvuCqpHzgqqzgqqrgq4vgqrB84Kq44Kq14Kq+4KqwfOCquOCqvuCqguCqnC8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CqsOCqvuCqpCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CquOCqteCqvuCqsCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqqzgqqrgq4vgqrAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CquOCqvuCqguCqnCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqrDgqr7gqqQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CquOCqteCqvuCqsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kqs4Kqq4KuL4KqwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqrjgqr7gqoLgqpwnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CqsOCqvuCqpCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBndTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBIZWJyZXcgW2hlXVxuLy8hIGF1dGhvciA6IFRvbWVyIENvaGVuIDogaHR0cHM6Ly9naXRodWIuY29tL3RvbWVyXG4vLyEgYXV0aG9yIDogTW9zaGUgU2ltYW50b3YgOiBodHRwczovL2dpdGh1Yi5jb20vRGV2ZWxvcG1lbnRJTFxuLy8hIGF1dGhvciA6IFRhbCBBdGVyIDogaHR0cHM6Ly9naXRodWIuY29tL1RhbEF0ZXJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBoZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2hlJywge1xuICAgICAgICBtb250aHM6ICfXmdeg15XXkNeoX9ek15HXqNeV15DXqF/Xnteo16Vf15DXpNeo15nXnF/XnteQ15lf15nXldeg15lf15nXldec15lf15DXldeS15XXodeYX9eh16TXmNee15HXqF/XkNeV16fXmNeV15HXqF/XoNeV15HXnteR16hf15PXptee15HXqCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfXmdeg15XXs1/XpNeR16jXs1/Xnteo16Vf15DXpNeo17Nf157XkNeZX9eZ15XXoNeZX9eZ15XXnNeZX9eQ15XXktezX9eh16TXmNezX9eQ15XXp9ezX9eg15XXkdezX9eT16bXntezJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ9eo15DXqdeV159f16nXoNeZX9ep15zXmdep15lf16jXkdeZ16LXmV/Xl9ee15nXqdeZX9ep15nXqdeZX9ep15HXqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9eQ17Nf15HXs1/XktezX9eT17Nf15TXs1/XldezX9ep17MnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn15Bf15Ff15Jf15Nf15Rf15Vf16knLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBb15FdTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW9eRXU1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBb15FdTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIGw6ICdEL00vWVlZWScsXG4gICAgICAgICAgICBsbDogJ0QgTU1NIFlZWVknLFxuICAgICAgICAgICAgbGxsOiAnRCBNTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb15TXmdeV150g15HWvl1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9ee15fXqCDXkda+XUxUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb15HXqdei15RdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb15DXqtee15XXnCDXkda+XUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9eR15nXldedXSBkZGRkIFvXlNeQ15fXqNeV158g15HXqdei15RdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn15HXoteV15MgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9ec16TXoNeZICVzJyxcbiAgICAgICAgICAgIHM6ICfXnteh16TXqCDXqdeg15nXldeqJyxcbiAgICAgICAgICAgIHNzOiAnJWQg16nXoNeZ15XXqicsXG4gICAgICAgICAgICBtOiAn15PXp9eUJyxcbiAgICAgICAgICAgIG1tOiAnJWQg15PXp9eV16onLFxuICAgICAgICAgICAgaDogJ9ep16LXlCcsXG4gICAgICAgICAgICBoaDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfXqdei16rXmdeZ150nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXqdei15XXqic7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZDogJ9eZ15XXnScsXG4gICAgICAgICAgICBkZDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfXmdeV157XmdeZ150nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXmdee15nXnSc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTTogJ9eX15XXk9epJyxcbiAgICAgICAgICAgIE1NOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ9eX15XXk9ep15nXmdedJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg15fXldeT16nXmdedJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB5OiAn16nXoNeUJyxcbiAgICAgICAgICAgIHl5OiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ9ep16DXqteZ15nXnSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgJSAxMCA9PT0gMCAmJiBudW1iZXIgIT09IDEwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINep16DXlCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINep16DXmdedJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/XkNeX15RcItemfNec16TXoNeUXCLXpnzXkNeX16jXmSDXlNem15TXqNeZ15nXnXzXnNek16DXmSDXlNem15TXqNeZ15nXnXzXnNek16DXldeqINeR15XXp9eofNeR15HXlden16h815HXoteo15EvaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14o15DXl9eUXCLXpnzXkNeX16jXmSDXlNem15TXqNeZ15nXnXzXkdei16jXkSkkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn15zXpNeg15XXqiDXkdeV16fXqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn15HXkdeV16fXqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ9ec16TXoNeUXCLXpicgOiAn15zXpNeg15kg15TXpteU16jXmdeZ150nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfXkNeX15RcItemJyA6ICfXkNeX16jXmSDXlNem15TXqNeZ15nXnSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn15HXoteo15EnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGhlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEhpbmRpIFtoaV1cbi8vISBhdXRob3IgOiBNYXlhbmsgU2luZ2hhbCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXlhbmtzaW5naGFsXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgJzEnOiAn4KWnJyxcbiAgICAgICAgICAgICcyJzogJ+ClqCcsXG4gICAgICAgICAgICAnMyc6ICfgpaknLFxuICAgICAgICAgICAgJzQnOiAn4KWqJyxcbiAgICAgICAgICAgICc1JzogJ+ClqycsXG4gICAgICAgICAgICAnNic6ICfgpawnLFxuICAgICAgICAgICAgJzcnOiAn4KWtJyxcbiAgICAgICAgICAgICc4JzogJ+ClricsXG4gICAgICAgICAgICAnOSc6ICfgpa8nLFxuICAgICAgICAgICAgJzAnOiAn4KWmJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+Clpyc6ICcxJyxcbiAgICAgICAgICAgICfgpagnOiAnMicsXG4gICAgICAgICAgICAn4KWpJzogJzMnLFxuICAgICAgICAgICAgJ+Clqic6ICc0JyxcbiAgICAgICAgICAgICfgpasnOiAnNScsXG4gICAgICAgICAgICAn4KWsJzogJzYnLFxuICAgICAgICAgICAgJ+ClrSc6ICc3JyxcbiAgICAgICAgICAgICfgpa4nOiAnOCcsXG4gICAgICAgICAgICAn4KWvJzogJzknLFxuICAgICAgICAgICAgJ+Clpic6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBoaSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2hpJywge1xuICAgICAgICBtb250aHM6ICfgpJzgpKjgpLXgpLDgpYBf4KSr4KS84KSw4KS14KSw4KWAX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYjgpLJf4KSu4KSIX+CknOClguCkqF/gpJzgpYHgpLLgpL7gpIhf4KSF4KSX4KS44KWN4KSkX+CkuOCkv+CkpOCkruCljeCkrOCksF/gpIXgpJXgpY3gpJ/gpYLgpKzgpLBf4KSo4KS14KSu4KWN4KSs4KSwX+CkpuCkv+CkuOCkruCljeCkrOCksCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfgpJzgpKguX+Ckq+CkvOCksC5f4KSu4KS+4KSw4KWN4KSaX+CkheCkquCljeCksOCliC5f4KSu4KSIX+CknOClguCkqF/gpJzgpYHgpLIuX+CkheCkly5f4KS44KS/4KSkLl/gpIXgpJXgpY3gpJ/gpYIuX+CkqOCktS5f4KSm4KS/4KS4Licuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfgpLDgpLXgpL/gpLXgpL7gpLBf4KS44KWL4KSu4KS14KS+4KSwX+CkruCkguCkl+CksuCkteCkvuCksF/gpKzgpYHgpKfgpLXgpL7gpLBf4KSX4KWB4KSw4KWC4KS14KS+4KSwX+CktuClgeCkleCljeCksOCkteCkvuCksF/gpLbgpKjgpL/gpLXgpL7gpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgpLDgpLXgpL9f4KS44KWL4KSuX+CkruCkguCkl+Cksl/gpKzgpYHgpKdf4KSX4KWB4KSw4KWCX+CktuClgeCkleCljeCksF/gpLbgpKjgpL8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4KSwX+CkuOCli1/gpK7gpIJf4KSs4KWBX+Ckl+ClgV/gpLbgpYFf4KS2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCkrOCknOClhycsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgpIbgpJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KSV4KSyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KSV4KSyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgpKrgpL/gpJvgpLLgpYddIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4KSu4KWH4KSCJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgpKrgpLngpLLgpYcnLFxuICAgICAgICAgICAgczogJ+CkleClgeCkmyDgpLngpYAg4KSV4KWN4KS34KSjJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4KS44KWH4KSV4KSC4KShJyxcbiAgICAgICAgICAgIG06ICfgpI/gpJUg4KSu4KS/4KSo4KSfJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4KSu4KS/4KSo4KSfJyxcbiAgICAgICAgICAgIGg6ICfgpI/gpJUg4KSY4KSC4KSf4KS+JyxcbiAgICAgICAgICAgIGhoOiAnJWQg4KSY4KSC4KSf4KWHJyxcbiAgICAgICAgICAgIGQ6ICfgpI/gpJUg4KSm4KS/4KSoJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4KSm4KS/4KSoJyxcbiAgICAgICAgICAgIE06ICfgpI/gpJUg4KSu4KS54KWA4KSo4KWHJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4KSu4KS54KWA4KSo4KWHJyxcbiAgICAgICAgICAgIHk6ICfgpI/gpJUg4KS14KSw4KWN4KS3JyxcbiAgICAgICAgICAgIHl5OiAnJWQg4KS14KSw4KWN4KS3JyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Clp+ClqOClqeClquClq+ClrOClreClruClr+Clpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gSGluZGkgbm90YXRpb24gZm9yIG1lcmlkaWVtcyBhcmUgcXVpdGUgZnV6enkgaW4gcHJhY3RpY2UuIFdoaWxlIHRoZXJlIGV4aXN0c1xuICAgICAgICAvLyBhIHJpZ2lkIG5vdGlvbiBvZiBhICdQYWhhcicgaXQgaXMgbm90IHVzZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gSGluZGkuXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gpLDgpL7gpKR84KS44KWB4KSs4KS5fOCkpuCli+CkquCkueCksHzgpLbgpL7gpK4vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgpLDgpL7gpKQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLjgpYHgpKzgpLknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KSm4KWL4KSq4KS54KSwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLbgpL7gpK4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSkJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLjgpYHgpKzgpLknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkpuCli+CkquCkueCksCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS24KS+4KSuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaGk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ3JvYXRpYW4gW2hyXVxuLy8hIGF1dGhvciA6IEJvamFuIE1hcmtvdmnEhyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9ibWFya292aWNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2plZG5hIG1pbnV0YScgOiAnamVkbmUgbWludXRlJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRlJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0YSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdqZWRhbiBzYXQnIDogJ2plZG5vZyBzYXRhJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0JztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0YSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZGFuJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2RhbmEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWMnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWNhJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlY2knO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5hJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBociA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2hyJywge1xuICAgICAgICBtb250aHM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ3NpamXEjW5qYV92ZWxqYcSNZV9vxb51amthX3RyYXZuamFfc3ZpYm5qYV9saXBuamFfc3JwbmphX2tvbG92b3phX3J1am5hX2xpc3RvcGFkYV9zdHVkZW5vZ2FfcHJvc2luY2EnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICdzaWplxI1hbmpfdmVsamHEjWFfb8W+dWpha190cmF2YW5qX3N2aWJhbmpfbGlwYW5qX3NycGFual9rb2xvdm96X3J1amFuX2xpc3RvcGFkX3N0dWRlbmlfcHJvc2luYWMnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdzaWouX3ZlbGouX2/FvnUuX3RyYS5fc3ZpLl9saXAuX3NycC5fa29sLl9ydWouX2xpcy5fc3R1Ll9wcm8uJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ25lZGplbGphX3BvbmVkamVsamFrX3V0b3Jha19zcmlqZWRhX8SNZXR2cnRha19wZXRha19zdWJvdGEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICduZWQuX3Bvbi5fdXRvLl9zcmkuX8SNZXQuX3BldC5fc3ViLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICduZV9wb191dF9zcl/EjWVfcGVfc3UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRG8gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0RvIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEbyBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RhbmFzIHVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbc3V0cmEgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW25lZGplbGp1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3JpamVkdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3N1Ym90dV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2p1xI1lciB1XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWx1XSBbbmVkamVsanVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbHVdIFtzcmlqZWR1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWxpXSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ByaWplICVzJyxcbiAgICAgICAgICAgIHM6ICdwYXIgc2VrdW5kaScsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiAnZGFuJyxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiAnbWplc2VjJyxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiAnZ29kaW51JyxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaHI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSHVuZ2FyaWFuIFtodV1cbi8vISBhdXRob3IgOiBBZGFtIEJydW5uZXIgOiBodHRwczovL2dpdGh1Yi5jb20vYWRhbWJydW5uZXJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB3ZWVrRW5kaW5ncyA9ICd2YXPDoXJuYXAgaMOpdGbFkW4ga2VkZGVuIHN6ZXJkw6FuIGNzw7x0w7ZydMO2a8O2biBww6ludGVrZW4gc3pvbWJhdG9uJy5zcGxpdChcbiAgICAgICAgJyAnXG4gICAgKTtcbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBudW0gPSBudW1iZXI7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICA/ICduw6low6FueSBtw6Fzb2RwZXJjJ1xuICAgICAgICAgICAgICAgICAgICA6ICduw6low6FueSBtw6Fzb2RwZXJjZSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4KVxuICAgICAgICAgICAgICAgICAgICA/ICcgbcOhc29kcGVyYydcbiAgICAgICAgICAgICAgICAgICAgOiAnIG3DoXNvZHBlcmNlJztcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZWd5JyArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBwZXJjJyA6ICcgcGVyY2UnKTtcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIHBlcmMnIDogJyBwZXJjZScpO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIMOzcmEnIDogJyDDs3LDoWphJyk7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyDDs3JhJyA6ICcgw7Nyw6FqYScpO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIG5hcCcgOiAnIG5hcGphJyk7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBuYXAnIDogJyBuYXBqYScpO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIGjDs25hcCcgOiAnIGjDs25hcGphJyk7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBow7NuYXAnIDogJyBow7NuYXBqYScpO1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIMOpdicgOiAnIMOpdmUnKTtcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIMOpdicgOiAnIMOpdmUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdlZWsoaXNGdXR1cmUpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChpc0Z1dHVyZSA/ICcnIDogJ1ttw7psdF0gJykgK1xuICAgICAgICAgICAgJ1snICtcbiAgICAgICAgICAgIHdlZWtFbmRpbmdzW3RoaXMuZGF5KCldICtcbiAgICAgICAgICAgICddIExUWy1rb3JdJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHZhciBodSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2h1Jywge1xuICAgICAgICBtb250aHM6ICdqYW51w6FyX2ZlYnJ1w6FyX23DoXJjaXVzX8OhcHJpbGlzX23DoWp1c19qw7puaXVzX2rDumxpdXNfYXVndXN6dHVzX3N6ZXB0ZW1iZXJfb2t0w7NiZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFuX2ZlYl9tw6FyY1/DoXByX23DoWpfasO6bl9qw7psX2F1Z19zemVwdF9va3Rfbm92X2RlYycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICd2YXPDoXJuYXBfaMOpdGbFkV9rZWRkX3N6ZXJkYV9jc8O8dMO2cnTDtmtfcMOpbnRla19zem9tYmF0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAndmFzX2jDqXRfa2VkZF9zemVfY3PDvHRfcMOpbl9zem8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAndl9oX2tfc3plX2NzX3Bfc3pvJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVkuTU0uREQuJyxcbiAgICAgICAgICAgIExMOiAnWVlZWS4gTU1NTSBELicsXG4gICAgICAgICAgICBMTEw6ICdZWVlZLiBNTU1NIEQuIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ1lZWVkuIE1NTU0gRC4sIGRkZGQgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9kZXxkdS9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dC5jaGFyQXQoMSkudG9Mb3dlckNhc2UoKSA9PT0gJ3UnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID09PSB0cnVlID8gJ2RlJyA6ICdERSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID09PSB0cnVlID8gJ2R1JyA6ICdEVSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW21hXSBMVFsta29yXScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2hvbG5hcF0gTFRbLWtvcl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2Vlay5jYWxsKHRoaXMsIHRydWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbdGVnbmFwXSBMVFsta29yXScsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3ZWVrLmNhbGwodGhpcywgZmFsc2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMgbcO6bHZhJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcycsXG4gICAgICAgICAgICBzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaHU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQXJtZW5pYW4gW2h5LWFtXVxuLy8hIGF1dGhvciA6IEFybWVuZGFyYWJ5YW4gOiBodHRwczovL2dpdGh1Yi5jb20vYXJtZW5kYXJhYnlhblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGh5QW0gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdoeS1hbScsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfVsNW41oLVttW+1aHWgNWrX9aD1aXVv9aA1b7VodaA1atf1bTVodaA1b/Vq1/VodW61oDVq9Ws1atf1bTVodW11avVvdWrX9Ww1bjWgtW21avVvdWrX9Ww1bjWgtWs1avVvdWrX9aF1aPVuNW91b/VuNW91atf1b3VpdW61b/VpdW01aLVpdaA1atf1bDVuNWv1b/VpdW01aLVpdaA1atf1bbVuNW11aXVtNWi1aXWgNWrX9Wk1aXVr9W/1aXVtNWi1aXWgNWrJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOiAn1bDVuNaC1bbVvtWh1oBf1oPVpdW/1oDVvtWh1oBf1bTVodaA1b9f1aHVutaA1avVrF/VtNWh1bXVq9W9X9Ww1bjWgtW21avVvV/VsNW41oLVrNWr1b1f1oXVo9W41b3Vv9W41b1f1b3VpdW61b/VpdW01aLVpdaAX9Ww1bjVr9W/1aXVtNWi1aXWgF/VttW41bXVpdW01aLVpdaAX9Wk1aXVr9W/1aXVtNWi1aXWgCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDogJ9Ww1bbVvl/Wg9W/1oBf1bTWgNW/X9Wh1brWgF/VtNW11b1f1bDVttW9X9Ww1azVvV/WhdWj1b1f1b3VutW/X9Ww1a/Vv1/VttW01aJf1aTVr9W/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ9Wv1avWgNWh1a/Vq1/VpdaA1a/VuNaC1bfVodWi1anVq1/VpdaA1aXWhNW31aHVotWp1atf1bnVuNaA1aXWhNW31aHVotWp1atf1bDVq9W21aPVt9Wh1aLVqdWrX9W41oLWgNWi1aHVqV/Vt9Wh1aLVodWpJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn1a/WgNWvX9Wl1oDVr1/VpdaA1oRf1bnWgNaEX9Ww1bbVo1/VuNaC1oDVol/Vt9Wi1aknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn1a/WgNWvX9Wl1oDVr1/VpdaA1oRf1bnWgNaEX9Ww1bbVo1/VuNaC1oDVol/Vt9Wi1aknLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVkg1akuJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZINWpLiwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZINWpLiwgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vVodW11b3WhdaAXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9W+1aHVstWoXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9Wl1oDVpdWvXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBb1oXWgNWoINWq1aHVtNWoXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1vVodW21oHVodWuXSBkZGRkIFvWhdaA1agg1arVodW01ahdIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzINWw1aXVv9W4JyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDVodW81aHVuycsXG4gICAgICAgICAgICBzOiAn1bTVqyDWhNWh1bbVqyDVvtWh1bXWgNWv1bXVodW2JyxcbiAgICAgICAgICAgIHNzOiAnJWQg1b7VodW11oDVr9W11aHVticsXG4gICAgICAgICAgICBtOiAn1oDVuNW61aUnLFxuICAgICAgICAgICAgbW06ICclZCDWgNW41brVpScsXG4gICAgICAgICAgICBoOiAn1arVodW0JyxcbiAgICAgICAgICAgIGhoOiAnJWQg1arVodW0JyxcbiAgICAgICAgICAgIGQ6ICfWhdaAJyxcbiAgICAgICAgICAgIGRkOiAnJWQg1oXWgCcsXG4gICAgICAgICAgICBNOiAn1aHVtNWr1b0nLFxuICAgICAgICAgICAgTU06ICclZCDVodW01avVvScsXG4gICAgICAgICAgICB5OiAn1b/VodaA1asnLFxuICAgICAgICAgICAgeXk6ICclZCDVv9Wh1oDVqycsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/Vo9Wr1bfVpdaA1b7VoXzVodW81aHVvtW41b/VvtWhfNaB1aXWgNWl1a/VvtWhfNWl1oDVpdWv1bjVtdWh1bYvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXijWgdWl1oDVpdWv1b7VoXzVpdaA1aXVr9W41bXVodW2KSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn1aPVq9W31aXWgNW+1aEnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Wh1bzVodW+1bjVv9W+1aEnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9aB1aXWgNWl1a/VvtWhJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfVpdaA1aXVr9W41bXVodW2JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9fFxcZHsxLDJ9LSjVq9W2fNaA1aQpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREbyc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdWr1bYnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdaA1aQnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBoeUFtO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEluZG9uZXNpYW4gW2lkXVxuLy8hIGF1dGhvciA6IE1vaGFtbWFkIFNhdHJpbyBVdG9tbyA6IGh0dHBzOi8vZ2l0aHViLmNvbS90eW9rXG4vLyEgcmVmZXJlbmNlOiBodHRwOi8vaWQud2lraXNvdXJjZS5vcmcvd2lraS9QZWRvbWFuX1VtdW1fRWphYW5fQmFoYXNhX0luZG9uZXNpYV95YW5nX0Rpc2VtcHVybmFrYW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBpZCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2lkJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJpX0ZlYnJ1YXJpX01hcmV0X0FwcmlsX01laV9KdW5pX0p1bGlfQWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWVpX0p1bl9KdWxfQWd0X1NlcF9Pa3RfTm92X0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdNaW5nZ3VfU2VuaW5fU2VsYXNhX1JhYnVfS2FtaXNfSnVtYXRfU2FidHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdNaW5fU2VuX1NlbF9SYWJfS2FtX0p1bV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnTWdfU25fU2xfUmJfS21fSm1fU2InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9wYWdpfHNpYW5nfHNvcmV8bWFsYW0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdwYWdpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3NpYW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzb3JlJyB8fCBtZXJpZGllbSA9PT0gJ21hbGFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwYWdpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc2lhbmcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzb3JlJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtYWxhbSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hhcmkgaW5pIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0Jlc29rIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3B1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0tlbWFyaW4gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbbGFsdSBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdkYWxhbSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgeWFuZyBsYWx1JyxcbiAgICAgICAgICAgIHM6ICdiZWJlcmFwYSBkZXRpaycsXG4gICAgICAgICAgICBzczogJyVkIGRldGlrJyxcbiAgICAgICAgICAgIG06ICdzZW1lbml0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWVuaXQnLFxuICAgICAgICAgICAgaDogJ3NlamFtJyxcbiAgICAgICAgICAgIGhoOiAnJWQgamFtJyxcbiAgICAgICAgICAgIGQ6ICdzZWhhcmknLFxuICAgICAgICAgICAgZGQ6ICclZCBoYXJpJyxcbiAgICAgICAgICAgIE06ICdzZWJ1bGFuJyxcbiAgICAgICAgICAgIE1NOiAnJWQgYnVsYW4nLFxuICAgICAgICAgICAgeTogJ3NldGFodW4nLFxuICAgICAgICAgICAgeXk6ICclZCB0YWh1bicsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBpZDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBJY2VsYW5kaWMgW2lzXVxuLy8hIGF1dGhvciA6IEhpbnJpayDDlnJuIFNpZ3Vyw7Bzc29uIDogaHR0cHM6Ly9naXRodWIuY29tL2hpbnJpa1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcGx1cmFsKG4pIHtcbiAgICAgICAgaWYgKG4gJSAxMDAgPT09IDExKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChuICUgMTAgPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmVcbiAgICAgICAgICAgICAgICAgICAgPyAnbm9ra3JhciBzZWvDum5kdXInXG4gICAgICAgICAgICAgICAgICAgIDogJ25va2tydW0gc2Vrw7puZHVtJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArXG4gICAgICAgICAgICAgICAgICAgICAgICAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdzZWvDum5kdXInIDogJ3Nla8O6bmR1bScpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnc2Vrw7puZGEnO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnbcOtbsO6dGEnIDogJ23DrW7DunR1JztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ23DrW7DunR1cicgOiAnbcOtbsO6dHVtJylcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtw61uw7p0YSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcOtbsO6dHUnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAna2x1a2t1c3R1bmRpcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdrbHVra3VzdHVuZHVtJylcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdrbHVra3VzdHVuZCc7XG4gICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RhZ3VyJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ2RhZycgOiAnZGVnaSc7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2RhZ2FyJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGlzRnV0dXJlID8gJ2RhZ2EnIDogJ2TDtmd1bScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2RhZ3VyJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChpc0Z1dHVyZSA/ICdkYWcnIDogJ2RlZ2knKTtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnbcOhbnXDsHVyJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ23DoW51w7AnIDogJ23DoW51w7BpJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcOhbnXDsGlyJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGlzRnV0dXJlID8gJ23DoW51w7BpJyA6ICdtw6FudcOwdW0nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtw6FudcOwdXInO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGlzRnV0dXJlID8gJ23DoW51w7AnIDogJ23DoW51w7BpJyk7XG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICfDoXInIDogJ8OhcmknO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnw6FyJyA6ICfDoXJ1bScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnw6FyJyA6ICfDoXJpJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgaXMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdpcycsIHtcbiAgICAgICAgbW9udGhzOiAnamFuw7phcl9mZWJyw7phcl9tYXJzX2FwcsOtbF9tYcOtX2rDum7DrV9qw7psw61fw6Fnw7pzdF9zZXB0ZW1iZXJfb2t0w7NiZXJfbsOzdmVtYmVyX2Rlc2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbl9mZWJfbWFyX2Fwcl9tYcOtX2rDum5fasO6bF/DoWfDul9zZXBfb2t0X27Ds3ZfZGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ3N1bm51ZGFndXJfbcOhbnVkYWd1cl/DvnJpw7BqdWRhZ3VyX21pw7B2aWt1ZGFndXJfZmltbXR1ZGFndXJfZsO2c3R1ZGFndXJfbGF1Z2FyZGFndXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdzdW5fbcOhbl/DvnJpX21pw7BfZmltX2bDtnNfbGF1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X03DoV/DnnJfTWlfRmlfRsO2X0xhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBba2wuXSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbw60gZGFnIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vDoSBtb3JndW4ga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2tsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vDrSBnw6ZyIGtsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbc8Otw7Bhc3RhXSBkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZWZ0aXIgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2Z5cmlyICVzIHPDrcOwYW4nLFxuICAgICAgICAgICAgczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiAna2x1a2t1c3R1bmQnLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBpcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBJdGFsaWFuIFtpdF1cbi8vISBhdXRob3IgOiBMb3JlbnpvIDogaHR0cHM6Ly9naXRodWIuY29tL2FsaWVtXG4vLyEgYXV0aG9yOiBNYXR0aWEgTGFyZW50aXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9ub3N0YWxnaWF6XG4vLyEgYXV0aG9yOiBNYXJjbyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9NYW5mcmU5OFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGl0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaXQnLCB7XG4gICAgICAgIG1vbnRoczogJ2dlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dpb19naXVnbm9fbHVnbGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3ZlbWJyZV9kaWNlbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdnZW5fZmViX21hcl9hcHJfbWFnX2dpdV9sdWdfYWdvX3NldF9vdHRfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdkb21lbmljYV9sdW5lZMOsX21hcnRlZMOsX21lcmNvbGVkw6xfZ2lvdmVkw6xfdmVuZXJkw6xfc2FiYXRvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tX2x1bl9tYXJfbWVyX2dpb192ZW5fc2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RvX2x1X21hX21lX2dpX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW09nZ2kgYScgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpID4gMSA/ICdsbGUgJyA6IHRoaXMuaG91cnMoKSA9PT0gMCA/ICcgJyA6IFwibGwnXCIpICtcbiAgICAgICAgICAgICAgICAgICAgJ11MVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW0RvbWFuaSBhJyArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgPiAxID8gJ2xsZSAnIDogdGhpcy5ob3VycygpID09PSAwID8gJyAnIDogXCJsbCdcIikgK1xuICAgICAgICAgICAgICAgICAgICAnXUxUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnZGRkZCBbYScgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpID4gMSA/ICdsbGUgJyA6IHRoaXMuaG91cnMoKSA9PT0gMCA/ICcgJyA6IFwibGwnXCIpICtcbiAgICAgICAgICAgICAgICAgICAgJ11MVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW0llcmkgYScgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpID4gMSA/ICdsbGUgJyA6IHRoaXMuaG91cnMoKSA9PT0gMCA/ICcgJyA6IFwibGwnXCIpICtcbiAgICAgICAgICAgICAgICAgICAgJ11MVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1tMYSBzY29yc2FdIGRkZGQgW2EnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdsbGUgJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuaG91cnMoKSA9PT0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcgJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwibGwnXCIpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXUxUJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1tMbyBzY29yc29dIGRkZGQgW2EnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdsbGUgJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuaG91cnMoKSA9PT0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcgJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwibGwnXCIpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXUxUJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd0cmEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGZhJyxcbiAgICAgICAgICAgIHM6ICdhbGN1bmkgc2Vjb25kaScsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZGknLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0aScsXG4gICAgICAgICAgICBoOiBcInVuJ29yYVwiLFxuICAgICAgICAgICAgaGg6ICclZCBvcmUnLFxuICAgICAgICAgICAgZDogJ3VuIGdpb3JubycsXG4gICAgICAgICAgICBkZDogJyVkIGdpb3JuaScsXG4gICAgICAgICAgICBNOiAndW4gbWVzZScsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2knLFxuICAgICAgICAgICAgeTogJ3VuIGFubm8nLFxuICAgICAgICAgICAgeXk6ICclZCBhbm5pJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBpdDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBJdGFsaWFuIChTd2l0emVybGFuZCkgW2l0LWNoXVxuLy8hIGF1dGhvciA6IHhmaCA6IGh0dHBzOi8vZ2l0aHViLmNvbS94ZmhcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBpdENoID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaXQtY2gnLCB7XG4gICAgICAgIG1vbnRoczogJ2dlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dpb19naXVnbm9fbHVnbGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3ZlbWJyZV9kaWNlbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdnZW5fZmViX21hcl9hcHJfbWFnX2dpdV9sdWdfYWdvX3NldF9vdHRfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdkb21lbmljYV9sdW5lZMOsX21hcnRlZMOsX21lcmNvbGVkw6xfZ2lvdmVkw6xfdmVuZXJkw6xfc2FiYXRvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tX2x1bl9tYXJfbWVyX2dpb192ZW5fc2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RvX2x1X21hX21lX2dpX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbT2dnaSBhbGxlXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0RvbWFuaSBhbGxlXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FsbGVdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSWVyaSBhbGxlXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tsYSBzY29yc2FdIGRkZGQgW2FsbGVdIExUJztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW2xvIHNjb3Jzb10gZGRkZCBbYWxsZV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKC9eWzAtOV0uKyQvLnRlc3QocykgPyAndHJhJyA6ICdpbicpICsgJyAnICsgcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXN0OiAnJXMgZmEnLFxuICAgICAgICAgICAgczogJ2FsY3VuaSBzZWNvbmRpJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kaScsXG4gICAgICAgICAgICBtOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRpJyxcbiAgICAgICAgICAgIGg6IFwidW4nb3JhXCIsXG4gICAgICAgICAgICBoaDogJyVkIG9yZScsXG4gICAgICAgICAgICBkOiAndW4gZ2lvcm5vJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZ2lvcm5pJyxcbiAgICAgICAgICAgIE06ICd1biBtZXNlJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzaScsXG4gICAgICAgICAgICB5OiAndW4gYW5ubycsXG4gICAgICAgICAgICB5eTogJyVkIGFubmknLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGl0Q2g7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSmFwYW5lc2UgW2phXVxuLy8hIGF1dGhvciA6IExJIExvbmcgOiBodHRwczovL2dpdGh1Yi5jb20vYmFyeW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgamEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdqYScsIHtcbiAgICAgICAgZXJhczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMjAxOS0wNS0wMScsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICfku6TlkownLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ+OLvycsXG4gICAgICAgICAgICAgICAgYWJicjogJ1InLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzE5ODktMDEtMDgnLFxuICAgICAgICAgICAgICAgIHVudGlsOiAnMjAxOS0wNC0zMCcsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICflubPmiJAnLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ+ONuycsXG4gICAgICAgICAgICAgICAgYWJicjogJ0gnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzE5MjYtMTItMjUnLFxuICAgICAgICAgICAgICAgIHVudGlsOiAnMTk4OS0wMS0wNycsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICfmmK3lkownLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ+ONvCcsXG4gICAgICAgICAgICAgICAgYWJicjogJ1MnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzE5MTItMDctMzAnLFxuICAgICAgICAgICAgICAgIHVudGlsOiAnMTkyNi0xMi0yNCcsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICflpKfmraMnLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ+ONvScsXG4gICAgICAgICAgICAgICAgYWJicjogJ1QnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzE4NzMtMDEtMDEnLFxuICAgICAgICAgICAgICAgIHVudGlsOiAnMTkxMi0wNy0yOScsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiA2LFxuICAgICAgICAgICAgICAgIG5hbWU6ICfmmI7msrsnLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ+ONvicsXG4gICAgICAgICAgICAgICAgYWJicjogJ00nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzAwMDEtMDEtMDEnLFxuICAgICAgICAgICAgICAgIHVudGlsOiAnMTg3My0xMi0zMScsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICfopb/mmqYnLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ0FEJyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnQUQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzAwMDAtMTItMzEnLFxuICAgICAgICAgICAgICAgIHVudGlsOiAtSW5maW5pdHksXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICfntIDlhYPliY0nLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ0JDJyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnQkMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZXJhWWVhck9yZGluYWxSZWdleDogLyjlhYN8XFxkKynlubQvLFxuICAgICAgICBlcmFZZWFyT3JkaW5hbFBhcnNlOiBmdW5jdGlvbiAoaW5wdXQsIG1hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hbMV0gPT09ICflhYMnID8gMSA6IHBhcnNlSW50KG1hdGNoWzFdIHx8IGlucHV0LCAxMCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoczogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+aXpeabnOaXpV/mnIjmm5zml6Vf54Gr5puc5pelX+awtOabnOaXpV/mnKjmm5zml6Vf6YeR5puc5pelX+Wcn+abnOaXpScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+aXpV/mnIhf54GrX+awtF/mnKhf6YeRX+Wcnycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfml6Vf5pyIX+eBq1/msLRf5pyoX+mHkV/lnJ8nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIExMOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWeW5tE3mnIhE5pelIGRkZGQgSEg6bW0nLFxuICAgICAgICAgICAgbDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgbGw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZ5bm0TeaciETml6UoZGRkKSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/ljYjliY185Y2I5b6ML2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn5Y2I5b6MJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+WNiOWJjSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Y2I5b6MJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb5LuK5pelXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+aYjuaXpV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uIChub3cpIHtcbiAgICAgICAgICAgICAgICBpZiAobm93LndlZWsoKSAhPT0gdGhpcy53ZWVrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb5p2l6YCxXWRkZGQgTFQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb5pio5pelXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLndlZWsoKSAhPT0gbm93LndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vlhYjpgLFdZGRkZCBMVCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ95pelLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyID09PSAxID8gJ+WFg+W5tCcgOiBudW1iZXIgKyAn5bm0JztcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+W+jCcsXG4gICAgICAgICAgICBwYXN0OiAnJXPliY0nLFxuICAgICAgICAgICAgczogJ+aVsOenkicsXG4gICAgICAgICAgICBzczogJyVk56eSJyxcbiAgICAgICAgICAgIG06ICcx5YiGJyxcbiAgICAgICAgICAgIG1tOiAnJWTliIYnLFxuICAgICAgICAgICAgaDogJzHmmYLplpMnLFxuICAgICAgICAgICAgaGg6ICclZOaZgumWkycsXG4gICAgICAgICAgICBkOiAnMeaXpScsXG4gICAgICAgICAgICBkZDogJyVk5pelJyxcbiAgICAgICAgICAgIE06ICcx44O25pyIJyxcbiAgICAgICAgICAgIE1NOiAnJWTjg7bmnIgnLFxuICAgICAgICAgICAgeTogJzHlubQnLFxuICAgICAgICAgICAgeXk6ICclZOW5tCcsXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gamE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSmF2YW5lc2UgW2p2XVxuLy8hIGF1dGhvciA6IFJvbnkgTGFudGlwIDogaHR0cHM6Ly9naXRodWIuY29tL2xhbnRpcFxuLy8hIHJlZmVyZW5jZTogaHR0cDovL2p2Lndpa2lwZWRpYS5vcmcvd2lraS9CYXNhX0phd2FcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBqdiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2p2Jywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJpX0ZlYnJ1YXJpX01hcmV0X0FwcmlsX01laV9KdW5pX0p1bGlfQWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3BlbWJlcl9EZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWVpX0p1bl9KdWxfQWdzX1NlcF9Pa3RfTm9wX0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdNaW5nZ3VfU2VuZW5fU2Vsb3NvX1JlYnVfS2VtaXNfSmVtdXdhaF9TZXB0dScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ01pbl9TZW5fU2VsX1JlYl9LZW1fSmVtX1NlcCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdNZ19Tbl9TbF9SYl9LbV9KbV9TcCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL2VuamluZ3xzaXlhbmd8c29udGVufG5kYWx1LyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAnZW5qaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3NpeWFuZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc29udGVuJyB8fCBtZXJpZGllbSA9PT0gJ25kYWx1Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlbmppbmcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzaXlhbmcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzb250ZW4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ25kYWx1JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbRGludGVuIHB1bmlrbyBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tNYmVuamFuZyBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tLYWxhIHdpbmdpIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2tlcGVuZ2tlciBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd3b250ZW4gaW5nICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBpbmdrYW5nIGtlcGVuZ2tlcicsXG4gICAgICAgICAgICBzOiAnc2F3ZXRhd2lzIGRldGlrJyxcbiAgICAgICAgICAgIHNzOiAnJWQgZGV0aWsnLFxuICAgICAgICAgICAgbTogJ3NldHVuZ2dhbCBtZW5pdCcsXG4gICAgICAgICAgICBtbTogJyVkIG1lbml0JyxcbiAgICAgICAgICAgIGg6ICdzZXR1bmdnYWwgamFtJyxcbiAgICAgICAgICAgIGhoOiAnJWQgamFtJyxcbiAgICAgICAgICAgIGQ6ICdzZWRpbnRlbicsXG4gICAgICAgICAgICBkZDogJyVkIGRpbnRlbicsXG4gICAgICAgICAgICBNOiAnc2V3dWxhbicsXG4gICAgICAgICAgICBNTTogJyVkIHd1bGFuJyxcbiAgICAgICAgICAgIHk6ICdzZXRhdW4nLFxuICAgICAgICAgICAgeXk6ICclZCB0YXVuJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGp2O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEdlb3JnaWFuIFtrYV1cbi8vISBhdXRob3IgOiBJcmFrbGkgSmFuaWFzaHZpbGkgOiBodHRwczovL2dpdGh1Yi5jb20vSXJha2xpSmFuaVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGthID0gbW9tZW50LmRlZmluZUxvY2FsZSgna2EnLCB7XG4gICAgICAgIG1vbnRoczogJ+GDmOGDkOGDnOGDleGDkOGDoOGDmF/hg5fhg5Thg5Hhg5Thg6Dhg5Xhg5Dhg5rhg5hf4YOb4YOQ4YOg4YOi4YOYX+GDkOGDnuGDoOGDmOGDmuGDmF/hg5vhg5Dhg5jhg6Hhg5hf4YOY4YOV4YOc4YOY4YOh4YOYX+GDmOGDleGDmuGDmOGDoeGDmF/hg5Dhg5Lhg5Xhg5jhg6Hhg6Lhg51f4YOh4YOU4YOl4YOi4YOU4YOb4YOR4YOU4YOg4YOYX+GDneGDpeGDouGDneGDm+GDkeGDlOGDoOGDmF/hg5zhg53hg5Thg5vhg5Hhg5Thg6Dhg5hf4YOT4YOU4YOZ4YOU4YOb4YOR4YOU4YOg4YOYJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ+GDmOGDkOGDnF/hg5fhg5Thg5Ff4YOb4YOQ4YOgX+GDkOGDnuGDoF/hg5vhg5Dhg5hf4YOY4YOV4YOcX+GDmOGDleGDml/hg5Dhg5Lhg5Vf4YOh4YOU4YOlX+GDneGDpeGDol/hg5zhg53hg5Rf4YOT4YOU4YOZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ+GDmeGDleGDmOGDoOGDkF/hg53hg6Dhg6jhg5Dhg5Hhg5Dhg5fhg5hf4YOh4YOQ4YOb4YOo4YOQ4YOR4YOQ4YOX4YOYX+GDneGDl+GDruGDqOGDkOGDkeGDkOGDl+GDmF/hg67hg6Phg5fhg6jhg5Dhg5Hhg5Dhg5fhg5hf4YOe4YOQ4YOg4YOQ4YOh4YOZ4YOU4YOV4YOYX+GDqOGDkOGDkeGDkOGDl+GDmCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZm9ybWF0OiAn4YOZ4YOV4YOY4YOg4YOQ4YOhX+GDneGDoOGDqOGDkOGDkeGDkOGDl+GDoV/hg6Hhg5Dhg5vhg6jhg5Dhg5Hhg5Dhg5fhg6Ff4YOd4YOX4YOu4YOo4YOQ4YOR4YOQ4YOX4YOhX+GDruGDo+GDl+GDqOGDkOGDkeGDkOGDl+GDoV/hg57hg5Dhg6Dhg5Dhg6Hhg5nhg5Thg5Xhg6Ff4YOo4YOQ4YOR4YOQ4YOX4YOhJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogLyjhg6zhg5jhg5zhg5B84YOo4YOU4YOb4YOT4YOU4YOSKS8sXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfhg5nhg5Xhg5hf4YOd4YOg4YOoX+GDoeGDkOGDm1/hg53hg5fhg65f4YOu4YOj4YOXX+GDnuGDkOGDoF/hg6jhg5Dhg5EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4YOZ4YOVX+GDneGDoF/hg6Hhg5Bf4YOd4YOXX+GDruGDo1/hg57hg5Bf4YOo4YOQJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+GDk+GDpuGDlOGDoV0gTFRbLeGDluGDlF0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1vhg67hg5Xhg5Dhg5pdIExUWy3hg5bhg5RdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4YOS4YOj4YOo4YOY4YOcXSBMVFst4YOW4YOUXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vhg6jhg5Thg5vhg5Phg5Thg5JdIGRkZGQgTFRbLeGDluGDlF0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4YOs4YOY4YOc4YOQXSBkZGRkIExULeGDluGDlCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC8o4YOs4YOQ4YObfOGDrOGDo+GDl3zhg6Hhg5Dhg5Dhg5d84YOs4YOU4YOafOGDk+GDpnzhg5fhg5UpKOGDmHzhg5QpLywgZnVuY3Rpb24gKFxuICAgICAgICAgICAgICAgICAgICAkMCxcbiAgICAgICAgICAgICAgICAgICAgJDEsXG4gICAgICAgICAgICAgICAgICAgICQyXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkMiA9PT0gJ+GDmCcgPyAkMSArICfhg6jhg5gnIDogJDEgKyAkMiArICfhg6jhg5gnO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhc3Q6IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICAgICAgaWYgKC8o4YOs4YOQ4YOb4YOYfOGDrOGDo+GDl+GDmHzhg6Hhg5Dhg5Dhg5fhg5h84YOT4YOm4YOUfOGDl+GDleGDlCkvLnRlc3QocykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvKOGDmHzhg5QpJC8sICfhg5jhg6Eg4YOs4YOY4YOcJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgv4YOs4YOU4YOa4YOYLy50ZXN0KHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoL+GDrOGDlOGDmuGDmCQvLCAn4YOs4YOa4YOY4YOhIOGDrOGDmOGDnCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzOiAn4YOg4YOQ4YOb4YOT4YOU4YOc4YOY4YOb4YOUIOGDrOGDkOGDm+GDmCcsXG4gICAgICAgICAgICBzczogJyVkIOGDrOGDkOGDm+GDmCcsXG4gICAgICAgICAgICBtOiAn4YOs4YOj4YOX4YOYJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4YOs4YOj4YOX4YOYJyxcbiAgICAgICAgICAgIGg6ICfhg6Hhg5Dhg5Dhg5fhg5gnLFxuICAgICAgICAgICAgaGg6ICclZCDhg6Hhg5Dhg5Dhg5fhg5gnLFxuICAgICAgICAgICAgZDogJ+GDk+GDpuGDlCcsXG4gICAgICAgICAgICBkZDogJyVkIOGDk+GDpuGDlCcsXG4gICAgICAgICAgICBNOiAn4YOX4YOV4YOUJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4YOX4YOV4YOUJyxcbiAgICAgICAgICAgIHk6ICfhg6zhg5Thg5rhg5gnLFxuICAgICAgICAgICAgeXk6ICclZCDhg6zhg5Thg5rhg5gnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvMHwxLeGDmuGDmHzhg5vhg5QtXFxkezEsMn18XFxkezEsMn0t4YOULyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct4YOa4YOYJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBudW1iZXIgPCAyMCB8fFxuICAgICAgICAgICAgICAgIChudW1iZXIgPD0gMTAwICYmIG51bWJlciAlIDIwID09PSAwKSB8fFxuICAgICAgICAgICAgICAgIG51bWJlciAlIDEwMCA9PT0gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfhg5vhg5QtJyArIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLeGDlCc7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSxcbiAgICAgICAgICAgIGRveTogNyxcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBrYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBLYXpha2ggW2trXVxuLy8hIGF1dGhvcnMgOiBOdXJsYW4gUmFraGltemhhbm92IDogaHR0cHM6Ly9naXRodWIuY29tL251cmxhblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN1ZmZpeGVzID0ge1xuICAgICAgICAwOiAnLdGI0ZYnLFxuICAgICAgICAxOiAnLdGI0ZYnLFxuICAgICAgICAyOiAnLdGI0ZYnLFxuICAgICAgICAzOiAnLdGI0ZYnLFxuICAgICAgICA0OiAnLdGI0ZYnLFxuICAgICAgICA1OiAnLdGI0ZYnLFxuICAgICAgICA2OiAnLdGI0YsnLFxuICAgICAgICA3OiAnLdGI0ZYnLFxuICAgICAgICA4OiAnLdGI0ZYnLFxuICAgICAgICA5OiAnLdGI0YsnLFxuICAgICAgICAxMDogJy3RiNGLJyxcbiAgICAgICAgMjA6ICct0YjRiycsXG4gICAgICAgIDMwOiAnLdGI0YsnLFxuICAgICAgICA0MDogJy3RiNGLJyxcbiAgICAgICAgNTA6ICct0YjRlicsXG4gICAgICAgIDYwOiAnLdGI0YsnLFxuICAgICAgICA3MDogJy3RiNGWJyxcbiAgICAgICAgODA6ICct0YjRlicsXG4gICAgICAgIDkwOiAnLdGI0YsnLFxuICAgICAgICAxMDA6ICct0YjRlicsXG4gICAgfTtcblxuICAgIHZhciBrayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2trJywge1xuICAgICAgICBtb250aHM6ICfSm9Cw0qPRgtCw0YBf0LDSm9C/0LDQvV/QvdCw0YPRgNGL0Ldf0YHTmdGD0ZbRgF/QvNCw0LzRi9GAX9C80LDRg9GB0YvQvF/RiNGW0LvQtNC1X9GC0LDQvNGL0Ldf0pvRi9GA0LrSr9C50LXQul/Sm9Cw0LfQsNC9X9Kb0LDRgNCw0YjQsF/QttC10LvRgtC+0pvRgdCw0L0nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0pvQsNKjX9Cw0pvQv1/QvdCw0YNf0YHTmdGDX9C80LDQvF/QvNCw0YNf0YjRltC7X9GC0LDQvF/Sm9GL0YBf0pvQsNC3X9Kb0LDRgF/QttC10LsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn0LbQtdC60YHQtdC90LHRll/QtNKv0LnRgdC10L3QsdGWX9GB0LXQudGB0LXQvdCx0ZZf0YHTmdGA0YHQtdC90LHRll/QsdC10LnRgdC10L3QsdGWX9C20rHQvNCwX9GB0LXQvdCx0ZYnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQttC10Lpf0LTSr9C5X9GB0LXQuV/RgdOZ0YBf0LHQtdC5X9C20rHQvF/RgdC10L0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0LbQul/QtNC5X9GB0Llf0YHRgF/QsdC5X9C20Lxf0YHQvScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQkdKv0LPRltC9INGB0LDSk9Cw0YJdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0JXRgNGC0LXSoyDRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9GB0LDSk9Cw0YJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0JrQtdGI0LUg0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb06jRgtC60LXQvSDQsNC/0YLQsNC90YvSo10gZGRkZCBb0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDRltGI0ZbQvdC00LUnLFxuICAgICAgICAgICAgcGFzdDogJyVzINCx0rHRgNGL0L0nLFxuICAgICAgICAgICAgczogJ9Cx0ZbRgNC90LXRiNC1INGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBzczogJyVkINGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBtOiAn0LHRltGAINC80LjQvdGD0YInLFxuICAgICAgICAgICAgbW06ICclZCDQvNC40L3Rg9GCJyxcbiAgICAgICAgICAgIGg6ICfQsdGW0YAg0YHQsNKT0LDRgicsXG4gICAgICAgICAgICBoaDogJyVkINGB0LDSk9Cw0YInLFxuICAgICAgICAgICAgZDogJ9Cx0ZbRgCDQutKv0L0nLFxuICAgICAgICAgICAgZGQ6ICclZCDQutKv0L0nLFxuICAgICAgICAgICAgTTogJ9Cx0ZbRgCDQsNC5JyxcbiAgICAgICAgICAgIE1NOiAnJWQg0LDQuScsXG4gICAgICAgICAgICB5OiAn0LHRltGAINC20YvQuycsXG4gICAgICAgICAgICB5eTogJyVkINC20YvQuycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0YjRlnzRiNGLKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgYiA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChzdWZmaXhlc1tudW1iZXJdIHx8IHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGtrO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IENhbWJvZGlhbiBba21dXG4vLyEgYXV0aG9yIDogS3J1eSBWYW5uYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9rcnV5dmFubmFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAnMSc6ICfhn6EnLFxuICAgICAgICAgICAgJzInOiAn4Z+iJyxcbiAgICAgICAgICAgICczJzogJ+GfoycsXG4gICAgICAgICAgICAnNCc6ICfhn6QnLFxuICAgICAgICAgICAgJzUnOiAn4Z+lJyxcbiAgICAgICAgICAgICc2JzogJ+GfpicsXG4gICAgICAgICAgICAnNyc6ICfhn6cnLFxuICAgICAgICAgICAgJzgnOiAn4Z+oJyxcbiAgICAgICAgICAgICc5JzogJ+GfqScsXG4gICAgICAgICAgICAnMCc6ICfhn6AnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4Z+hJzogJzEnLFxuICAgICAgICAgICAgJ+Gfoic6ICcyJyxcbiAgICAgICAgICAgICfhn6MnOiAnMycsXG4gICAgICAgICAgICAn4Z+kJzogJzQnLFxuICAgICAgICAgICAgJ+GfpSc6ICc1JyxcbiAgICAgICAgICAgICfhn6YnOiAnNicsXG4gICAgICAgICAgICAn4Z+nJzogJzcnLFxuICAgICAgICAgICAgJ+GfqCc6ICc4JyxcbiAgICAgICAgICAgICfhn6knOiAnOScsXG4gICAgICAgICAgICAn4Z+gJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIGttID0gbW9tZW50LmRlZmluZUxvY2FsZSgna20nLCB7XG4gICAgICAgIG1vbnRoczogJ+GemOGegOGemuGetl/hnoDhnrvhnpjhn5Lhnpfhn4hf4Z6Y4Z644Z6T4Z62X+GemOGfgeGen+Getl/hnqfhnp/hnpfhnrZf4Z6Y4Z634Z6Q4Z674Z6T4Z62X+GegOGegOGfkuGegOGeiuGetl/hnp/hnrjhnqDhnrZf4Z6A4Z6J4Z+S4Z6J4Z62X+Gej+Geu+Gem+Getl/hnpzhnrfhnoXhn5LhnobhnrfhnoDhnrZf4Z6S4Z+S4Z6T4Z68Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ+GemOGegOGemuGetl/hnoDhnrvhnpjhn5Lhnpfhn4hf4Z6Y4Z644Z6T4Z62X+GemOGfgeGen+Getl/hnqfhnp/hnpfhnrZf4Z6Y4Z634Z6Q4Z674Z6T4Z62X+GegOGegOGfkuGegOGeiuGetl/hnp/hnrjhnqDhnrZf4Z6A4Z6J4Z+S4Z6J4Z62X+Gej+Geu+Gem+Getl/hnpzhnrfhnoXhn5LhnobhnrfhnoDhnrZf4Z6S4Z+S4Z6T4Z68Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+GeouGetuGekeGet+Gej+GfkuGemV/hnoXhn5DhnpPhn5LhnpFf4Z6i4Z6E4Z+S4Z6C4Z624Z6aX+GeluGeu+Gekl/hnpbhn5LhnprhnqDhnp/hn5LhnpThno/hnrfhn41f4Z6f4Z674Z6A4Z+S4Z6aX+Gen+GfheGemuGfjScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+GeouGetl/hnoVf4Z6iX+Gell/hnpbhn5Lhnppf4Z6f4Z67X+Genycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfhnqLhnrZf4Z6FX+Geol/hnpZf4Z6W4Z+S4Z6aX+Gen+Geu1/hnp8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Z6W4Z+S4Z6a4Z654Z6AfOGem+GfkuGehOGetuGehS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn4Z6b4Z+S4Z6E4Z624Z6FJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+GeluGfkuGemuGeueGegCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Z6b4Z+S4Z6E4Z624Z6FJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4Z6Q4Z+S4Z6E4Z+D4Z6T4Z+B4Z+HIOGemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vhnp/hn5LhnqLhn4LhnoAg4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW+GemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vhnpjhn5Lhnp/hnrfhnpvhnpjhnrfhnokg4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW+Gen+GelOGfkuGej+GetuGeoOGfjeGemOGeu+Gek10gW+GemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+GekeGfgOGejycsXG4gICAgICAgICAgICBwYXN0OiAnJXPhnpjhnrvhnpMnLFxuICAgICAgICAgICAgczogJ+GelOGfieGeu+Gek+GfkuGemOGetuGek+GenOGet+Gek+GetuGekeGeuCcsXG4gICAgICAgICAgICBzczogJyVkIOGenOGet+Gek+GetuGekeGeuCcsXG4gICAgICAgICAgICBtOiAn4Z6Y4Z694Z6Z4Z6T4Z624Z6R4Z64JyxcbiAgICAgICAgICAgIG1tOiAnJWQg4Z6T4Z624Z6R4Z64JyxcbiAgICAgICAgICAgIGg6ICfhnpjhnr3hnpnhnpjhn4nhn4ThnoQnLFxuICAgICAgICAgICAgaGg6ICclZCDhnpjhn4nhn4ThnoQnLFxuICAgICAgICAgICAgZDogJ+GemOGeveGemeGekOGfkuGehOGfgycsXG4gICAgICAgICAgICBkZDogJyVkIOGekOGfkuGehOGfgycsXG4gICAgICAgICAgICBNOiAn4Z6Y4Z694Z6Z4Z6B4Z+CJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4Z6B4Z+CJyxcbiAgICAgICAgICAgIHk6ICfhnpjhnr3hnpnhnobhn5LhnpPhnrbhn4YnLFxuICAgICAgICAgICAgeXk6ICclZCDhnobhn5LhnpPhnrbhn4YnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAv4Z6R4Z64XFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsOiAn4Z6R4Z64JWQnLFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Z+h4Z+i4Z+j4Z+k4Z+l4Z+m4Z+n4Z+o4Z+p4Z+gXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ga207XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogS2FubmFkYSBba25dXG4vLyEgYXV0aG9yIDogUmFqZWV2IE5haWsgOiBodHRwczovL2dpdGh1Yi5jb20vcmFqZWV2bmFpa3RlXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgJzEnOiAn4LOnJyxcbiAgICAgICAgICAgICcyJzogJ+CzqCcsXG4gICAgICAgICAgICAnMyc6ICfgs6knLFxuICAgICAgICAgICAgJzQnOiAn4LOqJyxcbiAgICAgICAgICAgICc1JzogJ+CzqycsXG4gICAgICAgICAgICAnNic6ICfgs6wnLFxuICAgICAgICAgICAgJzcnOiAn4LOtJyxcbiAgICAgICAgICAgICc4JzogJ+CzricsXG4gICAgICAgICAgICAnOSc6ICfgs68nLFxuICAgICAgICAgICAgJzAnOiAn4LOmJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+Czpyc6ICcxJyxcbiAgICAgICAgICAgICfgs6gnOiAnMicsXG4gICAgICAgICAgICAn4LOpJzogJzMnLFxuICAgICAgICAgICAgJ+Czqic6ICc0JyxcbiAgICAgICAgICAgICfgs6snOiAnNScsXG4gICAgICAgICAgICAn4LOsJzogJzYnLFxuICAgICAgICAgICAgJ+CzrSc6ICc3JyxcbiAgICAgICAgICAgICfgs64nOiAnOCcsXG4gICAgICAgICAgICAn4LOvJzogJzknLFxuICAgICAgICAgICAgJ+Czpic6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBrbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2tuJywge1xuICAgICAgICBtb250aHM6ICfgspzgsqjgsrXgsrDgsr9f4LKr4LOG4LKs4LON4LKw4LK14LKw4LK/X+CyruCyvuCysOCzjeCymuCzjV/gso/gsqrgs43gsrDgsr/gsrLgs41f4LKu4LOG4LOVX+CynOCzguCyqOCzjV/gspzgs4HgsrLgs4bgs5Zf4LKG4LKX4LK44LON4LKf4LONX+CyuOCzhuCyquCzjeCyn+CzhuCyguCyrOCysOCzjV/gsoXgspXgs43gsp/gs4bgs4Lgs5XgsqzgsrDgs41f4LKo4LK14LOG4LKC4LKs4LKw4LONX+CyoeCyv+CyuOCzhuCyguCyrOCysOCzjScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfgspzgsqhf4LKr4LOG4LKs4LON4LKwX+CyruCyvuCysOCzjeCymuCzjV/gso/gsqrgs43gsrDgsr/gsrLgs41f4LKu4LOG4LOVX+CynOCzguCyqOCzjV/gspzgs4HgsrLgs4bgs5Zf4LKG4LKX4LK44LON4LKf4LONX+CyuOCzhuCyquCzjeCyn+CzhuCygl/gsoXgspXgs43gsp/gs4bgs4Lgs5Vf4LKo4LK14LOG4LKCX+CyoeCyv+CyuOCzhuCygicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfgsq3gsr7gsqjgs4HgsrXgsr7gsrBf4LK44LOG4LOC4LOV4LKu4LK14LK+4LKwX+CyruCyguCyl+Cys+CyteCyvuCysF/gsqzgs4HgsqfgsrXgsr7gsrBf4LKX4LOB4LKw4LOB4LK14LK+4LKwX+CytuCzgeCyleCzjeCysOCyteCyvuCysF/gsrbgsqjgsr/gsrXgsr7gsrAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgsq3gsr7gsqjgs4Ff4LK44LOG4LOC4LOV4LKuX+CyruCyguCyl+Cys1/gsqzgs4Hgsqdf4LKX4LOB4LKw4LOBX+CytuCzgeCyleCzjeCysF/gsrbgsqjgsr8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4LKt4LK+X+CyuOCzhuCzguCzlV/gsq7gsoJf4LKs4LOBX+Cyl+CzgV/gsrbgs4Ff4LK2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+Cyh+CyguCypuCzgV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgsqjgsr7gsrPgs4ZdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgsqjgsr/gsqjgs43gsqjgs4ZdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+CyleCzhuCzguCyqOCzhuCyr10gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgsqjgsoLgsqTgsrAnLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCyueCyv+CyguCypuCzhicsXG4gICAgICAgICAgICBzOiAn4LKV4LOG4LKy4LK14LOBIOCyleCzjeCyt+Cyo+Cyl+Cys+CzgScsXG4gICAgICAgICAgICBzczogJyVkIOCyuOCzhuCyleCzhuCyguCyoeCzgeCyl+Cys+CzgScsXG4gICAgICAgICAgICBtOiAn4LKS4LKC4LKm4LOBIOCyqOCyv+CyruCyv+CytycsXG4gICAgICAgICAgICBtbTogJyVkIOCyqOCyv+CyruCyv+CytycsXG4gICAgICAgICAgICBoOiAn4LKS4LKC4LKm4LOBIOCyl+CyguCyn+CzhicsXG4gICAgICAgICAgICBoaDogJyVkIOCyl+CyguCyn+CzhicsXG4gICAgICAgICAgICBkOiAn4LKS4LKC4LKm4LOBIOCypuCyv+CyqCcsXG4gICAgICAgICAgICBkZDogJyVkIOCypuCyv+CyqCcsXG4gICAgICAgICAgICBNOiAn4LKS4LKC4LKm4LOBIOCypOCyv+CyguCyl+Cys+CzgScsXG4gICAgICAgICAgICBNTTogJyVkIOCypOCyv+CyguCyl+Cys+CzgScsXG4gICAgICAgICAgICB5OiAn4LKS4LKC4LKm4LOBIOCyteCysOCzjeCytycsXG4gICAgICAgICAgICB5eTogJyVkIOCyteCysOCzjeCytycsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgs6fgs6jgs6ngs6rgs6vgs6zgs63gs67gs6/gs6ZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gsrDgsr7gsqTgs43gsrDgsr984LKs4LOG4LKz4LK/4LKX4LON4LKX4LOGfOCyruCyp+CzjeCyr+CyvuCyueCzjeCyqHzgsrjgsoLgspzgs4YvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgsrDgsr7gsqTgs43gsrDgsr8nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsqzgs4bgsrPgsr/gspfgs43gspfgs4YnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LKu4LKn4LON4LKv4LK+4LK54LON4LKoJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsrjgsoLgspzgs4YnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LKw4LK+4LKk4LON4LKw4LK/JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsqzgs4bgsrPgsr/gspfgs43gspfgs4YnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CyruCyp+CzjeCyr+CyvuCyueCzjeCyqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LK44LKC4LKc4LOGJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsrDgsr7gsqTgs43gsrDgsr8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0o4LKo4LOG4LOVKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn4LKo4LOG4LOVJztcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGtuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEtvcmVhbiBba29dXG4vLyEgYXV0aG9yIDogS3l1bmd3b29rLCBQYXJrIDogaHR0cHM6Ly9naXRodWIuY29tL2t5dW5ndzAwa1xuLy8hIGF1dGhvciA6IEplZWV5dWwgTGVlIDxqZWVleXVsQGdtYWlsLmNvbT5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBrbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2tvJywge1xuICAgICAgICBtb250aHM6ICcx7JuUXzLsm5RfM+yblF807JuUXzXsm5RfNuyblF837JuUXzjsm5RfOeyblF8xMOyblF8xMeyblF8xMuyblCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICcx7JuUXzLsm5RfM+yblF807JuUXzXsm5RfNuyblF837JuUXzjsm5RfOeyblF8xMOyblF8xMeyblF8xMuyblCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfsnbzsmpTsnbxf7JuU7JqU7J28X+2ZlOyalOydvF/siJjsmpTsnbxf66qp7JqU7J28X+q4iOyalOydvF/thqDsmpTsnbwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfsnbxf7JuUX+2ZlF/siJhf66qpX+q4iF/thqAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn7J28X+yblF/tmZRf7IiYX+uqqV/quIhf7YagJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLk1NLkRELicsXG4gICAgICAgICAgICBMTDogJ1lZWVnrhYQgTU1NTSBE7J28JyxcbiAgICAgICAgICAgIExMTDogJ1lZWVnrhYQgTU1NTSBE7J28IEEgaDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWeuFhCBNTU1NIETsnbwgZGRkZCBBIGg6bW0nLFxuICAgICAgICAgICAgbDogJ1lZWVkuTU0uREQuJyxcbiAgICAgICAgICAgIGxsOiAnWVlZWeuFhCBNTU1NIETsnbwnLFxuICAgICAgICAgICAgbGxsOiAnWVlZWeuFhCBNTU1NIETsnbwgQSBoOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZ64WEIE1NTU0gROydvCBkZGRkIEEgaDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAn7Jik64qYIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICfrgrTsnbwgTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICfslrTsoJwgTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICfsp4Drgpzso7wgZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIO2bhCcsXG4gICAgICAgICAgICBwYXN0OiAnJXMg7KCEJyxcbiAgICAgICAgICAgIHM6ICfrqocg7LSIJyxcbiAgICAgICAgICAgIHNzOiAnJWTstIgnLFxuICAgICAgICAgICAgbTogJzHrtoQnLFxuICAgICAgICAgICAgbW06ICclZOu2hCcsXG4gICAgICAgICAgICBoOiAn7ZWcIOyLnOqwhCcsXG4gICAgICAgICAgICBoaDogJyVk7Iuc6rCEJyxcbiAgICAgICAgICAgIGQ6ICftlZjro6gnLFxuICAgICAgICAgICAgZGQ6ICclZOydvCcsXG4gICAgICAgICAgICBNOiAn7ZWcIOuLrCcsXG4gICAgICAgICAgICBNTTogJyVk64usJyxcbiAgICAgICAgICAgIHk6ICfsnbwg64WEJyxcbiAgICAgICAgICAgIHl5OiAnJWTrhYQnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0o7J28fOyblHzso7wpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn7J28JztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfsm5QnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+yjvCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+yYpOyghHzsmKTtm4QvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAodG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbiA9PT0gJ+yYpO2bhCc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc1VwcGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gaG91ciA8IDEyID8gJ+yYpOyghCcgOiAn7Jik7ZuEJztcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBrbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBLdXJkaXNoIFtrdV1cbi8vISBhdXRob3IgOiBTaGFocmFtIE1lYmFzaGFyIDogaHR0cHM6Ly9naXRodWIuY29tL1NoYWhyYW1NZWJhc2hhclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgICcxJzogJ9mhJyxcbiAgICAgICAgICAgICcyJzogJ9miJyxcbiAgICAgICAgICAgICczJzogJ9mjJyxcbiAgICAgICAgICAgICc0JzogJ9mkJyxcbiAgICAgICAgICAgICc1JzogJ9mlJyxcbiAgICAgICAgICAgICc2JzogJ9mmJyxcbiAgICAgICAgICAgICc3JzogJ9mnJyxcbiAgICAgICAgICAgICc4JzogJ9moJyxcbiAgICAgICAgICAgICc5JzogJ9mpJyxcbiAgICAgICAgICAgICcwJzogJ9mgJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ9mhJzogJzEnLFxuICAgICAgICAgICAgJ9miJzogJzInLFxuICAgICAgICAgICAgJ9mjJzogJzMnLFxuICAgICAgICAgICAgJ9mkJzogJzQnLFxuICAgICAgICAgICAgJ9mlJzogJzUnLFxuICAgICAgICAgICAgJ9mmJzogJzYnLFxuICAgICAgICAgICAgJ9mnJzogJzcnLFxuICAgICAgICAgICAgJ9moJzogJzgnLFxuICAgICAgICAgICAgJ9mpJzogJzknLFxuICAgICAgICAgICAgJ9mgJzogJzAnLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHMgPSBbXG4gICAgICAgICAgICAn2qnYp9mG2YjZhtuMINiv2YjZiNuV2YUnLFxuICAgICAgICAgICAgJ9i02YjYqNin2KonLFxuICAgICAgICAgICAgJ9im2KfYstin2LEnLFxuICAgICAgICAgICAgJ9mG24zYs9in2YYnLFxuICAgICAgICAgICAgJ9im2KfbjNin2LEnLFxuICAgICAgICAgICAgJ9it2YjYstuV24zYsdin2YYnLFxuICAgICAgICAgICAgJ9iq25XZhdmF2YjYsicsXG4gICAgICAgICAgICAn2KbYp9ioJyxcbiAgICAgICAgICAgICfYptuV24zZhNmI2YjZhCcsXG4gICAgICAgICAgICAn2KrYtNix24zZhtuMINuM25XZg9uV2YUnLFxuICAgICAgICAgICAgJ9iq2LTYsduM2YbbjCDYr9mI2YjbldmFJyxcbiAgICAgICAgICAgICfZg9in2YbZiNmG24wg24zbldqp25XZhScsXG4gICAgICAgIF07XG5cbiAgICB2YXIga3UgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrdScsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzOiAn24zZh+KAjNmD2LTZh+KAjNmF2YXZh+KAjF/Yr9mI2YjYtNmH4oCM2YXZhdmH4oCMX9iz247YtNmH4oCM2YXZhdmH4oCMX9qG2YjYp9ix2LTZh+KAjNmF2YXZh+KAjF/ZvtuO2YbYrNi02YfigIzZhdmF2YfigIxf2YfZh+KAjNuM2YbbjF/YtNmH4oCM2YXZhdmH4oCMJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn24zZh+KAjNmD2LTZh+KAjNmFX9iv2YjZiNi02YfigIzZhV/Ys9uO2LTZh+KAjNmFX9qG2YjYp9ix2LTZh+KAjNmFX9m+247Zhtis2LTZh+KAjNmFX9mH2YfigIzbjNmG24xf2LTZh+KAjNmF2YXZh+KAjCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfbjF/Yr1/Ys1/ahl/Zvl/Zh1/YtCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YptuO2YjYp9ix2YfigIx82KjZh+KAjNuM2KfZhtuMLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL9im247ZiNin2LHZh+KAjC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYqNmH4oCM24zYp9mG24wnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9im247ZiNin2LHZh+KAjCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9im2YfigIzZhdix24Yg2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2KjZh+KAjNuM2KfZhtuMINmD2KfYqtqY2YXbjtixXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9mD2KfYqtqY2YXbjtixXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9iv2YjbjtmG244g2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn2YTZh+KAjCAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMnLFxuICAgICAgICAgICAgczogJ9qG2YfigIzZhtivINqG2LHZg9mH4oCM24zZh+KAjNmDJyxcbiAgICAgICAgICAgIHNzOiAn2obYsdmD2YfigIwgJWQnLFxuICAgICAgICAgICAgbTogJ9uM2YfigIzZgyDYrtmI2YTZh+KAjNmDJyxcbiAgICAgICAgICAgIG1tOiAnJWQg2K7ZiNmE2YfigIzZgycsXG4gICAgICAgICAgICBoOiAn24zZh+KAjNmDINmD2KfYqtqY2YXbjtixJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2YPYp9iq2pjZhduO2LEnLFxuICAgICAgICAgICAgZDogJ9uM2YfigIzZgyDalduG2pgnLFxuICAgICAgICAgICAgZGQ6ICclZCDalduG2pgnLFxuICAgICAgICAgICAgTTogJ9uM2YfigIzZgyDZhdin2YbarycsXG4gICAgICAgICAgICBNTTogJyVkINmF2KfZhtqvJyxcbiAgICAgICAgICAgIHk6ICfbjNmH4oCM2YMg2LPYp9q1JyxcbiAgICAgICAgICAgIHl5OiAnJWQg2LPYp9q1JyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ga3U7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogS3lyZ3l6IFtreV1cbi8vISBhdXRob3IgOiBDaHluZ3l6IEFyeXN0YW4gdXVsdSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jaHluZ3l6XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDA6ICct0YfSrycsXG4gICAgICAgIDE6ICct0YfQuCcsXG4gICAgICAgIDI6ICct0YfQuCcsXG4gICAgICAgIDM6ICct0YfSrycsXG4gICAgICAgIDQ6ICct0YfSrycsXG4gICAgICAgIDU6ICct0YfQuCcsXG4gICAgICAgIDY6ICct0YfRiycsXG4gICAgICAgIDc6ICct0YfQuCcsXG4gICAgICAgIDg6ICct0YfQuCcsXG4gICAgICAgIDk6ICct0YfRgycsXG4gICAgICAgIDEwOiAnLdGH0YMnLFxuICAgICAgICAyMDogJy3Rh9GLJyxcbiAgICAgICAgMzA6ICct0YfRgycsXG4gICAgICAgIDQwOiAnLdGH0YsnLFxuICAgICAgICA1MDogJy3Rh9KvJyxcbiAgICAgICAgNjA6ICct0YfRiycsXG4gICAgICAgIDcwOiAnLdGH0LgnLFxuICAgICAgICA4MDogJy3Rh9C4JyxcbiAgICAgICAgOTA6ICct0YfRgycsXG4gICAgICAgIDEwMDogJy3Rh9KvJyxcbiAgICB9O1xuXG4gICAgdmFyIGt5ID0gbW9tZW50LmRlZmluZUxvY2FsZSgna3knLCB7XG4gICAgICAgIG1vbnRoczogJ9GP0L3QstCw0YDRjF/RhNC10LLRgNCw0LvRjF/QvNCw0YDRgl/QsNC/0YDQtdC70Yxf0LzQsNC5X9C40Y7QvdGMX9C40Y7Qu9GMX9Cw0LLQs9GD0YHRgl/RgdC10L3RgtGP0LHRgNGMX9C+0LrRgtGP0LHRgNGMX9C90L7Rj9Cx0YDRjF/QtNC10LrQsNCx0YDRjCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfRj9C90LJf0YTQtdCyX9C80LDRgNGCX9Cw0L/RgF/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCzX9GB0LXQvV/QvtC60YJf0L3QvtGPX9C00LXQuicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfQltC10LrRiNC10LzQsdC4X9CU0q/QudGI06nQvNCx0q9f0KjQtdC50YjQtdC80LHQuF/QqNCw0YDRiNC10LzQsdC4X9CR0LXQudGI0LXQvNCx0Lhf0JbRg9C80LBf0JjRiNC10LzQsdC4Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0JbQtdC6X9CU0q/QuV/QqNC10Llf0KjQsNGAX9CR0LXQuV/QltGD0Lxf0JjRiNC1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9CW0Lpf0JTQuV/QqNC5X9Co0YBf0JHQuV/QltC8X9CY0YgnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0JHSr9Cz0q/QvSDRgdCw0LDRgl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQrdGA0YLQtdKjINGB0LDQsNGCXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9GB0LDQsNGCXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9Ca0LXRh9GN0Y0g0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9Oo0YLQutOp0L0g0LDQv9GC0LDQvdGL0L1dIGRkZGQgW9C60q/QvdKvXSBb0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg0LjRh9C40L3QtNC1JyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDQvNGD0YDRg9C9JyxcbiAgICAgICAgICAgIHM6ICfQsdC40YDQvdC10YfQtSDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgc3M6ICclZCDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbTogJ9Cx0LjRgCDQvNKv0L3TqdGCJyxcbiAgICAgICAgICAgIG1tOiAnJWQg0LzSr9C906nRgicsXG4gICAgICAgICAgICBoOiAn0LHQuNGAINGB0LDQsNGCJyxcbiAgICAgICAgICAgIGhoOiAnJWQg0YHQsNCw0YInLFxuICAgICAgICAgICAgZDogJ9Cx0LjRgCDQutKv0L0nLFxuICAgICAgICAgICAgZGQ6ICclZCDQutKv0L0nLFxuICAgICAgICAgICAgTTogJ9Cx0LjRgCDQsNC5JyxcbiAgICAgICAgICAgIE1NOiAnJWQg0LDQuScsXG4gICAgICAgICAgICB5OiAn0LHQuNGAINC20YvQuycsXG4gICAgICAgICAgICB5eTogJyVkINC20YvQuycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0YfQuHzRh9GLfNGH0q980YfRgykvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYSA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGIgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoc3VmZml4ZXNbbnVtYmVyXSB8fCBzdWZmaXhlc1thXSB8fCBzdWZmaXhlc1tiXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBreTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBMdXhlbWJvdXJnaXNoIFtsYl1cbi8vISBhdXRob3IgOiBtd2VpbWVyc2tpcmNoIDogaHR0cHM6Ly9naXRodWIuY29tL213ZWltZXJza2lyY2hcbi8vISBhdXRob3IgOiBEYXZpZCBSYWlzb24gOiBodHRwczovL2dpdGh1Yi5jb20va3dpc2F0elxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIG06IFsnZW5nIE1pbnV0dCcsICdlbmdlciBNaW51dHQnXSxcbiAgICAgICAgICAgIGg6IFsnZW5nIFN0b25uJywgJ2VuZ2VyIFN0b25uJ10sXG4gICAgICAgICAgICBkOiBbJ2VlbiBEYWcnLCAnZW5nZW0gRGFnJ10sXG4gICAgICAgICAgICBNOiBbJ2VlIE1vdW50JywgJ2VuZ2VtIE1vdW50J10sXG4gICAgICAgICAgICB5OiBbJ2VlIEpvZXInLCAnZW5nZW0gSm9lciddLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByb2Nlc3NGdXR1cmVUaW1lKHN0cmluZykge1xuICAgICAgICB2YXIgbnVtYmVyID0gc3RyaW5nLnN1YnN0cigwLCBzdHJpbmcuaW5kZXhPZignICcpKTtcbiAgICAgICAgaWYgKGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2EgJyArIHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ2FuICcgKyBzdHJpbmc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByb2Nlc3NQYXN0VGltZShzdHJpbmcpIHtcbiAgICAgICAgdmFyIG51bWJlciA9IHN0cmluZy5zdWJzdHIoMCwgc3RyaW5nLmluZGV4T2YoJyAnKSk7XG4gICAgICAgIGlmIChlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobnVtYmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuICd2aXJ1ICcgKyBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICd2aXJ1biAnICsgc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHdvcmQgYmVmb3JlIHRoZSBnaXZlbiBudW1iZXIgbG9zZXMgdGhlICctbicgZW5kaW5nLlxuICAgICAqIGUuZy4gJ2FuIDEwIERlZWcnIGJ1dCAnYSA1IERlZWcnXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbnVtYmVyIHtpbnRlZ2VyfVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpIHtcbiAgICAgICAgbnVtYmVyID0gcGFyc2VJbnQobnVtYmVyLCAxMCk7XG4gICAgICAgIGlmIChpc05hTihudW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIC8vIE5lZ2F0aXZlIE51bWJlciAtLT4gYWx3YXlzIHRydWVcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDEwKSB7XG4gICAgICAgICAgICAvLyBPbmx5IDEgZGlnaXRcbiAgICAgICAgICAgIGlmICg0IDw9IG51bWJlciAmJiBudW1iZXIgPD0gNykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDEwMCkge1xuICAgICAgICAgICAgLy8gMiBkaWdpdHNcbiAgICAgICAgICAgIHZhciBsYXN0RGlnaXQgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBmaXJzdERpZ2l0ID0gbnVtYmVyIC8gMTA7XG4gICAgICAgICAgICBpZiAobGFzdERpZ2l0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihmaXJzdERpZ2l0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobGFzdERpZ2l0KTtcbiAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCAxMDAwMCkge1xuICAgICAgICAgICAgLy8gMyBvciA0IGRpZ2l0cyAtLT4gcmVjdXJzaXZlbHkgY2hlY2sgZmlyc3QgZGlnaXRcbiAgICAgICAgICAgIHdoaWxlIChudW1iZXIgPj0gMTApIHtcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobnVtYmVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEFueXRoaW5nIGxhcmdlciB0aGFuIDQgZGlnaXRzOiByZWN1cnNpdmVseSBjaGVjayBmaXJzdCBuLTMgZGlnaXRzXG4gICAgICAgICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDAwO1xuICAgICAgICAgICAgcmV0dXJuIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxiID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbGInLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcl9GZWJydWFyX03DpGVyel9BYnLDq2xsX01lZV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbi5fRmVici5fTXJ6Ll9BYnIuX01lZV9KdW4uX0p1bC5fQXVnLl9TZXB0Ll9Pa3QuX05vdi5fRGV6Licuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdTb25uZGVnX03DqWluZGVnX0TDq25zY2hkZWdfTcOrdHR3b2NoX0Rvbm5lc2NoZGVnX0ZyZWlkZWdfU2Ftc2NoZGVnJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU28uX03DqS5fRMOrLl9Nw6suX0RvLl9Gci5fU2EuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1NvX03DqV9Ew6tfTcOrX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0gW0F1ZXJdJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MgW0F1ZXJdJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tIFtBdWVyXScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0gW0F1ZXJdJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSGF1dCB1bV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbTXVlciB1bV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt1bV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tHw6tzY2h0ZXIgdW1dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLy8gRGlmZmVyZW50IGRhdGUgc3RyaW5nIGZvciAnRMOrbnNjaGRlZycgKFR1ZXNkYXkpIGFuZCAnRG9ubmVzY2hkZWcnIChUaHVyc2RheSkgZHVlIHRvIHBob25vbG9naWNhbCBydWxlXG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbTGVzY2h0ZW5dIGRkZGQgW3VtXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tMZXNjaHRlXSBkZGRkIFt1bV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiBwcm9jZXNzRnV0dXJlVGltZSxcbiAgICAgICAgICAgIHBhc3Q6IHByb2Nlc3NQYXN0VGltZSxcbiAgICAgICAgICAgIHM6ICdlIHB1ZXIgU2Vrb25uZW4nLFxuICAgICAgICAgICAgc3M6ICclZCBTZWtvbm5lbicsXG4gICAgICAgICAgICBtOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW06ICclZCBNaW51dHRlbicsXG4gICAgICAgICAgICBoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGg6ICclZCBTdG9ubmVuJyxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogJyVkIERlZWcnLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiAnJWQgTcOpaW50JyxcbiAgICAgICAgICAgIHk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eTogJyVkIEpvZXInLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxiO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IExhbyBbbG9dXG4vLyEgYXV0aG9yIDogUnlhbiBIYXJ0IDogaHR0cHM6Ly9naXRodWIuY29tL3J5YW5oYXJ0MlxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGxvID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbG8nLCB7XG4gICAgICAgIG1vbnRoczogJ+C6oeC6seC6h+C6geC6reC6mV/guoHgurjguqHgup7gurJf4Lqh4Lq14LqZ4LqyX+C7gOC6oeC6quC6sl/gup7gurbgupTguqrgurDgup7gurJf4Lqh4Lq04LqW4Lq44LqZ4LqyX+C6geC7jeC6peC6sOC6geC6u+C6lF/guqrgurTguofguqvgurJf4LqB4Lqx4LqZ4LqN4LqyX+C6leC6uOC6peC6sl/gup7gurDguojgurTguoFf4LqX4Lqx4LqZ4Lqn4LqyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ+C6oeC6seC6h+C6geC6reC6mV/guoHgurjguqHgup7gurJf4Lqh4Lq14LqZ4LqyX+C7gOC6oeC6quC6sl/gup7gurbgupTguqrgurDgup7gurJf4Lqh4Lq04LqW4Lq44LqZ4LqyX+C6geC7jeC6peC6sOC6geC6u+C6lF/guqrgurTguofguqvgurJf4LqB4Lqx4LqZ4LqN4LqyX+C6leC6uOC6peC6sl/gup7gurDguojgurTguoFf4LqX4Lqx4LqZ4Lqn4LqyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+C6reC6suC6l+C6tOC6lF/guojgurHguplf4Lqt4Lqx4LqH4LqE4Lqy4LqZX+C6nuC6uOC6lF/gup7gurDguqvgurHgupRf4Lqq4Lq44LqBX+C7gOC6quC6u+C6sicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+C6l+C6tOC6lF/guojgurHguplf4Lqt4Lqx4LqH4LqE4Lqy4LqZX+C6nuC6uOC6lF/gup7gurDguqvgurHgupRf4Lqq4Lq44LqBX+C7gOC6quC6u+C6sicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgupdf4LqIX+C6reC6hF/gup5f4Lqe4LqrX+C6quC6gV/guqonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAn4Lqn4Lqx4LqZZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gupXguq3gupngu4Dguorgurvgu4ngurJ84LqV4Lqt4LqZ4LuB4Lql4LqHLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfgupXguq3gupngu4HguqXguocnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LqV4Lqt4LqZ4LuA4LqK4Lq74LuJ4LqyJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgupXguq3gupngu4HguqXguocnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vguqHgurfgu4ngupngurXgu4ngu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4Lqh4Lq34LuJ4Lqt4Lq34LuI4LqZ4LuA4Lqn4Lql4LqyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vguqfgurHgupldZGRkZFvgu5zgu4ngurLgu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4Lqh4Lq34LuJ4Lqn4Lqy4LqZ4LqZ4Lq14LuJ4LuA4Lqn4Lql4LqyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vguqfgurHgupldZGRkZFvgu4HguqXgu4nguqfgupngurXgu4ngu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn4Lqt4Lq14LqBICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+C6nOC7iOC6suC6meC6oeC6sicsXG4gICAgICAgICAgICBzOiAn4Lqa4LuN4LuI4LuA4LqX4Lq74LuI4Lqy4LuD4LqU4Lqn4Lq04LqZ4Lqy4LqX4Lq1JyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Lqn4Lq04LqZ4Lqy4LqX4Lq1JyxcbiAgICAgICAgICAgIG06ICcxIOC6meC6suC6l+C6tScsXG4gICAgICAgICAgICBtbTogJyVkIOC6meC6suC6l+C6tScsXG4gICAgICAgICAgICBoOiAnMSDguorgurvgu4jguqfgu4LguqHguocnLFxuICAgICAgICAgICAgaGg6ICclZCDguorgurvgu4jguqfgu4LguqHguocnLFxuICAgICAgICAgICAgZDogJzEg4Lqh4Lq34LuJJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Lqh4Lq34LuJJyxcbiAgICAgICAgICAgIE06ICcxIOC7gOC6lOC6t+C6reC6mScsXG4gICAgICAgICAgICBNTTogJyVkIOC7gOC6lOC6t+C6reC6mScsXG4gICAgICAgICAgICB5OiAnMSDgupvgurUnLFxuICAgICAgICAgICAgeXk6ICclZCDgupvgurUnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvKOC6l+C6teC7iClcXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAn4LqX4Lq14LuIJyArIG51bWJlcjtcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBsbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBMaXRodWFuaWFuIFtsdF1cbi8vISBhdXRob3IgOiBNaW5kYXVnYXMgTW96xatyYXMgOiBodHRwczovL2dpdGh1Yi5jb20vbW1venVyYXNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB1bml0cyA9IHtcbiAgICAgICAgc3M6ICdzZWt1bmTEl19zZWt1bmTFvmnFs19zZWt1bmRlcycsXG4gICAgICAgIG06ICdtaW51dMSXX21pbnV0xJdzX21pbnV0xJknLFxuICAgICAgICBtbTogJ21pbnV0xJdzX21pbnXEjWnFs19taW51dGVzJyxcbiAgICAgICAgaDogJ3ZhbGFuZGFfdmFsYW5kb3NfdmFsYW5kxIUnLFxuICAgICAgICBoaDogJ3ZhbGFuZG9zX3ZhbGFuZMWzX3ZhbGFuZGFzJyxcbiAgICAgICAgZDogJ2RpZW5hX2RpZW5vc19kaWVuxIUnLFxuICAgICAgICBkZDogJ2RpZW5vc19kaWVuxbNfZGllbmFzJyxcbiAgICAgICAgTTogJ23El251b19txJduZXNpb19txJduZXPErycsXG4gICAgICAgIE1NOiAnbcSXbmVzaWFpX23El25lc2nFs19txJduZXNpdXMnLFxuICAgICAgICB5OiAnbWV0YWlfbWV0xbNfbWV0dXMnLFxuICAgICAgICB5eTogJ21ldGFpX21ldMWzX21ldHVzJyxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZVNlY29uZHMobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICByZXR1cm4gJ2tlbGlvcyBzZWt1bmTEl3MnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ2tlbGnFsyBzZWt1bmTFvmnFsycgOiAna2VsaWFzIHNla3VuZGVzJztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVTaW5ndWxhcihudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXhcbiAgICAgICAgICAgID8gZm9ybXMoa2V5KVswXVxuICAgICAgICAgICAgOiBpc0Z1dHVyZVxuICAgICAgICAgICAgPyBmb3JtcyhrZXkpWzFdXG4gICAgICAgICAgICA6IGZvcm1zKGtleSlbMl07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNwZWNpYWwobnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBudW1iZXIgJSAxMCA9PT0gMCB8fCAobnVtYmVyID4gMTAgJiYgbnVtYmVyIDwgMjApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBmb3JtcyhrZXkpIHtcbiAgICAgICAgcmV0dXJuIHVuaXRzW2tleV0uc3BsaXQoJ18nKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHJlc3VsdCArIHRyYW5zbGF0ZVNpbmd1bGFyKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5WzBdLCBpc0Z1dHVyZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChzcGVjaWFsKG51bWJlcikgPyBmb3JtcyhrZXkpWzFdIDogZm9ybXMoa2V5KVswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgZm9ybXMoa2V5KVsxXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChzcGVjaWFsKG51bWJlcikgPyBmb3JtcyhrZXkpWzFdIDogZm9ybXMoa2V5KVsyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGx0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbHQnLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgZm9ybWF0OiAnc2F1c2lvX3Zhc2FyaW9fa292b19iYWxhbmTFvmlvX2dlZ3XFvsSXc19iaXLFvmVsaW9fbGllcG9zX3J1Z3BqxavEjWlvX3J1Z3PEl2pvX3NwYWxpb19sYXBrcmnEjWlvX2dydW9kxb5pbycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ3NhdXNpc192YXNhcmlzX2tvdmFzX2JhbGFuZGlzX2dlZ3XFvsSXX2JpcsW+ZWxpc19saWVwYV9ydWdwasWrdGlzX3J1Z3PEl2ppc19zcGFsaXNfbGFwa3JpdGlzX2dydW9kaXMnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvRFtvRF0/KFxcW1teXFxbXFxdXSpcXF18XFxzKStNTU1NP3xNTU1NPyhcXFtbXlxcW1xcXV0qXFxdfFxccykrRFtvRF0/LyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdzYXVfdmFzX2tvdl9iYWxfZ2VnX2Jpcl9saWVfcmdwX3Jnc19zcGFfbGFwX2dyZCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ3Nla21hZGllbsSvX3Bpcm1hZGllbsSvX2FudHJhZGllbsSvX3RyZcSNaWFkaWVuxK9fa2V0dmlydGFkaWVuxK9fcGVua3RhZGllbsSvX8WhZcWhdGFkaWVuxK8nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICdzZWttYWRpZW5pc19waXJtYWRpZW5pc19hbnRyYWRpZW5pc190cmXEjWlhZGllbmlzX2tldHZpcnRhZGllbmlzX3Blbmt0YWRpZW5pc1/FoWXFoXRhZGllbmlzJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL2RkZGQgSEg6bW0vLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU2VrX1Bpcl9BbnRfVHJlX0tldF9QZW5fxaBlxaEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU19QX0FfVF9LX1BuX8WgJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXSwgSEg6bW0gW3ZhbC5dJyxcbiAgICAgICAgICAgIExMTEw6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0sIGRkZGQsIEhIOm1tIFt2YWwuXScsXG4gICAgICAgICAgICBsOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBsbDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXScsXG4gICAgICAgICAgICBsbGw6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0sIEhIOm1tIFt2YWwuXScsXG4gICAgICAgICAgICBsbGxsOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBkZGQsIEhIOm1tIFt2YWwuXScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW8WgaWFuZGllbl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tSeXRval0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbVmFrYXJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW1ByYcSXanVzxK9dIGRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdwbyAlcycsXG4gICAgICAgICAgICBwYXN0OiAncHJpZcWhICVzJyxcbiAgICAgICAgICAgIHM6IHRyYW5zbGF0ZVNlY29uZHMsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlU2luZ3VsYXIsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRlU2luZ3VsYXIsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogdHJhbnNsYXRlU2luZ3VsYXIsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRlU2luZ3VsYXIsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogdHJhbnNsYXRlU2luZ3VsYXIsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tb2ppLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICctb2ppJztcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGx0O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IExhdHZpYW4gW2x2XVxuLy8hIGF1dGhvciA6IEtyaXN0YXBzIEthcmxzb25zIDogaHR0cHM6Ly9naXRodWIuY29tL3NrYWtyaVxuLy8hIGF1dGhvciA6IErEgW5pcyBFbG1lcmlzIDogaHR0cHM6Ly9naXRodWIuY29tL0phbmlzRVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHVuaXRzID0ge1xuICAgICAgICBzczogJ3Nla3VuZGVzX3Nla3VuZMSTbV9zZWt1bmRlX3Nla3VuZGVzJy5zcGxpdCgnXycpLFxuICAgICAgICBtOiAnbWluxat0ZXNfbWluxat0xJNtX21pbsWrdGVfbWluxat0ZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIG1tOiAnbWluxat0ZXNfbWluxat0xJNtX21pbsWrdGVfbWluxat0ZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIGg6ICdzdHVuZGFzX3N0dW5kxIFtX3N0dW5kYV9zdHVuZGFzJy5zcGxpdCgnXycpLFxuICAgICAgICBoaDogJ3N0dW5kYXNfc3R1bmTEgW1fc3R1bmRhX3N0dW5kYXMnLnNwbGl0KCdfJyksXG4gICAgICAgIGQ6ICdkaWVuYXNfZGllbsSBbV9kaWVuYV9kaWVuYXMnLnNwbGl0KCdfJyksXG4gICAgICAgIGRkOiAnZGllbmFzX2RpZW7EgW1fZGllbmFfZGllbmFzJy5zcGxpdCgnXycpLFxuICAgICAgICBNOiAnbcSTbmXFoWFfbcSTbmXFoWllbV9txJNuZXNpc19txJNuZcWhaScuc3BsaXQoJ18nKSxcbiAgICAgICAgTU06ICdtxJNuZcWhYV9txJNuZcWhaWVtX23Ek25lc2lzX23Ek25lxaFpJy5zcGxpdCgnXycpLFxuICAgICAgICB5OiAnZ2FkYV9nYWRpZW1fZ2Fkc19nYWRpJy5zcGxpdCgnXycpLFxuICAgICAgICB5eTogJ2dhZGFfZ2FkaWVtX2dhZHNfZ2FkaScuc3BsaXQoJ18nKSxcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB3aXRob3V0U3VmZml4IGJvb2xlYW4gdHJ1ZSA9IGEgbGVuZ3RoIG9mIHRpbWU7IGZhbHNlID0gYmVmb3JlL2FmdGVyIGEgcGVyaW9kIG9mIHRpbWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9ybWF0KGZvcm1zLCBudW1iZXIsIHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgIC8vIEUuZy4gXCIyMSBtaW7Fq3RlXCIsIFwiMyBtaW7Fq3Rlc1wiLlxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciAlIDEwID09PSAxICYmIG51bWJlciAlIDEwMCAhPT0gMTEgPyBmb3Jtc1syXSA6IGZvcm1zWzNdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRS5nLiBcIjIxIG1pbsWrdGVzXCIgYXMgaW4gXCJwxJNjIDIxIG1pbsWrdGVzXCIuXG4gICAgICAgICAgICAvLyBFLmcuIFwiMyBtaW7Fq3TEk21cIiBhcyBpbiBcInDEk2MgMyBtaW7Fq3TEk21cIi5cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgJSAxMCA9PT0gMSAmJiBudW1iZXIgJSAxMDAgIT09IDExID8gZm9ybXNbMF0gOiBmb3Jtc1sxXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyBmb3JtYXQodW5pdHNba2V5XSwgbnVtYmVyLCB3aXRob3V0U3VmZml4KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHJldHVybiBmb3JtYXQodW5pdHNba2V5XSwgbnVtYmVyLCB3aXRob3V0U3VmZml4KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVTZWNvbmRzKG51bWJlciwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdkYcW+YXMgc2VrdW5kZXMnIDogJ2Rhxb7EgW0gc2VrdW5kxJNtJztcbiAgICB9XG5cbiAgICB2YXIgbHYgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdsdicsIHtcbiAgICAgICAgbW9udGhzOiAnamFudsSBcmlzX2ZlYnJ1xIFyaXNfbWFydHNfYXByxKtsaXNfbWFpanNfasWrbmlqc19qxatsaWpzX2F1Z3VzdHNfc2VwdGVtYnJpc19va3RvYnJpc19ub3ZlbWJyaXNfZGVjZW1icmlzJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbl9mZWJfbWFyX2Fwcl9tYWlfasWrbl9qxatsX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnc3bEk3RkaWVuYV9waXJtZGllbmFfb3RyZGllbmFfdHJlxaFkaWVuYV9jZXR1cnRkaWVuYV9waWVrdGRpZW5hX3Nlc3RkaWVuYScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N2X1BfT19UX0NfUGtfUycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdl9QX09fVF9DX1BrX1MnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVkuJyxcbiAgICAgICAgICAgIExMOiAnWVlZWS4gW2dhZGFdIEQuIE1NTU0nLFxuICAgICAgICAgICAgTExMOiAnWVlZWS4gW2dhZGFdIEQuIE1NTU0sIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdZWVlZLiBbZ2FkYV0gRC4gTU1NTSwgZGRkZCwgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vFoG9kaWVuIHB1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1LEq3QgcHVsa3N0ZW5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbcHVsa3N0ZW5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbVmFrYXIgcHVsa3N0ZW5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW1BhZ8SBanXFocSBXSBkZGRkIFtwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdwxJNjICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwaXJtcyAlcycsXG4gICAgICAgICAgICBzOiByZWxhdGl2ZVNlY29uZHMsXG4gICAgICAgICAgICBzczogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG06IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcixcbiAgICAgICAgICAgIG1tOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaDogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLFxuICAgICAgICAgICAgaGg6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBkOiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIsXG4gICAgICAgICAgICBkZDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIE06IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcixcbiAgICAgICAgICAgIE1NOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeTogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLFxuICAgICAgICAgICAgeXk6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbHY7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTW9udGVuZWdyaW4gW21lXVxuLy8hIGF1dGhvciA6IE1pb2RyYWcgTmlrYcSNIDxtaW9kcmFnQHJlc3RhcnRpdC5tZT4gOiBodHRwczovL2dpdGh1Yi5jb20vbWlvZHJhZ25pa2FjXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdHJhbnNsYXRvciA9IHtcbiAgICAgICAgd29yZHM6IHtcbiAgICAgICAgICAgIC8vRGlmZmVyZW50IGdyYW1tYXRpY2FsIGNhc2VzXG4gICAgICAgICAgICBzczogWydzZWt1bmQnLCAnc2VrdW5kYScsICdzZWt1bmRpJ10sXG4gICAgICAgICAgICBtOiBbJ2plZGFuIG1pbnV0JywgJ2plZG5vZyBtaW51dGEnXSxcbiAgICAgICAgICAgIG1tOiBbJ21pbnV0JywgJ21pbnV0YScsICdtaW51dGEnXSxcbiAgICAgICAgICAgIGg6IFsnamVkYW4gc2F0JywgJ2plZG5vZyBzYXRhJ10sXG4gICAgICAgICAgICBoaDogWydzYXQnLCAnc2F0YScsICdzYXRpJ10sXG4gICAgICAgICAgICBkZDogWydkYW4nLCAnZGFuYScsICdkYW5hJ10sXG4gICAgICAgICAgICBNTTogWydtamVzZWMnLCAnbWplc2VjYScsICdtamVzZWNpJ10sXG4gICAgICAgICAgICB5eTogWydnb2RpbmEnLCAnZ29kaW5lJywgJ2dvZGluYSddLFxuICAgICAgICB9LFxuICAgICAgICBjb3JyZWN0R3JhbW1hdGljYWxDYXNlOiBmdW5jdGlvbiAobnVtYmVyLCB3b3JkS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyID09PSAxXG4gICAgICAgICAgICAgICAgPyB3b3JkS2V5WzBdXG4gICAgICAgICAgICAgICAgOiBudW1iZXIgPj0gMiAmJiBudW1iZXIgPD0gNFxuICAgICAgICAgICAgICAgID8gd29yZEtleVsxXVxuICAgICAgICAgICAgICAgIDogd29yZEtleVsyXTtcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgICAgIHZhciB3b3JkS2V5ID0gdHJhbnNsYXRvci53b3Jkc1trZXldO1xuICAgICAgICAgICAgaWYgKGtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IHdvcmRLZXlbMF0gOiB3b3JkS2V5WzFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICBudW1iZXIgK1xuICAgICAgICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdG9yLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UobnVtYmVyLCB3b3JkS2V5KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIHZhciBtZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21lJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hal9qdW5fanVsX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICduZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVkLl9wb24uX3V0by5fc3JpLl/EjWV0Ll9wZXQuX3N1Yi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fdXRfc3JfxI1lX3BlX3N1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tkYW5hcyB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3NqdXRyYSB1XSBMVCcsXG5cbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtuZWRqZWxqdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3NyaWplZHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzdWJvdHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1tqdcSNZSB1XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBsYXN0V2Vla0RheXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW25lZGplbGplXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbcG9uZWRqZWxqa2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFt1dG9ya2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW3NyaWplZGVdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFvEjWV0dnJ0a2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFtwZXRrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RXZWVrRGF5c1t0aGlzLmRheSgpXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwcmlqZSAlcycsXG4gICAgICAgICAgICBzOiAnbmVrb2xpa28gc2VrdW5kaScsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogJ2RhbicsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiAnbWplc2VjJyxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6ICdnb2RpbnUnLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1hb3JpIFttaV1cbi8vISBhdXRob3IgOiBKb2huIENvcnJpZ2FuIDxyb2JiaWVjbG9zZXRAZ21haWwuY29tPiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb2huaWRlYWxcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtaSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21pJywge1xuICAgICAgICBtb250aHM6ICdLb2hpLXTEgXRlX0h1aS10YW5ndXJ1X1BvdXTFqy10ZS1yYW5naV9QYWVuZ2Etd2jEgXdoxIFfSGFyYXR1YV9QaXBpcmlfSMWNbmdvaW5nb2lfSGVyZS10dXJpLWvFjWvEgV9NYWh1cnVfV2hpcmluZ2EtxIEtbnVrdV9XaGlyaW5nYS3EgS1yYW5naV9IYWtpaGVhJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0tvaGlfSHVpX1BvdV9QYWVfSGFyYV9QaXBpX0jFjW5nb2lfSGVyZV9NYWh1X1doaS1udV9XaGktcmFfSGFraScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUmVnZXg6IC8oPzpbJ2EtelxcdTAxMDFcXHUwMTREXFx1MDE2Ql0rXFwtPyl7MSwzfS9pLFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogLyg/OlsnYS16XFx1MDEwMVxcdTAxNERcXHUwMTZCXStcXC0/KXsxLDN9L2ksXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IC8oPzpbJ2EtelxcdTAxMDFcXHUwMTREXFx1MDE2Ql0rXFwtPyl7MSwzfS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OiAvKD86WydhLXpcXHUwMTAxXFx1MDE0RFxcdTAxNkJdK1xcLT8pezEsMn0vaSxcbiAgICAgICAgd2Vla2RheXM6ICdSxIF0YXB1X01hbmVfVMWrcmVpX1dlbmVyZWlfVMSBaXRlX1BhcmFpcmVfSMSBdGFyZWknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdUYV9NYV9UxatfV2VfVMSBaV9QYV9IxIEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnVGFfTWFfVMWrX1dlX1TEgWlfUGFfSMSBJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIFtpXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgW2ldIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaSB0ZWllIG1haGFuYSwgaV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1thcG9wbyBpXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2ldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaW5hbmFoaSBpXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3doYWthbXV0dW5nYSBpXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2kgcm90byBpICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBpIG11YScsXG4gICAgICAgICAgICBzOiAndGUgaMSTa29uYSBydWFydWEnLFxuICAgICAgICAgICAgc3M6ICclZCBoxJNrb25hJyxcbiAgICAgICAgICAgIG06ICdoZSBtZW5ldGknLFxuICAgICAgICAgICAgbW06ICclZCBtZW5ldGknLFxuICAgICAgICAgICAgaDogJ3RlIGhhb3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaGFvcmEnLFxuICAgICAgICAgICAgZDogJ2hlIHJhJyxcbiAgICAgICAgICAgIGRkOiAnJWQgcmEnLFxuICAgICAgICAgICAgTTogJ2hlIG1hcmFtYScsXG4gICAgICAgICAgICBNTTogJyVkIG1hcmFtYScsXG4gICAgICAgICAgICB5OiAnaGUgdGF1JyxcbiAgICAgICAgICAgIHl5OiAnJWQgdGF1JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtaTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYWNlZG9uaWFuIFtta11cbi8vISBhdXRob3IgOiBCb3Jpc2xhdiBNaWNrb3YgOiBodHRwczovL2dpdGh1Yi5jb20vQjBrMFxuLy8hIGF1dGhvciA6IFNhc2hrbyBUb2Rvcm92IDogaHR0cHM6Ly9naXRodWIuY29tL2JreWNlaFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1rID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbWsnLCB7XG4gICAgICAgIG1vbnRoczogJ9GY0LDQvdGD0LDRgNC4X9GE0LXQstGA0YPQsNGA0Lhf0LzQsNGA0YJf0LDQv9GA0LjQu1/QvNCw0Zhf0ZjRg9C90Lhf0ZjRg9C70Lhf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCy0YDQuF/QvtC60YLQvtC80LLRgNC4X9C90L7QtdC80LLRgNC4X9C00LXQutC10LzQstGA0LgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0ZjQsNC9X9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDRmF/RmNGD0L1f0ZjRg9C7X9Cw0LLQs1/RgdC10L9f0L7QutGCX9C90L7QtV/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn0L3QtdC00LXQu9CwX9C/0L7QvdC10LTQtdC70L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDQtdC00LBf0YfQtdGC0LLRgNGC0L7Qul/Qv9C10YLQvtC6X9GB0LDQsdC+0YLQsCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9C90LXQtF/Qv9C+0L1f0LLRgtC+X9GB0YDQtV/Rh9C10YJf0L/QtdGCX9GB0LDQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQvWVf0L9vX9Cy0YJf0YHRgF/Rh9C1X9C/0LVf0YFhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0QuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQlNC10L3QtdGBINCy0L5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0KPRgtGA0LUg0LLQvl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb0JLQvl0gZGRkZCBb0LLQvl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQktGH0LXRgNCwINCy0L5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQmNC30LzQuNC90LDRgtCw0YLQsF0gZGRkZCBb0LLQvl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQmNC30LzQuNC90LDRgtC40L7Rgl0gZGRkZCBb0LLQvl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9C30LAgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9C/0YDQtdC0ICVzJyxcbiAgICAgICAgICAgIHM6ICfQvdC10LrQvtC70LrRgyDRgdC10LrRg9C90LTQuCcsXG4gICAgICAgICAgICBzczogJyVkINGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIG06ICfQtdC00L3QsCDQvNC40L3Rg9GC0LAnLFxuICAgICAgICAgICAgbW06ICclZCDQvNC40L3Rg9GC0LgnLFxuICAgICAgICAgICAgaDogJ9C10LTQtdC9INGH0LDRgScsXG4gICAgICAgICAgICBoaDogJyVkINGH0LDRgdCwJyxcbiAgICAgICAgICAgIGQ6ICfQtdC00LXQvSDQtNC10L0nLFxuICAgICAgICAgICAgZGQ6ICclZCDQtNC10L3QsCcsXG4gICAgICAgICAgICBNOiAn0LXQtNC10L0g0LzQtdGB0LXRhicsXG4gICAgICAgICAgICBNTTogJyVkINC80LXRgdC10YbQuCcsXG4gICAgICAgICAgICB5OiAn0LXQtNC90LAg0LPQvtC00LjQvdCwJyxcbiAgICAgICAgICAgIHl5OiAnJWQg0LPQvtC00LjQvdC4JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjQtdCyfNC10L180YLQuHzQstC4fNGA0Lh80LzQuCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgbGFzdERpZ2l0ID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgbGFzdDJEaWdpdHMgPSBudW1iZXIgJSAxMDA7XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LXQsic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QyRGlnaXRzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LXQvSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QyRGlnaXRzID4gMTAgJiYgbGFzdDJEaWdpdHMgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGC0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QstC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YDQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gNyB8fCBsYXN0RGlnaXQgPT09IDgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QvNC4JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YLQuCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtaztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYWxheWFsYW0gW21sXVxuLy8hIGF1dGhvciA6IEZsb3lkIFBpbmsgOiBodHRwczovL2dpdGh1Yi5jb20vZmxveWRwaW5rXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbWwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtbCcsIHtcbiAgICAgICAgbW9udGhzOiAn4LSc4LSo4LWB4LS14LSw4LS/X+C0q+C1huC0rOC1jeC0sOC1geC0teC0sOC0v1/gtK7gtL7gtbzgtJrgtY3gtJrgtY1f4LSP4LSq4LWN4LSw4LS/4LW9X+C0ruC1h+C0r+C1jV/gtJzgtYLgtbpf4LSc4LWC4LSy4LWIX+C0k+C0l+C0uOC1jeC0seC1jeC0seC1jV/gtLjgtYbgtKrgtY3gtLHgtY3gtLHgtILgtKzgtbxf4LSS4LSV4LWN4LSf4LWL4LSs4LW8X+C0qOC0teC0guC0rOC1vF/gtKHgtL/gtLjgtILgtKzgtbwnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn4LSc4LSo4LWBLl/gtKvgtYbgtKzgtY3gtLDgtYEuX+C0ruC0vuC1vC5f4LSP4LSq4LWN4LSw4LS/Ll/gtK7gtYfgtK/gtY1f4LSc4LWC4LW6X+C0nOC1guC0suC1iC5f4LST4LSXLl/gtLjgtYbgtKrgtY3gtLHgtY3gtLEuX+C0kuC0leC1jeC0n+C1iy5f4LSo4LS14LSCLl/gtKHgtL/gtLjgtIIuJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ+C0nuC0vuC0r+C0seC0vuC0tOC1jeC0ml/gtKTgtL/gtJngtY3gtJXgtLPgtL7gtLTgtY3gtJpf4LSa4LWK4LS14LWN4LS14LS+4LS04LWN4LSaX+C0rOC1geC0p+C0qOC0vuC0tOC1jeC0ml/gtLXgtY3gtK/gtL7gtLTgtL7gtLTgtY3gtJpf4LS14LWG4LSz4LWN4LSz4LS/4LSv4LS+4LS04LWN4LSaX+C0tuC0qOC0v+C0r+C0vuC0tOC1jeC0micuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+C0nuC0vuC0r+C1vF/gtKTgtL/gtJngtY3gtJXgtb5f4LSa4LWK4LS14LWN4LS1X+C0rOC1geC0p+C1u1/gtLXgtY3gtK/gtL7gtLTgtIJf4LS14LWG4LSz4LWN4LSz4LS/X+C0tuC0qOC0vycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgtJ7gtL5f4LSk4LS/X+C0muC1il/gtKzgtYFf4LS14LWN4LSv4LS+X+C0teC1hl/gtLYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbSAt4LSo4LWBJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyAt4LSo4LWBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSAt4LSo4LWBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIC3gtKjgtYEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgtIfgtKjgtY3gtKjgtY1dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4LSo4LS+4LSz4LWGXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4LSH4LSo4LWN4LSo4LSy4LWGXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgtJXgtLTgtL/gtJ7gtY3gtJ5dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4LSV4LS04LS/4LSe4LWN4LSe4LWNJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgtK7gtYHgtbvgtKrgtY0nLFxuICAgICAgICAgICAgczogJ+C0heC1veC0qiDgtKjgtL/gtK7gtL/gtLfgtJngtY3gtJngtb4nLFxuICAgICAgICAgICAgc3M6ICclZCDgtLjgtYbgtJXgtY3gtJXgtbvgtKHgtY0nLFxuICAgICAgICAgICAgbTogJ+C0kuC0sOC1gSDgtK7gtL/gtKjgtL/gtLHgtY3gtLHgtY0nLFxuICAgICAgICAgICAgbW06ICclZCDgtK7gtL/gtKjgtL/gtLHgtY3gtLHgtY0nLFxuICAgICAgICAgICAgaDogJ+C0kuC0sOC1gSDgtK7gtKPgtL/gtJXgtY3gtJXgtYLgtbwnLFxuICAgICAgICAgICAgaGg6ICclZCDgtK7gtKPgtL/gtJXgtY3gtJXgtYLgtbwnLFxuICAgICAgICAgICAgZDogJ+C0kuC0sOC1gSDgtKbgtL/gtLXgtLjgtIInLFxuICAgICAgICAgICAgZGQ6ICclZCDgtKbgtL/gtLXgtLjgtIInLFxuICAgICAgICAgICAgTTogJ+C0kuC0sOC1gSDgtK7gtL7gtLjgtIInLFxuICAgICAgICAgICAgTU06ICclZCDgtK7gtL7gtLjgtIInLFxuICAgICAgICAgICAgeTogJ+C0kuC0sOC1gSDgtLXgtbzgtLfgtIInLFxuICAgICAgICAgICAgeXk6ICclZCDgtLXgtbzgtLfgtIInLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4LSw4LS+4LSk4LWN4LSw4LS/fOC0sOC0vuC0teC0v+C0suC1hnzgtIngtJrgtY3gtJog4LSV4LS04LS/4LSe4LWN4LSe4LWNfOC0teC1iOC0leC1geC0qOC1jeC0qOC1h+C0sOC0gnzgtLDgtL7gtKTgtY3gtLDgtL8vaSxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChtZXJpZGllbSA9PT0gJ+C0sOC0vuC0pOC1jeC0sOC0vycgJiYgaG91ciA+PSA0KSB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4LSJ4LSa4LWN4LSaIOC0leC0tOC0v+C0nuC1jeC0nuC1jScgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+C0teC1iOC0leC1geC0qOC1jeC0qOC1h+C0sOC0gidcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgtLDgtL7gtKTgtY3gtLDgtL8nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C0sOC0vuC0teC0v+C0suC1hic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LSJ4LSa4LWN4LSaIOC0leC0tOC0v+C0nuC1jeC0nuC1jSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LS14LWI4LSV4LWB4LSo4LWN4LSo4LWH4LSw4LSCJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgtLDgtL7gtKTgtY3gtLDgtL8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1sO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1vbmdvbGlhbiBbbW5dXG4vLyEgYXV0aG9yIDogSmF2a2hsYW50dWdzIE55YW1kb3JqIDogaHR0cHM6Ly9naXRodWIuY29tL2phdmtoYWFuajdcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9GF0Y3QtNGF0Y3QvSDRgdC10LrRg9C90LQnIDogJ9GF0Y3QtNGF0Y3QvSDRgdC10LrRg9C90LTRi9C9JztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINGB0LXQutGD0L3QtCcgOiAnINGB0LXQutGD0L3QtNGL0L0nKTtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg0LzQuNC90YPRgicgOiAnINC80LjQvdGD0YLRi9C9Jyk7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINGG0LDQsycgOiAnINGG0LDQs9C40LnQvScpO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDTqdC006nRgCcgOiAnINOp0LTRgNC40LnQvScpO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDRgdCw0YAnIDogJyDRgdCw0YDRi9C9Jyk7XG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINC20LjQuycgOiAnINC20LjQu9C40LnQvScpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG1uID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbW4nLCB7XG4gICAgICAgIG1vbnRoczogJ9Cd0Y3Qs9C00q/Qs9GN0Y3RgCDRgdCw0YBf0KXQvtGR0YDQtNGD0LPQsNCw0YAg0YHQsNGAX9CT0YPRgNCw0LLQtNGD0LPQsNCw0YAg0YHQsNGAX9CU06nRgNOp0LLQtNKv0LPRjdGN0YAg0YHQsNGAX9Ci0LDQstC00YPQs9Cw0LDRgCDRgdCw0YBf0JfRg9GA0LPQsNC00YPQs9Cw0LDRgCDRgdCw0YBf0JTQvtC70LTRg9Cz0LDQsNGAINGB0LDRgF/QndCw0LnQvNC00YPQs9Cw0LDRgCDRgdCw0YBf0JXRgdC00q/Qs9GN0Y3RgCDRgdCw0YBf0JDRgNCw0LLQtNGD0LPQsNCw0YAg0YHQsNGAX9CQ0YDQstCw0L0g0L3RjdCz0LTSr9Cz0Y3RjdGAINGB0LDRgF/QkNGA0LLQsNC9INGF0L7RkdGA0LTRg9Cz0LDQsNGAINGB0LDRgCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICcxINGB0LDRgF8yINGB0LDRgF8zINGB0LDRgF80INGB0LDRgF81INGB0LDRgF82INGB0LDRgF83INGB0LDRgF84INGB0LDRgF85INGB0LDRgF8xMCDRgdCw0YBfMTEg0YHQsNGAXzEyINGB0LDRgCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfQndGP0Lxf0JTQsNCy0LDQsF/QnNGP0LPQvNCw0YBf0JvRhdCw0LPQstCwX9Cf0q/RgNGN0LJf0JHQsNCw0YHQsNC9X9CR0Y/QvNCx0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQndGP0Lxf0JTQsNCyX9Cc0Y/Qs1/Qm9GF0LBf0J/Sr9GAX9CR0LDQsF/QkdGP0LwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0J3Rj1/QlNCwX9Cc0Y9f0JvRhV/Qn9KvX9CR0LBf0JHRjycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ1lZWVkg0L7QvdGLIE1NTU3Ri9C9IEQnLFxuICAgICAgICAgICAgTExMOiAnWVlZWSDQvtC90YsgTU1NTdGL0L0gRCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgWVlZWSDQvtC90YsgTU1NTdGL0L0gRCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/SrtOofNKu0KUvaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfSrtClJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Ku06gnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Ku0KUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vTqNC906nTqdC006nRgF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQnNCw0YDQs9Cw0LDRiF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb0JjRgNGN0YVdIGRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vTqNGH0LjQs9C006nRgF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb06jQvdCz06nRgNGB06nQvV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzINC00LDRgNCw0LAnLFxuICAgICAgICAgICAgcGFzdDogJyVzINOp0LzQvdOpJyxcbiAgICAgICAgICAgIHM6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9INOp0LTTqdGALyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINOp0LTTqdGAJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1uO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1hcmF0aGkgW21yXVxuLy8hIGF1dGhvciA6IEhhcnNoYWQgS2FsZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9rYWxlaHZcbi8vISBhdXRob3IgOiBWaXZlayBBdGhhbHllIDogaHR0cHM6Ly9naXRodWIuY29tL3ZuYXRoYWx5ZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgICcxJzogJ+ClpycsXG4gICAgICAgICAgICAnMic6ICfgpagnLFxuICAgICAgICAgICAgJzMnOiAn4KWpJyxcbiAgICAgICAgICAgICc0JzogJ+ClqicsXG4gICAgICAgICAgICAnNSc6ICfgpasnLFxuICAgICAgICAgICAgJzYnOiAn4KWsJyxcbiAgICAgICAgICAgICc3JzogJ+ClrScsXG4gICAgICAgICAgICAnOCc6ICfgpa4nLFxuICAgICAgICAgICAgJzknOiAn4KWvJyxcbiAgICAgICAgICAgICcwJzogJ+ClpicsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgpacnOiAnMScsXG4gICAgICAgICAgICAn4KWoJzogJzInLFxuICAgICAgICAgICAgJ+ClqSc6ICczJyxcbiAgICAgICAgICAgICfgpaonOiAnNCcsXG4gICAgICAgICAgICAn4KWrJzogJzUnLFxuICAgICAgICAgICAgJ+ClrCc6ICc2JyxcbiAgICAgICAgICAgICfgpa0nOiAnNycsXG4gICAgICAgICAgICAn4KWuJzogJzgnLFxuICAgICAgICAgICAgJ+Clryc6ICc5JyxcbiAgICAgICAgICAgICfgpaYnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVNcihudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIG91dHB1dCA9ICcnO1xuICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgc3dpdGNoIChzdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+CkleCkvuCkueClgCDgpLjgpYfgpJXgpILgpKYnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpLjgpYfgpJXgpILgpKYnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+Ckj+CklSDgpK7gpL/gpKjgpL/gpJ8nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpK7gpL/gpKjgpL/gpJ/gpYcnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+Ckj+CklSDgpKTgpL7gpLgnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpKTgpL7gpLgnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+Ckj+CklSDgpKbgpL/gpLXgpLgnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpKbgpL/gpLXgpLgnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+Ckj+CklSDgpK7gpLngpL/gpKjgpL4nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpK7gpLngpL/gpKjgpYcnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+Ckj+CklSDgpLXgpLDgpY3gpLcnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpLXgpLDgpY3gpLfgpYcnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAoc3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpJXgpL7gpLngpYAg4KS44KWH4KSV4KSC4KSm4KS+4KSCJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KS44KWH4KSV4KSC4KSm4KS+4KSCJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJXgpL4g4KSu4KS/4KSo4KS/4KSf4KS+JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSu4KS/4KSo4KS/4KSf4KS+4KSCJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJXgpL4g4KSk4KS+4KS44KS+JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSk4KS+4KS44KS+4KSCJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJXgpL4g4KSm4KS/4KS14KS44KS+JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSm4KS/4KS14KS44KS+4KSCJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJXgpL4g4KSu4KS54KS/4KSo4KWN4KSv4KS+JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSu4KS54KS/4KSo4KWN4KSv4KS+4KSCJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJXgpL4g4KS14KSw4KWN4KS34KS+JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KS14KSw4KWN4KS34KS+4KSCJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dHB1dC5yZXBsYWNlKC8lZC9pLCBudW1iZXIpO1xuICAgIH1cblxuICAgIHZhciBtciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21yJywge1xuICAgICAgICBtb250aHM6ICfgpJzgpL7gpKjgpYfgpLXgpL7gpLDgpYBf4KSr4KWH4KSs4KWN4KSw4KWB4KS14KS+4KSw4KWAX+CkruCkvuCksOCljeCkml/gpI/gpKrgpY3gpLDgpL/gpLJf4KSu4KWHX+CknOClguCkqF/gpJzgpYHgpLLgpYhf4KSR4KSX4KS44KWN4KSfX+CkuOCkquCljeCkn+Clh+CkguCkrOCksF/gpJHgpJXgpY3gpJ/gpYvgpKzgpLBf4KSo4KWL4KS14KWN4KS54KWH4KSC4KSs4KSwX+CkoeCkv+CkuOClh+CkguCkrOCksCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfgpJzgpL7gpKjgpYcuX+Ckq+Clh+CkrOCljeCksOClgS5f4KSu4KS+4KSw4KWN4KSaLl/gpI/gpKrgpY3gpLDgpL8uX+CkruClhy5f4KSc4KWC4KSoLl/gpJzgpYHgpLLgpYguX+CkkeCkly5f4KS44KSq4KWN4KSf4KWH4KSCLl/gpJHgpJXgpY3gpJ/gpYsuX+CkqOCli+CkteCljeCkueClh+Ckgi5f4KSh4KS/4KS44KWH4KSCLicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfgpLDgpLXgpL/gpLXgpL7gpLBf4KS44KWL4KSu4KS14KS+4KSwX+CkruCkguCkl+Cks+CkteCkvuCksF/gpKzgpYHgpKfgpLXgpL7gpLBf4KSX4KWB4KSw4KWC4KS14KS+4KSwX+CktuClgeCkleCljeCksOCkteCkvuCksF/gpLbgpKjgpL/gpLXgpL7gpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgpLDgpLXgpL9f4KS44KWL4KSuX+CkruCkguCkl+Cks1/gpKzgpYHgpKdf4KSX4KWB4KSw4KWCX+CktuClgeCkleCljeCksF/gpLbgpKjgpL8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4KSwX+CkuOCli1/gpK7gpIJf4KSs4KWBX+Ckl+ClgV/gpLbgpYFf4KS2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0g4KS14KS+4KSc4KSk4KS+JyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyDgpLXgpL7gpJzgpKTgpL4nLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCkteCkvuCknOCkpOCkvicsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgpLXgpL7gpJzgpKTgpL4nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgpIbgpJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KSJ4KSm4KWN4KSv4KS+XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KSV4KS+4KSyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgpK7gpL7gpJfgpYDgpLJdIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPgpK7gpKfgpY3gpK/gpYcnLFxuICAgICAgICAgICAgcGFzdDogJyVz4KSq4KWC4KSw4KWN4KS14KWAJyxcbiAgICAgICAgICAgIHM6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgc3M6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgbTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBtbTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBoOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIGhoOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIGQ6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgZGQ6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgTTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICB5OiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIHl5OiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Clp+ClqOClqeClquClq+ClrOClreClruClr+Clpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CkquCkueCkvuCkn+Clh3zgpLjgpJXgpL7gpLPgpYB84KSm4KWB4KSq4KS+4KSw4KWAfOCkuOCkvuCkr+CkguCkleCkvuCks+ClgHzgpLDgpL7gpKTgpY3gpLDgpYAvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgpKrgpLngpL7gpJ/gpYcnIHx8IG1lcmlkaWVtID09PSAn4KS44KSV4KS+4KSz4KWAJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+CkpuClgeCkquCkvuCksOClgCcgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+CkuOCkvuCkr+CkguCkleCkvuCks+ClgCcgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+CksOCkvuCkpOCljeCksOClgCdcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEyID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyID49IDAgJiYgaG91ciA8IDYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkquCkueCkvuCkn+Clhyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KSV4KS+4KSz4KWAJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKbgpYHgpKrgpL7gpLDgpYAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOCkvuCkr+CkguCkleCkvuCks+ClgCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KWN4KSw4KWAJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1yO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1hbGF5IFttc11cbi8vISBhdXRob3IgOiBXZWxkYW4gSmFtaWxpIDogaHR0cHM6Ly9naXRodWIuY29tL3dlbGRhblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1zID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbXMnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcmlfRmVicnVhcmlfTWFjX0FwcmlsX01laV9KdW5fSnVsYWlfT2dvc19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EaXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdBaGFkX0lzbmluX1NlbGFzYV9SYWJ1X0toYW1pc19KdW1hYXRfU2FidHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdBaGRfSXNuX1NlbF9SYWJfS2hhX0p1bV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnQWhfSXNfU2xfUmJfS21fSm1fU2InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdwYWdpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3RlbmdhaGFyaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAncGV0YW5nJyB8fCBtZXJpZGllbSA9PT0gJ21hbGFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwYWdpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAndGVuZ2FoYXJpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGV0YW5nJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtYWxhbSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hhcmkgaW5pIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0Vzb2sgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbS2VsbWFyaW4gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbbGVwYXMgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZGFsYW0gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHlhbmcgbGVwYXMnLFxuICAgICAgICAgICAgczogJ2JlYmVyYXBhIHNhYXQnLFxuICAgICAgICAgICAgc3M6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIG06ICdzZW1pbml0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWluaXQnLFxuICAgICAgICAgICAgaDogJ3NlamFtJyxcbiAgICAgICAgICAgIGhoOiAnJWQgamFtJyxcbiAgICAgICAgICAgIGQ6ICdzZWhhcmknLFxuICAgICAgICAgICAgZGQ6ICclZCBoYXJpJyxcbiAgICAgICAgICAgIE06ICdzZWJ1bGFuJyxcbiAgICAgICAgICAgIE1NOiAnJWQgYnVsYW4nLFxuICAgICAgICAgICAgeTogJ3NldGFodW4nLFxuICAgICAgICAgICAgeXk6ICclZCB0YWh1bicsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYWxheSBbbXMtbXldXG4vLyEgbm90ZSA6IERFUFJFQ0FURUQsIHRoZSBjb3JyZWN0IG9uZSBpcyBbbXNdXG4vLyEgYXV0aG9yIDogV2VsZGFuIEphbWlsaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS93ZWxkYW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtc015ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbXMtbXknLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcmlfRmVicnVhcmlfTWFjX0FwcmlsX01laV9KdW5fSnVsYWlfT2dvc19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EaXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdBaGFkX0lzbmluX1NlbGFzYV9SYWJ1X0toYW1pc19KdW1hYXRfU2FidHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdBaGRfSXNuX1NlbF9SYWJfS2hhX0p1bV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnQWhfSXNfU2xfUmJfS21fSm1fU2InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdwYWdpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3RlbmdhaGFyaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAncGV0YW5nJyB8fCBtZXJpZGllbSA9PT0gJ21hbGFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwYWdpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAndGVuZ2FoYXJpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGV0YW5nJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtYWxhbSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hhcmkgaW5pIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0Vzb2sgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbS2VsbWFyaW4gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbbGVwYXMgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZGFsYW0gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHlhbmcgbGVwYXMnLFxuICAgICAgICAgICAgczogJ2JlYmVyYXBhIHNhYXQnLFxuICAgICAgICAgICAgc3M6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIG06ICdzZW1pbml0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWluaXQnLFxuICAgICAgICAgICAgaDogJ3NlamFtJyxcbiAgICAgICAgICAgIGhoOiAnJWQgamFtJyxcbiAgICAgICAgICAgIGQ6ICdzZWhhcmknLFxuICAgICAgICAgICAgZGQ6ICclZCBoYXJpJyxcbiAgICAgICAgICAgIE06ICdzZWJ1bGFuJyxcbiAgICAgICAgICAgIE1NOiAnJWQgYnVsYW4nLFxuICAgICAgICAgICAgeTogJ3NldGFodW4nLFxuICAgICAgICAgICAgeXk6ICclZCB0YWh1bicsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtc015O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1hbHRlc2UgKE1hbHRhKSBbbXRdXG4vLyEgYXV0aG9yIDogQWxlc3NhbmRybyBNYXJ1Y2NpYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbGVzbWFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtdCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ210Jywge1xuICAgICAgICBtb250aHM6ICdKYW5uYXJfRnJhcl9NYXJ6dV9BcHJpbF9NZWpqdV/EoHVuanVfTHVsanVfQXd3aXNzdV9TZXR0ZW1icnVfT3R0dWJydV9Ob3ZlbWJydV9EacSLZW1icnUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZyYV9NYXJfQXByX01lal/EoHVuX0x1bF9Bd3dfU2V0X090dF9Ob3ZfRGnEiycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdJbC3EpmFkZF9JdC1UbmVqbl9JdC1UbGlldGFfTC1FcmJnxKdhX0lsLcSmYW1pc19JbC3EoGltZ8SnYV9Jcy1TaWJ0Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnxKZhZF9UbmVfVGxpX0VyYl/EpmFtX8SgaW1fU2liJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ8SmYV9Ubl9UbF9Fcl/EpmFfxKBpX1NpJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0lsbHVtIGZpbC1dTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tHxKdhZGEgZmlsLV1MVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2ZpbC1dTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJbC1iaWVyYcSnIGZpbC1dTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtsaSBnxKdhZGRhXSBbZmlsLV1MVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2bigJkgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGlsdScsXG4gICAgICAgICAgICBzOiAnZnRpdCBzZWtvbmRpJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vrb25kaScsXG4gICAgICAgICAgICBtOiAnbWludXRhJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRpJyxcbiAgICAgICAgICAgIGg6ICdzaWVnxKdhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgc2llZ8SnYXQnLFxuICAgICAgICAgICAgZDogJ8ShdXJuYXRhJyxcbiAgICAgICAgICAgIGRkOiAnJWQgxKFyYW5ldCcsXG4gICAgICAgICAgICBNOiAneGFoYXInLFxuICAgICAgICAgICAgTU06ICclZCB4aHVyJyxcbiAgICAgICAgICAgIHk6ICdzZW5hJyxcbiAgICAgICAgICAgIHl5OiAnJWQgc25pJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtdDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBCdXJtZXNlIFtteV1cbi8vISBhdXRob3IgOiBTcXVhciB0ZWFtLCBteXNxdWFyLmNvbVxuLy8hIGF1dGhvciA6IERhdmlkIFJvc3NlbGxhdCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9naG9sYWRyXG4vLyEgYXV0aG9yIDogVGluIEF1bmcgTGluIDogaHR0cHM6Ly9naXRodWIuY29tL3RoYW55YXd6aW5taW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAnMSc6ICfhgYEnLFxuICAgICAgICAgICAgJzInOiAn4YGCJyxcbiAgICAgICAgICAgICczJzogJ+GBgycsXG4gICAgICAgICAgICAnNCc6ICfhgYQnLFxuICAgICAgICAgICAgJzUnOiAn4YGFJyxcbiAgICAgICAgICAgICc2JzogJ+GBhicsXG4gICAgICAgICAgICAnNyc6ICfhgYcnLFxuICAgICAgICAgICAgJzgnOiAn4YGIJyxcbiAgICAgICAgICAgICc5JzogJ+GBiScsXG4gICAgICAgICAgICAnMCc6ICfhgYAnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4YGBJzogJzEnLFxuICAgICAgICAgICAgJ+GBgic6ICcyJyxcbiAgICAgICAgICAgICfhgYMnOiAnMycsXG4gICAgICAgICAgICAn4YGEJzogJzQnLFxuICAgICAgICAgICAgJ+GBhSc6ICc1JyxcbiAgICAgICAgICAgICfhgYYnOiAnNicsXG4gICAgICAgICAgICAn4YGHJzogJzcnLFxuICAgICAgICAgICAgJ+GBiCc6ICc4JyxcbiAgICAgICAgICAgICfhgYknOiAnOScsXG4gICAgICAgICAgICAn4YGAJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIG15ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbXknLCB7XG4gICAgICAgIG1vbnRoczogJ+GAh+GAlOGAuuGAlOGAneGAq+GAm+GArl/hgJbhgLHhgJbhgLHhgKzhgLrhgJ3hgKvhgJvhgK5f4YCZ4YCQ4YC6X+GAp+GAleGAvOGArl/hgJnhgLFf4YCH4YC94YCU4YC6X+GAh+GAsOGAnOGAreGAr+GAhOGAul/hgJ7hgLzhgILhgK/hgJDhgLpf4YCF4YCA4YC64YCQ4YCE4YC64YCY4YCsX+GAoeGAseGArOGAgOGAuuGAkOGAreGAr+GAmOGArF/hgJThgK3hgK/hgJ3hgIThgLrhgJjhgKxf4YCS4YCu4YCH4YCE4YC64YCY4YCsJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ+GAh+GAlOGAul/hgJbhgLFf4YCZ4YCQ4YC6X+GAleGAvOGArl/hgJnhgLFf4YCH4YC94YCU4YC6X+GAnOGAreGAr+GAhOGAul/hgJ7hgLxf4YCF4YCA4YC6X+GAoeGAseGArOGAgOGAul/hgJThgK3hgK9f4YCS4YCuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ+GAkOGAlOGAhOGAuuGAueGAguGAlOGAveGAsV/hgJDhgJThgIThgLrhgLnhgJzhgKxf4YCh4YCE4YC64YC54YCC4YCrX+GAl+GAr+GAkuGAueGAk+GAn+GAsOGAuF/hgIDhgLzhgKzhgJ7hgJXhgJDhgLHhgLhf4YCe4YCx4YCs4YCA4YC84YCsX+GAheGAlOGAsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+GAlOGAveGAsV/hgJzhgKxf4YCC4YCrX+GAn+GAsOGAuF/hgIDhgLzhgKxf4YCe4YCx4YCsX+GAlOGAsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfhgJThgL3hgLFf4YCc4YCsX+GAguGAq1/hgJ/hgLDhgLhf4YCA4YC84YCsX+GAnuGAseGArF/hgJThgLEnLnNwbGl0KCdfJyksXG5cbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+GAmuGAlOGAsS5dIExUIFvhgJnhgL7hgKxdJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4YCZ4YCU4YCA4YC64YCW4YC84YCU4YC6XSBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgTFQgW+GAmeGAvuGArF0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1vhgJnhgJThgLEu4YCAXSBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vhgJXhgLzhgK7hgLjhgIHhgLLhgLfhgJ7hgLHhgKxdIGRkZGQgTFQgW+GAmeGAvuGArF0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfhgJzhgKzhgJnhgIrhgLrhgLcgJXMg4YCZ4YC+4YCsJyxcbiAgICAgICAgICAgIHBhc3Q6ICfhgJzhgL3hgJThgLrhgIHhgLLhgLfhgJ7hgLHhgKwgJXMg4YCAJyxcbiAgICAgICAgICAgIHM6ICfhgIXhgIDhgLnhgIDhgJThgLou4YCh4YCU4YCK4YC64YC44YCE4YCa4YC6JyxcbiAgICAgICAgICAgIHNzOiAnJWQg4YCF4YCA4YC54YCA4YCU4YC34YC6JyxcbiAgICAgICAgICAgIG06ICfhgJDhgIXhgLrhgJnhgK3hgJThgIXhgLonLFxuICAgICAgICAgICAgbW06ICclZCDhgJnhgK3hgJThgIXhgLonLFxuICAgICAgICAgICAgaDogJ+GAkOGAheGAuuGAlOGArOGAm+GAricsXG4gICAgICAgICAgICBoaDogJyVkIOGAlOGArOGAm+GAricsXG4gICAgICAgICAgICBkOiAn4YCQ4YCF4YC64YCb4YCA4YC6JyxcbiAgICAgICAgICAgIGRkOiAnJWQg4YCb4YCA4YC6JyxcbiAgICAgICAgICAgIE06ICfhgJDhgIXhgLrhgJwnLFxuICAgICAgICAgICAgTU06ICclZCDhgJwnLFxuICAgICAgICAgICAgeTogJ+GAkOGAheGAuuGAlOGAvuGAheGAuicsXG4gICAgICAgICAgICB5eTogJyVkIOGAlOGAvuGAheGAuicsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vhgYHhgYLhgYPhgYThgYXhgYbhgYfhgYjhgYnhgYBdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBteTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBOb3J3ZWdpYW4gQm9rbcOlbCBbbmJdXG4vLyEgYXV0aG9ycyA6IEVzcGVuIEhvdmxhbmRzZGFsIDogaHR0cHM6Ly9naXRodWIuY29tL3JleHhhcnNcbi8vISAgICAgICAgICAgU2lndXJkIEdhcnRtYW5uIDogaHR0cHM6Ly9naXRodWIuY29tL3NpZ3VyZGdhXG4vLyEgICAgICAgICAgIFN0ZXBoZW4gUmFtdGh1biA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdGVwaGVucmFtdGh1blxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG5iID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbmInLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcl9mZWJydWFyX21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFuLl9mZWIuX21hcnNfYXByLl9tYWlfanVuaV9qdWxpX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVzLicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdzw7huZGFnX21hbmRhZ190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7hyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc8O4Ll9tYS5fdGkuX29uLl90by5fZnIuX2zDuC4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnc8O4X21hX3RpX29uX3RvX2ZyX2zDuCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaSBkYWcga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2kgbW9yZ2VuIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaSBnw6VyIGtsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbZm9ycmlnZV0gZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ29tICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBzaWRlbicsXG4gICAgICAgICAgICBzOiAnbm9lbiBzZWt1bmRlcicsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZGVyJyxcbiAgICAgICAgICAgIG06ICdldHQgbWludXR0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXR0ZXInLFxuICAgICAgICAgICAgaDogJ2VuIHRpbWUnLFxuICAgICAgICAgICAgaGg6ICclZCB0aW1lcicsXG4gICAgICAgICAgICBkOiAnZW4gZGFnJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGFnZXInLFxuICAgICAgICAgICAgTTogJ2VuIG3DpW5lZCcsXG4gICAgICAgICAgICBNTTogJyVkIG3DpW5lZGVyJyxcbiAgICAgICAgICAgIHk6ICdldHQgw6VyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgw6VyJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBuYjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBOZXBhbGVzZSBbbmVdXG4vLyEgYXV0aG9yIDogc3V2YXNoIDogaHR0cHM6Ly9naXRodWIuY29tL3N1dmFzaFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgICcxJzogJ+ClpycsXG4gICAgICAgICAgICAnMic6ICfgpagnLFxuICAgICAgICAgICAgJzMnOiAn4KWpJyxcbiAgICAgICAgICAgICc0JzogJ+ClqicsXG4gICAgICAgICAgICAnNSc6ICfgpasnLFxuICAgICAgICAgICAgJzYnOiAn4KWsJyxcbiAgICAgICAgICAgICc3JzogJ+ClrScsXG4gICAgICAgICAgICAnOCc6ICfgpa4nLFxuICAgICAgICAgICAgJzknOiAn4KWvJyxcbiAgICAgICAgICAgICcwJzogJ+ClpicsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgpacnOiAnMScsXG4gICAgICAgICAgICAn4KWoJzogJzInLFxuICAgICAgICAgICAgJ+ClqSc6ICczJyxcbiAgICAgICAgICAgICfgpaonOiAnNCcsXG4gICAgICAgICAgICAn4KWrJzogJzUnLFxuICAgICAgICAgICAgJ+ClrCc6ICc2JyxcbiAgICAgICAgICAgICfgpa0nOiAnNycsXG4gICAgICAgICAgICAn4KWuJzogJzgnLFxuICAgICAgICAgICAgJ+Clryc6ICc5JyxcbiAgICAgICAgICAgICfgpaYnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgbmUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCduZScsIHtcbiAgICAgICAgbW9udGhzOiAn4KSc4KSo4KS14KSw4KWAX+Ckq+Clh+CkrOCljeCksOClgeCkteCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KS/4KSyX+CkruCkiF/gpJzgpYHgpKhf4KSc4KWB4KSy4KS+4KSIX+CkheCkl+Ckt+CljeCkn1/gpLjgpYfgpKrgpY3gpJ/gpYfgpK7gpY3gpKzgpLBf4KSF4KSV4KWN4KSf4KWL4KSs4KSwX+CkqOCli+CkreClh+CkruCljeCkrOCksF/gpKHgpL/gpLjgpYfgpK7gpY3gpKzgpLAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn4KSc4KSoLl/gpKvgpYfgpKzgpY3gpLDgpYEuX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpL8uX+CkruCkiF/gpJzgpYHgpKhf4KSc4KWB4KSy4KS+4KSILl/gpIXgpJcuX+CkuOClh+CkquCljeCkny5f4KSF4KSV4KWN4KSf4KWLLl/gpKjgpYvgpK3gpYcuX+CkoeCkv+CkuOClhy4nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAn4KSG4KSH4KSk4KSs4KS+4KSwX+CkuOCli+CkruCkrOCkvuCksF/gpK7gpJngpY3gpJfgpLLgpKzgpL7gpLBf4KSs4KWB4KSn4KSs4KS+4KSwX+CkrOCkv+CkueCkv+CkrOCkvuCksF/gpLbgpYHgpJXgpY3gpLDgpKzgpL7gpLBf4KS24KSo4KS/4KSs4KS+4KSwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4KSG4KSH4KSkLl/gpLjgpYvgpK4uX+CkruCkmeCljeCkl+Cksi5f4KSs4KWB4KSnLl/gpKzgpL/gpLngpL8uX+CktuClgeCkleCljeCksC5f4KS24KSo4KS/Licuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgpIYuX+CkuOCliy5f4KSu4KSCLl/gpKzgpYEuX+CkrOCkvy5f4KS24KWBLl/gpLYuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0HgpJXgpYsgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTFRTOiAnQeCkleCliyBoOm1tOnNzIOCkrOCknOClhycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBB4KSV4KWLIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQeCkleCliyBoOm1tIOCkrOCknOClhycsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgpafgpajgpangpargpavgpazgpa3gpa7gpa/gpaZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gpLDgpL7gpKTgpL984KSs4KS/4KS54KS+4KSofOCkpuCkv+CkieCkgeCkuOCli3zgpLjgpL7gpIHgpJ0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgpLDgpL7gpKTgpL8nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpKzgpL/gpLngpL7gpKgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KSm4KS/4KSJ4KSB4KS44KWLJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLjgpL7gpIHgpJ0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KS/JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKzgpL/gpLngpL7gpKgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkpuCkv+CkieCkgeCkuOCliyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KS+4KSB4KSdJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKTgpL8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgpIbgpJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KSt4KWL4KSy4KS/XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vgpIbgpIngpIHgpKbgpYtdIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgpLngpL/gpJzgpYtdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+Ckl+Ckj+CkleCli10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz4KSu4KS+JyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgpIXgpJfgpL7gpKHgpL8nLFxuICAgICAgICAgICAgczogJ+CkleClh+CkueClgCDgpJXgpY3gpLfgpKMnLFxuICAgICAgICAgICAgc3M6ICclZCDgpLjgpYfgpJXgpYfgpKPgpY3gpKEnLFxuICAgICAgICAgICAgbTogJ+Ckj+CklSDgpK7gpL/gpKjgpYfgpJ8nLFxuICAgICAgICAgICAgbW06ICclZCDgpK7gpL/gpKjgpYfgpJ8nLFxuICAgICAgICAgICAgaDogJ+Ckj+CklSDgpJjgpKPgpY3gpJ/gpL4nLFxuICAgICAgICAgICAgaGg6ICclZCDgpJjgpKPgpY3gpJ/gpL4nLFxuICAgICAgICAgICAgZDogJ+Ckj+CklSDgpKbgpL/gpKgnLFxuICAgICAgICAgICAgZGQ6ICclZCDgpKbgpL/gpKgnLFxuICAgICAgICAgICAgTTogJ+Ckj+CklSDgpK7gpLngpL/gpKjgpL4nLFxuICAgICAgICAgICAgTU06ICclZCDgpK7gpLngpL/gpKjgpL4nLFxuICAgICAgICAgICAgeTogJ+Ckj+CklSDgpKzgpLDgpY3gpLcnLFxuICAgICAgICAgICAgeXk6ICclZCDgpKzgpLDgpY3gpLcnLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRHV0Y2ggW25sXVxuLy8hIGF1dGhvciA6IEpvcmlzIFLDtmxpbmcgOiBodHRwczovL2dpdGh1Yi5jb20vam9yaXNyb2xpbmdcbi8vISBhdXRob3IgOiBKYWNvYiBNaWRkYWcgOiBodHRwczovL2dpdGh1Yi5jb20vbWlkZGFnalxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0V2l0aERvdHMgPSAnamFuLl9mZWIuX21ydC5fYXByLl9tZWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnRXaXRob3V0RG90cyA9ICdqYW5fZmViX21ydF9hcHJfbWVpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmphbi9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9ebWFhcnR8bXJ0Lj8kL2ksXG4gICAgICAgICAgICAvXmFwci9pLFxuICAgICAgICAgICAgL15tZWkkL2ksXG4gICAgICAgICAgICAvXmp1bltpLl0/JC9pLFxuICAgICAgICAgICAgL15qdWxbaS5dPyQvaSxcbiAgICAgICAgICAgIC9eYXVnL2ksXG4gICAgICAgICAgICAvXnNlcC9pLFxuICAgICAgICAgICAgL15va3QvaSxcbiAgICAgICAgICAgIC9ebm92L2ksXG4gICAgICAgICAgICAvXmRlYy9pLFxuICAgICAgICBdLFxuICAgICAgICBtb250aHNSZWdleCA9IC9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXJ8amFuXFwuP3xmZWJcXC4/fG1ydFxcLj98YXByXFwuP3xqdVtubF1cXC4/fGF1Z1xcLj98c2VwXFwuP3xva3RcXC4/fG5vdlxcLj98ZGVjXFwuPykvaTtcblxuICAgIHZhciBubCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ25sJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2FwcmlsX21laV9qdW5pX2p1bGlfYXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90cztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRob3V0RG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OiAvXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OiAvXihqYW5cXC4/fGZlYlxcLj98bXJ0XFwuP3xhcHJcXC4/fG1laXxqdVtubF1cXC4/fGF1Z1xcLj98c2VwXFwuP3xva3RcXC4/fG5vdlxcLj98ZGVjXFwuPykvaSxcblxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuXG4gICAgICAgIHdlZWtkYXlzOiAnem9uZGFnX21hYW5kYWdfZGluc2RhZ193b2Vuc2RhZ19kb25kZXJkYWdfdnJpamRhZ196YXRlcmRhZycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3pvLl9tYS5fZGkuX3dvLl9kby5fdnIuX3phLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICd6b19tYV9kaV93b19kb192cl96YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQtTU0tWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbdmFuZGFhZyBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttb3JnZW4gb21dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZ2lzdGVyZW4gb21dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2FmZ2Vsb3Blbl0gZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb3ZlciAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgZ2VsZWRlbicsXG4gICAgICAgICAgICBzOiAnZWVuIHBhYXIgc2Vjb25kZW4nLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRlbicsXG4gICAgICAgICAgICBtOiAnw6nDqW4gbWludXV0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlbicsXG4gICAgICAgICAgICBoOiAnw6nDqW4gdXVyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdXVyJyxcbiAgICAgICAgICAgIGQ6ICfDqcOpbiBkYWcnLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWdlbicsXG4gICAgICAgICAgICBNOiAnw6nDqW4gbWFhbmQnLFxuICAgICAgICAgICAgTU06ICclZCBtYWFuZGVuJyxcbiAgICAgICAgICAgIHk6ICfDqcOpbiBqYWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgamFhcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdGV8ZGUpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBudW1iZXIgK1xuICAgICAgICAgICAgICAgIChudW1iZXIgPT09IDEgfHwgbnVtYmVyID09PSA4IHx8IG51bWJlciA+PSAyMCA/ICdzdGUnIDogJ2RlJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBubDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBEdXRjaCAoQmVsZ2l1bSkgW25sLWJlXVxuLy8hIGF1dGhvciA6IEpvcmlzIFLDtmxpbmcgOiBodHRwczovL2dpdGh1Yi5jb20vam9yaXNyb2xpbmdcbi8vISBhdXRob3IgOiBKYWNvYiBNaWRkYWcgOiBodHRwczovL2dpdGh1Yi5jb20vbWlkZGFnalxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0V2l0aERvdHMgPSAnamFuLl9mZWIuX21ydC5fYXByLl9tZWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnRXaXRob3V0RG90cyA9ICdqYW5fZmViX21ydF9hcHJfbWVpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmphbi9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9ebWFhcnR8bXJ0Lj8kL2ksXG4gICAgICAgICAgICAvXmFwci9pLFxuICAgICAgICAgICAgL15tZWkkL2ksXG4gICAgICAgICAgICAvXmp1bltpLl0/JC9pLFxuICAgICAgICAgICAgL15qdWxbaS5dPyQvaSxcbiAgICAgICAgICAgIC9eYXVnL2ksXG4gICAgICAgICAgICAvXnNlcC9pLFxuICAgICAgICAgICAgL15va3QvaSxcbiAgICAgICAgICAgIC9ebm92L2ksXG4gICAgICAgICAgICAvXmRlYy9pLFxuICAgICAgICBdLFxuICAgICAgICBtb250aHNSZWdleCA9IC9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXJ8amFuXFwuP3xmZWJcXC4/fG1ydFxcLj98YXByXFwuP3xqdVtubF1cXC4/fGF1Z1xcLj98c2VwXFwuP3xva3RcXC4/fG5vdlxcLj98ZGVjXFwuPykvaTtcblxuICAgIHZhciBubEJlID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbmwtYmUnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcmlfZmVicnVhcmlfbWFhcnRfYXByaWxfbWVpX2p1bmlfanVsaV9hdWd1c3R1c19zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhvdXREb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IC9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXIpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IC9eKGphblxcLj98ZmViXFwuP3xtcnRcXC4/fGFwclxcLj98bWVpfGp1W25sXVxcLj98YXVnXFwuP3xzZXBcXC4/fG9rdFxcLj98bm92XFwuP3xkZWNcXC4/KS9pLFxuXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG5cbiAgICAgICAgd2Vla2RheXM6ICd6b25kYWdfbWFhbmRhZ19kaW5zZGFnX3dvZW5zZGFnX2RvbmRlcmRhZ192cmlqZGFnX3phdGVyZGFnJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnem8uX21hLl9kaS5fd28uX2RvLl92ci5femEuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3pvX21hX2RpX3dvX2RvX3ZyX3phJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1t2YW5kYWFnIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnaXN0ZXJlbiBvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbYWZnZWxvcGVuXSBkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdvdmVyICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBnZWxlZGVuJyxcbiAgICAgICAgICAgIHM6ICdlZW4gcGFhciBzZWNvbmRlbicsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZGVuJyxcbiAgICAgICAgICAgIG06ICfDqcOpbiBtaW51dXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVuJyxcbiAgICAgICAgICAgIGg6ICfDqcOpbiB1dXInLFxuICAgICAgICAgICAgaGg6ICclZCB1dXInLFxuICAgICAgICAgICAgZDogJ8Opw6luIGRhZycsXG4gICAgICAgICAgICBkZDogJyVkIGRhZ2VuJyxcbiAgICAgICAgICAgIE06ICfDqcOpbiBtYWFuZCcsXG4gICAgICAgICAgICBNTTogJyVkIG1hYW5kZW4nLFxuICAgICAgICAgICAgeTogJ8Opw6luIGphYXInLFxuICAgICAgICAgICAgeXk6ICclZCBqYWFyJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0ZXxkZSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIG51bWJlciArXG4gICAgICAgICAgICAgICAgKG51bWJlciA9PT0gMSB8fCBudW1iZXIgPT09IDggfHwgbnVtYmVyID49IDIwID8gJ3N0ZScgOiAnZGUnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5sQmU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTnlub3JzayBbbm5dXG4vLyEgYXV0aG9ycyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tZWNodXdpbmRcbi8vISAgICAgICAgICAgU3RlcGhlbiBSYW10aHVuIDogaHR0cHM6Ly9naXRodWIuY29tL3N0ZXBoZW5yYW10aHVuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbm4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdubicsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyX2ZlYnJ1YXJfbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW4uX2ZlYi5fbWFyc19hcHIuX21haV9qdW5pX2p1bGlfYXVnLl9zZXAuX29rdC5fbm92Ll9kZXMuJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ3N1bmRhZ19tw6VuZGFnX3R5c2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbGF1cmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3N1Ll9tw6UuX3R5Ll9vbi5fdG8uX2ZyLl9sYXUuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3N1X23DpV90eV9vbl90b19mcl9sYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgW2tsLl0gSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tJIGRhZyBrbG9ra2FdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbSSBtb3Jnb24ga2xva2thXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2tsb2trYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJIGfDpXIga2xva2thXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tGw7hyZWfDpWFuZGVdIGRkZGQgW2tsb2trYV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdvbSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgc2lkYW4nLFxuICAgICAgICAgICAgczogJ25va3JlIHNla3VuZCcsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZCcsXG4gICAgICAgICAgICBtOiAnZWl0IG1pbnV0dCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0dCcsXG4gICAgICAgICAgICBoOiAnZWluIHRpbWUnLFxuICAgICAgICAgICAgaGg6ICclZCB0aW1hcicsXG4gICAgICAgICAgICBkOiAnZWluIGRhZycsXG4gICAgICAgICAgICBkZDogJyVkIGRhZ2FyJyxcbiAgICAgICAgICAgIE06ICdlaW4gbcOlbmFkJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOlbmFkZXInLFxuICAgICAgICAgICAgeTogJ2VpdCDDpXInLFxuICAgICAgICAgICAgeXk6ICclZCDDpXInLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5uO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE9jY2l0YW4sIGxlbmdhZG9jaWFuIGRpYWxlY3RlIFtvYy1sbmNdXG4vLyEgYXV0aG9yIDogUXVlbnRpbiBQQUfDiFMgOiBodHRwczovL2dpdGh1Yi5jb20vUXVlbnR5MzFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBvY0xuYyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ29jLWxuYycsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOiAnZ2VuacOocl9mZWJyacOocl9tYXLDp19hYnJpbF9tYWlfanVuaF9qdWxoZXRfYWdvc3Rfc2V0ZW1icmVfb2N0w7JicmVfbm92ZW1icmVfZGVjZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZvcm1hdDogXCJkZSBnZW5pw6hyX2RlIGZlYnJpw6hyX2RlIG1hcsOnX2QnYWJyaWxfZGUgbWFpX2RlIGp1bmhfZGUganVsaGV0X2QnYWdvc3RfZGUgc2V0ZW1icmVfZCdvY3TDsmJyZV9kZSBub3ZlbWJyZV9kZSBkZWNlbWJyZVwiLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvRFtvRF0/KFxccykrTU1NTS8sXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnZ2VuLl9mZWJyLl9tYXLDp19hYnIuX21haV9qdW5oX2p1bGguX2Fnby5fc2V0Ll9vY3QuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdkaW1lbmdlX2RpbHVuc19kaW1hcnNfZGltw6hjcmVzX2RpasOydXNfZGl2ZW5kcmVzX2Rpc3NhYnRlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZGcuX2RsLl9kbS5fZGMuX2RqLl9kdi5fZHMuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RnX2RsX2RtX2RjX2RqX2R2X2RzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgbGw6ICdEIE1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBbZGVdIFlZWVkgW2FdIEg6bW0nLFxuICAgICAgICAgICAgbGxsOiAnRCBNTU0gWVlZWSwgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gW2RlXSBZWVlZIFthXSBIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdkZGQgRCBNTU0gWVlZWSwgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW3XDqGkgYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tkZW1hbiBhXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbacOociBhXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3Bhc3NhdCBhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogXCJkJ2FxdcOtICVzXCIsXG4gICAgICAgICAgICBwYXN0OiAnZmEgJXMnLFxuICAgICAgICAgICAgczogJ3VuYXMgc2Vnb25kYXMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWdvbmRhcycsXG4gICAgICAgICAgICBtOiAndW5hIG1pbnV0YScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0YXMnLFxuICAgICAgICAgICAgaDogJ3VuYSBvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBvcmFzJyxcbiAgICAgICAgICAgIGQ6ICd1biBqb3JuJyxcbiAgICAgICAgICAgIGRkOiAnJWQgam9ybnMnLFxuICAgICAgICAgICAgTTogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHk6ICd1biBhbicsXG4gICAgICAgICAgICB5eTogJyVkIGFucycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShyfG58dHzDqHxhKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgbnVtYmVyID09PSAxXG4gICAgICAgICAgICAgICAgICAgID8gJ3InXG4gICAgICAgICAgICAgICAgICAgIDogbnVtYmVyID09PSAyXG4gICAgICAgICAgICAgICAgICAgID8gJ24nXG4gICAgICAgICAgICAgICAgICAgIDogbnVtYmVyID09PSAzXG4gICAgICAgICAgICAgICAgICAgID8gJ3InXG4gICAgICAgICAgICAgICAgICAgIDogbnVtYmVyID09PSA0XG4gICAgICAgICAgICAgICAgICAgID8gJ3QnXG4gICAgICAgICAgICAgICAgICAgIDogJ8OoJztcbiAgICAgICAgICAgIGlmIChwZXJpb2QgPT09ICd3JyB8fCBwZXJpb2QgPT09ICdXJykge1xuICAgICAgICAgICAgICAgIG91dHB1dCA9ICdhJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gb2NMbmM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogUHVuamFiaSAoSW5kaWEpIFtwYS1pbl1cbi8vISBhdXRob3IgOiBIYXJwcmVldCBTaW5naCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYXJwcmVldGtoYWxzYWd0Yml0XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgJzEnOiAn4KmnJyxcbiAgICAgICAgICAgICcyJzogJ+CpqCcsXG4gICAgICAgICAgICAnMyc6ICfgqaknLFxuICAgICAgICAgICAgJzQnOiAn4KmqJyxcbiAgICAgICAgICAgICc1JzogJ+CpqycsXG4gICAgICAgICAgICAnNic6ICfgqawnLFxuICAgICAgICAgICAgJzcnOiAn4KmtJyxcbiAgICAgICAgICAgICc4JzogJ+CpricsXG4gICAgICAgICAgICAnOSc6ICfgqa8nLFxuICAgICAgICAgICAgJzAnOiAn4KmmJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+Cppyc6ICcxJyxcbiAgICAgICAgICAgICfgqagnOiAnMicsXG4gICAgICAgICAgICAn4KmpJzogJzMnLFxuICAgICAgICAgICAgJ+Cpqic6ICc0JyxcbiAgICAgICAgICAgICfgqasnOiAnNScsXG4gICAgICAgICAgICAn4KmsJzogJzYnLFxuICAgICAgICAgICAgJ+CprSc6ICc3JyxcbiAgICAgICAgICAgICfgqa4nOiAnOCcsXG4gICAgICAgICAgICAn4KmvJzogJzknLFxuICAgICAgICAgICAgJ+Cppic6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBwYUluID0gbW9tZW50LmRlZmluZUxvY2FsZSgncGEtaW4nLCB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSBtb250aHMgbmFtZSBhcyBwZXIgTmFuYWtzaGFoaSBDYWxlbmRhciBidXQgdGhleSBhcmUgbm90IHVzZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gUHVuamFiaS5cbiAgICAgICAgbW9udGhzOiAn4Kic4Kio4Ki14Kiw4KmAX+Coq+CovOCosOCoteCosOCpgF/gqK7gqL7gqLDgqJpf4KiF4Kiq4KmN4Kiw4KmI4KiyX+CoruCoiF/gqJzgqYLgqKhf4Kic4KmB4Kiy4Ki+4KiIX+CoheCol+CouOCopF/gqLjgqKTgqbDgqKzgqLBf4KiF4KiV4Kik4KmC4Kis4KiwX+CoqOCoteCpsOCorOCosF/gqKbgqLjgqbDgqKzgqLAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn4Kic4Kio4Ki14Kiw4KmAX+Coq+CovOCosOCoteCosOCpgF/gqK7gqL7gqLDgqJpf4KiF4Kiq4KmN4Kiw4KmI4KiyX+CoruCoiF/gqJzgqYLgqKhf4Kic4KmB4Kiy4Ki+4KiIX+CoheCol+CouOCopF/gqLjgqKTgqbDgqKzgqLBf4KiF4KiV4Kik4KmC4Kis4KiwX+CoqOCoteCpsOCorOCosF/gqKbgqLjgqbDgqKzgqLAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn4KiQ4Kik4Ki14Ki+4KiwX+CouOCpi+CoruCoteCovuCosF/gqK7gqbDgqJfgqLLgqLXgqL7gqLBf4Kis4KmB4Kin4Ki14Ki+4KiwX+CoteCpgOCosOCoteCovuCosF/gqLjgqLzgqYHgqbHgqJXgqLDgqLXgqL7gqLBf4Ki44Ki84Kio4KmA4Kia4Kiw4Ki14Ki+4KiwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4KiQ4KikX+CouOCpi+Corl/gqK7gqbDgqJfgqLJf4Kis4KmB4KinX+CoteCpgOCosF/gqLjgqLzgqYHgqJXgqLBf4Ki44Ki84Kio4KmAJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CokOCopF/gqLjgqYvgqK5f4Kiu4Kmw4KiX4KiyX+CorOCpgeCop1/gqLXgqYDgqLBf4Ki44Ki84KmB4KiV4KiwX+CouOCovOCoqOCpgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIOCoteConOCphycsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3Mg4Ki14Kic4KmHJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgqLXgqJzgqYcnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4Ki14Kic4KmHJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KiF4KicXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+ColeCosl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb4KiF4KiX4Kiy4Ki+XSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+ColeCosl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4Kiq4Ki/4Kib4Kiy4KmHXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOCoteCov+CpseComicsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4Kiq4Ki/4Kib4Kiy4KmHJyxcbiAgICAgICAgICAgIHM6ICfgqJXgqYHgqJ0g4Ki44KiV4Ki/4Kmw4KifJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Ki44KiV4Ki/4Kmw4KifJyxcbiAgICAgICAgICAgIG06ICfgqIfgqJUg4Kiu4Ki/4Kmw4KifJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4Kiu4Ki/4Kmw4KifJyxcbiAgICAgICAgICAgIGg6ICfgqIfgqbHgqJUg4KiY4Kmw4Kif4Ki+JyxcbiAgICAgICAgICAgIGhoOiAnJWQg4KiY4Kmw4Kif4KmHJyxcbiAgICAgICAgICAgIGQ6ICfgqIfgqbHgqJUg4Kim4Ki/4KioJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Kim4Ki/4KioJyxcbiAgICAgICAgICAgIE06ICfgqIfgqbHgqJUg4Kiu4Ki54KmA4Kio4Ki+JyxcbiAgICAgICAgICAgIE1NOiAnJWQg4Kiu4Ki54KmA4Kio4KmHJyxcbiAgICAgICAgICAgIHk6ICfgqIfgqbHgqJUg4Ki44Ki+4KiyJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4Ki44Ki+4KiyJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Cpp+CpqOCpqeCpquCpq+CprOCpreCpruCpr+Cppl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gUHVuamFiaSBub3RhdGlvbiBmb3IgbWVyaWRpZW1zIGFyZSBxdWl0ZSBmdXp6eSBpbiBwcmFjdGljZS4gV2hpbGUgdGhlcmUgZXhpc3RzXG4gICAgICAgIC8vIGEgcmlnaWQgbm90aW9uIG9mIGEgJ1BhaGFyJyBpdCBpcyBub3QgdXNlZCBhcyByaWdpZGx5IGluIG1vZGVybiBQdW5qYWJpLlxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Kiw4Ki+4KikfOCouOCoteCph+CosHzgqKbgqYHgqKrgqLngqL/gqLB84Ki44Ki84Ki+4KiuLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4Kiw4Ki+4KikJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Ki44Ki14KmH4KiwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CopuCpgeCoquCoueCov+CosCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Ki44Ki84Ki+4KiuJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CosOCovuCopCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Ki44Ki14KmH4KiwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqKbgqYHgqKrgqLngqL/gqLAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CouOCovOCovuCoric7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kiw4Ki+4KikJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhSW47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogUG9saXNoIFtwbF1cbi8vISBhdXRob3IgOiBSYWZhbCBIaXJzeiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9ldm9MXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzTm9taW5hdGl2ZSA9ICdzdHljemXFhF9sdXR5X21hcnplY19rd2llY2llxYRfbWFqX2N6ZXJ3aWVjX2xpcGllY19zaWVycGllxYRfd3J6ZXNpZcWEX3Bhxbpkemllcm5pa19saXN0b3BhZF9ncnVkemllxYQnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1N1YmplY3RpdmUgPSAnc3R5Y3puaWFfbHV0ZWdvX21hcmNhX2t3aWV0bmlhX21hamFfY3plcndjYV9saXBjYV9zaWVycG5pYV93cnplxZtuaWFfcGHFumR6aWVybmlrYV9saXN0b3BhZGFfZ3J1ZG5pYScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKTtcbiAgICBmdW5jdGlvbiBwbHVyYWwobikge1xuICAgICAgICByZXR1cm4gbiAlIDEwIDwgNSAmJiBuICUgMTAgPiAxICYmIH5+KG4gLyAxMCkgJSAxMCAhPT0gMTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdzZWt1bmR5JyA6ICdzZWt1bmQnKTtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ21pbnV0YScgOiAnbWludXTEmSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtaW51dHknIDogJ21pbnV0Jyk7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdnb2R6aW5hJyA6ICdnb2R6aW7EmSc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdnb2R6aW55JyA6ICdnb2R6aW4nKTtcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ21pZXNpxIVjZScgOiAnbWllc2nEmWN5Jyk7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdsYXRhJyA6ICdsYXQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3BsJywge1xuICAgICAgICBtb250aHM6IGZ1bmN0aW9uIChtb21lbnRUb0Zvcm1hdCwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW1vbWVudFRvRm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc05vbWluYXRpdmU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAvLyBIYWNrOiBpZiBmb3JtYXQgZW1wdHkgd2Uga25vdyB0aGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGVcbiAgICAgICAgICAgICAgICAvLyBSZWdFeHAgYnkgbW9tZW50LiBHaXZlIHRoZW4gYmFjayBib3RoIHZhbGlkIGZvcm1zIG9mIG1vbnRoc1xuICAgICAgICAgICAgICAgIC8vIGluIFJlZ0V4cCByZWFkeSBmb3JtYXQuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgJygnICtcbiAgICAgICAgICAgICAgICAgICAgbW9udGhzU3ViamVjdGl2ZVttb21lbnRUb0Zvcm1hdC5tb250aCgpXSArXG4gICAgICAgICAgICAgICAgICAgICd8JyArXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoc05vbWluYXRpdmVbbW9tZW50VG9Gb3JtYXQubW9udGgoKV0gK1xuICAgICAgICAgICAgICAgICAgICAnKSdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvRCBNTU1NLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU3ViamVjdGl2ZVttb21lbnRUb0Zvcm1hdC5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc05vbWluYXRpdmVbbW9tZW50VG9Gb3JtYXQubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnc3R5X2x1dF9tYXJfa3dpX21hal9jemVfbGlwX3NpZV93cnpfcGHFul9saXNfZ3J1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ25pZWR6aWVsYV9wb25pZWR6aWHFgmVrX3d0b3Jla1/Fm3JvZGFfY3p3YXJ0ZWtfcGnEhXRla19zb2JvdGEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICduZHpfcG9uX3d0X8Wbcl9jendfcHRfc29iJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ05kX1BuX1d0X8Wacl9Del9QdF9Tbycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tEemnFmyBvXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0p1dHJvIG9dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgbmllZHppZWzEmSBvXSBMVCc7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbV2Ugd3RvcmVrIG9dIExUJztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIMWbcm9kxJkgb10gTFQnO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgc29ib3TEmSBvXSBMVCc7XG5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1ddIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1tXY3pvcmFqIG9dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgemVzesWCxIUgbmllZHppZWzEmSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgemVzesWCxIUgxZtyb2TEmSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgemVzesWCxIUgc29ib3TEmSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHplc3rFgnldIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgdGVtdScsXG4gICAgICAgICAgICBzOiAna2lsa2Egc2VrdW5kJyxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6ICcxIGR6aWXFhCcsXG4gICAgICAgICAgICBkZDogJyVkIGRuaScsXG4gICAgICAgICAgICBNOiAnbWllc2nEhWMnLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6ICdyb2snLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBwbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBQb3J0dWd1ZXNlIFtwdF1cbi8vISBhdXRob3IgOiBKZWZmZXJzb24gOiBodHRwczovL2dpdGh1Yi5jb20vamFsZXg3OVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHB0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgncHQnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbmVpcm9fZmV2ZXJlaXJvX21hcsOnb19hYnJpbF9tYWlvX2p1bmhvX2p1bGhvX2Fnb3N0b19zZXRlbWJyb19vdXR1YnJvX25vdmVtYnJvX2RlemVtYnJvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbl9mZXZfbWFyX2Ficl9tYWlfanVuX2p1bF9hZ29fc2V0X291dF9ub3ZfZGV6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ0RvbWluZ29fU2VndW5kYS1mZWlyYV9UZXLDp2EtZmVpcmFfUXVhcnRhLWZlaXJhX1F1aW50YS1mZWlyYV9TZXh0YS1mZWlyYV9Tw6FiYWRvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnRG9tX1NlZ19UZXJfUXVhX1F1aV9TZXhfU8OhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdEb18ywqpfM8KqXzTCql81wqpfNsKqX1PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hvamUgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0FtYW5ow6Mgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8Ogc10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tPbnRlbSDDoHNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KCkgPT09IDAgfHwgdGhpcy5kYXkoKSA9PT0gNlxuICAgICAgICAgICAgICAgICAgICA/ICdbw5psdGltb10gZGRkZCBbw6BzXSBMVCcgLy8gU2F0dXJkYXkgKyBTdW5kYXlcbiAgICAgICAgICAgICAgICAgICAgOiAnW8OabHRpbWFdIGRkZGQgW8Ogc10gTFQnOyAvLyBNb25kYXkgLSBGcmlkYXlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2VtICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdow6EgJXMnLFxuICAgICAgICAgICAgczogJ3NlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbTogJ3VtIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaDogJ3VtYSBob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZDogJ3VtIGRpYScsXG4gICAgICAgICAgICBkZDogJyVkIGRpYXMnLFxuICAgICAgICAgICAgTTogJ3VtIG3DqnMnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5OiAndW0gYW5vJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYW5vcycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogUG9ydHVndWVzZSAoQnJhemlsKSBbcHQtYnJdXG4vLyEgYXV0aG9yIDogQ2FpbyBSaWJlaXJvIFBlcmVpcmEgOiBodHRwczovL2dpdGh1Yi5jb20vY2Fpby1yaWJlaXJvLXBlcmVpcmFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBwdEJyID0gbW9tZW50LmRlZmluZUxvY2FsZSgncHQtYnInLCB7XG4gICAgICAgIG1vbnRoczogJ2phbmVpcm9fZmV2ZXJlaXJvX21hcsOnb19hYnJpbF9tYWlvX2p1bmhvX2p1bGhvX2Fnb3N0b19zZXRlbWJyb19vdXR1YnJvX25vdmVtYnJvX2RlemVtYnJvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbl9mZXZfbWFyX2Ficl9tYWlfanVuX2p1bF9hZ29fc2V0X291dF9ub3ZfZGV6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ2RvbWluZ29fc2VndW5kYS1mZWlyYV90ZXLDp2EtZmVpcmFfcXVhcnRhLWZlaXJhX3F1aW50YS1mZWlyYV9zZXh0YS1mZWlyYV9zw6FiYWRvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tX3NlZ190ZXJfcXVhX3F1aV9zZXhfc8OhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkb18ywqpfM8KqXzTCql81wqpfNsKqX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgW8Ogc10gSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBbw6BzXSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hvamUgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0FtYW5ow6Mgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8Ogc10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tPbnRlbSDDoHNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KCkgPT09IDAgfHwgdGhpcy5kYXkoKSA9PT0gNlxuICAgICAgICAgICAgICAgICAgICA/ICdbw5psdGltb10gZGRkZCBbw6BzXSBMVCcgLy8gU2F0dXJkYXkgKyBTdW5kYXlcbiAgICAgICAgICAgICAgICAgICAgOiAnW8OabHRpbWFdIGRkZGQgW8Ogc10gTFQnOyAvLyBNb25kYXkgLSBGcmlkYXlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2VtICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdow6EgJXMnLFxuICAgICAgICAgICAgczogJ3BvdWNvcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG06ICd1bSBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGg6ICd1bWEgaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQ6ICd1bSBkaWEnLFxuICAgICAgICAgICAgZGQ6ICclZCBkaWFzJyxcbiAgICAgICAgICAgIE06ICd1bSBtw6pzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeTogJ3VtIGFubycsXG4gICAgICAgICAgICB5eTogJyVkIGFub3MnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICB9KTtcblxuICAgIHJldHVybiBwdEJyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFJvbWFuaWFuIFtyb11cbi8vISBhdXRob3IgOiBWbGFkIEd1cmRpZ2EgOiBodHRwczovL2dpdGh1Yi5jb20vZ3VyZGlnYVxuLy8hIGF1dGhvciA6IFZhbGVudGluIEFnYWNoaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hdmFseVxuLy8hIGF1dGhvciA6IEVtYW51ZWwgQ2Vwb2kgOiBodHRwczovL2dpdGh1Yi5jb20vY2VwZW1cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICAgICBzczogJ3NlY3VuZGUnLFxuICAgICAgICAgICAgICAgIG1tOiAnbWludXRlJyxcbiAgICAgICAgICAgICAgICBoaDogJ29yZScsXG4gICAgICAgICAgICAgICAgZGQ6ICd6aWxlJyxcbiAgICAgICAgICAgICAgICBNTTogJ2x1bmknLFxuICAgICAgICAgICAgICAgIHl5OiAnYW5pJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXBhcmF0b3IgPSAnICc7XG4gICAgICAgIGlmIChudW1iZXIgJSAxMDAgPj0gMjAgfHwgKG51bWJlciA+PSAxMDAgJiYgbnVtYmVyICUgMTAwID09PSAwKSkge1xuICAgICAgICAgICAgc2VwYXJhdG9yID0gJyBkZSAnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudW1iZXIgKyBzZXBhcmF0b3IgKyBmb3JtYXRba2V5XTtcbiAgICB9XG5cbiAgICB2YXIgcm8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdybycsIHtcbiAgICAgICAgbW9udGhzOiAnaWFudWFyaWVfZmVicnVhcmllX21hcnRpZV9hcHJpbGllX21haV9pdW5pZV9pdWxpZV9hdWd1c3Rfc2VwdGVtYnJpZV9vY3RvbWJyaWVfbm9pZW1icmllX2RlY2VtYnJpZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdpYW4uX2ZlYi5fbWFydC5fYXByLl9tYWlfaXVuLl9pdWwuX2F1Zy5fc2VwdC5fb2N0Ll9ub3YuX2RlYy4nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnZHVtaW5pY8SDX2x1bmlfbWFyyJtpX21pZXJjdXJpX2pvaV92aW5lcmlfc8OibWLEg3TEgycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0R1bV9MdW5fTWFyX01pZV9Kb2lfVmluX1PDom0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnRHVfTHVfTWFfTWlfSm9fVmlfU8OiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbYXppIGxhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW23DomluZSBsYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtsYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpZXJpIGxhXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tmb3N0YV0gZGRkZCBbbGFdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAncGVzdGUgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIMOubiB1cm3EgycsXG4gICAgICAgICAgICBzOiAnY8OidGV2YSBzZWN1bmRlJyxcbiAgICAgICAgICAgIHNzOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0JyxcbiAgICAgICAgICAgIG1tOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaDogJ28gb3LEgycsXG4gICAgICAgICAgICBoaDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQ6ICdvIHppJyxcbiAgICAgICAgICAgIGRkOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgTTogJ28gbHVuxIMnLFxuICAgICAgICAgICAgTU06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICB5OiAndW4gYW4nLFxuICAgICAgICAgICAgeXk6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBybztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBSdXNzaWFuIFtydV1cbi8vISBhdXRob3IgOiBWaWt0b3JtaW5hdG9yIDogaHR0cHM6Ly9naXRodWIuY29tL1Zpa3Rvcm1pbmF0b3Jcbi8vISBhdXRob3IgOiBNZW5lbGlvbiBFbGVuc8O6bGUgOiBodHRwczovL2dpdGh1Yi5jb20vT2lyZVxuLy8hIGF1dGhvciA6INCa0L7RgNC10L3QsdC10YDQsyDQnNCw0YDQuiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zb2NrZXRwYWlyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwbHVyYWwod29yZCwgbnVtKSB7XG4gICAgICAgIHZhciBmb3JtcyA9IHdvcmQuc3BsaXQoJ18nKTtcbiAgICAgICAgcmV0dXJuIG51bSAlIDEwID09PSAxICYmIG51bSAlIDEwMCAhPT0gMTFcbiAgICAgICAgICAgID8gZm9ybXNbMF1cbiAgICAgICAgICAgIDogbnVtICUgMTAgPj0gMiAmJiBudW0gJSAxMCA8PSA0ICYmIChudW0gJSAxMDAgPCAxMCB8fCBudW0gJSAxMDAgPj0gMjApXG4gICAgICAgICAgICA/IGZvcm1zWzFdXG4gICAgICAgICAgICA6IGZvcm1zWzJdO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBzczogd2l0aG91dFN1ZmZpeCA/ICfRgdC10LrRg9C90LTQsF/RgdC10LrRg9C90LTRi1/RgdC10LrRg9C90LQnIDogJ9GB0LXQutGD0L3QtNGDX9GB0LXQutGD0L3QtNGLX9GB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBtbTogd2l0aG91dFN1ZmZpeCA/ICfQvNC40L3Rg9GC0LBf0LzQuNC90YPRgtGLX9C80LjQvdGD0YInIDogJ9C80LjQvdGD0YLRg1/QvNC40L3Rg9GC0Ytf0LzQuNC90YPRgicsXG4gICAgICAgICAgICBoaDogJ9GH0LDRgV/Rh9Cw0YHQsF/Rh9Cw0YHQvtCyJyxcbiAgICAgICAgICAgIGRkOiAn0LTQtdC90Yxf0LTQvdGPX9C00L3QtdC5JyxcbiAgICAgICAgICAgIE1NOiAn0LzQtdGB0Y/Rhl/QvNC10YHRj9GG0LBf0LzQtdGB0Y/RhtC10LInLFxuICAgICAgICAgICAgeXk6ICfQs9C+0LRf0LPQvtC00LBf0LvQtdGCJyxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGtleSA9PT0gJ20nKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfQvNC40L3Rg9GC0LAnIDogJ9C80LjQvdGD0YLRgyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgcGx1cmFsKGZvcm1hdFtrZXldLCArbnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgIC9e0Y/QvdCyL2ksXG4gICAgICAgIC9e0YTQtdCyL2ksXG4gICAgICAgIC9e0LzQsNGAL2ksXG4gICAgICAgIC9e0LDQv9GAL2ksXG4gICAgICAgIC9e0LzQsFvQudGPXS9pLFxuICAgICAgICAvXtC40Y7QvS9pLFxuICAgICAgICAvXtC40Y7Quy9pLFxuICAgICAgICAvXtCw0LLQsy9pLFxuICAgICAgICAvXtGB0LXQvS9pLFxuICAgICAgICAvXtC+0LrRgi9pLFxuICAgICAgICAvXtC90L7Rjy9pLFxuICAgICAgICAvXtC00LXQui9pLFxuICAgIF07XG5cbiAgICAvLyBodHRwOi8vbmV3LmdyYW1vdGEucnUvc3ByYXZrYS9ydWxlcy8xMzktcHJvcCA6IMKnIDEwM1xuICAgIC8vINCh0L7QutGA0LDRidC10L3QuNGPINC80LXRgdGP0YbQtdCyOiBodHRwOi8vbmV3LmdyYW1vdGEucnUvc3ByYXZrYS9idXJvL3NlYXJjaC1hbnN3ZXI/cz0yNDI2MzdcbiAgICAvLyBDTERSIGRhdGE6ICAgICAgICAgIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY2xkci9jaGFydHMvMjgvc3VtbWFyeS9ydS5odG1sIzE3NTNcbiAgICB2YXIgcnUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdydScsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfRj9C90LLQsNGA0Y9f0YTQtdCy0YDQsNC70Y9f0LzQsNGA0YLQsF/QsNC/0YDQtdC70Y9f0LzQsNGPX9C40Y7QvdGPX9C40Y7Qu9GPX9Cw0LLQs9GD0YHRgtCwX9GB0LXQvdGC0Y/QsdGA0Y9f0L7QutGC0Y/QsdGA0Y9f0L3QvtGP0LHRgNGPX9C00LXQutCw0LHRgNGPJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOiAn0Y/QvdCy0LDRgNGMX9GE0LXQstGA0LDQu9GMX9C80LDRgNGCX9Cw0L/RgNC10LvRjF/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGA0Yxf0L7QutGC0Y/QsdGA0Yxf0L3QvtGP0LHRgNGMX9C00LXQutCw0LHRgNGMJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OiB7XG4gICAgICAgICAgICAvLyDQv9C+IENMRFIg0LjQvNC10L3QvdC+IFwi0LjRjtC7LlwiINC4IFwi0LjRjtC9LlwiLCDQvdC+INC60LDQutC+0Lkg0YHQvNGL0YHQuyDQvNC10L3Rj9GC0Ywg0LHRg9C60LLRgyDQvdCwINGC0L7Rh9C60YM/XG4gICAgICAgICAgICBmb3JtYXQ6ICfRj9C90LIuX9GE0LXQstGALl/QvNCw0YAuX9Cw0L/RgC5f0LzQsNGPX9C40Y7QvdGPX9C40Y7Qu9GPX9Cw0LLQsy5f0YHQtdC90YIuX9C+0LrRgi5f0L3QvtGP0LEuX9C00LXQui4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICfRj9C90LIuX9GE0LXQstGALl/QvNCw0YDRgl/QsNC/0YAuX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LMuX9GB0LXQvdGCLl/QvtC60YIuX9C90L7Rj9CxLl/QtNC10LouJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOiAn0LLQvtGB0LrRgNC10YHQtdC90YzQtV/Qv9C+0L3QtdC00LXQu9GM0L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDQtdC00LBf0YfQtdGC0LLQtdGA0LNf0L/Rj9GC0L3QuNGG0LBf0YHRg9Cx0LHQvtGC0LAnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZvcm1hdDogJ9Cy0L7RgdC60YDQtdGB0LXQvdGM0LVf0L/QvtC90LXQtNC10LvRjNC90LjQul/QstGC0L7RgNC90LjQul/RgdGA0LXQtNGDX9GH0LXRgtCy0LXRgNCzX9C/0Y/RgtC90LjRhtGDX9GB0YPQsdCx0L7RgtGDJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL1xcWyA/W9CS0LJdID8oPzrQv9GA0L7RiNC70YPRjnzRgdC70LXQtNGD0Y7RidGD0Y580Y3RgtGDKT8gP10gP2RkZGQvLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0LLRgV/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQstGBX9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuXG4gICAgICAgIC8vINC/0L7Qu9C90YvQtSDQvdCw0LfQstCw0L3QuNGPINGBINC/0LDQtNC10LbQsNC80LgsINC/0L4g0YLRgNC4INCx0YPQutCy0YssINC00LvRjyDQvdC10LrQvtGC0L7RgNGL0YUsINC/0L4gNCDQsdGD0LrQstGLLCDRgdC+0LrRgNCw0YnQtdC90LjRjyDRgSDRgtC+0YfQutC+0Lkg0Lgg0LHQtdC3INGC0L7Rh9C60LhcbiAgICAgICAgbW9udGhzUmVnZXg6IC9eKNGP0L3QstCw0YBb0YzRj1180Y/QvdCyXFwuP3zRhNC10LLRgNCw0Ltb0YzRj1180YTQtdCy0YA/XFwuP3zQvNCw0YDRgtCwP3zQvNCw0YBcXC4/fNCw0L/RgNC10Ltb0YzRj1180LDQv9GAXFwuP3zQvNCwW9C50Y9dfNC40Y7QvVvRjNGPXXzQuNGO0L1cXC4/fNC40Y7Qu1vRjNGPXXzQuNGO0LtcXC4/fNCw0LLQs9GD0YHRgtCwP3zQsNCy0LNcXC4/fNGB0LXQvdGC0Y/QsdGAW9GM0Y9dfNGB0LXQvdGCP1xcLj980L7QutGC0Y/QsdGAW9GM0Y9dfNC+0LrRglxcLj980L3QvtGP0LHRgFvRjNGPXXzQvdC+0Y/QsT9cXC4/fNC00LXQutCw0LHRgFvRjNGPXXzQtNC10LpcXC4/KS9pLFxuXG4gICAgICAgIC8vINC60L7Qv9C40Y8g0L/RgNC10LTRi9C00YPRidC10LPQvlxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiAvXijRj9C90LLQsNGAW9GM0Y9dfNGP0L3QslxcLj980YTQtdCy0YDQsNC7W9GM0Y9dfNGE0LXQstGAP1xcLj980LzQsNGA0YLQsD980LzQsNGAXFwuP3zQsNC/0YDQtdC7W9GM0Y9dfNCw0L/RgFxcLj980LzQsFvQudGPXXzQuNGO0L1b0YzRj1180LjRjtC9XFwuP3zQuNGO0Ltb0YzRj1180LjRjtC7XFwuP3zQsNCy0LPRg9GB0YLQsD980LDQstCzXFwuP3zRgdC10L3RgtGP0LHRgFvRjNGPXXzRgdC10L3Rgj9cXC4/fNC+0LrRgtGP0LHRgFvRjNGPXXzQvtC60YJcXC4/fNC90L7Rj9Cx0YBb0YzRj1180L3QvtGP0LE/XFwuP3zQtNC10LrQsNCx0YBb0YzRj1180LTQtdC6XFwuPykvaSxcblxuICAgICAgICAvLyDQv9C+0LvQvdGL0LUg0L3QsNC30LLQsNC90LjRjyDRgSDQv9Cw0LTQtdC20LDQvNC4XG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OiAvXijRj9C90LLQsNGAW9GP0YxdfNGE0LXQstGA0LDQu1vRj9GMXXzQvNCw0YDRgtCwP3zQsNC/0YDQtdC7W9GP0YxdfNC80LBb0Y/QuV180LjRjtC9W9GP0YxdfNC40Y7Qu1vRj9GMXXzQsNCy0LPRg9GB0YLQsD980YHQtdC90YLRj9Cx0YBb0Y/RjF180L7QutGC0Y/QsdGAW9GP0YxdfNC90L7Rj9Cx0YBb0Y/RjF180LTQtdC60LDQsdGAW9GP0YxdKS9pLFxuXG4gICAgICAgIC8vINCS0YvRgNCw0LbQtdC90LjQtSwg0LrQvtGC0L7RgNC+0LUg0YHQvtC+0YLQstC10YLRgdGC0LLRg9C10YIg0YLQvtC70YzQutC+INGB0L7QutGA0LDRidGR0L3QvdGL0Lwg0YTQvtGA0LzQsNC8XG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IC9eKNGP0L3QslxcLnzRhNC10LLRgD9cXC580LzQsNGAW9GCLl180LDQv9GAXFwufNC80LBb0Y/QuV180LjRjtC9W9GM0Y8uXXzQuNGO0Ltb0YzRjy5dfNCw0LLQs1xcLnzRgdC10L3Rgj9cXC580L7QutGCXFwufNC90L7Rj9CxP1xcLnzQtNC10LpcXC4pL2ksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZINCzLicsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSDQsy4sIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZINCzLiwgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9Ch0LXQs9C+0LTQvdGPLCDQsl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQl9Cw0LLRgtGA0LAsINCyXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9CS0YfQtdGA0LAsINCyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmIChub3cud2VlaygpICE9PSB0aGlzLndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDRgdC70LXQtNGD0Y7RidC10LVdIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINGB0LvQtdC00YPRjtGJ0LjQuV0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0YHQu9C10LTRg9GO0YnRg9GOXSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRheSgpID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQktC+XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSXSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmIChub3cud2VlaygpICE9PSB0aGlzLndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDQv9GA0L7RiNC70L7QtV0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0L/RgNC+0YjQu9GL0LldIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINC/0YDQvtGI0LvRg9GOXSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRheSgpID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQktC+XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSXSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9GH0LXRgNC10LcgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzINC90LDQt9Cw0LQnLFxuICAgICAgICAgICAgczogJ9C90LXRgdC60L7Qu9GM0LrQviDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgc3M6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbW06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBoOiAn0YfQsNGBJyxcbiAgICAgICAgICAgIGhoOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgZDogJ9C00LXQvdGMJyxcbiAgICAgICAgICAgIGRkOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgTTogJ9C80LXRgdGP0YYnLFxuICAgICAgICAgICAgTU06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICB5OiAn0LPQvtC0JyxcbiAgICAgICAgICAgIHl5OiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv0L3QvtGH0Lh80YPRgtGA0LB80LTQvdGPfNCy0LXRh9C10YDQsC9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXijQtNC90Y980LLQtdGH0LXRgNCwKSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQvdC+0YfQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YPRgtGA0LAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C00L3Rjyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LLQtdGH0LXRgNCwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjQuXzQs9C+fNGPKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QuSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdCz0L4nO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Rjyc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJ1O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNpbmRoaSBbc2RdXG4vLyEgYXV0aG9yIDogTmFyYWluIFNhZ2FyIDogaHR0cHM6Ly9naXRodWIuY29tL25hcmFpbnNhZ2FyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAgICAgJ9is2YbZiNix2YonLFxuICAgICAgICAgICAgJ9mB2YrYqNix2YjYsdmKJyxcbiAgICAgICAgICAgICfZhdin2LHahicsXG4gICAgICAgICAgICAn2KfZvtix2YrZhCcsXG4gICAgICAgICAgICAn2YXYptmKJyxcbiAgICAgICAgICAgICfYrNmI2YYnLFxuICAgICAgICAgICAgJ9is2YjZhNin2KHZkCcsXG4gICAgICAgICAgICAn2KLar9iz2b0nLFxuICAgICAgICAgICAgJ9iz2YrZvtm92YXYqNixJyxcbiAgICAgICAgICAgICfYotqq2b3ZiNio2LEnLFxuICAgICAgICAgICAgJ9mG2YjZhdio2LEnLFxuICAgICAgICAgICAgJ9qK2LPZhdio2LEnLFxuICAgICAgICBdLFxuICAgICAgICBkYXlzID0gWyfYotqG2LEnLCAn2LPZiNmF2LEnLCAn2Kfasdin2LHZiCcsICfYp9ix2KjYuScsICfYrtmF2YrYsycsICfYrNmF2LknLCAn2ofZhtqH2LEnXTtcblxuICAgIHZhciBzZCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NkJywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXM6IGRheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6IGRheXMsXG4gICAgICAgIHdlZWtkYXlzTWluOiBkYXlzLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRk2IwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LXYqNitfNi02KfZhS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfYtNin2YUnID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i12KjYrSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ9i02KfZhSc7XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2oRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LPagNin2rvZil0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYp9qz2YrZhiDZh9mB2KrZiiDYqtmKXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9qq2KfZhNmH2YddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9qv2LLYsdmK2YQg2YfZgdiq2YpdIGRkZGQgW9iq2YpdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg2b7ZiNihJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDYp9qzJyxcbiAgICAgICAgICAgIHM6ICfahtmG2K8g2LPZitqq2YbaiicsXG4gICAgICAgICAgICBzczogJyVkINiz2YraqtmG2oonLFxuICAgICAgICAgICAgbTogJ9mH2qog2YXZhtm9JyxcbiAgICAgICAgICAgIG1tOiAnJWQg2YXZhtm9JyxcbiAgICAgICAgICAgIGg6ICfZh9qqINqq2YTYp9qqJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2qrZhNin2qonLFxuICAgICAgICAgICAgZDogJ9mH2qog2o/ZitmG2YfZhicsXG4gICAgICAgICAgICBkZDogJyVkINqP2YrZhtmH2YYnLFxuICAgICAgICAgICAgTTogJ9mH2qog2YXZh9mK2YbZiCcsXG4gICAgICAgICAgICBNTTogJyVkINmF2YfZitmG2KcnLFxuICAgICAgICAgICAgeTogJ9mH2qog2LPYp9mEJyxcbiAgICAgICAgICAgIHl5OiAnJWQg2LPYp9mEJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2Q7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTm9ydGhlcm4gU2FtaSBbc2VdXG4vLyEgYXV0aG9ycyA6IELDpXJkIFJvbHN0YWQgSGVucmlrc2VuIDogaHR0cHM6Ly9naXRodWIuY29tL2thcmFtZWxsXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc2UgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzZScsIHtcbiAgICAgICAgbW9udGhzOiAnb8SRxJFhamFnZW3DoW5udV9ndW92dmFtw6FubnVfbmp1a8SNYW3DoW5udV9jdW/Fi29tw6FubnVfbWllc3NlbcOhbm51X2dlYXNzZW3DoW5udV9zdW9pZG5lbcOhbm51X2JvcmdlbcOhbm51X8SNYWvEjWFtw6FubnVfZ29sZ2dvdG3DoW5udV9za8OhYm1hbcOhbm51X2p1b3ZsYW3DoW5udScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdvxJHEkWpfZ3Vvdl9uanVrX2N1b19taWVzX2dlYXNfc3VvaV9ib3JnX8SNYWvEjV9nb2xnX3Nrw6FiX2p1b3YnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAnc290bmFiZWFpdmlfdnVvc3PDoXJnYV9tYcWLxYtlYsOhcmdhX2dhc2thdmFoa2t1X2R1b3Jhc3RhdF9iZWFyamFkYXRfbMOhdnZhcmRhdCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3NvdG5fdnVvc19tYcWLX2dhc2tfZHVvcl9iZWFyX2zDoXYnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnc192X21fZ19kX2JfTCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdNTU1NIEQuIFtiLl0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdNTU1NIEQuIFtiLl0gWVlZWSBbdGkuXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgTU1NTSBELiBbYi5dIFlZWVkgW3RpLl0gSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tvdG5lIHRpXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2lodHRpbiB0aV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt0aV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpa3RlIHRpXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tvdmRkaXRdIGRkZGQgW3RpXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIGdlYcW+ZXMnLFxuICAgICAgICAgICAgcGFzdDogJ21hxYtpdCAlcycsXG4gICAgICAgICAgICBzOiAnbW9hZGRlIHNla3VuZGRhdCcsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZGRhdCcsXG4gICAgICAgICAgICBtOiAnb2t0YSBtaW51aHRhJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludWh0YXQnLFxuICAgICAgICAgICAgaDogJ29rdGEgZGlpbW11JyxcbiAgICAgICAgICAgIGhoOiAnJWQgZGlpbW11dCcsXG4gICAgICAgICAgICBkOiAnb2t0YSBiZWFpdmknLFxuICAgICAgICAgICAgZGQ6ICclZCBiZWFpdnZpdCcsXG4gICAgICAgICAgICBNOiAnb2t0YSBtw6FubnUnLFxuICAgICAgICAgICAgTU06ICclZCBtw6FudXQnLFxuICAgICAgICAgICAgeTogJ29rdGEgamFoa2knLFxuICAgICAgICAgICAgeXk6ICclZCBqYWdpdCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2U7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU2luaGFsZXNlIFtzaV1cbi8vISBhdXRob3IgOiBTYW1wYXRoIFNpdGluYW1hbHV3YSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zYW1wYXRoc3Jpc1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgLypqc2hpbnQgLVcxMDAqL1xuICAgIHZhciBzaSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NpJywge1xuICAgICAgICBtb250aHM6ICfgtqLgtrHgt4Dgt4/gtrvgt5Jf4La04LeZ4La24La74LeA4LeP4La74LeSX+C2uOC3j+C2u+C3iuC2reC3lF/gtoXgtrTgt4rigI3gtrvgt5rgtr3gt4pf4La44LeQ4La64LeSX+C2ouC3luC2seC3kl/gtqLgt5bgtr3gt5Jf4LaF4Lac4Led4LeD4LeK4Lat4LeUX+C3g+C3kOC2tOC3iuC2reC3kOC2uOC3iuC2tuC2u+C3il/gtpTgtprgt4rgtq3gt53gtrbgtrvgt4pf4Lax4Lec4LeA4LeQ4La44LeK4La24La74LeKX+C2r+C3meC3g+C3kOC2uOC3iuC2tuC2u+C3iicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfgtqLgtrFf4La04LeZ4La2X+C2uOC3j+C2u+C3il/gtoXgtrTgt4pf4La44LeQ4La64LeSX+C2ouC3luC2seC3kl/gtqLgt5bgtr3gt5Jf4LaF4Lac4LedX+C3g+C3kOC2tOC3il/gtpTgtprgt4pf4Lax4Lec4LeA4LeQX+C2r+C3meC3g+C3kCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfgtongtrvgt5Lgtq/gt49f4LeD4Laz4LeU4Lav4LePX+C2heC2n+C3hOC2u+C3lOC3gOC3j+C2r+C3j1/gtrbgtq/gt4/gtq/gt49f4La24LeK4oCN4La74LeE4LeD4LeK4La04Lat4LeS4Lax4LeK4Lav4LePX+C3g+C3kuC2muC3lOC2u+C3j+C2r+C3j1/gt4Pgt5ngtrHgt4Pgt5Tgtrvgt4/gtq/gt48nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgtongtrvgt5Jf4LeD4Laz4LeUX+C2heC2n1/gtrbgtq/gt49f4La24LeK4oCN4La74LeEX+C3g+C3kuC2muC3lF/gt4Pgt5ngtrEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4LaJX+C3g1/gtoVf4La2X+C2tuC3iuKAjeC2u1/gt4Pgt5Jf4LeD4LeZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2EgaDptbScsXG4gICAgICAgICAgICBMVFM6ICdhIGg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZIE1NTU0gRCcsXG4gICAgICAgICAgICBMTEw6ICdZWVlZIE1NTU0gRCwgYSBoOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdZWVlZIE1NTU0gRCBb4LeA4LeQ4Lax4LeSXSBkZGRkLCBhIGg6bW06c3MnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgtoXgtq9dIExUW+C2p10nLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgt4Tgt5ngtqddIExUW+C2p10nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIExUW+C2p10nLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgtorgtrrgt5pdIExUW+C2p10nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4La04LeD4LeU4Lac4LeS4La6XSBkZGRkIExUW+C2p10nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+C2muC3kuC2seC3iicsXG4gICAgICAgICAgICBwYXN0OiAnJXPgtprgtqcg4La04LeZ4La7JyxcbiAgICAgICAgICAgIHM6ICfgtq3gtq3gt4rgtrTgtrsg4Laa4LeS4LeE4LeS4La04La6JyxcbiAgICAgICAgICAgIHNzOiAn4Lat4Lat4LeK4La04La7ICVkJyxcbiAgICAgICAgICAgIG06ICfgtrjgt5LgtrHgt5Lgtq3gt4rgtq3gt5Tgt4AnLFxuICAgICAgICAgICAgbW06ICfgtrjgt5LgtrHgt5Lgtq3gt4rgtq3gt5QgJWQnLFxuICAgICAgICAgICAgaDogJ+C2tOC3kOC2uicsXG4gICAgICAgICAgICBoaDogJ+C2tOC3kOC2uiAlZCcsXG4gICAgICAgICAgICBkOiAn4Lav4LeS4Lax4La6JyxcbiAgICAgICAgICAgIGRkOiAn4Lav4LeS4LaxICVkJyxcbiAgICAgICAgICAgIE06ICfgtrjgt4/gt4PgtronLFxuICAgICAgICAgICAgTU06ICfgtrjgt4/gt4MgJWQnLFxuICAgICAgICAgICAgeTogJ+C3gOC3g+C2uycsXG4gICAgICAgICAgICB5eTogJ+C3gOC3g+C2uyAlZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSDgt4Dgt5DgtrHgt5IvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDgt4Dgt5DgtrHgt5InO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4La04LeZ4La7IOC3gOC2u+C3lHzgtrTgt4Pgt4og4LeA4La74LeUfOC2tOC3mS7gt4B84La0LuC3gC4vLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ+C2tC7gt4AuJyB8fCBpbnB1dCA9PT0gJ+C2tOC3g+C3iiDgt4Dgtrvgt5QnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ+C2tC7gt4AuJyA6ICfgtrTgt4Pgt4og4LeA4La74LeUJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAn4La04LeZLuC3gC4nIDogJ+C2tOC3meC2uyDgt4Dgtrvgt5QnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNpO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNsb3ZhayBbc2tdXG4vLyEgYXV0aG9yIDogTWFydGluIE1pbmthIDogaHR0cHM6Ly9naXRodWIuY29tL2syc1xuLy8hIGJhc2VkIG9uIHdvcmsgb2YgcGV0cmJlbGEgOiBodHRwczovL2dpdGh1Yi5jb20vcGV0cmJlbGFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHMgPSAnamFudcOhcl9mZWJydcOhcl9tYXJlY19hcHLDrWxfbcOhal9qw7puX2rDumxfYXVndXN0X3NlcHRlbWJlcl9va3TDs2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSAnamFuX2ZlYl9tYXJfYXByX23DoWpfasO6bl9qw7psX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gcGx1cmFsKG4pIHtcbiAgICAgICAgcmV0dXJuIG4gPiAxICYmIG4gPCA1O1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzogLy8gYSBmZXcgc2Vjb25kcyAvIGluIGEgZmV3IHNlY29uZHMgLyBhIGZldyBzZWNvbmRzIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3DDoXIgc2Vrw7puZCcgOiAncMOhciBzZWt1bmRhbWknO1xuICAgICAgICAgICAgY2FzZSAnc3MnOiAvLyA5IHNlY29uZHMgLyBpbiA5IHNlY29uZHMgLyA5IHNlY29uZHMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdzZWt1bmR5JyA6ICdzZWvDum5kJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdzZWt1bmRhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ20nOiAvLyBhIG1pbnV0ZSAvIGluIGEgbWludXRlIC8gYSBtaW51dGUgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnbWluw7p0YScgOiBpc0Z1dHVyZSA/ICdtaW7DunR1JyA6ICdtaW7DunRvdSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6IC8vIDkgbWludXRlcyAvIGluIDkgbWludXRlcyAvIDkgbWludXRlcyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ21pbsO6dHknIDogJ21pbsO6dCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbWluw7p0YW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdoJzogLy8gYW4gaG91ciAvIGluIGFuIGhvdXIgLyBhbiBob3VyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2hvZGluYScgOiBpc0Z1dHVyZSA/ICdob2RpbnUnIDogJ2hvZGlub3UnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOiAvLyA5IGhvdXJzIC8gaW4gOSBob3VycyAvIDkgaG91cnMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdob2RpbnknIDogJ2hvZMOtbicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnaG9kaW5hbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2QnOiAvLyBhIGRheSAvIGluIGEgZGF5IC8gYSBkYXkgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZGXFiCcgOiAnZMWIb20nO1xuICAgICAgICAgICAgY2FzZSAnZGQnOiAvLyA5IGRheXMgLyBpbiA5IGRheXMgLyA5IGRheXMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdkbmknIDogJ2Ruw60nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2TFiGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnTSc6IC8vIGEgbW9udGggLyBpbiBhIG1vbnRoIC8gYSBtb250aCBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNpYWMnIDogJ21lc2lhY29tJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzogLy8gOSBtb250aHMgLyBpbiA5IG1vbnRocyAvIDkgbW9udGhzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbWVzaWFjZScgOiAnbWVzaWFjb3YnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ21lc2lhY21pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICd5JzogLy8gYSB5ZWFyIC8gaW4gYSB5ZWFyIC8gYSB5ZWFyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3JvaycgOiAncm9rb20nO1xuICAgICAgICAgICAgY2FzZSAneXknOiAvLyA5IHllYXJzIC8gaW4gOSB5ZWFycyAvIDkgeWVhcnMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdyb2t5JyA6ICdyb2tvdicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAncm9rbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NrJywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRoc1Nob3J0LFxuICAgICAgICB3ZWVrZGF5czogJ25lZGXEvmFfcG9uZGVsb2tfdXRvcm9rX3N0cmVkYV/FoXR2cnRva19waWF0b2tfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVfcG9fdXRfc3RfxaF0X3BpX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ25lX3BvX3V0X3N0X8WhdF9waV9zbycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZG5lcyBvXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3phanRyYSBvXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IG5lZGXEvnUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBzdHJlZHUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2byDFoXR2cnRvayBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3YgcGlhdG9rIG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBzb2JvdHUgb10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW3bEjWVyYSBvXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO6IG5lZGXEvnUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw71dIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDuiBzdHJlZHUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw71dIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDuiBzb2JvdHUgb10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwcmVkICVzJyxcbiAgICAgICAgICAgIHM6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzaztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTbG92ZW5pYW4gW3NsXVxuLy8hIGF1dGhvciA6IFJvYmVydCBTZWRvdsWhZWsgOiBodHRwczovL2dpdGh1Yi5jb20vc2Vkb3ZzZWtcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZVxuICAgICAgICAgICAgICAgICAgICA/ICduZWthaiBzZWt1bmQnXG4gICAgICAgICAgICAgICAgICAgIDogJ25la2FqIHNla3VuZGFtaSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCA/ICdzZWt1bmRvJyA6ICdzZWt1bmRpJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdzZWt1bmRpJyA6ICdzZWt1bmRhaCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3Nla3VuZGUnIDogJ3Nla3VuZGFoJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdlbmEgbWludXRhJyA6ICdlbm8gbWludXRvJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4ID8gJ21pbnV0YScgOiAnbWludXRvJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtaW51dGknIDogJ21pbnV0YW1hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWludXRlJyA6ICdtaW51dGFtaSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWludXQnIDogJ21pbnV0YW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2VuYSB1cmEnIDogJ2VubyB1cm8nO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggPyAndXJhJyA6ICd1cm8nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3VyaScgOiAndXJhbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICd1cmUnIDogJ3VyYW1pJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICd1cicgOiAndXJhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZW4gZGFuJyA6ICdlbmltIGRuZW0nO1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZGFuJyA6ICdkbmVtJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdkbmknIDogJ2RuZXZvbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2RuaScgOiAnZG5ldmknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZW4gbWVzZWMnIDogJ2VuaW0gbWVzZWNlbSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNlYycgOiAnbWVzZWNlbSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWVzZWNhJyA6ICdtZXNlY2VtYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21lc2VjZScgOiAnbWVzZWNpJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNlY2V2JyA6ICdtZXNlY2knO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZW5vIGxldG8nIDogJ2VuaW0gbGV0b20nO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbGV0bycgOiAnbGV0b20nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2xldGknIDogJ2xldG9tYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2xldGEnIDogJ2xldGknO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2xldCcgOiAnbGV0aSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc2wgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzbCcsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyX2ZlYnJ1YXJfbWFyZWNfYXByaWxfbWFqX2p1bmlqX2p1bGlqX2F2Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICduZWRlbGphX3BvbmVkZWxqZWtfdG9yZWtfc3JlZGFfxI1ldHJ0ZWtfcGV0ZWtfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVkLl9wb24uX3Rvci5fc3JlLl/EjWV0Ll9wZXQuX3NvYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fdG9fc3JfxI1lX3BlX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuIE1NLiBZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RhbmVzIG9iXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2p1dHJpIG9iXSBMVCcsXG5cbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIFtuZWRlbGpvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gW3NyZWRvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gW3NvYm90b10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIGRkZGQgW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbdsSNZXJhaiBvYl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJlasWhbmpvXSBbbmVkZWxqb10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ByZWrFoW5qb10gW3NyZWRvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJlasWhbmpvXSBbc29ib3RvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJlasWhbmppXSBkZGRkIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ8SNZXogJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ByZWQgJXMnLFxuICAgICAgICAgICAgczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFsYmFuaWFuIFtzcV1cbi8vISBhdXRob3IgOiBGbGFrw6tyaW0gSXNtYW5pIDogaHR0cHM6Ly9naXRodWIuY29tL2ZsYWtlcmltaVxuLy8hIGF1dGhvciA6IE1lbmVsaW9uIEVsZW5zw7psZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9PaXJlXG4vLyEgYXV0aG9yIDogT2VyZCBDdWthbGxhIDogaHR0cHM6Ly9naXRodWIuY29tL29lcmRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzcSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NxJywge1xuICAgICAgICBtb250aHM6ICdKYW5hcl9TaGt1cnRfTWFyc19QcmlsbF9NYWpfUWVyc2hvcl9Lb3JyaWtfR3VzaHRfU2h0YXRvcl9UZXRvcl9Ow6tudG9yX0RoamV0b3InLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX1Noa19NYXJfUHJpX01hal9RZXJfS29yX0d1c19TaHRfVGV0X07Dq25fRGhqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ0UgRGllbF9FIEjDq27Dq19FIE1hcnTDq19FIE3Dq3JrdXLDq19FIEVuanRlX0UgUHJlbXRlX0UgU2h0dW7Dqycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0RpZV9Iw6tuX01hcl9Nw6tyX0Vual9QcmVfU2h0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0RfSF9NYV9Nw6tfRV9QX1NoJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9QRHxNRC8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LmNoYXJBdCgwKSA9PT0gJ00nO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gaG91cnMgPCAxMiA/ICdQRCcgOiAnTUQnO1xuICAgICAgICB9LFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1NvdCBuw6tdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbTmVzw6tyIG7Dq10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtuw6tdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbRGplIG7Dq10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtlIGthbHVhciBuw6tdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnbsOrICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBtw6sgcGFyw6snLFxuICAgICAgICAgICAgczogJ2Rpc2Egc2Vrb25kYScsXG4gICAgICAgICAgICBzczogJyVkIHNla29uZGEnLFxuICAgICAgICAgICAgbTogJ25qw6sgbWludXTDqycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0YScsXG4gICAgICAgICAgICBoOiAnbmrDqyBvcsOrJyxcbiAgICAgICAgICAgIGhoOiAnJWQgb3LDqycsXG4gICAgICAgICAgICBkOiAnbmrDqyBkaXTDqycsXG4gICAgICAgICAgICBkZDogJyVkIGRpdMOrJyxcbiAgICAgICAgICAgIE06ICduasOrIG11YWonLFxuICAgICAgICAgICAgTU06ICclZCBtdWFqJyxcbiAgICAgICAgICAgIHk6ICduasOrIHZpdCcsXG4gICAgICAgICAgICB5eTogJyVkIHZpdGUnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNxO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNlcmJpYW4gW3NyXVxuLy8hIGF1dGhvciA6IE1pbGFuIEphbmHEjWtvdmnEhzxtaWxhbmphbmFja292aWNAZ21haWwuY29tPiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWxhbi1qXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdHJhbnNsYXRvciA9IHtcbiAgICAgICAgd29yZHM6IHtcbiAgICAgICAgICAgIC8vRGlmZmVyZW50IGdyYW1tYXRpY2FsIGNhc2VzXG4gICAgICAgICAgICBzczogWydzZWt1bmRhJywgJ3Nla3VuZGUnLCAnc2VrdW5kaSddLFxuICAgICAgICAgICAgbTogWydqZWRhbiBtaW51dCcsICdqZWRuZSBtaW51dGUnXSxcbiAgICAgICAgICAgIG1tOiBbJ21pbnV0JywgJ21pbnV0ZScsICdtaW51dGEnXSxcbiAgICAgICAgICAgIGg6IFsnamVkYW4gc2F0JywgJ2plZG5vZyBzYXRhJ10sXG4gICAgICAgICAgICBoaDogWydzYXQnLCAnc2F0YScsICdzYXRpJ10sXG4gICAgICAgICAgICBkZDogWydkYW4nLCAnZGFuYScsICdkYW5hJ10sXG4gICAgICAgICAgICBNTTogWydtZXNlYycsICdtZXNlY2EnLCAnbWVzZWNpJ10sXG4gICAgICAgICAgICB5eTogWydnb2RpbmEnLCAnZ29kaW5lJywgJ2dvZGluYSddLFxuICAgICAgICB9LFxuICAgICAgICBjb3JyZWN0R3JhbW1hdGljYWxDYXNlOiBmdW5jdGlvbiAobnVtYmVyLCB3b3JkS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyID09PSAxXG4gICAgICAgICAgICAgICAgPyB3b3JkS2V5WzBdXG4gICAgICAgICAgICAgICAgOiBudW1iZXIgPj0gMiAmJiBudW1iZXIgPD0gNFxuICAgICAgICAgICAgICAgID8gd29yZEtleVsxXVxuICAgICAgICAgICAgICAgIDogd29yZEtleVsyXTtcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgICAgIHZhciB3b3JkS2V5ID0gdHJhbnNsYXRvci53b3Jkc1trZXldO1xuICAgICAgICAgICAgaWYgKGtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IHdvcmRLZXlbMF0gOiB3b3JkS2V5WzFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICBudW1iZXIgK1xuICAgICAgICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdG9yLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UobnVtYmVyLCB3b3JkS2V5KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIHZhciBzciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NyJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hal9qdW5fanVsX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICduZWRlbGphX3BvbmVkZWxqYWtfdXRvcmFrX3NyZWRhX8SNZXR2cnRha19wZXRha19zdWJvdGEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICduZWQuX3Bvbi5fdXRvLl9zcmUuX8SNZXQuX3BldC5fc3ViLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICduZV9wb191dF9zcl/EjWVfcGVfc3UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RhbmFzIHVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbc3V0cmEgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW25lZGVsanVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzcmVkdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3N1Ym90dV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2p1xI1lIHVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3RXZWVrRGF5cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbbmVkZWxqZV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3BvbmVkZWxqa2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFt1dG9ya2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW3NyZWRlXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbxI1ldHZydGthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbcGV0a2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIHJldHVybiBsYXN0V2Vla0RheXNbdGhpcy5kYXkoKV07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0OiAncHJlICVzJyxcbiAgICAgICAgICAgIHM6ICduZWtvbGlrbyBzZWt1bmRpJyxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiAnZGFuJyxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06ICdtZXNlYycsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiAnZ29kaW51JyxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTZXJiaWFuIEN5cmlsbGljIFtzci1jeXJsXVxuLy8hIGF1dGhvciA6IE1pbGFuIEphbmHEjWtvdmnEhzxtaWxhbmphbmFja292aWNAZ21haWwuY29tPiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWxhbi1qXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdHJhbnNsYXRvciA9IHtcbiAgICAgICAgd29yZHM6IHtcbiAgICAgICAgICAgIC8vRGlmZmVyZW50IGdyYW1tYXRpY2FsIGNhc2VzXG4gICAgICAgICAgICBzczogWyfRgdC10LrRg9C90LTQsCcsICfRgdC10LrRg9C90LTQtScsICfRgdC10LrRg9C90LTQuCddLFxuICAgICAgICAgICAgbTogWyfRmNC10LTQsNC9INC80LjQvdGD0YInLCAn0ZjQtdC00L3QtSDQvNC40L3Rg9GC0LUnXSxcbiAgICAgICAgICAgIG1tOiBbJ9C80LjQvdGD0YInLCAn0LzQuNC90YPRgtC1JywgJ9C80LjQvdGD0YLQsCddLFxuICAgICAgICAgICAgaDogWyfRmNC10LTQsNC9INGB0LDRgicsICfRmNC10LTQvdC+0LMg0YHQsNGC0LAnXSxcbiAgICAgICAgICAgIGhoOiBbJ9GB0LDRgicsICfRgdCw0YLQsCcsICfRgdCw0YLQuCddLFxuICAgICAgICAgICAgZGQ6IFsn0LTQsNC9JywgJ9C00LDQvdCwJywgJ9C00LDQvdCwJ10sXG4gICAgICAgICAgICBNTTogWyfQvNC10YHQtdGGJywgJ9C80LXRgdC10YbQsCcsICfQvNC10YHQtdGG0LgnXSxcbiAgICAgICAgICAgIHl5OiBbJ9Cz0L7QtNC40L3QsCcsICfQs9C+0LTQuNC90LUnLCAn0LPQvtC00LjQvdCwJ10sXG4gICAgICAgIH0sXG4gICAgICAgIGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6IGZ1bmN0aW9uIChudW1iZXIsIHdvcmRLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgPT09IDFcbiAgICAgICAgICAgICAgICA/IHdvcmRLZXlbMF1cbiAgICAgICAgICAgICAgICA6IG51bWJlciA+PSAyICYmIG51bWJlciA8PSA0XG4gICAgICAgICAgICAgICAgPyB3b3JkS2V5WzFdXG4gICAgICAgICAgICAgICAgOiB3b3JkS2V5WzJdO1xuICAgICAgICB9LFxuICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICAgICAgdmFyIHdvcmRLZXkgPSB0cmFuc2xhdG9yLndvcmRzW2tleV07XG4gICAgICAgICAgICBpZiAoa2V5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gd29yZEtleVswXSA6IHdvcmRLZXlbMV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIG51bWJlciArXG4gICAgICAgICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0b3IuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShudW1iZXIsIHdvcmRLZXkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgdmFyIHNyQ3lybCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NyLWN5cmwnLCB7XG4gICAgICAgIG1vbnRoczogJ9GY0LDQvdGD0LDRgF/RhNC10LHRgNGD0LDRgF/QvNCw0YDRgl/QsNC/0YDQuNC7X9C80LDRmF/RmNGD0L1f0ZjRg9C7X9Cw0LLQs9GD0YHRgl/RgdC10L/RgtC10LzQsdCw0YBf0L7QutGC0L7QsdCw0YBf0L3QvtCy0LXQvNCx0LDRgF/QtNC10YbQtdC80LHQsNGAJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ9GY0LDQvS5f0YTQtdCxLl/QvNCw0YAuX9Cw0L/RgC5f0LzQsNGYX9GY0YPQvV/RmNGD0Ltf0LDQstCzLl/RgdC10L8uX9C+0LrRgi5f0L3QvtCyLl/QtNC10YYuJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ9C90LXQtNC10ZnQsF/Qv9C+0L3QtdC00LXRmdCw0Lpf0YPRgtC+0YDQsNC6X9GB0YDQtdC00LBf0YfQtdGC0LLRgNGC0LDQul/Qv9C10YLQsNC6X9GB0YPQsdC+0YLQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9C90LXQtC5f0L/QvtC9Ll/Rg9GC0L4uX9GB0YDQtS5f0YfQtdGCLl/Qv9C10YIuX9GB0YPQsS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0L3QtV/Qv9C+X9GD0YJf0YHRgF/Rh9C1X9C/0LVf0YHRgycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0LTQsNC90LDRgSDRg10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vRgdGD0YLRgNCwINGDXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vRg10gW9C90LXQtNC10ZnRg10gW9GDXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9GDXSBb0YHRgNC10LTRg10gW9GDXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9GDXSBb0YHRg9Cx0L7RgtGDXSBb0YNdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0YNdIGRkZGQgW9GDXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0ZjRg9GH0LUg0YNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3RXZWVrRGF5cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70LVdIFvQvdC10LTQtdGZ0LVdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQvtCzXSBb0L/QvtC90LXQtNC10ZnQutCwXSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70L7Qs10gW9GD0YLQvtGA0LrQsF0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C1XSBb0YHRgNC10LTQtV0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C+0LNdIFvRh9C10YLQstGA0YLQutCwXSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70L7Qs10gW9C/0LXRgtC60LBdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQtV0gW9GB0YPQsdC+0YLQtV0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFdlZWtEYXlzW3RoaXMuZGF5KCldO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn0LfQsCAlcycsXG4gICAgICAgICAgICBwYXN0OiAn0L/RgNC1ICVzJyxcbiAgICAgICAgICAgIHM6ICfQvdC10LrQvtC70LjQutC+INGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiAn0LTQsNC9JyxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06ICfQvNC10YHQtdGGJyxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6ICfQs9C+0LTQuNC90YMnLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNyQ3lybDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBzaVN3YXRpIFtzc11cbi8vISBhdXRob3IgOiBOaWNvbGFpIERhdmllczxtYWlsQG5pY29sYWkuaW8+IDogaHR0cHM6Ly9naXRodWIuY29tL25pY29sYWlkYXZpZXNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NzJywge1xuICAgICAgICBtb250aHM6IFwiQmhpbWJpZHZ3YW5lX0luZGxvdmFuYV9JbmRsb3YnbGVua2h1bHVfTWFiYXNhX0lua2h3ZWtod2V0aV9JbmhsYWJhX0tob2x3YW5lX0luZ2NpX0lueW9uaV9JbXBoYWxhX0x3ZXRpX0luZ29uZ29uaVwiLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnQmhpX0luYV9JbnVfTWFiX0lua19JbmhfS2hvX0lnY19JbnlfSW1wX0x3ZV9JZ28nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnTGlzb250Zm9fVW1zb21idWx1a29fTGVzaWJpbGlfTGVzaXRzYXRmdV9MZXNpbmVfTGVzaWhsYW51X1VtZ2NpYmVsbycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0xpc19VbWJfTHNiX0xlc19Mc2lfTHNoX1VtZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdMaV9Vc19MYl9MdF9Mc19MaF9VZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tOYW11aGxhIG5nYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tLdXNhc2EgbmdhXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW25nYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJdG9sbyBuZ2FdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbbGVsaXBoZWxpbGVdIFtuZ2FdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnbmdhICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICd3ZW50ZWthIG5nYSAlcycsXG4gICAgICAgICAgICBzOiAnZW1penV6d2FuYSBsb21jYW5lJyxcbiAgICAgICAgICAgIHNzOiAnJWQgbXp1endhbmEnLFxuICAgICAgICAgICAgbTogJ3VtenV6dScsXG4gICAgICAgICAgICBtbTogJyVkIGVtaXp1enUnLFxuICAgICAgICAgICAgaDogJ2xpaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGVtYWhvcmEnLFxuICAgICAgICAgICAgZDogJ2xpbGFuZ2EnLFxuICAgICAgICAgICAgZGQ6ICclZCBlbWFsYW5nYScsXG4gICAgICAgICAgICBNOiAnaW55YW5nYScsXG4gICAgICAgICAgICBNTTogJyVkIHRpbnlhbmdhJyxcbiAgICAgICAgICAgIHk6ICd1bW55YWthJyxcbiAgICAgICAgICAgIHl5OiAnJWQgaW1pbnlha2EnLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZWt1c2VuaXxlbWluaXxlbnRzYW1iYW1hfGVidXN1a3UvLFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZWt1c2VuaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VtaW5pJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZW50c2FtYmFtYSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZWJ1c3VrdSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ2VrdXNlbmknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnZW1pbmknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ2VudHNhbWJhbWEnIHx8IG1lcmlkaWVtID09PSAnZWJ1c3VrdScpIHtcbiAgICAgICAgICAgICAgICBpZiAoaG91ciA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbDogJyVkJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFN3ZWRpc2ggW3N2XVxuLy8hIGF1dGhvciA6IEplbnMgQWxtIDogaHR0cHM6Ly9naXRodWIuY29tL3VsbXVzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3YgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzdicsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyaV9mZWJydWFyaV9tYXJzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0aV9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdzw7ZuZGFnX23DpW5kYWdfdGlzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7ZyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc8O2bl9tw6VuX3Rpc19vbnNfdG9yX2ZyZV9sw7ZyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3PDtl9tw6VfdGlfb25fdG9fZnJfbMO2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbDogJ0QgTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCBEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSWRhZ10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tJbW9yZ29uXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0lnw6VyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1tQw6VdIGRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbSV0gZGRkZFtzXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ29tICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdmw7ZyICVzIHNlZGFuJyxcbiAgICAgICAgICAgIHM6ICduw6VncmEgc2VrdW5kZXInLFxuICAgICAgICAgICAgc3M6ICclZCBzZWt1bmRlcicsXG4gICAgICAgICAgICBtOiAnZW4gbWludXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVyJyxcbiAgICAgICAgICAgIGg6ICdlbiB0aW1tZScsXG4gICAgICAgICAgICBoaDogJyVkIHRpbW1hcicsXG4gICAgICAgICAgICBkOiAnZW4gZGFnJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGFnYXInLFxuICAgICAgICAgICAgTTogJ2VuIG3DpW5hZCcsXG4gICAgICAgICAgICBNTTogJyVkIG3DpW5hZGVyJyxcbiAgICAgICAgICAgIHk6ICdldHQgw6VyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgw6VyJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KFxcOmV8XFw6YSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICc6ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnOmEnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJzphJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICc6ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJzplJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzdjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTd2FoaWxpIFtzd11cbi8vISBhdXRob3IgOiBGYWhhZCBLYXNzaW0gOiBodHRwczovL2dpdGh1Yi5jb20vZmFkc2VsXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3cgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzdycsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyaV9GZWJydWFyaV9NYWNoaV9BcHJpbGlfTWVpX0p1bmlfSnVsYWlfQWdvc3RpX1NlcHRlbWJhX09rdG9iYV9Ob3ZlbWJhX0Rlc2VtYmEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYWNfQXByX01laV9KdW5fSnVsX0Fnb19TZXBfT2t0X05vdl9EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnSnVtYXBpbGlfSnVtYXRhdHVfSnVtYW5uZV9KdW1hdGFub19BbGhhbWlzaV9JanVtYWFfSnVtYW1vc2knLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdKcGxfSnRhdF9Kbm5lX0p0YW5fQWxoX0lqbV9KbW9zJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0oyX0ozX0o0X0o1X0FsX0lqX0oxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2hoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tsZW8gc2FhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2tlc2hvIHNhYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdbd2lraSBpamF5b10gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tqYW5hXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1t3aWtpIGlsaXlvcGl0YV0gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBiYWFkYXllJyxcbiAgICAgICAgICAgIHBhc3Q6ICd0b2tlYSAlcycsXG4gICAgICAgICAgICBzOiAnaGl2aSBwdW5kZScsXG4gICAgICAgICAgICBzczogJ3Nla3VuZGUgJWQnLFxuICAgICAgICAgICAgbTogJ2Rha2lrYSBtb2phJyxcbiAgICAgICAgICAgIG1tOiAnZGFraWthICVkJyxcbiAgICAgICAgICAgIGg6ICdzYWEgbGltb2phJyxcbiAgICAgICAgICAgIGhoOiAnbWFzYWEgJWQnLFxuICAgICAgICAgICAgZDogJ3Npa3UgbW9qYScsXG4gICAgICAgICAgICBkZDogJ3Npa3UgJWQnLFxuICAgICAgICAgICAgTTogJ213ZXppIG1tb2phJyxcbiAgICAgICAgICAgIE1NOiAnbWllemkgJWQnLFxuICAgICAgICAgICAgeTogJ213YWthIG1tb2phJyxcbiAgICAgICAgICAgIHl5OiAnbWlha2EgJWQnLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3c7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVGFtaWwgW3RhXVxuLy8hIGF1dGhvciA6IEFyanVua3VtYXIgS3Jpc2huYW1vb3J0aHkgOiBodHRwczovL2dpdGh1Yi5jb20vdGsxMjA0MDRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAnMSc6ICfgr6cnLFxuICAgICAgICAgICAgJzInOiAn4K+oJyxcbiAgICAgICAgICAgICczJzogJ+CvqScsXG4gICAgICAgICAgICAnNCc6ICfgr6onLFxuICAgICAgICAgICAgJzUnOiAn4K+rJyxcbiAgICAgICAgICAgICc2JzogJ+CvrCcsXG4gICAgICAgICAgICAnNyc6ICfgr60nLFxuICAgICAgICAgICAgJzgnOiAn4K+uJyxcbiAgICAgICAgICAgICc5JzogJ+CvrycsXG4gICAgICAgICAgICAnMCc6ICfgr6YnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4K+nJzogJzEnLFxuICAgICAgICAgICAgJ+CvqCc6ICcyJyxcbiAgICAgICAgICAgICfgr6knOiAnMycsXG4gICAgICAgICAgICAn4K+qJzogJzQnLFxuICAgICAgICAgICAgJ+Cvqyc6ICc1JyxcbiAgICAgICAgICAgICfgr6wnOiAnNicsXG4gICAgICAgICAgICAn4K+tJzogJzcnLFxuICAgICAgICAgICAgJ+Cvric6ICc4JyxcbiAgICAgICAgICAgICfgr68nOiAnOScsXG4gICAgICAgICAgICAn4K+mJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIHRhID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGEnLCB7XG4gICAgICAgIG1vbnRoczogJ+CunOCuqeCuteCusOCuv1/grqrgrr/grqrgr43grrDgrrXgrrDgrr9f4K6u4K6+4K6w4K+N4K6a4K+NX+Cuj+CuquCvjeCusOCusuCvjV/grq7gr4df4K6c4K+C4K6p4K+NX+CunOCvguCusuCviF/grobgrpXgrrjgr43grp/gr41f4K6a4K+G4K6q4K+N4K6f4K+G4K6u4K+N4K6q4K6w4K+NX+CuheCuleCvjeCun+Cvh+CuvuCuquCusOCvjV/grqjgrrXgrq7gr43grqrgrrDgr41f4K6f4K6/4K6a4K6u4K+N4K6q4K6w4K+NJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ+CunOCuqeCuteCusOCuv1/grqrgrr/grqrgr43grrDgrrXgrrDgrr9f4K6u4K6+4K6w4K+N4K6a4K+NX+Cuj+CuquCvjeCusOCusuCvjV/grq7gr4df4K6c4K+C4K6p4K+NX+CunOCvguCusuCviF/grobgrpXgrrjgr43grp/gr41f4K6a4K+G4K6q4K+N4K6f4K+G4K6u4K+N4K6q4K6w4K+NX+CuheCuleCvjeCun+Cvh+CuvuCuquCusOCvjV/grqjgrrXgrq7gr43grqrgrrDgr41f4K6f4K6/4K6a4K6u4K+N4K6q4K6w4K+NJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+CunuCuvuCur+Cuv+CuseCvjeCuseCvgeCuleCvjeCuleCuv+CutOCuruCviF/grqTgrr/grpngr43grpXgrp/gr43grpXgrr/grrTgrq7gr4hf4K6a4K+G4K614K+N4K614K6+4K6v4K+N4K6V4K6/4K604K6u4K+IX+CuquCvgeCupOCuqeCvjeCuleCuv+CutOCuruCviF/grrXgrr/grq/grr7grrTgrpXgr43grpXgrr/grrTgrq7gr4hf4K614K+G4K6z4K+N4K6z4K6/4K6V4K+N4K6V4K6/4K604K6u4K+IX+CumuCuqeCuv+CuleCvjeCuleCuv+CutOCuruCviCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+CunuCuvuCur+Cuv+CuseCvgV/grqTgrr/grpngr43grpXgrrPgr41f4K6a4K+G4K614K+N4K614K6+4K6v4K+NX+CuquCvgeCupOCuqeCvjV/grrXgrr/grq/grr7grrTgrqngr41f4K614K+G4K6z4K+N4K6z4K6/X+CumuCuqeCuvycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgrp7grr5f4K6k4K6/X+CumuCvhl/grqrgr4Ff4K614K6/X+CuteCvhl/grponLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgrofgrqngr43grrHgr4FdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4K6o4K6+4K6z4K+IXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4K6o4K+H4K6x4K+N4K6x4K+BXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgrpXgrp/grqjgr43grqQg4K614K6+4K6w4K6u4K+NXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOCuh+CusuCvjScsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4K6u4K+B4K6p4K+NJyxcbiAgICAgICAgICAgIHM6ICfgrpLgrrDgr4Eg4K6a4K6/4K6yIOCuteCuv+CuqOCuvuCun+Cuv+CuleCus+CvjScsXG4gICAgICAgICAgICBzczogJyVkIOCuteCuv+CuqOCuvuCun+Cuv+CuleCus+CvjScsXG4gICAgICAgICAgICBtOiAn4K6S4K6w4K+BIOCuqOCuv+CuruCuv+Cun+CuruCvjScsXG4gICAgICAgICAgICBtbTogJyVkIOCuqOCuv+CuruCuv+Cun+CumeCvjeCuleCus+CvjScsXG4gICAgICAgICAgICBoOiAn4K6S4K6w4K+BIOCuruCuo+CuvyDgrqjgr4fgrrDgrq7gr40nLFxuICAgICAgICAgICAgaGg6ICclZCDgrq7grqPgrr8g4K6o4K+H4K6w4K6u4K+NJyxcbiAgICAgICAgICAgIGQ6ICfgrpLgrrDgr4Eg4K6o4K6+4K6z4K+NJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4K6o4K6+4K6f4K+N4K6V4K6z4K+NJyxcbiAgICAgICAgICAgIE06ICfgrpLgrrDgr4Eg4K6u4K6+4K6k4K6u4K+NJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4K6u4K6+4K6k4K6Z4K+N4K6V4K6z4K+NJyxcbiAgICAgICAgICAgIHk6ICfgrpLgrrDgr4Eg4K614K6w4K+B4K6f4K6u4K+NJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4K6G4K6j4K+N4K6f4K+B4K6V4K6z4K+NJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ94K614K6k4K+BLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfgrrXgrqTgr4EnO1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4K+n4K+o4K+p4K+q4K+r4K+s4K+t4K+u4K+v4K+mXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyByZWZlciBodHRwOi8vdGEud2lraXBlZGlhLm9yZy9zLzFlcjFcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+Cur+CuvuCuruCuruCvjXzgrrXgr4jgrpXgrrHgr4h84K6V4K6+4K6y4K+IfOCuqOCuo+CvjeCuquCuleCusuCvjXzgro7grrHgr43grqrgrr7grp/gr4F84K6u4K6+4K6y4K+ILyxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCur+CuvuCuruCuruCvjSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCA2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K614K+I4K6V4K6x4K+IJzsgLy8g4K614K+I4K6V4K6x4K+IXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCuleCuvuCusuCviCc7IC8vIOCuleCuvuCusuCviFxuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrqjgrqPgr43grqrgrpXgrrLgr40nOyAvLyDgrqjgrqPgr43grqrgrpXgrrLgr41cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6O4K6x4K+N4K6q4K6+4K6f4K+BJzsgLy8g4K6O4K6x4K+N4K6q4K6+4K6f4K+BXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCuruCuvuCusuCviCc7IC8vIOCuruCuvuCusuCviFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrq/grr7grq7grq7gr40nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgrq/grr7grq7grq7gr40nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCAyID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgrrXgr4jgrpXgrrHgr4gnIHx8IG1lcmlkaWVtID09PSAn4K6V4K6+4K6y4K+IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CuqOCuo+CvjeCuquCuleCusuCvjScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0YTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUZWx1Z3UgW3RlXVxuLy8hIGF1dGhvciA6IEtyaXNobmEgQ2hhaXRhbnlhIFRob3RhIDogaHR0cHM6Ly9naXRodWIuY29tL2tjdGhvdGFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0ZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RlJywge1xuICAgICAgICBtb250aHM6ICfgsJzgsKjgsLXgsLDgsL9f4LCr4LC/4LCs4LGN4LCw4LC14LCw4LC/X+CwruCwvuCwsOCxjeCwmuCwv1/gsI/gsKrgsY3gsLDgsL/gsLLgsY1f4LCu4LGHX+CwnOCxguCwqOCxjV/gsJzgsYHgsLLgsYhf4LCG4LCX4LC44LGN4LCf4LGBX+CwuOCxhuCwquCxjeCwn+CxhuCwguCwrOCwsOCxjV/gsIXgsJXgsY3gsJ/gsYvgsKzgsLDgsY1f4LCo4LC14LCC4LCs4LCw4LGNX+CwoeCwv+CwuOCxhuCwguCwrOCwsOCxjScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfgsJzgsKguX+Cwq+Cwv+CwrOCxjeCwsC5f4LCu4LC+4LCw4LGN4LCa4LC/X+Cwj+CwquCxjeCwsOCwvy5f4LCu4LGHX+CwnOCxguCwqOCxjV/gsJzgsYHgsLLgsYhf4LCG4LCXLl/gsLjgsYbgsKrgsY0uX+CwheCwleCxjeCwn+Cxiy5f4LCo4LC1Ll/gsKHgsL/gsLjgsYYuJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ+CwhuCwpuCwv+CwteCwvuCwsOCwgl/gsLjgsYvgsK7gsLXgsL7gsLDgsIJf4LCu4LCC4LCX4LCz4LC14LC+4LCw4LCCX+CwrOCxgeCwp+CwteCwvuCwsOCwgl/gsJfgsYHgsLDgsYHgsLXgsL7gsLDgsIJf4LC24LGB4LCV4LGN4LCw4LC14LC+4LCw4LCCX+CwtuCwqOCwv+CwteCwvuCwsOCwgicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+CwhuCwpuCwv1/gsLjgsYvgsK5f4LCu4LCC4LCX4LCzX+CwrOCxgeCwp1/gsJfgsYHgsLDgsYFf4LC24LGB4LCV4LGN4LCwX+CwtuCwqOCwvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgsIZf4LC44LGLX+CwruCwgl/gsKzgsYFf4LCX4LGBX+CwtuCxgV/gsLYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbScsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4LCo4LGH4LCh4LGBXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CwsOCxh+CwquCxgV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+CwqOCwv+CwqOCxjeCwqF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4LCX4LCkXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOCwsuCxiycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4LCV4LGN4LCw4LC/4LCk4LCCJyxcbiAgICAgICAgICAgIHM6ICfgsJXgsYrgsKjgsY3gsKjgsL8g4LCV4LGN4LC34LCj4LC+4LCy4LGBJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4LC44LGG4LCV4LCo4LGN4LCy4LGBJyxcbiAgICAgICAgICAgIG06ICfgsJLgsJUg4LCo4LC/4LCu4LC/4LC34LCCJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4LCo4LC/4LCu4LC/4LC34LC+4LCy4LGBJyxcbiAgICAgICAgICAgIGg6ICfgsJLgsJUg4LCX4LCC4LCfJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4LCX4LCC4LCf4LCy4LGBJyxcbiAgICAgICAgICAgIGQ6ICfgsJLgsJUg4LCw4LGL4LCc4LGBJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4LCw4LGL4LCc4LGB4LCy4LGBJyxcbiAgICAgICAgICAgIE06ICfgsJLgsJUg4LCo4LGG4LCyJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4LCo4LGG4LCy4LCy4LGBJyxcbiAgICAgICAgICAgIHk6ICfgsJLgsJUg4LC44LCC4LC14LCk4LGN4LC44LCw4LCCJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4LC44LCC4LC14LCk4LGN4LC44LCw4LC+4LCy4LGBJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ94LC1LyxcbiAgICAgICAgb3JkaW5hbDogJyVk4LC1JyxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CwsOCwvuCwpOCxjeCwsOCwv3zgsIngsKbgsK/gsIJ84LCu4LCn4LGN4LCv4LC+4LC54LGN4LCo4LCCfOCwuOCwvuCwr+CwguCwpOCxjeCwsOCwgi8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CwsOCwvuCwpOCxjeCwsOCwvycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CwieCwpuCwr+CwgicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsK7gsKfgsY3gsK/gsL7gsLngsY3gsKjgsIInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CwuOCwvuCwr+CwguCwpOCxjeCwsOCwgicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsLDgsL7gsKTgsY3gsLDgsL8nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CwieCwpuCwr+Cwgic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LCu4LCn4LGN4LCv4LC+4LC54LGN4LCo4LCCJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsLjgsL7gsK/gsILgsKTgsY3gsLDgsIInO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CwsOCwvuCwpOCxjeCwsOCwvyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0ZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUZXR1biBEaWxpIChFYXN0IFRpbW9yKSBbdGV0XVxuLy8hIGF1dGhvciA6IEpvc2h1YSBCcm9va3MgOiBodHRwczovL2dpdGh1Yi5jb20vam9zaGJyb29rc1xuLy8hIGF1dGhvciA6IE9ub3JpbyBEZSBKLiBBZm9uc28gOiBodHRwczovL2dpdGh1Yi5jb20vbWFyb2JvXG4vLyEgYXV0aG9yIDogU29uaWEgU2ltb2VzIDogaHR0cHM6Ly9naXRodWIuY29tL3Nvbmlhc2ltb2VzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdGV0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGV0Jywge1xuICAgICAgICBtb250aHM6ICdKYW5laXJ1X0ZldmVyZWlydV9NYXJzdV9BYnJpbF9NYWl1X0p1w7F1X0p1bGx1X0FndXN0dV9TZXRlbWJydV9PdXR1YnJ1X05vdmVtYnJ1X0RlemVtYnJ1Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZXZfTWFyX0Ficl9NYWlfSnVuX0p1bF9BZ29fU2V0X091dF9Ob3ZfRGV6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ0RvbWluZ3VfU2VndW5kYV9UZXJzYV9LdWFydGFfS2ludGFfU2VzdGFfU2FiYWR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnRG9tX1NlZ19UZXJzX0t1YV9LaW50X1Nlc3RfU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0RvX1NlZ19UZV9LdV9LaV9TZXNfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbT2hpbiBpaGFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQWJhbiBpaGFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbaWhhXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0hvcmlzZWlrIGloYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtzZW1hbmEga290dWtdIFtpaGFdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaWhhICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBsaXViYScsXG4gICAgICAgICAgICBzOiAnc2VndW5kdSBiYWx1bicsXG4gICAgICAgICAgICBzczogJ3NlZ3VuZHUgJWQnLFxuICAgICAgICAgICAgbTogJ21pbnV0dSBpZGEnLFxuICAgICAgICAgICAgbW06ICdtaW51dHUgJWQnLFxuICAgICAgICAgICAgaDogJ29yYXMgaWRhJyxcbiAgICAgICAgICAgIGhoOiAnb3JhcyAlZCcsXG4gICAgICAgICAgICBkOiAnbG9yb24gaWRhJyxcbiAgICAgICAgICAgIGRkOiAnbG9yb24gJWQnLFxuICAgICAgICAgICAgTTogJ2Z1bGFuIGlkYScsXG4gICAgICAgICAgICBNTTogJ2Z1bGFuICVkJyxcbiAgICAgICAgICAgIHk6ICd0aW5hbiBpZGEnLFxuICAgICAgICAgICAgeXk6ICd0aW5hbiAlZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0ZXQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVGFqaWsgW3RnXVxuLy8hIGF1dGhvciA6IE9yaWYgTi4gSnIuIDogaHR0cHM6Ly9naXRodWIuY29tL29yaWYtanJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzdWZmaXhlcyA9IHtcbiAgICAgICAgMDogJy3Rg9C8JyxcbiAgICAgICAgMTogJy3Rg9C8JyxcbiAgICAgICAgMjogJy3RjtC8JyxcbiAgICAgICAgMzogJy3RjtC8JyxcbiAgICAgICAgNDogJy3Rg9C8JyxcbiAgICAgICAgNTogJy3Rg9C8JyxcbiAgICAgICAgNjogJy3Rg9C8JyxcbiAgICAgICAgNzogJy3Rg9C8JyxcbiAgICAgICAgODogJy3Rg9C8JyxcbiAgICAgICAgOTogJy3Rg9C8JyxcbiAgICAgICAgMTA6ICct0YPQvCcsXG4gICAgICAgIDEyOiAnLdGD0LwnLFxuICAgICAgICAxMzogJy3Rg9C8JyxcbiAgICAgICAgMjA6ICct0YPQvCcsXG4gICAgICAgIDMwOiAnLdGO0LwnLFxuICAgICAgICA0MDogJy3Rg9C8JyxcbiAgICAgICAgNTA6ICct0YPQvCcsXG4gICAgICAgIDYwOiAnLdGD0LwnLFxuICAgICAgICA3MDogJy3Rg9C8JyxcbiAgICAgICAgODA6ICct0YPQvCcsXG4gICAgICAgIDkwOiAnLdGD0LwnLFxuICAgICAgICAxMDA6ICct0YPQvCcsXG4gICAgfTtcblxuICAgIHZhciB0ZyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RnJywge1xuICAgICAgICBtb250aHM6ICfRj9C90LLQsNGAX9GE0LXQstGA0LDQu1/QvNCw0YDRgl/QsNC/0YDQtdC7X9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs9GD0YHRgl/RgdC10L3RgtGP0LHRgF/QvtC60YLRj9Cx0YBf0L3QvtGP0LHRgF/QtNC10LrQsNCx0YAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0Y/QvdCyX9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs1/RgdC10L1f0L7QutGCX9C90L7Rj1/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn0Y/QutGI0LDQvdCx0LVf0LTRg9GI0LDQvdCx0LVf0YHQtdGI0LDQvdCx0LVf0YfQvtGA0YjQsNC90LHQtV/Qv9Cw0L3St9GI0LDQvdCx0LVf0rfRg9C80YrQsF/RiNCw0L3QsdC1Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0Y/RiNCxX9C00YjQsV/RgdGI0LFf0YfRiNCxX9C/0YjQsV/St9GD0Lxf0YjQvdCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9GP0Yhf0LTRiF/RgdGIX9GH0Yhf0L/RiF/St9C8X9GI0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0JjQvNGA06/QtyDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9Cf0LDQs9C+0rMg0YHQvtCw0YLQuF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQlNC40YDTr9C3INGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZFvQuF0gW9Kz0LDRhNGC0LDQuCDQvtGP0L3QtNCwINGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZFvQuF0gW9Kz0LDRhNGC0LDQuCDQs9GD0LfQsNGI0YLQsCDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9Cx0LDRitC00LggJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzINC/0LXRiCcsXG4gICAgICAgICAgICBzOiAn0Y/QutGH0LDQvdC0INGB0L7QvdC40Y8nLFxuICAgICAgICAgICAgbTogJ9GP0Log0LTQsNKb0LjSm9CwJyxcbiAgICAgICAgICAgIG1tOiAnJWQg0LTQsNKb0LjSm9CwJyxcbiAgICAgICAgICAgIGg6ICfRj9C6INGB0L7QsNGCJyxcbiAgICAgICAgICAgIGhoOiAnJWQg0YHQvtCw0YInLFxuICAgICAgICAgICAgZDogJ9GP0Log0YDTr9C3JyxcbiAgICAgICAgICAgIGRkOiAnJWQg0YDTr9C3JyxcbiAgICAgICAgICAgIE06ICfRj9C6INC80L7SsycsXG4gICAgICAgICAgICBNTTogJyVkINC80L7SsycsXG4gICAgICAgICAgICB5OiAn0Y/QuiDRgdC+0LsnLFxuICAgICAgICAgICAgeXk6ICclZCDRgdC+0LsnLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv0YjQsNCxfNGB0YPQsdKzfNGA06/Qt3zQsdC10LPQvtKzLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn0YjQsNCxJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn0YHRg9Cx0rMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn0YDTr9C3Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfQsdC10LPQvtKzJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GI0LDQsSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YHRg9Cx0rMnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GA06/Qtyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LHQtdCz0L7Ssyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YjQsNCxJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRg9C8fNGO0LwpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBiID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW251bWJlcl0gfHwgc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxdGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGc7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVGhhaSBbdGhdXG4vLyEgYXV0aG9yIDogS3JpZHNhZGEgVGhhbmFidWxwb25nIDogaHR0cHM6Ly9naXRodWIuY29tL3Npcm5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0aCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RoJywge1xuICAgICAgICBtb250aHM6ICfguKHguIHguKPguLLguITguKFf4LiB4Li44Lih4Lig4Liy4Lie4Lix4LiZ4LiY4LmMX+C4oeC4teC4meC4suC4hOC4oV/guYDguKHguKnguLLguKLguJlf4Lie4Lik4Lip4Lig4Liy4LiE4LihX+C4oeC4tOC4luC4uOC4meC4suC4ouC4mV/guIHguKPguIHguI7guLLguITguKFf4Liq4Li04LiH4Lir4Liy4LiE4LihX+C4geC4seC4meC4ouC4suC4ouC4mV/guJXguLjguKXguLLguITguKFf4Lie4Lik4Lio4LiI4Li04LiB4Liy4Lii4LiZX+C4mOC4seC4meC4p+C4suC4hOC4oScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfguKEu4LiELl/guIEu4LieLl/guKHguLUu4LiELl/guYDguKEu4LiiLl/guJ4u4LiELl/guKHguLQu4LiiLl/guIEu4LiELl/guKou4LiELl/guIEu4LiiLl/guJUu4LiELl/guJ4u4LiiLl/guJgu4LiELicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfguK3guLLguJfguLTguJXguKLguYxf4LiI4Lix4LiZ4LiX4Lij4LmMX+C4reC4seC4h+C4hOC4suC4o1/guJ7guLjguJhf4Lie4Lik4Lir4Lix4Liq4Lia4LiU4Li1X+C4qOC4uOC4geC4o+C5jF/guYDguKrguLLguKPguYwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfguK3guLLguJfguLTguJXguKLguYxf4LiI4Lix4LiZ4LiX4Lij4LmMX+C4reC4seC4h+C4hOC4suC4o1/guJ7guLjguJhf4Lie4Lik4Lir4Lix4LiqX+C4qOC4uOC4geC4o+C5jF/guYDguKrguLLguKPguYwnLnNwbGl0KCdfJyksIC8vIHllcywgdGhyZWUgY2hhcmFjdGVycyBkaWZmZXJlbmNlXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4Lit4LiyLl/guIguX+C4rS5f4LieLl/guJ7guKQuX+C4qC5f4LiqLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSDguYDguKfguKXguLIgSDptbScsXG4gICAgICAgICAgICBMTExMOiAn4Lin4Lix4LiZZGRkZOC4l+C4teC5iCBEIE1NTU0gWVlZWSDguYDguKfguKXguLIgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/guIHguYjguK3guJnguYDguJfguLXguYjguKLguId84Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfguKvguKXguLHguIfguYDguJfguLXguYjguKLguIcnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LiB4LmI4Lit4LiZ4LmA4LiX4Li14LmI4Lii4LiHJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfguKvguKXguLHguIfguYDguJfguLXguYjguKLguIcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vguKfguLHguJnguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+C4nuC4o+C4uOC5iOC4h+C4meC4teC5iSDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZFvguKvguJnguYnguLIg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+C5gOC4oeC4t+C5iOC4reC4p+C4suC4meC4meC4teC5iSDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+C4p+C4seC4mV1kZGRkW+C4l+C4teC5iOC5geC4peC5ieC4pyDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn4Lit4Li14LiBICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+C4l+C4teC5iOC5geC4peC5ieC4pycsXG4gICAgICAgICAgICBzOiAn4LmE4Lih4LmI4LiB4Li14LmI4Lin4Li04LiZ4Liy4LiX4Li1JyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Lin4Li04LiZ4Liy4LiX4Li1JyxcbiAgICAgICAgICAgIG06ICcxIOC4meC4suC4l+C4tScsXG4gICAgICAgICAgICBtbTogJyVkIOC4meC4suC4l+C4tScsXG4gICAgICAgICAgICBoOiAnMSDguIrguLHguYjguKfguYLguKHguIcnLFxuICAgICAgICAgICAgaGg6ICclZCDguIrguLHguYjguKfguYLguKHguIcnLFxuICAgICAgICAgICAgZDogJzEg4Lin4Lix4LiZJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Lin4Lix4LiZJyxcbiAgICAgICAgICAgIE06ICcxIOC5gOC4lOC4t+C4reC4mScsXG4gICAgICAgICAgICBNTTogJyVkIOC5gOC4lOC4t+C4reC4mScsXG4gICAgICAgICAgICB5OiAnMSDguJvguLUnLFxuICAgICAgICAgICAgeXk6ICclZCDguJvguLUnLFxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFR1cmttZW4gW3Rya11cbi8vISBhdXRob3IgOiBBdGFteXJhdCBBYmR5cmFobWFub3YgOiBodHRwczovL2dpdGh1Yi5jb20vYXRhbXlyYXRhYmR5XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDE6IFwiJ2luamlcIixcbiAgICAgICAgNTogXCInaW5qaVwiLFxuICAgICAgICA4OiBcIidpbmppXCIsXG4gICAgICAgIDcwOiBcIidpbmppXCIsXG4gICAgICAgIDgwOiBcIidpbmppXCIsXG4gICAgICAgIDI6IFwiJ25qaVwiLFxuICAgICAgICA3OiBcIiduamlcIixcbiAgICAgICAgMjA6IFwiJ25qaVwiLFxuICAgICAgICA1MDogXCInbmppXCIsXG4gICAgICAgIDM6IFwiJ8O8bmppXCIsXG4gICAgICAgIDQ6IFwiJ8O8bmppXCIsXG4gICAgICAgIDEwMDogXCInw7xuamlcIixcbiAgICAgICAgNjogXCInbmp5XCIsXG4gICAgICAgIDk6IFwiJ3VuanlcIixcbiAgICAgICAgMTA6IFwiJ3VuanlcIixcbiAgICAgICAgMzA6IFwiJ3VuanlcIixcbiAgICAgICAgNjA6IFwiJ3luanlcIixcbiAgICAgICAgOTA6IFwiJ3luanlcIixcbiAgICB9O1xuXG4gICAgdmFyIHRrID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGsnLCB7XG4gICAgICAgIG1vbnRoczogJ8OdYW53YXJfRmV3cmFsX01hcnRfQXByZWxfTWHDvV9Jw711bl9Jw711bF9Bd2d1c3RfU2VudMO9YWJyX09rdMO9YWJyX05vw71hYnJfRGVrYWJyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ8OdYW5fRmV3X01hcl9BcHJfTWHDvV9Jw71uX0nDvWxfQXdnX1Nlbl9Pa3RfTm/DvV9EZWsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnw51la8WfZW5iZV9EdcWfZW5iZV9TacWfZW5iZV/Dh2FyxZ9lbmJlX1BlbsWfZW5iZV9Bbm5hX8WeZW5iZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ8OdZWtfRHXFn19TacWfX8OHYXJfUGVuX0Fubl/FnmVuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ8Oda19ExZ9fU8WfX8OHcl9Qbl9Bbl/Fnm4nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbYnVnw7xuIHNhZ2F0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2VydGlyIHNhZ2F0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1tpbmRpa2ldIGRkZGQgW3NhZ2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2TDvMO9bl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbZ2XDp2VuXSBkZGRkIFtzYWdhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBzb8WIJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDDtsWIJyxcbiAgICAgICAgICAgIHM6ICdiaXJuw6TDp2Ugc2VrdW50JyxcbiAgICAgICAgICAgIG06ICdiaXIgbWludXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dCcsXG4gICAgICAgICAgICBoOiAnYmlyIHNhZ2F0JyxcbiAgICAgICAgICAgIGhoOiAnJWQgc2FnYXQnLFxuICAgICAgICAgICAgZDogJ2JpciBnw7xuJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZ8O8bicsXG4gICAgICAgICAgICBNOiAnYmlyIGHDvScsXG4gICAgICAgICAgICBNTTogJyVkIGHDvScsXG4gICAgICAgICAgICB5OiAnYmlyIMO9eWwnLFxuICAgICAgICAgICAgeXk6ICclZCDDvXlsJyxcbiAgICAgICAgfSxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RvJzpcbiAgICAgICAgICAgICAgICBjYXNlICdERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciB6ZXJvXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgXCIndW5qeVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICBiID0gKG51bWJlciAlIDEwMCkgLSBhLFxuICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdIHx8IHN1ZmZpeGVzW2NdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRrO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFRhZ2Fsb2cgKFBoaWxpcHBpbmVzKSBbdGwtcGhdXG4vLyEgYXV0aG9yIDogRGFuIEhhZ21hbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYWdtYW5kYW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0bFBoID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGwtcGgnLCB7XG4gICAgICAgIG1vbnRoczogJ0VuZXJvX1BlYnJlcm9fTWFyc29fQWJyaWxfTWF5b19IdW55b19IdWx5b19BZ29zdG9fU2V0eWVtYnJlX09rdHVicmVfTm9ieWVtYnJlX0Rpc3llbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdFbmVfUGViX01hcl9BYnJfTWF5X0h1bl9IdWxfQWdvX1NldF9Pa3RfTm9iX0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdMaW5nZ29fTHVuZXNfTWFydGVzX01peWVya3VsZXNfSHV3ZWJlc19CaXllcm5lc19TYWJhZG8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdMaW5fTHVuX01hcl9NaXlfSHV3X0JpeV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnTGlfTHVfTWFfTWlfSHVfQmlfU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnTU0vRC9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnTU1NTSBELCBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ01NTU0gRCwgWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgTU1NTSBERCwgWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnTFQgW25nYXlvbmcgYXJhd10nLFxuICAgICAgICAgICAgbmV4dERheTogJ1tCdWthcyBuZ10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdMVCBbc2Egc3VzdW5vZCBuYV0gZGRkZCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnTFQgW2thaGFwb25dJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnTFQgW25vb25nIG5ha2FyYWFuZ10gZGRkZCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3NhIGxvb2IgbmcgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFuZyBuYWthbGlwYXMnLFxuICAgICAgICAgICAgczogJ2lsYW5nIHNlZ3VuZG8nLFxuICAgICAgICAgICAgc3M6ICclZCBzZWd1bmRvJyxcbiAgICAgICAgICAgIG06ICdpc2FuZyBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG8nLFxuICAgICAgICAgICAgaDogJ2lzYW5nIG9yYXMnLFxuICAgICAgICAgICAgaGg6ICclZCBvcmFzJyxcbiAgICAgICAgICAgIGQ6ICdpc2FuZyBhcmF3JyxcbiAgICAgICAgICAgIGRkOiAnJWQgYXJhdycsXG4gICAgICAgICAgICBNOiAnaXNhbmcgYnV3YW4nLFxuICAgICAgICAgICAgTU06ICclZCBidXdhbicsXG4gICAgICAgICAgICB5OiAnaXNhbmcgdGFvbicsXG4gICAgICAgICAgICB5eTogJyVkIHRhb24nLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGxQaDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBLbGluZ29uIFt0bGhdXG4vLyEgYXV0aG9yIDogRG9taW5pa2EgS3J1ayA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbWFyYW50aHJvc2VcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBudW1iZXJzTm91bnMgPSAncGFnaF93YeKAmV9jaGHigJlfd2VqX2xvU192YWdoX2phdl9Tb2NoX2Nob3JnaF9IdXQnLnNwbGl0KCdfJyk7XG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVGdXR1cmUob3V0cHV0KSB7XG4gICAgICAgIHZhciB0aW1lID0gb3V0cHV0O1xuICAgICAgICB0aW1lID1cbiAgICAgICAgICAgIG91dHB1dC5pbmRleE9mKCdqYWonKSAhPT0gLTFcbiAgICAgICAgICAgICAgICA/IHRpbWUuc2xpY2UoMCwgLTMpICsgJ2xlUydcbiAgICAgICAgICAgICAgICA6IG91dHB1dC5pbmRleE9mKCdqYXInKSAhPT0gLTFcbiAgICAgICAgICAgICAgICA/IHRpbWUuc2xpY2UoMCwgLTMpICsgJ3dhUSdcbiAgICAgICAgICAgICAgICA6IG91dHB1dC5pbmRleE9mKCdESVMnKSAhPT0gLTFcbiAgICAgICAgICAgICAgICA/IHRpbWUuc2xpY2UoMCwgLTMpICsgJ25lbSdcbiAgICAgICAgICAgICAgICA6IHRpbWUgKyAnIHBJcSc7XG4gICAgICAgIHJldHVybiB0aW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZVBhc3Qob3V0cHV0KSB7XG4gICAgICAgIHZhciB0aW1lID0gb3V0cHV0O1xuICAgICAgICB0aW1lID1cbiAgICAgICAgICAgIG91dHB1dC5pbmRleE9mKCdqYWonKSAhPT0gLTFcbiAgICAgICAgICAgICAgICA/IHRpbWUuc2xpY2UoMCwgLTMpICsgJ0h14oCZJ1xuICAgICAgICAgICAgICAgIDogb3V0cHV0LmluZGV4T2YoJ2phcicpICE9PSAtMVxuICAgICAgICAgICAgICAgID8gdGltZS5zbGljZSgwLCAtMykgKyAnd2VuJ1xuICAgICAgICAgICAgICAgIDogb3V0cHV0LmluZGV4T2YoJ0RJUycpICE9PSAtMVxuICAgICAgICAgICAgICAgID8gdGltZS5zbGljZSgwLCAtMykgKyAnYmVuJ1xuICAgICAgICAgICAgICAgIDogdGltZSArICcgcmV0JztcbiAgICAgICAgcmV0dXJuIHRpbWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgbnVtYmVyTm91biA9IG51bWJlckFzTm91bihudW1iZXIpO1xuICAgICAgICBzd2l0Y2ggKHN0cmluZykge1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBsdXAnO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyB0dXAnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyByZXAnO1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBqYWonO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBqYXInO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBESVMnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbnVtYmVyQXNOb3VuKG51bWJlcikge1xuICAgICAgICB2YXIgaHVuZHJlZCA9IE1hdGguZmxvb3IoKG51bWJlciAlIDEwMDApIC8gMTAwKSxcbiAgICAgICAgICAgIHRlbiA9IE1hdGguZmxvb3IoKG51bWJlciAlIDEwMCkgLyAxMCksXG4gICAgICAgICAgICBvbmUgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgIHdvcmQgPSAnJztcbiAgICAgICAgaWYgKGh1bmRyZWQgPiAwKSB7XG4gICAgICAgICAgICB3b3JkICs9IG51bWJlcnNOb3Vuc1todW5kcmVkXSArICd2YXRsaCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRlbiA+IDApIHtcbiAgICAgICAgICAgIHdvcmQgKz0gKHdvcmQgIT09ICcnID8gJyAnIDogJycpICsgbnVtYmVyc05vdW5zW3Rlbl0gKyAnbWFIJztcbiAgICAgICAgfVxuICAgICAgICBpZiAob25lID4gMCkge1xuICAgICAgICAgICAgd29yZCArPSAod29yZCAhPT0gJycgPyAnICcgOiAnJykgKyBudW1iZXJzTm91bnNbb25lXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gd29yZCA9PT0gJycgPyAncGFnaCcgOiB3b3JkO1xuICAgIH1cblxuICAgIHZhciB0bGggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0bGgnLCB7XG4gICAgICAgIG1vbnRoczogJ3RlcmHigJkgamFyIHdh4oCZX3RlcmHigJkgamFyIGNoYeKAmV90ZXJh4oCZIGphciB3ZWpfdGVyYeKAmSBqYXIgbG9TX3RlcmHigJkgamFyIHZhZ2hfdGVyYeKAmSBqYXIgamF2X3RlcmHigJkgamFyIFNvY2hfdGVyYeKAmSBqYXIgY2hvcmdoX3RlcmHigJkgamFyIEh1dF90ZXJh4oCZIGphciB3YeKAmW1hSF90ZXJh4oCZIGphciB3YeKAmW1hSCB3YeKAmV90ZXJh4oCZIGphciB3YeKAmW1hSCBjaGHigJknLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFyIHdh4oCZX2phciBjaGHigJlfamFyIHdlal9qYXIgbG9TX2phciB2YWdoX2phciBqYXZfamFyIFNvY2hfamFyIGNob3JnaF9qYXIgSHV0X2phciB3YeKAmW1hSF9qYXIgd2HigJltYUggd2HigJlfamFyIHdh4oCZbWFIIGNoYeKAmScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2xvam1JdGphal9EYVNqYWpfcG92amFqX2doSXRsaGphal9sb2doamFqX2J1cWphal9naEluamFqJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2xvam1JdGphal9EYVNqYWpfcG92amFqX2doSXRsaGphal9sb2doamFqX2J1cWphal9naEluamFqJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0RhSGphal0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1t3YeKAmWxlU10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdMTEwnLFxuICAgICAgICAgICAgbGFzdERheTogJ1t3YeKAmUh14oCZXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ0xMTCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogdHJhbnNsYXRlRnV0dXJlLFxuICAgICAgICAgICAgcGFzdDogdHJhbnNsYXRlUGFzdCxcbiAgICAgICAgICAgIHM6ICdwdVMgbHVwJyxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiAnd2HigJkgdHVwJyxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiAnd2HigJkgcmVwJyxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiAnd2HigJkgamFqJyxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiAnd2HigJkgamFyJyxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiAnd2HigJkgRElTJyxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGxoO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFR1cmtpc2ggW3RyXVxuLy8hIGF1dGhvcnMgOiBFcmhhbiBHdW5kb2dhbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9lcmhhbmd1bmRvZ2FuLFxuLy8hICAgICAgICAgICBCdXJhayBZacSfaXQgS2F5YTogaHR0cHM6Ly9naXRodWIuY29tL0JZS1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN1ZmZpeGVzID0ge1xuICAgICAgICAxOiBcIidpbmNpXCIsXG4gICAgICAgIDU6IFwiJ2luY2lcIixcbiAgICAgICAgODogXCInaW5jaVwiLFxuICAgICAgICA3MDogXCInaW5jaVwiLFxuICAgICAgICA4MDogXCInaW5jaVwiLFxuICAgICAgICAyOiBcIiduY2lcIixcbiAgICAgICAgNzogXCInbmNpXCIsXG4gICAgICAgIDIwOiBcIiduY2lcIixcbiAgICAgICAgNTA6IFwiJ25jaVwiLFxuICAgICAgICAzOiBcIifDvG5jw7xcIixcbiAgICAgICAgNDogXCInw7xuY8O8XCIsXG4gICAgICAgIDEwMDogXCInw7xuY8O8XCIsXG4gICAgICAgIDY6IFwiJ25jxLFcIixcbiAgICAgICAgOTogXCIndW5jdVwiLFxuICAgICAgICAxMDogXCIndW5jdVwiLFxuICAgICAgICAzMDogXCIndW5jdVwiLFxuICAgICAgICA2MDogXCInxLFuY8SxXCIsXG4gICAgICAgIDkwOiBcIifEsW5jxLFcIixcbiAgICB9O1xuXG4gICAgdmFyIHRyID0gbW9tZW50LmRlZmluZUxvY2FsZSgndHInLCB7XG4gICAgICAgIG1vbnRoczogJ09jYWtfxZ51YmF0X01hcnRfTmlzYW5fTWF5xLFzX0hhemlyYW5fVGVtbXV6X0HEn3VzdG9zX0V5bMO8bF9Fa2ltX0thc8SxbV9BcmFsxLFrJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ09jYV/FnnViX01hcl9OaXNfTWF5X0hhel9UZW1fQcSfdV9FeWxfRWtpX0thc19BcmEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnUGF6YXJfUGF6YXJ0ZXNpX1NhbMSxX8OHYXLFn2FtYmFfUGVyxZ9lbWJlX0N1bWFfQ3VtYXJ0ZXNpJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnUGF6X1B0c19TYWxfw4dhcl9QZXJfQ3VtX0N0cycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdQel9QdF9TYV/Dh2FfUGVfQ3VfQ3QnLnNwbGl0KCdfJyksXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnw7bDticgOiAnw5bDlic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ8O2cycgOiAnw5ZTJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL8O2w7Z8w5bDlnzDtnN8w5ZTLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfDtnMnIHx8IGlucHV0ID09PSAnw5ZTJztcbiAgICAgICAgfSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tidWfDvG4gc2FhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1t5YXLEsW4gc2FhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdbZ2VsZWNla10gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tkw7xuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tnZcOnZW5dIGRkZGQgW3NhYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMgc29ucmEnLFxuICAgICAgICAgICAgcGFzdDogJyVzIMO2bmNlJyxcbiAgICAgICAgICAgIHM6ICdiaXJrYcOnIHNhbml5ZScsXG4gICAgICAgICAgICBzczogJyVkIHNhbml5ZScsXG4gICAgICAgICAgICBtOiAnYmlyIGRha2lrYScsXG4gICAgICAgICAgICBtbTogJyVkIGRha2lrYScsXG4gICAgICAgICAgICBoOiAnYmlyIHNhYXQnLFxuICAgICAgICAgICAgaGg6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIGQ6ICdiaXIgZ8O8bicsXG4gICAgICAgICAgICBkZDogJyVkIGfDvG4nLFxuICAgICAgICAgICAgTTogJ2JpciBheScsXG4gICAgICAgICAgICBNTTogJyVkIGF5JyxcbiAgICAgICAgICAgIHk6ICdiaXIgecSxbCcsXG4gICAgICAgICAgICB5eTogJyVkIHnEsWwnLFxuICAgICAgICB9LFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRG8nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0REJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2UgZm9yIHplcm9cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBcIifEsW5jxLFcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYiA9IChudW1iZXIgJSAxMDApIC0gYSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChzdWZmaXhlc1thXSB8fCBzdWZmaXhlc1tiXSB8fCBzdWZmaXhlc1tjXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0cjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUYWxvc3NhbiBbdHpsXVxuLy8hIGF1dGhvciA6IFJvYmluIHZhbiBkZXIgVmxpZXQgOiBodHRwczovL2dpdGh1Yi5jb20vcm9iaW4wdmFuMGRlcjB2XG4vLyEgYXV0aG9yIDogSXVzdMOsIENhbnVuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICAvLyBBZnRlciB0aGUgeWVhciB0aGVyZSBzaG91bGQgYmUgYSBzbGFzaCBhbmQgdGhlIGFtb3VudCBvZiB5ZWFycyBzaW5jZSBEZWNlbWJlciAyNiwgMTk3OSBpbiBSb21hbiBudW1lcmFscy5cbiAgICAvLyBUaGlzIGlzIGN1cnJlbnRseSB0b28gZGlmZmljdWx0IChtYXliZSBldmVuIGltcG9zc2libGUpIHRvIGFkZC5cbiAgICB2YXIgdHpsID0gbW9tZW50LmRlZmluZUxvY2FsZSgndHpsJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJfRmV2cmFnbGhfTWFyw6dfQXZyw691X01haV9Hw7xuX0p1bGlhX0d1c2NodF9TZXRlbXZhcl9MaXN0b3DDpHRzX05vZW12YXJfWmVjZW12YXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0Zldl9NYXJfQXZyX01haV9Hw7xuX0p1bF9HdXNfU2V0X0xpc19Ob2VfWmVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1PDumxhZGlfTMO6bmXDp2lfTWFpdHppX03DoXJjdXJpX1how7phZGlfVmnDqW5lcsOnaV9Tw6F0dXJpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU8O6bF9Mw7puX01haV9Nw6FyX1how7pfVmnDqV9Tw6F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1PDul9Mw7pfTWFfTcOhX1hoX1ZpX1PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFtkYWxsYXNdIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBbZGFsbGFzXSBZWVlZIEhILm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBbbGldIEQuIE1NTU0gW2RhbGxhc10gWVlZWSBISC5tbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9kXFwnb3xkXFwnYS9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBcImQnb1wiID09PSBpbnB1dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gXCJkJ29cIiA6IFwiRCdPXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gXCJkJ2FcIiA6IFwiRCdBXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW294aGkgw6BdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbZGVtw6Agw6BdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaWVpcmkgw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW3PDvHIgZWxdIGRkZGQgW2xhc3RldSDDoF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdvc3ByZWkgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2phJXMnLFxuICAgICAgICAgICAgczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIHM6IFsndmllbnNhcyBzZWN1bmRzJywgXCInaWVuc2FzIHNlY3VuZHNcIl0sXG4gICAgICAgICAgICBzczogW251bWJlciArICcgc2VjdW5kcycsICcnICsgbnVtYmVyICsgJyBzZWN1bmRzJ10sXG4gICAgICAgICAgICBtOiBbXCInbiBtw611dFwiLCBcIidpZW5zIG3DrXV0XCJdLFxuICAgICAgICAgICAgbW06IFtudW1iZXIgKyAnIG3DrXV0cycsICcnICsgbnVtYmVyICsgJyBtw611dHMnXSxcbiAgICAgICAgICAgIGg6IFtcIiduIMO+b3JhXCIsIFwiJ2llbnNhIMO+b3JhXCJdLFxuICAgICAgICAgICAgaGg6IFtudW1iZXIgKyAnIMO+b3JhcycsICcnICsgbnVtYmVyICsgJyDDvm9yYXMnXSxcbiAgICAgICAgICAgIGQ6IFtcIiduIHppdWFcIiwgXCInaWVuc2Egeml1YVwiXSxcbiAgICAgICAgICAgIGRkOiBbbnVtYmVyICsgJyB6aXVhcycsICcnICsgbnVtYmVyICsgJyB6aXVhcyddLFxuICAgICAgICAgICAgTTogW1wiJ24gbWVzXCIsIFwiJ2llbnMgbWVzXCJdLFxuICAgICAgICAgICAgTU06IFtudW1iZXIgKyAnIG1lc2VuJywgJycgKyBudW1iZXIgKyAnIG1lc2VuJ10sXG4gICAgICAgICAgICB5OiBbXCInbiBhclwiLCBcIidpZW5zIGFyXCJdLFxuICAgICAgICAgICAgeXk6IFtudW1iZXIgKyAnIGFycycsICcnICsgbnVtYmVyICsgJyBhcnMnXSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGlzRnV0dXJlXG4gICAgICAgICAgICA/IGZvcm1hdFtrZXldWzBdXG4gICAgICAgICAgICA6IHdpdGhvdXRTdWZmaXhcbiAgICAgICAgICAgID8gZm9ybWF0W2tleV1bMF1cbiAgICAgICAgICAgIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHR6bDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDZW50cmFsIEF0bGFzIFRhbWF6aWdodCBbdHptXVxuLy8hIGF1dGhvciA6IEFiZGVsIFNhaWQgOiBodHRwczovL2dpdGh1Yi5jb20vYWJkZWxzYWlkXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdHptID0gbW9tZW50LmRlZmluZUxvY2FsZSgndHptJywge1xuICAgICAgICBtb250aHM6ICfitYnitY/itY/itLDitaLitZRf4rSx4rWV4rSw4rWi4rWVX+K1juK0sOK1leK1ml/itYnitLHitZTitYnitZRf4rWO4rSw4rWi4rWi4rWTX+K1ouK1k+K1j+K1ouK1k1/itaLitZPitY3itaLitZPitaNf4rWW4rWT4rWb4rWcX+K1m+K1k+K1nOK0sOK1j+K0seK1ieK1lF/itL3itZ/itZPitLHitZVf4rWP4rWT4rWh4rSw4rWP4rSx4rWJ4rWUX+K0t+K1k+K1iuK1j+K0seK1ieK1lCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfitYnitY/itY/itLDitaLitZRf4rSx4rWV4rSw4rWi4rWVX+K1juK0sOK1leK1ml/itYnitLHitZTitYnitZRf4rWO4rSw4rWi4rWi4rWTX+K1ouK1k+K1j+K1ouK1k1/itaLitZPitY3itaLitZPitaNf4rWW4rWT4rWb4rWcX+K1m+K1k+K1nOK0sOK1j+K0seK1ieK1lF/itL3itZ/itZPitLHitZVf4rWP4rWT4rWh4rSw4rWP4rSx4rWJ4rWUX+K0t+K1k+K1iuK1j+K0seK1ieK1lCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfitLDitZnitLDitY7itLDitZlf4rSw4rWi4rWP4rSw4rWZX+K0sOK1meK1ieK1j+K0sOK1mV/itLDitL3itZTitLDitZlf4rSw4rS94rWh4rSw4rWZX+K0sOK1meK1ieK1juK1oeK0sOK1mV/itLDitZnitYnitLnitaLitLDitZknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfitLDitZnitLDitY7itLDitZlf4rSw4rWi4rWP4rSw4rWZX+K0sOK1meK1ieK1j+K0sOK1mV/itLDitL3itZTitLDitZlf4rSw4rS94rWh4rSw4rWZX+K0sOK1meK1ieK1juK1oeK0sOK1mV/itLDitZnitYnitLnitaLitLDitZknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4rSw4rWZ4rSw4rWO4rSw4rWZX+K0sOK1ouK1j+K0sOK1mV/itLDitZnitYnitY/itLDitZlf4rSw4rS94rWU4rSw4rWZX+K0sOK0veK1oeK0sOK1mV/itLDitZnitYnitY7itaHitLDitZlf4rSw4rWZ4rWJ4rS54rWi4rSw4rWZJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4rSw4rWZ4rS34rWFIOK0tF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vitLDitZnitL3itLAg4rS0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW+K0tF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vitLDitZritLDitY/itZwg4rS0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW+K0tF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfitLfitLDitLfitYUg4rWZIOK1ouK0sOK1jyAlcycsXG4gICAgICAgICAgICBwYXN0OiAn4rWi4rSw4rWPICVzJyxcbiAgICAgICAgICAgIHM6ICfitYnitY7itYnitL0nLFxuICAgICAgICAgICAgc3M6ICclZCDitYnitY7itYnitL0nLFxuICAgICAgICAgICAgbTogJ+K1juK1ieK1j+K1k+K0uicsXG4gICAgICAgICAgICBtbTogJyVkIOK1juK1ieK1j+K1k+K0uicsXG4gICAgICAgICAgICBoOiAn4rWZ4rSw4rWE4rSwJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4rWc4rSw4rWZ4rWZ4rSw4rWE4rWJ4rWPJyxcbiAgICAgICAgICAgIGQ6ICfitLDitZnitZknLFxuICAgICAgICAgICAgZGQ6ICclZCBv4rWZ4rWZ4rSw4rWPJyxcbiAgICAgICAgICAgIE06ICfitLDitaJv4rWT4rWUJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4rWJ4rWi4rWi4rWJ4rWU4rWPJyxcbiAgICAgICAgICAgIHk6ICfitLDitZnitLPitLDitZknLFxuICAgICAgICAgICAgeXk6ICclZCDitYnitZnitLPitLDitZnitY8nLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDEyLCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHR6bTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDZW50cmFsIEF0bGFzIFRhbWF6aWdodCBMYXRpbiBbdHptLWxhdG5dXG4vLyEgYXV0aG9yIDogQWJkZWwgU2FpZCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYmRlbHNhaWRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0em1MYXRuID0gbW9tZW50LmRlZmluZUxvY2FsZSgndHptLWxhdG4nLCB7XG4gICAgICAgIG1vbnRoczogJ2lubmF5cl9icsukYXlyy6RfbWFyy6Rzy6RfaWJyaXJfbWF5eXdfeXdueXdfeXdseXd6X8mjd8WhdF/FoXd0YW5iaXJfa3TLpHdicsukX253d2FuYmlyX2R3am5iaXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnaW5uYXlyX2Jyy6RheXLLpF9tYXLLpHPLpF9pYnJpcl9tYXl5d195d255d195d2x5d3pfyaN3xaF0X8Whd3RhbmJpcl9rdMukd2Jyy6Rfbnd3YW5iaXJfZHdqbmJpcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICdhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNp4biNeWFzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnYXNhbWFzX2F5bmFzX2FzaW5hc19ha3Jhc19ha3dhc19hc2ltd2FzX2FzaeG4jXlhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNp4biNeWFzJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbYXNka2ggZ10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1thc2thIGddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbZ10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1thc3NhbnQgZ10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtnXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2RhZGtoIHMgeWFuICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICd5YW4gJXMnLFxuICAgICAgICAgICAgczogJ2ltaWsnLFxuICAgICAgICAgICAgc3M6ICclZCBpbWlrJyxcbiAgICAgICAgICAgIG06ICdtaW514biNJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludeG4jScsXG4gICAgICAgICAgICBoOiAnc2HJm2EnLFxuICAgICAgICAgICAgaGg6ICclZCB0YXNzYcmbaW4nLFxuICAgICAgICAgICAgZDogJ2FzcycsXG4gICAgICAgICAgICBkZDogJyVkIG9zc2FuJyxcbiAgICAgICAgICAgIE06ICdheW93cicsXG4gICAgICAgICAgICBNTTogJyVkIGl5eWlybicsXG4gICAgICAgICAgICB5OiAnYXNnYXMnLFxuICAgICAgICAgICAgeXk6ICclZCBpc2dhc24nLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDEyLCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHR6bUxhdG47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxhbmd1YWdlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBVeWdodXIgKENoaW5hKSBbdWctY25dXG4vLyEgYXV0aG9yOiBib3lhcSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9ib3lhcVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsYW5ndWFnZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdWdDbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3VnLWNuJywge1xuICAgICAgICBtb250aHM6ICfZitin2Ybbi9in2LFf2YHbkNuL2LHYp9mEX9mF2KfYsdiqX9im2KfZvtix25DZhF/Zhdin2Ypf2KbZidmK24fZhl/YptmJ2Yrbh9mEX9im2Kfbi9i624fYs9iqX9iz25DZhtiq25XYqNmJ2LFf2KbbhtmD2Krbldio2YnYsV/ZhtmI2YrYp9io2YnYsV/Yr9uQ2YPYp9io2YnYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfZitin2Ybbi9in2LFf2YHbkNuL2LHYp9mEX9mF2KfYsdiqX9im2KfZvtix25DZhF/Zhdin2Ypf2KbZidmK24fZhl/YptmJ2Yrbh9mEX9im2Kfbi9i624fYs9iqX9iz25DZhtiq25XYqNmJ2LFf2KbbhtmD2Krbldio2YnYsV/ZhtmI2YrYp9io2YnYsV/Yr9uQ2YPYp9io2YnYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfZituV2YPYtNuV2YbYqNuVX9iv24jYtNuV2YbYqNuVX9iz25XZiti025XZhtio25Vf2obYp9ix2LTbldmG2KjblV/ZvtuV2YrYtNuV2YbYqNuVX9is24jZhduVX9i025XZhtio25UnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfZituVX9iv24hf2LPblV/ahtinX9m+25Vf2KzbiF/YtNuVJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9mK25Vf2K/biF/Ys9uVX9qG2Kdf2b7blV/YrNuIX9i025UnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMOiAnWVlZWS3ZitmJ2YTZiU0t2KbYp9mK2YbZidqtRC3Zg9uI2YbZiScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZLdmK2YnZhNmJTS3Yptin2YrZhtmJ2q1ELdmD24jZhtmJ2IwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGTYjCBZWVlZLdmK2YnZhNmJTS3Yptin2YrZhtmJ2q1ELdmD24jZhtmJ2IwgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2YrbkNix2YnZhSDZg9uQ2obblXzYs9uV2r7bldixfNqG24jYtNiq2YnZhiDYqNuH2LHbh9mGfNqG24jYtHzahtuI2LTYqtmJ2YYg2YPbkNmK2YnZhnzZg9uV2oYvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfZituQ2LHZidmFINmD25DahtuVJyB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn2LPbldq+25XYsScgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ9qG24jYtNiq2YnZhiDYqNuH2LHbh9mGJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn2obbiNi02KrZidmGINmD25DZitmJ2YYnIHx8IG1lcmlkaWVtID09PSAn2YPbldqGJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHZhciBobSA9IGhvdXIgKiAxMDAgKyBtaW51dGU7XG4gICAgICAgICAgICBpZiAoaG0gPCA2MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mK25DYsdmJ2YUg2YPbkNqG25UnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LPbldq+25XYsSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTEzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2obbiNi02KrZidmGINio24fYsduH2YYnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9qG24jYtCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2obbiNi02KrZidmGINmD25DZitmJ2YYnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mD25Xahic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9io24jar9uI2YYg2LPYp9im25XYql0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYptuV2KrblSDYs9in2KbbldiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vZg9uQ2YTbldix2YPZiV0gZGRkZCBb2LPYp9im25XYql0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYqtuG2YbbiNqv24jZhl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb2KbYp9mE2K/ZidmG2YLZiV0gZGRkZCBb2LPYp9im25XYql0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDZg9uQ2YrZidmGJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDYqNuH2LHbh9mGJyxcbiAgICAgICAgICAgIHM6ICfZhtuV2obahtuVINiz25DZg9mI2YbYqicsXG4gICAgICAgICAgICBzczogJyVkINiz25DZg9mI2YbYqicsXG4gICAgICAgICAgICBtOiAn2KjZidixINmF2YnZhtuH2KonLFxuICAgICAgICAgICAgbW06ICclZCDZhdmJ2Ybbh9iqJyxcbiAgICAgICAgICAgIGg6ICfYqNmJ2LEg2LPYp9im25XYqicsXG4gICAgICAgICAgICBoaDogJyVkINiz2KfYptuV2KonLFxuICAgICAgICAgICAgZDogJ9io2YnYsSDZg9uI2YYnLFxuICAgICAgICAgICAgZGQ6ICclZCDZg9uI2YYnLFxuICAgICAgICAgICAgTTogJ9io2YnYsSDYptin2YonLFxuICAgICAgICAgICAgTU06ICclZCDYptin2YonLFxuICAgICAgICAgICAgeTogJ9io2YnYsSDZitmJ2YQnLFxuICAgICAgICAgICAgeXk6ICclZCDZitmJ2YQnLFxuICAgICAgICB9LFxuXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSgt2YPbiNmG2Yl8Ldim2KfZinwt2r7bldm+2KrblSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct2YPbiNmG2YknO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3avtuV2b7YqtuVJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIC8vIEdCL1QgNzQwOC0xOTk044CK5pWw5o2u5YWD5ZKM5Lqk5o2i5qC85byPwrfkv6Hmga/kuqTmjaLCt+aXpeacn+WSjOaXtumXtOihqOekuuazleOAi+S4jklTTyA4NjAxOjE5ODjnrYnmlYhcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB1Z0NuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFVrcmFpbmlhbiBbdWtdXG4vLyEgYXV0aG9yIDogemVtbGFuaW4gOiBodHRwczovL2dpdGh1Yi5jb20vemVtbGFuaW5cbi8vISBBdXRob3IgOiBNZW5lbGlvbiBFbGVuc8O6bGUgOiBodHRwczovL2dpdGh1Yi5jb20vT2lyZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcGx1cmFsKHdvcmQsIG51bSkge1xuICAgICAgICB2YXIgZm9ybXMgPSB3b3JkLnNwbGl0KCdfJyk7XG4gICAgICAgIHJldHVybiBudW0gJSAxMCA9PT0gMSAmJiBudW0gJSAxMDAgIT09IDExXG4gICAgICAgICAgICA/IGZvcm1zWzBdXG4gICAgICAgICAgICA6IG51bSAlIDEwID49IDIgJiYgbnVtICUgMTAgPD0gNCAmJiAobnVtICUgMTAwIDwgMTAgfHwgbnVtICUgMTAwID49IDIwKVxuICAgICAgICAgICAgPyBmb3Jtc1sxXVxuICAgICAgICAgICAgOiBmb3Jtc1syXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgc3M6IHdpdGhvdXRTdWZmaXggPyAn0YHQtdC60YPQvdC00LBf0YHQtdC60YPQvdC00Lhf0YHQtdC60YPQvdC0JyA6ICfRgdC10LrRg9C90LTRg1/RgdC10LrRg9C90LTQuF/RgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbW06IHdpdGhvdXRTdWZmaXggPyAn0YXQstC40LvQuNC90LBf0YXQstC40LvQuNC90Lhf0YXQstC40LvQuNC9JyA6ICfRhdCy0LjQu9C40L3Rg1/RhdCy0LjQu9C40L3QuF/RhdCy0LjQu9C40L0nLFxuICAgICAgICAgICAgaGg6IHdpdGhvdXRTdWZmaXggPyAn0LPQvtC00LjQvdCwX9Cz0L7QtNC40L3QuF/Qs9C+0LTQuNC9JyA6ICfQs9C+0LTQuNC90YNf0LPQvtC00LjQvdC4X9Cz0L7QtNC40L0nLFxuICAgICAgICAgICAgZGQ6ICfQtNC10L3RjF/QtNC90ZZf0LTQvdGW0LInLFxuICAgICAgICAgICAgTU06ICfQvNGW0YHRj9GG0Yxf0LzRltGB0Y/RhtGWX9C80ZbRgdGP0YbRltCyJyxcbiAgICAgICAgICAgIHl5OiAn0YDRltC6X9GA0L7QutC4X9GA0L7QutGW0LInLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoa2V5ID09PSAnbScpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9GF0LLQuNC70LjQvdCwJyA6ICfRhdCy0LjQu9C40L3Rgyc7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaCcpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9Cz0L7QtNC40L3QsCcgOiAn0LPQvtC00LjQvdGDJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyBwbHVyYWwoZm9ybWF0W2tleV0sICtudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdlZWtkYXlzQ2FzZVJlcGxhY2UobSwgZm9ybWF0KSB7XG4gICAgICAgIHZhciB3ZWVrZGF5cyA9IHtcbiAgICAgICAgICAgICAgICBub21pbmF0aXZlOiAn0L3QtdC00ZbQu9GPX9C/0L7QvdC10LTRltC70L7Qul/QstGW0LLRgtC+0YDQvtC6X9GB0LXRgNC10LTQsF/Rh9C10YLQstC10YBf0L/igJnRj9GC0L3QuNGG0Y9f0YHRg9Cx0L7RgtCwJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhY2N1c2F0aXZlOiAn0L3QtdC00ZbQu9GOX9C/0L7QvdC10LTRltC70L7Qul/QstGW0LLRgtC+0YDQvtC6X9GB0LXRgNC10LTRg1/Rh9C10YLQstC10YBf0L/igJnRj9GC0L3QuNGG0Y5f0YHRg9Cx0L7RgtGDJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBnZW5pdGl2ZTogJ9C90LXQtNGW0LvRll/Qv9C+0L3QtdC00ZbQu9C60LBf0LLRltCy0YLQvtGA0LrQsF/RgdC10YDQtdC00Lhf0YfQtdGC0LLQtdGA0LPQsF/Qv+KAmdGP0YLQvdC40YbRll/RgdGD0LHQvtGC0LgnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5vdW5DYXNlO1xuXG4gICAgICAgIGlmIChtID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheXNbJ25vbWluYXRpdmUnXVxuICAgICAgICAgICAgICAgIC5zbGljZSgxLCA3KVxuICAgICAgICAgICAgICAgIC5jb25jYXQod2Vla2RheXNbJ25vbWluYXRpdmUnXS5zbGljZSgwLCAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheXNbJ25vbWluYXRpdmUnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5vdW5DYXNlID0gLyhcXFtb0JLQstCj0YNdXFxdKSA/ZGRkZC8udGVzdChmb3JtYXQpXG4gICAgICAgICAgICA/ICdhY2N1c2F0aXZlJ1xuICAgICAgICAgICAgOiAvXFxbPyg/OtC80LjQvdGD0LvQvtGXfNC90LDRgdGC0YPQv9C90L7Rlyk/ID9cXF0gP2RkZGQvLnRlc3QoZm9ybWF0KVxuICAgICAgICAgICAgPyAnZ2VuaXRpdmUnXG4gICAgICAgICAgICA6ICdub21pbmF0aXZlJztcbiAgICAgICAgcmV0dXJuIHdlZWtkYXlzW25vdW5DYXNlXVttLmRheSgpXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJvY2Vzc0hvdXJzRnVuY3Rpb24oc3RyKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyICsgJ9C+JyArICh0aGlzLmhvdXJzKCkgPT09IDExID8gJ9CxJyA6ICcnKSArICddIExUJztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgdWsgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd1aycsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfRgdGW0YfQvdGPX9C70Y7RgtC+0LPQvl/QsdC10YDQtdC30L3Rj1/QutCy0ZbRgtC90Y9f0YLRgNCw0LLQvdGPX9GH0LXRgNCy0L3Rj1/Qu9C40L/QvdGPX9GB0LXRgNC/0L3Rj1/QstC10YDQtdGB0L3Rj1/QttC+0LLRgtC90Y9f0LvQuNGB0YLQvtC/0LDQtNCwX9Cz0YDRg9C00L3Rjycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ9GB0ZbRh9C10L3RjF/Qu9GO0YLQuNC5X9Cx0LXRgNC10LfQtdC90Yxf0LrQstGW0YLQtdC90Yxf0YLRgNCw0LLQtdC90Yxf0YfQtdGA0LLQtdC90Yxf0LvQuNC/0LXQvdGMX9GB0LXRgNC/0LXQvdGMX9Cy0LXRgNC10YHQtdC90Yxf0LbQvtCy0YLQtdC90Yxf0LvQuNGB0YLQvtC/0LDQtF/Qs9GA0YPQtNC10L3RjCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDogJ9GB0ZbRh1/Qu9GO0YJf0LHQtdGAX9C60LLRltGCX9GC0YDQsNCyX9GH0LXRgNCyX9C70LjQv1/RgdC10YDQv1/QstC10YBf0LbQvtCy0YJf0LvQuNGB0YJf0LPRgNGD0LQnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiB3ZWVrZGF5c0Nhc2VSZXBsYWNlLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0L3QtF/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZINGALicsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSDRgC4sIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSDRgC4sIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0KHRjNC+0LPQvtC00L3RliAnKSxcbiAgICAgICAgICAgIG5leHREYXk6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0JfQsNCy0YLRgNCwICcpLFxuICAgICAgICAgICAgbGFzdERheTogcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQktGH0L7RgNCwICcpLFxuICAgICAgICAgICAgbmV4dFdlZWs6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0KNdIGRkZGQgWycpLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0JzQuNC90YPQu9C+0ZddIGRkZGQgWycpLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQnNC40L3Rg9C70L7Qs9C+XSBkZGRkIFsnKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9C30LAgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzINGC0L7QvNGDJyxcbiAgICAgICAgICAgIHM6ICfQtNC10LrRltC70YzQutCwINGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBzczogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtbTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGg6ICfQs9C+0LTQuNC90YMnLFxuICAgICAgICAgICAgaGg6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBkOiAn0LTQtdC90YwnLFxuICAgICAgICAgICAgZGQ6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNOiAn0LzRltGB0Y/RhtGMJyxcbiAgICAgICAgICAgIE1NOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeTogJ9GA0ZbQuicsXG4gICAgICAgICAgICB5eTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gTS4gRS46IHRob3NlIHR3byBhcmUgdmlydHVhbGx5IHVudXNlZCBidXQgYSB1c2VyIG1pZ2h0IHdhbnQgdG8gaW1wbGVtZW50IHRoZW0gZm9yIGhpcy9oZXIgd2Vic2l0ZSBmb3Igc29tZSByZWFzb25cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9C90L7Rh9GWfNGA0LDQvdC60YN80LTQvdGPfNCy0LXRh9C+0YDQsC8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNC00L3Rj3zQstC10YfQvtGA0LApJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C90L7Rh9GWJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRgNCw0L3QutGDJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQtNC90Y8nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Cy0LXRh9C+0YDQsCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0Ll80LPQvikvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LknO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Qs9C+JztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdWs7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVXJkdSBbdXJdXG4vLyEgYXV0aG9yIDogU2F3b29kIEFsYW0gOiBodHRwczovL2dpdGh1Yi5jb20vaWJuZXNheWVlZFxuLy8hIGF1dGhvciA6IFphY2sgOiBodHRwczovL2dpdGh1Yi5jb20vWmFja1Zpc2lvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRocyA9IFtcbiAgICAgICAgICAgICfYrNmG2YjYsduMJyxcbiAgICAgICAgICAgICfZgdix2YjYsduMJyxcbiAgICAgICAgICAgICfZhdin2LHahicsXG4gICAgICAgICAgICAn2KfZvtix24zZhCcsXG4gICAgICAgICAgICAn2YXYptuMJyxcbiAgICAgICAgICAgICfYrNmI2YYnLFxuICAgICAgICAgICAgJ9is2YjZhNin2KbbjCcsXG4gICAgICAgICAgICAn2Kfar9iz2KonLFxuICAgICAgICAgICAgJ9iz2KrZhdio2LEnLFxuICAgICAgICAgICAgJ9in2qnYqtmI2KjYsScsXG4gICAgICAgICAgICAn2YbZiNmF2KjYsScsXG4gICAgICAgICAgICAn2K/Ys9mF2KjYsScsXG4gICAgICAgIF0sXG4gICAgICAgIGRheXMgPSBbJ9in2KrZiNin2LEnLCAn2b7bjNixJywgJ9mF2Ybar9mEJywgJ9io2K/avicsICfYrNmF2LnYsdin2KonLCAn2KzZhdi524EnLCAn24HZgdiq24EnXTtcblxuICAgIHZhciB1ciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3VyJywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXM6IGRheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6IGRheXMsXG4gICAgICAgIHdlZWtkYXlzTWluOiBkYXlzLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRk2IwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LXYqNitfNi02KfZhS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfYtNin2YUnID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i12KjYrSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ9i02KfZhSc7XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9ii2Kwg2KjZiNmC2KpdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2qnZhCDYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1var9iw2LTYqtuBINix2YjYsiDYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb2q/YsNi02KrbgV0gZGRkZCBb2KjZiNmC2KpdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg2KjYudivJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDZgtio2YQnLFxuICAgICAgICAgICAgczogJ9qG2YbYryDYs9uM2qnZhtqIJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2LPbjNqp2YbaiCcsXG4gICAgICAgICAgICBtOiAn2KfbjNqpINmF2YbZuScsXG4gICAgICAgICAgICBtbTogJyVkINmF2YbZuScsXG4gICAgICAgICAgICBoOiAn2KfbjNqpINqv2r7Zhtm524EnLFxuICAgICAgICAgICAgaGg6ICclZCDar9q+2YbZuduSJyxcbiAgICAgICAgICAgIGQ6ICfYp9uM2qkg2K/ZhicsXG4gICAgICAgICAgICBkZDogJyVkINiv2YYnLFxuICAgICAgICAgICAgTTogJ9in24zaqSDZhdin24EnLFxuICAgICAgICAgICAgTU06ICclZCDZhdin24EnLFxuICAgICAgICAgICAgeTogJ9in24zaqSDYs9in2YQnLFxuICAgICAgICAgICAgeXk6ICclZCDYs9in2YQnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB1cjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBVemJlayBbdXpdXG4vLyEgYXV0aG9yIDogU2FyZG9yIE11bWlub3YgOiBodHRwczovL2dpdGh1Yi5jb20vbXVtaW5vZmZcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB1eiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3V6Jywge1xuICAgICAgICBtb250aHM6ICfRj9C90LLQsNGAX9GE0LXQstGA0LDQu1/QvNCw0YDRgl/QsNC/0YDQtdC7X9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs9GD0YHRgl/RgdC10L3RgtGP0LHRgF/QvtC60YLRj9Cx0YBf0L3QvtGP0LHRgF/QtNC10LrQsNCx0YAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0Y/QvdCyX9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs1/RgdC10L1f0L7QutGCX9C90L7Rj1/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn0K/QutGI0LDQvdCx0LBf0JTRg9GI0LDQvdCx0LBf0KHQtdGI0LDQvdCx0LBf0KfQvtGA0YjQsNC90LHQsF/Qn9Cw0LnRiNCw0L3QsdCwX9CW0YPQvNCwX9Co0LDQvdCx0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQr9C60Yhf0JTRg9GIX9Ch0LXRiF/Qp9C+0YBf0J/QsNC5X9CW0YPQvF/QqNCw0L0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0K/Qul/QlNGDX9Ch0LVf0KfQvl/Qn9CwX9CW0YNf0KjQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnRCBNTU1NIFlZWVksIGRkZGQgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQkdGD0LPRg9C9INGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQrdGA0YLQsNCz0LBdIExUIFvQtNCwXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9C60YPQvdC4INGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQmtC10YfQsCDRgdC+0LDRgl0gTFQgW9C00LBdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9Cj0YLQs9Cw0L1dIGRkZGQgW9C60YPQvdC4INGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfQr9C60LjQvSAlcyDQuNGH0LjQtNCwJyxcbiAgICAgICAgICAgIHBhc3Q6ICfQkdC40YAg0L3QtdGH0LAgJXMg0L7Qu9C00LjQvScsXG4gICAgICAgICAgICBzOiAn0YTRg9GA0YHQsNGCJyxcbiAgICAgICAgICAgIHNzOiAnJWQg0YTRg9GA0YHQsNGCJyxcbiAgICAgICAgICAgIG06ICfQsdC40YAg0LTQsNC60LjQutCwJyxcbiAgICAgICAgICAgIG1tOiAnJWQg0LTQsNC60LjQutCwJyxcbiAgICAgICAgICAgIGg6ICfQsdC40YAg0YHQvtCw0YInLFxuICAgICAgICAgICAgaGg6ICclZCDRgdC+0LDRgicsXG4gICAgICAgICAgICBkOiAn0LHQuNGAINC60YPQvScsXG4gICAgICAgICAgICBkZDogJyVkINC60YPQvScsXG4gICAgICAgICAgICBNOiAn0LHQuNGAINC+0LknLFxuICAgICAgICAgICAgTU06ICclZCDQvtC5JyxcbiAgICAgICAgICAgIHk6ICfQsdC40YAg0LnQuNC7JyxcbiAgICAgICAgICAgIHl5OiAnJWQg0LnQuNC7JyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHV6O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFV6YmVrIExhdGluIFt1ei1sYXRuXVxuLy8hIGF1dGhvciA6IFJhc3VsYmVrIE1pcnpheWV2IDogZ2l0aHViLmNvbS9SYXN1bGJlZWVrXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdXpMYXRuID0gbW9tZW50LmRlZmluZUxvY2FsZSgndXotbGF0bicsIHtcbiAgICAgICAgbW9udGhzOiAnWWFudmFyX0ZldnJhbF9NYXJ0X0FwcmVsX01heV9JeXVuX0l5dWxfQXZndXN0X1NlbnRhYnJfT2t0YWJyX05veWFicl9EZWthYnInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnWWFuX0Zldl9NYXJfQXByX01heV9JeXVuX0l5dWxfQXZnX1Nlbl9Pa3RfTm95X0Rlaycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdZYWtzaGFuYmFfRHVzaGFuYmFfU2VzaGFuYmFfQ2hvcnNoYW5iYV9QYXlzaGFuYmFfSnVtYV9TaGFuYmEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdZYWtfRHVzaF9TZXNoX0Nob3JfUGF5X0p1bV9TaGFuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1lhX0R1X1NlX0Nob19QYV9KdV9TaGEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ0QgTU1NTSBZWVlZLCBkZGRkIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbQnVndW4gc29hdF0gTFQgW2RhXScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0VydGFnYV0gTFQgW2RhXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2t1bmkgc29hdF0gTFQgW2RhXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0tlY2hhIHNvYXRdIExUIFtkYV0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6IFwiW08ndGdhbl0gZGRkZCBba3VuaSBzb2F0XSBMVCBbZGFdXCIsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ1lhcWluICVzIGljaGlkYScsXG4gICAgICAgICAgICBwYXN0OiAnQmlyIG5lY2hhICVzIG9sZGluJyxcbiAgICAgICAgICAgIHM6ICdzb25peWEnLFxuICAgICAgICAgICAgc3M6ICclZCBzb25peWEnLFxuICAgICAgICAgICAgbTogJ2JpciBkYXFpcWEnLFxuICAgICAgICAgICAgbW06ICclZCBkYXFpcWEnLFxuICAgICAgICAgICAgaDogJ2JpciBzb2F0JyxcbiAgICAgICAgICAgIGhoOiAnJWQgc29hdCcsXG4gICAgICAgICAgICBkOiAnYmlyIGt1bicsXG4gICAgICAgICAgICBkZDogJyVkIGt1bicsXG4gICAgICAgICAgICBNOiAnYmlyIG95JyxcbiAgICAgICAgICAgIE1NOiAnJWQgb3knLFxuICAgICAgICAgICAgeTogJ2JpciB5aWwnLFxuICAgICAgICAgICAgeXk6ICclZCB5aWwnLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXpMYXRuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFZpZXRuYW1lc2UgW3ZpXVxuLy8hIGF1dGhvciA6IEJhbmcgTmd1eWVuIDogaHR0cHM6Ly9naXRodWIuY29tL2Jhbmdua1xuLy8hIGF1dGhvciA6IENoaWVuIEtpcmEgOiBodHRwczovL2dpdGh1Yi5jb20vY2hpZW5raXJhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdmkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd2aScsIHtcbiAgICAgICAgbW9udGhzOiAndGjDoW5nIDFfdGjDoW5nIDJfdGjDoW5nIDNfdGjDoW5nIDRfdGjDoW5nIDVfdGjDoW5nIDZfdGjDoW5nIDdfdGjDoW5nIDhfdGjDoW5nIDlfdGjDoW5nIDEwX3Row6FuZyAxMV90aMOhbmcgMTInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnVGhnIDAxX1RoZyAwMl9UaGcgMDNfVGhnIDA0X1RoZyAwNV9UaGcgMDZfVGhnIDA3X1RoZyAwOF9UaGcgMDlfVGhnIDEwX1RoZyAxMV9UaGcgMTInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnY2jhu6cgbmjhuq10X3Ro4bupIGhhaV90aOG7qSBiYV90aOG7qSB0xrBfdGjhu6kgbsSDbV90aOG7qSBzw6F1X3Ro4bupIGLhuqN5Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnQ05fVDJfVDNfVDRfVDVfVDZfVDcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnQ05fVDJfVDNfVDRfVDVfVDZfVDcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3NhfGNoL2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eY2gkL2kudGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnc2EnIDogJ1NBJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnY2gnIDogJ0NIJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gW27Eg21dIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFtuxINtXSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gW27Eg21dIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbDogJ0REL00vWVlZWScsXG4gICAgICAgICAgICBsbDogJ0QgTU1NIFlZWVknLFxuICAgICAgICAgICAgbGxsOiAnRCBNTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSMO0bSBuYXkgbMO6Y10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tOZ8OgeSBtYWkgbMO6Y10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt0deG6p24gdOG7m2kgbMO6Y10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tIw7RtIHF1YSBsw7pjXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3R14bqnbiB0csaw4bubYyBsw7pjXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIHThu5tpJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyB0csaw4bubYycsXG4gICAgICAgICAgICBzOiAndsOgaSBnacOieScsXG4gICAgICAgICAgICBzczogJyVkIGdpw6J5JyxcbiAgICAgICAgICAgIG06ICdt4buZdCBwaMO6dCcsXG4gICAgICAgICAgICBtbTogJyVkIHBow7p0JyxcbiAgICAgICAgICAgIGg6ICdt4buZdCBnaeG7nScsXG4gICAgICAgICAgICBoaDogJyVkIGdp4budJyxcbiAgICAgICAgICAgIGQ6ICdt4buZdCBuZ8OgeScsXG4gICAgICAgICAgICBkZDogJyVkIG5nw6B5JyxcbiAgICAgICAgICAgIE06ICdt4buZdCB0aMOhbmcnLFxuICAgICAgICAgICAgTU06ICclZCB0aMOhbmcnLFxuICAgICAgICAgICAgeTogJ23hu5l0IG7Eg20nLFxuICAgICAgICAgICAgeXk6ICclZCBuxINtJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZpO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFBzZXVkbyBbeC1wc2V1ZG9dXG4vLyEgYXV0aG9yIDogQW5kcmV3IEhvb2QgOiBodHRwczovL2dpdGh1Yi5jb20vYW5kcmV3aG9vZDEyNVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHhQc2V1ZG8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd4LXBzZXVkbycsIHtcbiAgICAgICAgbW9udGhzOiAnSn7DocOxw7rDoX5yw71fRn7DqWJyw7p+w6Fyw71ffk3DoXJjfmhfw4FwfnLDrWxffk3DocO9X35Kw7rDscOpfl9Kw7psfsO9X8OBw7p+Z8O6c3R+X1PDqXB+dMOpbWJ+w6lyX8OTfmN0w7NifsOpcl/DkX7Ds3bDqW1+YsOpcl9+RMOpY8Opfm1iw6lyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0p+w6HDsV9+RsOpYl9+TcOhcl9+w4Fwcl9+TcOhw71ffkrDusOxX35Kw7psX37DgcO6Z19+U8OpcF9+w5NjdF9+w5HDs3ZffkTDqWMnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnU37DusOxZMOhfsO9X03Ds37DsWTDocO9fl9Uw7rDqX5zZMOhw71+X1fDqWR+w7HDqXNkfsOhw71fVH5ow7pyc35kw6HDvV9+RnLDrWR+w6HDvV9TfsOhdMO6cn5kw6HDvScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N+w7rDsV9+TcOzw7FfflTDusOpX35Xw6lkX35UaMO6X35GcsOtX35Tw6F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N+w7pfTcOzfl9Uw7pfflfDqV9UfmhfRnJ+X1PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1R+w7Nkw6F+w70gw6F0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1R+w7Ntw7N+cnLDs353IMOhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvDoXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbw51+w6lzdH7DqXJkw6F+w70gw6F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tMfsOhc3RdIGRkZGQgW8OhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfDrX7DsSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgw6F+Z8OzJyxcbiAgICAgICAgICAgIHM6ICfDoSB+ZsOpdyB+c8OpY8OzfsOxZHMnLFxuICAgICAgICAgICAgc3M6ICclZCBzfsOpY8Ozw7F+ZHMnLFxuICAgICAgICAgICAgbTogJ8OhIH5tw63DsX7DunTDqScsXG4gICAgICAgICAgICBtbTogJyVkIG1+w63DscO6fnTDqXMnLFxuICAgICAgICAgICAgaDogJ8OhfsOxIGjDs37DunInLFxuICAgICAgICAgICAgaGg6ICclZCBofsOzw7pycycsXG4gICAgICAgICAgICBkOiAnw6EgfmTDocO9JyxcbiAgICAgICAgICAgIGRkOiAnJWQgZH7DocO9cycsXG4gICAgICAgICAgICBNOiAnw6Egfm3Ds8OxfnRoJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbX7Ds8OxdH5ocycsXG4gICAgICAgICAgICB5OiAnw6EgfsO9w6nDoXInLFxuICAgICAgICAgICAgeXk6ICclZCDDvX7DqcOhcnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0odGh8c3R8bmR8cmQpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4geFBzZXVkbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBZb3J1YmEgTmlnZXJpYSBbeW9dXG4vLyEgYXV0aG9yIDogQXRvbGFnYmUgQWJpc295ZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmRlbGEtYmF0b2xhZ2JlXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgeW8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd5bycsIHtcbiAgICAgICAgbW9udGhzOiAnU+G6ucyBcuG6ucyBX0XMgHJlzIBsZcyAX+G6uHLhurnMgG5hzIBfScyAZ2JlzIFfRcyAYmliaV9PzIBrdcyAZHVfQWfhurltb19PzIBndcyBbl9Pd2V3ZV/hu4zMgHdhzIByYcyAX0JlzIFsdcyBX+G7jMyAcOG6ucyAzIAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnU+G6ucyBcl9FzIBybF/hurhybl9JzIBnYl9FzIBiaV9PzIBrdcyAX0Fn4bq5X0/MgGd1zIFfT3dlX+G7jMyAd2HMgF9CZcyBbF/hu4zMgHDhurnMgMyAJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ0HMgGnMgGt1zIFfQWplzIFfScyAc+G6ucyBZ3VuX+G7jGrhu43MgXJ1zIFf4buMauG7jcyBYuG7jV/hurh0acyAX0HMgGJhzIFt4bq5zIF0YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0HMgGnMgGtfQWplzIFfScyAc+G6ucyBX+G7jGpyX+G7jGpiX+G6uHRpzIBfQcyAYmHMgScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdBzIBpzIBfQWpfScyAc1/hu4xyX+G7jGJf4bq4dF9BzIBiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tPzIBuacyAIG5pXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+G7jMyAbGEgbmldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBcImRkZGQgW+G7jHPhurnMgCB0b8yBbidi4buNXSBbbmldIExUXCIsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0HMgG5hIG5pXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW+G7jHPhurnMgCB0b8yBbOG7jcyBXSBbbmldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnbmnMgSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMga+G7jWphzIEnLFxuICAgICAgICAgICAgczogJ2nMgHPhurlqdcyBIGFheWHMgSBkaWUnLFxuICAgICAgICAgICAgc3M6ICdhYXlhzIEgJWQnLFxuICAgICAgICAgICAgbTogJ2nMgHPhurlqdcyBIGthbicsXG4gICAgICAgICAgICBtbTogJ2nMgHPhurlqdcyBICVkJyxcbiAgICAgICAgICAgIGg6ICd3YcyBa2F0aSBrYW4nLFxuICAgICAgICAgICAgaGg6ICd3YcyBa2F0aSAlZCcsXG4gICAgICAgICAgICBkOiAn4buNauG7jcyBIGthbicsXG4gICAgICAgICAgICBkZDogJ+G7jWrhu43MgSAlZCcsXG4gICAgICAgICAgICBNOiAnb3N1zIAga2FuJyxcbiAgICAgICAgICAgIE1NOiAnb3N1zIAgJWQnLFxuICAgICAgICAgICAgeTogJ+G7jWR1zIFuIGthbicsXG4gICAgICAgICAgICB5eTogJ+G7jWR1zIFuICVkJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL+G7jWrhu43MgVxcc1xcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbDogJ+G7jWrhu43MgSAlZCcsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB5bztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDaGluZXNlIChDaGluYSkgW3poLWNuXVxuLy8hIGF1dGhvciA6IHN1dXBpYyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdXVwaWNcbi8vISBhdXRob3IgOiBaZW5vIFplbmcgOiBodHRwczovL2dpdGh1Yi5jb20vemVub3plbmdcbi8vISBhdXRob3IgOiB1dTEwOSA6IGh0dHBzOi8vZ2l0aHViLmNvbS91dTEwOVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHpoQ24gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd6aC1jbicsIHtcbiAgICAgICAgbW9udGhzOiAn5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn5pif5pyf5pelX+aYn+acn+S4gF/mmJ/mnJ/kuoxf5pif5pyf5LiJX+aYn+acn+Wbm1/mmJ/mnJ/kupRf5pif5pyf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn5ZGo5pelX+WRqOS4gF/lkajkuoxf5ZGo5LiJX+WRqOWbm1/lkajkupRf5ZGo5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+aXpV/kuIBf5LqMX+S4iV/lm5tf5LqUX+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgTExMOiAnWVlZWeW5tE3mnIhE5pelQWjngrltbeWIhicsXG4gICAgICAgICAgICBMTExMOiAnWVlZWeW5tE3mnIhE5pelZGRkZEFo54K5bW3liIYnLFxuICAgICAgICAgICAgbDogJ1lZWVkvTS9EJyxcbiAgICAgICAgICAgIGxsOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIGxsbDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/lh4zmmah85pep5LiKfOS4iuWNiHzkuK3ljYh85LiL5Y2IfOaZmuS4ii8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+WHjOaZqCcgfHwgbWVyaWRpZW0gPT09ICfml6nkuIonIHx8IG1lcmlkaWVtID09PSAn5LiK5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4i+WNiCcgfHwgbWVyaWRpZW0gPT09ICfmmZrkuIonKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gJ+S4reWNiCdcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4reWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiL5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfmmZrkuIonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vku4rlpKldTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vmmI7lpKldTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uIChub3cpIHtcbiAgICAgICAgICAgICAgICBpZiAobm93LndlZWsoKSAhPT0gdGhpcy53ZWVrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb5LiLXWRkZExUJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vmnKxdZGRkTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+aYqOWkqV1MVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLndlZWsoKSAhPT0gbm93LndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vkuIpdZGRkTFQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnW+acrF1kZGRMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSjml6V85pyIfOWRqCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfml6UnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aciCc7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5ZGoJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz5ZCOJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+WJjScsXG4gICAgICAgICAgICBzOiAn5Yeg56eSJyxcbiAgICAgICAgICAgIHNzOiAnJWQg56eSJyxcbiAgICAgICAgICAgIG06ICcxIOWIhumSnycsXG4gICAgICAgICAgICBtbTogJyVkIOWIhumSnycsXG4gICAgICAgICAgICBoOiAnMSDlsI/ml7YnLFxuICAgICAgICAgICAgaGg6ICclZCDlsI/ml7YnLFxuICAgICAgICAgICAgZDogJzEg5aSpJyxcbiAgICAgICAgICAgIGRkOiAnJWQg5aSpJyxcbiAgICAgICAgICAgIE06ICcxIOS4quaciCcsXG4gICAgICAgICAgICBNTTogJyVkIOS4quaciCcsXG4gICAgICAgICAgICB5OiAnMSDlubQnLFxuICAgICAgICAgICAgeXk6ICclZCDlubQnLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICAvLyBHQi9UIDc0MDgtMTk5NOOAiuaVsOaNruWFg+WSjOS6pOaNouagvOW8j8K35L+h5oGv5Lqk5o2iwrfml6XmnJ/lkozml7bpl7TooajnpLrms5XjgIvkuI5JU08gODYwMToxOTg4562J5pWIXG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhDbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDaGluZXNlIChIb25nIEtvbmcpIFt6aC1oa11cbi8vISBhdXRob3IgOiBCZW4gOiBodHRwczovL2dpdGh1Yi5jb20vYmVuLWxpblxuLy8hIGF1dGhvciA6IENocmlzIExhbSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWhhY2hyaXNcbi8vISBhdXRob3IgOiBLb25zdGFudGluIDogaHR0cHM6Ly9naXRodWIuY29tL3NrZmRcbi8vISBhdXRob3IgOiBBbnRob255IDogaHR0cHM6Ly9naXRodWIuY29tL2FudGhvbnlsYXVcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB6aEhrID0gbW9tZW50LmRlZmluZUxvY2FsZSgnemgtaGsnLCB7XG4gICAgICAgIG1vbnRoczogJ+S4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+aYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+mAseaXpV/pgLHkuIBf6YCx5LqMX+mAseS4iV/pgLHlm5tf6YCx5LqUX+mAseWFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIExMOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgICAgICBsOiAnWVlZWS9NL0QnLFxuICAgICAgICAgICAgbGw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHwgbWVyaWRpZW0gPT09ICfkuIrljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5Lit5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuIvljYgnIHx8IG1lcmlkaWVtID09PSAn5pma5LiKJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA9PT0gMTIwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Lit5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxODAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIvljYgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aZmuS4iic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+S7iuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+aYjuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vkuItdZGRkZExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb5pio5aSpXUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+S4il1kZGRkTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOaXpXzmnIh86YCxKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pyIJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfpgLEnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPlvownLFxuICAgICAgICAgICAgcGFzdDogJyVz5YmNJyxcbiAgICAgICAgICAgIHM6ICflub7np5InLFxuICAgICAgICAgICAgc3M6ICclZCDnp5InLFxuICAgICAgICAgICAgbTogJzEg5YiG6ZCYJyxcbiAgICAgICAgICAgIG1tOiAnJWQg5YiG6ZCYJyxcbiAgICAgICAgICAgIGg6ICcxIOWwj+aZgicsXG4gICAgICAgICAgICBoaDogJyVkIOWwj+aZgicsXG4gICAgICAgICAgICBkOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQ6ICclZCDlpKknLFxuICAgICAgICAgICAgTTogJzEg5YCL5pyIJyxcbiAgICAgICAgICAgIE1NOiAnJWQg5YCL5pyIJyxcbiAgICAgICAgICAgIHk6ICcxIOW5tCcsXG4gICAgICAgICAgICB5eTogJyVkIOW5tCcsXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhIaztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDaGluZXNlIChNYWNhdSkgW3poLW1vXVxuLy8hIGF1dGhvciA6IEJlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZW4tbGluXG4vLyEgYXV0aG9yIDogQ2hyaXMgTGFtIDogaHR0cHM6Ly9naXRodWIuY29tL2hlaGFjaHJpc1xuLy8hIGF1dGhvciA6IFRhbiBZdWFuaG9uZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9sZTB0YW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB6aE1vID0gbW9tZW50LmRlZmluZUxvY2FsZSgnemgtbW8nLCB7XG4gICAgICAgIG1vbnRoczogJ+S4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+aYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+mAseaXpV/pgLHkuIBf6YCx5LqMX+mAseS4iV/pgLHlm5tf6YCx5LqUX+mAseWFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgICAgICBsOiAnRC9NL1lZWVknLFxuICAgICAgICAgICAgbGw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHwgbWVyaWRpZW0gPT09ICfkuIrljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5Lit5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuIvljYgnIHx8IG1lcmlkaWVtID09PSAn5pma5LiKJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4reWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiL5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfmmZrkuIonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vku4rlpKldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb5piO5aSpXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vkuItdZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+aYqOWkqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb5LiKXWRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOaXpXzmnIh86YCxKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pyIJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfpgLEnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPlhacnLFxuICAgICAgICAgICAgcGFzdDogJyVz5YmNJyxcbiAgICAgICAgICAgIHM6ICflub7np5InLFxuICAgICAgICAgICAgc3M6ICclZCDnp5InLFxuICAgICAgICAgICAgbTogJzEg5YiG6ZCYJyxcbiAgICAgICAgICAgIG1tOiAnJWQg5YiG6ZCYJyxcbiAgICAgICAgICAgIGg6ICcxIOWwj+aZgicsXG4gICAgICAgICAgICBoaDogJyVkIOWwj+aZgicsXG4gICAgICAgICAgICBkOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQ6ICclZCDlpKknLFxuICAgICAgICAgICAgTTogJzEg5YCL5pyIJyxcbiAgICAgICAgICAgIE1NOiAnJWQg5YCL5pyIJyxcbiAgICAgICAgICAgIHk6ICcxIOW5tCcsXG4gICAgICAgICAgICB5eTogJyVkIOW5tCcsXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhNbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDaGluZXNlIChUYWl3YW4pIFt6aC10d11cbi8vISBhdXRob3IgOiBCZW4gOiBodHRwczovL2dpdGh1Yi5jb20vYmVuLWxpblxuLy8hIGF1dGhvciA6IENocmlzIExhbSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWhhY2hyaXNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB6aFR3ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnemgtdHcnLCB7XG4gICAgICAgIG1vbnRoczogJ+S4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+aYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+mAseaXpV/pgLHkuIBf6YCx5LqMX+mAseS4iV/pgLHlm5tf6YCx5LqUX+mAseWFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIExMOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgICAgICBsOiAnWVlZWS9NL0QnLFxuICAgICAgICAgICAgbGw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHwgbWVyaWRpZW0gPT09ICfkuIrljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5Lit5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuIvljYgnIHx8IG1lcmlkaWVtID09PSAn5pma5LiKJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4reWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiL5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfmmZrkuIonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vku4rlpKldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb5piO5aSpXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vkuItdZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+aYqOWkqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb5LiKXWRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOaXpXzmnIh86YCxKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pyIJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfpgLEnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPlvownLFxuICAgICAgICAgICAgcGFzdDogJyVz5YmNJyxcbiAgICAgICAgICAgIHM6ICflub7np5InLFxuICAgICAgICAgICAgc3M6ICclZCDnp5InLFxuICAgICAgICAgICAgbTogJzEg5YiG6ZCYJyxcbiAgICAgICAgICAgIG1tOiAnJWQg5YiG6ZCYJyxcbiAgICAgICAgICAgIGg6ICcxIOWwj+aZgicsXG4gICAgICAgICAgICBoaDogJyVkIOWwj+aZgicsXG4gICAgICAgICAgICBkOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQ6ICclZCDlpKknLFxuICAgICAgICAgICAgTTogJzEg5YCL5pyIJyxcbiAgICAgICAgICAgIE1NOiAnJWQg5YCL5pyIJyxcbiAgICAgICAgICAgIHk6ICcxIOW5tCcsXG4gICAgICAgICAgICB5eTogJyVkIOW5tCcsXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhUdztcblxufSkpKTtcbiIsImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRoSG9sZXM7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7IiwiZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYXJyMltpXSA9IGFycltpXTtcbiAgfVxuXG4gIHJldHVybiBhcnIyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheUxpa2VUb0FycmF5O1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlUmVzdDtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHtcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlcltcIkBAaXRlcmF0b3JcIl0gIT0gbnVsbCkgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheTtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGdldFNjcm9sbEJhclNpemU7XG52YXIgY2FjaGVkO1xuXG5mdW5jdGlvbiBnZXRTY3JvbGxCYXJTaXplKGZyZXNoKSB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZiAoZnJlc2ggfHwgY2FjaGVkID09PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBpbm5lci5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpbm5lci5zdHlsZS5oZWlnaHQgPSAnMjAwcHgnO1xuICAgIHZhciBvdXRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHZhciBvdXRlclN0eWxlID0gb3V0ZXIuc3R5bGU7XG4gICAgb3V0ZXJTdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgb3V0ZXJTdHlsZS50b3AgPSAwO1xuICAgIG91dGVyU3R5bGUubGVmdCA9IDA7XG4gICAgb3V0ZXJTdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgIG91dGVyU3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgIG91dGVyU3R5bGUud2lkdGggPSAnMjAwcHgnO1xuICAgIG91dGVyU3R5bGUuaGVpZ2h0ID0gJzE1MHB4JztcbiAgICBvdXRlclN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgb3V0ZXIuYXBwZW5kQ2hpbGQoaW5uZXIpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3V0ZXIpO1xuICAgIHZhciB3aWR0aENvbnRhaW5lZCA9IGlubmVyLm9mZnNldFdpZHRoO1xuICAgIG91dGVyLnN0eWxlLm92ZXJmbG93ID0gJ3Njcm9sbCc7XG4gICAgdmFyIHdpZHRoU2Nyb2xsID0gaW5uZXIub2Zmc2V0V2lkdGg7XG5cbiAgICBpZiAod2lkdGhDb250YWluZWQgPT09IHdpZHRoU2Nyb2xsKSB7XG4gICAgICB3aWR0aFNjcm9sbCA9IG91dGVyLmNsaWVudFdpZHRoO1xuICAgIH1cblxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQob3V0ZXIpO1xuICAgIGNhY2hlZCA9IHdpZHRoQ29udGFpbmVkIC0gd2lkdGhTY3JvbGw7XG4gIH1cblxuICByZXR1cm4gY2FjaGVkO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9IZWFkZXJSb3cgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL0hlYWRlclJvd1wiKSk7XG5cbnZhciBfVGFibGVDb250ZXh0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vY29udGV4dC9UYWJsZUNvbnRleHRcIikpO1xuXG5mdW5jdGlvbiBwYXJzZUhlYWRlclJvd3Mocm9vdENvbHVtbnMpIHtcbiAgdmFyIHJvd3MgPSBbXTtcblxuICBmdW5jdGlvbiBmaWxsUm93Q2VsbHMoY29sdW1ucywgY29sSW5kZXgpIHtcbiAgICB2YXIgcm93SW5kZXggPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDA7XG4gICAgLy8gSW5pdCByb3dzXG4gICAgcm93c1tyb3dJbmRleF0gPSByb3dzW3Jvd0luZGV4XSB8fCBbXTtcbiAgICB2YXIgY3VycmVudENvbEluZGV4ID0gY29sSW5kZXg7XG4gICAgdmFyIGNvbFNwYW5zID0gY29sdW1ucy5maWx0ZXIoQm9vbGVhbikubWFwKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgIHZhciBjZWxsID0ge1xuICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgIGNsYXNzTmFtZTogY29sdW1uLmNsYXNzTmFtZSB8fCAnJyxcbiAgICAgICAgY2hpbGRyZW46IGNvbHVtbi50aXRsZSxcbiAgICAgICAgY29sdW1uOiBjb2x1bW4sXG4gICAgICAgIGNvbFN0YXJ0OiBjdXJyZW50Q29sSW5kZXhcbiAgICAgIH07XG4gICAgICB2YXIgY29sU3BhbiA9IDE7XG4gICAgICB2YXIgc3ViQ29sdW1ucyA9IGNvbHVtbi5jaGlsZHJlbjtcblxuICAgICAgaWYgKHN1YkNvbHVtbnMgJiYgc3ViQ29sdW1ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbFNwYW4gPSBmaWxsUm93Q2VsbHMoc3ViQ29sdW1ucywgY3VycmVudENvbEluZGV4LCByb3dJbmRleCArIDEpLnJlZHVjZShmdW5jdGlvbiAodG90YWwsIGNvdW50KSB7XG4gICAgICAgICAgcmV0dXJuIHRvdGFsICsgY291bnQ7XG4gICAgICAgIH0sIDApO1xuICAgICAgICBjZWxsLmhhc1N1YkNvbHVtbnMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoJ2NvbFNwYW4nIGluIGNvbHVtbikge1xuICAgICAgICBjb2xTcGFuID0gY29sdW1uLmNvbFNwYW47XG4gICAgICB9XG5cbiAgICAgIGlmICgncm93U3BhbicgaW4gY29sdW1uKSB7XG4gICAgICAgIGNlbGwucm93U3BhbiA9IGNvbHVtbi5yb3dTcGFuO1xuICAgICAgfVxuXG4gICAgICBjZWxsLmNvbFNwYW4gPSBjb2xTcGFuO1xuICAgICAgY2VsbC5jb2xFbmQgPSBjZWxsLmNvbFN0YXJ0ICsgY29sU3BhbiAtIDE7XG4gICAgICByb3dzW3Jvd0luZGV4XS5wdXNoKGNlbGwpO1xuICAgICAgY3VycmVudENvbEluZGV4ICs9IGNvbFNwYW47XG4gICAgICByZXR1cm4gY29sU3BhbjtcbiAgICB9KTtcbiAgICByZXR1cm4gY29sU3BhbnM7XG4gIH0gLy8gR2VuZXJhdGUgYHJvd3NgIGNlbGwgZGF0YVxuXG5cbiAgZmlsbFJvd0NlbGxzKHJvb3RDb2x1bW5zLCAwKTsgLy8gSGFuZGxlIGByb3dTcGFuYFxuXG4gIHZhciByb3dDb3VudCA9IHJvd3MubGVuZ3RoO1xuXG4gIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKHJvd0luZGV4KSB7XG4gICAgcm93c1tyb3dJbmRleF0uZm9yRWFjaChmdW5jdGlvbiAoY2VsbCkge1xuICAgICAgaWYgKCEoJ3Jvd1NwYW4nIGluIGNlbGwpICYmICFjZWxsLmhhc1N1YkNvbHVtbnMpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIGNlbGwucm93U3BhbiA9IHJvd0NvdW50IC0gcm93SW5kZXg7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgZm9yICh2YXIgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IHJvd0NvdW50OyByb3dJbmRleCArPSAxKSB7XG4gICAgX2xvb3Aocm93SW5kZXgpO1xuICB9XG5cbiAgcmV0dXJuIHJvd3M7XG59XG5cbmZ1bmN0aW9uIEhlYWRlcihfcmVmKSB7XG4gIHZhciBzdGlja3lPZmZzZXRzID0gX3JlZi5zdGlja3lPZmZzZXRzLFxuICAgICAgY29sdW1ucyA9IF9yZWYuY29sdW1ucyxcbiAgICAgIGZsYXR0ZW5Db2x1bW5zID0gX3JlZi5mbGF0dGVuQ29sdW1ucyxcbiAgICAgIG9uSGVhZGVyUm93ID0gX3JlZi5vbkhlYWRlclJvdztcblxuICB2YXIgX1JlYWN0JHVzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KF9UYWJsZUNvbnRleHQuZGVmYXVsdCksXG4gICAgICBwcmVmaXhDbHMgPSBfUmVhY3QkdXNlQ29udGV4dC5wcmVmaXhDbHMsXG4gICAgICBnZXRDb21wb25lbnQgPSBfUmVhY3QkdXNlQ29udGV4dC5nZXRDb21wb25lbnQ7XG5cbiAgdmFyIHJvd3MgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gcGFyc2VIZWFkZXJSb3dzKGNvbHVtbnMpO1xuICB9LCBbY29sdW1uc10pO1xuICB2YXIgV3JhcHBlckNvbXBvbmVudCA9IGdldENvbXBvbmVudChbJ2hlYWRlcicsICd3cmFwcGVyJ10sICd0aGVhZCcpO1xuICB2YXIgdHJDb21wb25lbnQgPSBnZXRDb21wb25lbnQoWydoZWFkZXInLCAncm93J10sICd0cicpO1xuICB2YXIgdGhDb21wb25lbnQgPSBnZXRDb21wb25lbnQoWydoZWFkZXInLCAnY2VsbCddLCAndGgnKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFdyYXBwZXJDb21wb25lbnQsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdGhlYWRcIilcbiAgfSwgcm93cy5tYXAoZnVuY3Rpb24gKHJvdywgcm93SW5kZXgpIHtcbiAgICB2YXIgcm93Tm9kZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9IZWFkZXJSb3cuZGVmYXVsdCwge1xuICAgICAga2V5OiByb3dJbmRleCxcbiAgICAgIGZsYXR0ZW5Db2x1bW5zOiBmbGF0dGVuQ29sdW1ucyxcbiAgICAgIGNlbGxzOiByb3csXG4gICAgICBzdGlja3lPZmZzZXRzOiBzdGlja3lPZmZzZXRzLFxuICAgICAgcm93Q29tcG9uZW50OiB0ckNvbXBvbmVudCxcbiAgICAgIGNlbGxDb21wb25lbnQ6IHRoQ29tcG9uZW50LFxuICAgICAgb25IZWFkZXJSb3c6IG9uSGVhZGVyUm93LFxuICAgICAgaW5kZXg6IHJvd0luZGV4XG4gICAgfSk7XG4gICAgcmV0dXJuIHJvd05vZGU7XG4gIH0pKTtcbn1cblxudmFyIF9kZWZhdWx0ID0gSGVhZGVyO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmdldENlbGxGaXhlZEluZm8gPSBnZXRDZWxsRml4ZWRJbmZvO1xuXG5mdW5jdGlvbiBnZXRDZWxsRml4ZWRJbmZvKGNvbFN0YXJ0LCBjb2xFbmQsIGNvbHVtbnMsIHN0aWNreU9mZnNldHMsIGRpcmVjdGlvbikge1xuICB2YXIgc3RhcnRDb2x1bW4gPSBjb2x1bW5zW2NvbFN0YXJ0XSB8fCB7fTtcbiAgdmFyIGVuZENvbHVtbiA9IGNvbHVtbnNbY29sRW5kXSB8fCB7fTtcbiAgdmFyIGZpeExlZnQ7XG4gIHZhciBmaXhSaWdodDtcblxuICBpZiAoc3RhcnRDb2x1bW4uZml4ZWQgPT09ICdsZWZ0Jykge1xuICAgIGZpeExlZnQgPSBzdGlja3lPZmZzZXRzLmxlZnRbY29sU3RhcnRdO1xuICB9IGVsc2UgaWYgKGVuZENvbHVtbi5maXhlZCA9PT0gJ3JpZ2h0Jykge1xuICAgIGZpeFJpZ2h0ID0gc3RpY2t5T2Zmc2V0cy5yaWdodFtjb2xFbmRdO1xuICB9XG5cbiAgdmFyIGxhc3RGaXhMZWZ0ID0gZmFsc2U7XG4gIHZhciBmaXJzdEZpeFJpZ2h0ID0gZmFsc2U7XG4gIHZhciBsYXN0Rml4UmlnaHQgPSBmYWxzZTtcbiAgdmFyIGZpcnN0Rml4TGVmdCA9IGZhbHNlO1xuICB2YXIgbmV4dENvbHVtbiA9IGNvbHVtbnNbY29sRW5kICsgMV07XG4gIHZhciBwcmV2Q29sdW1uID0gY29sdW1uc1tjb2xTdGFydCAtIDFdO1xuXG4gIGlmIChkaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgaWYgKGZpeExlZnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIHByZXZGaXhMZWZ0ID0gcHJldkNvbHVtbiAmJiBwcmV2Q29sdW1uLmZpeGVkID09PSAnbGVmdCc7XG4gICAgICBmaXJzdEZpeExlZnQgPSAhcHJldkZpeExlZnQ7XG4gICAgfSBlbHNlIGlmIChmaXhSaWdodCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgbmV4dEZpeFJpZ2h0ID0gbmV4dENvbHVtbiAmJiBuZXh0Q29sdW1uLmZpeGVkID09PSAncmlnaHQnO1xuICAgICAgbGFzdEZpeFJpZ2h0ID0gIW5leHRGaXhSaWdodDtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZml4TGVmdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIG5leHRGaXhMZWZ0ID0gbmV4dENvbHVtbiAmJiBuZXh0Q29sdW1uLmZpeGVkID09PSAnbGVmdCc7XG4gICAgbGFzdEZpeExlZnQgPSAhbmV4dEZpeExlZnQ7XG4gIH0gZWxzZSBpZiAoZml4UmlnaHQgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBwcmV2Rml4UmlnaHQgPSBwcmV2Q29sdW1uICYmIHByZXZDb2x1bW4uZml4ZWQgPT09ICdyaWdodCc7XG4gICAgZmlyc3RGaXhSaWdodCA9ICFwcmV2Rml4UmlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZpeExlZnQ6IGZpeExlZnQsXG4gICAgZml4UmlnaHQ6IGZpeFJpZ2h0LFxuICAgIGxhc3RGaXhMZWZ0OiBsYXN0Rml4TGVmdCxcbiAgICBmaXJzdEZpeFJpZ2h0OiBmaXJzdEZpeFJpZ2h0LFxuICAgIGxhc3RGaXhSaWdodDogbGFzdEZpeFJpZ2h0LFxuICAgIGZpcnN0Rml4TGVmdDogZmlyc3RGaXhMZWZ0LFxuICAgIGlzU3RpY2t5OiBzdGlja3lPZmZzZXRzLmlzU3RpY2t5XG4gIH07XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlV2lsZGNhcmRcIik7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9sZWdhY3lVdGlsID0gcmVxdWlyZShcIi4vdXRpbHMvbGVnYWN5VXRpbFwiKTtcblxuZnVuY3Rpb24gQ29sR3JvdXAoX3JlZikge1xuICB2YXIgY29sV2lkdGhzID0gX3JlZi5jb2xXaWR0aHMsXG4gICAgICBjb2x1bW5zID0gX3JlZi5jb2x1bW5zLFxuICAgICAgY29sdW1Db3VudCA9IF9yZWYuY29sdW1Db3VudDtcbiAgdmFyIGNvbHMgPSBbXTtcbiAgdmFyIGxlbiA9IGNvbHVtQ291bnQgfHwgY29sdW1ucy5sZW5ndGg7IC8vIE9ubHkgaW5zZXJ0IGNvbCB3aXRoIHdpZHRoICYgYWRkaXRpb25hbCBwcm9wc1xuICAvLyBTa2lwIGlmIHJlc3QgY29sIGRvIG5vdCBoYXZlIGFueSB1c2VmdWwgaW5mb1xuXG4gIHZhciBtdXN0SW5zZXJ0ID0gZmFsc2U7XG5cbiAgZm9yICh2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaSAtPSAxKSB7XG4gICAgdmFyIHdpZHRoID0gY29sV2lkdGhzW2ldO1xuICAgIHZhciBjb2x1bW4gPSBjb2x1bW5zICYmIGNvbHVtbnNbaV07XG4gICAgdmFyIGFkZGl0aW9uYWxQcm9wcyA9IGNvbHVtbiAmJiBjb2x1bW5bX2xlZ2FjeVV0aWwuSU5URVJOQUxfQ09MX0RFRklORV07XG5cbiAgICBpZiAod2lkdGggfHwgYWRkaXRpb25hbFByb3BzIHx8IG11c3RJbnNlcnQpIHtcbiAgICAgIGNvbHMudW5zaGlmdCggLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJjb2xcIiwgKDAsIF9leHRlbmRzMi5kZWZhdWx0KSh7XG4gICAgICAgIGtleTogaSxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgbWluV2lkdGg6IHdpZHRoXG4gICAgICAgIH1cbiAgICAgIH0sIGFkZGl0aW9uYWxQcm9wcykpKTtcbiAgICAgIG11c3RJbnNlcnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImNvbGdyb3VwXCIsIG51bGwsIGNvbHMpO1xufVxuXG52YXIgX2RlZmF1bHQgPSBDb2xHcm91cDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9DZWxsID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vQ2VsbFwiKSk7XG5cbnZhciBfVGFibGVDb250ZXh0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vY29udGV4dC9UYWJsZUNvbnRleHRcIikpO1xuXG5mdW5jdGlvbiBFeHBhbmRlZFJvdyhfcmVmKSB7XG4gIHZhciBwcmVmaXhDbHMgPSBfcmVmLnByZWZpeENscyxcbiAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICAgIENvbXBvbmVudCA9IF9yZWYuY29tcG9uZW50LFxuICAgICAgY2VsbENvbXBvbmVudCA9IF9yZWYuY2VsbENvbXBvbmVudCxcbiAgICAgIGZpeEhlYWRlciA9IF9yZWYuZml4SGVhZGVyLFxuICAgICAgZml4Q29sdW1uID0gX3JlZi5maXhDb2x1bW4sXG4gICAgICBob3Jpem9uU2Nyb2xsID0gX3JlZi5ob3Jpem9uU2Nyb2xsLFxuICAgICAgY2xhc3NOYW1lID0gX3JlZi5jbGFzc05hbWUsXG4gICAgICBleHBhbmRlZCA9IF9yZWYuZXhwYW5kZWQsXG4gICAgICBjb21wb25lbnRXaWR0aCA9IF9yZWYuY29tcG9uZW50V2lkdGgsXG4gICAgICBjb2xTcGFuID0gX3JlZi5jb2xTcGFuO1xuXG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoX1RhYmxlQ29udGV4dC5kZWZhdWx0KSxcbiAgICAgIHNjcm9sbGJhclNpemUgPSBfUmVhY3QkdXNlQ29udGV4dC5zY3JvbGxiYXJTaXplOyAvLyBDYWNoZSByZW5kZXIgbm9kZVxuXG5cbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBjb250ZW50Tm9kZSA9IGNoaWxkcmVuO1xuXG4gICAgaWYgKGZpeENvbHVtbikge1xuICAgICAgY29udGVudE5vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgd2lkdGg6IGNvbXBvbmVudFdpZHRoIC0gKGZpeEhlYWRlciA/IHNjcm9sbGJhclNpemUgOiAwKSxcbiAgICAgICAgICBwb3NpdGlvbjogJ3N0aWNreScsXG4gICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWV4cGFuZGVkLXJvdy1maXhlZFwiKVxuICAgICAgfSwgY29udGVudE5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZGlzcGxheTogZXhwYW5kZWQgPyBudWxsIDogJ25vbmUnXG4gICAgICB9XG4gICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0NlbGwuZGVmYXVsdCwge1xuICAgICAgY29tcG9uZW50OiBjZWxsQ29tcG9uZW50LFxuICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICBjb2xTcGFuOiBjb2xTcGFuXG4gICAgfSwgY29udGVudE5vZGUpKTtcbiAgfSwgW2NoaWxkcmVuLCBDb21wb25lbnQsIGZpeEhlYWRlciwgaG9yaXpvblNjcm9sbCwgY2xhc3NOYW1lLCBleHBhbmRlZCwgY29tcG9uZW50V2lkdGgsIGNvbFNwYW4sIHNjcm9sbGJhclNpemVdKTtcbn1cblxudmFyIF9kZWZhdWx0ID0gRXhwYW5kZWRSb3c7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIFJlc2l6ZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbnZhciBfZGVmYXVsdCA9IFJlc2l6ZUNvbnRleHQ7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmNvbnZlcnRDaGlsZHJlblRvQ29sdW1ucyA9IGNvbnZlcnRDaGlsZHJlblRvQ29sdW1ucztcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpKTtcblxudmFyIF90b0NvbnN1bWFibGVBcnJheTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCIpKTtcblxudmFyIF9vYmplY3RTcHJlYWQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RTcHJlYWQyXCIpKTtcblxudmFyIF9vYmplY3RXaXRob3V0UHJvcGVydGllczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF93YXJuaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtdXRpbC9saWIvd2FybmluZ1wiKSk7XG5cbnZhciBfdG9BcnJheSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXV0aWwvbGliL0NoaWxkcmVuL3RvQXJyYXlcIikpO1xuXG52YXIgX2xlZ2FjeVV0aWwgPSByZXF1aXJlKFwiLi4vdXRpbHMvbGVnYWN5VXRpbFwiKTtcblxuZnVuY3Rpb24gY29udmVydENoaWxkcmVuVG9Db2x1bW5zKGNoaWxkcmVuKSB7XG4gIHJldHVybiAoMCwgX3RvQXJyYXkuZGVmYXVsdCkoY2hpbGRyZW4pLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQobm9kZSk7XG4gIH0pLm1hcChmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBrZXkgPSBfcmVmLmtleSxcbiAgICAgICAgcHJvcHMgPSBfcmVmLnByb3BzO1xuICAgIHZhciBub2RlQ2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgcmVzdFByb3BzID0gKDAsIF9vYmplY3RXaXRob3V0UHJvcGVydGllczIuZGVmYXVsdCkocHJvcHMsIFtcImNoaWxkcmVuXCJdKTtcbiAgICB2YXIgY29sdW1uID0gKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKHtcbiAgICAgIGtleToga2V5XG4gICAgfSwgcmVzdFByb3BzKTtcblxuICAgIGlmIChub2RlQ2hpbGRyZW4pIHtcbiAgICAgIGNvbHVtbi5jaGlsZHJlbiA9IGNvbnZlcnRDaGlsZHJlblRvQ29sdW1ucyhub2RlQ2hpbGRyZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBjb2x1bW47XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmbGF0Q29sdW1ucyhjb2x1bW5zKSB7XG4gIHJldHVybiBjb2x1bW5zLnJlZHVjZShmdW5jdGlvbiAobGlzdCwgY29sdW1uKSB7XG4gICAgdmFyIGZpeGVkID0gY29sdW1uLmZpeGVkOyAvLyBDb252ZXJ0IGBmaXhlZD0ndHJ1ZSdgIHRvIGBmaXhlZD0nbGVmdCdgIGluc3RlYWRcblxuICAgIHZhciBwYXJzZWRGaXhlZCA9IGZpeGVkID09PSB0cnVlID8gJ2xlZnQnIDogZml4ZWQ7XG4gICAgdmFyIHN1YkNvbHVtbnMgPSBjb2x1bW4uY2hpbGRyZW47XG5cbiAgICBpZiAoc3ViQ29sdW1ucyAmJiBzdWJDb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBbXS5jb25jYXQoKDAsIF90b0NvbnN1bWFibGVBcnJheTIuZGVmYXVsdCkobGlzdCksICgwLCBfdG9Db25zdW1hYmxlQXJyYXkyLmRlZmF1bHQpKGZsYXRDb2x1bW5zKHN1YkNvbHVtbnMpLm1hcChmdW5jdGlvbiAoc3ViQ29sdW0pIHtcbiAgICAgICAgcmV0dXJuICgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSh7XG4gICAgICAgICAgZml4ZWQ6IHBhcnNlZEZpeGVkXG4gICAgICAgIH0sIHN1YkNvbHVtKTtcbiAgICAgIH0pKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdLmNvbmNhdCgoMCwgX3RvQ29uc3VtYWJsZUFycmF5Mi5kZWZhdWx0KShsaXN0KSwgWygwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSgoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoe30sIGNvbHVtbiksIHt9LCB7XG4gICAgICBmaXhlZDogcGFyc2VkRml4ZWRcbiAgICB9KV0pO1xuICB9LCBbXSk7XG59XG5cbmZ1bmN0aW9uIHdhcm5pbmdGaXhlZChmbGF0dGVuQ29sdW1ucykge1xuICB2YXIgYWxsRml4TGVmdCA9IHRydWU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbGF0dGVuQ29sdW1ucy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIHZhciBjb2wgPSBmbGF0dGVuQ29sdW1uc1tpXTtcblxuICAgIGlmIChhbGxGaXhMZWZ0ICYmIGNvbC5maXhlZCAhPT0gJ2xlZnQnKSB7XG4gICAgICBhbGxGaXhMZWZ0ID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghYWxsRml4TGVmdCAmJiBjb2wuZml4ZWQgPT09ICdsZWZ0Jykge1xuICAgICAgKDAsIF93YXJuaW5nLmRlZmF1bHQpKGZhbHNlLCBcIkluZGV4IFwiLmNvbmNhdChpIC0gMSwgXCIgb2YgYGNvbHVtbnNgIG1pc3NpbmcgYGZpeGVkPSdsZWZ0J2AgcHJvcC5cIikpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdmFyIGFsbEZpeFJpZ2h0ID0gdHJ1ZTtcblxuICBmb3IgKHZhciBfaSA9IGZsYXR0ZW5Db2x1bW5zLmxlbmd0aCAtIDE7IF9pID49IDA7IF9pIC09IDEpIHtcbiAgICB2YXIgX2NvbCA9IGZsYXR0ZW5Db2x1bW5zW19pXTtcblxuICAgIGlmIChhbGxGaXhSaWdodCAmJiBfY29sLmZpeGVkICE9PSAncmlnaHQnKSB7XG4gICAgICBhbGxGaXhSaWdodCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIWFsbEZpeFJpZ2h0ICYmIF9jb2wuZml4ZWQgPT09ICdyaWdodCcpIHtcbiAgICAgICgwLCBfd2FybmluZy5kZWZhdWx0KShmYWxzZSwgXCJJbmRleCBcIi5jb25jYXQoX2kgKyAxLCBcIiBvZiBgY29sdW1uc2AgbWlzc2luZyBgZml4ZWQ9J3JpZ2h0J2AgcHJvcC5cIikpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJldmVydEZvclJ0bChjb2x1bW5zKSB7XG4gIHJldHVybiBjb2x1bW5zLm1hcChmdW5jdGlvbiAoY29sdW1uKSB7XG4gICAgdmFyIGZpeGVkID0gY29sdW1uLmZpeGVkLFxuICAgICAgICByZXN0UHJvcHMgPSAoMCwgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMi5kZWZhdWx0KShjb2x1bW4sIFtcImZpeGVkXCJdKTsgLy8gQ29udmVydCBgZml4ZWQ9J2xlZnQnYCB0byBgZml4ZWQ9J3JpZ2h0J2AgaW5zdGVhZFxuXG4gICAgdmFyIHBhcnNlZEZpeGVkID0gZml4ZWQ7XG5cbiAgICBpZiAoZml4ZWQgPT09ICdsZWZ0Jykge1xuICAgICAgcGFyc2VkRml4ZWQgPSAncmlnaHQnO1xuICAgIH0gZWxzZSBpZiAoZml4ZWQgPT09ICdyaWdodCcpIHtcbiAgICAgIHBhcnNlZEZpeGVkID0gJ2xlZnQnO1xuICAgIH1cblxuICAgIHJldHVybiAoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoe1xuICAgICAgZml4ZWQ6IHBhcnNlZEZpeGVkXG4gICAgfSwgcmVzdFByb3BzKTtcbiAgfSk7XG59XG4vKipcbiAqIFBhcnNlIGBjb2x1bW5zYCAmIGBjaGlsZHJlbmAgaW50byBgY29sdW1uc2AuXG4gKi9cblxuXG5mdW5jdGlvbiB1c2VDb2x1bW5zKF9yZWYyLCB0cmFuc2Zvcm1Db2x1bW5zKSB7XG4gIHZhciBwcmVmaXhDbHMgPSBfcmVmMi5wcmVmaXhDbHMsXG4gICAgICBjb2x1bW5zID0gX3JlZjIuY29sdW1ucyxcbiAgICAgIGNoaWxkcmVuID0gX3JlZjIuY2hpbGRyZW4sXG4gICAgICBleHBhbmRhYmxlID0gX3JlZjIuZXhwYW5kYWJsZSxcbiAgICAgIGV4cGFuZGVkS2V5cyA9IF9yZWYyLmV4cGFuZGVkS2V5cyxcbiAgICAgIGdldFJvd0tleSA9IF9yZWYyLmdldFJvd0tleSxcbiAgICAgIG9uVHJpZ2dlckV4cGFuZCA9IF9yZWYyLm9uVHJpZ2dlckV4cGFuZCxcbiAgICAgIGV4cGFuZEljb24gPSBfcmVmMi5leHBhbmRJY29uLFxuICAgICAgcm93RXhwYW5kYWJsZSA9IF9yZWYyLnJvd0V4cGFuZGFibGUsXG4gICAgICBleHBhbmRJY29uQ29sdW1uSW5kZXggPSBfcmVmMi5leHBhbmRJY29uQ29sdW1uSW5kZXgsXG4gICAgICBkaXJlY3Rpb24gPSBfcmVmMi5kaXJlY3Rpb24sXG4gICAgICBleHBhbmRSb3dCeUNsaWNrID0gX3JlZjIuZXhwYW5kUm93QnlDbGljayxcbiAgICAgIGNvbHVtbldpZHRoID0gX3JlZjIuY29sdW1uV2lkdGg7XG4gIHZhciBiYXNlQ29sdW1ucyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjb2x1bW5zIHx8IGNvbnZlcnRDaGlsZHJlblRvQ29sdW1ucyhjaGlsZHJlbik7XG4gIH0sIFtjb2x1bW5zLCBjaGlsZHJlbl0pOyAvLyBBZGQgZXhwYW5kIGNvbHVtblxuXG4gIHZhciB3aXRoRXhwYW5kQ29sdW1ucyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIGlmIChleHBhbmRhYmxlKSB7XG4gICAgICB2YXIgX2V4cGFuZENvbHVtbjtcblxuICAgICAgdmFyIGV4cGFuZENvbEluZGV4ID0gZXhwYW5kSWNvbkNvbHVtbkluZGV4IHx8IDA7XG4gICAgICB2YXIgcHJldkNvbHVtbiA9IGJhc2VDb2x1bW5zW2V4cGFuZENvbEluZGV4XTtcbiAgICAgIHZhciBleHBhbmRDb2x1bW4gPSAoX2V4cGFuZENvbHVtbiA9IHt9LCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfZXhwYW5kQ29sdW1uLCBfbGVnYWN5VXRpbC5JTlRFUk5BTF9DT0xfREVGSU5FLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1leHBhbmQtaWNvbi1jb2xcIilcbiAgICAgIH0pLCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfZXhwYW5kQ29sdW1uLCBcInRpdGxlXCIsICcnKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX2V4cGFuZENvbHVtbiwgXCJmaXhlZFwiLCBwcmV2Q29sdW1uID8gcHJldkNvbHVtbi5maXhlZCA6IG51bGwpLCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfZXhwYW5kQ29sdW1uLCBcImNsYXNzTmFtZVwiLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXJvdy1leHBhbmQtaWNvbi1jZWxsXCIpKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX2V4cGFuZENvbHVtbiwgXCJ3aWR0aFwiLCBjb2x1bW5XaWR0aCksICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKF9leHBhbmRDb2x1bW4sIFwicmVuZGVyXCIsIGZ1bmN0aW9uIHJlbmRlcihfLCByZWNvcmQsIGluZGV4KSB7XG4gICAgICAgIHZhciByb3dLZXkgPSBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCk7XG4gICAgICAgIHZhciBleHBhbmRlZCA9IGV4cGFuZGVkS2V5cy5oYXMocm93S2V5KTtcbiAgICAgICAgdmFyIHJlY29yZEV4cGFuZGFibGUgPSByb3dFeHBhbmRhYmxlID8gcm93RXhwYW5kYWJsZShyZWNvcmQpIDogdHJ1ZTtcbiAgICAgICAgdmFyIGljb24gPSBleHBhbmRJY29uKHtcbiAgICAgICAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICAgICAgZXhwYW5kYWJsZTogcmVjb3JkRXhwYW5kYWJsZSxcbiAgICAgICAgICByZWNvcmQ6IHJlY29yZCxcbiAgICAgICAgICBvbkV4cGFuZDogb25UcmlnZ2VyRXhwYW5kXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChleHBhbmRSb3dCeUNsaWNrKSB7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgaWNvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaWNvbjtcbiAgICAgIH0pLCBfZXhwYW5kQ29sdW1uKTsgLy8gSW5zZXJ0IGV4cGFuZCBjb2x1bW4gaW4gdGhlIHRhcmdldCBwb3NpdGlvblxuXG4gICAgICB2YXIgY2xvbmVDb2x1bW5zID0gYmFzZUNvbHVtbnMuc2xpY2UoKTtcblxuICAgICAgaWYgKGV4cGFuZENvbEluZGV4ID49IDApIHtcbiAgICAgICAgY2xvbmVDb2x1bW5zLnNwbGljZShleHBhbmRDb2xJbmRleCwgMCwgZXhwYW5kQ29sdW1uKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsb25lQ29sdW1ucztcbiAgICB9XG5cbiAgICByZXR1cm4gYmFzZUNvbHVtbnM7XG4gIH0sIFtleHBhbmRhYmxlLCBiYXNlQ29sdW1ucywgZ2V0Um93S2V5LCBleHBhbmRlZEtleXMsIGV4cGFuZEljb24sIGRpcmVjdGlvbl0pO1xuICB2YXIgbWVyZ2VkQ29sdW1ucyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBmaW5hbENvbHVtbnMgPSB3aXRoRXhwYW5kQ29sdW1ucztcblxuICAgIGlmICh0cmFuc2Zvcm1Db2x1bW5zKSB7XG4gICAgICBmaW5hbENvbHVtbnMgPSB0cmFuc2Zvcm1Db2x1bW5zKGZpbmFsQ29sdW1ucyk7XG4gICAgfSAvLyBBbHdheXMgcHJvdmlkZXMgYXQgbGVhc3Qgb25lIGNvbHVtbiBmb3IgdGFibGUgZGlzcGxheVxuXG5cbiAgICBpZiAoIWZpbmFsQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgIGZpbmFsQ29sdW1ucyA9IFt7XG4gICAgICAgIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmluYWxDb2x1bW5zO1xuICB9LCBbdHJhbnNmb3JtQ29sdW1ucywgd2l0aEV4cGFuZENvbHVtbnMsIGRpcmVjdGlvbl0pO1xuICB2YXIgZmxhdHRlbkNvbHVtbnMgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgICAgcmV0dXJuIHJldmVydEZvclJ0bChmbGF0Q29sdW1ucyhtZXJnZWRDb2x1bW5zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZsYXRDb2x1bW5zKG1lcmdlZENvbHVtbnMpO1xuICB9LCBbbWVyZ2VkQ29sdW1ucywgZGlyZWN0aW9uXSk7IC8vIE9ubHkgY2hlY2sgb3V0IG9mIHByb2R1Y3Rpb24gc2luY2UgaXQncyB3YXN0ZSBmb3IgZWFjaCByZW5kZXJcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm5pbmdGaXhlZChmbGF0dGVuQ29sdW1ucyk7XG4gIH1cblxuICByZXR1cm4gW21lcmdlZENvbHVtbnMsIGZsYXR0ZW5Db2x1bW5zXTtcbn1cblxudmFyIF9kZWZhdWx0ID0gdXNlQ29sdW1ucztcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMudXNlTGF5b3V0U3RhdGUgPSB1c2VMYXlvdXRTdGF0ZTtcbmV4cG9ydHMudXNlVGltZW91dExvY2sgPSB1c2VUaW1lb3V0TG9jaztcblxudmFyIF9zbGljZWRUb0FycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiKSk7XG5cbnZhciBfcmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG5cbi8qKlxuICogRXhlY3V0ZSBjb2RlIGJlZm9yZSBuZXh0IGZyYW1lIGJ1dCBhc3luY1xuICovXG5mdW5jdGlvbiB1c2VMYXlvdXRTdGF0ZShkZWZhdWx0U3RhdGUpIHtcbiAgdmFyIHN0YXRlUmVmID0gKDAsIF9yZWFjdC51c2VSZWYpKGRlZmF1bHRTdGF0ZSk7XG5cbiAgdmFyIF91c2VTdGF0ZSA9ICgwLCBfcmVhY3QudXNlU3RhdGUpKHt9KSxcbiAgICAgIF91c2VTdGF0ZTIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyLmRlZmF1bHQpKF91c2VTdGF0ZSwgMiksXG4gICAgICBmb3JjZVVwZGF0ZSA9IF91c2VTdGF0ZTJbMV07XG5cbiAgdmFyIGxhc3RQcm9taXNlUmVmID0gKDAsIF9yZWFjdC51c2VSZWYpKG51bGwpO1xuICB2YXIgdXBkYXRlQmF0Y2hSZWYgPSAoMCwgX3JlYWN0LnVzZVJlZikoW10pO1xuXG4gIGZ1bmN0aW9uIHNldEZyYW1lU3RhdGUodXBkYXRlcikge1xuICAgIHVwZGF0ZUJhdGNoUmVmLmN1cnJlbnQucHVzaCh1cGRhdGVyKTtcbiAgICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGxhc3RQcm9taXNlUmVmLmN1cnJlbnQgPSBwcm9taXNlO1xuICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAobGFzdFByb21pc2VSZWYuY3VycmVudCA9PT0gcHJvbWlzZSkge1xuICAgICAgICB2YXIgcHJldkJhdGNoID0gdXBkYXRlQmF0Y2hSZWYuY3VycmVudDtcbiAgICAgICAgdmFyIHByZXZTdGF0ZSA9IHN0YXRlUmVmLmN1cnJlbnQ7XG4gICAgICAgIHVwZGF0ZUJhdGNoUmVmLmN1cnJlbnQgPSBbXTtcbiAgICAgICAgcHJldkJhdGNoLmZvckVhY2goZnVuY3Rpb24gKGJhdGNoVXBkYXRlcikge1xuICAgICAgICAgIHN0YXRlUmVmLmN1cnJlbnQgPSBiYXRjaFVwZGF0ZXIoc3RhdGVSZWYuY3VycmVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICBsYXN0UHJvbWlzZVJlZi5jdXJyZW50ID0gbnVsbDtcblxuICAgICAgICBpZiAocHJldlN0YXRlICE9PSBzdGF0ZVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgZm9yY2VVcGRhdGUoe30pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAoMCwgX3JlYWN0LnVzZUVmZmVjdCkoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBsYXN0UHJvbWlzZVJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9O1xuICB9LCBbXSk7XG4gIHJldHVybiBbc3RhdGVSZWYuY3VycmVudCwgc2V0RnJhbWVTdGF0ZV07XG59XG4vKiogTG9jayBmcmFtZSwgd2hlbiBmcmFtZSBwYXNzIHJlc2V0IHRoZSBsb2NrLiAqL1xuXG5cbmZ1bmN0aW9uIHVzZVRpbWVvdXRMb2NrKGRlZmF1bHRTdGF0ZSkge1xuICB2YXIgZnJhbWVSZWYgPSAoMCwgX3JlYWN0LnVzZVJlZikoZGVmYXVsdFN0YXRlIHx8IG51bGwpO1xuICB2YXIgdGltZW91dFJlZiA9ICgwLCBfcmVhY3QudXNlUmVmKSgpO1xuXG4gIGZ1bmN0aW9uIGNsZWFuVXAoKSB7XG4gICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBmcmFtZVJlZi5jdXJyZW50ID0gbmV3U3RhdGU7XG4gICAgY2xlYW5VcCgpO1xuICAgIHRpbWVvdXRSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGZyYW1lUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgdGltZW91dFJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRTdGF0ZSgpIHtcbiAgICByZXR1cm4gZnJhbWVSZWYuY3VycmVudDtcbiAgfVxuXG4gICgwLCBfcmVhY3QudXNlRWZmZWN0KShmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNsZWFuVXA7XG4gIH0sIFtdKTtcbiAgcmV0dXJuIFtzZXRTdGF0ZSwgZ2V0U3RhdGVdO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gY2FuVXNlRG9tO1xuXG5mdW5jdGlvbiBjYW5Vc2VEb20oKSB7XG4gIHJldHVybiAhISh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xufSIsIi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbm1vZHVsZS5leHBvcnRzID0gZnJlZUdsb2JhbDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9kZWZhdWx0ID0ge1xuICAvLyBPcHRpb25zLmpzeFxuICBpdGVtc19wZXJfcGFnZTogJy8gcGFnZScsXG4gIGp1bXBfdG86ICdHbyB0bycsXG4gIGp1bXBfdG9fY29uZmlybTogJ2NvbmZpcm0nLFxuICBwYWdlOiAnJyxcbiAgLy8gUGFnaW5hdGlvbi5qc3hcbiAgcHJldl9wYWdlOiAnUHJldmlvdXMgUGFnZScsXG4gIG5leHRfcGFnZTogJ05leHQgUGFnZScsXG4gIHByZXZfNTogJ1ByZXZpb3VzIDUgUGFnZXMnLFxuICBuZXh0XzU6ICdOZXh0IDUgUGFnZXMnLFxuICBwcmV2XzM6ICdQcmV2aW91cyAzIFBhZ2VzJyxcbiAgbmV4dF8zOiAnTmV4dCAzIFBhZ2VzJ1xufTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIF9lbl9VUyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXBpY2tlci9saWIvbG9jYWxlL2VuX1VTXCIpKTtcblxudmFyIF9lbl9VUzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi90aW1lLXBpY2tlci9sb2NhbGUvZW5fVVNcIikpO1xuXG4vLyBNZXJnZSBpbnRvIGEgbG9jYWxlIG9iamVjdFxudmFyIGxvY2FsZSA9IHtcbiAgbGFuZzogKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHtcbiAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBkYXRlJyxcbiAgICB5ZWFyUGxhY2Vob2xkZXI6ICdTZWxlY3QgeWVhcicsXG4gICAgcXVhcnRlclBsYWNlaG9sZGVyOiAnU2VsZWN0IHF1YXJ0ZXInLFxuICAgIG1vbnRoUGxhY2Vob2xkZXI6ICdTZWxlY3QgbW9udGgnLFxuICAgIHdlZWtQbGFjZWhvbGRlcjogJ1NlbGVjdCB3ZWVrJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ1N0YXJ0IGRhdGUnLCAnRW5kIGRhdGUnXSxcbiAgICByYW5nZVllYXJQbGFjZWhvbGRlcjogWydTdGFydCB5ZWFyJywgJ0VuZCB5ZWFyJ10sXG4gICAgcmFuZ2VNb250aFBsYWNlaG9sZGVyOiBbJ1N0YXJ0IG1vbnRoJywgJ0VuZCBtb250aCddLFxuICAgIHJhbmdlV2Vla1BsYWNlaG9sZGVyOiBbJ1N0YXJ0IHdlZWsnLCAnRW5kIHdlZWsnXVxuICB9LCBfZW5fVVNbXCJkZWZhdWx0XCJdKSxcbiAgdGltZVBpY2tlckxvY2FsZTogKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCBfZW5fVVMyW1wiZGVmYXVsdFwiXSlcbn07IC8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vYmxvYi9tYXN0ZXIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9sb2NhbGUvZXhhbXBsZS5qc29uXG5cbnZhciBfZGVmYXVsdCA9IGxvY2FsZTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcbnZhciBsb2NhbGUgPSB7XG4gIHBsYWNlaG9sZGVyOiAnU2VsZWN0IHRpbWUnLFxuICByYW5nZVBsYWNlaG9sZGVyOiBbJ1N0YXJ0IHRpbWUnLCAnRW5kIHRpbWUnXVxufTtcbnZhciBfZGVmYXVsdCA9IGxvY2FsZTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcblxudmFyIExvY2FsZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovKDAsIF9yZWFjdC5jcmVhdGVDb250ZXh0KSh1bmRlZmluZWQpO1xudmFyIF9kZWZhdWx0ID0gTG9jYWxlQ29udGV4dDtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX0xvY2FsZVJlY2VpdmVyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vbG9jYWxlLXByb3ZpZGVyL0xvY2FsZVJlY2VpdmVyXCIpKTtcblxudmFyIF9lbXB0eSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vZW1wdHlcIikpO1xuXG52YXIgX3NpbXBsZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vc2ltcGxlXCIpKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgX19yZXN0ID0gdm9pZCAwICYmICh2b2lkIDApLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG4gIH1cblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxudmFyIGRlZmF1bHRFbXB0eUltZyA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9lbXB0eVtcImRlZmF1bHRcIl0sIG51bGwpO1xudmFyIHNpbXBsZUVtcHR5SW1nID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX3NpbXBsZVtcImRlZmF1bHRcIl0sIG51bGwpO1xuXG52YXIgRW1wdHkgPSBmdW5jdGlvbiBFbXB0eShfYSkge1xuICB2YXIgY2xhc3NOYW1lID0gX2EuY2xhc3NOYW1lLFxuICAgICAgY3VzdG9taXplUHJlZml4Q2xzID0gX2EucHJlZml4Q2xzLFxuICAgICAgX2EkaW1hZ2UgPSBfYS5pbWFnZSxcbiAgICAgIGltYWdlID0gX2EkaW1hZ2UgPT09IHZvaWQgMCA/IGRlZmF1bHRFbXB0eUltZyA6IF9hJGltYWdlLFxuICAgICAgZGVzY3JpcHRpb24gPSBfYS5kZXNjcmlwdGlvbixcbiAgICAgIGNoaWxkcmVuID0gX2EuY2hpbGRyZW4sXG4gICAgICBpbWFnZVN0eWxlID0gX2EuaW1hZ2VTdHlsZSxcbiAgICAgIHJlc3RQcm9wcyA9IF9fcmVzdChfYSwgW1wiY2xhc3NOYW1lXCIsIFwicHJlZml4Q2xzXCIsIFwiaW1hZ2VcIiwgXCJkZXNjcmlwdGlvblwiLCBcImNoaWxkcmVuXCIsIFwiaW1hZ2VTdHlsZVwiXSk7XG5cbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChfY29uZmlnUHJvdmlkZXIuQ29uZmlnQ29udGV4dCksXG4gICAgICBnZXRQcmVmaXhDbHMgPSBfUmVhY3QkdXNlQ29udGV4dC5nZXRQcmVmaXhDbHMsXG4gICAgICBkaXJlY3Rpb24gPSBfUmVhY3QkdXNlQ29udGV4dC5kaXJlY3Rpb247XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9Mb2NhbGVSZWNlaXZlcltcImRlZmF1bHRcIl0sIHtcbiAgICBjb21wb25lbnROYW1lOiBcIkVtcHR5XCJcbiAgfSwgZnVuY3Rpb24gKGxvY2FsZSkge1xuICAgIHZhciBfY2xhc3NOYW1lcztcblxuICAgIHZhciBwcmVmaXhDbHMgPSBnZXRQcmVmaXhDbHMoJ2VtcHR5JywgY3VzdG9taXplUHJlZml4Q2xzKTtcbiAgICB2YXIgZGVzID0gdHlwZW9mIGRlc2NyaXB0aW9uICE9PSAndW5kZWZpbmVkJyA/IGRlc2NyaXB0aW9uIDogbG9jYWxlLmRlc2NyaXB0aW9uO1xuICAgIHZhciBhbHQgPSB0eXBlb2YgZGVzID09PSAnc3RyaW5nJyA/IGRlcyA6ICdlbXB0eSc7XG4gICAgdmFyIGltYWdlTm9kZSA9IG51bGw7XG5cbiAgICBpZiAodHlwZW9mIGltYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgaW1hZ2VOb2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIiwge1xuICAgICAgICBhbHQ6IGFsdCxcbiAgICAgICAgc3JjOiBpbWFnZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGltYWdlTm9kZSA9IGltYWdlO1xuICAgIH1cblxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe1xuICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShwcmVmaXhDbHMsIChfY2xhc3NOYW1lcyA9IHt9LCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLW5vcm1hbFwiKSwgaW1hZ2UgPT09IHNpbXBsZUVtcHR5SW1nKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ydGxcIiksIGRpcmVjdGlvbiA9PT0gJ3J0bCcpLCBfY2xhc3NOYW1lcyksIGNsYXNzTmFtZSlcbiAgICB9LCByZXN0UHJvcHMpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaW1hZ2VcIiksXG4gICAgICBzdHlsZTogaW1hZ2VTdHlsZVxuICAgIH0sIGltYWdlTm9kZSksIGRlcyAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZGVzY3JpcHRpb25cIilcbiAgICB9LCBkZXMpLCBjaGlsZHJlbiAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZm9vdGVyXCIpXG4gICAgfSwgY2hpbGRyZW4pKTtcbiAgfSk7XG59O1xuXG5FbXB0eS5QUkVTRU5URURfSU1BR0VfREVGQVVMVCA9IGRlZmF1bHRFbXB0eUltZztcbkVtcHR5LlBSRVNFTlRFRF9JTUFHRV9TSU1QTEUgPSBzaW1wbGVFbXB0eUltZztcbnZhciBfZGVmYXVsdCA9IEVtcHR5O1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5nZXRLZXlUaGVuSW5jcmVhc2VLZXkgPSBnZXRLZXlUaGVuSW5jcmVhc2VLZXk7XG5leHBvcnRzLmF0dGFjaFR5cGVBcGkgPSBhdHRhY2hUeXBlQXBpO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBleHBvcnRzLmdldEluc3RhbmNlID0gdm9pZCAwO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfcmNOb3RpZmljYXRpb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYy1ub3RpZmljYXRpb25cIikpO1xuXG52YXIgX0xvYWRpbmdPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zL0xvYWRpbmdPdXRsaW5lZFwiKSk7XG5cbnZhciBfRXhjbGFtYXRpb25DaXJjbGVGaWxsZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9pY29ucy9FeGNsYW1hdGlvbkNpcmNsZUZpbGxlZFwiKSk7XG5cbnZhciBfQ2xvc2VDaXJjbGVGaWxsZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9pY29ucy9DbG9zZUNpcmNsZUZpbGxlZFwiKSk7XG5cbnZhciBfQ2hlY2tDaXJjbGVGaWxsZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9pY29ucy9DaGVja0NpcmNsZUZpbGxlZFwiKSk7XG5cbnZhciBfSW5mb0NpcmNsZUZpbGxlZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zL0luZm9DaXJjbGVGaWxsZWRcIikpO1xuXG52YXIgX3VzZU1lc3NhZ2UgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2hvb2tzL3VzZU1lc3NhZ2VcIikpO1xuXG52YXIgX2NvbmZpZ1Byb3ZpZGVyID0gcmVxdWlyZShcIi4uL2NvbmZpZy1wcm92aWRlclwiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgbWVzc2FnZUluc3RhbmNlO1xudmFyIGRlZmF1bHREdXJhdGlvbiA9IDM7XG52YXIgZGVmYXVsdFRvcDtcbnZhciBrZXkgPSAxO1xudmFyIGxvY2FsUHJlZml4Q2xzID0gJyc7XG52YXIgdHJhbnNpdGlvbk5hbWUgPSAnbW92ZS11cCc7XG52YXIgaGFzVHJhbnNpdGlvbk5hbWUgPSBmYWxzZTtcbnZhciBnZXRDb250YWluZXI7XG52YXIgbWF4Q291bnQ7XG52YXIgcnRsID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGdldEtleVRoZW5JbmNyZWFzZUtleSgpIHtcbiAgcmV0dXJuIGtleSsrO1xufVxuXG5mdW5jdGlvbiBzZXRNZXNzYWdlQ29uZmlnKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudG9wICE9PSB1bmRlZmluZWQpIHtcbiAgICBkZWZhdWx0VG9wID0gb3B0aW9ucy50b3A7XG4gICAgbWVzc2FnZUluc3RhbmNlID0gbnVsbDsgLy8gZGVsZXRlIG1lc3NhZ2VJbnN0YW5jZSBmb3IgbmV3IGRlZmF1bHRUb3BcbiAgfVxuXG4gIGlmIChvcHRpb25zLmR1cmF0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICBkZWZhdWx0RHVyYXRpb24gPSBvcHRpb25zLmR1cmF0aW9uO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMucHJlZml4Q2xzICE9PSB1bmRlZmluZWQpIHtcbiAgICBsb2NhbFByZWZpeENscyA9IG9wdGlvbnMucHJlZml4Q2xzO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuZ2V0Q29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICBnZXRDb250YWluZXIgPSBvcHRpb25zLmdldENvbnRhaW5lcjtcbiAgfVxuXG4gIGlmIChvcHRpb25zLnRyYW5zaXRpb25OYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICB0cmFuc2l0aW9uTmFtZSA9IG9wdGlvbnMudHJhbnNpdGlvbk5hbWU7XG4gICAgbWVzc2FnZUluc3RhbmNlID0gbnVsbDsgLy8gZGVsZXRlIG1lc3NhZ2VJbnN0YW5jZSBmb3IgbmV3IHRyYW5zaXRpb25OYW1lXG5cbiAgICBoYXNUcmFuc2l0aW9uTmFtZSA9IHRydWU7XG4gIH1cblxuICBpZiAob3B0aW9ucy5tYXhDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbWF4Q291bnQgPSBvcHRpb25zLm1heENvdW50O1xuICAgIG1lc3NhZ2VJbnN0YW5jZSA9IG51bGw7XG4gIH1cblxuICBpZiAob3B0aW9ucy5ydGwgIT09IHVuZGVmaW5lZCkge1xuICAgIHJ0bCA9IG9wdGlvbnMucnRsO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFJDTm90aWZpY2F0aW9uSW5zdGFuY2UoYXJncywgY2FsbGJhY2spIHtcbiAgdmFyIGN1c3RvbWl6ZVByZWZpeENscyA9IGFyZ3MucHJlZml4Q2xzO1xuXG4gIHZhciBfZ2xvYmFsQ29uZmlnID0gKDAsIF9jb25maWdQcm92aWRlci5nbG9iYWxDb25maWcpKCksXG4gICAgICBnZXRQcmVmaXhDbHMgPSBfZ2xvYmFsQ29uZmlnLmdldFByZWZpeENscyxcbiAgICAgIGdldFJvb3RQcmVmaXhDbHMgPSBfZ2xvYmFsQ29uZmlnLmdldFJvb3RQcmVmaXhDbHM7XG5cbiAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygnbWVzc2FnZScsIGN1c3RvbWl6ZVByZWZpeENscyB8fCBsb2NhbFByZWZpeENscyk7XG4gIHZhciByb290UHJlZml4Q2xzID0gZ2V0Um9vdFByZWZpeENscyhhcmdzLnJvb3RQcmVmaXhDbHMsIHByZWZpeENscyk7XG5cbiAgaWYgKG1lc3NhZ2VJbnN0YW5jZSkge1xuICAgIGNhbGxiYWNrKHtcbiAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgcm9vdFByZWZpeENsczogcm9vdFByZWZpeENscyxcbiAgICAgIGluc3RhbmNlOiBtZXNzYWdlSW5zdGFuY2VcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgaW5zdGFuY2VDb25maWcgPSB7XG4gICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgdHJhbnNpdGlvbk5hbWU6IGhhc1RyYW5zaXRpb25OYW1lID8gdHJhbnNpdGlvbk5hbWUgOiBcIlwiLmNvbmNhdChyb290UHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KHRyYW5zaXRpb25OYW1lKSxcbiAgICBzdHlsZToge1xuICAgICAgdG9wOiBkZWZhdWx0VG9wXG4gICAgfSxcbiAgICBnZXRDb250YWluZXI6IGdldENvbnRhaW5lcixcbiAgICBtYXhDb3VudDogbWF4Q291bnRcbiAgfTtcblxuICBfcmNOb3RpZmljYXRpb25bXCJkZWZhdWx0XCJdLm5ld0luc3RhbmNlKGluc3RhbmNlQ29uZmlnLCBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgICBpZiAobWVzc2FnZUluc3RhbmNlKSB7XG4gICAgICBjYWxsYmFjayh7XG4gICAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgICByb290UHJlZml4Q2xzOiByb290UHJlZml4Q2xzLFxuICAgICAgICBpbnN0YW5jZTogbWVzc2FnZUluc3RhbmNlXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBtZXNzYWdlSW5zdGFuY2UgPSBpbnN0YW5jZTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnKSB7XG4gICAgICBtZXNzYWdlSW5zdGFuY2UuY29uZmlnID0gaW5zdGFuY2VDb25maWc7XG4gICAgfVxuXG4gICAgY2FsbGJhY2soe1xuICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICByb290UHJlZml4Q2xzOiByb290UHJlZml4Q2xzLFxuICAgICAgaW5zdGFuY2U6IGluc3RhbmNlXG4gICAgfSk7XG4gIH0pO1xufVxuXG52YXIgdHlwZVRvSWNvbiA9IHtcbiAgaW5mbzogX0luZm9DaXJjbGVGaWxsZWRbXCJkZWZhdWx0XCJdLFxuICBzdWNjZXNzOiBfQ2hlY2tDaXJjbGVGaWxsZWRbXCJkZWZhdWx0XCJdLFxuICBlcnJvcjogX0Nsb3NlQ2lyY2xlRmlsbGVkW1wiZGVmYXVsdFwiXSxcbiAgd2FybmluZzogX0V4Y2xhbWF0aW9uQ2lyY2xlRmlsbGVkW1wiZGVmYXVsdFwiXSxcbiAgbG9hZGluZzogX0xvYWRpbmdPdXRsaW5lZFtcImRlZmF1bHRcIl1cbn07XG5cbmZ1bmN0aW9uIGdldFJDTm90aWNlUHJvcHMoYXJncywgcHJlZml4Q2xzKSB7XG4gIHZhciBfY2xhc3NOYW1lcztcblxuICB2YXIgZHVyYXRpb24gPSBhcmdzLmR1cmF0aW9uICE9PSB1bmRlZmluZWQgPyBhcmdzLmR1cmF0aW9uIDogZGVmYXVsdER1cmF0aW9uO1xuICB2YXIgSWNvbkNvbXBvbmVudCA9IHR5cGVUb0ljb25bYXJncy50eXBlXTtcbiAgdmFyIG1lc3NhZ2VDbGFzcyA9ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY3VzdG9tLWNvbnRlbnRcIiksIChfY2xhc3NOYW1lcyA9IHt9LCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLVwiKS5jb25jYXQoYXJncy50eXBlKSwgYXJncy50eXBlKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ydGxcIiksIHJ0bCA9PT0gdHJ1ZSksIF9jbGFzc05hbWVzKSk7XG4gIHJldHVybiB7XG4gICAga2V5OiBhcmdzLmtleSxcbiAgICBkdXJhdGlvbjogZHVyYXRpb24sXG4gICAgc3R5bGU6IGFyZ3Muc3R5bGUgfHwge30sXG4gICAgY2xhc3NOYW1lOiBhcmdzLmNsYXNzTmFtZSxcbiAgICBjb250ZW50OiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICBjbGFzc05hbWU6IG1lc3NhZ2VDbGFzc1xuICAgIH0sIGFyZ3MuaWNvbiB8fCBJY29uQ29tcG9uZW50ICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEljb25Db21wb25lbnQsIG51bGwpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCwgYXJncy5jb250ZW50KSksXG4gICAgb25DbG9zZTogYXJncy5vbkNsb3NlLFxuICAgIG9uQ2xpY2s6IGFyZ3Mub25DbGlja1xuICB9O1xufVxuXG5mdW5jdGlvbiBub3RpY2UoYXJncykge1xuICB2YXIgdGFyZ2V0ID0gYXJncy5rZXkgfHwga2V5Kys7XG4gIHZhciBjbG9zZVByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgIHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uIGNhbGxiYWNrKCkge1xuICAgICAgaWYgKHR5cGVvZiBhcmdzLm9uQ2xvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgYXJncy5vbkNsb3NlKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlKHRydWUpO1xuICAgIH07XG5cbiAgICBnZXRSQ05vdGlmaWNhdGlvbkluc3RhbmNlKGFyZ3MsIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICB2YXIgcHJlZml4Q2xzID0gX3JlZi5wcmVmaXhDbHMsXG4gICAgICAgICAgaW5zdGFuY2UgPSBfcmVmLmluc3RhbmNlO1xuICAgICAgaW5zdGFuY2Uubm90aWNlKGdldFJDTm90aWNlUHJvcHMoKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKCgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgYXJncyksIHtcbiAgICAgICAga2V5OiB0YXJnZXQsXG4gICAgICAgIG9uQ2xvc2U6IGNhbGxiYWNrXG4gICAgICB9KSwgcHJlZml4Q2xzKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZhciByZXN1bHQgPSBmdW5jdGlvbiByZXN1bHQoKSB7XG4gICAgaWYgKG1lc3NhZ2VJbnN0YW5jZSkge1xuICAgICAgbWVzc2FnZUluc3RhbmNlLnJlbW92ZU5vdGljZSh0YXJnZXQpO1xuICAgIH1cbiAgfTtcblxuICByZXN1bHQudGhlbiA9IGZ1bmN0aW9uIChmaWxsZWQsIHJlamVjdGVkKSB7XG4gICAgcmV0dXJuIGNsb3NlUHJvbWlzZS50aGVuKGZpbGxlZCwgcmVqZWN0ZWQpO1xuICB9O1xuXG4gIHJlc3VsdC5wcm9taXNlID0gY2xvc2VQcm9taXNlO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBpc0FyZ3NQcm9wcyhjb250ZW50KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoY29udGVudCkgPT09ICdbb2JqZWN0IE9iamVjdF0nICYmICEhY29udGVudC5jb250ZW50O1xufVxuXG52YXIgYXBpID0ge1xuICBvcGVuOiBub3RpY2UsXG4gIGNvbmZpZzogc2V0TWVzc2FnZUNvbmZpZyxcbiAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveShtZXNzYWdlS2V5KSB7XG4gICAgaWYgKG1lc3NhZ2VJbnN0YW5jZSkge1xuICAgICAgaWYgKG1lc3NhZ2VLZXkpIHtcbiAgICAgICAgdmFyIF9tZXNzYWdlSW5zdGFuY2UgPSBtZXNzYWdlSW5zdGFuY2UsXG4gICAgICAgICAgICByZW1vdmVOb3RpY2UgPSBfbWVzc2FnZUluc3RhbmNlLnJlbW92ZU5vdGljZTtcbiAgICAgICAgcmVtb3ZlTm90aWNlKG1lc3NhZ2VLZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF9tZXNzYWdlSW5zdGFuY2UyID0gbWVzc2FnZUluc3RhbmNlLFxuICAgICAgICAgICAgZGVzdHJveSA9IF9tZXNzYWdlSW5zdGFuY2UyLmRlc3Ryb3k7XG4gICAgICAgIGRlc3Ryb3koKTtcbiAgICAgICAgbWVzc2FnZUluc3RhbmNlID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGF0dGFjaFR5cGVBcGkob3JpZ2luYWxBcGksIHR5cGUpIHtcbiAgb3JpZ2luYWxBcGlbdHlwZV0gPSBmdW5jdGlvbiAoY29udGVudCwgZHVyYXRpb24sIG9uQ2xvc2UpIHtcbiAgICBpZiAoaXNBcmdzUHJvcHMoY29udGVudCkpIHtcbiAgICAgIHJldHVybiBvcmlnaW5hbEFwaS5vcGVuKCgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIGNvbnRlbnQpLCB7XG4gICAgICAgIHR5cGU6IHR5cGVcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGR1cmF0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvbkNsb3NlID0gZHVyYXRpb247XG4gICAgICBkdXJhdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JpZ2luYWxBcGkub3Blbih7XG4gICAgICBjb250ZW50OiBjb250ZW50LFxuICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIG9uQ2xvc2U6IG9uQ2xvc2VcbiAgICB9KTtcbiAgfTtcbn1cblxuWydzdWNjZXNzJywgJ2luZm8nLCAnd2FybmluZycsICdlcnJvcicsICdsb2FkaW5nJ10uZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICByZXR1cm4gYXR0YWNoVHlwZUFwaShhcGksIHR5cGUpO1xufSk7XG5hcGkud2FybiA9IGFwaS53YXJuaW5nO1xuYXBpLnVzZU1lc3NhZ2UgPSAoMCwgX3VzZU1lc3NhZ2VbXCJkZWZhdWx0XCJdKShnZXRSQ05vdGlmaWNhdGlvbkluc3RhbmNlLCBnZXRSQ05vdGljZVByb3BzKTtcbi8qKiBAcHJpdmF0ZSB0ZXN0IE9ubHkgZnVuY3Rpb24uIE5vdCB3b3JrIG9uIHByb2R1Y3Rpb24gKi9cblxudmFyIGdldEluc3RhbmNlID0gZnVuY3Rpb24gZ2V0SW5zdGFuY2UoKSB7XG4gIHJldHVybiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnID8gbWVzc2FnZUluc3RhbmNlIDogbnVsbDtcbn07XG5cbmV4cG9ydHMuZ2V0SW5zdGFuY2UgPSBnZXRJbnN0YW5jZTtcbnZhciBfZGVmYXVsdCA9IGFwaTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIikpO1xuXG52YXIgX29iamVjdFNwcmVhZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFNwcmVhZDJcIikpO1xuXG52YXIgX3V0aWxzID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xuXG52YXIgdHdvVG9uZUNvbG9yUGFsZXR0ZSA9IHtcbiAgcHJpbWFyeUNvbG9yOiAnIzMzMycsXG4gIHNlY29uZGFyeUNvbG9yOiAnI0U2RTZFNicsXG4gIGNhbGN1bGF0ZWQ6IGZhbHNlXG59O1xuXG5mdW5jdGlvbiBzZXRUd29Ub25lQ29sb3JzKF9yZWYpIHtcbiAgdmFyIHByaW1hcnlDb2xvciA9IF9yZWYucHJpbWFyeUNvbG9yLFxuICAgICAgc2Vjb25kYXJ5Q29sb3IgPSBfcmVmLnNlY29uZGFyeUNvbG9yO1xuICB0d29Ub25lQ29sb3JQYWxldHRlLnByaW1hcnlDb2xvciA9IHByaW1hcnlDb2xvcjtcbiAgdHdvVG9uZUNvbG9yUGFsZXR0ZS5zZWNvbmRhcnlDb2xvciA9IHNlY29uZGFyeUNvbG9yIHx8ICgwLCBfdXRpbHMuZ2V0U2Vjb25kYXJ5Q29sb3IpKHByaW1hcnlDb2xvcik7XG4gIHR3b1RvbmVDb2xvclBhbGV0dGUuY2FsY3VsYXRlZCA9ICEhc2Vjb25kYXJ5Q29sb3I7XG59XG5cbmZ1bmN0aW9uIGdldFR3b1RvbmVDb2xvcnMoKSB7XG4gIHJldHVybiAoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoe30sIHR3b1RvbmVDb2xvclBhbGV0dGUpO1xufVxuXG52YXIgSWNvbkJhc2UgPSBmdW5jdGlvbiBJY29uQmFzZShwcm9wcykge1xuICB2YXIgaWNvbiA9IHByb3BzLmljb24sXG4gICAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICBvbkNsaWNrID0gcHJvcHMub25DbGljayxcbiAgICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsXG4gICAgICBwcmltYXJ5Q29sb3IgPSBwcm9wcy5wcmltYXJ5Q29sb3IsXG4gICAgICBzZWNvbmRhcnlDb2xvciA9IHByb3BzLnNlY29uZGFyeUNvbG9yLFxuICAgICAgcmVzdFByb3BzID0gKDAsIF9vYmplY3RXaXRob3V0UHJvcGVydGllczIuZGVmYXVsdCkocHJvcHMsIFtcImljb25cIiwgXCJjbGFzc05hbWVcIiwgXCJvbkNsaWNrXCIsIFwic3R5bGVcIiwgXCJwcmltYXJ5Q29sb3JcIiwgXCJzZWNvbmRhcnlDb2xvclwiXSk7XG4gIHZhciBjb2xvcnMgPSB0d29Ub25lQ29sb3JQYWxldHRlO1xuXG4gIGlmIChwcmltYXJ5Q29sb3IpIHtcbiAgICBjb2xvcnMgPSB7XG4gICAgICBwcmltYXJ5Q29sb3I6IHByaW1hcnlDb2xvcixcbiAgICAgIHNlY29uZGFyeUNvbG9yOiBzZWNvbmRhcnlDb2xvciB8fCAoMCwgX3V0aWxzLmdldFNlY29uZGFyeUNvbG9yKShwcmltYXJ5Q29sb3IpXG4gICAgfTtcbiAgfVxuXG4gICgwLCBfdXRpbHMudXNlSW5zZXJ0U3R5bGVzKSgpO1xuICAoMCwgX3V0aWxzLndhcm5pbmcpKCgwLCBfdXRpbHMuaXNJY29uRGVmaW5pdGlvbikoaWNvbiksIFwiaWNvbiBzaG91bGQgYmUgaWNvbiBkZWZpbml0b24sIGJ1dCBnb3QgXCIuY29uY2F0KGljb24pKTtcblxuICBpZiAoISgwLCBfdXRpbHMuaXNJY29uRGVmaW5pdGlvbikoaWNvbikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciB0YXJnZXQgPSBpY29uO1xuXG4gIGlmICh0YXJnZXQgJiYgdHlwZW9mIHRhcmdldC5pY29uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdGFyZ2V0ID0gKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKCgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSh7fSwgdGFyZ2V0KSwge30sIHtcbiAgICAgIGljb246IHRhcmdldC5pY29uKGNvbG9ycy5wcmltYXJ5Q29sb3IsIGNvbG9ycy5zZWNvbmRhcnlDb2xvcilcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiAoMCwgX3V0aWxzLmdlbmVyYXRlKSh0YXJnZXQuaWNvbiwgXCJzdmctXCIuY29uY2F0KHRhcmdldC5uYW1lKSwgKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKHtcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICBvbkNsaWNrOiBvbkNsaWNrLFxuICAgIHN0eWxlOiBzdHlsZSxcbiAgICAnZGF0YS1pY29uJzogdGFyZ2V0Lm5hbWUsXG4gICAgd2lkdGg6ICcxZW0nLFxuICAgIGhlaWdodDogJzFlbScsXG4gICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnXG4gIH0sIHJlc3RQcm9wcykpO1xufTtcblxuSWNvbkJhc2UuZGlzcGxheU5hbWUgPSAnSWNvblJlYWN0Jztcbkljb25CYXNlLmdldFR3b1RvbmVDb2xvcnMgPSBnZXRUd29Ub25lQ29sb3JzO1xuSWNvbkJhc2Uuc2V0VHdvVG9uZUNvbG9ycyA9IHNldFR3b1RvbmVDb2xvcnM7XG52YXIgX2RlZmF1bHQgPSBJY29uQmFzZTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuaW5qZWN0Q1NTID0gaW5qZWN0Q1NTO1xuZXhwb3J0cy51cGRhdGVDU1MgPSB1cGRhdGVDU1M7XG5cbnZhciBfY2FuVXNlRG9tID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9jYW5Vc2VEb21cIikpO1xuXG52YXIgTUFSS19LRVkgPSBcInJjLXV0aWwta2V5XCI7XG5cbmZ1bmN0aW9uIGdldENvbnRhaW5lcihvcHRpb24pIHtcbiAgaWYgKG9wdGlvbi5hdHRhY2hUbykge1xuICAgIHJldHVybiBvcHRpb24uYXR0YWNoVG87XG4gIH1cblxuICB2YXIgaGVhZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgcmV0dXJuIGhlYWQgfHwgZG9jdW1lbnQuYm9keTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0Q1NTKGNzcykge1xuICB2YXIgX29wdGlvbiRjc3A7XG5cbiAgdmFyIG9wdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgaWYgKCEoMCwgX2NhblVzZURvbS5kZWZhdWx0KSgpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YXIgc3R5bGVOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcblxuICBpZiAoKF9vcHRpb24kY3NwID0gb3B0aW9uLmNzcCkgPT09IG51bGwgfHwgX29wdGlvbiRjc3AgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb24kY3NwLm5vbmNlKSB7XG4gICAgdmFyIF9vcHRpb24kY3NwMjtcblxuICAgIHN0eWxlTm9kZS5ub25jZSA9IChfb3B0aW9uJGNzcDIgPSBvcHRpb24uY3NwKSA9PT0gbnVsbCB8fCBfb3B0aW9uJGNzcDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb24kY3NwMi5ub25jZTtcbiAgfVxuXG4gIHN0eWxlTm9kZS5pbm5lckhUTUwgPSBjc3M7XG4gIHZhciBjb250YWluZXIgPSBnZXRDb250YWluZXIob3B0aW9uKTtcbiAgdmFyIGZpcnN0Q2hpbGQgPSBjb250YWluZXIuZmlyc3RDaGlsZDtcblxuICBpZiAob3B0aW9uLnByZXBlbmQgJiYgY29udGFpbmVyLnByZXBlbmQpIHtcbiAgICAvLyBVc2UgYHByZXBlbmRgIGZpcnN0XG4gICAgY29udGFpbmVyLnByZXBlbmQoc3R5bGVOb2RlKTtcbiAgfSBlbHNlIGlmIChvcHRpb24ucHJlcGVuZCAmJiBmaXJzdENoaWxkKSB7XG4gICAgLy8gRmFsbGJhY2sgdG8gYGluc2VydEJlZm9yZWAgbGlrZSBJRSBub3Qgc3VwcG9ydCBgcHJlcGVuZGBcbiAgICBjb250YWluZXIuaW5zZXJ0QmVmb3JlKHN0eWxlTm9kZSwgZmlyc3RDaGlsZCk7XG4gIH0gZWxzZSB7XG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHN0eWxlTm9kZSk7XG4gIH1cblxuICByZXR1cm4gc3R5bGVOb2RlO1xufVxuXG52YXIgY29udGFpbmVyQ2FjaGUgPSBuZXcgTWFwKCk7XG5cbmZ1bmN0aW9uIHVwZGF0ZUNTUyhjc3MsIGtleSkge1xuICB2YXIgb3B0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTtcbiAgdmFyIGNvbnRhaW5lciA9IGdldENvbnRhaW5lcihvcHRpb24pOyAvLyBHZXQgcmVhbCBwYXJlbnRcblxuICBpZiAoIWNvbnRhaW5lckNhY2hlLmhhcyhjb250YWluZXIpKSB7XG4gICAgdmFyIHBsYWNlaG9sZGVyU3R5bGUgPSBpbmplY3RDU1MoJycsIG9wdGlvbik7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBwbGFjZWhvbGRlclN0eWxlLnBhcmVudE5vZGU7XG4gICAgY29udGFpbmVyQ2FjaGUuc2V0KGNvbnRhaW5lciwgcGFyZW50Tm9kZSk7XG4gICAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZChwbGFjZWhvbGRlclN0eWxlKTtcbiAgfVxuXG4gIHZhciBleGlzdE5vZGUgPSBBcnJheS5mcm9tKGNvbnRhaW5lckNhY2hlLmdldChjb250YWluZXIpLmNoaWxkcmVuKS5maW5kKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUudGFnTmFtZSA9PT0gJ1NUWUxFJyAmJiBub2RlW01BUktfS0VZXSA9PT0ga2V5O1xuICB9KTtcblxuICBpZiAoZXhpc3ROb2RlKSB7XG4gICAgdmFyIF9vcHRpb24kY3NwMywgX29wdGlvbiRjc3A0O1xuXG4gICAgaWYgKCgoX29wdGlvbiRjc3AzID0gb3B0aW9uLmNzcCkgPT09IG51bGwgfHwgX29wdGlvbiRjc3AzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9uJGNzcDMubm9uY2UpICYmIGV4aXN0Tm9kZS5ub25jZSAhPT0gKChfb3B0aW9uJGNzcDQgPSBvcHRpb24uY3NwKSA9PT0gbnVsbCB8fCBfb3B0aW9uJGNzcDQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb24kY3NwNC5ub25jZSkpIHtcbiAgICAgIHZhciBfb3B0aW9uJGNzcDU7XG5cbiAgICAgIGV4aXN0Tm9kZS5ub25jZSA9IChfb3B0aW9uJGNzcDUgPSBvcHRpb24uY3NwKSA9PT0gbnVsbCB8fCBfb3B0aW9uJGNzcDUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb24kY3NwNS5ub25jZTtcbiAgICB9XG5cbiAgICBpZiAoZXhpc3ROb2RlLmlubmVySFRNTCAhPT0gY3NzKSB7XG4gICAgICBleGlzdE5vZGUuaW5uZXJIVE1MID0gY3NzO1xuICAgIH1cblxuICAgIHJldHVybiBleGlzdE5vZGU7XG4gIH1cblxuICB2YXIgbmV3Tm9kZSA9IGluamVjdENTUyhjc3MsIG9wdGlvbik7XG4gIG5ld05vZGVbTUFSS19LRVldID0ga2V5O1xuICByZXR1cm4gbmV3Tm9kZTtcbn0iLCIndXNlIHN0cmljdCc7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG4gIH0pO1xuICBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG4gIFxuICB2YXIgX0Nsb3NlQ2lyY2xlRmlsbGVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCcuL2xpYi9pY29ucy9DbG9zZUNpcmNsZUZpbGxlZCcpKTtcbiAgXG4gIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cbiAgXG4gIHZhciBfZGVmYXVsdCA9IF9DbG9zZUNpcmNsZUZpbGxlZDtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG4gIG1vZHVsZS5leHBvcnRzID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlV2lsZGNhcmRcIik7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdXNlTm90aWZpY2F0aW9uO1xuXG52YXIgX3RvQ29uc3VtYWJsZUFycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIikpO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIF9zbGljZWRUb0FycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfTm90aWNlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9Ob3RpY2VcIikpO1xuXG5mdW5jdGlvbiB1c2VOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSW5zdGFuY2UpIHtcbiAgdmFyIGNyZWF0ZWRSZWYgPSBSZWFjdC51c2VSZWYoe30pO1xuXG4gIHZhciBfUmVhY3QkdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZShbXSksXG4gICAgICBfUmVhY3QkdXNlU3RhdGUyID0gKDAsIF9zbGljZWRUb0FycmF5Mi5kZWZhdWx0KShfUmVhY3QkdXNlU3RhdGUsIDIpLFxuICAgICAgZWxlbWVudHMgPSBfUmVhY3QkdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0RWxlbWVudHMgPSBfUmVhY3QkdXNlU3RhdGUyWzFdO1xuXG4gIGZ1bmN0aW9uIG5vdGlmeShub3RpY2VQcm9wcykge1xuICAgIHZhciBmaXJzdE1vdW50ID0gdHJ1ZTtcbiAgICBub3RpZmljYXRpb25JbnN0YW5jZS5hZGQobm90aWNlUHJvcHMsIGZ1bmN0aW9uIChkaXYsIHByb3BzKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcHMua2V5O1xuXG4gICAgICBpZiAoZGl2ICYmICghY3JlYXRlZFJlZi5jdXJyZW50W2tleV0gfHwgZmlyc3RNb3VudCkpIHtcbiAgICAgICAgdmFyIG5vdGljZUVsZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9Ob3RpY2UuZGVmYXVsdCwgKDAsIF9leHRlbmRzMi5kZWZhdWx0KSh7fSwgcHJvcHMsIHtcbiAgICAgICAgICBob2xkZXI6IGRpdlxuICAgICAgICB9KSk7XG4gICAgICAgIGNyZWF0ZWRSZWYuY3VycmVudFtrZXldID0gbm90aWNlRWxlO1xuICAgICAgICBzZXRFbGVtZW50cyhmdW5jdGlvbiAob3JpZ2luRWxlbWVudHMpIHtcbiAgICAgICAgICB2YXIgaW5kZXggPSBvcmlnaW5FbGVtZW50cy5maW5kSW5kZXgoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZS5rZXkgPT09IHByb3BzLmtleTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQoKDAsIF90b0NvbnN1bWFibGVBcnJheTIuZGVmYXVsdCkob3JpZ2luRWxlbWVudHMpLCBbbm90aWNlRWxlXSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGNsb25lTGlzdCA9ICgwLCBfdG9Db25zdW1hYmxlQXJyYXkyLmRlZmF1bHQpKG9yaWdpbkVsZW1lbnRzKTtcbiAgICAgICAgICBjbG9uZUxpc3RbaW5kZXhdID0gbm90aWNlRWxlO1xuICAgICAgICAgIHJldHVybiBjbG9uZUxpc3Q7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBmaXJzdE1vdW50ID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gW25vdGlmeSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGVsZW1lbnRzKV07XG59IiwiJ3VzZSBzdHJpY3QnO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxuICB9KTtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuICBcbiAgdmFyIF9DbG9zZU91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCcuL2xpYi9pY29ucy9DbG9zZU91dGxpbmVkJykpO1xuICBcbiAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuICBcbiAgdmFyIF9kZWZhdWx0ID0gX0Nsb3NlT3V0bGluZWQ7XG4gIGV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuICBtb2R1bGUuZXhwb3J0cyA9IF9kZWZhdWx0OyIsIid1c2Ugc3RyaWN0JztcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbiAgfSk7XG4gIGV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbiAgXG4gIHZhciBfTGVmdE91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCcuL2xpYi9pY29ucy9MZWZ0T3V0bGluZWQnKSk7XG4gIFxuICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG4gIFxuICB2YXIgX2RlZmF1bHQgPSBfTGVmdE91dGxpbmVkO1xuICBleHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcbiAgbW9kdWxlLmV4cG9ydHMgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfZXh0ZW5kczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIikpO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX29taXQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYy11dGlsL2xpYi9vbWl0XCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfcmNTZWxlY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmMtc2VsZWN0XCIpKTtcblxudmFyIF9jb25maWdQcm92aWRlciA9IHJlcXVpcmUoXCIuLi9jb25maWctcHJvdmlkZXJcIik7XG5cbnZhciBfaWNvblV0aWwgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWxzL2ljb25VdGlsXCIpKTtcblxudmFyIF9TaXplQ29udGV4dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2NvbmZpZy1wcm92aWRlci9TaXplQ29udGV4dFwiKSk7XG5cbnZhciBfbW90aW9uID0gcmVxdWlyZShcIi4uL191dGlsL21vdGlvblwiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG4vLyBUT0RPOiA0LjAgLSBjb2RlbW9kIHNob3VsZCBoZWxwIHRvIGNoYW5nZSBgZmlsdGVyT3B0aW9uYCB0byBzdXBwb3J0IG5vZGUgcHJvcHMuXG52YXIgX19yZXN0ID0gdm9pZCAwICYmICh2b2lkIDApLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG4gIH1cblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxudmFyIFNFQ1JFVF9DT01CT0JPWF9NT0RFX0RPX05PVF9VU0UgPSAnU0VDUkVUX0NPTUJPQk9YX01PREVfRE9fTk9UX1VTRSc7XG5cbnZhciBJbnRlcm5hbFNlbGVjdCA9IGZ1bmN0aW9uIEludGVybmFsU2VsZWN0KF9hLCByZWYpIHtcbiAgdmFyIF9jbGFzc05hbWVzMjtcblxuICB2YXIgY3VzdG9taXplUHJlZml4Q2xzID0gX2EucHJlZml4Q2xzLFxuICAgICAgX2EkYm9yZGVyZWQgPSBfYS5ib3JkZXJlZCxcbiAgICAgIGJvcmRlcmVkID0gX2EkYm9yZGVyZWQgPT09IHZvaWQgMCA/IHRydWUgOiBfYSRib3JkZXJlZCxcbiAgICAgIGNsYXNzTmFtZSA9IF9hLmNsYXNzTmFtZSxcbiAgICAgIGdldFBvcHVwQ29udGFpbmVyID0gX2EuZ2V0UG9wdXBDb250YWluZXIsXG4gICAgICBkcm9wZG93bkNsYXNzTmFtZSA9IF9hLmRyb3Bkb3duQ2xhc3NOYW1lLFxuICAgICAgX2EkbGlzdEhlaWdodCA9IF9hLmxpc3RIZWlnaHQsXG4gICAgICBsaXN0SGVpZ2h0ID0gX2EkbGlzdEhlaWdodCA9PT0gdm9pZCAwID8gMjU2IDogX2EkbGlzdEhlaWdodCxcbiAgICAgIF9hJGxpc3RJdGVtSGVpZ2h0ID0gX2EubGlzdEl0ZW1IZWlnaHQsXG4gICAgICBsaXN0SXRlbUhlaWdodCA9IF9hJGxpc3RJdGVtSGVpZ2h0ID09PSB2b2lkIDAgPyAyNCA6IF9hJGxpc3RJdGVtSGVpZ2h0LFxuICAgICAgY3VzdG9taXplU2l6ZSA9IF9hLnNpemUsXG4gICAgICBub3RGb3VuZENvbnRlbnQgPSBfYS5ub3RGb3VuZENvbnRlbnQsXG4gICAgICBwcm9wcyA9IF9fcmVzdChfYSwgW1wicHJlZml4Q2xzXCIsIFwiYm9yZGVyZWRcIiwgXCJjbGFzc05hbWVcIiwgXCJnZXRQb3B1cENvbnRhaW5lclwiLCBcImRyb3Bkb3duQ2xhc3NOYW1lXCIsIFwibGlzdEhlaWdodFwiLCBcImxpc3RJdGVtSGVpZ2h0XCIsIFwic2l6ZVwiLCBcIm5vdEZvdW5kQ29udGVudFwiXSk7XG5cbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChfY29uZmlnUHJvdmlkZXIuQ29uZmlnQ29udGV4dCksXG4gICAgICBnZXRDb250ZXh0UG9wdXBDb250YWluZXIgPSBfUmVhY3QkdXNlQ29udGV4dC5nZXRQb3B1cENvbnRhaW5lcixcbiAgICAgIGdldFByZWZpeENscyA9IF9SZWFjdCR1c2VDb250ZXh0LmdldFByZWZpeENscyxcbiAgICAgIHJlbmRlckVtcHR5ID0gX1JlYWN0JHVzZUNvbnRleHQucmVuZGVyRW1wdHksXG4gICAgICBkaXJlY3Rpb24gPSBfUmVhY3QkdXNlQ29udGV4dC5kaXJlY3Rpb24sXG4gICAgICB2aXJ0dWFsID0gX1JlYWN0JHVzZUNvbnRleHQudmlydHVhbCxcbiAgICAgIGRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aCA9IF9SZWFjdCR1c2VDb250ZXh0LmRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aDtcblxuICB2YXIgc2l6ZSA9IFJlYWN0LnVzZUNvbnRleHQoX1NpemVDb250ZXh0W1wiZGVmYXVsdFwiXSk7XG4gIHZhciBwcmVmaXhDbHMgPSBnZXRQcmVmaXhDbHMoJ3NlbGVjdCcsIGN1c3RvbWl6ZVByZWZpeENscyk7XG4gIHZhciByb290UHJlZml4Q2xzID0gZ2V0UHJlZml4Q2xzKCk7XG4gIHZhciBtb2RlID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG0gPSBwcm9wcy5tb2RlO1xuXG4gICAgaWYgKG0gPT09ICdjb21ib2JveCcpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKG0gPT09IFNFQ1JFVF9DT01CT0JPWF9NT0RFX0RPX05PVF9VU0UpIHtcbiAgICAgIHJldHVybiAnY29tYm9ib3gnO1xuICAgIH1cblxuICAgIHJldHVybiBtO1xuICB9LCBbcHJvcHMubW9kZV0pO1xuICB2YXIgaXNNdWx0aXBsZSA9IG1vZGUgPT09ICdtdWx0aXBsZScgfHwgbW9kZSA9PT0gJ3RhZ3MnOyAvLyA9PT09PT09PT09PT09PT09PT09PT0gRW1wdHkgPT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIG1lcmdlZE5vdEZvdW5kO1xuXG4gIGlmIChub3RGb3VuZENvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgIG1lcmdlZE5vdEZvdW5kID0gbm90Rm91bmRDb250ZW50O1xuICB9IGVsc2UgaWYgKG1vZGUgPT09ICdjb21ib2JveCcpIHtcbiAgICBtZXJnZWROb3RGb3VuZCA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgbWVyZ2VkTm90Rm91bmQgPSByZW5kZXJFbXB0eSgnU2VsZWN0Jyk7XG4gIH0gLy8gPT09PT09PT09PT09PT09PT09PT09IEljb25zID09PT09PT09PT09PT09PT09PT09PVxuXG5cbiAgdmFyIF9nZXRJY29ucyA9ICgwLCBfaWNvblV0aWxbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCBwcm9wcyksIHtcbiAgICBtdWx0aXBsZTogaXNNdWx0aXBsZSxcbiAgICBwcmVmaXhDbHM6IHByZWZpeENsc1xuICB9KSksXG4gICAgICBzdWZmaXhJY29uID0gX2dldEljb25zLnN1ZmZpeEljb24sXG4gICAgICBpdGVtSWNvbiA9IF9nZXRJY29ucy5pdGVtSWNvbixcbiAgICAgIHJlbW92ZUljb24gPSBfZ2V0SWNvbnMucmVtb3ZlSWNvbixcbiAgICAgIGNsZWFySWNvbiA9IF9nZXRJY29ucy5jbGVhckljb247XG5cbiAgdmFyIHNlbGVjdFByb3BzID0gKDAsIF9vbWl0W1wiZGVmYXVsdFwiXSkocHJvcHMsIFsnc3VmZml4SWNvbicsICdpdGVtSWNvbiddKTtcbiAgdmFyIHJjU2VsZWN0UnRsRHJvcERvd25DbGFzc05hbWUgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShkcm9wZG93bkNsYXNzTmFtZSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKSh7fSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1kcm9wZG93bi1cIikuY29uY2F0KGRpcmVjdGlvbiksIGRpcmVjdGlvbiA9PT0gJ3J0bCcpKTtcbiAgdmFyIG1lcmdlZFNpemUgPSBjdXN0b21pemVTaXplIHx8IHNpemU7XG4gIHZhciBtZXJnZWRDbGFzc05hbWUgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKSgoX2NsYXNzTmFtZXMyID0ge30sICgwLCBfZGVmaW5lUHJvcGVydHkyW1wiZGVmYXVsdFwiXSkoX2NsYXNzTmFtZXMyLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWxnXCIpLCBtZXJnZWRTaXplID09PSAnbGFyZ2UnKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lczIsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc21cIiksIG1lcmdlZFNpemUgPT09ICdzbWFsbCcpLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzMiwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ydGxcIiksIGRpcmVjdGlvbiA9PT0gJ3J0bCcpLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzMiwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ib3JkZXJsZXNzXCIpLCAhYm9yZGVyZWQpLCBfY2xhc3NOYW1lczIpLCBjbGFzc05hbWUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX3JjU2VsZWN0W1wiZGVmYXVsdFwiXSwgKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHtcbiAgICByZWY6IHJlZixcbiAgICB2aXJ0dWFsOiB2aXJ0dWFsLFxuICAgIGRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aDogZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoXG4gIH0sIHNlbGVjdFByb3BzLCB7XG4gICAgdHJhbnNpdGlvbk5hbWU6ICgwLCBfbW90aW9uLmdldFRyYW5zaXRpb25OYW1lKShyb290UHJlZml4Q2xzLCAnc2xpZGUtdXAnLCBwcm9wcy50cmFuc2l0aW9uTmFtZSksXG4gICAgbGlzdEhlaWdodDogbGlzdEhlaWdodCxcbiAgICBsaXN0SXRlbUhlaWdodDogbGlzdEl0ZW1IZWlnaHQsXG4gICAgbW9kZTogbW9kZSxcbiAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICBkaXJlY3Rpb246IGRpcmVjdGlvbixcbiAgICBpbnB1dEljb246IHN1ZmZpeEljb24sXG4gICAgbWVudUl0ZW1TZWxlY3RlZEljb246IGl0ZW1JY29uLFxuICAgIHJlbW92ZUljb246IHJlbW92ZUljb24sXG4gICAgY2xlYXJJY29uOiBjbGVhckljb24sXG4gICAgbm90Rm91bmRDb250ZW50OiBtZXJnZWROb3RGb3VuZCxcbiAgICBjbGFzc05hbWU6IG1lcmdlZENsYXNzTmFtZSxcbiAgICBnZXRQb3B1cENvbnRhaW5lcjogZ2V0UG9wdXBDb250YWluZXIgfHwgZ2V0Q29udGV4dFBvcHVwQ29udGFpbmVyLFxuICAgIGRyb3Bkb3duQ2xhc3NOYW1lOiByY1NlbGVjdFJ0bERyb3BEb3duQ2xhc3NOYW1lXG4gIH0pKTtcbn07XG5cbnZhciBTZWxlY3RSZWYgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihJbnRlcm5hbFNlbGVjdCk7XG52YXIgU2VsZWN0ID0gU2VsZWN0UmVmO1xuU2VsZWN0LlNFQ1JFVF9DT01CT0JPWF9NT0RFX0RPX05PVF9VU0UgPSBTRUNSRVRfQ09NQk9CT1hfTU9ERV9ET19OT1RfVVNFO1xuU2VsZWN0Lk9wdGlvbiA9IF9yY1NlbGVjdC5PcHRpb247XG5TZWxlY3QuT3B0R3JvdXAgPSBfcmNTZWxlY3QuT3B0R3JvdXA7XG52YXIgX2RlZmF1bHQgPSBTZWxlY3Q7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIid1c2Ugc3RyaWN0JztcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbiAgfSk7XG4gIGV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbiAgXG4gIHZhciBfRG93bk91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCcuL2xpYi9pY29ucy9Eb3duT3V0bGluZWQnKSk7XG4gIFxuICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG4gIFxuICB2YXIgX2RlZmF1bHQgPSBfRG93bk91dGxpbmVkO1xuICBleHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcbiAgbW9kdWxlLmV4cG9ydHMgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9zbGljZWRUb0FycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiKSk7XG5cbnZhciBfcmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG5cbnZhciBfcmVzcG9uc2l2ZU9ic2VydmUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9fdXRpbC9yZXNwb25zaXZlT2JzZXJ2ZVwiKSk7XG5cbmZ1bmN0aW9uIHVzZUJyZWFrcG9pbnQoKSB7XG4gIHZhciBfdXNlU3RhdGUgPSAoMCwgX3JlYWN0LnVzZVN0YXRlKSh7fSksXG4gICAgICBfdXNlU3RhdGUyID0gKDAsIF9zbGljZWRUb0FycmF5MltcImRlZmF1bHRcIl0pKF91c2VTdGF0ZSwgMiksXG4gICAgICBzY3JlZW5zID0gX3VzZVN0YXRlMlswXSxcbiAgICAgIHNldFNjcmVlbnMgPSBfdXNlU3RhdGUyWzFdO1xuXG4gICgwLCBfcmVhY3QudXNlRWZmZWN0KShmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHRva2VuID0gX3Jlc3BvbnNpdmVPYnNlcnZlW1wiZGVmYXVsdFwiXS5zdWJzY3JpYmUoZnVuY3Rpb24gKHN1cHBvcnRTY3JlZW5zKSB7XG4gICAgICBzZXRTY3JlZW5zKHN1cHBvcnRTY3JlZW5zKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3Jlc3BvbnNpdmVPYnNlcnZlW1wiZGVmYXVsdFwiXS51bnN1YnNjcmliZSh0b2tlbik7XG4gICAgfTtcbiAgfSwgW10pO1xuICByZXR1cm4gc2NyZWVucztcbn1cblxudmFyIF9kZWZhdWx0ID0gdXNlQnJlYWtwb2ludDtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5nZXRLZXkgPSBnZXRLZXk7XG5leHBvcnRzLndhcm5pbmdXaXRob3V0S2V5ID0gd2FybmluZ1dpdGhvdXRLZXk7XG5leHBvcnRzLmNvbnZlcnRUcmVlVG9EYXRhID0gY29udmVydFRyZWVUb0RhdGE7XG5leHBvcnRzLmZsYXR0ZW5UcmVlRGF0YSA9IGZsYXR0ZW5UcmVlRGF0YTtcbmV4cG9ydHMudHJhdmVyc2VEYXRhTm9kZXMgPSB0cmF2ZXJzZURhdGFOb2RlcztcbmV4cG9ydHMuY29udmVydERhdGFUb0VudGl0aWVzID0gY29udmVydERhdGFUb0VudGl0aWVzO1xuZXhwb3J0cy5nZXRUcmVlTm9kZVByb3BzID0gZ2V0VHJlZU5vZGVQcm9wcztcbmV4cG9ydHMuY29udmVydE5vZGVQcm9wc1RvRXZlbnREYXRhID0gY29udmVydE5vZGVQcm9wc1RvRXZlbnREYXRhO1xuXG52YXIgX3R5cGVvZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKSk7XG5cbnZhciBfdG9Db25zdW1hYmxlQXJyYXkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiKSk7XG5cbnZhciBfb2JqZWN0U3ByZWFkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMlwiKSk7XG5cbnZhciBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKSk7XG5cbnZhciBfdG9BcnJheSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXV0aWwvbGliL0NoaWxkcmVuL3RvQXJyYXlcIikpO1xuXG52YXIgX3dhcm5pbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYy11dGlsL2xpYi93YXJuaW5nXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG5cbmZ1bmN0aW9uIGdldEtleShrZXksIHBvcykge1xuICBpZiAoa2V5ICE9PSBudWxsICYmIGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIHJldHVybiBwb3M7XG59XG4vKipcbiAqIFdhcm5pbmcgaWYgVHJlZU5vZGUgZG8gbm90IHByb3ZpZGVzIGtleVxuICovXG5cblxuZnVuY3Rpb24gd2FybmluZ1dpdGhvdXRLZXkoKSB7XG4gIHZhciB0cmVlRGF0YSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogW107XG4gIHZhciBrZXlzID0gbmV3IE1hcCgpO1xuXG4gIGZ1bmN0aW9uIGRpZyhsaXN0KSB7XG4gICAgdmFyIHBhdGggPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICcnO1xuICAgIChsaXN0IHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uICh0cmVlTm9kZSkge1xuICAgICAgdmFyIGtleSA9IHRyZWVOb2RlLmtleSxcbiAgICAgICAgICBjaGlsZHJlbiA9IHRyZWVOb2RlLmNoaWxkcmVuO1xuICAgICAgKDAsIF93YXJuaW5nLmRlZmF1bHQpKGtleSAhPT0gbnVsbCAmJiBrZXkgIT09IHVuZGVmaW5lZCwgXCJUcmVlIG5vZGUgbXVzdCBoYXZlIGEgY2VydGFpbiBrZXk6IFtcIi5jb25jYXQocGF0aCkuY29uY2F0KGtleSwgXCJdXCIpKTtcbiAgICAgIHZhciByZWNvcmRLZXkgPSBTdHJpbmcoa2V5KTtcbiAgICAgICgwLCBfd2FybmluZy5kZWZhdWx0KSgha2V5cy5oYXMocmVjb3JkS2V5KSB8fCBrZXkgPT09IG51bGwgfHwga2V5ID09PSB1bmRlZmluZWQsIFwiU2FtZSAna2V5JyBleGlzdCBpbiB0aGUgVHJlZTogXCIuY29uY2F0KHJlY29yZEtleSkpO1xuICAgICAga2V5cy5zZXQocmVjb3JkS2V5LCB0cnVlKTtcbiAgICAgIGRpZyhjaGlsZHJlbiwgXCJcIi5jb25jYXQocGF0aCkuY29uY2F0KHJlY29yZEtleSwgXCIgPiBcIikpO1xuICAgIH0pO1xuICB9XG5cbiAgZGlnKHRyZWVEYXRhKTtcbn1cbi8qKlxuICogQ29udmVydCBgY2hpbGRyZW5gIG9mIFRyZWUgaW50byBgdHJlZURhdGFgIHN0cnVjdHVyZS5cbiAqL1xuXG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmVlVG9EYXRhKHJvb3ROb2Rlcykge1xuICBmdW5jdGlvbiBkaWcobm9kZSkge1xuICAgIHZhciB0cmVlTm9kZXMgPSAoMCwgX3RvQXJyYXkuZGVmYXVsdCkobm9kZSk7XG4gICAgcmV0dXJuIHRyZWVOb2Rlcy5tYXAoZnVuY3Rpb24gKHRyZWVOb2RlKSB7XG4gICAgICAvLyBGaWx0ZXIgaW52YWxpZGF0ZSBub2RlXG4gICAgICBpZiAoISgwLCBfdXRpbC5pc1RyZWVOb2RlKSh0cmVlTm9kZSkpIHtcbiAgICAgICAgKDAsIF93YXJuaW5nLmRlZmF1bHQpKCF0cmVlTm9kZSwgJ1RyZWUvVHJlZU5vZGUgY2FuIG9ubHkgYWNjZXB0IFRyZWVOb2RlIGFzIGNoaWxkcmVuLicpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIGtleSA9IHRyZWVOb2RlLmtleTtcbiAgICAgIHZhciBfdHJlZU5vZGUkcHJvcHMgPSB0cmVlTm9kZS5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90cmVlTm9kZSRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICByZXN0ID0gKDAsIF9vYmplY3RXaXRob3V0UHJvcGVydGllczIuZGVmYXVsdCkoX3RyZWVOb2RlJHByb3BzLCBbXCJjaGlsZHJlblwiXSk7XG4gICAgICB2YXIgZGF0YU5vZGUgPSAoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoe1xuICAgICAgICBrZXk6IGtleVxuICAgICAgfSwgcmVzdCk7XG4gICAgICB2YXIgcGFyc2VkQ2hpbGRyZW4gPSBkaWcoY2hpbGRyZW4pO1xuXG4gICAgICBpZiAocGFyc2VkQ2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIGRhdGFOb2RlLmNoaWxkcmVuID0gcGFyc2VkQ2hpbGRyZW47XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXRhTm9kZTtcbiAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKGRhdGFOb2RlKSB7XG4gICAgICByZXR1cm4gZGF0YU5vZGU7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZGlnKHJvb3ROb2Rlcyk7XG59XG4vKipcbiAqIEZsYXQgbmVzdCB0cmVlIGRhdGEgaW50byBmbGF0dGVuIGxpc3QuIFRoaXMgaXMgdXNlZCBmb3IgdmlydHVhbCBsaXN0IHJlbmRlci5cbiAqIEBwYXJhbSB0cmVlTm9kZUxpc3QgT3JpZ2luIGRhdGEgbm9kZSBsaXN0XG4gKiBAcGFyYW0gZXhwYW5kZWRLZXlzXG4gKiBuZWVkIGV4cGFuZGVkIGtleXMsIHByb3ZpZGVzIGB0cnVlYCBtZWFucyBhbGwgZXhwYW5kZWQgKHVzZWQgaW4gYHJjLXRyZWUtc2VsZWN0YCkuXG4gKi9cblxuXG5mdW5jdGlvbiBmbGF0dGVuVHJlZURhdGEoKSB7XG4gIHZhciB0cmVlTm9kZUxpc3QgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IFtdO1xuICB2YXIgZXhwYW5kZWRLZXlzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBbXTtcbiAgdmFyIGV4cGFuZGVkS2V5U2V0ID0gbmV3IFNldChleHBhbmRlZEtleXMgPT09IHRydWUgPyBbXSA6IGV4cGFuZGVkS2V5cyk7XG4gIHZhciBmbGF0dGVuTGlzdCA9IFtdO1xuXG4gIGZ1bmN0aW9uIGRpZyhsaXN0KSB7XG4gICAgdmFyIHBhcmVudCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogbnVsbDtcbiAgICByZXR1cm4gbGlzdC5tYXAoZnVuY3Rpb24gKHRyZWVOb2RlLCBpbmRleCkge1xuICAgICAgdmFyIHBvcyA9ICgwLCBfdXRpbC5nZXRQb3NpdGlvbikocGFyZW50ID8gcGFyZW50LnBvcyA6ICcwJywgaW5kZXgpO1xuICAgICAgdmFyIG1lcmdlZEtleSA9IGdldEtleSh0cmVlTm9kZS5rZXksIHBvcyk7IC8vIEFkZCBGbGF0dGVuRGF0YU5vZGUgaW50byBsaXN0XG5cbiAgICAgIHZhciBmbGF0dGVuTm9kZSA9ICgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSgoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoe30sIHRyZWVOb2RlKSwge30sIHtcbiAgICAgICAgcGFyZW50OiBwYXJlbnQsXG4gICAgICAgIHBvczogcG9zLFxuICAgICAgICBjaGlsZHJlbjogbnVsbCxcbiAgICAgICAgZGF0YTogdHJlZU5vZGUsXG4gICAgICAgIGlzU3RhcnQ6IFtdLmNvbmNhdCgoMCwgX3RvQ29uc3VtYWJsZUFycmF5Mi5kZWZhdWx0KShwYXJlbnQgPyBwYXJlbnQuaXNTdGFydCA6IFtdKSwgW2luZGV4ID09PSAwXSksXG4gICAgICAgIGlzRW5kOiBbXS5jb25jYXQoKDAsIF90b0NvbnN1bWFibGVBcnJheTIuZGVmYXVsdCkocGFyZW50ID8gcGFyZW50LmlzRW5kIDogW10pLCBbaW5kZXggPT09IGxpc3QubGVuZ3RoIC0gMV0pXG4gICAgICB9KTtcbiAgICAgIGZsYXR0ZW5MaXN0LnB1c2goZmxhdHRlbk5vZGUpOyAvLyBMb29wIHRyZWVOb2RlIGNoaWxkcmVuXG5cbiAgICAgIGlmIChleHBhbmRlZEtleXMgPT09IHRydWUgfHwgZXhwYW5kZWRLZXlTZXQuaGFzKG1lcmdlZEtleSkpIHtcbiAgICAgICAgZmxhdHRlbk5vZGUuY2hpbGRyZW4gPSBkaWcodHJlZU5vZGUuY2hpbGRyZW4gfHwgW10sIGZsYXR0ZW5Ob2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZsYXR0ZW5Ob2RlLmNoaWxkcmVuID0gW107XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmbGF0dGVuTm9kZTtcbiAgICB9KTtcbiAgfVxuXG4gIGRpZyh0cmVlTm9kZUxpc3QpO1xuICByZXR1cm4gZmxhdHRlbkxpc3Q7XG59XG4vKipcbiAqIFRyYXZlcnNlIGFsbCB0aGUgZGF0YSBieSBgdHJlZURhdGFgLlxuICogUGxlYXNlIG5vdCB1c2UgaXQgb3V0IG9mIHRoZSBgcmMtdHJlZWAgc2luY2Ugd2UgbWF5IHJlZmFjdG9yIHRoaXMgY29kZS5cbiAqL1xuXG5cbmZ1bmN0aW9uIHRyYXZlcnNlRGF0YU5vZGVzKGRhdGFOb2RlcywgY2FsbGJhY2ssIC8vIFRvIGF2b2lkIHRvbyBtYW55IHBhcmFtcywgbGV0IHVzZSBjb25maWcgaW5zdGVhZCBvZiBvcmlnaW4gcGFyYW1cbmNvbmZpZykge1xuICAvLyBJbml0IGNvbmZpZ1xuICB2YXIgZXh0ZXJuYWxHZXRLZXkgPSBudWxsO1xuICB2YXIgY2hpbGRyZW5Qcm9wTmFtZTtcbiAgdmFyIGNvbmZpZ1R5cGUgPSAoMCwgX3R5cGVvZjIuZGVmYXVsdCkoY29uZmlnKTtcblxuICBpZiAoY29uZmlnVHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fCBjb25maWdUeXBlID09PSAnc3RyaW5nJykge1xuICAgIC8vIExlZ2FjeSBnZXRLZXkgcGFyYW1cbiAgICBleHRlcm5hbEdldEtleSA9IGNvbmZpZztcbiAgfSBlbHNlIGlmIChjb25maWcgJiYgY29uZmlnVHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBjaGlsZHJlblByb3BOYW1lID0gY29uZmlnLmNoaWxkcmVuUHJvcE5hbWU7XG4gICAgZXh0ZXJuYWxHZXRLZXkgPSBjb25maWcuZXh0ZXJuYWxHZXRLZXk7XG4gIH1cblxuICBjaGlsZHJlblByb3BOYW1lID0gY2hpbGRyZW5Qcm9wTmFtZSB8fCAnY2hpbGRyZW4nOyAvLyBHZXQga2V5c1xuXG4gIHZhciBzeW50aGV0aWNHZXRLZXk7XG5cbiAgaWYgKGV4dGVybmFsR2V0S2V5KSB7XG4gICAgaWYgKHR5cGVvZiBleHRlcm5hbEdldEtleSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHN5bnRoZXRpY0dldEtleSA9IGZ1bmN0aW9uIHN5bnRoZXRpY0dldEtleShub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlW2V4dGVybmFsR2V0S2V5XTtcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZXh0ZXJuYWxHZXRLZXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHN5bnRoZXRpY0dldEtleSA9IGZ1bmN0aW9uIHN5bnRoZXRpY0dldEtleShub2RlKSB7XG4gICAgICAgIHJldHVybiBleHRlcm5hbEdldEtleShub2RlKTtcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHN5bnRoZXRpY0dldEtleSA9IGZ1bmN0aW9uIHN5bnRoZXRpY0dldEtleShub2RlLCBwb3MpIHtcbiAgICAgIHJldHVybiBnZXRLZXkobm9kZS5rZXksIHBvcyk7XG4gICAgfTtcbiAgfSAvLyBQcm9jZXNzXG5cblxuICBmdW5jdGlvbiBwcm9jZXNzTm9kZShub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gICAgdmFyIGNoaWxkcmVuID0gbm9kZSA/IG5vZGVbY2hpbGRyZW5Qcm9wTmFtZV0gOiBkYXRhTm9kZXM7XG4gICAgdmFyIHBvcyA9IG5vZGUgPyAoMCwgX3V0aWwuZ2V0UG9zaXRpb24pKHBhcmVudC5wb3MsIGluZGV4KSA6ICcwJzsgLy8gUHJvY2VzcyBub2RlIGlmIGlzIG5vdCByb290XG5cbiAgICBpZiAobm9kZSkge1xuICAgICAgdmFyIGtleSA9IHN5bnRoZXRpY0dldEtleShub2RlLCBwb3MpO1xuICAgICAgdmFyIGRhdGEgPSB7XG4gICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgcG9zOiBwb3MsXG4gICAgICAgIGtleToga2V5LFxuICAgICAgICBwYXJlbnRQb3M6IHBhcmVudC5ub2RlID8gcGFyZW50LnBvcyA6IG51bGwsXG4gICAgICAgIGxldmVsOiBwYXJlbnQubGV2ZWwgKyAxXG4gICAgICB9O1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSAvLyBQcm9jZXNzIGNoaWxkcmVuIG5vZGVcblxuXG4gICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChzdWJOb2RlLCBzdWJJbmRleCkge1xuICAgICAgICBwcm9jZXNzTm9kZShzdWJOb2RlLCBzdWJJbmRleCwge1xuICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgcG9zOiBwb3MsXG4gICAgICAgICAgbGV2ZWw6IHBhcmVudCA/IHBhcmVudC5sZXZlbCArIDEgOiAtMVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3NOb2RlKG51bGwpO1xufVxuLyoqXG4gKiBDb252ZXJ0IGB0cmVlRGF0YWAgaW50byBlbnRpdHkgcmVjb3Jkcy5cbiAqL1xuXG5cbmZ1bmN0aW9uIGNvbnZlcnREYXRhVG9FbnRpdGllcyhkYXRhTm9kZXMpIHtcbiAgdmFyIF9yZWYgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9LFxuICAgICAgaW5pdFdyYXBwZXIgPSBfcmVmLmluaXRXcmFwcGVyLFxuICAgICAgcHJvY2Vzc0VudGl0eSA9IF9yZWYucHJvY2Vzc0VudGl0eSxcbiAgICAgIG9uUHJvY2Vzc0ZpbmlzaGVkID0gX3JlZi5vblByb2Nlc3NGaW5pc2hlZCxcbiAgICAgIGV4dGVybmFsR2V0S2V5ID0gX3JlZi5leHRlcm5hbEdldEtleSxcbiAgICAgIGNoaWxkcmVuUHJvcE5hbWUgPSBfcmVmLmNoaWxkcmVuUHJvcE5hbWU7XG5cbiAgdmFyXG4gIC8qKiBAZGVwcmVjYXRlZCBVc2UgYGNvbmZpZy5leHRlcm5hbEdldEtleWAgaW5zdGVhZCAqL1xuICBsZWdhY3lFeHRlcm5hbEdldEtleSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkO1xuICAvLyBJbml0IGNvbmZpZ1xuICB2YXIgbWVyZ2VkRXh0ZXJuYWxHZXRLZXkgPSBleHRlcm5hbEdldEtleSB8fCBsZWdhY3lFeHRlcm5hbEdldEtleTtcbiAgdmFyIHBvc0VudGl0aWVzID0ge307XG4gIHZhciBrZXlFbnRpdGllcyA9IHt9O1xuICB2YXIgd3JhcHBlciA9IHtcbiAgICBwb3NFbnRpdGllczogcG9zRW50aXRpZXMsXG4gICAga2V5RW50aXRpZXM6IGtleUVudGl0aWVzXG4gIH07XG5cbiAgaWYgKGluaXRXcmFwcGVyKSB7XG4gICAgd3JhcHBlciA9IGluaXRXcmFwcGVyKHdyYXBwZXIpIHx8IHdyYXBwZXI7XG4gIH1cblxuICB0cmF2ZXJzZURhdGFOb2RlcyhkYXRhTm9kZXMsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIG5vZGUgPSBpdGVtLm5vZGUsXG4gICAgICAgIGluZGV4ID0gaXRlbS5pbmRleCxcbiAgICAgICAgcG9zID0gaXRlbS5wb3MsXG4gICAgICAgIGtleSA9IGl0ZW0ua2V5LFxuICAgICAgICBwYXJlbnRQb3MgPSBpdGVtLnBhcmVudFBvcyxcbiAgICAgICAgbGV2ZWwgPSBpdGVtLmxldmVsO1xuICAgIHZhciBlbnRpdHkgPSB7XG4gICAgICBub2RlOiBub2RlLFxuICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAga2V5OiBrZXksXG4gICAgICBwb3M6IHBvcyxcbiAgICAgIGxldmVsOiBsZXZlbFxuICAgIH07XG4gICAgdmFyIG1lcmdlZEtleSA9IGdldEtleShrZXksIHBvcyk7XG4gICAgcG9zRW50aXRpZXNbcG9zXSA9IGVudGl0eTtcbiAgICBrZXlFbnRpdGllc1ttZXJnZWRLZXldID0gZW50aXR5OyAvLyBGaWxsIGNoaWxkcmVuXG5cbiAgICBlbnRpdHkucGFyZW50ID0gcG9zRW50aXRpZXNbcGFyZW50UG9zXTtcblxuICAgIGlmIChlbnRpdHkucGFyZW50KSB7XG4gICAgICBlbnRpdHkucGFyZW50LmNoaWxkcmVuID0gZW50aXR5LnBhcmVudC5jaGlsZHJlbiB8fCBbXTtcbiAgICAgIGVudGl0eS5wYXJlbnQuY2hpbGRyZW4ucHVzaChlbnRpdHkpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzRW50aXR5KSB7XG4gICAgICBwcm9jZXNzRW50aXR5KGVudGl0eSwgd3JhcHBlcik7XG4gICAgfVxuICB9LCB7XG4gICAgZXh0ZXJuYWxHZXRLZXk6IG1lcmdlZEV4dGVybmFsR2V0S2V5LFxuICAgIGNoaWxkcmVuUHJvcE5hbWU6IGNoaWxkcmVuUHJvcE5hbWVcbiAgfSk7XG5cbiAgaWYgKG9uUHJvY2Vzc0ZpbmlzaGVkKSB7XG4gICAgb25Qcm9jZXNzRmluaXNoZWQod3JhcHBlcik7XG4gIH1cblxuICByZXR1cm4gd3JhcHBlcjtcbn1cbi8qKlxuICogR2V0IFRyZWVOb2RlIHByb3BzIHdpdGggVHJlZSBwcm9wcy5cbiAqL1xuXG5cbmZ1bmN0aW9uIGdldFRyZWVOb2RlUHJvcHMoa2V5LCBfcmVmMikge1xuICB2YXIgZXhwYW5kZWRLZXlzID0gX3JlZjIuZXhwYW5kZWRLZXlzLFxuICAgICAgc2VsZWN0ZWRLZXlzID0gX3JlZjIuc2VsZWN0ZWRLZXlzLFxuICAgICAgbG9hZGVkS2V5cyA9IF9yZWYyLmxvYWRlZEtleXMsXG4gICAgICBsb2FkaW5nS2V5cyA9IF9yZWYyLmxvYWRpbmdLZXlzLFxuICAgICAgY2hlY2tlZEtleXMgPSBfcmVmMi5jaGVja2VkS2V5cyxcbiAgICAgIGhhbGZDaGVja2VkS2V5cyA9IF9yZWYyLmhhbGZDaGVja2VkS2V5cyxcbiAgICAgIGRyYWdPdmVyTm9kZUtleSA9IF9yZWYyLmRyYWdPdmVyTm9kZUtleSxcbiAgICAgIGRyb3BQb3NpdGlvbiA9IF9yZWYyLmRyb3BQb3NpdGlvbixcbiAgICAgIGtleUVudGl0aWVzID0gX3JlZjIua2V5RW50aXRpZXM7XG4gIHZhciBlbnRpdHkgPSBrZXlFbnRpdGllc1trZXldO1xuICB2YXIgdHJlZU5vZGVQcm9wcyA9IHtcbiAgICBldmVudEtleToga2V5LFxuICAgIGV4cGFuZGVkOiBleHBhbmRlZEtleXMuaW5kZXhPZihrZXkpICE9PSAtMSxcbiAgICBzZWxlY3RlZDogc2VsZWN0ZWRLZXlzLmluZGV4T2Yoa2V5KSAhPT0gLTEsXG4gICAgbG9hZGVkOiBsb2FkZWRLZXlzLmluZGV4T2Yoa2V5KSAhPT0gLTEsXG4gICAgbG9hZGluZzogbG9hZGluZ0tleXMuaW5kZXhPZihrZXkpICE9PSAtMSxcbiAgICBjaGVja2VkOiBjaGVja2VkS2V5cy5pbmRleE9mKGtleSkgIT09IC0xLFxuICAgIGhhbGZDaGVja2VkOiBoYWxmQ2hlY2tlZEtleXMuaW5kZXhPZihrZXkpICE9PSAtMSxcbiAgICBwb3M6IFN0cmluZyhlbnRpdHkgPyBlbnRpdHkucG9zIDogJycpLFxuICAgIC8vIFtMZWdhY3ldIERyYWcgcHJvcHNcbiAgICAvLyBTaW5jZSB0aGUgaW50ZXJhY3Rpb24gb2YgZHJhZyBpcyBjaGFuZ2VkLCB0aGUgc2VtYW50aWMgb2YgdGhlIHByb3BzIGFyZVxuICAgIC8vIG5vdCBhY2N1cmFjeSwgSSB0aGluayBpdCBzaG91bGQgYmUgZmluYWxseSByZW1vdmVkXG4gICAgZHJhZ092ZXI6IGRyYWdPdmVyTm9kZUtleSA9PT0ga2V5ICYmIGRyb3BQb3NpdGlvbiA9PT0gMCxcbiAgICBkcmFnT3ZlckdhcFRvcDogZHJhZ092ZXJOb2RlS2V5ID09PSBrZXkgJiYgZHJvcFBvc2l0aW9uID09PSAtMSxcbiAgICBkcmFnT3ZlckdhcEJvdHRvbTogZHJhZ092ZXJOb2RlS2V5ID09PSBrZXkgJiYgZHJvcFBvc2l0aW9uID09PSAxXG4gIH07XG4gIHJldHVybiB0cmVlTm9kZVByb3BzO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0Tm9kZVByb3BzVG9FdmVudERhdGEocHJvcHMpIHtcbiAgdmFyIGRhdGEgPSBwcm9wcy5kYXRhLFxuICAgICAgZXhwYW5kZWQgPSBwcm9wcy5leHBhbmRlZCxcbiAgICAgIHNlbGVjdGVkID0gcHJvcHMuc2VsZWN0ZWQsXG4gICAgICBjaGVja2VkID0gcHJvcHMuY2hlY2tlZCxcbiAgICAgIGxvYWRlZCA9IHByb3BzLmxvYWRlZCxcbiAgICAgIGxvYWRpbmcgPSBwcm9wcy5sb2FkaW5nLFxuICAgICAgaGFsZkNoZWNrZWQgPSBwcm9wcy5oYWxmQ2hlY2tlZCxcbiAgICAgIGRyYWdPdmVyID0gcHJvcHMuZHJhZ092ZXIsXG4gICAgICBkcmFnT3ZlckdhcFRvcCA9IHByb3BzLmRyYWdPdmVyR2FwVG9wLFxuICAgICAgZHJhZ092ZXJHYXBCb3R0b20gPSBwcm9wcy5kcmFnT3ZlckdhcEJvdHRvbSxcbiAgICAgIHBvcyA9IHByb3BzLnBvcyxcbiAgICAgIGFjdGl2ZSA9IHByb3BzLmFjdGl2ZTtcbiAgdmFyIGV2ZW50RGF0YSA9ICgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSgoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoe30sIGRhdGEpLCB7fSwge1xuICAgIGV4cGFuZGVkOiBleHBhbmRlZCxcbiAgICBzZWxlY3RlZDogc2VsZWN0ZWQsXG4gICAgY2hlY2tlZDogY2hlY2tlZCxcbiAgICBsb2FkZWQ6IGxvYWRlZCxcbiAgICBsb2FkaW5nOiBsb2FkaW5nLFxuICAgIGhhbGZDaGVja2VkOiBoYWxmQ2hlY2tlZCxcbiAgICBkcmFnT3ZlcjogZHJhZ092ZXIsXG4gICAgZHJhZ092ZXJHYXBUb3A6IGRyYWdPdmVyR2FwVG9wLFxuICAgIGRyYWdPdmVyR2FwQm90dG9tOiBkcmFnT3ZlckdhcEJvdHRvbSxcbiAgICBwb3M6IHBvcyxcbiAgICBhY3RpdmU6IGFjdGl2ZVxuICB9KTtcblxuICBpZiAoISgncHJvcHMnIGluIGV2ZW50RGF0YSkpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnREYXRhLCAncHJvcHMnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgKDAsIF93YXJuaW5nLmRlZmF1bHQpKGZhbHNlLCAnU2Vjb25kIHBhcmFtIHJldHVybiBmcm9tIGV2ZW50IGlzIG5vZGUgZGF0YSBpbnN0ZWFkIG9mIFRyZWVOb2RlIGluc3RhbmNlLiBQbGVhc2UgcmVhZCB2YWx1ZSBkaXJlY3RseSBpbnN0ZWFkIG9mIHJlYWRpbmcgZnJvbSBgcHJvcHNgLicpO1xuICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZXZlbnREYXRhO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX0NoZWNrYm94ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9DaGVja2JveFwiKSk7XG5cbnZhciBfR3JvdXAgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL0dyb3VwXCIpKTtcblxudmFyIENoZWNrYm94ID0gX0NoZWNrYm94W1wiZGVmYXVsdFwiXTtcbkNoZWNrYm94Lkdyb3VwID0gX0dyb3VwW1wiZGVmYXVsdFwiXTtcbkNoZWNrYm94Ll9fQU5UX0NIRUNLQk9YID0gdHJ1ZTtcbnZhciBfZGVmYXVsdCA9IENoZWNrYm94O1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfZXh0ZW5kczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIikpO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9yY0NoZWNrYm94ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtY2hlY2tib3hcIikpO1xuXG52YXIgX0dyb3VwID0gcmVxdWlyZShcIi4vR3JvdXBcIik7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX2Rldldhcm5pbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9fdXRpbC9kZXZXYXJuaW5nXCIpKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgX19yZXN0ID0gdm9pZCAwICYmICh2b2lkIDApLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG4gIH1cblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxudmFyIEludGVybmFsQ2hlY2tib3ggPSBmdW5jdGlvbiBJbnRlcm5hbENoZWNrYm94KF9hLCByZWYpIHtcbiAgdmFyIF9jbGFzc05hbWVzO1xuXG4gIHZhciBjdXN0b21pemVQcmVmaXhDbHMgPSBfYS5wcmVmaXhDbHMsXG4gICAgICBjbGFzc05hbWUgPSBfYS5jbGFzc05hbWUsXG4gICAgICBjaGlsZHJlbiA9IF9hLmNoaWxkcmVuLFxuICAgICAgX2EkaW5kZXRlcm1pbmF0ZSA9IF9hLmluZGV0ZXJtaW5hdGUsXG4gICAgICBpbmRldGVybWluYXRlID0gX2EkaW5kZXRlcm1pbmF0ZSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYSRpbmRldGVybWluYXRlLFxuICAgICAgc3R5bGUgPSBfYS5zdHlsZSxcbiAgICAgIG9uTW91c2VFbnRlciA9IF9hLm9uTW91c2VFbnRlcixcbiAgICAgIG9uTW91c2VMZWF2ZSA9IF9hLm9uTW91c2VMZWF2ZSxcbiAgICAgIF9hJHNraXBHcm91cCA9IF9hLnNraXBHcm91cCxcbiAgICAgIHNraXBHcm91cCA9IF9hJHNraXBHcm91cCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYSRza2lwR3JvdXAsXG4gICAgICByZXN0UHJvcHMgPSBfX3Jlc3QoX2EsIFtcInByZWZpeENsc1wiLCBcImNsYXNzTmFtZVwiLCBcImNoaWxkcmVuXCIsIFwiaW5kZXRlcm1pbmF0ZVwiLCBcInN0eWxlXCIsIFwib25Nb3VzZUVudGVyXCIsIFwib25Nb3VzZUxlYXZlXCIsIFwic2tpcEdyb3VwXCJdKTtcblxuICB2YXIgX1JlYWN0JHVzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KF9jb25maWdQcm92aWRlci5Db25maWdDb250ZXh0KSxcbiAgICAgIGdldFByZWZpeENscyA9IF9SZWFjdCR1c2VDb250ZXh0LmdldFByZWZpeENscyxcbiAgICAgIGRpcmVjdGlvbiA9IF9SZWFjdCR1c2VDb250ZXh0LmRpcmVjdGlvbjtcblxuICB2YXIgY2hlY2tib3hHcm91cCA9IFJlYWN0LnVzZUNvbnRleHQoX0dyb3VwLkdyb3VwQ29udGV4dCk7XG4gIHZhciBwcmV2VmFsdWUgPSBSZWFjdC51c2VSZWYocmVzdFByb3BzLnZhbHVlKTtcbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBjaGVja2JveEdyb3VwID09PSBudWxsIHx8IGNoZWNrYm94R3JvdXAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNoZWNrYm94R3JvdXAucmVnaXN0ZXJWYWx1ZShyZXN0UHJvcHMudmFsdWUpO1xuICAgICgwLCBfZGV2V2FybmluZ1tcImRlZmF1bHRcIl0pKCdjaGVja2VkJyBpbiByZXN0UHJvcHMgfHwgISFjaGVja2JveEdyb3VwIHx8ICEoJ3ZhbHVlJyBpbiByZXN0UHJvcHMpLCAnQ2hlY2tib3gnLCAnYHZhbHVlYCBpcyBub3QgYSB2YWxpZCBwcm9wLCBkbyB5b3UgbWVhbiBgY2hlY2tlZGA/Jyk7XG4gIH0sIFtdKTtcbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2tpcEdyb3VwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHJlc3RQcm9wcy52YWx1ZSAhPT0gcHJldlZhbHVlLmN1cnJlbnQpIHtcbiAgICAgIGNoZWNrYm94R3JvdXAgPT09IG51bGwgfHwgY2hlY2tib3hHcm91cCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2hlY2tib3hHcm91cC5jYW5jZWxWYWx1ZShwcmV2VmFsdWUuY3VycmVudCk7XG4gICAgICBjaGVja2JveEdyb3VwID09PSBudWxsIHx8IGNoZWNrYm94R3JvdXAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNoZWNrYm94R3JvdXAucmVnaXN0ZXJWYWx1ZShyZXN0UHJvcHMudmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gY2hlY2tib3hHcm91cCA9PT0gbnVsbCB8fCBjaGVja2JveEdyb3VwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjaGVja2JveEdyb3VwLmNhbmNlbFZhbHVlKHJlc3RQcm9wcy52YWx1ZSk7XG4gICAgfTtcbiAgfSwgW3Jlc3RQcm9wcy52YWx1ZV0pO1xuICB2YXIgcHJlZml4Q2xzID0gZ2V0UHJlZml4Q2xzKCdjaGVja2JveCcsIGN1c3RvbWl6ZVByZWZpeENscyk7XG4gIHZhciBjaGVja2JveFByb3BzID0gKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCByZXN0UHJvcHMpO1xuXG4gIGlmIChjaGVja2JveEdyb3VwICYmICFza2lwR3JvdXApIHtcbiAgICBjaGVja2JveFByb3BzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHJlc3RQcm9wcy5vbkNoYW5nZSkge1xuICAgICAgICByZXN0UHJvcHMub25DaGFuZ2UuYXBwbHkocmVzdFByb3BzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hlY2tib3hHcm91cC50b2dnbGVPcHRpb24pIHtcbiAgICAgICAgY2hlY2tib3hHcm91cC50b2dnbGVPcHRpb24oe1xuICAgICAgICAgIGxhYmVsOiBjaGlsZHJlbixcbiAgICAgICAgICB2YWx1ZTogcmVzdFByb3BzLnZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjaGVja2JveFByb3BzLm5hbWUgPSBjaGVja2JveEdyb3VwLm5hbWU7XG4gICAgY2hlY2tib3hQcm9wcy5jaGVja2VkID0gY2hlY2tib3hHcm91cC52YWx1ZS5pbmRleE9mKHJlc3RQcm9wcy52YWx1ZSkgIT09IC0xO1xuICAgIGNoZWNrYm94UHJvcHMuZGlzYWJsZWQgPSByZXN0UHJvcHMuZGlzYWJsZWQgfHwgY2hlY2tib3hHcm91cC5kaXNhYmxlZDtcbiAgfVxuXG4gIHZhciBjbGFzc1N0cmluZyA9ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKChfY2xhc3NOYW1lcyA9IHt9LCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXdyYXBwZXJcIiksIHRydWUpLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXJ0bFwiKSwgZGlyZWN0aW9uID09PSAncnRsJyksICgwLCBfZGVmaW5lUHJvcGVydHkyW1wiZGVmYXVsdFwiXSkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItd3JhcHBlci1jaGVja2VkXCIpLCBjaGVja2JveFByb3BzLmNoZWNrZWQpLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXdyYXBwZXItZGlzYWJsZWRcIiksIGNoZWNrYm94UHJvcHMuZGlzYWJsZWQpLCBfY2xhc3NOYW1lcyksIGNsYXNzTmFtZSk7XG4gIHZhciBjaGVja2JveENsYXNzID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKSh7fSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pbmRldGVybWluYXRlXCIpLCBpbmRldGVybWluYXRlKSk7XG4gIHJldHVybiAoXG4gICAgLyojX19QVVJFX18qL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9sYWJlbC1oYXMtYXNzb2NpYXRlZC1jb250cm9sXG4gICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImxhYmVsXCIsIHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NTdHJpbmcsXG4gICAgICBzdHlsZTogc3R5bGUsXG4gICAgICBvbk1vdXNlRW50ZXI6IG9uTW91c2VFbnRlcixcbiAgICAgIG9uTW91c2VMZWF2ZTogb25Nb3VzZUxlYXZlXG4gICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX3JjQ2hlY2tib3hbXCJkZWZhdWx0XCJdLCAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIGNoZWNrYm94UHJvcHMsIHtcbiAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgY2xhc3NOYW1lOiBjaGVja2JveENsYXNzLFxuICAgICAgcmVmOiByZWZcbiAgICB9KSksIGNoaWxkcmVuICE9PSB1bmRlZmluZWQgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIGNoaWxkcmVuKSlcbiAgKTtcbn07XG5cbnZhciBDaGVja2JveCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKEludGVybmFsQ2hlY2tib3gpO1xuQ2hlY2tib3guZGlzcGxheU5hbWUgPSAnQ2hlY2tib3gnO1xudmFyIF9kZWZhdWx0ID0gQ2hlY2tib3g7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCI7XG5pbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxudmFyIENoZWNrYm94ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhDaGVja2JveCwgX0NvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihDaGVja2JveCk7XG5cbiAgZnVuY3Rpb24gQ2hlY2tib3gocHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2hlY2tib3gpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwcm9wcyk7XG5cbiAgICBfdGhpcy5oYW5kbGVDaGFuZ2UgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgZGlzYWJsZWQgPSBfdGhpcyRwcm9wcy5kaXNhYmxlZCxcbiAgICAgICAgICBvbkNoYW5nZSA9IF90aGlzJHByb3BzLm9uQ2hhbmdlO1xuXG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoISgnY2hlY2tlZCcgaW4gX3RoaXMucHJvcHMpKSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBjaGVja2VkOiBlLnRhcmdldC5jaGVja2VkXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2Uoe1xuICAgICAgICAgIHRhcmdldDogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfdGhpcy5wcm9wcyksIHt9LCB7XG4gICAgICAgICAgICBjaGVja2VkOiBlLnRhcmdldC5jaGVja2VkXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbiBzdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uIHByZXZlbnREZWZhdWx0KCkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgbmF0aXZlRXZlbnQ6IGUubmF0aXZlRXZlbnRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLnNhdmVJbnB1dCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBfdGhpcy5pbnB1dCA9IG5vZGU7XG4gICAgfTtcblxuICAgIHZhciBjaGVja2VkID0gJ2NoZWNrZWQnIGluIHByb3BzID8gcHJvcHMuY2hlY2tlZCA6IHByb3BzLmRlZmF1bHRDaGVja2VkO1xuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgY2hlY2tlZDogY2hlY2tlZFxuICAgIH07XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENoZWNrYm94LCBbe1xuICAgIGtleTogXCJmb2N1c1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb2N1cygpIHtcbiAgICAgIHRoaXMuaW5wdXQuZm9jdXMoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYmx1clwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBibHVyKCkge1xuICAgICAgdGhpcy5pbnB1dC5ibHVyKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX2NsYXNzTmFtZXM7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHByZWZpeENscyA9IF90aGlzJHByb3BzMi5wcmVmaXhDbHMsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMyLmNsYXNzTmFtZSxcbiAgICAgICAgICBzdHlsZSA9IF90aGlzJHByb3BzMi5zdHlsZSxcbiAgICAgICAgICBuYW1lID0gX3RoaXMkcHJvcHMyLm5hbWUsXG4gICAgICAgICAgaWQgPSBfdGhpcyRwcm9wczIuaWQsXG4gICAgICAgICAgdHlwZSA9IF90aGlzJHByb3BzMi50eXBlLFxuICAgICAgICAgIGRpc2FibGVkID0gX3RoaXMkcHJvcHMyLmRpc2FibGVkLFxuICAgICAgICAgIHJlYWRPbmx5ID0gX3RoaXMkcHJvcHMyLnJlYWRPbmx5LFxuICAgICAgICAgIHRhYkluZGV4ID0gX3RoaXMkcHJvcHMyLnRhYkluZGV4LFxuICAgICAgICAgIG9uQ2xpY2sgPSBfdGhpcyRwcm9wczIub25DbGljayxcbiAgICAgICAgICBvbkZvY3VzID0gX3RoaXMkcHJvcHMyLm9uRm9jdXMsXG4gICAgICAgICAgb25CbHVyID0gX3RoaXMkcHJvcHMyLm9uQmx1cixcbiAgICAgICAgICBvbktleURvd24gPSBfdGhpcyRwcm9wczIub25LZXlEb3duLFxuICAgICAgICAgIG9uS2V5UHJlc3MgPSBfdGhpcyRwcm9wczIub25LZXlQcmVzcyxcbiAgICAgICAgICBvbktleVVwID0gX3RoaXMkcHJvcHMyLm9uS2V5VXAsXG4gICAgICAgICAgYXV0b0ZvY3VzID0gX3RoaXMkcHJvcHMyLmF1dG9Gb2N1cyxcbiAgICAgICAgICB2YWx1ZSA9IF90aGlzJHByb3BzMi52YWx1ZSxcbiAgICAgICAgICByZXF1aXJlZCA9IF90aGlzJHByb3BzMi5yZXF1aXJlZCxcbiAgICAgICAgICBvdGhlcnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHMyLCBbXCJwcmVmaXhDbHNcIiwgXCJjbGFzc05hbWVcIiwgXCJzdHlsZVwiLCBcIm5hbWVcIiwgXCJpZFwiLCBcInR5cGVcIiwgXCJkaXNhYmxlZFwiLCBcInJlYWRPbmx5XCIsIFwidGFiSW5kZXhcIiwgXCJvbkNsaWNrXCIsIFwib25Gb2N1c1wiLCBcIm9uQmx1clwiLCBcIm9uS2V5RG93blwiLCBcIm9uS2V5UHJlc3NcIiwgXCJvbktleVVwXCIsIFwiYXV0b0ZvY3VzXCIsIFwidmFsdWVcIiwgXCJyZXF1aXJlZFwiXSk7XG5cbiAgICAgIHZhciBnbG9iYWxQcm9wcyA9IE9iamVjdC5rZXlzKG90aGVycykucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBrZXkpIHtcbiAgICAgICAgaWYgKGtleS5zdWJzdHIoMCwgNSkgPT09ICdhcmlhLScgfHwga2V5LnN1YnN0cigwLCA1KSA9PT0gJ2RhdGEtJyB8fCBrZXkgPT09ICdyb2xlJykge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgIHByZXZba2V5XSA9IG90aGVyc1trZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICB9LCB7fSk7XG4gICAgICB2YXIgY2hlY2tlZCA9IHRoaXMuc3RhdGUuY2hlY2tlZDtcbiAgICAgIHZhciBjbGFzc1N0cmluZyA9IGNsYXNzTmFtZXMocHJlZml4Q2xzLCBjbGFzc05hbWUsIChfY2xhc3NOYW1lcyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY2hlY2tlZFwiKSwgY2hlY2tlZCksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1kaXNhYmxlZFwiKSwgZGlzYWJsZWQpLCBfY2xhc3NOYW1lcykpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3NTdHJpbmcsXG4gICAgICAgIHN0eWxlOiBzdHlsZVxuICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCBfZXh0ZW5kcyh7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIGlkOiBpZCxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgICByZWFkT25seTogcmVhZE9ubHksXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4LFxuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaW5wdXRcIiksXG4gICAgICAgIGNoZWNrZWQ6ICEhY2hlY2tlZCxcbiAgICAgICAgb25DbGljazogb25DbGljayxcbiAgICAgICAgb25Gb2N1czogb25Gb2N1cyxcbiAgICAgICAgb25CbHVyOiBvbkJsdXIsXG4gICAgICAgIG9uS2V5VXA6IG9uS2V5VXAsXG4gICAgICAgIG9uS2V5RG93bjogb25LZXlEb3duLFxuICAgICAgICBvbktleVByZXNzOiBvbktleVByZXNzLFxuICAgICAgICBvbkNoYW5nZTogdGhpcy5oYW5kbGVDaGFuZ2UsXG4gICAgICAgIGF1dG9Gb2N1czogYXV0b0ZvY3VzLFxuICAgICAgICByZWY6IHRoaXMuc2F2ZUlucHV0LFxuICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgIH0sIGdsb2JhbFByb3BzKSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pbm5lclwiKVxuICAgICAgfSkpO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHMsIHN0YXRlKSB7XG4gICAgICBpZiAoJ2NoZWNrZWQnIGluIHByb3BzKSB7XG4gICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHN0YXRlKSwge30sIHtcbiAgICAgICAgICBjaGVja2VkOiBwcm9wcy5jaGVja2VkXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ2hlY2tib3g7XG59KENvbXBvbmVudCk7XG5cbkNoZWNrYm94LmRlZmF1bHRQcm9wcyA9IHtcbiAgcHJlZml4Q2xzOiAncmMtY2hlY2tib3gnLFxuICBjbGFzc05hbWU6ICcnLFxuICBzdHlsZToge30sXG4gIHR5cGU6ICdjaGVja2JveCcsXG4gIGRlZmF1bHRDaGVja2VkOiBmYWxzZSxcbiAgb25Gb2N1czogZnVuY3Rpb24gb25Gb2N1cygpIHt9LFxuICBvbkJsdXI6IGZ1bmN0aW9uIG9uQmx1cigpIHt9LFxuICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoKSB7fSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oKSB7fSxcbiAgb25LZXlQcmVzczogZnVuY3Rpb24gb25LZXlQcmVzcygpIHt9LFxuICBvbktleVVwOiBmdW5jdGlvbiBvbktleVVwKCkge31cbn07XG5leHBvcnQgZGVmYXVsdCBDaGVja2JveDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBleHBvcnRzLkdyb3VwQ29udGV4dCA9IHZvaWQgMDtcblxudmFyIF9leHRlbmRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKSk7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfdG9Db25zdW1hYmxlQXJyYXkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiKSk7XG5cbnZhciBfc2xpY2VkVG9BcnJheTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIikpO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9vbWl0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtdXRpbC9saWIvb21pdFwiKSk7XG5cbnZhciBfQ2hlY2tib3ggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL0NoZWNrYm94XCIpKTtcblxudmFyIF9jb25maWdQcm92aWRlciA9IHJlcXVpcmUoXCIuLi9jb25maWctcHJvdmlkZXJcIik7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxudmFyIF9fcmVzdCA9IHZvaWQgMCAmJiAodm9pZCAwKS5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApIHRbcF0gPSBzW3BdO1xuICB9XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbnZhciBHcm91cENvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmV4cG9ydHMuR3JvdXBDb250ZXh0ID0gR3JvdXBDb250ZXh0O1xuXG52YXIgSW50ZXJuYWxDaGVja2JveEdyb3VwID0gZnVuY3Rpb24gSW50ZXJuYWxDaGVja2JveEdyb3VwKF9hLCByZWYpIHtcbiAgdmFyIGRlZmF1bHRWYWx1ZSA9IF9hLmRlZmF1bHRWYWx1ZSxcbiAgICAgIGNoaWxkcmVuID0gX2EuY2hpbGRyZW4sXG4gICAgICBfYSRvcHRpb25zID0gX2Eub3B0aW9ucyxcbiAgICAgIG9wdGlvbnMgPSBfYSRvcHRpb25zID09PSB2b2lkIDAgPyBbXSA6IF9hJG9wdGlvbnMsXG4gICAgICBjdXN0b21pemVQcmVmaXhDbHMgPSBfYS5wcmVmaXhDbHMsXG4gICAgICBjbGFzc05hbWUgPSBfYS5jbGFzc05hbWUsXG4gICAgICBzdHlsZSA9IF9hLnN0eWxlLFxuICAgICAgb25DaGFuZ2UgPSBfYS5vbkNoYW5nZSxcbiAgICAgIHJlc3RQcm9wcyA9IF9fcmVzdChfYSwgW1wiZGVmYXVsdFZhbHVlXCIsIFwiY2hpbGRyZW5cIiwgXCJvcHRpb25zXCIsIFwicHJlZml4Q2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwic3R5bGVcIiwgXCJvbkNoYW5nZVwiXSk7XG5cbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChfY29uZmlnUHJvdmlkZXIuQ29uZmlnQ29udGV4dCksXG4gICAgICBnZXRQcmVmaXhDbHMgPSBfUmVhY3QkdXNlQ29udGV4dC5nZXRQcmVmaXhDbHMsXG4gICAgICBkaXJlY3Rpb24gPSBfUmVhY3QkdXNlQ29udGV4dC5kaXJlY3Rpb247XG5cbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZSA9IFJlYWN0LnVzZVN0YXRlKHJlc3RQcm9wcy52YWx1ZSB8fCBkZWZhdWx0VmFsdWUgfHwgW10pLFxuICAgICAgX1JlYWN0JHVzZVN0YXRlMiA9ICgwLCBfc2xpY2VkVG9BcnJheTJbXCJkZWZhdWx0XCJdKShfUmVhY3QkdXNlU3RhdGUsIDIpLFxuICAgICAgdmFsdWUgPSBfUmVhY3QkdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0VmFsdWUgPSBfUmVhY3QkdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBfUmVhY3QkdXNlU3RhdGUzID0gUmVhY3QudXNlU3RhdGUoW10pLFxuICAgICAgX1JlYWN0JHVzZVN0YXRlNCA9ICgwLCBfc2xpY2VkVG9BcnJheTJbXCJkZWZhdWx0XCJdKShfUmVhY3QkdXNlU3RhdGUzLCAyKSxcbiAgICAgIHJlZ2lzdGVyZWRWYWx1ZXMgPSBfUmVhY3QkdXNlU3RhdGU0WzBdLFxuICAgICAgc2V0UmVnaXN0ZXJlZFZhbHVlcyA9IF9SZWFjdCR1c2VTdGF0ZTRbMV07XG5cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoJ3ZhbHVlJyBpbiByZXN0UHJvcHMpIHtcbiAgICAgIHNldFZhbHVlKHJlc3RQcm9wcy52YWx1ZSB8fCBbXSk7XG4gICAgfVxuICB9LCBbcmVzdFByb3BzLnZhbHVlXSk7XG5cbiAgdmFyIGdldE9wdGlvbnMgPSBmdW5jdGlvbiBnZXRPcHRpb25zKCkge1xuICAgIHJldHVybiBvcHRpb25zLm1hcChmdW5jdGlvbiAob3B0aW9uKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsYWJlbDogb3B0aW9uLFxuICAgICAgICAgIHZhbHVlOiBvcHRpb25cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9KTtcbiAgfTtcblxuICB2YXIgY2FuY2VsVmFsdWUgPSBmdW5jdGlvbiBjYW5jZWxWYWx1ZSh2YWwpIHtcbiAgICBzZXRSZWdpc3RlcmVkVmFsdWVzKGZ1bmN0aW9uIChwcmV2VmFsdWVzKSB7XG4gICAgICByZXR1cm4gcHJldlZhbHVlcy5maWx0ZXIoZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHYgIT09IHZhbDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIHZhciByZWdpc3RlclZhbHVlID0gZnVuY3Rpb24gcmVnaXN0ZXJWYWx1ZSh2YWwpIHtcbiAgICBzZXRSZWdpc3RlcmVkVmFsdWVzKGZ1bmN0aW9uIChwcmV2VmFsdWVzKSB7XG4gICAgICByZXR1cm4gW10uY29uY2F0KCgwLCBfdG9Db25zdW1hYmxlQXJyYXkyW1wiZGVmYXVsdFwiXSkocHJldlZhbHVlcyksIFt2YWxdKTtcbiAgICB9KTtcbiAgfTtcblxuICB2YXIgdG9nZ2xlT3B0aW9uID0gZnVuY3Rpb24gdG9nZ2xlT3B0aW9uKG9wdGlvbikge1xuICAgIHZhciBvcHRpb25JbmRleCA9IHZhbHVlLmluZGV4T2Yob3B0aW9uLnZhbHVlKTtcbiAgICB2YXIgbmV3VmFsdWUgPSAoMCwgX3RvQ29uc3VtYWJsZUFycmF5MltcImRlZmF1bHRcIl0pKHZhbHVlKTtcblxuICAgIGlmIChvcHRpb25JbmRleCA9PT0gLTEpIHtcbiAgICAgIG5ld1ZhbHVlLnB1c2gob3B0aW9uLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VmFsdWUuc3BsaWNlKG9wdGlvbkluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBpZiAoISgndmFsdWUnIGluIHJlc3RQcm9wcykpIHtcbiAgICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICB2YXIgb3B0cyA9IGdldE9wdGlvbnMoKTtcbiAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UobmV3VmFsdWUuZmlsdGVyKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgIHJldHVybiByZWdpc3RlcmVkVmFsdWVzLmluZGV4T2YodmFsKSAhPT0gLTE7XG4gICAgfSkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgdmFyIGluZGV4QSA9IG9wdHMuZmluZEluZGV4KGZ1bmN0aW9uIChvcHQpIHtcbiAgICAgICAgcmV0dXJuIG9wdC52YWx1ZSA9PT0gYTtcbiAgICAgIH0pO1xuICAgICAgdmFyIGluZGV4QiA9IG9wdHMuZmluZEluZGV4KGZ1bmN0aW9uIChvcHQpIHtcbiAgICAgICAgcmV0dXJuIG9wdC52YWx1ZSA9PT0gYjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGluZGV4QSAtIGluZGV4QjtcbiAgICB9KSk7XG4gIH07XG5cbiAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygnY2hlY2tib3gnLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICB2YXIgZ3JvdXBQcmVmaXhDbHMgPSBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWdyb3VwXCIpO1xuICB2YXIgZG9tUHJvcHMgPSAoMCwgX29taXRbXCJkZWZhdWx0XCJdKShyZXN0UHJvcHMsIFsndmFsdWUnLCAnZGlzYWJsZWQnXSk7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgY2hpbGRyZW4gPSBnZXRPcHRpb25zKCkubWFwKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQ2hlY2tib3hbXCJkZWZhdWx0XCJdLCB7XG4gICAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgICBrZXk6IG9wdGlvbi52YWx1ZS50b1N0cmluZygpLFxuICAgICAgICBkaXNhYmxlZDogJ2Rpc2FibGVkJyBpbiBvcHRpb24gPyBvcHRpb24uZGlzYWJsZWQgOiByZXN0UHJvcHMuZGlzYWJsZWQsXG4gICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgIGNoZWNrZWQ6IHZhbHVlLmluZGV4T2Yob3B0aW9uLnZhbHVlKSAhPT0gLTEsXG4gICAgICAgIG9uQ2hhbmdlOiBvcHRpb24ub25DaGFuZ2UsXG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQoZ3JvdXBQcmVmaXhDbHMsIFwiLWl0ZW1cIiksXG4gICAgICAgIHN0eWxlOiBvcHRpb24uc3R5bGVcbiAgICAgIH0sIG9wdGlvbi5sYWJlbCk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgY29udGV4dCA9IHtcbiAgICB0b2dnbGVPcHRpb246IHRvZ2dsZU9wdGlvbixcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgZGlzYWJsZWQ6IHJlc3RQcm9wcy5kaXNhYmxlZCxcbiAgICBuYW1lOiByZXN0UHJvcHMubmFtZSxcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8xNjM3NlxuICAgIHJlZ2lzdGVyVmFsdWU6IHJlZ2lzdGVyVmFsdWUsXG4gICAgY2FuY2VsVmFsdWU6IGNhbmNlbFZhbHVlXG4gIH07XG4gIHZhciBjbGFzc1N0cmluZyA9ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKGdyb3VwUHJlZml4Q2xzLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKHt9LCBcIlwiLmNvbmNhdChncm91cFByZWZpeENscywgXCItcnRsXCIpLCBkaXJlY3Rpb24gPT09ICdydGwnKSwgY2xhc3NOYW1lKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7XG4gICAgY2xhc3NOYW1lOiBjbGFzc1N0cmluZyxcbiAgICBzdHlsZTogc3R5bGVcbiAgfSwgZG9tUHJvcHMsIHtcbiAgICByZWY6IHJlZlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoR3JvdXBDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGNvbnRleHRcbiAgfSwgY2hpbGRyZW4pKTtcbn07XG5cbnZhciBDaGVja2JveEdyb3VwID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoSW50ZXJuYWxDaGVja2JveEdyb3VwKTtcblxudmFyIF9kZWZhdWx0ID0gLyojX19QVVJFX18qL1JlYWN0Lm1lbW8oQ2hlY2tib3hHcm91cCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfZHJvcGRvd24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2Ryb3Bkb3duXCIpKTtcblxudmFyIF9kZWZhdWx0ID0gX2Ryb3Bkb3duW1wiZGVmYXVsdFwiXTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9yY0Ryb3Bkb3duID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtZHJvcGRvd25cIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9SaWdodE91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMvUmlnaHRPdXRsaW5lZFwiKSk7XG5cbnZhciBfZHJvcGRvd25CdXR0b24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2Ryb3Bkb3duLWJ1dHRvblwiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX2Rldldhcm5pbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9fdXRpbC9kZXZXYXJuaW5nXCIpKTtcblxudmFyIF90eXBlID0gcmVxdWlyZShcIi4uL191dGlsL3R5cGVcIik7XG5cbnZhciBfcmVhY3ROb2RlID0gcmVxdWlyZShcIi4uL191dGlsL3JlYWN0Tm9kZVwiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgUGxhY2VtZW50cyA9ICgwLCBfdHlwZS50dXBsZSkoJ3RvcExlZnQnLCAndG9wQ2VudGVyJywgJ3RvcFJpZ2h0JywgJ2JvdHRvbUxlZnQnLCAnYm90dG9tQ2VudGVyJywgJ2JvdHRvbVJpZ2h0Jyk7XG5cbnZhciBEcm9wZG93biA9IGZ1bmN0aW9uIERyb3Bkb3duKHByb3BzKSB7XG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnRleHQpLFxuICAgICAgZ2V0Q29udGV4dFBvcHVwQ29udGFpbmVyID0gX1JlYWN0JHVzZUNvbnRleHQuZ2V0UG9wdXBDb250YWluZXIsXG4gICAgICBnZXRQcmVmaXhDbHMgPSBfUmVhY3QkdXNlQ29udGV4dC5nZXRQcmVmaXhDbHMsXG4gICAgICBkaXJlY3Rpb24gPSBfUmVhY3QkdXNlQ29udGV4dC5kaXJlY3Rpb247XG5cbiAgdmFyIGdldFRyYW5zaXRpb25OYW1lID0gZnVuY3Rpb24gZ2V0VHJhbnNpdGlvbk5hbWUoKSB7XG4gICAgdmFyIHJvb3RQcmVmaXhDbHMgPSBnZXRQcmVmaXhDbHMoKTtcbiAgICB2YXIgX3Byb3BzJHBsYWNlbWVudCA9IHByb3BzLnBsYWNlbWVudCxcbiAgICAgICAgcGxhY2VtZW50ID0gX3Byb3BzJHBsYWNlbWVudCA9PT0gdm9pZCAwID8gJycgOiBfcHJvcHMkcGxhY2VtZW50LFxuICAgICAgICB0cmFuc2l0aW9uTmFtZSA9IHByb3BzLnRyYW5zaXRpb25OYW1lO1xuXG4gICAgaWYgKHRyYW5zaXRpb25OYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cmFuc2l0aW9uTmFtZTtcbiAgICB9XG5cbiAgICBpZiAocGxhY2VtZW50LmluZGV4T2YoJ3RvcCcpID49IDApIHtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdChyb290UHJlZml4Q2xzLCBcIi1zbGlkZS1kb3duXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBcIlwiLmNvbmNhdChyb290UHJlZml4Q2xzLCBcIi1zbGlkZS11cFwiKTtcbiAgfTtcblxuICB2YXIgcmVuZGVyT3ZlcmxheSA9IGZ1bmN0aW9uIHJlbmRlck92ZXJsYXkocHJlZml4Q2xzKSB7XG4gICAgLy8gcmMtZHJvcGRvd24gYWxyZWFkeSBjYW4gcHJvY2VzcyB0aGUgZnVuY3Rpb24gb2Ygb3ZlcmxheSwgYnV0IHdlIGhhdmUgY2hlY2sgbG9naWMgaGVyZS5cbiAgICAvLyBTbyB3ZSBuZWVkIHJlbmRlciB0aGUgZWxlbWVudCB0byBjaGVjayBhbmQgcGFzcyBiYWNrIHRvIHJjLWRyb3Bkb3duLlxuICAgIHZhciBvdmVybGF5ID0gcHJvcHMub3ZlcmxheTtcbiAgICB2YXIgb3ZlcmxheU5vZGU7XG5cbiAgICBpZiAodHlwZW9mIG92ZXJsYXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG92ZXJsYXlOb2RlID0gb3ZlcmxheSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdmVybGF5Tm9kZSA9IG92ZXJsYXk7XG4gICAgfVxuXG4gICAgb3ZlcmxheU5vZGUgPSBSZWFjdC5DaGlsZHJlbi5vbmx5KHR5cGVvZiBvdmVybGF5Tm9kZSA9PT0gJ3N0cmluZycgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCwgb3ZlcmxheU5vZGUpIDogb3ZlcmxheU5vZGUpO1xuICAgIHZhciBvdmVybGF5UHJvcHMgPSBvdmVybGF5Tm9kZS5wcm9wczsgLy8gV2FybmluZyBpZiB1c2Ugb3RoZXIgbW9kZVxuXG4gICAgKDAsIF9kZXZXYXJuaW5nW1wiZGVmYXVsdFwiXSkoIW92ZXJsYXlQcm9wcy5tb2RlIHx8IG92ZXJsYXlQcm9wcy5tb2RlID09PSAndmVydGljYWwnLCAnRHJvcGRvd24nLCBcIm1vZGU9XFxcIlwiLmNvbmNhdChvdmVybGF5UHJvcHMubW9kZSwgXCJcXFwiIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIERyb3Bkb3duJ3MgTWVudS5cIikpOyAvLyBtZW51IGNhbm5vdCBiZSBzZWxlY3RhYmxlIGluIGRyb3Bkb3duIGRlZmF1bHRseVxuICAgIC8vIG1lbnUgc2hvdWxkIGJlIGZvY3VzYWJsZSBpbiBkcm9wZG93biBkZWZhdWx0bHlcblxuICAgIHZhciBfb3ZlcmxheVByb3BzJHNlbGVjdGEgPSBvdmVybGF5UHJvcHMuc2VsZWN0YWJsZSxcbiAgICAgICAgc2VsZWN0YWJsZSA9IF9vdmVybGF5UHJvcHMkc2VsZWN0YSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3ZlcmxheVByb3BzJHNlbGVjdGEsXG4gICAgICAgIF9vdmVybGF5UHJvcHMkZm9jdXNhYiA9IG92ZXJsYXlQcm9wcy5mb2N1c2FibGUsXG4gICAgICAgIGZvY3VzYWJsZSA9IF9vdmVybGF5UHJvcHMkZm9jdXNhYiA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vdmVybGF5UHJvcHMkZm9jdXNhYixcbiAgICAgICAgZXhwYW5kSWNvbiA9IG92ZXJsYXlQcm9wcy5leHBhbmRJY29uO1xuICAgIHZhciBvdmVybGF5Tm9kZUV4cGFuZEljb24gPSB0eXBlb2YgZXhwYW5kSWNvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGV4cGFuZEljb24pID8gZXhwYW5kSWNvbiA6IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbWVudS1zdWJtZW51LWFycm93XCIpXG4gICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX1JpZ2h0T3V0bGluZWRbXCJkZWZhdWx0XCJdLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbWVudS1zdWJtZW51LWFycm93LWljb25cIilcbiAgICB9KSk7XG4gICAgdmFyIGZpeGVkTW9kZU92ZXJsYXkgPSB0eXBlb2Ygb3ZlcmxheU5vZGUudHlwZSA9PT0gJ3N0cmluZycgPyBvdmVybGF5Tm9kZSA6ICgwLCBfcmVhY3ROb2RlLmNsb25lRWxlbWVudCkob3ZlcmxheU5vZGUsIHtcbiAgICAgIG1vZGU6ICd2ZXJ0aWNhbCcsXG4gICAgICBzZWxlY3RhYmxlOiBzZWxlY3RhYmxlLFxuICAgICAgZm9jdXNhYmxlOiBmb2N1c2FibGUsXG4gICAgICBleHBhbmRJY29uOiBvdmVybGF5Tm9kZUV4cGFuZEljb25cbiAgICB9KTtcbiAgICByZXR1cm4gZml4ZWRNb2RlT3ZlcmxheTtcbiAgfTtcblxuICB2YXIgZ2V0UGxhY2VtZW50ID0gZnVuY3Rpb24gZ2V0UGxhY2VtZW50KCkge1xuICAgIHZhciBwbGFjZW1lbnQgPSBwcm9wcy5wbGFjZW1lbnQ7XG5cbiAgICBpZiAocGxhY2VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBwbGFjZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gJ3J0bCcgPyAnYm90dG9tUmlnaHQnIDogJ2JvdHRvbUxlZnQnO1xuICB9O1xuXG4gIHZhciBhcnJvdyA9IHByb3BzLmFycm93LFxuICAgICAgY3VzdG9taXplUHJlZml4Q2xzID0gcHJvcHMucHJlZml4Q2xzLFxuICAgICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIHRyaWdnZXIgPSBwcm9wcy50cmlnZ2VyLFxuICAgICAgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZCxcbiAgICAgIGdldFBvcHVwQ29udGFpbmVyID0gcHJvcHMuZ2V0UG9wdXBDb250YWluZXIsXG4gICAgICBvdmVybGF5Q2xhc3NOYW1lID0gcHJvcHMub3ZlcmxheUNsYXNzTmFtZTtcbiAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygnZHJvcGRvd24nLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICB2YXIgY2hpbGQgPSBSZWFjdC5DaGlsZHJlbi5vbmx5KGNoaWxkcmVuKTtcbiAgdmFyIGRyb3Bkb3duVHJpZ2dlciA9ICgwLCBfcmVhY3ROb2RlLmNsb25lRWxlbWVudCkoY2hpbGQsIHtcbiAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdHJpZ2dlclwiKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKSh7fSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ydGxcIiksIGRpcmVjdGlvbiA9PT0gJ3J0bCcpLCBjaGlsZC5wcm9wcy5jbGFzc05hbWUpLFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZFxuICB9KTtcbiAgdmFyIG92ZXJsYXlDbGFzc05hbWVDdXN0b21pemVkID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkob3ZlcmxheUNsYXNzTmFtZSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKSh7fSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ydGxcIiksIGRpcmVjdGlvbiA9PT0gJ3J0bCcpKTtcbiAgdmFyIHRyaWdnZXJBY3Rpb25zID0gZGlzYWJsZWQgPyBbXSA6IHRyaWdnZXI7XG4gIHZhciBhbGlnblBvaW50O1xuXG4gIGlmICh0cmlnZ2VyQWN0aW9ucyAmJiB0cmlnZ2VyQWN0aW9ucy5pbmRleE9mKCdjb250ZXh0TWVudScpICE9PSAtMSkge1xuICAgIGFsaWduUG9pbnQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yY0Ryb3Bkb3duW1wiZGVmYXVsdFwiXSwgKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHtcbiAgICBhcnJvdzogYXJyb3csXG4gICAgYWxpZ25Qb2ludDogYWxpZ25Qb2ludFxuICB9LCBwcm9wcywge1xuICAgIG92ZXJsYXlDbGFzc05hbWU6IG92ZXJsYXlDbGFzc05hbWVDdXN0b21pemVkLFxuICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgIGdldFBvcHVwQ29udGFpbmVyOiBnZXRQb3B1cENvbnRhaW5lciB8fCBnZXRDb250ZXh0UG9wdXBDb250YWluZXIsXG4gICAgdHJhbnNpdGlvbk5hbWU6IGdldFRyYW5zaXRpb25OYW1lKCksXG4gICAgdHJpZ2dlcjogdHJpZ2dlckFjdGlvbnMsXG4gICAgb3ZlcmxheTogZnVuY3Rpb24gb3ZlcmxheSgpIHtcbiAgICAgIHJldHVybiByZW5kZXJPdmVybGF5KHByZWZpeENscyk7XG4gICAgfSxcbiAgICBwbGFjZW1lbnQ6IGdldFBsYWNlbWVudCgpXG4gIH0pLCBkcm9wZG93blRyaWdnZXIpO1xufTtcblxuRHJvcGRvd24uQnV0dG9uID0gX2Ryb3Bkb3duQnV0dG9uW1wiZGVmYXVsdFwiXTtcbkRyb3Bkb3duLmRlZmF1bHRQcm9wcyA9IHtcbiAgbW91c2VFbnRlckRlbGF5OiAwLjE1LFxuICBtb3VzZUxlYXZlRGVsYXk6IDAuMVxufTtcbnZhciBfZGVmYXVsdCA9IERyb3Bkb3duO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9idXR0b24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2J1dHRvblwiKSk7XG5cbnZhciBfZGVmYXVsdCA9IF9idXR0b25bXCJkZWZhdWx0XCJdO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHdyYXBwZXJSYWY7XG5cbnZhciByYWYgPSBmdW5jdGlvbiByYWYoY2FsbGJhY2spIHtcbiAgcmV0dXJuICtzZXRUaW1lb3V0KGNhbGxiYWNrLCAxNik7XG59O1xuXG52YXIgY2FmID0gZnVuY3Rpb24gY2FmKG51bSkge1xuICByZXR1cm4gY2xlYXJUaW1lb3V0KG51bSk7XG59O1xuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ3JlcXVlc3RBbmltYXRpb25GcmFtZScgaW4gd2luZG93KSB7XG4gIHJhZiA9IGZ1bmN0aW9uIHJhZihjYWxsYmFjaykge1xuICAgIHJldHVybiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrKTtcbiAgfTtcblxuICBjYWYgPSBmdW5jdGlvbiBjYWYoaGFuZGxlKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShoYW5kbGUpO1xuICB9O1xufVxuXG52YXIgcmFmVVVJRCA9IDA7XG52YXIgcmFmSWRzID0gbmV3IE1hcCgpO1xuXG5mdW5jdGlvbiBjbGVhbnVwKGlkKSB7XG4gIHJhZklkcy5kZWxldGUoaWQpO1xufVxuXG5mdW5jdGlvbiB3cmFwcGVyUmFmKGNhbGxiYWNrKSB7XG4gIHZhciB0aW1lcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMTtcbiAgcmFmVVVJRCArPSAxO1xuICB2YXIgaWQgPSByYWZVVUlEO1xuXG4gIGZ1bmN0aW9uIGNhbGxSZWYobGVmdFRpbWVzKSB7XG4gICAgaWYgKGxlZnRUaW1lcyA9PT0gMCkge1xuICAgICAgLy8gQ2xlYW4gdXBcbiAgICAgIGNsZWFudXAoaWQpOyAvLyBUcmlnZ2VyXG5cbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5leHQgcmFmXG4gICAgICB2YXIgcmVhbElkID0gcmFmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FsbFJlZihsZWZ0VGltZXMgLSAxKTtcbiAgICAgIH0pOyAvLyBCaW5kIHJlYWwgcmFmIGlkXG5cbiAgICAgIHJhZklkcy5zZXQoaWQsIHJlYWxJZCk7XG4gICAgfVxuICB9XG5cbiAgY2FsbFJlZih0aW1lcyk7XG4gIHJldHVybiBpZDtcbn1cblxud3JhcHBlclJhZi5jYW5jZWwgPSBmdW5jdGlvbiAoaWQpIHtcbiAgdmFyIHJlYWxJZCA9IHJhZklkcy5nZXQoaWQpO1xuICBjbGVhbnVwKHJlYWxJZCk7XG4gIHJldHVybiBjYWYocmVhbElkKTtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIpKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCIpKTtcblxudmFyIF9pbmhlcml0czIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCIpKTtcblxudmFyIF9jcmVhdGVTdXBlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZVN1cGVyXCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9yY01lbnUgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmMtbWVudVwiKSk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG52YXIgX1N1Yk1lbnUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL1N1Yk1lbnVcIikpO1xuXG52YXIgX01lbnVJdGVtID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9NZW51SXRlbVwiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX2Rldldhcm5pbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9fdXRpbC9kZXZXYXJuaW5nXCIpKTtcblxudmFyIF9TaWRlciA9IHJlcXVpcmUoXCIuLi9sYXlvdXQvU2lkZXJcIik7XG5cbnZhciBfbW90aW9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vX3V0aWwvbW90aW9uXCIpKTtcblxudmFyIF9yZWFjdE5vZGUgPSByZXF1aXJlKFwiLi4vX3V0aWwvcmVhY3ROb2RlXCIpO1xuXG52YXIgX01lbnVDb250ZXh0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9NZW51Q29udGV4dFwiKSk7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxudmFyIEludGVybmFsTWVudSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICAoMCwgX2luaGVyaXRzMltcImRlZmF1bHRcIl0pKEludGVybmFsTWVudSwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9ICgwLCBfY3JlYXRlU3VwZXIyW1wiZGVmYXVsdFwiXSkoSW50ZXJuYWxNZW51KTtcblxuICBmdW5jdGlvbiBJbnRlcm5hbE1lbnUocHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMltcImRlZmF1bHRcIl0pKHRoaXMsIEludGVybmFsTWVudSk7XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwcm9wcyk7XG5cbiAgICBfdGhpcy5yZW5kZXJNZW51ID0gZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciBnZXRQb3B1cENvbnRhaW5lciA9IF9yZWYuZ2V0UG9wdXBDb250YWluZXIsXG4gICAgICAgICAgZ2V0UHJlZml4Q2xzID0gX3JlZi5nZXRQcmVmaXhDbHMsXG4gICAgICAgICAgZGlyZWN0aW9uID0gX3JlZi5kaXJlY3Rpb247XG4gICAgICB2YXIgcm9vdFByZWZpeENscyA9IGdldFByZWZpeENscygpO1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgY3VzdG9taXplUHJlZml4Q2xzID0gX3RoaXMkcHJvcHMucHJlZml4Q2xzLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICB0aGVtZSA9IF90aGlzJHByb3BzLnRoZW1lLFxuICAgICAgICAgIGV4cGFuZEljb24gPSBfdGhpcyRwcm9wcy5leHBhbmRJY29uO1xuICAgICAgdmFyIGRlZmF1bHRNb3Rpb25zID0ge1xuICAgICAgICBob3Jpem9udGFsOiB7XG4gICAgICAgICAgbW90aW9uTmFtZTogXCJcIi5jb25jYXQocm9vdFByZWZpeENscywgXCItc2xpZGUtdXBcIilcbiAgICAgICAgfSxcbiAgICAgICAgaW5saW5lOiBfbW90aW9uW1wiZGVmYXVsdFwiXSxcbiAgICAgICAgb3RoZXI6IHtcbiAgICAgICAgICBtb3Rpb25OYW1lOiBcIlwiLmNvbmNhdChyb290UHJlZml4Q2xzLCBcIi16b29tLWJpZ1wiKVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygnbWVudScsIGN1c3RvbWl6ZVByZWZpeENscyk7XG4gICAgICB2YXIgbWVudUNsYXNzTmFtZSA9ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItXCIpLmNvbmNhdCh0aGVtZSksICgwLCBfZGVmaW5lUHJvcGVydHkyW1wiZGVmYXVsdFwiXSkoe30sIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaW5saW5lLWNvbGxhcHNlZFwiKSwgX3RoaXMuZ2V0SW5saW5lQ29sbGFwc2VkKCkpLCBjbGFzc05hbWUpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9NZW51Q29udGV4dFtcImRlZmF1bHRcIl0uUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBpbmxpbmVDb2xsYXBzZWQ6IF90aGlzLmdldElubGluZUNvbGxhcHNlZCgpIHx8IGZhbHNlLFxuICAgICAgICAgIGFudGRNZW51VGhlbWU6IHRoZW1lLFxuICAgICAgICAgIGRpcmVjdGlvbjogZGlyZWN0aW9uXG4gICAgICAgIH1cbiAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yY01lbnVbXCJkZWZhdWx0XCJdLCAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe1xuICAgICAgICBnZXRQb3B1cENvbnRhaW5lcjogZ2V0UG9wdXBDb250YWluZXJcbiAgICAgIH0sIF90aGlzLnByb3BzLCB7XG4gICAgICAgIGNsYXNzTmFtZTogbWVudUNsYXNzTmFtZSxcbiAgICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICAgIGRpcmVjdGlvbjogZGlyZWN0aW9uLFxuICAgICAgICBkZWZhdWx0TW90aW9uczogZGVmYXVsdE1vdGlvbnMsXG4gICAgICAgIGV4cGFuZEljb246ICgwLCBfcmVhY3ROb2RlLmNsb25lRWxlbWVudCkoZXhwYW5kSWNvbiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zdWJtZW51LWV4cGFuZC1pY29uXCIpXG4gICAgICAgIH0pXG4gICAgICB9KSkpO1xuICAgIH07XG5cbiAgICAoMCwgX2Rldldhcm5pbmdbXCJkZWZhdWx0XCJdKSghKCdpbmxpbmVDb2xsYXBzZWQnIGluIHByb3BzICYmIHByb3BzLm1vZGUgIT09ICdpbmxpbmUnKSwgJ01lbnUnLCAnYGlubGluZUNvbGxhcHNlZGAgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGBtb2RlYCBpcyBpbmxpbmUuJyk7XG4gICAgKDAsIF9kZXZXYXJuaW5nW1wiZGVmYXVsdFwiXSkoIShwcm9wcy5zaWRlckNvbGxhcHNlZCAhPT0gdW5kZWZpbmVkICYmICdpbmxpbmVDb2xsYXBzZWQnIGluIHByb3BzKSwgJ01lbnUnLCAnYGlubGluZUNvbGxhcHNlZGAgbm90IGNvbnRyb2wgTWVudSB1bmRlciBTaWRlci4gU2hvdWxkIHNldCBgY29sbGFwc2VkYCBvbiBTaWRlciBpbnN0ZWFkLicpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MyW1wiZGVmYXVsdFwiXSkoSW50ZXJuYWxNZW51LCBbe1xuICAgIGtleTogXCJnZXRJbmxpbmVDb2xsYXBzZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW5saW5lQ29sbGFwc2VkKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgaW5saW5lQ29sbGFwc2VkID0gX3RoaXMkcHJvcHMyLmlubGluZUNvbGxhcHNlZCxcbiAgICAgICAgICBzaWRlckNvbGxhcHNlZCA9IF90aGlzJHByb3BzMi5zaWRlckNvbGxhcHNlZDtcblxuICAgICAgaWYgKHNpZGVyQ29sbGFwc2VkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHNpZGVyQ29sbGFwc2VkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5saW5lQ29sbGFwc2VkO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jb25maWdQcm92aWRlci5Db25maWdDb25zdW1lciwgbnVsbCwgdGhpcy5yZW5kZXJNZW51KTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEludGVybmFsTWVudTtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuSW50ZXJuYWxNZW51LmRlZmF1bHRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lOiAnJyxcbiAgdGhlbWU6ICdsaWdodCcsXG4gIGZvY3VzYWJsZTogZmFsc2Vcbn07IC8vIFdlIHNob3VsZCBrZWVwIHRoaXMgYXMgcmVmLWFibGVcblxudmFyIE1lbnUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQyKSB7XG4gICgwLCBfaW5oZXJpdHMyW1wiZGVmYXVsdFwiXSkoTWVudSwgX1JlYWN0JENvbXBvbmVudDIpO1xuXG4gIHZhciBfc3VwZXIyID0gKDAsIF9jcmVhdGVTdXBlcjJbXCJkZWZhdWx0XCJdKShNZW51KTtcblxuICBmdW5jdGlvbiBNZW51KCkge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2syW1wiZGVmYXVsdFwiXSkodGhpcywgTWVudSk7XG4gICAgcmV0dXJuIF9zdXBlcjIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MyW1wiZGVmYXVsdFwiXSkoTWVudSwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX1NpZGVyLlNpZGVyQ29udGV4dC5Db25zdW1lciwgbnVsbCwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEludGVybmFsTWVudSwgKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCBfdGhpczIucHJvcHMsIGNvbnRleHQpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gTWVudTtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuTWVudS5EaXZpZGVyID0gX3JjTWVudS5EaXZpZGVyO1xuTWVudS5JdGVtID0gX01lbnVJdGVtW1wiZGVmYXVsdFwiXTtcbk1lbnUuU3ViTWVudSA9IF9TdWJNZW51W1wiZGVmYXVsdFwiXTtcbk1lbnUuSXRlbUdyb3VwID0gX3JjTWVudS5JdGVtR3JvdXA7XG52YXIgX2RlZmF1bHQgPSBNZW51O1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfc2xpY2VkVG9BcnJheTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIikpO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9yY1Rvb2x0aXAgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYy10b29sdGlwXCIpKTtcblxudmFyIF91c2VNZXJnZWRTdGF0ZTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYy11dGlsL2xpYi9ob29rcy91c2VNZXJnZWRTdGF0ZVwiKSk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG52YXIgX3BsYWNlbWVudHMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3BsYWNlbWVudHNcIikpO1xuXG52YXIgX3JlYWN0Tm9kZSA9IHJlcXVpcmUoXCIuLi9fdXRpbC9yZWFjdE5vZGVcIik7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX2NvbG9ycyA9IHJlcXVpcmUoXCIuLi9fdXRpbC9jb2xvcnNcIik7XG5cbnZhciBfbW90aW9uID0gcmVxdWlyZShcIi4uL191dGlsL21vdGlvblwiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgc3BsaXRPYmplY3QgPSBmdW5jdGlvbiBzcGxpdE9iamVjdChvYmosIGtleXMpIHtcbiAgdmFyIHBpY2tlZCA9IHt9O1xuICB2YXIgb21pdHRlZCA9ICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgb2JqKTtcbiAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAob2JqICYmIGtleSBpbiBvYmopIHtcbiAgICAgIHBpY2tlZFtrZXldID0gb2JqW2tleV07XG4gICAgICBkZWxldGUgb21pdHRlZFtrZXldO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7XG4gICAgcGlja2VkOiBwaWNrZWQsXG4gICAgb21pdHRlZDogb21pdHRlZFxuICB9O1xufTtcblxudmFyIFByZXNldENvbG9yUmVnZXggPSBuZXcgUmVnRXhwKFwiXihcIi5jb25jYXQoX2NvbG9ycy5QcmVzZXRDb2xvclR5cGVzLmpvaW4oJ3wnKSwgXCIpKC1pbnZlcnNlKT8kXCIpKTsgLy8gRml4IFRvb2x0aXAgd29uJ3QgaGlkZSBhdCBkaXNhYmxlZCBidXR0b25cbi8vIG1vdXNlIGV2ZW50cyBkb24ndCB0cmlnZ2VyIGF0IGRpc2FibGVkIGJ1dHRvbiBpbiBDaHJvbWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdC1jb21wb25lbnQvdG9vbHRpcC9pc3N1ZXMvMThcblxuZnVuY3Rpb24gZ2V0RGlzYWJsZWRDb21wYXRpYmxlQ2hpbGRyZW4oZWxlbWVudCwgcHJlZml4Q2xzKSB7XG4gIHZhciBlbGVtZW50VHlwZSA9IGVsZW1lbnQudHlwZTtcblxuICBpZiAoKGVsZW1lbnRUeXBlLl9fQU5UX0JVVFRPTiA9PT0gdHJ1ZSB8fCBlbGVtZW50VHlwZS5fX0FOVF9TV0lUQ0ggPT09IHRydWUgfHwgZWxlbWVudFR5cGUuX19BTlRfQ0hFQ0tCT1ggPT09IHRydWUgfHwgZWxlbWVudC50eXBlID09PSAnYnV0dG9uJykgJiYgZWxlbWVudC5wcm9wcy5kaXNhYmxlZCkge1xuICAgIC8vIFBpY2sgc29tZSBsYXlvdXQgcmVsYXRlZCBzdHlsZSBwcm9wZXJ0aWVzIHVwIHRvIHNwYW5cbiAgICAvLyBQcmV2ZW50IGxheW91dCBidWdzIGxpa2UgaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvNTI1NFxuICAgIHZhciBfc3BsaXRPYmplY3QgPSBzcGxpdE9iamVjdChlbGVtZW50LnByb3BzLnN0eWxlLCBbJ3Bvc2l0aW9uJywgJ2xlZnQnLCAncmlnaHQnLCAndG9wJywgJ2JvdHRvbScsICdmbG9hdCcsICdkaXNwbGF5JywgJ3pJbmRleCddKSxcbiAgICAgICAgcGlja2VkID0gX3NwbGl0T2JqZWN0LnBpY2tlZCxcbiAgICAgICAgb21pdHRlZCA9IF9zcGxpdE9iamVjdC5vbWl0dGVkO1xuXG4gICAgdmFyIHNwYW5TdHlsZSA9ICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaydcbiAgICB9LCBwaWNrZWQpLCB7XG4gICAgICBjdXJzb3I6ICdub3QtYWxsb3dlZCcsXG4gICAgICB3aWR0aDogZWxlbWVudC5wcm9wcy5ibG9jayA/ICcxMDAlJyA6IG51bGxcbiAgICB9KTtcbiAgICB2YXIgYnV0dG9uU3R5bGUgPSAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCBvbWl0dGVkKSwge1xuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnXG4gICAgfSk7XG4gICAgdmFyIGNoaWxkID0gKDAsIF9yZWFjdE5vZGUuY2xvbmVFbGVtZW50KShlbGVtZW50LCB7XG4gICAgICBzdHlsZTogYnV0dG9uU3R5bGUsXG4gICAgICBjbGFzc05hbWU6IG51bGxcbiAgICB9KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgIHN0eWxlOiBzcGFuU3R5bGUsXG4gICAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKGVsZW1lbnQucHJvcHMuY2xhc3NOYW1lLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWRpc2FibGVkLWNvbXBhdGlibGUtd3JhcHBlclwiKSlcbiAgICB9LCBjaGlsZCk7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudDtcbn1cblxudmFyIFRvb2x0aXAgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICB2YXIgX2NsYXNzTmFtZXMyO1xuXG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnRleHQpLFxuICAgICAgZ2V0Q29udGV4dFBvcHVwQ29udGFpbmVyID0gX1JlYWN0JHVzZUNvbnRleHQuZ2V0UG9wdXBDb250YWluZXIsXG4gICAgICBnZXRQcmVmaXhDbHMgPSBfUmVhY3QkdXNlQ29udGV4dC5nZXRQcmVmaXhDbHMsXG4gICAgICBkaXJlY3Rpb24gPSBfUmVhY3QkdXNlQ29udGV4dC5kaXJlY3Rpb247XG5cbiAgdmFyIF91c2VNZXJnZWRTdGF0ZSA9ICgwLCBfdXNlTWVyZ2VkU3RhdGUzW1wiZGVmYXVsdFwiXSkoZmFsc2UsIHtcbiAgICB2YWx1ZTogcHJvcHMudmlzaWJsZSxcbiAgICBkZWZhdWx0VmFsdWU6IHByb3BzLmRlZmF1bHRWaXNpYmxlXG4gIH0pLFxuICAgICAgX3VzZU1lcmdlZFN0YXRlMiA9ICgwLCBfc2xpY2VkVG9BcnJheTJbXCJkZWZhdWx0XCJdKShfdXNlTWVyZ2VkU3RhdGUsIDIpLFxuICAgICAgdmlzaWJsZSA9IF91c2VNZXJnZWRTdGF0ZTJbMF0sXG4gICAgICBzZXRWaXNpYmxlID0gX3VzZU1lcmdlZFN0YXRlMlsxXTtcblxuICB2YXIgaXNOb1RpdGxlID0gZnVuY3Rpb24gaXNOb1RpdGxlKCkge1xuICAgIHZhciB0aXRsZSA9IHByb3BzLnRpdGxlLFxuICAgICAgICBvdmVybGF5ID0gcHJvcHMub3ZlcmxheTtcbiAgICByZXR1cm4gIXRpdGxlICYmICFvdmVybGF5ICYmIHRpdGxlICE9PSAwOyAvLyBvdmVybGF5IGZvciBvbGQgdmVyc2lvbiBjb21wYXRpYmlsaXR5XG4gIH07XG5cbiAgdmFyIG9uVmlzaWJsZUNoYW5nZSA9IGZ1bmN0aW9uIG9uVmlzaWJsZUNoYW5nZSh2aXMpIHtcbiAgICB2YXIgX2E7XG5cbiAgICBzZXRWaXNpYmxlKGlzTm9UaXRsZSgpID8gZmFsc2UgOiB2aXMpO1xuXG4gICAgaWYgKCFpc05vVGl0bGUoKSkge1xuICAgICAgKF9hID0gcHJvcHMub25WaXNpYmxlQ2hhbmdlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChwcm9wcywgdmlzKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGdldFRvb2x0aXBQbGFjZW1lbnRzID0gZnVuY3Rpb24gZ2V0VG9vbHRpcFBsYWNlbWVudHMoKSB7XG4gICAgdmFyIGJ1aWx0aW5QbGFjZW1lbnRzID0gcHJvcHMuYnVpbHRpblBsYWNlbWVudHMsXG4gICAgICAgIGFycm93UG9pbnRBdENlbnRlciA9IHByb3BzLmFycm93UG9pbnRBdENlbnRlcixcbiAgICAgICAgYXV0b0FkanVzdE92ZXJmbG93ID0gcHJvcHMuYXV0b0FkanVzdE92ZXJmbG93O1xuICAgIHJldHVybiBidWlsdGluUGxhY2VtZW50cyB8fCAoMCwgX3BsYWNlbWVudHNbXCJkZWZhdWx0XCJdKSh7XG4gICAgICBhcnJvd1BvaW50QXRDZW50ZXI6IGFycm93UG9pbnRBdENlbnRlcixcbiAgICAgIGF1dG9BZGp1c3RPdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93XG4gICAgfSk7XG4gIH07IC8vIOWKqOaAgeiuvue9ruWKqOeUu+eCuVxuXG5cbiAgdmFyIG9uUG9wdXBBbGlnbiA9IGZ1bmN0aW9uIG9uUG9wdXBBbGlnbihkb21Ob2RlLCBhbGlnbikge1xuICAgIHZhciBwbGFjZW1lbnRzID0gZ2V0VG9vbHRpcFBsYWNlbWVudHMoKTsgLy8g5b2T5YmN6L+U5Zue55qE5L2N572uXG5cbiAgICB2YXIgcGxhY2VtZW50ID0gT2JqZWN0LmtleXMocGxhY2VtZW50cykuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHJldHVybiBwbGFjZW1lbnRzW2tleV0ucG9pbnRzWzBdID09PSBhbGlnbi5wb2ludHNbMF0gJiYgcGxhY2VtZW50c1trZXldLnBvaW50c1sxXSA9PT0gYWxpZ24ucG9pbnRzWzFdO1xuICAgIH0pWzBdO1xuXG4gICAgaWYgKCFwbGFjZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIOagueaNruW9k+WJjeWdkOagh+iuvue9ruWKqOeUu+eCuVxuXG5cbiAgICB2YXIgcmVjdCA9IGRvbU5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdmFyIHRyYW5zZm9ybU9yaWdpbiA9IHtcbiAgICAgIHRvcDogJzUwJScsXG4gICAgICBsZWZ0OiAnNTAlJ1xuICAgIH07XG5cbiAgICBpZiAocGxhY2VtZW50LmluZGV4T2YoJ3RvcCcpID49IDAgfHwgcGxhY2VtZW50LmluZGV4T2YoJ0JvdHRvbScpID49IDApIHtcbiAgICAgIHRyYW5zZm9ybU9yaWdpbi50b3AgPSBcIlwiLmNvbmNhdChyZWN0LmhlaWdodCAtIGFsaWduLm9mZnNldFsxXSwgXCJweFwiKTtcbiAgICB9IGVsc2UgaWYgKHBsYWNlbWVudC5pbmRleE9mKCdUb3AnKSA+PSAwIHx8IHBsYWNlbWVudC5pbmRleE9mKCdib3R0b20nKSA+PSAwKSB7XG4gICAgICB0cmFuc2Zvcm1PcmlnaW4udG9wID0gXCJcIi5jb25jYXQoLWFsaWduLm9mZnNldFsxXSwgXCJweFwiKTtcbiAgICB9XG5cbiAgICBpZiAocGxhY2VtZW50LmluZGV4T2YoJ2xlZnQnKSA+PSAwIHx8IHBsYWNlbWVudC5pbmRleE9mKCdSaWdodCcpID49IDApIHtcbiAgICAgIHRyYW5zZm9ybU9yaWdpbi5sZWZ0ID0gXCJcIi5jb25jYXQocmVjdC53aWR0aCAtIGFsaWduLm9mZnNldFswXSwgXCJweFwiKTtcbiAgICB9IGVsc2UgaWYgKHBsYWNlbWVudC5pbmRleE9mKCdyaWdodCcpID49IDAgfHwgcGxhY2VtZW50LmluZGV4T2YoJ0xlZnQnKSA+PSAwKSB7XG4gICAgICB0cmFuc2Zvcm1PcmlnaW4ubGVmdCA9IFwiXCIuY29uY2F0KC1hbGlnbi5vZmZzZXRbMF0sIFwicHhcIik7XG4gICAgfVxuXG4gICAgZG9tTm9kZS5zdHlsZS50cmFuc2Zvcm1PcmlnaW4gPSBcIlwiLmNvbmNhdCh0cmFuc2Zvcm1PcmlnaW4ubGVmdCwgXCIgXCIpLmNvbmNhdCh0cmFuc2Zvcm1PcmlnaW4udG9wKTtcbiAgfTtcblxuICB2YXIgZ2V0T3ZlcmxheSA9IGZ1bmN0aW9uIGdldE92ZXJsYXkoKSB7XG4gICAgdmFyIHRpdGxlID0gcHJvcHMudGl0bGUsXG4gICAgICAgIG92ZXJsYXkgPSBwcm9wcy5vdmVybGF5O1xuXG4gICAgaWYgKHRpdGxlID09PSAwKSB7XG4gICAgICByZXR1cm4gdGl0bGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG92ZXJsYXkgfHwgdGl0bGUgfHwgJyc7XG4gIH07XG5cbiAgdmFyIGN1c3RvbWl6ZVByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgIG9wZW5DbGFzc05hbWUgPSBwcm9wcy5vcGVuQ2xhc3NOYW1lLFxuICAgICAgZ2V0UG9wdXBDb250YWluZXIgPSBwcm9wcy5nZXRQb3B1cENvbnRhaW5lcixcbiAgICAgIGdldFRvb2x0aXBDb250YWluZXIgPSBwcm9wcy5nZXRUb29sdGlwQ29udGFpbmVyLFxuICAgICAgb3ZlcmxheUNsYXNzTmFtZSA9IHByb3BzLm92ZXJsYXlDbGFzc05hbWUsXG4gICAgICBjb2xvciA9IHByb3BzLmNvbG9yLFxuICAgICAgb3ZlcmxheUlubmVyU3R5bGUgPSBwcm9wcy5vdmVybGF5SW5uZXJTdHlsZSxcbiAgICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG4gIHZhciBwcmVmaXhDbHMgPSBnZXRQcmVmaXhDbHMoJ3Rvb2x0aXAnLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICB2YXIgcm9vdFByZWZpeENscyA9IGdldFByZWZpeENscygpO1xuICB2YXIgdGVtcFZpc2libGUgPSB2aXNpYmxlOyAvLyBIaWRlIHRvb2x0aXAgd2hlbiB0aGVyZSBpcyBubyB0aXRsZVxuXG4gIGlmICghKCd2aXNpYmxlJyBpbiBwcm9wcykgJiYgaXNOb1RpdGxlKCkpIHtcbiAgICB0ZW1wVmlzaWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIGNoaWxkID0gZ2V0RGlzYWJsZWRDb21wYXRpYmxlQ2hpbGRyZW4oKDAsIF9yZWFjdE5vZGUuaXNWYWxpZEVsZW1lbnQpKGNoaWxkcmVuKSA/IGNoaWxkcmVuIDogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIGNoaWxkcmVuKSwgcHJlZml4Q2xzKTtcbiAgdmFyIGNoaWxkUHJvcHMgPSBjaGlsZC5wcm9wcztcbiAgdmFyIGNoaWxkQ2xzID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoY2hpbGRQcm9wcy5jbGFzc05hbWUsICgwLCBfZGVmaW5lUHJvcGVydHkyW1wiZGVmYXVsdFwiXSkoe30sIG9wZW5DbGFzc05hbWUgfHwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1vcGVuXCIpLCB0cnVlKSk7XG4gIHZhciBjdXN0b21PdmVybGF5Q2xhc3NOYW1lID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkob3ZlcmxheUNsYXNzTmFtZSwgKF9jbGFzc05hbWVzMiA9IHt9LCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzMiwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ydGxcIiksIGRpcmVjdGlvbiA9PT0gJ3J0bCcpLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzMiwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KGNvbG9yKSwgY29sb3IgJiYgUHJlc2V0Q29sb3JSZWdleC50ZXN0KGNvbG9yKSksIF9jbGFzc05hbWVzMikpO1xuICB2YXIgZm9ybWF0dGVkT3ZlcmxheUlubmVyU3R5bGUgPSBvdmVybGF5SW5uZXJTdHlsZTtcbiAgdmFyIGFycm93Q29udGVudFN0eWxlO1xuXG4gIGlmIChjb2xvciAmJiAhUHJlc2V0Q29sb3JSZWdleC50ZXN0KGNvbG9yKSkge1xuICAgIGZvcm1hdHRlZE92ZXJsYXlJbm5lclN0eWxlID0gKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKCgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgb3ZlcmxheUlubmVyU3R5bGUpLCB7XG4gICAgICBiYWNrZ3JvdW5kOiBjb2xvclxuICAgIH0pO1xuICAgIGFycm93Q29udGVudFN0eWxlID0ge1xuICAgICAgYmFja2dyb3VuZDogY29sb3JcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yY1Rvb2x0aXBbXCJkZWZhdWx0XCJdLCAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIHByb3BzLCB7XG4gICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgb3ZlcmxheUNsYXNzTmFtZTogY3VzdG9tT3ZlcmxheUNsYXNzTmFtZSxcbiAgICBnZXRUb29sdGlwQ29udGFpbmVyOiBnZXRQb3B1cENvbnRhaW5lciB8fCBnZXRUb29sdGlwQ29udGFpbmVyIHx8IGdldENvbnRleHRQb3B1cENvbnRhaW5lcixcbiAgICByZWY6IHJlZixcbiAgICBidWlsdGluUGxhY2VtZW50czogZ2V0VG9vbHRpcFBsYWNlbWVudHMoKSxcbiAgICBvdmVybGF5OiBnZXRPdmVybGF5KCksXG4gICAgdmlzaWJsZTogdGVtcFZpc2libGUsXG4gICAgb25WaXNpYmxlQ2hhbmdlOiBvblZpc2libGVDaGFuZ2UsXG4gICAgb25Qb3B1cEFsaWduOiBvblBvcHVwQWxpZ24sXG4gICAgb3ZlcmxheUlubmVyU3R5bGU6IGZvcm1hdHRlZE92ZXJsYXlJbm5lclN0eWxlLFxuICAgIGFycm93Q29udGVudDogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1hcnJvdy1jb250ZW50XCIpLFxuICAgICAgc3R5bGU6IGFycm93Q29udGVudFN0eWxlXG4gICAgfSksXG4gICAgbW90aW9uOiB7XG4gICAgICBtb3Rpb25OYW1lOiAoMCwgX21vdGlvbi5nZXRUcmFuc2l0aW9uTmFtZSkocm9vdFByZWZpeENscywgJ3pvb20tYmlnLWZhc3QnLCBwcm9wcy50cmFuc2l0aW9uTmFtZSksXG4gICAgICBtb3Rpb25EZWFkbGluZTogMTAwMFxuICAgIH1cbiAgfSksIHRlbXBWaXNpYmxlID8gKDAsIF9yZWFjdE5vZGUuY2xvbmVFbGVtZW50KShjaGlsZCwge1xuICAgIGNsYXNzTmFtZTogY2hpbGRDbHNcbiAgfSkgOiBjaGlsZCk7XG59KTtcblRvb2x0aXAuZGlzcGxheU5hbWUgPSAnVG9vbHRpcCc7XG5Ub29sdGlwLmRlZmF1bHRQcm9wcyA9IHtcbiAgcGxhY2VtZW50OiAndG9wJyxcbiAgbW91c2VFbnRlckRlbGF5OiAwLjEsXG4gIG1vdXNlTGVhdmVEZWxheTogMC4xLFxuICBhcnJvd1BvaW50QXRDZW50ZXI6IGZhbHNlLFxuICBhdXRvQWRqdXN0T3ZlcmZsb3c6IHRydWVcbn07XG52YXIgX2RlZmF1bHQgPSBUb29sdGlwO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBleHBvcnRzLlNpZGVyQ29udGV4dCA9IHZvaWQgMDtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpKTtcblxudmFyIF9leHRlbmRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKSk7XG5cbnZhciBfc2xpY2VkVG9BcnJheTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIikpO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9vbWl0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtdXRpbC9saWIvb21pdFwiKSk7XG5cbnZhciBfQmFyc091dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMvQmFyc091dGxpbmVkXCIpKTtcblxudmFyIF9SaWdodE91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMvUmlnaHRPdXRsaW5lZFwiKSk7XG5cbnZhciBfTGVmdE91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMvTGVmdE91dGxpbmVkXCIpKTtcblxudmFyIF9sYXlvdXQgPSByZXF1aXJlKFwiLi9sYXlvdXRcIik7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX2lzTnVtZXJpYyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL191dGlsL2lzTnVtZXJpY1wiKSk7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxudmFyIF9fcmVzdCA9IHZvaWQgMCAmJiAodm9pZCAwKS5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApIHRbcF0gPSBzW3BdO1xuICB9XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbnZhciBkaW1lbnNpb25NYXhNYXAgPSB7XG4gIHhzOiAnNDc5Ljk4cHgnLFxuICBzbTogJzU3NS45OHB4JyxcbiAgbWQ6ICc3NjcuOThweCcsXG4gIGxnOiAnOTkxLjk4cHgnLFxuICB4bDogJzExOTkuOThweCcsXG4gIHh4bDogJzE1OTkuOThweCdcbn07XG52YXIgU2lkZXJDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQoe30pO1xuZXhwb3J0cy5TaWRlckNvbnRleHQgPSBTaWRlckNvbnRleHQ7XG5cbnZhciBnZW5lcmF0ZUlkID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaSA9IDA7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByZWZpeCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJyc7XG4gICAgaSArPSAxO1xuICAgIHJldHVybiBcIlwiLmNvbmNhdChwcmVmaXgpLmNvbmNhdChpKTtcbiAgfTtcbn0oKTtcblxudmFyIFNpZGVyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKF9hLCByZWYpIHtcbiAgdmFyIGN1c3RvbWl6ZVByZWZpeENscyA9IF9hLnByZWZpeENscyxcbiAgICAgIGNsYXNzTmFtZSA9IF9hLmNsYXNzTmFtZSxcbiAgICAgIHRyaWdnZXIgPSBfYS50cmlnZ2VyLFxuICAgICAgY2hpbGRyZW4gPSBfYS5jaGlsZHJlbixcbiAgICAgIF9hJGRlZmF1bHRDb2xsYXBzZWQgPSBfYS5kZWZhdWx0Q29sbGFwc2VkLFxuICAgICAgZGVmYXVsdENvbGxhcHNlZCA9IF9hJGRlZmF1bHRDb2xsYXBzZWQgPT09IHZvaWQgMCA/IGZhbHNlIDogX2EkZGVmYXVsdENvbGxhcHNlZCxcbiAgICAgIF9hJHRoZW1lID0gX2EudGhlbWUsXG4gICAgICB0aGVtZSA9IF9hJHRoZW1lID09PSB2b2lkIDAgPyAnZGFyaycgOiBfYSR0aGVtZSxcbiAgICAgIF9hJHN0eWxlID0gX2Euc3R5bGUsXG4gICAgICBzdHlsZSA9IF9hJHN0eWxlID09PSB2b2lkIDAgPyB7fSA6IF9hJHN0eWxlLFxuICAgICAgX2EkY29sbGFwc2libGUgPSBfYS5jb2xsYXBzaWJsZSxcbiAgICAgIGNvbGxhcHNpYmxlID0gX2EkY29sbGFwc2libGUgPT09IHZvaWQgMCA/IGZhbHNlIDogX2EkY29sbGFwc2libGUsXG4gICAgICBfYSRyZXZlcnNlQXJyb3cgPSBfYS5yZXZlcnNlQXJyb3csXG4gICAgICByZXZlcnNlQXJyb3cgPSBfYSRyZXZlcnNlQXJyb3cgPT09IHZvaWQgMCA/IGZhbHNlIDogX2EkcmV2ZXJzZUFycm93LFxuICAgICAgX2Ekd2lkdGggPSBfYS53aWR0aCxcbiAgICAgIHdpZHRoID0gX2Ekd2lkdGggPT09IHZvaWQgMCA/IDIwMCA6IF9hJHdpZHRoLFxuICAgICAgX2EkY29sbGFwc2VkV2lkdGggPSBfYS5jb2xsYXBzZWRXaWR0aCxcbiAgICAgIGNvbGxhcHNlZFdpZHRoID0gX2EkY29sbGFwc2VkV2lkdGggPT09IHZvaWQgMCA/IDgwIDogX2EkY29sbGFwc2VkV2lkdGgsXG4gICAgICB6ZXJvV2lkdGhUcmlnZ2VyU3R5bGUgPSBfYS56ZXJvV2lkdGhUcmlnZ2VyU3R5bGUsXG4gICAgICBicmVha3BvaW50ID0gX2EuYnJlYWtwb2ludCxcbiAgICAgIG9uQ29sbGFwc2UgPSBfYS5vbkNvbGxhcHNlLFxuICAgICAgb25CcmVha3BvaW50ID0gX2Eub25CcmVha3BvaW50LFxuICAgICAgcHJvcHMgPSBfX3Jlc3QoX2EsIFtcInByZWZpeENsc1wiLCBcImNsYXNzTmFtZVwiLCBcInRyaWdnZXJcIiwgXCJjaGlsZHJlblwiLCBcImRlZmF1bHRDb2xsYXBzZWRcIiwgXCJ0aGVtZVwiLCBcInN0eWxlXCIsIFwiY29sbGFwc2libGVcIiwgXCJyZXZlcnNlQXJyb3dcIiwgXCJ3aWR0aFwiLCBcImNvbGxhcHNlZFdpZHRoXCIsIFwiemVyb1dpZHRoVHJpZ2dlclN0eWxlXCIsIFwiYnJlYWtwb2ludFwiLCBcIm9uQ29sbGFwc2VcIiwgXCJvbkJyZWFrcG9pbnRcIl0pO1xuXG4gIHZhciBfdXNlQ29udGV4dCA9ICgwLCBSZWFjdC51c2VDb250ZXh0KShfbGF5b3V0LkxheW91dENvbnRleHQpLFxuICAgICAgc2lkZXJIb29rID0gX3VzZUNvbnRleHQuc2lkZXJIb29rO1xuXG4gIHZhciBfdXNlU3RhdGUgPSAoMCwgUmVhY3QudXNlU3RhdGUpKCdjb2xsYXBzZWQnIGluIHByb3BzID8gcHJvcHMuY29sbGFwc2VkIDogZGVmYXVsdENvbGxhcHNlZCksXG4gICAgICBfdXNlU3RhdGUyID0gKDAsIF9zbGljZWRUb0FycmF5MltcImRlZmF1bHRcIl0pKF91c2VTdGF0ZSwgMiksXG4gICAgICBjb2xsYXBzZWQgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0Q29sbGFwc2VkID0gX3VzZVN0YXRlMlsxXTtcblxuICB2YXIgX3VzZVN0YXRlMyA9ICgwLCBSZWFjdC51c2VTdGF0ZSkoZmFsc2UpLFxuICAgICAgX3VzZVN0YXRlNCA9ICgwLCBfc2xpY2VkVG9BcnJheTJbXCJkZWZhdWx0XCJdKShfdXNlU3RhdGUzLCAyKSxcbiAgICAgIGJlbG93ID0gX3VzZVN0YXRlNFswXSxcbiAgICAgIHNldEJlbG93ID0gX3VzZVN0YXRlNFsxXTtcblxuICAoMCwgUmVhY3QudXNlRWZmZWN0KShmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCdjb2xsYXBzZWQnIGluIHByb3BzKSB7XG4gICAgICBzZXRDb2xsYXBzZWQocHJvcHMuY29sbGFwc2VkKTtcbiAgICB9XG4gIH0sIFtwcm9wcy5jb2xsYXBzZWRdKTtcblxuICB2YXIgaGFuZGxlU2V0Q29sbGFwc2VkID0gZnVuY3Rpb24gaGFuZGxlU2V0Q29sbGFwc2VkKHZhbHVlLCB0eXBlKSB7XG4gICAgaWYgKCEoJ2NvbGxhcHNlZCcgaW4gcHJvcHMpKSB7XG4gICAgICBzZXRDb2xsYXBzZWQodmFsdWUpO1xuICAgIH1cblxuICAgIG9uQ29sbGFwc2UgPT09IG51bGwgfHwgb25Db2xsYXBzZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Db2xsYXBzZSh2YWx1ZSwgdHlwZSk7XG4gIH07IC8vID09PT09PT09PT09PT09PT09PT09PT09PT0gUmVzcG9uc2l2ZSA9PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuICB2YXIgcmVzcG9uc2l2ZUhhbmRsZXJSZWYgPSAoMCwgUmVhY3QudXNlUmVmKSgpO1xuXG4gIHJlc3BvbnNpdmVIYW5kbGVyUmVmLmN1cnJlbnQgPSBmdW5jdGlvbiAobXFsKSB7XG4gICAgc2V0QmVsb3cobXFsLm1hdGNoZXMpO1xuICAgIG9uQnJlYWtwb2ludCA9PT0gbnVsbCB8fCBvbkJyZWFrcG9pbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQnJlYWtwb2ludChtcWwubWF0Y2hlcyk7XG5cbiAgICBpZiAoY29sbGFwc2VkICE9PSBtcWwubWF0Y2hlcykge1xuICAgICAgaGFuZGxlU2V0Q29sbGFwc2VkKG1xbC5tYXRjaGVzLCAncmVzcG9uc2l2ZScpO1xuICAgIH1cbiAgfTtcblxuICAoMCwgUmVhY3QudXNlRWZmZWN0KShmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gcmVzcG9uc2l2ZUhhbmRsZXIobXFsKSB7XG4gICAgICByZXR1cm4gcmVzcG9uc2l2ZUhhbmRsZXJSZWYuY3VycmVudChtcWwpO1xuICAgIH1cblxuICAgIHZhciBtcWw7XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhciBfd2luZG93ID0gd2luZG93LFxuICAgICAgICAgIG1hdGNoTWVkaWEgPSBfd2luZG93Lm1hdGNoTWVkaWE7XG5cbiAgICAgIGlmIChtYXRjaE1lZGlhICYmIGJyZWFrcG9pbnQgJiYgYnJlYWtwb2ludCBpbiBkaW1lbnNpb25NYXhNYXApIHtcbiAgICAgICAgbXFsID0gbWF0Y2hNZWRpYShcIihtYXgtd2lkdGg6IFwiLmNvbmNhdChkaW1lbnNpb25NYXhNYXBbYnJlYWtwb2ludF0sIFwiKVwiKSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBtcWwuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgcmVzcG9uc2l2ZUhhbmRsZXIpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIG1xbC5hZGRMaXN0ZW5lcihyZXNwb25zaXZlSGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXNwb25zaXZlSGFuZGxlcihtcWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBtcWwgPT09IG51bGwgfHwgbXFsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtcWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgcmVzcG9uc2l2ZUhhbmRsZXIpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbXFsID09PSBudWxsIHx8IG1xbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogbXFsLnJlbW92ZUxpc3RlbmVyKHJlc3BvbnNpdmVIYW5kbGVyKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbXSk7XG4gICgwLCBSZWFjdC51c2VFZmZlY3QpKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdW5pcXVlSWQgPSBnZW5lcmF0ZUlkKCdhbnQtc2lkZXItJyk7XG4gICAgc2lkZXJIb29rLmFkZFNpZGVyKHVuaXF1ZUlkKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHNpZGVySG9vay5yZW1vdmVTaWRlcih1bmlxdWVJZCk7XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIHZhciB0b2dnbGUgPSBmdW5jdGlvbiB0b2dnbGUoKSB7XG4gICAgaGFuZGxlU2V0Q29sbGFwc2VkKCFjb2xsYXBzZWQsICdjbGlja1RyaWdnZXInKTtcbiAgfTtcblxuICB2YXIgX3VzZUNvbnRleHQyID0gKDAsIFJlYWN0LnVzZUNvbnRleHQpKF9jb25maWdQcm92aWRlci5Db25maWdDb250ZXh0KSxcbiAgICAgIGdldFByZWZpeENscyA9IF91c2VDb250ZXh0Mi5nZXRQcmVmaXhDbHM7XG5cbiAgdmFyIHJlbmRlclNpZGVyID0gZnVuY3Rpb24gcmVuZGVyU2lkZXIoKSB7XG4gICAgdmFyIF9jbGFzc05hbWVzO1xuXG4gICAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygnbGF5b3V0LXNpZGVyJywgY3VzdG9taXplUHJlZml4Q2xzKTtcbiAgICB2YXIgZGl2UHJvcHMgPSAoMCwgX29taXRbXCJkZWZhdWx0XCJdKShwcm9wcywgWydjb2xsYXBzZWQnXSk7XG4gICAgdmFyIHJhd1dpZHRoID0gY29sbGFwc2VkID8gY29sbGFwc2VkV2lkdGggOiB3aWR0aDsgLy8gdXNlIFwicHhcIiBhcyBmYWxsYmFjayB1bml0IGZvciB3aWR0aFxuXG4gICAgdmFyIHNpZGVyV2lkdGggPSAoMCwgX2lzTnVtZXJpY1tcImRlZmF1bHRcIl0pKHJhd1dpZHRoKSA/IFwiXCIuY29uY2F0KHJhd1dpZHRoLCBcInB4XCIpIDogU3RyaW5nKHJhd1dpZHRoKTsgLy8gc3BlY2lhbCB0cmlnZ2VyIHdoZW4gY29sbGFwc2VkV2lkdGggPT0gMFxuXG4gICAgdmFyIHplcm9XaWR0aFRyaWdnZXIgPSBwYXJzZUZsb2F0KFN0cmluZyhjb2xsYXBzZWRXaWR0aCB8fCAwKSkgPT09IDAgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgb25DbGljazogdG9nZ2xlLFxuICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXplcm8td2lkdGgtdHJpZ2dlclwiKSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi16ZXJvLXdpZHRoLXRyaWdnZXItXCIpLmNvbmNhdChyZXZlcnNlQXJyb3cgPyAncmlnaHQnIDogJ2xlZnQnKSksXG4gICAgICBzdHlsZTogemVyb1dpZHRoVHJpZ2dlclN0eWxlXG4gICAgfSwgdHJpZ2dlciB8fCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQmFyc091dGxpbmVkW1wiZGVmYXVsdFwiXSwgbnVsbCkpIDogbnVsbDtcbiAgICB2YXIgaWNvbk9iaiA9IHtcbiAgICAgIGV4cGFuZGVkOiByZXZlcnNlQXJyb3cgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfUmlnaHRPdXRsaW5lZFtcImRlZmF1bHRcIl0sIG51bGwpIDogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0xlZnRPdXRsaW5lZFtcImRlZmF1bHRcIl0sIG51bGwpLFxuICAgICAgY29sbGFwc2VkOiByZXZlcnNlQXJyb3cgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfTGVmdE91dGxpbmVkW1wiZGVmYXVsdFwiXSwgbnVsbCkgOiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfUmlnaHRPdXRsaW5lZFtcImRlZmF1bHRcIl0sIG51bGwpXG4gICAgfTtcbiAgICB2YXIgc3RhdHVzID0gY29sbGFwc2VkID8gJ2NvbGxhcHNlZCcgOiAnZXhwYW5kZWQnO1xuICAgIHZhciBkZWZhdWx0VHJpZ2dlciA9IGljb25PYmpbc3RhdHVzXTtcbiAgICB2YXIgdHJpZ2dlckRvbSA9IHRyaWdnZXIgIT09IG51bGwgPyB6ZXJvV2lkdGhUcmlnZ2VyIHx8IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi10cmlnZ2VyXCIpLFxuICAgICAgb25DbGljazogdG9nZ2xlLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgd2lkdGg6IHNpZGVyV2lkdGhcbiAgICAgIH1cbiAgICB9LCB0cmlnZ2VyIHx8IGRlZmF1bHRUcmlnZ2VyKSA6IG51bGw7XG4gICAgdmFyIGRpdlN0eWxlID0gKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKCgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgc3R5bGUpLCB7XG4gICAgICBmbGV4OiBcIjAgMCBcIi5jb25jYXQoc2lkZXJXaWR0aCksXG4gICAgICBtYXhXaWR0aDogc2lkZXJXaWR0aCxcbiAgICAgIG1pbldpZHRoOiBzaWRlcldpZHRoLFxuICAgICAgd2lkdGg6IHNpZGVyV2lkdGhcbiAgICB9KTtcbiAgICB2YXIgc2lkZXJDbHMgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShwcmVmaXhDbHMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItXCIpLmNvbmNhdCh0aGVtZSksIChfY2xhc3NOYW1lcyA9IHt9LCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNvbGxhcHNlZFwiKSwgISFjb2xsYXBzZWQpLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWhhcy10cmlnZ2VyXCIpLCBjb2xsYXBzaWJsZSAmJiB0cmlnZ2VyICE9PSBudWxsICYmICF6ZXJvV2lkdGhUcmlnZ2VyKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1iZWxvd1wiKSwgISFiZWxvdyksICgwLCBfZGVmaW5lUHJvcGVydHkyW1wiZGVmYXVsdFwiXSkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItemVyby13aWR0aFwiKSwgcGFyc2VGbG9hdChzaWRlcldpZHRoKSA9PT0gMCksIF9jbGFzc05hbWVzKSwgY2xhc3NOYW1lKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhc2lkZVwiLCAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe1xuICAgICAgY2xhc3NOYW1lOiBzaWRlckNsc1xuICAgIH0sIGRpdlByb3BzLCB7XG4gICAgICBzdHlsZTogZGl2U3R5bGUsXG4gICAgICByZWY6IHJlZlxuICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY2hpbGRyZW5cIilcbiAgICB9LCBjaGlsZHJlbiksIGNvbGxhcHNpYmxlIHx8IGJlbG93ICYmIHplcm9XaWR0aFRyaWdnZXIgPyB0cmlnZ2VyRG9tIDogbnVsbCk7XG4gIH07XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFNpZGVyQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiB7XG4gICAgICBzaWRlckNvbGxhcHNlZDogY29sbGFwc2VkLFxuICAgICAgY29sbGFwc2VkV2lkdGg6IGNvbGxhcHNlZFdpZHRoXG4gICAgfVxuICB9LCByZW5kZXJTaWRlcigpKTtcbn0pO1xuU2lkZXIuZGlzcGxheU5hbWUgPSAnU2lkZXInO1xudmFyIF9kZWZhdWx0ID0gU2lkZXI7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkdyb3VwXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9ncm91cFtcImRlZmF1bHRcIl07XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQnV0dG9uXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9yYWRpb0J1dHRvbltcImRlZmF1bHRcIl07XG4gIH1cbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfcmFkaW8gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3JhZGlvXCIpKTtcblxudmFyIF9ncm91cCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vZ3JvdXBcIikpO1xuXG52YXIgX3JhZGlvQnV0dG9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9yYWRpb0J1dHRvblwiKSk7XG5cbnZhciBSYWRpbyA9IF9yYWRpb1tcImRlZmF1bHRcIl07XG5SYWRpby5CdXR0b24gPSBfcmFkaW9CdXR0b25bXCJkZWZhdWx0XCJdO1xuUmFkaW8uR3JvdXAgPSBfZ3JvdXBbXCJkZWZhdWx0XCJdO1xudmFyIF9kZWZhdWx0ID0gUmFkaW87XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oXyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnIHx8IHRhZyA9PSBhc3luY1RhZyB8fCB0YWcgPT0gcHJveHlUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1NvdXJjZTtcbiIsInZhciBtYXBDYWNoZUNsZWFyID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVDbGVhcicpLFxuICAgIG1hcENhY2hlRGVsZXRlID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVEZWxldGUnKSxcbiAgICBtYXBDYWNoZUdldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlR2V0JyksXG4gICAgbWFwQ2FjaGVIYXMgPSByZXF1aXJlKCcuL19tYXBDYWNoZUhhcycpLFxuICAgIG1hcENhY2hlU2V0ID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbk1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG5NYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG5NYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG5NYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG5NYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTWFwQ2FjaGU7XG4iLCJ2YXIgU2V0Q2FjaGUgPSByZXF1aXJlKCcuL19TZXRDYWNoZScpLFxuICAgIGFycmF5U29tZSA9IHJlcXVpcmUoJy4vX2FycmF5U29tZScpLFxuICAgIGNhY2hlSGFzID0gcmVxdWlyZSgnLi9fY2FjaGVIYXMnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgYXJyYXlzIHdpdGggc3VwcG9ydCBmb3JcbiAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge0FycmF5fSBvdGhlciBUaGUgb3RoZXIgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYGFycmF5YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcnJheXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gZXF1YWxBcnJheXMoYXJyYXksIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICBhcnJMZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICBvdGhMZW5ndGggPSBvdGhlci5sZW5ndGg7XG5cbiAgaWYgKGFyckxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIShpc1BhcnRpYWwgJiYgb3RoTGVuZ3RoID4gYXJyTGVuZ3RoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICB2YXIgYXJyU3RhY2tlZCA9IHN0YWNrLmdldChhcnJheSk7XG4gIHZhciBvdGhTdGFja2VkID0gc3RhY2suZ2V0KG90aGVyKTtcbiAgaWYgKGFyclN0YWNrZWQgJiYgb3RoU3RhY2tlZCkge1xuICAgIHJldHVybiBhcnJTdGFja2VkID09IG90aGVyICYmIG90aFN0YWNrZWQgPT0gYXJyYXk7XG4gIH1cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSB0cnVlLFxuICAgICAgc2VlbiA9IChiaXRtYXNrICYgQ09NUEFSRV9VTk9SREVSRURfRkxBRykgPyBuZXcgU2V0Q2FjaGUgOiB1bmRlZmluZWQ7XG5cbiAgc3RhY2suc2V0KGFycmF5LCBvdGhlcik7XG4gIHN0YWNrLnNldChvdGhlciwgYXJyYXkpO1xuXG4gIC8vIElnbm9yZSBub24taW5kZXggcHJvcGVydGllcy5cbiAgd2hpbGUgKCsraW5kZXggPCBhcnJMZW5ndGgpIHtcbiAgICB2YXIgYXJyVmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgIG90aFZhbHVlID0gb3RoZXJbaW5kZXhdO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIGFyclZhbHVlLCBpbmRleCwgb3RoZXIsIGFycmF5LCBzdGFjaylcbiAgICAgICAgOiBjdXN0b21pemVyKGFyclZhbHVlLCBvdGhWYWx1ZSwgaW5kZXgsIGFycmF5LCBvdGhlciwgc3RhY2spO1xuICAgIH1cbiAgICBpZiAoY29tcGFyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGNvbXBhcmVkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBpZiAoc2Vlbikge1xuICAgICAgaWYgKCFhcnJheVNvbWUob3RoZXIsIGZ1bmN0aW9uKG90aFZhbHVlLCBvdGhJbmRleCkge1xuICAgICAgICAgICAgaWYgKCFjYWNoZUhhcyhzZWVuLCBvdGhJbmRleCkgJiZcbiAgICAgICAgICAgICAgICAoYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHNlZW4ucHVzaChvdGhJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIShcbiAgICAgICAgICBhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHxcbiAgICAgICAgICAgIGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10oYXJyYXkpO1xuICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxdWFsQXJyYXlzO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290JyksXG4gICAgc3R1YkZhbHNlID0gcmVxdWlyZSgnLi9zdHViRmFsc2UnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQnVmZmVyO1xuIiwidmFyIGJhc2VJc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19iYXNlSXNUeXBlZEFycmF5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc1R5cGVkQXJyYXk7XG4iLCIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuaGFzUHJlZml4U3VmZml4ID0gaGFzUHJlZml4U3VmZml4O1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfcmVhY3RMaWZlY3ljbGVzQ29tcGF0ID0gcmVxdWlyZShcInJlYWN0LWxpZmVjeWNsZXMtY29tcGF0XCIpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9pY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vaWNvblwiKSk7XG5cbnZhciBfdHlwZSA9IHJlcXVpcmUoXCIuLi9fdXRpbC90eXBlXCIpO1xuXG52YXIgX0lucHV0ID0gcmVxdWlyZShcIi4vSW5wdXRcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbnZhciBDbGVhcmFibGVJbnB1dFR5cGUgPSAoMCwgX3R5cGUudHVwbGUpKCd0ZXh0JywgJ2lucHV0Jyk7XG5cbmZ1bmN0aW9uIGhhc1ByZWZpeFN1ZmZpeChwcm9wcykge1xuICByZXR1cm4gISEocHJvcHMucHJlZml4IHx8IHByb3BzLnN1ZmZpeCB8fCBwcm9wcy5hbGxvd0NsZWFyKTtcbn1cblxudmFyIENsZWFyYWJsZUxhYmVsZWRJbnB1dCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQ2xlYXJhYmxlTGFiZWxlZElucHV0LCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKENsZWFyYWJsZUxhYmVsZWRJbnB1dCk7XG5cbiAgZnVuY3Rpb24gQ2xlYXJhYmxlTGFiZWxlZElucHV0KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDbGVhcmFibGVMYWJlbGVkSW5wdXQpO1xuXG4gICAgcmV0dXJuIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENsZWFyYWJsZUxhYmVsZWRJbnB1dCwgW3tcbiAgICBrZXk6IFwicmVuZGVyQ2xlYXJJY29uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckNsZWFySWNvbihwcmVmaXhDbHMpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgYWxsb3dDbGVhciA9IF90aGlzJHByb3BzLmFsbG93Q2xlYXIsXG4gICAgICAgICAgdmFsdWUgPSBfdGhpcyRwcm9wcy52YWx1ZSxcbiAgICAgICAgICBkaXNhYmxlZCA9IF90aGlzJHByb3BzLmRpc2FibGVkLFxuICAgICAgICAgIHJlYWRPbmx5ID0gX3RoaXMkcHJvcHMucmVhZE9ubHksXG4gICAgICAgICAgaW5wdXRUeXBlID0gX3RoaXMkcHJvcHMuaW5wdXRUeXBlLFxuICAgICAgICAgIGhhbmRsZVJlc2V0ID0gX3RoaXMkcHJvcHMuaGFuZGxlUmVzZXQ7XG5cbiAgICAgIGlmICghYWxsb3dDbGVhciB8fCBkaXNhYmxlZCB8fCByZWFkT25seSB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIGNsYXNzTmFtZSA9IGlucHV0VHlwZSA9PT0gQ2xlYXJhYmxlSW5wdXRUeXBlWzBdID8gXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi10ZXh0YXJlYS1jbGVhci1pY29uXCIpIDogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1jbGVhci1pY29uXCIpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9pY29uW1wiZGVmYXVsdFwiXSwge1xuICAgICAgICB0eXBlOiBcImNsb3NlLWNpcmNsZVwiLFxuICAgICAgICB0aGVtZTogXCJmaWxsZWRcIixcbiAgICAgICAgb25DbGljazogaGFuZGxlUmVzZXQsXG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgICByb2xlOiBcImJ1dHRvblwiXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyU3VmZml4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclN1ZmZpeChwcmVmaXhDbHMpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHN1ZmZpeCA9IF90aGlzJHByb3BzMi5zdWZmaXgsXG4gICAgICAgICAgYWxsb3dDbGVhciA9IF90aGlzJHByb3BzMi5hbGxvd0NsZWFyO1xuXG4gICAgICBpZiAoc3VmZml4IHx8IGFsbG93Q2xlYXIpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXN1ZmZpeFwiKVxuICAgICAgICB9LCB0aGlzLnJlbmRlckNsZWFySWNvbihwcmVmaXhDbHMpLCBzdWZmaXgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTGFiZWxlZEljb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyTGFiZWxlZEljb24ocHJlZml4Q2xzLCBlbGVtZW50KSB7XG4gICAgICB2YXIgX2NsYXNzTmFtZXM7XG5cbiAgICAgIHZhciBwcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgICB2YXIgc3VmZml4ID0gdGhpcy5yZW5kZXJTdWZmaXgocHJlZml4Q2xzKTtcblxuICAgICAgaWYgKCFoYXNQcmVmaXhTdWZmaXgocHJvcHMpKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGVsZW1lbnQsIHtcbiAgICAgICAgICB2YWx1ZTogcHJvcHMudmFsdWVcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBwcmVmaXggPSBwcm9wcy5wcmVmaXggPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcHJlZml4XCIpXG4gICAgICB9LCBwcm9wcy5wcmVmaXgpIDogbnVsbDtcbiAgICAgIHZhciBhZmZpeFdyYXBwZXJDbHMgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShwcm9wcy5jbGFzc05hbWUsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItYWZmaXgtd3JhcHBlclwiKSwgKF9jbGFzc05hbWVzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1hZmZpeC13cmFwcGVyLXNtXCIpLCBwcm9wcy5zaXplID09PSAnc21hbGwnKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWFmZml4LXdyYXBwZXItbGdcIiksIHByb3BzLnNpemUgPT09ICdsYXJnZScpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItYWZmaXgtd3JhcHBlci1pbnB1dC13aXRoLWNsZWFyLWJ0blwiKSwgcHJvcHMuc3VmZml4ICYmIHByb3BzLmFsbG93Q2xlYXIgJiYgdGhpcy5wcm9wcy52YWx1ZSksIF9jbGFzc05hbWVzKSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBhZmZpeFdyYXBwZXJDbHMsXG4gICAgICAgIHN0eWxlOiBwcm9wcy5zdHlsZVxuICAgICAgfSwgcHJlZml4LCAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGVsZW1lbnQsIHtcbiAgICAgICAgc3R5bGU6IG51bGwsXG4gICAgICAgIHZhbHVlOiBwcm9wcy52YWx1ZSxcbiAgICAgICAgY2xhc3NOYW1lOiAoMCwgX0lucHV0LmdldElucHV0Q2xhc3NOYW1lKShwcmVmaXhDbHMsIHByb3BzLnNpemUsIHByb3BzLmRpc2FibGVkKVxuICAgICAgfSksIHN1ZmZpeCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlcklucHV0V2l0aExhYmVsXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcklucHV0V2l0aExhYmVsKHByZWZpeENscywgbGFiZWxlZEVsZW1lbnQpIHtcbiAgICAgIHZhciBfY2xhc3NOYW1lczM7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGFkZG9uQmVmb3JlID0gX3RoaXMkcHJvcHMzLmFkZG9uQmVmb3JlLFxuICAgICAgICAgIGFkZG9uQWZ0ZXIgPSBfdGhpcyRwcm9wczMuYWRkb25BZnRlcixcbiAgICAgICAgICBzdHlsZSA9IF90aGlzJHByb3BzMy5zdHlsZSxcbiAgICAgICAgICBzaXplID0gX3RoaXMkcHJvcHMzLnNpemUsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMzLmNsYXNzTmFtZTsgLy8gTm90IHdyYXAgd2hlbiB0aGVyZSBpcyBub3QgYWRkb25zXG5cbiAgICAgIGlmICghYWRkb25CZWZvcmUgJiYgIWFkZG9uQWZ0ZXIpIHtcbiAgICAgICAgcmV0dXJuIGxhYmVsZWRFbGVtZW50O1xuICAgICAgfVxuXG4gICAgICB2YXIgd3JhcHBlckNsYXNzTmFtZSA9IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZ3JvdXBcIik7XG4gICAgICB2YXIgYWRkb25DbGFzc05hbWUgPSBcIlwiLmNvbmNhdCh3cmFwcGVyQ2xhc3NOYW1lLCBcIi1hZGRvblwiKTtcbiAgICAgIHZhciBhZGRvbkJlZm9yZU5vZGUgPSBhZGRvbkJlZm9yZSA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogYWRkb25DbGFzc05hbWVcbiAgICAgIH0sIGFkZG9uQmVmb3JlKSA6IG51bGw7XG4gICAgICB2YXIgYWRkb25BZnRlck5vZGUgPSBhZGRvbkFmdGVyID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBhZGRvbkNsYXNzTmFtZVxuICAgICAgfSwgYWRkb25BZnRlcikgOiBudWxsO1xuICAgICAgdmFyIG1lcmdlZFdyYXBwZXJDbGFzc05hbWUgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXdyYXBwZXJcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgd3JhcHBlckNsYXNzTmFtZSwgYWRkb25CZWZvcmUgfHwgYWRkb25BZnRlcikpO1xuICAgICAgdmFyIG1lcmdlZEdyb3VwQ2xhc3NOYW1lID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoY2xhc3NOYW1lLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWdyb3VwLXdyYXBwZXJcIiksIChfY2xhc3NOYW1lczMgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzMywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ncm91cC13cmFwcGVyLXNtXCIpLCBzaXplID09PSAnc21hbGwnKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzMywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ncm91cC13cmFwcGVyLWxnXCIpLCBzaXplID09PSAnbGFyZ2UnKSwgX2NsYXNzTmFtZXMzKSk7IC8vIE5lZWQgYW5vdGhlciB3cmFwcGVyIGZvciBjaGFuZ2luZyBkaXNwbGF5OnRhYmxlIHRvIGRpc3BsYXk6aW5saW5lLWJsb2NrXG4gICAgICAvLyBhbmQgcHV0IHN0eWxlIHByb3AgaW4gd3JhcHBlclxuXG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBtZXJnZWRHcm91cENsYXNzTmFtZSxcbiAgICAgICAgc3R5bGU6IHN0eWxlXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IG1lcmdlZFdyYXBwZXJDbGFzc05hbWVcbiAgICAgIH0sIGFkZG9uQmVmb3JlTm9kZSwgLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChsYWJlbGVkRWxlbWVudCwge1xuICAgICAgICBzdHlsZTogbnVsbFxuICAgICAgfSksIGFkZG9uQWZ0ZXJOb2RlKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclRleHRBcmVhV2l0aENsZWFySWNvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJUZXh0QXJlYVdpdGhDbGVhckljb24ocHJlZml4Q2xzLCBlbGVtZW50KSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM0ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICB2YWx1ZSA9IF90aGlzJHByb3BzNC52YWx1ZSxcbiAgICAgICAgICBhbGxvd0NsZWFyID0gX3RoaXMkcHJvcHM0LmFsbG93Q2xlYXIsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM0LmNsYXNzTmFtZSxcbiAgICAgICAgICBzdHlsZSA9IF90aGlzJHByb3BzNC5zdHlsZTtcblxuICAgICAgaWYgKCFhbGxvd0NsZWFyKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGVsZW1lbnQsIHtcbiAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBhZmZpeFdyYXBwZXJDbHMgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShjbGFzc05hbWUsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItYWZmaXgtd3JhcHBlclwiKSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1hZmZpeC13cmFwcGVyLXRleHRhcmVhLXdpdGgtY2xlYXItYnRuXCIpKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IGFmZml4V3JhcHBlckNscyxcbiAgICAgICAgc3R5bGU6IHN0eWxlXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGVsZW1lbnQsIHtcbiAgICAgICAgc3R5bGU6IG51bGwsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgfSksIHRoaXMucmVuZGVyQ2xlYXJJY29uKHByZWZpeENscykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJDbGVhcmFibGVMYWJlbGVkSW5wdXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQ2xlYXJhYmxlTGFiZWxlZElucHV0KCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNSA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgcHJlZml4Q2xzID0gX3RoaXMkcHJvcHM1LnByZWZpeENscyxcbiAgICAgICAgICBpbnB1dFR5cGUgPSBfdGhpcyRwcm9wczUuaW5wdXRUeXBlLFxuICAgICAgICAgIGVsZW1lbnQgPSBfdGhpcyRwcm9wczUuZWxlbWVudDtcblxuICAgICAgaWYgKGlucHV0VHlwZSA9PT0gQ2xlYXJhYmxlSW5wdXRUeXBlWzBdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlclRleHRBcmVhV2l0aENsZWFySWNvbihwcmVmaXhDbHMsIGVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJJbnB1dFdpdGhMYWJlbChwcmVmaXhDbHMsIHRoaXMucmVuZGVyTGFiZWxlZEljb24ocHJlZml4Q2xzLCBlbGVtZW50KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJDbGVhcmFibGVMYWJlbGVkSW5wdXQoKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ2xlYXJhYmxlTGFiZWxlZElucHV0O1xufShSZWFjdC5Db21wb25lbnQpO1xuXG4oMCwgX3JlYWN0TGlmZWN5Y2xlc0NvbXBhdC5wb2x5ZmlsbCkoQ2xlYXJhYmxlTGFiZWxlZElucHV0KTtcbnZhciBfZGVmYXVsdCA9IENsZWFyYWJsZUxhYmVsZWRJbnB1dDtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHdyYXBwZXJSYWY7XG5cbnZhciBfcmFmID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmFmXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbnZhciBpZCA9IDA7XG52YXIgaWRzID0ge307IC8vIFN1cHBvcnQgY2FsbCByYWYgd2l0aCBkZWxheSBzcGVjaWZpZWQgZnJhbWVcblxuZnVuY3Rpb24gd3JhcHBlclJhZihjYWxsYmFjaykge1xuICB2YXIgZGVsYXlGcmFtZXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDE7XG4gIHZhciBteUlkID0gaWQrKztcbiAgdmFyIHJlc3RGcmFtZXMgPSBkZWxheUZyYW1lcztcblxuICBmdW5jdGlvbiBpbnRlcm5hbENhbGxiYWNrKCkge1xuICAgIHJlc3RGcmFtZXMgLT0gMTtcblxuICAgIGlmIChyZXN0RnJhbWVzIDw9IDApIHtcbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgICBkZWxldGUgaWRzW215SWRdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZHNbbXlJZF0gPSAoMCwgX3JhZltcImRlZmF1bHRcIl0pKGludGVybmFsQ2FsbGJhY2spO1xuICAgIH1cbiAgfVxuXG4gIGlkc1tteUlkXSA9ICgwLCBfcmFmW1wiZGVmYXVsdFwiXSkoaW50ZXJuYWxDYWxsYmFjayk7XG4gIHJldHVybiBteUlkO1xufVxuXG53cmFwcGVyUmFmLmNhbmNlbCA9IGZ1bmN0aW9uIGNhbmNlbChwaWQpIHtcbiAgaWYgKHBpZCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgX3JhZltcImRlZmF1bHRcIl0uY2FuY2VsKGlkc1twaWRdKTtcblxuICBkZWxldGUgaWRzW3BpZF07XG59O1xuXG53cmFwcGVyUmFmLmlkcyA9IGlkczsgLy8gZXhwb3J0IHRoaXMgZm9yIHRlc3QgdXNhZ2UiLCJ2YXIgbm93ID0gcmVxdWlyZSgncGVyZm9ybWFuY2Utbm93JylcbiAgLCByb290ID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB3aW5kb3dcbiAgLCB2ZW5kb3JzID0gWydtb3onLCAnd2Via2l0J11cbiAgLCBzdWZmaXggPSAnQW5pbWF0aW9uRnJhbWUnXG4gICwgcmFmID0gcm9vdFsncmVxdWVzdCcgKyBzdWZmaXhdXG4gICwgY2FmID0gcm9vdFsnY2FuY2VsJyArIHN1ZmZpeF0gfHwgcm9vdFsnY2FuY2VsUmVxdWVzdCcgKyBzdWZmaXhdXG5cbmZvcih2YXIgaSA9IDA7ICFyYWYgJiYgaSA8IHZlbmRvcnMubGVuZ3RoOyBpKyspIHtcbiAgcmFmID0gcm9vdFt2ZW5kb3JzW2ldICsgJ1JlcXVlc3QnICsgc3VmZml4XVxuICBjYWYgPSByb290W3ZlbmRvcnNbaV0gKyAnQ2FuY2VsJyArIHN1ZmZpeF1cbiAgICAgIHx8IHJvb3RbdmVuZG9yc1tpXSArICdDYW5jZWxSZXF1ZXN0JyArIHN1ZmZpeF1cbn1cblxuLy8gU29tZSB2ZXJzaW9ucyBvZiBGRiBoYXZlIHJBRiBidXQgbm90IGNBRlxuaWYoIXJhZiB8fCAhY2FmKSB7XG4gIHZhciBsYXN0ID0gMFxuICAgICwgaWQgPSAwXG4gICAgLCBxdWV1ZSA9IFtdXG4gICAgLCBmcmFtZUR1cmF0aW9uID0gMTAwMCAvIDYwXG5cbiAgcmFmID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICBpZihxdWV1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHZhciBfbm93ID0gbm93KClcbiAgICAgICAgLCBuZXh0ID0gTWF0aC5tYXgoMCwgZnJhbWVEdXJhdGlvbiAtIChfbm93IC0gbGFzdCkpXG4gICAgICBsYXN0ID0gbmV4dCArIF9ub3dcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBjcCA9IHF1ZXVlLnNsaWNlKDApXG4gICAgICAgIC8vIENsZWFyIHF1ZXVlIGhlcmUgdG8gcHJldmVudFxuICAgICAgICAvLyBjYWxsYmFja3MgZnJvbSBhcHBlbmRpbmcgbGlzdGVuZXJzXG4gICAgICAgIC8vIHRvIHRoZSBjdXJyZW50IGZyYW1lJ3MgcXVldWVcbiAgICAgICAgcXVldWUubGVuZ3RoID0gMFxuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgY3AubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZighY3BbaV0uY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICB0cnl7XG4gICAgICAgICAgICAgIGNwW2ldLmNhbGxiYWNrKGxhc3QpXG4gICAgICAgICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgdGhyb3cgZSB9LCAwKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgTWF0aC5yb3VuZChuZXh0KSlcbiAgICB9XG4gICAgcXVldWUucHVzaCh7XG4gICAgICBoYW5kbGU6ICsraWQsXG4gICAgICBjYWxsYmFjazogY2FsbGJhY2ssXG4gICAgICBjYW5jZWxsZWQ6IGZhbHNlXG4gICAgfSlcbiAgICByZXR1cm4gaWRcbiAgfVxuXG4gIGNhZiA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYocXVldWVbaV0uaGFuZGxlID09PSBoYW5kbGUpIHtcbiAgICAgICAgcXVldWVbaV0uY2FuY2VsbGVkID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZuKSB7XG4gIC8vIFdyYXAgaW4gYSBuZXcgZnVuY3Rpb24gdG8gcHJldmVudFxuICAvLyBgY2FuY2VsYCBwb3RlbnRpYWxseSBiZWluZyBhc3NpZ25lZFxuICAvLyB0byB0aGUgbmF0aXZlIHJBRiBmdW5jdGlvblxuICByZXR1cm4gcmFmLmNhbGwocm9vdCwgZm4pXG59XG5tb2R1bGUuZXhwb3J0cy5jYW5jZWwgPSBmdW5jdGlvbigpIHtcbiAgY2FmLmFwcGx5KHJvb3QsIGFyZ3VtZW50cylcbn1cbm1vZHVsZS5leHBvcnRzLnBvbHlmaWxsID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gIGlmICghb2JqZWN0KSB7XG4gICAgb2JqZWN0ID0gcm9vdDtcbiAgfVxuICBvYmplY3QucmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gcmFmXG4gIG9iamVjdC5jYW5jZWxBbmltYXRpb25GcmFtZSA9IGNhZlxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSb3dcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX3Jvd1tcImRlZmF1bHRcIl07XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQ29sXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9jb2xbXCJkZWZhdWx0XCJdO1xuICB9XG59KTtcblxudmFyIF9yb3cgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3Jvd1wiKSk7XG5cbnZhciBfY29sID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9jb2xcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH0iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIFByb3BUeXBlcyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpKTtcblxudmFyIF9jb25maWdQcm92aWRlciA9IHJlcXVpcmUoXCIuLi9jb25maWctcHJvdmlkZXJcIik7XG5cbnZhciBfUm93Q29udGV4dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vUm93Q29udGV4dFwiKSk7XG5cbnZhciBfdHlwZSA9IHJlcXVpcmUoXCIuLi9fdXRpbC90eXBlXCIpO1xuXG52YXIgX3Jlc3BvbnNpdmVPYnNlcnZlID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4uL191dGlsL3Jlc3BvbnNpdmVPYnNlcnZlXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxudmFyIF9fcmVzdCA9IHZvaWQgMCAmJiAodm9pZCAwKS5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApIHRbcF0gPSBzW3BdO1xuICB9XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbnZhciBSb3dBbGlnbnMgPSAoMCwgX3R5cGUudHVwbGUpKCd0b3AnLCAnbWlkZGxlJywgJ2JvdHRvbScsICdzdHJldGNoJyk7XG52YXIgUm93SnVzdGlmeSA9ICgwLCBfdHlwZS50dXBsZSkoJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3BhY2UtYXJvdW5kJywgJ3NwYWNlLWJldHdlZW4nKTtcblxudmFyIFJvdyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoUm93LCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFJvdyk7XG5cbiAgZnVuY3Rpb24gUm93KCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSb3cpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHNjcmVlbnM6IHt9XG4gICAgfTtcblxuICAgIF90aGlzLnJlbmRlclJvdyA9IGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICB2YXIgX2NsYXNzTmFtZXM7XG5cbiAgICAgIHZhciBnZXRQcmVmaXhDbHMgPSBfcmVmLmdldFByZWZpeENscztcblxuICAgICAgdmFyIF9hID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgY3VzdG9taXplUHJlZml4Q2xzID0gX2EucHJlZml4Q2xzLFxuICAgICAgICAgIHR5cGUgPSBfYS50eXBlLFxuICAgICAgICAgIGp1c3RpZnkgPSBfYS5qdXN0aWZ5LFxuICAgICAgICAgIGFsaWduID0gX2EuYWxpZ24sXG4gICAgICAgICAgY2xhc3NOYW1lID0gX2EuY2xhc3NOYW1lLFxuICAgICAgICAgIHN0eWxlID0gX2Euc3R5bGUsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfYS5jaGlsZHJlbixcbiAgICAgICAgICBvdGhlcnMgPSBfX3Jlc3QoX2EsIFtcInByZWZpeENsc1wiLCBcInR5cGVcIiwgXCJqdXN0aWZ5XCIsIFwiYWxpZ25cIiwgXCJjbGFzc05hbWVcIiwgXCJzdHlsZVwiLCBcImNoaWxkcmVuXCJdKTtcblxuICAgICAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygncm93JywgY3VzdG9taXplUHJlZml4Q2xzKTtcblxuICAgICAgdmFyIGd1dHRlciA9IF90aGlzLmdldEd1dHRlcigpO1xuXG4gICAgICB2YXIgY2xhc3NlcyA9ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKChfY2xhc3NOYW1lcyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIHByZWZpeENscywgIXR5cGUpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItXCIpLmNvbmNhdCh0eXBlKSwgdHlwZSksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KHR5cGUsIFwiLVwiKS5jb25jYXQoanVzdGlmeSksIHR5cGUgJiYganVzdGlmeSksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KHR5cGUsIFwiLVwiKS5jb25jYXQoYWxpZ24pLCB0eXBlICYmIGFsaWduKSwgX2NsYXNzTmFtZXMpLCBjbGFzc05hbWUpO1xuXG4gICAgICB2YXIgcm93U3R5bGUgPSBfZXh0ZW5kcyhfZXh0ZW5kcyhfZXh0ZW5kcyh7fSwgZ3V0dGVyWzBdID4gMCA/IHtcbiAgICAgICAgbWFyZ2luTGVmdDogZ3V0dGVyWzBdIC8gLTIsXG4gICAgICAgIG1hcmdpblJpZ2h0OiBndXR0ZXJbMF0gLyAtMlxuICAgICAgfSA6IHt9KSwgZ3V0dGVyWzFdID4gMCA/IHtcbiAgICAgICAgbWFyZ2luVG9wOiBndXR0ZXJbMV0gLyAtMixcbiAgICAgICAgbWFyZ2luQm90dG9tOiBndXR0ZXJbMV0gLyAtMlxuICAgICAgfSA6IHt9KSwgc3R5bGUpO1xuXG4gICAgICB2YXIgb3RoZXJQcm9wcyA9IF9leHRlbmRzKHt9LCBvdGhlcnMpO1xuXG4gICAgICBkZWxldGUgb3RoZXJQcm9wcy5ndXR0ZXI7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX1Jvd0NvbnRleHRbXCJkZWZhdWx0XCJdLlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgZ3V0dGVyOiBndXR0ZXJcbiAgICAgICAgfVxuICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX2V4dGVuZHMoe30sIG90aGVyUHJvcHMsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLFxuICAgICAgICBzdHlsZTogcm93U3R5bGVcbiAgICAgIH0pLCBjaGlsZHJlbikpO1xuICAgIH07XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUm93LCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB0aGlzLnRva2VuID0gX3Jlc3BvbnNpdmVPYnNlcnZlW1wiZGVmYXVsdFwiXS5zdWJzY3JpYmUoZnVuY3Rpb24gKHNjcmVlbnMpIHtcbiAgICAgICAgdmFyIGd1dHRlciA9IF90aGlzMi5wcm9wcy5ndXR0ZXI7XG5cbiAgICAgICAgaWYgKF90eXBlb2YoZ3V0dGVyKSA9PT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShndXR0ZXIpICYmIChfdHlwZW9mKGd1dHRlclswXSkgPT09ICdvYmplY3QnIHx8IF90eXBlb2YoZ3V0dGVyWzFdKSA9PT0gJ29iamVjdCcpKSB7XG4gICAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHNjcmVlbnM6IHNjcmVlbnNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgX3Jlc3BvbnNpdmVPYnNlcnZlW1wiZGVmYXVsdFwiXS51bnN1YnNjcmliZSh0aGlzLnRva2VuKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0R3V0dGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEd1dHRlcigpIHtcbiAgICAgIHZhciByZXN1bHRzID0gWzAsIDBdO1xuICAgICAgdmFyIGd1dHRlciA9IHRoaXMucHJvcHMuZ3V0dGVyO1xuICAgICAgdmFyIHNjcmVlbnMgPSB0aGlzLnN0YXRlLnNjcmVlbnM7XG4gICAgICB2YXIgbm9ybWFsaXplZEd1dHRlciA9IEFycmF5LmlzQXJyYXkoZ3V0dGVyKSA/IGd1dHRlciA6IFtndXR0ZXIsIDBdO1xuICAgICAgbm9ybWFsaXplZEd1dHRlci5mb3JFYWNoKGZ1bmN0aW9uIChnLCBpbmRleCkge1xuICAgICAgICBpZiAoX3R5cGVvZihnKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9yZXNwb25zaXZlT2JzZXJ2ZS5yZXNwb25zaXZlQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBicmVha3BvaW50ID0gX3Jlc3BvbnNpdmVPYnNlcnZlLnJlc3BvbnNpdmVBcnJheVtpXTtcblxuICAgICAgICAgICAgaWYgKHNjcmVlbnNbYnJlYWtwb2ludF0gJiYgZ1ticmVha3BvaW50XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHJlc3VsdHNbaW5kZXhdID0gZ1ticmVha3BvaW50XTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdHNbaW5kZXhdID0gZyB8fCAwO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jb25maWdQcm92aWRlci5Db25maWdDb25zdW1lciwgbnVsbCwgdGhpcy5yZW5kZXJSb3cpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSb3c7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gUm93O1xuUm93LmRlZmF1bHRQcm9wcyA9IHtcbiAgZ3V0dGVyOiAwXG59O1xuUm93LnByb3BUeXBlcyA9IHtcbiAgdHlwZTogUHJvcFR5cGVzLm9uZU9mKFsnZmxleCddKSxcbiAgYWxpZ246IFByb3BUeXBlcy5vbmVPZihSb3dBbGlnbnMpLFxuICBqdXN0aWZ5OiBQcm9wVHlwZXMub25lT2YoUm93SnVzdGlmeSksXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBndXR0ZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5hcnJheV0pLFxuICBwcmVmaXhDbHM6IFByb3BUeXBlcy5zdHJpbmdcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9jcmVhdGVSZWFjdENvbnRleHQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9jcmVhdGUtcmVhY3QtY29udGV4dFwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG52YXIgUm93Q29udGV4dCA9ICgwLCBfY3JlYXRlUmVhY3RDb250ZXh0W1wiZGVmYXVsdFwiXSkoe30pO1xudmFyIF9kZWZhdWx0ID0gUm93Q29udGV4dDtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGl0ZXJhdGluZyBvdmVyIGEgY29sbGVjdGlvblxuICpcbiAqIEBwYXJhbSBjb2xsZWN0aW9uXG4gKiBAcGFyYW0gZm5cbiAqL1xuZnVuY3Rpb24gZWFjaChjb2xsZWN0aW9uLCBmbikge1xuICAgIHZhciBpICAgICAgPSAwLFxuICAgICAgICBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aCxcbiAgICAgICAgY29udDtcblxuICAgIGZvcihpOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29udCA9IGZuKGNvbGxlY3Rpb25baV0sIGkpO1xuICAgICAgICBpZihjb250ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgYnJlYWs7IC8vYWxsb3cgZWFybHkgZXhpdFxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciB0YXJnZXQgb2JqZWN0IGlzIGFuIGFycmF5XG4gKlxuICogQHBhcmFtIHRhcmdldCB0aGUgb2JqZWN0IHVuZGVyIHRlc3RcbiAqIEByZXR1cm4ge0Jvb2xlYW59IHRydWUgaWYgYXJyYXksIGZhbHNlIG90aGVyd2lzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5KHRhcmdldCkge1xuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHRhcmdldCkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIGZvciBkZXRlcm1pbmluZyB3aGV0aGVyIHRhcmdldCBvYmplY3QgaXMgYSBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB0YXJnZXQgdGhlIG9iamVjdCB1bmRlciB0ZXN0XG4gKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIGlmIGZ1bmN0aW9uLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih0YXJnZXQpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRhcmdldCA9PT0gJ2Z1bmN0aW9uJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgaXNGdW5jdGlvbiA6IGlzRnVuY3Rpb24sXG4gICAgaXNBcnJheSA6IGlzQXJyYXksXG4gICAgZWFjaCA6IGVhY2hcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgUHJvcFR5cGVzID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInByb3AtdHlwZXNcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9Sb3dDb250ZXh0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9Sb3dDb250ZXh0XCIpKTtcblxudmFyIF9jb25maWdQcm92aWRlciA9IHJlcXVpcmUoXCIuLi9jb25maWctcHJvdmlkZXJcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbnZhciBfX3Jlc3QgPSB2b2lkIDAgJiYgKHZvaWQgMCkuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcbiAgfVxuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuXG52YXIgb2JqZWN0T3JOdW1iZXIgPSBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMubnVtYmVyXSk7XG5cbnZhciBDb2wgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKENvbCwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihDb2wpO1xuXG4gIGZ1bmN0aW9uIENvbCgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ29sKTtcblxuICAgIF90aGlzID0gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgICBfdGhpcy5yZW5kZXJDb2wgPSBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgdmFyIF9jbGFzc05hbWVzO1xuXG4gICAgICB2YXIgZ2V0UHJlZml4Q2xzID0gX3JlZi5nZXRQcmVmaXhDbHM7XG5cbiAgICAgIHZhciBfYXNzZXJ0VGhpc0luaXRpYWxpemUgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSxcbiAgICAgICAgICBwcm9wcyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZS5wcm9wcztcblxuICAgICAgdmFyIGN1c3RvbWl6ZVByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgICAgICBzcGFuID0gcHJvcHMuc3BhbixcbiAgICAgICAgICBvcmRlciA9IHByb3BzLm9yZGVyLFxuICAgICAgICAgIG9mZnNldCA9IHByb3BzLm9mZnNldCxcbiAgICAgICAgICBwdXNoID0gcHJvcHMucHVzaCxcbiAgICAgICAgICBwdWxsID0gcHJvcHMucHVsbCxcbiAgICAgICAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICBvdGhlcnMgPSBfX3Jlc3QocHJvcHMsIFtcInByZWZpeENsc1wiLCBcInNwYW5cIiwgXCJvcmRlclwiLCBcIm9mZnNldFwiLCBcInB1c2hcIiwgXCJwdWxsXCIsIFwiY2xhc3NOYW1lXCIsIFwiY2hpbGRyZW5cIl0pO1xuXG4gICAgICB2YXIgcHJlZml4Q2xzID0gZ2V0UHJlZml4Q2xzKCdjb2wnLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICAgICAgdmFyIHNpemVDbGFzc09iaiA9IHt9O1xuICAgICAgWyd4cycsICdzbScsICdtZCcsICdsZycsICd4bCcsICd4eGwnXS5mb3JFYWNoKGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHZhciBfZXh0ZW5kczI7XG5cbiAgICAgICAgdmFyIHNpemVQcm9wcyA9IHt9O1xuICAgICAgICB2YXIgcHJvcFNpemUgPSBwcm9wc1tzaXplXTtcblxuICAgICAgICBpZiAodHlwZW9mIHByb3BTaXplID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHNpemVQcm9wcy5zcGFuID0gcHJvcFNpemU7XG4gICAgICAgIH0gZWxzZSBpZiAoX3R5cGVvZihwcm9wU2l6ZSkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgc2l6ZVByb3BzID0gcHJvcFNpemUgfHwge307XG4gICAgICAgIH1cblxuICAgICAgICBkZWxldGUgb3RoZXJzW3NpemVdO1xuICAgICAgICBzaXplQ2xhc3NPYmogPSBfZXh0ZW5kcyhfZXh0ZW5kcyh7fSwgc2l6ZUNsYXNzT2JqKSwgKF9leHRlbmRzMiA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2V4dGVuZHMyLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLVwiKS5jb25jYXQoc2l6ZSwgXCItXCIpLmNvbmNhdChzaXplUHJvcHMuc3BhbiksIHNpemVQcm9wcy5zcGFuICE9PSB1bmRlZmluZWQpLCBfZGVmaW5lUHJvcGVydHkoX2V4dGVuZHMyLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLVwiKS5jb25jYXQoc2l6ZSwgXCItb3JkZXItXCIpLmNvbmNhdChzaXplUHJvcHMub3JkZXIpLCBzaXplUHJvcHMub3JkZXIgfHwgc2l6ZVByb3BzLm9yZGVyID09PSAwKSwgX2RlZmluZVByb3BlcnR5KF9leHRlbmRzMiwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KHNpemUsIFwiLW9mZnNldC1cIikuY29uY2F0KHNpemVQcm9wcy5vZmZzZXQpLCBzaXplUHJvcHMub2Zmc2V0IHx8IHNpemVQcm9wcy5vZmZzZXQgPT09IDApLCBfZGVmaW5lUHJvcGVydHkoX2V4dGVuZHMyLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLVwiKS5jb25jYXQoc2l6ZSwgXCItcHVzaC1cIikuY29uY2F0KHNpemVQcm9wcy5wdXNoKSwgc2l6ZVByb3BzLnB1c2ggfHwgc2l6ZVByb3BzLnB1c2ggPT09IDApLCBfZGVmaW5lUHJvcGVydHkoX2V4dGVuZHMyLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLVwiKS5jb25jYXQoc2l6ZSwgXCItcHVsbC1cIikuY29uY2F0KHNpemVQcm9wcy5wdWxsKSwgc2l6ZVByb3BzLnB1bGwgfHwgc2l6ZVByb3BzLnB1bGwgPT09IDApLCBfZXh0ZW5kczIpKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIGNsYXNzZXMgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShwcmVmaXhDbHMsIChfY2xhc3NOYW1lcyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItXCIpLmNvbmNhdChzcGFuKSwgc3BhbiAhPT0gdW5kZWZpbmVkKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLW9yZGVyLVwiKS5jb25jYXQob3JkZXIpLCBvcmRlciksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1vZmZzZXQtXCIpLmNvbmNhdChvZmZzZXQpLCBvZmZzZXQpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcHVzaC1cIikuY29uY2F0KHB1c2gpLCBwdXNoKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXB1bGwtXCIpLmNvbmNhdChwdWxsKSwgcHVsbCksIF9jbGFzc05hbWVzKSwgY2xhc3NOYW1lLCBzaXplQ2xhc3NPYmopO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9Sb3dDb250ZXh0W1wiZGVmYXVsdFwiXS5Db25zdW1lciwgbnVsbCwgZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgIHZhciBndXR0ZXIgPSBfcmVmMi5ndXR0ZXI7XG4gICAgICAgIHZhciBzdHlsZSA9IG90aGVycy5zdHlsZTtcblxuICAgICAgICBpZiAoZ3V0dGVyKSB7XG4gICAgICAgICAgc3R5bGUgPSBfZXh0ZW5kcyhfZXh0ZW5kcyhfZXh0ZW5kcyh7fSwgZ3V0dGVyWzBdID4gMCA/IHtcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBndXR0ZXJbMF0gLyAyLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBndXR0ZXJbMF0gLyAyXG4gICAgICAgICAgfSA6IHt9KSwgZ3V0dGVyWzFdID4gMCA/IHtcbiAgICAgICAgICAgIHBhZGRpbmdUb3A6IGd1dHRlclsxXSAvIDIsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tOiBndXR0ZXJbMV0gLyAyXG4gICAgICAgICAgfSA6IHt9KSwgc3R5bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBvdGhlcnMsIHtcbiAgICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzXG4gICAgICAgIH0pLCBjaGlsZHJlbik7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENvbCwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfY29uZmlnUHJvdmlkZXIuQ29uZmlnQ29uc3VtZXIsIG51bGwsIHRoaXMucmVuZGVyQ29sKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ29sO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IENvbDtcbkNvbC5wcm9wVHlwZXMgPSB7XG4gIHNwYW46IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVyOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvZmZzZXQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIHB1c2g6IFByb3BUeXBlcy5udW1iZXIsXG4gIHB1bGw6IFByb3BUeXBlcy5udW1iZXIsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICB4czogb2JqZWN0T3JOdW1iZXIsXG4gIHNtOiBvYmplY3RPck51bWJlcixcbiAgbWQ6IG9iamVjdE9yTnVtYmVyLFxuICBsZzogb2JqZWN0T3JOdW1iZXIsXG4gIHhsOiBvYmplY3RPck51bWJlcixcbiAgeHhsOiBvYmplY3RPck51bWJlclxufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gZXhwb3J0cy5kZXN0cm95Rm5zID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX3JjRGlhbG9nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtZGlhbG9nXCIpKTtcblxudmFyIFByb3BUeXBlcyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfYWRkRXZlbnRMaXN0ZW5lciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXV0aWwvbGliL0RvbS9hZGRFdmVudExpc3RlbmVyXCIpKTtcblxudmFyIF9sb2NhbGUgPSByZXF1aXJlKFwiLi9sb2NhbGVcIik7XG5cbnZhciBfaWNvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2ljb25cIikpO1xuXG52YXIgX2J1dHRvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2J1dHRvblwiKSk7XG5cbnZhciBfTG9jYWxlUmVjZWl2ZXIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9sb2NhbGUtcHJvdmlkZXIvTG9jYWxlUmVjZWl2ZXJcIikpO1xuXG52YXIgX2NvbmZpZ1Byb3ZpZGVyID0gcmVxdWlyZShcIi4uL2NvbmZpZy1wcm92aWRlclwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxudmFyIF9fcmVzdCA9IHZvaWQgMCAmJiAodm9pZCAwKS5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApIHRbcF0gPSBzW3BdO1xuICB9XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbnZhciBtb3VzZVBvc2l0aW9uO1xudmFyIGRlc3Ryb3lGbnMgPSBbXTsgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8xNTc5NVxuXG5leHBvcnRzLmRlc3Ryb3lGbnMgPSBkZXN0cm95Rm5zO1xuXG52YXIgZ2V0Q2xpY2tQb3NpdGlvbiA9IGZ1bmN0aW9uIGdldENsaWNrUG9zaXRpb24oZSkge1xuICBtb3VzZVBvc2l0aW9uID0ge1xuICAgIHg6IGUucGFnZVgsXG4gICAgeTogZS5wYWdlWVxuICB9OyAvLyAxMDBtcyDlhoXlj5HnlJ/ov4fngrnlh7vkuovku7bvvIzliJnku47ngrnlh7vkvY3nva7liqjnlLvlsZXnpLpcbiAgLy8g5ZCm5YiZ55u05o6lIHpvb20g5bGV56S6XG4gIC8vIOi/meagt+WPr+S7peWFvOWuuemdnueCueWHu+aWueW8j+WxleW8gFxuXG4gIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBtb3VzZVBvc2l0aW9uID0gbnVsbDtcbiAgfSwgMTAwKTtcbn07IC8vIOWPquacieeCueWHu+S6i+S7tuaUr+aMgeS7jum8oOagh+S9jee9ruWKqOeUu+WxleW8gFxuXG5cbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAoMCwgX2FkZEV2ZW50TGlzdGVuZXJbXCJkZWZhdWx0XCJdKShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdjbGljaycsIGdldENsaWNrUG9zaXRpb24pO1xufVxuXG52YXIgTW9kYWwgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKE1vZGFsLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE1vZGFsKTtcblxuICBmdW5jdGlvbiBNb2RhbCgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTW9kYWwpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIF90aGlzLmhhbmRsZUNhbmNlbCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgb25DYW5jZWwgPSBfdGhpcy5wcm9wcy5vbkNhbmNlbDtcblxuICAgICAgaWYgKG9uQ2FuY2VsKSB7XG4gICAgICAgIG9uQ2FuY2VsKGUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5oYW5kbGVPayA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgb25PayA9IF90aGlzLnByb3BzLm9uT2s7XG5cbiAgICAgIGlmIChvbk9rKSB7XG4gICAgICAgIG9uT2soZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLnJlbmRlckZvb3RlciA9IGZ1bmN0aW9uIChsb2NhbGUpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIG9rVGV4dCA9IF90aGlzJHByb3BzLm9rVGV4dCxcbiAgICAgICAgICBva1R5cGUgPSBfdGhpcyRwcm9wcy5va1R5cGUsXG4gICAgICAgICAgY2FuY2VsVGV4dCA9IF90aGlzJHByb3BzLmNhbmNlbFRleHQsXG4gICAgICAgICAgY29uZmlybUxvYWRpbmcgPSBfdGhpcyRwcm9wcy5jb25maXJtTG9hZGluZztcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfYnV0dG9uW1wiZGVmYXVsdFwiXSwgX2V4dGVuZHMoe1xuICAgICAgICBvbkNsaWNrOiBfdGhpcy5oYW5kbGVDYW5jZWxcbiAgICAgIH0sIF90aGlzLnByb3BzLmNhbmNlbEJ1dHRvblByb3BzKSwgY2FuY2VsVGV4dCB8fCBsb2NhbGUuY2FuY2VsVGV4dCksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9idXR0b25bXCJkZWZhdWx0XCJdLCBfZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IG9rVHlwZSxcbiAgICAgICAgbG9hZGluZzogY29uZmlybUxvYWRpbmcsXG4gICAgICAgIG9uQ2xpY2s6IF90aGlzLmhhbmRsZU9rXG4gICAgICB9LCBfdGhpcy5wcm9wcy5va0J1dHRvblByb3BzKSwgb2tUZXh0IHx8IGxvY2FsZS5va1RleHQpKTtcbiAgICB9O1xuXG4gICAgX3RoaXMucmVuZGVyTW9kYWwgPSBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgdmFyIGdldENvbnRleHRQb3B1cENvbnRhaW5lciA9IF9yZWYuZ2V0UG9wdXBDb250YWluZXIsXG4gICAgICAgICAgZ2V0UHJlZml4Q2xzID0gX3JlZi5nZXRQcmVmaXhDbHM7XG5cbiAgICAgIHZhciBfYSA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIGN1c3RvbWl6ZVByZWZpeENscyA9IF9hLnByZWZpeENscyxcbiAgICAgICAgICBmb290ZXIgPSBfYS5mb290ZXIsXG4gICAgICAgICAgdmlzaWJsZSA9IF9hLnZpc2libGUsXG4gICAgICAgICAgd3JhcENsYXNzTmFtZSA9IF9hLndyYXBDbGFzc05hbWUsXG4gICAgICAgICAgY2VudGVyZWQgPSBfYS5jZW50ZXJlZCxcbiAgICAgICAgICBnZXRDb250YWluZXIgPSBfYS5nZXRDb250YWluZXIsXG4gICAgICAgICAgY2xvc2VJY29uID0gX2EuY2xvc2VJY29uLFxuICAgICAgICAgIHJlc3RQcm9wcyA9IF9fcmVzdChfYSwgW1wicHJlZml4Q2xzXCIsIFwiZm9vdGVyXCIsIFwidmlzaWJsZVwiLCBcIndyYXBDbGFzc05hbWVcIiwgXCJjZW50ZXJlZFwiLCBcImdldENvbnRhaW5lclwiLCBcImNsb3NlSWNvblwiXSk7XG5cbiAgICAgIHZhciBwcmVmaXhDbHMgPSBnZXRQcmVmaXhDbHMoJ21vZGFsJywgY3VzdG9taXplUHJlZml4Q2xzKTtcbiAgICAgIHZhciBkZWZhdWx0Rm9vdGVyID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0xvY2FsZVJlY2VpdmVyW1wiZGVmYXVsdFwiXSwge1xuICAgICAgICBjb21wb25lbnROYW1lOiBcIk1vZGFsXCIsXG4gICAgICAgIGRlZmF1bHRMb2NhbGU6ICgwLCBfbG9jYWxlLmdldENvbmZpcm1Mb2NhbGUpKClcbiAgICAgIH0sIF90aGlzLnJlbmRlckZvb3Rlcik7XG4gICAgICB2YXIgY2xvc2VJY29uVG9SZW5kZXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY2xvc2UteFwiKVxuICAgICAgfSwgY2xvc2VJY29uIHx8IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9pY29uW1wiZGVmYXVsdFwiXSwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY2xvc2UtaWNvblwiKSxcbiAgICAgICAgdHlwZTogXCJjbG9zZVwiXG4gICAgICB9KSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX3JjRGlhbG9nW1wiZGVmYXVsdFwiXSwgX2V4dGVuZHMoe30sIHJlc3RQcm9wcywge1xuICAgICAgICBnZXRDb250YWluZXI6IGdldENvbnRhaW5lciA9PT0gdW5kZWZpbmVkID8gZ2V0Q29udGV4dFBvcHVwQ29udGFpbmVyIDogZ2V0Q29udGFpbmVyLFxuICAgICAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgICAgd3JhcENsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNlbnRlcmVkXCIpLCAhIWNlbnRlcmVkKSwgd3JhcENsYXNzTmFtZSksXG4gICAgICAgIGZvb3RlcjogZm9vdGVyID09PSB1bmRlZmluZWQgPyBkZWZhdWx0Rm9vdGVyIDogZm9vdGVyLFxuICAgICAgICB2aXNpYmxlOiB2aXNpYmxlLFxuICAgICAgICBtb3VzZVBvc2l0aW9uOiBtb3VzZVBvc2l0aW9uLFxuICAgICAgICBvbkNsb3NlOiBfdGhpcy5oYW5kbGVDYW5jZWwsXG4gICAgICAgIGNsb3NlSWNvbjogY2xvc2VJY29uVG9SZW5kZXJcbiAgICAgIH0pKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKE1vZGFsLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jb25maWdQcm92aWRlci5Db25maWdDb25zdW1lciwgbnVsbCwgdGhpcy5yZW5kZXJNb2RhbCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE1vZGFsO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IE1vZGFsO1xuTW9kYWwuZGVmYXVsdFByb3BzID0ge1xuICB3aWR0aDogNTIwLFxuICB0cmFuc2l0aW9uTmFtZTogJ3pvb20nLFxuICBtYXNrVHJhbnNpdGlvbk5hbWU6ICdmYWRlJyxcbiAgY29uZmlybUxvYWRpbmc6IGZhbHNlLFxuICB2aXNpYmxlOiBmYWxzZSxcbiAgb2tUeXBlOiAncHJpbWFyeSdcbn07XG5Nb2RhbC5wcm9wVHlwZXMgPSB7XG4gIHByZWZpeENsczogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25PazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2FuY2VsOiBQcm9wVHlwZXMuZnVuYyxcbiAgb2tUZXh0OiBQcm9wVHlwZXMubm9kZSxcbiAgY2FuY2VsVGV4dDogUHJvcFR5cGVzLm5vZGUsXG4gIGNlbnRlcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgY29uZmlybUxvYWRpbmc6IFByb3BUeXBlcy5ib29sLFxuICB2aXNpYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgZm9vdGVyOiBQcm9wVHlwZXMubm9kZSxcbiAgdGl0bGU6IFByb3BUeXBlcy5ub2RlLFxuICBjbG9zYWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gIGNsb3NlSWNvbjogUHJvcFR5cGVzLm5vZGVcbn07IiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW5kZXg7XG4iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJyk7XG5cbnZhciBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHknKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWZpbmVQcm9wZXJ0eTIpO1xuXG52YXIgX2V4dGVuZHM1ID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnKTtcblxudmFyIF9leHRlbmRzNiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4dGVuZHM1KTtcblxudmFyIF90b0NvbnN1bWFibGVBcnJheTIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXknKTtcblxudmFyIF90b0NvbnN1bWFibGVBcnJheTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90b0NvbnN1bWFibGVBcnJheTIpO1xuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBfY3JlYXRlUmVhY3RDbGFzcyA9IHJlcXVpcmUoJ2NyZWF0ZS1yZWFjdC1jbGFzcycpO1xuXG52YXIgX2NyZWF0ZVJlYWN0Q2xhc3MyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlUmVhY3RDbGFzcyk7XG5cbnZhciBfdW5zYWZlTGlmZWN5Y2xlc1BvbHlmaWxsID0gcmVxdWlyZSgncmMtdXRpbC9saWIvdW5zYWZlTGlmZWN5Y2xlc1BvbHlmaWxsJyk7XG5cbnZhciBfdW5zYWZlTGlmZWN5Y2xlc1BvbHlmaWxsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Vuc2FmZUxpZmVjeWNsZXNQb2x5ZmlsbCk7XG5cbnZhciBfYXN5bmNWYWxpZGF0b3IgPSByZXF1aXJlKCdhc3luYy12YWxpZGF0b3InKTtcblxudmFyIF9hc3luY1ZhbGlkYXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3luY1ZhbGlkYXRvcik7XG5cbnZhciBfd2FybmluZyA9IHJlcXVpcmUoJ3dhcm5pbmcnKTtcblxudmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcpO1xuXG52YXIgX2dldCA9IHJlcXVpcmUoJ2xvZGFzaC9nZXQnKTtcblxudmFyIF9nZXQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0KTtcblxudmFyIF9zZXQgPSByZXF1aXJlKCdsb2Rhc2gvc2V0Jyk7XG5cbnZhciBfc2V0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NldCk7XG5cbnZhciBfZXEgPSByZXF1aXJlKCdsb2Rhc2gvZXEnKTtcblxudmFyIF9lcTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9lcSk7XG5cbnZhciBfY3JlYXRlRmllbGRzU3RvcmUgPSByZXF1aXJlKCcuL2NyZWF0ZUZpZWxkc1N0b3JlJyk7XG5cbnZhciBfY3JlYXRlRmllbGRzU3RvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlRmllbGRzU3RvcmUpO1xuXG52YXIgX3V0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3ByZWZlci1lczYtY2xhc3MgKi9cbi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1wcm9taXNlLXJlamVjdC1lcnJvcnMgKi9cblxudmFyIERFRkFVTFRfVFJJR0dFUiA9ICdvbkNoYW5nZSc7XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3JtKCkge1xuICB2YXIgb3B0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgdmFyIG1peGlucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogW107XG4gIHZhciB2YWxpZGF0ZU1lc3NhZ2VzID0gb3B0aW9uLnZhbGlkYXRlTWVzc2FnZXMsXG4gICAgICBvbkZpZWxkc0NoYW5nZSA9IG9wdGlvbi5vbkZpZWxkc0NoYW5nZSxcbiAgICAgIG9uVmFsdWVzQ2hhbmdlID0gb3B0aW9uLm9uVmFsdWVzQ2hhbmdlLFxuICAgICAgX29wdGlvbiRtYXBQcm9wcyA9IG9wdGlvbi5tYXBQcm9wcyxcbiAgICAgIG1hcFByb3BzID0gX29wdGlvbiRtYXBQcm9wcyA9PT0gdW5kZWZpbmVkID8gX3V0aWxzLmlkZW50aXR5IDogX29wdGlvbiRtYXBQcm9wcyxcbiAgICAgIG1hcFByb3BzVG9GaWVsZHMgPSBvcHRpb24ubWFwUHJvcHNUb0ZpZWxkcyxcbiAgICAgIGZpZWxkTmFtZVByb3AgPSBvcHRpb24uZmllbGROYW1lUHJvcCxcbiAgICAgIGZpZWxkTWV0YVByb3AgPSBvcHRpb24uZmllbGRNZXRhUHJvcCxcbiAgICAgIGZpZWxkRGF0YVByb3AgPSBvcHRpb24uZmllbGREYXRhUHJvcCxcbiAgICAgIF9vcHRpb24kZm9ybVByb3BOYW1lID0gb3B0aW9uLmZvcm1Qcm9wTmFtZSxcbiAgICAgIGZvcm1Qcm9wTmFtZSA9IF9vcHRpb24kZm9ybVByb3BOYW1lID09PSB1bmRlZmluZWQgPyAnZm9ybScgOiBfb3B0aW9uJGZvcm1Qcm9wTmFtZSxcbiAgICAgIGZvcm1OYW1lID0gb3B0aW9uLm5hbWUsXG4gICAgICB3aXRoUmVmID0gb3B0aW9uLndpdGhSZWY7XG5cblxuICByZXR1cm4gZnVuY3Rpb24gZGVjb3JhdGUoV3JhcHBlZENvbXBvbmVudCkge1xuICAgIHZhciBGb3JtID0gKDAsIF9jcmVhdGVSZWFjdENsYXNzMlsnZGVmYXVsdCddKSh7XG4gICAgICBkaXNwbGF5TmFtZTogJ0Zvcm0nLFxuXG4gICAgICBtaXhpbnM6IG1peGlucyxcblxuICAgICAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbiBnZXRJbml0aWFsU3RhdGUoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgICAgdmFyIGZpZWxkcyA9IG1hcFByb3BzVG9GaWVsZHMgJiYgbWFwUHJvcHNUb0ZpZWxkcyh0aGlzLnByb3BzKTtcbiAgICAgICAgdGhpcy5maWVsZHNTdG9yZSA9ICgwLCBfY3JlYXRlRmllbGRzU3RvcmUyWydkZWZhdWx0J10pKGZpZWxkcyB8fCB7fSk7XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZXMgPSB7fTtcbiAgICAgICAgdGhpcy5jYWNoZWRCaW5kID0ge307XG4gICAgICAgIHRoaXMuY2xlYXJlZEZpZWxkTWV0YUNhY2hlID0ge307XG5cbiAgICAgICAgdGhpcy5yZW5kZXJGaWVsZHMgPSB7fTtcbiAgICAgICAgdGhpcy5kb21GaWVsZHMgPSB7fTtcblxuICAgICAgICAvLyBIQUNLOiBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy82NDA2XG4gICAgICAgIFsnZ2V0RmllbGRzVmFsdWUnLCAnZ2V0RmllbGRWYWx1ZScsICdzZXRGaWVsZHNJbml0aWFsVmFsdWUnLCAnZ2V0RmllbGRzRXJyb3InLCAnZ2V0RmllbGRFcnJvcicsICdpc0ZpZWxkVmFsaWRhdGluZycsICdpc0ZpZWxkc1ZhbGlkYXRpbmcnLCAnaXNGaWVsZHNUb3VjaGVkJywgJ2lzRmllbGRUb3VjaGVkJ10uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgX3RoaXNba2V5XSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfZmllbGRzU3RvcmU7XG5cbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICgwLCBfd2FybmluZzJbJ2RlZmF1bHQnXSkoZmFsc2UsICd5b3Ugc2hvdWxkIG5vdCB1c2UgYHJlZmAgb24gZW5oYW5jZWQgZm9ybSwgcGxlYXNlIHVzZSBgd3JhcHBlZENvbXBvbmVudFJlZmAuICcgKyAnU2VlOiBodHRwczovL2dpdGh1Yi5jb20vcmVhY3QtY29tcG9uZW50L2Zvcm0jbm90ZS11c2Utd3JhcHBlZGNvbXBvbmVudHJlZi1pbnN0ZWFkLW9mLXdpdGhyZWYtYWZ0ZXItcmMtZm9ybTE0MCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChfZmllbGRzU3RvcmUgPSBfdGhpcy5maWVsZHNTdG9yZSlba2V5XS5hcHBseShfZmllbGRzU3RvcmUsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWJtaXR0aW5nOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgdGhpcy5jbGVhblVwVXNlbGVzc0ZpZWxkcygpO1xuICAgICAgfSxcbiAgICAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gICAgICAgIGlmIChtYXBQcm9wc1RvRmllbGRzKSB7XG4gICAgICAgICAgdGhpcy5maWVsZHNTdG9yZS51cGRhdGVGaWVsZHMobWFwUHJvcHNUb0ZpZWxkcyhuZXh0UHJvcHMpKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNvbXBvbmVudERpZFVwZGF0ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgICB0aGlzLmNsZWFuVXBVc2VsZXNzRmllbGRzKCk7XG4gICAgICB9LFxuICAgICAgb25Db2xsZWN0Q29tbW9uOiBmdW5jdGlvbiBvbkNvbGxlY3RDb21tb24obmFtZSwgYWN0aW9uLCBhcmdzKSB7XG4gICAgICAgIHZhciBmaWVsZE1ldGEgPSB0aGlzLmZpZWxkc1N0b3JlLmdldEZpZWxkTWV0YShuYW1lKTtcbiAgICAgICAgaWYgKGZpZWxkTWV0YVthY3Rpb25dKSB7XG4gICAgICAgICAgZmllbGRNZXRhW2FjdGlvbl0uYXBwbHkoZmllbGRNZXRhLCAoMCwgX3RvQ29uc3VtYWJsZUFycmF5M1snZGVmYXVsdCddKShhcmdzKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGRNZXRhLm9yaWdpbmFsUHJvcHMgJiYgZmllbGRNZXRhLm9yaWdpbmFsUHJvcHNbYWN0aW9uXSkge1xuICAgICAgICAgIHZhciBfZmllbGRNZXRhJG9yaWdpbmFsUHI7XG5cbiAgICAgICAgICAoX2ZpZWxkTWV0YSRvcmlnaW5hbFByID0gZmllbGRNZXRhLm9yaWdpbmFsUHJvcHMpW2FjdGlvbl0uYXBwbHkoX2ZpZWxkTWV0YSRvcmlnaW5hbFByLCAoMCwgX3RvQ29uc3VtYWJsZUFycmF5M1snZGVmYXVsdCddKShhcmdzKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHZhbHVlID0gZmllbGRNZXRhLmdldFZhbHVlRnJvbUV2ZW50ID8gZmllbGRNZXRhLmdldFZhbHVlRnJvbUV2ZW50LmFwcGx5KGZpZWxkTWV0YSwgKDAsIF90b0NvbnN1bWFibGVBcnJheTNbJ2RlZmF1bHQnXSkoYXJncykpIDogX3V0aWxzLmdldFZhbHVlRnJvbUV2ZW50LmFwcGx5KHVuZGVmaW5lZCwgKDAsIF90b0NvbnN1bWFibGVBcnJheTNbJ2RlZmF1bHQnXSkoYXJncykpO1xuICAgICAgICBpZiAob25WYWx1ZXNDaGFuZ2UgJiYgdmFsdWUgIT09IHRoaXMuZmllbGRzU3RvcmUuZ2V0RmllbGRWYWx1ZShuYW1lKSkge1xuICAgICAgICAgIHZhciB2YWx1ZXNBbGwgPSB0aGlzLmZpZWxkc1N0b3JlLmdldEFsbFZhbHVlcygpO1xuICAgICAgICAgIHZhciB2YWx1ZXNBbGxTZXQgPSB7fTtcbiAgICAgICAgICB2YWx1ZXNBbGxbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZXNBbGwpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBfc2V0MlsnZGVmYXVsdCddKSh2YWx1ZXNBbGxTZXQsIGtleSwgdmFsdWVzQWxsW2tleV0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIG9uVmFsdWVzQ2hhbmdlKCgwLCBfZXh0ZW5kczZbJ2RlZmF1bHQnXSkoKDAsIF9kZWZpbmVQcm9wZXJ0eTNbJ2RlZmF1bHQnXSkoe30sIGZvcm1Qcm9wTmFtZSwgdGhpcy5nZXRGb3JtKCkpLCB0aGlzLnByb3BzKSwgKDAsIF9zZXQyWydkZWZhdWx0J10pKHt9LCBuYW1lLCB2YWx1ZSksIHZhbHVlc0FsbFNldCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZpZWxkID0gdGhpcy5maWVsZHNTdG9yZS5nZXRGaWVsZChuYW1lKTtcbiAgICAgICAgcmV0dXJuIHsgbmFtZTogbmFtZSwgZmllbGQ6ICgwLCBfZXh0ZW5kczZbJ2RlZmF1bHQnXSkoe30sIGZpZWxkLCB7IHZhbHVlOiB2YWx1ZSwgdG91Y2hlZDogdHJ1ZSB9KSwgZmllbGRNZXRhOiBmaWVsZE1ldGEgfTtcbiAgICAgIH0sXG4gICAgICBvbkNvbGxlY3Q6IGZ1bmN0aW9uIG9uQ29sbGVjdChuYW1lXywgYWN0aW9uKSB7XG4gICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDIgPyBfbGVuIC0gMiA6IDApLCBfa2V5ID0gMjsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICAgIGFyZ3NbX2tleSAtIDJdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIF9vbkNvbGxlY3RDb21tb24gPSB0aGlzLm9uQ29sbGVjdENvbW1vbihuYW1lXywgYWN0aW9uLCBhcmdzKSxcbiAgICAgICAgICAgIG5hbWUgPSBfb25Db2xsZWN0Q29tbW9uLm5hbWUsXG4gICAgICAgICAgICBmaWVsZCA9IF9vbkNvbGxlY3RDb21tb24uZmllbGQsXG4gICAgICAgICAgICBmaWVsZE1ldGEgPSBfb25Db2xsZWN0Q29tbW9uLmZpZWxkTWV0YTtcblxuICAgICAgICB2YXIgdmFsaWRhdGUgPSBmaWVsZE1ldGEudmFsaWRhdGU7XG5cblxuICAgICAgICB0aGlzLmZpZWxkc1N0b3JlLnNldEZpZWxkc0FzRGlydHkoKTtcblxuICAgICAgICB2YXIgbmV3RmllbGQgPSAoMCwgX2V4dGVuZHM2WydkZWZhdWx0J10pKHt9LCBmaWVsZCwge1xuICAgICAgICAgIGRpcnR5OiAoMCwgX3V0aWxzLmhhc1J1bGVzKSh2YWxpZGF0ZSlcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0RmllbGRzKCgwLCBfZGVmaW5lUHJvcGVydHkzWydkZWZhdWx0J10pKHt9LCBuYW1lLCBuZXdGaWVsZCkpO1xuICAgICAgfSxcbiAgICAgIG9uQ29sbGVjdFZhbGlkYXRlOiBmdW5jdGlvbiBvbkNvbGxlY3RWYWxpZGF0ZShuYW1lXywgYWN0aW9uKSB7XG4gICAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yID4gMiA/IF9sZW4yIC0gMiA6IDApLCBfa2V5MiA9IDI7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgICBhcmdzW19rZXkyIC0gMl0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIF9vbkNvbGxlY3RDb21tb24yID0gdGhpcy5vbkNvbGxlY3RDb21tb24obmFtZV8sIGFjdGlvbiwgYXJncyksXG4gICAgICAgICAgICBmaWVsZCA9IF9vbkNvbGxlY3RDb21tb24yLmZpZWxkLFxuICAgICAgICAgICAgZmllbGRNZXRhID0gX29uQ29sbGVjdENvbW1vbjIuZmllbGRNZXRhO1xuXG4gICAgICAgIHZhciBuZXdGaWVsZCA9ICgwLCBfZXh0ZW5kczZbJ2RlZmF1bHQnXSkoe30sIGZpZWxkLCB7XG4gICAgICAgICAgZGlydHk6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5maWVsZHNTdG9yZS5zZXRGaWVsZHNBc0RpcnR5KCk7XG5cbiAgICAgICAgdGhpcy52YWxpZGF0ZUZpZWxkc0ludGVybmFsKFtuZXdGaWVsZF0sIHtcbiAgICAgICAgICBhY3Rpb246IGFjdGlvbixcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBmaXJzdEZpZWxkczogISFmaWVsZE1ldGEudmFsaWRhdGVGaXJzdFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZ2V0Q2FjaGVCaW5kOiBmdW5jdGlvbiBnZXRDYWNoZUJpbmQobmFtZSwgYWN0aW9uLCBmbikge1xuICAgICAgICBpZiAoIXRoaXMuY2FjaGVkQmluZFtuYW1lXSkge1xuICAgICAgICAgIHRoaXMuY2FjaGVkQmluZFtuYW1lXSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBjYWNoZSA9IHRoaXMuY2FjaGVkQmluZFtuYW1lXTtcbiAgICAgICAgaWYgKCFjYWNoZVthY3Rpb25dIHx8IGNhY2hlW2FjdGlvbl0ub3JpRm4gIT09IGZuKSB7XG4gICAgICAgICAgY2FjaGVbYWN0aW9uXSA9IHtcbiAgICAgICAgICAgIGZuOiBmbi5iaW5kKHRoaXMsIG5hbWUsIGFjdGlvbiksXG4gICAgICAgICAgICBvcmlGbjogZm5cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYWNoZVthY3Rpb25dLmZuO1xuICAgICAgfSxcbiAgICAgIGdldEZpZWxkRGVjb3JhdG9yOiBmdW5jdGlvbiBnZXRGaWVsZERlY29yYXRvcihuYW1lLCBmaWVsZE9wdGlvbikge1xuICAgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgICB2YXIgcHJvcHMgPSB0aGlzLmdldEZpZWxkUHJvcHMobmFtZSwgZmllbGRPcHRpb24pO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGZpZWxkRWxlbSkge1xuICAgICAgICAgIC8vIFdlIHNob3VsZCBwdXQgZmllbGQgaW4gcmVjb3JkIGlmIGl0IGlzIHJlbmRlcmVkXG4gICAgICAgICAgX3RoaXMyLnJlbmRlckZpZWxkc1tuYW1lXSA9IHRydWU7XG5cbiAgICAgICAgICB2YXIgZmllbGRNZXRhID0gX3RoaXMyLmZpZWxkc1N0b3JlLmdldEZpZWxkTWV0YShuYW1lKTtcbiAgICAgICAgICB2YXIgb3JpZ2luYWxQcm9wcyA9IGZpZWxkRWxlbS5wcm9wcztcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgdmFyIHZhbHVlUHJvcE5hbWUgPSBmaWVsZE1ldGEudmFsdWVQcm9wTmFtZTtcbiAgICAgICAgICAgICgwLCBfd2FybmluZzJbJ2RlZmF1bHQnXSkoISh2YWx1ZVByb3BOYW1lIGluIG9yaWdpbmFsUHJvcHMpLCAnYGdldEZpZWxkRGVjb3JhdG9yYCB3aWxsIG92ZXJyaWRlIGAnICsgdmFsdWVQcm9wTmFtZSArICdgLCAnICsgKCdzbyBwbGVhc2UgZG9uXFwndCBzZXQgYCcgKyB2YWx1ZVByb3BOYW1lICsgJ2AgZGlyZWN0bHkgJykgKyAnYW5kIHVzZSBgc2V0RmllbGRzVmFsdWVgIHRvIHNldCBpdC4nKTtcbiAgICAgICAgICAgIHZhciBkZWZhdWx0VmFsdWVQcm9wTmFtZSA9ICdkZWZhdWx0JyArIHZhbHVlUHJvcE5hbWVbMF0udG9VcHBlckNhc2UoKSArIHZhbHVlUHJvcE5hbWUuc2xpY2UoMSk7XG4gICAgICAgICAgICAoMCwgX3dhcm5pbmcyWydkZWZhdWx0J10pKCEoZGVmYXVsdFZhbHVlUHJvcE5hbWUgaW4gb3JpZ2luYWxQcm9wcyksICdgJyArIGRlZmF1bHRWYWx1ZVByb3BOYW1lICsgJ2AgaXMgaW52YWxpZCAnICsgKCdmb3IgYGdldEZpZWxkRGVjb3JhdG9yYCB3aWxsIHNldCBgJyArIHZhbHVlUHJvcE5hbWUgKyAnYCwnKSArICcgcGxlYXNlIHVzZSBgb3B0aW9uLmluaXRpYWxWYWx1ZWAgaW5zdGVhZC4nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZmllbGRNZXRhLm9yaWdpbmFsUHJvcHMgPSBvcmlnaW5hbFByb3BzO1xuICAgICAgICAgIGZpZWxkTWV0YS5yZWYgPSBmaWVsZEVsZW0ucmVmO1xuICAgICAgICAgIHJldHVybiBfcmVhY3QyWydkZWZhdWx0J10uY2xvbmVFbGVtZW50KGZpZWxkRWxlbSwgKDAsIF9leHRlbmRzNlsnZGVmYXVsdCddKSh7fSwgcHJvcHMsIF90aGlzMi5maWVsZHNTdG9yZS5nZXRGaWVsZFZhbHVlUHJvcFZhbHVlKGZpZWxkTWV0YSkpKTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBnZXRGaWVsZFByb3BzOiBmdW5jdGlvbiBnZXRGaWVsZFByb3BzKG5hbWUpIHtcbiAgICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgICAgdmFyIHVzZXJzRmllbGRPcHRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgICAgIGlmICghbmFtZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBjYWxsIGBnZXRGaWVsZFByb3BzYCB3aXRoIHZhbGlkIG5hbWUgc3RyaW5nIScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgKDAsIF93YXJuaW5nMlsnZGVmYXVsdCddKSh0aGlzLmZpZWxkc1N0b3JlLmlzVmFsaWROZXN0ZWRGaWVsZE5hbWUobmFtZSksICdPbmUgZmllbGQgbmFtZSBjYW5ub3QgYmUgcGFydCBvZiBhbm90aGVyLCBlLmcuIGBhYCBhbmQgYGEuYmAuIENoZWNrIGZpZWxkOiAnICsgbmFtZSk7XG4gICAgICAgICAgKDAsIF93YXJuaW5nMlsnZGVmYXVsdCddKSghKCdleGNsdXNpdmUnIGluIHVzZXJzRmllbGRPcHRpb24pLCAnYG9wdGlvbi5leGNsdXNpdmVgIG9mIGBnZXRGaWVsZFByb3BzYHxgZ2V0RmllbGREZWNvcmF0b3JgIGhhZCBiZWVuIHJlbW92ZS4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbGV0ZSB0aGlzLmNsZWFyZWRGaWVsZE1ldGFDYWNoZVtuYW1lXTtcblxuICAgICAgICB2YXIgZmllbGRPcHRpb24gPSAoMCwgX2V4dGVuZHM2WydkZWZhdWx0J10pKHtcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIHRyaWdnZXI6IERFRkFVTFRfVFJJR0dFUixcbiAgICAgICAgICB2YWx1ZVByb3BOYW1lOiAndmFsdWUnLFxuICAgICAgICAgIHZhbGlkYXRlOiBbXVxuICAgICAgICB9LCB1c2Vyc0ZpZWxkT3B0aW9uKTtcblxuICAgICAgICB2YXIgcnVsZXMgPSBmaWVsZE9wdGlvbi5ydWxlcyxcbiAgICAgICAgICAgIHRyaWdnZXIgPSBmaWVsZE9wdGlvbi50cmlnZ2VyLFxuICAgICAgICAgICAgX2ZpZWxkT3B0aW9uJHZhbGlkYXRlID0gZmllbGRPcHRpb24udmFsaWRhdGVUcmlnZ2VyLFxuICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyID0gX2ZpZWxkT3B0aW9uJHZhbGlkYXRlID09PSB1bmRlZmluZWQgPyB0cmlnZ2VyIDogX2ZpZWxkT3B0aW9uJHZhbGlkYXRlLFxuICAgICAgICAgICAgdmFsaWRhdGUgPSBmaWVsZE9wdGlvbi52YWxpZGF0ZTtcblxuXG4gICAgICAgIHZhciBmaWVsZE1ldGEgPSB0aGlzLmZpZWxkc1N0b3JlLmdldEZpZWxkTWV0YShuYW1lKTtcbiAgICAgICAgaWYgKCdpbml0aWFsVmFsdWUnIGluIGZpZWxkT3B0aW9uKSB7XG4gICAgICAgICAgZmllbGRNZXRhLmluaXRpYWxWYWx1ZSA9IGZpZWxkT3B0aW9uLmluaXRpYWxWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbnB1dFByb3BzID0gKDAsIF9leHRlbmRzNlsnZGVmYXVsdCddKSh7fSwgdGhpcy5maWVsZHNTdG9yZS5nZXRGaWVsZFZhbHVlUHJvcFZhbHVlKGZpZWxkT3B0aW9uKSwge1xuICAgICAgICAgIHJlZjogdGhpcy5nZXRDYWNoZUJpbmQobmFtZSwgbmFtZSArICdfX3JlZicsIHRoaXMuc2F2ZVJlZilcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChmaWVsZE5hbWVQcm9wKSB7XG4gICAgICAgICAgaW5wdXRQcm9wc1tmaWVsZE5hbWVQcm9wXSA9IGZvcm1OYW1lID8gZm9ybU5hbWUgKyAnXycgKyBuYW1lIDogbmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB2YWxpZGF0ZVJ1bGVzID0gKDAsIF91dGlscy5ub3JtYWxpemVWYWxpZGF0ZVJ1bGVzKSh2YWxpZGF0ZSwgcnVsZXMsIHZhbGlkYXRlVHJpZ2dlcik7XG4gICAgICAgIHZhciB2YWxpZGF0ZVRyaWdnZXJzID0gKDAsIF91dGlscy5nZXRWYWxpZGF0ZVRyaWdnZXJzKSh2YWxpZGF0ZVJ1bGVzKTtcbiAgICAgICAgdmFsaWRhdGVUcmlnZ2Vycy5mb3JFYWNoKGZ1bmN0aW9uIChhY3Rpb24pIHtcbiAgICAgICAgICBpZiAoaW5wdXRQcm9wc1thY3Rpb25dKSByZXR1cm47XG4gICAgICAgICAgaW5wdXRQcm9wc1thY3Rpb25dID0gX3RoaXMzLmdldENhY2hlQmluZChuYW1lLCBhY3Rpb24sIF90aGlzMy5vbkNvbGxlY3RWYWxpZGF0ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHRoZSB2YWx1ZSB3aWxsIGJlIGNvbGxlY3RcbiAgICAgICAgaWYgKHRyaWdnZXIgJiYgdmFsaWRhdGVUcmlnZ2Vycy5pbmRleE9mKHRyaWdnZXIpID09PSAtMSkge1xuICAgICAgICAgIGlucHV0UHJvcHNbdHJpZ2dlcl0gPSB0aGlzLmdldENhY2hlQmluZChuYW1lLCB0cmlnZ2VyLCB0aGlzLm9uQ29sbGVjdCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbWV0YSA9ICgwLCBfZXh0ZW5kczZbJ2RlZmF1bHQnXSkoe30sIGZpZWxkTWV0YSwgZmllbGRPcHRpb24sIHtcbiAgICAgICAgICB2YWxpZGF0ZTogdmFsaWRhdGVSdWxlc1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5maWVsZHNTdG9yZS5zZXRGaWVsZE1ldGEobmFtZSwgbWV0YSk7XG4gICAgICAgIGlmIChmaWVsZE1ldGFQcm9wKSB7XG4gICAgICAgICAgaW5wdXRQcm9wc1tmaWVsZE1ldGFQcm9wXSA9IG1ldGE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGREYXRhUHJvcCkge1xuICAgICAgICAgIGlucHV0UHJvcHNbZmllbGREYXRhUHJvcF0gPSB0aGlzLmZpZWxkc1N0b3JlLmdldEZpZWxkKG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBmaWVsZCBpcyByZW5kZXJlZCwgcmVjb3JkIGl0XG4gICAgICAgIHRoaXMucmVuZGVyRmllbGRzW25hbWVdID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gaW5wdXRQcm9wcztcbiAgICAgIH0sXG4gICAgICBnZXRGaWVsZEluc3RhbmNlOiBmdW5jdGlvbiBnZXRGaWVsZEluc3RhbmNlKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zdGFuY2VzW25hbWVdO1xuICAgICAgfSxcbiAgICAgIGdldFJ1bGVzOiBmdW5jdGlvbiBnZXRSdWxlcyhmaWVsZE1ldGEsIGFjdGlvbikge1xuICAgICAgICB2YXIgYWN0aW9uUnVsZXMgPSBmaWVsZE1ldGEudmFsaWRhdGUuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuICFhY3Rpb24gfHwgaXRlbS50cmlnZ2VyLmluZGV4T2YoYWN0aW9uKSA+PSAwO1xuICAgICAgICB9KS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICByZXR1cm4gaXRlbS5ydWxlcztcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAoMCwgX3V0aWxzLmZsYXR0ZW5BcnJheSkoYWN0aW9uUnVsZXMpO1xuICAgICAgfSxcbiAgICAgIHNldEZpZWxkczogZnVuY3Rpb24gc2V0RmllbGRzKG1heWJlTmVzdGVkRmllbGRzLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgICB2YXIgZmllbGRzID0gdGhpcy5maWVsZHNTdG9yZS5mbGF0dGVuUmVnaXN0ZXJlZEZpZWxkcyhtYXliZU5lc3RlZEZpZWxkcyk7XG4gICAgICAgIHRoaXMuZmllbGRzU3RvcmUuc2V0RmllbGRzKGZpZWxkcyk7XG4gICAgICAgIGlmIChvbkZpZWxkc0NoYW5nZSkge1xuICAgICAgICAgIHZhciBjaGFuZ2VkRmllbGRzID0gT2JqZWN0LmtleXMoZmllbGRzKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgbmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBfc2V0MlsnZGVmYXVsdCddKShhY2MsIG5hbWUsIF90aGlzNC5maWVsZHNTdG9yZS5nZXRGaWVsZChuYW1lKSk7XG4gICAgICAgICAgfSwge30pO1xuICAgICAgICAgIG9uRmllbGRzQ2hhbmdlKCgwLCBfZXh0ZW5kczZbJ2RlZmF1bHQnXSkoKDAsIF9kZWZpbmVQcm9wZXJ0eTNbJ2RlZmF1bHQnXSkoe30sIGZvcm1Qcm9wTmFtZSwgdGhpcy5nZXRGb3JtKCkpLCB0aGlzLnByb3BzKSwgY2hhbmdlZEZpZWxkcywgdGhpcy5maWVsZHNTdG9yZS5nZXROZXN0ZWRBbGxGaWVsZHMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZShjYWxsYmFjayk7XG4gICAgICB9LFxuICAgICAgc2V0RmllbGRzVmFsdWU6IGZ1bmN0aW9uIHNldEZpZWxkc1ZhbHVlKGNoYW5nZWRWYWx1ZXMsIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBmaWVsZHNNZXRhID0gdGhpcy5maWVsZHNTdG9yZS5maWVsZHNNZXRhO1xuXG4gICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLmZpZWxkc1N0b3JlLmZsYXR0ZW5SZWdpc3RlcmVkRmllbGRzKGNoYW5nZWRWYWx1ZXMpO1xuICAgICAgICB2YXIgbmV3RmllbGRzID0gT2JqZWN0LmtleXModmFsdWVzKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgbmFtZSkge1xuICAgICAgICAgIHZhciBpc1JlZ2lzdGVyZWQgPSBmaWVsZHNNZXRhW25hbWVdO1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAoMCwgX3dhcm5pbmcyWydkZWZhdWx0J10pKGlzUmVnaXN0ZXJlZCwgJ0Nhbm5vdCB1c2UgYHNldEZpZWxkc1ZhbHVlYCB1bnRpbCAnICsgJ3lvdSB1c2UgYGdldEZpZWxkRGVjb3JhdG9yYCBvciBgZ2V0RmllbGRQcm9wc2AgdG8gcmVnaXN0ZXIgaXQuJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc1JlZ2lzdGVyZWQpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgICAgICAgICAgIGFjY1tuYW1lXSA9IHtcbiAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSk7XG4gICAgICAgIHRoaXMuc2V0RmllbGRzKG5ld0ZpZWxkcywgY2FsbGJhY2spO1xuICAgICAgICBpZiAob25WYWx1ZXNDaGFuZ2UpIHtcbiAgICAgICAgICB2YXIgYWxsVmFsdWVzID0gdGhpcy5maWVsZHNTdG9yZS5nZXRBbGxWYWx1ZXMoKTtcbiAgICAgICAgICBvblZhbHVlc0NoYW5nZSgoMCwgX2V4dGVuZHM2WydkZWZhdWx0J10pKCgwLCBfZGVmaW5lUHJvcGVydHkzWydkZWZhdWx0J10pKHt9LCBmb3JtUHJvcE5hbWUsIHRoaXMuZ2V0Rm9ybSgpKSwgdGhpcy5wcm9wcyksIGNoYW5nZWRWYWx1ZXMsIGFsbFZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzYXZlUmVmOiBmdW5jdGlvbiBzYXZlUmVmKG5hbWUsIF8sIGNvbXBvbmVudCkge1xuICAgICAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgICAgIHZhciBfZmllbGRNZXRhID0gdGhpcy5maWVsZHNTdG9yZS5nZXRGaWVsZE1ldGEobmFtZSk7XG4gICAgICAgICAgaWYgKCFfZmllbGRNZXRhLnByZXNlcnZlKSB7XG4gICAgICAgICAgICAvLyBhZnRlciBkZXN0cm95LCBkZWxldGUgZGF0YVxuICAgICAgICAgICAgdGhpcy5jbGVhcmVkRmllbGRNZXRhQ2FjaGVbbmFtZV0gPSB7XG4gICAgICAgICAgICAgIGZpZWxkOiB0aGlzLmZpZWxkc1N0b3JlLmdldEZpZWxkKG5hbWUpLFxuICAgICAgICAgICAgICBtZXRhOiBfZmllbGRNZXRhXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5jbGVhckZpZWxkKG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWxldGUgdGhpcy5kb21GaWVsZHNbbmFtZV07XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZG9tRmllbGRzW25hbWVdID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZWNvdmVyQ2xlYXJlZEZpZWxkKG5hbWUpO1xuICAgICAgICB2YXIgZmllbGRNZXRhID0gdGhpcy5maWVsZHNTdG9yZS5nZXRGaWVsZE1ldGEobmFtZSk7XG4gICAgICAgIGlmIChmaWVsZE1ldGEpIHtcbiAgICAgICAgICB2YXIgcmVmID0gZmllbGRNZXRhLnJlZjtcbiAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW4gbm90IHNldCByZWYgc3RyaW5nIGZvciAnICsgbmFtZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgcmVmKGNvbXBvbmVudCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZWYsICdjdXJyZW50JykpIHtcbiAgICAgICAgICAgICAgcmVmLmN1cnJlbnQgPSBjb21wb25lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5zdGFuY2VzW25hbWVdID0gY29tcG9uZW50O1xuICAgICAgfSxcbiAgICAgIGNsZWFuVXBVc2VsZXNzRmllbGRzOiBmdW5jdGlvbiBjbGVhblVwVXNlbGVzc0ZpZWxkcygpIHtcbiAgICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgICAgdmFyIGZpZWxkTGlzdCA9IHRoaXMuZmllbGRzU3RvcmUuZ2V0QWxsRmllbGRzTmFtZSgpO1xuICAgICAgICB2YXIgcmVtb3ZlZExpc3QgPSBmaWVsZExpc3QuZmlsdGVyKGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgICAgIHZhciBmaWVsZE1ldGEgPSBfdGhpczUuZmllbGRzU3RvcmUuZ2V0RmllbGRNZXRhKGZpZWxkKTtcbiAgICAgICAgICByZXR1cm4gIV90aGlzNS5yZW5kZXJGaWVsZHNbZmllbGRdICYmICFfdGhpczUuZG9tRmllbGRzW2ZpZWxkXSAmJiAhZmllbGRNZXRhLnByZXNlcnZlO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlbW92ZWRMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgIHJlbW92ZWRMaXN0LmZvckVhY2godGhpcy5jbGVhckZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbmRlckZpZWxkcyA9IHt9O1xuICAgICAgfSxcbiAgICAgIGNsZWFyRmllbGQ6IGZ1bmN0aW9uIGNsZWFyRmllbGQobmFtZSkge1xuICAgICAgICB0aGlzLmZpZWxkc1N0b3JlLmNsZWFyRmllbGQobmFtZSk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmluc3RhbmNlc1tuYW1lXTtcbiAgICAgICAgZGVsZXRlIHRoaXMuY2FjaGVkQmluZFtuYW1lXTtcbiAgICAgIH0sXG4gICAgICByZXNldEZpZWxkczogZnVuY3Rpb24gcmVzZXRGaWVsZHMobnMpIHtcbiAgICAgICAgdmFyIF90aGlzNiA9IHRoaXM7XG5cbiAgICAgICAgdmFyIG5ld0ZpZWxkcyA9IHRoaXMuZmllbGRzU3RvcmUucmVzZXRGaWVsZHMobnMpO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMobmV3RmllbGRzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5zZXRGaWVsZHMobmV3RmllbGRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobnMpIHtcbiAgICAgICAgICB2YXIgbmFtZXMgPSBBcnJheS5pc0FycmF5KG5zKSA/IG5zIDogW25zXTtcbiAgICAgICAgICBuYW1lcy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVsZXRlIF90aGlzNi5jbGVhcmVkRmllbGRNZXRhQ2FjaGVbbmFtZV07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jbGVhcmVkRmllbGRNZXRhQ2FjaGUgPSB7fTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlY292ZXJDbGVhcmVkRmllbGQ6IGZ1bmN0aW9uIHJlY292ZXJDbGVhcmVkRmllbGQobmFtZSkge1xuICAgICAgICBpZiAodGhpcy5jbGVhcmVkRmllbGRNZXRhQ2FjaGVbbmFtZV0pIHtcbiAgICAgICAgICB0aGlzLmZpZWxkc1N0b3JlLnNldEZpZWxkcygoMCwgX2RlZmluZVByb3BlcnR5M1snZGVmYXVsdCddKSh7fSwgbmFtZSwgdGhpcy5jbGVhcmVkRmllbGRNZXRhQ2FjaGVbbmFtZV0uZmllbGQpKTtcbiAgICAgICAgICB0aGlzLmZpZWxkc1N0b3JlLnNldEZpZWxkTWV0YShuYW1lLCB0aGlzLmNsZWFyZWRGaWVsZE1ldGFDYWNoZVtuYW1lXS5tZXRhKTtcbiAgICAgICAgICBkZWxldGUgdGhpcy5jbGVhcmVkRmllbGRNZXRhQ2FjaGVbbmFtZV07XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB2YWxpZGF0ZUZpZWxkc0ludGVybmFsOiBmdW5jdGlvbiB2YWxpZGF0ZUZpZWxkc0ludGVybmFsKGZpZWxkcywgX3JlZiwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIF90aGlzNyA9IHRoaXM7XG5cbiAgICAgICAgdmFyIGZpZWxkTmFtZXMgPSBfcmVmLmZpZWxkTmFtZXMsXG4gICAgICAgICAgICBhY3Rpb24gPSBfcmVmLmFjdGlvbixcbiAgICAgICAgICAgIF9yZWYkb3B0aW9ucyA9IF9yZWYub3B0aW9ucyxcbiAgICAgICAgICAgIG9wdGlvbnMgPSBfcmVmJG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/IHt9IDogX3JlZiRvcHRpb25zO1xuXG4gICAgICAgIHZhciBhbGxSdWxlcyA9IHt9O1xuICAgICAgICB2YXIgYWxsVmFsdWVzID0ge307XG4gICAgICAgIHZhciBhbGxGaWVsZHMgPSB7fTtcbiAgICAgICAgdmFyIGFscmVhZHlFcnJvcnMgPSB7fTtcbiAgICAgICAgZmllbGRzLmZvckVhY2goZnVuY3Rpb24gKGZpZWxkKSB7XG4gICAgICAgICAgdmFyIG5hbWUgPSBmaWVsZC5uYW1lO1xuICAgICAgICAgIGlmIChvcHRpb25zLmZvcmNlICE9PSB0cnVlICYmIGZpZWxkLmRpcnR5ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgaWYgKGZpZWxkLmVycm9ycykge1xuICAgICAgICAgICAgICAoMCwgX3NldDJbJ2RlZmF1bHQnXSkoYWxyZWFkeUVycm9ycywgbmFtZSwgeyBlcnJvcnM6IGZpZWxkLmVycm9ycyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGZpZWxkTWV0YSA9IF90aGlzNy5maWVsZHNTdG9yZS5nZXRGaWVsZE1ldGEobmFtZSk7XG4gICAgICAgICAgdmFyIG5ld0ZpZWxkID0gKDAsIF9leHRlbmRzNlsnZGVmYXVsdCddKSh7fSwgZmllbGQpO1xuICAgICAgICAgIG5ld0ZpZWxkLmVycm9ycyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBuZXdGaWVsZC52YWxpZGF0aW5nID0gdHJ1ZTtcbiAgICAgICAgICBuZXdGaWVsZC5kaXJ0eSA9IHRydWU7XG4gICAgICAgICAgYWxsUnVsZXNbbmFtZV0gPSBfdGhpczcuZ2V0UnVsZXMoZmllbGRNZXRhLCBhY3Rpb24pO1xuICAgICAgICAgIGFsbFZhbHVlc1tuYW1lXSA9IG5ld0ZpZWxkLnZhbHVlO1xuICAgICAgICAgIGFsbEZpZWxkc1tuYW1lXSA9IG5ld0ZpZWxkO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXRGaWVsZHMoYWxsRmllbGRzKTtcbiAgICAgICAgLy8gaW4gY2FzZSBub3JtYWxpemVcbiAgICAgICAgT2JqZWN0LmtleXMoYWxsVmFsdWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChmKSB7XG4gICAgICAgICAgYWxsVmFsdWVzW2ZdID0gX3RoaXM3LmZpZWxkc1N0b3JlLmdldEZpZWxkVmFsdWUoZik7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoY2FsbGJhY2sgJiYgKDAsIF91dGlscy5pc0VtcHR5T2JqZWN0KShhbGxGaWVsZHMpKSB7XG4gICAgICAgICAgY2FsbGJhY2soKDAsIF91dGlscy5pc0VtcHR5T2JqZWN0KShhbHJlYWR5RXJyb3JzKSA/IG51bGwgOiBhbHJlYWR5RXJyb3JzLCB0aGlzLmZpZWxkc1N0b3JlLmdldEZpZWxkc1ZhbHVlKGZpZWxkTmFtZXMpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHZhbGlkYXRvciA9IG5ldyBfYXN5bmNWYWxpZGF0b3IyWydkZWZhdWx0J10oYWxsUnVsZXMpO1xuICAgICAgICBpZiAodmFsaWRhdGVNZXNzYWdlcykge1xuICAgICAgICAgIHZhbGlkYXRvci5tZXNzYWdlcyh2YWxpZGF0ZU1lc3NhZ2VzKTtcbiAgICAgICAgfVxuICAgICAgICB2YWxpZGF0b3IudmFsaWRhdGUoYWxsVmFsdWVzLCBvcHRpb25zLCBmdW5jdGlvbiAoZXJyb3JzKSB7XG4gICAgICAgICAgdmFyIGVycm9yc0dyb3VwID0gKDAsIF9leHRlbmRzNlsnZGVmYXVsdCddKSh7fSwgYWxyZWFkeUVycm9ycyk7XG4gICAgICAgICAgaWYgKGVycm9ycyAmJiBlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBlcnJvcnMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICB2YXIgZXJyb3JGaWVsZE5hbWUgPSBlLmZpZWxkO1xuICAgICAgICAgICAgICB2YXIgZmllbGROYW1lID0gZXJyb3JGaWVsZE5hbWU7XG5cbiAgICAgICAgICAgICAgLy8gSGFuZGxlIHVzaW5nIGFycmF5IHZhbGlkYXRpb24gcnVsZS5cbiAgICAgICAgICAgICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8xNDI3NVxuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhhbGxSdWxlcykuc29tZShmdW5jdGlvbiAocnVsZUZpZWxkTmFtZSkge1xuICAgICAgICAgICAgICAgIHZhciBydWxlcyA9IGFsbFJ1bGVzW3J1bGVGaWVsZE5hbWVdIHx8IFtdO1xuXG4gICAgICAgICAgICAgICAgLy8gRXhpc3QgaWYgbWF0Y2ggcnVsZVxuICAgICAgICAgICAgICAgIGlmIChydWxlRmllbGROYW1lID09PSBlcnJvckZpZWxkTmFtZSkge1xuICAgICAgICAgICAgICAgICAgZmllbGROYW1lID0gcnVsZUZpZWxkTmFtZTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFNraXAgaWYgbm90IG1hdGNoIGFycmF5IHR5cGVcbiAgICAgICAgICAgICAgICBpZiAocnVsZXMuZXZlcnkoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IF9yZWYyLnR5cGU7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZSAhPT0gJ2FycmF5JztcbiAgICAgICAgICAgICAgICB9KSB8fCBlcnJvckZpZWxkTmFtZS5pbmRleE9mKHJ1bGVGaWVsZE5hbWUgKyAnLicpICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gRXhpc3QgaWYgbWF0Y2ggdGhlIGZpZWxkIG5hbWVcbiAgICAgICAgICAgICAgICB2YXIgcmVzdFBhdGggPSBlcnJvckZpZWxkTmFtZS5zbGljZShydWxlRmllbGROYW1lLmxlbmd0aCArIDEpO1xuICAgICAgICAgICAgICAgIGlmICgvXlxcZCskLy50ZXN0KHJlc3RQYXRoKSkge1xuICAgICAgICAgICAgICAgICAgZmllbGROYW1lID0gcnVsZUZpZWxkTmFtZTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgdmFyIGZpZWxkID0gKDAsIF9nZXQyWydkZWZhdWx0J10pKGVycm9yc0dyb3VwLCBmaWVsZE5hbWUpO1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGZpZWxkICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGZpZWxkKSkge1xuICAgICAgICAgICAgICAgICgwLCBfc2V0MlsnZGVmYXVsdCddKShlcnJvcnNHcm91cCwgZmllbGROYW1lLCB7IGVycm9yczogW10gfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdmFyIGZpZWxkRXJyb3JzID0gKDAsIF9nZXQyWydkZWZhdWx0J10pKGVycm9yc0dyb3VwLCBmaWVsZE5hbWUuY29uY2F0KCcuZXJyb3JzJykpO1xuICAgICAgICAgICAgICBmaWVsZEVycm9ycy5wdXNoKGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBleHBpcmVkID0gW107XG4gICAgICAgICAgdmFyIG5vd0FsbEZpZWxkcyA9IHt9O1xuICAgICAgICAgIE9iamVjdC5rZXlzKGFsbFJ1bGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICB2YXIgZmllbGRFcnJvcnMgPSAoMCwgX2dldDJbJ2RlZmF1bHQnXSkoZXJyb3JzR3JvdXAsIG5hbWUpO1xuICAgICAgICAgICAgdmFyIG5vd0ZpZWxkID0gX3RoaXM3LmZpZWxkc1N0b3JlLmdldEZpZWxkKG5hbWUpO1xuICAgICAgICAgICAgLy8gYXZvaWQgY29uY3VycmVuY3kgcHJvYmxlbXNcbiAgICAgICAgICAgIGlmICghKDAsIF9lcTJbJ2RlZmF1bHQnXSkobm93RmllbGQudmFsdWUsIGFsbFZhbHVlc1tuYW1lXSkpIHtcbiAgICAgICAgICAgICAgZXhwaXJlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbm93RmllbGQuZXJyb3JzID0gZmllbGRFcnJvcnMgJiYgZmllbGRFcnJvcnMuZXJyb3JzO1xuICAgICAgICAgICAgICBub3dGaWVsZC52YWx1ZSA9IGFsbFZhbHVlc1tuYW1lXTtcbiAgICAgICAgICAgICAgbm93RmllbGQudmFsaWRhdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICBub3dGaWVsZC5kaXJ0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICBub3dBbGxGaWVsZHNbbmFtZV0gPSBub3dGaWVsZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfdGhpczcuc2V0RmllbGRzKG5vd0FsbEZpZWxkcyk7XG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICBpZiAoZXhwaXJlZC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgZXhwaXJlZC5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgICAgICAgICAgIHZhciBuYW1lID0gX3JlZjMubmFtZTtcblxuICAgICAgICAgICAgICAgIHZhciBmaWVsZEVycm9ycyA9IFt7XG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBuYW1lICsgJyBuZWVkIHRvIHJldmFsaWRhdGUnLFxuICAgICAgICAgICAgICAgICAgZmllbGQ6IG5hbWVcbiAgICAgICAgICAgICAgICB9XTtcbiAgICAgICAgICAgICAgICAoMCwgX3NldDJbJ2RlZmF1bHQnXSkoZXJyb3JzR3JvdXAsIG5hbWUsIHtcbiAgICAgICAgICAgICAgICAgIGV4cGlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICBlcnJvcnM6IGZpZWxkRXJyb3JzXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYWxsYmFjaygoMCwgX3V0aWxzLmlzRW1wdHlPYmplY3QpKGVycm9yc0dyb3VwKSA/IG51bGwgOiBlcnJvcnNHcm91cCwgX3RoaXM3LmZpZWxkc1N0b3JlLmdldEZpZWxkc1ZhbHVlKGZpZWxkTmFtZXMpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHZhbGlkYXRlRmllbGRzOiBmdW5jdGlvbiB2YWxpZGF0ZUZpZWxkcyhucywgb3B0LCBjYikge1xuICAgICAgICB2YXIgX3RoaXM4ID0gdGhpcztcblxuICAgICAgICB2YXIgcGVuZGluZyA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICB2YXIgX2dldFBhcmFtcyA9ICgwLCBfdXRpbHMuZ2V0UGFyYW1zKShucywgb3B0LCBjYiksXG4gICAgICAgICAgICAgIG5hbWVzID0gX2dldFBhcmFtcy5uYW1lcyxcbiAgICAgICAgICAgICAgb3B0aW9ucyA9IF9nZXRQYXJhbXMub3B0aW9ucztcblxuICAgICAgICAgIHZhciBfZ2V0UGFyYW1zMiA9ICgwLCBfdXRpbHMuZ2V0UGFyYW1zKShucywgb3B0LCBjYiksXG4gICAgICAgICAgICAgIGNhbGxiYWNrID0gX2dldFBhcmFtczIuY2FsbGJhY2s7XG5cbiAgICAgICAgICBpZiAoIWNhbGxiYWNrIHx8IHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFyIG9sZENiID0gY2FsbGJhY2s7XG4gICAgICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9ycywgdmFsdWVzKSB7XG4gICAgICAgICAgICAgIGlmIChvbGRDYikge1xuICAgICAgICAgICAgICAgIG9sZENiKGVycm9ycywgdmFsdWVzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KHsgZXJyb3JzOiBlcnJvcnMsIHZhbHVlczogdmFsdWVzIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGZpZWxkTmFtZXMgPSBuYW1lcyA/IF90aGlzOC5maWVsZHNTdG9yZS5nZXRWYWxpZEZpZWxkc0Z1bGxOYW1lKG5hbWVzKSA6IF90aGlzOC5maWVsZHNTdG9yZS5nZXRWYWxpZEZpZWxkc05hbWUoKTtcbiAgICAgICAgICB2YXIgZmllbGRzID0gZmllbGROYW1lcy5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgIHZhciBmaWVsZE1ldGEgPSBfdGhpczguZmllbGRzU3RvcmUuZ2V0RmllbGRNZXRhKG5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuICgwLCBfdXRpbHMuaGFzUnVsZXMpKGZpZWxkTWV0YS52YWxpZGF0ZSk7XG4gICAgICAgICAgfSkubWFwKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICB2YXIgZmllbGQgPSBfdGhpczguZmllbGRzU3RvcmUuZ2V0RmllbGQobmFtZSk7XG4gICAgICAgICAgICBmaWVsZC52YWx1ZSA9IF90aGlzOC5maWVsZHNTdG9yZS5nZXRGaWVsZFZhbHVlKG5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICghZmllbGRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgX3RoaXM4LmZpZWxkc1N0b3JlLmdldEZpZWxkc1ZhbHVlKGZpZWxkTmFtZXMpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCEoJ2ZpcnN0RmllbGRzJyBpbiBvcHRpb25zKSkge1xuICAgICAgICAgICAgb3B0aW9ucy5maXJzdEZpZWxkcyA9IGZpZWxkTmFtZXMuZmlsdGVyKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICAgIHZhciBmaWVsZE1ldGEgPSBfdGhpczguZmllbGRzU3RvcmUuZ2V0RmllbGRNZXRhKG5hbWUpO1xuICAgICAgICAgICAgICByZXR1cm4gISFmaWVsZE1ldGEudmFsaWRhdGVGaXJzdDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfdGhpczgudmFsaWRhdGVGaWVsZHNJbnRlcm5hbChmaWVsZHMsIHtcbiAgICAgICAgICAgIGZpZWxkTmFtZXM6IGZpZWxkTmFtZXMsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zXG4gICAgICAgICAgfSwgY2FsbGJhY2spO1xuICAgICAgICB9KTtcbiAgICAgICAgcGVuZGluZ1snY2F0Y2gnXShmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgaWYgKGNvbnNvbGUuZXJyb3IgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBlbmRpbmc7XG4gICAgICB9LFxuICAgICAgaXNTdWJtaXR0aW5nOiBmdW5jdGlvbiBpc1N1Ym1pdHRpbmcoKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdCcpIHtcbiAgICAgICAgICAoMCwgX3dhcm5pbmcyWydkZWZhdWx0J10pKGZhbHNlLCAnYGlzU3VibWl0dGluZ2AgaXMgZGVwcmVjYXRlZC4gJyArIFwiQWN0dWFsbHksIGl0J3MgbW9yZSBjb252ZW5pZW50IHRvIGhhbmRsZSBzdWJtaXR0aW5nIHN0YXR1cyBieSB5b3Vyc2VsZi5cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuc3VibWl0dGluZztcbiAgICAgIH0sXG4gICAgICBzdWJtaXQ6IGZ1bmN0aW9uIHN1Ym1pdChjYWxsYmFjaykge1xuICAgICAgICB2YXIgX3RoaXM5ID0gdGhpcztcblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Rlc3QnKSB7XG4gICAgICAgICAgKDAsIF93YXJuaW5nMlsnZGVmYXVsdCddKShmYWxzZSwgJ2BzdWJtaXRgIGlzIGRlcHJlY2F0ZWQuICcgKyBcIkFjdHVhbGx5LCBpdCdzIG1vcmUgY29udmVuaWVudCB0byBoYW5kbGUgc3VibWl0dGluZyBzdGF0dXMgYnkgeW91cnNlbGYuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmbiA9IGZ1bmN0aW9uIGZuKCkge1xuICAgICAgICAgIF90aGlzOS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBzdWJtaXR0aW5nOiBmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBzdWJtaXR0aW5nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBjYWxsYmFjayhmbik7XG4gICAgICB9LFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAgIHZhciBfcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgICAgd3JhcHBlZENvbXBvbmVudFJlZiA9IF9wcm9wcy53cmFwcGVkQ29tcG9uZW50UmVmLFxuICAgICAgICAgICAgcmVzdFByb3BzID0gKDAsIF9vYmplY3RXaXRob3V0UHJvcGVydGllczNbJ2RlZmF1bHQnXSkoX3Byb3BzLCBbJ3dyYXBwZWRDb21wb25lbnRSZWYnXSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAgICAgICB2YXIgZm9ybVByb3BzID0gKDAsIF9kZWZpbmVQcm9wZXJ0eTNbJ2RlZmF1bHQnXSkoe30sIGZvcm1Qcm9wTmFtZSwgdGhpcy5nZXRGb3JtKCkpO1xuICAgICAgICBpZiAod2l0aFJlZikge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdCcpIHtcbiAgICAgICAgICAgICgwLCBfd2FybmluZzJbJ2RlZmF1bHQnXSkoZmFsc2UsICdgd2l0aFJlZmAgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBgd3JhcHBlZENvbXBvbmVudFJlZmAgaW5zdGVhZC4gJyArICdTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdC1jb21wb25lbnQvZm9ybSNub3RlLXVzZS13cmFwcGVkY29tcG9uZW50cmVmLWluc3RlYWQtb2Ytd2l0aHJlZi1hZnRlci1yYy1mb3JtMTQwJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvcm1Qcm9wcy5yZWYgPSAnd3JhcHBlZENvbXBvbmVudCc7XG4gICAgICAgIH0gZWxzZSBpZiAod3JhcHBlZENvbXBvbmVudFJlZikge1xuICAgICAgICAgIGZvcm1Qcm9wcy5yZWYgPSB3cmFwcGVkQ29tcG9uZW50UmVmO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcm9wcyA9IG1hcFByb3BzLmNhbGwodGhpcywgKDAsIF9leHRlbmRzNlsnZGVmYXVsdCddKSh7fSwgZm9ybVByb3BzLCByZXN0UHJvcHMpKTtcbiAgICAgICAgcmV0dXJuIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFdyYXBwZWRDb21wb25lbnQsIHByb3BzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoMCwgX3V0aWxzLmFyZ3VtZW50Q29udGFpbmVyKSgoMCwgX3Vuc2FmZUxpZmVjeWNsZXNQb2x5ZmlsbDJbJ2RlZmF1bHQnXSkoRm9ybSksIFdyYXBwZWRDb21wb25lbnQpO1xuICB9O1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBjcmVhdGVCYXNlRm9ybTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF91dGlsID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuXG52YXIgdXRpbCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF91dGlsKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBlbHNlIHsgdmFyIG5ld09iaiA9IHt9OyBpZiAob2JqICE9IG51bGwpIHsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IG5ld09ialsnZGVmYXVsdCddID0gb2JqOyByZXR1cm4gbmV3T2JqOyB9IH1cblxuLyoqXG4gKiAgUnVsZSBmb3IgdmFsaWRhdGluZyByZXF1aXJlZCBmaWVsZHMuXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIGVycm9ycyBBbiBhcnJheSBvZiBlcnJvcnMgdGhhdCB0aGlzIHJ1bGUgbWF5IGFkZFxuICogIHZhbGlkYXRpb24gZXJyb3JzIHRvLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cbmZ1bmN0aW9uIHJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucywgdHlwZSkge1xuICBpZiAocnVsZS5yZXF1aXJlZCAmJiAoIXNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKSB8fCB1dGlsLmlzRW1wdHlWYWx1ZSh2YWx1ZSwgdHlwZSB8fCBydWxlLnR5cGUpKSkge1xuICAgIGVycm9ycy5wdXNoKHV0aWwuZm9ybWF0KG9wdGlvbnMubWVzc2FnZXMucmVxdWlyZWQsIHJ1bGUuZnVsbEZpZWxkKSk7XG4gIH1cbn1cblxuZXhwb3J0c1snZGVmYXVsdCddID0gcmVxdWlyZWQ7IiwidmFyIGJhc2VTZXQgPSByZXF1aXJlKCcuL19iYXNlU2V0Jyk7XG5cbi8qKlxuICogU2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiBhIHBvcnRpb24gb2YgYHBhdGhgIGRvZXNuJ3QgZXhpc3QsXG4gKiBpdCdzIGNyZWF0ZWQuIEFycmF5cyBhcmUgY3JlYXRlZCBmb3IgbWlzc2luZyBpbmRleCBwcm9wZXJ0aWVzIHdoaWxlIG9iamVjdHNcbiAqIGFyZSBjcmVhdGVkIGZvciBhbGwgb3RoZXIgbWlzc2luZyBwcm9wZXJ0aWVzLiBVc2UgYF8uc2V0V2l0aGAgdG8gY3VzdG9taXplXG4gKiBgcGF0aGAgY3JlYXRpb24uXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjcuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICpcbiAqIF8uc2V0KG9iamVjdCwgJ2FbMF0uYi5jJywgNCk7XG4gKiBjb25zb2xlLmxvZyhvYmplY3QuYVswXS5iLmMpO1xuICogLy8gPT4gNFxuICpcbiAqIF8uc2V0KG9iamVjdCwgWyd4JywgJzAnLCAneScsICd6J10sIDUpO1xuICogY29uc29sZS5sb2cob2JqZWN0LnhbMF0ueS56KTtcbiAqIC8vID0+IDVcbiAqL1xuZnVuY3Rpb24gc2V0KG9iamVjdCwgcGF0aCwgdmFsdWUpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9leHRlbmRzMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKTtcblxudmFyIF9leHRlbmRzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4dGVuZHMyKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbmV4cG9ydHMuaXNGb3JtRmllbGQgPSBpc0Zvcm1GaWVsZDtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gY3JlYXRlRm9ybUZpZWxkO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxudmFyIEZpZWxkID0gZnVuY3Rpb24gRmllbGQoZmllbGRzKSB7XG4gICgwLCBfY2xhc3NDYWxsQ2hlY2szW1wiZGVmYXVsdFwiXSkodGhpcywgRmllbGQpO1xuXG4gICgwLCBfZXh0ZW5kczNbXCJkZWZhdWx0XCJdKSh0aGlzLCBmaWVsZHMpO1xufTtcblxuZnVuY3Rpb24gaXNGb3JtRmllbGQob2JqKSB7XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBGaWVsZDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRm9ybUZpZWxkKGZpZWxkKSB7XG4gIGlmIChpc0Zvcm1GaWVsZChmaWVsZCkpIHtcbiAgICByZXR1cm4gZmllbGQ7XG4gIH1cbiAgcmV0dXJuIG5ldyBGaWVsZChmaWVsZCk7XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkZJRUxEX0RBVEFfUFJPUCA9IGV4cG9ydHMuRklFTERfTUVUQV9QUk9QID0gdm9pZCAwO1xudmFyIEZJRUxEX01FVEFfUFJPUCA9ICdkYXRhLV9fbWV0YSc7XG5leHBvcnRzLkZJRUxEX01FVEFfUFJPUCA9IEZJRUxEX01FVEFfUFJPUDtcbnZhciBGSUVMRF9EQVRBX1BST1AgPSAnZGF0YS1fX2ZpZWxkJztcbmV4cG9ydHMuRklFTERfREFUQV9QUk9QID0gRklFTERfREFUQV9QUk9QOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfY3JlYXRlUmVhY3RDb250ZXh0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vY3JlYXRlLXJlYWN0LWNvbnRleHRcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxudmFyIEZvcm1Db250ZXh0ID0gKDAsIF9jcmVhdGVSZWFjdENvbnRleHRbXCJkZWZhdWx0XCJdKSh7XG4gIGxhYmVsQWxpZ246ICdyaWdodCcsXG4gIHZlcnRpY2FsOiBmYWxzZVxufSk7XG52YXIgX2RlZmF1bHQgPSBGb3JtQ29udGV4dDtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwidmFyIGNhY2hlZDtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNjcm9sbEJhclNpemUoZnJlc2gpIHtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChmcmVzaCB8fCBjYWNoZWQgPT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBpbm5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGlubmVyLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIGlubmVyLnN0eWxlLmhlaWdodCA9ICcyMDBweCc7XG4gICAgdmFyIG91dGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdmFyIG91dGVyU3R5bGUgPSBvdXRlci5zdHlsZTtcbiAgICBvdXRlclN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBvdXRlclN0eWxlLnRvcCA9IDA7XG4gICAgb3V0ZXJTdHlsZS5sZWZ0ID0gMDtcbiAgICBvdXRlclN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgb3V0ZXJTdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgb3V0ZXJTdHlsZS53aWR0aCA9ICcyMDBweCc7XG4gICAgb3V0ZXJTdHlsZS5oZWlnaHQgPSAnMTUwcHgnO1xuICAgIG91dGVyU3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICBvdXRlci5hcHBlbmRDaGlsZChpbm5lcik7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdXRlcik7XG4gICAgdmFyIHdpZHRoQ29udGFpbmVkID0gaW5uZXIub2Zmc2V0V2lkdGg7XG4gICAgb3V0ZXIuc3R5bGUub3ZlcmZsb3cgPSAnc2Nyb2xsJztcbiAgICB2YXIgd2lkdGhTY3JvbGwgPSBpbm5lci5vZmZzZXRXaWR0aDtcblxuICAgIGlmICh3aWR0aENvbnRhaW5lZCA9PT0gd2lkdGhTY3JvbGwpIHtcbiAgICAgIHdpZHRoU2Nyb2xsID0gb3V0ZXIuY2xpZW50V2lkdGg7XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChvdXRlcik7XG4gICAgY2FjaGVkID0gd2lkdGhDb250YWluZWQgLSB3aWR0aFNjcm9sbDtcbiAgfVxuXG4gIHJldHVybiBjYWNoZWQ7XG59IiwiLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuLyoqXG4gKiBUaGlzIGlzIGEgc3ludGFjdGljIHN1Z2FyIGZvciBgY29sdW1uc2AgcHJvcC5cbiAqIFNvIEhPQyB3aWxsIG5vdCB3b3JrIG9uIHRoaXMuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmZ1bmN0aW9uIENvbHVtbkdyb3VwKF8pIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbHVtbkdyb3VwOyIsIi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cbi8qKlxuICogVGhpcyBpcyBhIHN5bnRhY3RpYyBzdWdhciBmb3IgYGNvbHVtbnNgIHByb3AuXG4gKiBTbyBIT0Mgd2lsbCBub3Qgd29yayBvbiB0aGlzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5mdW5jdGlvbiBDb2x1bW4oXykge1xuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sdW1uOyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbnZhciBJTlRFUk5BTF9LRVlfUFJFRklYID0gJ1JDX1RBQkxFX0tFWSc7XG5cbmZ1bmN0aW9uIHRvQXJyYXkoYXJyKSB7XG4gIGlmIChhcnIgPT09IHVuZGVmaW5lZCB8fCBhcnIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4gQXJyYXkuaXNBcnJheShhcnIpID8gYXJyIDogW2Fycl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXRoVmFsdWUocmVjb3JkLCBwYXRoKSB7XG4gIC8vIFNraXAgaWYgcGF0aCBpcyBlbXB0eVxuICBpZiAoIXBhdGggJiYgdHlwZW9mIHBhdGggIT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfVxuXG4gIHZhciBwYXRoTGlzdCA9IHRvQXJyYXkocGF0aCk7XG4gIHZhciBjdXJyZW50ID0gcmVjb3JkO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aExpc3QubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBwcm9wID0gcGF0aExpc3RbaV07XG4gICAgY3VycmVudCA9IGN1cnJlbnRbcHJvcF07XG4gIH1cblxuICByZXR1cm4gY3VycmVudDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5zS2V5KGNvbHVtbnMpIHtcbiAgdmFyIGNvbHVtbktleXMgPSBbXTtcbiAgdmFyIGtleXMgPSB7fTtcbiAgY29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICB2YXIgX3JlZiA9IGNvbHVtbiB8fCB7fSxcbiAgICAgICAga2V5ID0gX3JlZi5rZXksXG4gICAgICAgIGRhdGFJbmRleCA9IF9yZWYuZGF0YUluZGV4O1xuXG4gICAgdmFyIG1lcmdlZEtleSA9IGtleSB8fCB0b0FycmF5KGRhdGFJbmRleCkuam9pbignLScpIHx8IElOVEVSTkFMX0tFWV9QUkVGSVg7XG5cbiAgICB3aGlsZSAoa2V5c1ttZXJnZWRLZXldKSB7XG4gICAgICBtZXJnZWRLZXkgPSBcIlwiLmNvbmNhdChtZXJnZWRLZXksIFwiX25leHRcIik7XG4gICAgfVxuXG4gICAga2V5c1ttZXJnZWRLZXldID0gdHJ1ZTtcbiAgICBjb2x1bW5LZXlzLnB1c2gobWVyZ2VkS2V5KTtcbiAgfSk7XG4gIHJldHVybiBjb2x1bW5LZXlzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlT2JqZWN0KCkge1xuICB2YXIgbWVyZ2VkID0ge307XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5cbiAgZnVuY3Rpb24gZmlsbFByb3BzKG9iaiwgY2xvbmUpIHtcbiAgICBpZiAoY2xvbmUpIHtcbiAgICAgIE9iamVjdC5rZXlzKGNsb25lKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gY2xvbmVba2V5XTtcblxuICAgICAgICBpZiAodmFsdWUgJiYgX3R5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgb2JqW2tleV0gPSBvYmpba2V5XSB8fCB7fTtcbiAgICAgICAgICBmaWxsUHJvcHMob2JqW2tleV0sIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgLyogZXNsaW50LWVuYWJsZSAqL1xuXG5cbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIG9iamVjdHMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgb2JqZWN0c1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIG9iamVjdHMuZm9yRWFjaChmdW5jdGlvbiAoY2xvbmUpIHtcbiAgICBmaWxsUHJvcHMobWVyZ2VkLCBjbG9uZSk7XG4gIH0pO1xuICByZXR1cm4gbWVyZ2VkO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVmFsdWUodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQ7XG59IiwiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xuaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBzdXBwb3J0UmVmIH0gZnJvbSBcInJjLXV0aWwvZXMvcmVmXCI7XG5pbXBvcnQgeyBnZXRQYXRoVmFsdWUgfSBmcm9tICcuLi91dGlscy92YWx1ZVV0aWwnO1xuXG5mdW5jdGlvbiBpc1JlbmRlckNlbGwoZGF0YSkge1xuICByZXR1cm4gZGF0YSAmJiBfdHlwZW9mKGRhdGEpID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShkYXRhKSAmJiAhIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChkYXRhKTtcbn1cblxuZnVuY3Rpb24gaXNSZWZDb21wb25lbnQoY29tcG9uZW50KSB7XG4gIC8vIFN0cmluZyB0YWcgY29tcG9uZW50IGFsc28gc3VwcG9ydCByZWZcbiAgaWYgKHR5cGVvZiBjb21wb25lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gc3VwcG9ydFJlZihjb21wb25lbnQpO1xufVxuXG5mdW5jdGlvbiBDZWxsKF9yZWYsIHJlZikge1xuICB2YXIgX2NsYXNzTmFtZXM7XG5cbiAgdmFyIHByZWZpeENscyA9IF9yZWYucHJlZml4Q2xzLFxuICAgICAgY2xhc3NOYW1lID0gX3JlZi5jbGFzc05hbWUsXG4gICAgICByZWNvcmQgPSBfcmVmLnJlY29yZCxcbiAgICAgIGluZGV4ID0gX3JlZi5pbmRleCxcbiAgICAgIGRhdGFJbmRleCA9IF9yZWYuZGF0YUluZGV4LFxuICAgICAgcmVuZGVyID0gX3JlZi5yZW5kZXIsXG4gICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgICBfcmVmJGNvbXBvbmVudCA9IF9yZWYuY29tcG9uZW50LFxuICAgICAgQ29tcG9uZW50ID0gX3JlZiRjb21wb25lbnQgPT09IHZvaWQgMCA/ICd0ZCcgOiBfcmVmJGNvbXBvbmVudCxcbiAgICAgIGNvbFNwYW4gPSBfcmVmLmNvbFNwYW4sXG4gICAgICByb3dTcGFuID0gX3JlZi5yb3dTcGFuLFxuICAgICAgZml4TGVmdCA9IF9yZWYuZml4TGVmdCxcbiAgICAgIGZpeFJpZ2h0ID0gX3JlZi5maXhSaWdodCxcbiAgICAgIGZpcnN0Rml4TGVmdCA9IF9yZWYuZmlyc3RGaXhMZWZ0LFxuICAgICAgbGFzdEZpeExlZnQgPSBfcmVmLmxhc3RGaXhMZWZ0LFxuICAgICAgZmlyc3RGaXhSaWdodCA9IF9yZWYuZmlyc3RGaXhSaWdodCxcbiAgICAgIGxhc3RGaXhSaWdodCA9IF9yZWYubGFzdEZpeFJpZ2h0LFxuICAgICAgYXBwZW5kTm9kZSA9IF9yZWYuYXBwZW5kTm9kZSxcbiAgICAgIF9yZWYkYWRkaXRpb25hbFByb3BzID0gX3JlZi5hZGRpdGlvbmFsUHJvcHMsXG4gICAgICBhZGRpdGlvbmFsUHJvcHMgPSBfcmVmJGFkZGl0aW9uYWxQcm9wcyA9PT0gdm9pZCAwID8ge30gOiBfcmVmJGFkZGl0aW9uYWxQcm9wcyxcbiAgICAgIGVsbGlwc2lzID0gX3JlZi5lbGxpcHNpcyxcbiAgICAgIGFsaWduID0gX3JlZi5hbGlnbixcbiAgICAgIHJvd1R5cGUgPSBfcmVmLnJvd1R5cGUsXG4gICAgICBpc1N0aWNreSA9IF9yZWYuaXNTdGlja3k7XG4gIHZhciBjZWxsUHJlZml4Q2xzID0gXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1jZWxsXCIpOyAvLyA9PT09PT09PT09PT09PT09PT09PSBDaGlsZCBOb2RlID09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIGNlbGxQcm9wcztcbiAgdmFyIGNoaWxkTm9kZTtcblxuICBpZiAoY2hpbGRyZW4pIHtcbiAgICBjaGlsZE5vZGUgPSBjaGlsZHJlbjtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdmFsdWUgPSBnZXRQYXRoVmFsdWUocmVjb3JkLCBkYXRhSW5kZXgpOyAvLyBDdXN0b21pemUgcmVuZGVyIG5vZGVcblxuICAgIGNoaWxkTm9kZSA9IHZhbHVlO1xuXG4gICAgaWYgKHJlbmRlcikge1xuICAgICAgdmFyIHJlbmRlckRhdGEgPSByZW5kZXIodmFsdWUsIHJlY29yZCwgaW5kZXgpO1xuXG4gICAgICBpZiAoaXNSZW5kZXJDZWxsKHJlbmRlckRhdGEpKSB7XG4gICAgICAgIGNoaWxkTm9kZSA9IHJlbmRlckRhdGEuY2hpbGRyZW47XG4gICAgICAgIGNlbGxQcm9wcyA9IHJlbmRlckRhdGEucHJvcHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGlsZE5vZGUgPSByZW5kZXJEYXRhO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBOb3QgY3Jhc2ggaWYgZmluYWwgYGNoaWxkTm9kZWAgaXMgbm90IHZhbGlkYXRlIFJlYWN0Tm9kZVxuXG5cbiAgaWYgKF90eXBlb2YoY2hpbGROb2RlKSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoY2hpbGROb2RlKSAmJiAhIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZE5vZGUpKSB7XG4gICAgY2hpbGROb2RlID0gbnVsbDtcbiAgfVxuXG4gIGlmIChlbGxpcHNpcyAmJiAobGFzdEZpeExlZnQgfHwgZmlyc3RGaXhSaWdodCkpIHtcbiAgICBjaGlsZE5vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChjZWxsUHJlZml4Q2xzLCBcIi1jb250ZW50XCIpXG4gICAgfSwgY2hpbGROb2RlKTtcbiAgfVxuXG4gIHZhciBfcmVmMiA9IGNlbGxQcm9wcyB8fCB7fSxcbiAgICAgIGNlbGxDb2xTcGFuID0gX3JlZjIuY29sU3BhbixcbiAgICAgIGNlbGxSb3dTcGFuID0gX3JlZjIucm93U3BhbixcbiAgICAgIGNlbGxTdHlsZSA9IF9yZWYyLnN0eWxlLFxuICAgICAgY2VsbENsYXNzTmFtZSA9IF9yZWYyLmNsYXNzTmFtZSxcbiAgICAgIHJlc3RDZWxsUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjIsIFtcImNvbFNwYW5cIiwgXCJyb3dTcGFuXCIsIFwic3R5bGVcIiwgXCJjbGFzc05hbWVcIl0pO1xuXG4gIHZhciBtZXJnZWRDb2xTcGFuID0gY2VsbENvbFNwYW4gIT09IHVuZGVmaW5lZCA/IGNlbGxDb2xTcGFuIDogY29sU3BhbjtcbiAgdmFyIG1lcmdlZFJvd1NwYW4gPSBjZWxsUm93U3BhbiAhPT0gdW5kZWZpbmVkID8gY2VsbFJvd1NwYW4gOiByb3dTcGFuO1xuXG4gIGlmIChtZXJnZWRDb2xTcGFuID09PSAwIHx8IG1lcmdlZFJvd1NwYW4gPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSAvLyA9PT09PT09PT09PT09PT09PT09PT09IEZpeGVkID09PT09PT09PT09PT09PT09PT09PT09XG5cblxuICB2YXIgZml4ZWRTdHlsZSA9IHt9O1xuICB2YXIgaXNGaXhMZWZ0ID0gdHlwZW9mIGZpeExlZnQgPT09ICdudW1iZXInO1xuICB2YXIgaXNGaXhSaWdodCA9IHR5cGVvZiBmaXhSaWdodCA9PT0gJ251bWJlcic7XG5cbiAgaWYgKGlzRml4TGVmdCkge1xuICAgIGZpeGVkU3R5bGUucG9zaXRpb24gPSAnc3RpY2t5JztcbiAgICBmaXhlZFN0eWxlLmxlZnQgPSBmaXhMZWZ0O1xuICB9XG5cbiAgaWYgKGlzRml4UmlnaHQpIHtcbiAgICBmaXhlZFN0eWxlLnBvc2l0aW9uID0gJ3N0aWNreSc7XG4gICAgZml4ZWRTdHlsZS5yaWdodCA9IGZpeFJpZ2h0O1xuICB9IC8vID09PT09PT09PT09PT09PT09PT09PT0gQWxpZ24gPT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gIHZhciBhbGlnblN0eWxlID0ge307XG5cbiAgaWYgKGFsaWduKSB7XG4gICAgYWxpZ25TdHlsZS50ZXh0QWxpZ24gPSBhbGlnbjtcbiAgfSAvLyA9PT09PT09PT09PT09PT09PT09PT09IFJlbmRlciA9PT09PT09PT09PT09PT09PT09PT09XG5cblxuICB2YXIgdGl0bGU7XG4gIHZhciBlbGxpcHNpc0NvbmZpZyA9IGVsbGlwc2lzID09PSB0cnVlID8ge1xuICAgIHNob3dUaXRsZTogdHJ1ZVxuICB9IDogZWxsaXBzaXM7XG5cbiAgaWYgKGVsbGlwc2lzQ29uZmlnICYmIChlbGxpcHNpc0NvbmZpZy5zaG93VGl0bGUgfHwgcm93VHlwZSA9PT0gJ2hlYWRlcicpKSB7XG4gICAgaWYgKHR5cGVvZiBjaGlsZE5vZGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBjaGlsZE5vZGUgPT09ICdudW1iZXInKSB7XG4gICAgICB0aXRsZSA9IGNoaWxkTm9kZS50b1N0cmluZygpO1xuICAgIH0gZWxzZSBpZiAoIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZE5vZGUpICYmIHR5cGVvZiBjaGlsZE5vZGUucHJvcHMuY2hpbGRyZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aXRsZSA9IGNoaWxkTm9kZS5wcm9wcy5jaGlsZHJlbjtcbiAgICB9XG4gIH1cblxuICB2YXIgY29tcG9uZW50UHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgdGl0bGU6IHRpdGxlXG4gIH0sIHJlc3RDZWxsUHJvcHMpLCBhZGRpdGlvbmFsUHJvcHMpLCB7fSwge1xuICAgIGNvbFNwYW46IG1lcmdlZENvbFNwYW4gJiYgbWVyZ2VkQ29sU3BhbiAhPT0gMSA/IG1lcmdlZENvbFNwYW4gOiBudWxsLFxuICAgIHJvd1NwYW46IG1lcmdlZFJvd1NwYW4gJiYgbWVyZ2VkUm93U3BhbiAhPT0gMSA/IG1lcmdlZFJvd1NwYW4gOiBudWxsLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjZWxsUHJlZml4Q2xzLCBjbGFzc05hbWUsIChfY2xhc3NOYW1lcyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KGNlbGxQcmVmaXhDbHMsIFwiLWZpeC1sZWZ0XCIpLCBpc0ZpeExlZnQpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KGNlbGxQcmVmaXhDbHMsIFwiLWZpeC1sZWZ0LWZpcnN0XCIpLCBmaXJzdEZpeExlZnQpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KGNlbGxQcmVmaXhDbHMsIFwiLWZpeC1sZWZ0LWxhc3RcIiksIGxhc3RGaXhMZWZ0KSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChjZWxsUHJlZml4Q2xzLCBcIi1maXgtcmlnaHRcIiksIGlzRml4UmlnaHQpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KGNlbGxQcmVmaXhDbHMsIFwiLWZpeC1yaWdodC1maXJzdFwiKSwgZmlyc3RGaXhSaWdodCksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQoY2VsbFByZWZpeENscywgXCItZml4LXJpZ2h0LWxhc3RcIiksIGxhc3RGaXhSaWdodCksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQoY2VsbFByZWZpeENscywgXCItZWxsaXBzaXNcIiksIGVsbGlwc2lzKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChjZWxsUHJlZml4Q2xzLCBcIi13aXRoLWFwcGVuZFwiKSwgYXBwZW5kTm9kZSksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQoY2VsbFByZWZpeENscywgXCItZml4LXN0aWNreVwiKSwgKGlzRml4TGVmdCB8fCBpc0ZpeFJpZ2h0KSAmJiBpc1N0aWNreSksIF9jbGFzc05hbWVzKSwgYWRkaXRpb25hbFByb3BzLmNsYXNzTmFtZSwgY2VsbENsYXNzTmFtZSksXG4gICAgc3R5bGU6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGFkZGl0aW9uYWxQcm9wcy5zdHlsZSksIGFsaWduU3R5bGUpLCBmaXhlZFN0eWxlKSwgY2VsbFN0eWxlKSxcbiAgICByZWY6IGlzUmVmQ29tcG9uZW50KENvbXBvbmVudCkgPyByZWYgOiBudWxsXG4gIH0pO1xuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIGNvbXBvbmVudFByb3BzLCBhcHBlbmROb2RlLCBjaGlsZE5vZGUpO1xufVxuXG52YXIgUmVmQ2VsbCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKENlbGwpO1xuUmVmQ2VsbC5kaXNwbGF5TmFtZSA9ICdDZWxsJztcbnZhciBNZW1vQ2VsbCA9IC8qI19fUFVSRV9fKi9SZWFjdC5tZW1vKFJlZkNlbGwsIGZ1bmN0aW9uIChwcmV2LCBuZXh0KSB7XG4gIGlmIChuZXh0LnNob3VsZENlbGxVcGRhdGUpIHtcbiAgICByZXR1cm4gIW5leHQuc2hvdWxkQ2VsbFVwZGF0ZShuZXh0LnJlY29yZCwgcHJldi5yZWNvcmQpO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufSk7XG5leHBvcnQgZGVmYXVsdCBNZW1vQ2VsbDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG52YXIgVGFibGVDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5leHBvcnQgZGVmYXVsdCBUYWJsZUNvbnRleHQ7IiwiZXhwb3J0IGZ1bmN0aW9uIGdldENlbGxGaXhlZEluZm8oY29sU3RhcnQsIGNvbEVuZCwgY29sdW1ucywgc3RpY2t5T2Zmc2V0cywgZGlyZWN0aW9uKSB7XG4gIHZhciBzdGFydENvbHVtbiA9IGNvbHVtbnNbY29sU3RhcnRdIHx8IHt9O1xuICB2YXIgZW5kQ29sdW1uID0gY29sdW1uc1tjb2xFbmRdIHx8IHt9O1xuICB2YXIgZml4TGVmdDtcbiAgdmFyIGZpeFJpZ2h0O1xuXG4gIGlmIChzdGFydENvbHVtbi5maXhlZCA9PT0gJ2xlZnQnKSB7XG4gICAgZml4TGVmdCA9IHN0aWNreU9mZnNldHMubGVmdFtjb2xTdGFydF07XG4gIH0gZWxzZSBpZiAoZW5kQ29sdW1uLmZpeGVkID09PSAncmlnaHQnKSB7XG4gICAgZml4UmlnaHQgPSBzdGlja3lPZmZzZXRzLnJpZ2h0W2NvbEVuZF07XG4gIH1cblxuICB2YXIgbGFzdEZpeExlZnQgPSBmYWxzZTtcbiAgdmFyIGZpcnN0Rml4UmlnaHQgPSBmYWxzZTtcbiAgdmFyIGxhc3RGaXhSaWdodCA9IGZhbHNlO1xuICB2YXIgZmlyc3RGaXhMZWZ0ID0gZmFsc2U7XG4gIHZhciBuZXh0Q29sdW1uID0gY29sdW1uc1tjb2xFbmQgKyAxXTtcbiAgdmFyIHByZXZDb2x1bW4gPSBjb2x1bW5zW2NvbFN0YXJ0IC0gMV07XG5cbiAgaWYgKGRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICBpZiAoZml4TGVmdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgcHJldkZpeExlZnQgPSBwcmV2Q29sdW1uICYmIHByZXZDb2x1bW4uZml4ZWQgPT09ICdsZWZ0JztcbiAgICAgIGZpcnN0Rml4TGVmdCA9ICFwcmV2Rml4TGVmdDtcbiAgICB9IGVsc2UgaWYgKGZpeFJpZ2h0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBuZXh0Rml4UmlnaHQgPSBuZXh0Q29sdW1uICYmIG5leHRDb2x1bW4uZml4ZWQgPT09ICdyaWdodCc7XG4gICAgICBsYXN0Rml4UmlnaHQgPSAhbmV4dEZpeFJpZ2h0O1xuICAgIH1cbiAgfSBlbHNlIGlmIChmaXhMZWZ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgbmV4dEZpeExlZnQgPSBuZXh0Q29sdW1uICYmIG5leHRDb2x1bW4uZml4ZWQgPT09ICdsZWZ0JztcbiAgICBsYXN0Rml4TGVmdCA9ICFuZXh0Rml4TGVmdDtcbiAgfSBlbHNlIGlmIChmaXhSaWdodCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIHByZXZGaXhSaWdodCA9IHByZXZDb2x1bW4gJiYgcHJldkNvbHVtbi5maXhlZCA9PT0gJ3JpZ2h0JztcbiAgICBmaXJzdEZpeFJpZ2h0ID0gIXByZXZGaXhSaWdodDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZml4TGVmdDogZml4TGVmdCxcbiAgICBmaXhSaWdodDogZml4UmlnaHQsXG4gICAgbGFzdEZpeExlZnQ6IGxhc3RGaXhMZWZ0LFxuICAgIGZpcnN0Rml4UmlnaHQ6IGZpcnN0Rml4UmlnaHQsXG4gICAgbGFzdEZpeFJpZ2h0OiBsYXN0Rml4UmlnaHQsXG4gICAgZmlyc3RGaXhMZWZ0OiBmaXJzdEZpeExlZnQsXG4gICAgaXNTdGlja3k6IHN0aWNreU9mZnNldHMuaXNTdGlja3lcbiAgfTtcbn0iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDZWxsIGZyb20gJy4uL0NlbGwnO1xuaW1wb3J0IFRhYmxlQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1RhYmxlQ29udGV4dCc7XG5pbXBvcnQgeyBnZXRDZWxsRml4ZWRJbmZvIH0gZnJvbSAnLi4vdXRpbHMvZml4VXRpbCc7XG5pbXBvcnQgeyBnZXRDb2x1bW5zS2V5IH0gZnJvbSAnLi4vdXRpbHMvdmFsdWVVdGlsJztcblxuZnVuY3Rpb24gSGVhZGVyUm93KF9yZWYpIHtcbiAgdmFyIGNlbGxzID0gX3JlZi5jZWxscyxcbiAgICAgIHN0aWNreU9mZnNldHMgPSBfcmVmLnN0aWNreU9mZnNldHMsXG4gICAgICBmbGF0dGVuQ29sdW1ucyA9IF9yZWYuZmxhdHRlbkNvbHVtbnMsXG4gICAgICBSb3dDb21wb25lbnQgPSBfcmVmLnJvd0NvbXBvbmVudCxcbiAgICAgIENlbGxDb21wb25lbnQgPSBfcmVmLmNlbGxDb21wb25lbnQsXG4gICAgICBvbkhlYWRlclJvdyA9IF9yZWYub25IZWFkZXJSb3csXG4gICAgICBpbmRleCA9IF9yZWYuaW5kZXg7XG5cbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChUYWJsZUNvbnRleHQpLFxuICAgICAgcHJlZml4Q2xzID0gX1JlYWN0JHVzZUNvbnRleHQucHJlZml4Q2xzLFxuICAgICAgZGlyZWN0aW9uID0gX1JlYWN0JHVzZUNvbnRleHQuZGlyZWN0aW9uO1xuXG4gIHZhciByb3dQcm9wcztcblxuICBpZiAob25IZWFkZXJSb3cpIHtcbiAgICByb3dQcm9wcyA9IG9uSGVhZGVyUm93KGNlbGxzLm1hcChmdW5jdGlvbiAoY2VsbCkge1xuICAgICAgcmV0dXJuIGNlbGwuY29sdW1uO1xuICAgIH0pLCBpbmRleCk7XG4gIH1cblxuICB2YXIgY29sdW1uc0tleSA9IGdldENvbHVtbnNLZXkoY2VsbHMubWFwKGZ1bmN0aW9uIChjZWxsKSB7XG4gICAgcmV0dXJuIGNlbGwuY29sdW1uO1xuICB9KSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSb3dDb21wb25lbnQsIHJvd1Byb3BzLCBjZWxscy5tYXAoZnVuY3Rpb24gKGNlbGwsIGNlbGxJbmRleCkge1xuICAgIHZhciBjb2x1bW4gPSBjZWxsLmNvbHVtbjtcbiAgICB2YXIgZml4ZWRJbmZvID0gZ2V0Q2VsbEZpeGVkSW5mbyhjZWxsLmNvbFN0YXJ0LCBjZWxsLmNvbEVuZCwgZmxhdHRlbkNvbHVtbnMsIHN0aWNreU9mZnNldHMsIGRpcmVjdGlvbik7XG4gICAgdmFyIGFkZGl0aW9uYWxQcm9wcztcblxuICAgIGlmIChjb2x1bW4gJiYgY29sdW1uLm9uSGVhZGVyQ2VsbCkge1xuICAgICAgYWRkaXRpb25hbFByb3BzID0gY2VsbC5jb2x1bW4ub25IZWFkZXJDZWxsKGNvbHVtbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENlbGwsIF9leHRlbmRzKHt9LCBjZWxsLCB7XG4gICAgICBlbGxpcHNpczogY29sdW1uLmVsbGlwc2lzLFxuICAgICAgYWxpZ246IGNvbHVtbi5hbGlnbixcbiAgICAgIGNvbXBvbmVudDogQ2VsbENvbXBvbmVudCxcbiAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAga2V5OiBjb2x1bW5zS2V5W2NlbGxJbmRleF1cbiAgICB9LCBmaXhlZEluZm8sIHtcbiAgICAgIGFkZGl0aW9uYWxQcm9wczogYWRkaXRpb25hbFByb3BzLFxuICAgICAgcm93VHlwZTogXCJoZWFkZXJcIlxuICAgIH0pKTtcbiAgfSkpO1xufVxuXG5IZWFkZXJSb3cuZGlzcGxheU5hbWUgPSAnSGVhZGVyUm93JztcbmV4cG9ydCBkZWZhdWx0IEhlYWRlclJvdzsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgSGVhZGVyUm93IGZyb20gJy4vSGVhZGVyUm93JztcbmltcG9ydCBUYWJsZUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9UYWJsZUNvbnRleHQnO1xuXG5mdW5jdGlvbiBwYXJzZUhlYWRlclJvd3Mocm9vdENvbHVtbnMpIHtcbiAgdmFyIHJvd3MgPSBbXTtcblxuICBmdW5jdGlvbiBmaWxsUm93Q2VsbHMoY29sdW1ucywgY29sSW5kZXgpIHtcbiAgICB2YXIgcm93SW5kZXggPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDA7XG4gICAgLy8gSW5pdCByb3dzXG4gICAgcm93c1tyb3dJbmRleF0gPSByb3dzW3Jvd0luZGV4XSB8fCBbXTtcbiAgICB2YXIgY3VycmVudENvbEluZGV4ID0gY29sSW5kZXg7XG4gICAgdmFyIGNvbFNwYW5zID0gY29sdW1ucy5maWx0ZXIoQm9vbGVhbikubWFwKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgIHZhciBjZWxsID0ge1xuICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgIGNsYXNzTmFtZTogY29sdW1uLmNsYXNzTmFtZSB8fCAnJyxcbiAgICAgICAgY2hpbGRyZW46IGNvbHVtbi50aXRsZSxcbiAgICAgICAgY29sdW1uOiBjb2x1bW4sXG4gICAgICAgIGNvbFN0YXJ0OiBjdXJyZW50Q29sSW5kZXhcbiAgICAgIH07XG4gICAgICB2YXIgY29sU3BhbiA9IDE7XG4gICAgICB2YXIgc3ViQ29sdW1ucyA9IGNvbHVtbi5jaGlsZHJlbjtcblxuICAgICAgaWYgKHN1YkNvbHVtbnMgJiYgc3ViQ29sdW1ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbFNwYW4gPSBmaWxsUm93Q2VsbHMoc3ViQ29sdW1ucywgY3VycmVudENvbEluZGV4LCByb3dJbmRleCArIDEpLnJlZHVjZShmdW5jdGlvbiAodG90YWwsIGNvdW50KSB7XG4gICAgICAgICAgcmV0dXJuIHRvdGFsICsgY291bnQ7XG4gICAgICAgIH0sIDApO1xuICAgICAgICBjZWxsLmhhc1N1YkNvbHVtbnMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoJ2NvbFNwYW4nIGluIGNvbHVtbikge1xuICAgICAgICBjb2xTcGFuID0gY29sdW1uLmNvbFNwYW47XG4gICAgICB9XG5cbiAgICAgIGlmICgncm93U3BhbicgaW4gY29sdW1uKSB7XG4gICAgICAgIGNlbGwucm93U3BhbiA9IGNvbHVtbi5yb3dTcGFuO1xuICAgICAgfVxuXG4gICAgICBjZWxsLmNvbFNwYW4gPSBjb2xTcGFuO1xuICAgICAgY2VsbC5jb2xFbmQgPSBjZWxsLmNvbFN0YXJ0ICsgY29sU3BhbiAtIDE7XG4gICAgICByb3dzW3Jvd0luZGV4XS5wdXNoKGNlbGwpO1xuICAgICAgY3VycmVudENvbEluZGV4ICs9IGNvbFNwYW47XG4gICAgICByZXR1cm4gY29sU3BhbjtcbiAgICB9KTtcbiAgICByZXR1cm4gY29sU3BhbnM7XG4gIH0gLy8gR2VuZXJhdGUgYHJvd3NgIGNlbGwgZGF0YVxuXG5cbiAgZmlsbFJvd0NlbGxzKHJvb3RDb2x1bW5zLCAwKTsgLy8gSGFuZGxlIGByb3dTcGFuYFxuXG4gIHZhciByb3dDb3VudCA9IHJvd3MubGVuZ3RoO1xuXG4gIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKHJvd0luZGV4KSB7XG4gICAgcm93c1tyb3dJbmRleF0uZm9yRWFjaChmdW5jdGlvbiAoY2VsbCkge1xuICAgICAgaWYgKCEoJ3Jvd1NwYW4nIGluIGNlbGwpICYmICFjZWxsLmhhc1N1YkNvbHVtbnMpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIGNlbGwucm93U3BhbiA9IHJvd0NvdW50IC0gcm93SW5kZXg7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgZm9yICh2YXIgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IHJvd0NvdW50OyByb3dJbmRleCArPSAxKSB7XG4gICAgX2xvb3Aocm93SW5kZXgpO1xuICB9XG5cbiAgcmV0dXJuIHJvd3M7XG59XG5cbmZ1bmN0aW9uIEhlYWRlcihfcmVmKSB7XG4gIHZhciBzdGlja3lPZmZzZXRzID0gX3JlZi5zdGlja3lPZmZzZXRzLFxuICAgICAgY29sdW1ucyA9IF9yZWYuY29sdW1ucyxcbiAgICAgIGZsYXR0ZW5Db2x1bW5zID0gX3JlZi5mbGF0dGVuQ29sdW1ucyxcbiAgICAgIG9uSGVhZGVyUm93ID0gX3JlZi5vbkhlYWRlclJvdztcblxuICB2YXIgX1JlYWN0JHVzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KFRhYmxlQ29udGV4dCksXG4gICAgICBwcmVmaXhDbHMgPSBfUmVhY3QkdXNlQ29udGV4dC5wcmVmaXhDbHMsXG4gICAgICBnZXRDb21wb25lbnQgPSBfUmVhY3QkdXNlQ29udGV4dC5nZXRDb21wb25lbnQ7XG5cbiAgdmFyIHJvd3MgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gcGFyc2VIZWFkZXJSb3dzKGNvbHVtbnMpO1xuICB9LCBbY29sdW1uc10pO1xuICB2YXIgV3JhcHBlckNvbXBvbmVudCA9IGdldENvbXBvbmVudChbJ2hlYWRlcicsICd3cmFwcGVyJ10sICd0aGVhZCcpO1xuICB2YXIgdHJDb21wb25lbnQgPSBnZXRDb21wb25lbnQoWydoZWFkZXInLCAncm93J10sICd0cicpO1xuICB2YXIgdGhDb21wb25lbnQgPSBnZXRDb21wb25lbnQoWydoZWFkZXInLCAnY2VsbCddLCAndGgnKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFdyYXBwZXJDb21wb25lbnQsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdGhlYWRcIilcbiAgfSwgcm93cy5tYXAoZnVuY3Rpb24gKHJvdywgcm93SW5kZXgpIHtcbiAgICB2YXIgcm93Tm9kZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEhlYWRlclJvdywge1xuICAgICAga2V5OiByb3dJbmRleCxcbiAgICAgIGZsYXR0ZW5Db2x1bW5zOiBmbGF0dGVuQ29sdW1ucyxcbiAgICAgIGNlbGxzOiByb3csXG4gICAgICBzdGlja3lPZmZzZXRzOiBzdGlja3lPZmZzZXRzLFxuICAgICAgcm93Q29tcG9uZW50OiB0ckNvbXBvbmVudCxcbiAgICAgIGNlbGxDb21wb25lbnQ6IHRoQ29tcG9uZW50LFxuICAgICAgb25IZWFkZXJSb3c6IG9uSGVhZGVyUm93LFxuICAgICAgaW5kZXg6IHJvd0luZGV4XG4gICAgfSk7XG4gICAgcmV0dXJuIHJvd05vZGU7XG4gIH0pKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgSGVhZGVyOyIsImltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSBcInJjLXV0aWwvZXMvd2FybmluZ1wiO1xuZXhwb3J0IHZhciBJTlRFUk5BTF9DT0xfREVGSU5FID0gJ1JDX1RBQkxFX0lOVEVSTkFMX0NPTF9ERUZJTkUnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEV4cGFuZGFibGVQcm9wcyhwcm9wcykge1xuICB2YXIgZXhwYW5kYWJsZSA9IHByb3BzLmV4cGFuZGFibGUsXG4gICAgICBsZWdhY3lFeHBhbmRhYmxlQ29uZmlnID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBbXCJleHBhbmRhYmxlXCJdKTtcblxuICBpZiAoJ2V4cGFuZGFibGUnIGluIHByb3BzKSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgbGVnYWN5RXhwYW5kYWJsZUNvbmZpZyksIGV4cGFuZGFibGUpO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgWydpbmRlbnRTaXplJywgJ2V4cGFuZGVkUm93S2V5cycsICdkZWZhdWx0RXhwYW5kZWRSb3dLZXlzJywgJ2RlZmF1bHRFeHBhbmRBbGxSb3dzJywgJ2V4cGFuZGVkUm93UmVuZGVyJywgJ2V4cGFuZFJvd0J5Q2xpY2snLCAnZXhwYW5kSWNvbicsICdvbkV4cGFuZCcsICdvbkV4cGFuZGVkUm93c0NoYW5nZScsICdleHBhbmRlZFJvd0NsYXNzTmFtZScsICdleHBhbmRJY29uQ29sdW1uSW5kZXgnXS5zb21lKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgcmV0dXJuIHByb3AgaW4gcHJvcHM7XG4gIH0pKSB7XG4gICAgd2FybmluZyhmYWxzZSwgJ2V4cGFuZGVkIHJlbGF0ZWQgcHJvcHMgaGF2ZSBiZWVuIG1vdmVkIGludG8gYGV4cGFuZGFibGVgLicpO1xuICB9XG5cbiAgcmV0dXJuIGxlZ2FjeUV4cGFuZGFibGVDb25maWc7XG59XG4vKipcbiAqIFJldHVybnMgb25seSBkYXRhLSBhbmQgYXJpYS0ga2V5L3ZhbHVlIHBhaXJzXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YUFuZEFyaWFQcm9wcyhwcm9wcykge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuICByZXR1cm4gT2JqZWN0LmtleXMocHJvcHMpLnJlZHVjZShmdW5jdGlvbiAobWVtbywga2V5KSB7XG4gICAgaWYgKGtleS5zdWJzdHIoMCwgNSkgPT09ICdkYXRhLScgfHwga2V5LnN1YnN0cigwLCA1KSA9PT0gJ2FyaWEtJykge1xuICAgICAgbWVtb1trZXldID0gcHJvcHNba2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtbztcbiAgfSwge30pO1xuICAvKiBlc2xpbnQtZW5hYmxlICovXG59IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJTlRFUk5BTF9DT0xfREVGSU5FIH0gZnJvbSAnLi91dGlscy9sZWdhY3lVdGlsJztcblxuZnVuY3Rpb24gQ29sR3JvdXAoX3JlZikge1xuICB2YXIgY29sV2lkdGhzID0gX3JlZi5jb2xXaWR0aHMsXG4gICAgICBjb2x1bW5zID0gX3JlZi5jb2x1bW5zLFxuICAgICAgY29sdW1Db3VudCA9IF9yZWYuY29sdW1Db3VudDtcbiAgdmFyIGNvbHMgPSBbXTtcbiAgdmFyIGxlbiA9IGNvbHVtQ291bnQgfHwgY29sdW1ucy5sZW5ndGg7IC8vIE9ubHkgaW5zZXJ0IGNvbCB3aXRoIHdpZHRoICYgYWRkaXRpb25hbCBwcm9wc1xuICAvLyBTa2lwIGlmIHJlc3QgY29sIGRvIG5vdCBoYXZlIGFueSB1c2VmdWwgaW5mb1xuXG4gIHZhciBtdXN0SW5zZXJ0ID0gZmFsc2U7XG5cbiAgZm9yICh2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaSAtPSAxKSB7XG4gICAgdmFyIHdpZHRoID0gY29sV2lkdGhzW2ldO1xuICAgIHZhciBjb2x1bW4gPSBjb2x1bW5zICYmIGNvbHVtbnNbaV07XG4gICAgdmFyIGFkZGl0aW9uYWxQcm9wcyA9IGNvbHVtbiAmJiBjb2x1bW5bSU5URVJOQUxfQ09MX0RFRklORV07XG5cbiAgICBpZiAod2lkdGggfHwgYWRkaXRpb25hbFByb3BzIHx8IG11c3RJbnNlcnQpIHtcbiAgICAgIGNvbHMudW5zaGlmdCggLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJjb2xcIiwgX2V4dGVuZHMoe1xuICAgICAgICBrZXk6IGksXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgIG1pbldpZHRoOiB3aWR0aFxuICAgICAgICB9XG4gICAgICB9LCBhZGRpdGlvbmFsUHJvcHMpKSk7XG4gICAgICBtdXN0SW5zZXJ0ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJjb2xncm91cFwiLCBudWxsLCBjb2xzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sR3JvdXA7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDJcIjtcbmltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5XCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgZmlsbFJlZiB9IGZyb20gXCJyYy11dGlsL2VzL3JlZlwiO1xuaW1wb3J0IEhlYWRlciBmcm9tICcuL0hlYWRlcic7XG5pbXBvcnQgQ29sR3JvdXAgZnJvbSAnLi4vQ29sR3JvdXAnO1xuaW1wb3J0IFRhYmxlQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1RhYmxlQ29udGV4dCc7XG5cbmZ1bmN0aW9uIHVzZUNvbHVtbldpZHRoKGNvbFdpZHRocywgY29sdW1Db3VudCkge1xuICByZXR1cm4gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNsb25lQ29sdW1ucyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2x1bUNvdW50OyBpICs9IDEpIHtcbiAgICAgIHZhciB2YWwgPSBjb2xXaWR0aHNbaV07XG5cbiAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbG9uZUNvbHVtbnNbaV0gPSB2YWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2xvbmVDb2x1bW5zO1xuICB9LCBbY29sV2lkdGhzLmpvaW4oJ18nKSwgY29sdW1Db3VudF0pO1xufVxuXG52YXIgRml4ZWRIZWFkZXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAoX3JlZiwgcmVmKSB7XG4gIHZhciBub0RhdGEgPSBfcmVmLm5vRGF0YSxcbiAgICAgIGNvbHVtbnMgPSBfcmVmLmNvbHVtbnMsXG4gICAgICBmbGF0dGVuQ29sdW1ucyA9IF9yZWYuZmxhdHRlbkNvbHVtbnMsXG4gICAgICBjb2xXaWR0aHMgPSBfcmVmLmNvbFdpZHRocyxcbiAgICAgIGNvbHVtQ291bnQgPSBfcmVmLmNvbHVtQ291bnQsXG4gICAgICBzdGlja3lPZmZzZXRzID0gX3JlZi5zdGlja3lPZmZzZXRzLFxuICAgICAgZGlyZWN0aW9uID0gX3JlZi5kaXJlY3Rpb24sXG4gICAgICBmaXhIZWFkZXIgPSBfcmVmLmZpeEhlYWRlcixcbiAgICAgIG9mZnNldEhlYWRlciA9IF9yZWYub2Zmc2V0SGVhZGVyLFxuICAgICAgc3RpY2t5Q2xhc3NOYW1lID0gX3JlZi5zdGlja3lDbGFzc05hbWUsXG4gICAgICBvblNjcm9sbCA9IF9yZWYub25TY3JvbGwsXG4gICAgICBtYXhDb250ZW50U2Nyb2xsID0gX3JlZi5tYXhDb250ZW50U2Nyb2xsLFxuICAgICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgW1wibm9EYXRhXCIsIFwiY29sdW1uc1wiLCBcImZsYXR0ZW5Db2x1bW5zXCIsIFwiY29sV2lkdGhzXCIsIFwiY29sdW1Db3VudFwiLCBcInN0aWNreU9mZnNldHNcIiwgXCJkaXJlY3Rpb25cIiwgXCJmaXhIZWFkZXJcIiwgXCJvZmZzZXRIZWFkZXJcIiwgXCJzdGlja3lDbGFzc05hbWVcIiwgXCJvblNjcm9sbFwiLCBcIm1heENvbnRlbnRTY3JvbGxcIl0pO1xuXG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVGFibGVDb250ZXh0KSxcbiAgICAgIHByZWZpeENscyA9IF9SZWFjdCR1c2VDb250ZXh0LnByZWZpeENscyxcbiAgICAgIHNjcm9sbGJhclNpemUgPSBfUmVhY3QkdXNlQ29udGV4dC5zY3JvbGxiYXJTaXplLFxuICAgICAgaXNTdGlja3kgPSBfUmVhY3QkdXNlQ29udGV4dC5pc1N0aWNreTtcblxuICB2YXIgY29tYmluYXRpb25TY3JvbGxCYXJTaXplID0gaXNTdGlja3kgJiYgIWZpeEhlYWRlciA/IDAgOiBzY3JvbGxiYXJTaXplOyAvLyBQYXNzIHdoZWVsIHRvIHNjcm9sbCBldmVudFxuXG4gIHZhciBzY3JvbGxSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIHZhciBzZXRTY3JvbGxSZWYgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIGZpbGxSZWYocmVmLCBlbGVtZW50KTtcbiAgICBmaWxsUmVmKHNjcm9sbFJlZiwgZWxlbWVudCk7XG4gIH0sIFtdKTtcbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3Njcm9sbFJlZiRjdXJyZW50O1xuXG4gICAgZnVuY3Rpb24gb25XaGVlbChlKSB7XG4gICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCxcbiAgICAgICAgICBkZWx0YVggPSBlLmRlbHRhWDtcblxuICAgICAgaWYgKGRlbHRhWCkge1xuICAgICAgICBvblNjcm9sbCh7XG4gICAgICAgICAgY3VycmVudFRhcmdldDogY3VycmVudFRhcmdldCxcbiAgICAgICAgICBzY3JvbGxMZWZ0OiBjdXJyZW50VGFyZ2V0LnNjcm9sbExlZnQgKyBkZWx0YVhcbiAgICAgICAgfSk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAoX3Njcm9sbFJlZiRjdXJyZW50ID0gc2Nyb2xsUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9zY3JvbGxSZWYkY3VycmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3Njcm9sbFJlZiRjdXJyZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfc2Nyb2xsUmVmJGN1cnJlbnQyO1xuXG4gICAgICAoX3Njcm9sbFJlZiRjdXJyZW50MiA9IHNjcm9sbFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfc2Nyb2xsUmVmJGN1cnJlbnQyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfc2Nyb2xsUmVmJGN1cnJlbnQyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCk7XG4gICAgfTtcbiAgfSwgW10pOyAvLyBDaGVjayBpZiBhbGwgZmxhdHRlbkNvbHVtbnMgaGFzIHdpZHRoXG5cbiAgdmFyIGFsbEZsYXR0ZW5Db2x1bW5zV2l0aFdpZHRoID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZsYXR0ZW5Db2x1bW5zLmV2ZXJ5KGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgIHJldHVybiBjb2x1bW4ud2lkdGggPj0gMDtcbiAgICB9KTtcbiAgfSwgW2ZsYXR0ZW5Db2x1bW5zXSk7IC8vIEFkZCBzY3JvbGxiYXIgY29sdW1uXG5cbiAgdmFyIGxhc3RDb2x1bW4gPSBmbGF0dGVuQ29sdW1uc1tmbGF0dGVuQ29sdW1ucy5sZW5ndGggLSAxXTtcbiAgdmFyIFNjcm9sbEJhckNvbHVtbiA9IHtcbiAgICBmaXhlZDogbGFzdENvbHVtbiA/IGxhc3RDb2x1bW4uZml4ZWQgOiBudWxsLFxuICAgIG9uSGVhZGVyQ2VsbDogZnVuY3Rpb24gb25IZWFkZXJDZWxsKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNlbGwtc2Nyb2xsYmFyXCIpXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgdmFyIGNvbHVtbnNXaXRoU2Nyb2xsYmFyID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNvbWJpbmF0aW9uU2Nyb2xsQmFyU2l6ZSA/IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoY29sdW1ucyksIFtTY3JvbGxCYXJDb2x1bW5dKSA6IGNvbHVtbnM7XG4gIH0sIFtjb21iaW5hdGlvblNjcm9sbEJhclNpemUsIGNvbHVtbnNdKTtcbiAgdmFyIGZsYXR0ZW5Db2x1bW5zV2l0aFNjcm9sbGJhciA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjb21iaW5hdGlvblNjcm9sbEJhclNpemUgPyBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGZsYXR0ZW5Db2x1bW5zKSwgW1Njcm9sbEJhckNvbHVtbl0pIDogZmxhdHRlbkNvbHVtbnM7XG4gIH0sIFtjb21iaW5hdGlvblNjcm9sbEJhclNpemUsIGZsYXR0ZW5Db2x1bW5zXSk7IC8vIENhbGN1bGF0ZSB0aGUgc3RpY2t5IG9mZnNldHNcblxuICB2YXIgaGVhZGVyU3RpY2t5T2Zmc2V0cyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciByaWdodCA9IHN0aWNreU9mZnNldHMucmlnaHQsXG4gICAgICAgIGxlZnQgPSBzdGlja3lPZmZzZXRzLmxlZnQ7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgc3RpY2t5T2Zmc2V0cyksIHt9LCB7XG4gICAgICBsZWZ0OiBkaXJlY3Rpb24gPT09ICdydGwnID8gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShsZWZ0Lm1hcChmdW5jdGlvbiAod2lkdGgpIHtcbiAgICAgICAgcmV0dXJuIHdpZHRoICsgY29tYmluYXRpb25TY3JvbGxCYXJTaXplO1xuICAgICAgfSkpLCBbMF0pIDogbGVmdCxcbiAgICAgIHJpZ2h0OiBkaXJlY3Rpb24gPT09ICdydGwnID8gcmlnaHQgOiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHJpZ2h0Lm1hcChmdW5jdGlvbiAod2lkdGgpIHtcbiAgICAgICAgcmV0dXJuIHdpZHRoICsgY29tYmluYXRpb25TY3JvbGxCYXJTaXplO1xuICAgICAgfSkpLCBbMF0pLFxuICAgICAgaXNTdGlja3k6IGlzU3RpY2t5XG4gICAgfSk7XG4gIH0sIFtjb21iaW5hdGlvblNjcm9sbEJhclNpemUsIHN0aWNreU9mZnNldHMsIGlzU3RpY2t5XSk7XG4gIHZhciBtZXJnZWRDb2x1bW5XaWR0aCA9IHVzZUNvbHVtbldpZHRoKGNvbFdpZHRocywgY29sdW1Db3VudCk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgc3R5bGU6IF9vYmplY3RTcHJlYWQoe1xuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gICAgfSwgaXNTdGlja3kgPyB7XG4gICAgICB0b3A6IG9mZnNldEhlYWRlclxuICAgIH0gOiB7fSksXG4gICAgcmVmOiBzZXRTY3JvbGxSZWYsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaGVhZGVyXCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIHN0aWNreUNsYXNzTmFtZSwgISFzdGlja3lDbGFzc05hbWUpKVxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInRhYmxlXCIsIHtcbiAgICBzdHlsZToge1xuICAgICAgdGFibGVMYXlvdXQ6ICdmaXhlZCcsXG4gICAgICB2aXNpYmlsaXR5OiBub0RhdGEgfHwgbWVyZ2VkQ29sdW1uV2lkdGggPyBudWxsIDogJ2hpZGRlbidcbiAgICB9XG4gIH0sICghbm9EYXRhIHx8ICFtYXhDb250ZW50U2Nyb2xsIHx8IGFsbEZsYXR0ZW5Db2x1bW5zV2l0aFdpZHRoKSAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb2xHcm91cCwge1xuICAgIGNvbFdpZHRoczogbWVyZ2VkQ29sdW1uV2lkdGggPyBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KG1lcmdlZENvbHVtbldpZHRoKSwgW2NvbWJpbmF0aW9uU2Nyb2xsQmFyU2l6ZV0pIDogW10sXG4gICAgY29sdW1Db3VudDogY29sdW1Db3VudCArIDEsXG4gICAgY29sdW1uczogZmxhdHRlbkNvbHVtbnNXaXRoU2Nyb2xsYmFyXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChIZWFkZXIsIF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIHN0aWNreU9mZnNldHM6IGhlYWRlclN0aWNreU9mZnNldHMsXG4gICAgY29sdW1uczogY29sdW1uc1dpdGhTY3JvbGxiYXIsXG4gICAgZmxhdHRlbkNvbHVtbnM6IGZsYXR0ZW5Db2x1bW5zV2l0aFNjcm9sbGJhclxuICB9KSkpKTtcbn0pO1xuRml4ZWRIZWFkZXIuZGlzcGxheU5hbWUgPSAnRml4ZWRIZWFkZXInO1xuZXhwb3J0IGRlZmF1bHQgRml4ZWRIZWFkZXI7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xudmFyIEJvZHlDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5leHBvcnQgZGVmYXVsdCBCb2R5Q29udGV4dDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ2VsbCBmcm9tICcuLi9DZWxsJztcbmltcG9ydCBUYWJsZUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9UYWJsZUNvbnRleHQnO1xuXG5mdW5jdGlvbiBFeHBhbmRlZFJvdyhfcmVmKSB7XG4gIHZhciBwcmVmaXhDbHMgPSBfcmVmLnByZWZpeENscyxcbiAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICAgIENvbXBvbmVudCA9IF9yZWYuY29tcG9uZW50LFxuICAgICAgY2VsbENvbXBvbmVudCA9IF9yZWYuY2VsbENvbXBvbmVudCxcbiAgICAgIGZpeEhlYWRlciA9IF9yZWYuZml4SGVhZGVyLFxuICAgICAgZml4Q29sdW1uID0gX3JlZi5maXhDb2x1bW4sXG4gICAgICBob3Jpem9uU2Nyb2xsID0gX3JlZi5ob3Jpem9uU2Nyb2xsLFxuICAgICAgY2xhc3NOYW1lID0gX3JlZi5jbGFzc05hbWUsXG4gICAgICBleHBhbmRlZCA9IF9yZWYuZXhwYW5kZWQsXG4gICAgICBjb21wb25lbnRXaWR0aCA9IF9yZWYuY29tcG9uZW50V2lkdGgsXG4gICAgICBjb2xTcGFuID0gX3JlZi5jb2xTcGFuO1xuXG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVGFibGVDb250ZXh0KSxcbiAgICAgIHNjcm9sbGJhclNpemUgPSBfUmVhY3QkdXNlQ29udGV4dC5zY3JvbGxiYXJTaXplOyAvLyBDYWNoZSByZW5kZXIgbm9kZVxuXG5cbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBjb250ZW50Tm9kZSA9IGNoaWxkcmVuO1xuXG4gICAgaWYgKGZpeENvbHVtbikge1xuICAgICAgY29udGVudE5vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgd2lkdGg6IGNvbXBvbmVudFdpZHRoIC0gKGZpeEhlYWRlciA/IHNjcm9sbGJhclNpemUgOiAwKSxcbiAgICAgICAgICBwb3NpdGlvbjogJ3N0aWNreScsXG4gICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWV4cGFuZGVkLXJvdy1maXhlZFwiKVxuICAgICAgfSwgY29udGVudE5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZGlzcGxheTogZXhwYW5kZWQgPyBudWxsIDogJ25vbmUnXG4gICAgICB9XG4gICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ2VsbCwge1xuICAgICAgY29tcG9uZW50OiBjZWxsQ29tcG9uZW50LFxuICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICBjb2xTcGFuOiBjb2xTcGFuXG4gICAgfSwgY29udGVudE5vZGUpKTtcbiAgfSwgW2NoaWxkcmVuLCBDb21wb25lbnQsIGZpeEhlYWRlciwgaG9yaXpvblNjcm9sbCwgY2xhc3NOYW1lLCBleHBhbmRlZCwgY29tcG9uZW50V2lkdGgsIGNvbFNwYW4sIHNjcm9sbGJhclNpemVdKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXhwYW5kZWRSb3c7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBDZWxsIGZyb20gJy4uL0NlbGwnO1xuaW1wb3J0IFRhYmxlQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1RhYmxlQ29udGV4dCc7XG5pbXBvcnQgQm9keUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9Cb2R5Q29udGV4dCc7XG5pbXBvcnQgeyBnZXRDb2x1bW5zS2V5IH0gZnJvbSAnLi4vdXRpbHMvdmFsdWVVdGlsJztcbmltcG9ydCBFeHBhbmRlZFJvdyBmcm9tICcuL0V4cGFuZGVkUm93JztcblxuZnVuY3Rpb24gQm9keVJvdyhwcm9wcykge1xuICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgc3R5bGUgPSBwcm9wcy5zdHlsZSxcbiAgICAgIHJlY29yZCA9IHByb3BzLnJlY29yZCxcbiAgICAgIGluZGV4ID0gcHJvcHMuaW5kZXgsXG4gICAgICByb3dLZXkgPSBwcm9wcy5yb3dLZXksXG4gICAgICBnZXRSb3dLZXkgPSBwcm9wcy5nZXRSb3dLZXksXG4gICAgICByb3dFeHBhbmRhYmxlID0gcHJvcHMucm93RXhwYW5kYWJsZSxcbiAgICAgIGV4cGFuZGVkS2V5cyA9IHByb3BzLmV4cGFuZGVkS2V5cyxcbiAgICAgIG9uUm93ID0gcHJvcHMub25Sb3csXG4gICAgICBfcHJvcHMkaW5kZW50ID0gcHJvcHMuaW5kZW50LFxuICAgICAgaW5kZW50ID0gX3Byb3BzJGluZGVudCA9PT0gdm9pZCAwID8gMCA6IF9wcm9wcyRpbmRlbnQsXG4gICAgICBSb3dDb21wb25lbnQgPSBwcm9wcy5yb3dDb21wb25lbnQsXG4gICAgICBjZWxsQ29tcG9uZW50ID0gcHJvcHMuY2VsbENvbXBvbmVudCxcbiAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZSA9IHByb3BzLmNoaWxkcmVuQ29sdW1uTmFtZTtcblxuICB2YXIgX1JlYWN0JHVzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KFRhYmxlQ29udGV4dCksXG4gICAgICBwcmVmaXhDbHMgPSBfUmVhY3QkdXNlQ29udGV4dC5wcmVmaXhDbHMsXG4gICAgICBmaXhlZEluZm9MaXN0ID0gX1JlYWN0JHVzZUNvbnRleHQuZml4ZWRJbmZvTGlzdDtcblxuICB2YXIgX1JlYWN0JHVzZUNvbnRleHQyID0gUmVhY3QudXNlQ29udGV4dChCb2R5Q29udGV4dCksXG4gICAgICBmaXhIZWFkZXIgPSBfUmVhY3QkdXNlQ29udGV4dDIuZml4SGVhZGVyLFxuICAgICAgZml4Q29sdW1uID0gX1JlYWN0JHVzZUNvbnRleHQyLmZpeENvbHVtbixcbiAgICAgIGhvcml6b25TY3JvbGwgPSBfUmVhY3QkdXNlQ29udGV4dDIuaG9yaXpvblNjcm9sbCxcbiAgICAgIGNvbXBvbmVudFdpZHRoID0gX1JlYWN0JHVzZUNvbnRleHQyLmNvbXBvbmVudFdpZHRoLFxuICAgICAgZmxhdHRlbkNvbHVtbnMgPSBfUmVhY3QkdXNlQ29udGV4dDIuZmxhdHRlbkNvbHVtbnMsXG4gICAgICBleHBhbmRhYmxlVHlwZSA9IF9SZWFjdCR1c2VDb250ZXh0Mi5leHBhbmRhYmxlVHlwZSxcbiAgICAgIGV4cGFuZFJvd0J5Q2xpY2sgPSBfUmVhY3QkdXNlQ29udGV4dDIuZXhwYW5kUm93QnlDbGljayxcbiAgICAgIG9uVHJpZ2dlckV4cGFuZCA9IF9SZWFjdCR1c2VDb250ZXh0Mi5vblRyaWdnZXJFeHBhbmQsXG4gICAgICByb3dDbGFzc05hbWUgPSBfUmVhY3QkdXNlQ29udGV4dDIucm93Q2xhc3NOYW1lLFxuICAgICAgZXhwYW5kZWRSb3dDbGFzc05hbWUgPSBfUmVhY3QkdXNlQ29udGV4dDIuZXhwYW5kZWRSb3dDbGFzc05hbWUsXG4gICAgICBpbmRlbnRTaXplID0gX1JlYWN0JHVzZUNvbnRleHQyLmluZGVudFNpemUsXG4gICAgICBleHBhbmRJY29uID0gX1JlYWN0JHVzZUNvbnRleHQyLmV4cGFuZEljb24sXG4gICAgICBleHBhbmRlZFJvd1JlbmRlciA9IF9SZWFjdCR1c2VDb250ZXh0Mi5leHBhbmRlZFJvd1JlbmRlcixcbiAgICAgIGV4cGFuZEljb25Db2x1bW5JbmRleCA9IF9SZWFjdCR1c2VDb250ZXh0Mi5leHBhbmRJY29uQ29sdW1uSW5kZXg7XG5cbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSxcbiAgICAgIF9SZWFjdCR1c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfUmVhY3QkdXNlU3RhdGUsIDIpLFxuICAgICAgZXhwYW5kUmVuZGVkID0gX1JlYWN0JHVzZVN0YXRlMlswXSxcbiAgICAgIHNldEV4cGFuZFJlbmRlZCA9IF9SZWFjdCR1c2VTdGF0ZTJbMV07XG5cbiAgdmFyIGV4cGFuZGVkID0gZXhwYW5kZWRLZXlzICYmIGV4cGFuZGVkS2V5cy5oYXMocHJvcHMucmVjb3JkS2V5KTtcbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZXhwYW5kZWQpIHtcbiAgICAgIHNldEV4cGFuZFJlbmRlZCh0cnVlKTtcbiAgICB9XG4gIH0sIFtleHBhbmRlZF0pO1xuICB2YXIgcm93U3VwcG9ydEV4cGFuZCA9IGV4cGFuZGFibGVUeXBlID09PSAncm93JyAmJiAoIXJvd0V4cGFuZGFibGUgfHwgcm93RXhwYW5kYWJsZShyZWNvcmQpKTsgLy8gT25seSB3aGVuIHJvdyBpcyBub3QgZXhwYW5kYWJsZSBhbmQgYGNoaWxkcmVuYCBleGlzdCBpbiByZWNvcmRcblxuICB2YXIgbmVzdEV4cGFuZGFibGUgPSBleHBhbmRhYmxlVHlwZSA9PT0gJ25lc3QnO1xuICB2YXIgaGFzTmVzdENoaWxkcmVuID0gY2hpbGRyZW5Db2x1bW5OYW1lICYmIHJlY29yZCAmJiByZWNvcmRbY2hpbGRyZW5Db2x1bW5OYW1lXTtcbiAgdmFyIG1lcmdlZEV4cGFuZGFibGUgPSByb3dTdXBwb3J0RXhwYW5kIHx8IG5lc3RFeHBhbmRhYmxlOyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gb25Sb3cgPT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIGFkZGl0aW9uYWxQcm9wcztcblxuICBpZiAob25Sb3cpIHtcbiAgICBhZGRpdGlvbmFsUHJvcHMgPSBvblJvdyhyZWNvcmQsIGluZGV4KTtcbiAgfVxuXG4gIHZhciBvbkNsaWNrID0gZnVuY3Rpb24gb25DbGljayhldmVudCkge1xuICAgIGlmIChleHBhbmRSb3dCeUNsaWNrICYmIG1lcmdlZEV4cGFuZGFibGUpIHtcbiAgICAgIG9uVHJpZ2dlckV4cGFuZChyZWNvcmQsIGV2ZW50KTtcbiAgICB9XG5cbiAgICBpZiAoYWRkaXRpb25hbFByb3BzICYmIGFkZGl0aW9uYWxQcm9wcy5vbkNsaWNrKSB7XG4gICAgICB2YXIgX2FkZGl0aW9uYWxQcm9wcztcblxuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgIH1cblxuICAgICAgKF9hZGRpdGlvbmFsUHJvcHMgPSBhZGRpdGlvbmFsUHJvcHMpLm9uQ2xpY2suYXBwbHkoX2FkZGl0aW9uYWxQcm9wcywgW2V2ZW50XS5jb25jYXQoYXJncykpO1xuICAgIH1cbiAgfTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09IEJhc2UgdHIgcm93ID09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbiAgdmFyIGNvbXB1dGVSb3dDbGFzc05hbWU7XG5cbiAgaWYgKHR5cGVvZiByb3dDbGFzc05hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgY29tcHV0ZVJvd0NsYXNzTmFtZSA9IHJvd0NsYXNzTmFtZTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygcm93Q2xhc3NOYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29tcHV0ZVJvd0NsYXNzTmFtZSA9IHJvd0NsYXNzTmFtZShyZWNvcmQsIGluZGV4LCBpbmRlbnQpO1xuICB9XG5cbiAgdmFyIGNvbHVtbnNLZXkgPSBnZXRDb2x1bW5zS2V5KGZsYXR0ZW5Db2x1bW5zKTtcbiAgdmFyIGJhc2VSb3dOb2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUm93Q29tcG9uZW50LCBfZXh0ZW5kcyh7fSwgYWRkaXRpb25hbFByb3BzLCB7XG4gICAgXCJkYXRhLXJvdy1rZXlcIjogcm93S2V5LFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcm93XCIpLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXJvdy1sZXZlbC1cIikuY29uY2F0KGluZGVudCksIGNvbXB1dGVSb3dDbGFzc05hbWUsIGFkZGl0aW9uYWxQcm9wcyAmJiBhZGRpdGlvbmFsUHJvcHMuY2xhc3NOYW1lKSxcbiAgICBzdHlsZTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBzdHlsZSksIGFkZGl0aW9uYWxQcm9wcyA/IGFkZGl0aW9uYWxQcm9wcy5zdHlsZSA6IG51bGwpLFxuICAgIG9uQ2xpY2s6IG9uQ2xpY2tcbiAgfSksIGZsYXR0ZW5Db2x1bW5zLm1hcChmdW5jdGlvbiAoY29sdW1uLCBjb2xJbmRleCkge1xuICAgIHZhciByZW5kZXIgPSBjb2x1bW4ucmVuZGVyLFxuICAgICAgICBkYXRhSW5kZXggPSBjb2x1bW4uZGF0YUluZGV4LFxuICAgICAgICBjb2x1bW5DbGFzc05hbWUgPSBjb2x1bW4uY2xhc3NOYW1lO1xuICAgIHZhciBrZXkgPSBjb2x1bW5zS2V5W2NvbEluZGV4XTtcbiAgICB2YXIgZml4ZWRJbmZvID0gZml4ZWRJbmZvTGlzdFtjb2xJbmRleF07IC8vID09PT09PT09PT09PT0gVXNlZCBmb3IgbmVzdCBleHBhbmRhYmxlID09PT09PT09PT09PT1cblxuICAgIHZhciBhcHBlbmRDZWxsTm9kZTtcblxuICAgIGlmIChjb2xJbmRleCA9PT0gKGV4cGFuZEljb25Db2x1bW5JbmRleCB8fCAwKSAmJiBuZXN0RXhwYW5kYWJsZSkge1xuICAgICAgYXBwZW5kQ2VsbE5vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBwYWRkaW5nTGVmdDogXCJcIi5jb25jYXQoaW5kZW50U2l6ZSAqIGluZGVudCwgXCJweFwiKVxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcm93LWluZGVudCBpbmRlbnQtbGV2ZWwtXCIpLmNvbmNhdChpbmRlbnQpXG4gICAgICB9KSwgZXhwYW5kSWNvbih7XG4gICAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICAgIGV4cGFuZGFibGU6IGhhc05lc3RDaGlsZHJlbixcbiAgICAgICAgcmVjb3JkOiByZWNvcmQsXG4gICAgICAgIG9uRXhwYW5kOiBvblRyaWdnZXJFeHBhbmRcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICB2YXIgYWRkaXRpb25hbENlbGxQcm9wcztcblxuICAgIGlmIChjb2x1bW4ub25DZWxsKSB7XG4gICAgICBhZGRpdGlvbmFsQ2VsbFByb3BzID0gY29sdW1uLm9uQ2VsbChyZWNvcmQsIGluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ2VsbCwgX2V4dGVuZHMoe1xuICAgICAgY2xhc3NOYW1lOiBjb2x1bW5DbGFzc05hbWUsXG4gICAgICBlbGxpcHNpczogY29sdW1uLmVsbGlwc2lzLFxuICAgICAgYWxpZ246IGNvbHVtbi5hbGlnbixcbiAgICAgIGNvbXBvbmVudDogY2VsbENvbXBvbmVudCxcbiAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAga2V5OiBrZXksXG4gICAgICByZWNvcmQ6IHJlY29yZCxcbiAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgIGRhdGFJbmRleDogZGF0YUluZGV4LFxuICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICBzaG91bGRDZWxsVXBkYXRlOiBjb2x1bW4uc2hvdWxkQ2VsbFVwZGF0ZVxuICAgIH0sIGZpeGVkSW5mbywge1xuICAgICAgYXBwZW5kTm9kZTogYXBwZW5kQ2VsbE5vZGUsXG4gICAgICBhZGRpdGlvbmFsUHJvcHM6IGFkZGl0aW9uYWxDZWxsUHJvcHNcbiAgICB9KSk7XG4gIH0pKTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09IEV4cGFuZCBSb3cgPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBleHBhbmRSb3dOb2RlO1xuXG4gIGlmIChyb3dTdXBwb3J0RXhwYW5kICYmIChleHBhbmRSZW5kZWQgfHwgZXhwYW5kZWQpKSB7XG4gICAgdmFyIGV4cGFuZENvbnRlbnQgPSBleHBhbmRlZFJvd1JlbmRlcihyZWNvcmQsIGluZGV4LCBpbmRlbnQgKyAxLCBleHBhbmRlZCk7XG4gICAgdmFyIGNvbXB1dGVkRXhwYW5kZWRSb3dDbGFzc05hbWUgPSBleHBhbmRlZFJvd0NsYXNzTmFtZSAmJiBleHBhbmRlZFJvd0NsYXNzTmFtZShyZWNvcmQsIGluZGV4LCBpbmRlbnQpO1xuICAgIGV4cGFuZFJvd05vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRlZFJvdywge1xuICAgICAgZXhwYW5kZWQ6IGV4cGFuZGVkLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZXhwYW5kZWQtcm93XCIpLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWV4cGFuZGVkLXJvdy1sZXZlbC1cIikuY29uY2F0KGluZGVudCArIDEpLCBjb21wdXRlZEV4cGFuZGVkUm93Q2xhc3NOYW1lKSxcbiAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgZml4SGVhZGVyOiBmaXhIZWFkZXIsXG4gICAgICBmaXhDb2x1bW46IGZpeENvbHVtbixcbiAgICAgIGhvcml6b25TY3JvbGw6IGhvcml6b25TY3JvbGwsXG4gICAgICBjb21wb25lbnQ6IFJvd0NvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFdpZHRoOiBjb21wb25lbnRXaWR0aCxcbiAgICAgIGNlbGxDb21wb25lbnQ6IGNlbGxDb21wb25lbnQsXG4gICAgICBjb2xTcGFuOiBmbGF0dGVuQ29sdW1ucy5sZW5ndGhcbiAgICB9LCBleHBhbmRDb250ZW50KTtcbiAgfSAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09IE5lc3QgUm93ID09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuICB2YXIgbmVzdFJvd05vZGU7XG5cbiAgaWYgKGhhc05lc3RDaGlsZHJlbiAmJiBleHBhbmRlZCkge1xuICAgIG5lc3RSb3dOb2RlID0gKHJlY29yZFtjaGlsZHJlbkNvbHVtbk5hbWVdIHx8IFtdKS5tYXAoZnVuY3Rpb24gKHN1YlJlY29yZCwgc3ViSW5kZXgpIHtcbiAgICAgIHZhciBzdWJLZXkgPSBnZXRSb3dLZXkoc3ViUmVjb3JkLCBzdWJJbmRleCk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQm9keVJvdywgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIGtleTogc3ViS2V5LFxuICAgICAgICByb3dLZXk6IHN1YktleSxcbiAgICAgICAgcmVjb3JkOiBzdWJSZWNvcmQsXG4gICAgICAgIHJlY29yZEtleTogc3ViS2V5LFxuICAgICAgICBpbmRleDogc3ViSW5kZXgsXG4gICAgICAgIGluZGVudDogaW5kZW50ICsgMVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBiYXNlUm93Tm9kZSwgZXhwYW5kUm93Tm9kZSwgbmVzdFJvd05vZGUpO1xufVxuXG5Cb2R5Um93LmRpc3BsYXlOYW1lID0gJ0JvZHlSb3cnO1xuZXhwb3J0IGRlZmF1bHQgQm9keVJvdzsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG52YXIgUmVzaXplQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuZXhwb3J0IGRlZmF1bHQgUmVzaXplQ29udGV4dDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVzaXplT2JzZXJ2ZXIgZnJvbSAncmMtcmVzaXplLW9ic2VydmVyJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1lYXN1cmVDZWxsKF9yZWYpIHtcbiAgdmFyIGNvbHVtbktleSA9IF9yZWYuY29sdW1uS2V5LFxuICAgICAgb25Db2x1bW5SZXNpemUgPSBfcmVmLm9uQ29sdW1uUmVzaXplO1xuICB2YXIgY2VsbFJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmIChjZWxsUmVmLmN1cnJlbnQpIHtcbiAgICAgIG9uQ29sdW1uUmVzaXplKGNvbHVtbktleSwgY2VsbFJlZi5jdXJyZW50Lm9mZnNldFdpZHRoKTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlc2l6ZU9ic2VydmVyLCB7XG4gICAgb25SZXNpemU6IGZ1bmN0aW9uIG9uUmVzaXplKF9yZWYyKSB7XG4gICAgICB2YXIgb2Zmc2V0V2lkdGggPSBfcmVmMi5vZmZzZXRXaWR0aDtcbiAgICAgIG9uQ29sdW1uUmVzaXplKGNvbHVtbktleSwgb2Zmc2V0V2lkdGgpO1xuICAgIH1cbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ0ZFwiLCB7XG4gICAgcmVmOiBjZWxsUmVmLFxuICAgIHN0eWxlOiB7XG4gICAgICBwYWRkaW5nOiAwLFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfVxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgc3R5bGU6IHtcbiAgICAgIGhlaWdodDogMCxcbiAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ1xuICAgIH1cbiAgfSwgXCJcXHhBMFwiKSkpO1xufSIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCb2R5Um93IGZyb20gJy4vQm9keVJvdyc7XG5pbXBvcnQgVGFibGVDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvVGFibGVDb250ZXh0JztcbmltcG9ydCBFeHBhbmRlZFJvdyBmcm9tICcuL0V4cGFuZGVkUm93JztcbmltcG9ydCBCb2R5Q29udGV4dCBmcm9tICcuLi9jb250ZXh0L0JvZHlDb250ZXh0JztcbmltcG9ydCB7IGdldENvbHVtbnNLZXkgfSBmcm9tICcuLi91dGlscy92YWx1ZVV0aWwnO1xuaW1wb3J0IFJlc2l6ZUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9SZXNpemVDb250ZXh0JztcbmltcG9ydCBNZWFzdXJlQ2VsbCBmcm9tICcuL01lYXN1cmVDZWxsJztcblxuZnVuY3Rpb24gQm9keShfcmVmKSB7XG4gIHZhciBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgZ2V0Um93S2V5ID0gX3JlZi5nZXRSb3dLZXksXG4gICAgICBtZWFzdXJlQ29sdW1uV2lkdGggPSBfcmVmLm1lYXN1cmVDb2x1bW5XaWR0aCxcbiAgICAgIGV4cGFuZGVkS2V5cyA9IF9yZWYuZXhwYW5kZWRLZXlzLFxuICAgICAgb25Sb3cgPSBfcmVmLm9uUm93LFxuICAgICAgcm93RXhwYW5kYWJsZSA9IF9yZWYucm93RXhwYW5kYWJsZSxcbiAgICAgIGVtcHR5Tm9kZSA9IF9yZWYuZW1wdHlOb2RlLFxuICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lID0gX3JlZi5jaGlsZHJlbkNvbHVtbk5hbWU7XG5cbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChSZXNpemVDb250ZXh0KSxcbiAgICAgIG9uQ29sdW1uUmVzaXplID0gX1JlYWN0JHVzZUNvbnRleHQub25Db2x1bW5SZXNpemU7XG5cbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0MiA9IFJlYWN0LnVzZUNvbnRleHQoVGFibGVDb250ZXh0KSxcbiAgICAgIHByZWZpeENscyA9IF9SZWFjdCR1c2VDb250ZXh0Mi5wcmVmaXhDbHMsXG4gICAgICBnZXRDb21wb25lbnQgPSBfUmVhY3QkdXNlQ29udGV4dDIuZ2V0Q29tcG9uZW50O1xuXG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dDMgPSBSZWFjdC51c2VDb250ZXh0KEJvZHlDb250ZXh0KSxcbiAgICAgIGZpeEhlYWRlciA9IF9SZWFjdCR1c2VDb250ZXh0My5maXhIZWFkZXIsXG4gICAgICBob3Jpem9uU2Nyb2xsID0gX1JlYWN0JHVzZUNvbnRleHQzLmhvcml6b25TY3JvbGwsXG4gICAgICBmbGF0dGVuQ29sdW1ucyA9IF9SZWFjdCR1c2VDb250ZXh0My5mbGF0dGVuQ29sdW1ucyxcbiAgICAgIGNvbXBvbmVudFdpZHRoID0gX1JlYWN0JHVzZUNvbnRleHQzLmNvbXBvbmVudFdpZHRoO1xuXG4gIHJldHVybiBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgV3JhcHBlckNvbXBvbmVudCA9IGdldENvbXBvbmVudChbJ2JvZHknLCAnd3JhcHBlciddLCAndGJvZHknKTtcbiAgICB2YXIgdHJDb21wb25lbnQgPSBnZXRDb21wb25lbnQoWydib2R5JywgJ3JvdyddLCAndHInKTtcbiAgICB2YXIgdGRDb21wb25lbnQgPSBnZXRDb21wb25lbnQoWydib2R5JywgJ2NlbGwnXSwgJ3RkJyk7XG4gICAgdmFyIHJvd3M7XG5cbiAgICBpZiAoZGF0YS5sZW5ndGgpIHtcbiAgICAgIHJvd3MgPSBkYXRhLm1hcChmdW5jdGlvbiAocmVjb3JkLCBpbmRleCkge1xuICAgICAgICB2YXIga2V5ID0gZ2V0Um93S2V5KHJlY29yZCwgaW5kZXgpO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQm9keVJvdywge1xuICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgIHJvd0tleToga2V5LFxuICAgICAgICAgIHJlY29yZDogcmVjb3JkLFxuICAgICAgICAgIHJlY29yZEtleToga2V5LFxuICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICByb3dDb21wb25lbnQ6IHRyQ29tcG9uZW50LFxuICAgICAgICAgIGNlbGxDb21wb25lbnQ6IHRkQ29tcG9uZW50LFxuICAgICAgICAgIGV4cGFuZGVkS2V5czogZXhwYW5kZWRLZXlzLFxuICAgICAgICAgIG9uUm93OiBvblJvdyxcbiAgICAgICAgICBnZXRSb3dLZXk6IGdldFJvd0tleSxcbiAgICAgICAgICByb3dFeHBhbmRhYmxlOiByb3dFeHBhbmRhYmxlLFxuICAgICAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZTogY2hpbGRyZW5Db2x1bW5OYW1lXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvd3MgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRlZFJvdywge1xuICAgICAgICBleHBhbmRlZDogdHJ1ZSxcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXBsYWNlaG9sZGVyXCIpLFxuICAgICAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgICAgZml4SGVhZGVyOiBmaXhIZWFkZXIsXG4gICAgICAgIGZpeENvbHVtbjogaG9yaXpvblNjcm9sbCxcbiAgICAgICAgaG9yaXpvblNjcm9sbDogaG9yaXpvblNjcm9sbCxcbiAgICAgICAgY29tcG9uZW50OiB0ckNvbXBvbmVudCxcbiAgICAgICAgY29tcG9uZW50V2lkdGg6IGNvbXBvbmVudFdpZHRoLFxuICAgICAgICBjZWxsQ29tcG9uZW50OiB0ZENvbXBvbmVudCxcbiAgICAgICAgY29sU3BhbjogZmxhdHRlbkNvbHVtbnMubGVuZ3RoXG4gICAgICB9LCBlbXB0eU5vZGUpO1xuICAgIH1cblxuICAgIHZhciBjb2x1bW5zS2V5ID0gZ2V0Q29sdW1uc0tleShmbGF0dGVuQ29sdW1ucyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFdyYXBwZXJDb21wb25lbnQsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi10Ym9keVwiKVxuICAgIH0sIG1lYXN1cmVDb2x1bW5XaWR0aCAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInRyXCIsIHtcbiAgICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsXG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbWVhc3VyZS1yb3dcIiksXG4gICAgICBzdHlsZToge1xuICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIGZvbnRTaXplOiAwXG4gICAgICB9XG4gICAgfSwgY29sdW1uc0tleS5tYXAoZnVuY3Rpb24gKGNvbHVtbktleSkge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE1lYXN1cmVDZWxsLCB7XG4gICAgICAgIGtleTogY29sdW1uS2V5LFxuICAgICAgICBjb2x1bW5LZXk6IGNvbHVtbktleSxcbiAgICAgICAgb25Db2x1bW5SZXNpemU6IG9uQ29sdW1uUmVzaXplXG4gICAgICB9KTtcbiAgICB9KSksIHJvd3MpO1xuICB9LCBbZGF0YSwgcHJlZml4Q2xzLCBvblJvdywgbWVhc3VyZUNvbHVtbldpZHRoLCBleHBhbmRlZEtleXMsIGdldFJvd0tleSwgZ2V0Q29tcG9uZW50LCBjb21wb25lbnRXaWR0aCwgZW1wdHlOb2RlLCBmbGF0dGVuQ29sdW1uc10pO1xufVxuXG52YXIgTWVtb0JvZHkgPSAvKiNfX1BVUkVfXyovUmVhY3QubWVtbyhCb2R5KTtcbk1lbW9Cb2R5LmRpc3BsYXlOYW1lID0gJ0JvZHknO1xuZXhwb3J0IGRlZmF1bHQgTWVtb0JvZHk7IiwiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5XCI7XG5pbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB3YXJuaW5nIGZyb20gXCJyYy11dGlsL2VzL3dhcm5pbmdcIjtcbmltcG9ydCB0b0FycmF5IGZyb20gXCJyYy11dGlsL2VzL0NoaWxkcmVuL3RvQXJyYXlcIjtcbmltcG9ydCB7IElOVEVSTkFMX0NPTF9ERUZJTkUgfSBmcm9tICcuLi91dGlscy9sZWdhY3lVdGlsJztcbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0Q2hpbGRyZW5Ub0NvbHVtbnMoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIHRvQXJyYXkoY2hpbGRyZW4pLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQobm9kZSk7XG4gIH0pLm1hcChmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBrZXkgPSBfcmVmLmtleSxcbiAgICAgICAgcHJvcHMgPSBfcmVmLnByb3BzO1xuXG4gICAgdmFyIG5vZGVDaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIFtcImNoaWxkcmVuXCJdKTtcblxuICAgIHZhciBjb2x1bW4gPSBfb2JqZWN0U3ByZWFkKHtcbiAgICAgIGtleToga2V5XG4gICAgfSwgcmVzdFByb3BzKTtcblxuICAgIGlmIChub2RlQ2hpbGRyZW4pIHtcbiAgICAgIGNvbHVtbi5jaGlsZHJlbiA9IGNvbnZlcnRDaGlsZHJlblRvQ29sdW1ucyhub2RlQ2hpbGRyZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBjb2x1bW47XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmbGF0Q29sdW1ucyhjb2x1bW5zKSB7XG4gIHJldHVybiBjb2x1bW5zLnJlZHVjZShmdW5jdGlvbiAobGlzdCwgY29sdW1uKSB7XG4gICAgdmFyIGZpeGVkID0gY29sdW1uLmZpeGVkOyAvLyBDb252ZXJ0IGBmaXhlZD0ndHJ1ZSdgIHRvIGBmaXhlZD0nbGVmdCdgIGluc3RlYWRcblxuICAgIHZhciBwYXJzZWRGaXhlZCA9IGZpeGVkID09PSB0cnVlID8gJ2xlZnQnIDogZml4ZWQ7XG4gICAgdmFyIHN1YkNvbHVtbnMgPSBjb2x1bW4uY2hpbGRyZW47XG5cbiAgICBpZiAoc3ViQ29sdW1ucyAmJiBzdWJDb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGxpc3QpLCBfdG9Db25zdW1hYmxlQXJyYXkoZmxhdENvbHVtbnMoc3ViQ29sdW1ucykubWFwKGZ1bmN0aW9uIChzdWJDb2x1bSkge1xuICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgZml4ZWQ6IHBhcnNlZEZpeGVkXG4gICAgICAgIH0sIHN1YkNvbHVtKTtcbiAgICAgIH0pKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkobGlzdCksIFtfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGNvbHVtbiksIHt9LCB7XG4gICAgICBmaXhlZDogcGFyc2VkRml4ZWRcbiAgICB9KV0pO1xuICB9LCBbXSk7XG59XG5cbmZ1bmN0aW9uIHdhcm5pbmdGaXhlZChmbGF0dGVuQ29sdW1ucykge1xuICB2YXIgYWxsRml4TGVmdCA9IHRydWU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbGF0dGVuQ29sdW1ucy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIHZhciBjb2wgPSBmbGF0dGVuQ29sdW1uc1tpXTtcblxuICAgIGlmIChhbGxGaXhMZWZ0ICYmIGNvbC5maXhlZCAhPT0gJ2xlZnQnKSB7XG4gICAgICBhbGxGaXhMZWZ0ID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghYWxsRml4TGVmdCAmJiBjb2wuZml4ZWQgPT09ICdsZWZ0Jykge1xuICAgICAgd2FybmluZyhmYWxzZSwgXCJJbmRleCBcIi5jb25jYXQoaSAtIDEsIFwiIG9mIGBjb2x1bW5zYCBtaXNzaW5nIGBmaXhlZD0nbGVmdCdgIHByb3AuXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHZhciBhbGxGaXhSaWdodCA9IHRydWU7XG5cbiAgZm9yICh2YXIgX2kgPSBmbGF0dGVuQ29sdW1ucy5sZW5ndGggLSAxOyBfaSA+PSAwOyBfaSAtPSAxKSB7XG4gICAgdmFyIF9jb2wgPSBmbGF0dGVuQ29sdW1uc1tfaV07XG5cbiAgICBpZiAoYWxsRml4UmlnaHQgJiYgX2NvbC5maXhlZCAhPT0gJ3JpZ2h0Jykge1xuICAgICAgYWxsRml4UmlnaHQgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKCFhbGxGaXhSaWdodCAmJiBfY29sLmZpeGVkID09PSAncmlnaHQnKSB7XG4gICAgICB3YXJuaW5nKGZhbHNlLCBcIkluZGV4IFwiLmNvbmNhdChfaSArIDEsIFwiIG9mIGBjb2x1bW5zYCBtaXNzaW5nIGBmaXhlZD0ncmlnaHQnYCBwcm9wLlwiKSk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmV2ZXJ0Rm9yUnRsKGNvbHVtbnMpIHtcbiAgcmV0dXJuIGNvbHVtbnMubWFwKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICB2YXIgZml4ZWQgPSBjb2x1bW4uZml4ZWQsXG4gICAgICAgIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhjb2x1bW4sIFtcImZpeGVkXCJdKTsgLy8gQ29udmVydCBgZml4ZWQ9J2xlZnQnYCB0byBgZml4ZWQ9J3JpZ2h0J2AgaW5zdGVhZFxuXG5cbiAgICB2YXIgcGFyc2VkRml4ZWQgPSBmaXhlZDtcblxuICAgIGlmIChmaXhlZCA9PT0gJ2xlZnQnKSB7XG4gICAgICBwYXJzZWRGaXhlZCA9ICdyaWdodCc7XG4gICAgfSBlbHNlIGlmIChmaXhlZCA9PT0gJ3JpZ2h0Jykge1xuICAgICAgcGFyc2VkRml4ZWQgPSAnbGVmdCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgICAgZml4ZWQ6IHBhcnNlZEZpeGVkXG4gICAgfSwgcmVzdFByb3BzKTtcbiAgfSk7XG59XG4vKipcbiAqIFBhcnNlIGBjb2x1bW5zYCAmIGBjaGlsZHJlbmAgaW50byBgY29sdW1uc2AuXG4gKi9cblxuXG5mdW5jdGlvbiB1c2VDb2x1bW5zKF9yZWYyLCB0cmFuc2Zvcm1Db2x1bW5zKSB7XG4gIHZhciBwcmVmaXhDbHMgPSBfcmVmMi5wcmVmaXhDbHMsXG4gICAgICBjb2x1bW5zID0gX3JlZjIuY29sdW1ucyxcbiAgICAgIGNoaWxkcmVuID0gX3JlZjIuY2hpbGRyZW4sXG4gICAgICBleHBhbmRhYmxlID0gX3JlZjIuZXhwYW5kYWJsZSxcbiAgICAgIGV4cGFuZGVkS2V5cyA9IF9yZWYyLmV4cGFuZGVkS2V5cyxcbiAgICAgIGdldFJvd0tleSA9IF9yZWYyLmdldFJvd0tleSxcbiAgICAgIG9uVHJpZ2dlckV4cGFuZCA9IF9yZWYyLm9uVHJpZ2dlckV4cGFuZCxcbiAgICAgIGV4cGFuZEljb24gPSBfcmVmMi5leHBhbmRJY29uLFxuICAgICAgcm93RXhwYW5kYWJsZSA9IF9yZWYyLnJvd0V4cGFuZGFibGUsXG4gICAgICBleHBhbmRJY29uQ29sdW1uSW5kZXggPSBfcmVmMi5leHBhbmRJY29uQ29sdW1uSW5kZXgsXG4gICAgICBkaXJlY3Rpb24gPSBfcmVmMi5kaXJlY3Rpb24sXG4gICAgICBleHBhbmRSb3dCeUNsaWNrID0gX3JlZjIuZXhwYW5kUm93QnlDbGljayxcbiAgICAgIGNvbHVtbldpZHRoID0gX3JlZjIuY29sdW1uV2lkdGg7XG4gIHZhciBiYXNlQ29sdW1ucyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjb2x1bW5zIHx8IGNvbnZlcnRDaGlsZHJlblRvQ29sdW1ucyhjaGlsZHJlbik7XG4gIH0sIFtjb2x1bW5zLCBjaGlsZHJlbl0pOyAvLyBBZGQgZXhwYW5kIGNvbHVtblxuXG4gIHZhciB3aXRoRXhwYW5kQ29sdW1ucyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIGlmIChleHBhbmRhYmxlKSB7XG4gICAgICB2YXIgX2V4cGFuZENvbHVtbjtcblxuICAgICAgdmFyIGV4cGFuZENvbEluZGV4ID0gZXhwYW5kSWNvbkNvbHVtbkluZGV4IHx8IDA7XG4gICAgICB2YXIgcHJldkNvbHVtbiA9IGJhc2VDb2x1bW5zW2V4cGFuZENvbEluZGV4XTtcbiAgICAgIHZhciBleHBhbmRDb2x1bW4gPSAoX2V4cGFuZENvbHVtbiA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2V4cGFuZENvbHVtbiwgSU5URVJOQUxfQ09MX0RFRklORSwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZXhwYW5kLWljb24tY29sXCIpXG4gICAgICB9KSwgX2RlZmluZVByb3BlcnR5KF9leHBhbmRDb2x1bW4sIFwidGl0bGVcIiwgJycpLCBfZGVmaW5lUHJvcGVydHkoX2V4cGFuZENvbHVtbiwgXCJmaXhlZFwiLCBwcmV2Q29sdW1uID8gcHJldkNvbHVtbi5maXhlZCA6IG51bGwpLCBfZGVmaW5lUHJvcGVydHkoX2V4cGFuZENvbHVtbiwgXCJjbGFzc05hbWVcIiwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1yb3ctZXhwYW5kLWljb24tY2VsbFwiKSksIF9kZWZpbmVQcm9wZXJ0eShfZXhwYW5kQ29sdW1uLCBcIndpZHRoXCIsIGNvbHVtbldpZHRoKSwgX2RlZmluZVByb3BlcnR5KF9leHBhbmRDb2x1bW4sIFwicmVuZGVyXCIsIGZ1bmN0aW9uIHJlbmRlcihfLCByZWNvcmQsIGluZGV4KSB7XG4gICAgICAgIHZhciByb3dLZXkgPSBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCk7XG4gICAgICAgIHZhciBleHBhbmRlZCA9IGV4cGFuZGVkS2V5cy5oYXMocm93S2V5KTtcbiAgICAgICAgdmFyIHJlY29yZEV4cGFuZGFibGUgPSByb3dFeHBhbmRhYmxlID8gcm93RXhwYW5kYWJsZShyZWNvcmQpIDogdHJ1ZTtcbiAgICAgICAgdmFyIGljb24gPSBleHBhbmRJY29uKHtcbiAgICAgICAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICAgICAgZXhwYW5kYWJsZTogcmVjb3JkRXhwYW5kYWJsZSxcbiAgICAgICAgICByZWNvcmQ6IHJlY29yZCxcbiAgICAgICAgICBvbkV4cGFuZDogb25UcmlnZ2VyRXhwYW5kXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChleHBhbmRSb3dCeUNsaWNrKSB7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgaWNvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaWNvbjtcbiAgICAgIH0pLCBfZXhwYW5kQ29sdW1uKTsgLy8gSW5zZXJ0IGV4cGFuZCBjb2x1bW4gaW4gdGhlIHRhcmdldCBwb3NpdGlvblxuXG4gICAgICB2YXIgY2xvbmVDb2x1bW5zID0gYmFzZUNvbHVtbnMuc2xpY2UoKTtcblxuICAgICAgaWYgKGV4cGFuZENvbEluZGV4ID49IDApIHtcbiAgICAgICAgY2xvbmVDb2x1bW5zLnNwbGljZShleHBhbmRDb2xJbmRleCwgMCwgZXhwYW5kQ29sdW1uKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsb25lQ29sdW1ucztcbiAgICB9XG5cbiAgICByZXR1cm4gYmFzZUNvbHVtbnM7XG4gIH0sIFtleHBhbmRhYmxlLCBiYXNlQ29sdW1ucywgZ2V0Um93S2V5LCBleHBhbmRlZEtleXMsIGV4cGFuZEljb24sIGRpcmVjdGlvbl0pO1xuICB2YXIgbWVyZ2VkQ29sdW1ucyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBmaW5hbENvbHVtbnMgPSB3aXRoRXhwYW5kQ29sdW1ucztcblxuICAgIGlmICh0cmFuc2Zvcm1Db2x1bW5zKSB7XG4gICAgICBmaW5hbENvbHVtbnMgPSB0cmFuc2Zvcm1Db2x1bW5zKGZpbmFsQ29sdW1ucyk7XG4gICAgfSAvLyBBbHdheXMgcHJvdmlkZXMgYXQgbGVhc3Qgb25lIGNvbHVtbiBmb3IgdGFibGUgZGlzcGxheVxuXG5cbiAgICBpZiAoIWZpbmFsQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgIGZpbmFsQ29sdW1ucyA9IFt7XG4gICAgICAgIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmluYWxDb2x1bW5zO1xuICB9LCBbdHJhbnNmb3JtQ29sdW1ucywgd2l0aEV4cGFuZENvbHVtbnMsIGRpcmVjdGlvbl0pO1xuICB2YXIgZmxhdHRlbkNvbHVtbnMgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgICAgcmV0dXJuIHJldmVydEZvclJ0bChmbGF0Q29sdW1ucyhtZXJnZWRDb2x1bW5zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZsYXRDb2x1bW5zKG1lcmdlZENvbHVtbnMpO1xuICB9LCBbbWVyZ2VkQ29sdW1ucywgZGlyZWN0aW9uXSk7IC8vIE9ubHkgY2hlY2sgb3V0IG9mIHByb2R1Y3Rpb24gc2luY2UgaXQncyB3YXN0ZSBmb3IgZWFjaCByZW5kZXJcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm5pbmdGaXhlZChmbGF0dGVuQ29sdW1ucyk7XG4gIH1cblxuICByZXR1cm4gW21lcmdlZENvbHVtbnMsIGZsYXR0ZW5Db2x1bW5zXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlQ29sdW1uczsiLCJpbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCB7IHVzZVJlZiwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogRXhlY3V0ZSBjb2RlIGJlZm9yZSBuZXh0IGZyYW1lIGJ1dCBhc3luY1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VMYXlvdXRTdGF0ZShkZWZhdWx0U3RhdGUpIHtcbiAgdmFyIHN0YXRlUmVmID0gdXNlUmVmKGRlZmF1bHRTdGF0ZSk7XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKHt9KSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgZm9yY2VVcGRhdGUgPSBfdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBsYXN0UHJvbWlzZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgdmFyIHVwZGF0ZUJhdGNoUmVmID0gdXNlUmVmKFtdKTtcblxuICBmdW5jdGlvbiBzZXRGcmFtZVN0YXRlKHVwZGF0ZXIpIHtcbiAgICB1cGRhdGVCYXRjaFJlZi5jdXJyZW50LnB1c2godXBkYXRlcik7XG4gICAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICBsYXN0UHJvbWlzZVJlZi5jdXJyZW50ID0gcHJvbWlzZTtcbiAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGxhc3RQcm9taXNlUmVmLmN1cnJlbnQgPT09IHByb21pc2UpIHtcbiAgICAgICAgdmFyIHByZXZCYXRjaCA9IHVwZGF0ZUJhdGNoUmVmLmN1cnJlbnQ7XG4gICAgICAgIHZhciBwcmV2U3RhdGUgPSBzdGF0ZVJlZi5jdXJyZW50O1xuICAgICAgICB1cGRhdGVCYXRjaFJlZi5jdXJyZW50ID0gW107XG4gICAgICAgIHByZXZCYXRjaC5mb3JFYWNoKGZ1bmN0aW9uIChiYXRjaFVwZGF0ZXIpIHtcbiAgICAgICAgICBzdGF0ZVJlZi5jdXJyZW50ID0gYmF0Y2hVcGRhdGVyKHN0YXRlUmVmLmN1cnJlbnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgbGFzdFByb21pc2VSZWYuY3VycmVudCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHByZXZTdGF0ZSAhPT0gc3RhdGVSZWYuY3VycmVudCkge1xuICAgICAgICAgIGZvcmNlVXBkYXRlKHt9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgbGFzdFByb21pc2VSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfTtcbiAgfSwgW10pO1xuICByZXR1cm4gW3N0YXRlUmVmLmN1cnJlbnQsIHNldEZyYW1lU3RhdGVdO1xufVxuLyoqIExvY2sgZnJhbWUsIHdoZW4gZnJhbWUgcGFzcyByZXNldCB0aGUgbG9jay4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVRpbWVvdXRMb2NrKGRlZmF1bHRTdGF0ZSkge1xuICB2YXIgZnJhbWVSZWYgPSB1c2VSZWYoZGVmYXVsdFN0YXRlIHx8IG51bGwpO1xuICB2YXIgdGltZW91dFJlZiA9IHVzZVJlZigpO1xuXG4gIGZ1bmN0aW9uIGNsZWFuVXAoKSB7XG4gICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBmcmFtZVJlZi5jdXJyZW50ID0gbmV3U3RhdGU7XG4gICAgY2xlYW5VcCgpO1xuICAgIHRpbWVvdXRSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGZyYW1lUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgdGltZW91dFJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRTdGF0ZSgpIHtcbiAgICByZXR1cm4gZnJhbWVSZWYuY3VycmVudDtcbiAgfVxuXG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNsZWFuVXA7XG4gIH0sIFtdKTtcbiAgcmV0dXJuIFtzZXRTdGF0ZSwgZ2V0U3RhdGVdO1xufSIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEdldCBzdGlja3kgY29sdW1uIG9mZnNldCB3aWR0aFxuICovXG5cbmZ1bmN0aW9uIHVzZVN0aWNreU9mZnNldHMoY29sV2lkdGhzLCBjb2x1bW5Db3VudCwgZGlyZWN0aW9uKSB7XG4gIHZhciBzdGlja3lPZmZzZXRzID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlZnRPZmZzZXRzID0gW107XG4gICAgdmFyIHJpZ2h0T2Zmc2V0cyA9IFtdO1xuICAgIHZhciBsZWZ0ID0gMDtcbiAgICB2YXIgcmlnaHQgPSAwO1xuXG4gICAgZm9yICh2YXIgc3RhcnQgPSAwOyBzdGFydCA8IGNvbHVtbkNvdW50OyBzdGFydCArPSAxKSB7XG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgICAgICAvLyBMZWZ0IG9mZnNldFxuICAgICAgICByaWdodE9mZnNldHNbc3RhcnRdID0gcmlnaHQ7XG4gICAgICAgIHJpZ2h0ICs9IGNvbFdpZHRoc1tzdGFydF0gfHwgMDsgLy8gUmlnaHQgb2Zmc2V0XG5cbiAgICAgICAgdmFyIGVuZCA9IGNvbHVtbkNvdW50IC0gc3RhcnQgLSAxO1xuICAgICAgICBsZWZ0T2Zmc2V0c1tlbmRdID0gbGVmdDtcbiAgICAgICAgbGVmdCArPSBjb2xXaWR0aHNbZW5kXSB8fCAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTGVmdCBvZmZzZXRcbiAgICAgICAgbGVmdE9mZnNldHNbc3RhcnRdID0gbGVmdDtcbiAgICAgICAgbGVmdCArPSBjb2xXaWR0aHNbc3RhcnRdIHx8IDA7IC8vIFJpZ2h0IG9mZnNldFxuXG4gICAgICAgIHZhciBfZW5kID0gY29sdW1uQ291bnQgLSBzdGFydCAtIDE7XG5cbiAgICAgICAgcmlnaHRPZmZzZXRzW19lbmRdID0gcmlnaHQ7XG4gICAgICAgIHJpZ2h0ICs9IGNvbFdpZHRoc1tfZW5kXSB8fCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsZWZ0OiBsZWZ0T2Zmc2V0cyxcbiAgICAgIHJpZ2h0OiByaWdodE9mZnNldHNcbiAgICB9O1xuICB9LCBbY29sV2lkdGhzLCBjb2x1bW5Db3VudCwgZGlyZWN0aW9uXSk7XG4gIHJldHVybiBzdGlja3lPZmZzZXRzO1xufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VTdGlja3lPZmZzZXRzOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZnVuY3Rpb24gUGFuZWwoX3JlZikge1xuICB2YXIgY2xhc3NOYW1lID0gX3JlZi5jbGFzc05hbWUsXG4gICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVcbiAgfSwgY2hpbGRyZW4pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBQYW5lbDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVGFibGVDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvVGFibGVDb250ZXh0JztcbmltcG9ydCBDZWxsIGZyb20gJy4vQ2VsbCc7XG5pbXBvcnQgUm93IGZyb20gJy4vUm93JztcblxuZnVuY3Rpb24gRm9vdGVyKF9yZWYpIHtcbiAgdmFyIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcblxuICB2YXIgX1JlYWN0JHVzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KFRhYmxlQ29udGV4dCksXG4gICAgICBwcmVmaXhDbHMgPSBfUmVhY3QkdXNlQ29udGV4dC5wcmVmaXhDbHM7XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidGZvb3RcIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zdW1tYXJ5XCIpXG4gIH0sIGNoaWxkcmVuKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRm9vdGVyO1xuZXhwb3J0IHZhciBGb290ZXJDb21wb25lbnRzID0ge1xuICBDZWxsOiBDZWxsLFxuICBSb3c6IFJvd1xufTsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDZWxsIGZyb20gJy4uL0NlbGwnO1xuaW1wb3J0IFRhYmxlQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1RhYmxlQ29udGV4dCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTdW1tYXJ5Q2VsbChfcmVmKSB7XG4gIHZhciBjbGFzc05hbWUgPSBfcmVmLmNsYXNzTmFtZSxcbiAgICAgIGluZGV4ID0gX3JlZi5pbmRleCxcbiAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICAgIGNvbFNwYW4gPSBfcmVmLmNvbFNwYW4sXG4gICAgICByb3dTcGFuID0gX3JlZi5yb3dTcGFuLFxuICAgICAgYWxpZ24gPSBfcmVmLmFsaWduO1xuXG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVGFibGVDb250ZXh0KSxcbiAgICAgIHByZWZpeENscyA9IF9SZWFjdCR1c2VDb250ZXh0LnByZWZpeENscyxcbiAgICAgIGZpeGVkSW5mb0xpc3QgPSBfUmVhY3QkdXNlQ29udGV4dC5maXhlZEluZm9MaXN0O1xuXG4gIHZhciBmaXhlZEluZm8gPSBmaXhlZEluZm9MaXN0W2luZGV4XTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENlbGwsIF9leHRlbmRzKHtcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICBpbmRleDogaW5kZXgsXG4gICAgY29tcG9uZW50OiBcInRkXCIsXG4gICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgcmVjb3JkOiBudWxsLFxuICAgIGRhdGFJbmRleDogbnVsbCxcbiAgICBhbGlnbjogYWxpZ24sXG4gICAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgY29sU3BhbjogY29sU3BhbixcbiAgICAgICAgICByb3dTcGFuOiByb3dTcGFuXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9LCBmaXhlZEluZm8pKTtcbn0iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBGb290ZXJSb3cocHJvcHMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidHJcIiwgcHJvcHMpO1xufSIsImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJFeHBhbmRJY29uKF9yZWYpIHtcbiAgdmFyIF9jbGFzc05hbWVzO1xuXG4gIHZhciBwcmVmaXhDbHMgPSBfcmVmLnByZWZpeENscyxcbiAgICAgIHJlY29yZCA9IF9yZWYucmVjb3JkLFxuICAgICAgb25FeHBhbmQgPSBfcmVmLm9uRXhwYW5kLFxuICAgICAgZXhwYW5kZWQgPSBfcmVmLmV4cGFuZGVkLFxuICAgICAgZXhwYW5kYWJsZSA9IF9yZWYuZXhwYW5kYWJsZTtcbiAgdmFyIGV4cGFuZENsYXNzTmFtZSA9IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcm93LWV4cGFuZC1pY29uXCIpO1xuXG4gIGlmICghZXhwYW5kYWJsZSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGV4cGFuZENsYXNzTmFtZSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1yb3ctc3BhY2VkXCIpKVxuICAgIH0pO1xuICB9XG5cbiAgdmFyIG9uQ2xpY2sgPSBmdW5jdGlvbiBvbkNsaWNrKGV2ZW50KSB7XG4gICAgb25FeHBhbmQocmVjb3JkLCBldmVudCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH07XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGV4cGFuZENsYXNzTmFtZSwgKF9jbGFzc05hbWVzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1yb3ctZXhwYW5kZWRcIiksIGV4cGFuZGVkKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXJvdy1jb2xsYXBzZWRcIiksICFleHBhbmRlZCksIF9jbGFzc05hbWVzKSksXG4gICAgb25DbGljazogb25DbGlja1xuICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQWxsQ2hpbGRyZW5LZXlzKGRhdGEsIGdldFJvd0tleSwgY2hpbGRyZW5Db2x1bW5OYW1lKSB7XG4gIHZhciBrZXlzID0gW107XG5cbiAgZnVuY3Rpb24gZGlnKGxpc3QpIHtcbiAgICAobGlzdCB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICAgIGtleXMucHVzaChnZXRSb3dLZXkoaXRlbSwgaW5kZXgpKTtcbiAgICAgIGRpZyhpdGVtW2NoaWxkcmVuQ29sdW1uTmFtZV0pO1xuICAgIH0pO1xuICB9XG5cbiAgZGlnKGRhdGEpO1xuICByZXR1cm4ga2V5cztcbn0iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xudmFyIFBJWEVMX1BBVFRFUk4gPSAvbWFyZ2lufHBhZGRpbmd8d2lkdGh8aGVpZ2h0fG1heHxtaW58b2Zmc2V0LztcbnZhciByZW1vdmVQaXhlbCA9IHtcbiAgbGVmdDogdHJ1ZSxcbiAgdG9wOiB0cnVlXG59O1xudmFyIGZsb2F0TWFwID0ge1xuICBjc3NGbG9hdDogMSxcbiAgc3R5bGVGbG9hdDogMSxcbiAgZmxvYXQ6IDFcbn07XG5cbmZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUobm9kZSkge1xuICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gMSA/IG5vZGUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKG5vZGUsIG51bGwpIDoge307XG59XG5cbmZ1bmN0aW9uIGdldFN0eWxlVmFsdWUobm9kZSwgdHlwZSwgdmFsdWUpIHtcbiAgdHlwZSA9IHR5cGUudG9Mb3dlckNhc2UoKTtcblxuICBpZiAodmFsdWUgPT09ICdhdXRvJykge1xuICAgIGlmICh0eXBlID09PSAnaGVpZ2h0Jykge1xuICAgICAgcmV0dXJuIG5vZGUub2Zmc2V0SGVpZ2h0O1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnd2lkdGgnKSB7XG4gICAgICByZXR1cm4gbm9kZS5vZmZzZXRXaWR0aDtcbiAgICB9XG4gIH1cblxuICBpZiAoISh0eXBlIGluIHJlbW92ZVBpeGVsKSkge1xuICAgIHJlbW92ZVBpeGVsW3R5cGVdID0gUElYRUxfUEFUVEVSTi50ZXN0KHR5cGUpO1xuICB9XG5cbiAgcmV0dXJuIHJlbW92ZVBpeGVsW3R5cGVdID8gcGFyc2VGbG9hdCh2YWx1ZSkgfHwgMCA6IHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0KG5vZGUsIG5hbWUpIHtcbiAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gIG5hbWUgPSBmbG9hdE1hcFtuYW1lXSA/ICdjc3NGbG9hdCcgaW4gbm9kZS5zdHlsZSA/ICdjc3NGbG9hdCcgOiAnc3R5bGVGbG9hdCcgOiBuYW1lO1xuICByZXR1cm4gbGVuZ3RoID09PSAxID8gc3R5bGUgOiBnZXRTdHlsZVZhbHVlKG5vZGUsIG5hbWUsIHN0eWxlW25hbWVdIHx8IG5vZGUuc3R5bGVbbmFtZV0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNldChub2RlLCBuYW1lLCB2YWx1ZSkge1xuICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgbmFtZSA9IGZsb2F0TWFwW25hbWVdID8gJ2Nzc0Zsb2F0JyBpbiBub2RlLnN0eWxlID8gJ2Nzc0Zsb2F0JyA6ICdzdHlsZUZsb2F0JyA6IG5hbWU7XG5cbiAgaWYgKGxlbmd0aCA9PT0gMykge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIFBJWEVMX1BBVFRFUk4udGVzdChuYW1lKSkge1xuICAgICAgdmFsdWUgPSBcIlwiLmNvbmNhdCh2YWx1ZSwgXCJweFwiKTtcbiAgICB9XG5cbiAgICBub2RlLnN0eWxlW25hbWVdID0gdmFsdWU7IC8vIE51bWJlclxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgZm9yICh2YXIgeCBpbiBuYW1lKSB7XG4gICAgaWYgKG5hbWUuaGFzT3duUHJvcGVydHkoeCkpIHtcbiAgICAgIHNldChub2RlLCB4LCBuYW1lW3hdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRPdXRlcldpZHRoKGVsKSB7XG4gIGlmIChlbCA9PT0gZG9jdW1lbnQuYm9keSkge1xuICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIH1cblxuICByZXR1cm4gZWwub2Zmc2V0V2lkdGg7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0T3V0ZXJIZWlnaHQoZWwpIHtcbiAgaWYgKGVsID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICB9XG5cbiAgcmV0dXJuIGVsLm9mZnNldEhlaWdodDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXREb2NTaXplKCkge1xuICB2YXIgd2lkdGggPSBNYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsV2lkdGgsIGRvY3VtZW50LmJvZHkuc2Nyb2xsV2lkdGgpO1xuICB2YXIgaGVpZ2h0ID0gTWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCwgZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldENsaWVudFNpemUoKSB7XG4gIHZhciB3aWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjcm9sbCgpIHtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBNYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCwgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0KSxcbiAgICBzY3JvbGxUb3A6IE1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AsIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKVxuICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9mZnNldChub2RlKSB7XG4gIHZhciBib3ggPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgZG9jRWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsgLy8gPCBpZTgg5LiN5pSv5oyBIHdpbi5wYWdlWE9mZnNldCwg5YiZ5L2/55SoIGRvY0VsZW0uc2Nyb2xsTGVmdFxuXG4gIHJldHVybiB7XG4gICAgbGVmdDogYm94LmxlZnQgKyAod2luZG93LnBhZ2VYT2Zmc2V0IHx8IGRvY0VsZW0uc2Nyb2xsTGVmdCkgLSAoZG9jRWxlbS5jbGllbnRMZWZ0IHx8IGRvY3VtZW50LmJvZHkuY2xpZW50TGVmdCB8fCAwKSxcbiAgICB0b3A6IGJveC50b3AgKyAod2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY0VsZW0uc2Nyb2xsVG9wKSAtIChkb2NFbGVtLmNsaWVudFRvcCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudFRvcCB8fCAwKVxuICB9O1xufSIsImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgYWRkRXZlbnRMaXN0ZW5lciBmcm9tIFwicmMtdXRpbC9lcy9Eb20vYWRkRXZlbnRMaXN0ZW5lclwiO1xuaW1wb3J0IGdldFNjcm9sbEJhclNpemUgZnJvbSBcInJjLXV0aWwvZXMvZ2V0U2Nyb2xsQmFyU2l6ZVwiO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBnZXRPZmZzZXQgfSBmcm9tIFwicmMtdXRpbC9lcy9Eb20vY3NzXCI7XG5pbXBvcnQgVGFibGVDb250ZXh0IGZyb20gJy4vY29udGV4dC9UYWJsZUNvbnRleHQnO1xuaW1wb3J0IHsgdXNlTGF5b3V0U3RhdGUgfSBmcm9tICcuL2hvb2tzL3VzZUZyYW1lJztcblxudmFyIFN0aWNreVNjcm9sbEJhciA9IGZ1bmN0aW9uIFN0aWNreVNjcm9sbEJhcihfcmVmLCByZWYpIHtcbiAgdmFyIF9zY3JvbGxCb2R5UmVmJGN1cnJlbiwgX3Njcm9sbEJvZHlSZWYkY3VycmVuMjtcblxuICB2YXIgc2Nyb2xsQm9keVJlZiA9IF9yZWYuc2Nyb2xsQm9keVJlZixcbiAgICAgIG9uU2Nyb2xsID0gX3JlZi5vblNjcm9sbCxcbiAgICAgIG9mZnNldFNjcm9sbCA9IF9yZWYub2Zmc2V0U2Nyb2xsLFxuICAgICAgY29udGFpbmVyID0gX3JlZi5jb250YWluZXI7XG5cbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChUYWJsZUNvbnRleHQpLFxuICAgICAgcHJlZml4Q2xzID0gX1JlYWN0JHVzZUNvbnRleHQucHJlZml4Q2xzO1xuXG4gIHZhciBib2R5U2Nyb2xsV2lkdGggPSAoKF9zY3JvbGxCb2R5UmVmJGN1cnJlbiA9IHNjcm9sbEJvZHlSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX3Njcm9sbEJvZHlSZWYkY3VycmVuID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfc2Nyb2xsQm9keVJlZiRjdXJyZW4uc2Nyb2xsV2lkdGgpIHx8IDA7XG4gIHZhciBib2R5V2lkdGggPSAoKF9zY3JvbGxCb2R5UmVmJGN1cnJlbjIgPSBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9zY3JvbGxCb2R5UmVmJGN1cnJlbjIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zY3JvbGxCb2R5UmVmJGN1cnJlbjIuY2xpZW50V2lkdGgpIHx8IDA7XG4gIHZhciBzY3JvbGxCYXJXaWR0aCA9IGJvZHlTY3JvbGxXaWR0aCAmJiBib2R5V2lkdGggKiAoYm9keVdpZHRoIC8gYm9keVNjcm9sbFdpZHRoKTtcbiAgdmFyIHNjcm9sbEJhclJlZiA9IFJlYWN0LnVzZVJlZigpO1xuXG4gIHZhciBfdXNlTGF5b3V0U3RhdGUgPSB1c2VMYXlvdXRTdGF0ZSh7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBpc0hpZGRlblNjcm9sbEJhcjogZmFsc2VcbiAgfSksXG4gICAgICBfdXNlTGF5b3V0U3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZUxheW91dFN0YXRlLCAyKSxcbiAgICAgIHNjcm9sbFN0YXRlID0gX3VzZUxheW91dFN0YXRlMlswXSxcbiAgICAgIHNldFNjcm9sbFN0YXRlID0gX3VzZUxheW91dFN0YXRlMlsxXTtcblxuICB2YXIgcmVmU3RhdGUgPSBSZWFjdC51c2VSZWYoe1xuICAgIGRlbHRhOiAwLFxuICAgIHg6IDBcbiAgfSk7XG5cbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSxcbiAgICAgIF9SZWFjdCR1c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfUmVhY3QkdXNlU3RhdGUsIDIpLFxuICAgICAgaXNBY3RpdmUgPSBfUmVhY3QkdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0QWN0aXZlID0gX1JlYWN0JHVzZVN0YXRlMlsxXTtcblxuICB2YXIgb25Nb3VzZVVwID0gZnVuY3Rpb24gb25Nb3VzZVVwKCkge1xuICAgIHNldEFjdGl2ZShmYWxzZSk7XG4gIH07XG5cbiAgdmFyIG9uTW91c2VEb3duID0gZnVuY3Rpb24gb25Nb3VzZURvd24oZXZlbnQpIHtcbiAgICBldmVudC5wZXJzaXN0KCk7XG4gICAgcmVmU3RhdGUuY3VycmVudC5kZWx0YSA9IGV2ZW50LnBhZ2VYIC0gc2Nyb2xsU3RhdGUuc2Nyb2xsTGVmdDtcbiAgICByZWZTdGF0ZS5jdXJyZW50LnggPSAwO1xuICAgIHNldEFjdGl2ZSh0cnVlKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIHZhciBvbk1vdXNlTW92ZSA9IGZ1bmN0aW9uIG9uTW91c2VNb3ZlKGV2ZW50KSB7XG4gICAgdmFyIF93aW5kb3c7XG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTW91c2VFdmVudC9idXR0b25zXG4gICAgdmFyIF9yZWYyID0gZXZlbnQgfHwgKChfd2luZG93ID0gd2luZG93KSA9PT0gbnVsbCB8fCBfd2luZG93ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfd2luZG93LmV2ZW50KSxcbiAgICAgICAgYnV0dG9ucyA9IF9yZWYyLmJ1dHRvbnM7XG5cbiAgICBpZiAoIWlzQWN0aXZlIHx8IGJ1dHRvbnMgPT09IDApIHtcbiAgICAgIC8vIElmIG91dCBib2R5IG1vdXNlIHVwLCB3ZSBjYW4gc2V0IGlzQWN0aXZlIGZhbHNlIHdoZW4gbW91c2UgbW92ZVxuICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgIHNldEFjdGl2ZShmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbGVmdCA9IHJlZlN0YXRlLmN1cnJlbnQueCArIGV2ZW50LnBhZ2VYIC0gcmVmU3RhdGUuY3VycmVudC54IC0gcmVmU3RhdGUuY3VycmVudC5kZWx0YTtcblxuICAgIGlmIChsZWZ0IDw9IDApIHtcbiAgICAgIGxlZnQgPSAwO1xuICAgIH1cblxuICAgIGlmIChsZWZ0ICsgc2Nyb2xsQmFyV2lkdGggPj0gYm9keVdpZHRoKSB7XG4gICAgICBsZWZ0ID0gYm9keVdpZHRoIC0gc2Nyb2xsQmFyV2lkdGg7XG4gICAgfVxuXG4gICAgb25TY3JvbGwoe1xuICAgICAgc2Nyb2xsTGVmdDogbGVmdCAvIGJvZHlXaWR0aCAqIChib2R5U2Nyb2xsV2lkdGggKyAyKVxuICAgIH0pO1xuICAgIHJlZlN0YXRlLmN1cnJlbnQueCA9IGV2ZW50LnBhZ2VYO1xuICB9O1xuXG4gIHZhciBvbkNvbnRhaW5lclNjcm9sbCA9IGZ1bmN0aW9uIG9uQ29udGFpbmVyU2Nyb2xsKCkge1xuICAgIHZhciB0YWJsZU9mZnNldFRvcCA9IGdldE9mZnNldChzY3JvbGxCb2R5UmVmLmN1cnJlbnQpLnRvcDtcbiAgICB2YXIgdGFibGVCb3R0b21PZmZzZXQgPSB0YWJsZU9mZnNldFRvcCArIHNjcm9sbEJvZHlSZWYuY3VycmVudC5vZmZzZXRIZWlnaHQ7XG4gICAgdmFyIGN1cnJlbnRDbGllbnRPZmZzZXQgPSBjb250YWluZXIgPT09IHdpbmRvdyA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgKyB3aW5kb3cuaW5uZXJIZWlnaHQgOiBnZXRPZmZzZXQoY29udGFpbmVyKS50b3AgKyBjb250YWluZXIuY2xpZW50SGVpZ2h0O1xuXG4gICAgaWYgKHRhYmxlQm90dG9tT2Zmc2V0IC0gZ2V0U2Nyb2xsQmFyU2l6ZSgpIDw9IGN1cnJlbnRDbGllbnRPZmZzZXQgfHwgdGFibGVPZmZzZXRUb3AgPj0gY3VycmVudENsaWVudE9mZnNldCAtIG9mZnNldFNjcm9sbCkge1xuICAgICAgc2V0U2Nyb2xsU3RhdGUoZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHN0YXRlKSwge30sIHtcbiAgICAgICAgICBpc0hpZGRlblNjcm9sbEJhcjogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTY3JvbGxTdGF0ZShmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgc3RhdGUpLCB7fSwge1xuICAgICAgICAgIGlzSGlkZGVuU2Nyb2xsQmFyOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICB2YXIgc2V0U2Nyb2xsTGVmdCA9IGZ1bmN0aW9uIHNldFNjcm9sbExlZnQobGVmdCkge1xuICAgIHNldFNjcm9sbFN0YXRlKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgc3RhdGUpLCB7fSwge1xuICAgICAgICBzY3JvbGxMZWZ0OiBsZWZ0IC8gYm9keVNjcm9sbFdpZHRoICogYm9keVdpZHRoIHx8IDBcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNldFNjcm9sbExlZnQ6IHNldFNjcm9sbExlZnRcbiAgICB9O1xuICB9KTtcbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgb25Nb3VzZVVwTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKGRvY3VtZW50LmJvZHksICdtb3VzZXVwJywgb25Nb3VzZVVwLCBmYWxzZSk7XG4gICAgdmFyIG9uTW91c2VNb3ZlTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKGRvY3VtZW50LmJvZHksICdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSwgZmFsc2UpO1xuICAgIG9uQ29udGFpbmVyU2Nyb2xsKCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIG9uTW91c2VVcExpc3RlbmVyLnJlbW92ZSgpO1xuICAgICAgb25Nb3VzZU1vdmVMaXN0ZW5lci5yZW1vdmUoKTtcbiAgICB9O1xuICB9LCBbc2Nyb2xsQmFyV2lkdGgsIGlzQWN0aXZlXSk7XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9uU2Nyb2xsTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKGNvbnRhaW5lciwgJ3Njcm9sbCcsIG9uQ29udGFpbmVyU2Nyb2xsLCBmYWxzZSk7XG4gICAgdmFyIG9uUmVzaXplTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKHdpbmRvdywgJ3Jlc2l6ZScsIG9uQ29udGFpbmVyU2Nyb2xsLCBmYWxzZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIG9uU2Nyb2xsTGlzdGVuZXIucmVtb3ZlKCk7XG4gICAgICBvblJlc2l6ZUxpc3RlbmVyLnJlbW92ZSgpO1xuICAgIH07XG4gIH0sIFtjb250YWluZXJdKTtcbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXNjcm9sbFN0YXRlLmlzSGlkZGVuU2Nyb2xsQmFyKSB7XG4gICAgICBzZXRTY3JvbGxTdGF0ZShmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgdmFyIGJvZHlOb2RlID0gc2Nyb2xsQm9keVJlZi5jdXJyZW50O1xuXG4gICAgICAgIGlmICghYm9keU5vZGUpIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBzdGF0ZSksIHt9LCB7XG4gICAgICAgICAgc2Nyb2xsTGVmdDogYm9keU5vZGUuc2Nyb2xsTGVmdCAvIGJvZHlOb2RlLnNjcm9sbFdpZHRoICogYm9keU5vZGUuY2xpZW50V2lkdGhcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtzY3JvbGxTdGF0ZS5pc0hpZGRlblNjcm9sbEJhcl0pO1xuXG4gIGlmIChib2R5U2Nyb2xsV2lkdGggPD0gYm9keVdpZHRoIHx8ICFzY3JvbGxCYXJXaWR0aCB8fCBzY3JvbGxTdGF0ZS5pc0hpZGRlblNjcm9sbEJhcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICBzdHlsZToge1xuICAgICAgaGVpZ2h0OiBnZXRTY3JvbGxCYXJTaXplKCksXG4gICAgICB3aWR0aDogYm9keVdpZHRoLFxuICAgICAgYm90dG9tOiBvZmZzZXRTY3JvbGxcbiAgICB9LFxuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zdGlja3ktc2Nyb2xsXCIpXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICBvbk1vdXNlRG93bjogb25Nb3VzZURvd24sXG4gICAgcmVmOiBzY3JvbGxCYXJSZWYsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc3RpY2t5LXNjcm9sbC1iYXJcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zdGlja3ktc2Nyb2xsLWJhci1hY3RpdmVcIiksIGlzQWN0aXZlKSksXG4gICAgc3R5bGU6IHtcbiAgICAgIHdpZHRoOiBcIlwiLmNvbmNhdChzY3JvbGxCYXJXaWR0aCwgXCJweFwiKSxcbiAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUzZChcIi5jb25jYXQoc2Nyb2xsU3RhdGUuc2Nyb2xsTGVmdCwgXCJweCwgMCwgMClcIilcbiAgICB9XG4gIH0pKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKFN0aWNreVNjcm9sbEJhcik7IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNhblVzZURvbSBmcm9tIFwicmMtdXRpbC9lcy9Eb20vY2FuVXNlRG9tXCI7IC8vIGZpeCBzc3IgcmVuZGVyXG5cbnZhciBkZWZhdWx0Q29udGFpbmVyID0gY2FuVXNlRG9tKCkgPyB3aW5kb3cgOiBudWxsO1xuLyoqIFN0aWNreSBoZWFkZXIgaG9va3MgKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlU3RpY2t5KHN0aWNreSwgcHJlZml4Q2xzKSB7XG4gIHZhciBfcmVmID0gX3R5cGVvZihzdGlja3kpID09PSAnb2JqZWN0JyA/IHN0aWNreSA6IHt9LFxuICAgICAgX3JlZiRvZmZzZXRIZWFkZXIgPSBfcmVmLm9mZnNldEhlYWRlcixcbiAgICAgIG9mZnNldEhlYWRlciA9IF9yZWYkb2Zmc2V0SGVhZGVyID09PSB2b2lkIDAgPyAwIDogX3JlZiRvZmZzZXRIZWFkZXIsXG4gICAgICBfcmVmJG9mZnNldFNjcm9sbCA9IF9yZWYub2Zmc2V0U2Nyb2xsLFxuICAgICAgb2Zmc2V0U2Nyb2xsID0gX3JlZiRvZmZzZXRTY3JvbGwgPT09IHZvaWQgMCA/IDAgOiBfcmVmJG9mZnNldFNjcm9sbCxcbiAgICAgIF9yZWYkZ2V0Q29udGFpbmVyID0gX3JlZi5nZXRDb250YWluZXIsXG4gICAgICBnZXRDb250YWluZXIgPSBfcmVmJGdldENvbnRhaW5lciA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBkZWZhdWx0Q29udGFpbmVyO1xuICB9IDogX3JlZiRnZXRDb250YWluZXI7XG5cbiAgdmFyIGNvbnRhaW5lciA9IGdldENvbnRhaW5lcigpIHx8IGRlZmF1bHRDb250YWluZXI7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaXNTdGlja3kgPSAhIXN0aWNreTtcbiAgICByZXR1cm4ge1xuICAgICAgaXNTdGlja3k6IGlzU3RpY2t5LFxuICAgICAgc3RpY2t5Q2xhc3NOYW1lOiBpc1N0aWNreSA/IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc3RpY2t5LWhlYWRlclwiKSA6ICcnLFxuICAgICAgb2Zmc2V0SGVhZGVyOiBvZmZzZXRIZWFkZXIsXG4gICAgICBvZmZzZXRTY3JvbGw6IG9mZnNldFNjcm9sbCxcbiAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyXG4gICAgfTtcbiAgfSwgW29mZnNldFNjcm9sbCwgb2Zmc2V0SGVhZGVyLCBwcmVmaXhDbHMsIGNvbnRhaW5lcl0pO1xufSIsImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgX3RvQ29uc3VtYWJsZUFycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b0NvbnN1bWFibGVBcnJheVwiO1xuaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5XCI7XG5cbi8qKlxuICogRmVhdHVyZTpcbiAqICAtIGZpeGVkIG5vdCBuZWVkIHRvIHNldCB3aWR0aFxuICogIC0gc3VwcG9ydCBgcm93RXhwYW5kYWJsZWAgdG8gY29uZmlnIHJvdyBleHBhbmQgbG9naWNcbiAqICAtIGFkZCBgc3VtbWFyeWAgdG8gc3VwcG9ydCBgKCkgPT4gUmVhY3ROb2RlYFxuICpcbiAqIFVwZGF0ZTpcbiAqICAtIGBkYXRhSW5kZXhgIGlzIGBhcnJheVtdYCBub3dcbiAqICAtIGBleHBhbmRhYmxlYCB3cmFwIGFsbCB0aGUgZXhwYW5kIHJlbGF0ZWQgcHJvcHNcbiAqXG4gKiBSZW1vdmVkOlxuICogIC0gZXhwYW5kSWNvbkFzQ2VsbFxuICogIC0gdXNlRml4ZWRIZWFkZXJcbiAqICAtIHJvd1JlZlxuICogIC0gY29sdW1uc1tudW1iZXJdLm9uQ2VsbENsaWNrXG4gKiAgLSBvblJvd0NsaWNrXG4gKiAgLSBvblJvd0RvdWJsZUNsaWNrXG4gKiAgLSBvblJvd01vdXNlRW50ZXJcbiAqICAtIG9uUm93TW91c2VMZWF2ZVxuICogIC0gZ2V0Qm9keVdyYXBwZXJcbiAqICAtIGJvZHlTdHlsZVxuICpcbiAqIERlcHJlY2F0ZWQ6XG4gKiAgLSBBbGwgZXhwYW5kZWQgcHJvcHMsIG1vdmUgaW50byBleHBhbmRhYmxlXG4gKi9cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc1Zpc2libGUgZnJvbSBcInJjLXV0aWwvZXMvRG9tL2lzVmlzaWJsZVwiO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgc2hhbGxvd0VxdWFsIGZyb20gJ3NoYWxsb3dlcXVhbCc7XG5pbXBvcnQgd2FybmluZyBmcm9tIFwicmMtdXRpbC9lcy93YXJuaW5nXCI7XG5pbXBvcnQgUmVzaXplT2JzZXJ2ZXIgZnJvbSAncmMtcmVzaXplLW9ic2VydmVyJztcbmltcG9ydCBnZXRTY3JvbGxCYXJTaXplIGZyb20gXCJyYy11dGlsL2VzL2dldFNjcm9sbEJhclNpemVcIjtcbmltcG9ydCBDb2x1bW5Hcm91cCBmcm9tICcuL3N1Z2FyL0NvbHVtbkdyb3VwJztcbmltcG9ydCBDb2x1bW4gZnJvbSAnLi9zdWdhci9Db2x1bW4nO1xuaW1wb3J0IEZpeGVkSGVhZGVyIGZyb20gJy4vSGVhZGVyL0ZpeGVkSGVhZGVyJztcbmltcG9ydCBIZWFkZXIgZnJvbSAnLi9IZWFkZXIvSGVhZGVyJztcbmltcG9ydCBUYWJsZUNvbnRleHQgZnJvbSAnLi9jb250ZXh0L1RhYmxlQ29udGV4dCc7XG5pbXBvcnQgQm9keUNvbnRleHQgZnJvbSAnLi9jb250ZXh0L0JvZHlDb250ZXh0JztcbmltcG9ydCBCb2R5IGZyb20gJy4vQm9keSc7XG5pbXBvcnQgdXNlQ29sdW1ucyBmcm9tICcuL2hvb2tzL3VzZUNvbHVtbnMnO1xuaW1wb3J0IHsgdXNlTGF5b3V0U3RhdGUsIHVzZVRpbWVvdXRMb2NrIH0gZnJvbSAnLi9ob29rcy91c2VGcmFtZSc7XG5pbXBvcnQgeyBnZXRQYXRoVmFsdWUsIG1lcmdlT2JqZWN0LCB2YWxpZGF0ZVZhbHVlLCBnZXRDb2x1bW5zS2V5IH0gZnJvbSAnLi91dGlscy92YWx1ZVV0aWwnO1xuaW1wb3J0IFJlc2l6ZUNvbnRleHQgZnJvbSAnLi9jb250ZXh0L1Jlc2l6ZUNvbnRleHQnO1xuaW1wb3J0IHVzZVN0aWNreU9mZnNldHMgZnJvbSAnLi9ob29rcy91c2VTdGlja3lPZmZzZXRzJztcbmltcG9ydCBDb2xHcm91cCBmcm9tICcuL0NvbEdyb3VwJztcbmltcG9ydCB7IGdldEV4cGFuZGFibGVQcm9wcywgZ2V0RGF0YUFuZEFyaWFQcm9wcyB9IGZyb20gJy4vdXRpbHMvbGVnYWN5VXRpbCc7XG5pbXBvcnQgUGFuZWwgZnJvbSAnLi9QYW5lbCc7XG5pbXBvcnQgRm9vdGVyLCB7IEZvb3RlckNvbXBvbmVudHMgfSBmcm9tICcuL0Zvb3Rlcic7XG5pbXBvcnQgeyBmaW5kQWxsQ2hpbGRyZW5LZXlzLCByZW5kZXJFeHBhbmRJY29uIH0gZnJvbSAnLi91dGlscy9leHBhbmRVdGlsJztcbmltcG9ydCB7IGdldENlbGxGaXhlZEluZm8gfSBmcm9tICcuL3V0aWxzL2ZpeFV0aWwnO1xuaW1wb3J0IFN0aWNreVNjcm9sbEJhciBmcm9tICcuL3N0aWNreVNjcm9sbEJhcic7XG5pbXBvcnQgdXNlU3RpY2t5IGZyb20gJy4vaG9va3MvdXNlU3RpY2t5JzsgLy8gVXNlZCBmb3IgY29uZGl0aW9ucyBjYWNoZVxuXG52YXIgRU1QVFlfREFUQSA9IFtdOyAvLyBVc2VkIGZvciBjdXN0b21pemUgc2Nyb2xsXG5cbnZhciBFTVBUWV9TQ1JPTExfVEFSR0VUID0ge307XG5leHBvcnQgdmFyIElOVEVSTkFMX0hPT0tTID0gJ3JjLXRhYmxlLWludGVybmFsLWhvb2snO1xudmFyIE1lbW9UYWJsZUNvbnRlbnQgPSAvKiNfX1BVUkVfXyovUmVhY3QubWVtbyhmdW5jdGlvbiAoX3JlZikge1xuICB2YXIgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICByZXR1cm4gY2hpbGRyZW47XG59LCBmdW5jdGlvbiAocHJldiwgbmV4dCkge1xuICBpZiAoIXNoYWxsb3dFcXVhbChwcmV2LnByb3BzLCBuZXh0LnByb3BzKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyBObyBhZGRpdGlvbmFsIHJlbmRlciB3aGVuIHBpbmdlZCBzdGF0dXMgY2hhbmdlLlxuICAvLyBUaGlzIGlzIG5vdCBhIGJ1Zy5cblxuXG4gIHJldHVybiBwcmV2LnBpbmdMZWZ0ICE9PSBuZXh0LnBpbmdMZWZ0IHx8IHByZXYucGluZ1JpZ2h0ICE9PSBuZXh0LnBpbmdSaWdodDtcbn0pO1xuXG5mdW5jdGlvbiBUYWJsZShwcm9wcykge1xuICB2YXIgX2NsYXNzTmFtZXM7XG5cbiAgdmFyIHByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIHJvd0NsYXNzTmFtZSA9IHByb3BzLnJvd0NsYXNzTmFtZSxcbiAgICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsXG4gICAgICBkYXRhID0gcHJvcHMuZGF0YSxcbiAgICAgIHJvd0tleSA9IHByb3BzLnJvd0tleSxcbiAgICAgIHNjcm9sbCA9IHByb3BzLnNjcm9sbCxcbiAgICAgIHRhYmxlTGF5b3V0ID0gcHJvcHMudGFibGVMYXlvdXQsXG4gICAgICBkaXJlY3Rpb24gPSBwcm9wcy5kaXJlY3Rpb24sXG4gICAgICB0aXRsZSA9IHByb3BzLnRpdGxlLFxuICAgICAgZm9vdGVyID0gcHJvcHMuZm9vdGVyLFxuICAgICAgc3VtbWFyeSA9IHByb3BzLnN1bW1hcnksXG4gICAgICBpZCA9IHByb3BzLmlkLFxuICAgICAgc2hvd0hlYWRlciA9IHByb3BzLnNob3dIZWFkZXIsXG4gICAgICBjb21wb25lbnRzID0gcHJvcHMuY29tcG9uZW50cyxcbiAgICAgIGVtcHR5VGV4dCA9IHByb3BzLmVtcHR5VGV4dCxcbiAgICAgIG9uUm93ID0gcHJvcHMub25Sb3csXG4gICAgICBvbkhlYWRlclJvdyA9IHByb3BzLm9uSGVhZGVyUm93LFxuICAgICAgaW50ZXJuYWxIb29rcyA9IHByb3BzLmludGVybmFsSG9va3MsXG4gICAgICB0cmFuc2Zvcm1Db2x1bW5zID0gcHJvcHMudHJhbnNmb3JtQ29sdW1ucyxcbiAgICAgIGludGVybmFsUmVmcyA9IHByb3BzLmludGVybmFsUmVmcyxcbiAgICAgIHN0aWNreSA9IHByb3BzLnN0aWNreTtcbiAgdmFyIG1lcmdlZERhdGEgPSBkYXRhIHx8IEVNUFRZX0RBVEE7XG4gIHZhciBoYXNEYXRhID0gISFtZXJnZWREYXRhLmxlbmd0aDsgLy8gPT09PT09PT09PT09PT09PT09PT09IEVmZmVjdHMgPT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBfUmVhY3QkdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZSgwKSxcbiAgICAgIF9SZWFjdCR1c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfUmVhY3QkdXNlU3RhdGUsIDIpLFxuICAgICAgc2Nyb2xsYmFyU2l6ZSA9IF9SZWFjdCR1c2VTdGF0ZTJbMF0sXG4gICAgICBzZXRTY3JvbGxiYXJTaXplID0gX1JlYWN0JHVzZVN0YXRlMlsxXTtcblxuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHNldFNjcm9sbGJhclNpemUoZ2V0U2Nyb2xsQmFyU2l6ZSgpKTtcbiAgfSk7IC8vID09PT09PT09PT09PT09PT09PT09PSBXYXJuaW5nID09PT09PT09PT09PT09PT09PT09PT1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIFsnb25Sb3dDbGljaycsICdvblJvd0RvdWJsZUNsaWNrJywgJ29uUm93Q29udGV4dE1lbnUnLCAnb25Sb3dNb3VzZUVudGVyJywgJ29uUm93TW91c2VMZWF2ZSddLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHdhcm5pbmcocHJvcHNbbmFtZV0gPT09IHVuZGVmaW5lZCwgXCJgXCIuY29uY2F0KG5hbWUsIFwiYCBpcyByZW1vdmVkLCBwbGVhc2UgdXNlIGBvblJvd2AgaW5zdGVhZC5cIikpO1xuICAgIH0pO1xuICAgIHdhcm5pbmcoISgnZ2V0Qm9keVdyYXBwZXInIGluIHByb3BzKSwgJ2BnZXRCb2R5V3JhcHBlcmAgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBjdXN0b20gYGNvbXBvbmVudHNgIGluc3RlYWQuJyk7XG4gIH0gLy8gPT09PT09PT09PT09PT09PT09PT0gQ3VzdG9taXplID09PT09PT09PT09PT09PT09PT09PVxuXG5cbiAgdmFyIG1lcmdlZENvbXBvbmVudHMgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbWVyZ2VPYmplY3QoY29tcG9uZW50cywge30pO1xuICB9LCBbY29tcG9uZW50c10pO1xuICB2YXIgZ2V0Q29tcG9uZW50ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKHBhdGgsIGRlZmF1bHRDb21wb25lbnQpIHtcbiAgICByZXR1cm4gZ2V0UGF0aFZhbHVlKG1lcmdlZENvbXBvbmVudHMsIHBhdGgpIHx8IGRlZmF1bHRDb21wb25lbnQ7XG4gIH0sIFttZXJnZWRDb21wb25lbnRzXSk7XG4gIHZhciBnZXRSb3dLZXkgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIHJvd0tleSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHJvd0tleTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKHJlY29yZCkge1xuICAgICAgdmFyIGtleSA9IHJlY29yZCAmJiByZWNvcmRbcm93S2V5XTtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FybmluZyhrZXkgIT09IHVuZGVmaW5lZCwgJ0VhY2ggcmVjb3JkIGluIHRhYmxlIHNob3VsZCBoYXZlIGEgdW5pcXVlIGBrZXlgIHByb3AsIG9yIHNldCBgcm93S2V5YCB0byBhbiB1bmlxdWUgcHJpbWFyeSBrZXkuJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBrZXk7XG4gICAgfTtcbiAgfSwgW3Jvd0tleV0pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09IEV4cGFuZCA9PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIGV4cGFuZGFibGVDb25maWcgPSBnZXRFeHBhbmRhYmxlUHJvcHMocHJvcHMpO1xuICB2YXIgZXhwYW5kSWNvbiA9IGV4cGFuZGFibGVDb25maWcuZXhwYW5kSWNvbixcbiAgICAgIGV4cGFuZGVkUm93S2V5cyA9IGV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dLZXlzLFxuICAgICAgZGVmYXVsdEV4cGFuZGVkUm93S2V5cyA9IGV4cGFuZGFibGVDb25maWcuZGVmYXVsdEV4cGFuZGVkUm93S2V5cyxcbiAgICAgIGRlZmF1bHRFeHBhbmRBbGxSb3dzID0gZXhwYW5kYWJsZUNvbmZpZy5kZWZhdWx0RXhwYW5kQWxsUm93cyxcbiAgICAgIGV4cGFuZGVkUm93UmVuZGVyID0gZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd1JlbmRlcixcbiAgICAgIG9uRXhwYW5kID0gZXhwYW5kYWJsZUNvbmZpZy5vbkV4cGFuZCxcbiAgICAgIG9uRXhwYW5kZWRSb3dzQ2hhbmdlID0gZXhwYW5kYWJsZUNvbmZpZy5vbkV4cGFuZGVkUm93c0NoYW5nZSxcbiAgICAgIGV4cGFuZFJvd0J5Q2xpY2sgPSBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZFJvd0J5Q2xpY2ssXG4gICAgICByb3dFeHBhbmRhYmxlID0gZXhwYW5kYWJsZUNvbmZpZy5yb3dFeHBhbmRhYmxlLFxuICAgICAgZXhwYW5kSWNvbkNvbHVtbkluZGV4ID0gZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRJY29uQ29sdW1uSW5kZXgsXG4gICAgICBleHBhbmRlZFJvd0NsYXNzTmFtZSA9IGV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dDbGFzc05hbWUsXG4gICAgICBjaGlsZHJlbkNvbHVtbk5hbWUgPSBleHBhbmRhYmxlQ29uZmlnLmNoaWxkcmVuQ29sdW1uTmFtZSxcbiAgICAgIGluZGVudFNpemUgPSBleHBhbmRhYmxlQ29uZmlnLmluZGVudFNpemU7XG4gIHZhciBtZXJnZWRFeHBhbmRJY29uID0gZXhwYW5kSWNvbiB8fCByZW5kZXJFeHBhbmRJY29uO1xuICB2YXIgbWVyZ2VkQ2hpbGRyZW5Db2x1bW5OYW1lID0gY2hpbGRyZW5Db2x1bW5OYW1lIHx8ICdjaGlsZHJlbic7XG4gIHZhciBleHBhbmRhYmxlVHlwZSA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIGlmIChleHBhbmRlZFJvd1JlbmRlcikge1xuICAgICAgcmV0dXJuICdyb3cnO1xuICAgIH1cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuXG4gICAgLyoqXG4gICAgICogRml4IGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzIxMTU0XG4gICAgICogVGhpcyBpcyBhIHdvcmthcm91bmQgdG8gbm90IHRvIGJyZWFrIGN1cnJlbnQgYmVoYXZpb3IuXG4gICAgICogV2UgY2FuIHJlbW92ZSBmb2xsb3cgY29kZSBhZnRlciBmaW5hbCByZWxlYXNlLlxuICAgICAqXG4gICAgICogVG8gb3RoZXIgZGV2ZWxvcGVyOlxuICAgICAqICBEbyBub3QgdXNlIGBfX1BBUkVOVF9SRU5ERVJfSUNPTl9fYCBpbiBwcm9kIHNpbmNlIHdlIHdpbGwgcmVtb3ZlIHRoaXMgd2hlbiByZWZhY3RvclxuICAgICAqL1xuXG5cbiAgICBpZiAocHJvcHMuZXhwYW5kYWJsZSAmJiBpbnRlcm5hbEhvb2tzID09PSBJTlRFUk5BTF9IT09LUyAmJiBwcm9wcy5leHBhbmRhYmxlLl9fUEFSRU5UX1JFTkRFUl9JQ09OX18gfHwgbWVyZ2VkRGF0YS5zb21lKGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICAgIHJldHVybiByZWNvcmQgJiYgX3R5cGVvZihyZWNvcmQpID09PSAnb2JqZWN0JyAmJiByZWNvcmRbbWVyZ2VkQ2hpbGRyZW5Db2x1bW5OYW1lXTtcbiAgICB9KSkge1xuICAgICAgcmV0dXJuICduZXN0JztcbiAgICB9XG4gICAgLyogZXNsaW50LWVuYWJsZSAqL1xuXG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFshIWV4cGFuZGVkUm93UmVuZGVyLCBtZXJnZWREYXRhXSk7XG5cbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZTMgPSBSZWFjdC51c2VTdGF0ZShmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGRlZmF1bHRFeHBhbmRlZFJvd0tleXMpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0RXhwYW5kZWRSb3dLZXlzO1xuICAgIH1cblxuICAgIGlmIChkZWZhdWx0RXhwYW5kQWxsUm93cykge1xuICAgICAgcmV0dXJuIGZpbmRBbGxDaGlsZHJlbktleXMobWVyZ2VkRGF0YSwgZ2V0Um93S2V5LCBtZXJnZWRDaGlsZHJlbkNvbHVtbk5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfSksXG4gICAgICBfUmVhY3QkdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX1JlYWN0JHVzZVN0YXRlMywgMiksXG4gICAgICBpbm5lckV4cGFuZGVkS2V5cyA9IF9SZWFjdCR1c2VTdGF0ZTRbMF0sXG4gICAgICBzZXRJbm5lckV4cGFuZGVkS2V5cyA9IF9SZWFjdCR1c2VTdGF0ZTRbMV07XG5cbiAgdmFyIG1lcmdlZEV4cGFuZGVkS2V5cyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBuZXcgU2V0KGV4cGFuZGVkUm93S2V5cyB8fCBpbm5lckV4cGFuZGVkS2V5cyB8fCBbXSk7XG4gIH0sIFtleHBhbmRlZFJvd0tleXMsIGlubmVyRXhwYW5kZWRLZXlzXSk7XG4gIHZhciBvblRyaWdnZXJFeHBhbmQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAocmVjb3JkKSB7XG4gICAgdmFyIGtleSA9IGdldFJvd0tleShyZWNvcmQsIG1lcmdlZERhdGEuaW5kZXhPZihyZWNvcmQpKTtcbiAgICB2YXIgbmV3RXhwYW5kZWRLZXlzO1xuICAgIHZhciBoYXNLZXkgPSBtZXJnZWRFeHBhbmRlZEtleXMuaGFzKGtleSk7XG5cbiAgICBpZiAoaGFzS2V5KSB7XG4gICAgICBtZXJnZWRFeHBhbmRlZEtleXMuZGVsZXRlKGtleSk7XG4gICAgICBuZXdFeHBhbmRlZEtleXMgPSBfdG9Db25zdW1hYmxlQXJyYXkobWVyZ2VkRXhwYW5kZWRLZXlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3RXhwYW5kZWRLZXlzID0gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShtZXJnZWRFeHBhbmRlZEtleXMpLCBba2V5XSk7XG4gICAgfVxuXG4gICAgc2V0SW5uZXJFeHBhbmRlZEtleXMobmV3RXhwYW5kZWRLZXlzKTtcblxuICAgIGlmIChvbkV4cGFuZCkge1xuICAgICAgb25FeHBhbmQoIWhhc0tleSwgcmVjb3JkKTtcbiAgICB9XG5cbiAgICBpZiAob25FeHBhbmRlZFJvd3NDaGFuZ2UpIHtcbiAgICAgIG9uRXhwYW5kZWRSb3dzQ2hhbmdlKG5ld0V4cGFuZGVkS2V5cyk7XG4gICAgfVxuICB9LCBbZ2V0Um93S2V5LCBtZXJnZWRFeHBhbmRlZEtleXMsIG1lcmdlZERhdGEsIG9uRXhwYW5kLCBvbkV4cGFuZGVkUm93c0NoYW5nZV0pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09IENvbHVtbiA9PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZTUgPSBSZWFjdC51c2VTdGF0ZSgwKSxcbiAgICAgIF9SZWFjdCR1c2VTdGF0ZTYgPSBfc2xpY2VkVG9BcnJheShfUmVhY3QkdXNlU3RhdGU1LCAyKSxcbiAgICAgIGNvbXBvbmVudFdpZHRoID0gX1JlYWN0JHVzZVN0YXRlNlswXSxcbiAgICAgIHNldENvbXBvbmVudFdpZHRoID0gX1JlYWN0JHVzZVN0YXRlNlsxXTtcblxuICB2YXIgX3VzZUNvbHVtbnMgPSB1c2VDb2x1bW5zKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIGV4cGFuZGFibGVDb25maWcpLCB7fSwge1xuICAgIGV4cGFuZGFibGU6ICEhZXhwYW5kZWRSb3dSZW5kZXIsXG4gICAgZXhwYW5kZWRLZXlzOiBtZXJnZWRFeHBhbmRlZEtleXMsXG4gICAgZ2V0Um93S2V5OiBnZXRSb3dLZXksXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMjM4OTRcbiAgICBvblRyaWdnZXJFeHBhbmQ6IG9uVHJpZ2dlckV4cGFuZCxcbiAgICBleHBhbmRJY29uOiBtZXJnZWRFeHBhbmRJY29uLFxuICAgIGV4cGFuZEljb25Db2x1bW5JbmRleDogZXhwYW5kSWNvbkNvbHVtbkluZGV4LFxuICAgIGRpcmVjdGlvbjogZGlyZWN0aW9uXG4gIH0pLCBpbnRlcm5hbEhvb2tzID09PSBJTlRFUk5BTF9IT09LUyA/IHRyYW5zZm9ybUNvbHVtbnMgOiBudWxsKSxcbiAgICAgIF91c2VDb2x1bW5zMiA9IF9zbGljZWRUb0FycmF5KF91c2VDb2x1bW5zLCAyKSxcbiAgICAgIGNvbHVtbnMgPSBfdXNlQ29sdW1uczJbMF0sXG4gICAgICBmbGF0dGVuQ29sdW1ucyA9IF91c2VDb2x1bW5zMlsxXTtcblxuICB2YXIgY29sdW1uQ29udGV4dCA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2x1bW5zOiBjb2x1bW5zLFxuICAgICAgZmxhdHRlbkNvbHVtbnM6IGZsYXR0ZW5Db2x1bW5zXG4gICAgfTtcbiAgfSwgW2NvbHVtbnMsIGZsYXR0ZW5Db2x1bW5zXSk7IC8vID09PT09PT09PT09PT09PT09PT09PT0gU2Nyb2xsID09PT09PT09PT09PT09PT09PT09PT1cblxuICB2YXIgZnVsbFRhYmxlUmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIHZhciBzY3JvbGxIZWFkZXJSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgdmFyIHNjcm9sbEJvZHlSZWYgPSBSZWFjdC51c2VSZWYoKTtcblxuICB2YXIgX1JlYWN0JHVzZVN0YXRlNyA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSxcbiAgICAgIF9SZWFjdCR1c2VTdGF0ZTggPSBfc2xpY2VkVG9BcnJheShfUmVhY3QkdXNlU3RhdGU3LCAyKSxcbiAgICAgIHBpbmdlZExlZnQgPSBfUmVhY3QkdXNlU3RhdGU4WzBdLFxuICAgICAgc2V0UGluZ2VkTGVmdCA9IF9SZWFjdCR1c2VTdGF0ZThbMV07XG5cbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZTkgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksXG4gICAgICBfUmVhY3QkdXNlU3RhdGUxMCA9IF9zbGljZWRUb0FycmF5KF9SZWFjdCR1c2VTdGF0ZTksIDIpLFxuICAgICAgcGluZ2VkUmlnaHQgPSBfUmVhY3QkdXNlU3RhdGUxMFswXSxcbiAgICAgIHNldFBpbmdlZFJpZ2h0ID0gX1JlYWN0JHVzZVN0YXRlMTBbMV07XG5cbiAgdmFyIF91c2VMYXlvdXRTdGF0ZSA9IHVzZUxheW91dFN0YXRlKG5ldyBNYXAoKSksXG4gICAgICBfdXNlTGF5b3V0U3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZUxheW91dFN0YXRlLCAyKSxcbiAgICAgIGNvbHNXaWR0aHMgPSBfdXNlTGF5b3V0U3RhdGUyWzBdLFxuICAgICAgdXBkYXRlQ29sc1dpZHRocyA9IF91c2VMYXlvdXRTdGF0ZTJbMV07IC8vIENvbnZlcnQgbWFwIHRvIG51bWJlciB3aWR0aFxuXG5cbiAgdmFyIGNvbHNLZXlzID0gZ2V0Q29sdW1uc0tleShmbGF0dGVuQ29sdW1ucyk7XG4gIHZhciBwdXJlQ29sV2lkdGhzID0gY29sc0tleXMubWFwKGZ1bmN0aW9uIChjb2x1bW5LZXkpIHtcbiAgICByZXR1cm4gY29sc1dpZHRocy5nZXQoY29sdW1uS2V5KTtcbiAgfSk7XG4gIHZhciBjb2xXaWR0aHMgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gcHVyZUNvbFdpZHRocztcbiAgfSwgW3B1cmVDb2xXaWR0aHMuam9pbignXycpXSk7XG4gIHZhciBzdGlja3lPZmZzZXRzID0gdXNlU3RpY2t5T2Zmc2V0cyhjb2xXaWR0aHMsIGZsYXR0ZW5Db2x1bW5zLmxlbmd0aCwgZGlyZWN0aW9uKTtcbiAgdmFyIGZpeEhlYWRlciA9IHNjcm9sbCAmJiB2YWxpZGF0ZVZhbHVlKHNjcm9sbC55KTtcbiAgdmFyIGhvcml6b25TY3JvbGwgPSBzY3JvbGwgJiYgdmFsaWRhdGVWYWx1ZShzY3JvbGwueCk7XG4gIHZhciBmaXhDb2x1bW4gPSBob3Jpem9uU2Nyb2xsICYmIGZsYXR0ZW5Db2x1bW5zLnNvbWUoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgdmFyIGZpeGVkID0gX3JlZjIuZml4ZWQ7XG4gICAgcmV0dXJuIGZpeGVkO1xuICB9KTsgLy8gU3RpY2t5XG5cbiAgdmFyIHN0aWNreVJlZiA9IFJlYWN0LnVzZVJlZigpO1xuXG4gIHZhciBfdXNlU3RpY2t5ID0gdXNlU3RpY2t5KHN0aWNreSwgcHJlZml4Q2xzKSxcbiAgICAgIGlzU3RpY2t5ID0gX3VzZVN0aWNreS5pc1N0aWNreSxcbiAgICAgIG9mZnNldEhlYWRlciA9IF91c2VTdGlja3kub2Zmc2V0SGVhZGVyLFxuICAgICAgb2Zmc2V0U2Nyb2xsID0gX3VzZVN0aWNreS5vZmZzZXRTY3JvbGwsXG4gICAgICBzdGlja3lDbGFzc05hbWUgPSBfdXNlU3RpY2t5LnN0aWNreUNsYXNzTmFtZSxcbiAgICAgIGNvbnRhaW5lciA9IF91c2VTdGlja3kuY29udGFpbmVyO1xuXG4gIHZhciBzY3JvbGxYU3R5bGU7XG4gIHZhciBzY3JvbGxZU3R5bGU7XG4gIHZhciBzY3JvbGxUYWJsZVN0eWxlO1xuXG4gIGlmIChmaXhIZWFkZXIpIHtcbiAgICBzY3JvbGxZU3R5bGUgPSB7XG4gICAgICBvdmVyZmxvd1k6ICdzY3JvbGwnLFxuICAgICAgbWF4SGVpZ2h0OiBzY3JvbGwueVxuICAgIH07XG4gIH1cblxuICBpZiAoaG9yaXpvblNjcm9sbCkge1xuICAgIHNjcm9sbFhTdHlsZSA9IHtcbiAgICAgIG92ZXJmbG93WDogJ2F1dG8nXG4gICAgfTsgLy8gV2hlbiBubyB2ZXJ0aWNhbCBzY3JvbGxiYXIsIHNob3VsZCBoaWRlIGl0XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9wdWxsLzIwNzA1XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMjE4NzlcblxuICAgIGlmICghZml4SGVhZGVyKSB7XG4gICAgICBzY3JvbGxZU3R5bGUgPSB7XG4gICAgICAgIG92ZXJmbG93WTogJ2hpZGRlbidcbiAgICAgIH07XG4gICAgfVxuXG4gICAgc2Nyb2xsVGFibGVTdHlsZSA9IHtcbiAgICAgIHdpZHRoOiBzY3JvbGwueCA9PT0gdHJ1ZSA/ICdhdXRvJyA6IHNjcm9sbC54LFxuICAgICAgbWluV2lkdGg6ICcxMDAlJ1xuICAgIH07XG4gIH1cblxuICB2YXIgb25Db2x1bW5SZXNpemUgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoY29sdW1uS2V5LCB3aWR0aCkge1xuICAgIGlmIChpc1Zpc2libGUoZnVsbFRhYmxlUmVmLmN1cnJlbnQpKSB7XG4gICAgICB1cGRhdGVDb2xzV2lkdGhzKGZ1bmN0aW9uICh3aWR0aHMpIHtcbiAgICAgICAgaWYgKHdpZHRocy5nZXQoY29sdW1uS2V5KSAhPT0gd2lkdGgpIHtcbiAgICAgICAgICB2YXIgbmV3V2lkdGhzID0gbmV3IE1hcCh3aWR0aHMpO1xuICAgICAgICAgIG5ld1dpZHRocy5zZXQoY29sdW1uS2V5LCB3aWR0aCk7XG4gICAgICAgICAgcmV0dXJuIG5ld1dpZHRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB3aWR0aHM7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICB2YXIgX3VzZVRpbWVvdXRMb2NrID0gdXNlVGltZW91dExvY2sobnVsbCksXG4gICAgICBfdXNlVGltZW91dExvY2syID0gX3NsaWNlZFRvQXJyYXkoX3VzZVRpbWVvdXRMb2NrLCAyKSxcbiAgICAgIHNldFNjcm9sbFRhcmdldCA9IF91c2VUaW1lb3V0TG9jazJbMF0sXG4gICAgICBnZXRTY3JvbGxUYXJnZXQgPSBfdXNlVGltZW91dExvY2syWzFdO1xuXG4gIGZ1bmN0aW9uIGZvcmNlU2Nyb2xsKHNjcm9sbExlZnQsIHRhcmdldCkge1xuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRhcmdldChzY3JvbGxMZWZ0KTtcbiAgICB9IGVsc2UgaWYgKHRhcmdldC5zY3JvbGxMZWZ0ICE9PSBzY3JvbGxMZWZ0KSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIHRhcmdldC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcbiAgICB9XG4gIH1cblxuICB2YXIgb25TY3JvbGwgPSBmdW5jdGlvbiBvblNjcm9sbChfcmVmMykge1xuICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gX3JlZjMuY3VycmVudFRhcmdldCxcbiAgICAgICAgc2Nyb2xsTGVmdCA9IF9yZWYzLnNjcm9sbExlZnQ7XG4gICAgdmFyIGlzUlRMID0gZGlyZWN0aW9uID09PSAncnRsJztcbiAgICB2YXIgbWVyZ2VkU2Nyb2xsTGVmdCA9IHR5cGVvZiBzY3JvbGxMZWZ0ID09PSAnbnVtYmVyJyA/IHNjcm9sbExlZnQgOiBjdXJyZW50VGFyZ2V0LnNjcm9sbExlZnQ7XG4gICAgdmFyIGNvbXBhcmVUYXJnZXQgPSBjdXJyZW50VGFyZ2V0IHx8IEVNUFRZX1NDUk9MTF9UQVJHRVQ7XG5cbiAgICBpZiAoIWdldFNjcm9sbFRhcmdldCgpIHx8IGdldFNjcm9sbFRhcmdldCgpID09PSBjb21wYXJlVGFyZ2V0KSB7XG4gICAgICB2YXIgX3N0aWNreVJlZiRjdXJyZW50O1xuXG4gICAgICBzZXRTY3JvbGxUYXJnZXQoY29tcGFyZVRhcmdldCk7XG4gICAgICBmb3JjZVNjcm9sbChtZXJnZWRTY3JvbGxMZWZ0LCBzY3JvbGxIZWFkZXJSZWYuY3VycmVudCk7XG4gICAgICBmb3JjZVNjcm9sbChtZXJnZWRTY3JvbGxMZWZ0LCBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpO1xuICAgICAgZm9yY2VTY3JvbGwobWVyZ2VkU2Nyb2xsTGVmdCwgKF9zdGlja3lSZWYkY3VycmVudCA9IHN0aWNreVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfc3RpY2t5UmVmJGN1cnJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zdGlja3lSZWYkY3VycmVudC5zZXRTY3JvbGxMZWZ0KTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFRhcmdldCkge1xuICAgICAgdmFyIHNjcm9sbFdpZHRoID0gY3VycmVudFRhcmdldC5zY3JvbGxXaWR0aCxcbiAgICAgICAgICBjbGllbnRXaWR0aCA9IGN1cnJlbnRUYXJnZXQuY2xpZW50V2lkdGg7XG5cbiAgICAgIGlmIChpc1JUTCkge1xuICAgICAgICBzZXRQaW5nZWRMZWZ0KC1tZXJnZWRTY3JvbGxMZWZ0IDwgc2Nyb2xsV2lkdGggLSBjbGllbnRXaWR0aCk7XG4gICAgICAgIHNldFBpbmdlZFJpZ2h0KC1tZXJnZWRTY3JvbGxMZWZ0ID4gMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRQaW5nZWRMZWZ0KG1lcmdlZFNjcm9sbExlZnQgPiAwKTtcbiAgICAgICAgc2V0UGluZ2VkUmlnaHQobWVyZ2VkU2Nyb2xsTGVmdCA8IHNjcm9sbFdpZHRoIC0gY2xpZW50V2lkdGgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICB2YXIgdHJpZ2dlck9uU2Nyb2xsID0gZnVuY3Rpb24gdHJpZ2dlck9uU2Nyb2xsKCkge1xuICAgIGlmIChzY3JvbGxCb2R5UmVmLmN1cnJlbnQpIHtcbiAgICAgIG9uU2Nyb2xsKHtcbiAgICAgICAgY3VycmVudFRhcmdldDogc2Nyb2xsQm9keVJlZi5jdXJyZW50XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIG9uRnVsbFRhYmxlUmVzaXplID0gZnVuY3Rpb24gb25GdWxsVGFibGVSZXNpemUoX3JlZjQpIHtcbiAgICB2YXIgd2lkdGggPSBfcmVmNC53aWR0aDtcbiAgICB0cmlnZ2VyT25TY3JvbGwoKTtcbiAgICBzZXRDb21wb25lbnRXaWR0aChmdWxsVGFibGVSZWYuY3VycmVudCA/IGZ1bGxUYWJsZVJlZi5jdXJyZW50Lm9mZnNldFdpZHRoIDogd2lkdGgpO1xuICB9OyAvLyBTeW5jIHNjcm9sbCBiYXIgd2hlbiBpbml0IG9yIGBob3Jpem9uU2Nyb2xsYCBjaGFuZ2VkXG5cblxuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0cmlnZ2VyT25TY3JvbGw7XG4gIH0sIFtdKTtcbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoaG9yaXpvblNjcm9sbCkge1xuICAgICAgdHJpZ2dlck9uU2Nyb2xsKCk7XG4gICAgfVxuICB9LCBbaG9yaXpvblNjcm9sbF0pOyAvLyA9PT09PT09PT09PT09PT09PT0gSU5URVJOQUwgSE9PS1MgPT09PT09PT09PT09PT09PT09XG5cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoaW50ZXJuYWxIb29rcyA9PT0gSU5URVJOQUxfSE9PS1MgJiYgaW50ZXJuYWxSZWZzKSB7XG4gICAgICBpbnRlcm5hbFJlZnMuYm9keS5jdXJyZW50ID0gc2Nyb2xsQm9keVJlZi5jdXJyZW50O1xuICAgIH1cbiAgfSk7IC8vID09PT09PT09PT09PT09PT09PT09PT0gUmVuZGVyID09PT09PT09PT09PT09PT09PT09PT1cblxuICB2YXIgVGFibGVDb21wb25lbnQgPSBnZXRDb21wb25lbnQoWyd0YWJsZSddLCAndGFibGUnKTsgLy8gVGFibGUgbGF5b3V0XG5cbiAgdmFyIG1lcmdlZFRhYmxlTGF5b3V0ID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRhYmxlTGF5b3V0KSB7XG4gICAgICByZXR1cm4gdGFibGVMYXlvdXQ7XG4gICAgfSAvLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8yNTIyN1xuICAgIC8vIFdoZW4gc2Nyb2xsLnggaXMgbWF4LWNvbnRlbnQsIG5vIG5lZWQgdG8gZml4IHRhYmxlIGxheW91dFxuICAgIC8vIGl0J3Mgd2lkdGggc2hvdWxkIHN0cmV0Y2ggb3V0IHRvIGZpdCBjb250ZW50XG5cblxuICAgIGlmIChmaXhDb2x1bW4pIHtcbiAgICAgIHJldHVybiBzY3JvbGwueCA9PT0gJ21heC1jb250ZW50JyA/ICdhdXRvJyA6ICdmaXhlZCc7XG4gICAgfVxuXG4gICAgaWYgKGZpeEhlYWRlciB8fCBpc1N0aWNreSB8fCBmbGF0dGVuQ29sdW1ucy5zb21lKGZ1bmN0aW9uIChfcmVmNSkge1xuICAgICAgdmFyIGVsbGlwc2lzID0gX3JlZjUuZWxsaXBzaXM7XG4gICAgICByZXR1cm4gZWxsaXBzaXM7XG4gICAgfSkpIHtcbiAgICAgIHJldHVybiAnZml4ZWQnO1xuICAgIH1cblxuICAgIHJldHVybiAnYXV0byc7XG4gIH0sIFtmaXhIZWFkZXIsIGZpeENvbHVtbiwgZmxhdHRlbkNvbHVtbnMsIHRhYmxlTGF5b3V0LCBpc1N0aWNreV0pO1xuICB2YXIgZ3JvdXBUYWJsZU5vZGU7IC8vIEhlYWRlciBwcm9wc1xuXG4gIHZhciBoZWFkZXJQcm9wcyA9IHtcbiAgICBjb2xXaWR0aHM6IGNvbFdpZHRocyxcbiAgICBjb2x1bUNvdW50OiBmbGF0dGVuQ29sdW1ucy5sZW5ndGgsXG4gICAgc3RpY2t5T2Zmc2V0czogc3RpY2t5T2Zmc2V0cyxcbiAgICBvbkhlYWRlclJvdzogb25IZWFkZXJSb3csXG4gICAgZml4SGVhZGVyOiBmaXhIZWFkZXIsXG4gICAgc2Nyb2xsOiBzY3JvbGxcbiAgfTsgLy8gRW1wdHlcblxuICB2YXIgZW1wdHlOb2RlID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGhhc0RhdGEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZW1wdHlUZXh0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gZW1wdHlUZXh0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVtcHR5VGV4dDtcbiAgfSwgW2hhc0RhdGEsIGVtcHR5VGV4dF0pOyAvLyBCb2R5XG5cbiAgdmFyIGJvZHlUYWJsZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEJvZHksIHtcbiAgICBkYXRhOiBtZXJnZWREYXRhLFxuICAgIG1lYXN1cmVDb2x1bW5XaWR0aDogZml4SGVhZGVyIHx8IGhvcml6b25TY3JvbGwgfHwgaXNTdGlja3ksXG4gICAgZXhwYW5kZWRLZXlzOiBtZXJnZWRFeHBhbmRlZEtleXMsXG4gICAgcm93RXhwYW5kYWJsZTogcm93RXhwYW5kYWJsZSxcbiAgICBnZXRSb3dLZXk6IGdldFJvd0tleSxcbiAgICBvblJvdzogb25Sb3csXG4gICAgZW1wdHlOb2RlOiBlbXB0eU5vZGUsXG4gICAgY2hpbGRyZW5Db2x1bW5OYW1lOiBtZXJnZWRDaGlsZHJlbkNvbHVtbk5hbWVcbiAgfSk7XG4gIHZhciBib2R5Q29sR3JvdXAgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb2xHcm91cCwge1xuICAgIGNvbFdpZHRoczogZmxhdHRlbkNvbHVtbnMubWFwKGZ1bmN0aW9uIChfcmVmNikge1xuICAgICAgdmFyIHdpZHRoID0gX3JlZjYud2lkdGg7XG4gICAgICByZXR1cm4gd2lkdGg7XG4gICAgfSksXG4gICAgY29sdW1uczogZmxhdHRlbkNvbHVtbnNcbiAgfSk7XG4gIHZhciBmb290ZXJUYWJsZSA9IHN1bW1hcnkgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9vdGVyLCBudWxsLCBzdW1tYXJ5KG1lcmdlZERhdGEpKTtcbiAgdmFyIGN1c3RvbWl6ZVNjcm9sbEJvZHkgPSBnZXRDb21wb25lbnQoWydib2R5J10pO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHR5cGVvZiBjdXN0b21pemVTY3JvbGxCb2R5ID09PSAnZnVuY3Rpb24nICYmIGhhc0RhdGEgJiYgIWZpeEhlYWRlcikge1xuICAgIHdhcm5pbmcoZmFsc2UsICdgY29tcG9uZW50cy5ib2R5YCB3aXRoIHJlbmRlciBwcm9wcyBpcyBvbmx5IHdvcmsgb24gYHNjcm9sbC55YC4nKTtcbiAgfVxuXG4gIGlmIChmaXhIZWFkZXIgfHwgaXNTdGlja3kpIHtcbiAgICB2YXIgYm9keUNvbnRlbnQ7XG5cbiAgICBpZiAodHlwZW9mIGN1c3RvbWl6ZVNjcm9sbEJvZHkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGJvZHlDb250ZW50ID0gY3VzdG9taXplU2Nyb2xsQm9keShtZXJnZWREYXRhLCB7XG4gICAgICAgIHNjcm9sbGJhclNpemU6IHNjcm9sbGJhclNpemUsXG4gICAgICAgIHJlZjogc2Nyb2xsQm9keVJlZixcbiAgICAgICAgb25TY3JvbGw6IG9uU2Nyb2xsXG4gICAgICB9KTtcbiAgICAgIGhlYWRlclByb3BzLmNvbFdpZHRocyA9IGZsYXR0ZW5Db2x1bW5zLm1hcChmdW5jdGlvbiAoX3JlZjcsIGluZGV4KSB7XG4gICAgICAgIHZhciB3aWR0aCA9IF9yZWY3LndpZHRoO1xuICAgICAgICB2YXIgY29sV2lkdGggPSBpbmRleCA9PT0gY29sdW1ucy5sZW5ndGggLSAxID8gd2lkdGggLSBzY3JvbGxiYXJTaXplIDogd2lkdGg7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjb2xXaWR0aCA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTihjb2xXaWR0aCkpIHtcbiAgICAgICAgICByZXR1cm4gY29sV2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICB3YXJuaW5nKGZhbHNlLCAnV2hlbiB1c2UgYGNvbXBvbmVudHMuYm9keWAgd2l0aCByZW5kZXIgcHJvcHMuIEVhY2ggY29sdW1uIHNob3VsZCBoYXZlIGEgZml4ZWQgYHdpZHRoYCB2YWx1ZS4nKTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9keUNvbnRlbnQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIHN0eWxlOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHNjcm9sbFhTdHlsZSksIHNjcm9sbFlTdHlsZSksXG4gICAgICAgIG9uU2Nyb2xsOiBvblNjcm9sbCxcbiAgICAgICAgcmVmOiBzY3JvbGxCb2R5UmVmLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ib2R5XCIpKVxuICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVGFibGVDb21wb25lbnQsIHtcbiAgICAgICAgc3R5bGU6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgc2Nyb2xsVGFibGVTdHlsZSksIHt9LCB7XG4gICAgICAgICAgdGFibGVMYXlvdXQ6IG1lcmdlZFRhYmxlTGF5b3V0XG4gICAgICAgIH0pXG4gICAgICB9LCBib2R5Q29sR3JvdXAsIGJvZHlUYWJsZSwgZm9vdGVyVGFibGUpKTtcbiAgICB9XG5cbiAgICBncm91cFRhYmxlTm9kZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBzaG93SGVhZGVyICE9PSBmYWxzZSAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChGaXhlZEhlYWRlciwgX2V4dGVuZHMoe1xuICAgICAgbm9EYXRhOiAhbWVyZ2VkRGF0YS5sZW5ndGgsXG4gICAgICBtYXhDb250ZW50U2Nyb2xsOiBob3Jpem9uU2Nyb2xsICYmIHNjcm9sbC54ID09PSAnbWF4LWNvbnRlbnQnXG4gICAgfSwgaGVhZGVyUHJvcHMsIGNvbHVtbkNvbnRleHQsIHtcbiAgICAgIGRpcmVjdGlvbjogZGlyZWN0aW9uIC8vIEZpeGVkIFByb3BzXG4gICAgICAsXG4gICAgICBvZmZzZXRIZWFkZXI6IG9mZnNldEhlYWRlcixcbiAgICAgIHN0aWNreUNsYXNzTmFtZTogc3RpY2t5Q2xhc3NOYW1lLFxuICAgICAgcmVmOiBzY3JvbGxIZWFkZXJSZWYsXG4gICAgICBvblNjcm9sbDogb25TY3JvbGxcbiAgICB9KSksIGJvZHlDb250ZW50LCBpc1N0aWNreSAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTdGlja3lTY3JvbGxCYXIsIHtcbiAgICAgIHJlZjogc3RpY2t5UmVmLFxuICAgICAgb2Zmc2V0U2Nyb2xsOiBvZmZzZXRTY3JvbGwsXG4gICAgICBzY3JvbGxCb2R5UmVmOiBzY3JvbGxCb2R5UmVmLFxuICAgICAgb25TY3JvbGw6IG9uU2Nyb2xsLFxuICAgICAgY29udGFpbmVyOiBjb250YWluZXJcbiAgICB9KSk7XG4gIH0gZWxzZSB7XG4gICAgZ3JvdXBUYWJsZU5vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICBzdHlsZTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBzY3JvbGxYU3R5bGUpLCBzY3JvbGxZU3R5bGUpLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY29udGVudFwiKSksXG4gICAgICBvblNjcm9sbDogb25TY3JvbGwsXG4gICAgICByZWY6IHNjcm9sbEJvZHlSZWZcbiAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUYWJsZUNvbXBvbmVudCwge1xuICAgICAgc3R5bGU6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgc2Nyb2xsVGFibGVTdHlsZSksIHt9LCB7XG4gICAgICAgIHRhYmxlTGF5b3V0OiBtZXJnZWRUYWJsZUxheW91dFxuICAgICAgfSlcbiAgICB9LCBib2R5Q29sR3JvdXAsIHNob3dIZWFkZXIgIT09IGZhbHNlICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEhlYWRlciwgX2V4dGVuZHMoe30sIGhlYWRlclByb3BzLCBjb2x1bW5Db250ZXh0KSksIGJvZHlUYWJsZSwgZm9vdGVyVGFibGUpKTtcbiAgfVxuXG4gIHZhciBhcmlhUHJvcHMgPSBnZXREYXRhQW5kQXJpYVByb3BzKHByb3BzKTtcbiAgdmFyIGZ1bGxUYWJsZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMocHJlZml4Q2xzLCBjbGFzc05hbWUsIChfY2xhc3NOYW1lcyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcnRsXCIpLCBkaXJlY3Rpb24gPT09ICdydGwnKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXBpbmctbGVmdFwiKSwgcGluZ2VkTGVmdCksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1waW5nLXJpZ2h0XCIpLCBwaW5nZWRSaWdodCksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1sYXlvdXQtZml4ZWRcIiksIHRhYmxlTGF5b3V0ID09PSAnZml4ZWQnKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWZpeGVkLWhlYWRlclwiKSwgZml4SGVhZGVyKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWZpeGVkLWNvbHVtblwiKSwgZml4Q29sdW1uKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXNjcm9sbC1ob3Jpem9udGFsXCIpLCBob3Jpem9uU2Nyb2xsKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWhhcy1maXgtbGVmdFwiKSwgZmxhdHRlbkNvbHVtbnNbMF0gJiYgZmxhdHRlbkNvbHVtbnNbMF0uZml4ZWQpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaGFzLWZpeC1yaWdodFwiKSwgZmxhdHRlbkNvbHVtbnNbZmxhdHRlbkNvbHVtbnMubGVuZ3RoIC0gMV0gJiYgZmxhdHRlbkNvbHVtbnNbZmxhdHRlbkNvbHVtbnMubGVuZ3RoIC0gMV0uZml4ZWQgPT09ICdyaWdodCcpLCBfY2xhc3NOYW1lcykpLFxuICAgIHN0eWxlOiBzdHlsZSxcbiAgICBpZDogaWQsXG4gICAgcmVmOiBmdWxsVGFibGVSZWZcbiAgfSwgYXJpYVByb3BzKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTWVtb1RhYmxlQ29udGVudCwge1xuICAgIHBpbmdMZWZ0OiBwaW5nZWRMZWZ0LFxuICAgIHBpbmdSaWdodDogcGluZ2VkUmlnaHQsXG4gICAgcHJvcHM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCB7fSwge1xuICAgICAgc3RpY2t5T2Zmc2V0czogc3RpY2t5T2Zmc2V0cyxcbiAgICAgIG1lcmdlZEV4cGFuZGVkS2V5czogbWVyZ2VkRXhwYW5kZWRLZXlzXG4gICAgfSlcbiAgfSwgdGl0bGUgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUGFuZWwsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdGl0bGVcIilcbiAgfSwgdGl0bGUobWVyZ2VkRGF0YSkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNvbnRhaW5lclwiKVxuICB9LCBncm91cFRhYmxlTm9kZSksIGZvb3RlciAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChQYW5lbCwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1mb290ZXJcIilcbiAgfSwgZm9vdGVyKG1lcmdlZERhdGEpKSkpO1xuXG4gIGlmIChob3Jpem9uU2Nyb2xsKSB7XG4gICAgZnVsbFRhYmxlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVzaXplT2JzZXJ2ZXIsIHtcbiAgICAgIG9uUmVzaXplOiBvbkZ1bGxUYWJsZVJlc2l6ZVxuICAgIH0sIGZ1bGxUYWJsZSk7XG4gIH1cblxuICB2YXIgVGFibGVDb250ZXh0VmFsdWUgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICBnZXRDb21wb25lbnQ6IGdldENvbXBvbmVudCxcbiAgICAgIHNjcm9sbGJhclNpemU6IHNjcm9sbGJhclNpemUsXG4gICAgICBkaXJlY3Rpb246IGRpcmVjdGlvbixcbiAgICAgIGZpeGVkSW5mb0xpc3Q6IGZsYXR0ZW5Db2x1bW5zLm1hcChmdW5jdGlvbiAoXywgY29sSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGdldENlbGxGaXhlZEluZm8oY29sSW5kZXgsIGNvbEluZGV4LCBmbGF0dGVuQ29sdW1ucywgc3RpY2t5T2Zmc2V0cywgZGlyZWN0aW9uKTtcbiAgICAgIH0pLFxuICAgICAgaXNTdGlja3k6IGlzU3RpY2t5XG4gICAgfTtcbiAgfSwgW3ByZWZpeENscywgZ2V0Q29tcG9uZW50LCBzY3JvbGxiYXJTaXplLCBkaXJlY3Rpb24sIGZsYXR0ZW5Db2x1bW5zLCBzdGlja3lPZmZzZXRzLCBkaXJlY3Rpb24sIGlzU3RpY2t5XSk7XG4gIHZhciBCb2R5Q29udGV4dFZhbHVlID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY29sdW1uQ29udGV4dCksIHt9LCB7XG4gICAgICB0YWJsZUxheW91dDogbWVyZ2VkVGFibGVMYXlvdXQsXG4gICAgICByb3dDbGFzc05hbWU6IHJvd0NsYXNzTmFtZSxcbiAgICAgIGV4cGFuZGVkUm93Q2xhc3NOYW1lOiBleHBhbmRlZFJvd0NsYXNzTmFtZSxcbiAgICAgIGNvbXBvbmVudFdpZHRoOiBjb21wb25lbnRXaWR0aCxcbiAgICAgIGZpeEhlYWRlcjogZml4SGVhZGVyLFxuICAgICAgZml4Q29sdW1uOiBmaXhDb2x1bW4sXG4gICAgICBob3Jpem9uU2Nyb2xsOiBob3Jpem9uU2Nyb2xsLFxuICAgICAgZXhwYW5kSWNvbjogbWVyZ2VkRXhwYW5kSWNvbixcbiAgICAgIGV4cGFuZGFibGVUeXBlOiBleHBhbmRhYmxlVHlwZSxcbiAgICAgIGV4cGFuZFJvd0J5Q2xpY2s6IGV4cGFuZFJvd0J5Q2xpY2ssXG4gICAgICBleHBhbmRlZFJvd1JlbmRlcjogZXhwYW5kZWRSb3dSZW5kZXIsXG4gICAgICBvblRyaWdnZXJFeHBhbmQ6IG9uVHJpZ2dlckV4cGFuZCxcbiAgICAgIGV4cGFuZEljb25Db2x1bW5JbmRleDogZXhwYW5kSWNvbkNvbHVtbkluZGV4LFxuICAgICAgaW5kZW50U2l6ZTogaW5kZW50U2l6ZVxuICAgIH0pO1xuICB9LCBbY29sdW1uQ29udGV4dCwgbWVyZ2VkVGFibGVMYXlvdXQsIHJvd0NsYXNzTmFtZSwgZXhwYW5kZWRSb3dDbGFzc05hbWUsIGNvbXBvbmVudFdpZHRoLCBmaXhIZWFkZXIsIGZpeENvbHVtbiwgaG9yaXpvblNjcm9sbCwgbWVyZ2VkRXhwYW5kSWNvbiwgZXhwYW5kYWJsZVR5cGUsIGV4cGFuZFJvd0J5Q2xpY2ssIGV4cGFuZGVkUm93UmVuZGVyLCBvblRyaWdnZXJFeHBhbmQsIGV4cGFuZEljb25Db2x1bW5JbmRleCwgaW5kZW50U2l6ZV0pO1xuICB2YXIgUmVzaXplQ29udGV4dFZhbHVlID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9uQ29sdW1uUmVzaXplOiBvbkNvbHVtblJlc2l6ZVxuICAgIH07XG4gIH0sIFtvbkNvbHVtblJlc2l6ZV0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVGFibGVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IFRhYmxlQ29udGV4dFZhbHVlXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEJvZHlDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IEJvZHlDb250ZXh0VmFsdWVcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVzaXplQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBSZXNpemVDb250ZXh0VmFsdWVcbiAgfSwgZnVsbFRhYmxlKSkpO1xufVxuXG5UYWJsZS5Db2x1bW4gPSBDb2x1bW47XG5UYWJsZS5Db2x1bW5Hcm91cCA9IENvbHVtbkdyb3VwO1xuVGFibGUuU3VtbWFyeSA9IEZvb3RlckNvbXBvbmVudHM7XG5UYWJsZS5kZWZhdWx0UHJvcHMgPSB7XG4gIHJvd0tleTogJ2tleScsXG4gIHByZWZpeENsczogJ3JjLXRhYmxlJyxcbiAgZW1wdHlUZXh0OiBmdW5jdGlvbiBlbXB0eVRleHQoKSB7XG4gICAgcmV0dXJuICdObyBEYXRhJztcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IFRhYmxlOyIsImltcG9ydCBUYWJsZSBmcm9tICcuL1RhYmxlJztcbmltcG9ydCB7IEZvb3RlckNvbXBvbmVudHMgYXMgU3VtbWFyeSB9IGZyb20gJy4vRm9vdGVyJztcbmltcG9ydCBDb2x1bW4gZnJvbSAnLi9zdWdhci9Db2x1bW4nO1xuaW1wb3J0IENvbHVtbkdyb3VwIGZyb20gJy4vc3VnYXIvQ29sdW1uR3JvdXAnO1xuaW1wb3J0IHsgSU5URVJOQUxfQ09MX0RFRklORSB9IGZyb20gJy4vdXRpbHMvbGVnYWN5VXRpbCc7XG5leHBvcnQgeyBTdW1tYXJ5LCBDb2x1bW4sIENvbHVtbkdyb3VwLCBJTlRFUk5BTF9DT0xfREVGSU5FIH07XG5leHBvcnQgZGVmYXVsdCBUYWJsZTsiLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG52YXIgdW5zYWZlTGlmZWN5Y2xlc1BvbHlmaWxsID0gZnVuY3Rpb24gdW5zYWZlTGlmZWN5Y2xlc1BvbHlmaWxsKENvbXBvbmVudCkge1xuICB2YXIgcHJvdG90eXBlID0gQ29tcG9uZW50LnByb3RvdHlwZTtcblxuICBpZiAoIXByb3RvdHlwZSB8fCAhcHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbiBvbmx5IHBvbHlmaWxsIGNsYXNzIGNvbXBvbmVudHMnKTtcbiAgfSAvLyBvbmx5IGhhbmRsZSBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzXG5cblxuICBpZiAodHlwZW9mIHByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIENvbXBvbmVudDtcbiAgfSAvLyBJbiBSZWFjdCAxNi45LCBSZWFjdC5Qcm9maWxlciB3YXMgaW50cm9kdWNlZCB0b2dldGhlciB3aXRoIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzXG4gIC8vIGh0dHBzOi8vcmVhY3Rqcy5vcmcvYmxvZy8yMDE5LzA4LzA4L3JlYWN0LXYxNi45LjAuaHRtbCNwZXJmb3JtYW5jZS1tZWFzdXJlbWVudHMtd2l0aC1yZWFjdHByb2ZpbGVyXG5cblxuICBpZiAoIVJlYWN0LlByb2ZpbGVyKSB7XG4gICAgcmV0dXJuIENvbXBvbmVudDtcbiAgfSAvLyBIZXJlIHBvbHlmaWxsIGdldCBzdGFydGVkXG5cblxuICBwcm90b3R5cGUuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPSBwcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcztcbiAgZGVsZXRlIHByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzO1xuICByZXR1cm4gQ29tcG9uZW50O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdW5zYWZlTGlmZWN5Y2xlc1BvbHlmaWxsOyIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0FycmF5Q2hpbGRyZW4oY2hpbGRyZW4pIHtcbiAgdmFyIHJldCA9IFtdO1xuICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICByZXQucHVzaChjaGlsZCk7XG4gIH0pO1xuICByZXR1cm4gcmV0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZENoaWxkSW5DaGlsZHJlbkJ5S2V5KGNoaWxkcmVuLCBrZXkpIHtcbiAgdmFyIHJldCA9IG51bGw7XG4gIGlmIChjaGlsZHJlbikge1xuICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBpZiAocmV0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5rZXkgPT09IGtleSkge1xuICAgICAgICByZXQgPSBjaGlsZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZFNob3duQ2hpbGRJbkNoaWxkcmVuQnlLZXkoY2hpbGRyZW4sIGtleSwgc2hvd1Byb3ApIHtcbiAgdmFyIHJldCA9IG51bGw7XG4gIGlmIChjaGlsZHJlbikge1xuICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBpZiAoY2hpbGQgJiYgY2hpbGQua2V5ID09PSBrZXkgJiYgY2hpbGQucHJvcHNbc2hvd1Byb3BdKSB7XG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3R3byBjaGlsZCB3aXRoIHNhbWUga2V5IGZvciA8cmMtYW5pbWF0ZT4gY2hpbGRyZW4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXQgPSBjaGlsZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZEhpZGRlbkNoaWxkSW5DaGlsZHJlbkJ5S2V5KGNoaWxkcmVuLCBrZXksIHNob3dQcm9wKSB7XG4gIHZhciBmb3VuZCA9IDA7XG4gIGlmIChjaGlsZHJlbikge1xuICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm91bmQgPSBjaGlsZCAmJiBjaGlsZC5rZXkgPT09IGtleSAmJiAhY2hpbGQucHJvcHNbc2hvd1Byb3BdO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2FtZUNoaWxkcmVuKGMxLCBjMiwgc2hvd1Byb3ApIHtcbiAgdmFyIHNhbWUgPSBjMS5sZW5ndGggPT09IGMyLmxlbmd0aDtcbiAgaWYgKHNhbWUpIHtcbiAgICBjMS5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCwgaW5kZXgpIHtcbiAgICAgIHZhciBjaGlsZDIgPSBjMltpbmRleF07XG4gICAgICBpZiAoY2hpbGQgJiYgY2hpbGQyKSB7XG4gICAgICAgIGlmIChjaGlsZCAmJiAhY2hpbGQyIHx8ICFjaGlsZCAmJiBjaGlsZDIpIHtcbiAgICAgICAgICBzYW1lID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hpbGQua2V5ICE9PSBjaGlsZDIua2V5KSB7XG4gICAgICAgICAgc2FtZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKHNob3dQcm9wICYmIGNoaWxkLnByb3BzW3Nob3dQcm9wXSAhPT0gY2hpbGQyLnByb3BzW3Nob3dQcm9wXSkge1xuICAgICAgICAgIHNhbWUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBzYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VDaGlsZHJlbihwcmV2LCBuZXh0KSB7XG4gIHZhciByZXQgPSBbXTtcblxuICAvLyBGb3IgZWFjaCBrZXkgb2YgYG5leHRgLCB0aGUgbGlzdCBvZiBrZXlzIHRvIGluc2VydCBiZWZvcmUgdGhhdCBrZXkgaW5cbiAgLy8gdGhlIGNvbWJpbmVkIGxpc3RcbiAgdmFyIG5leHRDaGlsZHJlblBlbmRpbmcgPSB7fTtcbiAgdmFyIHBlbmRpbmdDaGlsZHJlbiA9IFtdO1xuICBwcmV2LmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgaWYgKGNoaWxkICYmIGZpbmRDaGlsZEluQ2hpbGRyZW5CeUtleShuZXh0LCBjaGlsZC5rZXkpKSB7XG4gICAgICBpZiAocGVuZGluZ0NoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBuZXh0Q2hpbGRyZW5QZW5kaW5nW2NoaWxkLmtleV0gPSBwZW5kaW5nQ2hpbGRyZW47XG4gICAgICAgIHBlbmRpbmdDaGlsZHJlbiA9IFtdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZW5kaW5nQ2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgfVxuICB9KTtcblxuICBuZXh0LmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgaWYgKGNoaWxkICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuZXh0Q2hpbGRyZW5QZW5kaW5nLCBjaGlsZC5rZXkpKSB7XG4gICAgICByZXQgPSByZXQuY29uY2F0KG5leHRDaGlsZHJlblBlbmRpbmdbY2hpbGQua2V5XSk7XG4gICAgfVxuICAgIHJldC5wdXNoKGNoaWxkKTtcbiAgfSk7XG5cbiAgcmV0ID0gcmV0LmNvbmNhdChwZW5kaW5nQ2hpbGRyZW4pO1xuXG4gIHJldHVybiByZXQ7XG59IiwidmFyIHV0aWwgPSB7XG4gIGlzQXBwZWFyU3VwcG9ydGVkOiBmdW5jdGlvbiBpc0FwcGVhclN1cHBvcnRlZChwcm9wcykge1xuICAgIHJldHVybiBwcm9wcy50cmFuc2l0aW9uTmFtZSAmJiBwcm9wcy50cmFuc2l0aW9uQXBwZWFyIHx8IHByb3BzLmFuaW1hdGlvbi5hcHBlYXI7XG4gIH0sXG4gIGlzRW50ZXJTdXBwb3J0ZWQ6IGZ1bmN0aW9uIGlzRW50ZXJTdXBwb3J0ZWQocHJvcHMpIHtcbiAgICByZXR1cm4gcHJvcHMudHJhbnNpdGlvbk5hbWUgJiYgcHJvcHMudHJhbnNpdGlvbkVudGVyIHx8IHByb3BzLmFuaW1hdGlvbi5lbnRlcjtcbiAgfSxcbiAgaXNMZWF2ZVN1cHBvcnRlZDogZnVuY3Rpb24gaXNMZWF2ZVN1cHBvcnRlZChwcm9wcykge1xuICAgIHJldHVybiBwcm9wcy50cmFuc2l0aW9uTmFtZSAmJiBwcm9wcy50cmFuc2l0aW9uTGVhdmUgfHwgcHJvcHMuYW5pbWF0aW9uLmxlYXZlO1xuICB9LFxuICBhbGxvd0FwcGVhckNhbGxiYWNrOiBmdW5jdGlvbiBhbGxvd0FwcGVhckNhbGxiYWNrKHByb3BzKSB7XG4gICAgcmV0dXJuIHByb3BzLnRyYW5zaXRpb25BcHBlYXIgfHwgcHJvcHMuYW5pbWF0aW9uLmFwcGVhcjtcbiAgfSxcbiAgYWxsb3dFbnRlckNhbGxiYWNrOiBmdW5jdGlvbiBhbGxvd0VudGVyQ2FsbGJhY2socHJvcHMpIHtcbiAgICByZXR1cm4gcHJvcHMudHJhbnNpdGlvbkVudGVyIHx8IHByb3BzLmFuaW1hdGlvbi5lbnRlcjtcbiAgfSxcbiAgYWxsb3dMZWF2ZUNhbGxiYWNrOiBmdW5jdGlvbiBhbGxvd0xlYXZlQ2FsbGJhY2socHJvcHMpIHtcbiAgICByZXR1cm4gcHJvcHMudHJhbnNpdGlvbkxlYXZlIHx8IHByb3BzLmFuaW1hdGlvbi5sZWF2ZTtcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IHV0aWw7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuJztcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY3NzQW5pbWF0ZSwgeyBpc0Nzc0FuaW1hdGlvblN1cHBvcnRlZCB9IGZyb20gJ2Nzcy1hbmltYXRpb24nO1xuaW1wb3J0IGFuaW1VdGlsIGZyb20gJy4vdXRpbC9hbmltYXRlJztcblxudmFyIHRyYW5zaXRpb25NYXAgPSB7XG4gIGVudGVyOiAndHJhbnNpdGlvbkVudGVyJyxcbiAgYXBwZWFyOiAndHJhbnNpdGlvbkFwcGVhcicsXG4gIGxlYXZlOiAndHJhbnNpdGlvbkxlYXZlJ1xufTtcblxudmFyIEFuaW1hdGVDaGlsZCA9IGZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhBbmltYXRlQ2hpbGQsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIEFuaW1hdGVDaGlsZCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQW5pbWF0ZUNoaWxkKTtcblxuICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCAoQW5pbWF0ZUNoaWxkLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoQW5pbWF0ZUNoaWxkKSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQW5pbWF0ZUNoaWxkLCBbe1xuICAgIGtleTogJ2NvbXBvbmVudFdpbGxVbm1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICB0aGlzLnN0b3AoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdjb21wb25lbnRXaWxsRW50ZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsRW50ZXIoZG9uZSkge1xuICAgICAgaWYgKGFuaW1VdGlsLmlzRW50ZXJTdXBwb3J0ZWQodGhpcy5wcm9wcykpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uKCdlbnRlcicsIGRvbmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NvbXBvbmVudFdpbGxBcHBlYXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsQXBwZWFyKGRvbmUpIHtcbiAgICAgIGlmIChhbmltVXRpbC5pc0FwcGVhclN1cHBvcnRlZCh0aGlzLnByb3BzKSkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb24oJ2FwcGVhcicsIGRvbmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NvbXBvbmVudFdpbGxMZWF2ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxMZWF2ZShkb25lKSB7XG4gICAgICBpZiAoYW5pbVV0aWwuaXNMZWF2ZVN1cHBvcnRlZCh0aGlzLnByb3BzKSkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb24oJ2xlYXZlJywgZG9uZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBhbHdheXMgc3luYywgZG8gbm90IGludGVydXB0IHdpdGggcmVhY3QgY29tcG9uZW50IGxpZmUgY3ljbGVcbiAgICAgICAgLy8gdXBkYXRlIGhpZGRlbiAtPiBhbmltYXRlIGhpZGRlbiAtPlxuICAgICAgICAvLyBkaWRVcGRhdGUgLT4gYW5pbWF0ZSBsZWF2ZSAtPiB1bm1vdW50IChpZiBhbmltYXRlIGlzIG5vbmUpXG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd0cmFuc2l0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdHJhbnNpdGlvbihhbmltYXRpb25UeXBlLCBmaW5pc2hDYWxsYmFjaykge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBub2RlID0gUmVhY3RET00uZmluZERPTU5vZGUodGhpcyk7XG4gICAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuICAgICAgdmFyIHRyYW5zaXRpb25OYW1lID0gcHJvcHMudHJhbnNpdGlvbk5hbWU7XG4gICAgICB2YXIgbmFtZUlzT2JqID0gdHlwZW9mIHRyYW5zaXRpb25OYW1lID09PSAnb2JqZWN0JztcbiAgICAgIHRoaXMuc3RvcCgpO1xuICAgICAgdmFyIGVuZCA9IGZ1bmN0aW9uIGVuZCgpIHtcbiAgICAgICAgX3RoaXMyLnN0b3BwZXIgPSBudWxsO1xuICAgICAgICBmaW5pc2hDYWxsYmFjaygpO1xuICAgICAgfTtcbiAgICAgIGlmICgoaXNDc3NBbmltYXRpb25TdXBwb3J0ZWQgfHwgIXByb3BzLmFuaW1hdGlvblthbmltYXRpb25UeXBlXSkgJiYgdHJhbnNpdGlvbk5hbWUgJiYgcHJvcHNbdHJhbnNpdGlvbk1hcFthbmltYXRpb25UeXBlXV0pIHtcbiAgICAgICAgdmFyIG5hbWUgPSBuYW1lSXNPYmogPyB0cmFuc2l0aW9uTmFtZVthbmltYXRpb25UeXBlXSA6IHRyYW5zaXRpb25OYW1lICsgJy0nICsgYW5pbWF0aW9uVHlwZTtcbiAgICAgICAgdmFyIGFjdGl2ZU5hbWUgPSBuYW1lICsgJy1hY3RpdmUnO1xuICAgICAgICBpZiAobmFtZUlzT2JqICYmIHRyYW5zaXRpb25OYW1lW2FuaW1hdGlvblR5cGUgKyAnQWN0aXZlJ10pIHtcbiAgICAgICAgICBhY3RpdmVOYW1lID0gdHJhbnNpdGlvbk5hbWVbYW5pbWF0aW9uVHlwZSArICdBY3RpdmUnXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0b3BwZXIgPSBjc3NBbmltYXRlKG5vZGUsIHtcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIGFjdGl2ZTogYWN0aXZlTmFtZVxuICAgICAgICB9LCBlbmQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdG9wcGVyID0gcHJvcHMuYW5pbWF0aW9uW2FuaW1hdGlvblR5cGVdKG5vZGUsIGVuZCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc3RvcCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICB2YXIgc3RvcHBlciA9IHRoaXMuc3RvcHBlcjtcbiAgICAgIGlmIChzdG9wcGVyKSB7XG4gICAgICAgIHRoaXMuc3RvcHBlciA9IG51bGw7XG4gICAgICAgIHN0b3BwZXIuc3RvcCgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBBbmltYXRlQ2hpbGQ7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cbkFuaW1hdGVDaGlsZC5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMuYW55LFxuICBhbmltYXRpb246IFByb3BUeXBlcy5hbnksXG4gIHRyYW5zaXRpb25OYW1lOiBQcm9wVHlwZXMuYW55XG59O1xuZXhwb3J0IGRlZmF1bHQgQW5pbWF0ZUNoaWxkOyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcyc7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eSc7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjayc7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcyc7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4nO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgdW5zYWZlTGlmZWN5Y2xlc1BvbHlmaWxsIGZyb20gJ3JjLXV0aWwvZXMvdW5zYWZlTGlmZWN5Y2xlc1BvbHlmaWxsJztcbmltcG9ydCB7IHRvQXJyYXlDaGlsZHJlbiwgbWVyZ2VDaGlsZHJlbiwgZmluZFNob3duQ2hpbGRJbkNoaWxkcmVuQnlLZXksIGZpbmRDaGlsZEluQ2hpbGRyZW5CeUtleSwgaXNTYW1lQ2hpbGRyZW4gfSBmcm9tICcuL0NoaWxkcmVuVXRpbHMnO1xuaW1wb3J0IEFuaW1hdGVDaGlsZCBmcm9tICcuL0FuaW1hdGVDaGlsZCc7XG5pbXBvcnQgYW5pbVV0aWwgZnJvbSAnLi91dGlsL2FuaW1hdGUnO1xuXG52YXIgZGVmYXVsdEtleSA9ICdyY19hbmltYXRlXycgKyBEYXRlLm5vdygpO1xuXG5mdW5jdGlvbiBnZXRDaGlsZHJlbkZyb21Qcm9wcyhwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcbiAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkge1xuICAgIGlmICghY2hpbGRyZW4ua2V5KSB7XG4gICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAgIGtleTogZGVmYXVsdEtleVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBjaGlsZHJlbjtcbn1cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnZhciBBbmltYXRlID0gZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKEFuaW1hdGUsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICBmdW5jdGlvbiBBbmltYXRlKHByb3BzKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFuaW1hdGUpO1xuXG4gICAgdmFyIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgKEFuaW1hdGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihBbmltYXRlKSkuY2FsbCh0aGlzLCBwcm9wcykpO1xuXG4gICAgX2luaXRpYWxpc2VQcm9wcy5jYWxsKF90aGlzKTtcblxuICAgIF90aGlzLmN1cnJlbnRseUFuaW1hdGluZ0tleXMgPSB7fTtcbiAgICBfdGhpcy5rZXlzVG9FbnRlciA9IFtdO1xuICAgIF90aGlzLmtleXNUb0xlYXZlID0gW107XG5cbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGNoaWxkcmVuOiB0b0FycmF5Q2hpbGRyZW4oZ2V0Q2hpbGRyZW5Gcm9tUHJvcHMocHJvcHMpKVxuICAgIH07XG5cbiAgICBfdGhpcy5jaGlsZHJlblJlZnMgPSB7fTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQW5pbWF0ZSwgW3tcbiAgICBrZXk6ICdjb21wb25lbnREaWRNb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBzaG93UHJvcCA9IHRoaXMucHJvcHMuc2hvd1Byb3A7XG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnN0YXRlLmNoaWxkcmVuO1xuICAgICAgaWYgKHNob3dQcm9wKSB7XG4gICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgIHJldHVybiAhIWNoaWxkLnByb3BzW3Nob3dQcm9wXTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgICBfdGhpczIucGVyZm9ybUFwcGVhcihjaGlsZC5rZXkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB0aGlzLm5leHRQcm9wcyA9IG5leHRQcm9wcztcbiAgICAgIHZhciBuZXh0Q2hpbGRyZW4gPSB0b0FycmF5Q2hpbGRyZW4oZ2V0Q2hpbGRyZW5Gcm9tUHJvcHMobmV4dFByb3BzKSk7XG4gICAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuICAgICAgLy8gZXhjbHVzaXZlIG5lZWRzIGltbWVkaWF0ZSByZXNwb25zZVxuICAgICAgaWYgKHByb3BzLmV4Y2x1c2l2ZSkge1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmN1cnJlbnRseUFuaW1hdGluZ0tleXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIF90aGlzMy5zdG9wKGtleSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdmFyIHNob3dQcm9wID0gcHJvcHMuc2hvd1Byb3A7XG4gICAgICB2YXIgY3VycmVudGx5QW5pbWF0aW5nS2V5cyA9IHRoaXMuY3VycmVudGx5QW5pbWF0aW5nS2V5cztcbiAgICAgIC8vIGxhc3QgcHJvcHMgY2hpbGRyZW4gaWYgZXhjbHVzaXZlXG4gICAgICB2YXIgY3VycmVudENoaWxkcmVuID0gcHJvcHMuZXhjbHVzaXZlID8gdG9BcnJheUNoaWxkcmVuKGdldENoaWxkcmVuRnJvbVByb3BzKHByb3BzKSkgOiB0aGlzLnN0YXRlLmNoaWxkcmVuO1xuICAgICAgLy8gaW4gY2FzZSBkZXN0cm95IGluIHNob3dQcm9wIG1vZGVcbiAgICAgIHZhciBuZXdDaGlsZHJlbiA9IFtdO1xuICAgICAgaWYgKHNob3dQcm9wKSB7XG4gICAgICAgIGN1cnJlbnRDaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjdXJyZW50Q2hpbGQpIHtcbiAgICAgICAgICB2YXIgbmV4dENoaWxkID0gY3VycmVudENoaWxkICYmIGZpbmRDaGlsZEluQ2hpbGRyZW5CeUtleShuZXh0Q2hpbGRyZW4sIGN1cnJlbnRDaGlsZC5rZXkpO1xuICAgICAgICAgIHZhciBuZXdDaGlsZCA9IHZvaWQgMDtcbiAgICAgICAgICBpZiAoKCFuZXh0Q2hpbGQgfHwgIW5leHRDaGlsZC5wcm9wc1tzaG93UHJvcF0pICYmIGN1cnJlbnRDaGlsZC5wcm9wc1tzaG93UHJvcF0pIHtcbiAgICAgICAgICAgIG5ld0NoaWxkID0gUmVhY3QuY2xvbmVFbGVtZW50KG5leHRDaGlsZCB8fCBjdXJyZW50Q2hpbGQsIF9kZWZpbmVQcm9wZXJ0eSh7fSwgc2hvd1Byb3AsIHRydWUpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3Q2hpbGQgPSBuZXh0Q2hpbGQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXdDaGlsZCkge1xuICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChuZXdDaGlsZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbmV4dENoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKG5leHRDaGlsZCkge1xuICAgICAgICAgIGlmICghbmV4dENoaWxkIHx8ICFmaW5kQ2hpbGRJbkNoaWxkcmVuQnlLZXkoY3VycmVudENoaWxkcmVuLCBuZXh0Q2hpbGQua2V5KSkge1xuICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChuZXh0Q2hpbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdDaGlsZHJlbiA9IG1lcmdlQ2hpbGRyZW4oY3VycmVudENoaWxkcmVuLCBuZXh0Q2hpbGRyZW4pO1xuICAgICAgfVxuXG4gICAgICAvLyBuZWVkIHJlbmRlciB0byBhdm9pZCB1cGRhdGVcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBjaGlsZHJlbjogbmV3Q2hpbGRyZW5cbiAgICAgIH0pO1xuXG4gICAgICBuZXh0Q2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgdmFyIGtleSA9IGNoaWxkICYmIGNoaWxkLmtleTtcbiAgICAgICAgaWYgKGNoaWxkICYmIGN1cnJlbnRseUFuaW1hdGluZ0tleXNba2V5XSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaGFzUHJldiA9IGNoaWxkICYmIGZpbmRDaGlsZEluQ2hpbGRyZW5CeUtleShjdXJyZW50Q2hpbGRyZW4sIGtleSk7XG4gICAgICAgIGlmIChzaG93UHJvcCkge1xuICAgICAgICAgIHZhciBzaG93SW5OZXh0ID0gY2hpbGQucHJvcHNbc2hvd1Byb3BdO1xuICAgICAgICAgIGlmIChoYXNQcmV2KSB7XG4gICAgICAgICAgICB2YXIgc2hvd0luTm93ID0gZmluZFNob3duQ2hpbGRJbkNoaWxkcmVuQnlLZXkoY3VycmVudENoaWxkcmVuLCBrZXksIHNob3dQcm9wKTtcbiAgICAgICAgICAgIGlmICghc2hvd0luTm93ICYmIHNob3dJbk5leHQpIHtcbiAgICAgICAgICAgICAgX3RoaXMzLmtleXNUb0VudGVyLnB1c2goa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHNob3dJbk5leHQpIHtcbiAgICAgICAgICAgIF90aGlzMy5rZXlzVG9FbnRlci5wdXNoKGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNQcmV2KSB7XG4gICAgICAgICAgX3RoaXMzLmtleXNUb0VudGVyLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGN1cnJlbnRDaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICB2YXIga2V5ID0gY2hpbGQgJiYgY2hpbGQua2V5O1xuICAgICAgICBpZiAoY2hpbGQgJiYgY3VycmVudGx5QW5pbWF0aW5nS2V5c1trZXldKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBoYXNOZXh0ID0gY2hpbGQgJiYgZmluZENoaWxkSW5DaGlsZHJlbkJ5S2V5KG5leHRDaGlsZHJlbiwga2V5KTtcbiAgICAgICAgaWYgKHNob3dQcm9wKSB7XG4gICAgICAgICAgdmFyIHNob3dJbk5vdyA9IGNoaWxkLnByb3BzW3Nob3dQcm9wXTtcbiAgICAgICAgICBpZiAoaGFzTmV4dCkge1xuICAgICAgICAgICAgdmFyIHNob3dJbk5leHQgPSBmaW5kU2hvd25DaGlsZEluQ2hpbGRyZW5CeUtleShuZXh0Q2hpbGRyZW4sIGtleSwgc2hvd1Byb3ApO1xuICAgICAgICAgICAgaWYgKCFzaG93SW5OZXh0ICYmIHNob3dJbk5vdykge1xuICAgICAgICAgICAgICBfdGhpczMua2V5c1RvTGVhdmUucHVzaChrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoc2hvd0luTm93KSB7XG4gICAgICAgICAgICBfdGhpczMua2V5c1RvTGVhdmUucHVzaChrZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaGFzTmV4dCkge1xuICAgICAgICAgIF90aGlzMy5rZXlzVG9MZWF2ZS5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NvbXBvbmVudERpZFVwZGF0ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgIHZhciBrZXlzVG9FbnRlciA9IHRoaXMua2V5c1RvRW50ZXI7XG4gICAgICB0aGlzLmtleXNUb0VudGVyID0gW107XG4gICAgICBrZXlzVG9FbnRlci5mb3JFYWNoKHRoaXMucGVyZm9ybUVudGVyKTtcbiAgICAgIHZhciBrZXlzVG9MZWF2ZSA9IHRoaXMua2V5c1RvTGVhdmU7XG4gICAgICB0aGlzLmtleXNUb0xlYXZlID0gW107XG4gICAgICBrZXlzVG9MZWF2ZS5mb3JFYWNoKHRoaXMucGVyZm9ybUxlYXZlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdpc1ZhbGlkQ2hpbGRCeUtleScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzVmFsaWRDaGlsZEJ5S2V5KGN1cnJlbnRDaGlsZHJlbiwga2V5KSB7XG4gICAgICB2YXIgc2hvd1Byb3AgPSB0aGlzLnByb3BzLnNob3dQcm9wO1xuICAgICAgaWYgKHNob3dQcm9wKSB7XG4gICAgICAgIHJldHVybiBmaW5kU2hvd25DaGlsZEluQ2hpbGRyZW5CeUtleShjdXJyZW50Q2hpbGRyZW4sIGtleSwgc2hvd1Byb3ApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpbmRDaGlsZEluQ2hpbGRyZW5CeUtleShjdXJyZW50Q2hpbGRyZW4sIGtleSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc3RvcCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3Aoa2V5KSB7XG4gICAgICBkZWxldGUgdGhpcy5jdXJyZW50bHlBbmltYXRpbmdLZXlzW2tleV07XG4gICAgICB2YXIgY29tcG9uZW50ID0gdGhpcy5jaGlsZHJlblJlZnNba2V5XTtcbiAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgY29tcG9uZW50LnN0b3AoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZW5kZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgdmFyIHByb3BzID0gdGhpcy5wcm9wcztcbiAgICAgIHRoaXMubmV4dFByb3BzID0gcHJvcHM7XG4gICAgICB2YXIgc3RhdGVDaGlsZHJlbiA9IHRoaXMuc3RhdGUuY2hpbGRyZW47XG4gICAgICB2YXIgY2hpbGRyZW4gPSBudWxsO1xuICAgICAgaWYgKHN0YXRlQ2hpbGRyZW4pIHtcbiAgICAgICAgY2hpbGRyZW4gPSBzdGF0ZUNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICBpZiAoY2hpbGQgPT09IG51bGwgfHwgY2hpbGQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWNoaWxkLmtleSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtdXN0IHNldCBrZXkgZm9yIDxyYy1hbmltYXRlPiBjaGlsZHJlbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIEFuaW1hdGVDaGlsZCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAga2V5OiBjaGlsZC5rZXksXG4gICAgICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKG5vZGUpIHtcbiAgICAgICAgICAgICAgICBfdGhpczQuY2hpbGRyZW5SZWZzW2NoaWxkLmtleV0gPSBub2RlO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBhbmltYXRpb246IHByb3BzLmFuaW1hdGlvbixcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbk5hbWU6IHByb3BzLnRyYW5zaXRpb25OYW1lLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uRW50ZXI6IHByb3BzLnRyYW5zaXRpb25FbnRlcixcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbkFwcGVhcjogcHJvcHMudHJhbnNpdGlvbkFwcGVhcixcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbkxlYXZlOiBwcm9wcy50cmFuc2l0aW9uTGVhdmVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGlsZFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdmFyIENvbXBvbmVudCA9IHByb3BzLmNvbXBvbmVudDtcbiAgICAgIGlmIChDb21wb25lbnQpIHtcbiAgICAgICAgdmFyIHBhc3NlZFByb3BzID0gcHJvcHM7XG4gICAgICAgIGlmICh0eXBlb2YgQ29tcG9uZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHBhc3NlZFByb3BzID0gX2V4dGVuZHMoe1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgICBzdHlsZTogcHJvcHMuc3R5bGVcbiAgICAgICAgICB9LCBwcm9wcy5jb21wb25lbnRQcm9wcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICAgIHBhc3NlZFByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2hpbGRyZW5bMF0gfHwgbnVsbDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQW5pbWF0ZTtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuQW5pbWF0ZS5pc0FuaW1hdGUgPSB0cnVlO1xuQW5pbWF0ZS5wcm9wVHlwZXMgPSB7XG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmFueSxcbiAgY29tcG9uZW50UHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFuaW1hdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgdHJhbnNpdGlvbk5hbWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgdHJhbnNpdGlvbkVudGVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJhbnNpdGlvbkFwcGVhcjogUHJvcFR5cGVzLmJvb2wsXG4gIGV4Y2x1c2l2ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHRyYW5zaXRpb25MZWF2ZTogUHJvcFR5cGVzLmJvb2wsXG4gIG9uRW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FbnRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uTGVhdmU6IFByb3BUeXBlcy5mdW5jLFxuICBvbkFwcGVhcjogUHJvcFR5cGVzLmZ1bmMsXG4gIHNob3dQcm9wOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGVcbn07XG5BbmltYXRlLmRlZmF1bHRQcm9wcyA9IHtcbiAgYW5pbWF0aW9uOiB7fSxcbiAgY29tcG9uZW50OiAnc3BhbicsXG4gIGNvbXBvbmVudFByb3BzOiB7fSxcbiAgdHJhbnNpdGlvbkVudGVyOiB0cnVlLFxuICB0cmFuc2l0aW9uTGVhdmU6IHRydWUsXG4gIHRyYW5zaXRpb25BcHBlYXI6IGZhbHNlLFxuICBvbkVuZDogbm9vcCxcbiAgb25FbnRlcjogbm9vcCxcbiAgb25MZWF2ZTogbm9vcCxcbiAgb25BcHBlYXI6IG5vb3Bcbn07XG5cbnZhciBfaW5pdGlhbGlzZVByb3BzID0gZnVuY3Rpb24gX2luaXRpYWxpc2VQcm9wcygpIHtcbiAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgdGhpcy5wZXJmb3JtRW50ZXIgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgLy8gbWF5IGFscmVhZHkgcmVtb3ZlIGJ5IGV4Y2x1c2l2ZVxuICAgIGlmIChfdGhpczUuY2hpbGRyZW5SZWZzW2tleV0pIHtcbiAgICAgIF90aGlzNS5jdXJyZW50bHlBbmltYXRpbmdLZXlzW2tleV0gPSB0cnVlO1xuICAgICAgX3RoaXM1LmNoaWxkcmVuUmVmc1trZXldLmNvbXBvbmVudFdpbGxFbnRlcihfdGhpczUuaGFuZGxlRG9uZUFkZGluZy5iaW5kKF90aGlzNSwga2V5LCAnZW50ZXInKSk7XG4gICAgfVxuICB9O1xuXG4gIHRoaXMucGVyZm9ybUFwcGVhciA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoX3RoaXM1LmNoaWxkcmVuUmVmc1trZXldKSB7XG4gICAgICBfdGhpczUuY3VycmVudGx5QW5pbWF0aW5nS2V5c1trZXldID0gdHJ1ZTtcbiAgICAgIF90aGlzNS5jaGlsZHJlblJlZnNba2V5XS5jb21wb25lbnRXaWxsQXBwZWFyKF90aGlzNS5oYW5kbGVEb25lQWRkaW5nLmJpbmQoX3RoaXM1LCBrZXksICdhcHBlYXInKSk7XG4gICAgfVxuICB9O1xuXG4gIHRoaXMuaGFuZGxlRG9uZUFkZGluZyA9IGZ1bmN0aW9uIChrZXksIHR5cGUpIHtcbiAgICB2YXIgcHJvcHMgPSBfdGhpczUucHJvcHM7XG4gICAgZGVsZXRlIF90aGlzNS5jdXJyZW50bHlBbmltYXRpbmdLZXlzW2tleV07XG4gICAgLy8gaWYgdXBkYXRlIG9uIGV4Y2x1c2l2ZSBtb2RlLCBza2lwIGNoZWNrXG4gICAgaWYgKHByb3BzLmV4Y2x1c2l2ZSAmJiBwcm9wcyAhPT0gX3RoaXM1Lm5leHRQcm9wcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgY3VycmVudENoaWxkcmVuID0gdG9BcnJheUNoaWxkcmVuKGdldENoaWxkcmVuRnJvbVByb3BzKHByb3BzKSk7XG4gICAgaWYgKCFfdGhpczUuaXNWYWxpZENoaWxkQnlLZXkoY3VycmVudENoaWxkcmVuLCBrZXkpKSB7XG4gICAgICAvLyBleGNsdXNpdmUgd2lsbCBub3QgbmVlZCB0aGlzXG4gICAgICBfdGhpczUucGVyZm9ybUxlYXZlKGtleSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnYXBwZWFyJykge1xuICAgICAgaWYgKGFuaW1VdGlsLmFsbG93QXBwZWFyQ2FsbGJhY2socHJvcHMpKSB7XG4gICAgICAgIHByb3BzLm9uQXBwZWFyKGtleSk7XG4gICAgICAgIHByb3BzLm9uRW5kKGtleSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChhbmltVXRpbC5hbGxvd0VudGVyQ2FsbGJhY2socHJvcHMpKSB7XG4gICAgICBwcm9wcy5vbkVudGVyKGtleSk7XG4gICAgICBwcm9wcy5vbkVuZChrZXksIHRydWUpO1xuICAgIH1cbiAgfTtcblxuICB0aGlzLnBlcmZvcm1MZWF2ZSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAvLyBtYXkgYWxyZWFkeSByZW1vdmUgYnkgZXhjbHVzaXZlXG4gICAgaWYgKF90aGlzNS5jaGlsZHJlblJlZnNba2V5XSkge1xuICAgICAgX3RoaXM1LmN1cnJlbnRseUFuaW1hdGluZ0tleXNba2V5XSA9IHRydWU7XG4gICAgICBfdGhpczUuY2hpbGRyZW5SZWZzW2tleV0uY29tcG9uZW50V2lsbExlYXZlKF90aGlzNS5oYW5kbGVEb25lTGVhdmluZy5iaW5kKF90aGlzNSwga2V5KSk7XG4gICAgfVxuICB9O1xuXG4gIHRoaXMuaGFuZGxlRG9uZUxlYXZpbmcgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIHByb3BzID0gX3RoaXM1LnByb3BzO1xuICAgIGRlbGV0ZSBfdGhpczUuY3VycmVudGx5QW5pbWF0aW5nS2V5c1trZXldO1xuICAgIC8vIGlmIHVwZGF0ZSBvbiBleGNsdXNpdmUgbW9kZSwgc2tpcCBjaGVja1xuICAgIGlmIChwcm9wcy5leGNsdXNpdmUgJiYgcHJvcHMgIT09IF90aGlzNS5uZXh0UHJvcHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGN1cnJlbnRDaGlsZHJlbiA9IHRvQXJyYXlDaGlsZHJlbihnZXRDaGlsZHJlbkZyb21Qcm9wcyhwcm9wcykpO1xuICAgIC8vIGluIGNhc2Ugc3RhdGUgY2hhbmdlIGlzIHRvbyBmYXN0XG4gICAgaWYgKF90aGlzNS5pc1ZhbGlkQ2hpbGRCeUtleShjdXJyZW50Q2hpbGRyZW4sIGtleSkpIHtcbiAgICAgIF90aGlzNS5wZXJmb3JtRW50ZXIoa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGVuZCA9IGZ1bmN0aW9uIGVuZCgpIHtcbiAgICAgICAgaWYgKGFuaW1VdGlsLmFsbG93TGVhdmVDYWxsYmFjayhwcm9wcykpIHtcbiAgICAgICAgICBwcm9wcy5vbkxlYXZlKGtleSk7XG4gICAgICAgICAgcHJvcHMub25FbmQoa2V5LCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBpZiAoIWlzU2FtZUNoaWxkcmVuKF90aGlzNS5zdGF0ZS5jaGlsZHJlbiwgY3VycmVudENoaWxkcmVuLCBwcm9wcy5zaG93UHJvcCkpIHtcbiAgICAgICAgX3RoaXM1LnNldFN0YXRlKHtcbiAgICAgICAgICBjaGlsZHJlbjogY3VycmVudENoaWxkcmVuXG4gICAgICAgIH0sIGVuZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbmQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1bnNhZmVMaWZlY3ljbGVzUG9seWZpbGwoQW5pbWF0ZSk7IiwidmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG5pbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHNoYWxsb3dFcXVhbCBmcm9tICdzaGFsbG93ZXF1YWwnO1xuXG52YXIgUGFuZWxDb250ZW50ID0gZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFBhbmVsQ29udGVudCwgX0NvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gUGFuZWxDb250ZW50KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQYW5lbENvbnRlbnQpO1xuXG4gICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChQYW5lbENvbnRlbnQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihQYW5lbENvbnRlbnQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhQYW5lbENvbnRlbnQsIFt7XG4gICAga2V5OiAnc2hvdWxkQ29tcG9uZW50VXBkYXRlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcykge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuZm9yY2VSZW5kZXIgfHwgIXNoYWxsb3dFcXVhbCh0aGlzLnByb3BzLCBuZXh0UHJvcHMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfY2xhc3NuYW1lcztcblxuICAgICAgdGhpcy5faXNBY3RpdmVkID0gdGhpcy5wcm9wcy5mb3JjZVJlbmRlciB8fCB0aGlzLl9pc0FjdGl2ZWQgfHwgdGhpcy5wcm9wcy5pc0FjdGl2ZTtcbiAgICAgIGlmICghdGhpcy5faXNBY3RpdmVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIF9wcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgcHJlZml4Q2xzID0gX3Byb3BzLnByZWZpeENscyxcbiAgICAgICAgICBpc0FjdGl2ZSA9IF9wcm9wcy5pc0FjdGl2ZSxcbiAgICAgICAgICBjaGlsZHJlbiA9IF9wcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICBkZXN0cm95SW5hY3RpdmVQYW5lbCA9IF9wcm9wcy5kZXN0cm95SW5hY3RpdmVQYW5lbCxcbiAgICAgICAgICBmb3JjZVJlbmRlciA9IF9wcm9wcy5mb3JjZVJlbmRlcixcbiAgICAgICAgICByb2xlID0gX3Byb3BzLnJvbGU7XG5cbiAgICAgIHZhciBjb250ZW50Q2xzID0gY2xhc3NuYW1lcygoX2NsYXNzbmFtZXMgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc25hbWVzLCBwcmVmaXhDbHMgKyAnLWNvbnRlbnQnLCB0cnVlKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc25hbWVzLCBwcmVmaXhDbHMgKyAnLWNvbnRlbnQtYWN0aXZlJywgaXNBY3RpdmUpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzbmFtZXMsIHByZWZpeENscyArICctY29udGVudC1pbmFjdGl2ZScsICFpc0FjdGl2ZSksIF9jbGFzc25hbWVzKSk7XG4gICAgICB2YXIgY2hpbGQgPSAhZm9yY2VSZW5kZXIgJiYgIWlzQWN0aXZlICYmIGRlc3Ryb3lJbmFjdGl2ZVBhbmVsID8gbnVsbCA6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICdkaXYnLFxuICAgICAgICB7IGNsYXNzTmFtZTogcHJlZml4Q2xzICsgJy1jb250ZW50LWJveCcgfSxcbiAgICAgICAgY2hpbGRyZW5cbiAgICAgICk7XG4gICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgJ2RpdicsXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6IGNvbnRlbnRDbHMsXG4gICAgICAgICAgcm9sZTogcm9sZVxuICAgICAgICB9LFxuICAgICAgICBjaGlsZFxuICAgICAgKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGFuZWxDb250ZW50O1xufShDb21wb25lbnQpO1xuXG5QYW5lbENvbnRlbnQucHJvcFR5cGVzID0ge1xuICBwcmVmaXhDbHM6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzQWN0aXZlOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5hbnksXG4gIGRlc3Ryb3lJbmFjdGl2ZVBhbmVsOiBQcm9wVHlwZXMuYm9vbCxcbiAgZm9yY2VSZW5kZXI6IFByb3BUeXBlcy5ib29sLFxuICByb2xlOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBQYW5lbENvbnRlbnQ7IiwidmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG5pbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFBhbmVsQ29udGVudCBmcm9tICcuL1BhbmVsQ29udGVudCc7XG5pbXBvcnQgQW5pbWF0ZSBmcm9tICdyYy1hbmltYXRlJztcbmltcG9ydCBzaGFsbG93RXF1YWwgZnJvbSAnc2hhbGxvd2VxdWFsJztcblxudmFyIENvbGxhcHNlUGFuZWwgPSBmdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQ29sbGFwc2VQYW5lbCwgX0NvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gQ29sbGFwc2VQYW5lbCgpIHtcbiAgICB2YXIgX3JlZjtcblxuICAgIHZhciBfdGVtcCwgX3RoaXMsIF9yZXQ7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ29sbGFwc2VQYW5lbCk7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gX3JldCA9IChfdGVtcCA9IChfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChfcmVmID0gQ29sbGFwc2VQYW5lbC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKENvbGxhcHNlUGFuZWwpKS5jYWxsLmFwcGx5KF9yZWYsIFt0aGlzXS5jb25jYXQoYXJncykpKSwgX3RoaXMpLCBfdGhpcy5oYW5kbGVJdGVtQ2xpY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBvbkl0ZW1DbGljayA9IF90aGlzJHByb3BzLm9uSXRlbUNsaWNrLFxuICAgICAgICAgIHBhbmVsS2V5ID0gX3RoaXMkcHJvcHMucGFuZWxLZXk7XG5cblxuICAgICAgaWYgKHR5cGVvZiBvbkl0ZW1DbGljayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvbkl0ZW1DbGljayhwYW5lbEtleSk7XG4gICAgICB9XG4gICAgfSwgX3RoaXMuaGFuZGxlS2V5UHJlc3MgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5Q29kZSA9PT0gMTMgfHwgZS53aGljaCA9PT0gMTMpIHtcbiAgICAgICAgX3RoaXMuaGFuZGxlSXRlbUNsaWNrKCk7XG4gICAgICB9XG4gICAgfSwgX3RlbXApLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihfdGhpcywgX3JldCk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQ29sbGFwc2VQYW5lbCwgW3tcbiAgICBrZXk6ICdzaG91bGRDb21wb25lbnRVcGRhdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzKSB7XG4gICAgICByZXR1cm4gIXNoYWxsb3dFcXVhbCh0aGlzLnByb3BzLCBuZXh0UHJvcHMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfY2xhc3NOYW1lczI7XG5cbiAgICAgIHZhciBfcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF9wcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgaWQgPSBfcHJvcHMuaWQsXG4gICAgICAgICAgc3R5bGUgPSBfcHJvcHMuc3R5bGUsXG4gICAgICAgICAgcHJlZml4Q2xzID0gX3Byb3BzLnByZWZpeENscyxcbiAgICAgICAgICBoZWFkZXIgPSBfcHJvcHMuaGVhZGVyLFxuICAgICAgICAgIGhlYWRlckNsYXNzID0gX3Byb3BzLmhlYWRlckNsYXNzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3Byb3BzLmNoaWxkcmVuLFxuICAgICAgICAgIGlzQWN0aXZlID0gX3Byb3BzLmlzQWN0aXZlLFxuICAgICAgICAgIHNob3dBcnJvdyA9IF9wcm9wcy5zaG93QXJyb3csXG4gICAgICAgICAgZGVzdHJveUluYWN0aXZlUGFuZWwgPSBfcHJvcHMuZGVzdHJveUluYWN0aXZlUGFuZWwsXG4gICAgICAgICAgZGlzYWJsZWQgPSBfcHJvcHMuZGlzYWJsZWQsXG4gICAgICAgICAgYWNjb3JkaW9uID0gX3Byb3BzLmFjY29yZGlvbixcbiAgICAgICAgICBmb3JjZVJlbmRlciA9IF9wcm9wcy5mb3JjZVJlbmRlcixcbiAgICAgICAgICBleHBhbmRJY29uID0gX3Byb3BzLmV4cGFuZEljb24sXG4gICAgICAgICAgZXh0cmEgPSBfcHJvcHMuZXh0cmE7XG5cbiAgICAgIHZhciBoZWFkZXJDbHMgPSBjbGFzc05hbWVzKHByZWZpeENscyArICctaGVhZGVyJywgX2RlZmluZVByb3BlcnR5KHt9LCBoZWFkZXJDbGFzcywgaGVhZGVyQ2xhc3MpKTtcbiAgICAgIHZhciBpdGVtQ2xzID0gY2xhc3NOYW1lcygoX2NsYXNzTmFtZXMyID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lczIsIHByZWZpeENscyArICctaXRlbScsIHRydWUpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMyLCBwcmVmaXhDbHMgKyAnLWl0ZW0tYWN0aXZlJywgaXNBY3RpdmUpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMyLCBwcmVmaXhDbHMgKyAnLWl0ZW0tZGlzYWJsZWQnLCBkaXNhYmxlZCksIF9jbGFzc05hbWVzMiksIGNsYXNzTmFtZSk7XG5cbiAgICAgIHZhciBpY29uID0gUmVhY3QuY3JlYXRlRWxlbWVudCgnaScsIHsgY2xhc3NOYW1lOiAnYXJyb3cnIH0pO1xuICAgICAgaWYgKHNob3dBcnJvdyAmJiB0eXBlb2YgZXhwYW5kSWNvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpY29uID0gZXhwYW5kSWNvbih0aGlzLnByb3BzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAnZGl2JyxcbiAgICAgICAgeyBjbGFzc05hbWU6IGl0ZW1DbHMsIHN0eWxlOiBzdHlsZSwgaWQ6IGlkIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ2RpdicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBoZWFkZXJDbHMsXG4gICAgICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUl0ZW1DbGljayxcbiAgICAgICAgICAgIHJvbGU6IGFjY29yZGlvbiA/ICd0YWInIDogJ2J1dHRvbicsXG4gICAgICAgICAgICB0YWJJbmRleDogZGlzYWJsZWQgPyAtMSA6IDAsXG4gICAgICAgICAgICAnYXJpYS1leHBhbmRlZCc6ICcnICsgaXNBY3RpdmUsXG4gICAgICAgICAgICBvbktleVByZXNzOiB0aGlzLmhhbmRsZUtleVByZXNzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzaG93QXJyb3cgJiYgaWNvbixcbiAgICAgICAgICBoZWFkZXIsXG4gICAgICAgICAgZXh0cmEgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6IHByZWZpeENscyArICctZXh0cmEnIH0sXG4gICAgICAgICAgICBleHRyYVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICBBbmltYXRlLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNob3dQcm9wOiAnaXNBY3RpdmUnLFxuICAgICAgICAgICAgZXhjbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgY29tcG9uZW50OiAnJyxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogdGhpcy5wcm9wcy5vcGVuQW5pbWF0aW9uXG4gICAgICAgICAgfSxcbiAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgUGFuZWxDb250ZW50LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgICAgICAgICAgaXNBY3RpdmU6IGlzQWN0aXZlLFxuICAgICAgICAgICAgICBkZXN0cm95SW5hY3RpdmVQYW5lbDogZGVzdHJveUluYWN0aXZlUGFuZWwsXG4gICAgICAgICAgICAgIGZvcmNlUmVuZGVyOiBmb3JjZVJlbmRlcixcbiAgICAgICAgICAgICAgcm9sZTogYWNjb3JkaW9uID8gJ3RhYnBhbmVsJyA6IG51bGxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGlsZHJlblxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ29sbGFwc2VQYW5lbDtcbn0oQ29tcG9uZW50KTtcblxuQ29sbGFwc2VQYW5lbC5wcm9wVHlwZXMgPSB7XG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5hbnksXG4gIG9wZW5BbmltYXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gIHByZWZpeENsczogUHJvcFR5cGVzLnN0cmluZyxcbiAgaGVhZGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMubm9kZV0pLFxuICBoZWFkZXJDbGFzczogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2hvd0Fycm93OiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNBY3RpdmU6IFByb3BUeXBlcy5ib29sLFxuICBvbkl0ZW1DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICBkZXN0cm95SW5hY3RpdmVQYW5lbDogUHJvcFR5cGVzLmJvb2wsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgYWNjb3JkaW9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgZm9yY2VSZW5kZXI6IFByb3BUeXBlcy5ib29sLFxuICBleHBhbmRJY29uOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXh0cmE6IFByb3BUeXBlcy5ub2RlLFxuICBwYW5lbEtleTogUHJvcFR5cGVzLmFueVxufTtcblxuQ29sbGFwc2VQYW5lbC5kZWZhdWx0UHJvcHMgPSB7XG4gIHNob3dBcnJvdzogdHJ1ZSxcbiAgaXNBY3RpdmU6IGZhbHNlLFxuICBkZXN0cm95SW5hY3RpdmVQYW5lbDogZmFsc2UsXG4gIG9uSXRlbUNsaWNrOiBmdW5jdGlvbiBvbkl0ZW1DbGljaygpIHt9LFxuXG4gIGhlYWRlckNsYXNzOiAnJyxcbiAgZm9yY2VSZW5kZXI6IGZhbHNlXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb2xsYXBzZVBhbmVsOyIsImltcG9ydCBjc3NBbmltYXRpb24gZnJvbSAnY3NzLWFuaW1hdGlvbic7XG5cbmZ1bmN0aW9uIGFuaW1hdGUobm9kZSwgc2hvdywgdHJhbnNpdGlvbk5hbWUsIGRvbmUpIHtcbiAgdmFyIGhlaWdodCA9IHZvaWQgMDtcbiAgcmV0dXJuIGNzc0FuaW1hdGlvbihub2RlLCB0cmFuc2l0aW9uTmFtZSwge1xuICAgIHN0YXJ0OiBmdW5jdGlvbiBzdGFydCgpIHtcbiAgICAgIGlmICghc2hvdykge1xuICAgICAgICBub2RlLnN0eWxlLmhlaWdodCA9IG5vZGUub2Zmc2V0SGVpZ2h0ICsgJ3B4JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhlaWdodCA9IG5vZGUub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBub2RlLnN0eWxlLmhlaWdodCA9IDA7XG4gICAgICB9XG4gICAgfSxcbiAgICBhY3RpdmU6IGZ1bmN0aW9uIGFjdGl2ZSgpIHtcbiAgICAgIG5vZGUuc3R5bGUuaGVpZ2h0ID0gKHNob3cgPyBoZWlnaHQgOiAwKSArICdweCc7XG4gICAgfSxcbiAgICBlbmQ6IGZ1bmN0aW9uIGVuZCgpIHtcbiAgICAgIG5vZGUuc3R5bGUuaGVpZ2h0ID0gJyc7XG4gICAgICBkb25lKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gYW5pbWF0aW9uKHByZWZpeENscykge1xuICByZXR1cm4ge1xuICAgIGVudGVyOiBmdW5jdGlvbiBlbnRlcihub2RlLCBkb25lKSB7XG4gICAgICByZXR1cm4gYW5pbWF0ZShub2RlLCB0cnVlLCBwcmVmaXhDbHMgKyAnLWFuaW0nLCBkb25lKTtcbiAgICB9LFxuICAgIGxlYXZlOiBmdW5jdGlvbiBsZWF2ZShub2RlLCBkb25lKSB7XG4gICAgICByZXR1cm4gYW5pbWF0ZShub2RlLCBmYWxzZSwgcHJlZml4Q2xzICsgJy1hbmltJywgZG9uZSk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBhbmltYXRpb247IiwidmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfSBlbHNlIHsgcmV0dXJuIEFycmF5LmZyb20oYXJyKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCwgQ2hpbGRyZW4gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IENvbGxhcHNlUGFuZWwgZnJvbSAnLi9QYW5lbCc7XG5pbXBvcnQgb3BlbkFuaW1hdGlvbkZhY3RvcnkgZnJvbSAnLi9vcGVuQW5pbWF0aW9uRmFjdG9yeSc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IGlzRnJhZ21lbnQgfSBmcm9tICdyZWFjdC1pcyc7XG5pbXBvcnQgc2hhbGxvd0VxdWFsIGZyb20gJ3NoYWxsb3dlcXVhbCc7XG5cbmZ1bmN0aW9uIHRvQXJyYXkoYWN0aXZlS2V5KSB7XG4gIHZhciBjdXJyZW50QWN0aXZlS2V5ID0gYWN0aXZlS2V5O1xuICBpZiAoIUFycmF5LmlzQXJyYXkoY3VycmVudEFjdGl2ZUtleSkpIHtcbiAgICBjdXJyZW50QWN0aXZlS2V5ID0gY3VycmVudEFjdGl2ZUtleSA/IFtjdXJyZW50QWN0aXZlS2V5XSA6IFtdO1xuICB9XG4gIHJldHVybiBjdXJyZW50QWN0aXZlS2V5O1xufVxuXG52YXIgQ29sbGFwc2UgPSBmdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQ29sbGFwc2UsIF9Db21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIENvbGxhcHNlKHByb3BzKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENvbGxhcHNlKTtcblxuICAgIHZhciBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChDb2xsYXBzZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKENvbGxhcHNlKSkuY2FsbCh0aGlzLCBwcm9wcykpO1xuXG4gICAgX2luaXRpYWxpc2VQcm9wcy5jYWxsKF90aGlzKTtcblxuICAgIHZhciBhY3RpdmVLZXkgPSBwcm9wcy5hY3RpdmVLZXksXG4gICAgICAgIGRlZmF1bHRBY3RpdmVLZXkgPSBwcm9wcy5kZWZhdWx0QWN0aXZlS2V5O1xuXG4gICAgdmFyIGN1cnJlbnRBY3RpdmVLZXkgPSBkZWZhdWx0QWN0aXZlS2V5O1xuICAgIGlmICgnYWN0aXZlS2V5JyBpbiBwcm9wcykge1xuICAgICAgY3VycmVudEFjdGl2ZUtleSA9IGFjdGl2ZUtleTtcbiAgICB9XG5cbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIG9wZW5BbmltYXRpb246IHByb3BzLm9wZW5BbmltYXRpb24gfHwgb3BlbkFuaW1hdGlvbkZhY3RvcnkocHJvcHMucHJlZml4Q2xzKSxcbiAgICAgIGFjdGl2ZUtleTogdG9BcnJheShjdXJyZW50QWN0aXZlS2V5KVxuICAgIH07XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENvbGxhcHNlLCBbe1xuICAgIGtleTogJ2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgICAgaWYgKCdhY3RpdmVLZXknIGluIG5leHRQcm9wcykge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBhY3RpdmVLZXk6IHRvQXJyYXkobmV4dFByb3BzLmFjdGl2ZUtleSlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoJ29wZW5BbmltYXRpb24nIGluIG5leHRQcm9wcykge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBvcGVuQW5pbWF0aW9uOiBuZXh0UHJvcHMub3BlbkFuaW1hdGlvblxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdzaG91bGRDb21wb25lbnRVcGRhdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzLCBuZXh0U3RhdGUpIHtcbiAgICAgIHJldHVybiAhc2hhbGxvd0VxdWFsKHRoaXMucHJvcHMsIG5leHRQcm9wcykgfHwgIXNoYWxsb3dFcXVhbCh0aGlzLnN0YXRlLCBuZXh0U3RhdGUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfY2xhc3NOYW1lcztcblxuICAgICAgdmFyIF9wcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgcHJlZml4Q2xzID0gX3Byb3BzLnByZWZpeENscyxcbiAgICAgICAgICBjbGFzc05hbWUgPSBfcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgIHN0eWxlID0gX3Byb3BzLnN0eWxlLFxuICAgICAgICAgIGFjY29yZGlvbiA9IF9wcm9wcy5hY2NvcmRpb247XG5cbiAgICAgIHZhciBjb2xsYXBzZUNsYXNzTmFtZSA9IGNsYXNzTmFtZXMoKF9jbGFzc05hbWVzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgcHJlZml4Q2xzLCB0cnVlKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBjbGFzc05hbWUsICEhY2xhc3NOYW1lKSwgX2NsYXNzTmFtZXMpKTtcbiAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAnZGl2JyxcbiAgICAgICAgeyBjbGFzc05hbWU6IGNvbGxhcHNlQ2xhc3NOYW1lLCBzdHlsZTogc3R5bGUsIHJvbGU6IGFjY29yZGlvbiA/ICd0YWJsaXN0JyA6IG51bGwgfSxcbiAgICAgICAgdGhpcy5nZXRJdGVtcygpXG4gICAgICApO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDb2xsYXBzZTtcbn0oQ29tcG9uZW50KTtcblxudmFyIF9pbml0aWFsaXNlUHJvcHMgPSBmdW5jdGlvbiBfaW5pdGlhbGlzZVByb3BzKCkge1xuICB2YXIgX3RoaXMyID0gdGhpcztcblxuICB0aGlzLm9uQ2xpY2tJdGVtID0gZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBhY3RpdmVLZXkgPSBfdGhpczIuc3RhdGUuYWN0aXZlS2V5O1xuICAgIGlmIChfdGhpczIucHJvcHMuYWNjb3JkaW9uKSB7XG4gICAgICBhY3RpdmVLZXkgPSBhY3RpdmVLZXlbMF0gPT09IGtleSA/IFtdIDogW2tleV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGl2ZUtleSA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoYWN0aXZlS2V5KSk7XG4gICAgICB2YXIgaW5kZXggPSBhY3RpdmVLZXkuaW5kZXhPZihrZXkpO1xuICAgICAgdmFyIGlzQWN0aXZlID0gaW5kZXggPiAtMTtcbiAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICAvLyByZW1vdmUgYWN0aXZlIHN0YXRlXG4gICAgICAgIGFjdGl2ZUtleS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aXZlS2V5LnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgX3RoaXMyLnNldEFjdGl2ZUtleShhY3RpdmVLZXkpO1xuICB9O1xuXG4gIHRoaXMuZ2V0TmV3Q2hpbGQgPSBmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XG4gICAgaWYgKCFjaGlsZCkgcmV0dXJuIG51bGw7XG5cbiAgICB2YXIgYWN0aXZlS2V5ID0gX3RoaXMyLnN0YXRlLmFjdGl2ZUtleTtcbiAgICB2YXIgX3Byb3BzMiA9IF90aGlzMi5wcm9wcyxcbiAgICAgICAgcHJlZml4Q2xzID0gX3Byb3BzMi5wcmVmaXhDbHMsXG4gICAgICAgIGFjY29yZGlvbiA9IF9wcm9wczIuYWNjb3JkaW9uLFxuICAgICAgICBkZXN0cm95SW5hY3RpdmVQYW5lbCA9IF9wcm9wczIuZGVzdHJveUluYWN0aXZlUGFuZWwsXG4gICAgICAgIGV4cGFuZEljb24gPSBfcHJvcHMyLmV4cGFuZEljb247XG4gICAgLy8gSWYgdGhlcmUgaXMgbm8ga2V5IHByb3ZpZGUsIHVzZSB0aGUgcGFuZWwgb3JkZXIgYXMgZGVmYXVsdCBrZXlcblxuICAgIHZhciBrZXkgPSBjaGlsZC5rZXkgfHwgU3RyaW5nKGluZGV4KTtcbiAgICB2YXIgX2NoaWxkJHByb3BzID0gY2hpbGQucHJvcHMsXG4gICAgICAgIGhlYWRlciA9IF9jaGlsZCRwcm9wcy5oZWFkZXIsXG4gICAgICAgIGhlYWRlckNsYXNzID0gX2NoaWxkJHByb3BzLmhlYWRlckNsYXNzLFxuICAgICAgICBkaXNhYmxlZCA9IF9jaGlsZCRwcm9wcy5kaXNhYmxlZDtcblxuICAgIHZhciBpc0FjdGl2ZSA9IGZhbHNlO1xuICAgIGlmIChhY2NvcmRpb24pIHtcbiAgICAgIGlzQWN0aXZlID0gYWN0aXZlS2V5WzBdID09PSBrZXk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlzQWN0aXZlID0gYWN0aXZlS2V5LmluZGV4T2Yoa2V5KSA+IC0xO1xuICAgIH1cblxuICAgIHZhciBwcm9wcyA9IHtcbiAgICAgIGtleToga2V5LFxuICAgICAgcGFuZWxLZXk6IGtleSxcbiAgICAgIGhlYWRlcjogaGVhZGVyLFxuICAgICAgaGVhZGVyQ2xhc3M6IGhlYWRlckNsYXNzLFxuICAgICAgaXNBY3RpdmU6IGlzQWN0aXZlLFxuICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICBkZXN0cm95SW5hY3RpdmVQYW5lbDogZGVzdHJveUluYWN0aXZlUGFuZWwsXG4gICAgICBvcGVuQW5pbWF0aW9uOiBfdGhpczIuc3RhdGUub3BlbkFuaW1hdGlvbixcbiAgICAgIGFjY29yZGlvbjogYWNjb3JkaW9uLFxuICAgICAgY2hpbGRyZW46IGNoaWxkLnByb3BzLmNoaWxkcmVuLFxuICAgICAgb25JdGVtQ2xpY2s6IGRpc2FibGVkID8gbnVsbCA6IF90aGlzMi5vbkNsaWNrSXRlbSxcbiAgICAgIGV4cGFuZEljb246IGV4cGFuZEljb25cbiAgICB9O1xuXG4gICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgcHJvcHMpO1xuICB9O1xuXG4gIHRoaXMuZ2V0SXRlbXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gX3RoaXMyLnByb3BzLmNoaWxkcmVuO1xuXG4gICAgdmFyIGNoaWxkTGlzdCA9IGlzRnJhZ21lbnQoY2hpbGRyZW4pID8gY2hpbGRyZW4ucHJvcHMuY2hpbGRyZW4gOiBjaGlsZHJlbjtcbiAgICB2YXIgbmV3Q2hpbGRyZW4gPSBDaGlsZHJlbi5tYXAoY2hpbGRMaXN0LCBfdGhpczIuZ2V0TmV3Q2hpbGQpO1xuXG4gICAgLy8gIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMTM4ODRcbiAgICBpZiAoaXNGcmFnbWVudChjaGlsZHJlbikpIHtcbiAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICBSZWFjdC5GcmFnbWVudCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbmV3Q2hpbGRyZW5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0NoaWxkcmVuO1xuICB9O1xuXG4gIHRoaXMuc2V0QWN0aXZlS2V5ID0gZnVuY3Rpb24gKGFjdGl2ZUtleSkge1xuICAgIGlmICghKCdhY3RpdmVLZXknIGluIF90aGlzMi5wcm9wcykpIHtcbiAgICAgIF90aGlzMi5zZXRTdGF0ZSh7IGFjdGl2ZUtleTogYWN0aXZlS2V5IH0pO1xuICAgIH1cbiAgICBfdGhpczIucHJvcHMub25DaGFuZ2UoX3RoaXMyLnByb3BzLmFjY29yZGlvbiA/IGFjdGl2ZUtleVswXSA6IGFjdGl2ZUtleSk7XG4gIH07XG59O1xuXG5Db2xsYXBzZS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMuYW55LFxuICBwcmVmaXhDbHM6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFjdGl2ZUtleTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLnN0cmluZyldKSxcbiAgZGVmYXVsdEFjdGl2ZUtleTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLnN0cmluZyldKSxcbiAgb3BlbkFuaW1hdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBhY2NvcmRpb246IFByb3BUeXBlcy5ib29sLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICBkZXN0cm95SW5hY3RpdmVQYW5lbDogUHJvcFR5cGVzLmJvb2wsXG4gIGV4cGFuZEljb246IFByb3BUeXBlcy5mdW5jXG59O1xuXG5Db2xsYXBzZS5kZWZhdWx0UHJvcHMgPSB7XG4gIHByZWZpeENsczogJ3JjLWNvbGxhcHNlJyxcbiAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKCkge30sXG5cbiAgYWNjb3JkaW9uOiBmYWxzZSxcbiAgZGVzdHJveUluYWN0aXZlUGFuZWw6IGZhbHNlXG59O1xuXG5Db2xsYXBzZS5QYW5lbCA9IENvbGxhcHNlUGFuZWw7XG5cbmV4cG9ydCBkZWZhdWx0IENvbGxhcHNlOyIsImltcG9ydCBDb2xsYXBzZSBmcm9tICcuL0NvbGxhcHNlJztcblxuZXhwb3J0IGRlZmF1bHQgQ29sbGFwc2U7XG5leHBvcnQgdmFyIFBhbmVsID0gQ29sbGFwc2UuUGFuZWw7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbnZhciBOb3RpY2UgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKE5vdGljZSwgX0NvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihOb3RpY2UpO1xuXG4gIGZ1bmN0aW9uIE5vdGljZSgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTm90aWNlKTtcblxuICAgIF90aGlzID0gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgX3RoaXMuY2xvc2VUaW1lciA9IG51bGw7XG5cbiAgICBfdGhpcy5jbG9zZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoZSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5jbGVhckNsb3NlVGltZXIoKTtcblxuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgb25DbG9zZSA9IF90aGlzJHByb3BzLm9uQ2xvc2UsXG4gICAgICAgICAgbm90aWNlS2V5ID0gX3RoaXMkcHJvcHMubm90aWNlS2V5O1xuXG4gICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICBvbkNsb3NlKG5vdGljZUtleSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLnN0YXJ0Q2xvc2VUaW1lciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpcy5wcm9wcy5kdXJhdGlvbikge1xuICAgICAgICBfdGhpcy5jbG9zZVRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzLmNsb3NlKCk7XG4gICAgICAgIH0sIF90aGlzLnByb3BzLmR1cmF0aW9uICogMTAwMCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLmNsZWFyQ2xvc2VUaW1lciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpcy5jbG9zZVRpbWVyKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChfdGhpcy5jbG9zZVRpbWVyKTtcbiAgICAgICAgX3RoaXMuY2xvc2VUaW1lciA9IG51bGw7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhOb3RpY2UsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5zdGFydENsb3NlVGltZXIoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkVXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLmR1cmF0aW9uICE9PSBwcmV2UHJvcHMuZHVyYXRpb24gfHwgdGhpcy5wcm9wcy51cGRhdGVNYXJrICE9PSBwcmV2UHJvcHMudXBkYXRlTWFyaykge1xuICAgICAgICB0aGlzLnJlc3RhcnRDbG9zZVRpbWVyKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdGhpcy5jbGVhckNsb3NlVGltZXIoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVzdGFydENsb3NlVGltZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzdGFydENsb3NlVGltZXIoKSB7XG4gICAgICB0aGlzLmNsZWFyQ2xvc2VUaW1lcigpO1xuICAgICAgdGhpcy5zdGFydENsb3NlVGltZXIoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBwcmVmaXhDbHMgPSBfdGhpcyRwcm9wczIucHJlZml4Q2xzLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzMi5jbGFzc05hbWUsXG4gICAgICAgICAgY2xvc2FibGUgPSBfdGhpcyRwcm9wczIuY2xvc2FibGUsXG4gICAgICAgICAgY2xvc2VJY29uID0gX3RoaXMkcHJvcHMyLmNsb3NlSWNvbixcbiAgICAgICAgICBzdHlsZSA9IF90aGlzJHByb3BzMi5zdHlsZSxcbiAgICAgICAgICBvbkNsaWNrID0gX3RoaXMkcHJvcHMyLm9uQ2xpY2ssXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wczIuY2hpbGRyZW4sXG4gICAgICAgICAgaG9sZGVyID0gX3RoaXMkcHJvcHMyLmhvbGRlcjtcbiAgICAgIHZhciBjb21wb25lbnRDbGFzcyA9IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbm90aWNlXCIpO1xuICAgICAgdmFyIGRhdGFPckFyaWFBdHRyaWJ1dGVQcm9wcyA9IE9iamVjdC5rZXlzKHRoaXMucHJvcHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBrZXkpIHtcbiAgICAgICAgaWYgKGtleS5zdWJzdHIoMCwgNSkgPT09ICdkYXRhLScgfHwga2V5LnN1YnN0cigwLCA1KSA9PT0gJ2FyaWEtJyB8fCBrZXkgPT09ICdyb2xlJykge1xuICAgICAgICAgIGFjY1trZXldID0gX3RoaXMyLnByb3BzW2tleV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30pO1xuICAgICAgdmFyIG5vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjb21wb25lbnRDbGFzcywgY2xhc3NOYW1lLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KGNvbXBvbmVudENsYXNzLCBcIi1jbG9zYWJsZVwiKSwgY2xvc2FibGUpKSxcbiAgICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgICBvbk1vdXNlRW50ZXI6IHRoaXMuY2xlYXJDbG9zZVRpbWVyLFxuICAgICAgICBvbk1vdXNlTGVhdmU6IHRoaXMuc3RhcnRDbG9zZVRpbWVyLFxuICAgICAgICBvbkNsaWNrOiBvbkNsaWNrXG4gICAgICB9LCBkYXRhT3JBcmlhQXR0cmlidXRlUHJvcHMpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQoY29tcG9uZW50Q2xhc3MsIFwiLWNvbnRlbnRcIilcbiAgICAgIH0sIGNoaWxkcmVuKSwgY2xvc2FibGUgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwge1xuICAgICAgICB0YWJJbmRleDogMCxcbiAgICAgICAgb25DbGljazogdGhpcy5jbG9zZSxcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChjb21wb25lbnRDbGFzcywgXCItY2xvc2VcIilcbiAgICAgIH0sIGNsb3NlSWNvbiB8fCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KGNvbXBvbmVudENsYXNzLCBcIi1jbG9zZS14XCIpXG4gICAgICB9KSkgOiBudWxsKTtcblxuICAgICAgaWYgKGhvbGRlcikge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0RE9NLmNyZWF0ZVBvcnRhbChub2RlLCBob2xkZXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTm90aWNlO1xufShDb21wb25lbnQpO1xuXG5leHBvcnQgeyBOb3RpY2UgYXMgZGVmYXVsdCB9O1xuTm90aWNlLmRlZmF1bHRQcm9wcyA9IHtcbiAgb25DbG9zZTogZnVuY3Rpb24gb25DbG9zZSgpIHt9LFxuICBkdXJhdGlvbjogMS41XG59OyIsImltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IENTU01vdGlvbkxpc3QgfSBmcm9tICdyYy1tb3Rpb24nO1xuaW1wb3J0IE5vdGljZSBmcm9tICcuL05vdGljZSc7XG5pbXBvcnQgX3VzZU5vdGlmaWNhdGlvbiBmcm9tICcuL3VzZU5vdGlmaWNhdGlvbic7XG52YXIgc2VlZCA9IDA7XG52YXIgbm93ID0gRGF0ZS5ub3coKTtcblxuZnVuY3Rpb24gZ2V0VXVpZCgpIHtcbiAgdmFyIGlkID0gc2VlZDtcbiAgc2VlZCArPSAxO1xuICByZXR1cm4gXCJyY05vdGlmaWNhdGlvbl9cIi5jb25jYXQobm93LCBcIl9cIikuY29uY2F0KGlkKTtcbn1cblxudmFyIE5vdGlmaWNhdGlvbiA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoTm90aWZpY2F0aW9uLCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE5vdGlmaWNhdGlvbik7XG5cbiAgZnVuY3Rpb24gTm90aWZpY2F0aW9uKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOb3RpZmljYXRpb24pO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIG5vdGljZXM6IFtdXG4gICAgfTtcbiAgICBfdGhpcy5ob29rUmVmcyA9IG5ldyBNYXAoKTtcblxuICAgIF90aGlzLmFkZCA9IGZ1bmN0aW9uIChvcmlnaW5Ob3RpY2UsIGhvbGRlckNhbGxiYWNrKSB7XG4gICAgICB2YXIga2V5ID0gb3JpZ2luTm90aWNlLmtleSB8fCBnZXRVdWlkKCk7XG5cbiAgICAgIHZhciBub3RpY2UgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9yaWdpbk5vdGljZSksIHt9LCB7XG4gICAgICAgIGtleToga2V5XG4gICAgICB9KTtcblxuICAgICAgdmFyIG1heENvdW50ID0gX3RoaXMucHJvcHMubWF4Q291bnQ7XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKGZ1bmN0aW9uIChwcmV2aW91c1N0YXRlKSB7XG4gICAgICAgIHZhciBub3RpY2VzID0gcHJldmlvdXNTdGF0ZS5ub3RpY2VzO1xuICAgICAgICB2YXIgbm90aWNlSW5kZXggPSBub3RpY2VzLm1hcChmdW5jdGlvbiAodikge1xuICAgICAgICAgIHJldHVybiB2Lm5vdGljZS5rZXk7XG4gICAgICAgIH0pLmluZGV4T2Yoa2V5KTtcbiAgICAgICAgdmFyIHVwZGF0ZWROb3RpY2VzID0gbm90aWNlcy5jb25jYXQoKTtcblxuICAgICAgICBpZiAobm90aWNlSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgdXBkYXRlZE5vdGljZXMuc3BsaWNlKG5vdGljZUluZGV4LCAxLCB7XG4gICAgICAgICAgICBub3RpY2U6IG5vdGljZSxcbiAgICAgICAgICAgIGhvbGRlckNhbGxiYWNrOiBob2xkZXJDYWxsYmFja1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChtYXhDb3VudCAmJiBub3RpY2VzLmxlbmd0aCA+PSBtYXhDb3VudCkge1xuICAgICAgICAgICAgLy8gWFhYLCB1c2Uga2V5IG9mIGZpcnN0IGl0ZW0gdG8gdXBkYXRlIG5ldyBhZGRlZCAobGV0IFJlYWN0IHRvIG1vdmUgZXhzaXRpbmdcbiAgICAgICAgICAgIC8vIGluc3RlYWQgb2YgcmVtb3ZlIGFuZCBtb3VudCkuIFNhbWUga2V5IHdhcyB1c2VkIGJlZm9yZSBmb3IgYm90aCBhKSBleHRlcm5hbFxuICAgICAgICAgICAgLy8gbWFudWFsIGNvbnRyb2wgYW5kIGIpIGludGVybmFsIHJlYWN0ICdrZXknIHByb3AgLCB3aGljaCBpcyBub3QgdGhhdCBnb29kLlxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICAvLyB6b21iaWVKOiBOb3Qga25vdyB3aHkgdXNlIGB1cGRhdGVLZXlgLiBUaGlzIG1ha2VzIE5vdGljZSBpbmZpbml0ZSBsb29wIGluIGplc3QuXG4gICAgICAgICAgICAvLyBDaGFuZ2UgdG8gYHVwZGF0ZU1hcmtgIGZvciBjb21wYXJlIGluc3RlYWQuXG4gICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcmVhY3QtY29tcG9uZW50L25vdGlmaWNhdGlvbi9jb21taXQvMzIyOTllNmJlMzk2Zjk0MDQwYmZhODI1MTdlZWE5NDBkYjk0N2VjZVxuICAgICAgICAgICAgbm90aWNlLmtleSA9IHVwZGF0ZWROb3RpY2VzWzBdLm5vdGljZS5rZXk7XG4gICAgICAgICAgICBub3RpY2UudXBkYXRlTWFyayA9IGdldFV1aWQoKTsgLy8gem9tYmllSjogVGhhdCdzIHdoeS4gVXNlciBtYXkgY2xvc2UgYnkga2V5IGRpcmVjdGx5LlxuICAgICAgICAgICAgLy8gV2UgbmVlZCByZWNvcmQgdGhpcyBidXQgbm90IHJlLXJlbmRlciB0byBhdm9pZCB1cHBlciBpc3N1ZVxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0LWNvbXBvbmVudC9ub3RpZmljYXRpb24vaXNzdWVzLzEyOVxuXG4gICAgICAgICAgICBub3RpY2UudXNlclBhc3NLZXkgPSBrZXk7XG4gICAgICAgICAgICB1cGRhdGVkTm90aWNlcy5zaGlmdCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHVwZGF0ZWROb3RpY2VzLnB1c2goe1xuICAgICAgICAgICAgbm90aWNlOiBub3RpY2UsXG4gICAgICAgICAgICBob2xkZXJDYWxsYmFjazogaG9sZGVyQ2FsbGJhY2tcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbm90aWNlczogdXBkYXRlZE5vdGljZXNcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfdGhpcy5yZW1vdmUgPSBmdW5jdGlvbiAocmVtb3ZlS2V5KSB7XG4gICAgICBfdGhpcy5zZXRTdGF0ZShmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICB2YXIgbm90aWNlcyA9IF9yZWYubm90aWNlcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBub3RpY2VzOiBub3RpY2VzLmZpbHRlcihmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgICAgICAgIHZhciBfcmVmMiRub3RpY2UgPSBfcmVmMi5ub3RpY2UsXG4gICAgICAgICAgICAgICAga2V5ID0gX3JlZjIkbm90aWNlLmtleSxcbiAgICAgICAgICAgICAgICB1c2VyUGFzc0tleSA9IF9yZWYyJG5vdGljZS51c2VyUGFzc0tleTtcbiAgICAgICAgICAgIHZhciBtZXJnZWRLZXkgPSB1c2VyUGFzc0tleSB8fCBrZXk7XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VkS2V5ICE9PSByZW1vdmVLZXk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfdGhpcy5ub3RpY2VQcm9wc01hcCA9IHt9O1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhOb3RpZmljYXRpb24sIFt7XG4gICAga2V5OiBcImdldFRyYW5zaXRpb25OYW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFRyYW5zaXRpb25OYW1lKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBwcmVmaXhDbHMgPSBfdGhpcyRwcm9wcy5wcmVmaXhDbHMsXG4gICAgICAgICAgYW5pbWF0aW9uID0gX3RoaXMkcHJvcHMuYW5pbWF0aW9uO1xuICAgICAgdmFyIHRyYW5zaXRpb25OYW1lID0gdGhpcy5wcm9wcy50cmFuc2l0aW9uTmFtZTtcblxuICAgICAgaWYgKCF0cmFuc2l0aW9uTmFtZSAmJiBhbmltYXRpb24pIHtcbiAgICAgICAgdHJhbnNpdGlvbk5hbWUgPSBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLVwiKS5jb25jYXQoYW5pbWF0aW9uKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRyYW5zaXRpb25OYW1lO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBub3RpY2VzID0gdGhpcy5zdGF0ZS5ub3RpY2VzO1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgcHJlZml4Q2xzID0gX3RoaXMkcHJvcHMyLnByZWZpeENscyxcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczIuY2xhc3NOYW1lLFxuICAgICAgICAgIGNsb3NlSWNvbiA9IF90aGlzJHByb3BzMi5jbG9zZUljb24sXG4gICAgICAgICAgc3R5bGUgPSBfdGhpcyRwcm9wczIuc3R5bGU7XG4gICAgICB2YXIgbm90aWNlS2V5cyA9IFtdO1xuICAgICAgbm90aWNlcy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMywgaW5kZXgpIHtcbiAgICAgICAgdmFyIG5vdGljZSA9IF9yZWYzLm5vdGljZSxcbiAgICAgICAgICAgIGhvbGRlckNhbGxiYWNrID0gX3JlZjMuaG9sZGVyQ2FsbGJhY2s7XG4gICAgICAgIHZhciB1cGRhdGVNYXJrID0gaW5kZXggPT09IG5vdGljZXMubGVuZ3RoIC0gMSA/IG5vdGljZS51cGRhdGVNYXJrIDogdW5kZWZpbmVkO1xuICAgICAgICB2YXIga2V5ID0gbm90aWNlLmtleSxcbiAgICAgICAgICAgIHVzZXJQYXNzS2V5ID0gbm90aWNlLnVzZXJQYXNzS2V5O1xuXG4gICAgICAgIHZhciBub3RpY2VQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgICAgICBjbG9zZUljb246IGNsb3NlSWNvblxuICAgICAgICB9LCBub3RpY2UpLCBub3RpY2UucHJvcHMpLCB7fSwge1xuICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgIG5vdGljZUtleTogdXNlclBhc3NLZXkgfHwga2V5LFxuICAgICAgICAgIHVwZGF0ZU1hcms6IHVwZGF0ZU1hcmssXG4gICAgICAgICAgb25DbG9zZTogZnVuY3Rpb24gb25DbG9zZShub3RpY2VLZXkpIHtcbiAgICAgICAgICAgIHZhciBfbm90aWNlJG9uQ2xvc2U7XG5cbiAgICAgICAgICAgIF90aGlzMi5yZW1vdmUobm90aWNlS2V5KTtcblxuICAgICAgICAgICAgKF9ub3RpY2Ukb25DbG9zZSA9IG5vdGljZS5vbkNsb3NlKSA9PT0gbnVsbCB8fCBfbm90aWNlJG9uQ2xvc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub3RpY2Ukb25DbG9zZS5jYWxsKG5vdGljZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkNsaWNrOiBub3RpY2Uub25DbGljayxcbiAgICAgICAgICBjaGlsZHJlbjogbm90aWNlLmNvbnRlbnRcbiAgICAgICAgfSk7IC8vIEdpdmUgdG8gbW90aW9uXG5cblxuICAgICAgICBub3RpY2VLZXlzLnB1c2goa2V5KTtcbiAgICAgICAgX3RoaXMyLm5vdGljZVByb3BzTWFwW2tleV0gPSB7XG4gICAgICAgICAgcHJvcHM6IG5vdGljZVByb3BzLFxuICAgICAgICAgIGhvbGRlckNhbGxiYWNrOiBob2xkZXJDYWxsYmFja1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMocHJlZml4Q2xzLCBjbGFzc05hbWUpLFxuICAgICAgICBzdHlsZTogc3R5bGVcbiAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENTU01vdGlvbkxpc3QsIHtcbiAgICAgICAga2V5czogbm90aWNlS2V5cyxcbiAgICAgICAgbW90aW9uTmFtZTogdGhpcy5nZXRUcmFuc2l0aW9uTmFtZSgpLFxuICAgICAgICBvblZpc2libGVDaGFuZ2VkOiBmdW5jdGlvbiBvblZpc2libGVDaGFuZ2VkKGNoYW5nZWRWaXNpYmxlLCBfcmVmNCkge1xuICAgICAgICAgIHZhciBrZXkgPSBfcmVmNC5rZXk7XG5cbiAgICAgICAgICBpZiAoIWNoYW5nZWRWaXNpYmxlKSB7XG4gICAgICAgICAgICBkZWxldGUgX3RoaXMyLm5vdGljZVByb3BzTWFwW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCBmdW5jdGlvbiAoX3JlZjUpIHtcbiAgICAgICAgdmFyIGtleSA9IF9yZWY1LmtleSxcbiAgICAgICAgICAgIG1vdGlvbkNsYXNzTmFtZSA9IF9yZWY1LmNsYXNzTmFtZSxcbiAgICAgICAgICAgIG1vdGlvblN0eWxlID0gX3JlZjUuc3R5bGU7XG4gICAgICAgIHZhciBfdGhpczIkbm90aWNlUHJvcHNNYXAgPSBfdGhpczIubm90aWNlUHJvcHNNYXBba2V5XSxcbiAgICAgICAgICAgIG5vdGljZVByb3BzID0gX3RoaXMyJG5vdGljZVByb3BzTWFwLnByb3BzLFxuICAgICAgICAgICAgaG9sZGVyQ2FsbGJhY2sgPSBfdGhpczIkbm90aWNlUHJvcHNNYXAuaG9sZGVyQ2FsbGJhY2s7XG5cbiAgICAgICAgaWYgKGhvbGRlckNhbGxiYWNrKSB7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKG1vdGlvbkNsYXNzTmFtZSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ob29rLWhvbGRlclwiKSksXG4gICAgICAgICAgICBzdHlsZTogX29iamVjdFNwcmVhZCh7fSwgbW90aW9uU3R5bGUpLFxuICAgICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYoZGl2KSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChkaXYpIHtcbiAgICAgICAgICAgICAgICBfdGhpczIuaG9va1JlZnMuc2V0KGtleSwgZGl2KTtcblxuICAgICAgICAgICAgICAgIGhvbGRlckNhbGxiYWNrKGRpdiwgbm90aWNlUHJvcHMpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIF90aGlzMi5ob29rUmVmcy5kZWxldGUoa2V5KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE5vdGljZSwgX2V4dGVuZHMoe30sIG5vdGljZVByb3BzLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKG1vdGlvbkNsYXNzTmFtZSwgbm90aWNlUHJvcHMgPT09IG51bGwgfHwgbm90aWNlUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vdGljZVByb3BzLmNsYXNzTmFtZSksXG4gICAgICAgICAgc3R5bGU6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgbW90aW9uU3R5bGUpLCBub3RpY2VQcm9wcyA9PT0gbnVsbCB8fCBub3RpY2VQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm90aWNlUHJvcHMuc3R5bGUpXG4gICAgICAgIH0pKTtcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTm90aWZpY2F0aW9uO1xufShDb21wb25lbnQpO1xuXG5Ob3RpZmljYXRpb24uZGVmYXVsdFByb3BzID0ge1xuICBwcmVmaXhDbHM6ICdyYy1ub3RpZmljYXRpb24nLFxuICBhbmltYXRpb246ICdmYWRlJyxcbiAgc3R5bGU6IHtcbiAgICB0b3A6IDY1LFxuICAgIGxlZnQ6ICc1MCUnXG4gIH1cbn07XG5cbk5vdGlmaWNhdGlvbi5uZXdJbnN0YW5jZSA9IGZ1bmN0aW9uIG5ld05vdGlmaWNhdGlvbkluc3RhbmNlKHByb3BlcnRpZXMsIGNhbGxiYWNrKSB7XG4gIHZhciBfcmVmNiA9IHByb3BlcnRpZXMgfHwge30sXG4gICAgICBnZXRDb250YWluZXIgPSBfcmVmNi5nZXRDb250YWluZXIsXG4gICAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmNiwgW1wiZ2V0Q29udGFpbmVyXCJdKTtcblxuICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgaWYgKGdldENvbnRhaW5lcikge1xuICAgIHZhciByb290ID0gZ2V0Q29udGFpbmVyKCk7XG4gICAgcm9vdC5hcHBlbmRDaGlsZChkaXYpO1xuICB9IGVsc2Uge1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTtcbiAgfVxuXG4gIHZhciBjYWxsZWQgPSBmYWxzZTtcblxuICBmdW5jdGlvbiByZWYobm90aWZpY2F0aW9uKSB7XG4gICAgaWYgKGNhbGxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNhbGxlZCA9IHRydWU7XG4gICAgY2FsbGJhY2soe1xuICAgICAgbm90aWNlOiBmdW5jdGlvbiBub3RpY2Uobm90aWNlUHJvcHMpIHtcbiAgICAgICAgbm90aWZpY2F0aW9uLmFkZChub3RpY2VQcm9wcyk7XG4gICAgICB9LFxuICAgICAgcmVtb3ZlTm90aWNlOiBmdW5jdGlvbiByZW1vdmVOb3RpY2Uoa2V5KSB7XG4gICAgICAgIG5vdGlmaWNhdGlvbi5yZW1vdmUoa2V5KTtcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnQ6IG5vdGlmaWNhdGlvbixcbiAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICAgIFJlYWN0RE9NLnVubW91bnRDb21wb25lbnRBdE5vZGUoZGl2KTtcblxuICAgICAgICBpZiAoZGl2LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICBkaXYucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkaXYpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gSG9va3NcbiAgICAgIHVzZU5vdGlmaWNhdGlvbjogZnVuY3Rpb24gdXNlTm90aWZpY2F0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3VzZU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24pO1xuICAgICAgfVxuICAgIH0pO1xuICB9IC8vIE9ubHkgdXNlZCBmb3IgdGVzdCBjYXNlIHVzYWdlXG5cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICd0ZXN0JyAmJiBwcm9wZXJ0aWVzLlRFU1RfUkVOREVSKSB7XG4gICAgcHJvcGVydGllcy5URVNUX1JFTkRFUiggLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTm90aWZpY2F0aW9uLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgIHJlZjogcmVmXG4gICAgfSkpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBSZWFjdERPTS5yZW5kZXIoIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE5vdGlmaWNhdGlvbiwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgcmVmOiByZWZcbiAgfSkpLCBkaXYpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTm90aWZpY2F0aW9uOyIsImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5XCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IE5vdGljZSBmcm9tICcuL05vdGljZSc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSW5zdGFuY2UpIHtcbiAgdmFyIGNyZWF0ZWRSZWYgPSBSZWFjdC51c2VSZWYoe30pO1xuXG4gIHZhciBfUmVhY3QkdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZShbXSksXG4gICAgICBfUmVhY3QkdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX1JlYWN0JHVzZVN0YXRlLCAyKSxcbiAgICAgIGVsZW1lbnRzID0gX1JlYWN0JHVzZVN0YXRlMlswXSxcbiAgICAgIHNldEVsZW1lbnRzID0gX1JlYWN0JHVzZVN0YXRlMlsxXTtcblxuICBmdW5jdGlvbiBub3RpZnkobm90aWNlUHJvcHMpIHtcbiAgICB2YXIgZmlyc3RNb3VudCA9IHRydWU7XG4gICAgbm90aWZpY2F0aW9uSW5zdGFuY2UuYWRkKG5vdGljZVByb3BzLCBmdW5jdGlvbiAoZGl2LCBwcm9wcykge1xuICAgICAgdmFyIGtleSA9IHByb3BzLmtleTtcblxuICAgICAgaWYgKGRpdiAmJiAoIWNyZWF0ZWRSZWYuY3VycmVudFtrZXldIHx8IGZpcnN0TW91bnQpKSB7XG4gICAgICAgIHZhciBub3RpY2VFbGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChOb3RpY2UsIF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICAgIGhvbGRlcjogZGl2XG4gICAgICAgIH0pKTtcbiAgICAgICAgY3JlYXRlZFJlZi5jdXJyZW50W2tleV0gPSBub3RpY2VFbGU7XG4gICAgICAgIHNldEVsZW1lbnRzKGZ1bmN0aW9uIChvcmlnaW5FbGVtZW50cykge1xuICAgICAgICAgIHZhciBpbmRleCA9IG9yaWdpbkVsZW1lbnRzLmZpbmRJbmRleChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlLmtleSA9PT0gcHJvcHMua2V5O1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkob3JpZ2luRWxlbWVudHMpLCBbbm90aWNlRWxlXSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGNsb25lTGlzdCA9IF90b0NvbnN1bWFibGVBcnJheShvcmlnaW5FbGVtZW50cyk7XG5cbiAgICAgICAgICBjbG9uZUxpc3RbaW5kZXhdID0gbm90aWNlRWxlO1xuICAgICAgICAgIHJldHVybiBjbG9uZUxpc3Q7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBmaXJzdE1vdW50ID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gW25vdGlmeSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGVsZW1lbnRzKV07XG59IiwiaW1wb3J0IE5vdGlmaWNhdGlvbiBmcm9tICcuL05vdGlmaWNhdGlvbic7XG5leHBvcnQgZGVmYXVsdCBOb3RpZmljYXRpb247IiwiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHknO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9leHRlbmRzJztcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJztcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJztcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJztcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybic7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9pbmhlcml0cyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZW5lcmF0ZSwgZ2V0U2Vjb25kYXJ5Q29sb3IsIGlzSWNvbkRlZmluaXRpb24sIGxvZywgTWluaU1hcCwgd2l0aFN1ZmZpeCB9IGZyb20gJy4uL3V0aWxzJztcbnZhciB0d29Ub25lQ29sb3JQYWxldHRlID0ge1xuICAgIHByaW1hcnlDb2xvcjogJyMzMzMnLFxuICAgIHNlY29uZGFyeUNvbG9yOiAnI0U2RTZFNidcbn07XG5cbnZhciBJY29uID0gZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgICBfaW5oZXJpdHMoSWNvbiwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgICBmdW5jdGlvbiBJY29uKCkge1xuICAgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSWNvbik7XG5cbiAgICAgICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChJY29uLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoSWNvbikpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICAgIH1cblxuICAgIF9jcmVhdGVDbGFzcyhJY29uLCBbe1xuICAgICAgICBrZXk6ICdyZW5kZXInLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgICAgICAgdmFyIF9leHRlbmRzMjtcblxuICAgICAgICAgICAgdmFyIF9wcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgICAgICAgdHlwZSA9IF9wcm9wcy50eXBlLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA9IF9wcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgb25DbGljayA9IF9wcm9wcy5vbkNsaWNrLFxuICAgICAgICAgICAgICAgIHN0eWxlID0gX3Byb3BzLnN0eWxlLFxuICAgICAgICAgICAgICAgIHByaW1hcnlDb2xvciA9IF9wcm9wcy5wcmltYXJ5Q29sb3IsXG4gICAgICAgICAgICAgICAgc2Vjb25kYXJ5Q29sb3IgPSBfcHJvcHMuc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcHJvcHMsIFsndHlwZScsICdjbGFzc05hbWUnLCAnb25DbGljaycsICdzdHlsZScsICdwcmltYXJ5Q29sb3InLCAnc2Vjb25kYXJ5Q29sb3InXSk7XG5cbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSB2b2lkIDA7XG4gICAgICAgICAgICB2YXIgY29sb3JzID0gdHdvVG9uZUNvbG9yUGFsZXR0ZTtcbiAgICAgICAgICAgIGlmIChwcmltYXJ5Q29sb3IpIHtcbiAgICAgICAgICAgICAgICBjb2xvcnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHByaW1hcnlDb2xvcjogcHJpbWFyeUNvbG9yLFxuICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlDb2xvcjogc2Vjb25kYXJ5Q29sb3IgfHwgZ2V0U2Vjb25kYXJ5Q29sb3IocHJpbWFyeUNvbG9yKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNJY29uRGVmaW5pdGlvbih0eXBlKSkge1xuICAgICAgICAgICAgICAgIHRhcmdldCA9IHR5cGU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHRhcmdldCA9IEljb24uZ2V0KHR5cGUsIGNvbG9ycyk7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbG9nKGBDb3VsZCBub3QgZmluZCBpY29uOiAke3R5cGV9YCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgbG9nKCd0eXBlIHNob3VsZCBiZSBzdHJpbmcgb3IgaWNvbiBkZWZpbml0b24sIGJ1dCBnb3QgJyArIHR5cGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRhcmdldCAmJiB0eXBlb2YgdGFyZ2V0Lmljb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBfZXh0ZW5kcyh7fSwgdGFyZ2V0LCB7XG4gICAgICAgICAgICAgICAgICAgIGljb246IHRhcmdldC5pY29uKGNvbG9ycy5wcmltYXJ5Q29sb3IsIGNvbG9ycy5zZWNvbmRhcnlDb2xvcilcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZSh0YXJnZXQuaWNvbiwgJ3N2Zy0nICsgdGFyZ2V0Lm5hbWUsIF9leHRlbmRzKChfZXh0ZW5kczIgPSB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgb25DbGljazogb25DbGljayxcbiAgICAgICAgICAgICAgICBzdHlsZTogc3R5bGVcbiAgICAgICAgICAgIH0sIF9kZWZpbmVQcm9wZXJ0eShfZXh0ZW5kczIsICdkYXRhLWljb24nLCB0YXJnZXQubmFtZSksIF9kZWZpbmVQcm9wZXJ0eShfZXh0ZW5kczIsICd3aWR0aCcsICcxZW0nKSwgX2RlZmluZVByb3BlcnR5KF9leHRlbmRzMiwgJ2hlaWdodCcsICcxZW0nKSwgX2RlZmluZVByb3BlcnR5KF9leHRlbmRzMiwgJ2ZpbGwnLCAnY3VycmVudENvbG9yJyksIF9kZWZpbmVQcm9wZXJ0eShfZXh0ZW5kczIsICdhcmlhLWhpZGRlbicsICd0cnVlJyksIF9kZWZpbmVQcm9wZXJ0eShfZXh0ZW5kczIsICdmb2N1c2FibGUnLCAnZmFsc2UnKSwgX2V4dGVuZHMyKSwgcmVzdCkpO1xuICAgICAgICB9XG4gICAgfV0sIFt7XG4gICAgICAgIGtleTogJ2FkZCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBhZGQoKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGljb25zID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgICAgICAgICAgaWNvbnNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGljb25zLmZvckVhY2goZnVuY3Rpb24gKGljb24pIHtcbiAgICAgICAgICAgICAgICBfdGhpczIuZGVmaW5pdGlvbnMuc2V0KHdpdGhTdWZmaXgoaWNvbi5uYW1lLCBpY29uLnRoZW1lKSwgaWNvbik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnY2xlYXInLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmluaXRpb25zLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2dldCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQoa2V5KSB7XG4gICAgICAgICAgICB2YXIgY29sb3JzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0d29Ub25lQ29sb3JQYWxldHRlO1xuXG4gICAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHRoaXMuZGVmaW5pdGlvbnMuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAmJiB0eXBlb2YgdGFyZ2V0Lmljb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gX2V4dGVuZHMoe30sIHRhcmdldCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogdGFyZ2V0Lmljb24oY29sb3JzLnByaW1hcnlDb2xvciwgY29sb3JzLnNlY29uZGFyeUNvbG9yKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnc2V0VHdvVG9uZUNvbG9ycycsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRUd29Ub25lQ29sb3JzKF9yZWYpIHtcbiAgICAgICAgICAgIHZhciBwcmltYXJ5Q29sb3IgPSBfcmVmLnByaW1hcnlDb2xvcixcbiAgICAgICAgICAgICAgICBzZWNvbmRhcnlDb2xvciA9IF9yZWYuc2Vjb25kYXJ5Q29sb3I7XG5cbiAgICAgICAgICAgIHR3b1RvbmVDb2xvclBhbGV0dGUucHJpbWFyeUNvbG9yID0gcHJpbWFyeUNvbG9yO1xuICAgICAgICAgICAgdHdvVG9uZUNvbG9yUGFsZXR0ZS5zZWNvbmRhcnlDb2xvciA9IHNlY29uZGFyeUNvbG9yIHx8IGdldFNlY29uZGFyeUNvbG9yKHByaW1hcnlDb2xvcik7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2dldFR3b1RvbmVDb2xvcnMnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VHdvVG9uZUNvbG9ycygpIHtcbiAgICAgICAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgdHdvVG9uZUNvbG9yUGFsZXR0ZSk7XG4gICAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gSWNvbjtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuSWNvbi5kaXNwbGF5TmFtZSA9ICdJY29uUmVhY3QnO1xuSWNvbi5kZWZpbml0aW9ucyA9IG5ldyBNaW5pTWFwKCk7XG5leHBvcnQgZGVmYXVsdCBJY29uOyIsImZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywga2V5LCBhcmcpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7XG4gICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZWplY3QoZXJyb3IpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChpbmZvLmRvbmUpIHtcbiAgICByZXNvbHZlKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3IoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXMsXG4gICAgICAgIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcblxuICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBfdGhyb3coZXJyKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgfVxuXG4gICAgICBfbmV4dCh1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9hc3luY1RvR2VuZXJhdG9yO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyIsImZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywga2V5LCBhcmcpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7XG4gICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZWplY3QoZXJyb3IpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChpbmZvLmRvbmUpIHtcbiAgICByZXNvbHZlKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3IoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXMsXG4gICAgICAgIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcblxuICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBfdGhyb3coZXJyKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgfVxuXG4gICAgICBfbmV4dCh1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9hc3luY1RvR2VuZXJhdG9yO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyIsIid1c2Ugc3RyaWN0JztcbnZhciBzdHJpY3RVcmlFbmNvZGUgPSByZXF1aXJlKCdzdHJpY3QtdXJpLWVuY29kZScpO1xudmFyIG9iamVjdEFzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcbnZhciBkZWNvZGVDb21wb25lbnQgPSByZXF1aXJlKCdkZWNvZGUtdXJpLWNvbXBvbmVudCcpO1xuXG5mdW5jdGlvbiBlbmNvZGVyRm9yQXJyYXlGb3JtYXQob3B0cykge1xuXHRzd2l0Y2ggKG9wdHMuYXJyYXlGb3JtYXQpIHtcblx0XHRjYXNlICdpbmRleCc6XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGtleSwgdmFsdWUsIGluZGV4KSB7XG5cdFx0XHRcdHJldHVybiB2YWx1ZSA9PT0gbnVsbCA/IFtcblx0XHRcdFx0XHRlbmNvZGUoa2V5LCBvcHRzKSxcblx0XHRcdFx0XHQnWycsXG5cdFx0XHRcdFx0aW5kZXgsXG5cdFx0XHRcdFx0J10nXG5cdFx0XHRcdF0uam9pbignJykgOiBbXG5cdFx0XHRcdFx0ZW5jb2RlKGtleSwgb3B0cyksXG5cdFx0XHRcdFx0J1snLFxuXHRcdFx0XHRcdGVuY29kZShpbmRleCwgb3B0cyksXG5cdFx0XHRcdFx0J109Jyxcblx0XHRcdFx0XHRlbmNvZGUodmFsdWUsIG9wdHMpXG5cdFx0XHRcdF0uam9pbignJyk7XG5cdFx0XHR9O1xuXG5cdFx0Y2FzZSAnYnJhY2tldCc6XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcblx0XHRcdFx0cmV0dXJuIHZhbHVlID09PSBudWxsID8gZW5jb2RlKGtleSwgb3B0cykgOiBbXG5cdFx0XHRcdFx0ZW5jb2RlKGtleSwgb3B0cyksXG5cdFx0XHRcdFx0J1tdPScsXG5cdFx0XHRcdFx0ZW5jb2RlKHZhbHVlLCBvcHRzKVxuXHRcdFx0XHRdLmpvaW4oJycpO1xuXHRcdFx0fTtcblxuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcblx0XHRcdFx0cmV0dXJuIHZhbHVlID09PSBudWxsID8gZW5jb2RlKGtleSwgb3B0cykgOiBbXG5cdFx0XHRcdFx0ZW5jb2RlKGtleSwgb3B0cyksXG5cdFx0XHRcdFx0Jz0nLFxuXHRcdFx0XHRcdGVuY29kZSh2YWx1ZSwgb3B0cylcblx0XHRcdFx0XS5qb2luKCcnKTtcblx0XHRcdH07XG5cdH1cbn1cblxuZnVuY3Rpb24gcGFyc2VyRm9yQXJyYXlGb3JtYXQob3B0cykge1xuXHR2YXIgcmVzdWx0O1xuXG5cdHN3aXRjaCAob3B0cy5hcnJheUZvcm1hdCkge1xuXHRcdGNhc2UgJ2luZGV4Jzpcblx0XHRcdHJldHVybiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSwgYWNjdW11bGF0b3IpIHtcblx0XHRcdFx0cmVzdWx0ID0gL1xcWyhcXGQqKVxcXSQvLmV4ZWMoa2V5KTtcblxuXHRcdFx0XHRrZXkgPSBrZXkucmVwbGFjZSgvXFxbXFxkKlxcXSQvLCAnJyk7XG5cblx0XHRcdFx0aWYgKCFyZXN1bHQpIHtcblx0XHRcdFx0XHRhY2N1bXVsYXRvcltrZXldID0gdmFsdWU7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGFjY3VtdWxhdG9yW2tleV0gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdGFjY3VtdWxhdG9yW2tleV0gPSB7fTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGFjY3VtdWxhdG9yW2tleV1bcmVzdWx0WzFdXSA9IHZhbHVlO1xuXHRcdFx0fTtcblxuXHRcdGNhc2UgJ2JyYWNrZXQnOlxuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChrZXksIHZhbHVlLCBhY2N1bXVsYXRvcikge1xuXHRcdFx0XHRyZXN1bHQgPSAvKFxcW1xcXSkkLy5leGVjKGtleSk7XG5cdFx0XHRcdGtleSA9IGtleS5yZXBsYWNlKC9cXFtcXF0kLywgJycpO1xuXG5cdFx0XHRcdGlmICghcmVzdWx0KSB7XG5cdFx0XHRcdFx0YWNjdW11bGF0b3Jba2V5XSA9IHZhbHVlO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fSBlbHNlIGlmIChhY2N1bXVsYXRvcltrZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRhY2N1bXVsYXRvcltrZXldID0gW3ZhbHVlXTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRhY2N1bXVsYXRvcltrZXldID0gW10uY29uY2F0KGFjY3VtdWxhdG9yW2tleV0sIHZhbHVlKTtcblx0XHRcdH07XG5cblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChrZXksIHZhbHVlLCBhY2N1bXVsYXRvcikge1xuXHRcdFx0XHRpZiAoYWNjdW11bGF0b3Jba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0YWNjdW11bGF0b3Jba2V5XSA9IHZhbHVlO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGFjY3VtdWxhdG9yW2tleV0gPSBbXS5jb25jYXQoYWNjdW11bGF0b3Jba2V5XSwgdmFsdWUpO1xuXHRcdFx0fTtcblx0fVxufVxuXG5mdW5jdGlvbiBlbmNvZGUodmFsdWUsIG9wdHMpIHtcblx0aWYgKG9wdHMuZW5jb2RlKSB7XG5cdFx0cmV0dXJuIG9wdHMuc3RyaWN0ID8gc3RyaWN0VXJpRW5jb2RlKHZhbHVlKSA6IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XG5cdH1cblxuXHRyZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGtleXNTb3J0ZXIoaW5wdXQpIHtcblx0aWYgKEFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XG5cdFx0cmV0dXJuIGlucHV0LnNvcnQoKTtcblx0fSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnKSB7XG5cdFx0cmV0dXJuIGtleXNTb3J0ZXIoT2JqZWN0LmtleXMoaW5wdXQpKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG5cdFx0XHRyZXR1cm4gTnVtYmVyKGEpIC0gTnVtYmVyKGIpO1xuXHRcdH0pLm1hcChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRyZXR1cm4gaW5wdXRba2V5XTtcblx0XHR9KTtcblx0fVxuXG5cdHJldHVybiBpbnB1dDtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdChzdHIpIHtcblx0dmFyIHF1ZXJ5U3RhcnQgPSBzdHIuaW5kZXhPZignPycpO1xuXHRpZiAocXVlcnlTdGFydCA9PT0gLTEpIHtcblx0XHRyZXR1cm4gJyc7XG5cdH1cblx0cmV0dXJuIHN0ci5zbGljZShxdWVyeVN0YXJ0ICsgMSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlKHN0ciwgb3B0cykge1xuXHRvcHRzID0gb2JqZWN0QXNzaWduKHthcnJheUZvcm1hdDogJ25vbmUnfSwgb3B0cyk7XG5cblx0dmFyIGZvcm1hdHRlciA9IHBhcnNlckZvckFycmF5Rm9ybWF0KG9wdHMpO1xuXG5cdC8vIENyZWF0ZSBhbiBvYmplY3Qgd2l0aCBubyBwcm90b3R5cGVcblx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9xdWVyeS1zdHJpbmcvaXNzdWVzLzQ3XG5cdHZhciByZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5cdGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJykge1xuXHRcdHJldHVybiByZXQ7XG5cdH1cblxuXHRzdHIgPSBzdHIudHJpbSgpLnJlcGxhY2UoL15bPyMmXS8sICcnKTtcblxuXHRpZiAoIXN0cikge1xuXHRcdHJldHVybiByZXQ7XG5cdH1cblxuXHRzdHIuc3BsaXQoJyYnKS5mb3JFYWNoKGZ1bmN0aW9uIChwYXJhbSkge1xuXHRcdHZhciBwYXJ0cyA9IHBhcmFtLnJlcGxhY2UoL1xcKy9nLCAnICcpLnNwbGl0KCc9Jyk7XG5cdFx0Ly8gRmlyZWZveCAocHJlIDQwKSBkZWNvZGVzIGAlM0RgIHRvIGA9YFxuXHRcdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvcXVlcnktc3RyaW5nL3B1bGwvMzdcblx0XHR2YXIga2V5ID0gcGFydHMuc2hpZnQoKTtcblx0XHR2YXIgdmFsID0gcGFydHMubGVuZ3RoID4gMCA/IHBhcnRzLmpvaW4oJz0nKSA6IHVuZGVmaW5lZDtcblxuXHRcdC8vIG1pc3NpbmcgYD1gIHNob3VsZCBiZSBgbnVsbGA6XG5cdFx0Ly8gaHR0cDovL3czLm9yZy9UUi8yMDEyL1dELXVybC0yMDEyMDUyNC8jY29sbGVjdC11cmwtcGFyYW1ldGVyc1xuXHRcdHZhbCA9IHZhbCA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGRlY29kZUNvbXBvbmVudCh2YWwpO1xuXG5cdFx0Zm9ybWF0dGVyKGRlY29kZUNvbXBvbmVudChrZXkpLCB2YWwsIHJldCk7XG5cdH0pO1xuXG5cdHJldHVybiBPYmplY3Qua2V5cyhyZXQpLnNvcnQoKS5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwga2V5KSB7XG5cdFx0dmFyIHZhbCA9IHJldFtrZXldO1xuXHRcdGlmIChCb29sZWFuKHZhbCkgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsKSkge1xuXHRcdFx0Ly8gU29ydCBvYmplY3Qga2V5cywgbm90IHZhbHVlc1xuXHRcdFx0cmVzdWx0W2tleV0gPSBrZXlzU29ydGVyKHZhbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlc3VsdFtrZXldID0gdmFsO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0sIE9iamVjdC5jcmVhdGUobnVsbCkpO1xufVxuXG5leHBvcnRzLmV4dHJhY3QgPSBleHRyYWN0O1xuZXhwb3J0cy5wYXJzZSA9IHBhcnNlO1xuXG5leHBvcnRzLnN0cmluZ2lmeSA9IGZ1bmN0aW9uIChvYmosIG9wdHMpIHtcblx0dmFyIGRlZmF1bHRzID0ge1xuXHRcdGVuY29kZTogdHJ1ZSxcblx0XHRzdHJpY3Q6IHRydWUsXG5cdFx0YXJyYXlGb3JtYXQ6ICdub25lJ1xuXHR9O1xuXG5cdG9wdHMgPSBvYmplY3RBc3NpZ24oZGVmYXVsdHMsIG9wdHMpO1xuXG5cdGlmIChvcHRzLnNvcnQgPT09IGZhbHNlKSB7XG5cdFx0b3B0cy5zb3J0ID0gZnVuY3Rpb24gKCkge307XG5cdH1cblxuXHR2YXIgZm9ybWF0dGVyID0gZW5jb2RlckZvckFycmF5Rm9ybWF0KG9wdHMpO1xuXG5cdHJldHVybiBvYmogPyBPYmplY3Qua2V5cyhvYmopLnNvcnQob3B0cy5zb3J0KS5tYXAoZnVuY3Rpb24gKGtleSkge1xuXHRcdHZhciB2YWwgPSBvYmpba2V5XTtcblxuXHRcdGlmICh2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuICcnO1xuXHRcdH1cblxuXHRcdGlmICh2YWwgPT09IG51bGwpIHtcblx0XHRcdHJldHVybiBlbmNvZGUoa2V5LCBvcHRzKTtcblx0XHR9XG5cblx0XHRpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG5cdFx0XHR2YXIgcmVzdWx0ID0gW107XG5cblx0XHRcdHZhbC5zbGljZSgpLmZvckVhY2goZnVuY3Rpb24gKHZhbDIpIHtcblx0XHRcdFx0aWYgKHZhbDIgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJlc3VsdC5wdXNoKGZvcm1hdHRlcihrZXksIHZhbDIsIHJlc3VsdC5sZW5ndGgpKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRyZXR1cm4gcmVzdWx0LmpvaW4oJyYnKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZW5jb2RlKGtleSwgb3B0cykgKyAnPScgKyBlbmNvZGUodmFsLCBvcHRzKTtcblx0fSkuZmlsdGVyKGZ1bmN0aW9uICh4KSB7XG5cdFx0cmV0dXJuIHgubGVuZ3RoID4gMDtcblx0fSkuam9pbignJicpIDogJyc7XG59O1xuXG5leHBvcnRzLnBhcnNlVXJsID0gZnVuY3Rpb24gKHN0ciwgb3B0cykge1xuXHRyZXR1cm4ge1xuXHRcdHVybDogc3RyLnNwbGl0KCc/JylbMF0gfHwgJycsXG5cdFx0cXVlcnk6IHBhcnNlKGV4dHJhY3Qoc3RyKSwgb3B0cylcblx0fTtcbn07XG4iLCIvKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiwgdGhhdCwgYXMgbG9uZyBhcyBpdCBjb250aW51ZXMgdG8gYmUgaW52b2tlZCwgd2lsbCBub3RcbiAqIGJlIHRyaWdnZXJlZC4gVGhlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFmdGVyIGl0IHN0b3BzIGJlaW5nIGNhbGxlZCBmb3JcbiAqIE4gbWlsbGlzZWNvbmRzLiBJZiBgaW1tZWRpYXRlYCBpcyBwYXNzZWQsIHRyaWdnZXIgdGhlIGZ1bmN0aW9uIG9uIHRoZVxuICogbGVhZGluZyBlZGdlLCBpbnN0ZWFkIG9mIHRoZSB0cmFpbGluZy4gVGhlIGZ1bmN0aW9uIGFsc28gaGFzIGEgcHJvcGVydHkgJ2NsZWFyJyBcbiAqIHRoYXQgaXMgYSBmdW5jdGlvbiB3aGljaCB3aWxsIGNsZWFyIHRoZSB0aW1lciB0byBwcmV2ZW50IHByZXZpb3VzbHkgc2NoZWR1bGVkIGV4ZWN1dGlvbnMuIFxuICpcbiAqIEBzb3VyY2UgdW5kZXJzY29yZS5qc1xuICogQHNlZSBodHRwOi8vdW5zY3JpcHRhYmxlLmNvbS8yMDA5LzAzLzIwL2RlYm91bmNpbmctamF2YXNjcmlwdC1tZXRob2RzL1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuY3Rpb24gdG8gd3JhcFxuICogQHBhcmFtIHtOdW1iZXJ9IHRpbWVvdXQgaW4gbXMgKGAxMDBgKVxuICogQHBhcmFtIHtCb29sZWFufSB3aGV0aGVyIHRvIGV4ZWN1dGUgYXQgdGhlIGJlZ2lubmluZyAoYGZhbHNlYClcbiAqIEBhcGkgcHVibGljXG4gKi9cbmZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSl7XG4gIHZhciB0aW1lb3V0LCBhcmdzLCBjb250ZXh0LCB0aW1lc3RhbXAsIHJlc3VsdDtcbiAgaWYgKG51bGwgPT0gd2FpdCkgd2FpdCA9IDEwMDtcblxuICBmdW5jdGlvbiBsYXRlcigpIHtcbiAgICB2YXIgbGFzdCA9IERhdGUubm93KCkgLSB0aW1lc3RhbXA7XG5cbiAgICBpZiAobGFzdCA8IHdhaXQgJiYgbGFzdCA+PSAwKSB7XG4gICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCAtIGxhc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgIGlmICghaW1tZWRpYXRlKSB7XG4gICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgIGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIGRlYm91bmNlZCA9IGZ1bmN0aW9uKCl7XG4gICAgY29udGV4dCA9IHRoaXM7XG4gICAgYXJncyA9IGFyZ3VtZW50cztcbiAgICB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIHZhciBjYWxsTm93ID0gaW1tZWRpYXRlICYmICF0aW1lb3V0O1xuICAgIGlmICghdGltZW91dCkgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQpO1xuICAgIGlmIChjYWxsTm93KSB7XG4gICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgY29udGV4dCA9IGFyZ3MgPSBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgZGVib3VuY2VkLmNsZWFyID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgIH1cbiAgfTtcbiAgXG4gIGRlYm91bmNlZC5mbHVzaCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgY29udGV4dCA9IGFyZ3MgPSBudWxsO1xuICAgICAgXG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGRlYm91bmNlZDtcbn07XG5cbi8vIEFkZHMgY29tcGF0aWJpbGl0eSBmb3IgRVMgbW9kdWxlc1xuZGVib3VuY2UuZGVib3VuY2UgPSBkZWJvdW5jZTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWJvdW5jZTtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN5bWJvbE9ic2VydmFibGVQb255ZmlsbChyb290KSB7XG5cdHZhciByZXN1bHQ7XG5cdHZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxuXHRpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdGlmIChTeW1ib2wub2JzZXJ2YWJsZSkge1xuXHRcdFx0cmVzdWx0ID0gU3ltYm9sLm9ic2VydmFibGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlc3VsdCA9IFN5bWJvbCgnb2JzZXJ2YWJsZScpO1xuXHRcdFx0U3ltYm9sLm9ic2VydmFibGUgPSByZXN1bHQ7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdHJlc3VsdCA9ICdAQG9ic2VydmFibGUnO1xuXHR9XG5cblx0cmV0dXJuIHJlc3VsdDtcbn07XG4iLCIvKiBnbG9iYWwgd2luZG93LCBleHBvcnRzLCBkZWZpbmUgKi9cblxuIWZ1bmN0aW9uKCkge1xuICAgICd1c2Ugc3RyaWN0J1xuXG4gICAgdmFyIHJlID0ge1xuICAgICAgICBub3Rfc3RyaW5nOiAvW15zXS8sXG4gICAgICAgIG5vdF9ib29sOiAvW150XS8sXG4gICAgICAgIG5vdF90eXBlOiAvW15UXS8sXG4gICAgICAgIG5vdF9wcmltaXRpdmU6IC9bXnZdLyxcbiAgICAgICAgbnVtYmVyOiAvW2RpZWZnXS8sXG4gICAgICAgIG51bWVyaWNfYXJnOiAvW2JjZGllZmd1eFhdLyxcbiAgICAgICAganNvbjogL1tqXS8sXG4gICAgICAgIG5vdF9qc29uOiAvW15qXS8sXG4gICAgICAgIHRleHQ6IC9eW15cXHgyNV0rLyxcbiAgICAgICAgbW9kdWxvOiAvXlxceDI1ezJ9LyxcbiAgICAgICAgcGxhY2Vob2xkZXI6IC9eXFx4MjUoPzooWzEtOV1cXGQqKVxcJHxcXCgoW14pXSspXFwpKT8oXFwrKT8oMHwnW14kXSk/KC0pPyhcXGQrKT8oPzpcXC4oXFxkKykpPyhbYi1naWpvc3RUdXZ4WF0pLyxcbiAgICAgICAga2V5OiAvXihbYS16X11bYS16X1xcZF0qKS9pLFxuICAgICAgICBrZXlfYWNjZXNzOiAvXlxcLihbYS16X11bYS16X1xcZF0qKS9pLFxuICAgICAgICBpbmRleF9hY2Nlc3M6IC9eXFxbKFxcZCspXFxdLyxcbiAgICAgICAgc2lnbjogL15bKy1dL1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNwcmludGYoa2V5KSB7XG4gICAgICAgIC8vIGBhcmd1bWVudHNgIGlzIG5vdCBhbiBhcnJheSwgYnV0IHNob3VsZCBiZSBmaW5lIGZvciB0aGlzIGNhbGxcbiAgICAgICAgcmV0dXJuIHNwcmludGZfZm9ybWF0KHNwcmludGZfcGFyc2Uoa2V5KSwgYXJndW1lbnRzKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZzcHJpbnRmKGZtdCwgYXJndikge1xuICAgICAgICByZXR1cm4gc3ByaW50Zi5hcHBseShudWxsLCBbZm10XS5jb25jYXQoYXJndiB8fCBbXSkpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3ByaW50Zl9mb3JtYXQocGFyc2VfdHJlZSwgYXJndikge1xuICAgICAgICB2YXIgY3Vyc29yID0gMSwgdHJlZV9sZW5ndGggPSBwYXJzZV90cmVlLmxlbmd0aCwgYXJnLCBvdXRwdXQgPSAnJywgaSwgaywgcGgsIHBhZCwgcGFkX2NoYXJhY3RlciwgcGFkX2xlbmd0aCwgaXNfcG9zaXRpdmUsIHNpZ25cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRyZWVfbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyc2VfdHJlZVtpXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gcGFyc2VfdHJlZVtpXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHBhcnNlX3RyZWVbaV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgcGggPSBwYXJzZV90cmVlW2ldIC8vIGNvbnZlbmllbmNlIHB1cnBvc2VzIG9ubHlcbiAgICAgICAgICAgICAgICBpZiAocGgua2V5cykgeyAvLyBrZXl3b3JkIGFyZ3VtZW50XG4gICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZ3ZbY3Vyc29yXVxuICAgICAgICAgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgcGgua2V5cy5sZW5ndGg7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZyA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignW3NwcmludGZdIENhbm5vdCBhY2Nlc3MgcHJvcGVydHkgXCIlc1wiIG9mIHVuZGVmaW5lZCB2YWx1ZSBcIiVzXCInLCBwaC5rZXlzW2tdLCBwaC5rZXlzW2stMV0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gYXJnW3BoLmtleXNba11dXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocGgucGFyYW1fbm8pIHsgLy8gcG9zaXRpb25hbCBhcmd1bWVudCAoZXhwbGljaXQpXG4gICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZ3ZbcGgucGFyYW1fbm9dXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgeyAvLyBwb3NpdGlvbmFsIGFyZ3VtZW50IChpbXBsaWNpdClcbiAgICAgICAgICAgICAgICAgICAgYXJnID0gYXJndltjdXJzb3IrK11cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocmUubm90X3R5cGUudGVzdChwaC50eXBlKSAmJiByZS5ub3RfcHJpbWl0aXZlLnRlc3QocGgudHlwZSkgJiYgYXJnIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnID0gYXJnKClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocmUubnVtZXJpY19hcmcudGVzdChwaC50eXBlKSAmJiAodHlwZW9mIGFyZyAhPT0gJ251bWJlcicgJiYgaXNOYU4oYXJnKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzcHJpbnRmKCdbc3ByaW50Zl0gZXhwZWN0aW5nIG51bWJlciBidXQgZm91bmQgJVQnLCBhcmcpKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChyZS5udW1iZXIudGVzdChwaC50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICBpc19wb3NpdGl2ZSA9IGFyZyA+PSAwXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3dpdGNoIChwaC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2InOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gcGFyc2VJbnQoYXJnLCAxMCkudG9TdHJpbmcoMilcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChhcmcsIDEwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdpJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IHBhcnNlSW50KGFyZywgMTApXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdqJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IEpTT04uc3RyaW5naWZ5KGFyZywgbnVsbCwgcGgud2lkdGggPyBwYXJzZUludChwaC53aWR0aCkgOiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBwaC5wcmVjaXNpb24gPyBwYXJzZUZsb2F0KGFyZykudG9FeHBvbmVudGlhbChwaC5wcmVjaXNpb24pIDogcGFyc2VGbG9hdChhcmcpLnRvRXhwb25lbnRpYWwoKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZic6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBwaC5wcmVjaXNpb24gPyBwYXJzZUZsb2F0KGFyZykudG9GaXhlZChwaC5wcmVjaXNpb24pIDogcGFyc2VGbG9hdChhcmcpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IHBoLnByZWNpc2lvbiA/IFN0cmluZyhOdW1iZXIoYXJnLnRvUHJlY2lzaW9uKHBoLnByZWNpc2lvbikpKSA6IHBhcnNlRmxvYXQoYXJnKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSAocGFyc2VJbnQoYXJnLCAxMCkgPj4+IDApLnRvU3RyaW5nKDgpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IFN0cmluZyhhcmcpXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSAocGgucHJlY2lzaW9uID8gYXJnLnN1YnN0cmluZygwLCBwaC5wcmVjaXNpb24pIDogYXJnKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBTdHJpbmcoISFhcmcpXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSAocGgucHJlY2lzaW9uID8gYXJnLnN1YnN0cmluZygwLCBwaC5wcmVjaXNpb24pIDogYXJnKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJnKS5zbGljZSg4LCAtMSkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gKHBoLnByZWNpc2lvbiA/IGFyZy5zdWJzdHJpbmcoMCwgcGgucHJlY2lzaW9uKSA6IGFyZylcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gcGFyc2VJbnQoYXJnLCAxMCkgPj4+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3YnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gYXJnLnZhbHVlT2YoKVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gKHBoLnByZWNpc2lvbiA/IGFyZy5zdWJzdHJpbmcoMCwgcGgucHJlY2lzaW9uKSA6IGFyZylcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gKHBhcnNlSW50KGFyZywgMTApID4+PiAwKS50b1N0cmluZygxNilcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gKHBhcnNlSW50KGFyZywgMTApID4+PiAwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlLmpzb24udGVzdChwaC50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gYXJnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmUubnVtYmVyLnRlc3QocGgudHlwZSkgJiYgKCFpc19wb3NpdGl2ZSB8fCBwaC5zaWduKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiA9IGlzX3Bvc2l0aXZlID8gJysnIDogJy0nXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmcudG9TdHJpbmcoKS5yZXBsYWNlKHJlLnNpZ24sICcnKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICcnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcGFkX2NoYXJhY3RlciA9IHBoLnBhZF9jaGFyID8gcGgucGFkX2NoYXIgPT09ICcwJyA/ICcwJyA6IHBoLnBhZF9jaGFyLmNoYXJBdCgxKSA6ICcgJ1xuICAgICAgICAgICAgICAgICAgICBwYWRfbGVuZ3RoID0gcGgud2lkdGggLSAoc2lnbiArIGFyZykubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIHBhZCA9IHBoLndpZHRoID8gKHBhZF9sZW5ndGggPiAwID8gcGFkX2NoYXJhY3Rlci5yZXBlYXQocGFkX2xlbmd0aCkgOiAnJykgOiAnJ1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gcGguYWxpZ24gPyBzaWduICsgYXJnICsgcGFkIDogKHBhZF9jaGFyYWN0ZXIgPT09ICcwJyA/IHNpZ24gKyBwYWQgKyBhcmcgOiBwYWQgKyBzaWduICsgYXJnKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0cHV0XG4gICAgfVxuXG4gICAgdmFyIHNwcmludGZfY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpXG5cbiAgICBmdW5jdGlvbiBzcHJpbnRmX3BhcnNlKGZtdCkge1xuICAgICAgICBpZiAoc3ByaW50Zl9jYWNoZVtmbXRdKSB7XG4gICAgICAgICAgICByZXR1cm4gc3ByaW50Zl9jYWNoZVtmbXRdXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX2ZtdCA9IGZtdCwgbWF0Y2gsIHBhcnNlX3RyZWUgPSBbXSwgYXJnX25hbWVzID0gMFxuICAgICAgICB3aGlsZSAoX2ZtdCkge1xuICAgICAgICAgICAgaWYgKChtYXRjaCA9IHJlLnRleHQuZXhlYyhfZm10KSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBwYXJzZV90cmVlLnB1c2gobWF0Y2hbMF0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgobWF0Y2ggPSByZS5tb2R1bG8uZXhlYyhfZm10KSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBwYXJzZV90cmVlLnB1c2goJyUnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoKG1hdGNoID0gcmUucGxhY2Vob2xkZXIuZXhlYyhfZm10KSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2hbMl0pIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnX25hbWVzIHw9IDFcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpZWxkX2xpc3QgPSBbXSwgcmVwbGFjZW1lbnRfZmllbGQgPSBtYXRjaFsyXSwgZmllbGRfbWF0Y2ggPSBbXVxuICAgICAgICAgICAgICAgICAgICBpZiAoKGZpZWxkX21hdGNoID0gcmUua2V5LmV4ZWMocmVwbGFjZW1lbnRfZmllbGQpKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRfbGlzdC5wdXNoKGZpZWxkX21hdGNoWzFdKVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChyZXBsYWNlbWVudF9maWVsZCA9IHJlcGxhY2VtZW50X2ZpZWxkLnN1YnN0cmluZyhmaWVsZF9tYXRjaFswXS5sZW5ndGgpKSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGZpZWxkX21hdGNoID0gcmUua2V5X2FjY2Vzcy5leGVjKHJlcGxhY2VtZW50X2ZpZWxkKSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRfbGlzdC5wdXNoKGZpZWxkX21hdGNoWzFdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgoZmllbGRfbWF0Y2ggPSByZS5pbmRleF9hY2Nlc3MuZXhlYyhyZXBsYWNlbWVudF9maWVsZCkpICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkX2xpc3QucHVzaChmaWVsZF9tYXRjaFsxXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignW3NwcmludGZdIGZhaWxlZCB0byBwYXJzZSBuYW1lZCBhcmd1bWVudCBrZXknKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignW3NwcmludGZdIGZhaWxlZCB0byBwYXJzZSBuYW1lZCBhcmd1bWVudCBrZXknKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdID0gZmllbGRfbGlzdFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnX25hbWVzIHw9IDJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFyZ19uYW1lcyA9PT0gMykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tzcHJpbnRmXSBtaXhpbmcgcG9zaXRpb25hbCBhbmQgbmFtZWQgcGxhY2Vob2xkZXJzIGlzIG5vdCAoeWV0KSBzdXBwb3J0ZWQnKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHBhcnNlX3RyZWUucHVzaChcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IG1hdGNoWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1fbm86ICAgIG1hdGNoWzFdLFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5czogICAgICAgIG1hdGNoWzJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2lnbjogICAgICAgIG1hdGNoWzNdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkX2NoYXI6ICAgIG1hdGNoWzRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ246ICAgICAgIG1hdGNoWzVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICAgICAgIG1hdGNoWzZdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAgIG1hdGNoWzddLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogICAgICAgIG1hdGNoWzhdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1tzcHJpbnRmXSB1bmV4cGVjdGVkIHBsYWNlaG9sZGVyJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF9mbXQgPSBfZm10LnN1YnN0cmluZyhtYXRjaFswXS5sZW5ndGgpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNwcmludGZfY2FjaGVbZm10XSA9IHBhcnNlX3RyZWVcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBleHBvcnQgdG8gZWl0aGVyIGJyb3dzZXIgb3Igbm9kZS5qc1xuICAgICAqL1xuICAgIC8qIGVzbGludC1kaXNhYmxlIHF1b3RlLXByb3BzICovXG4gICAgaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBleHBvcnRzWydzcHJpbnRmJ10gPSBzcHJpbnRmXG4gICAgICAgIGV4cG9ydHNbJ3ZzcHJpbnRmJ10gPSB2c3ByaW50ZlxuICAgIH1cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgd2luZG93WydzcHJpbnRmJ10gPSBzcHJpbnRmXG4gICAgICAgIHdpbmRvd1sndnNwcmludGYnXSA9IHZzcHJpbnRmXG5cbiAgICAgICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lWydhbWQnXSkge1xuICAgICAgICAgICAgZGVmaW5lKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICdzcHJpbnRmJzogc3ByaW50ZixcbiAgICAgICAgICAgICAgICAgICAgJ3ZzcHJpbnRmJzogdnNwcmludGZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qIGVzbGludC1lbmFibGUgcXVvdGUtcHJvcHMgKi9cbn0oKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIFJlYWN0RE9NID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0LWRvbVwiKSk7XG5cbnZhciBfcmNBbmltYXRlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtYW5pbWF0ZVwiKSk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG52YXIgX2ljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9pY29uXCIpKTtcblxudmFyIF9jb25maWdQcm92aWRlciA9IHJlcXVpcmUoXCIuLi9jb25maWctcHJvdmlkZXJcIik7XG5cbnZhciBfZ2V0RGF0YU9yQXJpYVByb3BzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vX3V0aWwvZ2V0RGF0YU9yQXJpYVByb3BzXCIpKTtcblxudmFyIF93YXJuaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vX3V0aWwvd2FybmluZ1wiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG52YXIgQWxlcnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKEFsZXJ0LCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEFsZXJ0KTtcblxuICBmdW5jdGlvbiBBbGVydChwcm9wcykge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBbGVydCk7XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKTtcblxuICAgIF90aGlzLmhhbmRsZUNsb3NlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHZhciBkb20gPSBSZWFjdERPTS5maW5kRE9NTm9kZShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG4gICAgICBkb20uc3R5bGUuaGVpZ2h0ID0gXCJcIi5jb25jYXQoZG9tLm9mZnNldEhlaWdodCwgXCJweFwiKTsgLy8gTWFnaWMgY29kZVxuICAgICAgLy8g6YeN5aSN5LiA5qyh5ZCO5omN6IO95q2j56Gu6K6+572uIGhlaWdodFxuXG4gICAgICBkb20uc3R5bGUuaGVpZ2h0ID0gXCJcIi5jb25jYXQoZG9tLm9mZnNldEhlaWdodCwgXCJweFwiKTtcblxuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBjbG9zaW5nOiB0cnVlXG4gICAgICB9KTtcblxuICAgICAgKF90aGlzLnByb3BzLm9uQ2xvc2UgfHwgbm9vcCkoZSk7XG4gICAgfTtcblxuICAgIF90aGlzLmFuaW1hdGlvbkVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY2xvc2luZzogZmFsc2UsXG4gICAgICAgIGNsb3NlZDogdHJ1ZVxuICAgICAgfSk7XG5cbiAgICAgIChfdGhpcy5wcm9wcy5hZnRlckNsb3NlIHx8IG5vb3ApKCk7XG4gICAgfTtcblxuICAgIF90aGlzLnJlbmRlckFsZXJ0ID0gZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciBfY2xhc3NOYW1lcztcblxuICAgICAgdmFyIGdldFByZWZpeENscyA9IF9yZWYuZ2V0UHJlZml4Q2xzO1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSBfdGhpcyRwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgICAgICBjdXN0b21pemVQcmVmaXhDbHMgPSBfdGhpcyRwcm9wcy5wcmVmaXhDbHMsXG4gICAgICAgICAgbWVzc2FnZSA9IF90aGlzJHByb3BzLm1lc3NhZ2UsXG4gICAgICAgICAgY2xvc2VUZXh0ID0gX3RoaXMkcHJvcHMuY2xvc2VUZXh0LFxuICAgICAgICAgIGJhbm5lciA9IF90aGlzJHByb3BzLmJhbm5lcixcbiAgICAgICAgICBfdGhpcyRwcm9wcyRjbGFzc05hbWUgPSBfdGhpcyRwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMkY2xhc3NOYW1lID09PSB2b2lkIDAgPyAnJyA6IF90aGlzJHByb3BzJGNsYXNzTmFtZSxcbiAgICAgICAgICBzdHlsZSA9IF90aGlzJHByb3BzLnN0eWxlLFxuICAgICAgICAgIGljb24gPSBfdGhpcyRwcm9wcy5pY29uO1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIGNsb3NhYmxlID0gX3RoaXMkcHJvcHMyLmNsb3NhYmxlLFxuICAgICAgICAgIHR5cGUgPSBfdGhpcyRwcm9wczIudHlwZSxcbiAgICAgICAgICBzaG93SWNvbiA9IF90aGlzJHByb3BzMi5zaG93SWNvbixcbiAgICAgICAgICBpY29uVHlwZSA9IF90aGlzJHByb3BzMi5pY29uVHlwZTtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZSA9IF90aGlzLnN0YXRlLFxuICAgICAgICAgIGNsb3NpbmcgPSBfdGhpcyRzdGF0ZS5jbG9zaW5nLFxuICAgICAgICAgIGNsb3NlZCA9IF90aGlzJHN0YXRlLmNsb3NlZDtcbiAgICAgIHZhciBwcmVmaXhDbHMgPSBnZXRQcmVmaXhDbHMoJ2FsZXJ0JywgY3VzdG9taXplUHJlZml4Q2xzKTsgLy8gYmFubmVy5qih5byP6buY6K6k5pyJIEljb25cblxuICAgICAgc2hvd0ljb24gPSBiYW5uZXIgJiYgc2hvd0ljb24gPT09IHVuZGVmaW5lZCA/IHRydWUgOiBzaG93SWNvbjsgLy8gYmFubmVy5qih5byP6buY6K6k5Li66K2m5ZGKXG5cbiAgICAgIHR5cGUgPSBiYW5uZXIgJiYgdHlwZSA9PT0gdW5kZWZpbmVkID8gJ3dhcm5pbmcnIDogdHlwZSB8fCAnaW5mbyc7XG4gICAgICB2YXIgaWNvblRoZW1lID0gJ2ZpbGxlZCc7XG5cbiAgICAgIGlmICghaWNvblR5cGUpIHtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgICAgICBpY29uVHlwZSA9ICdjaGVjay1jaXJjbGUnO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdpbmZvJzpcbiAgICAgICAgICAgIGljb25UeXBlID0gJ2luZm8tY2lyY2xlJztcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgaWNvblR5cGUgPSAnY2xvc2UtY2lyY2xlJztcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgICAgICBpY29uVHlwZSA9ICdleGNsYW1hdGlvbi1jaXJjbGUnO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgaWNvblR5cGUgPSAnZGVmYXVsdCc7XG4gICAgICAgIH0gLy8gdXNlIG91dGxpbmUgaWNvbiBpbiBhbGVydCB3aXRoIGRlc2NyaXB0aW9uXG5cblxuICAgICAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICBpY29uVGhlbWUgPSAnb3V0bGluZWQnO1xuICAgICAgICB9XG4gICAgICB9IC8vIGNsb3NlYWJsZSB3aGVuIGNsb3NlVGV4dCBpcyBhc3NpZ25lZFxuXG5cbiAgICAgIGlmIChjbG9zZVRleHQpIHtcbiAgICAgICAgY2xvc2FibGUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgYWxlcnRDbHMgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShwcmVmaXhDbHMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItXCIpLmNvbmNhdCh0eXBlKSwgKF9jbGFzc05hbWVzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1jbG9zaW5nXCIpLCBjbG9zaW5nKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXdpdGgtZGVzY3JpcHRpb25cIiksICEhZGVzY3JpcHRpb24pLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbm8taWNvblwiKSwgIXNob3dJY29uKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWJhbm5lclwiKSwgISFiYW5uZXIpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY2xvc2FibGVcIiksIGNsb3NhYmxlKSwgX2NsYXNzTmFtZXMpLCBjbGFzc05hbWUpO1xuICAgICAgdmFyIGNsb3NlSWNvbiA9IGNsb3NhYmxlID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwge1xuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICBvbkNsaWNrOiBfdGhpcy5oYW5kbGVDbG9zZSxcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNsb3NlLWljb25cIiksXG4gICAgICAgIHRhYkluZGV4OiAwXG4gICAgICB9LCBjbG9zZVRleHQgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY2xvc2UtdGV4dFwiKVxuICAgICAgfSwgY2xvc2VUZXh0KSA6IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9pY29uW1wiZGVmYXVsdFwiXSwge1xuICAgICAgICB0eXBlOiBcImNsb3NlXCJcbiAgICAgIH0pKSA6IG51bGw7XG4gICAgICB2YXIgZGF0YU9yQXJpYVByb3BzID0gKDAsIF9nZXREYXRhT3JBcmlhUHJvcHNbXCJkZWZhdWx0XCJdKShfdGhpcy5wcm9wcyk7XG4gICAgICB2YXIgaWNvbk5vZGUgPSBpY29uICYmICggLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGljb24pID8gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChpY29uLCB7XG4gICAgICAgIGNsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pY29uXCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIGljb24ucHJvcHMuY2xhc3NOYW1lLCBpY29uLnByb3BzLmNsYXNzTmFtZSkpXG4gICAgICB9KSA6IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pY29uXCIpXG4gICAgICB9LCBpY29uKSkgfHwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2ljb25bXCJkZWZhdWx0XCJdLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pY29uXCIpLFxuICAgICAgICB0eXBlOiBpY29uVHlwZSxcbiAgICAgICAgdGhlbWU6IGljb25UaGVtZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY2xvc2VkID8gbnVsbCA6IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yY0FuaW1hdGVbXCJkZWZhdWx0XCJdLCB7XG4gICAgICAgIGNvbXBvbmVudDogXCJcIixcbiAgICAgICAgc2hvd1Byb3A6IFwiZGF0YS1zaG93XCIsXG4gICAgICAgIHRyYW5zaXRpb25OYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXNsaWRlLXVwXCIpLFxuICAgICAgICBvbkVuZDogX3RoaXMuYW5pbWF0aW9uRW5kXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgICAgIFwiZGF0YS1zaG93XCI6ICFjbG9zaW5nLFxuICAgICAgICBjbGFzc05hbWU6IGFsZXJ0Q2xzLFxuICAgICAgICBzdHlsZTogc3R5bGVcbiAgICAgIH0sIGRhdGFPckFyaWFQcm9wcyksIHNob3dJY29uID8gaWNvbk5vZGUgOiBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbWVzc2FnZVwiKVxuICAgICAgfSwgbWVzc2FnZSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1kZXNjcmlwdGlvblwiKVxuICAgICAgfSwgZGVzY3JpcHRpb24pLCBjbG9zZUljb24pKTtcbiAgICB9O1xuXG4gICAgKDAsIF93YXJuaW5nW1wiZGVmYXVsdFwiXSkoISgnaWNvblR5cGUnIGluIHByb3BzKSwgJ0FsZXJ0JywgJ2BpY29uVHlwZWAgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBgaWNvbmAgaW5zdGVhZC4nKTtcbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGNsb3Npbmc6IGZhbHNlLFxuICAgICAgY2xvc2VkOiBmYWxzZVxuICAgIH07XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEFsZXJ0LCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jb25maWdQcm92aWRlci5Db25maWdDb25zdW1lciwgbnVsbCwgdGhpcy5yZW5kZXJBbGVydCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEFsZXJ0O1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IEFsZXJ0OyIsIi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xuXG50cnkge1xuICB2YXIgaW5kZXggPSByZXF1aXJlKCdpbmRleG9mJyk7XG59IGNhdGNoIChlcnIpIHtcbiAgdmFyIGluZGV4ID0gcmVxdWlyZSgnY29tcG9uZW50LWluZGV4b2YnKTtcbn1cblxuLyoqXG4gKiBXaGl0ZXNwYWNlIHJlZ2V4cC5cbiAqL1xuXG52YXIgcmUgPSAvXFxzKy87XG5cbi8qKlxuICogdG9TdHJpbmcgcmVmZXJlbmNlLlxuICovXG5cbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKlxuICogV3JhcCBgZWxgIGluIGEgYENsYXNzTGlzdGAuXG4gKlxuICogQHBhcmFtIHtFbGVtZW50fSBlbFxuICogQHJldHVybiB7Q2xhc3NMaXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGVsKXtcbiAgcmV0dXJuIG5ldyBDbGFzc0xpc3QoZWwpO1xufTtcblxuLyoqXG4gKiBJbml0aWFsaXplIGEgbmV3IENsYXNzTGlzdCBmb3IgYGVsYC5cbiAqXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGVsXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBDbGFzc0xpc3QoZWwpIHtcbiAgaWYgKCFlbCB8fCAhZWwubm9kZVR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0EgRE9NIGVsZW1lbnQgcmVmZXJlbmNlIGlzIHJlcXVpcmVkJyk7XG4gIH1cbiAgdGhpcy5lbCA9IGVsO1xuICB0aGlzLmxpc3QgPSBlbC5jbGFzc0xpc3Q7XG59XG5cbi8qKlxuICogQWRkIGNsYXNzIGBuYW1lYCBpZiBub3QgYWxyZWFkeSBwcmVzZW50LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcmV0dXJuIHtDbGFzc0xpc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbkNsYXNzTGlzdC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24obmFtZSl7XG4gIC8vIGNsYXNzTGlzdFxuICBpZiAodGhpcy5saXN0KSB7XG4gICAgdGhpcy5saXN0LmFkZChuYW1lKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGZhbGxiYWNrXG4gIHZhciBhcnIgPSB0aGlzLmFycmF5KCk7XG4gIHZhciBpID0gaW5kZXgoYXJyLCBuYW1lKTtcbiAgaWYgKCF+aSkgYXJyLnB1c2gobmFtZSk7XG4gIHRoaXMuZWwuY2xhc3NOYW1lID0gYXJyLmpvaW4oJyAnKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBjbGFzcyBgbmFtZWAgd2hlbiBwcmVzZW50LCBvclxuICogcGFzcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byByZW1vdmVcbiAqIGFueSB3aGljaCBtYXRjaC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xSZWdFeHB9IG5hbWVcbiAqIEByZXR1cm4ge0NsYXNzTGlzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuQ2xhc3NMaXN0LnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbihuYW1lKXtcbiAgaWYgKCdbb2JqZWN0IFJlZ0V4cF0nID09IHRvU3RyaW5nLmNhbGwobmFtZSkpIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVNYXRjaGluZyhuYW1lKTtcbiAgfVxuXG4gIC8vIGNsYXNzTGlzdFxuICBpZiAodGhpcy5saXN0KSB7XG4gICAgdGhpcy5saXN0LnJlbW92ZShuYW1lKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGZhbGxiYWNrXG4gIHZhciBhcnIgPSB0aGlzLmFycmF5KCk7XG4gIHZhciBpID0gaW5kZXgoYXJyLCBuYW1lKTtcbiAgaWYgKH5pKSBhcnIuc3BsaWNlKGksIDEpO1xuICB0aGlzLmVsLmNsYXNzTmFtZSA9IGFyci5qb2luKCcgJyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBSZW1vdmUgYWxsIGNsYXNzZXMgbWF0Y2hpbmcgYHJlYC5cbiAqXG4gKiBAcGFyYW0ge1JlZ0V4cH0gcmVcbiAqIEByZXR1cm4ge0NsYXNzTGlzdH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbkNsYXNzTGlzdC5wcm90b3R5cGUucmVtb3ZlTWF0Y2hpbmcgPSBmdW5jdGlvbihyZSl7XG4gIHZhciBhcnIgPSB0aGlzLmFycmF5KCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHJlLnRlc3QoYXJyW2ldKSkge1xuICAgICAgdGhpcy5yZW1vdmUoYXJyW2ldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBjbGFzcyBgbmFtZWAsIGNhbiBmb3JjZSBzdGF0ZSB2aWEgYGZvcmNlYC5cbiAqXG4gKiBGb3IgYnJvd3NlcnMgdGhhdCBzdXBwb3J0IGNsYXNzTGlzdCwgYnV0IGRvIG5vdCBzdXBwb3J0IGBmb3JjZWAgeWV0LFxuICogdGhlIG1pc3Rha2Ugd2lsbCBiZSBkZXRlY3RlZCBhbmQgY29ycmVjdGVkLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGZvcmNlXG4gKiBAcmV0dXJuIHtDbGFzc0xpc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbkNsYXNzTGlzdC5wcm90b3R5cGUudG9nZ2xlID0gZnVuY3Rpb24obmFtZSwgZm9yY2Upe1xuICAvLyBjbGFzc0xpc3RcbiAgaWYgKHRoaXMubGlzdCkge1xuICAgIGlmIChcInVuZGVmaW5lZFwiICE9PSB0eXBlb2YgZm9yY2UpIHtcbiAgICAgIGlmIChmb3JjZSAhPT0gdGhpcy5saXN0LnRvZ2dsZShuYW1lLCBmb3JjZSkpIHtcbiAgICAgICAgdGhpcy5saXN0LnRvZ2dsZShuYW1lKTsgLy8gdG9nZ2xlIGFnYWluIHRvIGNvcnJlY3RcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saXN0LnRvZ2dsZShuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBmYWxsYmFja1xuICBpZiAoXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIGZvcmNlKSB7XG4gICAgaWYgKCFmb3JjZSkge1xuICAgICAgdGhpcy5yZW1vdmUobmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkKG5hbWUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAodGhpcy5oYXMobmFtZSkpIHtcbiAgICAgIHRoaXMucmVtb3ZlKG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZChuYW1lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogUmV0dXJuIGFuIGFycmF5IG9mIGNsYXNzZXMuXG4gKlxuICogQHJldHVybiB7QXJyYXl9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbkNsYXNzTGlzdC5wcm90b3R5cGUuYXJyYXkgPSBmdW5jdGlvbigpe1xuICB2YXIgY2xhc3NOYW1lID0gdGhpcy5lbC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykgfHwgJyc7XG4gIHZhciBzdHIgPSBjbGFzc05hbWUucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpO1xuICB2YXIgYXJyID0gc3RyLnNwbGl0KHJlKTtcbiAgaWYgKCcnID09PSBhcnJbMF0pIGFyci5zaGlmdCgpO1xuICByZXR1cm4gYXJyO1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiBjbGFzcyBgbmFtZWAgaXMgcHJlc2VudC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybiB7Q2xhc3NMaXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5DbGFzc0xpc3QucHJvdG90eXBlLmhhcyA9XG5DbGFzc0xpc3QucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiB0aGlzLmxpc3RcbiAgICA/IHRoaXMubGlzdC5jb250YWlucyhuYW1lKVxuICAgIDogISEgfmluZGV4KHRoaXMuYXJyYXkoKSwgbmFtZSk7XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgZ2VuZXJhdGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9nZW5lcmF0ZVwiKSk7XG5leHBvcnRzLmdlbmVyYXRlID0gZ2VuZXJhdGVfMS5kZWZhdWx0O1xudmFyIHByZXNldFByaW1hcnlDb2xvcnMgPSB7XG4gICAgcmVkOiAnI0Y1MjIyRCcsXG4gICAgdm9sY2FubzogJyNGQTU0MUMnLFxuICAgIG9yYW5nZTogJyNGQThDMTYnLFxuICAgIGdvbGQ6ICcjRkFBRDE0JyxcbiAgICB5ZWxsb3c6ICcjRkFEQjE0JyxcbiAgICBsaW1lOiAnI0EwRDkxMScsXG4gICAgZ3JlZW46ICcjNTJDNDFBJyxcbiAgICBjeWFuOiAnIzEzQzJDMicsXG4gICAgYmx1ZTogJyMxODkwRkYnLFxuICAgIGdlZWtibHVlOiAnIzJGNTRFQicsXG4gICAgcHVycGxlOiAnIzcyMkVEMScsXG4gICAgbWFnZW50YTogJyNFQjJGOTYnLFxuICAgIGdyZXk6ICcjNjY2NjY2Jyxcbn07XG5leHBvcnRzLnByZXNldFByaW1hcnlDb2xvcnMgPSBwcmVzZXRQcmltYXJ5Q29sb3JzO1xudmFyIHByZXNldFBhbGV0dGVzID0ge307XG5leHBvcnRzLnByZXNldFBhbGV0dGVzID0gcHJlc2V0UGFsZXR0ZXM7XG5PYmplY3Qua2V5cyhwcmVzZXRQcmltYXJ5Q29sb3JzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBwcmVzZXRQYWxldHRlc1trZXldID0gZ2VuZXJhdGVfMS5kZWZhdWx0KHByZXNldFByaW1hcnlDb2xvcnNba2V5XSk7XG4gICAgcHJlc2V0UGFsZXR0ZXNba2V5XS5wcmltYXJ5ID0gcHJlc2V0UGFsZXR0ZXNba2V5XVs2XTtcbn0pO1xudmFyIHJlZCA9IHByZXNldFBhbGV0dGVzLnJlZDtcbmV4cG9ydHMucmVkID0gcmVkO1xudmFyIHZvbGNhbm8gPSBwcmVzZXRQYWxldHRlcy52b2xjYW5vO1xuZXhwb3J0cy52b2xjYW5vID0gdm9sY2FubztcbnZhciBnb2xkID0gcHJlc2V0UGFsZXR0ZXMuZ29sZDtcbmV4cG9ydHMuZ29sZCA9IGdvbGQ7XG52YXIgeWVsbG93ID0gcHJlc2V0UGFsZXR0ZXMueWVsbG93O1xuZXhwb3J0cy55ZWxsb3cgPSB5ZWxsb3c7XG52YXIgbGltZSA9IHByZXNldFBhbGV0dGVzLmxpbWU7XG5leHBvcnRzLmxpbWUgPSBsaW1lO1xudmFyIGdyZWVuID0gcHJlc2V0UGFsZXR0ZXMuZ3JlZW47XG5leHBvcnRzLmdyZWVuID0gZ3JlZW47XG52YXIgY3lhbiA9IHByZXNldFBhbGV0dGVzLmN5YW47XG5leHBvcnRzLmN5YW4gPSBjeWFuO1xudmFyIGJsdWUgPSBwcmVzZXRQYWxldHRlcy5ibHVlO1xuZXhwb3J0cy5ibHVlID0gYmx1ZTtcbnZhciBnZWVrYmx1ZSA9IHByZXNldFBhbGV0dGVzLmdlZWtibHVlO1xuZXhwb3J0cy5nZWVrYmx1ZSA9IGdlZWtibHVlO1xudmFyIHB1cnBsZSA9IHByZXNldFBhbGV0dGVzLnB1cnBsZTtcbmV4cG9ydHMucHVycGxlID0gcHVycGxlO1xudmFyIG1hZ2VudGEgPSBwcmVzZXRQYWxldHRlcy5tYWdlbnRhO1xuZXhwb3J0cy5tYWdlbnRhID0gbWFnZW50YTtcbnZhciBncmV5ID0gcHJlc2V0UGFsZXR0ZXMuZ3JleTtcbmV4cG9ydHMuZ3JleSA9IGdyZXk7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9UYWJsZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vVGFibGVcIikpO1xuXG52YXIgX2RlZmF1bHQgPSBfVGFibGVbXCJkZWZhdWx0XCJdO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqO1xuICAgIH07XG5cbiAgICBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqO1xuICAgIH07XG5cbiAgICBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gX3R5cGVvZihvYmopO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF90eXBlb2Y7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7IiwiZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikge1xuICAgIG1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIG9iajtcbiAgICB9O1xuXG4gICAgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIG1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7XG4gICAgICByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajtcbiAgICB9O1xuXG4gICAgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIF90eXBlb2Yob2JqKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcblxuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzLnByb3RvdHlwZSk7XG4gIHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzO1xuXG4gIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7XG59XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gIF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gICAgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTtcbiAgfTtcbiAgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTtcbn1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgby5fX3Byb3RvX18gPSBwO1xuICAgIHJldHVybiBvO1xuICB9O1xuXG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG59XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTtcbiAgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTtcblxuICB0cnkge1xuICAgIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfY29uc3RydWN0KFBhcmVudCwgYXJncywgQ2xhc3MpIHtcbiAgaWYgKF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSkge1xuICAgIF9jb25zdHJ1Y3QgPSBSZWZsZWN0LmNvbnN0cnVjdDtcbiAgfSBlbHNlIHtcbiAgICBfY29uc3RydWN0ID0gZnVuY3Rpb24gX2NvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7XG4gICAgICB2YXIgYSA9IFtudWxsXTtcbiAgICAgIGEucHVzaC5hcHBseShhLCBhcmdzKTtcbiAgICAgIHZhciBDb25zdHJ1Y3RvciA9IEZ1bmN0aW9uLmJpbmQuYXBwbHkoUGFyZW50LCBhKTtcbiAgICAgIHZhciBpbnN0YW5jZSA9IG5ldyBDb25zdHJ1Y3RvcigpO1xuICAgICAgaWYgKENsYXNzKSBfc2V0UHJvdG90eXBlT2YoaW5zdGFuY2UsIENsYXNzLnByb3RvdHlwZSk7XG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfY29uc3RydWN0LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZUZ1bmN0aW9uKGZuKSB7XG4gIHJldHVybiBGdW5jdGlvbi50b1N0cmluZy5jYWxsKGZuKS5pbmRleE9mKFwiW25hdGl2ZSBjb2RlXVwiKSAhPT0gLTE7XG59XG5cbmZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpIHtcbiAgdmFyIF9jYWNoZSA9IHR5cGVvZiBNYXAgPT09IFwiZnVuY3Rpb25cIiA/IG5ldyBNYXAoKSA6IHVuZGVmaW5lZDtcblxuICBfd3JhcE5hdGl2ZVN1cGVyID0gZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcihDbGFzcykge1xuICAgIGlmIChDbGFzcyA9PT0gbnVsbCB8fCAhX2lzTmF0aXZlRnVuY3Rpb24oQ2xhc3MpKSByZXR1cm4gQ2xhc3M7XG5cbiAgICBpZiAodHlwZW9mIENsYXNzICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIF9jYWNoZSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgaWYgKF9jYWNoZS5oYXMoQ2xhc3MpKSByZXR1cm4gX2NhY2hlLmdldChDbGFzcyk7XG5cbiAgICAgIF9jYWNoZS5zZXQoQ2xhc3MsIFdyYXBwZXIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIFdyYXBwZXIoKSB7XG4gICAgICByZXR1cm4gX2NvbnN0cnVjdChDbGFzcywgYXJndW1lbnRzLCBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3IpO1xuICAgIH1cblxuICAgIFdyYXBwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShDbGFzcy5wcm90b3R5cGUsIHtcbiAgICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgIHZhbHVlOiBXcmFwcGVyLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBfc2V0UHJvdG90eXBlT2YoV3JhcHBlciwgQ2xhc3MpO1xuICB9O1xuXG4gIHJldHVybiBfd3JhcE5hdGl2ZVN1cGVyKENsYXNzKTtcbn1cblxuLyogZXNsaW50IG5vLWNvbnNvbGU6MCAqL1xudmFyIGZvcm1hdFJlZ0V4cCA9IC8lW3NkaiVdL2c7XG52YXIgd2FybmluZyA9IGZ1bmN0aW9uIHdhcm5pbmcoKSB7fTsgLy8gZG9uJ3QgcHJpbnQgd2FybmluZyBtZXNzYWdlIHdoZW4gaW4gcHJvZHVjdGlvbiBlbnYgb3Igbm9kZSBydW50aW1lXG5cbmlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnYgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gIHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKHR5cGUsIGVycm9ycykge1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICBpZiAoZXJyb3JzLmV2ZXJ5KGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgZSA9PT0gJ3N0cmluZyc7XG4gICAgICB9KSkge1xuICAgICAgICBjb25zb2xlLndhcm4odHlwZSwgZXJyb3JzKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRGaWVsZHNFcnJvcihlcnJvcnMpIHtcbiAgaWYgKCFlcnJvcnMgfHwgIWVycm9ycy5sZW5ndGgpIHJldHVybiBudWxsO1xuICB2YXIgZmllbGRzID0ge307XG4gIGVycm9ycy5mb3JFYWNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgIHZhciBmaWVsZCA9IGVycm9yLmZpZWxkO1xuICAgIGZpZWxkc1tmaWVsZF0gPSBmaWVsZHNbZmllbGRdIHx8IFtdO1xuICAgIGZpZWxkc1tmaWVsZF0ucHVzaChlcnJvcik7XG4gIH0pO1xuICByZXR1cm4gZmllbGRzO1xufVxuZnVuY3Rpb24gZm9ybWF0KCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgdmFyIGkgPSAxO1xuICB2YXIgZiA9IGFyZ3NbMF07XG4gIHZhciBsZW4gPSBhcmdzLmxlbmd0aDtcblxuICBpZiAodHlwZW9mIGYgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzLnNsaWNlKDEpKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZiA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgc3RyID0gU3RyaW5nKGYpLnJlcGxhY2UoZm9ybWF0UmVnRXhwLCBmdW5jdGlvbiAoeCkge1xuICAgICAgaWYgKHggPT09ICclJScpIHtcbiAgICAgICAgcmV0dXJuICclJztcbiAgICAgIH1cblxuICAgICAgaWYgKGkgPj0gbGVuKSB7XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHgpIHtcbiAgICAgICAgY2FzZSAnJXMnOlxuICAgICAgICAgIHJldHVybiBTdHJpbmcoYXJnc1tpKytdKTtcblxuICAgICAgICBjYXNlICclZCc6XG4gICAgICAgICAgcmV0dXJuIE51bWJlcihhcmdzW2krK10pO1xuXG4gICAgICAgIGNhc2UgJyVqJzpcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZ3NbaSsrXSk7XG4gICAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgICAgcmV0dXJuICdbQ2lyY3VsYXJdJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB4O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICByZXR1cm4gZjtcbn1cblxuZnVuY3Rpb24gaXNOYXRpdmVTdHJpbmdUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGUgPT09ICd1cmwnIHx8IHR5cGUgPT09ICdoZXgnIHx8IHR5cGUgPT09ICdlbWFpbCcgfHwgdHlwZSA9PT0gJ2RhdGUnIHx8IHR5cGUgPT09ICdwYXR0ZXJuJztcbn1cblxuZnVuY3Rpb24gaXNFbXB0eVZhbHVlKHZhbHVlLCB0eXBlKSB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZSA9PT0gJ2FycmF5JyAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiAhdmFsdWUubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoaXNOYXRpdmVTdHJpbmdUeXBlKHR5cGUpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGFzeW5jUGFyYWxsZWxBcnJheShhcnIsIGZ1bmMsIGNhbGxiYWNrKSB7XG4gIHZhciByZXN1bHRzID0gW107XG4gIHZhciB0b3RhbCA9IDA7XG4gIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIGNvdW50KGVycm9ycykge1xuICAgIHJlc3VsdHMucHVzaC5hcHBseShyZXN1bHRzLCBlcnJvcnMpO1xuICAgIHRvdGFsKys7XG5cbiAgICBpZiAodG90YWwgPT09IGFyckxlbmd0aCkge1xuICAgICAgY2FsbGJhY2socmVzdWx0cyk7XG4gICAgfVxuICB9XG5cbiAgYXJyLmZvckVhY2goZnVuY3Rpb24gKGEpIHtcbiAgICBmdW5jKGEsIGNvdW50KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFzeW5jU2VyaWFsQXJyYXkoYXJyLCBmdW5jLCBjYWxsYmFjaykge1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgYXJyTGVuZ3RoID0gYXJyLmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGVycm9ycykge1xuICAgIGlmIChlcnJvcnMgJiYgZXJyb3JzLmxlbmd0aCkge1xuICAgICAgY2FsbGJhY2soZXJyb3JzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgb3JpZ2luYWwgPSBpbmRleDtcbiAgICBpbmRleCA9IGluZGV4ICsgMTtcblxuICAgIGlmIChvcmlnaW5hbCA8IGFyckxlbmd0aCkge1xuICAgICAgZnVuYyhhcnJbb3JpZ2luYWxdLCBuZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2soW10pO1xuICAgIH1cbiAgfVxuXG4gIG5leHQoW10pO1xufVxuXG5mdW5jdGlvbiBmbGF0dGVuT2JqQXJyKG9iakFycikge1xuICB2YXIgcmV0ID0gW107XG4gIE9iamVjdC5rZXlzKG9iakFycikuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgIHJldC5wdXNoLmFwcGx5KHJldCwgb2JqQXJyW2tdKTtcbiAgfSk7XG4gIHJldHVybiByZXQ7XG59XG5cbnZhciBBc3luY1ZhbGlkYXRpb25FcnJvciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0Vycm9yKSB7XG4gIF9pbmhlcml0c0xvb3NlKEFzeW5jVmFsaWRhdGlvbkVycm9yLCBfRXJyb3IpO1xuXG4gIGZ1bmN0aW9uIEFzeW5jVmFsaWRhdGlvbkVycm9yKGVycm9ycywgZmllbGRzKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX3RoaXMgPSBfRXJyb3IuY2FsbCh0aGlzLCAnQXN5bmMgVmFsaWRhdGlvbiBFcnJvcicpIHx8IHRoaXM7XG4gICAgX3RoaXMuZXJyb3JzID0gZXJyb3JzO1xuICAgIF90aGlzLmZpZWxkcyA9IGZpZWxkcztcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICByZXR1cm4gQXN5bmNWYWxpZGF0aW9uRXJyb3I7XG59KCAvKiNfX1BVUkVfXyovX3dyYXBOYXRpdmVTdXBlcihFcnJvcikpO1xuZnVuY3Rpb24gYXN5bmNNYXAob2JqQXJyLCBvcHRpb24sIGZ1bmMsIGNhbGxiYWNrKSB7XG4gIGlmIChvcHRpb24uZmlyc3QpIHtcbiAgICB2YXIgX3BlbmRpbmcgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgbmV4dCA9IGZ1bmN0aW9uIG5leHQoZXJyb3JzKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9ycyk7XG4gICAgICAgIHJldHVybiBlcnJvcnMubGVuZ3RoID8gcmVqZWN0KG5ldyBBc3luY1ZhbGlkYXRpb25FcnJvcihlcnJvcnMsIGNvbnZlcnRGaWVsZHNFcnJvcihlcnJvcnMpKSkgOiByZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgZmxhdHRlbkFyciA9IGZsYXR0ZW5PYmpBcnIob2JqQXJyKTtcbiAgICAgIGFzeW5jU2VyaWFsQXJyYXkoZmxhdHRlbkFyciwgZnVuYywgbmV4dCk7XG4gICAgfSk7XG5cbiAgICBfcGVuZGluZ1tcImNhdGNoXCJdKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZTtcbiAgICB9KTtcblxuICAgIHJldHVybiBfcGVuZGluZztcbiAgfVxuXG4gIHZhciBmaXJzdEZpZWxkcyA9IG9wdGlvbi5maXJzdEZpZWxkcyB8fCBbXTtcblxuICBpZiAoZmlyc3RGaWVsZHMgPT09IHRydWUpIHtcbiAgICBmaXJzdEZpZWxkcyA9IE9iamVjdC5rZXlzKG9iakFycik7XG4gIH1cblxuICB2YXIgb2JqQXJyS2V5cyA9IE9iamVjdC5rZXlzKG9iakFycik7XG4gIHZhciBvYmpBcnJMZW5ndGggPSBvYmpBcnJLZXlzLmxlbmd0aDtcbiAgdmFyIHRvdGFsID0gMDtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgdmFyIHBlbmRpbmcgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIG5leHQgPSBmdW5jdGlvbiBuZXh0KGVycm9ycykge1xuICAgICAgcmVzdWx0cy5wdXNoLmFwcGx5KHJlc3VsdHMsIGVycm9ycyk7XG4gICAgICB0b3RhbCsrO1xuXG4gICAgICBpZiAodG90YWwgPT09IG9iakFyckxlbmd0aCkge1xuICAgICAgICBjYWxsYmFjayhyZXN1bHRzKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHMubGVuZ3RoID8gcmVqZWN0KG5ldyBBc3luY1ZhbGlkYXRpb25FcnJvcihyZXN1bHRzLCBjb252ZXJ0RmllbGRzRXJyb3IocmVzdWx0cykpKSA6IHJlc29sdmUoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFvYmpBcnJLZXlzLmxlbmd0aCkge1xuICAgICAgY2FsbGJhY2socmVzdWx0cyk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgb2JqQXJyS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBhcnIgPSBvYmpBcnJba2V5XTtcblxuICAgICAgaWYgKGZpcnN0RmllbGRzLmluZGV4T2Yoa2V5KSAhPT0gLTEpIHtcbiAgICAgICAgYXN5bmNTZXJpYWxBcnJheShhcnIsIGZ1bmMsIG5leHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXN5bmNQYXJhbGxlbEFycmF5KGFyciwgZnVuYywgbmV4dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICBwZW5kaW5nW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKGUpIHtcbiAgICByZXR1cm4gZTtcbiAgfSk7XG4gIHJldHVybiBwZW5kaW5nO1xufVxuZnVuY3Rpb24gY29tcGxlbWVudEVycm9yKHJ1bGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvZSkge1xuICAgIGlmIChvZSAmJiBvZS5tZXNzYWdlKSB7XG4gICAgICBvZS5maWVsZCA9IG9lLmZpZWxkIHx8IHJ1bGUuZnVsbEZpZWxkO1xuICAgICAgcmV0dXJuIG9lO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiB0eXBlb2Ygb2UgPT09ICdmdW5jdGlvbicgPyBvZSgpIDogb2UsXG4gICAgICBmaWVsZDogb2UuZmllbGQgfHwgcnVsZS5mdWxsRmllbGRcbiAgICB9O1xuICB9O1xufVxuZnVuY3Rpb24gZGVlcE1lcmdlKHRhcmdldCwgc291cmNlKSB7XG4gIGlmIChzb3VyY2UpIHtcbiAgICBmb3IgKHZhciBzIGluIHNvdXJjZSkge1xuICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShzKSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBzb3VyY2Vbc107XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHRhcmdldFtzXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICB0YXJnZXRbc10gPSBfZXh0ZW5kcyh7fSwgdGFyZ2V0W3NdLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0W3NdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG4vKipcbiAqICBSdWxlIGZvciB2YWxpZGF0aW5nIHJlcXVpcmVkIGZpZWxkcy5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gZXJyb3JzIEFuIGFycmF5IG9mIGVycm9ycyB0aGF0IHRoaXMgcnVsZSBtYXkgYWRkXG4gKiAgdmFsaWRhdGlvbiBlcnJvcnMgdG8uXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuXG5mdW5jdGlvbiByZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMsIHR5cGUpIHtcbiAgaWYgKHJ1bGUucmVxdWlyZWQgJiYgKCFzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCkgfHwgaXNFbXB0eVZhbHVlKHZhbHVlLCB0eXBlIHx8IHJ1bGUudHlwZSkpKSB7XG4gICAgZXJyb3JzLnB1c2goZm9ybWF0KG9wdGlvbnMubWVzc2FnZXMucmVxdWlyZWQsIHJ1bGUuZnVsbEZpZWxkKSk7XG4gIH1cbn1cblxuLyoqXG4gKiAgUnVsZSBmb3IgdmFsaWRhdGluZyB3aGl0ZXNwYWNlLlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBlcnJvcnMgQW4gYXJyYXkgb2YgZXJyb3JzIHRoYXQgdGhpcyBydWxlIG1heSBhZGRcbiAqICB2YWxpZGF0aW9uIGVycm9ycyB0by5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5cbmZ1bmN0aW9uIHdoaXRlc3BhY2UocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKSB7XG4gIGlmICgvXlxccyskLy50ZXN0KHZhbHVlKSB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICBlcnJvcnMucHVzaChmb3JtYXQob3B0aW9ucy5tZXNzYWdlcy53aGl0ZXNwYWNlLCBydWxlLmZ1bGxGaWVsZCkpO1xuICB9XG59XG5cbi8qIGVzbGludCBtYXgtbGVuOjAgKi9cblxudmFyIHBhdHRlcm4gPSB7XG4gIC8vIGh0dHA6Ly9lbWFpbHJlZ2V4LmNvbS9cbiAgZW1haWw6IC9eKChbXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvLFxuICB1cmw6IG5ldyBSZWdFeHAoXCJeKD8hbWFpbHRvOikoPzooPzpodHRwfGh0dHBzfGZ0cCk6Ly98Ly8pKD86XFxcXFMrKD86OlxcXFxTKik/QCk/KD86KD86KD86WzEtOV1cXFxcZD98MVxcXFxkXFxcXGR8MlswMV1cXFxcZHwyMlswLTNdKSg/OlxcXFwuKD86MT9cXFxcZHsxLDJ9fDJbMC00XVxcXFxkfDI1WzAtNV0pKXsyfSg/OlxcXFwuKD86WzAtOV1cXFxcZD98MVxcXFxkXFxcXGR8MlswLTRdXFxcXGR8MjVbMC00XSkpfCg/Oig/OlthLXpcXFxcdTAwYTEtXFxcXHVmZmZmMC05XSstKikqW2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldKykoPzpcXFxcLig/OlthLXpcXFxcdTAwYTEtXFxcXHVmZmZmMC05XSstKikqW2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldKykqKD86XFxcXC4oPzpbYS16XFxcXHUwMGExLVxcXFx1ZmZmZl17Mix9KSkpfGxvY2FsaG9zdCkoPzo6XFxcXGR7Miw1fSk/KD86KC98XFxcXD98IylbXlxcXFxzXSopPyRcIiwgJ2knKSxcbiAgaGV4OiAvXiM/KFthLWYwLTldezZ9fFthLWYwLTldezN9KSQvaVxufTtcbnZhciB0eXBlcyA9IHtcbiAgaW50ZWdlcjogZnVuY3Rpb24gaW50ZWdlcih2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlcy5udW1iZXIodmFsdWUpICYmIHBhcnNlSW50KHZhbHVlLCAxMCkgPT09IHZhbHVlO1xuICB9LFxuICBcImZsb2F0XCI6IGZ1bmN0aW9uIGZsb2F0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVzLm51bWJlcih2YWx1ZSkgJiYgIXR5cGVzLmludGVnZXIodmFsdWUpO1xuICB9LFxuICBhcnJheTogZnVuY3Rpb24gYXJyYXkodmFsdWUpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIH0sXG4gIHJlZ2V4cDogZnVuY3Rpb24gcmVnZXhwKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuICEhbmV3IFJlZ0V4cCh2YWx1ZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSxcbiAgZGF0ZTogZnVuY3Rpb24gZGF0ZSh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUuZ2V0VGltZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdmFsdWUuZ2V0TW9udGggPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbHVlLmdldFllYXIgPT09ICdmdW5jdGlvbicgJiYgIWlzTmFOKHZhbHVlLmdldFRpbWUoKSk7XG4gIH0sXG4gIG51bWJlcjogZnVuY3Rpb24gbnVtYmVyKHZhbHVlKSB7XG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xuICB9LFxuICBvYmplY3Q6IGZ1bmN0aW9uIG9iamVjdCh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICF0eXBlcy5hcnJheSh2YWx1ZSk7XG4gIH0sXG4gIG1ldGhvZDogZnVuY3Rpb24gbWV0aG9kKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgfSxcbiAgZW1haWw6IGZ1bmN0aW9uIGVtYWlsKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgISF2YWx1ZS5tYXRjaChwYXR0ZXJuLmVtYWlsKSAmJiB2YWx1ZS5sZW5ndGggPCAyNTU7XG4gIH0sXG4gIHVybDogZnVuY3Rpb24gdXJsKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgISF2YWx1ZS5tYXRjaChwYXR0ZXJuLnVybCk7XG4gIH0sXG4gIGhleDogZnVuY3Rpb24gaGV4KHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgISF2YWx1ZS5tYXRjaChwYXR0ZXJuLmhleCk7XG4gIH1cbn07XG4vKipcbiAqICBSdWxlIGZvciB2YWxpZGF0aW5nIHRoZSB0eXBlIG9mIGEgdmFsdWUuXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIGVycm9ycyBBbiBhcnJheSBvZiBlcnJvcnMgdGhhdCB0aGlzIHJ1bGUgbWF5IGFkZFxuICogIHZhbGlkYXRpb24gZXJyb3JzIHRvLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cblxuZnVuY3Rpb24gdHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpIHtcbiAgaWYgKHJ1bGUucmVxdWlyZWQgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGN1c3RvbSA9IFsnaW50ZWdlcicsICdmbG9hdCcsICdhcnJheScsICdyZWdleHAnLCAnb2JqZWN0JywgJ21ldGhvZCcsICdlbWFpbCcsICdudW1iZXInLCAnZGF0ZScsICd1cmwnLCAnaGV4J107XG4gIHZhciBydWxlVHlwZSA9IHJ1bGUudHlwZTtcblxuICBpZiAoY3VzdG9tLmluZGV4T2YocnVsZVR5cGUpID4gLTEpIHtcbiAgICBpZiAoIXR5cGVzW3J1bGVUeXBlXSh2YWx1ZSkpIHtcbiAgICAgIGVycm9ycy5wdXNoKGZvcm1hdChvcHRpb25zLm1lc3NhZ2VzLnR5cGVzW3J1bGVUeXBlXSwgcnVsZS5mdWxsRmllbGQsIHJ1bGUudHlwZSkpO1xuICAgIH0gLy8gc3RyYWlnaHQgdHlwZW9mIGNoZWNrXG5cbiAgfSBlbHNlIGlmIChydWxlVHlwZSAmJiB0eXBlb2YgdmFsdWUgIT09IHJ1bGUudHlwZSkge1xuICAgIGVycm9ycy5wdXNoKGZvcm1hdChvcHRpb25zLm1lc3NhZ2VzLnR5cGVzW3J1bGVUeXBlXSwgcnVsZS5mdWxsRmllbGQsIHJ1bGUudHlwZSkpO1xuICB9XG59XG5cbi8qKlxuICogIFJ1bGUgZm9yIHZhbGlkYXRpbmcgbWluaW11bSBhbmQgbWF4aW11bSBhbGxvd2VkIHZhbHVlcy5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gZXJyb3JzIEFuIGFycmF5IG9mIGVycm9ycyB0aGF0IHRoaXMgcnVsZSBtYXkgYWRkXG4gKiAgdmFsaWRhdGlvbiBlcnJvcnMgdG8uXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuXG5mdW5jdGlvbiByYW5nZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpIHtcbiAgdmFyIGxlbiA9IHR5cGVvZiBydWxlLmxlbiA9PT0gJ251bWJlcic7XG4gIHZhciBtaW4gPSB0eXBlb2YgcnVsZS5taW4gPT09ICdudW1iZXInO1xuICB2YXIgbWF4ID0gdHlwZW9mIHJ1bGUubWF4ID09PSAnbnVtYmVyJzsgLy8g5q2j5YiZ5Yy56YWN56CB54K56IyD5Zu05LuOVSswMTAwMDDkuIDnm7TliLBVKzEwRkZGRueahOaWh+Wtl++8iOihpeWFheW5s+mdolN1cHBsZW1lbnRhcnkgUGxhbmXvvIlcblxuICB2YXIgc3BSZWdleHAgPSAvW1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXS9nO1xuICB2YXIgdmFsID0gdmFsdWU7XG4gIHZhciBrZXkgPSBudWxsO1xuICB2YXIgbnVtID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbiAgdmFyIHN0ciA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG4gIHZhciBhcnIgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcblxuICBpZiAobnVtKSB7XG4gICAga2V5ID0gJ251bWJlcic7XG4gIH0gZWxzZSBpZiAoc3RyKSB7XG4gICAga2V5ID0gJ3N0cmluZyc7XG4gIH0gZWxzZSBpZiAoYXJyKSB7XG4gICAga2V5ID0gJ2FycmF5JztcbiAgfSAvLyBpZiB0aGUgdmFsdWUgaXMgbm90IG9mIGEgc3VwcG9ydGVkIHR5cGUgZm9yIHJhbmdlIHZhbGlkYXRpb25cbiAgLy8gdGhlIHZhbGlkYXRpb24gcnVsZSBydWxlIHNob3VsZCB1c2UgdGhlXG4gIC8vIHR5cGUgcHJvcGVydHkgdG8gYWxzbyB0ZXN0IGZvciBhIHBhcnRpY3VsYXIgdHlwZVxuXG5cbiAgaWYgKCFrZXkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYXJyKSB7XG4gICAgdmFsID0gdmFsdWUubGVuZ3RoO1xuICB9XG5cbiAgaWYgKHN0cikge1xuICAgIC8vIOWkhOeQhueggeeCueWkp+S6jlUrMDEwMDAw55qE5paH5a2XbGVuZ3Ro5bGe5oCn5LiN5YeG56Gu55qEYnVn77yM5aaCXCLwoK638KCut/CgrrdcIi5sZW5naHQgIT09IDNcbiAgICB2YWwgPSB2YWx1ZS5yZXBsYWNlKHNwUmVnZXhwLCAnXycpLmxlbmd0aDtcbiAgfVxuXG4gIGlmIChsZW4pIHtcbiAgICBpZiAodmFsICE9PSBydWxlLmxlbikge1xuICAgICAgZXJyb3JzLnB1c2goZm9ybWF0KG9wdGlvbnMubWVzc2FnZXNba2V5XS5sZW4sIHJ1bGUuZnVsbEZpZWxkLCBydWxlLmxlbikpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChtaW4gJiYgIW1heCAmJiB2YWwgPCBydWxlLm1pbikge1xuICAgIGVycm9ycy5wdXNoKGZvcm1hdChvcHRpb25zLm1lc3NhZ2VzW2tleV0ubWluLCBydWxlLmZ1bGxGaWVsZCwgcnVsZS5taW4pKTtcbiAgfSBlbHNlIGlmIChtYXggJiYgIW1pbiAmJiB2YWwgPiBydWxlLm1heCkge1xuICAgIGVycm9ycy5wdXNoKGZvcm1hdChvcHRpb25zLm1lc3NhZ2VzW2tleV0ubWF4LCBydWxlLmZ1bGxGaWVsZCwgcnVsZS5tYXgpKTtcbiAgfSBlbHNlIGlmIChtaW4gJiYgbWF4ICYmICh2YWwgPCBydWxlLm1pbiB8fCB2YWwgPiBydWxlLm1heCkpIHtcbiAgICBlcnJvcnMucHVzaChmb3JtYXQob3B0aW9ucy5tZXNzYWdlc1trZXldLnJhbmdlLCBydWxlLmZ1bGxGaWVsZCwgcnVsZS5taW4sIHJ1bGUubWF4KSk7XG4gIH1cbn1cblxudmFyIEVOVU0gPSAnZW51bSc7XG4vKipcbiAqICBSdWxlIGZvciB2YWxpZGF0aW5nIGEgdmFsdWUgZXhpc3RzIGluIGFuIGVudW1lcmFibGUgbGlzdC5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gZXJyb3JzIEFuIGFycmF5IG9mIGVycm9ycyB0aGF0IHRoaXMgcnVsZSBtYXkgYWRkXG4gKiAgdmFsaWRhdGlvbiBlcnJvcnMgdG8uXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuXG5mdW5jdGlvbiBlbnVtZXJhYmxlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucykge1xuICBydWxlW0VOVU1dID0gQXJyYXkuaXNBcnJheShydWxlW0VOVU1dKSA/IHJ1bGVbRU5VTV0gOiBbXTtcblxuICBpZiAocnVsZVtFTlVNXS5pbmRleE9mKHZhbHVlKSA9PT0gLTEpIHtcbiAgICBlcnJvcnMucHVzaChmb3JtYXQob3B0aW9ucy5tZXNzYWdlc1tFTlVNXSwgcnVsZS5mdWxsRmllbGQsIHJ1bGVbRU5VTV0uam9pbignLCAnKSkpO1xuICB9XG59XG5cbi8qKlxuICogIFJ1bGUgZm9yIHZhbGlkYXRpbmcgYSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gZXJyb3JzIEFuIGFycmF5IG9mIGVycm9ycyB0aGF0IHRoaXMgcnVsZSBtYXkgYWRkXG4gKiAgdmFsaWRhdGlvbiBlcnJvcnMgdG8uXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuXG5mdW5jdGlvbiBwYXR0ZXJuJDEocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKSB7XG4gIGlmIChydWxlLnBhdHRlcm4pIHtcbiAgICBpZiAocnVsZS5wYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAvLyBpZiBhIFJlZ0V4cCBpbnN0YW5jZSBpcyBwYXNzZWQsIHJlc2V0IGBsYXN0SW5kZXhgIGluIGNhc2UgaXRzIGBnbG9iYWxgXG4gICAgICAvLyBmbGFnIGlzIGFjY2lkZW50YWxseSBzZXQgdG8gYHRydWVgLCB3aGljaCBpbiBhIHZhbGlkYXRpb24gc2NlbmFyaW9cbiAgICAgIC8vIGlzIG5vdCBuZWNlc3NhcnkgYW5kIHRoZSByZXN1bHQgbWlnaHQgYmUgbWlzbGVhZGluZ1xuICAgICAgcnVsZS5wYXR0ZXJuLmxhc3RJbmRleCA9IDA7XG5cbiAgICAgIGlmICghcnVsZS5wYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKGZvcm1hdChvcHRpb25zLm1lc3NhZ2VzLnBhdHRlcm4ubWlzbWF0Y2gsIHJ1bGUuZnVsbEZpZWxkLCB2YWx1ZSwgcnVsZS5wYXR0ZXJuKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcnVsZS5wYXR0ZXJuID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIF9wYXR0ZXJuID0gbmV3IFJlZ0V4cChydWxlLnBhdHRlcm4pO1xuXG4gICAgICBpZiAoIV9wYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKGZvcm1hdChvcHRpb25zLm1lc3NhZ2VzLnBhdHRlcm4ubWlzbWF0Y2gsIHJ1bGUuZnVsbEZpZWxkLCB2YWx1ZSwgcnVsZS5wYXR0ZXJuKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBydWxlcyA9IHtcbiAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICB3aGl0ZXNwYWNlOiB3aGl0ZXNwYWNlLFxuICB0eXBlOiB0eXBlLFxuICByYW5nZTogcmFuZ2UsXG4gIFwiZW51bVwiOiBlbnVtZXJhYmxlLFxuICBwYXR0ZXJuOiBwYXR0ZXJuJDFcbn07XG5cbi8qKlxuICogIFBlcmZvcm1zIHZhbGlkYXRpb24gZm9yIHN0cmluZyB0eXBlcy5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cblxuZnVuY3Rpb24gc3RyaW5nKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSwgJ3N0cmluZycpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMsICdzdHJpbmcnKTtcblxuICAgIGlmICghaXNFbXB0eVZhbHVlKHZhbHVlLCAnc3RyaW5nJykpIHtcbiAgICAgIHJ1bGVzLnR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICAgIHJ1bGVzLnJhbmdlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICBydWxlcy5wYXR0ZXJuKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG5cbiAgICAgIGlmIChydWxlLndoaXRlc3BhY2UgPT09IHRydWUpIHtcbiAgICAgICAgcnVsZXMud2hpdGVzcGFjZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbi8qKlxuICogIFZhbGlkYXRlcyBhIGZ1bmN0aW9uLlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuXG5mdW5jdGlvbiBtZXRob2QocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcblxuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcblxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn1cblxuLyoqXG4gKiAgVmFsaWRhdGVzIGEgbnVtYmVyLlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuXG5mdW5jdGlvbiBudW1iZXIocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcblxuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICB2YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcblxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICBydWxlcy5yYW5nZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbi8qKlxuICogIFZhbGlkYXRlcyBhIGJvb2xlYW4uXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5cbmZ1bmN0aW9uIF9ib29sZWFuKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSkgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG5cbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcnVsZXMudHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbi8qKlxuICogIFZhbGlkYXRlcyB0aGUgcmVndWxhciBleHByZXNzaW9uIHR5cGUuXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5cbmZ1bmN0aW9uIHJlZ2V4cChydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFpc0VtcHR5VmFsdWUodmFsdWUpKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn1cblxuLyoqXG4gKiAgVmFsaWRhdGVzIGEgbnVtYmVyIGlzIGFuIGludGVnZXIuXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5cbmZ1bmN0aW9uIGludGVnZXIocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcblxuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcblxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICBydWxlcy5yYW5nZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbi8qKlxuICogIFZhbGlkYXRlcyBhIG51bWJlciBpcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlci5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cblxuZnVuY3Rpb24gZmxvYXRGbihydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJ1bGVzLnR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICAgIHJ1bGVzLnJhbmdlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn1cblxuLyoqXG4gKiAgVmFsaWRhdGVzIGFuIGFycmF5LlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuXG5mdW5jdGlvbiBhcnJheShydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmICgodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucywgJ2FycmF5Jyk7XG5cbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgcnVsZXMudHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgcnVsZXMucmFuZ2UocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhlcnJvcnMpO1xufVxuXG4vKipcbiAqICBWYWxpZGF0ZXMgYW4gb2JqZWN0LlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuXG5mdW5jdGlvbiBvYmplY3QocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcblxuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcblxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn1cblxudmFyIEVOVU0kMSA9ICdlbnVtJztcbi8qKlxuICogIFZhbGlkYXRlcyBhbiBlbnVtZXJhYmxlIGxpc3QuXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5cbmZ1bmN0aW9uIGVudW1lcmFibGUkMShydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJ1bGVzW0VOVU0kMV0ocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhlcnJvcnMpO1xufVxuXG4vKipcbiAqICBWYWxpZGF0ZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi5cbiAqXG4gKiAgUGVyZm9ybXMgdmFsaWRhdGlvbiB3aGVuIGEgcnVsZSBvbmx5IGNvbnRhaW5zXG4gKiAgYSBwYXR0ZXJuIHByb3BlcnR5IGJ1dCBpcyBub3QgZGVjbGFyZWQgYXMgYSBzdHJpbmcgdHlwZS5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cblxuZnVuY3Rpb24gcGF0dGVybiQyKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSwgJ3N0cmluZycpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFpc0VtcHR5VmFsdWUodmFsdWUsICdzdHJpbmcnKSkge1xuICAgICAgcnVsZXMucGF0dGVybihydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbmZ1bmN0aW9uIGRhdGUocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgLy8gY29uc29sZS5sb2coJ2ludGVnZXIgcnVsZSBjYWxsZWQgJWonLCBydWxlKTtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTsgLy8gY29uc29sZS5sb2coJ3ZhbGlkYXRlIG9uICVzIHZhbHVlJywgdmFsdWUpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUsICdkYXRlJykgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG5cbiAgICBpZiAoIWlzRW1wdHlWYWx1ZSh2YWx1ZSwgJ2RhdGUnKSkge1xuICAgICAgdmFyIGRhdGVPYmplY3Q7XG5cbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgZGF0ZU9iamVjdCA9IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0ZU9iamVjdCA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgcnVsZXMudHlwZShydWxlLCBkYXRlT2JqZWN0LCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG5cbiAgICAgIGlmIChkYXRlT2JqZWN0KSB7XG4gICAgICAgIHJ1bGVzLnJhbmdlKHJ1bGUsIGRhdGVPYmplY3QuZ2V0VGltZSgpLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn1cblxuZnVuY3Rpb24gcmVxdWlyZWQkMShydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB0eXBlID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyAnYXJyYXknIDogdHlwZW9mIHZhbHVlO1xuICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMsIHR5cGUpO1xuICBjYWxsYmFjayhlcnJvcnMpO1xufVxuXG5mdW5jdGlvbiB0eXBlJDEocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIHJ1bGVUeXBlID0gcnVsZS50eXBlO1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUsIHJ1bGVUeXBlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zLCBydWxlVHlwZSk7XG5cbiAgICBpZiAoIWlzRW1wdHlWYWx1ZSh2YWx1ZSwgcnVsZVR5cGUpKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn1cblxuLyoqXG4gKiAgUGVyZm9ybXMgdmFsaWRhdGlvbiBmb3IgYW55IHR5cGUuXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5cbmZ1bmN0aW9uIGFueShydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn1cblxudmFyIHZhbGlkYXRvcnMgPSB7XG4gIHN0cmluZzogc3RyaW5nLFxuICBtZXRob2Q6IG1ldGhvZCxcbiAgbnVtYmVyOiBudW1iZXIsXG4gIFwiYm9vbGVhblwiOiBfYm9vbGVhbixcbiAgcmVnZXhwOiByZWdleHAsXG4gIGludGVnZXI6IGludGVnZXIsXG4gIFwiZmxvYXRcIjogZmxvYXRGbixcbiAgYXJyYXk6IGFycmF5LFxuICBvYmplY3Q6IG9iamVjdCxcbiAgXCJlbnVtXCI6IGVudW1lcmFibGUkMSxcbiAgcGF0dGVybjogcGF0dGVybiQyLFxuICBkYXRlOiBkYXRlLFxuICB1cmw6IHR5cGUkMSxcbiAgaGV4OiB0eXBlJDEsXG4gIGVtYWlsOiB0eXBlJDEsXG4gIHJlcXVpcmVkOiByZXF1aXJlZCQxLFxuICBhbnk6IGFueVxufTtcblxuZnVuY3Rpb24gbmV3TWVzc2FnZXMoKSB7XG4gIHJldHVybiB7XG4gICAgXCJkZWZhdWx0XCI6ICdWYWxpZGF0aW9uIGVycm9yIG9uIGZpZWxkICVzJyxcbiAgICByZXF1aXJlZDogJyVzIGlzIHJlcXVpcmVkJyxcbiAgICBcImVudW1cIjogJyVzIG11c3QgYmUgb25lIG9mICVzJyxcbiAgICB3aGl0ZXNwYWNlOiAnJXMgY2Fubm90IGJlIGVtcHR5JyxcbiAgICBkYXRlOiB7XG4gICAgICBmb3JtYXQ6ICclcyBkYXRlICVzIGlzIGludmFsaWQgZm9yIGZvcm1hdCAlcycsXG4gICAgICBwYXJzZTogJyVzIGRhdGUgY291bGQgbm90IGJlIHBhcnNlZCwgJXMgaXMgaW52YWxpZCAnLFxuICAgICAgaW52YWxpZDogJyVzIGRhdGUgJXMgaXMgaW52YWxpZCdcbiAgICB9LFxuICAgIHR5cGVzOiB7XG4gICAgICBzdHJpbmc6ICclcyBpcyBub3QgYSAlcycsXG4gICAgICBtZXRob2Q6ICclcyBpcyBub3QgYSAlcyAoZnVuY3Rpb24pJyxcbiAgICAgIGFycmF5OiAnJXMgaXMgbm90IGFuICVzJyxcbiAgICAgIG9iamVjdDogJyVzIGlzIG5vdCBhbiAlcycsXG4gICAgICBudW1iZXI6ICclcyBpcyBub3QgYSAlcycsXG4gICAgICBkYXRlOiAnJXMgaXMgbm90IGEgJXMnLFxuICAgICAgXCJib29sZWFuXCI6ICclcyBpcyBub3QgYSAlcycsXG4gICAgICBpbnRlZ2VyOiAnJXMgaXMgbm90IGFuICVzJyxcbiAgICAgIFwiZmxvYXRcIjogJyVzIGlzIG5vdCBhICVzJyxcbiAgICAgIHJlZ2V4cDogJyVzIGlzIG5vdCBhIHZhbGlkICVzJyxcbiAgICAgIGVtYWlsOiAnJXMgaXMgbm90IGEgdmFsaWQgJXMnLFxuICAgICAgdXJsOiAnJXMgaXMgbm90IGEgdmFsaWQgJXMnLFxuICAgICAgaGV4OiAnJXMgaXMgbm90IGEgdmFsaWQgJXMnXG4gICAgfSxcbiAgICBzdHJpbmc6IHtcbiAgICAgIGxlbjogJyVzIG11c3QgYmUgZXhhY3RseSAlcyBjaGFyYWN0ZXJzJyxcbiAgICAgIG1pbjogJyVzIG11c3QgYmUgYXQgbGVhc3QgJXMgY2hhcmFjdGVycycsXG4gICAgICBtYXg6ICclcyBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gJXMgY2hhcmFjdGVycycsXG4gICAgICByYW5nZTogJyVzIG11c3QgYmUgYmV0d2VlbiAlcyBhbmQgJXMgY2hhcmFjdGVycydcbiAgICB9LFxuICAgIG51bWJlcjoge1xuICAgICAgbGVuOiAnJXMgbXVzdCBlcXVhbCAlcycsXG4gICAgICBtaW46ICclcyBjYW5ub3QgYmUgbGVzcyB0aGFuICVzJyxcbiAgICAgIG1heDogJyVzIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gJXMnLFxuICAgICAgcmFuZ2U6ICclcyBtdXN0IGJlIGJldHdlZW4gJXMgYW5kICVzJ1xuICAgIH0sXG4gICAgYXJyYXk6IHtcbiAgICAgIGxlbjogJyVzIG11c3QgYmUgZXhhY3RseSAlcyBpbiBsZW5ndGgnLFxuICAgICAgbWluOiAnJXMgY2Fubm90IGJlIGxlc3MgdGhhbiAlcyBpbiBsZW5ndGgnLFxuICAgICAgbWF4OiAnJXMgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiAlcyBpbiBsZW5ndGgnLFxuICAgICAgcmFuZ2U6ICclcyBtdXN0IGJlIGJldHdlZW4gJXMgYW5kICVzIGluIGxlbmd0aCdcbiAgICB9LFxuICAgIHBhdHRlcm46IHtcbiAgICAgIG1pc21hdGNoOiAnJXMgdmFsdWUgJXMgZG9lcyBub3QgbWF0Y2ggcGF0dGVybiAlcydcbiAgICB9LFxuICAgIGNsb25lOiBmdW5jdGlvbiBjbG9uZSgpIHtcbiAgICAgIHZhciBjbG9uZWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMpKTtcbiAgICAgIGNsb25lZC5jbG9uZSA9IHRoaXMuY2xvbmU7XG4gICAgICByZXR1cm4gY2xvbmVkO1xuICAgIH1cbiAgfTtcbn1cbnZhciBtZXNzYWdlcyA9IG5ld01lc3NhZ2VzKCk7XG5cbi8qKlxuICogIEVuY2Fwc3VsYXRlcyBhIHZhbGlkYXRpb24gc2NoZW1hLlxuICpcbiAqICBAcGFyYW0gZGVzY3JpcHRvciBBbiBvYmplY3QgZGVjbGFyaW5nIHZhbGlkYXRpb24gcnVsZXNcbiAqICBmb3IgdGhpcyBzY2hlbWEuXG4gKi9cblxuZnVuY3Rpb24gU2NoZW1hKGRlc2NyaXB0b3IpIHtcbiAgdGhpcy5ydWxlcyA9IG51bGw7XG4gIHRoaXMuX21lc3NhZ2VzID0gbWVzc2FnZXM7XG4gIHRoaXMuZGVmaW5lKGRlc2NyaXB0b3IpO1xufVxuXG5TY2hlbWEucHJvdG90eXBlID0ge1xuICBtZXNzYWdlczogZnVuY3Rpb24gbWVzc2FnZXMoX21lc3NhZ2VzKSB7XG4gICAgaWYgKF9tZXNzYWdlcykge1xuICAgICAgdGhpcy5fbWVzc2FnZXMgPSBkZWVwTWVyZ2UobmV3TWVzc2FnZXMoKSwgX21lc3NhZ2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbWVzc2FnZXM7XG4gIH0sXG4gIGRlZmluZTogZnVuY3Rpb24gZGVmaW5lKHJ1bGVzKSB7XG4gICAgaWYgKCFydWxlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29uZmlndXJlIGEgc2NoZW1hIHdpdGggbm8gcnVsZXMnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJ1bGVzICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHJ1bGVzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdWxlcyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cblxuICAgIHRoaXMucnVsZXMgPSB7fTtcbiAgICB2YXIgejtcbiAgICB2YXIgaXRlbTtcblxuICAgIGZvciAoeiBpbiBydWxlcykge1xuICAgICAgaWYgKHJ1bGVzLmhhc093blByb3BlcnR5KHopKSB7XG4gICAgICAgIGl0ZW0gPSBydWxlc1t6XTtcbiAgICAgICAgdGhpcy5ydWxlc1t6XSA9IEFycmF5LmlzQXJyYXkoaXRlbSkgPyBpdGVtIDogW2l0ZW1dO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgdmFsaWRhdGU6IGZ1bmN0aW9uIHZhbGlkYXRlKHNvdXJjZV8sIG8sIG9jKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmIChvID09PSB2b2lkIDApIHtcbiAgICAgIG8gPSB7fTtcbiAgICB9XG5cbiAgICBpZiAob2MgPT09IHZvaWQgMCkge1xuICAgICAgb2MgPSBmdW5jdGlvbiBvYygpIHt9O1xuICAgIH1cblxuICAgIHZhciBzb3VyY2UgPSBzb3VyY2VfO1xuICAgIHZhciBvcHRpb25zID0gbztcbiAgICB2YXIgY2FsbGJhY2sgPSBvYztcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY2FsbGJhY2sgPSBvcHRpb25zO1xuICAgICAgb3B0aW9ucyA9IHt9O1xuICAgIH1cblxuICAgIGlmICghdGhpcy5ydWxlcyB8fCBPYmplY3Qua2V5cyh0aGlzLnJ1bGVzKS5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcGxldGUocmVzdWx0cykge1xuICAgICAgdmFyIGk7XG4gICAgICB2YXIgZXJyb3JzID0gW107XG4gICAgICB2YXIgZmllbGRzID0ge307XG5cbiAgICAgIGZ1bmN0aW9uIGFkZChlKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7XG4gICAgICAgICAgdmFyIF9lcnJvcnM7XG5cbiAgICAgICAgICBlcnJvcnMgPSAoX2Vycm9ycyA9IGVycm9ycykuY29uY2F0LmFwcGx5KF9lcnJvcnMsIGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVycm9ycy5wdXNoKGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGFkZChyZXN1bHRzW2ldKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIGVycm9ycyA9IG51bGw7XG4gICAgICAgIGZpZWxkcyA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWVsZHMgPSBjb252ZXJ0RmllbGRzRXJyb3IoZXJyb3JzKTtcbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2soZXJyb3JzLCBmaWVsZHMpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm1lc3NhZ2VzKSB7XG4gICAgICB2YXIgbWVzc2FnZXMkMSA9IHRoaXMubWVzc2FnZXMoKTtcblxuICAgICAgaWYgKG1lc3NhZ2VzJDEgPT09IG1lc3NhZ2VzKSB7XG4gICAgICAgIG1lc3NhZ2VzJDEgPSBuZXdNZXNzYWdlcygpO1xuICAgICAgfVxuXG4gICAgICBkZWVwTWVyZ2UobWVzc2FnZXMkMSwgb3B0aW9ucy5tZXNzYWdlcyk7XG4gICAgICBvcHRpb25zLm1lc3NhZ2VzID0gbWVzc2FnZXMkMTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9ucy5tZXNzYWdlcyA9IHRoaXMubWVzc2FnZXMoKTtcbiAgICB9XG5cbiAgICB2YXIgYXJyO1xuICAgIHZhciB2YWx1ZTtcbiAgICB2YXIgc2VyaWVzID0ge307XG4gICAgdmFyIGtleXMgPSBvcHRpb25zLmtleXMgfHwgT2JqZWN0LmtleXModGhpcy5ydWxlcyk7XG4gICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uICh6KSB7XG4gICAgICBhcnIgPSBfdGhpcy5ydWxlc1t6XTtcbiAgICAgIHZhbHVlID0gc291cmNlW3pdO1xuICAgICAgYXJyLmZvckVhY2goZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgdmFyIHJ1bGUgPSByO1xuXG4gICAgICAgIGlmICh0eXBlb2YgcnVsZS50cmFuc2Zvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBpZiAoc291cmNlID09PSBzb3VyY2VfKSB7XG4gICAgICAgICAgICBzb3VyY2UgPSBfZXh0ZW5kcyh7fSwgc291cmNlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YWx1ZSA9IHNvdXJjZVt6XSA9IHJ1bGUudHJhbnNmb3JtKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgcnVsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJ1bGUgPSB7XG4gICAgICAgICAgICB2YWxpZGF0b3I6IHJ1bGVcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJ1bGUgPSBfZXh0ZW5kcyh7fSwgcnVsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBydWxlLnZhbGlkYXRvciA9IF90aGlzLmdldFZhbGlkYXRpb25NZXRob2QocnVsZSk7XG4gICAgICAgIHJ1bGUuZmllbGQgPSB6O1xuICAgICAgICBydWxlLmZ1bGxGaWVsZCA9IHJ1bGUuZnVsbEZpZWxkIHx8IHo7XG4gICAgICAgIHJ1bGUudHlwZSA9IF90aGlzLmdldFR5cGUocnVsZSk7XG5cbiAgICAgICAgaWYgKCFydWxlLnZhbGlkYXRvcikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlcmllc1t6XSA9IHNlcmllc1t6XSB8fCBbXTtcbiAgICAgICAgc2VyaWVzW3pdLnB1c2goe1xuICAgICAgICAgIHJ1bGU6IHJ1bGUsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgIGZpZWxkOiB6XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdmFyIGVycm9yRmllbGRzID0ge307XG4gICAgcmV0dXJuIGFzeW5jTWFwKHNlcmllcywgb3B0aW9ucywgZnVuY3Rpb24gKGRhdGEsIGRvSXQpIHtcbiAgICAgIHZhciBydWxlID0gZGF0YS5ydWxlO1xuICAgICAgdmFyIGRlZXAgPSAocnVsZS50eXBlID09PSAnb2JqZWN0JyB8fCBydWxlLnR5cGUgPT09ICdhcnJheScpICYmICh0eXBlb2YgcnVsZS5maWVsZHMgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBydWxlLmRlZmF1bHRGaWVsZCA9PT0gJ29iamVjdCcpO1xuICAgICAgZGVlcCA9IGRlZXAgJiYgKHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgZGF0YS52YWx1ZSk7XG4gICAgICBydWxlLmZpZWxkID0gZGF0YS5maWVsZDtcblxuICAgICAgZnVuY3Rpb24gYWRkRnVsbGZpZWxkKGtleSwgc2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgc2NoZW1hLCB7XG4gICAgICAgICAgZnVsbEZpZWxkOiBydWxlLmZ1bGxGaWVsZCArIFwiLlwiICsga2V5XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjYihlKSB7XG4gICAgICAgIGlmIChlID09PSB2b2lkIDApIHtcbiAgICAgICAgICBlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZXJyb3JzID0gZTtcblxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXJyb3JzKSkge1xuICAgICAgICAgIGVycm9ycyA9IFtlcnJvcnNdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLnN1cHByZXNzV2FybmluZyAmJiBlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgU2NoZW1hLndhcm5pbmcoJ2FzeW5jLXZhbGlkYXRvcjonLCBlcnJvcnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9ycy5sZW5ndGggJiYgcnVsZS5tZXNzYWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBlcnJvcnMgPSBbXS5jb25jYXQocnVsZS5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVycm9ycyA9IGVycm9ycy5tYXAoY29tcGxlbWVudEVycm9yKHJ1bGUpKTtcblxuICAgICAgICBpZiAob3B0aW9ucy5maXJzdCAmJiBlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgZXJyb3JGaWVsZHNbcnVsZS5maWVsZF0gPSAxO1xuICAgICAgICAgIHJldHVybiBkb0l0KGVycm9ycyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWRlZXApIHtcbiAgICAgICAgICBkb0l0KGVycm9ycyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gaWYgcnVsZSBpcyByZXF1aXJlZCBidXQgdGhlIHRhcmdldCBvYmplY3RcbiAgICAgICAgICAvLyBkb2VzIG5vdCBleGlzdCBmYWlsIGF0IHRoZSBydWxlIGxldmVsIGFuZCBkb24ndFxuICAgICAgICAgIC8vIGdvIGRlZXBlclxuICAgICAgICAgIGlmIChydWxlLnJlcXVpcmVkICYmICFkYXRhLnZhbHVlKSB7XG4gICAgICAgICAgICBpZiAocnVsZS5tZXNzYWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgZXJyb3JzID0gW10uY29uY2F0KHJ1bGUubWVzc2FnZSkubWFwKGNvbXBsZW1lbnRFcnJvcihydWxlKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZXJyb3IpIHtcbiAgICAgICAgICAgICAgZXJyb3JzID0gW29wdGlvbnMuZXJyb3IocnVsZSwgZm9ybWF0KG9wdGlvbnMubWVzc2FnZXMucmVxdWlyZWQsIHJ1bGUuZmllbGQpKV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkb0l0KGVycm9ycyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGZpZWxkc1NjaGVtYSA9IHt9O1xuXG4gICAgICAgICAgaWYgKHJ1bGUuZGVmYXVsdEZpZWxkKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIGRhdGEudmFsdWUpIHtcbiAgICAgICAgICAgICAgaWYgKGRhdGEudmFsdWUuaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICAgICAgICBmaWVsZHNTY2hlbWFba10gPSBydWxlLmRlZmF1bHRGaWVsZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZpZWxkc1NjaGVtYSA9IF9leHRlbmRzKHt9LCBmaWVsZHNTY2hlbWEsIGRhdGEucnVsZS5maWVsZHMpO1xuXG4gICAgICAgICAgZm9yICh2YXIgZiBpbiBmaWVsZHNTY2hlbWEpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZHNTY2hlbWEuaGFzT3duUHJvcGVydHkoZikpIHtcbiAgICAgICAgICAgICAgdmFyIGZpZWxkU2NoZW1hID0gQXJyYXkuaXNBcnJheShmaWVsZHNTY2hlbWFbZl0pID8gZmllbGRzU2NoZW1hW2ZdIDogW2ZpZWxkc1NjaGVtYVtmXV07XG4gICAgICAgICAgICAgIGZpZWxkc1NjaGVtYVtmXSA9IGZpZWxkU2NoZW1hLm1hcChhZGRGdWxsZmllbGQuYmluZChudWxsLCBmKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHNjaGVtYSA9IG5ldyBTY2hlbWEoZmllbGRzU2NoZW1hKTtcbiAgICAgICAgICBzY2hlbWEubWVzc2FnZXMob3B0aW9ucy5tZXNzYWdlcyk7XG5cbiAgICAgICAgICBpZiAoZGF0YS5ydWxlLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIGRhdGEucnVsZS5vcHRpb25zLm1lc3NhZ2VzID0gb3B0aW9ucy5tZXNzYWdlcztcbiAgICAgICAgICAgIGRhdGEucnVsZS5vcHRpb25zLmVycm9yID0gb3B0aW9ucy5lcnJvcjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzY2hlbWEudmFsaWRhdGUoZGF0YS52YWx1ZSwgZGF0YS5ydWxlLm9wdGlvbnMgfHwgb3B0aW9ucywgZnVuY3Rpb24gKGVycnMpIHtcbiAgICAgICAgICAgIHZhciBmaW5hbEVycm9ycyA9IFtdO1xuXG4gICAgICAgICAgICBpZiAoZXJyb3JzICYmIGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgZmluYWxFcnJvcnMucHVzaC5hcHBseShmaW5hbEVycm9ycywgZXJyb3JzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVycnMgJiYgZXJycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgZmluYWxFcnJvcnMucHVzaC5hcHBseShmaW5hbEVycm9ycywgZXJycyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRvSXQoZmluYWxFcnJvcnMubGVuZ3RoID8gZmluYWxFcnJvcnMgOiBudWxsKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgcmVzO1xuXG4gICAgICBpZiAocnVsZS5hc3luY1ZhbGlkYXRvcikge1xuICAgICAgICByZXMgPSBydWxlLmFzeW5jVmFsaWRhdG9yKHJ1bGUsIGRhdGEudmFsdWUsIGNiLCBkYXRhLnNvdXJjZSwgb3B0aW9ucyk7XG4gICAgICB9IGVsc2UgaWYgKHJ1bGUudmFsaWRhdG9yKSB7XG4gICAgICAgIHJlcyA9IHJ1bGUudmFsaWRhdG9yKHJ1bGUsIGRhdGEudmFsdWUsIGNiLCBkYXRhLnNvdXJjZSwgb3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKHJlcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGNiKCk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzID09PSBmYWxzZSkge1xuICAgICAgICAgIGNiKHJ1bGUubWVzc2FnZSB8fCBydWxlLmZpZWxkICsgXCIgZmFpbHNcIik7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICBjYihyZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgY2IocmVzLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXMgJiYgcmVzLnRoZW4pIHtcbiAgICAgICAgcmVzLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBjYigpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIHJldHVybiBjYihlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSwgZnVuY3Rpb24gKHJlc3VsdHMpIHtcbiAgICAgIGNvbXBsZXRlKHJlc3VsdHMpO1xuICAgIH0pO1xuICB9LFxuICBnZXRUeXBlOiBmdW5jdGlvbiBnZXRUeXBlKHJ1bGUpIHtcbiAgICBpZiAocnVsZS50eXBlID09PSB1bmRlZmluZWQgJiYgcnVsZS5wYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICBydWxlLnR5cGUgPSAncGF0dGVybic7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBydWxlLnZhbGlkYXRvciAhPT0gJ2Z1bmN0aW9uJyAmJiBydWxlLnR5cGUgJiYgIXZhbGlkYXRvcnMuaGFzT3duUHJvcGVydHkocnVsZS50eXBlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdCgnVW5rbm93biBydWxlIHR5cGUgJXMnLCBydWxlLnR5cGUpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnVsZS50eXBlIHx8ICdzdHJpbmcnO1xuICB9LFxuICBnZXRWYWxpZGF0aW9uTWV0aG9kOiBmdW5jdGlvbiBnZXRWYWxpZGF0aW9uTWV0aG9kKHJ1bGUpIHtcbiAgICBpZiAodHlwZW9mIHJ1bGUudmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gcnVsZS52YWxpZGF0b3I7XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhydWxlKTtcbiAgICB2YXIgbWVzc2FnZUluZGV4ID0ga2V5cy5pbmRleE9mKCdtZXNzYWdlJyk7XG5cbiAgICBpZiAobWVzc2FnZUluZGV4ICE9PSAtMSkge1xuICAgICAga2V5cy5zcGxpY2UobWVzc2FnZUluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDEgJiYga2V5c1swXSA9PT0gJ3JlcXVpcmVkJykge1xuICAgICAgcmV0dXJuIHZhbGlkYXRvcnMucmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRvcnNbdGhpcy5nZXRUeXBlKHJ1bGUpXSB8fCBmYWxzZTtcbiAgfVxufTtcblxuU2NoZW1hLnJlZ2lzdGVyID0gZnVuY3Rpb24gcmVnaXN0ZXIodHlwZSwgdmFsaWRhdG9yKSB7XG4gIGlmICh0eXBlb2YgdmFsaWRhdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVnaXN0ZXIgYSB2YWxpZGF0b3IgYnkgdHlwZSwgdmFsaWRhdG9yIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICB2YWxpZGF0b3JzW3R5cGVdID0gdmFsaWRhdG9yO1xufTtcblxuU2NoZW1hLndhcm5pbmcgPSB3YXJuaW5nO1xuU2NoZW1hLm1lc3NhZ2VzID0gbWVzc2FnZXM7XG5TY2hlbWEudmFsaWRhdG9ycyA9IHZhbGlkYXRvcnM7XG5cbmV4cG9ydCBkZWZhdWx0IFNjaGVtYTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcFxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCJmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqO1xuICAgIH07XG5cbiAgICBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqO1xuICAgIH07XG5cbiAgICBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gX3R5cGVvZihvYmopO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF90eXBlb2Y7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9JbnB1dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vSW5wdXRcIikpO1xuXG52YXIgX0dyb3VwID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9Hcm91cFwiKSk7XG5cbnZhciBfU2VhcmNoID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9TZWFyY2hcIikpO1xuXG52YXIgX1RleHRBcmVhID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9UZXh0QXJlYVwiKSk7XG5cbnZhciBfUGFzc3dvcmQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL1Bhc3N3b3JkXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbl9JbnB1dFtcImRlZmF1bHRcIl0uR3JvdXAgPSBfR3JvdXBbXCJkZWZhdWx0XCJdO1xuX0lucHV0W1wiZGVmYXVsdFwiXS5TZWFyY2ggPSBfU2VhcmNoW1wiZGVmYXVsdFwiXTtcbl9JbnB1dFtcImRlZmF1bHRcIl0uVGV4dEFyZWEgPSBfVGV4dEFyZWFbXCJkZWZhdWx0XCJdO1xuX0lucHV0W1wiZGVmYXVsdFwiXS5QYXNzd29yZCA9IF9QYXNzd29yZFtcImRlZmF1bHRcIl07XG52YXIgX2RlZmF1bHQgPSBfSW5wdXRbXCJkZWZhdWx0XCJdO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBleHBvcnRzLkV4Y2VwdGlvbk1hcCA9IGV4cG9ydHMuSWNvbk1hcCA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX2ljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9pY29uXCIpKTtcblxudmFyIF9ub0ZvdW5kID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9ub0ZvdW5kXCIpKTtcblxudmFyIF9zZXJ2ZXJFcnJvciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vc2VydmVyRXJyb3JcIikpO1xuXG52YXIgX3VuYXV0aG9yaXplZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdW5hdXRob3JpemVkXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBJY29uTWFwID0ge1xuICBzdWNjZXNzOiAnY2hlY2stY2lyY2xlJyxcbiAgZXJyb3I6ICdjbG9zZS1jaXJjbGUnLFxuICBpbmZvOiAnZXhjbGFtYXRpb24tY2lyY2xlJyxcbiAgd2FybmluZzogJ3dhcm5pbmcnXG59O1xuZXhwb3J0cy5JY29uTWFwID0gSWNvbk1hcDtcbnZhciBFeGNlcHRpb25NYXAgPSB7XG4gICc0MDQnOiBfbm9Gb3VuZFtcImRlZmF1bHRcIl0sXG4gICc1MDAnOiBfc2VydmVyRXJyb3JbXCJkZWZhdWx0XCJdLFxuICAnNDAzJzogX3VuYXV0aG9yaXplZFtcImRlZmF1bHRcIl1cbn07IC8vIEV4Y2VwdGlvbkltYWdlTWFwIGtleXNcblxuZXhwb3J0cy5FeGNlcHRpb25NYXAgPSBFeGNlcHRpb25NYXA7XG52YXIgRXhjZXB0aW9uU3RhdHVzID0gT2JqZWN0LmtleXMoRXhjZXB0aW9uTWFwKTtcbi8qKlxuICogcmVuZGVyIGljb25cbiAqIGlmIEV4Y2VwdGlvblN0YXR1cyBpbmNsdWRlcyAscmVuZGVyIHN2ZyBpbWFnZVxuICogZWxzZSByZW5kZXIgaWNvbk5vZGVcbiAqIEBwYXJhbSBwcmVmaXhDbHNcbiAqIEBwYXJhbSB7c3RhdHVzLCBpY29ufVxuICovXG5cbnZhciByZW5kZXJJY29uID0gZnVuY3Rpb24gcmVuZGVySWNvbihwcmVmaXhDbHMsIF9yZWYpIHtcbiAgdmFyIHN0YXR1cyA9IF9yZWYuc3RhdHVzLFxuICAgICAgaWNvbiA9IF9yZWYuaWNvbjtcbiAgdmFyIGNsYXNzTmFtZSA9ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaWNvblwiKSk7XG5cbiAgaWYgKEV4Y2VwdGlvblN0YXR1cy5pbmNsdWRlcyhcIlwiLmNvbmNhdChzdGF0dXMpKSkge1xuICAgIHZhciBTVkdDb21wb25lbnQgPSBFeGNlcHRpb25NYXBbc3RhdHVzXTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChjbGFzc05hbWUsIFwiIFwiKS5jb25jYXQocHJlZml4Q2xzLCBcIi1pbWFnZVwiKVxuICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFNWR0NvbXBvbmVudCwgbnVsbCkpO1xuICB9XG5cbiAgdmFyIGljb25TdHJpbmcgPSBJY29uTWFwW3N0YXR1c107XG4gIHZhciBpY29uTm9kZSA9IGljb24gfHwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2ljb25bXCJkZWZhdWx0XCJdLCB7XG4gICAgdHlwZTogaWNvblN0cmluZyxcbiAgICB0aGVtZTogXCJmaWxsZWRcIlxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZVxuICB9LCBpY29uTm9kZSk7XG59O1xuXG52YXIgcmVuZGVyRXh0cmEgPSBmdW5jdGlvbiByZW5kZXJFeHRyYShwcmVmaXhDbHMsIF9yZWYyKSB7XG4gIHZhciBleHRyYSA9IF9yZWYyLmV4dHJhO1xuICByZXR1cm4gZXh0cmEgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1leHRyYVwiKVxuICB9LCBleHRyYSk7XG59O1xuXG52YXIgUmVzdWx0ID0gZnVuY3Rpb24gUmVzdWx0KHByb3BzKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfY29uZmlnUHJvdmlkZXIuQ29uZmlnQ29uc3VtZXIsIG51bGwsIGZ1bmN0aW9uIChfcmVmMykge1xuICAgIHZhciBnZXRQcmVmaXhDbHMgPSBfcmVmMy5nZXRQcmVmaXhDbHM7XG4gICAgdmFyIGN1c3RvbWl6ZVByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgICAgY3VzdG9taXplQ2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICBzdWJUaXRsZSA9IHByb3BzLnN1YlRpdGxlLFxuICAgICAgICB0aXRsZSA9IHByb3BzLnRpdGxlLFxuICAgICAgICBzdHlsZSA9IHByb3BzLnN0eWxlLFxuICAgICAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgICBzdGF0dXMgPSBwcm9wcy5zdGF0dXM7XG4gICAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygncmVzdWx0JywgY3VzdG9taXplUHJlZml4Q2xzKTtcbiAgICB2YXIgY2xhc3NOYW1lID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkocHJlZml4Q2xzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLVwiKS5jb25jYXQoc3RhdHVzKSwgY3VzdG9taXplQ2xhc3NOYW1lKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICBzdHlsZTogc3R5bGVcbiAgICB9LCByZW5kZXJJY29uKHByZWZpeENscywgcHJvcHMpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdGl0bGVcIilcbiAgICB9LCB0aXRsZSksIHN1YlRpdGxlICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zdWJ0aXRsZVwiKVxuICAgIH0sIHN1YlRpdGxlKSwgY2hpbGRyZW4gJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNvbnRlbnRcIilcbiAgICB9LCBjaGlsZHJlbiksIHJlbmRlckV4dHJhKHByZWZpeENscywgcHJvcHMpKTtcbiAgfSk7XG59O1xuXG5SZXN1bHQuZGVmYXVsdFByb3BzID0ge1xuICBzdGF0dXM6ICdpbmZvJ1xufTtcblJlc3VsdC5QUkVTRU5URURfSU1BR0VfNDAzID0gRXhjZXB0aW9uTWFwWzQwM107XG5SZXN1bHQuUFJFU0VOVEVEX0lNQUdFXzQwNCA9IEV4Y2VwdGlvbk1hcFs0MDRdO1xuUmVzdWx0LlBSRVNFTlRFRF9JTUFHRV81MDAgPSBFeGNlcHRpb25NYXBbNTAwXTtcbnZhciBfZGVmYXVsdCA9IFJlc3VsdDtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9wcm9ncmVzcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vcHJvZ3Jlc3NcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxudmFyIF9kZWZhdWx0ID0gX3Byb2dyZXNzW1wiZGVmYXVsdFwiXTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9ncmlkID0gcmVxdWlyZShcIi4uL2dyaWRcIik7XG5cbnZhciBfZGVmYXVsdCA9IF9ncmlkLlJvdztcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9ncmlkID0gcmVxdWlyZShcIi4uL2dyaWRcIik7XG5cbnZhciBfZGVmYXVsdCA9IF9ncmlkLkNvbDtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX01vZGFsID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4vTW9kYWxcIikpO1xuXG52YXIgX2NvbmZpcm0gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2NvbmZpcm1cIikpO1xuXG52YXIgX2ljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9pY29uXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIG1vZGFsV2Fybihwcm9wcykge1xuICB2YXIgY29uZmlnID0gX2V4dGVuZHMoe1xuICAgIHR5cGU6ICd3YXJuaW5nJyxcbiAgICBpY29uOiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfaWNvbltcImRlZmF1bHRcIl0sIHtcbiAgICAgIHR5cGU6IFwiZXhjbGFtYXRpb24tY2lyY2xlXCJcbiAgICB9KSxcbiAgICBva0NhbmNlbDogZmFsc2VcbiAgfSwgcHJvcHMpO1xuXG4gIHJldHVybiAoMCwgX2NvbmZpcm1bXCJkZWZhdWx0XCJdKShjb25maWcpO1xufVxuXG5fTW9kYWxbXCJkZWZhdWx0XCJdLmluZm8gPSBmdW5jdGlvbiBpbmZvRm4ocHJvcHMpIHtcbiAgdmFyIGNvbmZpZyA9IF9leHRlbmRzKHtcbiAgICB0eXBlOiAnaW5mbycsXG4gICAgaWNvbjogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2ljb25bXCJkZWZhdWx0XCJdLCB7XG4gICAgICB0eXBlOiBcImluZm8tY2lyY2xlXCJcbiAgICB9KSxcbiAgICBva0NhbmNlbDogZmFsc2VcbiAgfSwgcHJvcHMpO1xuXG4gIHJldHVybiAoMCwgX2NvbmZpcm1bXCJkZWZhdWx0XCJdKShjb25maWcpO1xufTtcblxuX01vZGFsW1wiZGVmYXVsdFwiXS5zdWNjZXNzID0gZnVuY3Rpb24gc3VjY2Vzc0ZuKHByb3BzKSB7XG4gIHZhciBjb25maWcgPSBfZXh0ZW5kcyh7XG4gICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgIGljb246IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9pY29uW1wiZGVmYXVsdFwiXSwge1xuICAgICAgdHlwZTogXCJjaGVjay1jaXJjbGVcIlxuICAgIH0pLFxuICAgIG9rQ2FuY2VsOiBmYWxzZVxuICB9LCBwcm9wcyk7XG5cbiAgcmV0dXJuICgwLCBfY29uZmlybVtcImRlZmF1bHRcIl0pKGNvbmZpZyk7XG59O1xuXG5fTW9kYWxbXCJkZWZhdWx0XCJdLmVycm9yID0gZnVuY3Rpb24gZXJyb3JGbihwcm9wcykge1xuICB2YXIgY29uZmlnID0gX2V4dGVuZHMoe1xuICAgIHR5cGU6ICdlcnJvcicsXG4gICAgaWNvbjogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2ljb25bXCJkZWZhdWx0XCJdLCB7XG4gICAgICB0eXBlOiBcImNsb3NlLWNpcmNsZVwiXG4gICAgfSksXG4gICAgb2tDYW5jZWw6IGZhbHNlXG4gIH0sIHByb3BzKTtcblxuICByZXR1cm4gKDAsIF9jb25maXJtW1wiZGVmYXVsdFwiXSkoY29uZmlnKTtcbn07XG5cbl9Nb2RhbFtcImRlZmF1bHRcIl0ud2FybmluZyA9IG1vZGFsV2Fybjtcbl9Nb2RhbFtcImRlZmF1bHRcIl0ud2FybiA9IG1vZGFsV2FybjtcblxuX01vZGFsW1wiZGVmYXVsdFwiXS5jb25maXJtID0gZnVuY3Rpb24gY29uZmlybUZuKHByb3BzKSB7XG4gIHZhciBjb25maWcgPSBfZXh0ZW5kcyh7XG4gICAgdHlwZTogJ2NvbmZpcm0nLFxuICAgIG9rQ2FuY2VsOiB0cnVlXG4gIH0sIHByb3BzKTtcblxuICByZXR1cm4gKDAsIF9jb25maXJtW1wiZGVmYXVsdFwiXSkoY29uZmlnKTtcbn07XG5cbl9Nb2RhbFtcImRlZmF1bHRcIl0uZGVzdHJveUFsbCA9IGZ1bmN0aW9uIGRlc3Ryb3lBbGxGbigpIHtcbiAgd2hpbGUgKF9Nb2RhbC5kZXN0cm95Rm5zLmxlbmd0aCkge1xuICAgIHZhciBjbG9zZSA9IF9Nb2RhbC5kZXN0cm95Rm5zLnBvcCgpO1xuXG4gICAgaWYgKGNsb3NlKSB7XG4gICAgICBjbG9zZSgpO1xuICAgIH1cbiAgfVxufTtcblxudmFyIF9kZWZhdWx0ID0gX01vZGFsW1wiZGVmYXVsdFwiXTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9Gb3JtID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9Gb3JtXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbnZhciBfZGVmYXVsdCA9IF9Gb3JtW1wiZGVmYXVsdFwiXTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiLy8gVGhpcyBpcyBhIGNhY2hlIG9mIGluLWZsaWdodCByZXF1ZXN0cy4gRWFjaCByZXF1ZXN0IGtleSBtYXBzIHRvIGFuXG4vLyBhcnJheSBvZiBQcm9taXNlcy4gV2hlbiB0aGUgcmVxdWVzdCByZXNvbHZlcywgZWFjaCBwcm9taXNlIGluIHRoZVxuLy8gYXJyYXkgaXMgcHVzaGVkIHRvLlxudmFyIHJlcXVlc3RzID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXF1ZXN0S2V5KCkge1xuICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge30sXG4gICAgICBfcmVmJHVybCA9IF9yZWYudXJsLFxuICAgICAgdXJsID0gX3JlZiR1cmwgPT09IHVuZGVmaW5lZCA/ICcnIDogX3JlZiR1cmwsXG4gICAgICBfcmVmJG1ldGhvZCA9IF9yZWYubWV0aG9kLFxuICAgICAgbWV0aG9kID0gX3JlZiRtZXRob2QgPT09IHVuZGVmaW5lZCA/ICcnIDogX3JlZiRtZXRob2QsXG4gICAgICBfcmVmJHJlc3BvbnNlVHlwZSA9IF9yZWYucmVzcG9uc2VUeXBlLFxuICAgICAgcmVzcG9uc2VUeXBlID0gX3JlZiRyZXNwb25zZVR5cGUgPT09IHVuZGVmaW5lZCA/ICcnIDogX3JlZiRyZXNwb25zZVR5cGUsXG4gICAgICBfcmVmJGJvZHkgPSBfcmVmLmJvZHksXG4gICAgICBib2R5ID0gX3JlZiRib2R5ID09PSB1bmRlZmluZWQgPyAnJyA6IF9yZWYkYm9keTtcblxuICByZXR1cm4gW3VybCwgbWV0aG9kLnRvVXBwZXJDYXNlKCksIHJlc3BvbnNlVHlwZSwgYm9keV0uam9pbignfHwnKTtcbn1cblxuLy8gUmV0dXJucyBgdHJ1ZWAgaWYgYSByZXF1ZXN0IHdpdGggYHJlcXVlc3RLZXlgIGlzIGluIGZsaWdodCxcbi8vIGFuZCBgZmFsc2VgIG90aGVyd2lzZS5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlcXVlc3RJbkZsaWdodChyZXF1ZXN0S2V5KSB7XG4gIHJldHVybiBCb29sZWFuKHJlcXVlc3RzW3JlcXVlc3RLZXldKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyUmVxdWVzdENhY2hlKCkge1xuICByZXF1ZXN0cyA9IHt9O1xufVxuXG4vLyBUaGlzIGxvb3BzIHRocm91Z2ggYWxsIG9mIHRoZSBoYW5kbGVycyBmb3IgdGhlIHJlcXVlc3QgYW5kIGVpdGhlclxuLy8gcmVzb2x2ZXMgb3IgcmVqZWN0cyB0aGVtLlxuZnVuY3Rpb24gcmVzb2x2ZVJlcXVlc3QoX3JlZjIpIHtcbiAgdmFyIHJlcXVlc3RLZXkgPSBfcmVmMi5yZXF1ZXN0S2V5LFxuICAgICAgcmVzID0gX3JlZjIucmVzLFxuICAgICAgZXJyID0gX3JlZjIuZXJyO1xuXG4gIHZhciBoYW5kbGVycyA9IHJlcXVlc3RzW3JlcXVlc3RLZXldIHx8IFtdO1xuXG4gIGhhbmRsZXJzLmZvckVhY2goZnVuY3Rpb24gKGhhbmRsZXIpIHtcbiAgICBpZiAocmVzKSB7XG4gICAgICBoYW5kbGVyLnJlc29sdmUocmVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlci5yZWplY3QoZXJyKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIFRoaXMgbGlzdCBvZiBoYW5kbGVycyBoYXMgYmVlbiwgd2VsbCwgaGFuZGxlZC4gU28gd2VcbiAgLy8gY2xlYXIgdGhlIGhhbmRsZXJzIGZvciB0aGUgbmV4dCByZXF1ZXN0LlxuICByZXF1ZXN0c1tyZXF1ZXN0S2V5XSA9IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaERlZHVwZShpbnB1dCkge1xuICB2YXIgaW5pdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gIHZhciBkZWR1cGVPcHRpb25zID0gYXJndW1lbnRzWzJdO1xuXG4gIHZhciBvcHRzID0gdm9pZCAwLFxuICAgICAgaW5pdFRvVXNlID0gdm9pZCAwO1xuICBpZiAoZGVkdXBlT3B0aW9ucykge1xuICAgIG9wdHMgPSBkZWR1cGVPcHRpb25zO1xuICAgIGluaXRUb1VzZSA9IGluaXQ7XG4gIH0gZWxzZSBpZiAoaW5pdC5yZXNwb25zZVR5cGUpIHtcbiAgICBvcHRzID0gaW5pdDtcbiAgICBpbml0VG9Vc2UgPSB7fTtcbiAgfSBlbHNlIHtcbiAgICBvcHRzID0ge307XG4gICAgaW5pdFRvVXNlID0gaW5pdDtcbiAgfVxuXG4gIHZhciBfb3B0cyA9IG9wdHMsXG4gICAgICByZXF1ZXN0S2V5ID0gX29wdHMucmVxdWVzdEtleSxcbiAgICAgIF9vcHRzJHJlc3BvbnNlVHlwZSA9IF9vcHRzLnJlc3BvbnNlVHlwZSxcbiAgICAgIHJlc3BvbnNlVHlwZSA9IF9vcHRzJHJlc3BvbnNlVHlwZSA9PT0gdW5kZWZpbmVkID8gJycgOiBfb3B0cyRyZXNwb25zZVR5cGUsXG4gICAgICBfb3B0cyRkZWR1cGUgPSBfb3B0cy5kZWR1cGUsXG4gICAgICBkZWR1cGUgPSBfb3B0cyRkZWR1cGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBfb3B0cyRkZWR1cGU7XG5cbiAgLy8gQnVpbGQgdGhlIGRlZmF1bHQgcmVxdWVzdCBrZXkgaWYgb25lIGlzIG5vdCBwYXNzZWRcblxuICB2YXIgcmVxdWVzdEtleVRvVXNlID0gcmVxdWVzdEtleSB8fCBnZXRSZXF1ZXN0S2V5KHtcbiAgICAvLyBJZiBgaW5wdXRgIGlzIGEgcmVxdWVzdCwgdGhlbiB3ZSB1c2UgdGhhdCBVUkxcbiAgICB1cmw6IGlucHV0LnVybCB8fCBpbnB1dCxcbiAgICAvLyBXZSBwcmVmZXIgdmFsdWVzIGZyb20gYGluaXRgIG92ZXIgcmVxdWVzdCBvYmplY3RzLiBXaXRoIGBmZXRjaCgpYCwgaW5pdFxuICAgIC8vIHRha2VzIHByaW9yaXR5IG92ZXIgYSBwYXNzZWQtaW4gcmVxdWVzdFxuICAgIG1ldGhvZDogaW5pdFRvVXNlLm1ldGhvZCB8fCBpbnB1dC5tZXRob2QgfHwgJycsXG4gICAgYm9keTogaW5pdFRvVXNlLmJvZHkgfHwgaW5wdXQuYm9keSB8fCAnJ1xuICB9KTtcblxuICB2YXIgcHJveHlSZXEgPSB2b2lkIDA7XG4gIGlmIChkZWR1cGUpIHtcbiAgICBpZiAoIXJlcXVlc3RzW3JlcXVlc3RLZXlUb1VzZV0pIHtcbiAgICAgIHJlcXVlc3RzW3JlcXVlc3RLZXlUb1VzZV0gPSBbXTtcbiAgICB9XG5cbiAgICB2YXIgaGFuZGxlcnMgPSByZXF1ZXN0c1tyZXF1ZXN0S2V5VG9Vc2VdO1xuICAgIHZhciByZXF1ZXN0SW5GbGlnaHQgPSBCb29sZWFuKGhhbmRsZXJzLmxlbmd0aCk7XG4gICAgdmFyIHJlcXVlc3RIYW5kbGVyID0ge307XG4gICAgcHJveHlSZXEgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICByZXF1ZXN0SGFuZGxlci5yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgIHJlcXVlc3RIYW5kbGVyLnJlamVjdCA9IHJlamVjdDtcbiAgICB9KTtcblxuICAgIGhhbmRsZXJzLnB1c2gocmVxdWVzdEhhbmRsZXIpO1xuXG4gICAgaWYgKHJlcXVlc3RJbkZsaWdodCkge1xuICAgICAgcmV0dXJuIHByb3h5UmVxO1xuICAgIH1cbiAgfVxuXG4gIHZhciByZXF1ZXN0ID0gZmV0Y2goaW5wdXQsIGluaXRUb1VzZSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgdmFyIHJlc3BvbnNlVHlwZVRvVXNlID0gdm9pZCAwO1xuICAgIGlmIChyZXNwb25zZVR5cGUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgcmVzcG9uc2VUeXBlVG9Vc2UgPSByZXNwb25zZVR5cGUocmVzKTtcbiAgICB9IGVsc2UgaWYgKHJlc3BvbnNlVHlwZSkge1xuICAgICAgcmVzcG9uc2VUeXBlVG9Vc2UgPSByZXNwb25zZVR5cGU7XG4gICAgfSBlbHNlIGlmIChyZXMuc3RhdHVzID09PSAyMDQpIHtcbiAgICAgIHJlc3BvbnNlVHlwZVRvVXNlID0gJ3RleHQnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNwb25zZVR5cGVUb1VzZSA9ICdqc29uJztcbiAgICB9XG4gICAgLy8gVGhlIHJlc3BvbnNlIGJvZHkgaXMgYSBSZWFkYWJsZVN0cmVhbS4gUmVhZGFibGVTdHJlYW1zIGNhbiBvbmx5IGJlIHJlYWQgYSBzaW5nbGVcbiAgICAvLyB0aW1lLCBzbyB3ZSBtdXN0IGhhbmRsZSB0aGF0IGluIGEgY2VudHJhbCBsb2NhdGlvbiwgaGVyZSwgYmVmb3JlIHJlc29sdmluZ1xuICAgIC8vIHRoZSBmZXRjaC5cbiAgICByZXR1cm4gcmVzW3Jlc3BvbnNlVHlwZVRvVXNlXSgpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIHJlcy5kYXRhID0gZGF0YTtcblxuICAgICAgaWYgKGRlZHVwZSkge1xuICAgICAgICByZXNvbHZlUmVxdWVzdCh7IHJlcXVlc3RLZXk6IHJlcXVlc3RLZXlUb1VzZSwgcmVzOiByZXMgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlcy5kYXRhID0gbnVsbDtcblxuICAgICAgaWYgKGRlZHVwZSkge1xuICAgICAgICByZXNvbHZlUmVxdWVzdCh7IHJlcXVlc3RLZXk6IHJlcXVlc3RLZXlUb1VzZSwgcmVzOiByZXMgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgcmVzb2x2ZVJlcXVlc3QoeyByZXF1ZXN0S2V5OiByZXF1ZXN0S2V5VG9Vc2UsIGVycjogZXJyIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyKTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmIChkZWR1cGUpIHtcbiAgICByZXR1cm4gcHJveHlSZXE7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cbn0iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xudmFyIEZldGNoQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5cbmV4cG9ydCB2YXIgdXNlRmV0Y2hDb250ZXh0ID0gZnVuY3Rpb24gdXNlRmV0Y2hDb250ZXh0KCkge1xuICB2YXIgY2FjaGUgPSB1c2VDb250ZXh0KEZldGNoQ29udGV4dCk7XG5cbiAgcmV0dXJuIGNhY2hlO1xufTtcblxuZnVuY3Rpb24gRmV0Y2hQcm92aWRlcihfcmVmKSB7XG4gIHZhciBjYWNoZSA9IF9yZWYuY2FjaGUsXG4gICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG5cbiAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgRmV0Y2hDb250ZXh0LlByb3ZpZGVyLFxuICAgIHsgdmFsdWU6IGNhY2hlIH0sXG4gICAgY2hpbGRyZW5cbiAgKTtcbn1cblxuZXhwb3J0IHsgRmV0Y2hQcm92aWRlciB9OyIsImV4cG9ydCB2YXIgZ2V0SGVhZGVyID0gZnVuY3Rpb24gZ2V0SGVhZGVyKGhlYWRlcnMsIGtleVRvRmluZCkge1xuICBpZiAoIWhlYWRlcnMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIEhlYWRlcnMnIGdldCgpIGlzIGNhc2UgaW5zZW5zaXRpdmVcbiAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgcmV0dXJuIGhlYWRlcnMuZ2V0KGtleVRvRmluZCk7XG4gIH1cblxuICB2YXIga2V5VG9GaW5kTG93ZXJjYXNlID0ga2V5VG9GaW5kLnRvTG93ZXJDYXNlKCk7XG4gIC8vIENvbnZlcnQga2V5cyB0byBsb3dlckNhc2Ugc28gd2UgZG9uJ3QgcnVuIGludG8gY2FzZSBzZW5zaXRpdml0eSBpc3N1ZXNcbiAgdmFyIGhlYWRlcktleSA9IE9iamVjdC5rZXlzKGhlYWRlcnMpLmZpbmQoZnVuY3Rpb24gKGhlYWRlcktleSkge1xuICAgIHJldHVybiBoZWFkZXJLZXkudG9Mb3dlckNhc2UoKSA9PT0ga2V5VG9GaW5kTG93ZXJjYXNlO1xuICB9KTtcblxuICByZXR1cm4gaGVhZGVyS2V5ID8gaGVhZGVyc1toZWFkZXJLZXldIDogbnVsbDtcbn07XG5cbmV4cG9ydCB2YXIgc3RyaW5naWZ5SWZKU09OID0gZnVuY3Rpb24gc3RyaW5naWZ5SWZKU09OKGZldGNoT3B0aW9ucykge1xuICB2YXIgY29udGVudFR5cGUgPSBnZXRIZWFkZXIoZmV0Y2hPcHRpb25zLmhlYWRlcnMsIFwiQ29udGVudC1UeXBlXCIpO1xuXG4gIGlmIChjb250ZW50VHlwZSAmJiBjb250ZW50VHlwZS5pbmRleE9mKFwiYXBwbGljYXRpb24vanNvblwiKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZmV0Y2hPcHRpb25zLmJvZHkpO1xuICB9XG5cbiAgcmV0dXJuIGZldGNoT3B0aW9ucy5ib2R5O1xufTtcblxuZXhwb3J0IHZhciBpc1JlYWRSZXF1ZXN0ID0gZnVuY3Rpb24gaXNSZWFkUmVxdWVzdChtZXRob2QpIHtcbiAgbWV0aG9kID0gbWV0aG9kLnRvVXBwZXJDYXNlKCk7XG5cbiAgcmV0dXJuIG1ldGhvZCA9PT0gXCJHRVRcIiB8fCBtZXRob2QgPT09IFwiSEVBRFwiIHx8IG1ldGhvZCA9PT0gXCJPUFRJT05TXCI7XG59OyIsInZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VSZWR1Y2VyLCB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZmV0Y2hEZWR1cGUsIGdldFJlcXVlc3RLZXkgfSBmcm9tIFwiZmV0Y2gtZGVkdXBlXCI7XG5pbXBvcnQgeyB1c2VGZXRjaENvbnRleHQgfSBmcm9tIFwiLi9GZXRjaFByb3ZpZGVyXCI7XG5pbXBvcnQgeyBzdHJpbmdpZnlJZkpTT04sIGlzUmVhZFJlcXVlc3QgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG52YXIgQ0FDSEVfUE9MSUNJRVMgPSB7XG4gIE5FVFdPUktfT05MWTogXCJuZXR3b3JrLW9ubHlcIixcbiAgQ0FDSEVfQU5EX05FVFdPUks6IFwiY2FjaGUtYW5kLW5ldHdvcmtcIixcbiAgRVhBQ1RfQ0FDSEVfQU5EX05FVFdPUks6IFwiZXhhY3QtY2FjaGUtYW5kLW5ldHdvcmtcIixcbiAgQ0FDSEVfRklSU1Q6IFwiY2FjaGUtZmlyc3RcIlxufTtcblxudmFyIGdldERlZmF1bHRDYWNoZVN0cmF0ZWd5ID0gZnVuY3Rpb24gZ2V0RGVmYXVsdENhY2hlU3RyYXRlZ3kobWV0aG9kKSB7XG4gIG1ldGhvZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuXG4gIGlmIChtZXRob2QgPT09IFwiR0VUXCIgfHwgbWV0aG9kID09PSBcIkhFQURcIiB8fCBtZXRob2QgPT09IFwiT1BUSU9OU1wiKSB7XG4gICAgcmV0dXJuIENBQ0hFX1BPTElDSUVTLkNBQ0hFX0ZJUlNUO1xuICB9XG5cbiAgcmV0dXJuIENBQ0hFX1BPTElDSUVTLk5FVFdPUktfT05MWTtcbn07XG5cbnZhciBkZWZhdWx0T25FcnJvciA9IGZ1bmN0aW9uIGRlZmF1bHRPbkVycm9yKGVycm9yKSB7XG4gIHJldHVybiBjb25zb2xlLmVycm9yKGVycm9yKTtcbn07XG52YXIgZGVmYXVsdE9uU3VjY2VzcyA9IGZ1bmN0aW9uIGRlZmF1bHRPblN1Y2Nlc3MoKSB7XG4gIHJldHVybiBudWxsO1xufTtcblxuZnVuY3Rpb24gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKSB7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlIFwiaW4tZmxpZ2h0XCI6XG4gICAgICB7XG4gICAgICAgIC8vIEF2b2lkIHVwZGF0aW5nIHN0YXRlIHVubmVjZXNzYXJpbHlcbiAgICAgICAgLy8gQnkgcmV0dXJuaW5nIHVuY2hhbmdlZCBzdGF0ZSBSZWFjdCB3b24ndCByZS1yZW5kZXJcbiAgICAgICAgaWYgKHN0YXRlLmZldGNoaW5nID09PSB0cnVlKSB7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBzdGF0ZSwge1xuICAgICAgICAgIGZldGNoaW5nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgY2FzZSBcInJlc3BvbnNlXCI6XG4gICAgICB7XG4gICAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgc3RhdGUsIHtcbiAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICBmZXRjaGluZzogYWN0aW9uLnBheWxvYWQuZmV0Y2hpbmcsXG4gICAgICAgICAgcmVzcG9uc2U6IGFjdGlvbi5wYXlsb2FkLnJlc3BvbnNlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgY2FzZSBcImVycm9yXCI6XG4gICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHN0YXRlLCB7XG4gICAgICAgIGZldGNoaW5nOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IGFjdGlvbi5wYXlsb2FkLmVycm9yXG4gICAgICB9KTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cblxudmFyIGRlZmF1bHRSZWZyZXNoRG9GZXRjaCA9IGZ1bmN0aW9uIGRlZmF1bHRSZWZyZXNoRG9GZXRjaChyZXF1ZXN0S2V5KSB7XG4gIHJldHVybiByZXF1ZXN0S2V5O1xufTtcblxuZnVuY3Rpb24gdXNlRmV0Y2goX3JlZikge1xuICB2YXIgdXJsID0gX3JlZi51cmwsXG4gICAgICBfcmVmJG1ldGhvZCA9IF9yZWYubWV0aG9kLFxuICAgICAgbWV0aG9kID0gX3JlZiRtZXRob2QgPT09IHVuZGVmaW5lZCA/IFwiR0VUXCIgOiBfcmVmJG1ldGhvZCxcbiAgICAgIF9yZWYkbGF6eSA9IF9yZWYubGF6eSxcbiAgICAgIGxhenkgPSBfcmVmJGxhenkgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBfcmVmJGxhenksXG4gICAgICBfcmVmJHJlcXVlc3RLZXkgPSBfcmVmLnJlcXVlc3RLZXksXG4gICAgICByZXF1ZXN0S2V5ID0gX3JlZiRyZXF1ZXN0S2V5ID09PSB1bmRlZmluZWQgPyBudWxsIDogX3JlZiRyZXF1ZXN0S2V5LFxuICAgICAgX3JlZiRpbml0ID0gX3JlZi5pbml0LFxuICAgICAgaW5pdCA9IF9yZWYkaW5pdCA9PT0gdW5kZWZpbmVkID8ge30gOiBfcmVmJGluaXQsXG4gICAgICBfcmVmJGRlZHVwZU9wdGlvbnMgPSBfcmVmLmRlZHVwZU9wdGlvbnMsXG4gICAgICBkZWR1cGVPcHRpb25zID0gX3JlZiRkZWR1cGVPcHRpb25zID09PSB1bmRlZmluZWQgPyB7fSA6IF9yZWYkZGVkdXBlT3B0aW9ucyxcbiAgICAgIF9yZWYkY2FjaGVQb2xpY3kgPSBfcmVmLmNhY2hlUG9saWN5LFxuICAgICAgY2FjaGVQb2xpY3kgPSBfcmVmJGNhY2hlUG9saWN5ID09PSB1bmRlZmluZWQgPyBudWxsIDogX3JlZiRjYWNoZVBvbGljeSxcbiAgICAgIF9yZWYkY2FjaGVSZXNwb25zZSA9IF9yZWYuY2FjaGVSZXNwb25zZSxcbiAgICAgIGNhY2hlUmVzcG9uc2UgPSBfcmVmJGNhY2hlUmVzcG9uc2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBfcmVmJGNhY2hlUmVzcG9uc2UsXG4gICAgICBfcmVmJG9uRXJyb3IgPSBfcmVmLm9uRXJyb3IsXG4gICAgICBvbkVycm9yID0gX3JlZiRvbkVycm9yID09PSB1bmRlZmluZWQgPyBkZWZhdWx0T25FcnJvciA6IF9yZWYkb25FcnJvcixcbiAgICAgIF9yZWYkb25TdWNjZXNzID0gX3JlZi5vblN1Y2Nlc3MsXG4gICAgICBvblN1Y2Nlc3MgPSBfcmVmJG9uU3VjY2VzcyA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdE9uU3VjY2VzcyA6IF9yZWYkb25TdWNjZXNzLFxuICAgICAgX3JlZiRyZWZyZXNoRG9GZXRjaCA9IF9yZWYucmVmcmVzaERvRmV0Y2gsXG4gICAgICByZWZyZXNoRG9GZXRjaCA9IF9yZWYkcmVmcmVzaERvRmV0Y2ggPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRSZWZyZXNoRG9GZXRjaCA6IF9yZWYkcmVmcmVzaERvRmV0Y2g7XG5cbiAgdmFyIHJlc3BvbnNlQ2FjaGUgPSB1c2VGZXRjaENvbnRleHQoKTtcblxuICB2YXIgYWJvcnRDb250cm9sbGVyUmVmID0gdXNlUmVmKCk7XG5cbiAgLy8gRGVmYXVsdCBHRVR8SEVBRHxPUFRJT05TIHJlcXVlc3RzIHRvIG5vbi1sYXp5IChhdXRvbWF0aWNhbGx5IHJlcXVlc3Qgb25Nb3VudClcbiAgLy8gYWxsIGVsc2UgbGF6eSAob25seSByZXF1ZXN0ZWQgd2hlbiBkb0ZldGNoIGlzIGNhbGxlZClcbiAgdmFyIGlzTGF6eSA9IGxhenkgPT0gbnVsbCA/ICFpc1JlYWRSZXF1ZXN0KG1ldGhvZCkgOiBsYXp5O1xuXG4gIHZhciBjYWNoZVN0cmF0ZWd5ID0gY2FjaGVQb2xpY3kgPT09IG51bGwgPyBnZXREZWZhdWx0Q2FjaGVTdHJhdGVneShtZXRob2QpIDogY2FjaGVQb2xpY3k7XG5cbiAgdmFyIF91c2VSZWR1Y2VyID0gdXNlUmVkdWNlcihyZWR1Y2VyLCB7XG4gICAgcmVzcG9uc2U6IG51bGwsXG4gICAgZmV0Y2hpbmc6ICFpc0xhenksXG4gICAgZXJyb3I6IG51bGxcbiAgfSksXG4gICAgICBzdGF0ZSA9IF91c2VSZWR1Y2VyWzBdLFxuICAgICAgZGlzcGF0Y2ggPSBfdXNlUmVkdWNlclsxXTtcblxuICAvLyBCdWlsZHMgYSBrZXkgYmFzZWQgb24gVVJMLCBtZXRob2QgYW5kIGhlYWRlcnMuXG4gIC8vIHJlcXVlc3RLZXkgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIHJlcXVlc3QgcGFyYW1ldGVycyBoYXZlIGNoYW5nZWRcbiAgLy8gYW5kIGFzIGtleSBpbiB0aGUgcmVzcG9uc2UgY2FjaGUuXG5cblxuICB2YXIgZmluYWxSZXF1ZXN0S2V5ID0gcmVxdWVzdEtleSA/IHJlcXVlc3RLZXkgOiBnZXRSZXF1ZXN0S2V5KF9leHRlbmRzKHsgdXJsOiB1cmwsIG1ldGhvZDogbWV0aG9kLnRvVXBwZXJDYXNlKCkgfSwgaW5pdCkpO1xuXG4gIGZ1bmN0aW9uIHNldEZldGNoaW5nKCkge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogXCJpbi1mbGlnaHRcIiB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldFJlc3BvbnNlKHJlc3BvbnNlKSB7XG4gICAgdmFyIGZldGNoaW5nID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTtcblxuICAgIGRpc3BhdGNoKHsgdHlwZTogXCJyZXNwb25zZVwiLCBwYXlsb2FkOiB7IHJlc3BvbnNlOiByZXNwb25zZSwgZmV0Y2hpbmc6IGZldGNoaW5nIH0gfSk7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRFcnJvcihlcnJvcikge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogXCJlcnJvclwiLCBwYXlsb2FkOiB7IGVycm9yOiBlcnJvciB9IH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gY2FuY2VsUnVubmluZ1JlcXVlc3QoKSB7XG4gICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICAvLyBDYW5jZWwgY3VycmVudCByZXF1ZXN0XG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3VsZENhY2hlUmVzcG9uc2UoKSB7XG4gICAgaWYgKGNhY2hlUmVzcG9uc2UgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBjYWNoZVJlc3BvbnNlO1xuICAgIH1cblxuICAgIHJldHVybiBpc1JlYWRSZXF1ZXN0KG1ldGhvZCk7XG4gIH1cblxuICB2YXIgZG9GZXRjaCA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZG9GZXRjaEluaXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgIHZhciBkb0ZldGNoRGVkdXBlT3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICBjYW5jZWxSdW5uaW5nUmVxdWVzdCgpO1xuXG4gICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICBzZXRGZXRjaGluZyh0cnVlKTtcblxuICAgIHZhciBmaW5hbEluaXQgPSBfZXh0ZW5kcyh7fSwgaW5pdCwgZG9GZXRjaEluaXQpO1xuXG4gICAgdmFyIGZpbmFsRGVkdXBlT3B0aW9ucyA9IF9leHRlbmRzKHt9LCBkZWR1cGVPcHRpb25zLCBkb0ZldGNoRGVkdXBlT3B0aW9ucyk7XG5cbiAgICByZXR1cm4gZmV0Y2hEZWR1cGUoZmluYWxJbml0LnVybCB8fCB1cmwsIF9leHRlbmRzKHt9LCBmaW5hbEluaXQsIHtcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5zaWduYWwsXG4gICAgICBib2R5OiBmaW5hbEluaXQuYm9keSA/IHN0cmluZ2lmeUlmSlNPTihmaW5hbEluaXQpIDogdW5kZWZpbmVkXG4gICAgfSksIGZpbmFsRGVkdXBlT3B0aW9ucykudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgc2V0RXJyb3IocmVzcG9uc2UpO1xuICAgICAgICBvbkVycm9yKHJlc3BvbnNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzaG91bGRDYWNoZVJlc3BvbnNlKCkpIHtcbiAgICAgICAgICByZXNwb25zZUNhY2hlLnNldChmaW5hbFJlcXVlc3RLZXksIHJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRSZXNwb25zZShyZXNwb25zZSk7XG4gICAgICAgIG9uU3VjY2VzcyhyZXNwb25zZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmICghYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICBvbkVycm9yKGVycm9yKTtcblxuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH0pLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBhYm9ydCBjb250cm9sbGVyIG5vdyB0aGF0IHRoZSByZXF1ZXN0IGlzIGRvbmVcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9KTtcbiAgfSwgW3JlZnJlc2hEb0ZldGNoKGZpbmFsUmVxdWVzdEtleSldKTtcblxuICAvLyBTdGFydCByZXF1ZXN0aW5nIG9uTW91bnQgaWYgbm90IGxhenlcbiAgLy8gU3RhcnQgcmVxdWVzdGluZyBpZiBpc0xhenkgZ29lcyBmcm9tIHRydWUgdG8gZmFsc2VcbiAgLy8gU3RhcnQgcmVxdWVzdGluZyBldmVyeSB0aW1lIHRoZSByZXF1ZXN0IGtleSBjaGFuZ2VzIChpLmUuIFVSTCwgbWV0aG9kLCBpbml0LmJvZHkgb3IgaW5pdC5yZXNwb25zZVR5cGUpIGlmIG5vdCBsYXp5XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgLy8gRG8gbm90IHN0YXJ0IHJlcXVlc3QgYXV0b21hdGljYWxseSB3aGVuIGluIGxhenkgbW9kZVxuICAgIGlmIChpc0xhenkgPT09IHRydWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY2FjaGVkUmVzcG9uc2UgPSByZXNwb25zZUNhY2hlLmdldChmaW5hbFJlcXVlc3RLZXkpO1xuXG4gICAgLy8gUmV0dXJuIGNhY2hlZCByZXNwb25zZSBpZiBpdCBleGlzdHNcbiAgICBpZiAoY2FjaGVTdHJhdGVneSA9PT0gQ0FDSEVfUE9MSUNJRVMuQ0FDSEVfRklSU1QgJiYgY2FjaGVkUmVzcG9uc2UpIHtcbiAgICAgIG9uU3VjY2VzcyhjYWNoZWRSZXNwb25zZSk7XG4gICAgICByZXR1cm4gc2V0UmVzcG9uc2UoY2FjaGVkUmVzcG9uc2UpO1xuICAgIH1cblxuICAgIC8vIFJldHVybiBhbnkgY2FjaGVkIGRhdGEgaW1tZWRpYXRlbHksIGJ1dCBpbml0aWF0ZSByZXF1ZXN0IGFueXdheSBpbiBvcmRlciB0byByZWZyZXNoIGFueSBzdGFsZSBkYXRhXG4gICAgaWYgKGNhY2hlU3RyYXRlZ3kgPT09IENBQ0hFX1BPTElDSUVTLkNBQ0hFX0FORF9ORVRXT1JLICYmIGNhY2hlZFJlc3BvbnNlKSB7XG4gICAgICBvblN1Y2Nlc3MoY2FjaGVkUmVzcG9uc2UpO1xuICAgICAgc2V0UmVzcG9uc2UoY2FjaGVkUmVzcG9uc2UsIHRydWUpO1xuICAgIH1cblxuICAgIC8vIEFsbW9zdCBsaWtlICdjYWNoZS1hbmQtbmV0d29yaycsIGJ1dCB0aGlzIGNsZWFycyB0aGUgcHJldmlvdXMgcmVxdWVzdCBrZXkncyByZXNwb25zZVxuICAgIC8vIGFuZCBvbmx5IHNob3dzIGEgY2FjaGVkIHJlc3BvbnNlIGlmIHRoZSByZXF1ZXN0IGtleXMgYXJlIGlkZW50aWNhbFxuICAgIC8vIEluIG90aGVyIHdvcmRzIGl0IHdvbid0IHNob3cgdGhlIHByZXZpb3VzIHJlcXVlc3Qga2V5J3MgZGF0YSB3aGlsZSBmZXRjaGluZ1xuICAgIGlmIChjYWNoZVN0cmF0ZWd5ID09PSBDQUNIRV9QT0xJQ0lFUy5FWEFDVF9DQUNIRV9BTkRfTkVUV09SSykge1xuICAgICAgaWYgKGNhY2hlZFJlc3BvbnNlKSB7XG4gICAgICAgIG9uU3VjY2VzcyhjYWNoZWRSZXNwb25zZSk7XG4gICAgICAgIHNldFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNlLCB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFJlc3BvbnNlKG51bGwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsd2F5cyBmZXRjaCBuZXcgZGF0YSBpZiByZXF1ZXN0IHBhcmFtcyBjaGFuZ2VcbiAgICBpZiAoY2FjaGVTdHJhdGVneSA9PT0gQ0FDSEVfUE9MSUNJRVMuTkVUV09SS19PTkxZKSB7XG4gICAgICAvLyBSZXNldCByZXNwb25zZSBzdGF0ZSBzaW5jZSB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIGFueSBjYWNoZWQgcmVzcG9uc2UgZnJvbSBwcmV2aW91cyByZXF1ZXN0XG4gICAgICBzZXRSZXNwb25zZShudWxsKTtcbiAgICB9XG5cbiAgICBkb0ZldGNoKGluaXQpO1xuICB9LCBbZmluYWxSZXF1ZXN0S2V5LCBpc0xhenldKTtcblxuICAvLyBDYW5jZWwgYW55IHJ1bm5pbmcgcmVxdWVzdCB3aGVuIHVubW91bnRpbmcgdG8gYXZvaWQgdXBkYXRpbmcgc3RhdGUgYWZ0ZXIgY29tcG9uZW50IGhhcyB1bm1vdW50ZWRcbiAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIGEgcmVxdWVzdCdzIHByb21pc2UgcmVzb2x2ZXMgYWZ0ZXIgY29tcG9uZW50IHVubW91bnRzXG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbmNlbFJ1bm5pbmdSZXF1ZXN0KCk7XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiB7XG4gICAgcmVzcG9uc2U6IHN0YXRlLnJlc3BvbnNlLFxuICAgIGRhdGE6IHN0YXRlLnJlc3BvbnNlID8gc3RhdGUucmVzcG9uc2UuZGF0YSA6IG51bGwsXG4gICAgZmV0Y2hpbmc6IHN0YXRlLmZldGNoaW5nLFxuICAgIGVycm9yOiBzdGF0ZS5lcnJvcixcbiAgICByZXF1ZXN0S2V5OiBmaW5hbFJlcXVlc3RLZXksXG4gICAgZG9GZXRjaDogZG9GZXRjaFxuICB9O1xufVxuXG5leHBvcnQgeyB1c2VGZXRjaCB9OyIsIi8qKiBAbGljZW5zZSBSZWFjdCB2MTYuOS4wXG4gKiByZWFjdC5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0Jzt2YXIgaD1yZXF1aXJlKFwib2JqZWN0LWFzc2lnblwiKSxuPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IscD1uP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLHE9bj9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LHI9bj9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcsdD1uP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCx1PW4/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LHY9bj9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDksdz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLHg9bj9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIseT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxhYT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpOjYwMTIwLGJhPW4/U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIik6XG42MDExNSxjYT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpOjYwMTE2O24mJlN5bWJvbC5mb3IoXCJyZWFjdC5mdW5kYW1lbnRhbFwiKTtuJiZTeW1ib2wuZm9yKFwicmVhY3QucmVzcG9uZGVyXCIpO3ZhciB6PVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcjtcbmZ1bmN0aW9uIEEoYSl7Zm9yKHZhciBiPWEubWVzc2FnZSxkPVwiaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9XCIrYixjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKylkKz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tjXSk7YS5tZXNzYWdlPVwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiK2IrXCI7IHZpc2l0IFwiK2QrXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiBcIjtyZXR1cm4gYX12YXIgQj17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKCl7fX0sQz17fTtcbmZ1bmN0aW9uIEQoYSxiLGQpe3RoaXMucHJvcHM9YTt0aGlzLmNvbnRleHQ9Yjt0aGlzLnJlZnM9Qzt0aGlzLnVwZGF0ZXI9ZHx8Qn1ELnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9O0QucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGEsYil7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYSYmbnVsbCE9YSl0aHJvdyBBKEVycm9yKDg1KSk7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGEsYixcInNldFN0YXRlXCIpfTtELnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihhKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsYSxcImZvcmNlVXBkYXRlXCIpfTtmdW5jdGlvbiBFKCl7fUUucHJvdG90eXBlPUQucHJvdG90eXBlO2Z1bmN0aW9uIEYoYSxiLGQpe3RoaXMucHJvcHM9YTt0aGlzLmNvbnRleHQ9Yjt0aGlzLnJlZnM9Qzt0aGlzLnVwZGF0ZXI9ZHx8Qn12YXIgRz1GLnByb3RvdHlwZT1uZXcgRTtcbkcuY29uc3RydWN0b3I9RjtoKEcsRC5wcm90b3R5cGUpO0cuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIEg9e2N1cnJlbnQ6bnVsbH0sST17c3VzcGVuc2U6bnVsbH0sSj17Y3VycmVudDpudWxsfSxLPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksTD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gTShhLGIsZCl7dmFyIGM9dm9pZCAwLGU9e30sZz1udWxsLGs9bnVsbDtpZihudWxsIT1iKWZvcihjIGluIHZvaWQgMCE9PWIucmVmJiYoaz1iLnJlZiksdm9pZCAwIT09Yi5rZXkmJihnPVwiXCIrYi5rZXkpLGIpSy5jYWxsKGIsYykmJiFMLmhhc093blByb3BlcnR5KGMpJiYoZVtjXT1iW2NdKTt2YXIgZj1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWYpZS5jaGlsZHJlbj1kO2Vsc2UgaWYoMTxmKXtmb3IodmFyIGw9QXJyYXkoZiksbT0wO208ZjttKyspbFttXT1hcmd1bWVudHNbbSsyXTtlLmNoaWxkcmVuPWx9aWYoYSYmYS5kZWZhdWx0UHJvcHMpZm9yKGMgaW4gZj1hLmRlZmF1bHRQcm9wcyxmKXZvaWQgMD09PWVbY10mJihlW2NdPWZbY10pO3JldHVybnskJHR5cGVvZjpwLHR5cGU6YSxrZXk6ZyxyZWY6ayxwcm9wczplLF9vd25lcjpKLmN1cnJlbnR9fVxuZnVuY3Rpb24gZGEoYSxiKXtyZXR1cm57JCR0eXBlb2Y6cCx0eXBlOmEudHlwZSxrZXk6YixyZWY6YS5yZWYscHJvcHM6YS5wcm9wcyxfb3duZXI6YS5fb3duZXJ9fWZ1bmN0aW9uIE4oYSl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PXB9ZnVuY3Rpb24gZXNjYXBlKGEpe3ZhciBiPXtcIj1cIjpcIj0wXCIsXCI6XCI6XCI9MlwifTtyZXR1cm5cIiRcIisoXCJcIithKS5yZXBsYWNlKC9bPTpdL2csZnVuY3Rpb24oYSl7cmV0dXJuIGJbYV19KX12YXIgTz0vXFwvKy9nLFA9W107ZnVuY3Rpb24gUShhLGIsZCxjKXtpZihQLmxlbmd0aCl7dmFyIGU9UC5wb3AoKTtlLnJlc3VsdD1hO2Uua2V5UHJlZml4PWI7ZS5mdW5jPWQ7ZS5jb250ZXh0PWM7ZS5jb3VudD0wO3JldHVybiBlfXJldHVybntyZXN1bHQ6YSxrZXlQcmVmaXg6YixmdW5jOmQsY29udGV4dDpjLGNvdW50OjB9fVxuZnVuY3Rpb24gUihhKXthLnJlc3VsdD1udWxsO2Eua2V5UHJlZml4PW51bGw7YS5mdW5jPW51bGw7YS5jb250ZXh0PW51bGw7YS5jb3VudD0wOzEwPlAubGVuZ3RoJiZQLnB1c2goYSl9XG5mdW5jdGlvbiBTKGEsYixkLGMpe3ZhciBlPXR5cGVvZiBhO2lmKFwidW5kZWZpbmVkXCI9PT1lfHxcImJvb2xlYW5cIj09PWUpYT1udWxsO3ZhciBnPSExO2lmKG51bGw9PT1hKWc9ITA7ZWxzZSBzd2l0Y2goZSl7Y2FzZSBcInN0cmluZ1wiOmNhc2UgXCJudW1iZXJcIjpnPSEwO2JyZWFrO2Nhc2UgXCJvYmplY3RcIjpzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBwOmNhc2UgcTpnPSEwfX1pZihnKXJldHVybiBkKGMsYSxcIlwiPT09Yj9cIi5cIitUKGEsMCk6YiksMTtnPTA7Yj1cIlwiPT09Yj9cIi5cIjpiK1wiOlwiO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKHZhciBrPTA7azxhLmxlbmd0aDtrKyspe2U9YVtrXTt2YXIgZj1iK1QoZSxrKTtnKz1TKGUsZixkLGMpfWVsc2UgaWYobnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYT9mPW51bGw6KGY9eiYmYVt6XXx8YVtcIkBAaXRlcmF0b3JcIl0sZj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgZj9mOm51bGwpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmKWZvcihhPWYuY2FsbChhKSxrPVxuMDshKGU9YS5uZXh0KCkpLmRvbmU7KWU9ZS52YWx1ZSxmPWIrVChlLGsrKyksZys9UyhlLGYsZCxjKTtlbHNlIGlmKFwib2JqZWN0XCI9PT1lKXRocm93IGQ9XCJcIithLEEoRXJyb3IoMzEpLFwiW29iamVjdCBPYmplY3RdXCI9PT1kP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoYSkuam9pbihcIiwgXCIpK1wifVwiOmQsXCJcIik7cmV0dXJuIGd9ZnVuY3Rpb24gVShhLGIsZCl7cmV0dXJuIG51bGw9PWE/MDpTKGEsXCJcIixiLGQpfWZ1bmN0aW9uIFQoYSxiKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZudWxsIT1hLmtleT9lc2NhcGUoYS5rZXkpOmIudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIGVhKGEsYil7YS5mdW5jLmNhbGwoYS5jb250ZXh0LGIsYS5jb3VudCsrKX1cbmZ1bmN0aW9uIGZhKGEsYixkKXt2YXIgYz1hLnJlc3VsdCxlPWEua2V5UHJlZml4O2E9YS5mdW5jLmNhbGwoYS5jb250ZXh0LGIsYS5jb3VudCsrKTtBcnJheS5pc0FycmF5KGEpP1YoYSxjLGQsZnVuY3Rpb24oYSl7cmV0dXJuIGF9KTpudWxsIT1hJiYoTihhKSYmKGE9ZGEoYSxlKyghYS5rZXl8fGImJmIua2V5PT09YS5rZXk/XCJcIjooXCJcIithLmtleSkucmVwbGFjZShPLFwiJCYvXCIpK1wiL1wiKStkKSksYy5wdXNoKGEpKX1mdW5jdGlvbiBWKGEsYixkLGMsZSl7dmFyIGc9XCJcIjtudWxsIT1kJiYoZz0oXCJcIitkKS5yZXBsYWNlKE8sXCIkJi9cIikrXCIvXCIpO2I9UShiLGcsYyxlKTtVKGEsZmEsYik7UihiKX1mdW5jdGlvbiBXKCl7dmFyIGE9SC5jdXJyZW50O2lmKG51bGw9PT1hKXRocm93IEEoRXJyb3IoMzIxKSk7cmV0dXJuIGF9XG52YXIgWD17Q2hpbGRyZW46e21hcDpmdW5jdGlvbihhLGIsZCl7aWYobnVsbD09YSlyZXR1cm4gYTt2YXIgYz1bXTtWKGEsYyxudWxsLGIsZCk7cmV0dXJuIGN9LGZvckVhY2g6ZnVuY3Rpb24oYSxiLGQpe2lmKG51bGw9PWEpcmV0dXJuIGE7Yj1RKG51bGwsbnVsbCxiLGQpO1UoYSxlYSxiKTtSKGIpfSxjb3VudDpmdW5jdGlvbihhKXtyZXR1cm4gVShhLGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LG51bGwpfSx0b0FycmF5OmZ1bmN0aW9uKGEpe3ZhciBiPVtdO1YoYSxiLG51bGwsZnVuY3Rpb24oYSl7cmV0dXJuIGF9KTtyZXR1cm4gYn0sb25seTpmdW5jdGlvbihhKXtpZighTihhKSl0aHJvdyBBKEVycm9yKDE0MykpO3JldHVybiBhfX0sY3JlYXRlUmVmOmZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19LENvbXBvbmVudDpELFB1cmVDb21wb25lbnQ6RixjcmVhdGVDb250ZXh0OmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YiYmKGI9bnVsbCk7YT17JCR0eXBlb2Y6dyxfY2FsY3VsYXRlQ2hhbmdlZEJpdHM6Yixcbl9jdXJyZW50VmFsdWU6YSxfY3VycmVudFZhbHVlMjphLF90aHJlYWRDb3VudDowLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbH07YS5Qcm92aWRlcj17JCR0eXBlb2Y6dixfY29udGV4dDphfTtyZXR1cm4gYS5Db25zdW1lcj1hfSxmb3J3YXJkUmVmOmZ1bmN0aW9uKGEpe3JldHVybnskJHR5cGVvZjp4LHJlbmRlcjphfX0sbGF6eTpmdW5jdGlvbihhKXtyZXR1cm57JCR0eXBlb2Y6Y2EsX2N0b3I6YSxfc3RhdHVzOi0xLF9yZXN1bHQ6bnVsbH19LG1lbW86ZnVuY3Rpb24oYSxiKXtyZXR1cm57JCR0eXBlb2Y6YmEsdHlwZTphLGNvbXBhcmU6dm9pZCAwPT09Yj9udWxsOmJ9fSx1c2VDYWxsYmFjazpmdW5jdGlvbihhLGIpe3JldHVybiBXKCkudXNlQ2FsbGJhY2soYSxiKX0sdXNlQ29udGV4dDpmdW5jdGlvbihhLGIpe3JldHVybiBXKCkudXNlQ29udGV4dChhLGIpfSx1c2VFZmZlY3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVygpLnVzZUVmZmVjdChhLGIpfSx1c2VJbXBlcmF0aXZlSGFuZGxlOmZ1bmN0aW9uKGEsXG5iLGQpe3JldHVybiBXKCkudXNlSW1wZXJhdGl2ZUhhbmRsZShhLGIsZCl9LHVzZURlYnVnVmFsdWU6ZnVuY3Rpb24oKXt9LHVzZUxheW91dEVmZmVjdDpmdW5jdGlvbihhLGIpe3JldHVybiBXKCkudXNlTGF5b3V0RWZmZWN0KGEsYil9LHVzZU1lbW86ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVygpLnVzZU1lbW8oYSxiKX0sdXNlUmVkdWNlcjpmdW5jdGlvbihhLGIsZCl7cmV0dXJuIFcoKS51c2VSZWR1Y2VyKGEsYixkKX0sdXNlUmVmOmZ1bmN0aW9uKGEpe3JldHVybiBXKCkudXNlUmVmKGEpfSx1c2VTdGF0ZTpmdW5jdGlvbihhKXtyZXR1cm4gVygpLnVzZVN0YXRlKGEpfSxGcmFnbWVudDpyLFByb2ZpbGVyOnUsU3RyaWN0TW9kZTp0LFN1c3BlbnNlOnksdW5zdGFibGVfU3VzcGVuc2VMaXN0OmFhLGNyZWF0ZUVsZW1lbnQ6TSxjbG9uZUVsZW1lbnQ6ZnVuY3Rpb24oYSxiLGQpe2lmKG51bGw9PT1hfHx2b2lkIDA9PT1hKXRocm93IEEoRXJyb3IoMjY3KSxhKTt2YXIgYz12b2lkIDAsZT1cbmgoe30sYS5wcm9wcyksZz1hLmtleSxrPWEucmVmLGY9YS5fb3duZXI7aWYobnVsbCE9Yil7dm9pZCAwIT09Yi5yZWYmJihrPWIucmVmLGY9Si5jdXJyZW50KTt2b2lkIDAhPT1iLmtleSYmKGc9XCJcIitiLmtleSk7dmFyIGw9dm9pZCAwO2EudHlwZSYmYS50eXBlLmRlZmF1bHRQcm9wcyYmKGw9YS50eXBlLmRlZmF1bHRQcm9wcyk7Zm9yKGMgaW4gYilLLmNhbGwoYixjKSYmIUwuaGFzT3duUHJvcGVydHkoYykmJihlW2NdPXZvaWQgMD09PWJbY10mJnZvaWQgMCE9PWw/bFtjXTpiW2NdKX1jPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09YyllLmNoaWxkcmVuPWQ7ZWxzZSBpZigxPGMpe2w9QXJyYXkoYyk7Zm9yKHZhciBtPTA7bTxjO20rKylsW21dPWFyZ3VtZW50c1ttKzJdO2UuY2hpbGRyZW49bH1yZXR1cm57JCR0eXBlb2Y6cCx0eXBlOmEudHlwZSxrZXk6ZyxyZWY6ayxwcm9wczplLF9vd25lcjpmfX0sY3JlYXRlRmFjdG9yeTpmdW5jdGlvbihhKXt2YXIgYj1NLmJpbmQobnVsbCxhKTtcbmIudHlwZT1hO3JldHVybiBifSxpc1ZhbGlkRWxlbWVudDpOLHZlcnNpb246XCIxNi45LjBcIix1bnN0YWJsZV93aXRoU3VzcGVuc2VDb25maWc6ZnVuY3Rpb24oYSxiKXt2YXIgZD1JLnN1c3BlbnNlO0kuc3VzcGVuc2U9dm9pZCAwPT09Yj9udWxsOmI7dHJ5e2EoKX1maW5hbGx5e0kuc3VzcGVuc2U9ZH19LF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOntSZWFjdEN1cnJlbnREaXNwYXRjaGVyOkgsUmVhY3RDdXJyZW50QmF0Y2hDb25maWc6SSxSZWFjdEN1cnJlbnRPd25lcjpKLElzU29tZVJlbmRlcmVyQWN0aW5nOntjdXJyZW50OiExfSxhc3NpZ246aH19LFk9e2RlZmF1bHQ6WH0sWj1ZJiZYfHxZO21vZHVsZS5leHBvcnRzPVouZGVmYXVsdHx8WjtcbiIsIi8qKiBAbGljZW5zZSBSZWFjdCB2MTYuOS4wXG4gKiByZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4vKlxuIE1vZGVybml6ciAzLjAuMHByZSAoQ3VzdG9tIEJ1aWxkKSB8IE1JVFxuKi9cbid1c2Ugc3RyaWN0Jzt2YXIgYWE9cmVxdWlyZShcInJlYWN0XCIpLG09cmVxdWlyZShcIm9iamVjdC1hc3NpZ25cIikscT1yZXF1aXJlKFwic2NoZWR1bGVyXCIpO2Z1bmN0aW9uIHQoYSl7Zm9yKHZhciBiPWEubWVzc2FnZSxjPVwiaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9XCIrYixkPTE7ZDxhcmd1bWVudHMubGVuZ3RoO2QrKyljKz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tkXSk7YS5tZXNzYWdlPVwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiK2IrXCI7IHZpc2l0IFwiK2MrXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiBcIjtyZXR1cm4gYX1pZighYWEpdGhyb3cgdChFcnJvcigyMjcpKTt2YXIgYmE9bnVsbCxjYT17fTtcbmZ1bmN0aW9uIGRhKCl7aWYoYmEpZm9yKHZhciBhIGluIGNhKXt2YXIgYj1jYVthXSxjPWJhLmluZGV4T2YoYSk7aWYoISgtMTxjKSl0aHJvdyB0KEVycm9yKDk2KSxhKTtpZighZWFbY10pe2lmKCFiLmV4dHJhY3RFdmVudHMpdGhyb3cgdChFcnJvcig5NyksYSk7ZWFbY109YjtjPWIuZXZlbnRUeXBlcztmb3IodmFyIGQgaW4gYyl7dmFyIGU9dm9pZCAwO3ZhciBmPWNbZF0saD1iLGc9ZDtpZihmYS5oYXNPd25Qcm9wZXJ0eShnKSl0aHJvdyB0KEVycm9yKDk5KSxnKTtmYVtnXT1mO3ZhciBrPWYucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7aWYoayl7Zm9yKGUgaW4gaylrLmhhc093blByb3BlcnR5KGUpJiZoYShrW2VdLGgsZyk7ZT0hMH1lbHNlIGYucmVnaXN0cmF0aW9uTmFtZT8oaGEoZi5yZWdpc3RyYXRpb25OYW1lLGgsZyksZT0hMCk6ZT0hMTtpZighZSl0aHJvdyB0KEVycm9yKDk4KSxkLGEpO319fX1cbmZ1bmN0aW9uIGhhKGEsYixjKXtpZihpYVthXSl0aHJvdyB0KEVycm9yKDEwMCksYSk7aWFbYV09YjtqYVthXT1iLmV2ZW50VHlwZXNbY10uZGVwZW5kZW5jaWVzfXZhciBlYT1bXSxmYT17fSxpYT17fSxqYT17fTtmdW5jdGlvbiBrYShhLGIsYyxkLGUsZixoLGcsayl7dmFyIGw9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDMpO3RyeXtiLmFwcGx5KGMsbCl9Y2F0Y2gobil7dGhpcy5vbkVycm9yKG4pfX12YXIgbGE9ITEsbWE9bnVsbCxuYT0hMSxvYT1udWxsLHBhPXtvbkVycm9yOmZ1bmN0aW9uKGEpe2xhPSEwO21hPWF9fTtmdW5jdGlvbiBxYShhLGIsYyxkLGUsZixoLGcsayl7bGE9ITE7bWE9bnVsbDtrYS5hcHBseShwYSxhcmd1bWVudHMpfVxuZnVuY3Rpb24gcmEoYSxiLGMsZCxlLGYsaCxnLGspe3FhLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihsYSl7aWYobGEpe3ZhciBsPW1hO2xhPSExO21hPW51bGx9ZWxzZSB0aHJvdyB0KEVycm9yKDE5OCkpO25hfHwobmE9ITAsb2E9bCl9fXZhciBzYT1udWxsLHRhPW51bGwsdmE9bnVsbDtmdW5jdGlvbiB3YShhLGIsYyl7dmFyIGQ9YS50eXBlfHxcInVua25vd24tZXZlbnRcIjthLmN1cnJlbnRUYXJnZXQ9dmEoYyk7cmEoZCxiLHZvaWQgMCxhKTthLmN1cnJlbnRUYXJnZXQ9bnVsbH1mdW5jdGlvbiB4YShhLGIpe2lmKG51bGw9PWIpdGhyb3cgdChFcnJvcigzMCkpO2lmKG51bGw9PWEpcmV0dXJuIGI7aWYoQXJyYXkuaXNBcnJheShhKSl7aWYoQXJyYXkuaXNBcnJheShiKSlyZXR1cm4gYS5wdXNoLmFwcGx5KGEsYiksYTthLnB1c2goYik7cmV0dXJuIGF9cmV0dXJuIEFycmF5LmlzQXJyYXkoYik/W2FdLmNvbmNhdChiKTpbYSxiXX1cbmZ1bmN0aW9uIHlhKGEsYixjKXtBcnJheS5pc0FycmF5KGEpP2EuZm9yRWFjaChiLGMpOmEmJmIuY2FsbChjLGEpfXZhciB6YT1udWxsO2Z1bmN0aW9uIEFhKGEpe2lmKGEpe3ZhciBiPWEuX2Rpc3BhdGNoTGlzdGVuZXJzLGM9YS5fZGlzcGF0Y2hJbnN0YW5jZXM7aWYoQXJyYXkuaXNBcnJheShiKSlmb3IodmFyIGQ9MDtkPGIubGVuZ3RoJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO2QrKyl3YShhLGJbZF0sY1tkXSk7ZWxzZSBiJiZ3YShhLGIsYyk7YS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbDthLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsO2EuaXNQZXJzaXN0ZW50KCl8fGEuY29uc3RydWN0b3IucmVsZWFzZShhKX19ZnVuY3Rpb24gQmEoYSl7bnVsbCE9PWEmJih6YT14YSh6YSxhKSk7YT16YTt6YT1udWxsO2lmKGEpe3lhKGEsQWEpO2lmKHphKXRocm93IHQoRXJyb3IoOTUpKTtpZihuYSl0aHJvdyBhPW9hLG5hPSExLG9hPW51bGwsYTt9fVxudmFyIENhPXtpbmplY3RFdmVudFBsdWdpbk9yZGVyOmZ1bmN0aW9uKGEpe2lmKGJhKXRocm93IHQoRXJyb3IoMTAxKSk7YmE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSk7ZGEoKX0saW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOmZ1bmN0aW9uKGEpe3ZhciBiPSExLGM7Zm9yKGMgaW4gYSlpZihhLmhhc093blByb3BlcnR5KGMpKXt2YXIgZD1hW2NdO2lmKCFjYS5oYXNPd25Qcm9wZXJ0eShjKXx8Y2FbY10hPT1kKXtpZihjYVtjXSl0aHJvdyB0KEVycm9yKDEwMiksYyk7Y2FbY109ZDtiPSEwfX1iJiZkYSgpfX07XG5mdW5jdGlvbiBEYShhLGIpe3ZhciBjPWEuc3RhdGVOb2RlO2lmKCFjKXJldHVybiBudWxsO3ZhciBkPXNhKGMpO2lmKCFkKXJldHVybiBudWxsO2M9ZFtiXTthOnN3aXRjaChiKXtjYXNlIFwib25DbGlja1wiOmNhc2UgXCJvbkNsaWNrQ2FwdHVyZVwiOmNhc2UgXCJvbkRvdWJsZUNsaWNrXCI6Y2FzZSBcIm9uRG91YmxlQ2xpY2tDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VEb3duXCI6Y2FzZSBcIm9uTW91c2VEb3duQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlTW92ZVwiOmNhc2UgXCJvbk1vdXNlTW92ZUNhcHR1cmVcIjpjYXNlIFwib25Nb3VzZVVwXCI6Y2FzZSBcIm9uTW91c2VVcENhcHR1cmVcIjooZD0hZC5kaXNhYmxlZCl8fChhPWEudHlwZSxkPSEoXCJidXR0b25cIj09PWF8fFwiaW5wdXRcIj09PWF8fFwic2VsZWN0XCI9PT1hfHxcInRleHRhcmVhXCI9PT1hKSk7YT0hZDticmVhayBhO2RlZmF1bHQ6YT0hMX1pZihhKXJldHVybiBudWxsO2lmKGMmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBjKXRocm93IHQoRXJyb3IoMjMxKSxiLHR5cGVvZiBjKTtcbnJldHVybiBjfXZhciBFYT1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxGYT1cIl9fcmVhY3RJbnRlcm5hbEluc3RhbmNlJFwiK0VhLEdhPVwiX19yZWFjdEV2ZW50SGFuZGxlcnMkXCIrRWE7ZnVuY3Rpb24gSGEoYSl7aWYoYVtGYV0pcmV0dXJuIGFbRmFdO2Zvcig7IWFbRmFdOylpZihhLnBhcmVudE5vZGUpYT1hLnBhcmVudE5vZGU7ZWxzZSByZXR1cm4gbnVsbDthPWFbRmFdO3JldHVybiA1PT09YS50YWd8fDY9PT1hLnRhZz9hOm51bGx9ZnVuY3Rpb24gSWEoYSl7YT1hW0ZhXTtyZXR1cm4hYXx8NSE9PWEudGFnJiY2IT09YS50YWc/bnVsbDphfWZ1bmN0aW9uIEphKGEpe2lmKDU9PT1hLnRhZ3x8Nj09PWEudGFnKXJldHVybiBhLnN0YXRlTm9kZTt0aHJvdyB0KEVycm9yKDMzKSk7fWZ1bmN0aW9uIEthKGEpe3JldHVybiBhW0dhXXx8bnVsbH1mdW5jdGlvbiBMYShhKXtkbyBhPWEucmV0dXJuO3doaWxlKGEmJjUhPT1hLnRhZyk7cmV0dXJuIGE/YTpudWxsfVxuZnVuY3Rpb24gTWEoYSxiLGMpe2lmKGI9RGEoYSxjLmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW2JdKSljLl9kaXNwYXRjaExpc3RlbmVycz14YShjLl9kaXNwYXRjaExpc3RlbmVycyxiKSxjLl9kaXNwYXRjaEluc3RhbmNlcz14YShjLl9kaXNwYXRjaEluc3RhbmNlcyxhKX1mdW5jdGlvbiBOYShhKXtpZihhJiZhLmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXtmb3IodmFyIGI9YS5fdGFyZ2V0SW5zdCxjPVtdO2I7KWMucHVzaChiKSxiPUxhKGIpO2ZvcihiPWMubGVuZ3RoOzA8Yi0tOylNYShjW2JdLFwiY2FwdHVyZWRcIixhKTtmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKU1hKGNbYl0sXCJidWJibGVkXCIsYSl9fVxuZnVuY3Rpb24gT2EoYSxiLGMpe2EmJmMmJmMuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSYmKGI9RGEoYSxjLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpKSYmKGMuX2Rpc3BhdGNoTGlzdGVuZXJzPXhhKGMuX2Rpc3BhdGNoTGlzdGVuZXJzLGIpLGMuX2Rpc3BhdGNoSW5zdGFuY2VzPXhhKGMuX2Rpc3BhdGNoSW5zdGFuY2VzLGEpKX1mdW5jdGlvbiBQYShhKXthJiZhLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJk9hKGEuX3RhcmdldEluc3QsbnVsbCxhKX1mdW5jdGlvbiBRYShhKXt5YShhLE5hKX12YXIgUmE9IShcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvd3x8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnR8fFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuZnVuY3Rpb24gU2EoYSxiKXt2YXIgYz17fTtjW2EudG9Mb3dlckNhc2UoKV09Yi50b0xvd2VyQ2FzZSgpO2NbXCJXZWJraXRcIithXT1cIndlYmtpdFwiK2I7Y1tcIk1velwiK2FdPVwibW96XCIrYjtyZXR1cm4gY312YXIgVGE9e2FuaW1hdGlvbmVuZDpTYShcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uRW5kXCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpTYShcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uSXRlcmF0aW9uXCIpLGFuaW1hdGlvbnN0YXJ0OlNhKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25TdGFydFwiKSx0cmFuc2l0aW9uZW5kOlNhKFwiVHJhbnNpdGlvblwiLFwiVHJhbnNpdGlvbkVuZFwiKX0sVWE9e30sVmE9e307XG5SYSYmKFZhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikuc3R5bGUsXCJBbmltYXRpb25FdmVudFwiaW4gd2luZG93fHwoZGVsZXRlIFRhLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIFRhLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIFRhLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksXCJUcmFuc2l0aW9uRXZlbnRcImluIHdpbmRvd3x8ZGVsZXRlIFRhLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbik7ZnVuY3Rpb24gV2EoYSl7aWYoVWFbYV0pcmV0dXJuIFVhW2FdO2lmKCFUYVthXSlyZXR1cm4gYTt2YXIgYj1UYVthXSxjO2ZvcihjIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShjKSYmYyBpbiBWYSlyZXR1cm4gVWFbYV09YltjXTtyZXR1cm4gYX1cbnZhciBYYT1XYShcImFuaW1hdGlvbmVuZFwiKSxZYT1XYShcImFuaW1hdGlvbml0ZXJhdGlvblwiKSxaYT1XYShcImFuaW1hdGlvbnN0YXJ0XCIpLGFiPVdhKFwidHJhbnNpdGlvbmVuZFwiKSxiYj1cImFib3J0IGNhbnBsYXkgY2FucGxheXRocm91Z2ggZHVyYXRpb25jaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgbG9hZGVkZGF0YSBsb2FkZWRtZXRhZGF0YSBsb2Fkc3RhcnQgcGF1c2UgcGxheSBwbGF5aW5nIHByb2dyZXNzIHJhdGVjaGFuZ2Ugc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdXNwZW5kIHRpbWV1cGRhdGUgdm9sdW1lY2hhbmdlIHdhaXRpbmdcIi5zcGxpdChcIiBcIiksY2I9bnVsbCxkYj1udWxsLGViPW51bGw7XG5mdW5jdGlvbiBmYigpe2lmKGViKXJldHVybiBlYjt2YXIgYSxiPWRiLGM9Yi5sZW5ndGgsZCxlPVwidmFsdWVcImluIGNiP2NiLnZhbHVlOmNiLnRleHRDb250ZW50LGY9ZS5sZW5ndGg7Zm9yKGE9MDthPGMmJmJbYV09PT1lW2FdO2ErKyk7dmFyIGg9Yy1hO2ZvcihkPTE7ZDw9aCYmYltjLWRdPT09ZVtmLWRdO2QrKyk7cmV0dXJuIGViPWUuc2xpY2UoYSwxPGQ/MS1kOnZvaWQgMCl9ZnVuY3Rpb24gZ2IoKXtyZXR1cm4hMH1mdW5jdGlvbiBoYigpe3JldHVybiExfVxuZnVuY3Rpb24geShhLGIsYyxkKXt0aGlzLmRpc3BhdGNoQ29uZmlnPWE7dGhpcy5fdGFyZ2V0SW5zdD1iO3RoaXMubmF0aXZlRXZlbnQ9YzthPXRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO2Zvcih2YXIgZSBpbiBhKWEuaGFzT3duUHJvcGVydHkoZSkmJigoYj1hW2VdKT90aGlzW2VdPWIoYyk6XCJ0YXJnZXRcIj09PWU/dGhpcy50YXJnZXQ9ZDp0aGlzW2VdPWNbZV0pO3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPShudWxsIT1jLmRlZmF1bHRQcmV2ZW50ZWQ/Yy5kZWZhdWx0UHJldmVudGVkOiExPT09Yy5yZXR1cm5WYWx1ZSk/Z2I6aGI7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1oYjtyZXR1cm4gdGhpc31cbm0oeS5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBhPXRoaXMubmF0aXZlRXZlbnQ7YSYmKGEucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOlwidW5rbm93blwiIT09dHlwZW9mIGEucmV0dXJuVmFsdWUmJihhLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1nYil9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMubmF0aXZlRXZlbnQ7YSYmKGEuc3RvcFByb3BhZ2F0aW9uP2Euc3RvcFByb3BhZ2F0aW9uKCk6XCJ1bmtub3duXCIhPT10eXBlb2YgYS5jYW5jZWxCdWJibGUmJihhLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1nYil9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt0aGlzLmlzUGVyc2lzdGVudD1nYn0saXNQZXJzaXN0ZW50OmhiLGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZSxcbmI7Zm9yKGIgaW4gYSl0aGlzW2JdPW51bGw7dGhpcy5uYXRpdmVFdmVudD10aGlzLl90YXJnZXRJbnN0PXRoaXMuZGlzcGF0Y2hDb25maWc9bnVsbDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWhiO3RoaXMuX2Rpc3BhdGNoSW5zdGFuY2VzPXRoaXMuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGx9fSk7eS5JbnRlcmZhY2U9e3R5cGU6bnVsbCx0YXJnZXQ6bnVsbCxjdXJyZW50VGFyZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGV2ZW50UGhhc2U6bnVsbCxidWJibGVzOm51bGwsY2FuY2VsYWJsZTpudWxsLHRpbWVTdGFtcDpmdW5jdGlvbihhKXtyZXR1cm4gYS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6bnVsbCxpc1RydXN0ZWQ6bnVsbH07XG55LmV4dGVuZD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7fWZ1bmN0aW9uIGMoKXtyZXR1cm4gZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIGQ9dGhpcztiLnByb3RvdHlwZT1kLnByb3RvdHlwZTt2YXIgZT1uZXcgYjttKGUsYy5wcm90b3R5cGUpO2MucHJvdG90eXBlPWU7Yy5wcm90b3R5cGUuY29uc3RydWN0b3I9YztjLkludGVyZmFjZT1tKHt9LGQuSW50ZXJmYWNlLGEpO2MuZXh0ZW5kPWQuZXh0ZW5kO2liKGMpO3JldHVybiBjfTtpYih5KTtmdW5jdGlvbiBqYihhLGIsYyxkKXtpZih0aGlzLmV2ZW50UG9vbC5sZW5ndGgpe3ZhciBlPXRoaXMuZXZlbnRQb29sLnBvcCgpO3RoaXMuY2FsbChlLGEsYixjLGQpO3JldHVybiBlfXJldHVybiBuZXcgdGhpcyhhLGIsYyxkKX1cbmZ1bmN0aW9uIGtiKGEpe2lmKCEoYSBpbnN0YW5jZW9mIHRoaXMpKXRocm93IHQoRXJyb3IoMjc5KSk7YS5kZXN0cnVjdG9yKCk7MTA+dGhpcy5ldmVudFBvb2wubGVuZ3RoJiZ0aGlzLmV2ZW50UG9vbC5wdXNoKGEpfWZ1bmN0aW9uIGliKGEpe2EuZXZlbnRQb29sPVtdO2EuZ2V0UG9vbGVkPWpiO2EucmVsZWFzZT1rYn12YXIgbGI9eS5leHRlbmQoe2RhdGE6bnVsbH0pLG1iPXkuZXh0ZW5kKHtkYXRhOm51bGx9KSxuYj1bOSwxMywyNywzMl0sb2I9UmEmJlwiQ29tcG9zaXRpb25FdmVudFwiaW4gd2luZG93LHBiPW51bGw7UmEmJlwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCYmKHBiPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7XG52YXIgcWI9UmEmJlwiVGV4dEV2ZW50XCJpbiB3aW5kb3cmJiFwYixzYj1SYSYmKCFvYnx8cGImJjg8cGImJjExPj1wYiksdGI9U3RyaW5nLmZyb21DaGFyQ29kZSgzMiksdWI9e2JlZm9yZUlucHV0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpcIm9uQmVmb3JlSW5wdXRcIixjYXB0dXJlZDpcIm9uQmVmb3JlSW5wdXRDYXB0dXJlXCJ9LGRlcGVuZGVuY2llczpbXCJjb21wb3NpdGlvbmVuZFwiLFwia2V5cHJlc3NcIixcInRleHRJbnB1dFwiLFwicGFzdGVcIl19LGNvbXBvc2l0aW9uRW5kOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpcIm9uQ29tcG9zaXRpb25FbmRcIixjYXB0dXJlZDpcIm9uQ29tcG9zaXRpb25FbmRDYXB0dXJlXCJ9LGRlcGVuZGVuY2llczpcImJsdXIgY29tcG9zaXRpb25lbmQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIil9LGNvbXBvc2l0aW9uU3RhcnQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOlwib25Db21wb3NpdGlvblN0YXJ0XCIsXG5jYXB0dXJlZDpcIm9uQ29tcG9zaXRpb25TdGFydENhcHR1cmVcIn0sZGVwZW5kZW5jaWVzOlwiYmx1ciBjb21wb3NpdGlvbnN0YXJ0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpfSxjb21wb3NpdGlvblVwZGF0ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6XCJvbkNvbXBvc2l0aW9uVXBkYXRlXCIsY2FwdHVyZWQ6XCJvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6XCJibHVyIGNvbXBvc2l0aW9udXBkYXRlIGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpfX0sdmI9ITE7XG5mdW5jdGlvbiB3YihhLGIpe3N3aXRjaChhKXtjYXNlIFwia2V5dXBcIjpyZXR1cm4tMSE9PW5iLmluZGV4T2YoYi5rZXlDb2RlKTtjYXNlIFwia2V5ZG93blwiOnJldHVybiAyMjkhPT1iLmtleUNvZGU7Y2FzZSBcImtleXByZXNzXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJibHVyXCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24geGIoYSl7YT1hLmRldGFpbDtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJlwiZGF0YVwiaW4gYT9hLmRhdGE6bnVsbH12YXIgeWI9ITE7ZnVuY3Rpb24gQWIoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIHhiKGIpO2Nhc2UgXCJrZXlwcmVzc1wiOmlmKDMyIT09Yi53aGljaClyZXR1cm4gbnVsbDt2Yj0hMDtyZXR1cm4gdGI7Y2FzZSBcInRleHRJbnB1dFwiOnJldHVybiBhPWIuZGF0YSxhPT09dGImJnZiP251bGw6YTtkZWZhdWx0OnJldHVybiBudWxsfX1cbmZ1bmN0aW9uIEJiKGEsYil7aWYoeWIpcmV0dXJuXCJjb21wb3NpdGlvbmVuZFwiPT09YXx8IW9iJiZ3YihhLGIpPyhhPWZiKCksZWI9ZGI9Y2I9bnVsbCx5Yj0hMSxhKTpudWxsO3N3aXRjaChhKXtjYXNlIFwicGFzdGVcIjpyZXR1cm4gbnVsbDtjYXNlIFwia2V5cHJlc3NcIjppZighKGIuY3RybEtleXx8Yi5hbHRLZXl8fGIubWV0YUtleSl8fGIuY3RybEtleSYmYi5hbHRLZXkpe2lmKGIuY2hhciYmMTxiLmNoYXIubGVuZ3RoKXJldHVybiBiLmNoYXI7aWYoYi53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShiLndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpyZXR1cm4gc2ImJlwia29cIiE9PWIubG9jYWxlP251bGw6Yi5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fVxudmFyIENiPXtldmVudFR5cGVzOnViLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dm9pZCAwO3ZhciBmPXZvaWQgMDtpZihvYiliOntzd2l0Y2goYSl7Y2FzZSBcImNvbXBvc2l0aW9uc3RhcnRcIjplPXViLmNvbXBvc2l0aW9uU3RhcnQ7YnJlYWsgYjtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjplPXViLmNvbXBvc2l0aW9uRW5kO2JyZWFrIGI7Y2FzZSBcImNvbXBvc2l0aW9udXBkYXRlXCI6ZT11Yi5jb21wb3NpdGlvblVwZGF0ZTticmVhayBifWU9dm9pZCAwfWVsc2UgeWI/d2IoYSxjKSYmKGU9dWIuY29tcG9zaXRpb25FbmQpOlwia2V5ZG93blwiPT09YSYmMjI5PT09Yy5rZXlDb2RlJiYoZT11Yi5jb21wb3NpdGlvblN0YXJ0KTtlPyhzYiYmXCJrb1wiIT09Yy5sb2NhbGUmJih5Ynx8ZSE9PXViLmNvbXBvc2l0aW9uU3RhcnQ/ZT09PXViLmNvbXBvc2l0aW9uRW5kJiZ5YiYmKGY9ZmIoKSk6KGNiPWQsZGI9XCJ2YWx1ZVwiaW4gY2I/Y2IudmFsdWU6Y2IudGV4dENvbnRlbnQseWI9XG4hMCkpLGU9bGIuZ2V0UG9vbGVkKGUsYixjLGQpLGY/ZS5kYXRhPWY6KGY9eGIoYyksbnVsbCE9PWYmJihlLmRhdGE9ZikpLFFhKGUpLGY9ZSk6Zj1udWxsOyhhPXFiP0FiKGEsYyk6QmIoYSxjKSk/KGI9bWIuZ2V0UG9vbGVkKHViLmJlZm9yZUlucHV0LGIsYyxkKSxiLmRhdGE9YSxRYShiKSk6Yj1udWxsO3JldHVybiBudWxsPT09Zj9iOm51bGw9PT1iP2Y6W2YsYl19fSxEYj1udWxsLEViPW51bGwsRmI9bnVsbDtmdW5jdGlvbiBHYihhKXtpZihhPXRhKGEpKXtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgRGIpdGhyb3cgdChFcnJvcigyODApKTt2YXIgYj1zYShhLnN0YXRlTm9kZSk7RGIoYS5zdGF0ZU5vZGUsYS50eXBlLGIpfX1mdW5jdGlvbiBIYihhKXtFYj9GYj9GYi5wdXNoKGEpOkZiPVthXTpFYj1hfWZ1bmN0aW9uIEliKCl7aWYoRWIpe3ZhciBhPUViLGI9RmI7RmI9RWI9bnVsbDtHYihhKTtpZihiKWZvcihhPTA7YTxiLmxlbmd0aDthKyspR2IoYlthXSl9fVxuZnVuY3Rpb24gSmIoYSxiKXtyZXR1cm4gYShiKX1mdW5jdGlvbiBLYihhLGIsYyxkKXtyZXR1cm4gYShiLGMsZCl9ZnVuY3Rpb24gTGIoKXt9dmFyIE1iPUpiLE5iPSExO2Z1bmN0aW9uIE9iKCl7aWYobnVsbCE9PUVifHxudWxsIT09RmIpTGIoKSxJYigpfXZhciBQYj17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCxcImRhdGV0aW1lLWxvY2FsXCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtmdW5jdGlvbiBRYihhKXt2YXIgYj1hJiZhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCJpbnB1dFwiPT09Yj8hIVBiW2EudHlwZV06XCJ0ZXh0YXJlYVwiPT09Yj8hMDohMX1cbmZ1bmN0aW9uIFJiKGEpe2E9YS50YXJnZXR8fGEuc3JjRWxlbWVudHx8d2luZG93O2EuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJihhPWEuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpO3JldHVybiAzPT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YX1mdW5jdGlvbiBTYihhKXtpZighUmEpcmV0dXJuITE7YT1cIm9uXCIrYTt2YXIgYj1hIGluIGRvY3VtZW50O2J8fChiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksYi5zZXRBdHRyaWJ1dGUoYSxcInJldHVybjtcIiksYj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgYlthXSk7cmV0dXJuIGJ9ZnVuY3Rpb24gVGIoYSl7dmFyIGI9YS50eXBlO3JldHVybihhPWEubm9kZU5hbWUpJiZcImlucHV0XCI9PT1hLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1ifHxcInJhZGlvXCI9PT1iKX1cbmZ1bmN0aW9uIFViKGEpe3ZhciBiPVRiKGEpP1wiY2hlY2tlZFwiOlwidmFsdWVcIixjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYiksZD1cIlwiK2FbYl07aWYoIWEuaGFzT3duUHJvcGVydHkoYikmJlwidW5kZWZpbmVkXCIhPT10eXBlb2YgYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGMuZ2V0JiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5zZXQpe3ZhciBlPWMuZ2V0LGY9Yy5zZXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihhKXtkPVwiXCIrYTtmLmNhbGwodGhpcyxhKX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHtlbnVtZXJhYmxlOmMuZW51bWVyYWJsZX0pO3JldHVybntnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBkfSxzZXRWYWx1ZTpmdW5jdGlvbihhKXtkPVwiXCIrYX0sc3RvcFRyYWNraW5nOmZ1bmN0aW9uKCl7YS5fdmFsdWVUcmFja2VyPVxubnVsbDtkZWxldGUgYVtiXX19fX1mdW5jdGlvbiBWYihhKXthLl92YWx1ZVRyYWNrZXJ8fChhLl92YWx1ZVRyYWNrZXI9VWIoYSkpfWZ1bmN0aW9uIFdiKGEpe2lmKCFhKXJldHVybiExO3ZhciBiPWEuX3ZhbHVlVHJhY2tlcjtpZighYilyZXR1cm4hMDt2YXIgYz1iLmdldFZhbHVlKCk7dmFyIGQ9XCJcIjthJiYoZD1UYihhKT9hLmNoZWNrZWQ/XCJ0cnVlXCI6XCJmYWxzZVwiOmEudmFsdWUpO2E9ZDtyZXR1cm4gYSE9PWM/KGIuc2V0VmFsdWUoYSksITApOiExfXZhciBYYj1hYS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtYYi5oYXNPd25Qcm9wZXJ0eShcIlJlYWN0Q3VycmVudERpc3BhdGNoZXJcIil8fChYYi5SZWFjdEN1cnJlbnREaXNwYXRjaGVyPXtjdXJyZW50Om51bGx9KTtYYi5oYXNPd25Qcm9wZXJ0eShcIlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnXCIpfHwoWGIuUmVhY3RDdXJyZW50QmF0Y2hDb25maWc9e3N1c3BlbnNlOm51bGx9KTtcbnZhciBZYj0vXiguKilbXFxcXFxcL10vLEI9XCJmdW5jdGlvblwiPT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcixaYj1CP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLCRiPUI/U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKTo2MDEwNixhYz1CP1N5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKTo2MDEwNyxiYz1CP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCxjYz1CP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKTo2MDExNCxkYz1CP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKTo2MDEwOSxlYz1CP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLGZjPUI/U3ltYm9sLmZvcihcInJlYWN0LmNvbmN1cnJlbnRfbW9kZVwiKTo2MDExMSxnYz1CP1N5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKTo2MDExMixoYz1CP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxpYz1CP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpOlxuNjAxMjAsamM9Qj9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSxrYz1CP1N5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpOjYwMTE2O0ImJlN5bWJvbC5mb3IoXCJyZWFjdC5mdW5kYW1lbnRhbFwiKTtCJiZTeW1ib2wuZm9yKFwicmVhY3QucmVzcG9uZGVyXCIpO3ZhciBsYz1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gbWMoYSl7aWYobnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYSlyZXR1cm4gbnVsbDthPWxjJiZhW2xjXXx8YVtcIkBAaXRlcmF0b3JcIl07cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGE/YTpudWxsfVxuZnVuY3Rpb24gb2MoYSl7aWYobnVsbD09YSlyZXR1cm4gbnVsbDtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSlyZXR1cm4gYS5kaXNwbGF5TmFtZXx8YS5uYW1lfHxudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYSlyZXR1cm4gYTtzd2l0Y2goYSl7Y2FzZSBhYzpyZXR1cm5cIkZyYWdtZW50XCI7Y2FzZSAkYjpyZXR1cm5cIlBvcnRhbFwiO2Nhc2UgY2M6cmV0dXJuXCJQcm9maWxlclwiO2Nhc2UgYmM6cmV0dXJuXCJTdHJpY3RNb2RlXCI7Y2FzZSBoYzpyZXR1cm5cIlN1c3BlbnNlXCI7Y2FzZSBpYzpyZXR1cm5cIlN1c3BlbnNlTGlzdFwifWlmKFwib2JqZWN0XCI9PT10eXBlb2YgYSlzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBlYzpyZXR1cm5cIkNvbnRleHQuQ29uc3VtZXJcIjtjYXNlIGRjOnJldHVyblwiQ29udGV4dC5Qcm92aWRlclwiO2Nhc2UgZ2M6dmFyIGI9YS5yZW5kZXI7Yj1iLmRpc3BsYXlOYW1lfHxiLm5hbWV8fFwiXCI7cmV0dXJuIGEuZGlzcGxheU5hbWV8fChcIlwiIT09Yj9cIkZvcndhcmRSZWYoXCIrYitcIilcIjpcblwiRm9yd2FyZFJlZlwiKTtjYXNlIGpjOnJldHVybiBvYyhhLnR5cGUpO2Nhc2Uga2M6aWYoYT0xPT09YS5fc3RhdHVzP2EuX3Jlc3VsdDpudWxsKXJldHVybiBvYyhhKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBwYyhhKXt2YXIgYj1cIlwiO2Rve2E6c3dpdGNoKGEudGFnKXtjYXNlIDM6Y2FzZSA0OmNhc2UgNjpjYXNlIDc6Y2FzZSAxMDpjYXNlIDk6dmFyIGM9XCJcIjticmVhayBhO2RlZmF1bHQ6dmFyIGQ9YS5fZGVidWdPd25lcixlPWEuX2RlYnVnU291cmNlLGY9b2MoYS50eXBlKTtjPW51bGw7ZCYmKGM9b2MoZC50eXBlKSk7ZD1mO2Y9XCJcIjtlP2Y9XCIgKGF0IFwiK2UuZmlsZU5hbWUucmVwbGFjZShZYixcIlwiKStcIjpcIitlLmxpbmVOdW1iZXIrXCIpXCI6YyYmKGY9XCIgKGNyZWF0ZWQgYnkgXCIrYytcIilcIik7Yz1cIlxcbiAgICBpbiBcIisoZHx8XCJVbmtub3duXCIpK2Z9Yis9YzthPWEucmV0dXJufXdoaWxlKGEpO3JldHVybiBifVxudmFyIHFjPS9eWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXVs6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRFxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQwXSokLyxyYz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHNjPXt9LHRjPXt9O1xuZnVuY3Rpb24gdWMoYSl7aWYocmMuY2FsbCh0YyxhKSlyZXR1cm4hMDtpZihyYy5jYWxsKHNjLGEpKXJldHVybiExO2lmKHFjLnRlc3QoYSkpcmV0dXJuIHRjW2FdPSEwO3NjW2FdPSEwO3JldHVybiExfWZ1bmN0aW9uIHZjKGEsYixjLGQpe2lmKG51bGwhPT1jJiYwPT09Yy50eXBlKXJldHVybiExO3N3aXRjaCh0eXBlb2YgYil7Y2FzZSBcImZ1bmN0aW9uXCI6Y2FzZSBcInN5bWJvbFwiOnJldHVybiEwO2Nhc2UgXCJib29sZWFuXCI6aWYoZClyZXR1cm4hMTtpZihudWxsIT09YylyZXR1cm4hYy5hY2NlcHRzQm9vbGVhbnM7YT1hLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCw1KTtyZXR1cm5cImRhdGEtXCIhPT1hJiZcImFyaWEtXCIhPT1hO2RlZmF1bHQ6cmV0dXJuITF9fVxuZnVuY3Rpb24gd2MoYSxiLGMsZCl7aWYobnVsbD09PWJ8fFwidW5kZWZpbmVkXCI9PT10eXBlb2YgYnx8dmMoYSxiLGMsZCkpcmV0dXJuITA7aWYoZClyZXR1cm4hMTtpZihudWxsIT09Yylzd2l0Y2goYy50eXBlKXtjYXNlIDM6cmV0dXJuIWI7Y2FzZSA0OnJldHVybiExPT09YjtjYXNlIDU6cmV0dXJuIGlzTmFOKGIpO2Nhc2UgNjpyZXR1cm4gaXNOYU4oYil8fDE+Yn1yZXR1cm4hMX1mdW5jdGlvbiBEKGEsYixjLGQsZSxmKXt0aGlzLmFjY2VwdHNCb29sZWFucz0yPT09Ynx8Mz09PWJ8fDQ9PT1iO3RoaXMuYXR0cmlidXRlTmFtZT1kO3RoaXMuYXR0cmlidXRlTmFtZXNwYWNlPWU7dGhpcy5tdXN0VXNlUHJvcGVydHk9Yzt0aGlzLnByb3BlcnR5TmFtZT1hO3RoaXMudHlwZT1iO3RoaXMuc2FuaXRpemVVUkw9Zn12YXIgRj17fTtcblwiY2hpbGRyZW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgZGVmYXVsdFZhbHVlIGRlZmF1bHRDaGVja2VkIGlubmVySFRNTCBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIHN0eWxlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7RlthXT1uZXcgRChhLDAsITEsYSxudWxsLCExKX0pO1tbXCJhY2NlcHRDaGFyc2V0XCIsXCJhY2NlcHQtY2hhcnNldFwiXSxbXCJjbGFzc05hbWVcIixcImNsYXNzXCJdLFtcImh0bWxGb3JcIixcImZvclwiXSxbXCJodHRwRXF1aXZcIixcImh0dHAtZXF1aXZcIl1dLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YVswXTtGW2JdPW5ldyBEKGIsMSwhMSxhWzFdLG51bGwsITEpfSk7W1wiY29udGVudEVkaXRhYmxlXCIsXCJkcmFnZ2FibGVcIixcInNwZWxsQ2hlY2tcIixcInZhbHVlXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7RlthXT1uZXcgRChhLDIsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEpfSk7XG5bXCJhdXRvUmV2ZXJzZVwiLFwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFwiLFwiZm9jdXNhYmxlXCIsXCJwcmVzZXJ2ZUFscGhhXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7RlthXT1uZXcgRChhLDIsITEsYSxudWxsLCExKX0pO1wiYWxsb3dGdWxsU2NyZWVuIGFzeW5jIGF1dG9Gb2N1cyBhdXRvUGxheSBjb250cm9scyBkZWZhdWx0IGRlZmVyIGRpc2FibGVkIGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7RlthXT1uZXcgRChhLDMsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEpfSk7XG5bXCJjaGVja2VkXCIsXCJtdWx0aXBsZVwiLFwibXV0ZWRcIixcInNlbGVjdGVkXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7RlthXT1uZXcgRChhLDMsITAsYSxudWxsLCExKX0pO1tcImNhcHR1cmVcIixcImRvd25sb2FkXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7RlthXT1uZXcgRChhLDQsITEsYSxudWxsLCExKX0pO1tcImNvbHNcIixcInJvd3NcIixcInNpemVcIixcInNwYW5cIl0uZm9yRWFjaChmdW5jdGlvbihhKXtGW2FdPW5ldyBEKGEsNiwhMSxhLG51bGwsITEpfSk7W1wicm93U3BhblwiLFwic3RhcnRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXtGW2FdPW5ldyBEKGEsNSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSl9KTt2YXIgeGM9L1tcXC06XShbYS16XSkvZztmdW5jdGlvbiB5YyhhKXtyZXR1cm4gYVsxXS50b1VwcGVyQ2FzZSgpfVxuXCJhY2NlbnQtaGVpZ2h0IGFsaWdubWVudC1iYXNlbGluZSBhcmFiaWMtZm9ybSBiYXNlbGluZS1zaGlmdCBjYXAtaGVpZ2h0IGNsaXAtcGF0aCBjbGlwLXJ1bGUgY29sb3ItaW50ZXJwb2xhdGlvbiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMgY29sb3ItcHJvZmlsZSBjb2xvci1yZW5kZXJpbmcgZG9taW5hbnQtYmFzZWxpbmUgZW5hYmxlLWJhY2tncm91bmQgZmlsbC1vcGFjaXR5IGZpbGwtcnVsZSBmbG9vZC1jb2xvciBmbG9vZC1vcGFjaXR5IGZvbnQtZmFtaWx5IGZvbnQtc2l6ZSBmb250LXNpemUtYWRqdXN0IGZvbnQtc3RyZXRjaCBmb250LXN0eWxlIGZvbnQtdmFyaWFudCBmb250LXdlaWdodCBnbHlwaC1uYW1lIGdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwgZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwgaG9yaXotYWR2LXggaG9yaXotb3JpZ2luLXggaW1hZ2UtcmVuZGVyaW5nIGxldHRlci1zcGFjaW5nIGxpZ2h0aW5nLWNvbG9yIG1hcmtlci1lbmQgbWFya2VyLW1pZCBtYXJrZXItc3RhcnQgb3ZlcmxpbmUtcG9zaXRpb24gb3ZlcmxpbmUtdGhpY2tuZXNzIHBhaW50LW9yZGVyIHBhbm9zZS0xIHBvaW50ZXItZXZlbnRzIHJlbmRlcmluZy1pbnRlbnQgc2hhcGUtcmVuZGVyaW5nIHN0b3AtY29sb3Igc3RvcC1vcGFjaXR5IHN0cmlrZXRocm91Z2gtcG9zaXRpb24gc3RyaWtldGhyb3VnaC10aGlja25lc3Mgc3Ryb2tlLWRhc2hhcnJheSBzdHJva2UtZGFzaG9mZnNldCBzdHJva2UtbGluZWNhcCBzdHJva2UtbGluZWpvaW4gc3Ryb2tlLW1pdGVybGltaXQgc3Ryb2tlLW9wYWNpdHkgc3Ryb2tlLXdpZHRoIHRleHQtYW5jaG9yIHRleHQtZGVjb3JhdGlvbiB0ZXh0LXJlbmRlcmluZyB1bmRlcmxpbmUtcG9zaXRpb24gdW5kZXJsaW5lLXRoaWNrbmVzcyB1bmljb2RlLWJpZGkgdW5pY29kZS1yYW5nZSB1bml0cy1wZXItZW0gdi1hbHBoYWJldGljIHYtaGFuZ2luZyB2LWlkZW9ncmFwaGljIHYtbWF0aGVtYXRpY2FsIHZlY3Rvci1lZmZlY3QgdmVydC1hZHYteSB2ZXJ0LW9yaWdpbi14IHZlcnQtb3JpZ2luLXkgd29yZC1zcGFjaW5nIHdyaXRpbmctbW9kZSB4bWxuczp4bGluayB4LWhlaWdodFwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZSh4YyxcbnljKTtGW2JdPW5ldyBEKGIsMSwhMSxhLG51bGwsITEpfSk7XCJ4bGluazphY3R1YXRlIHhsaW5rOmFyY3JvbGUgeGxpbms6cm9sZSB4bGluazpzaG93IHhsaW5rOnRpdGxlIHhsaW5rOnR5cGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoeGMseWMpO0ZbYl09bmV3IEQoYiwxLCExLGEsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsITEpfSk7W1wieG1sOmJhc2VcIixcInhtbDpsYW5nXCIsXCJ4bWw6c3BhY2VcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoeGMseWMpO0ZbYl09bmV3IEQoYiwxLCExLGEsXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIiwhMSl9KTtbXCJ0YWJJbmRleFwiLFwiY3Jvc3NPcmlnaW5cIl0uZm9yRWFjaChmdW5jdGlvbihhKXtGW2FdPW5ldyBEKGEsMSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSl9KTtcbkYueGxpbmtIcmVmPW5ldyBEKFwieGxpbmtIcmVmXCIsMSwhMSxcInhsaW5rOmhyZWZcIixcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwhMCk7W1wic3JjXCIsXCJocmVmXCIsXCJhY3Rpb25cIixcImZvcm1BY3Rpb25cIl0uZm9yRWFjaChmdW5jdGlvbihhKXtGW2FdPW5ldyBEKGEsMSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMCl9KTtcbmZ1bmN0aW9uIHpjKGEsYixjLGQpe3ZhciBlPUYuaGFzT3duUHJvcGVydHkoYik/RltiXTpudWxsO3ZhciBmPW51bGwhPT1lPzA9PT1lLnR5cGU6ZD8hMTohKDI8Yi5sZW5ndGgpfHxcIm9cIiE9PWJbMF0mJlwiT1wiIT09YlswXXx8XCJuXCIhPT1iWzFdJiZcIk5cIiE9PWJbMV0/ITE6ITA7Znx8KHdjKGIsYyxlLGQpJiYoYz1udWxsKSxkfHxudWxsPT09ZT91YyhiKSYmKG51bGw9PT1jP2EucmVtb3ZlQXR0cmlidXRlKGIpOmEuc2V0QXR0cmlidXRlKGIsXCJcIitjKSk6ZS5tdXN0VXNlUHJvcGVydHk/YVtlLnByb3BlcnR5TmFtZV09bnVsbD09PWM/Mz09PWUudHlwZT8hMTpcIlwiOmM6KGI9ZS5hdHRyaWJ1dGVOYW1lLGQ9ZS5hdHRyaWJ1dGVOYW1lc3BhY2UsbnVsbD09PWM/YS5yZW1vdmVBdHRyaWJ1dGUoYik6KGU9ZS50eXBlLGM9Mz09PWV8fDQ9PT1lJiYhMD09PWM/XCJcIjpcIlwiK2MsZD9hLnNldEF0dHJpYnV0ZU5TKGQsYixjKTphLnNldEF0dHJpYnV0ZShiLGMpKSkpfVxuZnVuY3Rpb24gQWMoYSl7c3dpdGNoKHR5cGVvZiBhKXtjYXNlIFwiYm9vbGVhblwiOmNhc2UgXCJudW1iZXJcIjpjYXNlIFwib2JqZWN0XCI6Y2FzZSBcInN0cmluZ1wiOmNhc2UgXCJ1bmRlZmluZWRcIjpyZXR1cm4gYTtkZWZhdWx0OnJldHVyblwiXCJ9fWZ1bmN0aW9uIEJjKGEsYil7dmFyIGM9Yi5jaGVja2VkO3JldHVybiBtKHt9LGIse2RlZmF1bHRDaGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOnZvaWQgMCxjaGVja2VkOm51bGwhPWM/YzphLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWR9KX1cbmZ1bmN0aW9uIENjKGEsYil7dmFyIGM9bnVsbD09Yi5kZWZhdWx0VmFsdWU/XCJcIjpiLmRlZmF1bHRWYWx1ZSxkPW51bGwhPWIuY2hlY2tlZD9iLmNoZWNrZWQ6Yi5kZWZhdWx0Q2hlY2tlZDtjPUFjKG51bGwhPWIudmFsdWU/Yi52YWx1ZTpjKTthLl93cmFwcGVyU3RhdGU9e2luaXRpYWxDaGVja2VkOmQsaW5pdGlhbFZhbHVlOmMsY29udHJvbGxlZDpcImNoZWNrYm94XCI9PT1iLnR5cGV8fFwicmFkaW9cIj09PWIudHlwZT9udWxsIT1iLmNoZWNrZWQ6bnVsbCE9Yi52YWx1ZX19ZnVuY3Rpb24gRGMoYSxiKXtiPWIuY2hlY2tlZDtudWxsIT1iJiZ6YyhhLFwiY2hlY2tlZFwiLGIsITEpfVxuZnVuY3Rpb24gRWMoYSxiKXtEYyhhLGIpO3ZhciBjPUFjKGIudmFsdWUpLGQ9Yi50eXBlO2lmKG51bGwhPWMpaWYoXCJudW1iZXJcIj09PWQpe2lmKDA9PT1jJiZcIlwiPT09YS52YWx1ZXx8YS52YWx1ZSE9YylhLnZhbHVlPVwiXCIrY31lbHNlIGEudmFsdWUhPT1cIlwiK2MmJihhLnZhbHVlPVwiXCIrYyk7ZWxzZSBpZihcInN1Ym1pdFwiPT09ZHx8XCJyZXNldFwiPT09ZCl7YS5yZW1vdmVBdHRyaWJ1dGUoXCJ2YWx1ZVwiKTtyZXR1cm59Yi5oYXNPd25Qcm9wZXJ0eShcInZhbHVlXCIpP0ZjKGEsYi50eXBlLGMpOmIuaGFzT3duUHJvcGVydHkoXCJkZWZhdWx0VmFsdWVcIikmJkZjKGEsYi50eXBlLEFjKGIuZGVmYXVsdFZhbHVlKSk7bnVsbD09Yi5jaGVja2VkJiZudWxsIT1iLmRlZmF1bHRDaGVja2VkJiYoYS5kZWZhdWx0Q2hlY2tlZD0hIWIuZGVmYXVsdENoZWNrZWQpfVxuZnVuY3Rpb24gR2MoYSxiLGMpe2lmKGIuaGFzT3duUHJvcGVydHkoXCJ2YWx1ZVwiKXx8Yi5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRWYWx1ZVwiKSl7dmFyIGQ9Yi50eXBlO2lmKCEoXCJzdWJtaXRcIiE9PWQmJlwicmVzZXRcIiE9PWR8fHZvaWQgMCE9PWIudmFsdWUmJm51bGwhPT1iLnZhbHVlKSlyZXR1cm47Yj1cIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU7Y3x8Yj09PWEudmFsdWV8fChhLnZhbHVlPWIpO2EuZGVmYXVsdFZhbHVlPWJ9Yz1hLm5hbWU7XCJcIiE9PWMmJihhLm5hbWU9XCJcIik7YS5kZWZhdWx0Q2hlY2tlZD0hYS5kZWZhdWx0Q2hlY2tlZDthLmRlZmF1bHRDaGVja2VkPSEhYS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkO1wiXCIhPT1jJiYoYS5uYW1lPWMpfVxuZnVuY3Rpb24gRmMoYSxiLGMpe2lmKFwibnVtYmVyXCIhPT1ifHxhLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PWEpbnVsbD09Yz9hLmRlZmF1bHRWYWx1ZT1cIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU6YS5kZWZhdWx0VmFsdWUhPT1cIlwiK2MmJihhLmRlZmF1bHRWYWx1ZT1cIlwiK2MpfXZhciBIYz17Y2hhbmdlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpcIm9uQ2hhbmdlXCIsY2FwdHVyZWQ6XCJvbkNoYW5nZUNhcHR1cmVcIn0sZGVwZW5kZW5jaWVzOlwiYmx1ciBjaGFuZ2UgY2xpY2sgZm9jdXMgaW5wdXQga2V5ZG93biBrZXl1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIil9fTtmdW5jdGlvbiBJYyhhLGIsYyl7YT15LmdldFBvb2xlZChIYy5jaGFuZ2UsYSxiLGMpO2EudHlwZT1cImNoYW5nZVwiO0hiKGMpO1FhKGEpO3JldHVybiBhfXZhciBKYz1udWxsLEtjPW51bGw7ZnVuY3Rpb24gTGMoYSl7QmEoYSl9XG5mdW5jdGlvbiBNYyhhKXt2YXIgYj1KYShhKTtpZihXYihiKSlyZXR1cm4gYX1mdW5jdGlvbiBOYyhhLGIpe2lmKFwiY2hhbmdlXCI9PT1hKXJldHVybiBifXZhciBPYz0hMTtSYSYmKE9jPVNiKFwiaW5wdXRcIikmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PGRvY3VtZW50LmRvY3VtZW50TW9kZSkpO2Z1bmN0aW9uIFBjKCl7SmMmJihKYy5kZXRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixRYyksS2M9SmM9bnVsbCl9ZnVuY3Rpb24gUWMoYSl7aWYoXCJ2YWx1ZVwiPT09YS5wcm9wZXJ0eU5hbWUmJk1jKEtjKSlpZihhPUljKEtjLGEsUmIoYSkpLE5iKUJhKGEpO2Vsc2V7TmI9ITA7dHJ5e0piKExjLGEpfWZpbmFsbHl7TmI9ITEsT2IoKX19fWZ1bmN0aW9uIFJjKGEsYixjKXtcImZvY3VzXCI9PT1hPyhQYygpLEpjPWIsS2M9YyxKYy5hdHRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixRYykpOlwiYmx1clwiPT09YSYmUGMoKX1cbmZ1bmN0aW9uIFNjKGEpe2lmKFwic2VsZWN0aW9uY2hhbmdlXCI9PT1hfHxcImtleXVwXCI9PT1hfHxcImtleWRvd25cIj09PWEpcmV0dXJuIE1jKEtjKX1mdW5jdGlvbiBUYyhhLGIpe2lmKFwiY2xpY2tcIj09PWEpcmV0dXJuIE1jKGIpfWZ1bmN0aW9uIFVjKGEsYil7aWYoXCJpbnB1dFwiPT09YXx8XCJjaGFuZ2VcIj09PWEpcmV0dXJuIE1jKGIpfVxudmFyIFZjPXtldmVudFR5cGVzOkhjLF9pc0lucHV0RXZlbnRTdXBwb3J0ZWQ6T2MsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1iP0phKGIpOndpbmRvdyxmPXZvaWQgMCxoPXZvaWQgMCxnPWUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcInNlbGVjdFwiPT09Z3x8XCJpbnB1dFwiPT09ZyYmXCJmaWxlXCI9PT1lLnR5cGU/Zj1OYzpRYihlKT9PYz9mPVVjOihmPVNjLGg9UmMpOihnPWUubm9kZU5hbWUpJiZcImlucHV0XCI9PT1nLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1lLnR5cGV8fFwicmFkaW9cIj09PWUudHlwZSkmJihmPVRjKTtpZihmJiYoZj1mKGEsYikpKXJldHVybiBJYyhmLGMsZCk7aCYmaChhLGUsYik7XCJibHVyXCI9PT1hJiYoYT1lLl93cmFwcGVyU3RhdGUpJiZhLmNvbnRyb2xsZWQmJlwibnVtYmVyXCI9PT1lLnR5cGUmJkZjKGUsXCJudW1iZXJcIixlLnZhbHVlKX19LFdjPXkuZXh0ZW5kKHt2aWV3Om51bGwsZGV0YWlsOm51bGx9KSxYYz17QWx0OlwiYWx0S2V5XCIsXG5Db250cm9sOlwiY3RybEtleVwiLE1ldGE6XCJtZXRhS2V5XCIsU2hpZnQ6XCJzaGlmdEtleVwifTtmdW5jdGlvbiBZYyhhKXt2YXIgYj10aGlzLm5hdGl2ZUV2ZW50O3JldHVybiBiLmdldE1vZGlmaWVyU3RhdGU/Yi5nZXRNb2RpZmllclN0YXRlKGEpOihhPVhjW2FdKT8hIWJbYV06ITF9ZnVuY3Rpb24gWmMoKXtyZXR1cm4gWWN9XG52YXIgJGM9MCxhZD0wLGJkPSExLGNkPSExLGRkPVdjLmV4dGVuZCh7c2NyZWVuWDpudWxsLHNjcmVlblk6bnVsbCxjbGllbnRYOm51bGwsY2xpZW50WTpudWxsLHBhZ2VYOm51bGwscGFnZVk6bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTpaYyxidXR0b246bnVsbCxidXR0b25zOm51bGwscmVsYXRlZFRhcmdldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZWxhdGVkVGFyZ2V0fHwoYS5mcm9tRWxlbWVudD09PWEuc3JjRWxlbWVudD9hLnRvRWxlbWVudDphLmZyb21FbGVtZW50KX0sbW92ZW1lbnRYOmZ1bmN0aW9uKGEpe2lmKFwibW92ZW1lbnRYXCJpbiBhKXJldHVybiBhLm1vdmVtZW50WDt2YXIgYj0kYzskYz1hLnNjcmVlblg7cmV0dXJuIGJkP1wibW91c2Vtb3ZlXCI9PT1hLnR5cGU/YS5zY3JlZW5YLWI6MDooYmQ9ITAsMCl9LG1vdmVtZW50WTpmdW5jdGlvbihhKXtpZihcIm1vdmVtZW50WVwiaW4gYSlyZXR1cm4gYS5tb3ZlbWVudFk7XG52YXIgYj1hZDthZD1hLnNjcmVlblk7cmV0dXJuIGNkP1wibW91c2Vtb3ZlXCI9PT1hLnR5cGU/YS5zY3JlZW5ZLWI6MDooY2Q9ITAsMCl9fSksZWQ9ZGQuZXh0ZW5kKHtwb2ludGVySWQ6bnVsbCx3aWR0aDpudWxsLGhlaWdodDpudWxsLHByZXNzdXJlOm51bGwsdGFuZ2VudGlhbFByZXNzdXJlOm51bGwsdGlsdFg6bnVsbCx0aWx0WTpudWxsLHR3aXN0Om51bGwscG9pbnRlclR5cGU6bnVsbCxpc1ByaW1hcnk6bnVsbH0pLGZkPXttb3VzZUVudGVyOntyZWdpc3RyYXRpb25OYW1lOlwib25Nb3VzZUVudGVyXCIsZGVwZW5kZW5jaWVzOltcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl19LG1vdXNlTGVhdmU6e3JlZ2lzdHJhdGlvbk5hbWU6XCJvbk1vdXNlTGVhdmVcIixkZXBlbmRlbmNpZXM6W1wibW91c2VvdXRcIixcIm1vdXNlb3ZlclwiXX0scG9pbnRlckVudGVyOntyZWdpc3RyYXRpb25OYW1lOlwib25Qb2ludGVyRW50ZXJcIixkZXBlbmRlbmNpZXM6W1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl19LHBvaW50ZXJMZWF2ZTp7cmVnaXN0cmF0aW9uTmFtZTpcIm9uUG9pbnRlckxlYXZlXCIsXG5kZXBlbmRlbmNpZXM6W1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl19fSxnZD17ZXZlbnRUeXBlczpmZCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPVwibW91c2VvdmVyXCI9PT1hfHxcInBvaW50ZXJvdmVyXCI9PT1hLGY9XCJtb3VzZW91dFwiPT09YXx8XCJwb2ludGVyb3V0XCI9PT1hO2lmKGUmJihjLnJlbGF0ZWRUYXJnZXR8fGMuZnJvbUVsZW1lbnQpfHwhZiYmIWUpcmV0dXJuIG51bGw7ZT1kLndpbmRvdz09PWQ/ZDooZT1kLm93bmVyRG9jdW1lbnQpP2UuZGVmYXVsdFZpZXd8fGUucGFyZW50V2luZG93OndpbmRvdztmPyhmPWIsYj0oYj1jLnJlbGF0ZWRUYXJnZXR8fGMudG9FbGVtZW50KT9IYShiKTpudWxsKTpmPW51bGw7aWYoZj09PWIpcmV0dXJuIG51bGw7dmFyIGg9dm9pZCAwLGc9dm9pZCAwLGs9dm9pZCAwLGw9dm9pZCAwO2lmKFwibW91c2VvdXRcIj09PWF8fFwibW91c2VvdmVyXCI9PT1hKWg9ZGQsZz1mZC5tb3VzZUxlYXZlLGs9ZmQubW91c2VFbnRlcixsPVwibW91c2VcIjtcbmVsc2UgaWYoXCJwb2ludGVyb3V0XCI9PT1hfHxcInBvaW50ZXJvdmVyXCI9PT1hKWg9ZWQsZz1mZC5wb2ludGVyTGVhdmUsaz1mZC5wb2ludGVyRW50ZXIsbD1cInBvaW50ZXJcIjt2YXIgbj1udWxsPT1mP2U6SmEoZik7ZT1udWxsPT1iP2U6SmEoYik7YT1oLmdldFBvb2xlZChnLGYsYyxkKTthLnR5cGU9bCtcImxlYXZlXCI7YS50YXJnZXQ9bjthLnJlbGF0ZWRUYXJnZXQ9ZTtjPWguZ2V0UG9vbGVkKGssYixjLGQpO2MudHlwZT1sK1wiZW50ZXJcIjtjLnRhcmdldD1lO2MucmVsYXRlZFRhcmdldD1uO2Q9YjtpZihmJiZkKWE6e2I9ZjtlPWQ7bD0wO2ZvcihoPWI7aDtoPUxhKGgpKWwrKztoPTA7Zm9yKGs9ZTtrO2s9TGEoaykpaCsrO2Zvcig7MDxsLWg7KWI9TGEoYiksbC0tO2Zvcig7MDxoLWw7KWU9TGEoZSksaC0tO2Zvcig7bC0tOyl7aWYoYj09PWV8fGI9PT1lLmFsdGVybmF0ZSlicmVhayBhO2I9TGEoYik7ZT1MYShlKX1iPW51bGx9ZWxzZSBiPW51bGw7ZT1iO2ZvcihiPVtdO2YmJmYhPT1lOyl7bD1cbmYuYWx0ZXJuYXRlO2lmKG51bGwhPT1sJiZsPT09ZSlicmVhaztiLnB1c2goZik7Zj1MYShmKX1mb3IoZj1bXTtkJiZkIT09ZTspe2w9ZC5hbHRlcm5hdGU7aWYobnVsbCE9PWwmJmw9PT1lKWJyZWFrO2YucHVzaChkKTtkPUxhKGQpfWZvcihkPTA7ZDxiLmxlbmd0aDtkKyspT2EoYltkXSxcImJ1YmJsZWRcIixhKTtmb3IoZD1mLmxlbmd0aDswPGQtLTspT2EoZltkXSxcImNhcHR1cmVkXCIsYyk7cmV0dXJuW2EsY119fTtmdW5jdGlvbiBoZChhLGIpe3JldHVybiBhPT09YiYmKDAhPT1hfHwxL2E9PT0xL2IpfHxhIT09YSYmYiE9PWJ9dmFyIGlkPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5mdW5jdGlvbiBqZChhLGIpe2lmKGhkKGEsYikpcmV0dXJuITA7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhfHxudWxsPT09YXx8XCJvYmplY3RcIiE9PXR5cGVvZiBifHxudWxsPT09YilyZXR1cm4hMTt2YXIgYz1PYmplY3Qua2V5cyhhKSxkPU9iamVjdC5rZXlzKGIpO2lmKGMubGVuZ3RoIT09ZC5sZW5ndGgpcmV0dXJuITE7Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrKylpZighaWQuY2FsbChiLGNbZF0pfHwhaGQoYVtjW2RdXSxiW2NbZF1dKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBrZChhLGIpe3JldHVybntyZXNwb25kZXI6YSxwcm9wczpifX1uZXcgTWFwO25ldyBNYXA7bmV3IFNldDtuZXcgTWFwO1xuZnVuY3Rpb24gbGQoYSl7dmFyIGI9YTtpZihhLmFsdGVybmF0ZSlmb3IoO2IucmV0dXJuOyliPWIucmV0dXJuO2Vsc2V7aWYoMCE9PShiLmVmZmVjdFRhZyYyKSlyZXR1cm4gMTtmb3IoO2IucmV0dXJuOylpZihiPWIucmV0dXJuLDAhPT0oYi5lZmZlY3RUYWcmMikpcmV0dXJuIDF9cmV0dXJuIDM9PT1iLnRhZz8yOjN9ZnVuY3Rpb24gb2QoYSl7aWYoMiE9PWxkKGEpKXRocm93IHQoRXJyb3IoMTg4KSk7fVxuZnVuY3Rpb24gcGQoYSl7dmFyIGI9YS5hbHRlcm5hdGU7aWYoIWIpe2I9bGQoYSk7aWYoMz09PWIpdGhyb3cgdChFcnJvcigxODgpKTtyZXR1cm4gMT09PWI/bnVsbDphfWZvcih2YXIgYz1hLGQ9Yjs7KXt2YXIgZT1jLnJldHVybjtpZihudWxsPT09ZSlicmVhazt2YXIgZj1lLmFsdGVybmF0ZTtpZihudWxsPT09Zil7ZD1lLnJldHVybjtpZihudWxsIT09ZCl7Yz1kO2NvbnRpbnVlfWJyZWFrfWlmKGUuY2hpbGQ9PT1mLmNoaWxkKXtmb3IoZj1lLmNoaWxkO2Y7KXtpZihmPT09YylyZXR1cm4gb2QoZSksYTtpZihmPT09ZClyZXR1cm4gb2QoZSksYjtmPWYuc2libGluZ310aHJvdyB0KEVycm9yKDE4OCkpO31pZihjLnJldHVybiE9PWQucmV0dXJuKWM9ZSxkPWY7ZWxzZXtmb3IodmFyIGg9ITEsZz1lLmNoaWxkO2c7KXtpZihnPT09Yyl7aD0hMDtjPWU7ZD1mO2JyZWFrfWlmKGc9PT1kKXtoPSEwO2Q9ZTtjPWY7YnJlYWt9Zz1nLnNpYmxpbmd9aWYoIWgpe2ZvcihnPWYuY2hpbGQ7Zzspe2lmKGc9PT1cbmMpe2g9ITA7Yz1mO2Q9ZTticmVha31pZihnPT09ZCl7aD0hMDtkPWY7Yz1lO2JyZWFrfWc9Zy5zaWJsaW5nfWlmKCFoKXRocm93IHQoRXJyb3IoMTg5KSk7fX1pZihjLmFsdGVybmF0ZSE9PWQpdGhyb3cgdChFcnJvcigxOTApKTt9aWYoMyE9PWMudGFnKXRocm93IHQoRXJyb3IoMTg4KSk7cmV0dXJuIGMuc3RhdGVOb2RlLmN1cnJlbnQ9PT1jP2E6Yn1mdW5jdGlvbiBxZChhKXthPXBkKGEpO2lmKCFhKXJldHVybiBudWxsO2Zvcih2YXIgYj1hOzspe2lmKDU9PT1iLnRhZ3x8Nj09PWIudGFnKXJldHVybiBiO2lmKGIuY2hpbGQpYi5jaGlsZC5yZXR1cm49YixiPWIuY2hpbGQ7ZWxzZXtpZihiPT09YSlicmVhaztmb3IoOyFiLnNpYmxpbmc7KXtpZighYi5yZXR1cm58fGIucmV0dXJuPT09YSlyZXR1cm4gbnVsbDtiPWIucmV0dXJufWIuc2libGluZy5yZXR1cm49Yi5yZXR1cm47Yj1iLnNpYmxpbmd9fXJldHVybiBudWxsfVxudmFyIHJkPXkuZXh0ZW5kKHthbmltYXRpb25OYW1lOm51bGwsZWxhcHNlZFRpbWU6bnVsbCxwc2V1ZG9FbGVtZW50Om51bGx9KSxzZD15LmV4dGVuZCh7Y2xpcGJvYXJkRGF0YTpmdW5jdGlvbihhKXtyZXR1cm5cImNsaXBib2FyZERhdGFcImluIGE/YS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX0pLHRkPVdjLmV4dGVuZCh7cmVsYXRlZFRhcmdldDpudWxsfSk7ZnVuY3Rpb24gdWQoYSl7dmFyIGI9YS5rZXlDb2RlO1wiY2hhckNvZGVcImluIGE/KGE9YS5jaGFyQ29kZSwwPT09YSYmMTM9PT1iJiYoYT0xMykpOmE9YjsxMD09PWEmJihhPTEzKTtyZXR1cm4gMzI8PWF8fDEzPT09YT9hOjB9XG52YXIgdmQ9e0VzYzpcIkVzY2FwZVwiLFNwYWNlYmFyOlwiIFwiLExlZnQ6XCJBcnJvd0xlZnRcIixVcDpcIkFycm93VXBcIixSaWdodDpcIkFycm93UmlnaHRcIixEb3duOlwiQXJyb3dEb3duXCIsRGVsOlwiRGVsZXRlXCIsV2luOlwiT1NcIixNZW51OlwiQ29udGV4dE1lbnVcIixBcHBzOlwiQ29udGV4dE1lbnVcIixTY3JvbGw6XCJTY3JvbGxMb2NrXCIsTW96UHJpbnRhYmxlS2V5OlwiVW5pZGVudGlmaWVkXCJ9LHdkPXs4OlwiQmFja3NwYWNlXCIsOTpcIlRhYlwiLDEyOlwiQ2xlYXJcIiwxMzpcIkVudGVyXCIsMTY6XCJTaGlmdFwiLDE3OlwiQ29udHJvbFwiLDE4OlwiQWx0XCIsMTk6XCJQYXVzZVwiLDIwOlwiQ2Fwc0xvY2tcIiwyNzpcIkVzY2FwZVwiLDMyOlwiIFwiLDMzOlwiUGFnZVVwXCIsMzQ6XCJQYWdlRG93blwiLDM1OlwiRW5kXCIsMzY6XCJIb21lXCIsMzc6XCJBcnJvd0xlZnRcIiwzODpcIkFycm93VXBcIiwzOTpcIkFycm93UmlnaHRcIiw0MDpcIkFycm93RG93blwiLDQ1OlwiSW5zZXJ0XCIsNDY6XCJEZWxldGVcIiwxMTI6XCJGMVwiLDExMzpcIkYyXCIsMTE0OlwiRjNcIiwxMTU6XCJGNFwiLFxuMTE2OlwiRjVcIiwxMTc6XCJGNlwiLDExODpcIkY3XCIsMTE5OlwiRjhcIiwxMjA6XCJGOVwiLDEyMTpcIkYxMFwiLDEyMjpcIkYxMVwiLDEyMzpcIkYxMlwiLDE0NDpcIk51bUxvY2tcIiwxNDU6XCJTY3JvbGxMb2NrXCIsMjI0OlwiTWV0YVwifSx4ZD1XYy5leHRlbmQoe2tleTpmdW5jdGlvbihhKXtpZihhLmtleSl7dmFyIGI9dmRbYS5rZXldfHxhLmtleTtpZihcIlVuaWRlbnRpZmllZFwiIT09YilyZXR1cm4gYn1yZXR1cm5cImtleXByZXNzXCI9PT1hLnR5cGU/KGE9dWQoYSksMTM9PT1hP1wiRW50ZXJcIjpTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKTpcImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP3dkW2Eua2V5Q29kZV18fFwiVW5pZGVudGlmaWVkXCI6XCJcIn0sbG9jYXRpb246bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwscmVwZWF0Om51bGwsbG9jYWxlOm51bGwsZ2V0TW9kaWZpZXJTdGF0ZTpaYyxjaGFyQ29kZTpmdW5jdGlvbihhKXtyZXR1cm5cImtleXByZXNzXCI9PT1cbmEudHlwZT91ZChhKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5ZG93blwiPT09YS50eXBlfHxcImtleXVwXCI9PT1hLnR5cGU/YS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5cHJlc3NcIj09PWEudHlwZT91ZChhKTpcImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP2Eua2V5Q29kZTowfX0pLHlkPWRkLmV4dGVuZCh7ZGF0YVRyYW5zZmVyOm51bGx9KSx6ZD1XYy5leHRlbmQoe3RvdWNoZXM6bnVsbCx0YXJnZXRUb3VjaGVzOm51bGwsY2hhbmdlZFRvdWNoZXM6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTpaY30pLEFkPXkuZXh0ZW5kKHtwcm9wZXJ0eU5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6bnVsbH0pLEJkPWRkLmV4dGVuZCh7ZGVsdGFYOmZ1bmN0aW9uKGEpe3JldHVyblwiZGVsdGFYXCJpbiBhP2EuZGVsdGFYOlwid2hlZWxEZWx0YVhcImluXG5hPy1hLndoZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5jdGlvbihhKXtyZXR1cm5cImRlbHRhWVwiaW4gYT9hLmRlbHRhWTpcIndoZWVsRGVsdGFZXCJpbiBhPy1hLndoZWVsRGVsdGFZOlwid2hlZWxEZWx0YVwiaW4gYT8tYS53aGVlbERlbHRhOjB9LGRlbHRhWjpudWxsLGRlbHRhTW9kZTpudWxsfSksQ2Q9W1tcImJsdXJcIixcImJsdXJcIiwwXSxbXCJjYW5jZWxcIixcImNhbmNlbFwiLDBdLFtcImNsaWNrXCIsXCJjbGlja1wiLDBdLFtcImNsb3NlXCIsXCJjbG9zZVwiLDBdLFtcImNvbnRleHRtZW51XCIsXCJjb250ZXh0TWVudVwiLDBdLFtcImNvcHlcIixcImNvcHlcIiwwXSxbXCJjdXRcIixcImN1dFwiLDBdLFtcImF1eGNsaWNrXCIsXCJhdXhDbGlja1wiLDBdLFtcImRibGNsaWNrXCIsXCJkb3VibGVDbGlja1wiLDBdLFtcImRyYWdlbmRcIixcImRyYWdFbmRcIiwwXSxbXCJkcmFnc3RhcnRcIixcImRyYWdTdGFydFwiLDBdLFtcImRyb3BcIixcImRyb3BcIiwwXSxbXCJmb2N1c1wiLFwiZm9jdXNcIiwwXSxbXCJpbnB1dFwiLFwiaW5wdXRcIiwwXSxbXCJpbnZhbGlkXCIsXCJpbnZhbGlkXCIsMF0sXG5bXCJrZXlkb3duXCIsXCJrZXlEb3duXCIsMF0sW1wia2V5cHJlc3NcIixcImtleVByZXNzXCIsMF0sW1wia2V5dXBcIixcImtleVVwXCIsMF0sW1wibW91c2Vkb3duXCIsXCJtb3VzZURvd25cIiwwXSxbXCJtb3VzZXVwXCIsXCJtb3VzZVVwXCIsMF0sW1wicGFzdGVcIixcInBhc3RlXCIsMF0sW1wicGF1c2VcIixcInBhdXNlXCIsMF0sW1wicGxheVwiLFwicGxheVwiLDBdLFtcInBvaW50ZXJjYW5jZWxcIixcInBvaW50ZXJDYW5jZWxcIiwwXSxbXCJwb2ludGVyZG93blwiLFwicG9pbnRlckRvd25cIiwwXSxbXCJwb2ludGVydXBcIixcInBvaW50ZXJVcFwiLDBdLFtcInJhdGVjaGFuZ2VcIixcInJhdGVDaGFuZ2VcIiwwXSxbXCJyZXNldFwiLFwicmVzZXRcIiwwXSxbXCJzZWVrZWRcIixcInNlZWtlZFwiLDBdLFtcInN1Ym1pdFwiLFwic3VibWl0XCIsMF0sW1widG91Y2hjYW5jZWxcIixcInRvdWNoQ2FuY2VsXCIsMF0sW1widG91Y2hlbmRcIixcInRvdWNoRW5kXCIsMF0sW1widG91Y2hzdGFydFwiLFwidG91Y2hTdGFydFwiLDBdLFtcInZvbHVtZWNoYW5nZVwiLFwidm9sdW1lQ2hhbmdlXCIsMF0sW1wiZHJhZ1wiLFwiZHJhZ1wiLFxuMV0sW1wiZHJhZ2VudGVyXCIsXCJkcmFnRW50ZXJcIiwxXSxbXCJkcmFnZXhpdFwiLFwiZHJhZ0V4aXRcIiwxXSxbXCJkcmFnbGVhdmVcIixcImRyYWdMZWF2ZVwiLDFdLFtcImRyYWdvdmVyXCIsXCJkcmFnT3ZlclwiLDFdLFtcIm1vdXNlbW92ZVwiLFwibW91c2VNb3ZlXCIsMV0sW1wibW91c2VvdXRcIixcIm1vdXNlT3V0XCIsMV0sW1wibW91c2VvdmVyXCIsXCJtb3VzZU92ZXJcIiwxXSxbXCJwb2ludGVybW92ZVwiLFwicG9pbnRlck1vdmVcIiwxXSxbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyT3V0XCIsMV0sW1wicG9pbnRlcm92ZXJcIixcInBvaW50ZXJPdmVyXCIsMV0sW1wic2Nyb2xsXCIsXCJzY3JvbGxcIiwxXSxbXCJ0b2dnbGVcIixcInRvZ2dsZVwiLDFdLFtcInRvdWNobW92ZVwiLFwidG91Y2hNb3ZlXCIsMV0sW1wid2hlZWxcIixcIndoZWVsXCIsMV0sW1wiYWJvcnRcIixcImFib3J0XCIsMl0sW1hhLFwiYW5pbWF0aW9uRW5kXCIsMl0sW1lhLFwiYW5pbWF0aW9uSXRlcmF0aW9uXCIsMl0sW1phLFwiYW5pbWF0aW9uU3RhcnRcIiwyXSxbXCJjYW5wbGF5XCIsXCJjYW5QbGF5XCIsMl0sW1wiY2FucGxheXRocm91Z2hcIixcblwiY2FuUGxheVRocm91Z2hcIiwyXSxbXCJkdXJhdGlvbmNoYW5nZVwiLFwiZHVyYXRpb25DaGFuZ2VcIiwyXSxbXCJlbXB0aWVkXCIsXCJlbXB0aWVkXCIsMl0sW1wiZW5jcnlwdGVkXCIsXCJlbmNyeXB0ZWRcIiwyXSxbXCJlbmRlZFwiLFwiZW5kZWRcIiwyXSxbXCJlcnJvclwiLFwiZXJyb3JcIiwyXSxbXCJnb3Rwb2ludGVyY2FwdHVyZVwiLFwiZ290UG9pbnRlckNhcHR1cmVcIiwyXSxbXCJsb2FkXCIsXCJsb2FkXCIsMl0sW1wibG9hZGVkZGF0YVwiLFwibG9hZGVkRGF0YVwiLDJdLFtcImxvYWRlZG1ldGFkYXRhXCIsXCJsb2FkZWRNZXRhZGF0YVwiLDJdLFtcImxvYWRzdGFydFwiLFwibG9hZFN0YXJ0XCIsMl0sW1wibG9zdHBvaW50ZXJjYXB0dXJlXCIsXCJsb3N0UG9pbnRlckNhcHR1cmVcIiwyXSxbXCJwbGF5aW5nXCIsXCJwbGF5aW5nXCIsMl0sW1wicHJvZ3Jlc3NcIixcInByb2dyZXNzXCIsMl0sW1wic2Vla2luZ1wiLFwic2Vla2luZ1wiLDJdLFtcInN0YWxsZWRcIixcInN0YWxsZWRcIiwyXSxbXCJzdXNwZW5kXCIsXCJzdXNwZW5kXCIsMl0sW1widGltZXVwZGF0ZVwiLFwidGltZVVwZGF0ZVwiLFxuMl0sW2FiLFwidHJhbnNpdGlvbkVuZFwiLDJdLFtcIndhaXRpbmdcIixcIndhaXRpbmdcIiwyXV0sRGQ9e30sRWQ9e30sRmQ9MDtmb3IoO0ZkPENkLmxlbmd0aDtGZCsrKXt2YXIgR2Q9Q2RbRmRdLEhkPUdkWzBdLElkPUdkWzFdLEpkPUdkWzJdLEtkPVwib25cIisoSWRbMF0udG9VcHBlckNhc2UoKStJZC5zbGljZSgxKSksTGQ9e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOktkLGNhcHR1cmVkOktkK1wiQ2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6W0hkXSxldmVudFByaW9yaXR5OkpkfTtEZFtJZF09TGQ7RWRbSGRdPUxkfVxudmFyIE1kPXtldmVudFR5cGVzOkRkLGdldEV2ZW50UHJpb3JpdHk6ZnVuY3Rpb24oYSl7YT1FZFthXTtyZXR1cm4gdm9pZCAwIT09YT9hLmV2ZW50UHJpb3JpdHk6Mn0sZXh0cmFjdEV2ZW50czpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1FZFthXTtpZighZSlyZXR1cm4gbnVsbDtzd2l0Y2goYSl7Y2FzZSBcImtleXByZXNzXCI6aWYoMD09PXVkKGMpKXJldHVybiBudWxsO2Nhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXVwXCI6YT14ZDticmVhaztjYXNlIFwiYmx1clwiOmNhc2UgXCJmb2N1c1wiOmE9dGQ7YnJlYWs7Y2FzZSBcImNsaWNrXCI6aWYoMj09PWMuYnV0dG9uKXJldHVybiBudWxsO2Nhc2UgXCJhdXhjbGlja1wiOmNhc2UgXCJkYmxjbGlja1wiOmNhc2UgXCJtb3VzZWRvd25cIjpjYXNlIFwibW91c2Vtb3ZlXCI6Y2FzZSBcIm1vdXNldXBcIjpjYXNlIFwibW91c2VvdXRcIjpjYXNlIFwibW91c2VvdmVyXCI6Y2FzZSBcImNvbnRleHRtZW51XCI6YT1kZDticmVhaztjYXNlIFwiZHJhZ1wiOmNhc2UgXCJkcmFnZW5kXCI6Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnZXhpdFwiOmNhc2UgXCJkcmFnbGVhdmVcIjpjYXNlIFwiZHJhZ292ZXJcIjpjYXNlIFwiZHJhZ3N0YXJ0XCI6Y2FzZSBcImRyb3BcIjphPVxueWQ7YnJlYWs7Y2FzZSBcInRvdWNoY2FuY2VsXCI6Y2FzZSBcInRvdWNoZW5kXCI6Y2FzZSBcInRvdWNobW92ZVwiOmNhc2UgXCJ0b3VjaHN0YXJ0XCI6YT16ZDticmVhaztjYXNlIFhhOmNhc2UgWWE6Y2FzZSBaYTphPXJkO2JyZWFrO2Nhc2UgYWI6YT1BZDticmVhaztjYXNlIFwic2Nyb2xsXCI6YT1XYzticmVhaztjYXNlIFwid2hlZWxcIjphPUJkO2JyZWFrO2Nhc2UgXCJjb3B5XCI6Y2FzZSBcImN1dFwiOmNhc2UgXCJwYXN0ZVwiOmE9c2Q7YnJlYWs7Y2FzZSBcImdvdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZSBcImxvc3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJwb2ludGVyY2FuY2VsXCI6Y2FzZSBcInBvaW50ZXJkb3duXCI6Y2FzZSBcInBvaW50ZXJtb3ZlXCI6Y2FzZSBcInBvaW50ZXJvdXRcIjpjYXNlIFwicG9pbnRlcm92ZXJcIjpjYXNlIFwicG9pbnRlcnVwXCI6YT1lZDticmVhaztkZWZhdWx0OmE9eX1iPWEuZ2V0UG9vbGVkKGUsYixjLGQpO1FhKGIpO3JldHVybiBifX0sTmQ9TWQuZ2V0RXZlbnRQcmlvcml0eSxPZD1bXTtcbmZ1bmN0aW9uIFBkKGEpe3ZhciBiPWEudGFyZ2V0SW5zdCxjPWI7ZG97aWYoIWMpe2EuYW5jZXN0b3JzLnB1c2goYyk7YnJlYWt9dmFyIGQ7Zm9yKGQ9YztkLnJldHVybjspZD1kLnJldHVybjtkPTMhPT1kLnRhZz9udWxsOmQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87aWYoIWQpYnJlYWs7YS5hbmNlc3RvcnMucHVzaChjKTtjPUhhKGQpfXdoaWxlKGMpO2ZvcihjPTA7YzxhLmFuY2VzdG9ycy5sZW5ndGg7YysrKXtiPWEuYW5jZXN0b3JzW2NdO3ZhciBlPVJiKGEubmF0aXZlRXZlbnQpO2Q9YS50b3BMZXZlbFR5cGU7Zm9yKHZhciBmPWEubmF0aXZlRXZlbnQsaD1udWxsLGc9MDtnPGVhLmxlbmd0aDtnKyspe3ZhciBrPWVhW2ddO2smJihrPWsuZXh0cmFjdEV2ZW50cyhkLGIsZixlKSkmJihoPXhhKGgsaykpfUJhKGgpfX12YXIgUWQ9ITA7ZnVuY3Rpb24gRyhhLGIpe1JkKGIsYSwhMSl9XG5mdW5jdGlvbiBSZChhLGIsYyl7c3dpdGNoKE5kKGIpKXtjYXNlIDA6dmFyIGQ9U2QuYmluZChudWxsLGIsMSk7YnJlYWs7Y2FzZSAxOmQ9VGQuYmluZChudWxsLGIsMSk7YnJlYWs7ZGVmYXVsdDpkPVVkLmJpbmQobnVsbCxiLDEpfWM/YS5hZGRFdmVudExpc3RlbmVyKGIsZCwhMCk6YS5hZGRFdmVudExpc3RlbmVyKGIsZCwhMSl9ZnVuY3Rpb24gU2QoYSxiLGMpe05ifHxMYigpO3ZhciBkPVVkLGU9TmI7TmI9ITA7dHJ5e0tiKGQsYSxiLGMpfWZpbmFsbHl7KE5iPWUpfHxPYigpfX1mdW5jdGlvbiBUZChhLGIsYyl7VWQoYSxiLGMpfVxuZnVuY3Rpb24gVWQoYSxiLGMpe2lmKFFkKXtiPVJiKGMpO2I9SGEoYik7bnVsbD09PWJ8fFwibnVtYmVyXCIhPT10eXBlb2YgYi50YWd8fDI9PT1sZChiKXx8KGI9bnVsbCk7aWYoT2QubGVuZ3RoKXt2YXIgZD1PZC5wb3AoKTtkLnRvcExldmVsVHlwZT1hO2QubmF0aXZlRXZlbnQ9YztkLnRhcmdldEluc3Q9YjthPWR9ZWxzZSBhPXt0b3BMZXZlbFR5cGU6YSxuYXRpdmVFdmVudDpjLHRhcmdldEluc3Q6YixhbmNlc3RvcnM6W119O3RyeXtpZihjPWEsTmIpUGQoYyx2b2lkIDApO2Vsc2V7TmI9ITA7dHJ5e01iKFBkLGMsdm9pZCAwKX1maW5hbGx5e05iPSExLE9iKCl9fX1maW5hbGx5e2EudG9wTGV2ZWxUeXBlPW51bGwsYS5uYXRpdmVFdmVudD1udWxsLGEudGFyZ2V0SW5zdD1udWxsLGEuYW5jZXN0b3JzLmxlbmd0aD0wLDEwPk9kLmxlbmd0aCYmT2QucHVzaChhKX19fXZhciBWZD1uZXcgKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBXZWFrTWFwP1dlYWtNYXA6TWFwKTtcbmZ1bmN0aW9uIFdkKGEpe3ZhciBiPVZkLmdldChhKTt2b2lkIDA9PT1iJiYoYj1uZXcgU2V0LFZkLnNldChhLGIpKTtyZXR1cm4gYn1mdW5jdGlvbiBYZChhKXthPWF8fChcInVuZGVmaW5lZFwiIT09dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OnZvaWQgMCk7aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBhKXJldHVybiBudWxsO3RyeXtyZXR1cm4gYS5hY3RpdmVFbGVtZW50fHxhLmJvZHl9Y2F0Y2goYil7cmV0dXJuIGEuYm9keX19ZnVuY3Rpb24gWWQoYSl7Zm9yKDthJiZhLmZpcnN0Q2hpbGQ7KWE9YS5maXJzdENoaWxkO3JldHVybiBhfVxuZnVuY3Rpb24gWmQoYSxiKXt2YXIgYz1ZZChhKTthPTA7Zm9yKHZhciBkO2M7KXtpZigzPT09Yy5ub2RlVHlwZSl7ZD1hK2MudGV4dENvbnRlbnQubGVuZ3RoO2lmKGE8PWImJmQ+PWIpcmV0dXJue25vZGU6YyxvZmZzZXQ6Yi1hfTthPWR9YTp7Zm9yKDtjOyl7aWYoYy5uZXh0U2libGluZyl7Yz1jLm5leHRTaWJsaW5nO2JyZWFrIGF9Yz1jLnBhcmVudE5vZGV9Yz12b2lkIDB9Yz1ZZChjKX19ZnVuY3Rpb24gJGQoYSxiKXtyZXR1cm4gYSYmYj9hPT09Yj8hMDphJiYzPT09YS5ub2RlVHlwZT8hMTpiJiYzPT09Yi5ub2RlVHlwZT8kZChhLGIucGFyZW50Tm9kZSk6XCJjb250YWluc1wiaW4gYT9hLmNvbnRhaW5zKGIpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24/ISEoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNik6ITE6ITF9XG5mdW5jdGlvbiBhZSgpe2Zvcih2YXIgYT13aW5kb3csYj1YZCgpO2IgaW5zdGFuY2VvZiBhLkhUTUxJRnJhbWVFbGVtZW50Oyl7dHJ5e3ZhciBjPVwic3RyaW5nXCI9PT10eXBlb2YgYi5jb250ZW50V2luZG93LmxvY2F0aW9uLmhyZWZ9Y2F0Y2goZCl7Yz0hMX1pZihjKWE9Yi5jb250ZW50V2luZG93O2Vsc2UgYnJlYWs7Yj1YZChhLmRvY3VtZW50KX1yZXR1cm4gYn1mdW5jdGlvbiBiZShhKXt2YXIgYj1hJiZhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGImJihcImlucHV0XCI9PT1iJiYoXCJ0ZXh0XCI9PT1hLnR5cGV8fFwic2VhcmNoXCI9PT1hLnR5cGV8fFwidGVsXCI9PT1hLnR5cGV8fFwidXJsXCI9PT1hLnR5cGV8fFwicGFzc3dvcmRcIj09PWEudHlwZSl8fFwidGV4dGFyZWFcIj09PWJ8fFwidHJ1ZVwiPT09YS5jb250ZW50RWRpdGFibGUpfVxudmFyIGNlPVJhJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJjExPj1kb2N1bWVudC5kb2N1bWVudE1vZGUsZGU9e3NlbGVjdDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6XCJvblNlbGVjdFwiLGNhcHR1cmVkOlwib25TZWxlY3RDYXB0dXJlXCJ9LGRlcGVuZGVuY2llczpcImJsdXIgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1cyBrZXlkb3duIGtleXVwIG1vdXNlZG93biBtb3VzZXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKX19LGVlPW51bGwsZmU9bnVsbCxnZT1udWxsLGhlPSExO1xuZnVuY3Rpb24gaWUoYSxiKXt2YXIgYz1iLndpbmRvdz09PWI/Yi5kb2N1bWVudDo5PT09Yi5ub2RlVHlwZT9iOmIub3duZXJEb2N1bWVudDtpZihoZXx8bnVsbD09ZWV8fGVlIT09WGQoYykpcmV0dXJuIG51bGw7Yz1lZTtcInNlbGVjdGlvblN0YXJ0XCJpbiBjJiZiZShjKT9jPXtzdGFydDpjLnNlbGVjdGlvblN0YXJ0LGVuZDpjLnNlbGVjdGlvbkVuZH06KGM9KGMub3duZXJEb2N1bWVudCYmYy5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpLGM9e2FuY2hvck5vZGU6Yy5hbmNob3JOb2RlLGFuY2hvck9mZnNldDpjLmFuY2hvck9mZnNldCxmb2N1c05vZGU6Yy5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6Yy5mb2N1c09mZnNldH0pO3JldHVybiBnZSYmamQoZ2UsYyk/bnVsbDooZ2U9YyxhPXkuZ2V0UG9vbGVkKGRlLnNlbGVjdCxmZSxhLGIpLGEudHlwZT1cInNlbGVjdFwiLGEudGFyZ2V0PWVlLFFhKGEpLGEpfVxudmFyIGplPXtldmVudFR5cGVzOmRlLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ZC53aW5kb3c9PT1kP2QuZG9jdW1lbnQ6OT09PWQubm9kZVR5cGU/ZDpkLm93bmVyRG9jdW1lbnQsZjtpZighKGY9IWUpKXthOntlPVdkKGUpO2Y9amEub25TZWxlY3Q7Zm9yKHZhciBoPTA7aDxmLmxlbmd0aDtoKyspaWYoIWUuaGFzKGZbaF0pKXtlPSExO2JyZWFrIGF9ZT0hMH1mPSFlfWlmKGYpcmV0dXJuIG51bGw7ZT1iP0phKGIpOndpbmRvdztzd2l0Y2goYSl7Y2FzZSBcImZvY3VzXCI6aWYoUWIoZSl8fFwidHJ1ZVwiPT09ZS5jb250ZW50RWRpdGFibGUpZWU9ZSxmZT1iLGdlPW51bGw7YnJlYWs7Y2FzZSBcImJsdXJcIjpnZT1mZT1lZT1udWxsO2JyZWFrO2Nhc2UgXCJtb3VzZWRvd25cIjpoZT0hMDticmVhaztjYXNlIFwiY29udGV4dG1lbnVcIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJkcmFnZW5kXCI6cmV0dXJuIGhlPSExLGllKGMsZCk7Y2FzZSBcInNlbGVjdGlvbmNoYW5nZVwiOmlmKGNlKWJyZWFrO1xuY2FzZSBcImtleWRvd25cIjpjYXNlIFwia2V5dXBcIjpyZXR1cm4gaWUoYyxkKX1yZXR1cm4gbnVsbH19O0NhLmluamVjdEV2ZW50UGx1Z2luT3JkZXIoXCJSZXNwb25kZXJFdmVudFBsdWdpbiBTaW1wbGVFdmVudFBsdWdpbiBFbnRlckxlYXZlRXZlbnRQbHVnaW4gQ2hhbmdlRXZlbnRQbHVnaW4gU2VsZWN0RXZlbnRQbHVnaW4gQmVmb3JlSW5wdXRFdmVudFBsdWdpblwiLnNwbGl0KFwiIFwiKSk7c2E9S2E7dGE9SWE7dmE9SmE7Q2EuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lKHtTaW1wbGVFdmVudFBsdWdpbjpNZCxFbnRlckxlYXZlRXZlbnRQbHVnaW46Z2QsQ2hhbmdlRXZlbnRQbHVnaW46VmMsU2VsZWN0RXZlbnRQbHVnaW46amUsQmVmb3JlSW5wdXRFdmVudFBsdWdpbjpDYn0pO2Z1bmN0aW9uIGtlKGEpe3ZhciBiPVwiXCI7YWEuQ2hpbGRyZW4uZm9yRWFjaChhLGZ1bmN0aW9uKGEpe251bGwhPWEmJihiKz1hKX0pO3JldHVybiBifVxuZnVuY3Rpb24gbGUoYSxiKXthPW0oe2NoaWxkcmVuOnZvaWQgMH0sYik7aWYoYj1rZShiLmNoaWxkcmVuKSlhLmNoaWxkcmVuPWI7cmV0dXJuIGF9ZnVuY3Rpb24gbWUoYSxiLGMsZCl7YT1hLm9wdGlvbnM7aWYoYil7Yj17fTtmb3IodmFyIGU9MDtlPGMubGVuZ3RoO2UrKyliW1wiJFwiK2NbZV1dPSEwO2ZvcihjPTA7YzxhLmxlbmd0aDtjKyspZT1iLmhhc093blByb3BlcnR5KFwiJFwiK2FbY10udmFsdWUpLGFbY10uc2VsZWN0ZWQhPT1lJiYoYVtjXS5zZWxlY3RlZD1lKSxlJiZkJiYoYVtjXS5kZWZhdWx0U2VsZWN0ZWQ9ITApfWVsc2V7Yz1cIlwiK0FjKGMpO2I9bnVsbDtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKXtpZihhW2VdLnZhbHVlPT09Yyl7YVtlXS5zZWxlY3RlZD0hMDtkJiYoYVtlXS5kZWZhdWx0U2VsZWN0ZWQ9ITApO3JldHVybn1udWxsIT09Ynx8YVtlXS5kaXNhYmxlZHx8KGI9YVtlXSl9bnVsbCE9PWImJihiLnNlbGVjdGVkPSEwKX19XG5mdW5jdGlvbiBuZShhLGIpe2lmKG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpdGhyb3cgdChFcnJvcig5MSkpO3JldHVybiBtKHt9LGIse3ZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxkcmVuOlwiXCIrYS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZX0pfWZ1bmN0aW9uIG9lKGEsYil7dmFyIGM9Yi52YWx1ZTtpZihudWxsPT1jKXtjPWIuZGVmYXVsdFZhbHVlO2I9Yi5jaGlsZHJlbjtpZihudWxsIT1iKXtpZihudWxsIT1jKXRocm93IHQoRXJyb3IoOTIpKTtpZihBcnJheS5pc0FycmF5KGIpKXtpZighKDE+PWIubGVuZ3RoKSl0aHJvdyB0KEVycm9yKDkzKSk7Yj1iWzBdfWM9Yn1udWxsPT1jJiYoYz1cIlwiKX1hLl93cmFwcGVyU3RhdGU9e2luaXRpYWxWYWx1ZTpBYyhjKX19XG5mdW5jdGlvbiBwZShhLGIpe3ZhciBjPUFjKGIudmFsdWUpLGQ9QWMoYi5kZWZhdWx0VmFsdWUpO251bGwhPWMmJihjPVwiXCIrYyxjIT09YS52YWx1ZSYmKGEudmFsdWU9YyksbnVsbD09Yi5kZWZhdWx0VmFsdWUmJmEuZGVmYXVsdFZhbHVlIT09YyYmKGEuZGVmYXVsdFZhbHVlPWMpKTtudWxsIT1kJiYoYS5kZWZhdWx0VmFsdWU9XCJcIitkKX1mdW5jdGlvbiBxZShhKXt2YXIgYj1hLnRleHRDb250ZW50O2I9PT1hLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlJiYoYS52YWx1ZT1iKX12YXIgcmU9e2h0bWw6XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIsbWF0aG1sOlwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiLHN2ZzpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9O1xuZnVuY3Rpb24gc2UoYSl7c3dpdGNoKGEpe2Nhc2UgXCJzdmdcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7Y2FzZSBcIm1hdGhcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIjtkZWZhdWx0OnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwifX1mdW5jdGlvbiB0ZShhLGIpe3JldHVybiBudWxsPT1hfHxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWE/c2UoYik6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPT09YSYmXCJmb3JlaWduT2JqZWN0XCI9PT1iP1wiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiOmF9XG52YXIgdWU9dm9pZCAwLHZlPWZ1bmN0aW9uKGEpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgTVNBcHAmJk1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uP2Z1bmN0aW9uKGIsYyxkLGUpe01TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uKCl7cmV0dXJuIGEoYixjLGQsZSl9KX06YX0oZnVuY3Rpb24oYSxiKXtpZihhLm5hbWVzcGFjZVVSSSE9PXJlLnN2Z3x8XCJpbm5lckhUTUxcImluIGEpYS5pbm5lckhUTUw9YjtlbHNle3VlPXVlfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3VlLmlubmVySFRNTD1cIjxzdmc+XCIrYitcIjwvc3ZnPlwiO2ZvcihiPXVlLmZpcnN0Q2hpbGQ7YS5maXJzdENoaWxkOylhLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCk7Zm9yKDtiLmZpcnN0Q2hpbGQ7KWEuYXBwZW5kQ2hpbGQoYi5maXJzdENoaWxkKX19KTtcbmZ1bmN0aW9uIHdlKGEsYil7aWYoYil7dmFyIGM9YS5maXJzdENoaWxkO2lmKGMmJmM9PT1hLmxhc3RDaGlsZCYmMz09PWMubm9kZVR5cGUpe2Mubm9kZVZhbHVlPWI7cmV0dXJufX1hLnRleHRDb250ZW50PWJ9XG52YXIgeGU9e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGJvcmRlckltYWdlT3V0c2V0OiEwLGJvcmRlckltYWdlU2xpY2U6ITAsYm9yZGVySW1hZ2VXaWR0aDohMCxib3hGbGV4OiEwLGJveEZsZXhHcm91cDohMCxib3hPcmRpbmFsR3JvdXA6ITAsY29sdW1uQ291bnQ6ITAsY29sdW1uczohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZEFyZWE6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTcGFuOiEwLGdyaWRSb3dTdGFydDohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblNwYW46ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLFxuZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0seWU9W1wiV2Via2l0XCIsXCJtc1wiLFwiTW96XCIsXCJPXCJdO09iamVjdC5rZXlzKHhlKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3llLmZvckVhY2goZnVuY3Rpb24oYil7Yj1iK2EuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHJpbmcoMSk7eGVbYl09eGVbYV19KX0pO2Z1bmN0aW9uIHplKGEsYixjKXtyZXR1cm4gbnVsbD09Ynx8XCJib29sZWFuXCI9PT10eXBlb2YgYnx8XCJcIj09PWI/XCJcIjpjfHxcIm51bWJlclwiIT09dHlwZW9mIGJ8fDA9PT1ifHx4ZS5oYXNPd25Qcm9wZXJ0eShhKSYmeGVbYV0/KFwiXCIrYikudHJpbSgpOmIrXCJweFwifVxuZnVuY3Rpb24gQWUoYSxiKXthPWEuc3R5bGU7Zm9yKHZhciBjIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShjKSl7dmFyIGQ9MD09PWMuaW5kZXhPZihcIi0tXCIpLGU9emUoYyxiW2NdLGQpO1wiZmxvYXRcIj09PWMmJihjPVwiY3NzRmxvYXRcIik7ZD9hLnNldFByb3BlcnR5KGMsZSk6YVtjXT1lfX12YXIgQ2U9bSh7bWVudWl0ZW06ITB9LHthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGVtYmVkOiEwLGhyOiEwLGltZzohMCxpbnB1dDohMCxrZXlnZW46ITAsbGluazohMCxtZXRhOiEwLHBhcmFtOiEwLHNvdXJjZTohMCx0cmFjazohMCx3YnI6ITB9KTtcbmZ1bmN0aW9uIERlKGEsYil7aWYoYil7aWYoQ2VbYV0mJihudWxsIT1iLmNoaWxkcmVufHxudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyB0KEVycm9yKDEzNyksYSxcIlwiKTtpZihudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXtpZihudWxsIT1iLmNoaWxkcmVuKXRocm93IHQoRXJyb3IoNjApKTtpZighKFwib2JqZWN0XCI9PT10eXBlb2YgYi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmXCJfX2h0bWxcImluIGIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IHQoRXJyb3IoNjEpKTt9aWYobnVsbCE9Yi5zdHlsZSYmXCJvYmplY3RcIiE9PXR5cGVvZiBiLnN0eWxlKXRocm93IHQoRXJyb3IoNjIpLFwiXCIpO319XG5mdW5jdGlvbiBFZShhLGIpe2lmKC0xPT09YS5pbmRleE9mKFwiLVwiKSlyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGIuaXM7c3dpdGNoKGEpe2Nhc2UgXCJhbm5vdGF0aW9uLXhtbFwiOmNhc2UgXCJjb2xvci1wcm9maWxlXCI6Y2FzZSBcImZvbnQtZmFjZVwiOmNhc2UgXCJmb250LWZhY2Utc3JjXCI6Y2FzZSBcImZvbnQtZmFjZS11cmlcIjpjYXNlIFwiZm9udC1mYWNlLWZvcm1hdFwiOmNhc2UgXCJmb250LWZhY2UtbmFtZVwiOmNhc2UgXCJtaXNzaW5nLWdseXBoXCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19XG5mdW5jdGlvbiBGZShhLGIpe2E9OT09PWEubm9kZVR5cGV8fDExPT09YS5ub2RlVHlwZT9hOmEub3duZXJEb2N1bWVudDt2YXIgYz1XZChhKTtiPWphW2JdO2Zvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgZT1iW2RdO2lmKCFjLmhhcyhlKSl7c3dpdGNoKGUpe2Nhc2UgXCJzY3JvbGxcIjpSZChhLFwic2Nyb2xsXCIsITApO2JyZWFrO2Nhc2UgXCJmb2N1c1wiOmNhc2UgXCJibHVyXCI6UmQoYSxcImZvY3VzXCIsITApO1JkKGEsXCJibHVyXCIsITApO2MuYWRkKFwiYmx1clwiKTtjLmFkZChcImZvY3VzXCIpO2JyZWFrO2Nhc2UgXCJjYW5jZWxcIjpjYXNlIFwiY2xvc2VcIjpTYihlKSYmUmQoYSxlLCEwKTticmVhaztjYXNlIFwiaW52YWxpZFwiOmNhc2UgXCJzdWJtaXRcIjpjYXNlIFwicmVzZXRcIjpicmVhaztkZWZhdWx0Oi0xPT09YmIuaW5kZXhPZihlKSYmRyhlLGEpfWMuYWRkKGUpfX19ZnVuY3Rpb24gR2UoKXt9dmFyIEhlPW51bGwsSWU9bnVsbDtcbmZ1bmN0aW9uIEplKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJidXR0b25cIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwic2VsZWN0XCI6Y2FzZSBcInRleHRhcmVhXCI6cmV0dXJuISFiLmF1dG9Gb2N1c31yZXR1cm4hMX1mdW5jdGlvbiBLZShhLGIpe3JldHVyblwidGV4dGFyZWFcIj09PWF8fFwib3B0aW9uXCI9PT1hfHxcIm5vc2NyaXB0XCI9PT1hfHxcInN0cmluZ1wiPT09dHlwZW9mIGIuY2hpbGRyZW58fFwibnVtYmVyXCI9PT10eXBlb2YgYi5jaGlsZHJlbnx8XCJvYmplY3RcIj09PXR5cGVvZiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT09Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWx9dmFyIExlPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6dm9pZCAwLE1lPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnZvaWQgMDtcbmZ1bmN0aW9uIE5lKGEpe2Zvcig7bnVsbCE9YTthPWEubmV4dFNpYmxpbmcpe3ZhciBiPWEubm9kZVR5cGU7aWYoMT09PWJ8fDM9PT1iKWJyZWFrfXJldHVybiBhfW5ldyBTZXQ7dmFyIE9lPVtdLFBlPS0xO2Z1bmN0aW9uIEgoYSl7MD5QZXx8KGEuY3VycmVudD1PZVtQZV0sT2VbUGVdPW51bGwsUGUtLSl9ZnVuY3Rpb24gSihhLGIpe1BlKys7T2VbUGVdPWEuY3VycmVudDthLmN1cnJlbnQ9Yn12YXIgUWU9e30sTD17Y3VycmVudDpRZX0sTT17Y3VycmVudDohMX0sUmU9UWU7XG5mdW5jdGlvbiBTZShhLGIpe3ZhciBjPWEudHlwZS5jb250ZXh0VHlwZXM7aWYoIWMpcmV0dXJuIFFlO3ZhciBkPWEuc3RhdGVOb2RlO2lmKGQmJmQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD09PWIpcmV0dXJuIGQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ7dmFyIGU9e30sZjtmb3IoZiBpbiBjKWVbZl09YltmXTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9YixhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWUpO3JldHVybiBlfWZ1bmN0aW9uIE4oYSl7YT1hLmNoaWxkQ29udGV4dFR5cGVzO3JldHVybiBudWxsIT09YSYmdm9pZCAwIT09YX1mdW5jdGlvbiBUZShhKXtIKE0sYSk7SChMLGEpfWZ1bmN0aW9uIFVlKGEpe0goTSxhKTtIKEwsYSl9XG5mdW5jdGlvbiBWZShhLGIsYyl7aWYoTC5jdXJyZW50IT09UWUpdGhyb3cgdChFcnJvcigxNjgpKTtKKEwsYixhKTtKKE0sYyxhKX1mdW5jdGlvbiBXZShhLGIsYyl7dmFyIGQ9YS5zdGF0ZU5vZGU7YT1iLmNoaWxkQ29udGV4dFR5cGVzO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBkLmdldENoaWxkQ29udGV4dClyZXR1cm4gYztkPWQuZ2V0Q2hpbGRDb250ZXh0KCk7Zm9yKHZhciBlIGluIGQpaWYoIShlIGluIGEpKXRocm93IHQoRXJyb3IoMTA4KSxvYyhiKXx8XCJVbmtub3duXCIsZSk7cmV0dXJuIG0oe30sYyxkKX1mdW5jdGlvbiBYZShhKXt2YXIgYj1hLnN0YXRlTm9kZTtiPWImJmIuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHR8fFFlO1JlPUwuY3VycmVudDtKKEwsYixhKTtKKE0sTS5jdXJyZW50LGEpO3JldHVybiEwfVxuZnVuY3Rpb24gWWUoYSxiLGMpe3ZhciBkPWEuc3RhdGVOb2RlO2lmKCFkKXRocm93IHQoRXJyb3IoMTY5KSk7Yz8oYj1XZShhLGIsUmUpLGQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ9YixIKE0sYSksSChMLGEpLEooTCxiLGEpKTpIKE0sYSk7SihNLGMsYSl9XG52YXIgWmU9cS51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHksJGU9cS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLGFmPXEudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2ssYmY9cS51bnN0YWJsZV9zaG91bGRZaWVsZCxjZj1xLnVuc3RhYmxlX3JlcXVlc3RQYWludCxkZj1xLnVuc3RhYmxlX25vdyxlZj1xLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsLGZmPXEudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksaGY9cS51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSxqZj1xLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LGtmPXEudW5zdGFibGVfTG93UHJpb3JpdHksbGY9cS51bnN0YWJsZV9JZGxlUHJpb3JpdHksbWY9e30sbmY9dm9pZCAwIT09Y2Y/Y2Y6ZnVuY3Rpb24oKXt9LG9mPW51bGwscGY9bnVsbCxxZj0hMSxyZj1kZigpLHNmPTFFND5yZj9kZjpmdW5jdGlvbigpe3JldHVybiBkZigpLXJmfTtcbmZ1bmN0aW9uIHRmKCl7c3dpdGNoKGVmKCkpe2Nhc2UgZmY6cmV0dXJuIDk5O2Nhc2UgaGY6cmV0dXJuIDk4O2Nhc2UgamY6cmV0dXJuIDk3O2Nhc2Uga2Y6cmV0dXJuIDk2O2Nhc2UgbGY6cmV0dXJuIDk1O2RlZmF1bHQ6dGhyb3cgdChFcnJvcigzMzIpKTt9fWZ1bmN0aW9uIHVmKGEpe3N3aXRjaChhKXtjYXNlIDk5OnJldHVybiBmZjtjYXNlIDk4OnJldHVybiBoZjtjYXNlIDk3OnJldHVybiBqZjtjYXNlIDk2OnJldHVybiBrZjtjYXNlIDk1OnJldHVybiBsZjtkZWZhdWx0OnRocm93IHQoRXJyb3IoMzMyKSk7fX1mdW5jdGlvbiB2ZihhLGIpe2E9dWYoYSk7cmV0dXJuIFplKGEsYil9ZnVuY3Rpb24gd2YoYSxiLGMpe2E9dWYoYSk7cmV0dXJuICRlKGEsYixjKX1mdW5jdGlvbiB4ZihhKXtudWxsPT09b2Y/KG9mPVthXSxwZj0kZShmZix5ZikpOm9mLnB1c2goYSk7cmV0dXJuIG1mfWZ1bmN0aW9uIE8oKXtudWxsIT09cGYmJmFmKHBmKTt5ZigpfVxuZnVuY3Rpb24geWYoKXtpZighcWYmJm51bGwhPT1vZil7cWY9ITA7dmFyIGE9MDt0cnl7dmFyIGI9b2Y7dmYoOTksZnVuY3Rpb24oKXtmb3IoO2E8Yi5sZW5ndGg7YSsrKXt2YXIgYz1iW2FdO2RvIGM9YyghMCk7d2hpbGUobnVsbCE9PWMpfX0pO29mPW51bGx9Y2F0Y2goYyl7dGhyb3cgbnVsbCE9PW9mJiYob2Y9b2Yuc2xpY2UoYSsxKSksJGUoZmYsTyksYzt9ZmluYWxseXtxZj0hMX19fWZ1bmN0aW9uIHpmKGEsYil7aWYoMTA3Mzc0MTgyMz09PWIpcmV0dXJuIDk5O2lmKDE9PT1iKXJldHVybiA5NTthPTEwKigxMDczNzQxODIxLWIpLTEwKigxMDczNzQxODIxLWEpO3JldHVybiAwPj1hPzk5OjI1MD49YT85ODo1MjUwPj1hPzk3Ojk1fWZ1bmN0aW9uIEFmKGEsYil7aWYoYSYmYS5kZWZhdWx0UHJvcHMpe2I9bSh7fSxiKTthPWEuZGVmYXVsdFByb3BzO2Zvcih2YXIgYyBpbiBhKXZvaWQgMD09PWJbY10mJihiW2NdPWFbY10pfXJldHVybiBifVxuZnVuY3Rpb24gQmYoYSl7dmFyIGI9YS5fcmVzdWx0O3N3aXRjaChhLl9zdGF0dXMpe2Nhc2UgMTpyZXR1cm4gYjtjYXNlIDI6dGhyb3cgYjtjYXNlIDA6dGhyb3cgYjtkZWZhdWx0OmEuX3N0YXR1cz0wO2I9YS5fY3RvcjtiPWIoKTtiLnRoZW4oZnVuY3Rpb24oYil7MD09PWEuX3N0YXR1cyYmKGI9Yi5kZWZhdWx0LGEuX3N0YXR1cz0xLGEuX3Jlc3VsdD1iKX0sZnVuY3Rpb24oYil7MD09PWEuX3N0YXR1cyYmKGEuX3N0YXR1cz0yLGEuX3Jlc3VsdD1iKX0pO3N3aXRjaChhLl9zdGF0dXMpe2Nhc2UgMTpyZXR1cm4gYS5fcmVzdWx0O2Nhc2UgMjp0aHJvdyBhLl9yZXN1bHQ7fWEuX3Jlc3VsdD1iO3Rocm93IGI7fX12YXIgQ2Y9e2N1cnJlbnQ6bnVsbH0sRGY9bnVsbCxFZj1udWxsLEZmPW51bGw7ZnVuY3Rpb24gR2YoKXtGZj1FZj1EZj1udWxsfVxuZnVuY3Rpb24gSGYoYSxiKXt2YXIgYz1hLnR5cGUuX2NvbnRleHQ7SihDZixjLl9jdXJyZW50VmFsdWUsYSk7Yy5fY3VycmVudFZhbHVlPWJ9ZnVuY3Rpb24gSWYoYSl7dmFyIGI9Q2YuY3VycmVudDtIKENmLGEpO2EudHlwZS5fY29udGV4dC5fY3VycmVudFZhbHVlPWJ9ZnVuY3Rpb24gSmYoYSxiKXtmb3IoO251bGwhPT1hOyl7dmFyIGM9YS5hbHRlcm5hdGU7aWYoYS5jaGlsZEV4cGlyYXRpb25UaW1lPGIpYS5jaGlsZEV4cGlyYXRpb25UaW1lPWIsbnVsbCE9PWMmJmMuY2hpbGRFeHBpcmF0aW9uVGltZTxiJiYoYy5jaGlsZEV4cGlyYXRpb25UaW1lPWIpO2Vsc2UgaWYobnVsbCE9PWMmJmMuY2hpbGRFeHBpcmF0aW9uVGltZTxiKWMuY2hpbGRFeHBpcmF0aW9uVGltZT1iO2Vsc2UgYnJlYWs7YT1hLnJldHVybn19XG5mdW5jdGlvbiBLZihhLGIpe0RmPWE7RmY9RWY9bnVsbDthPWEuZGVwZW5kZW5jaWVzO251bGwhPT1hJiZudWxsIT09YS5maXJzdENvbnRleHQmJihhLmV4cGlyYXRpb25UaW1lPj1iJiYoTGY9ITApLGEuZmlyc3RDb250ZXh0PW51bGwpfWZ1bmN0aW9uIE1mKGEsYil7aWYoRmYhPT1hJiYhMSE9PWImJjAhPT1iKXtpZihcIm51bWJlclwiIT09dHlwZW9mIGJ8fDEwNzM3NDE4MjM9PT1iKUZmPWEsYj0xMDczNzQxODIzO2I9e2NvbnRleHQ6YSxvYnNlcnZlZEJpdHM6YixuZXh0Om51bGx9O2lmKG51bGw9PT1FZil7aWYobnVsbD09PURmKXRocm93IHQoRXJyb3IoMzA4KSk7RWY9YjtEZi5kZXBlbmRlbmNpZXM9e2V4cGlyYXRpb25UaW1lOjAsZmlyc3RDb250ZXh0OmIscmVzcG9uZGVyczpudWxsfX1lbHNlIEVmPUVmLm5leHQ9Yn1yZXR1cm4gYS5fY3VycmVudFZhbHVlfXZhciBOZj0hMTtcbmZ1bmN0aW9uIE9mKGEpe3JldHVybntiYXNlU3RhdGU6YSxmaXJzdFVwZGF0ZTpudWxsLGxhc3RVcGRhdGU6bnVsbCxmaXJzdENhcHR1cmVkVXBkYXRlOm51bGwsbGFzdENhcHR1cmVkVXBkYXRlOm51bGwsZmlyc3RFZmZlY3Q6bnVsbCxsYXN0RWZmZWN0Om51bGwsZmlyc3RDYXB0dXJlZEVmZmVjdDpudWxsLGxhc3RDYXB0dXJlZEVmZmVjdDpudWxsfX1mdW5jdGlvbiBQZihhKXtyZXR1cm57YmFzZVN0YXRlOmEuYmFzZVN0YXRlLGZpcnN0VXBkYXRlOmEuZmlyc3RVcGRhdGUsbGFzdFVwZGF0ZTphLmxhc3RVcGRhdGUsZmlyc3RDYXB0dXJlZFVwZGF0ZTpudWxsLGxhc3RDYXB0dXJlZFVwZGF0ZTpudWxsLGZpcnN0RWZmZWN0Om51bGwsbGFzdEVmZmVjdDpudWxsLGZpcnN0Q2FwdHVyZWRFZmZlY3Q6bnVsbCxsYXN0Q2FwdHVyZWRFZmZlY3Q6bnVsbH19XG5mdW5jdGlvbiBRZihhLGIpe3JldHVybntleHBpcmF0aW9uVGltZTphLHN1c3BlbnNlQ29uZmlnOmIsdGFnOjAscGF5bG9hZDpudWxsLGNhbGxiYWNrOm51bGwsbmV4dDpudWxsLG5leHRFZmZlY3Q6bnVsbH19ZnVuY3Rpb24gUmYoYSxiKXtudWxsPT09YS5sYXN0VXBkYXRlP2EuZmlyc3RVcGRhdGU9YS5sYXN0VXBkYXRlPWI6KGEubGFzdFVwZGF0ZS5uZXh0PWIsYS5sYXN0VXBkYXRlPWIpfVxuZnVuY3Rpb24gU2YoYSxiKXt2YXIgYz1hLmFsdGVybmF0ZTtpZihudWxsPT09Yyl7dmFyIGQ9YS51cGRhdGVRdWV1ZTt2YXIgZT1udWxsO251bGw9PT1kJiYoZD1hLnVwZGF0ZVF1ZXVlPU9mKGEubWVtb2l6ZWRTdGF0ZSkpfWVsc2UgZD1hLnVwZGF0ZVF1ZXVlLGU9Yy51cGRhdGVRdWV1ZSxudWxsPT09ZD9udWxsPT09ZT8oZD1hLnVwZGF0ZVF1ZXVlPU9mKGEubWVtb2l6ZWRTdGF0ZSksZT1jLnVwZGF0ZVF1ZXVlPU9mKGMubWVtb2l6ZWRTdGF0ZSkpOmQ9YS51cGRhdGVRdWV1ZT1QZihlKTpudWxsPT09ZSYmKGU9Yy51cGRhdGVRdWV1ZT1QZihkKSk7bnVsbD09PWV8fGQ9PT1lP1JmKGQsYik6bnVsbD09PWQubGFzdFVwZGF0ZXx8bnVsbD09PWUubGFzdFVwZGF0ZT8oUmYoZCxiKSxSZihlLGIpKTooUmYoZCxiKSxlLmxhc3RVcGRhdGU9Yil9XG5mdW5jdGlvbiBUZihhLGIpe3ZhciBjPWEudXBkYXRlUXVldWU7Yz1udWxsPT09Yz9hLnVwZGF0ZVF1ZXVlPU9mKGEubWVtb2l6ZWRTdGF0ZSk6VWYoYSxjKTtudWxsPT09Yy5sYXN0Q2FwdHVyZWRVcGRhdGU/Yy5maXJzdENhcHR1cmVkVXBkYXRlPWMubGFzdENhcHR1cmVkVXBkYXRlPWI6KGMubGFzdENhcHR1cmVkVXBkYXRlLm5leHQ9YixjLmxhc3RDYXB0dXJlZFVwZGF0ZT1iKX1mdW5jdGlvbiBVZihhLGIpe3ZhciBjPWEuYWx0ZXJuYXRlO251bGwhPT1jJiZiPT09Yy51cGRhdGVRdWV1ZSYmKGI9YS51cGRhdGVRdWV1ZT1QZihiKSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBWZihhLGIsYyxkLGUsZil7c3dpdGNoKGMudGFnKXtjYXNlIDE6cmV0dXJuIGE9Yy5wYXlsb2FkLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhP2EuY2FsbChmLGQsZSk6YTtjYXNlIDM6YS5lZmZlY3RUYWc9YS5lZmZlY3RUYWcmLTIwNDl8NjQ7Y2FzZSAwOmE9Yy5wYXlsb2FkO2U9XCJmdW5jdGlvblwiPT09dHlwZW9mIGE/YS5jYWxsKGYsZCxlKTphO2lmKG51bGw9PT1lfHx2b2lkIDA9PT1lKWJyZWFrO3JldHVybiBtKHt9LGQsZSk7Y2FzZSAyOk5mPSEwfXJldHVybiBkfVxuZnVuY3Rpb24gV2YoYSxiLGMsZCxlKXtOZj0hMTtiPVVmKGEsYik7Zm9yKHZhciBmPWIuYmFzZVN0YXRlLGg9bnVsbCxnPTAsaz1iLmZpcnN0VXBkYXRlLGw9ZjtudWxsIT09azspe3ZhciBuPWsuZXhwaXJhdGlvblRpbWU7bjxlPyhudWxsPT09aCYmKGg9ayxmPWwpLGc8biYmKGc9bikpOihYZihuLGsuc3VzcGVuc2VDb25maWcpLGw9VmYoYSxiLGssbCxjLGQpLG51bGwhPT1rLmNhbGxiYWNrJiYoYS5lZmZlY3RUYWd8PTMyLGsubmV4dEVmZmVjdD1udWxsLG51bGw9PT1iLmxhc3RFZmZlY3Q/Yi5maXJzdEVmZmVjdD1iLmxhc3RFZmZlY3Q9azooYi5sYXN0RWZmZWN0Lm5leHRFZmZlY3Q9ayxiLmxhc3RFZmZlY3Q9aykpKTtrPWsubmV4dH1uPW51bGw7Zm9yKGs9Yi5maXJzdENhcHR1cmVkVXBkYXRlO251bGwhPT1rOyl7dmFyIHo9ay5leHBpcmF0aW9uVGltZTt6PGU/KG51bGw9PT1uJiYobj1rLG51bGw9PT1oJiYoZj1sKSksZzx6JiYoZz16KSk6KGw9VmYoYSxiLGssbCxjLGQpLG51bGwhPT1cbmsuY2FsbGJhY2smJihhLmVmZmVjdFRhZ3w9MzIsay5uZXh0RWZmZWN0PW51bGwsbnVsbD09PWIubGFzdENhcHR1cmVkRWZmZWN0P2IuZmlyc3RDYXB0dXJlZEVmZmVjdD1iLmxhc3RDYXB0dXJlZEVmZmVjdD1rOihiLmxhc3RDYXB0dXJlZEVmZmVjdC5uZXh0RWZmZWN0PWssYi5sYXN0Q2FwdHVyZWRFZmZlY3Q9aykpKTtrPWsubmV4dH1udWxsPT09aCYmKGIubGFzdFVwZGF0ZT1udWxsKTtudWxsPT09bj9iLmxhc3RDYXB0dXJlZFVwZGF0ZT1udWxsOmEuZWZmZWN0VGFnfD0zMjtudWxsPT09aCYmbnVsbD09PW4mJihmPWwpO2IuYmFzZVN0YXRlPWY7Yi5maXJzdFVwZGF0ZT1oO2IuZmlyc3RDYXB0dXJlZFVwZGF0ZT1uO2EuZXhwaXJhdGlvblRpbWU9ZzthLm1lbW9pemVkU3RhdGU9bH1cbmZ1bmN0aW9uIFlmKGEsYixjKXtudWxsIT09Yi5maXJzdENhcHR1cmVkVXBkYXRlJiYobnVsbCE9PWIubGFzdFVwZGF0ZSYmKGIubGFzdFVwZGF0ZS5uZXh0PWIuZmlyc3RDYXB0dXJlZFVwZGF0ZSxiLmxhc3RVcGRhdGU9Yi5sYXN0Q2FwdHVyZWRVcGRhdGUpLGIuZmlyc3RDYXB0dXJlZFVwZGF0ZT1iLmxhc3RDYXB0dXJlZFVwZGF0ZT1udWxsKTtaZihiLmZpcnN0RWZmZWN0LGMpO2IuZmlyc3RFZmZlY3Q9Yi5sYXN0RWZmZWN0PW51bGw7WmYoYi5maXJzdENhcHR1cmVkRWZmZWN0LGMpO2IuZmlyc3RDYXB0dXJlZEVmZmVjdD1iLmxhc3RDYXB0dXJlZEVmZmVjdD1udWxsfWZ1bmN0aW9uIFpmKGEsYil7Zm9yKDtudWxsIT09YTspe3ZhciBjPWEuY2FsbGJhY2s7aWYobnVsbCE9PWMpe2EuY2FsbGJhY2s9bnVsbDt2YXIgZD1iO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBjKXRocm93IHQoRXJyb3IoMTkxKSxjKTtjLmNhbGwoZCl9YT1hLm5leHRFZmZlY3R9fVxudmFyICRmPVhiLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLGFnPShuZXcgYWEuQ29tcG9uZW50KS5yZWZzO2Z1bmN0aW9uIGJnKGEsYixjLGQpe2I9YS5tZW1vaXplZFN0YXRlO2M9YyhkLGIpO2M9bnVsbD09PWN8fHZvaWQgMD09PWM/YjptKHt9LGIsYyk7YS5tZW1vaXplZFN0YXRlPWM7ZD1hLnVwZGF0ZVF1ZXVlO251bGwhPT1kJiYwPT09YS5leHBpcmF0aW9uVGltZSYmKGQuYmFzZVN0YXRlPWMpfVxudmFyIGZnPXtpc01vdW50ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5fcmVhY3RJbnRlcm5hbEZpYmVyKT8yPT09bGQoYSk6ITF9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1hLl9yZWFjdEludGVybmFsRmliZXI7dmFyIGQ9Y2coKSxlPSRmLnN1c3BlbnNlO2Q9ZGcoZCxhLGUpO2U9UWYoZCxlKTtlLnBheWxvYWQ9Yjt2b2lkIDAhPT1jJiZudWxsIT09YyYmKGUuY2FsbGJhY2s9Yyk7U2YoYSxlKTtlZyhhLGQpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGEsYixjKXthPWEuX3JlYWN0SW50ZXJuYWxGaWJlcjt2YXIgZD1jZygpLGU9JGYuc3VzcGVuc2U7ZD1kZyhkLGEsZSk7ZT1RZihkLGUpO2UudGFnPTE7ZS5wYXlsb2FkPWI7dm9pZCAwIT09YyYmbnVsbCE9PWMmJihlLmNhbGxiYWNrPWMpO1NmKGEsZSk7ZWcoYSxkKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGEsYil7YT1hLl9yZWFjdEludGVybmFsRmliZXI7dmFyIGM9Y2coKSxkPSRmLnN1c3BlbnNlO1xuYz1kZyhjLGEsZCk7ZD1RZihjLGQpO2QudGFnPTI7dm9pZCAwIT09YiYmbnVsbCE9PWImJihkLmNhbGxiYWNrPWIpO1NmKGEsZCk7ZWcoYSxjKX19O2Z1bmN0aW9uIGdnKGEsYixjLGQsZSxmLGgpe2E9YS5zdGF0ZU5vZGU7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGEuc2hvdWxkQ29tcG9uZW50VXBkYXRlP2Euc2hvdWxkQ29tcG9uZW50VXBkYXRlKGQsZixoKTpiLnByb3RvdHlwZSYmYi5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQ/IWpkKGMsZCl8fCFqZChlLGYpOiEwfVxuZnVuY3Rpb24gaGcoYSxiLGMpe3ZhciBkPSExLGU9UWU7dmFyIGY9Yi5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mP2Y9TWYoZik6KGU9TihiKT9SZTpMLmN1cnJlbnQsZD1iLmNvbnRleHRUeXBlcyxmPShkPW51bGwhPT1kJiZ2b2lkIDAhPT1kKT9TZShhLGUpOlFlKTtiPW5ldyBiKGMsZik7YS5tZW1vaXplZFN0YXRlPW51bGwhPT1iLnN0YXRlJiZ2b2lkIDAhPT1iLnN0YXRlP2Iuc3RhdGU6bnVsbDtiLnVwZGF0ZXI9Zmc7YS5zdGF0ZU5vZGU9YjtiLl9yZWFjdEludGVybmFsRmliZXI9YTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9ZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWYpO3JldHVybiBifVxuZnVuY3Rpb24gaWcoYSxiLGMsZCl7YT1iLnN0YXRlO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmIuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGQpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZiLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGMsZCk7Yi5zdGF0ZSE9PWEmJmZnLmVucXVldWVSZXBsYWNlU3RhdGUoYixiLnN0YXRlLG51bGwpfVxuZnVuY3Rpb24gamcoYSxiLGMsZCl7dmFyIGU9YS5zdGF0ZU5vZGU7ZS5wcm9wcz1jO2Uuc3RhdGU9YS5tZW1vaXplZFN0YXRlO2UucmVmcz1hZzt2YXIgZj1iLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWY/ZS5jb250ZXh0PU1mKGYpOihmPU4oYik/UmU6TC5jdXJyZW50LGUuY29udGV4dD1TZShhLGYpKTtmPWEudXBkYXRlUXVldWU7bnVsbCE9PWYmJihXZihhLGYsYyxlLGQpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTtmPWIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBmJiYoYmcoYSxiLGYsYyksZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGUpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc3x8XCJmdW5jdGlvblwiPT09dHlwZW9mIGUuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJlwiZnVuY3Rpb25cIiE9PVxudHlwZW9mIGUuY29tcG9uZW50V2lsbE1vdW50fHwoYj1lLnN0YXRlLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLmNvbXBvbmVudFdpbGxNb3VudCYmZS5jb21wb25lbnRXaWxsTW91bnQoKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSxiIT09ZS5zdGF0ZSYmZmcuZW5xdWV1ZVJlcGxhY2VTdGF0ZShlLGUuc3RhdGUsbnVsbCksZj1hLnVwZGF0ZVF1ZXVlLG51bGwhPT1mJiYoV2YoYSxmLGMsZSxkKSxlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZSkpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBlLmNvbXBvbmVudERpZE1vdW50JiYoYS5lZmZlY3RUYWd8PTQpfXZhciBrZz1BcnJheS5pc0FycmF5O1xuZnVuY3Rpb24gbGcoYSxiLGMpe2E9Yy5yZWY7aWYobnVsbCE9PWEmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBhJiZcIm9iamVjdFwiIT09dHlwZW9mIGEpe2lmKGMuX293bmVyKXtjPWMuX293bmVyO3ZhciBkPXZvaWQgMDtpZihjKXtpZigxIT09Yy50YWcpdGhyb3cgdChFcnJvcigzMDkpKTtkPWMuc3RhdGVOb2RlfWlmKCFkKXRocm93IHQoRXJyb3IoMTQ3KSxhKTt2YXIgZT1cIlwiK2E7aWYobnVsbCE9PWImJm51bGwhPT1iLnJlZiYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGIucmVmJiZiLnJlZi5fc3RyaW5nUmVmPT09ZSlyZXR1cm4gYi5yZWY7Yj1mdW5jdGlvbihhKXt2YXIgYj1kLnJlZnM7Yj09PWFnJiYoYj1kLnJlZnM9e30pO251bGw9PT1hP2RlbGV0ZSBiW2VdOmJbZV09YX07Yi5fc3RyaW5nUmVmPWU7cmV0dXJuIGJ9aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBhKXRocm93IHQoRXJyb3IoMjg0KSk7aWYoIWMuX293bmVyKXRocm93IHQoRXJyb3IoMjkwKSxhKTt9cmV0dXJuIGF9XG5mdW5jdGlvbiBtZyhhLGIpe2lmKFwidGV4dGFyZWFcIiE9PWEudHlwZSl0aHJvdyB0KEVycm9yKDMxKSxcIltvYmplY3QgT2JqZWN0XVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIpP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoYikuam9pbihcIiwgXCIpK1wifVwiOmIsXCJcIik7fVxuZnVuY3Rpb24gbmcoYSl7ZnVuY3Rpb24gYihiLGMpe2lmKGEpe3ZhciBkPWIubGFzdEVmZmVjdDtudWxsIT09ZD8oZC5uZXh0RWZmZWN0PWMsYi5sYXN0RWZmZWN0PWMpOmIuZmlyc3RFZmZlY3Q9Yi5sYXN0RWZmZWN0PWM7Yy5uZXh0RWZmZWN0PW51bGw7Yy5lZmZlY3RUYWc9OH19ZnVuY3Rpb24gYyhjLGQpe2lmKCFhKXJldHVybiBudWxsO2Zvcig7bnVsbCE9PWQ7KWIoYyxkKSxkPWQuc2libGluZztyZXR1cm4gbnVsbH1mdW5jdGlvbiBkKGEsYil7Zm9yKGE9bmV3IE1hcDtudWxsIT09YjspbnVsbCE9PWIua2V5P2Euc2V0KGIua2V5LGIpOmEuc2V0KGIuaW5kZXgsYiksYj1iLnNpYmxpbmc7cmV0dXJuIGF9ZnVuY3Rpb24gZShhLGIsYyl7YT1vZyhhLGIsYyk7YS5pbmRleD0wO2Euc2libGluZz1udWxsO3JldHVybiBhfWZ1bmN0aW9uIGYoYixjLGQpe2IuaW5kZXg9ZDtpZighYSlyZXR1cm4gYztkPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1kKXJldHVybiBkPWQuaW5kZXgsZDxjPyhiLmVmZmVjdFRhZz1cbjIsYyk6ZDtiLmVmZmVjdFRhZz0yO3JldHVybiBjfWZ1bmN0aW9uIGgoYil7YSYmbnVsbD09PWIuYWx0ZXJuYXRlJiYoYi5lZmZlY3RUYWc9Mik7cmV0dXJuIGJ9ZnVuY3Rpb24gZyhhLGIsYyxkKXtpZihudWxsPT09Ynx8NiE9PWIudGFnKXJldHVybiBiPXBnKGMsYS5tb2RlLGQpLGIucmV0dXJuPWEsYjtiPWUoYixjLGQpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gayhhLGIsYyxkKXtpZihudWxsIT09YiYmYi5lbGVtZW50VHlwZT09PWMudHlwZSlyZXR1cm4gZD1lKGIsYy5wcm9wcyxkKSxkLnJlZj1sZyhhLGIsYyksZC5yZXR1cm49YSxkO2Q9cWcoYy50eXBlLGMua2V5LGMucHJvcHMsbnVsbCxhLm1vZGUsZCk7ZC5yZWY9bGcoYSxiLGMpO2QucmV0dXJuPWE7cmV0dXJuIGR9ZnVuY3Rpb24gbChhLGIsYyxkKXtpZihudWxsPT09Ynx8NCE9PWIudGFnfHxiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvIT09Yy5jb250YWluZXJJbmZvfHxiLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbiE9PVxuYy5pbXBsZW1lbnRhdGlvbilyZXR1cm4gYj1yZyhjLGEubW9kZSxkKSxiLnJldHVybj1hLGI7Yj1lKGIsYy5jaGlsZHJlbnx8W10sZCk7Yi5yZXR1cm49YTtyZXR1cm4gYn1mdW5jdGlvbiBuKGEsYixjLGQsZil7aWYobnVsbD09PWJ8fDchPT1iLnRhZylyZXR1cm4gYj1zZyhjLGEubW9kZSxkLGYpLGIucmV0dXJuPWEsYjtiPWUoYixjLGQpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24geihhLGIsYyl7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBifHxcIm51bWJlclwiPT09dHlwZW9mIGIpcmV0dXJuIGI9cGcoXCJcIitiLGEubW9kZSxjKSxiLnJldHVybj1hLGI7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBiJiZudWxsIT09Yil7c3dpdGNoKGIuJCR0eXBlb2Ype2Nhc2UgWmI6cmV0dXJuIGM9cWcoYi50eXBlLGIua2V5LGIucHJvcHMsbnVsbCxhLm1vZGUsYyksYy5yZWY9bGcoYSxudWxsLGIpLGMucmV0dXJuPWEsYztjYXNlICRiOnJldHVybiBiPXJnKGIsYS5tb2RlLGMpLGIucmV0dXJuPWEsYn1pZihrZyhiKXx8XG5tYyhiKSlyZXR1cm4gYj1zZyhiLGEubW9kZSxjLG51bGwpLGIucmV0dXJuPWEsYjttZyhhLGIpfXJldHVybiBudWxsfWZ1bmN0aW9uIHgoYSxiLGMsZCl7dmFyIGU9bnVsbCE9PWI/Yi5rZXk6bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGN8fFwibnVtYmVyXCI9PT10eXBlb2YgYylyZXR1cm4gbnVsbCE9PWU/bnVsbDpnKGEsYixcIlwiK2MsZCk7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBjJiZudWxsIT09Yyl7c3dpdGNoKGMuJCR0eXBlb2Ype2Nhc2UgWmI6cmV0dXJuIGMua2V5PT09ZT9jLnR5cGU9PT1hYz9uKGEsYixjLnByb3BzLmNoaWxkcmVuLGQsZSk6ayhhLGIsYyxkKTpudWxsO2Nhc2UgJGI6cmV0dXJuIGMua2V5PT09ZT9sKGEsYixjLGQpOm51bGx9aWYoa2coYyl8fG1jKGMpKXJldHVybiBudWxsIT09ZT9udWxsOm4oYSxiLGMsZCxudWxsKTttZyhhLGMpfXJldHVybiBudWxsfWZ1bmN0aW9uIHYoYSxiLGMsZCxlKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGR8fFwibnVtYmVyXCI9PT10eXBlb2YgZClyZXR1cm4gYT1cbmEuZ2V0KGMpfHxudWxsLGcoYixhLFwiXCIrZCxlKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGQmJm51bGwhPT1kKXtzd2l0Y2goZC4kJHR5cGVvZil7Y2FzZSBaYjpyZXR1cm4gYT1hLmdldChudWxsPT09ZC5rZXk/YzpkLmtleSl8fG51bGwsZC50eXBlPT09YWM/bihiLGEsZC5wcm9wcy5jaGlsZHJlbixlLGQua2V5KTprKGIsYSxkLGUpO2Nhc2UgJGI6cmV0dXJuIGE9YS5nZXQobnVsbD09PWQua2V5P2M6ZC5rZXkpfHxudWxsLGwoYixhLGQsZSl9aWYoa2coZCl8fG1jKGQpKXJldHVybiBhPWEuZ2V0KGMpfHxudWxsLG4oYixhLGQsZSxudWxsKTttZyhiLGQpfXJldHVybiBudWxsfWZ1bmN0aW9uIHJiKGUsaCxnLGspe2Zvcih2YXIgbD1udWxsLHU9bnVsbCxuPWgsdz1oPTAsQz1udWxsO251bGwhPT1uJiZ3PGcubGVuZ3RoO3crKyl7bi5pbmRleD53PyhDPW4sbj1udWxsKTpDPW4uc2libGluZzt2YXIgcD14KGUsbixnW3ddLGspO2lmKG51bGw9PT1wKXtudWxsPT09biYmKG49Qyk7YnJlYWt9YSYmXG5uJiZudWxsPT09cC5hbHRlcm5hdGUmJmIoZSxuKTtoPWYocCxoLHcpO251bGw9PT11P2w9cDp1LnNpYmxpbmc9cDt1PXA7bj1DfWlmKHc9PT1nLmxlbmd0aClyZXR1cm4gYyhlLG4pLGw7aWYobnVsbD09PW4pe2Zvcig7dzxnLmxlbmd0aDt3Kyspbj16KGUsZ1t3XSxrKSxudWxsIT09biYmKGg9ZihuLGgsdyksbnVsbD09PXU/bD1uOnUuc2libGluZz1uLHU9bik7cmV0dXJuIGx9Zm9yKG49ZChlLG4pO3c8Zy5sZW5ndGg7dysrKUM9dihuLGUsdyxnW3ddLGspLG51bGwhPT1DJiYoYSYmbnVsbCE9PUMuYWx0ZXJuYXRlJiZuLmRlbGV0ZShudWxsPT09Qy5rZXk/dzpDLmtleSksaD1mKEMsaCx3KSxudWxsPT09dT9sPUM6dS5zaWJsaW5nPUMsdT1DKTthJiZuLmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGIoZSxhKX0pO3JldHVybiBsfWZ1bmN0aW9uIEJlKGUsaCxnLGspe3ZhciBsPW1jKGcpO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBsKXRocm93IHQoRXJyb3IoMTUwKSk7Zz1sLmNhbGwoZyk7XG5pZihudWxsPT1nKXRocm93IHQoRXJyb3IoMTUxKSk7Zm9yKHZhciBuPWw9bnVsbCx1PWgsdz1oPTAsQz1udWxsLHA9Zy5uZXh0KCk7bnVsbCE9PXUmJiFwLmRvbmU7dysrLHA9Zy5uZXh0KCkpe3UuaW5kZXg+dz8oQz11LHU9bnVsbCk6Qz11LnNpYmxpbmc7dmFyIHI9eChlLHUscC52YWx1ZSxrKTtpZihudWxsPT09cil7bnVsbD09PXUmJih1PUMpO2JyZWFrfWEmJnUmJm51bGw9PT1yLmFsdGVybmF0ZSYmYihlLHUpO2g9ZihyLGgsdyk7bnVsbD09PW4/bD1yOm4uc2libGluZz1yO249cjt1PUN9aWYocC5kb25lKXJldHVybiBjKGUsdSksbDtpZihudWxsPT09dSl7Zm9yKDshcC5kb25lO3crKyxwPWcubmV4dCgpKXA9eihlLHAudmFsdWUsayksbnVsbCE9PXAmJihoPWYocCxoLHcpLG51bGw9PT1uP2w9cDpuLnNpYmxpbmc9cCxuPXApO3JldHVybiBsfWZvcih1PWQoZSx1KTshcC5kb25lO3crKyxwPWcubmV4dCgpKXA9dih1LGUsdyxwLnZhbHVlLGspLG51bGwhPT1wJiYoYSYmbnVsbCE9PVxucC5hbHRlcm5hdGUmJnUuZGVsZXRlKG51bGw9PT1wLmtleT93OnAua2V5KSxoPWYocCxoLHcpLG51bGw9PT1uP2w9cDpuLnNpYmxpbmc9cCxuPXApO2EmJnUuZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYihlLGEpfSk7cmV0dXJuIGx9cmV0dXJuIGZ1bmN0aW9uKGEsZCxmLGcpe3ZhciBrPVwib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYmJmYudHlwZT09PWFjJiZudWxsPT09Zi5rZXk7ayYmKGY9Zi5wcm9wcy5jaGlsZHJlbik7dmFyIGw9XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09ZjtpZihsKXN3aXRjaChmLiQkdHlwZW9mKXtjYXNlIFpiOmE6e2w9Zi5rZXk7Zm9yKGs9ZDtudWxsIT09azspe2lmKGsua2V5PT09bCl7aWYoNz09PWsudGFnP2YudHlwZT09PWFjOmsuZWxlbWVudFR5cGU9PT1mLnR5cGUpe2MoYSxrLnNpYmxpbmcpO2Q9ZShrLGYudHlwZT09PWFjP2YucHJvcHMuY2hpbGRyZW46Zi5wcm9wcyxnKTtkLnJlZj1sZyhhLGssZik7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1jKGEsXG5rKTticmVha31lbHNlIGIoYSxrKTtrPWsuc2libGluZ31mLnR5cGU9PT1hYz8oZD1zZyhmLnByb3BzLmNoaWxkcmVuLGEubW9kZSxnLGYua2V5KSxkLnJldHVybj1hLGE9ZCk6KGc9cWcoZi50eXBlLGYua2V5LGYucHJvcHMsbnVsbCxhLm1vZGUsZyksZy5yZWY9bGcoYSxkLGYpLGcucmV0dXJuPWEsYT1nKX1yZXR1cm4gaChhKTtjYXNlICRiOmE6e2ZvcihrPWYua2V5O251bGwhPT1kOyl7aWYoZC5rZXk9PT1rKXtpZig0PT09ZC50YWcmJmQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm89PT1mLmNvbnRhaW5lckluZm8mJmQuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uPT09Zi5pbXBsZW1lbnRhdGlvbil7YyhhLGQuc2libGluZyk7ZD1lKGQsZi5jaGlsZHJlbnx8W10sZyk7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1jKGEsZCk7YnJlYWt9ZWxzZSBiKGEsZCk7ZD1kLnNpYmxpbmd9ZD1yZyhmLGEubW9kZSxnKTtkLnJldHVybj1hO2E9ZH1yZXR1cm4gaChhKX1pZihcInN0cmluZ1wiPT09dHlwZW9mIGZ8fFxuXCJudW1iZXJcIj09PXR5cGVvZiBmKXJldHVybiBmPVwiXCIrZixudWxsIT09ZCYmNj09PWQudGFnPyhjKGEsZC5zaWJsaW5nKSxkPWUoZCxmLGcpLGQucmV0dXJuPWEsYT1kKTooYyhhLGQpLGQ9cGcoZixhLm1vZGUsZyksZC5yZXR1cm49YSxhPWQpLGgoYSk7aWYoa2coZikpcmV0dXJuIHJiKGEsZCxmLGcpO2lmKG1jKGYpKXJldHVybiBCZShhLGQsZixnKTtsJiZtZyhhLGYpO2lmKFwidW5kZWZpbmVkXCI9PT10eXBlb2YgZiYmIWspc3dpdGNoKGEudGFnKXtjYXNlIDE6Y2FzZSAwOnRocm93IGE9YS50eXBlLHQoRXJyb3IoMTUyKSxhLmRpc3BsYXlOYW1lfHxhLm5hbWV8fFwiQ29tcG9uZW50XCIpO31yZXR1cm4gYyhhLGQpfX12YXIgdGc9bmcoITApLHVnPW5nKCExKSx2Zz17fSx3Zz17Y3VycmVudDp2Z30seGc9e2N1cnJlbnQ6dmd9LHlnPXtjdXJyZW50OnZnfTtmdW5jdGlvbiB6ZyhhKXtpZihhPT09dmcpdGhyb3cgdChFcnJvcigxNzQpKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIEFnKGEsYil7Sih5ZyxiLGEpO0ooeGcsYSxhKTtKKHdnLHZnLGEpO3ZhciBjPWIubm9kZVR5cGU7c3dpdGNoKGMpe2Nhc2UgOTpjYXNlIDExOmI9KGI9Yi5kb2N1bWVudEVsZW1lbnQpP2IubmFtZXNwYWNlVVJJOnRlKG51bGwsXCJcIik7YnJlYWs7ZGVmYXVsdDpjPTg9PT1jP2IucGFyZW50Tm9kZTpiLGI9Yy5uYW1lc3BhY2VVUkl8fG51bGwsYz1jLnRhZ05hbWUsYj10ZShiLGMpfUgod2csYSk7Sih3ZyxiLGEpfWZ1bmN0aW9uIEJnKGEpe0god2csYSk7SCh4ZyxhKTtIKHlnLGEpfWZ1bmN0aW9uIENnKGEpe3pnKHlnLmN1cnJlbnQpO3ZhciBiPXpnKHdnLmN1cnJlbnQpO3ZhciBjPXRlKGIsYS50eXBlKTtiIT09YyYmKEooeGcsYSxhKSxKKHdnLGMsYSkpfWZ1bmN0aW9uIERnKGEpe3hnLmN1cnJlbnQ9PT1hJiYoSCh3ZyxhKSxIKHhnLGEpKX12YXIgRWc9MSxGZz0xLEdnPTIsUD17Y3VycmVudDowfTtcbmZ1bmN0aW9uIEhnKGEpe2Zvcih2YXIgYj1hO251bGwhPT1iOyl7aWYoMTM9PT1iLnRhZyl7aWYobnVsbCE9PWIubWVtb2l6ZWRTdGF0ZSlyZXR1cm4gYn1lbHNlIGlmKDE5PT09Yi50YWcmJnZvaWQgMCE9PWIubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlcil7aWYoMCE9PShiLmVmZmVjdFRhZyY2NCkpcmV0dXJuIGJ9ZWxzZSBpZihudWxsIT09Yi5jaGlsZCl7Yi5jaGlsZC5yZXR1cm49YjtiPWIuY2hpbGQ7Y29udGludWV9aWYoYj09PWEpYnJlYWs7Zm9yKDtudWxsPT09Yi5zaWJsaW5nOyl7aWYobnVsbD09PWIucmV0dXJufHxiLnJldHVybj09PWEpcmV0dXJuIG51bGw7Yj1iLnJldHVybn1iLnNpYmxpbmcucmV0dXJuPWIucmV0dXJuO2I9Yi5zaWJsaW5nfXJldHVybiBudWxsfVxudmFyIElnPTAsSmc9MixLZz00LExnPTgsTWc9MTYsTmc9MzIsT2c9NjQsUGc9MTI4LFFnPVhiLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsUmc9MCxTZz1udWxsLFE9bnVsbCxUZz1udWxsLFVnPW51bGwsUj1udWxsLFZnPW51bGwsV2c9MCxYZz1udWxsLFlnPTAsWmc9ITEsJGc9bnVsbCxhaD0wO2Z1bmN0aW9uIGJoKCl7dGhyb3cgdChFcnJvcigzMjEpKTt9ZnVuY3Rpb24gY2goYSxiKXtpZihudWxsPT09YilyZXR1cm4hMTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoJiZjPGEubGVuZ3RoO2MrKylpZighaGQoYVtjXSxiW2NdKSlyZXR1cm4hMTtyZXR1cm4hMH1cbmZ1bmN0aW9uIGRoKGEsYixjLGQsZSxmKXtSZz1mO1NnPWI7VGc9bnVsbCE9PWE/YS5tZW1vaXplZFN0YXRlOm51bGw7UWcuY3VycmVudD1udWxsPT09VGc/ZWg6Zmg7Yj1jKGQsZSk7aWYoWmcpe2RvIFpnPSExLGFoKz0xLFRnPW51bGwhPT1hP2EubWVtb2l6ZWRTdGF0ZTpudWxsLFZnPVVnLFhnPVI9UT1udWxsLFFnLmN1cnJlbnQ9ZmgsYj1jKGQsZSk7d2hpbGUoWmcpOyRnPW51bGw7YWg9MH1RZy5jdXJyZW50PWhoO2E9U2c7YS5tZW1vaXplZFN0YXRlPVVnO2EuZXhwaXJhdGlvblRpbWU9V2c7YS51cGRhdGVRdWV1ZT1YZzthLmVmZmVjdFRhZ3w9WWc7YT1udWxsIT09USYmbnVsbCE9PVEubmV4dDtSZz0wO1ZnPVI9VWc9VGc9UT1TZz1udWxsO1dnPTA7WGc9bnVsbDtZZz0wO2lmKGEpdGhyb3cgdChFcnJvcigzMDApKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIGloKCl7UWcuY3VycmVudD1oaDtSZz0wO1ZnPVI9VWc9VGc9UT1TZz1udWxsO1dnPTA7WGc9bnVsbDtZZz0wO1pnPSExOyRnPW51bGw7YWg9MH1mdW5jdGlvbiBqaCgpe3ZhciBhPXttZW1vaXplZFN0YXRlOm51bGwsYmFzZVN0YXRlOm51bGwscXVldWU6bnVsbCxiYXNlVXBkYXRlOm51bGwsbmV4dDpudWxsfTtudWxsPT09Uj9VZz1SPWE6Uj1SLm5leHQ9YTtyZXR1cm4gUn1mdW5jdGlvbiBraCgpe2lmKG51bGwhPT1WZylSPVZnLFZnPVIubmV4dCxRPVRnLFRnPW51bGwhPT1RP1EubmV4dDpudWxsO2Vsc2V7aWYobnVsbD09PVRnKXRocm93IHQoRXJyb3IoMzEwKSk7UT1UZzt2YXIgYT17bWVtb2l6ZWRTdGF0ZTpRLm1lbW9pemVkU3RhdGUsYmFzZVN0YXRlOlEuYmFzZVN0YXRlLHF1ZXVlOlEucXVldWUsYmFzZVVwZGF0ZTpRLmJhc2VVcGRhdGUsbmV4dDpudWxsfTtSPW51bGw9PT1SP1VnPWE6Ui5uZXh0PWE7VGc9US5uZXh0fXJldHVybiBSfVxuZnVuY3Rpb24gbGgoYSxiKXtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYj9iKGEpOmJ9XG5mdW5jdGlvbiBtaChhKXt2YXIgYj1raCgpLGM9Yi5xdWV1ZTtpZihudWxsPT09Yyl0aHJvdyB0KEVycm9yKDMxMSkpO2MubGFzdFJlbmRlcmVkUmVkdWNlcj1hO2lmKDA8YWgpe3ZhciBkPWMuZGlzcGF0Y2g7aWYobnVsbCE9PSRnKXt2YXIgZT0kZy5nZXQoYyk7aWYodm9pZCAwIT09ZSl7JGcuZGVsZXRlKGMpO3ZhciBmPWIubWVtb2l6ZWRTdGF0ZTtkbyBmPWEoZixlLmFjdGlvbiksZT1lLm5leHQ7d2hpbGUobnVsbCE9PWUpO2hkKGYsYi5tZW1vaXplZFN0YXRlKXx8KExmPSEwKTtiLm1lbW9pemVkU3RhdGU9ZjtiLmJhc2VVcGRhdGU9PT1jLmxhc3QmJihiLmJhc2VTdGF0ZT1mKTtjLmxhc3RSZW5kZXJlZFN0YXRlPWY7cmV0dXJuW2YsZF19fXJldHVybltiLm1lbW9pemVkU3RhdGUsZF19ZD1jLmxhc3Q7dmFyIGg9Yi5iYXNlVXBkYXRlO2Y9Yi5iYXNlU3RhdGU7bnVsbCE9PWg/KG51bGwhPT1kJiYoZC5uZXh0PW51bGwpLGQ9aC5uZXh0KTpkPW51bGwhPT1kP2QubmV4dDpudWxsO2lmKG51bGwhPT1cbmQpe3ZhciBnPWU9bnVsbCxrPWQsbD0hMTtkb3t2YXIgbj1rLmV4cGlyYXRpb25UaW1lO248Umc/KGx8fChsPSEwLGc9aCxlPWYpLG4+V2cmJihXZz1uKSk6KFhmKG4say5zdXNwZW5zZUNvbmZpZyksZj1rLmVhZ2VyUmVkdWNlcj09PWE/ay5lYWdlclN0YXRlOmEoZixrLmFjdGlvbikpO2g9aztrPWsubmV4dH13aGlsZShudWxsIT09ayYmayE9PWQpO2x8fChnPWgsZT1mKTtoZChmLGIubWVtb2l6ZWRTdGF0ZSl8fChMZj0hMCk7Yi5tZW1vaXplZFN0YXRlPWY7Yi5iYXNlVXBkYXRlPWc7Yi5iYXNlU3RhdGU9ZTtjLmxhc3RSZW5kZXJlZFN0YXRlPWZ9cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxjLmRpc3BhdGNoXX1cbmZ1bmN0aW9uIG5oKGEsYixjLGQpe2E9e3RhZzphLGNyZWF0ZTpiLGRlc3Ryb3k6YyxkZXBzOmQsbmV4dDpudWxsfTtudWxsPT09WGc/KFhnPXtsYXN0RWZmZWN0Om51bGx9LFhnLmxhc3RFZmZlY3Q9YS5uZXh0PWEpOihiPVhnLmxhc3RFZmZlY3QsbnVsbD09PWI/WGcubGFzdEVmZmVjdD1hLm5leHQ9YTooYz1iLm5leHQsYi5uZXh0PWEsYS5uZXh0PWMsWGcubGFzdEVmZmVjdD1hKSk7cmV0dXJuIGF9ZnVuY3Rpb24gb2goYSxiLGMsZCl7dmFyIGU9amgoKTtZZ3w9YTtlLm1lbW9pemVkU3RhdGU9bmgoYixjLHZvaWQgMCx2b2lkIDA9PT1kP251bGw6ZCl9XG5mdW5jdGlvbiBwaChhLGIsYyxkKXt2YXIgZT1raCgpO2Q9dm9pZCAwPT09ZD9udWxsOmQ7dmFyIGY9dm9pZCAwO2lmKG51bGwhPT1RKXt2YXIgaD1RLm1lbW9pemVkU3RhdGU7Zj1oLmRlc3Ryb3k7aWYobnVsbCE9PWQmJmNoKGQsaC5kZXBzKSl7bmgoSWcsYyxmLGQpO3JldHVybn19WWd8PWE7ZS5tZW1vaXplZFN0YXRlPW5oKGIsYyxmLGQpfWZ1bmN0aW9uIHFoKGEsYil7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGIpcmV0dXJuIGE9YSgpLGIoYSksZnVuY3Rpb24oKXtiKG51bGwpfTtpZihudWxsIT09YiYmdm9pZCAwIT09YilyZXR1cm4gYT1hKCksYi5jdXJyZW50PWEsZnVuY3Rpb24oKXtiLmN1cnJlbnQ9bnVsbH19ZnVuY3Rpb24gcmgoKXt9XG5mdW5jdGlvbiBzaChhLGIsYyl7aWYoISgyNT5haCkpdGhyb3cgdChFcnJvcigzMDEpKTt2YXIgZD1hLmFsdGVybmF0ZTtpZihhPT09U2d8fG51bGwhPT1kJiZkPT09U2cpaWYoWmc9ITAsYT17ZXhwaXJhdGlvblRpbWU6Umcsc3VzcGVuc2VDb25maWc6bnVsbCxhY3Rpb246YyxlYWdlclJlZHVjZXI6bnVsbCxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfSxudWxsPT09JGcmJigkZz1uZXcgTWFwKSxjPSRnLmdldChiKSx2b2lkIDA9PT1jKSRnLnNldChiLGEpO2Vsc2V7Zm9yKGI9YztudWxsIT09Yi5uZXh0OyliPWIubmV4dDtiLm5leHQ9YX1lbHNle3ZhciBlPWNnKCksZj0kZi5zdXNwZW5zZTtlPWRnKGUsYSxmKTtmPXtleHBpcmF0aW9uVGltZTplLHN1c3BlbnNlQ29uZmlnOmYsYWN0aW9uOmMsZWFnZXJSZWR1Y2VyOm51bGwsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH07dmFyIGg9Yi5sYXN0O2lmKG51bGw9PT1oKWYubmV4dD1mO2Vsc2V7dmFyIGc9aC5uZXh0O251bGwhPT1nJiZcbihmLm5leHQ9Zyk7aC5uZXh0PWZ9Yi5sYXN0PWY7aWYoMD09PWEuZXhwaXJhdGlvblRpbWUmJihudWxsPT09ZHx8MD09PWQuZXhwaXJhdGlvblRpbWUpJiYoZD1iLmxhc3RSZW5kZXJlZFJlZHVjZXIsbnVsbCE9PWQpKXRyeXt2YXIgaz1iLmxhc3RSZW5kZXJlZFN0YXRlLGw9ZChrLGMpO2YuZWFnZXJSZWR1Y2VyPWQ7Zi5lYWdlclN0YXRlPWw7aWYoaGQobCxrKSlyZXR1cm59Y2F0Y2gobil7fWZpbmFsbHl7fWVnKGEsZSl9fVxudmFyIGhoPXtyZWFkQ29udGV4dDpNZix1c2VDYWxsYmFjazpiaCx1c2VDb250ZXh0OmJoLHVzZUVmZmVjdDpiaCx1c2VJbXBlcmF0aXZlSGFuZGxlOmJoLHVzZUxheW91dEVmZmVjdDpiaCx1c2VNZW1vOmJoLHVzZVJlZHVjZXI6YmgsdXNlUmVmOmJoLHVzZVN0YXRlOmJoLHVzZURlYnVnVmFsdWU6YmgsdXNlUmVzcG9uZGVyOmJofSxlaD17cmVhZENvbnRleHQ6TWYsdXNlQ2FsbGJhY2s6ZnVuY3Rpb24oYSxiKXtqaCgpLm1lbW9pemVkU3RhdGU9W2Esdm9pZCAwPT09Yj9udWxsOmJdO3JldHVybiBhfSx1c2VDb250ZXh0Ok1mLHVzZUVmZmVjdDpmdW5jdGlvbihhLGIpe3JldHVybiBvaCg1MTYsUGd8T2csYSxiKX0sdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihhLGIsYyl7Yz1udWxsIT09YyYmdm9pZCAwIT09Yz9jLmNvbmNhdChbYV0pOm51bGw7cmV0dXJuIG9oKDQsS2d8TmcscWguYmluZChudWxsLGIsYSksYyl9LHVzZUxheW91dEVmZmVjdDpmdW5jdGlvbihhLGIpe3JldHVybiBvaCg0LFxuS2d8TmcsYSxiKX0sdXNlTWVtbzpmdW5jdGlvbihhLGIpe3ZhciBjPWpoKCk7Yj12b2lkIDA9PT1iP251bGw6YjthPWEoKTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWpoKCk7Yj12b2lkIDAhPT1jP2MoYik6YjtkLm1lbW9pemVkU3RhdGU9ZC5iYXNlU3RhdGU9YjthPWQucXVldWU9e2xhc3Q6bnVsbCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6YSxsYXN0UmVuZGVyZWRTdGF0ZTpifTthPWEuZGlzcGF0Y2g9c2guYmluZChudWxsLFNnLGEpO3JldHVybltkLm1lbW9pemVkU3RhdGUsYV19LHVzZVJlZjpmdW5jdGlvbihhKXt2YXIgYj1qaCgpO2E9e2N1cnJlbnQ6YX07cmV0dXJuIGIubWVtb2l6ZWRTdGF0ZT1hfSx1c2VTdGF0ZTpmdW5jdGlvbihhKXt2YXIgYj1qaCgpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBhJiYoYT1hKCkpO2IubWVtb2l6ZWRTdGF0ZT1iLmJhc2VTdGF0ZT1hO2E9Yi5xdWV1ZT1cbntsYXN0Om51bGwsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmxoLGxhc3RSZW5kZXJlZFN0YXRlOmF9O2E9YS5kaXNwYXRjaD1zaC5iaW5kKG51bGwsU2csYSk7cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxhXX0sdXNlRGVidWdWYWx1ZTpyaCx1c2VSZXNwb25kZXI6a2R9LGZoPXtyZWFkQ29udGV4dDpNZix1c2VDYWxsYmFjazpmdW5jdGlvbihhLGIpe3ZhciBjPWtoKCk7Yj12b2lkIDA9PT1iP251bGw6Yjt2YXIgZD1jLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1iJiZjaChiLGRbMV0pKXJldHVybiBkWzBdO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX0sdXNlQ29udGV4dDpNZix1c2VFZmZlY3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gcGgoNTE2LFBnfE9nLGEsYil9LHVzZUltcGVyYXRpdmVIYW5kbGU6ZnVuY3Rpb24oYSxiLGMpe2M9bnVsbCE9PWMmJnZvaWQgMCE9PWM/Yy5jb25jYXQoW2FdKTpudWxsO3JldHVybiBwaCg0LEtnfE5nLHFoLmJpbmQobnVsbCxcbmIsYSksYyl9LHVzZUxheW91dEVmZmVjdDpmdW5jdGlvbihhLGIpe3JldHVybiBwaCg0LEtnfE5nLGEsYil9LHVzZU1lbW86ZnVuY3Rpb24oYSxiKXt2YXIgYz1raCgpO2I9dm9pZCAwPT09Yj9udWxsOmI7dmFyIGQ9Yy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kJiZudWxsIT09YiYmY2goYixkWzFdKSlyZXR1cm4gZFswXTthPWEoKTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9LHVzZVJlZHVjZXI6bWgsdXNlUmVmOmZ1bmN0aW9uKCl7cmV0dXJuIGtoKCkubWVtb2l6ZWRTdGF0ZX0sdXNlU3RhdGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG1oKGxoLGEpfSx1c2VEZWJ1Z1ZhbHVlOnJoLHVzZVJlc3BvbmRlcjprZH0sdGg9bnVsbCx1aD1udWxsLHZoPSExO1xuZnVuY3Rpb24gd2goYSxiKXt2YXIgYz14aCg1LG51bGwsbnVsbCwwKTtjLmVsZW1lbnRUeXBlPVwiREVMRVRFRFwiO2MudHlwZT1cIkRFTEVURURcIjtjLnN0YXRlTm9kZT1iO2MucmV0dXJuPWE7Yy5lZmZlY3RUYWc9ODtudWxsIT09YS5sYXN0RWZmZWN0PyhhLmxhc3RFZmZlY3QubmV4dEVmZmVjdD1jLGEubGFzdEVmZmVjdD1jKTphLmZpcnN0RWZmZWN0PWEubGFzdEVmZmVjdD1jfWZ1bmN0aW9uIHloKGEsYil7c3dpdGNoKGEudGFnKXtjYXNlIDU6dmFyIGM9YS50eXBlO2I9MSE9PWIubm9kZVR5cGV8fGMudG9Mb3dlckNhc2UoKSE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKT9udWxsOmI7cmV0dXJuIG51bGwhPT1iPyhhLnN0YXRlTm9kZT1iLCEwKTohMTtjYXNlIDY6cmV0dXJuIGI9XCJcIj09PWEucGVuZGluZ1Byb3BzfHwzIT09Yi5ub2RlVHlwZT9udWxsOmIsbnVsbCE9PWI/KGEuc3RhdGVOb2RlPWIsITApOiExO2Nhc2UgMTM6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMX19XG5mdW5jdGlvbiB6aChhKXtpZih2aCl7dmFyIGI9dWg7aWYoYil7dmFyIGM9YjtpZigheWgoYSxiKSl7Yj1OZShjLm5leHRTaWJsaW5nKTtpZighYnx8IXloKGEsYikpe2EuZWZmZWN0VGFnfD0yO3ZoPSExO3RoPWE7cmV0dXJufXdoKHRoLGMpfXRoPWE7dWg9TmUoYi5maXJzdENoaWxkKX1lbHNlIGEuZWZmZWN0VGFnfD0yLHZoPSExLHRoPWF9fWZ1bmN0aW9uIEFoKGEpe2ZvcihhPWEucmV0dXJuO251bGwhPT1hJiY1IT09YS50YWcmJjMhPT1hLnRhZyYmMTghPT1hLnRhZzspYT1hLnJldHVybjt0aD1hfVxuZnVuY3Rpb24gQmgoYSl7aWYoYSE9PXRoKXJldHVybiExO2lmKCF2aClyZXR1cm4gQWgoYSksdmg9ITAsITE7dmFyIGI9YS50eXBlO2lmKDUhPT1hLnRhZ3x8XCJoZWFkXCIhPT1iJiZcImJvZHlcIiE9PWImJiFLZShiLGEubWVtb2l6ZWRQcm9wcykpZm9yKGI9dWg7Yjspd2goYSxiKSxiPU5lKGIubmV4dFNpYmxpbmcpO0FoKGEpO3VoPXRoP05lKGEuc3RhdGVOb2RlLm5leHRTaWJsaW5nKTpudWxsO3JldHVybiEwfWZ1bmN0aW9uIENoKCl7dWg9dGg9bnVsbDt2aD0hMX12YXIgRGg9WGIuUmVhY3RDdXJyZW50T3duZXIsTGY9ITE7ZnVuY3Rpb24gUyhhLGIsYyxkKXtiLmNoaWxkPW51bGw9PT1hP3VnKGIsbnVsbCxjLGQpOnRnKGIsYS5jaGlsZCxjLGQpfVxuZnVuY3Rpb24gRWgoYSxiLGMsZCxlKXtjPWMucmVuZGVyO3ZhciBmPWIucmVmO0tmKGIsZSk7ZD1kaChhLGIsYyxkLGYsZSk7aWYobnVsbCE9PWEmJiFMZilyZXR1cm4gYi51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlLGIuZWZmZWN0VGFnJj0tNTE3LGEuZXhwaXJhdGlvblRpbWU8PWUmJihhLmV4cGlyYXRpb25UaW1lPTApLEZoKGEsYixlKTtiLmVmZmVjdFRhZ3w9MTtTKGEsYixkLGUpO3JldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gR2goYSxiLGMsZCxlLGYpe2lmKG51bGw9PT1hKXt2YXIgaD1jLnR5cGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGgmJiFIaChoKSYmdm9pZCAwPT09aC5kZWZhdWx0UHJvcHMmJm51bGw9PT1jLmNvbXBhcmUmJnZvaWQgMD09PWMuZGVmYXVsdFByb3BzKXJldHVybiBiLnRhZz0xNSxiLnR5cGU9aCxJaChhLGIsaCxkLGUsZik7YT1xZyhjLnR5cGUsbnVsbCxkLG51bGwsYi5tb2RlLGYpO2EucmVmPWIucmVmO2EucmV0dXJuPWI7cmV0dXJuIGIuY2hpbGQ9YX1oPWEuY2hpbGQ7aWYoZTxmJiYoZT1oLm1lbW9pemVkUHJvcHMsYz1jLmNvbXBhcmUsYz1udWxsIT09Yz9jOmpkLGMoZSxkKSYmYS5yZWY9PT1iLnJlZikpcmV0dXJuIEZoKGEsYixmKTtiLmVmZmVjdFRhZ3w9MTthPW9nKGgsZCxmKTthLnJlZj1iLnJlZjthLnJldHVybj1iO3JldHVybiBiLmNoaWxkPWF9XG5mdW5jdGlvbiBJaChhLGIsYyxkLGUsZil7cmV0dXJuIG51bGwhPT1hJiZqZChhLm1lbW9pemVkUHJvcHMsZCkmJmEucmVmPT09Yi5yZWYmJihMZj0hMSxlPGYpP0ZoKGEsYixmKTpKaChhLGIsYyxkLGYpfWZ1bmN0aW9uIEtoKGEsYil7dmFyIGM9Yi5yZWY7aWYobnVsbD09PWEmJm51bGwhPT1jfHxudWxsIT09YSYmYS5yZWYhPT1jKWIuZWZmZWN0VGFnfD0xMjh9ZnVuY3Rpb24gSmgoYSxiLGMsZCxlKXt2YXIgZj1OKGMpP1JlOkwuY3VycmVudDtmPVNlKGIsZik7S2YoYixlKTtjPWRoKGEsYixjLGQsZixlKTtpZihudWxsIT09YSYmIUxmKXJldHVybiBiLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsYi5lZmZlY3RUYWcmPS01MTcsYS5leHBpcmF0aW9uVGltZTw9ZSYmKGEuZXhwaXJhdGlvblRpbWU9MCksRmgoYSxiLGUpO2IuZWZmZWN0VGFnfD0xO1MoYSxiLGMsZSk7cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiBMaChhLGIsYyxkLGUpe2lmKE4oYykpe3ZhciBmPSEwO1hlKGIpfWVsc2UgZj0hMTtLZihiLGUpO2lmKG51bGw9PT1iLnN0YXRlTm9kZSludWxsIT09YSYmKGEuYWx0ZXJuYXRlPW51bGwsYi5hbHRlcm5hdGU9bnVsbCxiLmVmZmVjdFRhZ3w9MiksaGcoYixjLGQsZSksamcoYixjLGQsZSksZD0hMDtlbHNlIGlmKG51bGw9PT1hKXt2YXIgaD1iLnN0YXRlTm9kZSxnPWIubWVtb2l6ZWRQcm9wcztoLnByb3BzPWc7dmFyIGs9aC5jb250ZXh0LGw9Yy5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGwmJm51bGwhPT1sP2w9TWYobCk6KGw9TihjKT9SZTpMLmN1cnJlbnQsbD1TZShiLGwpKTt2YXIgbj1jLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyx6PVwiZnVuY3Rpb25cIj09PXR5cGVvZiBufHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgaC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZTt6fHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgaC5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmXG5cImZ1bmN0aW9uXCIhPT10eXBlb2YgaC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHwoZyE9PWR8fGshPT1sKSYmaWcoYixoLGQsbCk7TmY9ITE7dmFyIHg9Yi5tZW1vaXplZFN0YXRlO2s9aC5zdGF0ZT14O3ZhciB2PWIudXBkYXRlUXVldWU7bnVsbCE9PXYmJihXZihiLHYsZCxoLGUpLGs9Yi5tZW1vaXplZFN0YXRlKTtnIT09ZHx8eCE9PWt8fE0uY3VycmVudHx8TmY/KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBuJiYoYmcoYixjLG4sZCksaz1iLm1lbW9pemVkU3RhdGUpLChnPU5mfHxnZyhiLGMsZyxkLHgsayxsKSk/KHp8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBoLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBoLmNvbXBvbmVudFdpbGxNb3VudHx8KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBoLmNvbXBvbmVudFdpbGxNb3VudCYmaC5jb21wb25lbnRXaWxsTW91bnQoKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgaC5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcbmguVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgaC5jb21wb25lbnREaWRNb3VudCYmKGIuZWZmZWN0VGFnfD00KSk6KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBoLmNvbXBvbmVudERpZE1vdW50JiYoYi5lZmZlY3RUYWd8PTQpLGIubWVtb2l6ZWRQcm9wcz1kLGIubWVtb2l6ZWRTdGF0ZT1rKSxoLnByb3BzPWQsaC5zdGF0ZT1rLGguY29udGV4dD1sLGQ9Zyk6KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBoLmNvbXBvbmVudERpZE1vdW50JiYoYi5lZmZlY3RUYWd8PTQpLGQ9ITEpfWVsc2UgaD1iLnN0YXRlTm9kZSxnPWIubWVtb2l6ZWRQcm9wcyxoLnByb3BzPWIudHlwZT09PWIuZWxlbWVudFR5cGU/ZzpBZihiLnR5cGUsZyksaz1oLmNvbnRleHQsbD1jLmNvbnRleHRUeXBlLFwib2JqZWN0XCI9PT10eXBlb2YgbCYmbnVsbCE9PWw/bD1NZihsKToobD1OKGMpP1JlOkwuY3VycmVudCxsPVNlKGIsbCkpLG49Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMsKHo9XG5cImZ1bmN0aW9uXCI9PT10eXBlb2Ygbnx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGguZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUpfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgaC5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGguY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KGchPT1kfHxrIT09bCkmJmlnKGIsaCxkLGwpLE5mPSExLGs9Yi5tZW1vaXplZFN0YXRlLHg9aC5zdGF0ZT1rLHY9Yi51cGRhdGVRdWV1ZSxudWxsIT09diYmKFdmKGIsdixkLGgsZSkseD1iLm1lbW9pemVkU3RhdGUpLGchPT1kfHxrIT09eHx8TS5jdXJyZW50fHxOZj8oXCJmdW5jdGlvblwiPT09dHlwZW9mIG4mJihiZyhiLGMsbixkKSx4PWIubWVtb2l6ZWRTdGF0ZSksKG49TmZ8fGdnKGIsYyxnLGQsayx4LGwpKT8oenx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGguVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBoLmNvbXBvbmVudFdpbGxVcGRhdGV8fFxuKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBoLmNvbXBvbmVudFdpbGxVcGRhdGUmJmguY29tcG9uZW50V2lsbFVwZGF0ZShkLHgsbCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGguVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJmguVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUoZCx4LGwpKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgaC5jb21wb25lbnREaWRVcGRhdGUmJihiLmVmZmVjdFRhZ3w9NCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGguZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUmJihiLmVmZmVjdFRhZ3w9MjU2KSk6KFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBoLmNvbXBvbmVudERpZFVwZGF0ZXx8Zz09PWEubWVtb2l6ZWRQcm9wcyYmaz09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZWZmZWN0VGFnfD00KSxcImZ1bmN0aW9uXCIhPT10eXBlb2YgaC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8Zz09PWEubWVtb2l6ZWRQcm9wcyYmaz09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZWZmZWN0VGFnfD0yNTYpLGIubWVtb2l6ZWRQcm9wcz1cbmQsYi5tZW1vaXplZFN0YXRlPXgpLGgucHJvcHM9ZCxoLnN0YXRlPXgsaC5jb250ZXh0PWwsZD1uKTooXCJmdW5jdGlvblwiIT09dHlwZW9mIGguY29tcG9uZW50RGlkVXBkYXRlfHxnPT09YS5tZW1vaXplZFByb3BzJiZrPT09YS5tZW1vaXplZFN0YXRlfHwoYi5lZmZlY3RUYWd8PTQpLFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBoLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxnPT09YS5tZW1vaXplZFByb3BzJiZrPT09YS5tZW1vaXplZFN0YXRlfHwoYi5lZmZlY3RUYWd8PTI1NiksZD0hMSk7cmV0dXJuIE1oKGEsYixjLGQsZixlKX1cbmZ1bmN0aW9uIE1oKGEsYixjLGQsZSxmKXtLaChhLGIpO3ZhciBoPTAhPT0oYi5lZmZlY3RUYWcmNjQpO2lmKCFkJiYhaClyZXR1cm4gZSYmWWUoYixjLCExKSxGaChhLGIsZik7ZD1iLnN0YXRlTm9kZTtEaC5jdXJyZW50PWI7dmFyIGc9aCYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGMuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yP251bGw6ZC5yZW5kZXIoKTtiLmVmZmVjdFRhZ3w9MTtudWxsIT09YSYmaD8oYi5jaGlsZD10ZyhiLGEuY2hpbGQsbnVsbCxmKSxiLmNoaWxkPXRnKGIsbnVsbCxnLGYpKTpTKGEsYixnLGYpO2IubWVtb2l6ZWRTdGF0ZT1kLnN0YXRlO2UmJlllKGIsYywhMCk7cmV0dXJuIGIuY2hpbGR9ZnVuY3Rpb24gTmgoYSl7dmFyIGI9YS5zdGF0ZU5vZGU7Yi5wZW5kaW5nQ29udGV4dD9WZShhLGIucGVuZGluZ0NvbnRleHQsYi5wZW5kaW5nQ29udGV4dCE9PWIuY29udGV4dCk6Yi5jb250ZXh0JiZWZShhLGIuY29udGV4dCwhMSk7QWcoYSxiLmNvbnRhaW5lckluZm8pfVxudmFyIE9oPXt9O1xuZnVuY3Rpb24gUGgoYSxiLGMpe3ZhciBkPWIubW9kZSxlPWIucGVuZGluZ1Byb3BzLGY9UC5jdXJyZW50LGg9bnVsbCxnPSExLGs7KGs9MCE9PShiLmVmZmVjdFRhZyY2NCkpfHwoaz0wIT09KGYmR2cpJiYobnVsbD09PWF8fG51bGwhPT1hLm1lbW9pemVkU3RhdGUpKTtrPyhoPU9oLGc9ITAsYi5lZmZlY3RUYWcmPS02NSk6bnVsbCE9PWEmJm51bGw9PT1hLm1lbW9pemVkU3RhdGV8fHZvaWQgMD09PWUuZmFsbGJhY2t8fCEwPT09ZS51bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFja3x8KGZ8PUZnKTtmJj1FZztKKFAsZixiKTtpZihudWxsPT09YSlpZihnKXtlPWUuZmFsbGJhY2s7YT1zZyhudWxsLGQsMCxudWxsKTthLnJldHVybj1iO2lmKDA9PT0oYi5tb2RlJjIpKWZvcihnPW51bGwhPT1iLm1lbW9pemVkU3RhdGU/Yi5jaGlsZC5jaGlsZDpiLmNoaWxkLGEuY2hpbGQ9ZztudWxsIT09ZzspZy5yZXR1cm49YSxnPWcuc2libGluZztjPXNnKGUsZCxjLG51bGwpO2MucmV0dXJuPWI7YS5zaWJsaW5nPVxuYztkPWF9ZWxzZSBkPWM9dWcoYixudWxsLGUuY2hpbGRyZW4sYyk7ZWxzZXtpZihudWxsIT09YS5tZW1vaXplZFN0YXRlKWlmKGY9YS5jaGlsZCxkPWYuc2libGluZyxnKXtlPWUuZmFsbGJhY2s7Yz1vZyhmLGYucGVuZGluZ1Byb3BzLDApO2MucmV0dXJuPWI7aWYoMD09PShiLm1vZGUmMikmJihnPW51bGwhPT1iLm1lbW9pemVkU3RhdGU/Yi5jaGlsZC5jaGlsZDpiLmNoaWxkLGchPT1mLmNoaWxkKSlmb3IoYy5jaGlsZD1nO251bGwhPT1nOylnLnJldHVybj1jLGc9Zy5zaWJsaW5nO2U9b2coZCxlLGQuZXhwaXJhdGlvblRpbWUpO2UucmV0dXJuPWI7Yy5zaWJsaW5nPWU7ZD1jO2MuY2hpbGRFeHBpcmF0aW9uVGltZT0wO2M9ZX1lbHNlIGQ9Yz10ZyhiLGYuY2hpbGQsZS5jaGlsZHJlbixjKTtlbHNlIGlmKGY9YS5jaGlsZCxnKXtnPWUuZmFsbGJhY2s7ZT1zZyhudWxsLGQsMCxudWxsKTtlLnJldHVybj1iO2UuY2hpbGQ9ZjtudWxsIT09ZiYmKGYucmV0dXJuPWUpO2lmKDA9PT0oYi5tb2RlJlxuMikpZm9yKGY9bnVsbCE9PWIubWVtb2l6ZWRTdGF0ZT9iLmNoaWxkLmNoaWxkOmIuY2hpbGQsZS5jaGlsZD1mO251bGwhPT1mOylmLnJldHVybj1lLGY9Zi5zaWJsaW5nO2M9c2coZyxkLGMsbnVsbCk7Yy5yZXR1cm49YjtlLnNpYmxpbmc9YztjLmVmZmVjdFRhZ3w9MjtkPWU7ZS5jaGlsZEV4cGlyYXRpb25UaW1lPTB9ZWxzZSBjPWQ9dGcoYixmLGUuY2hpbGRyZW4sYyk7Yi5zdGF0ZU5vZGU9YS5zdGF0ZU5vZGV9Yi5tZW1vaXplZFN0YXRlPWg7Yi5jaGlsZD1kO3JldHVybiBjfWZ1bmN0aW9uIFFoKGEsYixjLGQsZSl7dmFyIGY9YS5tZW1vaXplZFN0YXRlO251bGw9PT1mP2EubWVtb2l6ZWRTdGF0ZT17aXNCYWNrd2FyZHM6YixyZW5kZXJpbmc6bnVsbCxsYXN0OmQsdGFpbDpjLHRhaWxFeHBpcmF0aW9uOjAsdGFpbE1vZGU6ZX06KGYuaXNCYWNrd2FyZHM9YixmLnJlbmRlcmluZz1udWxsLGYubGFzdD1kLGYudGFpbD1jLGYudGFpbEV4cGlyYXRpb249MCxmLnRhaWxNb2RlPWUpfVxuZnVuY3Rpb24gUmgoYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9ZC5yZXZlYWxPcmRlcixmPWQudGFpbDtTKGEsYixkLmNoaWxkcmVuLGMpO2Q9UC5jdXJyZW50O2lmKDAhPT0oZCZHZykpZD1kJkVnfEdnLGIuZWZmZWN0VGFnfD02NDtlbHNle2lmKG51bGwhPT1hJiYwIT09KGEuZWZmZWN0VGFnJjY0KSlhOmZvcihhPWIuY2hpbGQ7bnVsbCE9PWE7KXtpZigxMz09PWEudGFnKXtpZihudWxsIT09YS5tZW1vaXplZFN0YXRlKXthLmV4cGlyYXRpb25UaW1lPGMmJihhLmV4cGlyYXRpb25UaW1lPWMpO3ZhciBoPWEuYWx0ZXJuYXRlO251bGwhPT1oJiZoLmV4cGlyYXRpb25UaW1lPGMmJihoLmV4cGlyYXRpb25UaW1lPWMpO0pmKGEucmV0dXJuLGMpfX1lbHNlIGlmKG51bGwhPT1hLmNoaWxkKXthLmNoaWxkLnJldHVybj1hO2E9YS5jaGlsZDtjb250aW51ZX1pZihhPT09YilicmVhayBhO2Zvcig7bnVsbD09PWEuc2libGluZzspe2lmKG51bGw9PT1hLnJldHVybnx8YS5yZXR1cm49PT1cbmIpYnJlYWsgYTthPWEucmV0dXJufWEuc2libGluZy5yZXR1cm49YS5yZXR1cm47YT1hLnNpYmxpbmd9ZCY9RWd9SihQLGQsYik7aWYoMD09PShiLm1vZGUmMikpYi5tZW1vaXplZFN0YXRlPW51bGw7ZWxzZSBzd2l0Y2goZSl7Y2FzZSBcImZvcndhcmRzXCI6Yz1iLmNoaWxkO2ZvcihlPW51bGw7bnVsbCE9PWM7KWQ9Yy5hbHRlcm5hdGUsbnVsbCE9PWQmJm51bGw9PT1IZyhkKSYmKGU9YyksYz1jLnNpYmxpbmc7Yz1lO251bGw9PT1jPyhlPWIuY2hpbGQsYi5jaGlsZD1udWxsKTooZT1jLnNpYmxpbmcsYy5zaWJsaW5nPW51bGwpO1FoKGIsITEsZSxjLGYpO2JyZWFrO2Nhc2UgXCJiYWNrd2FyZHNcIjpjPW51bGw7ZT1iLmNoaWxkO2ZvcihiLmNoaWxkPW51bGw7bnVsbCE9PWU7KXtkPWUuYWx0ZXJuYXRlO2lmKG51bGwhPT1kJiZudWxsPT09SGcoZCkpe2IuY2hpbGQ9ZTticmVha31kPWUuc2libGluZztlLnNpYmxpbmc9YztjPWU7ZT1kfVFoKGIsITAsYyxudWxsLGYpO2JyZWFrO2Nhc2UgXCJ0b2dldGhlclwiOlFoKGIsXG4hMSxudWxsLG51bGwsdm9pZCAwKTticmVhaztkZWZhdWx0OmIubWVtb2l6ZWRTdGF0ZT1udWxsfXJldHVybiBiLmNoaWxkfWZ1bmN0aW9uIEZoKGEsYixjKXtudWxsIT09YSYmKGIuZGVwZW5kZW5jaWVzPWEuZGVwZW5kZW5jaWVzKTtpZihiLmNoaWxkRXhwaXJhdGlvblRpbWU8YylyZXR1cm4gbnVsbDtpZihudWxsIT09YSYmYi5jaGlsZCE9PWEuY2hpbGQpdGhyb3cgdChFcnJvcigxNTMpKTtpZihudWxsIT09Yi5jaGlsZCl7YT1iLmNoaWxkO2M9b2coYSxhLnBlbmRpbmdQcm9wcyxhLmV4cGlyYXRpb25UaW1lKTtiLmNoaWxkPWM7Zm9yKGMucmV0dXJuPWI7bnVsbCE9PWEuc2libGluZzspYT1hLnNpYmxpbmcsYz1jLnNpYmxpbmc9b2coYSxhLnBlbmRpbmdQcm9wcyxhLmV4cGlyYXRpb25UaW1lKSxjLnJldHVybj1iO2Muc2libGluZz1udWxsfXJldHVybiBiLmNoaWxkfWZ1bmN0aW9uIFNoKGEpe2EuZWZmZWN0VGFnfD00fVxudmFyIFRoPXZvaWQgMCxVaD12b2lkIDAsVmg9dm9pZCAwLFdoPXZvaWQgMDtUaD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1iLmNoaWxkO251bGwhPT1jOyl7aWYoNT09PWMudGFnfHw2PT09Yy50YWcpYS5hcHBlbmRDaGlsZChjLnN0YXRlTm9kZSk7ZWxzZSBpZigyMD09PWMudGFnKWEuYXBwZW5kQ2hpbGQoYy5zdGF0ZU5vZGUuaW5zdGFuY2UpO2Vsc2UgaWYoNCE9PWMudGFnJiZudWxsIT09Yy5jaGlsZCl7Yy5jaGlsZC5yZXR1cm49YztjPWMuY2hpbGQ7Y29udGludWV9aWYoYz09PWIpYnJlYWs7Zm9yKDtudWxsPT09Yy5zaWJsaW5nOyl7aWYobnVsbD09PWMucmV0dXJufHxjLnJldHVybj09PWIpcmV0dXJuO2M9Yy5yZXR1cm59Yy5zaWJsaW5nLnJldHVybj1jLnJldHVybjtjPWMuc2libGluZ319O1VoPWZ1bmN0aW9uKCl7fTtcblZoPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9YS5tZW1vaXplZFByb3BzO2lmKGYhPT1kKXt2YXIgaD1iLnN0YXRlTm9kZTt6Zyh3Zy5jdXJyZW50KTthPW51bGw7c3dpdGNoKGMpe2Nhc2UgXCJpbnB1dFwiOmY9QmMoaCxmKTtkPUJjKGgsZCk7YT1bXTticmVhaztjYXNlIFwib3B0aW9uXCI6Zj1sZShoLGYpO2Q9bGUoaCxkKTthPVtdO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpmPW0oe30sZix7dmFsdWU6dm9pZCAwfSk7ZD1tKHt9LGQse3ZhbHVlOnZvaWQgMH0pO2E9W107YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6Zj1uZShoLGYpO2Q9bmUoaCxkKTthPVtdO2JyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiIT09dHlwZW9mIGYub25DbGljayYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGQub25DbGljayYmKGgub25jbGljaz1HZSl9RGUoYyxkKTtoPWM9dm9pZCAwO3ZhciBnPW51bGw7Zm9yKGMgaW4gZilpZighZC5oYXNPd25Qcm9wZXJ0eShjKSYmZi5oYXNPd25Qcm9wZXJ0eShjKSYmbnVsbCE9ZltjXSlpZihcInN0eWxlXCI9PT1cbmMpe3ZhciBrPWZbY107Zm9yKGggaW4gaylrLmhhc093blByb3BlcnR5KGgpJiYoZ3x8KGc9e30pLGdbaF09XCJcIil9ZWxzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIiE9PWMmJlwiY2hpbGRyZW5cIiE9PWMmJlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1jJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09YyYmXCJhdXRvRm9jdXNcIiE9PWMmJihpYS5oYXNPd25Qcm9wZXJ0eShjKT9hfHwoYT1bXSk6KGE9YXx8W10pLnB1c2goYyxudWxsKSk7Zm9yKGMgaW4gZCl7dmFyIGw9ZFtjXTtrPW51bGwhPWY/ZltjXTp2b2lkIDA7aWYoZC5oYXNPd25Qcm9wZXJ0eShjKSYmbCE9PWsmJihudWxsIT1sfHxudWxsIT1rKSlpZihcInN0eWxlXCI9PT1jKWlmKGspe2ZvcihoIGluIGspIWsuaGFzT3duUHJvcGVydHkoaCl8fGwmJmwuaGFzT3duUHJvcGVydHkoaCl8fChnfHwoZz17fSksZ1toXT1cIlwiKTtmb3IoaCBpbiBsKWwuaGFzT3duUHJvcGVydHkoaCkmJmtbaF0hPT1sW2hdJiYoZ3x8XG4oZz17fSksZ1toXT1sW2hdKX1lbHNlIGd8fChhfHwoYT1bXSksYS5wdXNoKGMsZykpLGc9bDtlbHNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09Yz8obD1sP2wuX19odG1sOnZvaWQgMCxrPWs/ay5fX2h0bWw6dm9pZCAwLG51bGwhPWwmJmshPT1sJiYoYT1hfHxbXSkucHVzaChjLFwiXCIrbCkpOlwiY2hpbGRyZW5cIj09PWM/az09PWx8fFwic3RyaW5nXCIhPT10eXBlb2YgbCYmXCJudW1iZXJcIiE9PXR5cGVvZiBsfHwoYT1hfHxbXSkucHVzaChjLFwiXCIrbCk6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWMmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1jJiYoaWEuaGFzT3duUHJvcGVydHkoYyk/KG51bGwhPWwmJkZlKGUsYyksYXx8az09PWx8fChhPVtdKSk6KGE9YXx8W10pLnB1c2goYyxsKSl9ZyYmKGE9YXx8W10pLnB1c2goXCJzdHlsZVwiLGcpO2U9YTsoYi51cGRhdGVRdWV1ZT1lKSYmU2goYil9fTtXaD1mdW5jdGlvbihhLGIsYyxkKXtjIT09ZCYmU2goYil9O1xuZnVuY3Rpb24gJGgoYSxiKXtzd2l0Y2goYS50YWlsTW9kZSl7Y2FzZSBcImhpZGRlblwiOmI9YS50YWlsO2Zvcih2YXIgYz1udWxsO251bGwhPT1iOyludWxsIT09Yi5hbHRlcm5hdGUmJihjPWIpLGI9Yi5zaWJsaW5nO251bGw9PT1jP2EudGFpbD1udWxsOmMuc2libGluZz1udWxsO2JyZWFrO2Nhc2UgXCJjb2xsYXBzZWRcIjpjPWEudGFpbDtmb3IodmFyIGQ9bnVsbDtudWxsIT09YzspbnVsbCE9PWMuYWx0ZXJuYXRlJiYoZD1jKSxjPWMuc2libGluZztudWxsPT09ZD9ifHxudWxsPT09YS50YWlsP2EudGFpbD1udWxsOmEudGFpbC5zaWJsaW5nPW51bGw6ZC5zaWJsaW5nPW51bGx9fVxuZnVuY3Rpb24gYWkoYSl7c3dpdGNoKGEudGFnKXtjYXNlIDE6TihhLnR5cGUpJiZUZShhKTt2YXIgYj1hLmVmZmVjdFRhZztyZXR1cm4gYiYyMDQ4PyhhLmVmZmVjdFRhZz1iJi0yMDQ5fDY0LGEpOm51bGw7Y2FzZSAzOkJnKGEpO1VlKGEpO2I9YS5lZmZlY3RUYWc7aWYoMCE9PShiJjY0KSl0aHJvdyB0KEVycm9yKDI4NSkpO2EuZWZmZWN0VGFnPWImLTIwNDl8NjQ7cmV0dXJuIGE7Y2FzZSA1OnJldHVybiBEZyhhKSxudWxsO2Nhc2UgMTM6cmV0dXJuIEgoUCxhKSxiPWEuZWZmZWN0VGFnLGImMjA0OD8oYS5lZmZlY3RUYWc9YiYtMjA0OXw2NCxhKTpudWxsO2Nhc2UgMTg6cmV0dXJuIG51bGw7Y2FzZSAxOTpyZXR1cm4gSChQLGEpLG51bGw7Y2FzZSA0OnJldHVybiBCZyhhKSxudWxsO2Nhc2UgMTA6cmV0dXJuIElmKGEpLG51bGw7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gYmkoYSxiKXtyZXR1cm57dmFsdWU6YSxzb3VyY2U6YixzdGFjazpwYyhiKX19XG52YXIgY2k9XCJmdW5jdGlvblwiPT09dHlwZW9mIFdlYWtTZXQ/V2Vha1NldDpTZXQ7ZnVuY3Rpb24gZGkoYSxiKXt2YXIgYz1iLnNvdXJjZSxkPWIuc3RhY2s7bnVsbD09PWQmJm51bGwhPT1jJiYoZD1wYyhjKSk7bnVsbCE9PWMmJm9jKGMudHlwZSk7Yj1iLnZhbHVlO251bGwhPT1hJiYxPT09YS50YWcmJm9jKGEudHlwZSk7dHJ5e2NvbnNvbGUuZXJyb3IoYil9Y2F0Y2goZSl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGU7fSl9fWZ1bmN0aW9uIGVpKGEsYil7dHJ5e2IucHJvcHM9YS5tZW1vaXplZFByb3BzLGIuc3RhdGU9YS5tZW1vaXplZFN0YXRlLGIuY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaChjKXtmaShhLGMpfX1mdW5jdGlvbiBnaShhKXt2YXIgYj1hLnJlZjtpZihudWxsIT09YilpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYil0cnl7YihudWxsKX1jYXRjaChjKXtmaShhLGMpfWVsc2UgYi5jdXJyZW50PW51bGx9XG5mdW5jdGlvbiBoaShhLGIsYyl7Yz1jLnVwZGF0ZVF1ZXVlO2M9bnVsbCE9PWM/Yy5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWMpe3ZhciBkPWM9Yy5uZXh0O2Rve2lmKChkLnRhZyZhKSE9PUlnKXt2YXIgZT1kLmRlc3Ryb3k7ZC5kZXN0cm95PXZvaWQgMDt2b2lkIDAhPT1lJiZlKCl9KGQudGFnJmIpIT09SWcmJihlPWQuY3JlYXRlLGQuZGVzdHJveT1lKCkpO2Q9ZC5uZXh0fXdoaWxlKGQhPT1jKX19XG5mdW5jdGlvbiBpaShhLGIpe1wiZnVuY3Rpb25cIj09PXR5cGVvZiBqaSYmamkoYSk7c3dpdGNoKGEudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6dmFyIGM9YS51cGRhdGVRdWV1ZTtpZihudWxsIT09YyYmKGM9Yy5sYXN0RWZmZWN0LG51bGwhPT1jKSl7dmFyIGQ9Yy5uZXh0O3ZmKDk3PGI/OTc6YixmdW5jdGlvbigpe3ZhciBiPWQ7ZG97dmFyIGM9Yi5kZXN0cm95O2lmKHZvaWQgMCE9PWMpe3ZhciBoPWE7dHJ5e2MoKX1jYXRjaChnKXtmaShoLGcpfX1iPWIubmV4dH13aGlsZShiIT09ZCl9KX1icmVhaztjYXNlIDE6Z2koYSk7Yj1hLnN0YXRlTm9kZTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5jb21wb25lbnRXaWxsVW5tb3VudCYmZWkoYSxiKTticmVhaztjYXNlIDU6Z2koYSk7YnJlYWs7Y2FzZSA0OmtpKGEsYil9fVxuZnVuY3Rpb24gbGkoYSxiKXtmb3IodmFyIGM9YTs7KWlmKGlpKGMsYiksbnVsbCE9PWMuY2hpbGQmJjQhPT1jLnRhZyljLmNoaWxkLnJldHVybj1jLGM9Yy5jaGlsZDtlbHNle2lmKGM9PT1hKWJyZWFrO2Zvcig7bnVsbD09PWMuc2libGluZzspe2lmKG51bGw9PT1jLnJldHVybnx8Yy5yZXR1cm49PT1hKXJldHVybjtjPWMucmV0dXJufWMuc2libGluZy5yZXR1cm49Yy5yZXR1cm47Yz1jLnNpYmxpbmd9fWZ1bmN0aW9uIG1pKGEpe3JldHVybiA1PT09YS50YWd8fDM9PT1hLnRhZ3x8ND09PWEudGFnfVxuZnVuY3Rpb24gbmkoYSl7YTp7Zm9yKHZhciBiPWEucmV0dXJuO251bGwhPT1iOyl7aWYobWkoYikpe3ZhciBjPWI7YnJlYWsgYX1iPWIucmV0dXJufXRocm93IHQoRXJyb3IoMTYwKSk7fWI9Yy5zdGF0ZU5vZGU7c3dpdGNoKGMudGFnKXtjYXNlIDU6dmFyIGQ9ITE7YnJlYWs7Y2FzZSAzOmI9Yi5jb250YWluZXJJbmZvO2Q9ITA7YnJlYWs7Y2FzZSA0OmI9Yi5jb250YWluZXJJbmZvO2Q9ITA7YnJlYWs7ZGVmYXVsdDp0aHJvdyB0KEVycm9yKDE2MSkpO31jLmVmZmVjdFRhZyYxNiYmKHdlKGIsXCJcIiksYy5lZmZlY3RUYWcmPS0xNyk7YTpiOmZvcihjPWE7Oyl7Zm9yKDtudWxsPT09Yy5zaWJsaW5nOyl7aWYobnVsbD09PWMucmV0dXJufHxtaShjLnJldHVybikpe2M9bnVsbDticmVhayBhfWM9Yy5yZXR1cm59Yy5zaWJsaW5nLnJldHVybj1jLnJldHVybjtmb3IoYz1jLnNpYmxpbmc7NSE9PWMudGFnJiY2IT09Yy50YWcmJjE4IT09Yy50YWc7KXtpZihjLmVmZmVjdFRhZyYyKWNvbnRpbnVlIGI7XG5pZihudWxsPT09Yy5jaGlsZHx8ND09PWMudGFnKWNvbnRpbnVlIGI7ZWxzZSBjLmNoaWxkLnJldHVybj1jLGM9Yy5jaGlsZH1pZighKGMuZWZmZWN0VGFnJjIpKXtjPWMuc3RhdGVOb2RlO2JyZWFrIGF9fWZvcih2YXIgZT1hOzspe3ZhciBmPTU9PT1lLnRhZ3x8Nj09PWUudGFnO2lmKGZ8fDIwPT09ZS50YWcpe3ZhciBoPWY/ZS5zdGF0ZU5vZGU6ZS5zdGF0ZU5vZGUuaW5zdGFuY2U7aWYoYylpZihkKXtmPWI7dmFyIGc9aDtoPWM7OD09PWYubm9kZVR5cGU/Zi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnLGgpOmYuaW5zZXJ0QmVmb3JlKGcsaCl9ZWxzZSBiLmluc2VydEJlZm9yZShoLGMpO2Vsc2UgZD8oZz1iLDg9PT1nLm5vZGVUeXBlPyhmPWcucGFyZW50Tm9kZSxmLmluc2VydEJlZm9yZShoLGcpKTooZj1nLGYuYXBwZW5kQ2hpbGQoaCkpLGc9Zy5fcmVhY3RSb290Q29udGFpbmVyLG51bGwhPT1nJiZ2b2lkIDAhPT1nfHxudWxsIT09Zi5vbmNsaWNrfHwoZi5vbmNsaWNrPUdlKSk6XG5iLmFwcGVuZENoaWxkKGgpfWVsc2UgaWYoNCE9PWUudGFnJiZudWxsIT09ZS5jaGlsZCl7ZS5jaGlsZC5yZXR1cm49ZTtlPWUuY2hpbGQ7Y29udGludWV9aWYoZT09PWEpYnJlYWs7Zm9yKDtudWxsPT09ZS5zaWJsaW5nOyl7aWYobnVsbD09PWUucmV0dXJufHxlLnJldHVybj09PWEpcmV0dXJuO2U9ZS5yZXR1cm59ZS5zaWJsaW5nLnJldHVybj1lLnJldHVybjtlPWUuc2libGluZ319XG5mdW5jdGlvbiBraShhLGIpe2Zvcih2YXIgYz1hLGQ9ITEsZT12b2lkIDAsZj12b2lkIDA7Oyl7aWYoIWQpe2Q9Yy5yZXR1cm47YTpmb3IoOzspe2lmKG51bGw9PT1kKXRocm93IHQoRXJyb3IoMTYwKSk7ZT1kLnN0YXRlTm9kZTtzd2l0Y2goZC50YWcpe2Nhc2UgNTpmPSExO2JyZWFrIGE7Y2FzZSAzOmU9ZS5jb250YWluZXJJbmZvO2Y9ITA7YnJlYWsgYTtjYXNlIDQ6ZT1lLmNvbnRhaW5lckluZm87Zj0hMDticmVhayBhfWQ9ZC5yZXR1cm59ZD0hMH1pZig1PT09Yy50YWd8fDY9PT1jLnRhZylpZihsaShjLGIpLGYpe3ZhciBoPWUsZz1jLnN0YXRlTm9kZTs4PT09aC5ub2RlVHlwZT9oLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZyk6aC5yZW1vdmVDaGlsZChnKX1lbHNlIGUucmVtb3ZlQ2hpbGQoYy5zdGF0ZU5vZGUpO2Vsc2UgaWYoMjA9PT1jLnRhZylnPWMuc3RhdGVOb2RlLmluc3RhbmNlLGxpKGMsYiksZj8oaD1lLDg9PT1oLm5vZGVUeXBlP2gucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChnKTpcbmgucmVtb3ZlQ2hpbGQoZykpOmUucmVtb3ZlQ2hpbGQoZyk7ZWxzZSBpZig0PT09Yy50YWcpe2lmKG51bGwhPT1jLmNoaWxkKXtlPWMuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87Zj0hMDtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX19ZWxzZSBpZihpaShjLGIpLG51bGwhPT1jLmNoaWxkKXtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX1pZihjPT09YSlicmVhaztmb3IoO251bGw9PT1jLnNpYmxpbmc7KXtpZihudWxsPT09Yy5yZXR1cm58fGMucmV0dXJuPT09YSlyZXR1cm47Yz1jLnJldHVybjs0PT09Yy50YWcmJihkPSExKX1jLnNpYmxpbmcucmV0dXJuPWMucmV0dXJuO2M9Yy5zaWJsaW5nfX1cbmZ1bmN0aW9uIG9pKGEsYil7c3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6aGkoS2csTGcsYik7YnJlYWs7Y2FzZSAxOmJyZWFrO2Nhc2UgNTp2YXIgYz1iLnN0YXRlTm9kZTtpZihudWxsIT1jKXt2YXIgZD1iLm1lbW9pemVkUHJvcHMsZT1udWxsIT09YT9hLm1lbW9pemVkUHJvcHM6ZDthPWIudHlwZTt2YXIgZj1iLnVwZGF0ZVF1ZXVlO2IudXBkYXRlUXVldWU9bnVsbDtpZihudWxsIT09Zil7Y1tHYV09ZDtcImlucHV0XCI9PT1hJiZcInJhZGlvXCI9PT1kLnR5cGUmJm51bGwhPWQubmFtZSYmRGMoYyxkKTtFZShhLGUpO2I9RWUoYSxkKTtmb3IoZT0wO2U8Zi5sZW5ndGg7ZSs9Mil7dmFyIGg9ZltlXSxnPWZbZSsxXTtcInN0eWxlXCI9PT1oP0FlKGMsZyk6XCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09aD92ZShjLGcpOlwiY2hpbGRyZW5cIj09PWg/d2UoYyxnKTp6YyhjLGgsZyxiKX1zd2l0Y2goYSl7Y2FzZSBcImlucHV0XCI6RWMoYyxkKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpwZShjLFxuZCk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmI9Yy5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlLGMuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZT0hIWQubXVsdGlwbGUsYT1kLnZhbHVlLG51bGwhPWE/bWUoYywhIWQubXVsdGlwbGUsYSwhMSk6YiE9PSEhZC5tdWx0aXBsZSYmKG51bGwhPWQuZGVmYXVsdFZhbHVlP21lKGMsISFkLm11bHRpcGxlLGQuZGVmYXVsdFZhbHVlLCEwKTptZShjLCEhZC5tdWx0aXBsZSxkLm11bHRpcGxlP1tdOlwiXCIsITEpKX19fWJyZWFrO2Nhc2UgNjppZihudWxsPT09Yi5zdGF0ZU5vZGUpdGhyb3cgdChFcnJvcigxNjIpKTtiLnN0YXRlTm9kZS5ub2RlVmFsdWU9Yi5tZW1vaXplZFByb3BzO2JyZWFrO2Nhc2UgMzpicmVhaztjYXNlIDEyOmJyZWFrO2Nhc2UgMTM6Yz1iO251bGw9PT1iLm1lbW9pemVkU3RhdGU/ZD0hMTooZD0hMCxjPWIuY2hpbGQscGk9c2YoKSk7aWYobnVsbCE9PWMpYTpmb3IoYT1jOzspe2lmKDU9PT1hLnRhZylmPWEuc3RhdGVOb2RlLGQ/KGY9XG5mLnN0eWxlLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLnNldFByb3BlcnR5P2Yuc2V0UHJvcGVydHkoXCJkaXNwbGF5XCIsXCJub25lXCIsXCJpbXBvcnRhbnRcIik6Zi5kaXNwbGF5PVwibm9uZVwiKTooZj1hLnN0YXRlTm9kZSxlPWEubWVtb2l6ZWRQcm9wcy5zdHlsZSxlPXZvaWQgMCE9PWUmJm51bGwhPT1lJiZlLmhhc093blByb3BlcnR5KFwiZGlzcGxheVwiKT9lLmRpc3BsYXk6bnVsbCxmLnN0eWxlLmRpc3BsYXk9emUoXCJkaXNwbGF5XCIsZSkpO2Vsc2UgaWYoNj09PWEudGFnKWEuc3RhdGVOb2RlLm5vZGVWYWx1ZT1kP1wiXCI6YS5tZW1vaXplZFByb3BzO2Vsc2UgaWYoMTM9PT1hLnRhZyYmbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSl7Zj1hLmNoaWxkLnNpYmxpbmc7Zi5yZXR1cm49YTthPWY7Y29udGludWV9ZWxzZSBpZihudWxsIT09YS5jaGlsZCl7YS5jaGlsZC5yZXR1cm49YTthPWEuY2hpbGQ7Y29udGludWV9aWYoYT09PWMpYnJlYWsgYTtmb3IoO251bGw9PT1hLnNpYmxpbmc7KXtpZihudWxsPT09XG5hLnJldHVybnx8YS5yZXR1cm49PT1jKWJyZWFrIGE7YT1hLnJldHVybn1hLnNpYmxpbmcucmV0dXJuPWEucmV0dXJuO2E9YS5zaWJsaW5nfXFpKGIpO2JyZWFrO2Nhc2UgMTk6cWkoYik7YnJlYWs7Y2FzZSAxNzpicmVhaztjYXNlIDIwOmJyZWFrO2RlZmF1bHQ6dGhyb3cgdChFcnJvcigxNjMpKTt9fWZ1bmN0aW9uIHFpKGEpe3ZhciBiPWEudXBkYXRlUXVldWU7aWYobnVsbCE9PWIpe2EudXBkYXRlUXVldWU9bnVsbDt2YXIgYz1hLnN0YXRlTm9kZTtudWxsPT09YyYmKGM9YS5zdGF0ZU5vZGU9bmV3IGNpKTtiLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGQ9cmkuYmluZChudWxsLGEsYik7Yy5oYXMoYil8fChjLmFkZChiKSxiLnRoZW4oZCxkKSl9KX19dmFyIHNpPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBXZWFrTWFwP1dlYWtNYXA6TWFwO1xuZnVuY3Rpb24gdGkoYSxiLGMpe2M9UWYoYyxudWxsKTtjLnRhZz0zO2MucGF5bG9hZD17ZWxlbWVudDpudWxsfTt2YXIgZD1iLnZhbHVlO2MuY2FsbGJhY2s9ZnVuY3Rpb24oKXt1aXx8KHVpPSEwLHZpPWQpO2RpKGEsYil9O3JldHVybiBjfVxuZnVuY3Rpb24gd2koYSxiLGMpe2M9UWYoYyxudWxsKTtjLnRhZz0zO3ZhciBkPWEudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3ZhciBlPWIudmFsdWU7Yy5wYXlsb2FkPWZ1bmN0aW9uKCl7ZGkoYSxiKTtyZXR1cm4gZChlKX19dmFyIGY9YS5zdGF0ZU5vZGU7bnVsbCE9PWYmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLmNvbXBvbmVudERpZENhdGNoJiYoYy5jYWxsYmFjaz1mdW5jdGlvbigpe1wiZnVuY3Rpb25cIiE9PXR5cGVvZiBkJiYobnVsbD09PXhpP3hpPW5ldyBTZXQoW3RoaXNdKTp4aS5hZGQodGhpcyksZGkoYSxiKSk7dmFyIGM9Yi5zdGFjazt0aGlzLmNvbXBvbmVudERpZENhdGNoKGIudmFsdWUse2NvbXBvbmVudFN0YWNrOm51bGwhPT1jP2M6XCJcIn0pfSk7cmV0dXJuIGN9XG52YXIgeWk9TWF0aC5jZWlsLHppPVhiLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsQWk9WGIuUmVhY3RDdXJyZW50T3duZXIsVD0wLEJpPTgsQ2k9MTYsRGk9MzIsRWk9MCxGaT0xLEdpPTIsSGk9MyxJaT00LFU9VCxKaT1udWxsLFY9bnVsbCxXPTAsWD1FaSxLaT0xMDczNzQxODIzLExpPTEwNzM3NDE4MjMsTWk9bnVsbCxOaT0hMSxwaT0wLE9pPTUwMCxZPW51bGwsdWk9ITEsdmk9bnVsbCx4aT1udWxsLFBpPSExLFFpPW51bGwsUmk9OTAsU2k9MCxUaT1udWxsLFVpPTAsVmk9bnVsbCxXaT0wO2Z1bmN0aW9uIGNnKCl7cmV0dXJuKFUmKENpfERpKSkhPT1UPzEwNzM3NDE4MjEtKHNmKCkvMTB8MCk6MCE9PVdpP1dpOldpPTEwNzM3NDE4MjEtKHNmKCkvMTB8MCl9XG5mdW5jdGlvbiBkZyhhLGIsYyl7Yj1iLm1vZGU7aWYoMD09PShiJjIpKXJldHVybiAxMDczNzQxODIzO3ZhciBkPXRmKCk7aWYoMD09PShiJjQpKXJldHVybiA5OT09PWQ/MTA3Mzc0MTgyMzoxMDczNzQxODIyO2lmKChVJkNpKSE9PVQpcmV0dXJuIFc7aWYobnVsbCE9PWMpYT0xMDczNzQxODIxLTI1KigoKDEwNzM3NDE4MjEtYSsoYy50aW1lb3V0TXN8MHx8NUUzKS8xMCkvMjV8MCkrMSk7ZWxzZSBzd2l0Y2goZCl7Y2FzZSA5OTphPTEwNzM3NDE4MjM7YnJlYWs7Y2FzZSA5ODphPTEwNzM3NDE4MjEtMTAqKCgoMTA3Mzc0MTgyMS1hKzE1KS8xMHwwKSsxKTticmVhaztjYXNlIDk3OmNhc2UgOTY6YT0xMDczNzQxODIxLTI1KigoKDEwNzM3NDE4MjEtYSs1MDApLzI1fDApKzEpO2JyZWFrO2Nhc2UgOTU6YT0xO2JyZWFrO2RlZmF1bHQ6dGhyb3cgdChFcnJvcigzMjYpKTt9bnVsbCE9PUppJiZhPT09VyYmLS1hO3JldHVybiBhfXZhciBYaT0wO1xuZnVuY3Rpb24gZWcoYSxiKXtpZig1MDxVaSl0aHJvdyBVaT0wLFZpPW51bGwsdChFcnJvcigxODUpKTthPVlpKGEsYik7aWYobnVsbCE9PWEpe2EucGluZ1RpbWU9MDt2YXIgYz10ZigpO2lmKDEwNzM3NDE4MjM9PT1iKWlmKChVJkJpKSE9PVQmJihVJihDaXxEaSkpPT09VClmb3IodmFyIGQ9WihhLDEwNzM3NDE4MjMsITApO251bGwhPT1kOylkPWQoITApO2Vsc2UgWmkoYSw5OSwxMDczNzQxODIzKSxVPT09VCYmTygpO2Vsc2UgWmkoYSxjLGIpOyhVJjQpPT09VHx8OTghPT1jJiY5OSE9PWN8fChudWxsPT09VGk/VGk9bmV3IE1hcChbW2EsYl1dKTooYz1UaS5nZXQoYSksKHZvaWQgMD09PWN8fGM+YikmJlRpLnNldChhLGIpKSl9fVxuZnVuY3Rpb24gWWkoYSxiKXthLmV4cGlyYXRpb25UaW1lPGImJihhLmV4cGlyYXRpb25UaW1lPWIpO3ZhciBjPWEuYWx0ZXJuYXRlO251bGwhPT1jJiZjLmV4cGlyYXRpb25UaW1lPGImJihjLmV4cGlyYXRpb25UaW1lPWIpO3ZhciBkPWEucmV0dXJuLGU9bnVsbDtpZihudWxsPT09ZCYmMz09PWEudGFnKWU9YS5zdGF0ZU5vZGU7ZWxzZSBmb3IoO251bGwhPT1kOyl7Yz1kLmFsdGVybmF0ZTtkLmNoaWxkRXhwaXJhdGlvblRpbWU8YiYmKGQuY2hpbGRFeHBpcmF0aW9uVGltZT1iKTtudWxsIT09YyYmYy5jaGlsZEV4cGlyYXRpb25UaW1lPGImJihjLmNoaWxkRXhwaXJhdGlvblRpbWU9Yik7aWYobnVsbD09PWQucmV0dXJuJiYzPT09ZC50YWcpe2U9ZC5zdGF0ZU5vZGU7YnJlYWt9ZD1kLnJldHVybn1udWxsIT09ZSYmKGI+ZS5maXJzdFBlbmRpbmdUaW1lJiYoZS5maXJzdFBlbmRpbmdUaW1lPWIpLGE9ZS5sYXN0UGVuZGluZ1RpbWUsMD09PWF8fGI8YSkmJihlLmxhc3RQZW5kaW5nVGltZT1cbmIpO3JldHVybiBlfWZ1bmN0aW9uIFppKGEsYixjKXtpZihhLmNhbGxiYWNrRXhwaXJhdGlvblRpbWU8Yyl7dmFyIGQ9YS5jYWxsYmFja05vZGU7bnVsbCE9PWQmJmQhPT1tZiYmYWYoZCk7YS5jYWxsYmFja0V4cGlyYXRpb25UaW1lPWM7MTA3Mzc0MTgyMz09PWM/YS5jYWxsYmFja05vZGU9eGYoJGkuYmluZChudWxsLGEsWi5iaW5kKG51bGwsYSxjKSkpOihkPW51bGwsMSE9PWMmJihkPXt0aW1lb3V0OjEwKigxMDczNzQxODIxLWMpLXNmKCl9KSxhLmNhbGxiYWNrTm9kZT13ZihiLCRpLmJpbmQobnVsbCxhLFouYmluZChudWxsLGEsYykpLGQpKX19ZnVuY3Rpb24gJGkoYSxiLGMpe3ZhciBkPWEuY2FsbGJhY2tOb2RlLGU9bnVsbDt0cnl7cmV0dXJuIGU9YihjKSxudWxsIT09ZT8kaS5iaW5kKG51bGwsYSxlKTpudWxsfWZpbmFsbHl7bnVsbD09PWUmJmQ9PT1hLmNhbGxiYWNrTm9kZSYmKGEuY2FsbGJhY2tOb2RlPW51bGwsYS5jYWxsYmFja0V4cGlyYXRpb25UaW1lPTApfX1cbmZ1bmN0aW9uIGFqKCl7KFUmKDF8Q2l8RGkpKT09PVQmJihiaigpLGNqKCkpfWZ1bmN0aW9uIGRqKGEsYil7dmFyIGM9YS5maXJzdEJhdGNoO3JldHVybiBudWxsIT09YyYmYy5fZGVmZXImJmMuX2V4cGlyYXRpb25UaW1lPj1iPyh3Zig5NyxmdW5jdGlvbigpe2MuX29uQ29tcGxldGUoKTtyZXR1cm4gbnVsbH0pLCEwKTohMX1mdW5jdGlvbiBiaigpe2lmKG51bGwhPT1UaSl7dmFyIGE9VGk7VGk9bnVsbDthLmZvckVhY2goZnVuY3Rpb24oYSxjKXt4ZihaLmJpbmQobnVsbCxjLGEpKX0pO08oKX19ZnVuY3Rpb24gZWooYSxiKXt2YXIgYz1VO1V8PTE7dHJ5e3JldHVybiBhKGIpfWZpbmFsbHl7VT1jLFU9PT1UJiZPKCl9fWZ1bmN0aW9uIGZqKGEsYixjLGQpe3ZhciBlPVU7VXw9NDt0cnl7cmV0dXJuIHZmKDk4LGEuYmluZChudWxsLGIsYyxkKSl9ZmluYWxseXtVPWUsVT09PVQmJk8oKX19XG5mdW5jdGlvbiBnaihhLGIpe3ZhciBjPVU7VSY9LTI7VXw9Qmk7dHJ5e3JldHVybiBhKGIpfWZpbmFsbHl7VT1jLFU9PT1UJiZPKCl9fVxuZnVuY3Rpb24gaGooYSxiKXthLmZpbmlzaGVkV29yaz1udWxsO2EuZmluaXNoZWRFeHBpcmF0aW9uVGltZT0wO3ZhciBjPWEudGltZW91dEhhbmRsZTstMSE9PWMmJihhLnRpbWVvdXRIYW5kbGU9LTEsTWUoYykpO2lmKG51bGwhPT1WKWZvcihjPVYucmV0dXJuO251bGwhPT1jOyl7dmFyIGQ9Yztzd2l0Y2goZC50YWcpe2Nhc2UgMTp2YXIgZT1kLnR5cGUuY2hpbGRDb250ZXh0VHlwZXM7bnVsbCE9PWUmJnZvaWQgMCE9PWUmJlRlKGQpO2JyZWFrO2Nhc2UgMzpCZyhkKTtVZShkKTticmVhaztjYXNlIDU6RGcoZCk7YnJlYWs7Y2FzZSA0OkJnKGQpO2JyZWFrO2Nhc2UgMTM6SChQLGQpO2JyZWFrO2Nhc2UgMTk6SChQLGQpO2JyZWFrO2Nhc2UgMTA6SWYoZCl9Yz1jLnJldHVybn1KaT1hO1Y9b2coYS5jdXJyZW50LG51bGwsYik7Vz1iO1g9RWk7TGk9S2k9MTA3Mzc0MTgyMztNaT1udWxsO05pPSExfVxuZnVuY3Rpb24gWihhLGIsYyl7aWYoKFUmKENpfERpKSkhPT1UKXRocm93IHQoRXJyb3IoMzI3KSk7aWYoYS5maXJzdFBlbmRpbmdUaW1lPGIpcmV0dXJuIG51bGw7aWYoYyYmYS5maW5pc2hlZEV4cGlyYXRpb25UaW1lPT09YilyZXR1cm4gaWouYmluZChudWxsLGEpO2NqKCk7aWYoYSE9PUppfHxiIT09VyloaihhLGIpO2Vsc2UgaWYoWD09PUhpKWlmKE5pKWhqKGEsYik7ZWxzZXt2YXIgZD1hLmxhc3RQZW5kaW5nVGltZTtpZihkPGIpcmV0dXJuIFouYmluZChudWxsLGEsZCl9aWYobnVsbCE9PVYpe2Q9VTtVfD1DaTt2YXIgZT16aS5jdXJyZW50O251bGw9PT1lJiYoZT1oaCk7emkuY3VycmVudD1oaDtpZihjKXtpZigxMDczNzQxODIzIT09Yil7dmFyIGY9Y2coKTtpZihmPGIpcmV0dXJuIFU9ZCxHZigpLHppLmN1cnJlbnQ9ZSxaLmJpbmQobnVsbCxhLGYpfX1lbHNlIFdpPTA7ZG8gdHJ5e2lmKGMpZm9yKDtudWxsIT09VjspVj1qaihWKTtlbHNlIGZvcig7bnVsbCE9PVYmJiFiZigpOylWPVxuamooVik7YnJlYWt9Y2F0Y2gocmIpe0dmKCk7aWgoKTtmPVY7aWYobnVsbD09PWZ8fG51bGw9PT1mLnJldHVybil0aHJvdyBoaihhLGIpLFU9ZCxyYjthOnt2YXIgaD1hLGc9Zi5yZXR1cm4saz1mLGw9cmIsbj1XO2suZWZmZWN0VGFnfD0xMDI0O2suZmlyc3RFZmZlY3Q9ay5sYXN0RWZmZWN0PW51bGw7aWYobnVsbCE9PWwmJlwib2JqZWN0XCI9PT10eXBlb2YgbCYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGwudGhlbil7dmFyIHo9bCx4PTAhPT0oUC5jdXJyZW50JkZnKTtsPWc7ZG97dmFyIHY7aWYodj0xMz09PWwudGFnKW51bGwhPT1sLm1lbW9pemVkU3RhdGU/dj0hMToodj1sLm1lbW9pemVkUHJvcHMsdj12b2lkIDA9PT12LmZhbGxiYWNrPyExOiEwIT09di51bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFjaz8hMDp4PyExOiEwKTtpZih2KXtnPWwudXBkYXRlUXVldWU7bnVsbD09PWc/KGc9bmV3IFNldCxnLmFkZCh6KSxsLnVwZGF0ZVF1ZXVlPWcpOmcuYWRkKHopO2lmKDA9PT0obC5tb2RlJlxuMikpe2wuZWZmZWN0VGFnfD02NDtrLmVmZmVjdFRhZyY9LTE5NTc7MT09PWsudGFnJiYobnVsbD09PWsuYWx0ZXJuYXRlP2sudGFnPTE3OihuPVFmKDEwNzM3NDE4MjMsbnVsbCksbi50YWc9MixTZihrLG4pKSk7ay5leHBpcmF0aW9uVGltZT0xMDczNzQxODIzO2JyZWFrIGF9az1oO2g9bjt4PWsucGluZ0NhY2hlO251bGw9PT14Pyh4PWsucGluZ0NhY2hlPW5ldyBzaSxnPW5ldyBTZXQseC5zZXQoeixnKSk6KGc9eC5nZXQoeiksdm9pZCAwPT09ZyYmKGc9bmV3IFNldCx4LnNldCh6LGcpKSk7Zy5oYXMoaCl8fChnLmFkZChoKSxrPWtqLmJpbmQobnVsbCxrLHosaCksei50aGVuKGssaykpO2wuZWZmZWN0VGFnfD0yMDQ4O2wuZXhwaXJhdGlvblRpbWU9bjticmVhayBhfWw9bC5yZXR1cm59d2hpbGUobnVsbCE9PWwpO2w9RXJyb3IoKG9jKGsudHlwZSl8fFwiQSBSZWFjdCBjb21wb25lbnRcIikrXCIgc3VzcGVuZGVkIHdoaWxlIHJlbmRlcmluZywgYnV0IG5vIGZhbGxiYWNrIFVJIHdhcyBzcGVjaWZpZWQuXFxuXFxuQWRkIGEgPFN1c3BlbnNlIGZhbGxiYWNrPS4uLj4gY29tcG9uZW50IGhpZ2hlciBpbiB0aGUgdHJlZSB0byBwcm92aWRlIGEgbG9hZGluZyBpbmRpY2F0b3Igb3IgcGxhY2Vob2xkZXIgdG8gZGlzcGxheS5cIitcbnBjKGspKX1YIT09SWkmJihYPUZpKTtsPWJpKGwsayk7az1nO2Rve3N3aXRjaChrLnRhZyl7Y2FzZSAzOmsuZWZmZWN0VGFnfD0yMDQ4O2suZXhwaXJhdGlvblRpbWU9bjtuPXRpKGssbCxuKTtUZihrLG4pO2JyZWFrIGE7Y2FzZSAxOmlmKHo9bCxoPWsudHlwZSxnPWsuc3RhdGVOb2RlLDA9PT0oay5lZmZlY3RUYWcmNjQpJiYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGguZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxudWxsIT09ZyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09eGl8fCF4aS5oYXMoZykpKSl7ay5lZmZlY3RUYWd8PTIwNDg7ay5leHBpcmF0aW9uVGltZT1uO249d2koayx6LG4pO1RmKGssbik7YnJlYWsgYX19az1rLnJldHVybn13aGlsZShudWxsIT09ayl9Vj1saihmKX13aGlsZSgxKTtVPWQ7R2YoKTt6aS5jdXJyZW50PWU7aWYobnVsbCE9PVYpcmV0dXJuIFouYmluZChudWxsLGEsYil9YS5maW5pc2hlZFdvcms9YS5jdXJyZW50LmFsdGVybmF0ZTtcbmEuZmluaXNoZWRFeHBpcmF0aW9uVGltZT1iO2lmKGRqKGEsYikpcmV0dXJuIG51bGw7Smk9bnVsbDtzd2l0Y2goWCl7Y2FzZSBFaTp0aHJvdyB0KEVycm9yKDMyOCkpO2Nhc2UgRmk6cmV0dXJuIGQ9YS5sYXN0UGVuZGluZ1RpbWUsZDxiP1ouYmluZChudWxsLGEsZCk6Yz9pai5iaW5kKG51bGwsYSk6KGhqKGEsYikseGYoWi5iaW5kKG51bGwsYSxiKSksbnVsbCk7Y2FzZSBHaTppZigxMDczNzQxODIzPT09S2kmJiFjJiYoYz1waStPaS1zZigpLDEwPGMpKXtpZihOaSlyZXR1cm4gaGooYSxiKSxaLmJpbmQobnVsbCxhLGIpO2Q9YS5sYXN0UGVuZGluZ1RpbWU7aWYoZDxiKXJldHVybiBaLmJpbmQobnVsbCxhLGQpO2EudGltZW91dEhhbmRsZT1MZShpai5iaW5kKG51bGwsYSksYyk7cmV0dXJuIG51bGx9cmV0dXJuIGlqLmJpbmQobnVsbCxhKTtjYXNlIEhpOmlmKCFjKXtpZihOaSlyZXR1cm4gaGooYSxiKSxaLmJpbmQobnVsbCxhLGIpO2M9YS5sYXN0UGVuZGluZ1RpbWU7aWYoYzxiKXJldHVybiBaLmJpbmQobnVsbCxcbmEsYyk7MTA3Mzc0MTgyMyE9PUxpP2M9MTAqKDEwNzM3NDE4MjEtTGkpLXNmKCk6MTA3Mzc0MTgyMz09PUtpP2M9MDooYz0xMCooMTA3Mzc0MTgyMS1LaSktNUUzLGQ9c2YoKSxiPTEwKigxMDczNzQxODIxLWIpLWQsYz1kLWMsMD5jJiYoYz0wKSxjPSgxMjA+Yz8xMjA6NDgwPmM/NDgwOjEwODA+Yz8xMDgwOjE5MjA+Yz8xOTIwOjNFMz5jPzNFMzo0MzIwPmM/NDMyMDoxOTYwKnlpKGMvMTk2MCkpLWMsYjxjJiYoYz1iKSk7aWYoMTA8YylyZXR1cm4gYS50aW1lb3V0SGFuZGxlPUxlKGlqLmJpbmQobnVsbCxhKSxjKSxudWxsfXJldHVybiBpai5iaW5kKG51bGwsYSk7Y2FzZSBJaTpyZXR1cm4hYyYmMTA3Mzc0MTgyMyE9PUtpJiZudWxsIT09TWkmJihkPUtpLGU9TWksYj1lLmJ1c3lNaW5EdXJhdGlvbk1zfDAsMD49Yj9iPTA6KGM9ZS5idXN5RGVsYXlNc3wwLGQ9c2YoKS0oMTAqKDEwNzM3NDE4MjEtZCktKGUudGltZW91dE1zfDB8fDVFMykpLGI9ZDw9Yz8wOmMrYi1kKSwxMDxiKT8oYS50aW1lb3V0SGFuZGxlPVxuTGUoaWouYmluZChudWxsLGEpLGIpLG51bGwpOmlqLmJpbmQobnVsbCxhKTtkZWZhdWx0OnRocm93IHQoRXJyb3IoMzI5KSk7fX1mdW5jdGlvbiBYZihhLGIpe2E8S2kmJjE8YSYmKEtpPWEpO251bGwhPT1iJiZhPExpJiYxPGEmJihMaT1hLE1pPWIpfWZ1bmN0aW9uIGpqKGEpe3ZhciBiPW1qKGEuYWx0ZXJuYXRlLGEsVyk7YS5tZW1vaXplZFByb3BzPWEucGVuZGluZ1Byb3BzO251bGw9PT1iJiYoYj1saihhKSk7QWkuY3VycmVudD1udWxsO3JldHVybiBifVxuZnVuY3Rpb24gbGooYSl7Vj1hO2Rve3ZhciBiPVYuYWx0ZXJuYXRlO2E9Vi5yZXR1cm47aWYoMD09PShWLmVmZmVjdFRhZyYxMDI0KSl7YTp7dmFyIGM9YjtiPVY7dmFyIGQ9VyxlPWIucGVuZGluZ1Byb3BzO3N3aXRjaChiLnRhZyl7Y2FzZSAyOmJyZWFrO2Nhc2UgMTY6YnJlYWs7Y2FzZSAxNTpjYXNlIDA6YnJlYWs7Y2FzZSAxOk4oYi50eXBlKSYmVGUoYik7YnJlYWs7Y2FzZSAzOkJnKGIpO1VlKGIpO2Q9Yi5zdGF0ZU5vZGU7ZC5wZW5kaW5nQ29udGV4dCYmKGQuY29udGV4dD1kLnBlbmRpbmdDb250ZXh0LGQucGVuZGluZ0NvbnRleHQ9bnVsbCk7aWYobnVsbD09PWN8fG51bGw9PT1jLmNoaWxkKUJoKGIpLGIuZWZmZWN0VGFnJj0tMztVaChiKTticmVhaztjYXNlIDU6RGcoYik7ZD16Zyh5Zy5jdXJyZW50KTt2YXIgZj1iLnR5cGU7aWYobnVsbCE9PWMmJm51bGwhPWIuc3RhdGVOb2RlKVZoKGMsYixmLGUsZCksYy5yZWYhPT1iLnJlZiYmKGIuZWZmZWN0VGFnfD0xMjgpO2Vsc2UgaWYoZSl7dmFyIGg9XG56Zyh3Zy5jdXJyZW50KTtpZihCaChiKSl7Yz1iO2U9dm9pZCAwO2Y9Yy5zdGF0ZU5vZGU7dmFyIGc9Yy50eXBlLGs9Yy5tZW1vaXplZFByb3BzO2ZbRmFdPWM7ZltHYV09aztzd2l0Y2goZyl7Y2FzZSBcImlmcmFtZVwiOmNhc2UgXCJvYmplY3RcIjpjYXNlIFwiZW1iZWRcIjpHKFwibG9hZFwiLGYpO2JyZWFrO2Nhc2UgXCJ2aWRlb1wiOmNhc2UgXCJhdWRpb1wiOmZvcih2YXIgbD0wO2w8YmIubGVuZ3RoO2wrKylHKGJiW2xdLGYpO2JyZWFrO2Nhc2UgXCJzb3VyY2VcIjpHKFwiZXJyb3JcIixmKTticmVhaztjYXNlIFwiaW1nXCI6Y2FzZSBcImltYWdlXCI6Y2FzZSBcImxpbmtcIjpHKFwiZXJyb3JcIixmKTtHKFwibG9hZFwiLGYpO2JyZWFrO2Nhc2UgXCJmb3JtXCI6RyhcInJlc2V0XCIsZik7RyhcInN1Ym1pdFwiLGYpO2JyZWFrO2Nhc2UgXCJkZXRhaWxzXCI6RyhcInRvZ2dsZVwiLGYpO2JyZWFrO2Nhc2UgXCJpbnB1dFwiOkNjKGYsayk7RyhcImludmFsaWRcIixmKTtGZShkLFwib25DaGFuZ2VcIik7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmYuX3dyYXBwZXJTdGF0ZT1cbnt3YXNNdWx0aXBsZTohIWsubXVsdGlwbGV9O0coXCJpbnZhbGlkXCIsZik7RmUoZCxcIm9uQ2hhbmdlXCIpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOm9lKGYsayksRyhcImludmFsaWRcIixmKSxGZShkLFwib25DaGFuZ2VcIil9RGUoZyxrKTtsPW51bGw7Zm9yKGUgaW4gaylrLmhhc093blByb3BlcnR5KGUpJiYoaD1rW2VdLFwiY2hpbGRyZW5cIj09PWU/XCJzdHJpbmdcIj09PXR5cGVvZiBoP2YudGV4dENvbnRlbnQhPT1oJiYobD1bXCJjaGlsZHJlblwiLGhdKTpcIm51bWJlclwiPT09dHlwZW9mIGgmJmYudGV4dENvbnRlbnQhPT1cIlwiK2gmJihsPVtcImNoaWxkcmVuXCIsXCJcIitoXSk6aWEuaGFzT3duUHJvcGVydHkoZSkmJm51bGwhPWgmJkZlKGQsZSkpO3N3aXRjaChnKXtjYXNlIFwiaW5wdXRcIjpWYihmKTtHYyhmLGssITApO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOlZiKGYpO3FlKGYsayk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJvcHRpb25cIjpicmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIj09PXR5cGVvZiBrLm9uQ2xpY2smJlxuKGYub25jbGljaz1HZSl9ZD1sO2MudXBkYXRlUXVldWU9ZDtudWxsIT09ZCYmU2goYil9ZWxzZXtrPWY7Yz1lO2c9YjtsPTk9PT1kLm5vZGVUeXBlP2Q6ZC5vd25lckRvY3VtZW50O2g9PT1yZS5odG1sJiYoaD1zZShrKSk7aD09PXJlLmh0bWw/XCJzY3JpcHRcIj09PWs/KGs9bC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGsuaW5uZXJIVE1MPVwiPHNjcmlwdD5cXHgzYy9zY3JpcHQ+XCIsbD1rLnJlbW92ZUNoaWxkKGsuZmlyc3RDaGlsZCkpOlwic3RyaW5nXCI9PT10eXBlb2YgYy5pcz9sPWwuY3JlYXRlRWxlbWVudChrLHtpczpjLmlzfSk6KGw9bC5jcmVhdGVFbGVtZW50KGspLFwic2VsZWN0XCI9PT1rJiYoaz1sLGMubXVsdGlwbGU/ay5tdWx0aXBsZT0hMDpjLnNpemUmJihrLnNpemU9Yy5zaXplKSkpOmw9bC5jcmVhdGVFbGVtZW50TlMoaCxrKTtrPWw7a1tGYV09ZztrW0dhXT1jO2M9aztUaChjLGIsITEsITEpO2c9Yzt2YXIgbj1kLHo9RWUoZixlKTtzd2l0Y2goZil7Y2FzZSBcImlmcmFtZVwiOmNhc2UgXCJvYmplY3RcIjpjYXNlIFwiZW1iZWRcIjpHKFwibG9hZFwiLFxuZyk7ZD1lO2JyZWFrO2Nhc2UgXCJ2aWRlb1wiOmNhc2UgXCJhdWRpb1wiOmZvcihkPTA7ZDxiYi5sZW5ndGg7ZCsrKUcoYmJbZF0sZyk7ZD1lO2JyZWFrO2Nhc2UgXCJzb3VyY2VcIjpHKFwiZXJyb3JcIixnKTtkPWU7YnJlYWs7Y2FzZSBcImltZ1wiOmNhc2UgXCJpbWFnZVwiOmNhc2UgXCJsaW5rXCI6RyhcImVycm9yXCIsZyk7RyhcImxvYWRcIixnKTtkPWU7YnJlYWs7Y2FzZSBcImZvcm1cIjpHKFwicmVzZXRcIixnKTtHKFwic3VibWl0XCIsZyk7ZD1lO2JyZWFrO2Nhc2UgXCJkZXRhaWxzXCI6RyhcInRvZ2dsZVwiLGcpO2Q9ZTticmVhaztjYXNlIFwiaW5wdXRcIjpDYyhnLGUpO2Q9QmMoZyxlKTtHKFwiaW52YWxpZFwiLGcpO0ZlKG4sXCJvbkNoYW5nZVwiKTticmVhaztjYXNlIFwib3B0aW9uXCI6ZD1sZShnLGUpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpnLl93cmFwcGVyU3RhdGU9e3dhc011bHRpcGxlOiEhZS5tdWx0aXBsZX07ZD1tKHt9LGUse3ZhbHVlOnZvaWQgMH0pO0coXCJpbnZhbGlkXCIsZyk7RmUobixcIm9uQ2hhbmdlXCIpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOm9lKGcsXG5lKTtkPW5lKGcsZSk7RyhcImludmFsaWRcIixnKTtGZShuLFwib25DaGFuZ2VcIik7YnJlYWs7ZGVmYXVsdDpkPWV9RGUoZixkKTtrPXZvaWQgMDtsPWY7aD1nO3ZhciB4PWQ7Zm9yKGsgaW4geClpZih4Lmhhc093blByb3BlcnR5KGspKXt2YXIgdj14W2tdO1wic3R5bGVcIj09PWs/QWUoaCx2KTpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1rPyh2PXY/di5fX2h0bWw6dm9pZCAwLG51bGwhPXYmJnZlKGgsdikpOlwiY2hpbGRyZW5cIj09PWs/XCJzdHJpbmdcIj09PXR5cGVvZiB2PyhcInRleHRhcmVhXCIhPT1sfHxcIlwiIT09dikmJndlKGgsdik6XCJudW1iZXJcIj09PXR5cGVvZiB2JiZ3ZShoLFwiXCIrdik6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWsmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1rJiZcImF1dG9Gb2N1c1wiIT09ayYmKGlhLmhhc093blByb3BlcnR5KGspP251bGwhPXYmJkZlKG4sayk6bnVsbCE9diYmemMoaCxrLHYseikpfXN3aXRjaChmKXtjYXNlIFwiaW5wdXRcIjpWYihnKTtcbkdjKGcsZSwhMSk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6VmIoZyk7cWUoZyxlKTticmVhaztjYXNlIFwib3B0aW9uXCI6bnVsbCE9ZS52YWx1ZSYmZy5zZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLFwiXCIrQWMoZS52YWx1ZSkpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpkPWc7Zz1lO2QubXVsdGlwbGU9ISFnLm11bHRpcGxlO2s9Zy52YWx1ZTtudWxsIT1rP21lKGQsISFnLm11bHRpcGxlLGssITEpOm51bGwhPWcuZGVmYXVsdFZhbHVlJiZtZShkLCEhZy5tdWx0aXBsZSxnLmRlZmF1bHRWYWx1ZSwhMCk7YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5vbkNsaWNrJiYoZy5vbmNsaWNrPUdlKX1KZShmLGUpJiZTaChiKTtiLnN0YXRlTm9kZT1jfW51bGwhPT1iLnJlZiYmKGIuZWZmZWN0VGFnfD0xMjgpfWVsc2UgaWYobnVsbD09PWIuc3RhdGVOb2RlKXRocm93IHQoRXJyb3IoMTY2KSk7YnJlYWs7Y2FzZSA2OmlmKGMmJm51bGwhPWIuc3RhdGVOb2RlKVdoKGMsYixjLm1lbW9pemVkUHJvcHMsXG5lKTtlbHNle2lmKFwic3RyaW5nXCIhPT10eXBlb2YgZSYmbnVsbD09PWIuc3RhdGVOb2RlKXRocm93IHQoRXJyb3IoMTY2KSk7Yz16Zyh5Zy5jdXJyZW50KTt6Zyh3Zy5jdXJyZW50KTtCaChiKT8oZD1iLnN0YXRlTm9kZSxjPWIubWVtb2l6ZWRQcm9wcyxkW0ZhXT1iLGQubm9kZVZhbHVlIT09YyYmU2goYikpOihkPWIsYz0oOT09PWMubm9kZVR5cGU/YzpjLm93bmVyRG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKGUpLGNbRmFdPWIsZC5zdGF0ZU5vZGU9Yyl9YnJlYWs7Y2FzZSAxMTpicmVhaztjYXNlIDEzOkgoUCxiKTtlPWIubWVtb2l6ZWRTdGF0ZTtpZigwIT09KGIuZWZmZWN0VGFnJjY0KSl7Yi5leHBpcmF0aW9uVGltZT1kO2JyZWFrIGF9ZD1udWxsIT09ZTtlPSExO251bGw9PT1jP0JoKGIpOihmPWMubWVtb2l6ZWRTdGF0ZSxlPW51bGwhPT1mLGR8fG51bGw9PT1mfHwoZj1jLmNoaWxkLnNpYmxpbmcsbnVsbCE9PWYmJihnPWIuZmlyc3RFZmZlY3QsbnVsbCE9PWc/KGIuZmlyc3RFZmZlY3Q9XG5mLGYubmV4dEVmZmVjdD1nKTooYi5maXJzdEVmZmVjdD1iLmxhc3RFZmZlY3Q9ZixmLm5leHRFZmZlY3Q9bnVsbCksZi5lZmZlY3RUYWc9OCkpKTtpZihkJiYhZSYmMCE9PShiLm1vZGUmMikpaWYobnVsbD09PWMmJiEwIT09Yi5tZW1vaXplZFByb3BzLnVuc3RhYmxlX2F2b2lkVGhpc0ZhbGxiYWNrfHwwIT09KFAuY3VycmVudCZGZykpWD09PUVpJiYoWD1HaSk7ZWxzZSBpZihYPT09RWl8fFg9PT1HaSlYPUhpO2lmKGR8fGUpYi5lZmZlY3RUYWd8PTQ7YnJlYWs7Y2FzZSA3OmJyZWFrO2Nhc2UgODpicmVhaztjYXNlIDEyOmJyZWFrO2Nhc2UgNDpCZyhiKTtVaChiKTticmVhaztjYXNlIDEwOklmKGIpO2JyZWFrO2Nhc2UgOTpicmVhaztjYXNlIDE0OmJyZWFrO2Nhc2UgMTc6TihiLnR5cGUpJiZUZShiKTticmVhaztjYXNlIDE4OmJyZWFrO2Nhc2UgMTk6SChQLGIpO2U9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGw9PT1lKWJyZWFrO2Y9MCE9PShiLmVmZmVjdFRhZyY2NCk7Zz1lLnJlbmRlcmluZztcbmlmKG51bGw9PT1nKWlmKGYpJGgoZSwhMSk7ZWxzZXtpZihYIT09RWl8fG51bGwhPT1jJiYwIT09KGMuZWZmZWN0VGFnJjY0KSlmb3IoYz1iLmNoaWxkO251bGwhPT1jOyl7Zz1IZyhjKTtpZihudWxsIT09Zyl7Yi5lZmZlY3RUYWd8PTY0OyRoKGUsITEpO2M9Zy51cGRhdGVRdWV1ZTtudWxsIT09YyYmKGIudXBkYXRlUXVldWU9YyxiLmVmZmVjdFRhZ3w9NCk7Yi5maXJzdEVmZmVjdD1iLmxhc3RFZmZlY3Q9bnVsbDtmb3IoYz1iLmNoaWxkO251bGwhPT1jOyllPWMsZj1kLGUuZWZmZWN0VGFnJj0yLGUubmV4dEVmZmVjdD1udWxsLGUuZmlyc3RFZmZlY3Q9bnVsbCxlLmxhc3RFZmZlY3Q9bnVsbCxnPWUuYWx0ZXJuYXRlLG51bGw9PT1nPyhlLmNoaWxkRXhwaXJhdGlvblRpbWU9MCxlLmV4cGlyYXRpb25UaW1lPWYsZS5jaGlsZD1udWxsLGUubWVtb2l6ZWRQcm9wcz1udWxsLGUubWVtb2l6ZWRTdGF0ZT1udWxsLGUudXBkYXRlUXVldWU9bnVsbCxlLmRlcGVuZGVuY2llcz1udWxsKTooZS5jaGlsZEV4cGlyYXRpb25UaW1lPVxuZy5jaGlsZEV4cGlyYXRpb25UaW1lLGUuZXhwaXJhdGlvblRpbWU9Zy5leHBpcmF0aW9uVGltZSxlLmNoaWxkPWcuY2hpbGQsZS5tZW1vaXplZFByb3BzPWcubWVtb2l6ZWRQcm9wcyxlLm1lbW9pemVkU3RhdGU9Zy5tZW1vaXplZFN0YXRlLGUudXBkYXRlUXVldWU9Zy51cGRhdGVRdWV1ZSxmPWcuZGVwZW5kZW5jaWVzLGUuZGVwZW5kZW5jaWVzPW51bGw9PT1mP251bGw6e2V4cGlyYXRpb25UaW1lOmYuZXhwaXJhdGlvblRpbWUsZmlyc3RDb250ZXh0OmYuZmlyc3RDb250ZXh0LHJlc3BvbmRlcnM6Zi5yZXNwb25kZXJzfSksYz1jLnNpYmxpbmc7SihQLFAuY3VycmVudCZFZ3xHZyxiKTtiPWIuY2hpbGQ7YnJlYWsgYX1jPWMuc2libGluZ319ZWxzZXtpZighZilpZihjPUhnKGcpLG51bGwhPT1jKXtpZihiLmVmZmVjdFRhZ3w9NjQsZj0hMCwkaChlLCEwKSxudWxsPT09ZS50YWlsJiZcImhpZGRlblwiPT09ZS50YWlsTW9kZSl7ZD1jLnVwZGF0ZVF1ZXVlO251bGwhPT1kJiYoYi51cGRhdGVRdWV1ZT1cbmQsYi5lZmZlY3RUYWd8PTQpO2I9Yi5sYXN0RWZmZWN0PWUubGFzdEVmZmVjdDtudWxsIT09YiYmKGIubmV4dEVmZmVjdD1udWxsKTticmVha319ZWxzZSBzZigpPmUudGFpbEV4cGlyYXRpb24mJjE8ZCYmKGIuZWZmZWN0VGFnfD02NCxmPSEwLCRoKGUsITEpLGIuZXhwaXJhdGlvblRpbWU9Yi5jaGlsZEV4cGlyYXRpb25UaW1lPWQtMSk7ZS5pc0JhY2t3YXJkcz8oZy5zaWJsaW5nPWIuY2hpbGQsYi5jaGlsZD1nKTooZD1lLmxhc3QsbnVsbCE9PWQ/ZC5zaWJsaW5nPWc6Yi5jaGlsZD1nLGUubGFzdD1nKX1pZihudWxsIT09ZS50YWlsKXswPT09ZS50YWlsRXhwaXJhdGlvbiYmKGUudGFpbEV4cGlyYXRpb249c2YoKSs1MDApO2Q9ZS50YWlsO2UucmVuZGVyaW5nPWQ7ZS50YWlsPWQuc2libGluZztlLmxhc3RFZmZlY3Q9Yi5sYXN0RWZmZWN0O2Quc2libGluZz1udWxsO2M9UC5jdXJyZW50O2M9Zj9jJkVnfEdnOmMmRWc7SihQLGMsYik7Yj1kO2JyZWFrIGF9YnJlYWs7Y2FzZSAyMDpicmVhaztcbmRlZmF1bHQ6dGhyb3cgdChFcnJvcigxNTYpKTt9Yj1udWxsfWQ9VjtpZigxPT09V3x8MSE9PWQuY2hpbGRFeHBpcmF0aW9uVGltZSl7Yz0wO2ZvcihlPWQuY2hpbGQ7bnVsbCE9PWU7KWY9ZS5leHBpcmF0aW9uVGltZSxnPWUuY2hpbGRFeHBpcmF0aW9uVGltZSxmPmMmJihjPWYpLGc+YyYmKGM9ZyksZT1lLnNpYmxpbmc7ZC5jaGlsZEV4cGlyYXRpb25UaW1lPWN9aWYobnVsbCE9PWIpcmV0dXJuIGI7bnVsbCE9PWEmJjA9PT0oYS5lZmZlY3RUYWcmMTAyNCkmJihudWxsPT09YS5maXJzdEVmZmVjdCYmKGEuZmlyc3RFZmZlY3Q9Vi5maXJzdEVmZmVjdCksbnVsbCE9PVYubGFzdEVmZmVjdCYmKG51bGwhPT1hLmxhc3RFZmZlY3QmJihhLmxhc3RFZmZlY3QubmV4dEVmZmVjdD1WLmZpcnN0RWZmZWN0KSxhLmxhc3RFZmZlY3Q9Vi5sYXN0RWZmZWN0KSwxPFYuZWZmZWN0VGFnJiYobnVsbCE9PWEubGFzdEVmZmVjdD9hLmxhc3RFZmZlY3QubmV4dEVmZmVjdD1WOmEuZmlyc3RFZmZlY3Q9VixcbmEubGFzdEVmZmVjdD1WKSl9ZWxzZXtiPWFpKFYsVyk7aWYobnVsbCE9PWIpcmV0dXJuIGIuZWZmZWN0VGFnJj0xMDIzLGI7bnVsbCE9PWEmJihhLmZpcnN0RWZmZWN0PWEubGFzdEVmZmVjdD1udWxsLGEuZWZmZWN0VGFnfD0xMDI0KX1iPVYuc2libGluZztpZihudWxsIT09YilyZXR1cm4gYjtWPWF9d2hpbGUobnVsbCE9PVYpO1g9PT1FaSYmKFg9SWkpO3JldHVybiBudWxsfWZ1bmN0aW9uIGlqKGEpe3ZhciBiPXRmKCk7dmYoOTksbmouYmluZChudWxsLGEsYikpO251bGwhPT1RaSYmd2YoOTcsZnVuY3Rpb24oKXtjaigpO3JldHVybiBudWxsfSk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBuaihhLGIpe2NqKCk7aWYoKFUmKENpfERpKSkhPT1UKXRocm93IHQoRXJyb3IoMzI3KSk7dmFyIGM9YS5maW5pc2hlZFdvcmssZD1hLmZpbmlzaGVkRXhwaXJhdGlvblRpbWU7aWYobnVsbD09PWMpcmV0dXJuIG51bGw7YS5maW5pc2hlZFdvcms9bnVsbDthLmZpbmlzaGVkRXhwaXJhdGlvblRpbWU9MDtpZihjPT09YS5jdXJyZW50KXRocm93IHQoRXJyb3IoMTc3KSk7YS5jYWxsYmFja05vZGU9bnVsbDthLmNhbGxiYWNrRXhwaXJhdGlvblRpbWU9MDt2YXIgZT1jLmV4cGlyYXRpb25UaW1lLGY9Yy5jaGlsZEV4cGlyYXRpb25UaW1lO2U9Zj5lP2Y6ZTthLmZpcnN0UGVuZGluZ1RpbWU9ZTtlPGEubGFzdFBlbmRpbmdUaW1lJiYoYS5sYXN0UGVuZGluZ1RpbWU9ZSk7YT09PUppJiYoVj1KaT1udWxsLFc9MCk7MTxjLmVmZmVjdFRhZz9udWxsIT09Yy5sYXN0RWZmZWN0PyhjLmxhc3RFZmZlY3QubmV4dEVmZmVjdD1jLGU9Yy5maXJzdEVmZmVjdCk6ZT1jOmU9Yy5maXJzdEVmZmVjdDtcbmlmKG51bGwhPT1lKXtmPVU7VXw9RGk7QWkuY3VycmVudD1udWxsO0hlPVFkO3ZhciBoPWFlKCk7aWYoYmUoaCkpe2lmKFwic2VsZWN0aW9uU3RhcnRcImluIGgpdmFyIGc9e3N0YXJ0Omguc2VsZWN0aW9uU3RhcnQsZW5kOmguc2VsZWN0aW9uRW5kfTtlbHNlIGE6e2c9KGc9aC5vd25lckRvY3VtZW50KSYmZy5kZWZhdWx0Vmlld3x8d2luZG93O3ZhciBrPWcuZ2V0U2VsZWN0aW9uJiZnLmdldFNlbGVjdGlvbigpO2lmKGsmJjAhPT1rLnJhbmdlQ291bnQpe2c9ay5hbmNob3JOb2RlO3ZhciBsPWsuYW5jaG9yT2Zmc2V0LG49ay5mb2N1c05vZGU7az1rLmZvY3VzT2Zmc2V0O3RyeXtnLm5vZGVUeXBlLG4ubm9kZVR5cGV9Y2F0Y2goemIpe2c9bnVsbDticmVhayBhfXZhciB6PTAseD0tMSx2PS0xLHJiPTAsQmU9MCx1PWgsdz1udWxsO2I6Zm9yKDs7KXtmb3IodmFyIEM7Oyl7dSE9PWd8fDAhPT1sJiYzIT09dS5ub2RlVHlwZXx8KHg9eitsKTt1IT09bnx8MCE9PWsmJjMhPT11Lm5vZGVUeXBlfHxcbih2PXorayk7Mz09PXUubm9kZVR5cGUmJih6Kz11Lm5vZGVWYWx1ZS5sZW5ndGgpO2lmKG51bGw9PT0oQz11LmZpcnN0Q2hpbGQpKWJyZWFrO3c9dTt1PUN9Zm9yKDs7KXtpZih1PT09aClicmVhayBiO3c9PT1nJiYrK3JiPT09bCYmKHg9eik7dz09PW4mJisrQmU9PT1rJiYodj16KTtpZihudWxsIT09KEM9dS5uZXh0U2libGluZykpYnJlYWs7dT13O3c9dS5wYXJlbnROb2RlfXU9Q31nPS0xPT09eHx8LTE9PT12P251bGw6e3N0YXJ0OngsZW5kOnZ9fWVsc2UgZz1udWxsfWc9Z3x8e3N0YXJ0OjAsZW5kOjB9fWVsc2UgZz1udWxsO0llPXtmb2N1c2VkRWxlbTpoLHNlbGVjdGlvblJhbmdlOmd9O1FkPSExO1k9ZTtkbyB0cnl7Zm9yKDtudWxsIT09WTspe2lmKDAhPT0oWS5lZmZlY3RUYWcmMjU2KSl7dmFyIEk9WS5hbHRlcm5hdGU7aD1ZO3N3aXRjaChoLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpoaShKZyxJZyxoKTticmVhaztjYXNlIDE6aWYoaC5lZmZlY3RUYWcmMjU2JiZudWxsIT09XG5JKXt2YXIgRT1JLm1lbW9pemVkUHJvcHMsdWE9SS5tZW1vaXplZFN0YXRlLGdoPWguc3RhdGVOb2RlLG9qPWdoLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKGguZWxlbWVudFR5cGU9PT1oLnR5cGU/RTpBZihoLnR5cGUsRSksdWEpO2doLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlPW9qfWJyZWFrO2Nhc2UgMzpjYXNlIDU6Y2FzZSA2OmNhc2UgNDpjYXNlIDE3OmJyZWFrO2RlZmF1bHQ6dGhyb3cgdChFcnJvcigxNjMpKTt9fVk9WS5uZXh0RWZmZWN0fX1jYXRjaCh6Yil7aWYobnVsbD09PVkpdGhyb3cgdChFcnJvcigzMzApKTtmaShZLHpiKTtZPVkubmV4dEVmZmVjdH13aGlsZShudWxsIT09WSk7WT1lO2RvIHRyeXtmb3IoST1iO251bGwhPT1ZOyl7dmFyIEE9WS5lZmZlY3RUYWc7QSYxNiYmd2UoWS5zdGF0ZU5vZGUsXCJcIik7aWYoQSYxMjgpe3ZhciBwPVkuYWx0ZXJuYXRlO2lmKG51bGwhPT1wKXt2YXIgcj1wLnJlZjtudWxsIT09ciYmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiByP1xucihudWxsKTpyLmN1cnJlbnQ9bnVsbCl9fXN3aXRjaChBJjE0KXtjYXNlIDI6bmkoWSk7WS5lZmZlY3RUYWcmPS0zO2JyZWFrO2Nhc2UgNjpuaShZKTtZLmVmZmVjdFRhZyY9LTM7b2koWS5hbHRlcm5hdGUsWSk7YnJlYWs7Y2FzZSA0Om9pKFkuYWx0ZXJuYXRlLFkpO2JyZWFrO2Nhc2UgODpFPVk7a2koRSxJKTtFLnJldHVybj1udWxsO0UuY2hpbGQ9bnVsbDtFLm1lbW9pemVkU3RhdGU9bnVsbDtFLnVwZGF0ZVF1ZXVlPW51bGw7RS5kZXBlbmRlbmNpZXM9bnVsbDt2YXIgSz1FLmFsdGVybmF0ZTtudWxsIT09SyYmKEsucmV0dXJuPW51bGwsSy5jaGlsZD1udWxsLEsubWVtb2l6ZWRTdGF0ZT1udWxsLEsudXBkYXRlUXVldWU9bnVsbCxLLmRlcGVuZGVuY2llcz1udWxsKX1ZPVkubmV4dEVmZmVjdH19Y2F0Y2goemIpe2lmKG51bGw9PT1ZKXRocm93IHQoRXJyb3IoMzMwKSk7ZmkoWSx6Yik7WT1ZLm5leHRFZmZlY3R9d2hpbGUobnVsbCE9PVkpO3I9SWU7cD1hZSgpO0E9ci5mb2N1c2VkRWxlbTtcbkk9ci5zZWxlY3Rpb25SYW5nZTtpZihwIT09QSYmQSYmQS5vd25lckRvY3VtZW50JiYkZChBLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LEEpKXtudWxsIT09SSYmYmUoQSkmJihwPUkuc3RhcnQscj1JLmVuZCx2b2lkIDA9PT1yJiYocj1wKSxcInNlbGVjdGlvblN0YXJ0XCJpbiBBPyhBLnNlbGVjdGlvblN0YXJ0PXAsQS5zZWxlY3Rpb25FbmQ9TWF0aC5taW4ocixBLnZhbHVlLmxlbmd0aCkpOihyPShwPUEub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpJiZwLmRlZmF1bHRWaWV3fHx3aW5kb3csci5nZXRTZWxlY3Rpb24mJihyPXIuZ2V0U2VsZWN0aW9uKCksRT1BLnRleHRDb250ZW50Lmxlbmd0aCxLPU1hdGgubWluKEkuc3RhcnQsRSksST12b2lkIDA9PT1JLmVuZD9LOk1hdGgubWluKEkuZW5kLEUpLCFyLmV4dGVuZCYmSz5JJiYoRT1JLEk9SyxLPUUpLEU9WmQoQSxLKSx1YT1aZChBLEkpLEUmJnVhJiYoMSE9PXIucmFuZ2VDb3VudHx8ci5hbmNob3JOb2RlIT09RS5ub2RlfHxyLmFuY2hvck9mZnNldCE9PVxuRS5vZmZzZXR8fHIuZm9jdXNOb2RlIT09dWEubm9kZXx8ci5mb2N1c09mZnNldCE9PXVhLm9mZnNldCkmJihwPXAuY3JlYXRlUmFuZ2UoKSxwLnNldFN0YXJ0KEUubm9kZSxFLm9mZnNldCksci5yZW1vdmVBbGxSYW5nZXMoKSxLPkk/KHIuYWRkUmFuZ2UocCksci5leHRlbmQodWEubm9kZSx1YS5vZmZzZXQpKToocC5zZXRFbmQodWEubm9kZSx1YS5vZmZzZXQpLHIuYWRkUmFuZ2UocCkpKSkpKTtwPVtdO2ZvcihyPUE7cj1yLnBhcmVudE5vZGU7KTE9PT1yLm5vZGVUeXBlJiZwLnB1c2goe2VsZW1lbnQ6cixsZWZ0OnIuc2Nyb2xsTGVmdCx0b3A6ci5zY3JvbGxUb3B9KTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgQS5mb2N1cyYmQS5mb2N1cygpO2ZvcihBPTA7QTxwLmxlbmd0aDtBKyspcj1wW0FdLHIuZWxlbWVudC5zY3JvbGxMZWZ0PXIubGVmdCxyLmVsZW1lbnQuc2Nyb2xsVG9wPXIudG9wfUllPW51bGw7UWQ9ISFIZTtIZT1udWxsO2EuY3VycmVudD1jO1k9ZTtkbyB0cnl7Zm9yKEE9ZDtudWxsIT09XG5ZOyl7dmFyICRhPVkuZWZmZWN0VGFnO2lmKCRhJjM2KXt2YXIgbmM9WS5hbHRlcm5hdGU7cD1ZO3I9QTtzd2l0Y2gocC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6aGkoTWcsTmcscCk7YnJlYWs7Y2FzZSAxOnZhciBtZD1wLnN0YXRlTm9kZTtpZihwLmVmZmVjdFRhZyY0KWlmKG51bGw9PT1uYyltZC5jb21wb25lbnREaWRNb3VudCgpO2Vsc2V7dmFyIEZqPXAuZWxlbWVudFR5cGU9PT1wLnR5cGU/bmMubWVtb2l6ZWRQcm9wczpBZihwLnR5cGUsbmMubWVtb2l6ZWRQcm9wcyk7bWQuY29tcG9uZW50RGlkVXBkYXRlKEZqLG5jLm1lbW9pemVkU3RhdGUsbWQuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpfXZhciBYaD1wLnVwZGF0ZVF1ZXVlO251bGwhPT1YaCYmWWYocCxYaCxtZCxyKTticmVhaztjYXNlIDM6dmFyIFloPXAudXBkYXRlUXVldWU7aWYobnVsbCE9PVloKXtLPW51bGw7aWYobnVsbCE9PXAuY2hpbGQpc3dpdGNoKHAuY2hpbGQudGFnKXtjYXNlIDU6Sz1cbnAuY2hpbGQuc3RhdGVOb2RlO2JyZWFrO2Nhc2UgMTpLPXAuY2hpbGQuc3RhdGVOb2RlfVlmKHAsWWgsSyxyKX1icmVhaztjYXNlIDU6dmFyIEdqPXAuc3RhdGVOb2RlO251bGw9PT1uYyYmcC5lZmZlY3RUYWcmNCYmKHI9R2osSmUocC50eXBlLHAubWVtb2l6ZWRQcm9wcykmJnIuZm9jdXMoKSk7YnJlYWs7Y2FzZSA2OmJyZWFrO2Nhc2UgNDpicmVhaztjYXNlIDEyOmJyZWFrO2Nhc2UgMTM6Y2FzZSAxOTpjYXNlIDE3OmNhc2UgMjA6YnJlYWs7ZGVmYXVsdDp0aHJvdyB0KEVycm9yKDE2MykpO319aWYoJGEmMTI4KXt2YXIgbmQ9WS5yZWY7aWYobnVsbCE9PW5kKXt2YXIgWmg9WS5zdGF0ZU5vZGU7c3dpdGNoKFkudGFnKXtjYXNlIDU6dmFyIGdmPVpoO2JyZWFrO2RlZmF1bHQ6Z2Y9Wmh9XCJmdW5jdGlvblwiPT09dHlwZW9mIG5kP25kKGdmKTpuZC5jdXJyZW50PWdmfX0kYSY1MTImJihQaT0hMCk7WT1ZLm5leHRFZmZlY3R9fWNhdGNoKHpiKXtpZihudWxsPT09WSl0aHJvdyB0KEVycm9yKDMzMCkpO1xuZmkoWSx6Yik7WT1ZLm5leHRFZmZlY3R9d2hpbGUobnVsbCE9PVkpO1k9bnVsbDtuZigpO1U9Zn1lbHNlIGEuY3VycmVudD1jO2lmKFBpKVBpPSExLFFpPWEsU2k9ZCxSaT1iO2Vsc2UgZm9yKFk9ZTtudWxsIT09WTspYj1ZLm5leHRFZmZlY3QsWS5uZXh0RWZmZWN0PW51bGwsWT1iO2I9YS5maXJzdFBlbmRpbmdUaW1lOzAhPT1iPygkYT1jZygpLCRhPXpmKCRhLGIpLFppKGEsJGEsYikpOnhpPW51bGw7XCJmdW5jdGlvblwiPT09dHlwZW9mIHBqJiZwaihjLnN0YXRlTm9kZSxkKTsxMDczNzQxODIzPT09Yj9hPT09Vmk/VWkrKzooVWk9MCxWaT1hKTpVaT0wO2lmKHVpKXRocm93IHVpPSExLGE9dmksdmk9bnVsbCxhO2lmKChVJkJpKSE9PVQpcmV0dXJuIG51bGw7TygpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gY2ooKXtpZihudWxsPT09UWkpcmV0dXJuITE7dmFyIGE9UWksYj1TaSxjPVJpO1FpPW51bGw7U2k9MDtSaT05MDtyZXR1cm4gdmYoOTc8Yz85NzpjLHFqLmJpbmQobnVsbCxhLGIpKX1mdW5jdGlvbiBxaihhKXtpZigoVSYoQ2l8RGkpKSE9PVQpdGhyb3cgdChFcnJvcigzMzEpKTt2YXIgYj1VO1V8PURpO2ZvcihhPWEuY3VycmVudC5maXJzdEVmZmVjdDtudWxsIT09YTspe3RyeXt2YXIgYz1hO2lmKDAhPT0oYy5lZmZlY3RUYWcmNTEyKSlzd2l0Y2goYy50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6aGkoUGcsSWcsYyksaGkoSWcsT2csYyl9fWNhdGNoKGQpe2lmKG51bGw9PT1hKXRocm93IHQoRXJyb3IoMzMwKSk7ZmkoYSxkKX1jPWEubmV4dEVmZmVjdDthLm5leHRFZmZlY3Q9bnVsbDthPWN9VT1iO08oKTtyZXR1cm4hMH1cbmZ1bmN0aW9uIHJqKGEsYixjKXtiPWJpKGMsYik7Yj10aShhLGIsMTA3Mzc0MTgyMyk7U2YoYSxiKTthPVlpKGEsMTA3Mzc0MTgyMyk7bnVsbCE9PWEmJlppKGEsOTksMTA3Mzc0MTgyMyl9ZnVuY3Rpb24gZmkoYSxiKXtpZigzPT09YS50YWcpcmooYSxhLGIpO2Vsc2UgZm9yKHZhciBjPWEucmV0dXJuO251bGwhPT1jOyl7aWYoMz09PWMudGFnKXtyaihjLGEsYik7YnJlYWt9ZWxzZSBpZigxPT09Yy50YWcpe3ZhciBkPWMuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBjLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT14aXx8IXhpLmhhcyhkKSkpe2E9YmkoYixhKTthPXdpKGMsYSwxMDczNzQxODIzKTtTZihjLGEpO2M9WWkoYywxMDczNzQxODIzKTtudWxsIT09YyYmWmkoYyw5OSwxMDczNzQxODIzKTticmVha319Yz1jLnJldHVybn19XG5mdW5jdGlvbiBraihhLGIsYyl7dmFyIGQ9YS5waW5nQ2FjaGU7bnVsbCE9PWQmJmQuZGVsZXRlKGIpO0ppPT09YSYmVz09PWM/WD09PUhpfHxYPT09R2kmJjEwNzM3NDE4MjM9PT1LaSYmc2YoKS1waTxPaT9oaihhLFcpOk5pPSEwOmEubGFzdFBlbmRpbmdUaW1lPGN8fChiPWEucGluZ1RpbWUsMCE9PWImJmI8Y3x8KGEucGluZ1RpbWU9YyxhLmZpbmlzaGVkRXhwaXJhdGlvblRpbWU9PT1jJiYoYS5maW5pc2hlZEV4cGlyYXRpb25UaW1lPTAsYS5maW5pc2hlZFdvcms9bnVsbCksYj1jZygpLGI9emYoYixjKSxaaShhLGIsYykpKX1mdW5jdGlvbiByaShhLGIpe3ZhciBjPWEuc3RhdGVOb2RlO251bGwhPT1jJiZjLmRlbGV0ZShiKTtjPWNnKCk7Yj1kZyhjLGEsbnVsbCk7Yz16ZihjLGIpO2E9WWkoYSxiKTtudWxsIT09YSYmWmkoYSxjLGIpfXZhciBtaj12b2lkIDA7XG5taj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yi5leHBpcmF0aW9uVGltZTtpZihudWxsIT09YSl7dmFyIGU9Yi5wZW5kaW5nUHJvcHM7aWYoYS5tZW1vaXplZFByb3BzIT09ZXx8TS5jdXJyZW50KUxmPSEwO2Vsc2UgaWYoZDxjKXtMZj0hMTtzd2l0Y2goYi50YWcpe2Nhc2UgMzpOaChiKTtDaCgpO2JyZWFrO2Nhc2UgNTpDZyhiKTtpZihiLm1vZGUmNCYmMSE9PWMmJmUuaGlkZGVuKXJldHVybiBiLmV4cGlyYXRpb25UaW1lPWIuY2hpbGRFeHBpcmF0aW9uVGltZT0xLG51bGw7YnJlYWs7Y2FzZSAxOk4oYi50eXBlKSYmWGUoYik7YnJlYWs7Y2FzZSA0OkFnKGIsYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyk7YnJlYWs7Y2FzZSAxMDpIZihiLGIubWVtb2l6ZWRQcm9wcy52YWx1ZSk7YnJlYWs7Y2FzZSAxMzppZihudWxsIT09Yi5tZW1vaXplZFN0YXRlKXtkPWIuY2hpbGQuY2hpbGRFeHBpcmF0aW9uVGltZTtpZigwIT09ZCYmZD49YylyZXR1cm4gUGgoYSxiLGMpO0ooUCxQLmN1cnJlbnQmXG5FZyxiKTtiPUZoKGEsYixjKTtyZXR1cm4gbnVsbCE9PWI/Yi5zaWJsaW5nOm51bGx9SihQLFAuY3VycmVudCZFZyxiKTticmVhaztjYXNlIDE5OmQ9Yi5jaGlsZEV4cGlyYXRpb25UaW1lPj1jO2lmKDAhPT0oYS5lZmZlY3RUYWcmNjQpKXtpZihkKXJldHVybiBSaChhLGIsYyk7Yi5lZmZlY3RUYWd8PTY0fWU9Yi5tZW1vaXplZFN0YXRlO251bGwhPT1lJiYoZS5yZW5kZXJpbmc9bnVsbCxlLnRhaWw9bnVsbCk7SihQLFAuY3VycmVudCxiKTtpZighZClyZXR1cm4gbnVsbH1yZXR1cm4gRmgoYSxiLGMpfX1lbHNlIExmPSExO2IuZXhwaXJhdGlvblRpbWU9MDtzd2l0Y2goYi50YWcpe2Nhc2UgMjpkPWIudHlwZTtudWxsIT09YSYmKGEuYWx0ZXJuYXRlPW51bGwsYi5hbHRlcm5hdGU9bnVsbCxiLmVmZmVjdFRhZ3w9Mik7YT1iLnBlbmRpbmdQcm9wcztlPVNlKGIsTC5jdXJyZW50KTtLZihiLGMpO2U9ZGgobnVsbCxiLGQsYSxlLGMpO2IuZWZmZWN0VGFnfD0xO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgZSYmXG5udWxsIT09ZSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGUucmVuZGVyJiZ2b2lkIDA9PT1lLiQkdHlwZW9mKXtiLnRhZz0xO2loKCk7aWYoTihkKSl7dmFyIGY9ITA7WGUoYil9ZWxzZSBmPSExO2IubWVtb2l6ZWRTdGF0ZT1udWxsIT09ZS5zdGF0ZSYmdm9pZCAwIT09ZS5zdGF0ZT9lLnN0YXRlOm51bGw7dmFyIGg9ZC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7XCJmdW5jdGlvblwiPT09dHlwZW9mIGgmJmJnKGIsZCxoLGEpO2UudXBkYXRlcj1mZztiLnN0YXRlTm9kZT1lO2UuX3JlYWN0SW50ZXJuYWxGaWJlcj1iO2pnKGIsZCxhLGMpO2I9TWgobnVsbCxiLGQsITAsZixjKX1lbHNlIGIudGFnPTAsUyhudWxsLGIsZSxjKSxiPWIuY2hpbGQ7cmV0dXJuIGI7Y2FzZSAxNjplPWIuZWxlbWVudFR5cGU7bnVsbCE9PWEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5lZmZlY3RUYWd8PTIpO2E9Yi5wZW5kaW5nUHJvcHM7ZT1CZihlKTtiLnR5cGU9ZTtmPWIudGFnPXNqKGUpO1xuYT1BZihlLGEpO3N3aXRjaChmKXtjYXNlIDA6Yj1KaChudWxsLGIsZSxhLGMpO2JyZWFrO2Nhc2UgMTpiPUxoKG51bGwsYixlLGEsYyk7YnJlYWs7Y2FzZSAxMTpiPUVoKG51bGwsYixlLGEsYyk7YnJlYWs7Y2FzZSAxNDpiPUdoKG51bGwsYixlLEFmKGUudHlwZSxhKSxkLGMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgdChFcnJvcigzMDYpLGUsXCJcIik7fXJldHVybiBiO2Nhc2UgMDpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6QWYoZCxlKSxKaChhLGIsZCxlLGMpO2Nhc2UgMTpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6QWYoZCxlKSxMaChhLGIsZCxlLGMpO2Nhc2UgMzpOaChiKTtkPWIudXBkYXRlUXVldWU7aWYobnVsbD09PWQpdGhyb3cgdChFcnJvcigyODIpKTtlPWIubWVtb2l6ZWRTdGF0ZTtlPW51bGwhPT1lP2UuZWxlbWVudDpudWxsO1dmKGIsZCxiLnBlbmRpbmdQcm9wcyxcbm51bGwsYyk7ZD1iLm1lbW9pemVkU3RhdGUuZWxlbWVudDtpZihkPT09ZSlDaCgpLGI9RmgoYSxiLGMpO2Vsc2V7ZT1iLnN0YXRlTm9kZTtpZihlPShudWxsPT09YXx8bnVsbD09PWEuY2hpbGQpJiZlLmh5ZHJhdGUpdWg9TmUoYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mby5maXJzdENoaWxkKSx0aD1iLGU9dmg9ITA7ZT8oYi5lZmZlY3RUYWd8PTIsYi5jaGlsZD11ZyhiLG51bGwsZCxjKSk6KFMoYSxiLGQsYyksQ2goKSk7Yj1iLmNoaWxkfXJldHVybiBiO2Nhc2UgNTpyZXR1cm4gQ2coYiksbnVsbD09PWEmJnpoKGIpLGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZj1udWxsIT09YT9hLm1lbW9pemVkUHJvcHM6bnVsbCxoPWUuY2hpbGRyZW4sS2UoZCxlKT9oPW51bGw6bnVsbCE9PWYmJktlKGQsZikmJihiLmVmZmVjdFRhZ3w9MTYpLEtoKGEsYiksYi5tb2RlJjQmJjEhPT1jJiZlLmhpZGRlbj8oYi5leHBpcmF0aW9uVGltZT1iLmNoaWxkRXhwaXJhdGlvblRpbWU9MSxiPW51bGwpOlxuKFMoYSxiLGgsYyksYj1iLmNoaWxkKSxiO2Nhc2UgNjpyZXR1cm4gbnVsbD09PWEmJnpoKGIpLG51bGw7Y2FzZSAxMzpyZXR1cm4gUGgoYSxiLGMpO2Nhc2UgNDpyZXR1cm4gQWcoYixiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxkPWIucGVuZGluZ1Byb3BzLG51bGw9PT1hP2IuY2hpbGQ9dGcoYixudWxsLGQsYyk6UyhhLGIsZCxjKSxiLmNoaWxkO2Nhc2UgMTE6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkFmKGQsZSksRWgoYSxiLGQsZSxjKTtjYXNlIDc6cmV0dXJuIFMoYSxiLGIucGVuZGluZ1Byb3BzLGMpLGIuY2hpbGQ7Y2FzZSA4OnJldHVybiBTKGEsYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixjKSxiLmNoaWxkO2Nhc2UgMTI6cmV0dXJuIFMoYSxiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGIuY2hpbGQ7Y2FzZSAxMDphOntkPWIudHlwZS5fY29udGV4dDtlPWIucGVuZGluZ1Byb3BzO2g9Yi5tZW1vaXplZFByb3BzO1xuZj1lLnZhbHVlO0hmKGIsZik7aWYobnVsbCE9PWgpe3ZhciBnPWgudmFsdWU7Zj1oZChnLGYpPzA6KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLl9jYWxjdWxhdGVDaGFuZ2VkQml0cz9kLl9jYWxjdWxhdGVDaGFuZ2VkQml0cyhnLGYpOjEwNzM3NDE4MjMpfDA7aWYoMD09PWYpe2lmKGguY2hpbGRyZW49PT1lLmNoaWxkcmVuJiYhTS5jdXJyZW50KXtiPUZoKGEsYixjKTticmVhayBhfX1lbHNlIGZvcihnPWIuY2hpbGQsbnVsbCE9PWcmJihnLnJldHVybj1iKTtudWxsIT09Zzspe3ZhciBrPWcuZGVwZW5kZW5jaWVzO2lmKG51bGwhPT1rKXtoPWcuY2hpbGQ7Zm9yKHZhciBsPWsuZmlyc3RDb250ZXh0O251bGwhPT1sOyl7aWYobC5jb250ZXh0PT09ZCYmMCE9PShsLm9ic2VydmVkQml0cyZmKSl7MT09PWcudGFnJiYobD1RZihjLG51bGwpLGwudGFnPTIsU2YoZyxsKSk7Zy5leHBpcmF0aW9uVGltZTxjJiYoZy5leHBpcmF0aW9uVGltZT1jKTtsPWcuYWx0ZXJuYXRlO251bGwhPT1sJiZsLmV4cGlyYXRpb25UaW1lPFxuYyYmKGwuZXhwaXJhdGlvblRpbWU9Yyk7SmYoZy5yZXR1cm4sYyk7ay5leHBpcmF0aW9uVGltZTxjJiYoay5leHBpcmF0aW9uVGltZT1jKTticmVha31sPWwubmV4dH19ZWxzZSBoPTEwPT09Zy50YWc/Zy50eXBlPT09Yi50eXBlP251bGw6Zy5jaGlsZDpnLmNoaWxkO2lmKG51bGwhPT1oKWgucmV0dXJuPWc7ZWxzZSBmb3IoaD1nO251bGwhPT1oOyl7aWYoaD09PWIpe2g9bnVsbDticmVha31nPWguc2libGluZztpZihudWxsIT09Zyl7Zy5yZXR1cm49aC5yZXR1cm47aD1nO2JyZWFrfWg9aC5yZXR1cm59Zz1ofX1TKGEsYixlLmNoaWxkcmVuLGMpO2I9Yi5jaGlsZH1yZXR1cm4gYjtjYXNlIDk6cmV0dXJuIGU9Yi50eXBlLGY9Yi5wZW5kaW5nUHJvcHMsZD1mLmNoaWxkcmVuLEtmKGIsYyksZT1NZihlLGYudW5zdGFibGVfb2JzZXJ2ZWRCaXRzKSxkPWQoZSksYi5lZmZlY3RUYWd8PTEsUyhhLGIsZCxjKSxiLmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIGU9Yi50eXBlLGY9QWYoZSxiLnBlbmRpbmdQcm9wcyksXG5mPUFmKGUudHlwZSxmKSxHaChhLGIsZSxmLGQsYyk7Y2FzZSAxNTpyZXR1cm4gSWgoYSxiLGIudHlwZSxiLnBlbmRpbmdQcm9wcyxkLGMpO2Nhc2UgMTc6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkFmKGQsZSksbnVsbCE9PWEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5lZmZlY3RUYWd8PTIpLGIudGFnPTEsTihkKT8oYT0hMCxYZShiKSk6YT0hMSxLZihiLGMpLGhnKGIsZCxlLGMpLGpnKGIsZCxlLGMpLE1oKG51bGwsYixkLCEwLGEsYyk7Y2FzZSAxOTpyZXR1cm4gUmgoYSxiLGMpfXRocm93IHQoRXJyb3IoMTU2KSk7fTt2YXIgcGo9bnVsbCxqaT1udWxsO1xuZnVuY3Rpb24gdGooYSl7aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18pcmV0dXJuITE7dmFyIGI9X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fO2lmKGIuaXNEaXNhYmxlZHx8IWIuc3VwcG9ydHNGaWJlcilyZXR1cm4hMDt0cnl7dmFyIGM9Yi5pbmplY3QoYSk7cGo9ZnVuY3Rpb24oYSl7dHJ5e2Iub25Db21taXRGaWJlclJvb3QoYyxhLHZvaWQgMCw2ND09PShhLmN1cnJlbnQuZWZmZWN0VGFnJjY0KSl9Y2F0Y2goZSl7fX07amk9ZnVuY3Rpb24oYSl7dHJ5e2Iub25Db21taXRGaWJlclVubW91bnQoYyxhKX1jYXRjaChlKXt9fX1jYXRjaChkKXt9cmV0dXJuITB9XG5mdW5jdGlvbiB1aihhLGIsYyxkKXt0aGlzLnRhZz1hO3RoaXMua2V5PWM7dGhpcy5zaWJsaW5nPXRoaXMuY2hpbGQ9dGhpcy5yZXR1cm49dGhpcy5zdGF0ZU5vZGU9dGhpcy50eXBlPXRoaXMuZWxlbWVudFR5cGU9bnVsbDt0aGlzLmluZGV4PTA7dGhpcy5yZWY9bnVsbDt0aGlzLnBlbmRpbmdQcm9wcz1iO3RoaXMuZGVwZW5kZW5jaWVzPXRoaXMubWVtb2l6ZWRTdGF0ZT10aGlzLnVwZGF0ZVF1ZXVlPXRoaXMubWVtb2l6ZWRQcm9wcz1udWxsO3RoaXMubW9kZT1kO3RoaXMuZWZmZWN0VGFnPTA7dGhpcy5sYXN0RWZmZWN0PXRoaXMuZmlyc3RFZmZlY3Q9dGhpcy5uZXh0RWZmZWN0PW51bGw7dGhpcy5jaGlsZEV4cGlyYXRpb25UaW1lPXRoaXMuZXhwaXJhdGlvblRpbWU9MDt0aGlzLmFsdGVybmF0ZT1udWxsfWZ1bmN0aW9uIHhoKGEsYixjLGQpe3JldHVybiBuZXcgdWooYSxiLGMsZCl9XG5mdW5jdGlvbiBIaChhKXthPWEucHJvdG90eXBlO3JldHVybiEoIWF8fCFhLmlzUmVhY3RDb21wb25lbnQpfWZ1bmN0aW9uIHNqKGEpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKXJldHVybiBIaChhKT8xOjA7aWYodm9pZCAwIT09YSYmbnVsbCE9PWEpe2E9YS4kJHR5cGVvZjtpZihhPT09Z2MpcmV0dXJuIDExO2lmKGE9PT1qYylyZXR1cm4gMTR9cmV0dXJuIDJ9XG5mdW5jdGlvbiBvZyhhLGIpe3ZhciBjPWEuYWx0ZXJuYXRlO251bGw9PT1jPyhjPXhoKGEudGFnLGIsYS5rZXksYS5tb2RlKSxjLmVsZW1lbnRUeXBlPWEuZWxlbWVudFR5cGUsYy50eXBlPWEudHlwZSxjLnN0YXRlTm9kZT1hLnN0YXRlTm9kZSxjLmFsdGVybmF0ZT1hLGEuYWx0ZXJuYXRlPWMpOihjLnBlbmRpbmdQcm9wcz1iLGMuZWZmZWN0VGFnPTAsYy5uZXh0RWZmZWN0PW51bGwsYy5maXJzdEVmZmVjdD1udWxsLGMubGFzdEVmZmVjdD1udWxsKTtjLmNoaWxkRXhwaXJhdGlvblRpbWU9YS5jaGlsZEV4cGlyYXRpb25UaW1lO2MuZXhwaXJhdGlvblRpbWU9YS5leHBpcmF0aW9uVGltZTtjLmNoaWxkPWEuY2hpbGQ7Yy5tZW1vaXplZFByb3BzPWEubWVtb2l6ZWRQcm9wcztjLm1lbW9pemVkU3RhdGU9YS5tZW1vaXplZFN0YXRlO2MudXBkYXRlUXVldWU9YS51cGRhdGVRdWV1ZTtiPWEuZGVwZW5kZW5jaWVzO2MuZGVwZW5kZW5jaWVzPW51bGw9PT1iP251bGw6e2V4cGlyYXRpb25UaW1lOmIuZXhwaXJhdGlvblRpbWUsXG5maXJzdENvbnRleHQ6Yi5maXJzdENvbnRleHQscmVzcG9uZGVyczpiLnJlc3BvbmRlcnN9O2Muc2libGluZz1hLnNpYmxpbmc7Yy5pbmRleD1hLmluZGV4O2MucmVmPWEucmVmO3JldHVybiBjfVxuZnVuY3Rpb24gcWcoYSxiLGMsZCxlLGYpe3ZhciBoPTI7ZD1hO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKUhoKGEpJiYoaD0xKTtlbHNlIGlmKFwic3RyaW5nXCI9PT10eXBlb2YgYSloPTU7ZWxzZSBhOnN3aXRjaChhKXtjYXNlIGFjOnJldHVybiBzZyhjLmNoaWxkcmVuLGUsZixiKTtjYXNlIGZjOmg9ODtlfD03O2JyZWFrO2Nhc2UgYmM6aD04O2V8PTE7YnJlYWs7Y2FzZSBjYzpyZXR1cm4gYT14aCgxMixjLGIsZXw4KSxhLmVsZW1lbnRUeXBlPWNjLGEudHlwZT1jYyxhLmV4cGlyYXRpb25UaW1lPWYsYTtjYXNlIGhjOnJldHVybiBhPXhoKDEzLGMsYixlKSxhLnR5cGU9aGMsYS5lbGVtZW50VHlwZT1oYyxhLmV4cGlyYXRpb25UaW1lPWYsYTtjYXNlIGljOnJldHVybiBhPXhoKDE5LGMsYixlKSxhLmVsZW1lbnRUeXBlPWljLGEuZXhwaXJhdGlvblRpbWU9ZixhO2RlZmF1bHQ6aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSlzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBkYzpoPVxuMTA7YnJlYWsgYTtjYXNlIGVjOmg9OTticmVhayBhO2Nhc2UgZ2M6aD0xMTticmVhayBhO2Nhc2UgamM6aD0xNDticmVhayBhO2Nhc2Uga2M6aD0xNjtkPW51bGw7YnJlYWsgYX10aHJvdyB0KEVycm9yKDEzMCksbnVsbD09YT9hOnR5cGVvZiBhLFwiXCIpO31iPXhoKGgsYyxiLGUpO2IuZWxlbWVudFR5cGU9YTtiLnR5cGU9ZDtiLmV4cGlyYXRpb25UaW1lPWY7cmV0dXJuIGJ9ZnVuY3Rpb24gc2coYSxiLGMsZCl7YT14aCg3LGEsZCxiKTthLmV4cGlyYXRpb25UaW1lPWM7cmV0dXJuIGF9ZnVuY3Rpb24gcGcoYSxiLGMpe2E9eGgoNixhLG51bGwsYik7YS5leHBpcmF0aW9uVGltZT1jO3JldHVybiBhfVxuZnVuY3Rpb24gcmcoYSxiLGMpe2I9eGgoNCxudWxsIT09YS5jaGlsZHJlbj9hLmNoaWxkcmVuOltdLGEua2V5LGIpO2IuZXhwaXJhdGlvblRpbWU9YztiLnN0YXRlTm9kZT17Y29udGFpbmVySW5mbzphLmNvbnRhaW5lckluZm8scGVuZGluZ0NoaWxkcmVuOm51bGwsaW1wbGVtZW50YXRpb246YS5pbXBsZW1lbnRhdGlvbn07cmV0dXJuIGJ9XG5mdW5jdGlvbiB2aihhLGIsYyl7dGhpcy50YWc9Yjt0aGlzLmN1cnJlbnQ9bnVsbDt0aGlzLmNvbnRhaW5lckluZm89YTt0aGlzLnBpbmdDYWNoZT10aGlzLnBlbmRpbmdDaGlsZHJlbj1udWxsO3RoaXMuZmluaXNoZWRFeHBpcmF0aW9uVGltZT0wO3RoaXMuZmluaXNoZWRXb3JrPW51bGw7dGhpcy50aW1lb3V0SGFuZGxlPS0xO3RoaXMucGVuZGluZ0NvbnRleHQ9dGhpcy5jb250ZXh0PW51bGw7dGhpcy5oeWRyYXRlPWM7dGhpcy5jYWxsYmFja05vZGU9dGhpcy5maXJzdEJhdGNoPW51bGw7dGhpcy5waW5nVGltZT10aGlzLmxhc3RQZW5kaW5nVGltZT10aGlzLmZpcnN0UGVuZGluZ1RpbWU9dGhpcy5jYWxsYmFja0V4cGlyYXRpb25UaW1lPTB9ZnVuY3Rpb24gd2ooYSxiLGMpe2E9bmV3IHZqKGEsYixjKTtiPXhoKDMsbnVsbCxudWxsLDI9PT1iPzc6MT09PWI/MzowKTthLmN1cnJlbnQ9YjtyZXR1cm4gYi5zdGF0ZU5vZGU9YX1cbmZ1bmN0aW9uIHhqKGEsYixjLGQsZSxmKXt2YXIgaD1iLmN1cnJlbnQ7YTppZihjKXtjPWMuX3JlYWN0SW50ZXJuYWxGaWJlcjtiOntpZigyIT09bGQoYyl8fDEhPT1jLnRhZyl0aHJvdyB0KEVycm9yKDE3MCkpO3ZhciBnPWM7ZG97c3dpdGNoKGcudGFnKXtjYXNlIDM6Zz1nLnN0YXRlTm9kZS5jb250ZXh0O2JyZWFrIGI7Y2FzZSAxOmlmKE4oZy50eXBlKSl7Zz1nLnN0YXRlTm9kZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dDticmVhayBifX1nPWcucmV0dXJufXdoaWxlKG51bGwhPT1nKTt0aHJvdyB0KEVycm9yKDE3MSkpO31pZigxPT09Yy50YWcpe3ZhciBrPWMudHlwZTtpZihOKGspKXtjPVdlKGMsayxnKTticmVhayBhfX1jPWd9ZWxzZSBjPVFlO251bGw9PT1iLmNvbnRleHQ/Yi5jb250ZXh0PWM6Yi5wZW5kaW5nQ29udGV4dD1jO2I9ZjtlPVFmKGQsZSk7ZS5wYXlsb2FkPXtlbGVtZW50OmF9O2I9dm9pZCAwPT09Yj9udWxsOmI7bnVsbCE9PWImJlxuKGUuY2FsbGJhY2s9Yik7U2YoaCxlKTtlZyhoLGQpO3JldHVybiBkfWZ1bmN0aW9uIHlqKGEsYixjLGQpe3ZhciBlPWIuY3VycmVudCxmPWNnKCksaD0kZi5zdXNwZW5zZTtlPWRnKGYsZSxoKTtyZXR1cm4geGooYSxiLGMsZSxoLGQpfWZ1bmN0aW9uIHpqKGEpe2E9YS5jdXJyZW50O2lmKCFhLmNoaWxkKXJldHVybiBudWxsO3N3aXRjaChhLmNoaWxkLnRhZyl7Y2FzZSA1OnJldHVybiBhLmNoaWxkLnN0YXRlTm9kZTtkZWZhdWx0OnJldHVybiBhLmNoaWxkLnN0YXRlTm9kZX19ZnVuY3Rpb24gQWooYSxiLGMpe3ZhciBkPTM8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsO3JldHVybnskJHR5cGVvZjokYixrZXk6bnVsbD09ZD9udWxsOlwiXCIrZCxjaGlsZHJlbjphLGNvbnRhaW5lckluZm86YixpbXBsZW1lbnRhdGlvbjpjfX1cbkRiPWZ1bmN0aW9uKGEsYixjKXtzd2l0Y2goYil7Y2FzZSBcImlucHV0XCI6RWMoYSxjKTtiPWMubmFtZTtpZihcInJhZGlvXCI9PT1jLnR5cGUmJm51bGwhPWIpe2ZvcihjPWE7Yy5wYXJlbnROb2RlOyljPWMucGFyZW50Tm9kZTtjPWMucXVlcnlTZWxlY3RvckFsbChcImlucHV0W25hbWU9XCIrSlNPTi5zdHJpbmdpZnkoXCJcIitiKSsnXVt0eXBlPVwicmFkaW9cIl0nKTtmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKXt2YXIgZD1jW2JdO2lmKGQhPT1hJiZkLmZvcm09PT1hLmZvcm0pe3ZhciBlPUthKGQpO2lmKCFlKXRocm93IHQoRXJyb3IoOTApKTtXYihkKTtFYyhkLGUpfX19YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6cGUoYSxjKTticmVhaztjYXNlIFwic2VsZWN0XCI6Yj1jLnZhbHVlLG51bGwhPWImJm1lKGEsISFjLm11bHRpcGxlLGIsITEpfX07XG5mdW5jdGlvbiBCaihhKXt2YXIgYj0xMDczNzQxODIxLTI1KigoKDEwNzM3NDE4MjEtY2coKSs1MDApLzI1fDApKzEpO2I8PVhpJiYtLWI7dGhpcy5fZXhwaXJhdGlvblRpbWU9WGk9Yjt0aGlzLl9yb290PWE7dGhpcy5fY2FsbGJhY2tzPXRoaXMuX25leHQ9bnVsbDt0aGlzLl9oYXNDaGlsZHJlbj10aGlzLl9kaWRDb21wbGV0ZT0hMTt0aGlzLl9jaGlsZHJlbj1udWxsO3RoaXMuX2RlZmVyPSEwfUJqLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oYSl7aWYoIXRoaXMuX2RlZmVyKXRocm93IHQoRXJyb3IoMjUwKSk7dGhpcy5faGFzQ2hpbGRyZW49ITA7dGhpcy5fY2hpbGRyZW49YTt2YXIgYj10aGlzLl9yb290Ll9pbnRlcm5hbFJvb3QsYz10aGlzLl9leHBpcmF0aW9uVGltZSxkPW5ldyBDajt4aihhLGIsbnVsbCxjLG51bGwsZC5fb25Db21taXQpO3JldHVybiBkfTtcbkJqLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGEpe2lmKHRoaXMuX2RpZENvbXBsZXRlKWEoKTtlbHNle3ZhciBiPXRoaXMuX2NhbGxiYWNrcztudWxsPT09YiYmKGI9dGhpcy5fY2FsbGJhY2tzPVtdKTtiLnB1c2goYSl9fTtcbkJqLnByb3RvdHlwZS5jb21taXQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9yb290Ll9pbnRlcm5hbFJvb3QsYj1hLmZpcnN0QmF0Y2g7aWYoIXRoaXMuX2RlZmVyfHxudWxsPT09Yil0aHJvdyB0KEVycm9yKDI1MSkpO2lmKHRoaXMuX2hhc0NoaWxkcmVuKXt2YXIgYz10aGlzLl9leHBpcmF0aW9uVGltZTtpZihiIT09dGhpcyl7dGhpcy5faGFzQ2hpbGRyZW4mJihjPXRoaXMuX2V4cGlyYXRpb25UaW1lPWIuX2V4cGlyYXRpb25UaW1lLHRoaXMucmVuZGVyKHRoaXMuX2NoaWxkcmVuKSk7Zm9yKHZhciBkPW51bGwsZT1iO2UhPT10aGlzOylkPWUsZT1lLl9uZXh0O2lmKG51bGw9PT1kKXRocm93IHQoRXJyb3IoMjUxKSk7ZC5fbmV4dD1lLl9uZXh0O3RoaXMuX25leHQ9YjthLmZpcnN0QmF0Y2g9dGhpc310aGlzLl9kZWZlcj0hMTtiPWM7aWYoKFUmKENpfERpKSkhPT1UKXRocm93IHQoRXJyb3IoMjUzKSk7eGYoWi5iaW5kKG51bGwsYSxiKSk7TygpO2I9dGhpcy5fbmV4dDt0aGlzLl9uZXh0PVxubnVsbDtiPWEuZmlyc3RCYXRjaD1iO251bGwhPT1iJiZiLl9oYXNDaGlsZHJlbiYmYi5yZW5kZXIoYi5fY2hpbGRyZW4pfWVsc2UgdGhpcy5fbmV4dD1udWxsLHRoaXMuX2RlZmVyPSExfTtCai5wcm90b3R5cGUuX29uQ29tcGxldGU9ZnVuY3Rpb24oKXtpZighdGhpcy5fZGlkQ29tcGxldGUpe3RoaXMuX2RpZENvbXBsZXRlPSEwO3ZhciBhPXRoaXMuX2NhbGxiYWNrcztpZihudWxsIT09YSlmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKykoMCxhW2JdKSgpfX07ZnVuY3Rpb24gQ2ooKXt0aGlzLl9jYWxsYmFja3M9bnVsbDt0aGlzLl9kaWRDb21taXQ9ITE7dGhpcy5fb25Db21taXQ9dGhpcy5fb25Db21taXQuYmluZCh0aGlzKX1Dai5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihhKXtpZih0aGlzLl9kaWRDb21taXQpYSgpO2Vsc2V7dmFyIGI9dGhpcy5fY2FsbGJhY2tzO251bGw9PT1iJiYoYj10aGlzLl9jYWxsYmFja3M9W10pO2IucHVzaChhKX19O1xuQ2oucHJvdG90eXBlLl9vbkNvbW1pdD1mdW5jdGlvbigpe2lmKCF0aGlzLl9kaWRDb21taXQpe3RoaXMuX2RpZENvbW1pdD0hMDt2YXIgYT10aGlzLl9jYWxsYmFja3M7aWYobnVsbCE9PWEpZm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPWFbYl07aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGMpdGhyb3cgdChFcnJvcigxOTEpLGMpO2MoKX19fTtmdW5jdGlvbiBEaihhLGIsYyl7dGhpcy5faW50ZXJuYWxSb290PXdqKGEsYixjKX1mdW5jdGlvbiBFaihhLGIpe3RoaXMuX2ludGVybmFsUm9vdD13aihhLDIsYil9RWoucHJvdG90eXBlLnJlbmRlcj1Eai5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5faW50ZXJuYWxSb290LGQ9bmV3IENqO2I9dm9pZCAwPT09Yj9udWxsOmI7bnVsbCE9PWImJmQudGhlbihiKTt5aihhLGMsbnVsbCxkLl9vbkNvbW1pdCk7cmV0dXJuIGR9O1xuRWoucHJvdG90eXBlLnVubW91bnQ9RGoucHJvdG90eXBlLnVubW91bnQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5faW50ZXJuYWxSb290LGM9bmV3IENqO2E9dm9pZCAwPT09YT9udWxsOmE7bnVsbCE9PWEmJmMudGhlbihhKTt5aihudWxsLGIsbnVsbCxjLl9vbkNvbW1pdCk7cmV0dXJuIGN9O0VqLnByb3RvdHlwZS5jcmVhdGVCYXRjaD1mdW5jdGlvbigpe3ZhciBhPW5ldyBCaih0aGlzKSxiPWEuX2V4cGlyYXRpb25UaW1lLGM9dGhpcy5faW50ZXJuYWxSb290LGQ9Yy5maXJzdEJhdGNoO2lmKG51bGw9PT1kKWMuZmlyc3RCYXRjaD1hLGEuX25leHQ9bnVsbDtlbHNle2ZvcihjPW51bGw7bnVsbCE9PWQmJmQuX2V4cGlyYXRpb25UaW1lPj1iOyljPWQsZD1kLl9uZXh0O2EuX25leHQ9ZDtudWxsIT09YyYmKGMuX25leHQ9YSl9cmV0dXJuIGF9O1xuZnVuY3Rpb24gSGooYSl7cmV0dXJuISghYXx8MSE9PWEubm9kZVR5cGUmJjkhPT1hLm5vZGVUeXBlJiYxMSE9PWEubm9kZVR5cGUmJig4IT09YS5ub2RlVHlwZXx8XCIgcmVhY3QtbW91bnQtcG9pbnQtdW5zdGFibGUgXCIhPT1hLm5vZGVWYWx1ZSkpfUpiPWVqO0tiPWZqO0xiPWFqO01iPWZ1bmN0aW9uKGEsYil7dmFyIGM9VTtVfD0yO3RyeXtyZXR1cm4gYShiKX1maW5hbGx5e1U9YyxVPT09VCYmTygpfX07ZnVuY3Rpb24gSWooYSxiKXtifHwoYj1hPzk9PT1hLm5vZGVUeXBlP2EuZG9jdW1lbnRFbGVtZW50OmEuZmlyc3RDaGlsZDpudWxsLGI9ISghYnx8MSE9PWIubm9kZVR5cGV8fCFiLmhhc0F0dHJpYnV0ZShcImRhdGEtcmVhY3Ryb290XCIpKSk7aWYoIWIpZm9yKHZhciBjO2M9YS5sYXN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYyk7cmV0dXJuIG5ldyBEaihhLDAsYil9XG5mdW5jdGlvbiBKaihhLGIsYyxkLGUpe3ZhciBmPWMuX3JlYWN0Um9vdENvbnRhaW5lcixoPXZvaWQgMDtpZihmKXtoPWYuX2ludGVybmFsUm9vdDtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZSl7dmFyIGc9ZTtlPWZ1bmN0aW9uKCl7dmFyIGE9emooaCk7Zy5jYWxsKGEpfX15aihiLGgsYSxlKX1lbHNle2Y9Yy5fcmVhY3RSb290Q29udGFpbmVyPUlqKGMsZCk7aD1mLl9pbnRlcm5hbFJvb3Q7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGUpe3ZhciBrPWU7ZT1mdW5jdGlvbigpe3ZhciBhPXpqKGgpO2suY2FsbChhKX19Z2ooZnVuY3Rpb24oKXt5aihiLGgsYSxlKX0pfXJldHVybiB6aihoKX1mdW5jdGlvbiBLaihhLGIpe3ZhciBjPTI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO2lmKCFIaihiKSl0aHJvdyB0KEVycm9yKDIwMCkpO3JldHVybiBBaihhLGIsbnVsbCxjKX1cbnZhciBOaj17Y3JlYXRlUG9ydGFsOktqLGZpbmRET01Ob2RlOmZ1bmN0aW9uKGEpe2lmKG51bGw9PWEpYT1udWxsO2Vsc2UgaWYoMSE9PWEubm9kZVR5cGUpe3ZhciBiPWEuX3JlYWN0SW50ZXJuYWxGaWJlcjtpZih2b2lkIDA9PT1iKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5yZW5kZXIpdGhyb3cgdChFcnJvcigxODgpKTt0aHJvdyB0KEVycm9yKDI2OCksT2JqZWN0LmtleXMoYSkpO31hPXFkKGIpO2E9bnVsbD09PWE/bnVsbDphLnN0YXRlTm9kZX1yZXR1cm4gYX0saHlkcmF0ZTpmdW5jdGlvbihhLGIsYyl7aWYoIUhqKGIpKXRocm93IHQoRXJyb3IoMjAwKSk7cmV0dXJuIEpqKG51bGwsYSxiLCEwLGMpfSxyZW5kZXI6ZnVuY3Rpb24oYSxiLGMpe2lmKCFIaihiKSl0aHJvdyB0KEVycm9yKDIwMCkpO3JldHVybiBKaihudWxsLGEsYiwhMSxjKX0sdW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIUhqKGMpKXRocm93IHQoRXJyb3IoMjAwKSk7XG5pZihudWxsPT1hfHx2b2lkIDA9PT1hLl9yZWFjdEludGVybmFsRmliZXIpdGhyb3cgdChFcnJvcigzOCkpO3JldHVybiBKaihhLGIsYywhMSxkKX0sdW5tb3VudENvbXBvbmVudEF0Tm9kZTpmdW5jdGlvbihhKXtpZighSGooYSkpdGhyb3cgdChFcnJvcig0MCkpO3JldHVybiBhLl9yZWFjdFJvb3RDb250YWluZXI/KGdqKGZ1bmN0aW9uKCl7SmoobnVsbCxudWxsLGEsITEsZnVuY3Rpb24oKXthLl9yZWFjdFJvb3RDb250YWluZXI9bnVsbH0pfSksITApOiExfSx1bnN0YWJsZV9jcmVhdGVQb3J0YWw6ZnVuY3Rpb24oKXtyZXR1cm4gS2ouYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9LHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzOmVqLHVuc3RhYmxlX2ludGVyYWN0aXZlVXBkYXRlczpmdW5jdGlvbihhLGIsYyxkKXthaigpO3JldHVybiBmaihhLGIsYyxkKX0sdW5zdGFibGVfZGlzY3JldGVVcGRhdGVzOmZqLHVuc3RhYmxlX2ZsdXNoRGlzY3JldGVVcGRhdGVzOmFqLGZsdXNoU3luYzpmdW5jdGlvbihhLFxuYil7aWYoKFUmKENpfERpKSkhPT1UKXRocm93IHQoRXJyb3IoMTg3KSk7dmFyIGM9VTtVfD0xO3RyeXtyZXR1cm4gdmYoOTksYS5iaW5kKG51bGwsYikpfWZpbmFsbHl7VT1jLE8oKX19LHVuc3RhYmxlX2NyZWF0ZVJvb3Q6TGosdW5zdGFibGVfY3JlYXRlU3luY1Jvb3Q6TWosdW5zdGFibGVfZmx1c2hDb250cm9sbGVkOmZ1bmN0aW9uKGEpe3ZhciBiPVU7VXw9MTt0cnl7dmYoOTksYSl9ZmluYWxseXtVPWIsVT09PVQmJk8oKX19LF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOntFdmVudHM6W0lhLEphLEthLENhLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZSxmYSxRYSxmdW5jdGlvbihhKXt5YShhLFBhKX0sSGIsSWIsVWQsQmEsY2ose2N1cnJlbnQ6ITF9XX19O1xuZnVuY3Rpb24gTGooYSxiKXtpZighSGooYSkpdGhyb3cgdChFcnJvcigyOTkpLFwidW5zdGFibGVfY3JlYXRlUm9vdFwiKTtyZXR1cm4gbmV3IEVqKGEsbnVsbCE9YiYmITA9PT1iLmh5ZHJhdGUpfWZ1bmN0aW9uIE1qKGEsYil7aWYoIUhqKGEpKXRocm93IHQoRXJyb3IoMjk5KSxcInVuc3RhYmxlX2NyZWF0ZVJvb3RcIik7cmV0dXJuIG5ldyBEaihhLDEsbnVsbCE9YiYmITA9PT1iLmh5ZHJhdGUpfVxuKGZ1bmN0aW9uKGEpe3ZhciBiPWEuZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U7cmV0dXJuIHRqKG0oe30sYSx7b3ZlcnJpZGVIb29rU3RhdGU6bnVsbCxvdmVycmlkZVByb3BzOm51bGwsc2V0U3VzcGVuc2VIYW5kbGVyOm51bGwsc2NoZWR1bGVVcGRhdGU6bnVsbCxjdXJyZW50RGlzcGF0Y2hlclJlZjpYYi5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLGZpbmRIb3N0SW5zdGFuY2VCeUZpYmVyOmZ1bmN0aW9uKGEpe2E9cWQoYSk7cmV0dXJuIG51bGw9PT1hP251bGw6YS5zdGF0ZU5vZGV9LGZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOmZ1bmN0aW9uKGEpe3JldHVybiBiP2IoYSk6bnVsbH0sZmluZEhvc3RJbnN0YW5jZXNGb3JSZWZyZXNoOm51bGwsc2NoZWR1bGVSZWZyZXNoOm51bGwsc2NoZWR1bGVSb290Om51bGwsc2V0UmVmcmVzaEhhbmRsZXI6bnVsbCxnZXRDdXJyZW50RmliZXI6bnVsbH0pKX0pKHtmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTpIYSxidW5kbGVUeXBlOjAsdmVyc2lvbjpcIjE2LjkuMFwiLFxucmVuZGVyZXJQYWNrYWdlTmFtZTpcInJlYWN0LWRvbVwifSk7dmFyIE9qPXtkZWZhdWx0Ok5qfSxQaj1PaiYmTmp8fE9qO21vZHVsZS5leHBvcnRzPVBqLmRlZmF1bHR8fFBqO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9zY2hlZHVsZXIuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKiBAbGljZW5zZSBSZWFjdCB2MC4xNS4wXG4gKiBzY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGQ9dm9pZCAwLGU9dm9pZCAwLGc9dm9pZCAwLG09dm9pZCAwLG49dm9pZCAwO2V4cG9ydHMudW5zdGFibGVfbm93PXZvaWQgMDtleHBvcnRzLnVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlPXZvaWQgMDtcbmlmKFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93fHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBwPW51bGwscT1udWxsLHI9ZnVuY3Rpb24oKXtpZihudWxsIT09cCl0cnl7dmFyIGE9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtwKCEwLGEpO3A9bnVsbH1jYXRjaChiKXt0aHJvdyBzZXRUaW1lb3V0KHIsMCksYjt9fTtleHBvcnRzLnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBEYXRlLm5vdygpfTtkPWZ1bmN0aW9uKGEpe251bGwhPT1wP3NldFRpbWVvdXQoZCwwLGEpOihwPWEsc2V0VGltZW91dChyLDApKX07ZT1mdW5jdGlvbihhLGIpe3E9c2V0VGltZW91dChhLGIpfTtnPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHEpfTttPWZ1bmN0aW9uKCl7cmV0dXJuITF9O249ZXhwb3J0cy51bnN0YWJsZV9mb3JjZUZyYW1lUmF0ZT1mdW5jdGlvbigpe319ZWxzZXt2YXIgdD13aW5kb3cucGVyZm9ybWFuY2UsdT13aW5kb3cuRGF0ZSx2PXdpbmRvdy5zZXRUaW1lb3V0LFxudz13aW5kb3cuY2xlYXJUaW1lb3V0LHg9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSx5PXdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZTtcInVuZGVmaW5lZFwiIT09dHlwZW9mIGNvbnNvbGUmJihcImZ1bmN0aW9uXCIhPT10eXBlb2YgeCYmY29uc29sZS5lcnJvcihcIlRoaXMgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLiBNYWtlIHN1cmUgdGhhdCB5b3UgbG9hZCBhIHBvbHlmaWxsIGluIG9sZGVyIGJyb3dzZXJzLiBodHRwczovL2ZiLm1lL3JlYWN0LXBvbHlmaWxsc1wiKSxcImZ1bmN0aW9uXCIhPT10eXBlb2YgeSYmY29uc29sZS5lcnJvcihcIlRoaXMgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgY2FuY2VsQW5pbWF0aW9uRnJhbWUuIE1ha2Ugc3VyZSB0aGF0IHlvdSBsb2FkIGEgcG9seWZpbGwgaW4gb2xkZXIgYnJvd3NlcnMuIGh0dHBzOi8vZmIubWUvcmVhY3QtcG9seWZpbGxzXCIpKTtleHBvcnRzLnVuc3RhYmxlX25vdz1cIm9iamVjdFwiPT09dHlwZW9mIHQmJlxuXCJmdW5jdGlvblwiPT09dHlwZW9mIHQubm93P2Z1bmN0aW9uKCl7cmV0dXJuIHQubm93KCl9OmZ1bmN0aW9uKCl7cmV0dXJuIHUubm93KCl9O3ZhciB6PSExLEE9bnVsbCxCPS0xLEM9LTEsRD0zMy4zMyxFPS0xLEY9LTEsRz0wLEg9ITE7bT1mdW5jdGlvbigpe3JldHVybiBleHBvcnRzLnVuc3RhYmxlX25vdygpPj1HfTtuPWZ1bmN0aW9uKCl7fTtleHBvcnRzLnVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlPWZ1bmN0aW9uKGEpezA+YXx8MTI1PGE/Y29uc29sZS5lcnJvcihcImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lcmF0ZXMgaGlnaGVyIHRoYW4gMTI1IGZwcyBpcyBub3QgdW5zdXBwb3J0ZWRcIik6MDxhPyhEPU1hdGguZmxvb3IoMUUzL2EpLEg9ITApOihEPTMzLjMzLEg9ITEpfTt2YXIgSj1mdW5jdGlvbigpe2lmKG51bGwhPT1BKXt2YXIgYT1leHBvcnRzLnVuc3RhYmxlX25vdygpLGI9MDxHLWE7dHJ5e0EoYixcbmEpfHwoQT1udWxsKX1jYXRjaChjKXt0aHJvdyBJLnBvc3RNZXNzYWdlKG51bGwpLGM7fX19LEs9bmV3IE1lc3NhZ2VDaGFubmVsLEk9Sy5wb3J0MjtLLnBvcnQxLm9ubWVzc2FnZT1KO3ZhciBMPWZ1bmN0aW9uKGEpe2lmKG51bGw9PT1BKUY9RT0tMSx6PSExO2Vsc2V7ej0hMDt4KGZ1bmN0aW9uKGEpe3coQik7TChhKX0pO3ZhciBiPWZ1bmN0aW9uKCl7Rz1leHBvcnRzLnVuc3RhYmxlX25vdygpK0QvMjtKKCk7Qj12KGIsMypEKX07Qj12KGIsMypEKTtpZigtMSE9PUUmJi4xPGEtRSl7dmFyIGM9YS1FOyFIJiYtMSE9PUYmJmM8RCYmRjxEJiYoRD1jPEY/RjpjLDguMzM+RCYmKEQ9OC4zMykpO0Y9Y31FPWE7Rz1hK0Q7SS5wb3N0TWVzc2FnZShudWxsKX19O2Q9ZnVuY3Rpb24oYSl7QT1hO3p8fCh6PSEwLHgoZnVuY3Rpb24oYSl7TChhKX0pKX07ZT1mdW5jdGlvbihhLGIpe0M9dihmdW5jdGlvbigpe2EoZXhwb3J0cy51bnN0YWJsZV9ub3coKSl9LGIpfTtnPWZ1bmN0aW9uKCl7dyhDKTtcbkM9LTF9fXZhciBNPW51bGwsTj1udWxsLE89bnVsbCxQPTMsUT0hMSxSPSExLFM9ITE7XG5mdW5jdGlvbiBUKGEsYil7dmFyIGM9YS5uZXh0O2lmKGM9PT1hKU09bnVsbDtlbHNle2E9PT1NJiYoTT1jKTt2YXIgZj1hLnByZXZpb3VzO2YubmV4dD1jO2MucHJldmlvdXM9Zn1hLm5leHQ9YS5wcmV2aW91cz1udWxsO2M9YS5jYWxsYmFjaztmPVA7dmFyIGw9TztQPWEucHJpb3JpdHlMZXZlbDtPPWE7dHJ5e3ZhciBoPWEuZXhwaXJhdGlvblRpbWU8PWI7c3dpdGNoKFApe2Nhc2UgMTp2YXIgaz1jKGgpO2JyZWFrO2Nhc2UgMjprPWMoaCk7YnJlYWs7Y2FzZSAzOms9YyhoKTticmVhaztjYXNlIDQ6az1jKGgpO2JyZWFrO2Nhc2UgNTprPWMoaCl9fWNhdGNoKFope3Rocm93IFo7fWZpbmFsbHl7UD1mLE89bH1pZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgaylpZihiPWEuZXhwaXJhdGlvblRpbWUsYS5jYWxsYmFjaz1rLG51bGw9PT1NKU09YS5uZXh0PWEucHJldmlvdXM9YTtlbHNle2s9bnVsbDtoPU07ZG97aWYoYjw9aC5leHBpcmF0aW9uVGltZSl7az1oO2JyZWFrfWg9aC5uZXh0fXdoaWxlKGghPT1cbk0pO251bGw9PT1rP2s9TTprPT09TSYmKE09YSk7Yj1rLnByZXZpb3VzO2IubmV4dD1rLnByZXZpb3VzPWE7YS5uZXh0PWs7YS5wcmV2aW91cz1ifX1mdW5jdGlvbiBVKGEpe2lmKG51bGwhPT1OJiZOLnN0YXJ0VGltZTw9YSl7ZG97dmFyIGI9TixjPWIubmV4dDtpZihiPT09YylOPW51bGw7ZWxzZXtOPWM7dmFyIGY9Yi5wcmV2aW91cztmLm5leHQ9YztjLnByZXZpb3VzPWZ9Yi5uZXh0PWIucHJldmlvdXM9bnVsbDtWKGIsYi5leHBpcmF0aW9uVGltZSl9d2hpbGUobnVsbCE9PU4mJk4uc3RhcnRUaW1lPD1hKX19ZnVuY3Rpb24gVyhhKXtTPSExO1UoYSk7Unx8KG51bGwhPT1NPyhSPSEwLGQoWCkpOm51bGwhPT1OJiZlKFcsTi5zdGFydFRpbWUtYSkpfVxuZnVuY3Rpb24gWChhLGIpe1I9ITE7UyYmKFM9ITEsZygpKTtVKGIpO1E9ITA7dHJ5e2lmKCFhKWZvcig7bnVsbCE9PU0mJk0uZXhwaXJhdGlvblRpbWU8PWI7KVQoTSxiKSxiPWV4cG9ydHMudW5zdGFibGVfbm93KCksVShiKTtlbHNlIGlmKG51bGwhPT1NKXtkbyBUKE0sYiksYj1leHBvcnRzLnVuc3RhYmxlX25vdygpLFUoYik7d2hpbGUobnVsbCE9PU0mJiFtKCkpfWlmKG51bGwhPT1NKXJldHVybiEwO251bGwhPT1OJiZlKFcsTi5zdGFydFRpbWUtYik7cmV0dXJuITF9ZmluYWxseXtRPSExfX1mdW5jdGlvbiBZKGEpe3N3aXRjaChhKXtjYXNlIDE6cmV0dXJuLTE7Y2FzZSAyOnJldHVybiAyNTA7Y2FzZSA1OnJldHVybiAxMDczNzQxODIzO2Nhc2UgNDpyZXR1cm4gMUU0O2RlZmF1bHQ6cmV0dXJuIDVFM319XG5mdW5jdGlvbiBWKGEsYil7aWYobnVsbD09PU0pTT1hLm5leHQ9YS5wcmV2aW91cz1hO2Vsc2V7dmFyIGM9bnVsbCxmPU07ZG97aWYoYjxmLmV4cGlyYXRpb25UaW1lKXtjPWY7YnJlYWt9Zj1mLm5leHR9d2hpbGUoZiE9PU0pO251bGw9PT1jP2M9TTpjPT09TSYmKE09YSk7Yj1jLnByZXZpb3VzO2IubmV4dD1jLnByZXZpb3VzPWE7YS5uZXh0PWM7YS5wcmV2aW91cz1ifX12YXIgYWE9bjtleHBvcnRzLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5PTE7ZXhwb3J0cy51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eT0yO2V4cG9ydHMudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk9MztleHBvcnRzLnVuc3RhYmxlX0lkbGVQcmlvcml0eT01O2V4cG9ydHMudW5zdGFibGVfTG93UHJpb3JpdHk9NDtcbmV4cG9ydHMudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5PWZ1bmN0aW9uKGEsYil7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6YnJlYWs7ZGVmYXVsdDphPTN9dmFyIGM9UDtQPWE7dHJ5e3JldHVybiBiKCl9ZmluYWxseXtQPWN9fTtleHBvcnRzLnVuc3RhYmxlX25leHQ9ZnVuY3Rpb24oYSl7c3dpdGNoKFApe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOnZhciBiPTM7YnJlYWs7ZGVmYXVsdDpiPVB9dmFyIGM9UDtQPWI7dHJ5e3JldHVybiBhKCl9ZmluYWxseXtQPWN9fTtcbmV4cG9ydHMudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjaz1mdW5jdGlvbihhLGIsYyl7dmFyIGY9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGMmJm51bGwhPT1jKXt2YXIgbD1jLmRlbGF5O2w9XCJudW1iZXJcIj09PXR5cGVvZiBsJiYwPGw/ZitsOmY7Yz1cIm51bWJlclwiPT09dHlwZW9mIGMudGltZW91dD9jLnRpbWVvdXQ6WShhKX1lbHNlIGM9WShhKSxsPWY7Yz1sK2M7YT17Y2FsbGJhY2s6Yixwcmlvcml0eUxldmVsOmEsc3RhcnRUaW1lOmwsZXhwaXJhdGlvblRpbWU6YyxuZXh0Om51bGwscHJldmlvdXM6bnVsbH07aWYobD5mKXtjPWw7aWYobnVsbD09PU4pTj1hLm5leHQ9YS5wcmV2aW91cz1hO2Vsc2V7Yj1udWxsO3ZhciBoPU47ZG97aWYoYzxoLnN0YXJ0VGltZSl7Yj1oO2JyZWFrfWg9aC5uZXh0fXdoaWxlKGghPT1OKTtudWxsPT09Yj9iPU46Yj09PU4mJihOPWEpO2M9Yi5wcmV2aW91cztjLm5leHQ9Yi5wcmV2aW91cz1hO2EubmV4dD1iO2EucHJldmlvdXM9XG5jfW51bGw9PT1NJiZOPT09YSYmKFM/ZygpOlM9ITAsZShXLGwtZikpfWVsc2UgVihhLGMpLFJ8fFF8fChSPSEwLGQoWCkpO3JldHVybiBhfTtleHBvcnRzLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKGEpe3ZhciBiPWEubmV4dDtpZihudWxsIT09Yil7aWYoYT09PWIpYT09PU0/TT1udWxsOmE9PT1OJiYoTj1udWxsKTtlbHNle2E9PT1NP009YjphPT09TiYmKE49Yik7dmFyIGM9YS5wcmV2aW91cztjLm5leHQ9YjtiLnByZXZpb3VzPWN9YS5uZXh0PWEucHJldmlvdXM9bnVsbH19O2V4cG9ydHMudW5zdGFibGVfd3JhcENhbGxiYWNrPWZ1bmN0aW9uKGEpe3ZhciBiPVA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9UDtQPWI7dHJ5e3JldHVybiBhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e1A9Y319fTtleHBvcnRzLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIFB9O1xuZXhwb3J0cy51bnN0YWJsZV9zaG91bGRZaWVsZD1mdW5jdGlvbigpe3ZhciBhPWV4cG9ydHMudW5zdGFibGVfbm93KCk7VShhKTtyZXR1cm4gbnVsbCE9PU8mJm51bGwhPT1NJiZNLnN0YXJ0VGltZTw9YSYmTS5leHBpcmF0aW9uVGltZTxPLmV4cGlyYXRpb25UaW1lfHxtKCl9O2V4cG9ydHMudW5zdGFibGVfcmVxdWVzdFBhaW50PWFhO2V4cG9ydHMudW5zdGFibGVfY29udGludWVFeGVjdXRpb249ZnVuY3Rpb24oKXtSfHxRfHwoUj0hMCxkKFgpKX07ZXhwb3J0cy51bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbj1mdW5jdGlvbigpe307ZXhwb3J0cy51bnN0YWJsZV9nZXRGaXJzdENhbGxiYWNrTm9kZT1mdW5jdGlvbigpe3JldHVybiBNfTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHN0cikge1xuXHRyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHN0cikucmVwbGFjZSgvWyEnKCkqXS9nLCBmdW5jdGlvbiAoYykge1xuXHRcdHJldHVybiAnJScgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG5cdH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b2tlbiA9ICclW2EtZjAtOV17Mn0nO1xudmFyIHNpbmdsZU1hdGNoZXIgPSBuZXcgUmVnRXhwKHRva2VuLCAnZ2knKTtcbnZhciBtdWx0aU1hdGNoZXIgPSBuZXcgUmVnRXhwKCcoJyArIHRva2VuICsgJykrJywgJ2dpJyk7XG5cbmZ1bmN0aW9uIGRlY29kZUNvbXBvbmVudHMoY29tcG9uZW50cywgc3BsaXQpIHtcblx0dHJ5IHtcblx0XHQvLyBUcnkgdG8gZGVjb2RlIHRoZSBlbnRpcmUgc3RyaW5nIGZpcnN0XG5cdFx0cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChjb21wb25lbnRzLmpvaW4oJycpKTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0Ly8gRG8gbm90aGluZ1xuXHR9XG5cblx0aWYgKGNvbXBvbmVudHMubGVuZ3RoID09PSAxKSB7XG5cdFx0cmV0dXJuIGNvbXBvbmVudHM7XG5cdH1cblxuXHRzcGxpdCA9IHNwbGl0IHx8IDE7XG5cblx0Ly8gU3BsaXQgdGhlIGFycmF5IGluIDIgcGFydHNcblx0dmFyIGxlZnQgPSBjb21wb25lbnRzLnNsaWNlKDAsIHNwbGl0KTtcblx0dmFyIHJpZ2h0ID0gY29tcG9uZW50cy5zbGljZShzcGxpdCk7XG5cblx0cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuY2FsbChbXSwgZGVjb2RlQ29tcG9uZW50cyhsZWZ0KSwgZGVjb2RlQ29tcG9uZW50cyhyaWdodCkpO1xufVxuXG5mdW5jdGlvbiBkZWNvZGUoaW5wdXQpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGlucHV0KTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0dmFyIHRva2VucyA9IGlucHV0Lm1hdGNoKHNpbmdsZU1hdGNoZXIpO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDE7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlucHV0ID0gZGVjb2RlQ29tcG9uZW50cyh0b2tlbnMsIGkpLmpvaW4oJycpO1xuXG5cdFx0XHR0b2tlbnMgPSBpbnB1dC5tYXRjaChzaW5nbGVNYXRjaGVyKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaW5wdXQ7XG5cdH1cbn1cblxuZnVuY3Rpb24gY3VzdG9tRGVjb2RlVVJJQ29tcG9uZW50KGlucHV0KSB7XG5cdC8vIEtlZXAgdHJhY2sgb2YgYWxsIHRoZSByZXBsYWNlbWVudHMgYW5kIHByZWZpbGwgdGhlIG1hcCB3aXRoIHRoZSBgQk9NYFxuXHR2YXIgcmVwbGFjZU1hcCA9IHtcblx0XHQnJUZFJUZGJzogJ1xcdUZGRkRcXHVGRkZEJyxcblx0XHQnJUZGJUZFJzogJ1xcdUZGRkRcXHVGRkZEJ1xuXHR9O1xuXG5cdHZhciBtYXRjaCA9IG11bHRpTWF0Y2hlci5leGVjKGlucHV0KTtcblx0d2hpbGUgKG1hdGNoKSB7XG5cdFx0dHJ5IHtcblx0XHRcdC8vIERlY29kZSBhcyBiaWcgY2h1bmtzIGFzIHBvc3NpYmxlXG5cdFx0XHRyZXBsYWNlTWFwW21hdGNoWzBdXSA9IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaFswXSk7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHR2YXIgcmVzdWx0ID0gZGVjb2RlKG1hdGNoWzBdKTtcblxuXHRcdFx0aWYgKHJlc3VsdCAhPT0gbWF0Y2hbMF0pIHtcblx0XHRcdFx0cmVwbGFjZU1hcFttYXRjaFswXV0gPSByZXN1bHQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bWF0Y2ggPSBtdWx0aU1hdGNoZXIuZXhlYyhpbnB1dCk7XG5cdH1cblxuXHQvLyBBZGQgYCVDMmAgYXQgdGhlIGVuZCBvZiB0aGUgbWFwIHRvIG1ha2Ugc3VyZSBpdCBkb2VzIG5vdCByZXBsYWNlIHRoZSBjb21iaW5hdG9yIGJlZm9yZSBldmVyeXRoaW5nIGVsc2Vcblx0cmVwbGFjZU1hcFsnJUMyJ10gPSAnXFx1RkZGRCc7XG5cblx0dmFyIGVudHJpZXMgPSBPYmplY3Qua2V5cyhyZXBsYWNlTWFwKTtcblxuXHRmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyBpKyspIHtcblx0XHQvLyBSZXBsYWNlIGFsbCBkZWNvZGVkIGNvbXBvbmVudHNcblx0XHR2YXIga2V5ID0gZW50cmllc1tpXTtcblx0XHRpbnB1dCA9IGlucHV0LnJlcGxhY2UobmV3IFJlZ0V4cChrZXksICdnJyksIHJlcGxhY2VNYXBba2V5XSk7XG5cdH1cblxuXHRyZXR1cm4gaW5wdXQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGVuY29kZWRVUkkpIHtcblx0aWYgKHR5cGVvZiBlbmNvZGVkVVJJICE9PSAnc3RyaW5nJykge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGBlbmNvZGVkVVJJYCB0byBiZSBvZiB0eXBlIGBzdHJpbmdgLCBnb3QgYCcgKyB0eXBlb2YgZW5jb2RlZFVSSSArICdgJyk7XG5cdH1cblxuXHR0cnkge1xuXHRcdGVuY29kZWRVUkkgPSBlbmNvZGVkVVJJLnJlcGxhY2UoL1xcKy9nLCAnICcpO1xuXG5cdFx0Ly8gVHJ5IHRoZSBidWlsdCBpbiBkZWNvZGVyIGZpcnN0XG5cdFx0cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkVVJJKTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0Ly8gRmFsbGJhY2sgdG8gYSBtb3JlIGFkdmFuY2VkIGRlY29kZXJcblx0XHRyZXR1cm4gY3VzdG9tRGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZWRVUkkpO1xuXHR9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvcmlnaW5hbE1vZHVsZSkge1xuXHRpZiAoIW9yaWdpbmFsTW9kdWxlLndlYnBhY2tQb2x5ZmlsbCkge1xuXHRcdHZhciBtb2R1bGUgPSBPYmplY3QuY3JlYXRlKG9yaWdpbmFsTW9kdWxlKTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJleHBvcnRzXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWVcblx0XHR9KTtcblx0XHRtb2R1bGUud2VicGFja1BvbHlmaWxsID0gMTtcblx0fVxuXHRyZXR1cm4gbW9kdWxlO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvYXNzaWduXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmFzc2lnbjtcbiIsIi8vIDE5LjEuMy4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiwgJ09iamVjdCcsIHsgYXNzaWduOiByZXF1aXJlKCcuL19vYmplY3QtYXNzaWduJykgfSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyAxOS4xLjIuMSBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlLCAuLi4pXG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUFMgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpO1xudmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgJGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG5cbi8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxubW9kdWxlLmV4cG9ydHMgPSAhJGFzc2lnbiB8fCByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgdmFyIEEgPSB7fTtcbiAgdmFyIEIgPSB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHZhciBTID0gU3ltYm9sKCk7XG4gIHZhciBLID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0JztcbiAgQVtTXSA9IDc7XG4gIEsuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGspIHsgQltrXSA9IGs7IH0pO1xuICByZXR1cm4gJGFzc2lnbih7fSwgQSlbU10gIT0gNyB8fCBPYmplY3Qua2V5cygkYXNzaWduKHt9LCBCKSkuam9pbignJykgIT0gSztcbn0pID8gZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgdmFyIFQgPSB0b09iamVjdCh0YXJnZXQpO1xuICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDE7XG4gIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICB2YXIgaXNFbnVtID0gcElFLmY7XG4gIHdoaWxlIChhTGVuID4gaW5kZXgpIHtcbiAgICB2YXIgUyA9IElPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKTtcbiAgICB2YXIga2V5cyA9IGdldFN5bWJvbHMgPyBnZXRLZXlzKFMpLmNvbmNhdChnZXRTeW1ib2xzKFMpKSA6IGdldEtleXMoUyk7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciBqID0gMDtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChsZW5ndGggPiBqKSB7XG4gICAgICBrZXkgPSBrZXlzW2orK107XG4gICAgICBpZiAoIURFU0NSSVBUT1JTIHx8IGlzRW51bS5jYWxsKFMsIGtleSkpIFRba2V5XSA9IFNba2V5XTtcbiAgICB9XG4gIH0gcmV0dXJuIFQ7XG59IDogJGFzc2lnbjtcbiIsIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuICRPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi40IC8gMTUuMi4zLjYgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZiB9KTtcbiIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3JcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL193a3MtZXh0JykuZignaXRlcmF0b3InKTtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbi8vIHRydWUgIC0+IFN0cmluZyNhdFxuLy8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGF0LCBwb3MpIHtcbiAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbiAgICB2YXIgaSA9IHRvSW50ZWdlcihwb3MpO1xuICAgIHZhciBsID0gcy5sZW5ndGg7XG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGkgPCAwIHx8IGkgPj0gbCkgcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbCB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcbiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG4gICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIGRlc2NyaXB0b3IgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5cbi8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19oaWRlJykoSXRlcmF0b3JQcm90b3R5cGUsIHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpIHtcbiAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7IG5leHQ6IGRlc2NyaXB0b3IoMSwgbmV4dCkgfSk7XG4gIHNldFRvU3RyaW5nVGFnKENvbnN0cnVjdG9yLCBOQU1FICsgJyBJdGVyYXRvcicpO1xufTtcbiIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IGdldEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgUDtcbiAgd2hpbGUgKGxlbmd0aCA+IGkpIGRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4iLCIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcbiIsInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIHN0ZXAgPSByZXF1aXJlKCcuL19pdGVyLXN0ZXAnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG5cbi8vIDIyLjEuMy40IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzKClcbi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpXG4vLyAyMi4xLjMuMjkgQXJyYXkucHJvdG90eXBlLnZhbHVlcygpXG4vLyAyMi4xLjMuMzAgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gIHRoaXMuX3QgPSB0b0lPYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgIC8vIGtpbmRcbi8vIDIyLjEuNS4yLjEgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBraW5kID0gdGhpcy5faztcbiAgdmFyIGluZGV4ID0gdGhpcy5faSsrO1xuICBpZiAoIU8gfHwgaW5kZXggPj0gTy5sZW5ndGgpIHtcbiAgICB0aGlzLl90ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBzdGVwKDEpO1xuICB9XG4gIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHN0ZXAoMCwgaW5kZXgpO1xuICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHN0ZXAoMCwgT1tpbmRleF0pO1xuICByZXR1cm4gc3RlcCgwLCBbaW5kZXgsIE9baW5kZXhdXSk7XG59LCAndmFsdWVzJyk7XG5cbi8vIGFyZ3VtZW50c0xpc3RbQEBpdGVyYXRvcl0gaXMgJUFycmF5UHJvdG9fdmFsdWVzJSAoOS40LjQuNiwgOS40LjQuNylcbkl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ2tleXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpO1xuYWRkVG9VbnNjb3BhYmxlcygnZW50cmllcycpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChkb25lLCB2YWx1ZSkge1xuICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRvbmU6ICEhZG9uZSB9O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2xcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5zeW1ib2wnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLlN5bWJvbDtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBNRVRBID0gcmVxdWlyZSgnLi9fbWV0YScpLktFWTtcbnZhciAkZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgd2tzRGVmaW5lID0gcmVxdWlyZSgnLi9fd2tzLWRlZmluZScpO1xudmFyIGVudW1LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1rZXlzJyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vX2lzLWFycmF5Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBfY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIGdPUE5FeHQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbi1leHQnKTtcbnZhciAkR09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgJEdPUFMgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpO1xudmFyICREUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BEID0gJEdPUEQuZjtcbnZhciBkUCA9ICREUC5mO1xudmFyIGdPUE4gPSBnT1BORXh0LmY7XG52YXIgJFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgJEpTT04gPSBnbG9iYWwuSlNPTjtcbnZhciBfc3RyaW5naWZ5ID0gJEpTT04gJiYgJEpTT04uc3RyaW5naWZ5O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIEhJRERFTiA9IHdrcygnX2hpZGRlbicpO1xudmFyIFRPX1BSSU1JVElWRSA9IHdrcygndG9QcmltaXRpdmUnKTtcbnZhciBpc0VudW0gPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBTeW1ib2xSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXJlZ2lzdHJ5Jyk7XG52YXIgQWxsU3ltYm9scyA9IHNoYXJlZCgnc3ltYm9scycpO1xudmFyIE9QU3ltYm9scyA9IHNoYXJlZCgnb3Atc3ltYm9scycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0W1BST1RPVFlQRV07XG52YXIgVVNFX05BVElWRSA9IHR5cGVvZiAkU3ltYm9sID09ICdmdW5jdGlvbicgJiYgISEkR09QUy5mO1xudmFyIFFPYmplY3QgPSBnbG9iYWwuUU9iamVjdDtcbi8vIERvbid0IHVzZSBzZXR0ZXJzIGluIFF0IFNjcmlwdCwgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzE3M1xudmFyIHNldHRlciA9ICFRT2JqZWN0IHx8ICFRT2JqZWN0W1BST1RPVFlQRV0gfHwgIVFPYmplY3RbUFJPVE9UWVBFXS5maW5kQ2hpbGQ7XG5cbi8vIGZhbGxiYWNrIGZvciBvbGQgQW5kcm9pZCwgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTY4N1xudmFyIHNldFN5bWJvbERlc2MgPSBERVNDUklQVE9SUyAmJiAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gX2NyZWF0ZShkUCh7fSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBkUCh0aGlzLCAnYScsIHsgdmFsdWU6IDcgfSkuYTsgfVxuICB9KSkuYSAhPSA3O1xufSkgPyBmdW5jdGlvbiAoaXQsIGtleSwgRCkge1xuICB2YXIgcHJvdG9EZXNjID0gZ09QRChPYmplY3RQcm90bywga2V5KTtcbiAgaWYgKHByb3RvRGVzYykgZGVsZXRlIE9iamVjdFByb3RvW2tleV07XG4gIGRQKGl0LCBrZXksIEQpO1xuICBpZiAocHJvdG9EZXNjICYmIGl0ICE9PSBPYmplY3RQcm90bykgZFAoT2JqZWN0UHJvdG8sIGtleSwgcHJvdG9EZXNjKTtcbn0gOiBkUDtcblxudmFyIHdyYXAgPSBmdW5jdGlvbiAodGFnKSB7XG4gIHZhciBzeW0gPSBBbGxTeW1ib2xzW3RhZ10gPSBfY3JlYXRlKCRTeW1ib2xbUFJPVE9UWVBFXSk7XG4gIHN5bS5fayA9IHRhZztcbiAgcmV0dXJuIHN5bTtcbn07XG5cbnZhciBpc1N5bWJvbCA9IFVTRV9OQVRJVkUgJiYgdHlwZW9mICRTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCcgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0IGluc3RhbmNlb2YgJFN5bWJvbDtcbn07XG5cbnZhciAkZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBEKSB7XG4gIGlmIChpdCA9PT0gT2JqZWN0UHJvdG8pICRkZWZpbmVQcm9wZXJ0eShPUFN5bWJvbHMsIGtleSwgRCk7XG4gIGFuT2JqZWN0KGl0KTtcbiAga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKTtcbiAgYW5PYmplY3QoRCk7XG4gIGlmIChoYXMoQWxsU3ltYm9scywga2V5KSkge1xuICAgIGlmICghRC5lbnVtZXJhYmxlKSB7XG4gICAgICBpZiAoIWhhcyhpdCwgSElEREVOKSkgZFAoaXQsIEhJRERFTiwgY3JlYXRlRGVzYygxLCB7fSkpO1xuICAgICAgaXRbSElEREVOXVtrZXldID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pIGl0W0hJRERFTl1ba2V5XSA9IGZhbHNlO1xuICAgICAgRCA9IF9jcmVhdGUoRCwgeyBlbnVtZXJhYmxlOiBjcmVhdGVEZXNjKDAsIGZhbHNlKSB9KTtcbiAgICB9IHJldHVybiBzZXRTeW1ib2xEZXNjKGl0LCBrZXksIEQpO1xuICB9IHJldHVybiBkUChpdCwga2V5LCBEKTtcbn07XG52YXIgJGRlZmluZVByb3BlcnRpZXMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGl0LCBQKSB7XG4gIGFuT2JqZWN0KGl0KTtcbiAgdmFyIGtleXMgPSBlbnVtS2V5cyhQID0gdG9JT2JqZWN0KFApKTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbCA9IGtleXMubGVuZ3RoO1xuICB2YXIga2V5O1xuICB3aGlsZSAobCA+IGkpICRkZWZpbmVQcm9wZXJ0eShpdCwga2V5ID0ga2V5c1tpKytdLCBQW2tleV0pO1xuICByZXR1cm4gaXQ7XG59O1xudmFyICRjcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaXQsIFApIHtcbiAgcmV0dXJuIFAgPT09IHVuZGVmaW5lZCA/IF9jcmVhdGUoaXQpIDogJGRlZmluZVByb3BlcnRpZXMoX2NyZWF0ZShpdCksIFApO1xufTtcbnZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShrZXkpIHtcbiAgdmFyIEUgPSBpc0VudW0uY2FsbCh0aGlzLCBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpKTtcbiAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBFIHx8ICFoYXModGhpcywga2V5KSB8fCAhaGFzKEFsbFN5bWJvbHMsIGtleSkgfHwgaGFzKHRoaXMsIEhJRERFTikgJiYgdGhpc1tISURERU5dW2tleV0gPyBFIDogdHJ1ZTtcbn07XG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KSB7XG4gIGl0ID0gdG9JT2JqZWN0KGl0KTtcbiAga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKTtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90byAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhaGFzKE9QU3ltYm9scywga2V5KSkgcmV0dXJuO1xuICB2YXIgRCA9IGdPUEQoaXQsIGtleSk7XG4gIGlmIChEICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICEoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkpIEQuZW51bWVyYWJsZSA9IHRydWU7XG4gIHJldHVybiBEO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlOYW1lcyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHtcbiAgdmFyIG5hbWVzID0gZ09QTih0b0lPYmplY3QoaXQpKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgaSA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSB7XG4gICAgaWYgKCFoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYga2V5ICE9IEhJRERFTiAmJiBrZXkgIT0gTUVUQSkgcmVzdWx0LnB1c2goa2V5KTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSB7XG4gIHZhciBJU19PUCA9IGl0ID09PSBPYmplY3RQcm90bztcbiAgdmFyIG5hbWVzID0gZ09QTihJU19PUCA/IE9QU3ltYm9scyA6IHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pICYmIChJU19PUCA/IGhhcyhPYmplY3RQcm90bywga2V5KSA6IHRydWUpKSByZXN1bHQucHVzaChBbGxTeW1ib2xzW2tleV0pO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyAxOS40LjEuMSBTeW1ib2woW2Rlc2NyaXB0aW9uXSlcbmlmICghVVNFX05BVElWRSkge1xuICAkU3ltYm9sID0gZnVuY3Rpb24gU3ltYm9sKCkge1xuICAgIGlmICh0aGlzIGluc3RhbmNlb2YgJFN5bWJvbCkgdGhyb3cgVHlwZUVycm9yKCdTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IhJyk7XG4gICAgdmFyIHRhZyA9IHVpZChhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7XG4gICAgdmFyICRzZXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGlmICh0aGlzID09PSBPYmplY3RQcm90bykgJHNldC5jYWxsKE9QU3ltYm9scywgdmFsdWUpO1xuICAgICAgaWYgKGhhcyh0aGlzLCBISURERU4pICYmIGhhcyh0aGlzW0hJRERFTl0sIHRhZykpIHRoaXNbSElEREVOXVt0YWddID0gZmFsc2U7XG4gICAgICBzZXRTeW1ib2xEZXNjKHRoaXMsIHRhZywgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xuICAgIH07XG4gICAgaWYgKERFU0NSSVBUT1JTICYmIHNldHRlcikgc2V0U3ltYm9sRGVzYyhPYmplY3RQcm90bywgdGFnLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgc2V0OiAkc2V0IH0pO1xuICAgIHJldHVybiB3cmFwKHRhZyk7XG4gIH07XG4gIHJlZGVmaW5lKCRTeW1ib2xbUFJPVE9UWVBFXSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2s7XG4gIH0pO1xuXG4gICRHT1BELmYgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAkRFAuZiA9ICRkZWZpbmVQcm9wZXJ0eTtcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mID0gZ09QTkV4dC5mID0gJGdldE93blByb3BlcnR5TmFtZXM7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1waWUnKS5mID0gJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuICAkR09QUy5mID0gJGdldE93blByb3BlcnR5U3ltYm9scztcblxuICBpZiAoREVTQ1JJUFRPUlMgJiYgIXJlcXVpcmUoJy4vX2xpYnJhcnknKSkge1xuICAgIHJlZGVmaW5lKE9iamVjdFByb3RvLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAkcHJvcGVydHlJc0VudW1lcmFibGUsIHRydWUpO1xuICB9XG5cbiAgd2tzRXh0LmYgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHJldHVybiB3cmFwKHdrcyhuYW1lKSk7XG4gIH07XG59XG5cbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIHsgU3ltYm9sOiAkU3ltYm9sIH0pO1xuXG5mb3IgKHZhciBlczZTeW1ib2xzID0gKFxuICAvLyAxOS40LjIuMiwgMTkuNC4yLjMsIDE5LjQuMi40LCAxOS40LjIuNiwgMTkuNC4yLjgsIDE5LjQuMi45LCAxOS40LjIuMTAsIDE5LjQuMi4xMSwgMTkuNC4yLjEyLCAxOS40LjIuMTMsIDE5LjQuMi4xNFxuICAnaGFzSW5zdGFuY2UsaXNDb25jYXRTcHJlYWRhYmxlLGl0ZXJhdG9yLG1hdGNoLHJlcGxhY2Usc2VhcmNoLHNwZWNpZXMsc3BsaXQsdG9QcmltaXRpdmUsdG9TdHJpbmdUYWcsdW5zY29wYWJsZXMnXG4pLnNwbGl0KCcsJyksIGogPSAwOyBlczZTeW1ib2xzLmxlbmd0aCA+IGo7KXdrcyhlczZTeW1ib2xzW2orK10pO1xuXG5mb3IgKHZhciB3ZWxsS25vd25TeW1ib2xzID0gJGtleXMod2tzLnN0b3JlKSwgayA9IDA7IHdlbGxLbm93blN5bWJvbHMubGVuZ3RoID4gazspIHdrc0RlZmluZSh3ZWxsS25vd25TeW1ib2xzW2srK10pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnU3ltYm9sJywge1xuICAvLyAxOS40LjIuMSBTeW1ib2wuZm9yKGtleSlcbiAgJ2Zvcic6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gaGFzKFN5bWJvbFJlZ2lzdHJ5LCBrZXkgKz0gJycpXG4gICAgICA/IFN5bWJvbFJlZ2lzdHJ5W2tleV1cbiAgICAgIDogU3ltYm9sUmVnaXN0cnlba2V5XSA9ICRTeW1ib2woa2V5KTtcbiAgfSxcbiAgLy8gMTkuNC4yLjUgU3ltYm9sLmtleUZvcihzeW0pXG4gIGtleUZvcjogZnVuY3Rpb24ga2V5Rm9yKHN5bSkge1xuICAgIGlmICghaXNTeW1ib2woc3ltKSkgdGhyb3cgVHlwZUVycm9yKHN5bSArICcgaXMgbm90IGEgc3ltYm9sIScpO1xuICAgIGZvciAodmFyIGtleSBpbiBTeW1ib2xSZWdpc3RyeSkgaWYgKFN5bWJvbFJlZ2lzdHJ5W2tleV0gPT09IHN5bSkgcmV0dXJuIGtleTtcbiAgfSxcbiAgdXNlU2V0dGVyOiBmdW5jdGlvbiAoKSB7IHNldHRlciA9IHRydWU7IH0sXG4gIHVzZVNpbXBsZTogZnVuY3Rpb24gKCkgeyBzZXR0ZXIgPSBmYWxzZTsgfVxufSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdPYmplY3QnLCB7XG4gIC8vIDE5LjEuMi4yIE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbiAgY3JlYXRlOiAkY3JlYXRlLFxuICAvLyAxOS4xLjIuNCBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiAgZGVmaW5lUHJvcGVydHk6ICRkZWZpbmVQcm9wZXJ0eSxcbiAgLy8gMTkuMS4yLjMgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcylcbiAgZGVmaW5lUHJvcGVydGllczogJGRlZmluZVByb3BlcnRpZXMsXG4gIC8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUClcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuICAvLyAxOS4xLjIuNyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxuICBnZXRPd25Qcm9wZXJ0eU5hbWVzOiAkZ2V0T3duUHJvcGVydHlOYW1lcyxcbiAgLy8gMTkuMS4yLjggT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhPKVxuICBnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHNcbn0pO1xuXG4vLyBDaHJvbWUgMzggYW5kIDM5IGBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzYCBmYWlscyBvbiBwcmltaXRpdmVzXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zNDQzXG52YXIgRkFJTFNfT05fUFJJTUlUSVZFUyA9ICRmYWlscyhmdW5jdGlvbiAoKSB7ICRHT1BTLmYoMSk7IH0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIEZBSUxTX09OX1BSSU1JVElWRVMsICdPYmplY3QnLCB7XG4gIGdldE93blByb3BlcnR5U3ltYm9sczogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSB7XG4gICAgcmV0dXJuICRHT1BTLmYodG9PYmplY3QoaXQpKTtcbiAgfVxufSk7XG5cbi8vIDI0LjMuMiBKU09OLnN0cmluZ2lmeSh2YWx1ZSBbLCByZXBsYWNlciBbLCBzcGFjZV1dKVxuJEpTT04gJiYgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoIVVTRV9OQVRJVkUgfHwgJGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIFMgPSAkU3ltYm9sKCk7XG4gIC8vIE1TIEVkZ2UgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIHt9XG4gIC8vIFdlYktpdCBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMgbnVsbFxuICAvLyBWOCB0aHJvd3Mgb24gYm94ZWQgc3ltYm9sc1xuICByZXR1cm4gX3N0cmluZ2lmeShbU10pICE9ICdbbnVsbF0nIHx8IF9zdHJpbmdpZnkoeyBhOiBTIH0pICE9ICd7fScgfHwgX3N0cmluZ2lmeShPYmplY3QoUykpICE9ICd7fSc7XG59KSksICdKU09OJywge1xuICBzdHJpbmdpZnk6IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCkge1xuICAgIHZhciBhcmdzID0gW2l0XTtcbiAgICB2YXIgaSA9IDE7XG4gICAgdmFyIHJlcGxhY2VyLCAkcmVwbGFjZXI7XG4gICAgd2hpbGUgKGFyZ3VtZW50cy5sZW5ndGggPiBpKSBhcmdzLnB1c2goYXJndW1lbnRzW2krK10pO1xuICAgICRyZXBsYWNlciA9IHJlcGxhY2VyID0gYXJnc1sxXTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlcGxhY2VyKSAmJiBpdCA9PT0gdW5kZWZpbmVkIHx8IGlzU3ltYm9sKGl0KSkgcmV0dXJuOyAvLyBJRTggcmV0dXJucyBzdHJpbmcgb24gdW5kZWZpbmVkXG4gICAgaWYgKCFpc0FycmF5KHJlcGxhY2VyKSkgcmVwbGFjZXIgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiAkcmVwbGFjZXIgPT0gJ2Z1bmN0aW9uJykgdmFsdWUgPSAkcmVwbGFjZXIuY2FsbCh0aGlzLCBrZXksIHZhbHVlKTtcbiAgICAgIGlmICghaXNTeW1ib2wodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICBhcmdzWzFdID0gcmVwbGFjZXI7XG4gICAgcmV0dXJuIF9zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3MpO1xuICB9XG59KTtcblxuLy8gMTkuNC4zLjQgU3ltYm9sLnByb3RvdHlwZVtAQHRvUHJpbWl0aXZlXShoaW50KVxuJFN5bWJvbFtQUk9UT1RZUEVdW1RPX1BSSU1JVElWRV0gfHwgcmVxdWlyZSgnLi9faGlkZScpKCRTeW1ib2xbUFJPVE9UWVBFXSwgVE9fUFJJTUlUSVZFLCAkU3ltYm9sW1BST1RPVFlQRV0udmFsdWVPZik7XG4vLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZygkU3ltYm9sLCAnU3ltYm9sJyk7XG4vLyAyMC4yLjEuOSBNYXRoW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZyhNYXRoLCAnTWF0aCcsIHRydWUpO1xuLy8gMjQuMy4zIEpTT05bQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpO1xuIiwidmFyIE1FVEEgPSByZXF1aXJlKCcuL191aWQnKSgnbWV0YScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgc2V0RGVzYyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaWQgPSAwO1xudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgRlJFRVpFID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaXNFeHRlbnNpYmxlKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpO1xufSk7XG52YXIgc2V0TWV0YSA9IGZ1bmN0aW9uIChpdCkge1xuICBzZXREZXNjKGl0LCBNRVRBLCB7IHZhbHVlOiB7XG4gICAgaTogJ08nICsgKytpZCwgLy8gb2JqZWN0IElEXG4gICAgdzoge30gICAgICAgICAgLy8gd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSB9KTtcbn07XG52YXIgZmFzdEtleSA9IGZ1bmN0aW9uIChpdCwgY3JlYXRlKSB7XG4gIC8vIHJldHVybiBwcmltaXRpdmUgd2l0aCBwcmVmaXhcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7XG4gIGlmICghaGFzKGl0LCBNRVRBKSkge1xuICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG4gICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gJ0YnO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiAnRSc7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIG9iamVjdCBJRFxuICB9IHJldHVybiBpdFtNRVRBXS5pO1xufTtcbnZhciBnZXRXZWFrID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiB0cnVlO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiBmYWxzZTtcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gaGFzaCB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IHJldHVybiBpdFtNRVRBXS53O1xufTtcbi8vIGFkZCBtZXRhZGF0YSBvbiBmcmVlemUtZmFtaWx5IG1ldGhvZHMgY2FsbGluZ1xudmFyIG9uRnJlZXplID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChGUkVFWkUgJiYgbWV0YS5ORUVEICYmIGlzRXh0ZW5zaWJsZShpdCkgJiYgIWhhcyhpdCwgTUVUQSkpIHNldE1ldGEoaXQpO1xuICByZXR1cm4gaXQ7XG59O1xudmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgS0VZOiBNRVRBLFxuICBORUVEOiBmYWxzZSxcbiAgZmFzdEtleTogZmFzdEtleSxcbiAgZ2V0V2VhazogZ2V0V2VhayxcbiAgb25GcmVlemU6IG9uRnJlZXplXG59O1xuIiwiLy8gYWxsIGVudW1lcmFibGUgb2JqZWN0IGtleXMsIGluY2x1ZGVzIHN5bWJvbHNcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgcmVzdWx0ID0gZ2V0S2V5cyhpdCk7XG4gIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICBpZiAoZ2V0U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gZ2V0U3ltYm9scyhpdCk7XG4gICAgdmFyIGlzRW51bSA9IHBJRS5mO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChzeW1ib2xzLmxlbmd0aCA+IGkpIGlmIChpc0VudW0uY2FsbChpdCwga2V5ID0gc3ltYm9sc1tpKytdKSkgcmVzdWx0LnB1c2goa2V5KTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcbiIsIi8vIDcuMi4yIElzQXJyYXkoYXJndW1lbnQpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIGNvZihhcmcpID09ICdBcnJheSc7XG59O1xuIiwiLy8gZmFsbGJhY2sgZm9yIElFMTEgYnVnZ3kgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgd2l0aCBpZnJhbWUgYW5kIHdpbmRvd1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbnZhciB3aW5kb3dOYW1lcyA9IHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzXG4gID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KSA6IFtdO1xuXG52YXIgZ2V0V2luZG93TmFtZXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZ09QTihpdCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gd2luZG93TmFtZXMuc2xpY2UoKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHtcbiAgcmV0dXJuIHdpbmRvd05hbWVzICYmIHRvU3RyaW5nLmNhbGwoaXQpID09ICdbb2JqZWN0IFdpbmRvd10nID8gZ2V0V2luZG93TmFtZXMoaXQpIDogZ09QTih0b0lPYmplY3QoaXQpKTtcbn07XG4iLCJyZXF1aXJlKCcuL193a3MtZGVmaW5lJykoJ2FzeW5jSXRlcmF0b3InKTtcbiIsInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnb2JzZXJ2YWJsZScpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9zZXQtcHJvdG90eXBlLW9mXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5zZXRQcm90b3R5cGVPZjtcbiIsIi8vIDE5LjEuMy4xOSBPYmplY3Quc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IHNldFByb3RvdHlwZU9mOiByZXF1aXJlKCcuL19zZXQtcHJvdG8nKS5zZXQgfSk7XG4iLCIvLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkgdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xufTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgZnVuY3Rpb24gKHRlc3QsIGJ1Z2d5LCBzZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG4gICAgICAgIHJldHVybiBPO1xuICAgICAgfTtcbiAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuICBjaGVjazogY2hlY2tcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2NyZWF0ZVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUnKTtcbnZhciAkT2JqZWN0ID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdDtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlKFAsIEQpIHtcbiAgcmV0dXJuICRPYmplY3QuY3JlYXRlKFAsIEQpO1xufTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBjcmVhdGU6IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKSB9KTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBub3JtYWxWaWV3Qm94ID0gJzAgMCAxMDI0IDEwMjQnO1xudmFyIG5ld1ZpZXdCb3ggPSAnNjQgNjQgODk2IDg5Nic7XG52YXIgZmlsbCA9ICdmaWxsJztcbnZhciBvdXRsaW5lID0gJ291dGxpbmUnO1xudmFyIHR3b3RvbmUgPSAndHdvdG9uZSc7XG5mdW5jdGlvbiBnZXROb2RlKHZpZXdCb3gpIHtcbiAgICB2YXIgcGF0aHMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBwYXRoc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdGFnOiAnc3ZnJyxcbiAgICAgICAgYXR0cnM6IHsgdmlld0JveDogdmlld0JveCwgZm9jdXNhYmxlOiBmYWxzZSB9LFxuICAgICAgICBjaGlsZHJlbjogcGF0aHMubWFwKGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRhZzogJ3BhdGgnLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogcGF0aFswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ6IHBhdGhbMV1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRhZzogJ3BhdGgnLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIGQ6IHBhdGhcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgIH07XG59XG5mdW5jdGlvbiBnZXRJY29uKG5hbWUsIHRoZW1lLCBpY29uKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgdGhlbWU6IHRoZW1lLFxuICAgICAgICBpY29uOiBpY29uXG4gICAgfTtcbn1cbmV4cG9ydHMuQWNjb3VudEJvb2tGaWxsID0gZ2V0SWNvbignYWNjb3VudC1ib29rJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxODRINzEydi02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMzg0di02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIxNmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNjQ4LjMgNDI2LjhsLTg3LjcgMTYxLjFoNDUuN2M1LjUgMCAxMCA0LjUgMTAgMTB2MjEuM2MwIDUuNS00LjUgMTAtMTAgMTBoLTYzLjR2MjkuN2g2My40YzUuNSAwIDEwIDQuNSAxMCAxMHYyMS4zYzAgNS41LTQuNSAxMC0xMCAxMGgtNjMuNFY3NTJjMCA1LjUtNC41IDEwLTEwIDEwaC00MS4zYy01LjUgMC0xMC00LjUtMTAtMTB2LTUxLjhoLTYzLjFjLTUuNSAwLTEwLTQuNS0xMC0xMHYtMjEuM2MwLTUuNSA0LjUtMTAgMTAtMTBoNjMuMXYtMjkuN2gtNjMuMWMtNS41IDAtMTAtNC41LTEwLTEwdi0yMS4zYzAtNS41IDQuNS0xMCAxMC0xMGg0NS4ybC04OC0xNjEuMWMtMi42LTQuOC0uOS0xMC45IDQtMTMuNiAxLjUtLjggMy4xLTEuMiA0LjgtMS4yaDQ2YzMuOCAwIDcuMiAyLjEgOC45IDUuNWw3Mi45IDE0NC4zIDczLjItMTQ0LjNhMTAgMTAgMCAwIDEgOC45LTUuNWg0NWM1LjUgMCAxMCA0LjUgMTAgMTAgLjEgMS43LS4zIDMuMy0xLjEgNC44eicpKTtcbmV4cG9ydHMuQWxlcnRGaWxsID0gZ2V0SWNvbignYWxlcnQnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDI0NGMxNzYuMTggMCAzMTkgMTQyLjgyIDMxOSAzMTl2MjMzYTMyIDMyIDAgMCAxLTMyIDMySDIyNWEzMiAzMiAwIDAgMS0zMi0zMlY1NjNjMC0xNzYuMTggMTQyLjgyLTMxOSAzMTktMzE5ek00ODQgNjhoNTZhOCA4IDAgMCAxIDggOHY5NmE4IDggMCAwIDEtOCA4aC01NmE4IDggMCAwIDEtOC04Vjc2YTggOCAwIDAgMSA4LTh6TTE3Ny4yNSAxOTEuNjZhOCA4IDAgMCAxIDExLjMyIDBsNjcuODggNjcuODhhOCA4IDAgMCAxIDAgMTEuMzFsLTM5LjYgMzkuNmE4IDggMCAwIDEtMTEuMzEgMGwtNjcuODgtNjcuODhhOCA4IDAgMCAxIDAtMTEuMzFsMzkuNi0zOS42em02NjkuNiAwbDM5LjYgMzkuNmE4IDggMCAwIDEgMCAxMS4zbC02Ny44OCA2Ny45YTggOCAwIDAgMS0xMS4zMiAwbC0zOS42LTM5LjZhOCA4IDAgMCAxIDAtMTEuMzJsNjcuODktNjcuODhhOCA4IDAgMCAxIDExLjMxIDB6TTE5MiA4OTJoNjQwYTMyIDMyIDAgMCAxIDMyIDMydjI0YTggOCAwIDAgMS04IDhIMTY4YTggOCAwIDAgMS04LTh2LTI0YTMyIDMyIDAgMCAxIDMyLTMyem0xNDgtMzE3djI1M2g2NFY1NzVoLTY0eicpKTtcbmV4cG9ydHMuQWxpcGF5U3F1YXJlRmlsbCA9IGdldEljb24oJ2FsaXBheS1zcXVhcmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMzA4LjYgNTQ1LjdjLTE5LjggMi01Ny4xIDEwLjctNzcuNCAyOC42LTYxIDUzLTI0LjUgMTUwIDk5IDE1MCA3MS44IDAgMTQzLjUtNDUuNyAxOTkuOC0xMTktODAuMi0zOC45LTE0OC4xLTY2LjgtMjIxLjQtNTkuNnpNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0yOS40IDY2My4yUzcwMyA2ODkuNCA1OTguNyA2MzkuNUM1MjguOCA3MjUuMiA0MzguNiA3NzcuMyAzNDUgNzc3LjNjLTE1OC40IDAtMjEyLjEtMTM4LjEtMTM3LjItMjI5IDE2LjMtMTkuOCA0NC4yLTM4LjcgODcuMy00OS40IDY3LjUtMTYuNSAxNzUgMTAuMyAyNzUuNyA0My40IDE4LjEtMzMuMyAzMy40LTY5LjkgNDQuNy0xMDguOUgzMDUuMVY0MDJoMTYwdi01Ni4ySDI3MS4zdi0zMS4zaDE5My44di04MC4xczAtMTMuNSAxMy43LTEzLjVINTU3djkzLjZoMTkxLjd2MzEuM0g1NTcuMVY0MDJoMTU2LjRjLTE1IDYxLjEtMzcuNyAxMTcuNC02Ni4yIDE2Ni44IDQ3LjUgMTcuMSA5MC4xIDMzLjMgMTIxLjggNDMuOSAxMTQuMyAzOC4yIDE0MC4yIDQwLjIgMTQwLjIgNDAuMnYxMjIuM3onKSk7XG5leHBvcnRzLkFsaXdhbmd3YW5nRmlsbCA9IGdldEljb24oJ2FsaXdhbmd3YW5nJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg2OC4yIDM3Ny40Yy0xOC45LTQ1LjEtNDYuMy04NS42LTgxLjItMTIwLjZhMzc3LjI2IDM3Ny4yNiAwIDAgMC0xMjAuNS04MS4yQTM3NS42NSAzNzUuNjUgMCAwIDAgNTE5IDE0NS44Yy00MS45IDAtODIuOSA2LjctMTIxLjkgMjBDMzA2IDEyMy4zIDIwMC44IDEyMCAxNzAuNiAxMjBjLTIuMiAwLTcuNCAwLTkuNC4yLTExLjkuNC0yMi44IDYuNS0yOS4yIDE2LjQtNi41IDkuOS03LjcgMjIuNC0zLjQgMzMuNWw2NC4zIDE2MS42YTM3OC41OSAzNzguNTkgMCAwIDAtNTIuOCAxOTMuMmMwIDUxLjQgMTAgMTAxIDI5LjggMTQ3LjYgMTguOSA0NSA0Ni4yIDg1LjYgODEuMiAxMjAuNSAzNC43IDM0LjggNzUuNCA2Mi4xIDEyMC41IDgxLjJDNDE4LjMgODk0IDQ2Ny45IDkwNCA1MTkgOTA0YzUxLjMgMCAxMDAuOS0xMCAxNDcuNy0yOS44IDQ0LjktMTguOSA4NS41LTQ2LjMgMTIwLjQtODEuMiAzNC43LTM0LjggNjIuMS03NS40IDgxLjItMTIwLjZhMzc2LjUgMzc2LjUgMCAwIDAgMjkuOC0xNDcuNmMtLjItNTEuMi0xMC4xLTEwMC44LTI5LjktMTQ3LjR6bS0zMjUuMiA3OWMwIDIwLjQtMTYuNiAzNy4xLTM3LjEgMzcuMS0yMC40IDAtMzcuMS0xNi43LTM3LjEtMzcuMXYtNTUuMWMwLTIwLjQgMTYuNi0zNy4xIDM3LjEtMzcuMSAyMC40IDAgMzcuMSAxNi42IDM3LjEgMzcuMXY1NS4xem0xNzUuMiAwYzAgMjAuNC0xNi42IDM3LjEtMzcuMSAzNy4xUzY0NCA0NzYuOCA2NDQgNDU2LjR2LTU1LjFjMC0yMC40IDE2LjctMzcuMSAzNy4xLTM3LjEgMjAuNCAwIDM3LjEgMTYuNiAzNy4xIDM3LjF2NTUuMXonKSk7XG5leHBvcnRzLkFsaXBheUNpcmNsZUZpbGwgPSBnZXRJY29uKCdhbGlwYXktY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTMwOC42IDU0NS43Yy0xOS44IDItNTcuMSAxMC43LTc3LjQgMjguNi02MSA1My0yNC41IDE1MCA5OSAxNTAgNzEuOCAwIDE0My41LTQ1LjcgMTk5LjgtMTE5LTgwLjItMzguOS0xNDguMS02Ni44LTIyMS40LTU5LjZ6bTQ2MC41IDY3YzEwMC4xIDMzLjQgMTU0LjcgNDMgMTY2LjcgNDQuOEE0NDUuOSA0NDUuOSAwIDAgMCA5NjAgNTEyYzAtMjQ3LjQtMjAwLjYtNDQ4LTQ0OC00NDhTNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4YzE1NS45IDAgMjkzLjItNzkuNyAzNzMuNS0yMDAuNS03NS42LTI5LjgtMjEzLjYtODUtMjg2LjgtMTIwLjEtNjkuOSA4NS43LTE2MC4xIDEzNy44LTI1My43IDEzNy44LTE1OC40IDAtMjEyLjEtMTM4LjEtMTM3LjItMjI5IDE2LjMtMTkuOCA0NC4yLTM4LjcgODcuMy00OS40IDY3LjUtMTYuNSAxNzUgMTAuMyAyNzUuNyA0My40IDE4LjEtMzMuMyAzMy40LTY5LjkgNDQuNy0xMDguOUgzMDUuMVY0MDJoMTYwdi01Ni4ySDI3MS4zdi0zMS4zaDE5My44di04MC4xczAtMTMuNSAxMy43LTEzLjVINTU3djkzLjZoMTkxLjd2MzEuM0g1NTcuMVY0MDJoMTU2LjRjLTE1IDYxLjEtMzcuNyAxMTcuNC02Ni4yIDE2Ni44IDQ3LjUgMTcuMSA5MC4xIDMzLjMgMTIxLjggNDMuOXonKSk7XG5leHBvcnRzLkFtYXpvbkNpcmNsZUZpbGwgPSBnZXRJY29uKCdhbWF6b24tY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQ4NSA0NjcuNWMtMTEuNiA0LjktMjAuOSAxMi4yLTI3LjggMjItNi45IDkuOC0xMC40IDIxLjYtMTAuNCAzNS41IDAgMTcuOCA3LjUgMzEuNSAyMi40IDQxLjIgMTQuMSA5LjEgMjguOSAxMS40IDQ0LjQgNi44IDE3LjktNS4yIDMwLTE3LjkgMzYuNC0zOC4xIDMtOS4zIDQuNS0xOS43IDQuNS0zMS4zdi01MC4yYy0xMi42LjQtMjQuNCAxLjYtMzUuNSAzLjctMTEuMSAyLjEtMjIuNCA1LjYtMzQgMTAuNHpNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTM1LjggMjYyLjdjLTcuMi0xMC45LTIwLjEtMTYuNC0zOC43LTE2LjQtMS4zIDAtMyAuMS01LjMuMy0yLjIuMi02LjYgMS41LTEyLjkgMy43YTc5LjQgNzkuNCAwIDAgMC0xNy45IDkuMWMtNS41IDMuOC0xMS41IDEwLTE4IDE4LjQtNi40IDguNS0xMS41IDE4LjQtMTUuMyAyOS44bC05NC04LjRjMC0xMi40IDIuNC0yNC43IDctMzYuOSA0LjctMTIuMiAxMS44LTIzLjkgMjEuNC0zNSA5LjYtMTEuMiAyMS4xLTIxIDM0LjUtMjkuNCAxMy40LTguNSAyOS42LTE1LjIgNDguNC0yMC4zIDE4LjktNS4xIDM5LjEtNy42IDYwLjktNy42IDIxLjMgMCA0MC42IDIuNiA1Ny44IDcuNyAxNy4yIDUuMiAzMS4xIDExLjUgNDEuNCAxOS4xYTExNyAxMTcgMCAwIDEgMjUuOSAyNS43YzYuOSA5LjYgMTEuNyAxOC41IDE0LjQgMjYuNyAyLjcgOC4yIDQgMTUuNyA0IDIyLjh2MTgyLjVjMCA2LjQgMS40IDEzIDQuMyAxOS44IDIuOSA2LjggNi4zIDEyLjggMTAuMiAxOCAzLjkgNS4yIDcuOSA5LjkgMTIgMTQuMyA0LjEgNC4zIDcuNiA3LjcgMTAuNiA5LjlsNC4xIDMuNC03Mi41IDY5LjRjLTguNS03LjctMTYuOS0xNS40LTI1LjItMjMuNC04LjMtOC0xNC41LTE0LTE4LjUtMTguMWwtNi4xLTYuMmMtMi40LTIuMy01LTUuNy04LTEwLjItOC4xIDEyLjItMTguNSAyMi44LTMxLjEgMzEuOC0xMi43IDktMjYuMyAxNS42LTQwLjcgMTkuNy0xNC41IDQuMS0yOS40IDYuNS00NC43IDcuMS0xNS4zLjYtMzAtMS41LTQzLjktNi41LTEzLjktNS0yNi41LTExLjctMzcuNi0yMC4zLTExLjEtOC42LTE5LjktMjAuMi0yNi41LTM1LTYuNi0xNC44LTkuOS0zMS41LTkuOS01MC40IDAtMTcuNCAzLTMzLjMgOC45LTQ3LjcgNi0xNC41IDEzLjYtMjYuNSAyMy0zNi4xIDkuNC05LjYgMjAuNy0xOC4yIDM0LTI1LjdzMjYuNC0xMy40IDM5LjItMTcuN2MxMi44LTQuMiAyNi42LTcuOCA0MS41LTEwLjcgMTQuOS0yLjkgMjcuNi00LjggMzguMi01LjcgMTAuNi0uOSAyMS4yLTEuNiAzMS44LTJ2LTM5LjRjMC0xMy41LTIuMy0yMy41LTYuNy0zMC4xem0xODAuNSAzNzkuNmMtMi44IDMuMy03LjUgNy44LTE0LjEgMTMuNXMtMTYuOCAxMi43LTMwLjUgMjEuMWMtMTMuNyA4LjQtMjguOCAxNi00NSAyMi45LTE2LjMgNi45LTM2LjMgMTIuOS02MC4xIDE4LTIzLjcgNS4xLTQ4LjIgNy42LTczLjMgNy42LTI1LjQgMC01MC43LTMuMi03Ni4xLTkuNi0yNS40LTYuNC00Ny42LTE0LjMtNjYuOC0yMy43LTE5LjEtOS40LTM3LjYtMjAuMi01NS4xLTMyLjItMTcuNi0xMi4xLTMxLjctMjIuOS00Mi40LTMyLjUtMTAuNi05LjYtMTkuNi0xOC43LTI2LjgtMjcuMS0xLjctMS45LTIuOC0zLjYtMy4yLTUuMS0uNC0xLjUtLjMtMi44LjMtMy43LjYtLjkgMS41LTEuNiAyLjYtMi4yYTcuNDIgNy40MiAwIDAgMSA3LjQuOGM0MC45IDI0LjIgNzIuOSA0MS4zIDk1LjkgNTEuNCA4Mi45IDM2LjQgMTY4IDQ1LjcgMjU1LjMgMjcuOSA0MC41LTguMyA4Mi4xLTIyLjIgMTI0LjktNDEuOCAzLjItMS4yIDYtMS41IDguMy0uOSAyLjMuNiAzLjUgMi40IDMuNSA1LjQgMCAyLjgtMS42IDYuMy00LjggMTAuMnptNTkuOS0yOWMtMS44IDExLjEtNC45IDIxLjYtOS4xIDMxLjgtNy4yIDE3LjEtMTYuMyAzMC0yNy4xIDM4LjQtMy42IDIuOS02LjQgMy44LTguMyAyLjgtMS45LTEtMS45LTMuNSAwLTcuNCA0LjUtOS4zIDkuMi0yMS44IDE0LjItMzcuNyA1LTE1LjggNS43LTI2IDIuMS0zMC41LTEuMS0xLjUtMi43LTIuNi01LTMuNi0yLjItLjktNS4xLTEuNS04LjYtMS45cy02LjctLjYtOS40LS44Yy0yLjgtLjItNi41LS4yLTExLjIgMC00LjcuMi04IC40LTEwLjEuNmE4NzQuNCA4NzQuNCAwIDAgMS0xNy4xIDEuNWMtMS4zLjItMi43LjQtNC4xLjUtMS41LjEtMi43LjItMy41LjNsLTIuNy4zYy0xIC4xLTEuNy4yLTIuMi4yaC0zLjJsLTEtLjItLjYtLjUtLjUtLjljLTEuMy0zLjMgMy43LTcuNCAxNS0xMi40czIyLjMtOC4xIDMyLjktOS4zYzkuOC0xLjUgMjEuMy0xLjUgMzQuNS0uM3MyMS4zIDMuNyAyNC4zIDcuNGMyLjMgMy41IDIuNSAxMC43LjcgMjEuN3onKSk7XG5leHBvcnRzLkFuZHJvaWRGaWxsID0gZ2V0SWNvbignYW5kcm9pZCcsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ00yNzAuMSA3NDEuN2MwIDIzLjQgMTkuMSA0Mi41IDQyLjYgNDIuNWg0OC43djEyMC40YzAgMzAuNSAyNC41IDU1LjQgNTQuNiA1NS40IDMwLjIgMCA1NC42LTI0LjggNTQuNi01NS40Vjc4NC4xaDg1djEyMC40YzAgMzAuNSAyNC41IDU1LjQgNTQuNiA1NS40IDMwLjIgMCA1NC42LTI0LjggNTQuNi01NS40Vjc4NC4xaDQ4LjdjMjMuNSAwIDQyLjYtMTkuMSA0Mi42LTQyLjVWMzQ2LjRoLTQ4NnYzOTUuM3ptMzU3LjEtNjAwLjFsNDQuOS02NWMyLjYtMy44IDItOC45LTEuNS0xMS40LTMuNS0yLjQtOC41LTEuMi0xMS4xIDIuNmwtNDYuNiA2Ny42Yy0zMC43LTEyLjEtNjQuOS0xOC44LTEwMC44LTE4LjgtMzUuOSAwLTcwLjEgNi43LTEwMC44IDE4LjhsLTQ2LjYtNjcuNWMtMi42LTMuOC03LjYtNS4xLTExLjEtMi42LTMuNSAyLjQtNC4xIDcuNC0xLjUgMTEuNGw0NC45IDY1Yy03MS40IDMzLjItMTIxLjQgOTYuMS0xMjcuOCAxNjkuNmg0ODZjLTYuNi03My42LTU2LjctMTM2LjUtMTI4LTE2OS43ek00MDkuNSAyNDQuMWEyNi45IDI2LjkgMCAxIDEgMjYuOS0yNi45IDI2Ljk3IDI2Ljk3IDAgMCAxLTI2LjkgMjYuOXptMjA4LjQgMGEyNi45IDI2LjkgMCAxIDEgMjYuOS0yNi45IDI2Ljk3IDI2Ljk3IDAgMCAxLTI2LjkgMjYuOXptMjIzLjQgMTAwLjdjLTMwLjIgMC01NC42IDI0LjgtNTQuNiA1NS40djIxNi40YzAgMzAuNSAyNC41IDU1LjQgNTQuNiA1NS40IDMwLjIgMCA1NC42LTI0LjggNTQuNi01NS40VjQwMC4xYy4xLTMwLjYtMjQuMy01NS4zLTU0LjYtNTUuM3ptLTY1OC42IDBjLTMwLjIgMC01NC42IDI0LjgtNTQuNiA1NS40djIxNi40YzAgMzAuNSAyNC41IDU1LjQgNTQuNiA1NS40IDMwLjIgMCA1NC42LTI0LjggNTQuNi01NS40VjQwMC4xYzAtMzAuNi0yNC41LTU1LjMtNTQuNi01NS4zeicpKTtcbmV4cG9ydHMuQW1hem9uU3F1YXJlRmlsbCA9IGdldEljb24oJ2FtYXpvbi1zcXVhcmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek01NDcuOCAzMjYuN2MtNy4yLTEwLjktMjAuMS0xNi40LTM4LjctMTYuNC0xLjMgMC0zIC4xLTUuMy4zLTIuMi4yLTYuNiAxLjUtMTIuOSAzLjdhNzkuNCA3OS40IDAgMCAwLTE3LjkgOS4xYy01LjUgMy44LTExLjUgMTAtMTggMTguNC02LjQgOC41LTExLjUgMTguNC0xNS4zIDI5LjhsLTk0LTguNGMwLTEyLjQgMi40LTI0LjcgNy0zNi45czExLjgtMjMuOSAyMS40LTM1YzkuNi0xMS4yIDIxLjEtMjEgMzQuNS0yOS40IDEzLjQtOC41IDI5LjYtMTUuMiA0OC40LTIwLjMgMTguOS01LjEgMzkuMS03LjYgNjAuOS03LjYgMjEuMyAwIDQwLjYgMi42IDU3LjggNy43IDE3LjIgNS4yIDMxLjEgMTEuNSA0MS40IDE5LjFhMTE3IDExNyAwIDAgMSAyNS45IDI1LjdjNi45IDkuNiAxMS43IDE4LjUgMTQuNCAyNi43IDIuNyA4LjIgNCAxNS43IDQgMjIuOHYxODIuNWMwIDYuNCAxLjQgMTMgNC4zIDE5LjggMi45IDYuOCA2LjMgMTIuOCAxMC4yIDE4IDMuOSA1LjIgNy45IDkuOSAxMiAxNC4zIDQuMSA0LjMgNy42IDcuNyAxMC42IDkuOWw0LjEgMy40LTcyLjUgNjkuNGMtOC41LTcuNy0xNi45LTE1LjQtMjUuMi0yMy40LTguMy04LTE0LjUtMTQtMTguNS0xOC4xbC02LjEtNi4yYy0yLjQtMi4zLTUtNS43LTgtMTAuMi04LjEgMTIuMi0xOC41IDIyLjgtMzEuMSAzMS44LTEyLjcgOS0yNi4zIDE1LjYtNDAuNyAxOS43LTE0LjUgNC4xLTI5LjQgNi41LTQ0LjcgNy4xLTE1LjMuNi0zMC0xLjUtNDMuOS02LjUtMTMuOS01LTI2LjUtMTEuNy0zNy42LTIwLjMtMTEuMS04LjYtMTkuOS0yMC4yLTI2LjUtMzUtNi42LTE0LjgtOS45LTMxLjUtOS45LTUwLjQgMC0xNy40IDMtMzMuMyA4LjktNDcuNyA2LTE0LjUgMTMuNi0yNi41IDIzLTM2LjEgOS40LTkuNiAyMC43LTE4LjIgMzQtMjUuN3MyNi40LTEzLjQgMzkuMi0xNy43YzEyLjgtNC4yIDI2LjYtNy44IDQxLjUtMTAuNyAxNC45LTIuOSAyNy42LTQuOCAzOC4yLTUuNyAxMC42LS45IDIxLjItMS42IDMxLjgtMnYtMzkuNGMwLTEzLjUtMi4zLTIzLjUtNi43LTMwLjF6bTE4MC41IDM3OS42Yy0yLjggMy4zLTcuNSA3LjgtMTQuMSAxMy41cy0xNi44IDEyLjctMzAuNSAyMS4xYy0xMy43IDguNC0yOC44IDE2LTQ1IDIyLjktMTYuMyA2LjktMzYuMyAxMi45LTYwLjEgMTgtMjMuNyA1LjEtNDguMiA3LjYtNzMuMyA3LjYtMjUuNCAwLTUwLjctMy4yLTc2LjEtOS42LTI1LjQtNi40LTQ3LjYtMTQuMy02Ni44LTIzLjctMTkuMS05LjQtMzcuNi0yMC4yLTU1LjEtMzIuMi0xNy42LTEyLjEtMzEuNy0yMi45LTQyLjQtMzIuNS0xMC42LTkuNi0xOS42LTE4LjctMjYuOC0yNy4xLTEuNy0xLjktMi44LTMuNi0zLjItNS4xLS40LTEuNS0uMy0yLjguMy0zLjcuNi0uOSAxLjUtMS42IDIuNi0yLjJhNy40MiA3LjQyIDAgMCAxIDcuNC44YzQwLjkgMjQuMiA3Mi45IDQxLjMgOTUuOSA1MS40IDgyLjkgMzYuNCAxNjggNDUuNyAyNTUuMyAyNy45IDQwLjUtOC4zIDgyLjEtMjIuMiAxMjQuOS00MS44IDMuMi0xLjIgNi0xLjUgOC4zLS45IDIuMy42IDMuNSAyLjQgMy41IDUuNCAwIDIuOC0xLjYgNi4zLTQuOCAxMC4yem01OS45LTI5Yy0xLjggMTEuMS00LjkgMjEuNi05LjEgMzEuOC03LjIgMTcuMS0xNi4zIDMwLTI3LjEgMzguNC0zLjYgMi45LTYuNCAzLjgtOC4zIDIuOC0xLjktMS0xLjktMy41IDAtNy40IDQuNS05LjMgOS4yLTIxLjggMTQuMi0zNy43IDUtMTUuOCA1LjctMjYgMi4xLTMwLjUtMS4xLTEuNS0yLjctMi42LTUtMy42LTIuMi0uOS01LjEtMS41LTguNi0xLjlzLTYuNy0uNi05LjQtLjhjLTIuOC0uMi02LjUtLjItMTEuMiAwLTQuNy4yLTggLjQtMTAuMS42YTg3NC40IDg3NC40IDAgMCAxLTE3LjEgMS41Yy0xLjMuMi0yLjcuNC00LjEuNS0xLjUuMS0yLjcuMi0zLjUuM2wtMi43LjNjLTEgLjEtMS43LjItMi4yLjJoLTMuMmwtMS0uMi0uNi0uNS0uNS0uOWMtMS4zLTMuMyAzLjctNy40IDE1LTEyLjRzMjIuMy04LjEgMzIuOS05LjNjOS44LTEuNSAyMS4zLTEuNSAzNC41LS4zczIxLjMgMy43IDI0LjMgNy40YzIuMyAzLjUgMi41IDEwLjcuNyAyMS43ek00ODUgNDY3LjVjLTExLjYgNC45LTIwLjkgMTIuMi0yNy44IDIyLTYuOSA5LjgtMTAuNCAyMS42LTEwLjQgMzUuNSAwIDE3LjggNy41IDMxLjUgMjIuNCA0MS4yIDE0LjEgOS4xIDI4LjkgMTEuNCA0NC40IDYuOCAxNy45LTUuMiAzMC0xNy45IDM2LjQtMzguMSAzLTkuMyA0LjUtMTkuNyA0LjUtMzEuM3YtNTAuMmMtMTIuNi40LTI0LjQgMS42LTM1LjUgMy43LTExLjEgMi4xLTIyLjQgNS42LTM0IDEwLjR6JykpO1xuZXhwb3J0cy5BcGlGaWxsID0gZ2V0SWNvbignYXBpJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkxNy43IDE0OC44bC00Mi40LTQyLjRjLTEuNi0xLjYtMy42LTIuMy01LjctMi4zcy00LjEuOC01LjcgMi4zbC03Ni4xIDc2LjFhMTk5LjI3IDE5OS4yNyAwIDAgMC0xMTIuMS0zNC4zYy01MS4yIDAtMTAyLjQgMTkuNS0xNDEuNSA1OC42TDQzMi4zIDMwOC43YTguMDMgOC4wMyAwIDAgMCAwIDExLjNMNzA0IDU5MS43YzEuNiAxLjYgMy42IDIuMyA1LjcgMi4zIDIgMCA0LjEtLjggNS43LTIuM2wxMDEuOS0xMDEuOWM2OC45LTY5IDc3LTE3NS43IDI0LjMtMjUzLjVsNzYuMS03Ni4xYzMuMS0zLjIgMy4xLTguMyAwLTExLjR6TTU3OC45IDU0Ni43YTguMDMgOC4wMyAwIDAgMC0xMS4zIDBMNTAxIDYxMy4zIDQxMC43IDUyM2w2Ni43LTY2LjdjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM0w0NDEgNDA4LjZhOC4wMyA4LjAzIDAgMCAwLTExLjMgMEwzNjMgNDc1LjNsLTQzLTQzYTcuODUgNy44NSAwIDAgMC01LjctMi4zYy0yIDAtNC4xLjgtNS43IDIuM0wyMDYuOCA1MzQuMmMtNjguOSA2OC45LTc3IDE3NS43LTI0LjMgMjUzLjVsLTc2LjEgNzYuMWE4LjAzIDguMDMgMCAwIDAgMCAxMS4zbDQyLjQgNDIuNGMxLjYgMS42IDMuNiAyLjMgNS43IDIuM3M0LjEtLjggNS43LTIuM2w3Ni4xLTc2LjFjMzMuNyAyMi45IDcyLjkgMzQuMyAxMTIuMSAzNC4zIDUxLjIgMCAxMDIuNC0xOS41IDE0MS41LTU4LjZsMTAxLjktMTAxLjljMy4xLTMuMSAzLjEtOC4yIDAtMTEuM2wtNDMtNDMgNjYuNy02Ni43YzMuMS0zLjEgMy4xLTguMiAwLTExLjNsLTM2LjYtMzYuMnonKSk7XG5leHBvcnRzLkFwcHN0b3JlRmlsbCA9IGdldEljb24oJ2FwcHN0b3JlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg2NCAxNDRINTYwYy04LjggMC0xNiA3LjItMTYgMTZ2MzA0YzAgOC44IDcuMiAxNiAxNiAxNmgzMDRjOC44IDAgMTYtNy4yIDE2LTE2VjE2MGMwLTguOC03LjItMTYtMTYtMTZ6bTAgNDAwSDU2MGMtOC44IDAtMTYgNy4yLTE2IDE2djMwNGMwIDguOCA3LjIgMTYgMTYgMTZoMzA0YzguOCAwIDE2LTcuMiAxNi0xNlY1NjBjMC04LjgtNy4yLTE2LTE2LTE2ek00NjQgMTQ0SDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2djMwNGMwIDguOCA3LjIgMTYgMTYgMTZoMzA0YzguOCAwIDE2LTcuMiAxNi0xNlYxNjBjMC04LjgtNy4yLTE2LTE2LTE2em0wIDQwMEgxNjBjLTguOCAwLTE2IDcuMi0xNiAxNnYzMDRjMCA4LjggNy4yIDE2IDE2IDE2aDMwNGM4LjggMCAxNi03LjIgMTYtMTZWNTYwYzAtOC44LTcuMi0xNi0xNi0xNnonKSk7XG5leHBvcnRzLkF1ZGlvRmlsbCA9IGdldEljb24oJ2F1ZGlvJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2MjRjOTMuOSAwIDE3MC03NS4yIDE3MC0xNjhWMjMyYzAtOTIuOC03Ni4xLTE2OC0xNzAtMTY4cy0xNzAgNzUuMi0xNzAgMTY4djIyNGMwIDkyLjggNzYuMSAxNjggMTcwIDE2OHptMzMwLTE3MGMwLTQuNC0zLjYtOC04LThoLTYwYy00LjQgMC04IDMuNi04IDggMCAxNDAuMy0xMTMuNyAyNTQtMjU0IDI1NFMyNTggNTk0LjMgMjU4IDQ1NGMwLTQuNC0zLjYtOC04LThoLTYwYy00LjQgMC04IDMuNi04IDggMCAxNjguNyAxMjYuNiAzMDcuOSAyOTAgMzI3LjZWODg0SDMyNi43Yy0xMy43IDAtMjQuNyAxNC4zLTI0LjcgMzJ2MzZjMCA0LjQgMi44IDggNi4yIDhoNDA3LjZjMy40IDAgNi4yLTMuNiA2LjItOHYtMzZjMC0xNy43LTExLTMyLTI0LjctMzJINTQ4Vjc4Mi4xYzE2NS4zLTE4IDI5NC0xNTggMjk0LTMyOC4xeicpKTtcbmV4cG9ydHMuQXBwbGVGaWxsID0gZ2V0SWNvbignYXBwbGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNzQ3LjQgNTM1LjdjLS40LTY4LjIgMzAuNS0xMTkuNiA5Mi45LTE1Ny41LTM0LjktNTAtODcuNy03Ny41LTE1Ny4zLTgyLjgtNjUuOS01LjItMTM4IDM4LjQtMTY0LjQgMzguNC0yNy45IDAtOTEuNy0zNi42LTE0MS45LTM2LjZDMjczLjEgMjk4LjggMTYzIDM3OS44IDE2MyA1NDQuNmMwIDQ4LjcgOC45IDk5IDI2LjcgMTUwLjggMjMuOCA2OC4yIDEwOS42IDIzNS4zIDE5OS4xIDIzMi42IDQ2LjgtMS4xIDc5LjktMzMuMiAxNDAuOC0zMy4yIDU5LjEgMCA4OS43IDMzLjIgMTQxLjkgMzMuMiA5MC4zLTEuMyAxNjcuOS0xNTMuMiAxOTAuNS0yMjEuNi0xMjEuMS01Ny4xLTExNC42LTE2Ny4yLTExNC42LTE3MC43em0tMTA1LjEtMzA1YzUwLjctNjAuMiA0Ni4xLTExNSA0NC42LTEzNC43LTQ0LjggMi42LTk2LjYgMzAuNS0xMjYuMSA2NC44LTMyLjUgMzYuOC01MS42IDgyLjMtNDcuNSAxMzMuNiA0OC40IDMuNyA5Mi42LTIxLjIgMTI5LTYzLjd6JykpO1xuZXhwb3J0cy5CYWNrd2FyZEZpbGwgPSBnZXRJY29uKCdiYWNrd2FyZCcsIGZpbGwsIGdldE5vZGUobm9ybWFsVmlld0JveCwgJ000ODUuNiAyNDkuOUwxOTguMiA0OThjLTguMyA3LjEtOC4zIDIwLjggMCAyNy45bDI4Ny40IDI0OC4yYzEwLjcgOS4yIDI2LjQuOSAyNi40LTE0VjI2My44YzAtMTQuOC0xNS43LTIzLjItMjYuNC0xMy45em0zMjAgMEw1MTguMiA0OThhMTguNiAxOC42IDAgMCAwLTYuMiAxNGMwIDUuMiAyLjEgMTAuNCA2LjIgMTRsMjg3LjQgMjQ4LjJjMTAuNyA5LjIgMjYuNC45IDI2LjQtMTRWMjYzLjhjMC0xNC44LTE1LjctMjMuMi0yNi40LTEzLjl6JykpO1xuZXhwb3J0cy5CYW5rRmlsbCA9IGdldEljb24oJ2JhbmsnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODk0IDQ2MmMzMC45IDAgNDMuOC0zOS43IDE4LjctNThMNTMwLjggMTI2LjJhMzEuODEgMzEuODEgMCAwIDAtMzcuNiAwTDExMS4zIDQwNGMtMjUuMSAxOC4yLTEyLjIgNTggMTguOCA1OEgxOTJ2Mzc0aC03MmMtNC40IDAtOCAzLjYtOCA4djUyYzAgNC40IDMuNiA4IDggOGg3ODRjNC40IDAgOC0zLjYgOC04di01MmMwLTQuNC0zLjYtOC04LThoLTcyVjQ2Mmg2MnpNMzgxIDgzNkgyNjRWNDYyaDExN3YzNzR6bTE4OSAwSDQ1M1Y0NjJoMTE3djM3NHptMTkwIDBINjQyVjQ2MmgxMTh2Mzc0eicpKTtcbmV4cG9ydHMuQmVoYW5jZUNpcmNsZUZpbGwgPSBnZXRJY29uKCdiZWhhbmNlLWNpcmNsZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ000MjAuMyA0NzAuM2M4LjctNi4zIDEyLjktMTYuNyAxMi45LTMxIC4zLTYuOC0xLjEtMTMuNS00LjEtMTkuNi0yLjctNC45LTYuNy05LTExLjYtMTEuOWE0NC44IDQ0LjggMCAwIDAtMTYuNi02Yy02LjQtMS4yLTEyLjktMS44LTE5LjMtMS43aC03MC4zdjc5LjdoNzYuMWMxMy4xLjEgMjQuMi0zLjEgMzIuOS05LjV6bTExLjggNzJjLTkuOC03LjUtMjIuOS0xMS4yLTM5LjItMTEuMmgtODEuOHY5NGg4MC4yYzcuNSAwIDE0LjQtLjcgMjEuMS0yLjFhNTAuNSA1MC41IDAgMCAwIDE3LjgtNy4yYzUuMS0zLjMgOS4yLTcuOCAxMi4zLTEzLjYgMy01LjggNC41LTEzLjIgNC41LTIyLjEgMC0xNy43LTUtMzAuMi0xNC45LTM3Ljh6TTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em04Ni41IDI4Ni45aDEzOC40djMzLjdINTk4LjV2LTMzLjd6TTUxMiA2MjguOGE4OS41MiA4OS41MiAwIDAgMS0yNyAzMWMtMTEuOCA4LjItMjQuOSAxNC4yLTM4LjggMTcuN2ExNjcuNCAxNjcuNCAwIDAgMS00NC42IDUuN0gyMzZWMzQyLjFoMTYxYzE2LjMgMCAzMS4xIDEuNSA0NC42IDQuMyAxMy40IDIuOCAyNC44IDcuNiAzNC40IDE0LjEgOS41IDYuNSAxNyAxNS4yIDIyLjMgMjYgNS4yIDEwLjcgNy45IDI0LjEgNy45IDQwIDAgMTcuMi0zLjkgMzEuNC0xMS43IDQyLjktNy45IDExLjUtMTkuMyAyMC44LTM0LjggMjguMSAyMS4xIDYgMzYuNiAxNi43IDQ2LjggMzEuNyAxMC40IDE1LjIgMTUuNSAzMy40IDE1LjUgNTQuOCAwIDE3LjQtMy4zIDMyLjMtMTAgNDQuOHpNNzkwLjggNTc2SDYxMi40YzAgMTkuNCA2LjcgMzggMTYuOCA0OCAxMC4yIDkuOSAyNC44IDE0LjkgNDMuOSAxNC45IDEzLjggMCAyNS41LTMuNSAzNS41LTEwLjQgOS45LTYuOSAxNS45LTE0LjIgMTguMS0yMS44aDU5LjhjLTkuNiAyOS43LTI0LjIgNTAuOS00NCA2My43LTE5LjYgMTIuOC00My42IDE5LjItNzEuNSAxOS4yLTE5LjUgMC0zNy0zLjItNTIuNy05LjMtMTUuMS01LjktMjguNy0xNC45LTM5LjktMjYuNWExMjEuMiAxMjEuMiAwIDAgMS0yNS4xLTQxLjJjLTYuMS0xNi45LTkuMS0zNC43LTguOS01Mi42IDAtMTguNSAzLjEtMzUuNyA5LjEtNTEuNyAxMS41LTMxLjEgMzUuNC01NiA2NS45LTY4LjkgMTYuMy02LjggMzMuOC0xMC4yIDUxLjUtMTAgMjEgMCAzOS4yIDQgNTUgMTIuMmExMTEuNiAxMTEuNiAwIDAgMSAzOC42IDMyLjhjMTAuMSAxMy43IDE3LjIgMjkuMyAyMS43IDQ2LjkgNC4zIDE3LjMgNS44IDM1LjUgNC42IDU0Ljd6bS0xMjItOTUuNmMtMTAuOCAwLTE5LjkgMS45LTI2LjkgNS42LTcgMy43LTEyLjggOC4zLTE3LjIgMTMuNmE0OC40IDQ4LjQgMCAwIDAtOS4xIDE3LjRjLTEuNiA1LjMtMi43IDEwLjctMy4xIDE2LjJINzIzYy0xLjYtMTcuMy03LjYtMzAuMS0xNS42LTM5LjEtOC40LTguOS0yMS45LTEzLjctMzguNi0xMy43eicpKTtcbmV4cG9ydHMuQmVsbEZpbGwgPSBnZXRJY29uKCdiZWxsJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTgxNiA3NjhoLTI0VjQyOGMwLTE0MS4xLTEwNC4zLTI1Ny44LTI0MC0yNzcuMlYxMTJjMC0yMi4xLTE3LjktNDAtNDAtNDBzLTQwIDE3LjktNDAgNDB2MzguOEMzMzYuMyAxNzAuMiAyMzIgMjg2LjkgMjMyIDQyOHYzNDBoLTI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmMwIDQuNCAzLjYgOCA4IDhoMjE2YzAgNjEuOCA1MC4yIDExMiAxMTIgMTEyczExMi01MC4yIDExMi0xMTJoMjE2YzQuNCAwIDgtMy42IDgtOHYtMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTUxMiA4ODhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4aDk2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4eicpKTtcbmV4cG9ydHMuQmVoYW5jZVNxdWFyZUZpbGwgPSBnZXRJY29uKCdiZWhhbmNlLXNxdWFyZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTU5OC41IDM1MC45aDEzOC40djMzLjdINTk4LjV2LTMzLjd6TTUxMiA2MjguOGE4OS41MiA4OS41MiAwIDAgMS0yNyAzMWMtMTEuOCA4LjItMjQuOSAxNC4yLTM4LjggMTcuN2ExNjcuNCAxNjcuNCAwIDAgMS00NC42IDUuN0gyMzZWMzQyLjFoMTYxYzE2LjMgMCAzMS4xIDEuNSA0NC42IDQuMyAxMy40IDIuOCAyNC44IDcuNiAzNC40IDE0LjEgOS41IDYuNSAxNyAxNS4yIDIyLjMgMjYgNS4yIDEwLjcgNy45IDI0LjEgNy45IDQwIDAgMTcuMi0zLjkgMzEuNC0xMS43IDQyLjktNy45IDExLjUtMTkuMyAyMC44LTM0LjggMjguMSAyMS4xIDYgMzYuNiAxNi43IDQ2LjggMzEuNyAxMC40IDE1LjIgMTUuNSAzMy40IDE1LjUgNTQuOCAwIDE3LjQtMy4zIDMyLjMtMTAgNDQuOHpNNzkwLjggNTc2SDYxMi40YzAgMTkuNCA2LjcgMzggMTYuOCA0OCAxMC4yIDkuOSAyNC44IDE0LjkgNDMuOSAxNC45IDEzLjggMCAyNS41LTMuNSAzNS41LTEwLjQgOS45LTYuOSAxNS45LTE0LjIgMTguMS0yMS44aDU5LjhjLTkuNiAyOS43LTI0LjIgNTAuOS00NCA2My43LTE5LjYgMTIuOC00My42IDE5LjItNzEuNSAxOS4yLTE5LjUgMC0zNy0zLjItNTIuNy05LjMtMTUuMS01LjktMjguNy0xNC45LTM5LjktMjYuNWExMjEuMiAxMjEuMiAwIDAgMS0yNS4xLTQxLjJjLTYuMS0xNi45LTkuMS0zNC43LTguOS01Mi42IDAtMTguNSAzLjEtMzUuNyA5LjEtNTEuNyAxMS41LTMxLjEgMzUuNC01NiA2NS45LTY4LjkgMTYuMy02LjggMzMuOC0xMC4yIDUxLjUtMTAgMjEgMCAzOS4yIDQgNTUgMTIuMmExMTEuNiAxMTEuNiAwIDAgMSAzOC42IDMyLjhjMTAuMSAxMy43IDE3LjIgMjkuMyAyMS43IDQ2LjkgNC4zIDE3LjMgNS44IDM1LjUgNC42IDU0Ljd6bS0xMjItOTUuNmMtMTAuOCAwLTE5LjkgMS45LTI2LjkgNS42LTcgMy43LTEyLjggOC4zLTE3LjIgMTMuNmE0OC40IDQ4LjQgMCAwIDAtOS4xIDE3LjRjLTEuNiA1LjMtMi43IDEwLjctMy4xIDE2LjJINzIzYy0xLjYtMTcuMy03LjYtMzAuMS0xNS42LTM5LjEtOC40LTguOS0yMS45LTEzLjctMzguNi0xMy43em0tMjQ4LjUtMTAuMWM4LjctNi4zIDEyLjktMTYuNyAxMi45LTMxIC4zLTYuOC0xLjEtMTMuNS00LjEtMTkuNi0yLjctNC45LTYuNy05LTExLjYtMTEuOWE0NC44IDQ0LjggMCAwIDAtMTYuNi02Yy02LjQtMS4yLTEyLjktMS44LTE5LjMtMS43aC03MC4zdjc5LjdoNzYuMWMxMy4xLjEgMjQuMi0zLjEgMzIuOS05LjV6bTExLjggNzJjLTkuOC03LjUtMjIuOS0xMS4yLTM5LjItMTEuMmgtODEuOHY5NGg4MC4yYzcuNSAwIDE0LjQtLjcgMjEuMS0yLjFzMTIuNy0zLjggMTcuOC03LjJjNS4xLTMuMyA5LjItNy44IDEyLjMtMTMuNiAzLTUuOCA0LjUtMTMuMiA0LjUtMjIuMSAwLTE3LjctNS0zMC4yLTE0LjktMzcuOHonKSk7XG5leHBvcnRzLkJvb2tGaWxsID0gZ2V0SWNvbignYm9vaycsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004MzIgNjRIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyek02NjggMzQ1LjlMNjIxLjUgMzEyIDU3MiAzNDcuNFYxMjRoOTZ2MjIxLjl6JykpO1xuZXhwb3J0cy5Cb3hQbG90RmlsbCA9IGdldEljb24oJ2JveC1wbG90JywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTk1MiAyMjRoLTUyYy00LjQgMC04IDMuNi04IDh2MjQ4aC05MlYzMDRjMC00LjQtMy42LTgtOC04SDQ0OHY0MzJoMzQ0YzQuNCAwIDgtMy42IDgtOFY1NDhoOTJ2MjQ0YzAgNC40IDMuNiA4IDggOGg1MmM0LjQgMCA4LTMuNiA4LThWMjMyYzAtNC40LTMuNi04LTgtOHptLTcyOCA4MHYxNzZoLTkyVjIzMmMwLTQuNC0zLjYtOC04LThINzJjLTQuNCAwLTggMy42LTggOHY1NjBjMCA0LjQgMy42IDggOCA4aDUyYzQuNCAwIDgtMy42IDgtOFY1NDhoOTJ2MTcyYzAgNC40IDMuNiA4IDggOGgxNTJWMjk2SDIzMmMtNC40IDAtOCAzLjYtOCA4eicpKTtcbmV4cG9ydHMuQnVnRmlsbCA9IGdldEljb24oJ2J1ZycsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ00zMDQgMjgwaDQxNmM0LjQgMCA4LTMuNiA4LTggMC00MC04LjgtNzYuNy0yNS45LTEwOC4xYTE4NC4zMSAxODQuMzEgMCAwIDAtNzQtNzRDNTk2LjcgNzIuOCA1NjAgNjQgNTIwIDY0aC0xNmMtNDAgMC03Ni43IDguOC0xMDguMSAyNS45YTE4NC4zMSAxODQuMzEgMCAwIDAtNzQgNzRDMzA0LjggMTk1LjMgMjk2IDIzMiAyOTYgMjcyYzAgNC40IDMuNiA4IDggOHonLCAnTTk0MCA1MTJINzkyVjQxMmM3Ni44IDAgMTM5LTYyLjIgMTM5LTEzOSAwLTQuNC0zLjYtOC04LThoLTYwYy00LjQgMC04IDMuNi04IDhhNjMgNjMgMCAwIDEtNjMgNjNIMjMyYTYzIDYzIDAgMCAxLTYzLTYzYzAtNC40LTMuNi04LTgtOGgtNjBjLTQuNCAwLTggMy42LTggOCAwIDc2LjggNjIuMiAxMzkgMTM5IDEzOXYxMDBIODRjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoMTQ4djk2YzAgNi41LjIgMTMgLjcgMTkuM0MxNjQuMSA3MjguNiAxMTYgNzk2LjcgMTE2IDg3NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04IDAtNDQuMiAyMy45LTgyLjkgNTkuNi0xMDMuN2EyNzMgMjczIDAgMCAwIDIyLjcgNDljMjQuMyA0MS41IDU5IDc2LjIgMTAwLjUgMTAwLjUgMjguOSAxNi45IDYxIDI4LjggOTUuMyAzNC41IDQuNCAwIDgtMy42IDgtOFY0ODRjMC00LjQgMy42LTggOC04aDYwYzQuNCAwIDggMy42IDggOHY0NjQuMmMwIDQuNCAzLjYgOCA4IDggMzQuMy01LjcgNjYuNC0xNy42IDk1LjMtMzQuNWEyODEuMzggMjgxLjM4IDAgMCAwIDEyMy4yLTE0OS41QTEyMC40IDEyMC40IDAgMCAxIDgzNiA4NzZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOCAwLTc5LjMtNDguMS0xNDcuNC0xMTYuNy0xNzYuNy40LTYuNC43LTEyLjguNy0xOS4zdi05NmgxNDhjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5DYWxjdWxhdG9yRmlsbCA9IGdldEljb24oJ2NhbGN1bGF0b3InLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek00NDAuMiA3NjVoLTUwLjhjLTIuMiAwLTQuNS0xLjEtNS45LTIuOUwzNDggNzE4LjZsLTM1LjUgNDMuNWE3LjM4IDcuMzggMCAwIDEtNS45IDIuOWgtNTAuOGMtNi42IDAtMTAuMi03LjktNS44LTEzLjFsNjIuNy03Ni44LTYxLjItNzQuOWMtNC4zLTUuMi0uNy0xMy4xIDUuOS0xMy4xaDUwLjljMi4yIDAgNC41IDEuMSA1LjkgMi45bDM0IDQxLjYgMzQtNDEuNmMxLjUtMS45IDMuNi0yLjkgNS45LTIuOWg1MC44YzYuNiAwIDEwLjIgNy45IDUuOSAxMy4xTDM4My41IDY3NWw2Mi43IDc2LjhjNC4yIDUuMy42IDEzLjItNiAxMy4yem03LjgtMzgyYzAgMi4yLTEuNCA0LTMuMiA0SDM3NnY2OC43YzAgMS45LTEuOCAzLjMtNCAzLjNoLTQ4Yy0yLjIgMC00LTEuNC00LTMuMlYzODdoLTY4LjhjLTEuOCAwLTMuMi0xLjgtMy4yLTR2LTQ4YzAtMi4yIDEuNC00IDMuMi00SDMyMHYtNjguOGMwLTEuOCAxLjgtMy4yIDQtMy4yaDQ4YzIuMiAwIDQgMS40IDQgMy4yVjMzMWg2OC43YzEuOSAwIDMuMyAxLjggMy4zIDR2NDh6bTMyOCAzNjljMCAyLjItMS40IDQtMy4yIDRINTc5LjJjLTEuOCAwLTMuMi0xLjgtMy4yLTR2LTQ4YzAtMi4yIDEuNC00IDMuMi00aDE5My41YzEuOSAwIDMuMyAxLjggMy4zIDR2NDh6bTAtMTA0YzAgMi4yLTEuNCA0LTMuMiA0SDU3OS4yYy0xLjggMC0zLjItMS44LTMuMi00di00OGMwLTIuMiAxLjQtNCAzLjItNGgxOTMuNWMxLjkgMCAzLjMgMS44IDMuMyA0djQ4em0wLTI2NWMwIDIuMi0xLjQgNC0zLjIgNEg1NzkuMmMtMS44IDAtMy4yLTEuOC0zLjItNHYtNDhjMC0yLjIgMS40LTQgMy4yLTRoMTkzLjVjMS45IDAgMy4zIDEuOCAzLjMgNHY0OHonKSk7XG5leHBvcnRzLkJ1bGJGaWxsID0gZ2V0SWNvbignYnVsYicsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ00zNDggNjc2LjFDMjUwIDYxOS40IDE4NCA1MTMuNCAxODQgMzkyYzAtMTgxLjEgMTQ2LjktMzI4IDMyOC0zMjhzMzI4IDE0Ni45IDMyOCAzMjhjMCAxMjEuNC02NiAyMjcuNC0xNjQgMjg0LjFWNzkyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDM4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNjc2LjF6TTM5MiA4ODhoMjQwYzQuNCAwIDggMy42IDggOHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkg0MTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMydi0zMmMwLTQuNCAzLjYtOCA4LTh6JykpO1xuZXhwb3J0cy5CdWlsZEZpbGwgPSBnZXRJY29uKCdidWlsZCcsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MTYgMjEwSDM3NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MjM2SDEwOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MjcyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDU0MGMxNy43IDAgMzItMTQuMyAzMi0zMlY1NDZoMjM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI0MmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNjEyIDc0Nkg0MTJWNTQ2aDIwMHYyMDB6bTI2OC0yNjhINjgwVjI3OGgyMDB2MjAweicpKTtcbmV4cG9ydHMuQ2FsZW5kYXJGaWxsID0gZ2V0SWNvbignY2FsZW5kYXInLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMTEyIDg4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDYwSDExMnY0MjB6bTc2OC02OTZINzEydi02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMzg0di02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYxNzZoODAwVjIxNmMwLTE3LjctMTQuMy0zMi0zMi0zMnonKSk7XG5leHBvcnRzLkNhbWVyYUZpbGwgPSBnZXRJY29uKCdjYW1lcmEnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODY0IDI2MEg3MjhsLTMyLjQtOTAuOGEzMi4wNyAzMi4wNyAwIDAgMC0zMC4yLTIxLjJIMzU4LjZjLTEzLjUgMC0yNS42IDguNS0zMC4xIDIxLjJMMjk2IDI2MEgxNjBjLTQ0LjIgMC04MCAzNS44LTgwIDgwdjQ1NmMwIDQ0LjIgMzUuOCA4MCA4MCA4MGg3MDRjNDQuMiAwIDgwLTM1LjggODAtODBWMzQwYzAtNDQuMi0zNS44LTgwLTgwLTgwek01MTIgNzE2Yy04OC40IDAtMTYwLTcxLjYtMTYwLTE2MHM3MS42LTE2MCAxNjAtMTYwIDE2MCA3MS42IDE2MCAxNjAtNzEuNiAxNjAtMTYwIDE2MHptLTk2LTE2MGE5NiA5NiAwIDEgMCAxOTIgMCA5NiA5NiAwIDEgMC0xOTIgMHonKSk7XG5leHBvcnRzLkNhckZpbGwgPSBnZXRJY29uKCdjYXInLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTU5IDQxMy40TDkzNS4zIDM3MmE4IDggMCAwIDAtMTAuOS0yLjlsLTUwLjcgMjkuNi03OC4zLTIxNi4yYTYzLjkgNjMuOSAwIDAgMC02MC45LTQ0LjRIMzAxLjJjLTM0LjcgMC02NS41IDIyLjQtNzYuMiA1NS41bC03NC42IDIwNS4yLTUwLjgtMjkuNmE4IDggMCAwIDAtMTAuOSAyLjlMNjUgNDEzLjRjLTIuMiAzLjgtLjkgOC42IDIuOSAxMC44bDYwLjQgMzUuMi0xNC41IDQwYy0xLjIgMy4yLTEuOCA2LjYtMS44IDEwdjM0OC4yYzAgMTUuNyAxMS44IDI4LjQgMjYuMyAyOC40aDY3LjZjMTIuMyAwIDIzLTkuMyAyNS42LTIyLjNsNy43LTM3LjdoNTQ1LjZsNy43IDM3LjdjMi43IDEzIDEzLjMgMjIuMyAyNS42IDIyLjNoNjcuNmMxNC41IDAgMjYuMy0xMi43IDI2LjMtMjguNFY1MDkuNGMwLTMuNC0uNi02LjgtMS44LTEwbC0xNC41LTQwIDYwLjMtMzUuMmE4IDggMCAwIDAgMy0xMC44ek0yNjQgNjIxYy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwIDQwIDE3LjkgNDAgNDAtMTcuOSA0MC00MCA0MHptMzg4IDc1YzAgNC40LTMuNiA4LTggOEgzODBjLTQuNCAwLTgtMy42LTgtOHYtODRjMC00LjQgMy42LTggOC04aDQwYzQuNCAwIDggMy42IDggOHYzNmgxNjh2LTM2YzAtNC40IDMuNi04IDgtOGg0MGM0LjQgMCA4IDMuNiA4IDh2ODR6bTEwOC03NWMtMjIuMSAwLTQwLTE3LjktNDAtNDBzMTcuOS00MCA0MC00MCA0MCAxNy45IDQwIDQwLTE3LjkgNDAtNDAgNDB6TTIyMCA0MThsNzIuNy0xOTkuOS41LTEuMy40LTEuM2MxLjEtMy4zIDQuMS01LjUgNy42LTUuNWg0MjcuNmw3NS40IDIwOEgyMjB6JykpO1xuZXhwb3J0cy5DYXJldERvd25GaWxsID0gZ2V0SWNvbignY2FyZXQtZG93bicsIGZpbGwsIGdldE5vZGUobm9ybWFsVmlld0JveCwgJ004NDAuNCAzMDBIMTgzLjZjLTE5LjcgMC0zMC43IDIwLjgtMTguNSAzNWwzMjguNCAzODAuOGM5LjQgMTAuOSAyNy41IDEwLjkgMzcgMEw4NTguOSAzMzVjMTIuMi0xNC4yIDEuMi0zNS0xOC41LTM1eicpKTtcbmV4cG9ydHMuQ2FyZXRMZWZ0RmlsbCA9IGdldEljb24oJ2NhcmV0LWxlZnQnLCBmaWxsLCBnZXROb2RlKG5vcm1hbFZpZXdCb3gsICdNNjg5IDE2NS4xTDMwOC4yIDQ5My41Yy0xMC45IDkuNC0xMC45IDI3LjUgMCAzN0w2ODkgODU4LjljMTQuMiAxMi4yIDM1IDEuMiAzNS0xOC41VjE4My42YzAtMTkuNy0yMC44LTMwLjctMzUtMTguNXonKSk7XG5leHBvcnRzLkNhcmV0UmlnaHRGaWxsID0gZ2V0SWNvbignY2FyZXQtcmlnaHQnLCBmaWxsLCBnZXROb2RlKG5vcm1hbFZpZXdCb3gsICdNNzE1LjggNDkzLjVMMzM1IDE2NS4xYy0xNC4yLTEyLjItMzUtMS4yLTM1IDE4LjV2NjU2LjhjMCAxOS43IDIwLjggMzAuNyAzNSAxOC41bDM4MC44LTMyOC40YzEwLjktOS40IDEwLjktMjcuNiAwLTM3eicpKTtcbmV4cG9ydHMuQ2FycnlPdXRGaWxsID0gZ2V0SWNvbignY2Fycnktb3V0JywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxODRINzEydi02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMzg0di02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIxNmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNjk0LjUgNDMyLjdMNDgxLjkgNzI1LjRhMTYuMSAxNi4xIDAgMCAxLTI2IDBsLTEyNi40LTE3NGMtMy44LTUuMyAwLTEyLjcgNi41LTEyLjdoNTUuMmM1LjEgMCAxMCAyLjUgMTMgNi42bDY0LjcgODkgMTUwLjktMjA3LjhjMy00LjEgNy44LTYuNiAxMy02LjZINjg4YzYuNS4xIDEwLjMgNy41IDYuNSAxMi44eicpKTtcbmV4cG9ydHMuQ2FyZXRVcEZpbGwgPSBnZXRJY29uKCdjYXJldC11cCcsIGZpbGwsIGdldE5vZGUobm9ybWFsVmlld0JveCwgJ004NTguOSA2ODlMNTMwLjUgMzA4LjJjLTkuNC0xMC45LTI3LjUtMTAuOS0zNyAwTDE2NS4xIDY4OWMtMTIuMiAxNC4yLTEuMiAzNSAxOC41IDM1aDY1Ni44YzE5LjcgMCAzMC43LTIwLjggMTguNS0zNXonKSk7XG5leHBvcnRzLkNoZWNrQ2lyY2xlRmlsbCA9IGdldEljb24oJ2NoZWNrLWNpcmNsZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMTkzLjUgMzAxLjdsLTIxMC42IDI5MmEzMS44IDMxLjggMCAwIDEtNTEuNyAwTDMxOC41IDQ4NC45Yy0zLjgtNS4zIDAtMTIuNyA2LjUtMTIuN2g0Ni45YzEwLjIgMCAxOS45IDQuOSAyNS45IDEzLjNsNzEuMiA5OC44IDE1Ny4yLTIxOGM2LTguMyAxNS42LTEzLjMgMjUuOS0xMy4zSDY5OWM2LjUgMCAxMC4zIDcuNCA2LjUgMTIuN3onKSk7XG5leHBvcnRzLkNoZWNrU3F1YXJlRmlsbCA9IGdldEljb24oJ2NoZWNrLXNxdWFyZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTY5NS41IDM2NS43bC0yMTAuNiAyOTJhMzEuOCAzMS44IDAgMCAxLTUxLjcgMEwzMDguNSA0ODQuOWMtMy44LTUuMyAwLTEyLjcgNi41LTEyLjdoNDYuOWMxMC4yIDAgMTkuOSA0LjkgMjUuOSAxMy4zbDcxLjIgOTguOCAxNTcuMi0yMThjNi04LjMgMTUuNi0xMy4zIDI1LjktMTMuM0g2ODljNi41IDAgMTAuMyA3LjQgNi41IDEyLjd6JykpO1xuZXhwb3J0cy5DaHJvbWVGaWxsID0gZ2V0SWNvbignY2hyb21lJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTM3MS44IDUxMmMwIDc3LjUgNjIuNyAxNDAuMiAxNDAuMiAxNDAuMlM2NTIuMiA1ODkuNSA2NTIuMiA1MTIgNTg5LjUgMzcxLjggNTEyIDM3MS44IDM3MS44IDQzNC40IDM3MS44IDUxMnpNOTAwIDM2Mi40bC0yMzQuMyAxMi4xYzYzLjYgNzQuMyA2NC42IDE4MS41IDExLjEgMjYzLjdsLTE4OCAyODkuMmM3OCA0LjIgMTU4LjQtMTIuOSAyMzEuMi01NS4yIDE4MC0xMDQgMjUzLTMyMi4xIDE4MC01MDkuOHpNMzIwLjMgNTkxLjlMMTYzLjggMjg0LjFBNDE1LjM1IDQxNS4zNSAwIDAgMCA5NiA1MTJjMCAyMDggMTUyLjMgMzgwLjMgMzUxLjQgNDEwLjhsMTA2LjktMjA5LjRjLTk2LjYgMTguMi0xODkuOS0zNC44LTIzNC0xMjEuNXptMjE4LjUtMjg1LjVsMzQ0LjQgMTguMUM4NDggMjU0LjcgNzkyLjYgMTk0IDcxOS44IDE1MS43IDY1My45IDExMy42IDU4MS41IDk1LjUgNTEwLjUgOTZjLTEyMi41LjUtMjQyLjIgNTUuMi0zMjIuMSAxNTQuNWwxMjguMiAxOTYuOWMzMi05MS45IDEyNC44LTE0Ni43IDIyMi4yLTE0MXonKSk7XG5leHBvcnRzLkNpQ2lyY2xlRmlsbCA9IGdldEljb24oJ2NpLWNpcmNsZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptLTYzLjYgNjU2Yy0xMDMgMC0xNjIuNC02OC42LTE2Mi40LTE4Mi42di00OUMyODYgMzczLjUgMzQ1LjQgMzA0IDQ0OC4zIDMwNGM4OC4zIDAgMTUyLjMgNTYuOSAxNTIuMyAxMzguMSAwIDIuNC0yIDQuNC00LjQgNC40aC01Mi42Yy00LjIgMC03LjYtMy4yLTgtNy40LTQtNDYuMS0zNy42LTc3LjYtODctNzcuNi02MS4xIDAtOTUuNiA0NS40LTk1LjYgMTI2Ljl2NDkuM2MwIDgwLjMgMzQuNSAxMjUuMSA5NS42IDEyNS4xIDQ5LjMgMCA4Mi44LTI5LjUgODctNzIuNC40LTQuMSAzLjgtNy4zIDgtNy4zaDUyLjdjMi40IDAgNC40IDIgNC40IDQuNCAwIDc3LjQtNjQuMyAxMzIuNS0xNTIuMyAxMzIuNXpNNzM4IDcwNC4xYzAgNC40LTMuNiA4LTggOGgtNTAuNGMtNC40IDAtOC0zLjYtOC04VjMxOS45YzAtNC40IDMuNi04IDgtOEg3MzBjNC40IDAgOCAzLjYgOCA4djM4NC4yeicpKTtcbmV4cG9ydHMuQ2xvY2tDaXJjbGVGaWxsID0gZ2V0SWNvbignY2xvY2stY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0xNzYuNSA1ODUuN2wtMjguNiAzOWE3Ljk5IDcuOTkgMCAwIDEtMTEuMiAxLjdMNDgzLjMgNTY5LjhhNy45MiA3LjkyIDAgMCAxLTMuMy02LjVWMjg4YzAtNC40IDMuNi04IDgtOGg0OC4xYzQuNCAwIDggMy42IDggOHYyNDcuNWwxNDIuNiAxMDMuMWMzLjYgMi41IDQuNCA3LjUgMS44IDExLjF6JykpO1xuZXhwb3J0cy5DbG9zZUNpcmNsZUZpbGwgPSBnZXRJY29uKCdjbG9zZS1jaXJjbGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTE2NS40IDYxOC4ybC02Ni0uM0w1MTIgNTYzLjRsLTk5LjMgMTE4LjQtNjYuMS4zYy00LjQgMC04LTMuNS04LTggMC0xLjkuNy0zLjcgMS45LTUuMmwxMzAuMS0xNTVMMzQwLjUgMzU5YTguMzIgOC4zMiAwIDAgMS0xLjktNS4yYzAtNC40IDMuNi04IDgtOGw2Ni4xLjNMNTEyIDQ2NC42bDk5LjMtMTE4LjQgNjYtLjNjNC40IDAgOCAzLjUgOCA4IDAgMS45LS43IDMuNy0xLjkgNS4yTDU1My41IDUxNGwxMzAgMTU1YzEuMiAxLjUgMS45IDMuMyAxLjkgNS4yIDAgNC40LTMuNiA4LTggOHonKSk7XG5leHBvcnRzLkNsb3VkRmlsbCA9IGdldEljb24oJ2Nsb3VkJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTgxMS40IDQxOC43Qzc2NS42IDI5Ny45IDY0OC45IDIxMiA1MTIuMiAyMTJTMjU4LjggMjk3LjggMjEzIDQxOC42QzEyNy4zIDQ0MS4xIDY0IDUxOS4xIDY0IDYxMmMwIDExMC41IDg5LjUgMjAwIDE5OS45IDIwMGg0OTYuMkM4NzAuNSA4MTIgOTYwIDcyMi41IDk2MCA2MTJjMC05Mi43LTYzLjEtMTcwLjctMTQ4LjYtMTkzLjN6JykpO1xuZXhwb3J0cy5DbG9zZVNxdWFyZUZpbGwgPSBnZXRJY29uKCdjbG9zZS1zcXVhcmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek02NzYuMSA2NTcuOWM0LjQgNS4yLjcgMTMuMS02LjEgMTMuMWgtNTguOWMtNC43IDAtOS4yLTIuMS0xMi4zLTUuN0w1MTIgNTYxLjhsLTg2LjggMTAzLjVjLTMgMy42LTcuNSA1LjctMTIuMyA1LjdIMzU0Yy02LjggMC0xMC41LTcuOS02LjEtMTMuMUw0NzAuMiA1MTIgMzQ3LjkgMzY2LjFBNy45NSA3Ljk1IDAgMCAxIDM1NCAzNTNoNTguOWM0LjcgMCA5LjIgMi4xIDEyLjMgNS43TDUxMiA0NjIuMmw4Ni44LTEwMy41YzMtMy42IDcuNS01LjcgMTIuMy01LjdINjcwYzYuOCAwIDEwLjUgNy45IDYuMSAxMy4xTDU1My44IDUxMmwxMjIuMyAxNDUuOXonKSk7XG5leHBvcnRzLkNvZGVTYW5kYm94U3F1YXJlRmlsbCA9IGdldEljb24oJ2NvZGUtc2FuZGJveC1zcXVhcmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMzA3LjkgNTM2LjdsODcuNiA0OS45VjY4MWw5Ni43IDU1LjlWNTI0LjhMMzA3LjkgNDE4LjR6TTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNzU1LjcgNjUzLjJMNTEyIDc5NCAyNjguMyA2NTMuMlYzNzEuOGwxMTAtNjMuNi0uNC0uMmguMkw1MTIgMjMxbDEzNCA3N2gtLjJsLS4zLjIgMTEwLjEgNjMuNnYyODEuNHptLTIyMy45IDgzLjdsOTcuMy01Ni4ydi05NC4xbDg3LTQ5LjVWNDE4LjVMNTMxLjggNTI1em0tMjAtMzUyTDQxOCAzMzFsLTkxLjEgNTIuNiAxODUuMiAxMDcgMTg1LjItMTA2LjktOTEuNC01Mi44eicpKTtcbmV4cG9ydHMuQ29kZVNhbmRib3hDaXJjbGVGaWxsID0gZ2V0SWNvbignY29kZS1zYW5kYm94LWNpcmNsZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMjQzLjcgNTg5LjJMNTEyIDc5NCAyNjguMyA2NTMuMlYzNzEuOGwxMTAtNjMuNi0uNC0uMmguMkw1MTIgMjMxbDEzNCA3N2gtLjJsLS4zLjIgMTEwLjEgNjMuNnYyODEuNHpNMzA3LjkgNTM2LjdsODcuNiA0OS45VjY4MWw5Ni43IDU1LjlWNTI0LjhMMzA3LjkgNDE4LjR6bTIwMy45LTE1MS44TDQxOCAzMzFsLTkxLjEgNTIuNiAxODUuMiAxMDcgMTg1LjItMTA2LjktOTEuNC01Mi44em0yMCAzNTJsOTcuMy01Ni4ydi05NC4xbDg3LTQ5LjVWNDE4LjVMNTMxLjggNTI1eicpKTtcbmV4cG9ydHMuQ29kZUZpbGwgPSBnZXRJY29uKCdjb2RlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNTEzLjEgNTE4LjFsLTE5MiAxNjFjLTUuMiA0LjQtMTMuMS43LTEzLjEtNi4xdi02Mi43YzAtMi4zIDEuMS00LjYgMi45LTYuMUw0MjAuNyA1MTJsLTEwOS44LTkyLjJhNy42MyA3LjYzIDAgMCAxLTIuOS02LjFWMzUxYzAtNi44IDcuOS0xMC41IDEzLjEtNi4xbDE5MiAxNjAuOWMzLjkgMy4yIDMuOSA5LjEgMCAxMi4zek03MTYgNjczYzAgNC40LTMuNCA4LTcuNSA4aC0xODVjLTQuMSAwLTcuNS0zLjYtNy41LTh2LTQ4YzAtNC40IDMuNC04IDcuNS04aDE4NWM0LjEgMCA3LjUgMy42IDcuNSA4djQ4eicpKTtcbmV4cG9ydHMuQ29tcGFzc0ZpbGwgPSBnZXRJY29uKCdjb21wYXNzJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0ek0zMjcuMyA3MDIuNGMtMiAuOS00LjQgMC01LjMtMi4xLS40LTEtLjQtMi4yIDAtMy4ybDk4LjctMjI1LjUgMTMyLjEgMTMyLjEtMjI1LjUgOTguN3ptMzc1LjEtMzc1LjFsLTk4LjcgMjI1LjUtMTMyLjEtMTMyLjFMNjk3LjEgMzIyYzItLjkgNC40IDAgNS4zIDIuMS40IDEgLjQgMi4xIDAgMy4yeicpKTtcbmV4cG9ydHMuQ29kZXBlbkNpcmNsZUZpbGwgPSBnZXRJY29uKCdjb2RlcGVuLWNpcmNsZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ000ODguMSA0MTQuN1YzMDMuNEwzMDAuOSA0MjhsODMuNiA1NS44em0yNTQuMSAxMzcuN3YtNzkuOGwtNTkuOCAzOS45ek01MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMjc4IDUzM2MwIDEuMS0uMSAyLjEtLjIgMy4xIDAgLjQtLjEuNy0uMiAxYTE0LjE2IDE0LjE2IDAgMCAxLS44IDMuMmMtLjIuNi0uNCAxLjItLjYgMS43LS4yLjQtLjQuOC0uNSAxLjItLjMuNS0uNSAxLjEtLjggMS42LS4yLjQtLjQuNy0uNyAxLjEtLjMuNS0uNyAxLTEgMS41LS4zLjQtLjUuNy0uOCAxLS40LjQtLjguOS0xLjIgMS4zLS4zLjMtLjYuNi0xIC45LS40LjQtLjkuOC0xLjQgMS4xLS40LjMtLjcuNi0xLjEuOC0uMS4xLS4zLjItLjQuM0w1MjUuMiA3ODZjLTQgMi43LTguNiA0LTEzLjIgNC00LjcgMC05LjMtMS40LTEzLjMtNEwyNDQuNiA2MTYuOWMtLjEtLjEtLjMtLjItLjQtLjNsLTEuMS0uOGMtLjUtLjQtLjktLjctMS4zLTEuMS0uMy0uMy0uNi0uNi0xLS45LS40LS40LS44LS44LTEuMi0xLjNhNyA3IDAgMCAxLS44LTFjLS40LS41LS43LTEtMS0xLjUtLjItLjQtLjUtLjctLjctMS4xLS4zLS41LS42LTEuMS0uOC0xLjYtLjItLjQtLjQtLjgtLjUtMS4yLS4yLS42LS40LTEuMi0uNi0xLjctLjEtLjQtLjMtLjgtLjQtMS4yLS4yLS43LS4zLTEuMy0uNC0yLS4xLS4zLS4xLS43LS4yLTEtLjEtMS0uMi0yLjEtLjItMy4xVjQyNy45YzAtMSAuMS0yLjEuMi0zLjEuMS0uMy4xLS43LjItMWExNC4xNiAxNC4xNiAwIDAgMSAuOC0zLjJjLjItLjYuNC0xLjIuNi0xLjcuMi0uNC40LS44LjUtMS4yLjItLjUuNS0xLjEuOC0xLjYuMi0uNC40LS43LjctMS4xLjYtLjkgMS4yLTEuNyAxLjgtMi41LjQtLjQuOC0uOSAxLjItMS4zLjMtLjMuNi0uNiAxLS45LjQtLjQuOS0uOCAxLjMtMS4xLjQtLjMuNy0uNiAxLjEtLjguMS0uMS4zLS4yLjQtLjNMNDk4LjcgMjM5YzgtNS4zIDE4LjUtNS4zIDI2LjUgMGwyNTQuMSAxNjkuMWMuMS4xLjMuMi40LjNsMS4xLjggMS40IDEuMWMuMy4zLjYuNiAxIC45LjQuNC44LjggMS4yIDEuMy43LjggMS4zIDEuNiAxLjggMi41LjIuNC41LjcuNyAxLjEuMy41LjYgMSAuOCAxLjYuMi40LjQuOC41IDEuMi4yLjYuNCAxLjIuNiAxLjcuMS40LjMuOC40IDEuMi4yLjcuMyAxLjMuNCAyIC4xLjMuMS43LjIgMSAuMSAxIC4yIDIuMS4yIDMuMVY1OTd6bS0yNTQuMSAxMy4zdjExMS4zTDcyMy4xIDU5N2wtODMuNi01NS44ek0yODEuOCA0NzIuNnY3OS44bDU5LjgtMzkuOXpNNTEyIDQ1Ni4xbC04NC41IDU2LjQgODQuNSA1Ni40IDg0LjUtNTYuNHpNNzIzLjEgNDI4TDUzNS45IDMwMy40djExMS4zbDEwMy42IDY5LjF6TTM4NC41IDU0MS4yTDMwMC45IDU5N2wxODcuMiAxMjQuNlY2MTAuM2wtMTAzLjYtNjkuMXonKSk7XG5leHBvcnRzLkNvZGVwZW5TcXVhcmVGaWxsID0gZ2V0SWNvbignY29kZXBlbi1zcXVhcmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNzIzLjEgNDI4TDUzNS45IDMwMy40djExMS4zbDEwMy42IDY5LjF6TTUxMiA0NTYuMWwtODQuNSA1Ni40IDg0LjUgNTYuNCA4NC41LTU2LjR6bTIzLjkgMTU0LjJ2MTExLjNMNzIzLjEgNTk3bC04My42LTU1Ljh6bS0xNTEuNC02OS4xTDMwMC45IDU5N2wxODcuMiAxMjQuNlY2MTAuM2wtMTAzLjYtNjkuMXpNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tOTAgNDg1YzAgMS4xLS4xIDIuMS0uMiAzLjEgMCAuNC0uMS43LS4yIDFhMTQuMTYgMTQuMTYgMCAwIDEtLjggMy4yYy0uMi42LS40IDEuMi0uNiAxLjctLjIuNC0uNC44LS41IDEuMi0uMy41LS41IDEuMS0uOCAxLjYtLjIuNC0uNC43LS43IDEuMS0uMy41LS43IDEtMSAxLjUtLjMuNC0uNS43LS44IDEtLjQuNC0uOC45LTEuMiAxLjMtLjMuMy0uNi42LTEgLjktLjQuNC0uOS44LTEuNCAxLjEtLjQuMy0uNy42LTEuMS44LS4xLjEtLjMuMi0uNC4zTDUyNS4yIDc4NmMtNCAyLjctOC42IDQtMTMuMiA0LTQuNyAwLTkuMy0xLjQtMTMuMy00TDI0NC42IDYxNi45Yy0uMS0uMS0uMy0uMi0uNC0uM2wtMS4xLS44Yy0uNS0uNC0uOS0uNy0xLjMtMS4xLS4zLS4zLS42LS42LTEtLjktLjQtLjQtLjgtLjgtMS4yLTEuM2E3IDcgMCAwIDEtLjgtMWMtLjQtLjUtLjctMS0xLTEuNS0uMi0uNC0uNS0uNy0uNy0xLjEtLjMtLjUtLjYtMS4xLS44LTEuNi0uMi0uNC0uNC0uOC0uNS0xLjItLjItLjYtLjQtMS4yLS42LTEuNy0uMS0uNC0uMy0uOC0uNC0xLjItLjItLjctLjMtMS4zLS40LTItLjEtLjMtLjEtLjctLjItMS0uMS0xLS4yLTIuMS0uMi0zLjFWNDI3LjljMC0xIC4xLTIuMS4yLTMuMS4xLS4zLjEtLjcuMi0xYTE0LjE2IDE0LjE2IDAgMCAxIC44LTMuMmMuMi0uNi40LTEuMi42LTEuNy4yLS40LjQtLjguNS0xLjIuMi0uNS41LTEuMS44LTEuNi4yLS40LjQtLjcuNy0xLjEuNi0uOSAxLjItMS43IDEuOC0yLjUuNC0uNC44LS45IDEuMi0xLjMuMy0uMy42LS42IDEtLjkuNC0uNC45LS44IDEuMy0xLjEuNC0uMy43LS42IDEuMS0uOC4xLS4xLjMtLjIuNC0uM0w0OTguNyAyMzljOC01LjMgMTguNS01LjMgMjYuNSAwbDI1NC4xIDE2OS4xYy4xLjEuMy4yLjQuM2wxLjEuOCAxLjQgMS4xYy4zLjMuNi42IDEgLjkuNC40LjguOCAxLjIgMS4zLjcuOCAxLjMgMS42IDEuOCAyLjUuMi40LjUuNy43IDEuMS4zLjUuNiAxIC44IDEuNi4yLjQuNC44LjUgMS4yLjIuNi40IDEuMi42IDEuNy4xLjQuMy44LjQgMS4yLjIuNy4zIDEuMy40IDIgLjEuMy4xLjcuMiAxIC4xIDEgLjIgMi4xLjIgMy4xVjU5N3ptLTQ3LjgtNDQuNnYtNzkuOGwtNTkuOCAzOS45em0tNDYwLjQtNzkuOHY3OS44bDU5LjgtMzkuOXptMjA2LjMtNTcuOVYzMDMuNEwzMDAuOSA0MjhsODMuNiA1NS44eicpKTtcbmV4cG9ydHMuQ29udGFjdHNGaWxsID0gZ2V0SWNvbignY29udGFjdHMnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTI4IDIyNEg3Njh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1Nkg1NDh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NkgzMjh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1Nkg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NTc2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYyNTZjMC0xNy43LTE0LjMtMzItMzItMzJ6TTY2MSA3MzZoLTQzLjljLTQuMiAwLTcuNi0zLjMtNy45LTcuNS0zLjgtNTAuNi00Ni05MC41LTk3LjItOTAuNXMtOTMuNCA0MC05Ny4yIDkwLjVjLS4zIDQuMi0zLjcgNy41LTcuOSA3LjVIMzYzYTggOCAwIDAgMS04LTguNGMyLjgtNTMuMyAzMi05OS43IDc0LjYtMTI2LjFhMTExLjggMTExLjggMCAwIDEtMjkuMS03NS41YzAtNjEuOSA0OS45LTExMiAxMTEuNC0xMTIgNjEuNSAwIDExMS40IDUwLjEgMTExLjQgMTEyIDAgMjkuMS0xMSA1NS41LTI5LjEgNzUuNSA0Mi43IDI2LjUgNzEuOCA3Mi44IDc0LjYgMTI2LjEuNCA0LjYtMy4yIDguNC03LjggOC40ek01MTIgNDc0Yy0yOC41IDAtNTEuNyAyMy4zLTUxLjcgNTJzMjMuMiA1MiA1MS43IDUyYzI4LjUgMCA1MS43LTIzLjMgNTEuNy01MnMtMjMuMi01Mi01MS43LTUyeicpKTtcbmV4cG9ydHMuQ29udHJvbEZpbGwgPSBnZXRJY29uKCdjb250cm9sJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNDA0IDY4M3Y3N2MwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTc3Yy00MS43LTEzLjYtNzItNTIuOC03Mi05OXMzMC4zLTg1LjUgNzItOTlWMjY0YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MjIxYzQxLjcgMTMuNiA3MiA1Mi44IDcyIDk5cy0zMC4zIDg1LjUtNzIgOTl6bTI3OS42LTE0My45Yy4yIDAgLjMtLjEuNC0uMXYyMjFjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04VjUzOWMuMiAwIC4zLjEuNC4xLTQyLTEzLjQtNzIuNC01Mi43LTcyLjQtOTkuMSAwLTQ2LjQgMzAuNC04NS43IDcyLjQtOTkuMS0uMiAwLS4zLjEtLjQuMXYtNzdjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHY3N2MtLjIgMC0uMy0uMS0uNC0uMSA0MiAxMy40IDcyLjQgNTIuNyA3Mi40IDk5LjEgMCA0Ni40LTMwLjQgODUuNy03Mi40IDk5LjF6TTYxNiA0NDBhMzYgMzYgMCAxIDAgNzIgMCAzNiAzNiAwIDEgMC03MiAwek00MDMuNCA1NjYuNWwtMS41LTIuNGMwLS4xLS4xLS4xLS4xLS4ybC0uOS0xLjJjLS4xLS4xLS4yLS4yLS4yLS4zLTEtMS4zLTItMi41LTMuMi0zLjZsLS4yLS4yYy0uNC0uNC0uOC0uOC0xLjItMS4xLS44LS44LTEuNy0xLjUtMi42LTIuMWgtLjFsLTEuMi0uOWMtLjEtLjEtLjMtLjItLjQtLjMtMS4yLS44LTIuNS0xLjYtMy45LTIuMi0uMi0uMS0uNS0uMi0uNy0uNC0uNC0uMi0uNy0uMy0xLjEtLjUtLjMtLjEtLjctLjMtMS0uNC0uNS0uMi0xLS40LTEuNS0uNS0uNC0uMS0uOS0uMy0xLjMtLjRsLS45LS4zLTEuNC0uM2MtLjItLjEtLjUtLjEtLjctLjItLjctLjEtMS40LS4zLTIuMS0uNC0uMiAwLS40IDAtLjYtLjEtLjYtLjEtMS4xLS4xLTEuNy0uMi0uMiAwLS40IDAtLjctLjEtLjggMC0xLjUtLjEtMi4zLS4xcy0xLjUgMC0yLjMuMWMtLjIgMC0uNCAwLS43LjEtLjYgMC0xLjIuMS0xLjcuMi0uMiAwLS40IDAtLjYuMS0uNy4xLTEuNC4yLTIuMS40LS4yLjEtLjUuMS0uNy4ybC0xLjQuMy0uOS4zYy0uNC4xLS45LjMtMS4zLjQtLjUuMi0xIC40LTEuNS41LS4zLjEtLjcuMy0xIC40LS40LjItLjcuMy0xLjEuNS0uMi4xLS41LjItLjcuNC0xLjMuNy0yLjYgMS40LTMuOSAyLjItLjEuMS0uMy4yLS40LjNsLTEuMi45aC0uMWMtLjkuNy0xLjggMS40LTIuNiAyLjEtLjQuNC0uOC43LTEuMiAxLjFsLS4yLjJhNTQuOCA1NC44IDAgMCAwLTMuMiAzLjZjLS4xLjEtLjIuMi0uMi4zbC0uOSAxLjJjMCAuMS0uMS4xLS4xLjJsLTEuNSAyLjRjLS4xLjItLjIuMy0uMy41LTIuNyA1LjEtNC4zIDEwLjktNC4zIDE3czEuNiAxMiA0LjMgMTdjLjEuMi4yLjMuMy41bDEuNSAyLjRjMCAuMS4xLjEuMS4ybC45IDEuMmMuMS4xLjIuMi4yLjMgMSAxLjMgMiAyLjUgMy4yIDMuNmwuMi4yYy40LjQuOC44IDEuMiAxLjEuOC44IDEuNyAxLjUgMi42IDIuMWguMWwxLjIuOWMuMS4xLjMuMi40LjMgMS4yLjggMi41IDEuNiAzLjkgMi4yLjIuMS41LjIuNy40LjQuMi43LjMgMS4xLjUuMy4xLjcuMyAxIC40LjUuMiAxIC40IDEuNS41LjQuMS45LjMgMS4zLjRsLjkuMyAxLjQuM2MuMi4xLjUuMS43LjIuNy4xIDEuNC4zIDIuMS40LjIgMCAuNCAwIC42LjEuNi4xIDEuMS4xIDEuNy4yLjIgMCAuNCAwIC43LjEuOCAwIDEuNS4xIDIuMy4xczEuNSAwIDIuMy0uMWMuMiAwIC40IDAgLjctLjEuNiAwIDEuMi0uMSAxLjctLjIuMiAwIC40IDAgLjYtLjEuNy0uMSAxLjQtLjIgMi4xLS40LjItLjEuNS0uMS43LS4ybDEuNC0uMy45LS4zYy40LS4xLjktLjMgMS4zLS40LjUtLjIgMS0uNCAxLjUtLjUuMy0uMS43LS4zIDEtLjQuNC0uMi43LS4zIDEuMS0uNS4yLS4xLjUtLjIuNy0uNCAxLjMtLjcgMi42LTEuNCAzLjktMi4yLjEtLjEuMy0uMi40LS4zbDEuMi0uOWguMWMuOS0uNyAxLjgtMS40IDIuNi0yLjEuNC0uNC44LS43IDEuMi0xLjFsLjItLjJjMS4xLTEuMSAyLjItMi40IDMuMi0zLjYuMS0uMS4yLS4yLjItLjNsLjktMS4yYzAtLjEuMS0uMS4xLS4ybDEuNS0yLjRjLjEtLjIuMi0uMy4zLS41IDIuNy01LjEgNC4zLTEwLjkgNC4zLTE3cy0xLjYtMTItNC4zLTE3Yy0uMS0uMi0uMi0uNC0uMy0uNXonKSk7XG5leHBvcnRzLkNvbnRhaW5lckZpbGwgPSBnZXRJY29uKCdjb250YWluZXInLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODMyIDY0SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NTI5YzAtLjYuNC0xIDEtMWgyMTkuM2w1LjIgMjQuN0MzOTcuNiA3MDguNSA0NTAuOCA3NTIgNTEyIDc1MnMxMTQuNC00My41IDEyNi40LTEwMy4zbDUuMi0yNC43SDg2M2MuNiAwIDEgLjQgMSAxVjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyek03MTIgNDkzYzAgNC40LTMuNiA4LTggOEgzMjBjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDM4NGM0LjQgMCA4IDMuNiA4IDh2NDh6bTAtMTYwYzAgNC40LTMuNiA4LTggOEgzMjBjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDM4NGM0LjQgMCA4IDMuNiA4IDh2NDh6bTE1MSAzNTRINjk0LjFjLTExLjYgMzIuOC0zMiA2Mi4zLTU5LjEgODQuNy0zNC41IDI4LjYtNzguMiA0NC4zLTEyMyA0NC4zcy04OC41LTE1LjgtMTIzLTQ0LjNhMTk0LjAyIDE5NC4wMiAwIDAgMS01OS4xLTg0LjdIMTYxYy0uNiAwLTEtLjQtMS0xdjI0MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjg2YzAgLjYtLjQgMS0xIDF6JykpO1xuZXhwb3J0cy5Db3B5RmlsbCA9IGdldEljb24oJ2NvcHknLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODMyIDY0SDI5NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg0OTZ2Njg4YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LThWOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6TTcwNCAxOTJIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY1MzAuN2MwIDguNSAzLjQgMTYuNiA5LjQgMjIuNmwxNzMuMyAxNzMuM2MyLjIgMi4yIDQuNyA0IDcuNCA1LjV2MS45aDQuMmMzLjUgMS4zIDcuMiAyIDExIDJINzA0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzgyIDg5NmgtLjJMMjMyIDc0Ni4ydi0uMmgxNTB2MTUweicpKTtcbmV4cG9ydHMuQ29weXJpZ2h0Q2lyY2xlRmlsbCA9IGdldEljb24oJ2NvcHlyaWdodC1jaXJjbGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTUuNCA2NzBjLTExMCAwLTE3My40LTczLjItMTczLjQtMTk0Ljl2LTUyLjNDMzQ0IDM2NC4yIDQwNy40IDI5MCA1MTcuMyAyOTBjOTQuMyAwIDE2Mi43IDYwLjcgMTYyLjcgMTQ3LjQgMCAyLjYtMi4xIDQuNy00LjcgNC43aC01Ni43Yy00LjIgMC03LjYtMy4yLTgtNy40LTQtNDkuNS00MC04My40LTkzLTgzLjQtNjUuMyAwLTEwMi4xIDQ4LjUtMTAyLjEgMTM1LjV2NTIuNmMwIDg1LjcgMzYuOSAxMzMuNiAxMDIuMSAxMzMuNiA1Mi44IDAgODguNy0zMS43IDkzLTc3LjguNC00LjEgMy44LTcuMyA4LTcuM2g1Ni44YzIuNiAwIDQuNyAyLjEgNC43IDQuNyAwIDgyLjYtNjguNyAxNDEuNC0xNjIuNyAxNDEuNHonKSk7XG5leHBvcnRzLkNyZWRpdENhcmRGaWxsID0gZ2V0SWNvbignY3JlZGl0LWNhcmQnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTI4IDE2MEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTYwaDg5NlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTY0IDgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4MzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDQwSDY0djM5MnptNTc5LTE4NGMwLTQuNCAzLjYtOCA4LThoMTY1YzQuNCAwIDggMy42IDggOHY3MmMwIDQuNC0zLjYgOC04IDhINjUxYy00LjQgMC04LTMuNi04LTh2LTcyeicpKTtcbmV4cG9ydHMuQ3Jvd25GaWxsID0gZ2V0SWNvbignY3Jvd24nLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODk5LjYgMjc2LjVMNzA1IDM5Ni40IDUxOC40IDE0Ny41YTguMDYgOC4wNiAwIDAgMC0xMi45IDBMMzE5IDM5Ni40IDEyNC4zIDI3Ni41Yy01LjctMy41LTEzLjEgMS4yLTEyLjIgNy45TDE4OC41IDg2NWMxLjEgNy45IDcuOSAxNCAxNiAxNGg2MTUuMWM4IDAgMTQuOS02IDE1LjktMTRsNzYuNC01ODAuNmMuOC02LjctNi41LTExLjQtMTIuMy03Ljl6TTUxMiA3MzQuMmMtNjIuMSAwLTExMi42LTUwLjUtMTEyLjYtMTEyLjZTNDQ5LjkgNTA5IDUxMiA1MDlzMTEyLjYgNTAuNSAxMTIuNiAxMTIuNlM1NzQuMSA3MzQuMiA1MTIgNzM0LjJ6bTAtMTYwLjljLTI2LjYgMC00OC4yIDIxLjYtNDguMiA0OC4zIDAgMjYuNiAyMS42IDQ4LjMgNDguMiA0OC4zczQ4LjItMjEuNiA0OC4yLTQ4LjNjMC0yNi42LTIxLjYtNDguMy00OC4yLTQ4LjN6JykpO1xuZXhwb3J0cy5DdXN0b21lclNlcnZpY2VGaWxsID0gZ2V0SWNvbignY3VzdG9tZXItc2VydmljZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgMTI4Yy0yMTIuMSAwLTM4NCAxNzEuOS0zODQgMzg0djM2MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjI0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDIwMHYtNDhjMC0xNzIuMyAxMzkuNy0zMTIgMzEyLTMxMnMzMTIgMTM5LjcgMzEyIDMxMnY0OEg2ODhjLTM1LjMgMC02NCAyOC43LTY0IDY0djIwOGMwIDM1LjMgMjguNyA2NCA2NCA2NGgxODRjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNTEyYzAtMjEyLjEtMTcxLjktMzg0LTM4NC0zODR6JykpO1xuZXhwb3J0cy5EYXNoYm9hcmRGaWxsID0gZ2V0SWNvbignZGFzaGJvYXJkJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkyNC44IDM4NS42YTQ0Ni43IDQ0Ni43IDAgMCAwLTk2LTE0Mi40IDQ0Ni43IDQ0Ni43IDAgMCAwLTE0Mi40LTk2QzYzMS4xIDEyMy44IDU3Mi41IDExMiA1MTIgMTEycy0xMTkuMSAxMS44LTE3NC40IDM1LjJhNDQ2LjcgNDQ2LjcgMCAwIDAtMTQyLjQgOTYgNDQ2LjcgNDQ2LjcgMCAwIDAtOTYgMTQyLjRDNzUuOCA0NDAuOSA2NCA0OTkuNSA2NCA1NjBjMCAxMzIuNyA1OC4zIDI1Ny43IDE1OS45IDM0My4xbDEuNyAxLjRjNS44IDQuOCAxMy4xIDcuNSAyMC42IDcuNWg1MzEuN2M3LjUgMCAxNC44LTIuNyAyMC42LTcuNWwxLjctMS40QzkwMS43IDgxNy43IDk2MCA2OTIuNyA5NjAgNTYwYzAtNjAuNS0xMS45LTExOS4xLTM1LjItMTc0LjR6TTQ4MiAyMzJjMC00LjQgMy42LTggOC04aDQ0YzQuNCAwIDggMy42IDggOHY4MGMwIDQuNC0zLjYgOC04IDhoLTQ0Yy00LjQgMC04LTMuNi04LTh2LTgwek0yNzAgNTgyYzAgNC40LTMuNiA4LTggOGgtODBjLTQuNCAwLTgtMy42LTgtOHYtNDRjMC00LjQgMy42LTggOC04aDgwYzQuNCAwIDggMy42IDggOHY0NHptOTAuNy0yMDQuNWwtMzEuMSAzMS4xYTguMDMgOC4wMyAwIDAgMS0xMS4zIDBMMjYxLjcgMzUyYTguMDMgOC4wMyAwIDAgMSAwLTExLjNsMzEuMS0zMS4xYzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBsNTYuNiA1Ni42YzMuMSAzLjEgMy4xIDguMiAwIDExLjN6bTI5MS4xIDgzLjZsLTg0LjUgODQuNWM1IDE4LjcuMiAzOS40LTE0LjUgNTQuMWE1NS45NSA1NS45NSAwIDAgMS03OS4yIDAgNTUuOTUgNTUuOTUgMCAwIDEgMC03OS4yIDU1Ljg3IDU1Ljg3IDAgMCAxIDU0LjEtMTQuNWw4NC41LTg0LjVjMy4xLTMuMSA4LjItMy4xIDExLjMgMGwyOC4zIDI4LjNjMy4xIDMuMSAzLjEgOC4xIDAgMTEuM3ptNDMtNTIuNGwtMzEuMS0zMS4xYTguMDMgOC4wMyAwIDAgMSAwLTExLjNsNTYuNi01Ni42YzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBsMzEuMSAzMS4xYzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTU2LjYgNTYuNmE4LjAzIDguMDMgMCAwIDEtMTEuMyAwek04NDYgNTgyYzAgNC40LTMuNiA4LTggOGgtODBjLTQuNCAwLTgtMy42LTgtOHYtNDRjMC00LjQgMy42LTggOC04aDgwYzQuNCAwIDggMy42IDggOHY0NHonKSk7XG5leHBvcnRzLkRlbGV0ZUZpbGwgPSBnZXRJY29uKCdkZWxldGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODY0IDI1Nkg3MzZ2LTgwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDM1MmMtMzUuMyAwLTY0IDI4LjctNjQgNjR2ODBIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmMwIDQuNCAzLjYgOCA4IDhoNjAuNGwyNC43IDUyM2MxLjYgMzQuMSAyOS44IDYxIDYzLjkgNjFoNDU0YzM0LjIgMCA2Mi4zLTI2LjggNjMuOS02MWwyNC43LTUyM0g4ODhjNC40IDAgOC0zLjYgOC04di0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTIwMCAwSDM2MHYtNzJoMzA0djcyeicpKTtcbmV4cG9ydHMuRGlmZkZpbGwgPSBnZXRJY29uKCdkaWZmJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1NC4yIDMwNi42TDYxMS4zIDcyLjljLTYtNS43LTEzLjktOC45LTIyLjItOC45SDI5NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGgyNzdsMjE5IDIxMC42VjgyNGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04VjMyOS42YzAtOC43LTMuNS0xNy05LjgtMjN6TTU1My40IDIwMS40Yy02LTYtMTQuMS05LjQtMjIuNi05LjRIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MDRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNTEyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM5Ny4zYzAtOC41LTMuNC0xNi42LTkuNC0yMi42TDU1My40IDIwMS40ek01NjggNzUzYzAgMy44LTMuNCA3LTcuNSA3aC0yMjVjLTQuMSAwLTcuNS0zLjItNy41LTd2LTQyYzAtMy44IDMuNC03IDcuNS03aDIyNWM0LjEgMCA3LjUgMy4yIDcuNSA3djQyem0wLTIyMGMwIDMuOC0zLjQgNy03LjUgN0g0NzZ2ODQuOWMwIDMuOS0zLjEgNy4xLTcgNy4xaC00MmMtMy44IDAtNy0zLjItNy03LjFWNTQwaC04NC41Yy00LjEgMC03LjUtMy4yLTcuNS03di00MmMwLTMuOSAzLjQtNyA3LjUtN0g0MjB2LTg0LjljMC0zLjkgMy4yLTcuMSA3LTcuMWg0MmMzLjkgMCA3IDMuMiA3IDcuMVY0ODRoODQuNWM0LjEgMCA3LjUgMy4xIDcuNSA3djQyeicpKTtcbmV4cG9ydHMuRGluZ3RhbGtDaXJjbGVGaWxsID0gZ2V0SWNvbignZGluZ3RhbGstY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0yMjcgMzg1LjNjLTEgNC4yLTMuNSAxMC40LTcgMTcuOGguMWwtLjQuN2MtMjAuMyA0My4xLTczLjEgMTI3LjctNzMuMSAxMjcuN3MtLjEtLjItLjMtLjVsLTE1LjUgMjYuOGg3NC41TDU3NS4xIDgxMGwzMi4zLTEyOGgtNTguNmwyMC40LTg0LjdjLTE2LjUgMy45LTM1LjkgOS40LTU5IDE2LjggMCAwLTMxLjIgMTguMi04OS45LTM1IDAgMC0zOS42LTM0LjctMTYuNi00My40IDkuOC0zLjcgNDcuNC04LjQgNzctMTIuMyA0MC01LjQgNjQuNi04LjIgNjQuNi04LjJTNDIyIDUxNyAzOTIuNyA1MTIuNWMtMjkuMy00LjYtNjYuNC01My4xLTc0LjMtOTUuOCAwIDAtMTIuMi0yMy40IDI2LjMtMTIuMyAzOC41IDExLjEgMTk3LjkgNDMuMiAxOTcuOSA0My4ycy0yMDcuNC02My4zLTIyMS4yLTc4LjdjLTEzLjgtMTUuNC00MC42LTg0LjItMzcuMS0xMjYuNSAwIDAgMS41LTEwLjUgMTIuNC03LjcgMCAwIDE1My4zIDY5LjcgMjU4LjEgMTA3LjkgMTA0LjggMzcuOSAxOTUuOSA1Ny4zIDE4NC4yIDEwNi43eicpKTtcbmV4cG9ydHMuRGF0YWJhc2VGaWxsID0gZ2V0SWNvbignZGF0YWJhc2UnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODMyIDY0SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MjI0aDcwNFY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDIzMmMtMjIuMSAwLTQwLTE3LjktNDAtNDBzMTcuOS00MCA0MC00MCA0MCAxNy45IDQwIDQwLTE3LjkgNDAtNDAgNDB6TTE2MCA5MjhjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjcwNEgxNjB2MjI0em0xMjgtMTM2YzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwLTQwLTE3LjktNDAtNDAgMTcuOS00MCA0MC00MHpNMTYwIDY0MGg3MDRWMzg0SDE2MHYyNTZ6bTEyOC0xNjhjMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDAtNDAtMTcuOS00MC00MCAxNy45LTQwIDQwLTQweicpKTtcbmV4cG9ydHMuRGluZ3RhbGtTcXVhcmVGaWxsID0gZ2V0SWNvbignZGluZ3RhbGstc3F1YXJlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNzM5IDQ0OS4zYy0xIDQuMi0zLjUgMTAuNC03IDE3LjhoLjFsLS40LjdjLTIwLjMgNDMuMS03My4xIDEyNy43LTczLjEgMTI3LjdzLS4xLS4yLS4zLS41bC0xNS41IDI2LjhoNzQuNUw1NzUuMSA4MTBsMzIuMy0xMjhoLTU4LjZsMjAuNC04NC43Yy0xNi41IDMuOS0zNS45IDkuNC01OSAxNi44IDAgMC0zMS4yIDE4LjItODkuOS0zNSAwIDAtMzkuNi0zNC43LTE2LjYtNDMuNCA5LjgtMy43IDQ3LjQtOC40IDc3LTEyLjMgNDAtNS40IDY0LjYtOC4yIDY0LjYtOC4yUzQyMiA1MTcgMzkyLjcgNTEyLjVjLTI5LjMtNC42LTY2LjQtNTMuMS03NC4zLTk1LjggMCAwLTEyLjItMjMuNCAyNi4zLTEyLjMgMzguNSAxMS4xIDE5Ny45IDQzLjIgMTk3LjkgNDMuMnMtMjA3LjQtNjMuMy0yMjEuMi03OC43Yy0xMy44LTE1LjQtNDAuNi04NC4yLTM3LjEtMTI2LjUgMCAwIDEuNS0xMC41IDEyLjQtNy43IDAgMCAxNTMuMyA2OS43IDI1OC4xIDEwNy45IDEwNC44IDM3LjkgMTk1LjkgNTcuMyAxODQuMiAxMDYuN3onKSk7XG5leHBvcnRzLkRpc2xpa2VGaWxsID0gZ2V0SWNvbignZGlzbGlrZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODUuOSA0OTAuM2MzLjYtMTIgNS40LTI0LjQgNS40LTM3IDAtMjguMy05LjMtNTUuNS0yNi4xLTc3LjcgMy42LTEyIDUuNC0yNC40IDUuNC0zNyAwLTI4LjMtOS4zLTU1LjUtMjYuMS03Ny43IDMuNi0xMiA1LjQtMjQuNCA1LjQtMzcgMC01MS42LTMwLjctOTguMS03OC4zLTExOC40YTY2LjEgNjYuMSAwIDAgMC0yNi41LTUuNEgyNzN2NDI4aC4zbDg1LjggMzEwLjhDMzcyLjkgODg5IDQxOC45IDkyNCA0NzAuOSA5MjRjMjkuNyAwIDU3LjQtMTEuOCA3Ny45LTMzLjQgMjAuNS0yMS41IDMxLTQ5LjcgMjkuNS03OS40bC02LTEyMi45aDIzOS45YzEyLjEgMCAyMy45LTMuMiAzNC4zLTkuMyA0MC40LTIzLjUgNjUuNS02Ni4xIDY1LjUtMTExIDAtMjguMy05LjMtNTUuNS0yNi4xLTc3Ljd6TTExMiAxMzJ2MzY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY1VjEwMGgtNjVjLTE3LjcgMC0zMiAxNC4zLTMyIDMyeicpKTtcbmV4cG9ydHMuRG9sbGFyQ2lyY2xlRmlsbCA9IGdldEljb24oJ2RvbGxhci1jaXJjbGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTIyLjMgNjY1LjJsLjIgMzEuN2MwIDQuNC0zLjYgOC4xLTggOC4xaC0yOC40Yy00LjQgMC04LTMuNi04LTh2LTMxLjRDNDAxLjMgNzIzIDM1OS41IDY3Mi40IDM1NSA2MTcuNGMtLjQtNC43IDMuMy04LjcgOC04LjdoNDYuMmMzLjkgMCA3LjMgMi44IDcuOSA2LjYgNS4xIDMxLjcgMjkuOCA1NS40IDc0LjEgNjEuM1Y1MzMuOWwtMjQuNy02LjNjLTUyLjMtMTIuNS0xMDIuMS00NS4xLTEwMi4xLTExMi43IDAtNzIuOSA1NS40LTExMi4xIDEyNi4yLTExOXYtMzNjMC00LjQgMy42LTggOC04aDI4LjFjNC40IDAgOCAzLjYgOCA4djMyLjdjNjguNSA2LjkgMTE5LjkgNDYuOSAxMjUuOSAxMDkuMi41IDQuNy0zLjIgOC44LTggOC44aC00NC45Yy00IDAtNy40LTMtNy45LTYuOS00LTI5LjItMjcuNC01My02NS41LTU4LjJ2MTM0LjNsMjUuNCA1LjljNjQuOCAxNiAxMDguOSA0NyAxMDguOSAxMTYuNCAwIDc1LjMtNTYgMTE3LjMtMTM0LjMgMTI0LjF6TTQyNi42IDQxMC4zYzAgMjUuNCAxNS43IDQ1LjEgNDkuNSA1Ny4zIDQuNyAxLjkgOS40IDMuNCAxNSA1di0xMjRjLTM2LjkgNC43LTY0LjUgMjUuNC02NC41IDYxLjd6bTExNi41IDEzNS4yYy0yLjgtLjYtNS42LTEuMy04LjgtMi4yVjY3N2M0Mi42LTMuOCA3Mi0yNy4yIDcyLTY2LjQgMC0zMC43LTE1LjktNTAuNy02My4yLTY1LjF6JykpO1xuZXhwb3J0cy5Eb3duQ2lyY2xlRmlsbCA9IGdldEljb24oJ2Rvd24tY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0xODQuNSAzNTMuN2wtMTc4IDI0NmE3Ljk1IDcuOTUgMCAwIDEtMTIuOSAwbC0xNzgtMjQ2Yy0zLjgtNS4zIDAtMTIuNyA2LjUtMTIuN0gzODFjMTAuMiAwIDE5LjkgNC45IDI1LjkgMTMuMkw1MTIgNTYzLjZsMTA1LjItMTQ1LjRjNi04LjMgMTUuNi0xMy4yIDI1LjktMTMuMkg2OTBjNi41IDAgMTAuMyA3LjQgNi41IDEyLjd6JykpO1xuZXhwb3J0cy5Eb3duU3F1YXJlRmlsbCA9IGdldEljb24oJ2Rvd24tc3F1YXJlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNjk2LjUgNDEyLjdsLTE3OCAyNDZhNy45NSA3Ljk1IDAgMCAxLTEyLjkgMGwtMTc4LTI0NmMtMy44LTUuMyAwLTEyLjcgNi41LTEyLjdIMzgxYzEwLjIgMCAxOS45IDQuOSAyNS45IDEzLjJMNTEyIDU1OC42bDEwNS4yLTE0NS40YzYtOC4zIDE1LjYtMTMuMiAyNS45LTEzLjJINjkwYzYuNSAwIDEwLjMgNy40IDYuNSAxMi43eicpKTtcbmV4cG9ydHMuRHJpYmJibGVDaXJjbGVGaWxsID0gZ2V0SWNvbignZHJpYmJibGUtY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTY3NS4xIDMyOC4zYTI0NS4yIDI0NS4yIDAgMCAwLTIyMC44LTU1LjFjNi44IDkuMSA1MS41IDY5LjkgOTEuOCAxNDQgODcuNS0zMi44IDEyNC41LTgyLjYgMTI5LTg4Ljl6TTU1NCA1NTIuOGMtMTM4LjcgNDguMy0xODguNiAxNDQuNi0xOTMgMTUzLjYgNDEuNyAzMi41IDk0LjEgNTEuOSAxNTEgNTEuOSAzNC4xIDAgNjYuNi02LjkgOTYuMS0xOS41LTMuNy0yMS42LTE3LjktOTYuOC01Mi41LTE4Ni42bC0xLjYuNnptNDcuNy0xMS45YzMyLjIgODguNCA0NS4zIDE2MC40IDQ3LjggMTc1LjQgNTUuMi0zNy4zIDk0LjUtOTYuNCAxMDUuNC0xNjQuOS04LjQtMi42LTc2LjEtMjIuOC0xNTMuMi0xMC41ek01MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA3MzZjLTE1OC44IDAtMjg4LTEyOS4yLTI4OC0yODhzMTI5LjItMjg4IDI4OC0yODggMjg4IDEyOS4yIDI4OCAyODgtMTI5LjIgMjg4LTI4OCAyODh6bTUzLjEtMzQ2LjJjNS43IDExLjcgMTEuMiAyMy42IDE2LjMgMzUuNiAxLjggNC4yIDMuNiA4LjQgNS4zIDEyLjcgODEuOC0xMC4zIDE2My4yIDYuMiAxNzEuMyA3LjktLjUtNTguMS0yMS4zLTExMS40LTU1LjUtMTUzLjMtNS4zIDcuMS00Ni41IDYwLTEzNy40IDk3LjF6TTQ5OC42IDQzMmMtNDAuOC03Mi41LTg0LjctMTMzLjQtOTEuMi0xNDIuMy02OC44IDMyLjUtMTIwLjMgOTUuOS0xMzYuMiAxNzIuMiAxMSAuMiAxMTIuNC43IDIyNy40LTI5Ljl6bTMwLjYgODIuNWMzLjItMSA2LjQtMiA5LjctMi45LTYuMi0xNC0xMi45LTI4LTE5LjktNDEuNy0xMjIuOCAzNi44LTI0Mi4xIDM1LjItMjUyLjggMzUtLjEgMi41LS4xIDUtLjEgNy41IDAgNjMuMiAyMy45IDEyMC45IDYzLjIgMTY0LjUgNS41LTkuNiA3My0xMjEuNCAxOTkuOS0xNjIuNHonKSk7XG5leHBvcnRzLkRyaWJiYmxlU3F1YXJlRmlsbCA9IGdldEljb24oJ2RyaWJiYmxlLXNxdWFyZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ000OTguNiA0MzJjLTQwLjgtNzIuNS04NC43LTEzMy40LTkxLjItMTQyLjMtNjguOCAzMi41LTEyMC4zIDk1LjktMTM2LjIgMTcyLjIgMTEgLjIgMTEyLjQuNyAyMjcuNC0yOS45em02Ni41IDIxLjhjNS43IDExLjcgMTEuMiAyMy42IDE2LjMgMzUuNiAxLjggNC4yIDMuNiA4LjQgNS4zIDEyLjcgODEuOC0xMC4zIDE2My4yIDYuMiAxNzEuMyA3LjktLjUtNTguMS0yMS4zLTExMS40LTU1LjUtMTUzLjMtNS4zIDcuMS00Ni41IDYwLTEzNy40IDk3LjF6TTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNTEyIDgwMGMtMTU4LjggMC0yODgtMTI5LjItMjg4LTI4OHMxMjkuMi0yODggMjg4LTI4OCAyODggMTI5LjIgMjg4IDI4OC0xMjkuMiAyODgtMjg4IDI4OHptODkuNy0yNTkuMWMzMi4yIDg4LjQgNDUuMyAxNjAuNCA0Ny44IDE3NS40IDU1LjItMzcuMyA5NC41LTk2LjQgMTA1LjQtMTY0LjktOC40LTIuNi03Ni4xLTIyLjgtMTUzLjItMTAuNXptLTcyLjUtMjYuNGMzLjItMSA2LjQtMiA5LjctMi45LTYuMi0xNC0xMi45LTI4LTE5LjktNDEuNy0xMjIuOCAzNi44LTI0Mi4xIDM1LjItMjUyLjggMzUtLjEgMi41LS4xIDUtLjEgNy41IDAgNjMuMiAyMy45IDEyMC45IDYzLjIgMTY0LjUgNS41LTkuNiA3My0xMjEuNCAxOTkuOS0xNjIuNHptMTQ1LjktMTg2LjJhMjQ1LjIgMjQ1LjIgMCAwIDAtMjIwLjgtNTUuMWM2LjggOS4xIDUxLjUgNjkuOSA5MS44IDE0NCA4Ny41LTMyLjggMTI0LjUtODIuNiAxMjktODguOXpNNTU0IDU1Mi44Yy0xMzguNyA0OC4zLTE4OC42IDE0NC42LTE5MyAxNTMuNiA0MS43IDMyLjUgOTQuMSA1MS45IDE1MSA1MS45IDM0LjEgMCA2Ni42LTYuOSA5Ni4xLTE5LjUtMy43LTIxLjYtMTcuOS05Ni44LTUyLjUtMTg2LjZsLTEuNi42eicpKTtcbmV4cG9ydHMuRHJvcGJveENpcmNsZUZpbGwgPSBnZXRJY29uKCdkcm9wYm94LWNpcmNsZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ002NjMuOCA0NTUuNXptLTE1MS41LTkzLjhsLTE1MS44IDkzLjggMTUxLjggOTMuOSAxNTEuNS05My45ek01MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMTUxLjIgNTk1LjVMNTEyLjYgNzUwbC0xNTEtOTAuNXYtMzMuMWw0NS40IDI5LjQgMTA1LjYtODcuNyAxMDUuNiA4Ny43IDQ1LjEtMjkuNHYzMy4xem0tNDUuNi0yMi40bC0xMDUuMy04Ny43TDQwNyA2MzcuMWwtMTUxLTk5LjIgMTA0LjUtODIuNEwyNTYgMzcxLjIgNDA3IDI3NGwxMDUuMyA4Ny43TDYxNy42IDI3NCA3NjggMzcyLjFsLTEwNC4yIDgzLjVMNzY4IDUzOWwtMTUwLjQgOTguMXonKSk7XG5leHBvcnRzLkRyb3Bib3hTcXVhcmVGaWxsID0gZ2V0SWNvbignZHJvcGJveC1zcXVhcmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek02NjMuMiA2NTkuNUw1MTIuNiA3NTBsLTE1MS05MC41di0zMy4xbDQ1LjQgMjkuNCAxMDUuNi04Ny43IDEwNS42IDg3LjcgNDUuMS0yOS40djMzLjF6bS00NS42LTIyLjRsLTEwNS4zLTg3LjdMNDA3IDYzNy4xbC0xNTEtOTkuMiAxMDQuNS04Mi40TDI1NiAzNzEuMiA0MDcgMjc0bDEwNS4zIDg3LjdMNjE3LjYgMjc0IDc2OCAzNzIuMWwtMTA0LjIgODMuNUw3NjggNTM5bC0xNTAuNCA5OC4xek01MTIuMyAzNjEuN2wtMTUxLjggOTMuOCAxNTEuOCA5My45IDE1MS41LTkzLjl6bTE1MS41IDkzLjh6JykpO1xuZXhwb3J0cy5FbnZpcm9ubWVudEZpbGwgPSBnZXRJY29uKCdlbnZpcm9ubWVudCcsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgMzI3Yy0yOS45IDAtNTggMTEuNi03OS4yIDMyLjhBMTExLjYgMTExLjYgMCAwIDAgNDAwIDQzOWMwIDI5LjkgMTEuNyA1OCAzMi44IDc5LjJBMTExLjYgMTExLjYgMCAwIDAgNTEyIDU1MWMyOS45IDAgNTgtMTEuNyA3OS4yLTMyLjhDNjEyLjQgNDk3IDYyNCA0NjguOSA2MjQgNDM5YzAtMjkuOS0xMS42LTU4LTMyLjgtNzkuMlM1NDEuOSAzMjcgNTEyIDMyN3ptMzQyLjYtMzcuOWEzNjIuNDkgMzYyLjQ5IDAgMCAwLTc5LjktMTE1LjcgMzcwLjgzIDM3MC44MyAwIDAgMC0xMTguMi03Ny44QzYxMC43IDc2LjYgNTYyLjEgNjcgNTEyIDY3Yy01MC4xIDAtOTguNyA5LjYtMTQ0LjUgMjguNS00NC4zIDE4LjMtODQgNDQuNS0xMTguMiA3Ny44QTM2My42IDM2My42IDAgMCAwIDE2OS40IDI4OWMtMTkuNSA0NS0yOS40IDkyLjgtMjkuNCAxNDIgMCA3MC42IDE2LjkgMTQwLjkgNTAuMSAyMDguNyAyNi43IDU0LjUgNjQgMTA3LjYgMTExIDE1OC4xIDgwLjMgODYuMiAxNjQuNSAxMzguOSAxODguNCAxNTNhNDMuOSA0My45IDAgMCAwIDIyLjQgNi4xYzcuOCAwIDE1LjUtMiAyMi40LTYuMSAyMy45LTE0LjEgMTA4LjEtNjYuOCAxODguNC0xNTMgNDctNTAuNCA4NC4zLTEwMy42IDExMS0xNTguMUM4NjcuMSA1NzIgODg0IDUwMS44IDg4NCA0MzEuMWMwLTQ5LjItOS45LTk3LTI5LjQtMTQyek01MTIgNjE1Yy05Ny4yIDAtMTc2LTc4LjgtMTc2LTE3NnM3OC44LTE3NiAxNzYtMTc2IDE3NiA3OC44IDE3NiAxNzYtNzguOCAxNzYtMTc2IDE3NnonKSk7XG5leHBvcnRzLkVkaXRGaWxsID0gZ2V0SWNvbignZWRpdCcsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODAgODM2SDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzZjMCA0LjQgMy42IDggOCA4aDc4NGM0LjQgMCA4LTMuNiA4LTh2LTM2YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNjIyLjMtODRjMiAwIDQtLjIgNi0uNUw0MzEuOSA3MjJjMi0uNCAzLjktMS4zIDUuMy0yLjhsNDIzLjktNDIzLjlhOS45NiA5Ljk2IDAgMCAwIDAtMTQuMUw2OTQuOSAxMTQuOWMtMS45LTEuOS00LjQtMi45LTcuMS0yLjlzLTUuMiAxLTcuMSAyLjlMMjU2LjggNTM4LjhjLTEuNSAxLjUtMi40IDMuMy0yLjggNS4zbC0yOS41IDE2OC4yYTMzLjUgMzMuNSAwIDAgMCA5LjQgMjkuOGM2LjYgNi40IDE0LjkgOS45IDIzLjggOS45eicpKTtcbmV4cG9ydHMuRXhjbGFtYXRpb25DaXJjbGVGaWxsID0gZ2V0SWNvbignZXhjbGFtYXRpb24tY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0tMzIgMjMyYzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MjcyYzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOFYyOTZ6bTMyIDQ0MGE0OC4wMSA0OC4wMSAwIDAgMSAwLTk2IDQ4LjAxIDQ4LjAxIDAgMCAxIDAgOTZ6JykpO1xuZXhwb3J0cy5FdXJvQ2lyY2xlRmlsbCA9IGdldEljb24oJ2V1cm8tY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em02My41IDM3NS44YzQuNCAwIDggMy42IDggOFY0NzVjMCA0LjQtMy42IDgtOCA4aC0xMzZjLS4zIDQuNC0uMyA5LjEtLjMgMTMuOHYzNmgxMzYuMmM0LjQgMCA4IDMuNiA4IDhWNTY4YzAgNC40LTMuNiA4LTggOEg0NDQuOWMxNS4zIDYyIDYxLjMgOTguNiAxMjkuOCA5OC42IDE5LjkgMCAzNy4xLTEuMiA1MS44LTQuMSA0LjktMSA5LjUgMi44IDkuNSA3Ljh2NDIuOGMwIDMuOC0yLjcgNy02LjQgNy44LTE1LjkgMy40LTM0LjMgNS4xLTU1LjMgNS4xLTEwOS44IDAtMTgzLTU4LjgtMjAwLjItMTU4SDM0NGMtNC40IDAtOC0zLjYtOC04di0yNy4yYzAtNC40IDMuNi04IDgtOGgyNi4xdi0zNi45YzAtNC40IDAtOC44LjMtMTIuOEgzNDRjLTQuNCAwLTgtMy42LTgtOHYtMjcuMmMwLTQuNCAzLjYtOCA4LThoMzEuN2MxOS43LTk0LjIgOTItMTQ5LjkgMTk4LjYtMTQ5LjkgMjAuOSAwIDM5LjQgMS45IDU1LjMgNS40IDMuNy44IDYuMyA0IDYuMyA3LjhWMzQ2aC4xYzAgNS4xLTQuNiA4LjgtOS42IDcuOC0xNC43LTIuOS0zMS44LTQuNC01MS43LTQuNC02NS40IDAtMTEwLjQgMzMuNS0xMjcuNiA5MC40aDEyOC40eicpKTtcbmV4cG9ydHMuRXhwZXJpbWVudEZpbGwgPSBnZXRJY29uKCdleHBlcmltZW50JywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTIxOC45IDYzNi4zbDQyLjYgMjYuNmMuMS4xLjMuMi40LjNsMTIuNyA4IC4zLjNhMTg2LjkgMTg2LjkgMCAwIDAgOTQuMSAyNS4xYzQ0LjkgMCA4Ny4yLTE1LjcgMTIxLTQzLjhhMjU2LjI3IDI1Ni4yNyAwIDAgMSAxNjQuOS01OS45YzUyLjMgMCAxMDIuMiAxNS43IDE0NC42IDQ0LjVsNy45IDUtMTExLjYtMjg5VjE3OS44aDYzLjVjNC40IDAgOC0zLjYgOC04VjEyMGMwLTQuNC0zLjYtOC04LThIMjY0LjdjLTQuNCAwLTggMy42LTggOHY1MS45YzAgNC40IDMuNiA4IDggOGg2My41djE3My42TDIxOC45IDYzNi4zem0zMzMtMjAzLjFjMjIgMCAzOS45IDE3LjkgMzkuOSAzOS45UzU3My45IDUxMyA1NTEuOSA1MTMgNTEyIDQ5NS4xIDUxMiA0NzMuMXMxNy45LTM5LjkgMzkuOS0zOS45ek04NzggODI1LjFsLTI5LjktNzcuNC04NS43LTUzLjUtLjEuMWMtLjctLjUtMS41LTEtMi4yLTEuNWwtOC4xLTUtLjMtLjNjLTI5LTE3LjUtNjIuMy0yNi44LTk3LTI2LjgtNDQuOSAwLTg3LjIgMTUuNy0xMjEgNDMuOGEyNTYuMjcgMjU2LjI3IDAgMCAxLTE2NC45IDU5LjljLTUzIDAtMTAzLjUtMTYuMS0xNDYuMi00NS42bC0yOC45LTE4LjFMMTQ2IDgyNS4xYy0yLjggNy40LTQuMyAxNS4yLTQuMyAyMyAwIDM1LjIgMjguNiA2My44IDYzLjggNjMuOGg2MTIuOWM3LjkgMCAxNS43LTEuNSAyMy00LjNhNjMuNiA2My42IDAgMCAwIDM2LjYtODIuNXonKSk7XG5leHBvcnRzLkV5ZUludmlzaWJsZUZpbGwgPSBnZXRJY29uKCdleWUtaW52aXNpYmxlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUwOCA2MjRhMTEyIDExMiAwIDAgMCAxMTItMTEyYzAtMy4yOC0uMTUtNi41My0uNDMtOS43NEw0OTguMjYgNjIzLjU3YzMuMjEuMjggNi40NS40MyA5Ljc0LjQzem0zNzAuNzItNDU4LjQ0TDgzNiAxMjIuODhhOCA4IDAgMCAwLTExLjMxIDBMNzE1LjM3IDIzMi4yM1E2MjQuOTEgMTg2IDUxMiAxODZxLTI4OC4zIDAtNDMwLjIgMzAwLjNhNjAuMyA2MC4zIDAgMCAwIDAgNTEuNXE1Ni43IDExOS40MyAxMzYuNTUgMTkxLjQ1TDExMi41NiA4MzVhOCA4IDAgMCAwIDAgMTEuMzFMMTU1LjI1IDg4OWE4IDggMCAwIDAgMTEuMzEgMGw3MTIuMTYtNzEyLjEyYTggOCAwIDAgMCAwLTExLjMyek0zMzIgNTEyYTE3NiAxNzYgMCAwIDEgMjU4Ljg4LTE1NS4yOGwtNDguNjIgNDguNjJhMTEyLjA4IDExMi4wOCAwIDAgMC0xNDAuOTIgMTQwLjkybC00OC42MiA0OC42MkExNzUuMDkgMTc1LjA5IDAgMCAxIDMzMiA1MTJ6JywgJ005NDIuMiA0ODYuMlE4ODkuNCAzNzUgODE2LjUxIDMwNC44NUw2NzIuMzcgNDQ5QTE3Ni4wOCAxNzYuMDggMCAwIDEgNDQ1IDY3Ni4zN0wzMjIuNzQgNzk4LjYzUTQwNy44MiA4MzggNTEyIDgzOHEyODguMyAwIDQzMC4yLTMwMC4zYTYwLjI5IDYwLjI5IDAgMCAwIDAtNTEuNXonKSk7XG5leHBvcnRzLkV5ZUZpbGwgPSBnZXRJY29uKCdleWUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMzk2IDUxMmExMTIgMTEyIDAgMSAwIDIyNCAwIDExMiAxMTIgMCAxIDAtMjI0IDB6bTU0Ni4yLTI1LjhDODQ3LjQgMjg2LjUgNzA0LjEgMTg2IDUxMiAxODZjLTE5Mi4yIDAtMzM1LjQgMTAwLjUtNDMwLjIgMzAwLjNhNjAuMyA2MC4zIDAgMCAwIDAgNTEuNUMxNzYuNiA3MzcuNSAzMTkuOSA4MzggNTEyIDgzOGMxOTIuMiAwIDMzNS40LTEwMC41IDQzMC4yLTMwMC4zIDcuNy0xNi4yIDcuNy0zNSAwLTUxLjV6TTUwOCA2ODhjLTk3LjIgMC0xNzYtNzguOC0xNzYtMTc2czc4LjgtMTc2IDE3Ni0xNzYgMTc2IDc4LjggMTc2IDE3Ni03OC44IDE3Ni0xNzYgMTc2eicpKTtcbmV4cG9ydHMuRmFjZWJvb2tGaWxsID0gZ2V0SWNvbignZmFjZWJvb2snLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tOTIuNCAyMzMuNWgtNjMuOWMtNTAuMSAwLTU5LjggMjMuOC01OS44IDU4Ljh2NzcuMWgxMTkuNmwtMTUuNiAxMjAuN2gtMTA0VjkxMkg1MzkuMlY2MDIuMkg0MzQuOVY0ODEuNGgxMDQuM3YtODljMC0xMDMuMyA2My4xLTE1OS42IDE1NS4zLTE1OS42IDQ0LjIgMCA4Mi4xIDMuMyA5My4yIDQuOHYxMDcuOXonKSk7XG5leHBvcnRzLkZhc3RCYWNrd2FyZEZpbGwgPSBnZXRJY29uKCdmYXN0LWJhY2t3YXJkJywgZmlsbCwgZ2V0Tm9kZShub3JtYWxWaWV3Qm94LCAnTTUxNy42IDI3My41TDIzMC4yIDQ5OS4zYTE2LjE0IDE2LjE0IDAgMCAwIDAgMjUuNGwyODcuNCAyMjUuOGMxMC43IDguNCAyNi40LjggMjYuNC0xMi43VjI4Ni4yYzAtMTMuNS0xNS43LTIxLjEtMjYuNC0xMi43em0zMjAgMEw1NTAuMiA0OTkuM2ExNi4xNCAxNi4xNCAwIDAgMCAwIDI1LjRsMjg3LjQgMjI1LjhjMTAuNyA4LjQgMjYuNC44IDI2LjQtMTIuN1YyODYuMmMwLTEzLjUtMTUuNy0yMS4xLTI2LjQtMTIuN3ptLTYyMC0yNS41aC01MS4yYy0zLjUgMC02LjQgMi43LTYuNCA2djUxNmMwIDMuMyAyLjkgNiA2LjQgNmg1MS4yYzMuNSAwIDYuNC0yLjcgNi40LTZWMjU0YzAtMy4zLTIuOS02LTYuNC02eicpKTtcbmV4cG9ydHMuRmFzdEZvcndhcmRGaWxsID0gZ2V0SWNvbignZmFzdC1mb3J3YXJkJywgZmlsbCwgZ2V0Tm9kZShub3JtYWxWaWV3Qm94LCAnTTc5My44IDQ5OS4zTDUwNi40IDI3My41Yy0xMC43LTguNC0yNi40LS44LTI2LjQgMTIuN3Y0NTEuNmMwIDEzLjUgMTUuNyAyMS4xIDI2LjQgMTIuN2wyODcuNC0yMjUuOGExNi4xNCAxNi4xNCAwIDAgMCAwLTI1LjR6bS0zMjAgMEwxODYuNCAyNzMuNWMtMTAuNy04LjQtMjYuNC0uOC0yNi40IDEyLjd2NDUxLjVjMCAxMy41IDE1LjcgMjEuMSAyNi40IDEyLjdsMjg3LjQtMjI1LjhjNC4xLTMuMiA2LjItOCA2LjItMTIuNyAwLTQuNi0yLjEtOS40LTYuMi0xMi42ek04NTcuNiAyNDhoLTUxLjJjLTMuNSAwLTYuNCAyLjctNi40IDZ2NTE2YzAgMy4zIDIuOSA2IDYuNCA2aDUxLjJjMy41IDAgNi40LTIuNyA2LjQtNlYyNTRjMC0zLjMtMi45LTYtNi40LTZ6JykpO1xuZXhwb3J0cy5GaWxlQWRkRmlsbCA9IGdldEljb24oJ2ZpbGUtYWRkJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQ4MCA1ODBIMzcyYTggOCAwIDAgMC04IDh2NDhhOCA4IDAgMCAwIDggOGgxMDh2MTA4YTggOCAwIDAgMCA4IDhoNDhhOCA4IDAgMCAwIDgtOFY2NDRoMTA4YTggOCAwIDAgMCA4LTh2LTQ4YTggOCAwIDAgMC04LThINTQ0VjQ3MmE4IDggMCAwIDAtOC04aC00OGE4IDggMCAwIDAtOCA4djEwOHptMzc0LjYtMjkxLjNjNiA2IDkuNCAxNC4xIDkuNCAyMi42VjkyOGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDQyNC43YzguNSAwIDE2LjcgMy40IDIyLjcgOS40bDIxNS4yIDIxNS4zek03OTAuMiAzMjZMNjAyIDEzNy44VjMyNmgxODguMnonKSk7XG5leHBvcnRzLkZpbGVFeGNlbEZpbGwgPSBnZXRJY29uKCdmaWxlLWV4Y2VsJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1NC42IDI4OC43YzYgNiA5LjQgMTQuMSA5LjQgMjIuNlY5MjhjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg0MjQuN2M4LjUgMCAxNi43IDMuNCAyMi43IDkuNGwyMTUuMiAyMTUuM3pNNzkwLjIgMzI2TDYwMiAxMzcuOFYzMjZoMTg4LjJ6TTU3NS4zNCA0NzcuODRsLTYxLjIyIDEwMi4zTDQ1Mi4zIDQ3Ny44YTEyIDEyIDAgMCAwLTEwLjI3LTUuNzloLTM4LjQ0YTEyIDEyIDAgMCAwLTYuNCAxLjg1IDEyIDEyIDAgMCAwLTMuNzUgMTYuNTZsODIuMzQgMTMwLjQyLTgzLjQ1IDEzMi43OGExMiAxMiAwIDAgMC0xLjg0IDYuMzkgMTIgMTIgMCAwIDAgMTIgMTJoMzQuNDZhMTIgMTIgMCAwIDAgMTAuMjEtNS43bDYyLjctMTAxLjQ3IDYyLjMgMTAxLjQ1YTEyIDEyIDAgMCAwIDEwLjIzIDUuNzJoMzcuNDhhMTIgMTIgMCAwIDAgNi40OC0xLjkgMTIgMTIgMCAwIDAgMy42Mi0xNi41OGwtODMuODMtMTMwLjU1IDg1LjMtMTMyLjQ3YTEyIDEyIDAgMCAwIDEuOS02LjUgMTIgMTIgMCAwIDAtMTItMTJoLTM1LjdhMTIgMTIgMCAwIDAtMTAuMjkgNS44NHonKSk7XG5leHBvcnRzLkZpbGVFeGNsYW1hdGlvbkZpbGwgPSBnZXRJY29uKCdmaWxlLWV4Y2xhbWF0aW9uJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1NC42IDI4OC43YzYgNiA5LjQgMTQuMSA5LjQgMjIuNlY5MjhjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg0MjQuN2M4LjUgMCAxNi43IDMuNCAyMi43IDkuNGwyMTUuMiAyMTUuM3pNNzkwLjIgMzI2TDYwMiAxMzcuOFYzMjZoMTg4LjJ6TTUxMiA3ODRhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDAgMCAwIDgwem0zMi0xNTJWNDQ4YTggOCAwIDAgMC04LThoLTQ4YTggOCAwIDAgMC04IDh2MTg0YTggOCAwIDAgMCA4IDhoNDhhOCA4IDAgMCAwIDgtOHonKSk7XG5leHBvcnRzLkZpbGVJbWFnZUZpbGwgPSBnZXRJY29uKCdmaWxlLWltYWdlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1NC42IDI4OC43TDYzOS40IDczLjRjLTYtNi0xNC4yLTkuNC0yMi43LTkuNEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzExLjNjMC04LjUtMy40LTE2LjYtOS40LTIyLjZ6TTQwMCA0MDJjMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDAtNDAtMTcuOS00MC00MCAxNy45LTQwIDQwLTQwem0yOTYgMjk0SDMyOGMtNi43IDAtMTAuNC03LjctNi4zLTEyLjlsOTkuOC0xMjcuMmE4IDggMCAwIDEgMTIuNiAwbDQxLjEgNTIuNCA3Ny44LTk5LjJhOCA4IDAgMCAxIDEyLjYgMGwxMzYuNSAxNzRjNC4zIDUuMi41IDEyLjktNi4xIDEyLjl6bS05NC0zNzBWMTM3LjhMNzkwLjIgMzI2SDYwMnonKSk7XG5leHBvcnRzLkZpbGVNYXJrZG93bkZpbGwgPSBnZXRJY29uKCdmaWxlLW1hcmtkb3duJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1NC42IDI4OC43YzYgNiA5LjQgMTQuMSA5LjQgMjIuNlY5MjhjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg0MjQuN2M4LjUgMCAxNi43IDMuNCAyMi43IDkuNGwyMTUuMiAyMTUuM3pNNzkwLjIgMzI2TDYwMiAxMzcuOFYzMjZoMTg4LjJ6TTQyNi4xMyA2MDAuOTNsNTkuMTEgMTMyLjk3YTE2IDE2IDAgMCAwIDE0LjYyIDkuNWgyNC4wNmExNiAxNiAwIDAgMCAxNC42My05LjUxbDU5LjEtMTMzLjM1Vjc1OGExNiAxNiAwIDAgMCAxNi4wMSAxNkg2NDFhMTYgMTYgMCAwIDAgMTYtMTZWNDg2YTE2IDE2IDAgMCAwLTE2LTE2aC0zNC43NWExNiAxNiAwIDAgMC0xNC42NyA5LjYyTDUxMi4xIDY2Mi4ybC03OS40OC0xODIuNTlhMTYgMTYgMCAwIDAtMTQuNjctOS42MUgzODNhMTYgMTYgMCAwIDAtMTYgMTZ2MjcyYTE2IDE2IDAgMCAwIDE2IDE2aDI3LjEzYTE2IDE2IDAgMCAwIDE2LTE2VjYwMC45M3onKSk7XG5leHBvcnRzLkZpbGVQZGZGaWxsID0gZ2V0SWNvbignZmlsZS1wZGYnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODU0LjYgMjg4LjdjNiA2IDkuNCAxNC4xIDkuNCAyMi42VjkyOGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDQyNC43YzguNSAwIDE2LjcgMy40IDIyLjcgOS40bDIxNS4yIDIxNS4zek03OTAuMiAzMjZMNjAyIDEzNy44VjMyNmgxODguMnpNNjMzLjIyIDYzNy4yNmMtMTUuMTgtLjUtMzEuMzIuNjctNDkuNjUgMi45Ni0yNC4zLTE0Ljk5LTQwLjY2LTM1LjU4LTUyLjI4LTY1LjgzbDEuMDctNC4zOCAxLjI0LTUuMThjNC4zLTE4LjEzIDYuNjEtMzEuMzYgNy4zLTQ0LjcuNTItMTAuMDctLjA0LTE5LjM2LTEuODMtMjcuOTctMy4zLTE4LjU5LTE2LjQ1LTI5LjQ2LTMzLjAyLTMwLjEzLTE1LjQ1LS42My0yOS42NSA4LTMzLjI4IDIxLjM3LTUuOTEgMjEuNjItMi40NSA1MC4wNyAxMC4wOCA5OC41OS0xNS45NiAzOC4wNS0zNy4wNSA4Mi42Ni01MS4yIDEwNy41NC0xOC44OSA5Ljc0LTMzLjYgMTguNi00NS45NiAyOC40Mi0xNi4zIDEyLjk3LTI2LjQ4IDI2LjMtMjkuMjggNDAuMy0xLjM2IDYuNDkuNjkgMTQuOTcgNS4zNiAyMS45MiA1LjMgNy44OCAxMy4yOCAxMyAyMi44NSAxMy43NCAyNC4xNSAxLjg3IDUzLjgzLTIzLjAzIDg2LjYtNzkuMjYgMy4yOS0xLjEgNi43Ny0yLjI2IDExLjAyLTMuN2wxMS45LTQuMDJjNy41My0yLjU0IDEyLjk5LTQuMzYgMTguMzktNi4xMSAyMy40LTcuNjIgNDEuMS0xMi40MyA1Ny4yLTE1LjE3IDI3Ljk4IDE0Ljk4IDYwLjMyIDI0LjggODIuMSAyNC44IDE3Ljk4IDAgMzAuMTMtOS4zMiAzNC41Mi0yMy45OSAzLjg1LTEyLjg4LjgtMjcuODItNy40OC0zNi4wOC04LjU2LTguNDEtMjQuMy0xMi40My00NS42NS0xMy4xMnpNMzg1LjIzIDc2NS42OHYtLjM2bC4xMy0uMzRhNTQuODYgNTQuODYgMCAwIDEgNS42LTEwLjc2YzQuMjgtNi41OCAxMC4xNy0xMy41IDE3LjQ3LTIwLjg3IDMuOTItMy45NSA4LTcuOCAxMi43OS0xMi4xMiAxLjA3LS45NiA3LjkxLTcuMDUgOS4xOS04LjI1bDExLjE3LTEwLjQtOC4xMiAxMi45M2MtMTIuMzIgMTkuNjQtMjMuNDYgMzMuNzgtMzMgNDMtMy41MSAzLjQtNi42IDUuOS05LjEgNy41MWExNi40MyAxNi40MyAwIDAgMS0yLjYxIDEuNDJjLS40MS4xNy0uNzcuMjctMS4xMy4zYTIuMiAyLjIgMCAwIDEtMS4xMi0uMTUgMi4wNyAyLjA3IDAgMCAxLTEuMjctMS45MXpNNTExLjE3IDU0Ny40bC0yLjI2IDQtMS40LTQuMzhjLTMuMS05LjgzLTUuMzgtMjQuNjQtNi4wMS0zOC0uNzItMTUuMi40OS0yNC4zMiA1LjI5LTI0LjMyIDYuNzQgMCA5LjgzIDEwLjggMTAuMDcgMjcuMDUuMjIgMTQuMjgtMi4wMyAyOS4xNC01LjcgMzUuNjV6bS01LjgxIDU4LjQ2bDEuNTMtNC4wNSAyLjA5IDMuOGMxMS42OSAyMS4yNCAyNi44NiAzOC45NiA0My41NCA1MS4zMWwzLjYgMi42Ni00LjM5LjljLTE2LjMzIDMuMzgtMzEuNTQgOC40Ni01Mi4zNCAxNi44NSAyLjE3LS44OC0yMS42MiA4Ljg2LTI3LjY0IDExLjE3bC01LjI1IDIuMDEgMi44LTQuODhjMTIuMzUtMjEuNSAyMy43Ni00Ny4zMiAzNi4wNS03OS43N3ptMTU3LjYyIDc2LjI2Yy03Ljg2IDMuMS0yNC43OC4zMy01NC41Ny0xMi4zOWwtNy41Ni0zLjIyIDguMi0uNmMyMy4zLTEuNzMgMzkuOC0uNDUgNDkuNDIgMy4wNyA0LjEgMS41IDYuODMgMy4zOSA4LjA0IDUuNTVhNC42NCA0LjY0IDAgMCAxLTEuMzYgNi4zMSA2LjcgNi43IDAgMCAxLTIuMTcgMS4yOHonKSk7XG5leHBvcnRzLkZpbGVQcHRGaWxsID0gZ2V0SWNvbignZmlsZS1wcHQnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODU0LjYgMjg4LjdjNiA2IDkuNCAxNC4xIDkuNCAyMi42VjkyOGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDQyNC43YzguNSAwIDE2LjcgMy40IDIyLjcgOS40bDIxNS4yIDIxNS4zek03OTAuMiAzMjZMNjAyIDEzNy44VjMyNmgxODguMnpNNDY4LjUzIDc2MHYtOTEuNTRoNTkuMjdjNjAuNTcgMCAxMDAuMi0zOS42NSAxMDAuMi05OC4xMiAwLTU4LjIyLTM5LjU4LTk4LjM0LTk5Ljk4LTk4LjM0SDQyNGExMiAxMiAwIDAgMC0xMiAxMnYyNzZhMTIgMTIgMCAwIDAgMTIgMTJoMzIuNTNhMTIgMTIgMCAwIDAgMTItMTJ6bTAtMTM5LjMzaDM0LjljNDcuODIgMCA2Ny4xOS0xMi45MyA2Ny4xOS01MC4zMyAwLTMyLjA1LTE4LjEyLTUwLjEyLTQ5Ljg3LTUwLjEyaC01Mi4yMnYxMDAuNDV6JykpO1xuZXhwb3J0cy5GaWxlVGV4dEZpbGwgPSBnZXRJY29uKCdmaWxlLXRleHQnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODU0LjYgMjg4LjdjNiA2IDkuNCAxNC4xIDkuNCAyMi42VjkyOGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDQyNC43YzguNSAwIDE2LjcgMy40IDIyLjcgOS40bDIxNS4yIDIxNS4zek03OTAuMiAzMjZMNjAyIDEzNy44VjMyNmgxODguMnpNMzIwIDQ4MmE4IDggMCAwIDAtOCA4djQ4YTggOCAwIDAgMCA4IDhoMzg0YTggOCAwIDAgMCA4LTh2LTQ4YTggOCAwIDAgMC04LThIMzIwem0wIDEzNmE4IDggMCAwIDAtOCA4djQ4YTggOCAwIDAgMCA4IDhoMTg0YTggOCAwIDAgMCA4LTh2LTQ4YTggOCAwIDAgMC04LThIMzIweicpKTtcbmV4cG9ydHMuRmlsZVdvcmRGaWxsID0gZ2V0SWNvbignZmlsZS13b3JkJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1NC42IDI4OC43YzYgNiA5LjQgMTQuMSA5LjQgMjIuNlY5MjhjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg0MjQuN2M4LjUgMCAxNi43IDMuNCAyMi43IDkuNGwyMTUuMiAyMTUuM3pNNzkwLjIgMzI2TDYwMiAxMzcuOFYzMjZoMTg4LjJ6TTUxMiA1NjYuMWw1Mi44MSAxOTdhMTIgMTIgMCAwIDAgMTEuNiA4LjloMzEuNzdhMTIgMTIgMCAwIDAgMTEuNi04Ljg4bDc0LjM3LTI3NmExMiAxMiAwIDAgMCAuNC0zLjEyIDEyIDEyIDAgMCAwLTEyLTEyaC0zNS41N2ExMiAxMiAwIDAgMC0xMS43IDkuMzFsLTQ1Ljc4IDE5OS4xLTQ5Ljc2LTE5OS4zMkExMiAxMiAwIDAgMCA1MjguMSA0NzJoLTMyLjJhMTIgMTIgMCAwIDAtMTEuNjQgOS4xTDQzNC42IDY4MC4wMSAzODguNSA0ODEuM2ExMiAxMiAwIDAgMC0xMS42OC05LjI5aC0zNS4zOWExMiAxMiAwIDAgMC0zLjExLjQxIDEyIDEyIDAgMCAwLTguNDcgMTQuN2w3NC4xNyAyNzZBMTIgMTIgMCAwIDAgNDE1LjYgNzcyaDMxLjk5YTEyIDEyIDAgMCAwIDExLjU5LTguOWw1Mi44MS0xOTd6JykpO1xuZXhwb3J0cy5GaWxlVW5rbm93bkZpbGwgPSBnZXRJY29uKCdmaWxlLXVua25vd24nLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODU0LjYgMjg4LjdjNiA2IDkuNCAxNC4xIDkuNCAyMi42VjkyOGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDQyNC43YzguNSAwIDE2LjcgMy40IDIyLjcgOS40bDIxNS4yIDIxNS4zek03OTAuMiAzMjZMNjAyIDEzNy44VjMyNmgxODguMnpNNDAyIDU0OWMwIDUuNCA0LjQgOS41IDkuOCA5LjVoMzIuNGM1LjQgMCA5LjgtNC4yIDkuOC05LjQgMC0yOC4yIDI1LjgtNTEuNiA1OC01MS42czU4IDIzLjQgNTggNTEuNWMwIDI1LjMtMjEgNDcuMi00OS4zIDUwLjktMTkuMyAyLjgtMzQuNSAyMC4zLTM0LjcgNDAuMXYzMmMwIDUuNSA0LjUgMTAgMTAgMTBoMzJjNS41IDAgMTAtNC41IDEwLTEwdi0xMi4yYzAtNiA0LTExLjUgOS43LTEzLjMgNDQuNi0xNC40IDc1LTU0IDc0LjMtOTguOS0uOC01NS41LTQ5LjItMTAwLjgtMTA4LjUtMTAxLjYtNjEuNC0uNy0xMTEuNSA0NS42LTExMS41IDEwM3ptMTEwIDIyN2EzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMCAwIDAgNjR6JykpO1xuZXhwb3J0cy5GaWxlWmlwRmlsbCA9IGdldEljb24oJ2ZpbGUtemlwJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1NC42IDI4OC43YzYgNiA5LjQgMTQuMSA5LjQgMjIuNlY5MjhjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg0MjQuN2M4LjUgMCAxNi43IDMuNCAyMi43IDkuNGwyMTUuMiAyMTUuM3pNNzkwLjIgMzI2TDYwMiAxMzcuOFYzMjZoMTg4LjJ6TTI5NiAxMzZ2NjRoNjR2LTY0aC02NHptNjQgNjR2NjRoNjR2LTY0aC02NHptLTY0IDY0djY0aDY0di02NGgtNjR6bTY0IDY0djY0aDY0di02NGgtNjR6bS02NCA2NHY2NGg2NHYtNjRoLTY0em02NCA2NHY2NGg2NHYtNjRoLTY0em0tNjQgNjR2NjRoNjR2LTY0aC02NHptMCA2NHYxNjBoMTI4VjU4NEgyOTZ6bTQ4IDQ4aDMydjY0aC0zMnYtNjR6JykpO1xuZXhwb3J0cy5GaWxlRmlsbCA9IGdldEljb24oJ2ZpbGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODU0LjYgMjg4LjdjNiA2IDkuNCAxNC4xIDkuNCAyMi42VjkyOGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDQyNC43YzguNSAwIDE2LjcgMy40IDIyLjcgOS40bDIxNS4yIDIxNS4zek03OTAuMiAzMjZMNjAyIDEzNy44VjMyNmgxODguMnonKSk7XG5leHBvcnRzLkZpbHRlckZpbGwgPSBnZXRJY29uKCdmaWx0ZXInLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMzQ5IDgzOGMwIDE3LjcgMTQuMiAzMiAzMS44IDMyaDI2Mi40YzE3LjYgMCAzMS44LTE0LjMgMzEuOC0zMlY2NDJIMzQ5djE5NnptNTMxLjEtNjg0SDE0My45Yy0yNC41IDAtMzkuOCAyNi43LTI3LjUgNDhsMjIxLjMgMzc2aDM0OC44bDIyMS4zLTM3NmMxMi4xLTIxLjMtMy4yLTQ4LTI3LjctNDh6JykpO1xuZXhwb3J0cy5GaXJlRmlsbCA9IGdldEljb24oJ2ZpcmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODM0LjEgNDY5LjJBMzQ3LjQ5IDM0Ny40OSAwIDAgMCA3NTEuMiAzNTRsLTI5LjEtMjYuN2E4LjA5IDguMDkgMCAwIDAtMTMgMy4zbC0xMyAzNy4zYy04LjEgMjMuNC0yMyA0Ny4zLTQ0LjEgNzAuOC0xLjQgMS41LTMgMS45LTQuMSAyLTEuMS4xLTIuOC0uMS00LjMtMS41LTEuNC0xLjItMi4xLTMtMi00LjggMy43LTYwLjItMTQuMy0xMjguMS01My43LTIwMkM1NTUuMyAxNzEgNTEwIDEyMy4xIDQ1My40IDg5LjdsLTQxLjMtMjQuM2MtNS40LTMuMi0xMi4zIDEtMTIgNy4zbDIuMiA0OGMxLjUgMzIuOC0yLjMgNjEuOC0xMS4zIDg1LjktMTEgMjkuNS0yNi44IDU2LjktNDcgODEuNWEyOTUuNjQgMjk1LjY0IDAgMCAxLTQ3LjUgNDYuMSAzNTIuNiAzNTIuNiAwIDAgMC0xMDAuMyAxMjEuNUEzNDcuNzUgMzQ3Ljc1IDAgMCAwIDE2MCA2MTBjMCA0Ny4yIDkuMyA5Mi45IDI3LjcgMTM2YTM0OS40IDM0OS40IDAgMCAwIDc1LjUgMTEwLjljMzIuNCAzMiA3MCA1Ny4yIDExMS45IDc0LjdDNDE4LjUgOTQ5LjggNDY0LjUgOTU5IDUxMiA5NTlzOTMuNS05LjIgMTM2LjktMjcuM0EzNDguNiAzNDguNiAwIDAgMCA3NjAuOCA4NTdjMzIuNC0zMiA1Ny44LTY5LjQgNzUuNS0xMTAuOWEzNDQuMiAzNDQuMiAwIDAgMCAyNy43LTEzNmMwLTQ4LjgtMTAtOTYuMi0yOS45LTE0MC45eicpKTtcbmV4cG9ydHMuRmxhZ0ZpbGwgPSBnZXRJY29uKCdmbGFnJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAzMDVINjI0VjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMkgxODR2LTQwYzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY3ODRjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOFY2NDBoMjQ4djExM2MwIDE3LjcgMTQuMyAzMiAzMiAzMmg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzM3YzAtMTcuNy0xNC4zLTMyLTMyLTMyeicpKTtcbmV4cG9ydHMuRm9sZGVyQWRkRmlsbCA9IGdldEljb24oJ2ZvbGRlci1hZGQnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDI5OC40SDUyMUw0MDMuNyAxODYuMmE4LjE1IDguMTUgMCAwIDAtNS41LTIuMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjU5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzMwLjRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTYzMiA1NzdjMCAzLjgtMy40IDctNy41IDdINTQwdjg0LjljMCAzLjktMy4yIDcuMS03IDcuMWgtNDJjLTMuOCAwLTctMy4yLTctNy4xVjU4NGgtODQuNWMtNC4xIDAtNy41LTMuMi03LjUtN3YtNDJjMC0zLjggMy40LTcgNy41LTdINDg0di04NC45YzAtMy45IDMuMi03LjEgNy03LjFoNDJjMy44IDAgNyAzLjIgNyA3LjFWNTI4aDg0LjVjNC4xIDAgNy41IDMuMiA3LjUgN3Y0MnonKSk7XG5leHBvcnRzLkZvbGRlckZpbGwgPSBnZXRJY29uKCdmb2xkZXInLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDI5OC40SDUyMUw0MDMuNyAxODYuMmE4LjE1IDguMTUgMCAwIDAtNS41LTIuMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjU5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzMwLjRjMC0xNy43LTE0LjMtMzItMzItMzJ6JykpO1xuZXhwb3J0cy5Gb2xkZXJPcGVuRmlsbCA9IGdldEljb24oJ2ZvbGRlci1vcGVuJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkyOCA0NDRIODIwVjMzMC40YzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ3M0wzNTUuNyAxODYuMmE4LjE1IDguMTUgMCAwIDAtNS41LTIuMkg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY5OGMxMyAwIDI0LjgtNy45IDI5LjctMjBsMTM0LTMzMmMxLjUtMy44IDIuMy03LjkgMi4zLTEyIDAtMTcuNy0xNC4zLTMyLTMyLTMyem0tMTgwIDBIMjM4Yy0xMyAwLTI0LjggNy45LTI5LjcgMjBMMTM2IDY0My4yVjI1NmgxODguNWwxMTkuNiAxMTQuNEg3NDhWNDQ0eicpKTtcbmV4cG9ydHMuRm9yd2FyZEZpbGwgPSBnZXRJY29uKCdmb3J3YXJkJywgZmlsbCwgZ2V0Tm9kZShub3JtYWxWaWV3Qm94LCAnTTgyNS44IDQ5OEw1MzguNCAyNDkuOWMtMTAuNy05LjItMjYuNC0uOS0yNi40IDE0djQ5Ni4zYzAgMTQuOSAxNS43IDIzLjIgMjYuNCAxNEw4MjUuOCA1MjZjOC4zLTcuMiA4LjMtMjAuOCAwLTI4em0tMzIwIDBMMjE4LjQgMjQ5LjljLTEwLjctOS4yLTI2LjQtLjktMjYuNCAxNHY0OTYuM2MwIDE0LjkgMTUuNyAyMy4yIDI2LjQgMTRMNTA1LjggNTI2YzQuMS0zLjYgNi4yLTguOCA2LjItMTQgMC01LjItMi4xLTEwLjQtNi4yLTE0eicpKTtcbmV4cG9ydHMuRnJvd25GaWxsID0gZ2V0SWNvbignZnJvd24nLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6TTI4OCA0MjFhNDguMDEgNDguMDEgMCAwIDEgOTYgMCA0OC4wMSA0OC4wMSAwIDAgMS05NiAwem0zNzYgMjcyaC00OC4xYy00LjIgMC03LjgtMy4yLTguMS03LjRDNjA0IDYzNi4xIDU2Mi41IDU5NyA1MTIgNTk3cy05Mi4xIDM5LjEtOTUuOCA4OC42Yy0uMyA0LjItMy45IDcuNC04LjEgNy40SDM2MGE4IDggMCAwIDEtOC04LjRjNC40LTg0LjMgNzQuNS0xNTEuNiAxNjAtMTUxLjZzMTU1LjYgNjcuMyAxNjAgMTUxLjZhOCA4IDAgMCAxLTggOC40em0yNC0yMjRhNDguMDEgNDguMDEgMCAwIDEgMC05NiA0OC4wMSA0OC4wMSAwIDAgMSAwIDk2eicpKTtcbmV4cG9ydHMuRnVuZEZpbGwgPSBnZXRJY29uKCdmdW5kJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkyNiAxNjRIOTRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4MzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tOTIuMyAxOTQuNGwtMjk3IDI5Ny4yYTguMDMgOC4wMyAwIDAgMS0xMS4zIDBMNDEwLjkgNTQxLjEgMjM4LjQgNzEzLjdhOC4wMyA4LjAzIDAgMCAxLTExLjMgMGwtMzYuOC0zNi44YTguMDMgOC4wMyAwIDAgMSAwLTExLjNsMjE0LjktMjE1YzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBMNTMxIDU2NWwyNTQuNS0yNTQuNmMzLjEtMy4xIDguMi0zLjEgMTEuMyAwbDM2LjggMzYuOGMzLjIgMyAzLjIgOC4xLjEgMTEuMnonKSk7XG5leHBvcnRzLkZ1bm5lbFBsb3RGaWxsID0gZ2V0SWNvbignZnVubmVsLXBsb3QnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMzM2LjcgNTg2aDM1MC42bDg0LjktMTQ4SDI1MS44em01NDMuNC00MzJIMTQzLjljLTI0LjUgMC0zOS44IDI2LjctMjcuNSA0OEwyMTUgMzc0aDU5NGw5OC43LTE3MmMxMi4yLTIxLjMtMy4xLTQ4LTI3LjYtNDh6TTM0OSA4MzhjMCAxNy43IDE0LjIgMzIgMzEuOCAzMmgyNjIuNGMxNy42IDAgMzEuOC0xNC4zIDMxLjgtMzJWNjUwSDM0OXYxODh6JykpO1xuZXhwb3J0cy5HaWZ0RmlsbCA9IGdldEljb24oJ2dpZnQnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMTYwIDg5NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyODZWNTUwSDE2MHYzNDR6bTM4NiAzMmgyODZjMTcuNyAwIDMyLTE0LjMgMzItMzJWNTUwSDU0NnYzNzZ6bTMzNC02MTZINzMyLjRjMTMuNi0yMS40IDIxLjYtNDYuOCAyMS42LTc0IDAtNzYuMS02MS45LTEzOC0xMzgtMTM4LTQxLjQgMC03OC43IDE4LjQtMTA0IDQ3LjQtMjUuMy0yOS02Mi42LTQ3LjQtMTA0LTQ3LjQtNzYuMSAwLTEzOCA2MS45LTEzOCAxMzggMCAyNy4yIDcuOSA1Mi42IDIxLjYgNzRIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYxNDBoMzY2VjMxMGg2OHYxNzJoMzY2VjM0MmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwMi00aC03MGMtMzguNiAwLTcwLTMxLjQtNzAtNzBzMzEuNC03MCA3MC03MCA3MCAzMS40IDcwIDcwdjcwem0xMzggMGgtNzB2LTcwYzAtMzguNiAzMS40LTcwIDcwLTcwczcwIDMxLjQgNzAgNzAtMzEuNCA3MC03MCA3MHonKSk7XG5leHBvcnRzLkdpdGh1YkZpbGwgPSBnZXRJY29uKCdnaXRodWInLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTExLjYgNzYuM0MyNjQuMyA3Ni4yIDY0IDI3Ni40IDY0IDUyMy41IDY0IDcxOC45IDE4OS4zIDg4NSAzNjMuOCA5NDZjMjMuNSA1LjkgMTkuOS0xMC44IDE5LjktMjIuMnYtNzcuNWMtMTM1LjcgMTUuOS0xNDEuMi03My45LTE1MC4zLTg4LjlDMjE1IDcyNiAxNzEuNSA3MTggMTg0LjUgNzAzYzMwLjktMTUuOSA2Mi40IDQgOTguOSA1Ny45IDI2LjQgMzkuMSA3Ny45IDMyLjUgMTA0IDI2IDUuNy0yMy41IDE3LjktNDQuNSAzNC43LTYwLjgtMTQwLjYtMjUuMi0xOTkuMi0xMTEtMTk5LjItMjEzIDAtNDkuNSAxNi4zLTk1IDQ4LjMtMTMxLjctMjAuNC02MC41IDEuOS0xMTIuMyA0LjktMTIwIDU4LjEtNS4yIDExOC41IDQxLjYgMTIzLjIgNDUuMyAzMy04LjkgNzAuNy0xMy42IDExMi45LTEzLjYgNDIuNCAwIDgwLjIgNC45IDExMy41IDEzLjkgMTEuMy04LjYgNjcuMy00OC44IDEyMS4zLTQzLjkgMi45IDcuNyAyNC43IDU4LjMgNS41IDExOCAzMi40IDM2LjggNDguOSA4Mi43IDQ4LjkgMTMyLjMgMCAxMDIuMi01OSAxODguMS0yMDAgMjEyLjlhMTI3LjUgMTI3LjUgMCAwIDEgMzguMSA5MXYxMTIuNWMuOCA5IDAgMTcuOSAxNSAxNy45IDE3Ny4xLTU5LjcgMzA0LjYtMjI3IDMwNC42LTQyNC4xIDAtMjQ3LjItMjAwLjQtNDQ3LjMtNDQ3LjUtNDQ3LjN6JykpO1xuZXhwb3J0cy5HaXRsYWJGaWxsID0gZ2V0SWNvbignZ2l0bGFiJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkxMC41IDU1My4ybC0xMDktMzcwLjhjLTYuOC0yMC40LTIzLjEtMzQuMS00NC45LTM0LjFzLTM5LjUgMTIuMy00Ni4zIDMyLjdsLTcyLjIgMjE1LjRIMzg2LjJMMzE0IDE4MS4xYy02LjgtMjAuNC0yNC41LTMyLjctNDYuMy0zMi43cy0zOS41IDEzLjYtNDQuOSAzNC4xTDExMy45IDU1My4yYy00LjEgMTMuNiAxLjQgMjguNiAxMi4zIDM2LjhsMzg1LjQgMjg5IDM4Ni43LTI4OWMxMC44LTguMSAxNi4zLTIzLjEgMTIuMi0zNi44eicpKTtcbmV4cG9ydHMuR29sZGVuRmlsbCA9IGdldEljb24oJ2dvbGRlbicsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MDUuOSA4MDYuN2wtNDAuMi0yNDhjLS42LTMuOS00LTYuNy03LjktNi43SDU5Ni4yYy0zLjkgMC03LjMgMi44LTcuOSA2LjdsLTQwLjIgMjQ4Yy0uMS40LS4xLjktLjEgMS4zIDAgNC40IDMuNiA4IDggOGgzNDJjLjQgMCAuOSAwIDEuMy0uMSA0LjMtLjcgNy4zLTQuOCA2LjYtOS4yem0tNDcwLjItMjQ4Yy0uNi0zLjktNC02LjctNy45LTYuN0gxNjYuMmMtMy45IDAtNy4zIDIuOC03LjkgNi43bC00MC4yIDI0OGMtLjEuNC0uMS45LS4xIDEuMyAwIDQuNCAzLjYgOCA4IDhoMzQyYy40IDAgLjkgMCAxLjMtLjEgNC40LS43IDcuMy00LjggNi42LTkuMmwtNDAuMi0yNDh6TTM0MiA0NzJoMzQyYy40IDAgLjkgMCAxLjMtLjEgNC40LS43IDcuMy00LjggNi42LTkuMmwtNDAuMi0yNDhjLS42LTMuOS00LTYuNy03LjktNi43SDM4Mi4yYy0zLjkgMC03LjMgMi44LTcuOSA2LjdsLTQwLjIgMjQ4Yy0uMS40LS4xLjktLjEgMS4zIDAgNC40IDMuNiA4IDggOHonKSk7XG5leHBvcnRzLkdvb2dsZUNpcmNsZUZpbGwgPSBnZXRJY29uKCdnb29nbGUtY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0xNjcgNjMzLjZDNjM4LjQgNzM1IDU4MyA3NTcgNTE2LjkgNzU3Yy05NS43IDAtMTc4LjUtNTQuOS0yMTguOC0xMzQuOUMyODEuNSA1ODkgMjcyIDU1MS42IDI3MiA1MTJzOS41LTc3IDI2LjEtMTEwLjFjNDAuMy04MC4xIDEyMy4xLTEzNSAyMTguOC0xMzUgNjYgMCAxMjEuNCAyNC4zIDE2My45IDYzLjhMNjEwLjYgNDAxYy0yNS40LTI0LjMtNTcuNy0zNi42LTkzLjYtMzYuNi02My44IDAtMTE3LjggNDMuMS0xMzcuMSAxMDEtNC45IDE0LjctNy43IDMwLjQtNy43IDQ2LjZzMi44IDMxLjkgNy43IDQ2LjZjMTkuMyA1Ny45IDczLjMgMTAxIDEzNyAxMDEgMzMgMCA2MS04LjcgODIuOS0yMy40IDI2LTE3LjQgNDMuMi00My4zIDQ4LjktNzRINTE2Ljl2LTk0LjhoMjMwLjdjMi45IDE2LjEgNC40IDMyLjggNC40IDUwLjEgMCA3NC43LTI2LjcgMTM3LjQtNzMgMTgwLjF6JykpO1xuZXhwb3J0cy5Hb29nbGVQbHVzQ2lyY2xlRmlsbCA9IGdldEljb24oJ2dvb2dsZS1wbHVzLWNpcmNsZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMzYuNSA1NTguOGMtNDMuOSA2MS44LTEzMi4xIDc5LjgtMjAwLjkgNTMuMy02OS0yNi4zLTExOC05OS4yLTExMi4xLTE3My41IDEuNS05MC45IDg1LjItMTcwLjYgMTc2LjEtMTY3LjUgNDMuNi0yIDg0LjYgMTYuOSAxMTggNDMuNi0xNC4zIDE2LjItMjkgMzEuOC00NC44IDQ2LjMtNDAuMS0yNy43LTk3LjItMzUuNi0xMzcuMy0zLjYtNTcuNCAzOS43LTYwIDEzMy40LTQuOCAxNzYuMSA1My43IDQ4LjcgMTU1LjIgMjQuNSAxNzAuMS01MC4xLTMzLjYtLjUtNjcuNCAwLTEwMS0xLjEtLjEtMjAuMS0uMi00MC4xLS4xLTYwLjIgNTYuMi0uMiAxMTIuNS0uMyAxNjguOC4yIDMuMyA0Ny4zLTMgOTcuNS0zMiAxMzYuNXpNNzkxIDUzNi41Yy0xNi44LjItMzMuNi4zLTUwLjQuNC0uMiAxNi44LS4zIDMzLjYtLjMgNTAuNEg2OTBjLS4yLTE2LjgtLjItMzMuNS0uMy01MC4zLTE2LjgtLjItMzMuNi0uMy01MC40LS41di01MC4xYzE2LjgtLjIgMzMuNi0uMyA1MC40LS4zLjEtMTYuOC4zLTMzLjYuNC01MC40aDUwLjJsLjMgNTAuNGMxNi44LjIgMzMuNi4yIDUwLjQuM3Y1MC4xeicpKTtcbmV4cG9ydHMuR29vZ2xlUGx1c1NxdWFyZUZpbGwgPSBnZXRJY29uKCdnb29nbGUtcGx1cy1zcXVhcmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek01NDguNSA2MjIuOGMtNDMuOSA2MS44LTEzMi4xIDc5LjgtMjAwLjkgNTMuMy02OS0yNi4zLTExOC05OS4yLTExMi4xLTE3My41IDEuNS05MC45IDg1LjItMTcwLjYgMTc2LjEtMTY3LjUgNDMuNi0yIDg0LjYgMTYuOSAxMTggNDMuNi0xNC4zIDE2LjItMjkgMzEuOC00NC44IDQ2LjMtNDAuMS0yNy43LTk3LjItMzUuNi0xMzcuMy0zLjYtNTcuNCAzOS43LTYwIDEzMy40LTQuOCAxNzYuMSA1My43IDQ4LjcgMTU1LjIgMjQuNSAxNzAuMS01MC4xLTMzLjYtLjUtNjcuNCAwLTEwMS0xLjEtLjEtMjAuMS0uMi00MC4xLS4xLTYwLjIgNTYuMi0uMiAxMTIuNS0uMyAxNjguOC4yIDMuMyA0Ny4zLTMgOTcuNS0zMiAxMzYuNXpNNzkxIDUzNi41Yy0xNi44LjItMzMuNi4zLTUwLjQuNC0uMiAxNi44LS4zIDMzLjYtLjMgNTAuNEg2OTBjLS4yLTE2LjgtLjItMzMuNS0uMy01MC4zLTE2LjgtLjItMzMuNi0uMy01MC40LS41di01MC4xYzE2LjgtLjIgMzMuNi0uMyA1MC40LS4zLjEtMTYuOC4zLTMzLjYuNC01MC40aDUwLjJsLjMgNTAuNGMxNi44LjIgMzMuNi4yIDUwLjQuM3Y1MC4xeicpKTtcbmV4cG9ydHMuR29vZ2xlU3F1YXJlRmlsbCA9IGdldEljb24oJ2dvb2dsZS1zcXVhcmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek02NzkgNjk3LjZDNjM4LjQgNzM1IDU4MyA3NTcgNTE2LjkgNzU3Yy05NS43IDAtMTc4LjUtNTQuOS0yMTguOC0xMzQuOUEyNDUuMDIgMjQ1LjAyIDAgMCAxIDI3MiA1MTJjMC0zOS42IDkuNS03NyAyNi4xLTExMC4xIDQwLjMtODAuMSAxMjMuMS0xMzUgMjE4LjgtMTM1IDY2IDAgMTIxLjQgMjQuMyAxNjMuOSA2My44TDYxMC42IDQwMWMtMjUuNC0yNC4zLTU3LjctMzYuNi05My42LTM2LjYtNjMuOCAwLTExNy44IDQzLjEtMTM3LjEgMTAxLTQuOSAxNC43LTcuNyAzMC40LTcuNyA0Ni42czIuOCAzMS45IDcuNyA0Ni42YzE5LjMgNTcuOSA3My4zIDEwMSAxMzcgMTAxIDMzIDAgNjEtOC43IDgyLjktMjMuNCAyNi0xNy40IDQzLjItNDMuMyA0OC45LTc0SDUxNi45di05NC44aDIzMC43YzIuOSAxNi4xIDQuNCAzMi44IDQuNCA1MC4xIDAgNzQuNy0yNi43IDEzNy40LTczIDE4MC4xeicpKTtcbmV4cG9ydHMuSGRkRmlsbCA9IGdldEljb24oJ2hkZCcsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004MzIgNjRIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYyMjRoNzA0Vjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyek00NTYgMjE2YzAgNC40LTMuNiA4LTggOEgyNjRjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDE4NGM0LjQgMCA4IDMuNiA4IDh2NDh6TTE2MCA5MjhjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjcwNEgxNjB2MjI0em01NzYtMTM2YzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwLTQwLTE3LjktNDAtNDAgMTcuOS00MCA0MC00MHpNMTYwIDY0MGg3MDRWMzg0SDE2MHYyNTZ6bTk2LTE1MmMwLTQuNCAzLjYtOCA4LThoMTg0YzQuNCAwIDggMy42IDggOHY0OGMwIDQuNC0zLjYgOC04IDhIMjY0Yy00LjQgMC04LTMuNi04LTh2LTQ4eicpKTtcbmV4cG9ydHMuSGVhcnRGaWxsID0gZ2V0SWNvbignaGVhcnQnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTIzIDI4My42YTI2MC4wNCAyNjAuMDQgMCAwIDAtNTYuOS04Mi44IDI2NC40IDI2NC40IDAgMCAwLTg0LTU1LjVBMjY1LjM0IDI2NS4zNCAwIDAgMCA2NzkuNyAxMjVjLTQ5LjMgMC05Ny40IDEzLjUtMTM5LjIgMzktMTAgNi4xLTE5LjUgMTIuOC0yOC41IDIwLjEtOS03LjMtMTguNS0xNC0yOC41LTIwLjEtNDEuOC0yNS41LTg5LjktMzktMTM5LjItMzktMzUuNSAwLTY5LjkgNi44LTEwMi40IDIwLjMtMzEuNCAxMy01OS43IDMxLjctODQgNTUuNWEyNTguNDQgMjU4LjQ0IDAgMCAwLTU2LjkgODIuOGMtMTMuOSAzMi4zLTIxIDY2LjYtMjEgMTAxLjkgMCAzMy4zIDYuOCA2OCAyMC4zIDEwMy4zIDExLjMgMjkuNSAyNy41IDYwLjEgNDguMiA5MSAzMi44IDQ4LjkgNzcuOSA5OS45IDEzMy45IDE1MS42IDkyLjggODUuNyAxODQuNyAxNDQuOSAxODguNiAxNDcuM2wyMy43IDE1LjJjMTAuNSA2LjcgMjQgNi43IDM0LjUgMGwyMy43LTE1LjJjMy45LTIuNSA5NS43LTYxLjYgMTg4LjYtMTQ3LjMgNTYtNTEuNyAxMDEuMS0xMDIuNyAxMzMuOS0xNTEuNiAyMC43LTMwLjkgMzctNjEuNSA0OC4yLTkxIDEzLjUtMzUuMyAyMC4zLTcwIDIwLjMtMTAzLjMuMS0zNS4zLTctNjkuNi0yMC45LTEwMS45eicpKTtcbmV4cG9ydHMuSGlnaGxpZ2h0RmlsbCA9IGdldEljb24oJ2hpZ2hsaWdodCcsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ005NTcuNiA1MDcuNEw2MDMuMiAxNTguMmE3LjkgNy45IDAgMCAwLTExLjIgMEwzNTMuMyAzOTMuNGE4LjAzIDguMDMgMCAwIDAtLjEgMTEuM2wuMS4xIDQwIDM5LjQtMTE3LjIgMTE1LjNhOC4wMyA4LjAzIDAgMCAwLS4xIDExLjNsLjEuMSAzOS41IDM4LjktMTg5LjEgMTg3SDcyLjFjLTQuNCAwLTguMSAzLjYtOC4xIDhWODYwYzAgNC40IDMuNiA4IDggOGgzNDQuOWMyLjEgMCA0LjEtLjggNS42LTIuM2w3Ni4xLTc1LjYgNDAuNCAzOS44YTcuOSA3LjkgMCAwIDAgMTEuMiAwbDExNy4xLTExNS42IDQwLjEgMzkuNWE3LjkgNy45IDAgMCAwIDExLjIgMGwyMzguNy0yMzUuMmMzLjQtMyAzLjQtOCAuMy0xMS4yeicpKTtcbmV4cG9ydHMuSG9tZUZpbGwgPSBnZXRJY29uKCdob21lJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTk0Ni41IDUwNUw1MzQuNiA5My40YTMxLjkzIDMxLjkzIDAgMCAwLTQ1LjIgMEw3Ny41IDUwNWMtMTIgMTItMTguOCAyOC4zLTE4LjggNDUuMyAwIDM1LjMgMjguNyA2NCA2NCA2NGg0My40VjkwOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0NDhWNzE2aDExMnYyMjRoMjY1LjljMTcuNyAwIDMyLTE0LjMgMzItMzJWNjE0LjNoNDMuNGMxNyAwIDMzLjMtNi43IDQ1LjMtMTguOCAyNC45LTI1IDI0LjktNjUuNS0uMS05MC41eicpKTtcbmV4cG9ydHMuSG91cmdsYXNzRmlsbCA9IGdldEljb24oJ2hvdXJnbGFzcycsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ003NDIgMzE4VjE4NGg4NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOEgxOTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoODZ2MTM0YzAgODEuNSA0Mi40IDE1My4yIDEwNi40IDE5NC02NCA0MC44LTEwNi40IDExMi41LTEwNi40IDE5NHYxMzRoLTg2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDYzMmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtODZWNzA2YzAtODEuNS00Mi40LTE1My4yLTEwNi40LTE5NCA2NC00MC44IDEwNi40LTExMi41IDEwNi40LTE5NHonKSk7XG5leHBvcnRzLkh0bWw1RmlsbCA9IGdldEljb24oJ2h0bWw1JywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTE0NS4yIDk2bDY2IDc0Ni42TDUxMiA5MjhsMjk5LjYtODUuNEw4NzguOSA5NkgxNDUuMnptNTk1IDE3Ny4xbC00LjggNDcuMi0xLjcgMTkuNUgzODIuM2w4LjIgOTQuMmgzMzUuMWwtMy4zIDI0LjMtMjEuMiAyNDIuMi0xLjcgMTYuMi0xODcgNTEuNnYuM2gtMS4ybC0uMy4xdi0uMWgtLjFsLTE4OC42LTUyTDMxMC44IDU3Mmg5MS4xbDYuNSA3My4yIDEwMi40IDI3LjdoLjRsMTAyLTI3LjYgMTEuNC0xMTguNkg1MTAuOXYtLjFIMzA2bC0yMi44LTI1My41LTEuNy0yNC4zaDQ2MC4zbC0xLjYgMjQuM3onKSk7XG5leHBvcnRzLklkY2FyZEZpbGwgPSBnZXRJY29uKCdpZGNhcmQnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMzczIDQxMWMtMjguNSAwLTUxLjcgMjMuMy01MS43IDUyczIzLjIgNTIgNTEuNyA1MiA1MS43LTIzLjMgNTEuNy01Mi0yMy4yLTUyLTUxLjctNTJ6bTU1NS0yNTFIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4MzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek02MDggNDIwYzAtNC40IDEtOCAyLjMtOGgxMjMuNGMxLjMgMCAyLjMgMy42IDIuMyA4djQ4YzAgNC40LTEgOC0yLjMgOEg2MTAuM2MtMS4zIDAtMi4zLTMuNi0yLjMtOHYtNDh6bS04NiAyNTNoLTQzLjljLTQuMiAwLTcuNi0zLjMtNy45LTcuNS0zLjgtNTAuNS00Ni05MC41LTk3LjItOTAuNXMtOTMuNCA0MC05Ny4yIDkwLjVjLS4zIDQuMi0zLjcgNy41LTcuOSA3LjVIMjI0YTggOCAwIDAgMS04LTguNGMyLjgtNTMuMyAzMi05OS43IDc0LjYtMTI2LjFhMTExLjggMTExLjggMCAwIDEtMjkuMS03NS41YzAtNjEuOSA0OS45LTExMiAxMTEuNC0xMTJzMTExLjQgNTAuMSAxMTEuNCAxMTJjMCAyOS4xLTExIDU1LjUtMjkuMSA3NS41IDQyLjcgMjYuNSA3MS44IDcyLjggNzQuNiAxMjYuMS40IDQuNi0zLjIgOC40LTcuOCA4LjR6bTI3OC45LTUzSDYxNS4xYy0zLjkgMC03LjEtMy42LTcuMS04di00OGMwLTQuNCAzLjItOCA3LjEtOGgxODUuN2MzLjkgMCA3LjEgMy42IDcuMSA4djQ4aC4xYzAgNC40LTMuMiA4LTcuMSA4eicpKTtcbmV4cG9ydHMuSWVDaXJjbGVGaWxsID0gZ2V0SWNvbignaWUtY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTY5My42IDI4NC40Yy0yNCAwLTUxLjEgMTEuNy03Mi42IDIyIDQ2LjMgMTggODYgNTcuMyAxMTIuMyA5OS42IDcuMS0xOC45IDE0LjYtNDcuOSAxNC42LTY3LjkgMC0zMi0yMi44LTUzLjctNTQuMy01My43ek01MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMjUzLjkgNDkyLjlINDM3LjFjMCAxMDAuNCAxNDQuMyAxMzYgMTk2LjggNDcuNGgxMjAuOGMtMzIuNiA5MS43LTExOS43IDE0Ni0yMTYuOCAxNDYtMzUuMSAwLTcwLjMtLjEtMTAxLjctMTUuNi04Ny40IDQ0LjUtMTgwLjMgNTYuNi0xODAuMy00MiAwLTQ1LjggMjMuMi0xMDcuMSA0NC0xNDVDMzM1IDQ4NCAzODEuMyA0MjIuOCA0MzUuNiAzNzQuNWMtNDMuNyAxOC45LTkxLjEgNjYuMy0xMjIgMTAxLjIgMjUuOS0xMTIuOCAxMjkuNS0xOTMuNiAyMzcuMS0xODYuNSAxMzAtNTkuOCAyMDkuNy0zNC4xIDIwOS43IDM4LjYgMCAyNy40LTEwLjYgNjMuMy0yMS40IDg3LjkgMjUuMiA0NS41IDMzLjMgOTcuNiAyNi45IDE0MS4yek01NDAuNSAzOTkuMWMtNTMuNyAwLTEwMiAzOS43LTEwNCA5NC45aDIwOGMtMi01NS4xLTUwLjYtOTQuOS0xMDQtOTQuOXpNMzIwLjYgNjAyLjljLTczIDE1Mi40IDExLjUgMTcyLjIgMTAwLjMgMTIzLjMtNDYuNi0yNy41LTgyLjYtNzIuMi0xMDAuMy0xMjMuM3onKSk7XG5leHBvcnRzLkllU3F1YXJlRmlsbCA9IGdldEljb24oJ2llLXNxdWFyZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTc2NS45IDU1Ni45SDQzNy4xYzAgMTAwLjQgMTQ0LjMgMTM2IDE5Ni44IDQ3LjRoMTIwLjhjLTMyLjYgOTEuNy0xMTkuNyAxNDYtMjE2LjggMTQ2LTM1LjEgMC03MC4zLS4xLTEwMS43LTE1LjYtODcuNCA0NC41LTE4MC4zIDU2LjYtMTgwLjMtNDIgMC00NS44IDIzLjItMTA3LjEgNDQtMTQ1QzMzNSA0ODQgMzgxLjMgNDIyLjggNDM1LjYgMzc0LjVjLTQzLjcgMTguOS05MS4xIDY2LjMtMTIyIDEwMS4yIDI1LjktMTEyLjggMTI5LjUtMTkzLjYgMjM3LjEtMTg2LjUgMTMwLTU5LjggMjA5LjctMzQuMSAyMDkuNyAzOC42IDAgMjcuNC0xMC42IDYzLjMtMjEuNCA4Ny45IDI1LjIgNDUuNSAzMy4zIDk3LjYgMjYuOSAxNDEuMnptLTcyLjMtMjcyLjVjLTI0IDAtNTEuMSAxMS43LTcyLjYgMjIgNDYuMyAxOCA4NiA1Ny4zIDExMi4zIDk5LjYgNy4xLTE4LjkgMTQuNi00Ny45IDE0LjYtNjcuOSAwLTMyLTIyLjgtNTMuNy01NC4zLTUzLjd6TTU0MC41IDM5OS4xYy01My43IDAtMTAyIDM5LjctMTA0IDk0LjloMjA4Yy0yLTU1LjEtNTAuNi05NC45LTEwNC05NC45ek0zMjAuNiA2MDIuOWMtNzMgMTUyLjQgMTEuNSAxNzIuMiAxMDAuMyAxMjMuMy00Ni42LTI3LjUtODIuNi03Mi4yLTEwMC4zLTEyMy4zeicpKTtcbmV4cG9ydHMuSW5mb0NpcmNsZUZpbGwgPSBnZXRJY29uKCdpbmZvLWNpcmNsZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMzIgNjY0YzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOFY0NTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHYyNzJ6bS0zMi0zNDRhNDguMDEgNDguMDEgMCAwIDEgMC05NiA0OC4wMSA0OC4wMSAwIDAgMSAwIDk2eicpKTtcbmV4cG9ydHMuSW5zdGFncmFtRmlsbCA9IGdldEljb24oJ2luc3RhZ3JhbScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgMzc4LjdjLTczLjQgMC0xMzMuMyA1OS45LTEzMy4zIDEzMy4zUzQzOC42IDY0NS4zIDUxMiA2NDUuMyA2NDUuMyA1ODUuNCA2NDUuMyA1MTIgNTg1LjQgMzc4LjcgNTEyIDM3OC43ek05MTEuOCA1MTJjMC01NS4yLjUtMTA5LjktMi42LTE2NS0zLjEtNjQtMTcuNy0xMjAuOC02NC41LTE2Ny42LTQ2LjktNDYuOS0xMDMuNi02MS40LTE2Ny42LTY0LjUtNTUuMi0zLjEtMTA5LjktMi42LTE2NS0yLjYtNTUuMiAwLTEwOS45LS41LTE2NSAyLjYtNjQgMy4xLTEyMC44IDE3LjctMTY3LjYgNjQuNUMxMzIuNiAyMjYuMyAxMTguMSAyODMgMTE1IDM0N2MtMy4xIDU1LjItMi42IDEwOS45LTIuNiAxNjVzLS41IDEwOS45IDIuNiAxNjVjMy4xIDY0IDE3LjcgMTIwLjggNjQuNSAxNjcuNiA0Ni45IDQ2LjkgMTAzLjYgNjEuNCAxNjcuNiA2NC41IDU1LjIgMy4xIDEwOS45IDIuNiAxNjUgMi42IDU1LjIgMCAxMDkuOS41IDE2NS0yLjYgNjQtMy4xIDEyMC44LTE3LjcgMTY3LjYtNjQuNSA0Ni45LTQ2LjkgNjEuNC0xMDMuNiA2NC41LTE2Ny42IDMuMi01NS4xIDIuNi0xMDkuOCAyLjYtMTY1ek01MTIgNzE3LjFjLTExMy41IDAtMjA1LjEtOTEuNi0yMDUuMS0yMDUuMVMzOTguNSAzMDYuOSA1MTIgMzA2LjkgNzE3LjEgMzk4LjUgNzE3LjEgNTEyIDYyNS41IDcxNy4xIDUxMiA3MTcuMXptMjEzLjUtMzcwLjdjLTI2LjUgMC00Ny45LTIxLjQtNDcuOS00Ny45czIxLjQtNDcuOSA0Ny45LTQ3LjkgNDcuOSAyMS40IDQ3LjkgNDcuOWE0Ny44NCA0Ny44NCAwIDAgMS00Ny45IDQ3Ljl6JykpO1xuZXhwb3J0cy5JbnN1cmFuY2VGaWxsID0gZ2V0SWNvbignaW5zdXJhbmNlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxOS45IDM1OC44aDk3Ljl2NDEuNmgtOTcuOXptMzQ3LTE4OC45TDUyNy4xIDU0LjFDNTIzIDUyLjcgNTE3LjUgNTIgNTEyIDUycy0xMSAuNy0xNS4xIDIuMUwxNTcuMSAxNjkuOWMtOC4zIDIuOC0xNS4xIDEyLjQtMTUuMSAyMS4ydjQ4Mi40YzAgOC44IDUuNyAyMC40IDEyLjYgMjUuOUw0OTkuMyA5NjhjMy41IDIuNyA4IDQuMSAxMi42IDQuMXM5LjItMS40IDEyLjYtNC4xbDM0NC43LTI2OC42YzYuOS01LjQgMTIuNi0xNyAxMi42LTI1LjlWMTkxLjFjLjItOC44LTYuNi0xOC4zLTE0LjktMjEuMnpNNDExLjMgNjU2aC0uMmMwIDQuNC0zLjYgOC04IDhoLTM3LjNjLTQuNCAwLTgtMy42LTgtOFY0NzEuNGMtNy43IDkuMi0xNS40IDE3LjktMjMuMSAyNmE2LjA0IDYuMDQgMCAwIDEtMTAuMi0yLjRsLTEzLjItNDMuNWMtLjYtMi0uMi00LjEgMS4yLTUuNiAzNy00My40IDY0LjctOTUuMSA4Mi4yLTE1My42IDEuMS0zLjUgNS01LjMgOC40LTMuN2wzOC42IDE4LjNjMi43IDEuMyA0LjEgNC40IDMuMiA3LjJhNDI5LjIgNDI5LjIgMCAwIDEtMzMuNiA3OVY2NTZ6bTI5Ni41LTQ5LjJsLTI2LjMgMzUuM2E1LjkyIDUuOTIgMCAwIDEtOC45LjdjLTMwLjYtMjkuMy01Ni44LTY1LjItNzguMS0xMDYuOVY2NTZjMCA0LjQtMy42IDgtOCA4aC0zNi4yYy00LjQgMC04LTMuNi04LThWNTM2Yy0yMiA0NC43LTQ5IDgwLjgtODAuNiAxMDcuNmE1LjkgNS45IDAgMCAxLTguOS0xLjRMNDMwIDYwNS43YTYgNiAwIDAgMSAxLjYtOC4xYzI4LjYtMjAuMyA1MS45LTQ1LjIgNzEtNzZoLTU1LjFjLTQuNCAwLTgtMy42LTgtOFY0NzhjMC00LjQgMy42LTggOC04aDk0Ljl2LTE4LjZoLTY1LjljLTQuNCAwLTgtMy42LTgtOFYzMTZjMC00LjQgMy42LTggOC04aDE4NC43YzQuNCAwIDggMy42IDggOHYxMjcuMmMwIDQuNC0zLjYgOC04IDhoLTY2Ljd2MTguNmg5OC44YzQuNCAwIDggMy42IDggOHYzNS42YzAgNC40LTMuNiA4LTggOGgtNTljMTguMSAyOS4xIDQxLjggNTQuMyA3Mi4zIDc2LjkgMi42IDIuMSAzLjIgNS45IDEuMiA4LjV6JykpO1xuZXhwb3J0cy5JbnRlcmFjdGlvbkZpbGwgPSBnZXRJY29uKCdpbnRlcmFjdGlvbicsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTcyNiA1ODUuN2MwIDU1LjMtNDQuNyAxMDAuMS05OS43IDEwMC4xSDQyMC42djUzLjRjMCA1LjctNi41IDguOC0xMC45IDUuM2wtMTA5LjEtODUuN2MtMy41LTIuNy0zLjUtOCAwLTEwLjdsMTA5LjEtODUuN2M0LjQtMy41IDEwLjktLjMgMTAuOSA1LjN2NTMuNGgyMDUuN2MxOS42IDAgMzUuNS0xNiAzNS41LTM1LjZ2LTc4LjljMC0zLjcgMy02LjggNi44LTYuOGg1MC43YzMuNyAwIDYuOCAzIDYuOCA2Ljh2NzkuMXptLTIuNi0yMDkuOWwtMTA5LjEgODUuN2MtNC40IDMuNS0xMC45LjMtMTAuOS01LjN2LTUzLjRIMzk3LjdjLTE5LjYgMC0zNS41IDE2LTM1LjUgMzUuNnY3OC45YzAgMy43LTMgNi44LTYuOCA2LjhoLTUwLjdjLTMuNyAwLTYuOC0zLTYuOC02Ljh2LTc4LjljMC01NS4zIDQ0LjctMTAwLjEgOTkuNy0xMDAuMWgyMDUuN3YtNTMuNGMwLTUuNyA2LjUtOC44IDEwLjktNS4zbDEwOS4xIDg1LjdjMy42IDIuNSAzLjYgNy44LjEgMTAuNXonKSk7XG5leHBvcnRzLkludGVyYXRpb25GaWxsID0gZ2V0SWNvbignaW50ZXJhdGlvbicsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTcyNiA1ODUuN2MwIDU1LjMtNDQuNyAxMDAuMS05OS43IDEwMC4xSDQyMC42djUzLjRjMCA1LjctNi41IDguOC0xMC45IDUuM2wtMTA5LjEtODUuN2MtMy41LTIuNy0zLjUtOCAwLTEwLjdsMTA5LjEtODUuN2M0LjQtMy41IDEwLjktLjMgMTAuOSA1LjN2NTMuNGgyMDUuN2MxOS42IDAgMzUuNS0xNiAzNS41LTM1LjZ2LTc4LjljMC0zLjcgMy02LjggNi44LTYuOGg1MC43YzMuNyAwIDYuOCAzIDYuOCA2Ljh2NzkuMXptLTIuNi0yMDkuOWwtMTA5LjEgODUuN2MtNC40IDMuNS0xMC45LjMtMTAuOS01LjN2LTUzLjRIMzk3LjdjLTE5LjYgMC0zNS41IDE2LTM1LjUgMzUuNnY3OC45YzAgMy43LTMgNi44LTYuOCA2LjhoLTUwLjdjLTMuNyAwLTYuOC0zLTYuOC02Ljh2LTc4LjljMC01NS4zIDQ0LjctMTAwLjEgOTkuNy0xMDAuMWgyMDUuN3YtNTMuNGMwLTUuNyA2LjUtOC44IDEwLjktNS4zbDEwOS4xIDg1LjdjMy42IDIuNSAzLjYgNy44LjEgMTAuNXonKSk7XG5leHBvcnRzLkxheW91dEZpbGwgPSBnZXRJY29uKCdsYXlvdXQnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMzg0IDkxMmg0OTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzQwSDM4NHY1NzJ6bTQ5Ni04MDBIMzg0djE2NGg1MjhWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNzY4IDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxNzZWMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6JykpO1xuZXhwb3J0cy5MZWZ0Q2lyY2xlRmlsbCA9IGdldEljb24oJ2xlZnQtY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0xMDQgMzE2LjljMCAxMC4yLTQuOSAxOS45LTEzLjIgMjUuOUw0NTcuNCA1MTJsMTQ1LjQgMTA1LjJjOC4zIDYgMTMuMiAxNS42IDEzLjIgMjUuOVY2OTBjMCA2LjUtNy40IDEwLjMtMTIuNyA2LjVsLTI0Ni0xNzhhNy45NSA3Ljk1IDAgMCAxIDAtMTIuOWwyNDYtMTc4YTggOCAwIDAgMSAxMi43IDYuNXY0Ni44eicpKTtcbmV4cG9ydHMuTGVmdFNxdWFyZUZpbGwgPSBnZXRJY29uKCdsZWZ0LXNxdWFyZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTYyNCAzODAuOWMwIDEwLjItNC45IDE5LjktMTMuMiAyNS45TDQ2NS40IDUxMmwxNDUuNCAxMDUuMmM4LjMgNiAxMy4yIDE1LjYgMTMuMiAyNS45VjY5MGMwIDYuNS03LjQgMTAuMy0xMi43IDYuNWwtMjQ2LTE3OGE3Ljk1IDcuOTUgMCAwIDEgMC0xMi45bDI0Ni0xNzhjNS4zLTMuOCAxMi43IDAgMTIuNyA2LjV2NDYuOHonKSk7XG5leHBvcnRzLkxpa2VGaWxsID0gZ2V0SWNvbignbGlrZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODUuOSA1MzMuN2MxNi44LTIyLjIgMjYuMS00OS40IDI2LjEtNzcuNyAwLTQ0LjktMjUuMS04Ny40LTY1LjUtMTExLjFhNjcuNjcgNjcuNjcgMCAwIDAtMzQuMy05LjNINTcyLjRsNi0xMjIuOWMxLjQtMjkuNy05LjEtNTcuOS0yOS41LTc5LjRBMTA2LjYyIDEwNi42MiAwIDAgMCA0NzEgOTkuOWMtNTIgMC05OCAzNS0xMTEuOCA4NS4xbC04NS45IDMxMWgtLjN2NDI4aDQ3Mi4zYzkuMiAwIDE4LjItMS44IDI2LjUtNS40IDQ3LjYtMjAuMyA3OC4zLTY2LjggNzguMy0xMTguNCAwLTEyLjYtMS44LTI1LTUuNC0zNyAxNi44LTIyLjIgMjYuMS00OS40IDI2LjEtNzcuNyAwLTEyLjYtMS44LTI1LTUuNC0zNyAxNi44LTIyLjIgMjYuMS00OS40IDI2LjEtNzcuNy0uMi0xMi42LTItMjUuMS01LjYtMzcuMXpNMTEyIDUyOHYzNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjVWNDk2aC02NWMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6JykpO1xuZXhwb3J0cy5Mb2NrRmlsbCA9IGdldEljb24oJ2xvY2snLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODMyIDQ2NGgtNjhWMjQwYzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4SDM4OGMtNzAuNyAwLTEyOCA1Ny4zLTEyOCAxMjh2MjI0aC02OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2Mzg0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0MGMxNy43IDAgMzItMTQuMyAzMi0zMlY0OTZjMC0xNy43LTE0LjMtMzItMzItMzJ6TTU0MCA3MDF2NTNjMCA0LjQtMy42IDgtOCA4aC00MGMtNC40IDAtOC0zLjYtOC04di01M2E0OC4wMSA0OC4wMSAwIDEgMSA1NiAwem0xNTItMjM3SDMzMlYyNDBjMC0zMC45IDI1LjEtNTYgNTYtNTZoMjQ4YzMwLjkgMCA1NiAyNS4xIDU2IDU2djIyNHonKSk7XG5leHBvcnRzLkxpbmtlZGluRmlsbCA9IGdldEljb24oJ2xpbmtlZGluJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzQ5LjMgNzkzLjdIMjMwLjZWNDExLjloMTE4Ljd2MzgxLjh6bS01OS4zLTQzNGE2OC44IDY4LjggMCAxIDEgNjguOC02OC44Yy0uMSAzOC0zMC45IDY4LjgtNjguOCA2OC44em01MDMuNyA0MzRINjc1LjFWNjA4YzAtNDQuMy0uOC0xMDEuMi02MS43LTEwMS4yLTYxLjcgMC03MS4yIDQ4LjItNzEuMiA5OHYxODguOUg0MjMuN1Y0MTEuOWgxMTMuOHY1Mi4yaDEuNmMxNS44LTMwIDU0LjUtNjEuNyAxMTIuMy02MS43IDEyMC4yIDAgMTQyLjMgNzkuMSAxNDIuMyAxODEuOXYyMDkuNHonKSk7XG5leHBvcnRzLk1haWxGaWxsID0gZ2V0SWNvbignbWFpbCcsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MjggMTYwSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NDBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTgwLjggMTA4LjlMNTMxLjcgNTE0LjRjLTcuOCA2LjEtMTguNyA2LjEtMjYuNSAwTDE4OS42IDI2OC45QTcuMiA3LjIgMCAwIDEgMTk0IDI1Nmg2NDguOGE3LjIgNy4yIDAgMCAxIDQuNCAxMi45eicpKTtcbmV4cG9ydHMuTWVkaWNpbmVCb3hGaWxsID0gZ2V0SWNvbignbWVkaWNpbmUtYm94JywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTgzOS4yIDI3OC4xYTMyIDMyIDAgMCAwLTMwLjQtMjIuMUg3MzZWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTEyaC03Mi44YTMxLjkgMzEuOSAwIDAgMC0zMC40IDIyLjFMMTEyIDUwMnYzNzhjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjUwMmwtNzIuOC0yMjMuOXpNNjYwIDYyOGMwIDQuNC0zLjYgOC04IDhINTQ0djEwOGMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LThWNjM2SDM3MmMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoMTA4VjQ2NGMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djEwOGgxMDhjNC40IDAgOCAzLjYgOCA4djQ4em00LTM3MkgzNjB2LTcyaDMwNHY3MnonKSk7XG5leHBvcnRzLk1lZGl1bUNpcmNsZUZpbGwgPSBnZXRJY29uKCdtZWRpdW0tY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0yNTYgMjUzLjdsLTQwLjggMzkuMWMtMy42IDIuNy01LjMgNy4xLTQuNiAxMS40djI4Ny43Yy0uNyA0LjQgMSA4LjggNC42IDExLjRsNDAgMzkuMXY4LjdINTY2LjR2LTguM2w0MS4zLTQwLjFjNC4xLTQuMSA0LjEtNS4zIDQuMS0xMS40VjQyMi41bC0xMTUgMjkxLjZoLTE1LjVMMzQ3LjUgNDIyLjVWNjE4Yy0xLjIgOC4yIDEuNyAxNi41IDcuNSAyMi40bDUzLjggNjUuMXY4LjdIMjU2di04LjdsNTMuOC02NS4xYTI2LjEgMjYuMSAwIDAgMCA3LTIyLjRWMzkyYy43LTYuMy0xLjctMTIuNC02LjUtMTYuN2wtNDcuOC01Ny42VjMwOUg0MTFsMTE0LjYgMjUxLjUgMTAwLjktMjUxLjNINzY4djguNXonKSk7XG5leHBvcnRzLk1lZGl1bVNxdWFyZUZpbGwgPSBnZXRJY29uKCdtZWRpdW0tc3F1YXJlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNzY4IDMxNy43bC00MC44IDM5LjFjLTMuNiAyLjctNS4zIDcuMS00LjYgMTEuNHYyODcuN2MtLjcgNC40IDEgOC44IDQuNiAxMS40bDQwIDM5LjF2OC43SDU2Ni40di04LjNsNDEuMy00MC4xYzQuMS00LjEgNC4xLTUuMyA0LjEtMTEuNFY0MjIuNWwtMTE1IDI5MS42aC0xNS41TDM0Ny41IDQyMi41VjYxOGMtMS4yIDguMiAxLjcgMTYuNSA3LjUgMjIuNGw1My44IDY1LjF2OC43SDI1NnYtOC43bDUzLjgtNjUuMWEyNi4xIDI2LjEgMCAwIDAgNy0yMi40VjM5MmMuNy02LjMtMS43LTEyLjQtNi41LTE2LjdsLTQ3LjgtNTcuNlYzMDlINDExbDExNC42IDI1MS41IDEwMC45LTI1MS4zSDc2OHY4LjV6JykpO1xuZXhwb3J0cy5NZWhGaWxsID0gZ2V0SWNvbignbWVoJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0ek0yODggNDIxYTQ4LjAxIDQ4LjAxIDAgMCAxIDk2IDAgNDguMDEgNDguMDEgMCAwIDEtOTYgMHptMzg0IDIwMGMwIDQuNC0zLjYgOC04IDhIMzYwYy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGgzMDRjNC40IDAgOCAzLjYgOCA4djQ4em0xNi0xNTJhNDguMDEgNDguMDEgMCAwIDEgMC05NiA0OC4wMSA0OC4wMSAwIDAgMSAwIDk2eicpKTtcbmV4cG9ydHMuTWVzc2FnZUZpbGwgPSBnZXRJY29uKCdtZXNzYWdlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkyNC4zIDMzOC40YTQ0Ny41NyA0NDcuNTcgMCAwIDAtOTYuMS0xNDMuMyA0NDMuMDkgNDQzLjA5IDAgMCAwLTE0My05Ni4zQTQ0My45MSA0NDMuOTEgMCAwIDAgNTEyIDY0aC0yYy02MC41LjMtMTE5IDEyLjMtMTc0LjEgMzUuOWE0NDQuMDggNDQ0LjA4IDAgMCAwLTE0MS43IDk2LjUgNDQ1IDQ0NSAwIDAgMC05NSAxNDIuOEE0NDkuODkgNDQ5Ljg5IDAgMCAwIDY1IDUxNC4xYy4zIDY5LjQgMTYuOSAxMzguMyA0Ny45IDE5OS45djE1MmMwIDI1LjQgMjAuNiA0NiA0NS45IDQ2aDE1MS44YTQ0Ny43MiA0NDcuNzIgMCAwIDAgMTk5LjUgNDhoMi4xYzU5LjggMCAxMTcuNy0xMS42IDE3Mi4zLTM0LjNBNDQzLjIgNDQzLjIgMCAwIDAgODI3IDgzMC41YzQxLjItNDAuOSA3My42LTg4LjcgOTYuMy0xNDIgMjMuNS01NS4yIDM1LjUtMTEzLjkgMzUuOC0xNzQuNS4yLTYwLjktMTEuNi0xMjAtMzQuOC0xNzUuNnpNMzEyLjQgNTYwYy0yNi40IDAtNDcuOS0yMS41LTQ3LjktNDhzMjEuNS00OCA0Ny45LTQ4IDQ3LjkgMjEuNSA0Ny45IDQ4LTIxLjQgNDgtNDcuOSA0OHptMTk5LjYgMGMtMjYuNCAwLTQ3LjktMjEuNS00Ny45LTQ4czIxLjUtNDggNDcuOS00OCA0Ny45IDIxLjUgNDcuOSA0OC0yMS41IDQ4LTQ3LjkgNDh6bTE5OS42IDBjLTI2LjQgMC00Ny45LTIxLjUtNDcuOS00OHMyMS41LTQ4IDQ3LjktNDggNDcuOSAyMS41IDQ3LjkgNDgtMjEuNSA0OC00Ny45IDQ4eicpKTtcbmV4cG9ydHMuTWludXNDaXJjbGVGaWxsID0gZ2V0SWNvbignbWludXMtY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0xOTIgNDcyYzAgNC40LTMuNiA4LTggOEgzMjhjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDM2OGM0LjQgMCA4IDMuNiA4IDh2NDh6JykpO1xuZXhwb3J0cy5NaW51c1NxdWFyZUZpbGwgPSBnZXRJY29uKCdtaW51cy1zcXVhcmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek03MDQgNTM2YzAgNC40LTMuNiA4LTggOEgzMjhjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDM2OGM0LjQgMCA4IDMuNiA4IDh2NDh6JykpO1xuZXhwb3J0cy5Nb2JpbGVGaWxsID0gZ2V0SWNvbignbW9iaWxlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTc0NCA2MkgyODBjLTM1LjMgMC02NCAyOC43LTY0IDY0djc2OGMwIDM1LjMgMjguNyA2NCA2NCA2NGg0NjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI2YzAtMzUuMy0yOC43LTY0LTY0LTY0ek01MTIgODI0Yy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwIDQwIDE3LjkgNDAgNDAtMTcuOSA0MC00MCA0MHonKSk7XG5leHBvcnRzLk1vbmV5Q29sbGVjdEZpbGwgPSBnZXRJY29uKCdtb25leS1jb2xsZWN0JywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkxMS41IDY5OS43YTggOCAwIDAgMC0xMC4zLTQuOEw4NDAgNzE3LjJWMTc5YzAtMzcuNi0zMC40LTY4LTY4LTY4SDI1MmMtMzcuNiAwLTY4IDMwLjQtNjggNjh2NTM4LjJsLTYxLjMtMjIuM2MtLjktLjMtMS44LS41LTIuNy0uNS00LjQgMC04IDMuNi04IDhWNzYyYzAgMy4zIDIuMSA2LjMgNS4zIDcuNUw1MDEgOTA5LjFjNy4xIDIuNiAxNC44IDIuNiAyMS45IDBsMzgzLjgtMTM5LjVjMy4yLTEuMiA1LjMtNC4yIDUuMy03LjV2LTU5LjZjMC0xLS4yLTEuOS0uNS0yLjh6bS0yNDMuOC0zNzdMNTY0IDUxNC4zaDU3LjZjNC40IDAgOCAzLjYgOCA4djI3LjFjMCA0LjQtMy42IDgtOCA4aC03Ni4zdjM5aDc2LjNjNC40IDAgOCAzLjYgOCA4djI3LjFjMCA0LjQtMy42IDgtOCA4aC03Ni4zVjcwM2MwIDQuNC0zLjYgOC04IDhoLTQ5LjljLTQuNCAwLTgtMy42LTgtOHYtNjMuNGgtNzZjLTQuNCAwLTgtMy42LTgtOHYtMjcuMWMwLTQuNCAzLjYtOCA4LThoNzZ2LTM5aC03NmMtNC40IDAtOC0zLjYtOC04di0yNy4xYzAtNC40IDMuNi04IDgtOGg1N0wzNTYuNSAzMjIuOGMtMi4xLTMuOC0uNy04LjcgMy4yLTEwLjggMS4yLS43IDIuNS0xIDMuOC0xaDU1LjdhOCA4IDAgMCAxIDcuMSA0LjRMNTExIDQ4NC4yaDMuM0w1OTkgMzE1LjRjMS4zLTIuNyA0LjEtNC40IDcuMS00LjRoNTQuNWM0LjQgMCA4IDMuNiA4LjEgNy45IDAgMS4zLS40IDIuNi0xIDMuOHonKSk7XG5leHBvcnRzLlBhdXNlQ2lyY2xlRmlsbCA9IGdldEljb24oJ3BhdXNlLWNpcmNsZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptLTgwIDYwMGMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LThWMzYwYzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MzA0em0yMjQgMGMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LThWMzYwYzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MzA0eicpKTtcbmV4cG9ydHMuUGF5Q2lyY2xlRmlsbCA9IGdldEljb24oJ3BheS1jaXJjbGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTE2Ni42IDI0Ni44TDU2Ny41IDUxNS42aDYyYzQuNCAwIDggMy42IDggOHYyOS45YzAgNC40LTMuNiA4LTggOGgtODJWNjAzaDgyYzQuNCAwIDggMy42IDggOHYyOS45YzAgNC40LTMuNiA4LTggOGgtODJWNzE3YzAgNC40LTMuNiA4LTggOGgtNTQuM2MtNC40IDAtOC0zLjYtOC04di02OC4xaC04MS43Yy00LjQgMC04LTMuNi04LThWNjExYzAtNC40IDMuNi04IDgtOGg4MS43di00MS41aC04MS43Yy00LjQgMC04LTMuNi04LTh2LTI5LjljMC00LjQgMy42LTggOC04aDYxLjRMMzQ1LjQgMzEwLjhhOC4wNyA4LjA3IDAgMCAxIDctMTEuOWg2MC43YzMgMCA1LjggMS43IDcuMSA0LjRsOTAuNiAxODBoMy40bDkwLjYtMTgwYTggOCAwIDAgMSA3LjEtNC40aDU5LjVjNC40IDAgOCAzLjYgOCA4IC4yIDEuNC0uMiAyLjctLjggMy45eicpKTtcbmV4cG9ydHMuTm90aWZpY2F0aW9uRmlsbCA9IGdldEljb24oJ25vdGlmaWNhdGlvbicsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODAgMTEyYy0zLjggMC03LjcuNy0xMS42IDIuM0wyOTIgMzQ1LjlIMTI4Yy04LjggMC0xNiA3LjQtMTYgMTYuNnYyOTljMCA5LjIgNy4yIDE2LjYgMTYgMTYuNmgxMDEuNmMtMy43IDExLjYtNS42IDIzLjktNS42IDM2LjQgMCA2NS45IDUzLjggMTE5LjUgMTIwIDExOS41IDU1LjQgMCAxMDIuMS0zNy42IDExNS45LTg4LjRsNDA4LjYgMTY0LjJjMy45IDEuNSA3LjggMi4zIDExLjYgMi4zIDE2LjkgMCAzMi0xNC4yIDMyLTMzLjJWMTQ1LjJDOTEyIDEyNi4yIDg5NyAxMTIgODgwIDExMnpNMzQ0IDc2Mi4zYy0yNi41IDAtNDgtMjEuNC00OC00Ny44IDAtMTEuMiAzLjktMjEuOSAxMS0zMC40bDg0LjkgMzQuMWMtMiAyNC42LTIyLjcgNDQuMS00Ny45IDQ0LjF6JykpO1xuZXhwb3J0cy5QaG9uZUZpbGwgPSBnZXRJY29uKCdwaG9uZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODUuNiAyMzAuMkw3NzkuMSAxMjMuOGE4MC44MyA4MC44MyAwIDAgMC01Ny4zLTIzLjhjLTIxLjcgMC00Mi4xIDguNS01Ny40IDIzLjhMNTQ5LjggMjM4LjRhODAuODMgODAuODMgMCAwIDAtMjMuOCA1Ny4zYzAgMjEuNyA4LjUgNDIuMSAyMy44IDU3LjRsODMuOCA4My44QTM5My44MiAzOTMuODIgMCAwIDEgNTUzLjEgNTUzIDM5NS4zNCAzOTUuMzQgMCAwIDEgNDM3IDYzMy44TDM1My4yIDU1MGE4MC44MyA4MC44MyAwIDAgMC01Ny4zLTIzLjhjLTIxLjcgMC00Mi4xIDguNS01Ny40IDIzLjhMMTIzLjggNjY0LjVhODAuODkgODAuODkgMCAwIDAtMjMuOCA1Ny40YzAgMjEuNyA4LjUgNDIuMSAyMy44IDU3LjRsMTA2LjMgMTA2LjNjMjQuNCAyNC41IDU4LjEgMzguNCA5Mi43IDM4LjQgNy4zIDAgMTQuMy0uNiAyMS4yLTEuOCAxMzQuOC0yMi4yIDI2OC41LTkzLjkgMzc2LjQtMjAxLjdDODI4LjIgNjEyLjggODk5LjggNDc5LjIgOTIyLjMgMzQ0YzYuOC00MS4zLTYuOS04My44LTM2LjctMTEzLjh6JykpO1xuZXhwb3J0cy5QaWN0dXJlRmlsbCA9IGdldEljb24oJ3BpY3R1cmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTI4IDE2MEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjQwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTMzOCAzMDRjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjQtNjQtMjguNy02NC02NCAyOC43LTY0IDY0LTY0em01MTMuOSA0MzcuMWE4LjExIDguMTEgMCAwIDEtNS4yIDEuOUgxNzcuMmMtNC40IDAtOC0zLjYtOC04IDAtMS45LjctMy43IDEuOS01LjJsMTcwLjMtMjAyYzIuOC0zLjQgNy45LTMuOCAxMS4zLTEgLjMuMy43LjYgMSAxbDk5LjQgMTE4IDE1OC4xLTE4Ny41YzIuOC0zLjQgNy45LTMuOCAxMS4zLTEgLjMuMy43LjYgMSAxbDIyOS42IDI3MS42YzIuNiAzLjMgMi4yIDguNC0xLjIgMTEuMnonKSk7XG5leHBvcnRzLlBpZUNoYXJ0RmlsbCA9IGdldEljb24oJ3BpZS1jaGFydCcsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NjMuMSA1MTguNUg1MDUuNVYxNjAuOWMwLTQuNC0zLjYtOC04LThoLTI2YTM5OC41NyAzOTguNTcgMCAwIDAtMjgyLjUgMTE3IDM5Ny40NyAzOTcuNDcgMCAwIDAtODUuNiAxMjdDODIuNiA0NDYuMiA3MiA0OTguNSA3MiA1NTIuNVM4Mi42IDY1OC43IDEwMy40IDcwOGMyMC4xIDQ3LjUgNDguOSA5MC4zIDg1LjYgMTI3IDM2LjcgMzYuNyA3OS40IDY1LjUgMTI3IDg1LjZhMzk2LjY0IDM5Ni42NCAwIDAgMCAxNTUuNiAzMS41IDM5OC41NyAzOTguNTcgMCAwIDAgMjgyLjUtMTE3YzM2LjctMzYuNyA2NS41LTc5LjQgODUuNi0xMjdhMzk2LjY0IDM5Ni42NCAwIDAgMCAzMS41LTE1NS42di0yNmMtLjEtNC40LTMuNy04LTguMS04ek05NTEgNDYzbC0yLjYtMjguMmMtOC41LTkyLTQ5LjMtMTc4LjgtMTE1LjEtMjQ0LjNBMzk4LjUgMzk4LjUgMCAwIDAgNTg4LjQgNzUuNkw1NjAuMSA3M2MtNC43LS40LTguNyAzLjItOC43IDcuOXYzODMuN2MwIDQuNCAzLjYgOCA4IDhsMzgzLjYtMWM0LjctLjEgOC40LTQgOC04LjZ6JykpO1xuZXhwb3J0cy5QbGF5Q2lyY2xlRmlsbCA9IGdldEljb24oJ3BsYXktY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0xNDQuMSA0NTQuOUw0MzcuNyA2NzcuOGE4LjAyIDguMDIgMCAwIDEtMTIuNy02LjVWMzUzLjdhOCA4IDAgMCAxIDEyLjctNi41TDY1Ni4xIDUwNmE3LjkgNy45IDAgMCAxIDAgMTIuOXonKSk7XG5leHBvcnRzLlBsYXlTcXVhcmVGaWxsID0gZ2V0SWNvbigncGxheS1zcXVhcmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek02NDEuNyA1MjAuOEw0NDIuMyA2NzcuNmMtNy40IDUuOC0xOC4zLjYtMTguMy04LjhWMzU1LjNjMC05LjQgMTAuOS0xNC43IDE4LjMtOC44bDE5OS40IDE1Ni43YTExLjIgMTEuMiAwIDAgMSAwIDE3LjZ6JykpO1xuZXhwb3J0cy5QbHVzQ2lyY2xlRmlsbCA9IGdldEljb24oJ3BsdXMtY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0xOTIgNDcyYzAgNC40LTMuNiA4LTggOEg1NDR2MTUyYzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOFY1NDRIMzI4Yy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGgxNTJWMzI4YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MTUyaDE1MmM0LjQgMCA4IDMuNiA4IDh2NDh6JykpO1xuZXhwb3J0cy5QbHVzU3F1YXJlRmlsbCA9IGdldEljb24oJ3BsdXMtc3F1YXJlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNzA0IDUzNmMwIDQuNC0zLjYgOC04IDhINTQ0djE1MmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LThWNTQ0SDMyOGMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoMTUyVjMyOGMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djE1MmgxNTJjNC40IDAgOCAzLjYgOCA4djQ4eicpKTtcbmV4cG9ydHMuUG91bmRDaXJjbGVGaWxsID0gZ2V0SWNvbigncG91bmQtY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0xNDYgNjU4YzAgNC40LTMuNiA4LTggOEgzNzYuMmMtNC40IDAtOC0zLjYtOC04di0zOC41YzAtMy43IDIuNS02LjkgNi4xLTcuOCA0NC0xMC45IDcyLjgtNDkgNzIuOC05NC4yIDAtMTQuNy0yLjUtMjkuNC01LjktNDQuMkgzNzRjLTQuNCAwLTgtMy42LTgtOHYtMzBjMC00LjQgMy42LTggOC04aDUzLjdjLTcuOC0yNS4xLTE0LjYtNTAuNy0xNC42LTc3LjEgMC03NS44IDU4LjYtMTIwLjMgMTUxLjUtMTIwLjMgMjYuNSAwIDUxLjQgNS41IDcwLjMgMTIuNyAzLjEgMS4yIDUuMiA0LjIgNS4yIDcuNXYzOS41YTggOCAwIDAgMS0xMC42IDcuNmMtMTcuOS02LjQtMzktMTAuNS02MC40LTEwLjUtNTMuMyAwLTg3LjMgMjYuNi04Ny4zIDcwLjIgMCAyNC43IDYuMiA0Ny45IDEzLjQgNzAuNWgxMTJjNC40IDAgOCAzLjYgOCA4djMwYzAgNC40LTMuNiA4LTggOGgtOTguNmMzLjEgMTMuMiA1LjMgMjYuOSA1LjMgNDEgMCA0MC43LTE2LjUgNzMuOS00My45IDkxLjF2NC43aDE4MGM0LjQgMCA4IDMuNiA4IDhWNzIyeicpKTtcbmV4cG9ydHMuUHJpbnRlckZpbGwgPSBnZXRJY29uKCdwcmludGVyJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTczMiAxMjBjMC00LjQtMy42LTgtOC04SDMwMGMtNC40IDAtOCAzLjYtOCA4djE0OGg0NDBWMTIwem0xMjAgMjEySDE3MmMtNDQuMiAwLTgwIDM1LjgtODAgODB2MzI4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2OHYxMzJjMCA0LjQgMy42IDggOCA4aDQyNGM0LjQgMCA4LTMuNiA4LThWNzcyaDE2OGMxNy43IDAgMzItMTQuMyAzMi0zMlY0MTJjMC00NC4yLTM1LjgtODAtODAtODB6TTY2NCA4NDRIMzYwVjU2OGgzMDR2Mjc2em0xNjQtMzYwYzAgNC40LTMuNiA4LTggOGgtNDBjLTQuNCAwLTgtMy42LTgtOHYtNDBjMC00LjQgMy42LTggOC04aDQwYzQuNCAwIDggMy42IDggOHY0MHonKSk7XG5leHBvcnRzLlByb2ZpbGVGaWxsID0gZ2V0SWNvbigncHJvZmlsZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTM4MCA2OTZjLTIyLjEgMC00MC0xNy45LTQwLTQwczE3LjktNDAgNDAtNDAgNDAgMTcuOSA0MCA0MC0xNy45IDQwLTQwIDQwem0wLTE0NGMtMjIuMSAwLTQwLTE3LjktNDAtNDBzMTcuOS00MCA0MC00MCA0MCAxNy45IDQwIDQwLTE3LjkgNDAtNDAgNDB6bTAtMTQ0Yy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwIDQwIDE3LjkgNDAgNDAtMTcuOSA0MC00MCA0MHptMzA0IDI3MmMwIDQuNC0zLjYgOC04IDhINDkyYy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGgxODRjNC40IDAgOCAzLjYgOCA4djQ4em0wLTE0NGMwIDQuNC0zLjYgOC04IDhINDkyYy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGgxODRjNC40IDAgOCAzLjYgOCA4djQ4em0wLTE0NGMwIDQuNC0zLjYgOC04IDhINDkyYy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGgxODRjNC40IDAgOCAzLjYgOCA4djQ4eicpKTtcbmV4cG9ydHMuUHJvamVjdEZpbGwgPSBnZXRJY29uKCdwcm9qZWN0JywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzY4IDc0NGMwIDQuNC0zLjYgOC04IDhoLTgwYy00LjQgMC04LTMuNi04LThWMjgwYzAtNC40IDMuNi04IDgtOGg4MGM0LjQgMCA4IDMuNiA4IDh2NDY0em0xOTItMjgwYzAgNC40LTMuNiA4LTggOGgtODBjLTQuNCAwLTgtMy42LTgtOFYyODBjMC00LjQgMy42LTggOC04aDgwYzQuNCAwIDggMy42IDggOHYxODR6bTE5MiA3MmMwIDQuNC0zLjYgOC04IDhoLTgwYy00LjQgMC04LTMuNi04LThWMjgwYzAtNC40IDMuNi04IDgtOGg4MGM0LjQgMCA4IDMuNiA4IDh2MjU2eicpKTtcbmV4cG9ydHMuUHVzaHBpbkZpbGwgPSBnZXRJY29uKCdwdXNocGluJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg3OC4zIDM5Mi4xTDYzMS45IDE0NS43Yy02LjUtNi41LTE1LTkuNy0yMy41LTkuN3MtMTcgMy4yLTIzLjUgOS43TDQyMy44IDMwNi45Yy0xMi4yLTEuNC0yNC41LTItMzYuOC0yLTczLjIgMC0xNDYuNCAyNC4xLTIwNi41IDcyLjMtMTUuNCAxMi4zLTE2LjYgMzUuNC0yLjcgNDkuNGwxODEuNyAxODEuNy0yMTUuNCAyMTUuMmExNS44IDE1LjggMCAwIDAtNC42IDkuOGwtMy40IDM3LjJjLS45IDkuNCA2LjYgMTcuNCAxNS45IDE3LjQuNSAwIDEgMCAxLjUtLjFsMzcuMi0zLjRjMy43LS4zIDcuMi0yIDkuOC00LjZsMjE1LjQtMjE1LjQgMTgxLjcgMTgxLjdjNi41IDYuNSAxNSA5LjcgMjMuNSA5LjcgOS43IDAgMTkuMy00LjIgMjUuOS0xMi40IDU2LjMtNzAuMyA3OS43LTE1OC4zIDcwLjItMjQzLjRsMTYxLjEtMTYxLjFjMTIuOS0xMi44IDEyLjktMzMuOCAwLTQ2Ljh6JykpO1xuZXhwb3J0cy5Qcm9wZXJ0eVNhZmV0eUZpbGwgPSBnZXRJY29uKCdwcm9wZXJ0eS1zYWZldHknLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODY2LjkgMTY5LjlMNTI3LjEgNTQuMUM1MjMgNTIuNyA1MTcuNSA1MiA1MTIgNTJzLTExIC43LTE1LjEgMi4xTDE1Ny4xIDE2OS45Yy04LjMgMi44LTE1LjEgMTIuNC0xNS4xIDIxLjJ2NDgyLjRjMCA4LjggNS43IDIwLjQgMTIuNiAyNS45TDQ5OS4zIDk2OGMzLjUgMi43IDggNC4xIDEyLjYgNC4xczkuMi0xLjQgMTIuNi00LjFsMzQ0LjctMjY4LjZjNi45LTUuNCAxMi42LTE3IDEyLjYtMjUuOVYxOTEuMWMuMi04LjgtNi42LTE4LjMtMTQuOS0yMS4yek02NDguMyAzMzIuOGwtODcuNyAxNjEuMWg0NS43YzUuNSAwIDEwIDQuNSAxMCAxMHYyMS4zYzAgNS41LTQuNSAxMC0xMCAxMGgtNjMuNHYyOS43aDYzLjRjNS41IDAgMTAgNC41IDEwIDEwdjIxLjNjMCA1LjUtNC41IDEwLTEwIDEwaC02My40VjY1OGMwIDUuNS00LjUgMTAtMTAgMTBoLTQxLjNjLTUuNSAwLTEwLTQuNS0xMC0xMHYtNTEuOGgtNjMuMWMtNS41IDAtMTAtNC41LTEwLTEwdi0yMS4zYzAtNS41IDQuNS0xMCAxMC0xMGg2My4xdi0yOS43aC02My4xYy01LjUgMC0xMC00LjUtMTAtMTB2LTIxLjNjMC01LjUgNC41LTEwIDEwLTEwaDQ1LjJsLTg4LTE2MS4xYy0yLjYtNC44LS45LTEwLjkgNC0xMy42IDEuNS0uOCAzLjEtMS4yIDQuOC0xLjJoNDZjMy44IDAgNy4yIDIuMSA4LjkgNS41bDcyLjkgMTQ0LjMgNzMuMi0xNDQuM2ExMCAxMCAwIDAgMSA4LjktNS41aDQ1YzUuNSAwIDEwIDQuNSAxMCAxMCAuMSAxLjctLjMgMy4zLTEuMSA0Ljh6JykpO1xuZXhwb3J0cy5RcUNpcmNsZUZpbGwgPSBnZXRJY29uKCdxcS1jaXJjbGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTIxMC41IDYxMi40Yy0xMS41IDEuNC00NC45LTUyLjctNDQuOS01Mi43IDAgMzEuMy0xNi4yIDcyLjItNTEuMSAxMDEuOCAxNi45IDUuMiA1NC45IDE5LjIgNDUuOSAzNC40LTcuMyAxMi4zLTEyNS42IDcuOS0xNTkuOCA0LTM0LjIgMy44LTE1Mi41IDguMy0xNTkuOC00LTkuMS0xNS4yIDI4LjktMjkuMiA0NS44LTM0LjQtMzUtMjkuNS01MS4xLTcwLjQtNTEuMS0xMDEuOCAwIDAtMzMuNCA1NC4xLTQ0LjkgNTIuNy01LjQtLjctMTIuNC0yOS42IDkuNC05OS43IDEwLjMtMzMgMjItNjAuNSA0MC4yLTEwNS44LTMuMS0xMTYuOSA0NS4zLTIxNSAxNjAuNC0yMTUgMTEzLjkgMCAxNjMuMyA5Ni4xIDE2MC40IDIxNSAxOC4xIDQ1LjIgMjkuOSA3Mi44IDQwLjIgMTA1LjggMjEuNyA3MC4xIDE0LjYgOTkuMSA5LjMgOTkuN3onKSk7XG5leHBvcnRzLlFxU3F1YXJlRmlsbCA9IGdldEljb24oJ3FxLXNxdWFyZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTcyMi41IDY3Ni40Yy0xMS41IDEuNC00NC45LTUyLjctNDQuOS01Mi43IDAgMzEuMy0xNi4yIDcyLjItNTEuMSAxMDEuOCAxNi45IDUuMiA1NC45IDE5LjIgNDUuOSAzNC40LTcuMyAxMi4zLTEyNS42IDcuOS0xNTkuOCA0LTM0LjIgMy44LTE1Mi41IDguMy0xNTkuOC00LTkuMS0xNS4yIDI4LjktMjkuMiA0NS44LTM0LjQtMzUtMjkuNS01MS4xLTcwLjQtNTEuMS0xMDEuOCAwIDAtMzMuNCA1NC4xLTQ0LjkgNTIuNy01LjQtLjctMTIuNC0yOS42IDkuNC05OS43IDEwLjMtMzMgMjItNjAuNSA0MC4yLTEwNS44LTMuMS0xMTYuOSA0NS4zLTIxNSAxNjAuNC0yMTUgMTEzLjkgMCAxNjMuMyA5Ni4xIDE2MC40IDIxNSAxOC4xIDQ1LjIgMjkuOSA3Mi44IDQwLjIgMTA1LjggMjEuNyA3MC4xIDE0LjYgOTkuMSA5LjMgOTkuN3onKSk7XG5leHBvcnRzLlF1ZXN0aW9uQ2lyY2xlRmlsbCA9IGdldEljb24oJ3F1ZXN0aW9uLWNpcmNsZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA3MDhjLTIyLjEgMC00MC0xNy45LTQwLTQwczE3LjktNDAgNDAtNDAgNDAgMTcuOSA0MCA0MC0xNy45IDQwLTQwIDQwem02Mi45LTIxOS41YTQ4LjMgNDguMyAwIDAgMC0zMC45IDQ0LjhWNjIwYzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOHYtMjEuNWMwLTIzLjEgNi43LTQ1LjkgMTkuOS02NC45IDEyLjktMTguNiAzMC45LTMyLjggNTIuMS00MC45IDM0LTEzLjEgNTYtNDEuNiA1Ni03Mi43IDAtNDQuMS00My4xLTgwLTk2LTgwcy05NiAzNS45LTk2IDgwdjcuNmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LThWNDIwYzAtMzkuMyAxNy4yLTc2IDQ4LjQtMTAzLjNDNDMwLjQgMjkwLjQgNDcwIDI3NiA1MTIgMjc2czgxLjYgMTQuNSAxMTEuNiA0MC43QzY1NC44IDM0NCA2NzIgMzgwLjcgNjcyIDQyMGMwIDU3LjgtMzguMSAxMDkuOC05Ny4xIDEzMi41eicpKTtcbmV4cG9ydHMuUmVhZEZpbGwgPSBnZXRJY29uKCdyZWFkJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkyOCAxNjFINjk5LjJjLTQ5LjEgMC05Ny4xIDE0LjEtMTM4LjQgNDAuN0w1MTIgMjMzbC00OC44LTMxLjNBMjU1LjIgMjU1LjIgMCAwIDAgMzI0LjggMTYxSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY1NjhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMjI4LjhjNDkuMSAwIDk3LjEgMTQuMSAxMzguNCA0MC43bDQ0LjQgMjguNmMxLjMuOCAyLjggMS4zIDQuMyAxLjNzMy0uNCA0LjMtMS4zbDQ0LjQtMjguNkM2MDIgODA3LjEgNjUwLjEgNzkzIDY5OS4yIDc5M0g5MjhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTkzYzAtMTcuNy0xNC4zLTMyLTMyLTMyek00MDQgNTUzLjVjMCA0LjEtMy4yIDcuNS03LjEgNy41SDIxMS4xYy0zLjkgMC03LjEtMy40LTcuMS03LjV2LTQ1YzAtNC4xIDMuMi03LjUgNy4xLTcuNWgxODUuN2MzLjkgMCA3LjEgMy40IDcuMSA3LjV2NDV6bTAtMTQwYzAgNC4xLTMuMiA3LjUtNy4xIDcuNUgyMTEuMWMtMy45IDAtNy4xLTMuNC03LjEtNy41di00NWMwLTQuMSAzLjItNy41IDcuMS03LjVoMTg1LjdjMy45IDAgNy4xIDMuNCA3LjEgNy41djQ1em00MTYgMTQwYzAgNC4xLTMuMiA3LjUtNy4xIDcuNUg2MjcuMWMtMy45IDAtNy4xLTMuNC03LjEtNy41di00NWMwLTQuMSAzLjItNy41IDcuMS03LjVoMTg1LjdjMy45IDAgNy4xIDMuNCA3LjEgNy41djQ1em0wLTE0MGMwIDQuMS0zLjIgNy41LTcuMSA3LjVINjI3LjFjLTMuOSAwLTcuMS0zLjQtNy4xLTcuNXYtNDVjMC00LjEgMy4yLTcuNSA3LjEtNy41aDE4NS43YzMuOSAwIDcuMSAzLjQgNy4xIDcuNXY0NXonKSk7XG5leHBvcnRzLlJlY29uY2lsaWF0aW9uRmlsbCA9IGdldEljb24oJ3JlY29uY2lsaWF0aW9uJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTY3NiA2MjNjLTE4LjggMC0zNCAxNS4yLTM0IDM0czE1LjIgMzQgMzQgMzQgMzQtMTUuMiAzNC0zNC0xNS4yLTM0LTM0LTM0em0yMDQtNDU1SDY2OGMwLTMwLjktMjUuMS01Ni01Ni01NmgtODBjLTMwLjkgMC01NiAyNS4xLTU2IDU2SDI2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MjAwaC04OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMzNmMxNy43IDAgMzItMTQuMyAzMi0zMnYtMTZoMzY4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIwMGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNDQ4IDg0OEgxNzZWNjE2aDI3MnYyMzJ6bTAtMjk2SDE3NnYtODhoMjcydjg4em0yMC0yNzJ2LTQ4aDcydi01Nmg2NHY1Nmg3MnY0OEg0Njh6bTE4MCAxNjh2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4em0yOCAzMDFjLTUwLjggMC05Mi00MS4yLTkyLTkyczQxLjItOTIgOTItOTIgOTIgNDEuMiA5MiA5Mi00MS4yIDkyLTkyIDkyem05Mi0yNDVjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di05NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djk2em0tOTIgNjFjLTUwLjggMC05MiA0MS4yLTkyIDkyczQxLjIgOTIgOTIgOTIgOTItNDEuMiA5Mi05Mi00MS4yLTkyLTkyLTkyem0wIDEyNmMtMTguOCAwLTM0LTE1LjItMzQtMzRzMTUuMi0zNCAzNC0zNCAzNCAxNS4yIDM0IDM0LTE1LjIgMzQtMzQgMzR6JykpO1xuZXhwb3J0cy5SZWRFbnZlbG9wZUZpbGwgPSBnZXRJY29uKCdyZWQtZW52ZWxvcGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODMyIDY0SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2ODMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0MGMxNy43IDAgMzItMTQuMyAzMi0zMlY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNjQ3IDQ3MC40bC04Ny4yIDE2MWg0NS45YzQuNiAwIDguNCAzLjggOC40IDguNHYyNS4xYzAgNC42LTMuOCA4LjQtOC40IDguNGgtNjMuM3YyOC42aDYzLjNjNC42IDAgOC40IDMuOCA4LjQgOC40djI1Yy4yIDQuNi0zLjYgOC41LTguMiA4LjVoLTYzLjN2NDkuOWMwIDQuNi0zLjggOC40LTguNCA4LjRoLTQzLjdjLTQuNiAwLTguNC0zLjgtOC40LTguNHYtNDkuOWgtNjNjLTQuNiAwLTguNC0zLjgtOC40LTguNHYtMjUuMWMwLTQuNiAzLjgtOC40IDguNC04LjRoNjN2LTI4LjZoLTYzYy00LjYgMC04LjQtMy44LTguNC04LjR2LTI1LjFjMC00LjYgMy44LTguNCA4LjQtOC40aDQ1LjRsLTg3LjUtMTYxYy0yLjItNC4xLS43LTkuMSAzLjQtMTEuNCAxLjMtLjYgMi42LTEgMy45LTFoNDguOGMzLjIgMCA2LjEgMS44IDcuNSA0LjZsNzEuOSAxNDEuOCA3MS45LTE0MS45YTguNSA4LjUgMCAwIDEgNy41LTQuNmg0Ny44YzQuNiAwIDguNCAzLjggOC40IDguNC0uMSAxLjUtLjUgMi45LTEuMSA0LjF6TTUxMi42IDMyM0wyODkgMTQ4aDQ0Nkw1MTIuNiAzMjN6JykpO1xuZXhwb3J0cy5SZWRkaXRDaXJjbGVGaWxsID0gZ2V0SWNvbigncmVkZGl0LWNpcmNsZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ001ODQgNTQ4YTM2IDM2IDAgMSAwIDcyIDAgMzYgMzYgMCAxIDAtNzIgMHptMTQ0LTEwOGEzNS45IDM1LjkgMCAwIDAtMzIuNSAyMC42YzE4LjggMTQuMyAzNC40IDMwLjcgNDUuOSA0OC44QTM1Ljk4IDM1Ljk4IDAgMCAwIDcyOCA0NDB6TTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0yNDUgNDc3LjljNC42IDEzLjUgNyAyNy42IDcgNDIuMSAwIDk5LjQtMTEyLjggMTgwLTI1MiAxODBzLTI1Mi04MC42LTI1Mi0xODBjMC0xNC41IDIuNC0yOC42IDctNDIuMUE3Mi4wMSA3Mi4wMSAwIDAgMSAyOTYgNDA0YzI3LjEgMCA1MC42IDE0LjkgNjIuOSAzNyAzNi4yLTE5LjggODAuMi0zMi44IDEyOC4xLTM2LjFsNTguNC0xMzEuMWM0LjMtOS44IDE1LjItMTQuOCAyNS41LTExLjhsOTEuNiAyNi41YTU0LjAzIDU0LjAzIDAgMCAxIDEwMS42IDI1LjZjMCAyOS44LTI0LjIgNTQtNTQgNTQtMjMuNSAwLTQzLjUtMTUuMS01MC45LTM2LjFMNTc3IDMwOC4zbC00MyA5Ni41YzQ5LjEgMyA5NC4yIDE2LjEgMTMxLjIgMzYuMyAxMi4zLTIyLjEgMzUuOC0zNyA2Mi45LTM3IDM5LjggMCA3MiAzMi4yIDcyIDcyLS4xIDI5LjMtMTcuOCA1NC42LTQzLjEgNjUuOHptLTE3MS4zIDgzYy0xNC45IDExLjctNDQuMyAyNC4zLTczLjcgMjQuM3MtNTguOS0xMi42LTczLjctMjQuM2MtOS4zLTcuMy0yMi43LTUuNy0zMCAzLjYtNy4zIDkuMy01LjcgMjIuNyAzLjYgMzAgMjUuNyAyMC40IDY1IDMzLjUgMTAwLjEgMzMuNSAzNS4xIDAgNzQuNC0xMy4xIDEwMC4yLTMzLjUgOS4zLTcuMyAxMC45LTIwLjggMy42LTMwYTIxLjQ2IDIxLjQ2IDAgMCAwLTMwLjEtMy42ek0yOTYgNDQwYTM1Ljk4IDM1Ljk4IDAgMCAwLTEzLjQgNjkuNGMxMS41LTE4LjEgMjcuMS0zNC41IDQ1LjktNDguOEEzNS45IDM1LjkgMCAwIDAgMjk2IDQ0MHptNzIgMTA4YTM2IDM2IDAgMSAwIDcyIDAgMzYgMzYgMCAxIDAtNzIgMHonKSk7XG5leHBvcnRzLlJlZGRpdFNxdWFyZUZpbGwgPSBnZXRJY29uKCdyZWRkaXQtc3F1YXJlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTI5NiA0NDBhMzUuOTggMzUuOTggMCAwIDAtMTMuNCA2OS40YzExLjUtMTguMSAyNy4xLTM0LjUgNDUuOS00OC44QTM1LjkgMzUuOSAwIDAgMCAyOTYgNDQwem0yODkuNyAxODQuOWMtMTQuOSAxMS43LTQ0LjMgMjQuMy03My43IDI0LjNzLTU4LjktMTIuNi03My43LTI0LjNjLTkuMy03LjMtMjIuNy01LjctMzAgMy42LTcuMyA5LjMtNS43IDIyLjcgMy42IDMwIDI1LjcgMjAuNCA2NSAzMy41IDEwMC4xIDMzLjUgMzUuMSAwIDc0LjQtMTMuMSAxMDAuMi0zMy41IDkuMy03LjMgMTAuOS0yMC44IDMuNi0zMGEyMS40NiAyMS40NiAwIDAgMC0zMC4xLTMuNnpNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek03NTcgNTQxLjljNC42IDEzLjUgNyAyNy42IDcgNDIuMSAwIDk5LjQtMTEyLjggMTgwLTI1MiAxODBzLTI1Mi04MC42LTI1Mi0xODBjMC0xNC41IDIuNC0yOC42IDctNDIuMUE3Mi4wMSA3Mi4wMSAwIDAgMSAyOTYgNDA0YzI3LjEgMCA1MC42IDE0LjkgNjIuOSAzNyAzNi4yLTE5LjggODAuMi0zMi44IDEyOC4xLTM2LjFsNTguNC0xMzEuMWM0LjMtOS44IDE1LjItMTQuOCAyNS41LTExLjhsOTEuNiAyNi41YTU0LjAzIDU0LjAzIDAgMCAxIDEwMS42IDI1LjZjMCAyOS44LTI0LjIgNTQtNTQgNTQtMjMuNSAwLTQzLjUtMTUuMS01MC45LTM2LjFMNTc3IDMwOC4zbC00MyA5Ni41YzQ5LjEgMyA5NC4yIDE2LjEgMTMxLjIgMzYuMyAxMi4zLTIyLjEgMzUuOC0zNyA2Mi45LTM3IDM5LjggMCA3MiAzMi4yIDcyIDcyLS4xIDI5LjMtMTcuOCA1NC42LTQzLjEgNjUuOHpNNTg0IDU0OGEzNiAzNiAwIDEgMCA3MiAwIDM2IDM2IDAgMSAwLTcyIDB6bTE0NC0xMDhhMzUuOSAzNS45IDAgMCAwLTMyLjUgMjAuNmMxOC44IDE0LjMgMzQuNCAzMC43IDQ1LjkgNDguOEEzNS45OCAzNS45OCAwIDAgMCA3MjggNDQwek0zNjggNTQ4YTM2IDM2IDAgMSAwIDcyIDAgMzYgMzYgMCAxIDAtNzIgMHonKSk7XG5leHBvcnRzLlJlc3RGaWxsID0gZ2V0SWNvbigncmVzdCcsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004MzIgMjU2aC0yOC4xbC0zNS43LTEyMC45Yy00LTEzLjctMTYuNS0yMy4xLTMwLjctMjMuMWgtNDUxYy0xNC4zIDAtMjYuOCA5LjQtMzAuNyAyMy4xTDIyMC4xIDI1NkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjI4YzAgNC40IDMuNiA4IDggOGg0NS44bDQ3LjcgNTU4LjdhMzIgMzIgMCAwIDAgMzEuOSAyOS4zaDQyOS4yYTMyIDMyIDAgMCAwIDMxLjktMjkuM0w4MDIuMiAzMjRIODU2YzQuNCAwIDgtMy42IDgtOHYtMjhjMC0xNy43LTE0LjMtMzItMzItMzJ6TTUwOCA3MDRjLTc5LjUgMC0xNDQtNjQuNS0xNDQtMTQ0czY0LjUtMTQ0IDE0NC0xNDQgMTQ0IDY0LjUgMTQ0IDE0NC02NC41IDE0NC0xNDQgMTQ0ek0yOTEgMjU2bDIyLjQtNzZoMzk3LjJsMjIuNCA3NkgyOTF6bTEzNyAzMDRhODAgODAgMCAxIDAgMTYwIDAgODAgODAgMCAxIDAtMTYwIDB6JykpO1xuZXhwb3J0cy5SaWdodENpcmNsZUZpbGwgPSBnZXRJY29uKCdyaWdodC1jaXJjbGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTE1NC43IDQ1NC41bC0yNDYgMTc4Yy01LjMgMy44LTEyLjcgMC0xMi43LTYuNXYtNDYuOWMwLTEwLjIgNC45LTE5LjkgMTMuMi0yNS45TDU2Ni42IDUxMiA0MjEuMiA0MDYuOGMtOC4zLTYtMTMuMi0xNS42LTEzLjItMjUuOVYzMzRjMC02LjUgNy40LTEwLjMgMTIuNy02LjVsMjQ2IDE3OGM0LjQgMy4yIDQuNCA5LjggMCAxM3onKSk7XG5leHBvcnRzLlJvY2tldEZpbGwgPSBnZXRJY29uKCdyb2NrZXQnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODY0IDczNmMwLTExMS42LTY1LjQtMjA4LTE2MC0yNTIuOVYzMTcuM2MwLTE1LjEtNS4zLTI5LjctMTUuMS00MS4yTDUzNi41IDk1LjRDNTMwLjEgODcuOCA1MjEgODQgNTEyIDg0cy0xOC4xIDMuOC0yNC41IDExLjRMMzM1LjEgMjc2LjFhNjMuOTcgNjMuOTcgMCAwIDAtMTUuMSA0MS4ydjE2NS44QzIyNS40IDUyOCAxNjAgNjI0LjQgMTYwIDczNmgxNTYuNWMtMi4zIDcuMi0zLjUgMTUtMy41IDIzLjggMCAyMi4xIDcuNiA0My43IDIxLjQgNjAuOGE5Ny4yIDk3LjIgMCAwIDAgNDMuMSAzMC42YzIzLjEgNTQgNzUuNiA4OC44IDEzNC41IDg4LjggMjkuMSAwIDU3LjMtOC42IDgxLjQtMjQuOCAyMy42LTE1LjggNDEuOS0zNy45IDUzLTY0YTk3IDk3IDAgMCAwIDQzLjEtMzAuNSA5Ny41MiA5Ny41MiAwIDAgMCAyMS40LTYwLjhjMC04LjQtMS4xLTE2LjQtMy4xLTIzLjhMODY0IDczNnpNNTEyIDM1MmE0OC4wMSA0OC4wMSAwIDAgMSAwIDk2IDQ4LjAxIDQ4LjAxIDAgMCAxIDAtOTZ6bTExNi4xIDQzMi4yYy01LjIgMy0xMS4yIDQuMi0xNy4xIDMuNGwtMTkuNS0yLjQtMi44IDE5LjRjLTUuNCAzNy45LTM4LjQgNjYuNS03Ni43IDY2LjVzLTcxLjMtMjguNi03Ni43LTY2LjVsLTIuOC0xOS41LTE5LjUgMi41YTI3LjcgMjcuNyAwIDAgMS0xNy4xLTMuNWMtOC43LTUtMTQuMS0xNC4zLTE0LjEtMjQuNCAwLTEwLjYgNS45LTE5LjQgMTQuNi0yMy44aDIzMS4zYzguOCA0LjUgMTQuNiAxMy4zIDE0LjYgMjMuOC0uMSAxMC4yLTUuNSAxOS42LTE0LjIgMjQuNXonKSk7XG5leHBvcnRzLlJpZ2h0U3F1YXJlRmlsbCA9IGdldEljb24oJ3JpZ2h0LXNxdWFyZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTY1OC43IDUxOC41bC0yNDYgMTc4Yy01LjMgMy44LTEyLjcgMC0xMi43LTYuNXYtNDYuOWMwLTEwLjIgNC45LTE5LjkgMTMuMi0yNS45TDU1OC42IDUxMiA0MTMuMiA0MDYuOGMtOC4zLTYtMTMuMi0xNS42LTEzLjItMjUuOVYzMzRjMC02LjUgNy40LTEwLjMgMTIuNy02LjVsMjQ2IDE3OGM0LjQgMy4yIDQuNCA5LjggMCAxM3onKSk7XG5leHBvcnRzLlNhZmV0eUNlcnRpZmljYXRlRmlsbCA9IGdldEljb24oJ3NhZmV0eS1jZXJ0aWZpY2F0ZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NjYuOSAxNjkuOUw1MjcuMSA1NC4xQzUyMyA1Mi43IDUxNy41IDUyIDUxMiA1MnMtMTEgLjctMTUuMSAyLjFMMTU3LjEgMTY5LjljLTguMyAyLjgtMTUuMSAxMi40LTE1LjEgMjEuMnY0ODIuNGMwIDguOCA1LjcgMjAuNCAxMi42IDI1LjlMNDk5LjMgOTY4YzMuNSAyLjcgOCA0LjEgMTIuNiA0LjFzOS4yLTEuNCAxMi42LTQuMWwzNDQuNy0yNjguNmM2LjktNS40IDEyLjYtMTcgMTIuNi0yNS45VjE5MS4xYy4yLTguOC02LjYtMTguMy0xNC45LTIxLjJ6TTY5NC41IDM0MC43TDQ4MS45IDYzMy40YTE2LjEgMTYuMSAwIDAgMS0yNiAwbC0xMjYuNC0xNzRjLTMuOC01LjMgMC0xMi43IDYuNS0xMi43aDU1LjJjNS4xIDAgMTAgMi41IDEzIDYuNmw2NC43IDg5IDE1MC45LTIwNy44YzMtNC4xIDcuOC02LjYgMTMtNi42SDY4OGM2LjUuMSAxMC4zIDcuNSA2LjUgMTIuOHonKSk7XG5leHBvcnRzLlNhdmVGaWxsID0gZ2V0SWNvbignc2F2ZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004OTMuMyAyOTMuM0w3MzAuNyAxMzAuN2MtMTItMTItMjguMy0xOC43LTQ1LjMtMTguN0gxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzM4LjVjMC0xNy02LjctMzMuMi0xOC43LTQ1LjJ6TTM4NCAxNzZoMjU2djExMkgzODRWMTc2em0xMjggNTU0Yy03OS41IDAtMTQ0LTY0LjUtMTQ0LTE0NHM2NC41LTE0NCAxNDQtMTQ0IDE0NCA2NC41IDE0NCAxNDQtNjQuNSAxNDQtMTQ0IDE0NHptMC0yMjRjLTQ0LjIgMC04MCAzNS44LTgwIDgwczM1LjggODAgODAgODAgODAtMzUuOCA4MC04MC0zNS44LTgwLTgwLTgweicpKTtcbmV4cG9ydHMuU2NoZWR1bGVGaWxsID0gZ2V0SWNvbignc2NoZWR1bGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTI4IDIyNEg3Njh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1Nkg1NDh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NkgzMjh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1Nkg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NTc2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYyNTZjMC0xNy43LTE0LjMtMzItMzItMzJ6TTQyNCA2ODhjMCA0LjQtMy42IDgtOCA4SDIzMmMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoMTg0YzQuNCAwIDggMy42IDggOHY0OHptMC0xMzZjMCA0LjQtMy42IDgtOCA4SDIzMmMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoMTg0YzQuNCAwIDggMy42IDggOHY0OHptMzc0LjUtOTEuM2wtMTY1IDIyOC43YTE1LjkgMTUuOSAwIDAgMS0yNS44IDBMNDkzLjUgNTMxLjJjLTMuOC01LjMgMC0xMi43IDYuNS0xMi43aDU0LjljNS4xIDAgOS45IDIuNSAxMi45IDYuNmw1Mi44IDczLjEgMTAzLjctMTQzLjdjMy00LjIgNy44LTYuNiAxMi45LTYuNkg3OTJjNi41LjEgMTAuMyA3LjUgNi41IDEyLjh6JykpO1xuZXhwb3J0cy5TZWN1cml0eVNjYW5GaWxsID0gZ2V0SWNvbignc2VjdXJpdHktc2NhbicsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NjYuOSAxNjkuOUw1MjcuMSA1NC4xQzUyMyA1Mi43IDUxNy41IDUyIDUxMiA1MnMtMTEgLjctMTUuMSAyLjFMMTU3LjEgMTY5LjljLTguMyAyLjgtMTUuMSAxMi40LTE1LjEgMjEuMnY0ODIuNGMwIDguOCA1LjcgMjAuNCAxMi42IDI1LjlMNDk5LjMgOTY4YzMuNSAyLjcgOCA0LjEgMTIuNiA0LjFzOS4yLTEuNCAxMi42LTQuMWwzNDQuNy0yNjguNmM2LjktNS40IDEyLjYtMTcgMTIuNi0yNS45VjE5MS4xYy4yLTguOC02LjYtMTguMy0xNC45LTIxLjJ6TTYyNi44IDU1NGMtNDguNSA0OC41LTEyMyA1NS4yLTE3OC42IDIwLjFsLTc3LjUgNzcuNWE4LjAzIDguMDMgMCAwIDEtMTEuMyAwbC0zNC0zNGE4LjAzIDguMDMgMCAwIDEgMC0xMS4zbDc3LjUtNzcuNWMtMzUuMS01NS43LTI4LjQtMTMwLjEgMjAuMS0xNzguNiA1Ni4zLTU2LjMgMTQ3LjUtNTYuMyAyMDMuOCAwIDU2LjMgNTYuMyA1Ni4zIDE0Ny41IDAgMjAzLjh6bS0xNTguNTQtNDUuMjdhODAuMSA4MC4xIDAgMSAwIDExMy4yNy0xMTMuMjggODAuMSA4MC4xIDAgMSAwLTExMy4yNyAxMTMuMjh6JykpO1xuZXhwb3J0cy5TZXR0aW5nRmlsbCA9IGdldEljb24oJ3NldHRpbmcnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyLjUgMzkwLjZjLTI5LjkgMC01Ny45IDExLjYtNzkuMSAzMi44LTIxLjEgMjEuMi0zMi44IDQ5LjItMzIuOCA3OS4xIDAgMjkuOSAxMS43IDU3LjkgMzIuOCA3OS4xIDIxLjIgMjEuMSA0OS4yIDMyLjggNzkuMSAzMi44IDI5LjkgMCA1Ny45LTExLjcgNzkuMS0zMi44IDIxLjEtMjEuMiAzMi44LTQ5LjIgMzIuOC03OS4xIDAtMjkuOS0xMS43LTU3LjktMzIuOC03OS4xYTExMC45NiAxMTAuOTYgMCAwIDAtNzkuMS0zMi44em00MTIuMyAyMzUuNWwtNjUuNC01NS45YzMuMS0xOSA0LjctMzguNCA0LjctNTcuN3MtMS42LTM4LjgtNC43LTU3LjdsNjUuNC01NS45YTMyLjAzIDMyLjAzIDAgMCAwIDkuMy0zNS4ybC0uOS0yLjZhNDQyLjUgNDQyLjUgMCAwIDAtNzkuNi0xMzcuN2wtMS44LTIuMWEzMi4xMiAzMi4xMiAwIDAgMC0zNS4xLTkuNWwtODEuMiAyOC45Yy0zMC0yNC42LTYzLjQtNDQtOTkuNi01Ny41bC0xNS43LTg0LjlhMzIuMDUgMzIuMDUgMCAwIDAtMjUuOC0yNS43bC0yLjctLjVjLTUyLTkuNC0xMDYuOC05LjQtMTU4LjggMGwtMi43LjVhMzIuMDUgMzIuMDUgMCAwIDAtMjUuOCAyNS43bC0xNS44IDg1LjNhMzUzLjQ0IDM1My40NCAwIDAgMC05OC45IDU3LjNsLTgxLjgtMjkuMWEzMiAzMiAwIDAgMC0zNS4xIDkuNWwtMS44IDIuMWE0NDUuOTMgNDQ1LjkzIDAgMCAwLTc5LjYgMTM3LjdsLS45IDIuNmMtNC41IDEyLjUtLjggMjYuNSA5LjMgMzUuMmw2Ni4yIDU2LjVjLTMuMSAxOC44LTQuNiAzOC00LjYgNTcgMCAxOS4yIDEuNSAzOC40IDQuNiA1N2wtNjYgNTYuNWEzMi4wMyAzMi4wMyAwIDAgMC05LjMgMzUuMmwuOSAyLjZjMTguMSA1MC4zIDQ0LjggOTYuOCA3OS42IDEzNy43bDEuOCAyLjFhMzIuMTIgMzIuMTIgMCAwIDAgMzUuMSA5LjVsODEuOC0yOS4xYzI5LjggMjQuNSA2MyA0My45IDk4LjkgNTcuM2wxNS44IDg1LjNhMzIuMDUgMzIuMDUgMCAwIDAgMjUuOCAyNS43bDIuNy41YTQ0OC4yNyA0NDguMjcgMCAwIDAgMTU4LjggMGwyLjctLjVhMzIuMDUgMzIuMDUgMCAwIDAgMjUuOC0yNS43bDE1LjctODQuOWMzNi4yLTEzLjYgNjkuNi0zMi45IDk5LjYtNTcuNWw4MS4yIDI4LjlhMzIgMzIgMCAwIDAgMzUuMS05LjVsMS44LTIuMWMzNC44LTQxLjEgNjEuNS04Ny40IDc5LjYtMTM3LjdsLjktMi42YzQuMy0xMi40LjYtMjYuMy05LjUtMzV6bS00MTIuMyA1Mi4yYy05Ny4xIDAtMTc1LjgtNzguNy0xNzUuOC0xNzUuOHM3OC43LTE3NS44IDE3NS44LTE3NS44IDE3NS44IDc4LjcgMTc1LjggMTc1LjgtNzguNyAxNzUuOC0xNzUuOCAxNzUuOHonKSk7XG5leHBvcnRzLlNob3BGaWxsID0gZ2V0SWNvbignc2hvcCcsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODIgMjcyLjFWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDE3NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTI4LjFjLTE2LjcgMS0zMCAxNC45LTMwIDMxLjl2MTMxLjdhMTc3IDE3NyAwIDAgMCAxNC40IDcwLjRjNC4zIDEwLjIgOS42IDE5LjggMTUuNiAyOC45djM0NWMwIDE3LjYgMTQuMyAzMiAzMiAzMmgyNzRWNzM2aDEyOHYxNzZoMjc0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjUzNWExNzUgMTc1IDAgMCAwIDE1LjYtMjguOWM5LjUtMjIuMyAxNC40LTQ2IDE0LjQtNzAuNFYzMDRjMC0xNy0xMy4zLTMwLjktMzAtMzEuOXptLTcyIDU2OEg2NDBWNzA0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDQxNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTM2LjFIMjE0VjU5Ny45YzIuOSAxLjQgNS45IDIuOCA5IDQgMjIuMyA5LjQgNDYgMTQuMSA3MC40IDE0LjFzNDgtNC43IDcwLjQtMTQuMWMxMy44LTUuOCAyNi44LTEzLjIgMzguNy0yMi4xLjItLjEuNC0uMS42IDBhMTgwLjQgMTgwLjQgMCAwIDAgMzguNyAyMi4xYzIyLjMgOS40IDQ2IDE0LjEgNzAuNCAxNC4xIDI0LjQgMCA0OC00LjcgNzAuNC0xNC4xIDEzLjgtNS44IDI2LjgtMTMuMiAzOC43LTIyLjEuMi0uMS40LS4xLjYgMGExODAuNCAxODAuNCAwIDAgMCAzOC43IDIyLjFjMjIuMyA5LjQgNDYgMTQuMSA3MC40IDE0LjEgMjQuNCAwIDQ4LTQuNyA3MC40LTE0LjEgMy0xLjMgNi0yLjYgOS00djI0Mi4yem0wLTU2OC4xSDIxNHYtODhoNTk2djg4eicpKTtcbmV4cG9ydHMuU2hvcHBpbmdGaWxsID0gZ2V0SWNvbignc2hvcHBpbmcnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODMyIDMxMkg2OTZ2LTE2YzAtMTAxLjYtODIuNC0xODQtMTg0LTE4NHMtMTg0IDgyLjQtMTg0IDE4NHYxNkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjUzNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tMjA4IDBINDAwdi0xNmMwLTYxLjkgNTAuMS0xMTIgMTEyLTExMnMxMTIgNTAuMSAxMTIgMTEydjE2eicpKTtcbmV4cG9ydHMuU2tldGNoQ2lyY2xlRmlsbCA9IGdldEljb24oJ3NrZXRjaC1jaXJjbGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTgyLjMgNjI1LjZsMTQ3LjktMTY2LjNoLTYzLjR6bTkwLTIwMi4zaDYyLjVsLTkyLjEtMTE1LjF6bS0yNzQuNyAzNkw1MTIgNjg0LjVsMTE0LjQtMjI1LjJ6TTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0yODYuNyAzODAuMkw1MTUuOCA3NjIuM2MtMSAxLjEtMi40IDEuNy0zLjggMS43cy0yLjgtLjYtMy44LTEuN0wyMjUuMyA0NDQuMmE1LjE0IDUuMTQgMCAwIDEtLjItNi42TDM2NS42IDI2MmMxLTEuMiAyLjQtMS45IDQtMS45aDI4NC42YzEuNiAwIDMgLjcgNCAxLjlsMTQwLjUgMTc1LjZhNC45IDQuOSAwIDAgMSAwIDYuNnptLTE5MC41LTIwLjlMNTEyIDMyNi4xbC05Ni4yIDk3LjJ6TTQyMC4zIDMwMS4xbC0yMy4xIDg5LjggODguOC04OS44em0xODMuNCAwSDUzOGw4OC44IDg5Ljh6bS0yMjIuNCA3LjFsLTkyLjEgMTE1LjFoNjIuNXptLTg3LjUgMTUxLjFsMTQ3LjkgMTY2LjMtODQuNS0xNjYuM3onKSk7XG5leHBvcnRzLlNrZXRjaFNxdWFyZUZpbGwgPSBnZXRJY29uKCdza2V0Y2gtc3F1YXJlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTYwOC4yIDQyMy4zTDUxMiAzMjYuMWwtOTYuMiA5Ny4yem0tMjUuOSAyMDIuM2wxNDcuOS0xNjYuM2gtNjMuNHptOTAtMjAyLjNoNjIuNWwtOTIuMS0xMTUuMXpNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODEuMyAzMzIuMkw1MTUuOCA3NjIuM2MtMSAxLjEtMi40IDEuNy0zLjggMS43cy0yLjgtLjYtMy44LTEuN0wyMjUuMyA0NDQuMmE1LjE0IDUuMTQgMCAwIDEtLjItNi42TDM2NS42IDI2MmMxLTEuMiAyLjQtMS45IDQtMS45aDI4NC42YzEuNiAwIDMgLjcgNCAxLjlsMTQwLjUgMTc1LjZhNC45IDQuOSAwIDAgMSAwIDYuNnptLTQwMS4xIDE1LjFMNTEyIDY4NC41bDExNC40LTIyNS4yem0tMTYuMy0xNTEuMWwtOTIuMSAxMTUuMWg2Mi41em0tODcuNSAxNTEuMWwxNDcuOSAxNjYuMy04NC41LTE2Ni4zem0xMjYuNS0xNTguMmwtMjMuMSA4OS44IDg4LjgtODkuOHptMTgzLjQgMEg1MzhsODguOCA4OS44eicpKTtcbmV4cG9ydHMuU2tpbkZpbGwgPSBnZXRJY29uKCdza2luJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg3MCAxMjZINjYzLjhjLTE3LjQgMC0zMi45IDExLjktMzcgMjkuM0M2MTQuMyAyMDguMSA1NjcgMjQ2IDUxMiAyNDZzLTEwMi4zLTM3LjktMTE0LjgtOTAuN2EzNy45MyAzNy45MyAwIDAgMC0zNy0yOS4zSDE1NGE0NCA0NCAwIDAgMC00NCA0NHYyNTJhNDQgNDQgMCAwIDAgNDQgNDRoNzV2Mzg4YTQ0IDQ0IDAgMCAwIDQ0IDQ0aDQ3OGE0NCA0NCAwIDAgMCA0NC00NFY0NjZoNzVhNDQgNDQgMCAwIDAgNDQtNDRWMTcwYTQ0IDQ0IDAgMCAwLTQ0LTQ0eicpKTtcbmV4cG9ydHMuU2xhY2tDaXJjbGVGaWxsID0gZ2V0SWNvbignc2xhY2stY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0ek0zNjEuNSA1ODAuMmMwIDI3LjgtMjIuNSA1MC40LTUwLjMgNTAuNGE1MC4zNSA1MC4zNSAwIDAgMS01MC4zLTUwLjRjMC0yNy44IDIyLjUtNTAuNCA1MC4zLTUwLjRoNTAuM3Y1MC40em0xMzQgMTM0LjRjMCAyNy44LTIyLjUgNTAuNC01MC4zIDUwLjQtMjcuOCAwLTUwLjMtMjIuNi01MC4zLTUwLjRWNTgwLjJjMC0yNy44IDIyLjUtNTAuNCA1MC4zLTUwLjRhNTAuMzUgNTAuMzUgMCAwIDEgNTAuMyA1MC40djEzNC40em0tNTAuMi0yMTguNGgtMTM0Yy0yNy44IDAtNTAuMy0yMi42LTUwLjMtNTAuNCAwLTI3LjggMjIuNS01MC40IDUwLjMtNTAuNGgxMzRjMjcuOCAwIDUwLjMgMjIuNiA1MC4zIDUwLjQtLjEgMjcuOS0yMi42IDUwLjQtNTAuMyA1MC40em0wLTEzNC40Yy0xMy4zIDAtMjYuMS01LjMtMzUuNi0xNC44UzM5NSAzMjQuOCAzOTUgMzExLjRjMC0yNy44IDIyLjUtNTAuNCA1MC4zLTUwLjQgMjcuOCAwIDUwLjMgMjIuNiA1MC4zIDUwLjR2NTAuNGgtNTAuM3ptODMuNy01MC40YzAtMjcuOCAyMi41LTUwLjQgNTAuMy01MC40IDI3LjggMCA1MC4zIDIyLjYgNTAuMyA1MC40djEzNC40YzAgMjcuOC0yMi41IDUwLjQtNTAuMyA1MC40LTI3LjggMC01MC4zLTIyLjYtNTAuMy01MC40VjMxMS40ek01NzkuMyA3NjVjLTI3LjggMC01MC4zLTIyLjYtNTAuMy01MC40di01MC40aDUwLjNjMjcuOCAwIDUwLjMgMjIuNiA1MC4zIDUwLjQgMCAyNy44LTIyLjUgNTAuNC01MC4zIDUwLjR6bTEzNC0xMzQuNGgtMTM0Yy0xMy4zIDAtMjYuMS01LjMtMzUuNi0xNC44UzUyOSA1OTMuNiA1MjkgNTgwLjJjMC0yNy44IDIyLjUtNTAuNCA1MC4zLTUwLjRoMTM0YzI3LjggMCA1MC4zIDIyLjYgNTAuMyA1MC40IDAgMjcuOC0yMi41IDUwLjQtNTAuMyA1MC40em0wLTEzNC40SDY2M3YtNTAuNGMwLTI3LjggMjIuNS01MC40IDUwLjMtNTAuNHM1MC4zIDIyLjYgNTAuMyA1MC40YzAgMjcuOC0yMi41IDUwLjQtNTAuMyA1MC40eicpKTtcbmV4cG9ydHMuU2xhY2tTcXVhcmVGaWxsID0gZ2V0SWNvbignc2xhY2stc3F1YXJlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNTI5IDMxMS40YzAtMjcuOCAyMi41LTUwLjQgNTAuMy01MC40IDI3LjggMCA1MC4zIDIyLjYgNTAuMyA1MC40djEzNC40YzAgMjcuOC0yMi41IDUwLjQtNTAuMyA1MC40LTI3LjggMC01MC4zLTIyLjYtNTAuMy01MC40VjMxMS40ek0zNjEuNSA1ODAuMmMwIDI3LjgtMjIuNSA1MC40LTUwLjMgNTAuNGE1MC4zNSA1MC4zNSAwIDAgMS01MC4zLTUwLjRjMC0yNy44IDIyLjUtNTAuNCA1MC4zLTUwLjRoNTAuM3Y1MC40em0xMzQgMTM0LjRjMCAyNy44LTIyLjUgNTAuNC01MC4zIDUwLjQtMjcuOCAwLTUwLjMtMjIuNi01MC4zLTUwLjRWNTgwLjJjMC0yNy44IDIyLjUtNTAuNCA1MC4zLTUwLjRhNTAuMzUgNTAuMzUgMCAwIDEgNTAuMyA1MC40djEzNC40em0tNTAuMi0yMTguNGgtMTM0Yy0yNy44IDAtNTAuMy0yMi42LTUwLjMtNTAuNCAwLTI3LjggMjIuNS01MC40IDUwLjMtNTAuNGgxMzRjMjcuOCAwIDUwLjMgMjIuNiA1MC4zIDUwLjQtLjEgMjcuOS0yMi42IDUwLjQtNTAuMyA1MC40em0wLTEzNC40Yy0xMy4zIDAtMjYuMS01LjMtMzUuNi0xNC44UzM5NSAzMjQuOCAzOTUgMzExLjRjMC0yNy44IDIyLjUtNTAuNCA1MC4zLTUwLjQgMjcuOCAwIDUwLjMgMjIuNiA1MC4zIDUwLjR2NTAuNGgtNTAuM3ptMTM0IDQwMy4yYy0yNy44IDAtNTAuMy0yMi42LTUwLjMtNTAuNHYtNTAuNGg1MC4zYzI3LjggMCA1MC4zIDIyLjYgNTAuMyA1MC40IDAgMjcuOC0yMi41IDUwLjQtNTAuMyA1MC40em0xMzQtMTM0LjRoLTEzNGE1MC4zNSA1MC4zNSAwIDAgMS01MC4zLTUwLjRjMC0yNy44IDIyLjUtNTAuNCA1MC4zLTUwLjRoMTM0YzI3LjggMCA1MC4zIDIyLjYgNTAuMyA1MC40IDAgMjcuOC0yMi41IDUwLjQtNTAuMyA1MC40em0wLTEzNC40SDY2M3YtNTAuNGMwLTI3LjggMjIuNS01MC40IDUwLjMtNTAuNHM1MC4zIDIyLjYgNTAuMyA1MC40YzAgMjcuOC0yMi41IDUwLjQtNTAuMyA1MC40eicpKTtcbmV4cG9ydHMuU2t5cGVGaWxsID0gZ2V0SWNvbignc2t5cGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgzLjcgNTc4LjZjNC4xLTIyLjUgNi4zLTQ1LjUgNi4zLTY4LjUgMC01MS0xMC0xMDAuNS0yOS43LTE0Ny0xOS00NS00Ni4zLTg1LjQtODEtMTIwLjFhMzc1Ljc5IDM3NS43OSAwIDAgMC0xMjAuMS04MC45Yy00Ni42LTE5LjctOTYtMjkuNy0xNDctMjkuNy0yNCAwLTQ4LjEgMi4zLTcxLjUgNi44QTIyNS4xIDIyNS4xIDAgMCAwIDMzNS42IDExM2MtNTkuNyAwLTExNS45IDIzLjMtMTU4LjEgNjUuNUEyMjIuMjUgMjIyLjI1IDAgMCAwIDExMiAzMzYuNmMwIDM4IDkuOCA3NS40IDI4LjEgMTA4LjQtMy43IDIxLjQtNS43IDQzLjMtNS43IDY1LjEgMCA1MSAxMCAxMDAuNSAyOS43IDE0NyAxOSA0NSA0Ni4yIDg1LjQgODAuOSAxMjAuMSAzNC43IDM0LjcgNzUuMSA2MS45IDEyMC4xIDgwLjkgNDYuNiAxOS43IDk2IDI5LjcgMTQ3IDI5LjcgMjIuMiAwIDQ0LjQtMiA2Ni4yLTUuOSAzMy41IDE4LjkgNzEuMyAyOSAxMTAgMjkgNTkuNyAwIDExNS45LTIzLjIgMTU4LjEtNjUuNSA0Mi4zLTQyLjIgNjUuNS05OC40IDY1LjUtMTU4LjEuMS0zOC05LjctNzUuNS0yOC4yLTEwOC43em0tMzcwIDE2Mi45Yy0xMzQuMiAwLTE5NC4yLTY2LTE5NC4yLTExNS40IDAtMjUuNCAxOC43LTQzLjEgNDQuNS00My4xIDU3LjQgMCA0Mi42IDgyLjUgMTQ5LjcgODIuNSA1NC45IDAgODUuMi0yOS44IDg1LjItNjAuMyAwLTE4LjMtOS0zOC43LTQ1LjItNDcuNmwtMTE5LjQtMjkuOGMtOTYuMS0yNC4xLTExMy42LTc2LjEtMTEzLjYtMTI0LjkgMC0xMDEuNCA5NS41LTEzOS41IDE4NS4yLTEzOS41IDgyLjYgMCAxODAgNDUuNyAxODAgMTA2LjUgMCAyNi4xLTIyLjYgNDEuMi00OC40IDQxLjItNDkgMC00MC02Ny44LTEzOC43LTY3LjgtNDkgMC03Ni4xIDIyLjItNzYuMSA1My45czM4LjcgNDEuOCA3Mi4zIDQ5LjVsODguNCAxOS42Yzk2LjggMjEuNiAxMjEuMyA3OC4xIDEyMS4zIDEzMS4zIDAgODIuMy02My4zIDE0My45LTE5MSAxNDMuOXonKSk7XG5leHBvcnRzLlNsaWRlcnNGaWxsID0gZ2V0SWNvbignc2xpZGVycycsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MDQgMjk2aC02NnYtOTZjMC00LjQtMy42LTgtOC04aC01MmMtNC40IDAtOCAzLjYtOCA4djk2aC02NmMtNC40IDAtOCAzLjYtOCA4djQxNmMwIDQuNCAzLjYgOCA4IDhoNjZ2OTZjMCA0LjQgMy42IDggOCA4aDUyYzQuNCAwIDgtMy42IDgtOHYtOTZoNjZjNC40IDAgOC0zLjYgOC04VjMwNGMwLTQuNC0zLjYtOC04LTh6bS01ODQtNzJoLTY2di01NmMwLTQuNC0zLjYtOC04LThoLTUyYy00LjQgMC04IDMuNi04IDh2NTZoLTY2Yy00LjQgMC04IDMuNi04IDh2NTYwYzAgNC40IDMuNiA4IDggOGg2NnY1NmMwIDQuNCAzLjYgOCA4IDhoNTJjNC40IDAgOC0zLjYgOC04di01Nmg2NmM0LjQgMCA4LTMuNiA4LThWMjMyYzAtNC40LTMuNi04LTgtOHptMjkyIDE4MGgtNjZWMjMyYzAtNC40LTMuNi04LTgtOGgtNTJjLTQuNCAwLTggMy42LTggOHYxNzJoLTY2Yy00LjQgMC04IDMuNi04IDh2MjAwYzAgNC40IDMuNiA4IDggOGg2NnYxNzJjMCA0LjQgMy42IDggOCA4aDUyYzQuNCAwIDgtMy42IDgtOFY2MjBoNjZjNC40IDAgOC0zLjYgOC04VjQxMmMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5TbWlsZUZpbGwgPSBnZXRJY29uKCdzbWlsZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHpNMjg4IDQyMWE0OC4wMSA0OC4wMSAwIDAgMSA5NiAwIDQ4LjAxIDQ4LjAxIDAgMCAxLTk2IDB6bTIyNCAyNzJjLTg1LjUgMC0xNTUuNi02Ny4zLTE2MC0xNTEuNmE4IDggMCAwIDEgOC04LjRoNDguMWM0LjIgMCA3LjggMy4yIDguMSA3LjRDNDIwIDU4OS45IDQ2MS41IDYyOSA1MTIgNjI5czkyLjEtMzkuMSA5NS44LTg4LjZjLjMtNC4yIDMuOS03LjQgOC4xLTcuNEg2NjRhOCA4IDAgMCAxIDggOC40QzY2Ny42IDYyNS43IDU5Ny41IDY5MyA1MTIgNjkzem0xNzYtMjI0YTQ4LjAxIDQ4LjAxIDAgMCAxIDAtOTYgNDguMDEgNDguMDEgMCAwIDEgMCA5NnonKSk7XG5leHBvcnRzLlNuaXBwZXRzRmlsbCA9IGdldEljb24oJ3NuaXBwZXRzJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTgzMiAxMTJINzI0VjcyYzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY0MEg1MDBWNzJjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djQwSDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTIwaC05NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDUxMmMxNy43IDAgMzItMTQuMyAzMi0zMnYtOTZoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek02NjQgNDg2SDUxNFYzMzZoLjJMNjY0IDQ4NS44di4yem0xMjggMjc0aC01NlY0NTZMNTQ0IDI2NEgzNjB2LTgwaDY4djMyYzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTMyaDE1MnYzMmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di0zMmg2OHY1NzZ6JykpO1xuZXhwb3J0cy5Tb3VuZEZpbGwgPSBnZXRJY29uKCdzb3VuZCcsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004OTIuMSA3MzcuOGwtMTEwLjMtNjMuN2ExNS45IDE1LjkgMCAwIDAtMjEuNyA1LjlsLTE5LjkgMzQuNWMtNC40IDcuNi0xLjggMTcuNCA1LjggMjEuOEw4NTYuMyA4MDBhMTUuOSAxNS45IDAgMCAwIDIxLjctNS45bDE5LjktMzQuNWM0LjQtNy42IDEuNy0xNy40LTUuOC0yMS44ek03NjAgMzQ0YTE1LjkgMTUuOSAwIDAgMCAyMS43IDUuOUw4OTIgMjg2LjJjNy42LTQuNCAxMC4yLTE0LjIgNS44LTIxLjhMODc4IDIzMGExNS45IDE1LjkgMCAwIDAtMjEuNy01LjlMNzQ2IDI4Ny44YTE1Ljk5IDE1Ljk5IDAgMCAwLTUuOCAyMS44TDc2MCAzNDR6bTE3NCAxMzJIODA2Yy04LjggMC0xNiA3LjItMTYgMTZ2NDBjMCA4LjggNy4yIDE2IDE2IDE2aDEyOGM4LjggMCAxNi03LjIgMTYtMTZ2LTQwYzAtOC44LTcuMi0xNi0xNi0xNnpNNjI1LjkgMTE1Yy01LjkgMC0xMS45IDEuNi0xNy40IDUuM0wyNTQgMzUySDkwYy04LjggMC0xNiA3LjItMTYgMTZ2Mjg4YzAgOC44IDcuMiAxNiAxNiAxNmgxNjRsMzU0LjUgMjMxLjdjNS41IDMuNiAxMS42IDUuMyAxNy40IDUuMyAxNi43IDAgMzIuMS0xMy4zIDMyLjEtMzIuMVYxNDcuMWMwLTE4LjgtMTUuNC0zMi4xLTMyLjEtMzIuMXonKSk7XG5leHBvcnRzLlN0YXJGaWxsID0gZ2V0SWNvbignc3RhcicsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MDguMSAzNTMuMWwtMjUzLjktMzYuOUw1NDAuNyA4Ni4xYy0zLjEtNi4zLTguMi0xMS40LTE0LjUtMTQuNS0xNS44LTcuOC0zNS0xLjMtNDIuOSAxNC41TDM2OS44IDMxNi4ybC0yNTMuOSAzNi45Yy03IDEtMTMuNCA0LjMtMTguMyA5LjNhMzIuMDUgMzIuMDUgMCAwIDAgLjYgNDUuM2wxODMuNyAxNzkuMS00My40IDI1Mi45YTMxLjk1IDMxLjk1IDAgMCAwIDQ2LjQgMzMuN0w1MTIgNzU0bDIyNy4xIDExOS40YzYuMiAzLjMgMTMuNCA0LjQgMjAuMyAzLjIgMTcuNC0zIDI5LjEtMTkuNSAyNi4xLTM2LjlsLTQzLjQtMjUyLjkgMTgzLjctMTc5LjFjNS00LjkgOC4zLTExLjMgOS4zLTE4LjMgMi43LTE3LjUtOS41LTMzLjctMjctMzYuM3onKSk7XG5leHBvcnRzLlN0ZXBCYWNrd2FyZEZpbGwgPSBnZXRJY29uKCdzdGVwLWJhY2t3YXJkJywgZmlsbCwgZ2V0Tm9kZShub3JtYWxWaWV3Qm94LCAnTTM0Ny42IDUyOC45NWwzODMuMiAzMDEuMDJjMTQuMjUgMTEuMiAzNS4yIDEuMSAzNS4yLTE2Ljk1VjIxMC45N2MwLTE4LjA1LTIwLjk1LTI4LjE0LTM1LjItMTYuOTRMMzQ3LjYgNDk1LjA1YTIxLjUzIDIxLjUzIDAgMCAwIDAgMzMuOU0zMzAgODY0aC02NGE4IDggMCAwIDEtOC04VjE2OGE4IDggMCAwIDEgOC04aDY0YTggOCAwIDAgMSA4IDh2Njg4YTggOCAwIDAgMS04IDgnKSk7XG5leHBvcnRzLlN0ZXBGb3J3YXJkRmlsbCA9IGdldEljb24oJ3N0ZXAtZm9yd2FyZCcsIGZpbGwsIGdldE5vZGUobm9ybWFsVmlld0JveCwgJ002NzYuNCA1MjguOTVMMjkzLjIgODI5Ljk3Yy0xNC4yNSAxMS4yLTM1LjIgMS4xLTM1LjItMTYuOTVWMjEwLjk3YzAtMTguMDUgMjAuOTUtMjguMTQgMzUuMi0xNi45NGwzODMuMiAzMDEuMDJhMjEuNTMgMjEuNTMgMCAwIDEgMCAzMy45TTY5NCA4NjRoNjRhOCA4IDAgMCAwIDgtOFYxNjhhOCA4IDAgMCAwLTgtOGgtNjRhOCA4IDAgMCAwLTggOHY2ODhhOCA4IDAgMCAwIDggOCcpKTtcbmV4cG9ydHMuU3RvcEZpbGwgPSBnZXRJY29uKCdzdG9wJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0yMzQuOCA3MzYuNUwyMjMuNSAyNzcuMmMxNi0xOS43IDM0LTM3LjcgNTMuNy01My43bDUyMy4zIDUyMy4zYy0xNiAxOS42LTM0IDM3LjctNTMuNyA1My43eicpKTtcbmV4cG9ydHMuU3dpdGNoZXJGaWxsID0gZ2V0SWNvbignc3dpdGNoZXInLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNzUyIDI0MEgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjYwOGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjcyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek01OTYgNjA2YzAgNC40LTMuNiA4LTggOEgzMDhjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDI4MGM0LjQgMCA4IDMuNiA4IDh2NDh6bTI4NC00OTRIMjY0Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU3NnY1NzZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOFYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6JykpO1xuZXhwb3J0cy5UYWJsZXRGaWxsID0gZ2V0SWNvbigndGFibGV0JywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTgwMCA2NEgyMjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djc2OGMwIDM1LjMgMjguNyA2NCA2NCA2NGg1NzZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0ek01MTIgODI0Yy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwIDQwIDE3LjkgNDAgNDAtMTcuOSA0MC00MCA0MHonKSk7XG5leHBvcnRzLlRhZ0ZpbGwgPSBnZXRJY29uKCd0YWcnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTM4IDQ1OC44bC0yOS42LTMxMi42Yy0xLjUtMTYuMi0xNC40LTI5LTMwLjYtMzAuNkw1NjUuMiA4NmgtLjRjLTMuMiAwLTUuNyAxLTcuNiAyLjlMODguOSA1NTcuMmE5Ljk2IDkuOTYgMCAwIDAgMCAxNC4xbDM2My44IDM2My44YzEuOSAxLjkgNC40IDIuOSA3LjEgMi45czUuMi0xIDcuMS0yLjlsNDY4LjMtNDY4LjNjMi0yLjEgMy01IDIuOC04ek02OTkgMzg3Yy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0IDY0IDI4LjcgNjQgNjQtMjguNyA2NC02NCA2NHonKSk7XG5leHBvcnRzLlRhZ3NGaWxsID0gZ2V0SWNvbigndGFncycsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ000ODMuMiA3OTAuM0w4NjEuNCA0MTJjMS43LTEuNyAyLjUtNCAyLjMtNi4zbC0yNS41LTMwMS40Yy0uNy03LjgtNi44LTEzLjktMTQuNi0xNC42TDUyMi4yIDY0LjNjLTIuMy0uMi00LjcuNi02LjMgMi4zTDEzNy43IDQ0NC44YTguMDMgOC4wMyAwIDAgMCAwIDExLjNsMzM0LjIgMzM0LjJjMy4xIDMuMiA4LjIgMy4yIDExLjMgMHptMTIyLjctNTMzLjRjMTguNy0xOC43IDQ5LjEtMTguNyA2Ny45IDAgMTguNyAxOC43IDE4LjcgNDkuMSAwIDY3LjktMTguNyAxOC43LTQ5LjEgMTguNy02Ny45IDAtMTguNy0xOC43LTE4LjctNDkuMSAwLTY3Ljl6bTI4My44IDI4Mi45bC0zOS42LTM5LjVhOC4wMyA4LjAzIDAgMCAwLTExLjMgMGwtMzYyIDM2MS4zLTIzNy42LTIzN2E4LjAzIDguMDMgMCAwIDAtMTEuMyAwbC0zOS42IDM5LjVhOC4wMyA4LjAzIDAgMCAwIDAgMTEuM2wyNDMuMiAyNDIuOCAzOS42IDM5LjVjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGw0MDcuMy00MDYuNmMzLjEtMy4xIDMuMS04LjIgMC0xMS4zeicpKTtcbmV4cG9ydHMuVGFvYmFvQ2lyY2xlRmlsbCA9IGdldEljb24oJ3Rhb2Jhby1jaXJjbGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6TTMxNS43IDI5MS41YzI3LjMgMCA0OS41IDIyLjEgNDkuNSA0OS40cy0yMi4xIDQ5LjQtNDkuNSA0OS40YTQ5LjQgNDkuNCAwIDEgMSAwLTk4Ljh6TTM2Ni45IDU3OGMtMTMuNiA0Mi4zLTEwLjIgMjYuNy02NC40IDE0NC41bC03OC41LTQ5czg3LjctNzkuOCAxMDUuNi0xMTYuMmMxOS4yLTM4LjQtMjEuMS01OC45LTIxLjEtNTguOWwtNjAuMi0zNy41IDMyLjctNTAuMmM0NS40IDMzLjcgNDguNyAzNi42IDc5LjIgNjcuMiAyMy44IDIzLjkgMjAuNyA1Ni44IDYuNyAxMDAuMXptNDI3LjIgNTVjLTE1LjMgMTQzLjgtMjAyLjQgOTAuMy0yMDIuNCA5MC4zbDEwLjItNDEuMSA0My4zIDkuM2M4MCA1IDcyLjMtNjQuOSA3Mi4zLTY0LjlWNDIzYy42LTc3LjMtNzIuNi04NS40LTIwNC4yLTM4LjNsMzAuNiA4LjNjLTIuNSA5LTEyLjUgMjMuMi0yNS4yIDM4LjZoMTc2djM1LjZoLTk5LjF2NDQuNWg5OC43djM1LjdoLTk4LjdWNjIyYzE0LjktNC44IDI4LjYtMTEuNSA0MC41LTIwLjVsLTguNy0zMi41IDQ2LjUtMTQuNCAzOC44IDk0LjktNTcuMyAyMy45LTEwLjItMzcuOGMtMjUuNiAxOS41LTc4LjggNDgtMTcxLjggNDUuNC05OS4yIDIuNi03My43LTExMi03My43LTExMmwyLjUtMS4zSDQ3MmMtLjUgMTQuNy02LjYgMzguNyAxLjcgNTEuOCA2LjggMTAuOCAyNC4yIDEyLjYgMzUuMyAxMy4xIDEuMy4xIDIuNi4xIDMuOS4xdi04NS4zaC0xMDF2LTM1LjdoMTAxdi00NC41SDQ4N2MtMjIuNyAyNC4xLTQzLjUgNDQuMS00My41IDQ0LjFsLTMwLjYtMjYuN2MyMS43LTIyLjkgNDMuMy01OS4xIDU2LjgtODMuMi0xMC45IDQuNC0yMiA5LjItMzMuNiAxNC4yLTExLjIgMTQuMy0yNC4yIDI5LTM4LjcgNDMuNS41LjgtNTAtMjguNC01MC0yOC40IDUyLjItNDQuNCA4MS40LTEzOS45IDgxLjQtMTM5LjlsNzIuNSAyMC40cy01LjkgMTQtMTguNCAzNS42YzI5MC4zLTgyLjMgMzA3LjQgNTAuNSAzMDcuNCA1MC41czE5LjEgOTEuOCAzLjggMjM1Ljd6JykpO1xuZXhwb3J0cy5UYW9iYW9TcXVhcmVGaWxsID0gZ2V0SWNvbigndGFvYmFvLXNxdWFyZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTMxNS43IDI5MS41YzI3LjMgMCA0OS41IDIyLjEgNDkuNSA0OS40cy0yMi4xIDQ5LjQtNDkuNSA0OS40YTQ5LjQgNDkuNCAwIDEgMSAwLTk4Ljh6TTM2Ni45IDU3OGMtMTMuNiA0Mi4zLTEwLjIgMjYuNy02NC40IDE0NC41bC03OC41LTQ5czg3LjctNzkuOCAxMDUuNi0xMTYuMmMxOS4yLTM4LjQtMjEuMS01OC45LTIxLjEtNTguOWwtNjAuMi0zNy41IDMyLjctNTAuMmM0NS40IDMzLjcgNDguNyAzNi42IDc5LjIgNjcuMiAyMy44IDIzLjkgMjAuNyA1Ni44IDYuNyAxMDAuMXptNDI3LjIgNTVjLTE1LjMgMTQzLjgtMjAyLjQgOTAuMy0yMDIuNCA5MC4zbDEwLjItNDEuMSA0My4zIDkuM2M4MCA1IDcyLjMtNjQuOSA3Mi4zLTY0LjlWNDIzYy42LTc3LjMtNzIuNi04NS40LTIwNC4yLTM4LjNsMzAuNiA4LjNjLTIuNSA5LTEyLjUgMjMuMi0yNS4yIDM4LjZoMTc2djM1LjZoLTk5LjF2NDQuNWg5OC43djM1LjdoLTk4LjdWNjIyYzE0LjktNC44IDI4LjYtMTEuNSA0MC41LTIwLjVsLTguNy0zMi41IDQ2LjUtMTQuNCAzOC44IDk0LjktNTcuMyAyMy45LTEwLjItMzcuOGMtMjUuNiAxOS41LTc4LjggNDgtMTcxLjggNDUuNC05OS4yIDIuNi03My43LTExMi03My43LTExMmwyLjUtMS4zSDQ3MmMtLjUgMTQuNy02LjYgMzguNyAxLjcgNTEuOCA2LjggMTAuOCAyNC4yIDEyLjYgMzUuMyAxMy4xIDEuMy4xIDIuNi4xIDMuOS4xdi04NS4zaC0xMDF2LTM1LjdoMTAxdi00NC41SDQ4N2MtMjIuNyAyNC4xLTQzLjUgNDQuMS00My41IDQ0LjFsLTMwLjYtMjYuN2MyMS43LTIyLjkgNDMuMy01OS4xIDU2LjgtODMuMi0xMC45IDQuNC0yMiA5LjItMzMuNiAxNC4yLTExLjIgMTQuMy0yNC4yIDI5LTM4LjcgNDMuNS41LjgtNTAtMjguNC01MC0yOC40IDUyLjItNDQuNCA4MS40LTEzOS45IDgxLjQtMTM5LjlsNzIuNSAyMC40cy01LjkgMTQtMTguNCAzNS42YzI5MC4zLTgyLjMgMzA3LjQgNTAuNSAzMDcuNCA1MC41czE5LjEgOTEuOCAzLjggMjM1Ljd6JykpO1xuZXhwb3J0cy5Ub29sRmlsbCA9IGdldEljb24oJ3Rvb2wnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODY1LjMgMjQ0LjdjLS4zLS4zLTYxLjEgNTkuOC0xODIuMSAxODAuNmwtODQuOS04NC45IDE4MC45LTE4MC45Yy05NS4yLTU3LjMtMjE3LjUtNDIuNi0yOTYuOCAzNi43QTI0NC40MiAyNDQuNDIgMCAwIDAgNDE5IDQzMmwxLjggNi43LTI4My41IDI4My40Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNmwxNDEuNCAxNDEuNGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwyODMuMy0yODMuMyA2LjcgMS44YzgzLjcgMjIuMyAxNzMuNi0uOSAyMzYtNjMuMyA3OS40LTc5LjMgOTQuMS0yMDEuNiAzOC0yOTYuNnonKSk7XG5leHBvcnRzLlRodW5kZXJib2x0RmlsbCA9IGdldEljb24oJ3RodW5kZXJib2x0JywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg0OCAzNTkuM0g2MjcuN0w4MjUuOCAxMDljNC4xLTUuMy40LTEzLTYuMy0xM0g0MzZjLTIuOCAwLTUuNSAxLjUtNi45IDRMMTcwIDU0Ny41Yy0zLjEgNS4zLjcgMTIgNi45IDEyaDE3NC40bC04OS40IDM1Ny42Yy0xLjkgNy44IDcuNSAxMy4zIDEzLjMgNy43TDg1My41IDM3M2M1LjItNC45IDEuNy0xMy43LTUuNS0xMy43eicpKTtcbmV4cG9ydHMuVHJhZGVtYXJrQ2lyY2xlRmlsbCA9IGdldEljb24oJ3RyYWRlbWFyay1jaXJjbGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTE2NC43IDY2MC4yYy0xLjEuNS0yLjMuOC0zLjUuOGgtNjJjLTMuMSAwLTUuOS0xLjgtNy4yLTQuNmwtNzQuNi0xNTkuMmgtODguN1Y3MTdjMCA0LjQtMy42IDgtOCA4SDM3OGMtNC40IDAtOC0zLjYtOC04VjMwN2MwLTQuNCAzLjYtOCA4LThoMTU1LjZjOTguOCAwIDE0NC4yIDU5LjkgMTQ0LjIgMTMxLjEgMCA3MC4yLTQzLjYgMTA2LjQtNzguNCAxMTkuMmw4MC44IDE2NC4yYzIuMSAzLjkuNCA4LjctMy41IDEwLjd6TTUyMy45IDM1N2gtODMuNHYxNDhINTIyYzUzIDAgODIuOC0yNS42IDgyLjgtNzIuNCAwLTUwLjMtMzIuOS03NS42LTgwLjktNzUuNnonKSk7XG5leHBvcnRzLlR3aXR0ZXJDaXJjbGVGaWxsID0gZ2V0SWNvbigndHdpdHRlci1jaXJjbGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTIxNS4zIDMzNy43Yy4zIDQuNy4zIDkuNi4zIDE0LjQgMCAxNDYuOC0xMTEuOCAzMTUuOS0zMTYuMSAzMTUuOS02MyAwLTEyMS40LTE4LjMtMTcwLjYtNDkuOCA5IDEgMTcuNiAxLjQgMjYuOCAxLjQgNTIgMCA5OS44LTE3LjYgMTM3LjktNDcuNC00OC44LTEtODkuOC0zMy0xMDMuOC03NyAxNy4xIDIuNSAzMi41IDIuNSA1MC4xLTJhMTExIDExMSAwIDAgMS04OC45LTEwOXYtMS40YzE0LjcgOC4zIDMyIDEzLjQgNTAuMSAxNC4xYTExMS4xMyAxMTEuMTMgMCAwIDEtNDkuNS05Mi40YzAtMjAuNyA1LjQtMzkuNiAxNS4xLTU2YTMxNS4yOCAzMTUuMjggMCAwIDAgMjI5IDExNi4xQzQ5MiAzNTMuMSA1NDguNCAyOTIgNjE2LjIgMjkyYzMyIDAgNjAuOCAxMy40IDgxLjEgMzUgMjUuMS00LjcgNDkuMS0xNC4xIDcwLjUtMjYuNy04LjMgMjUuNy0yNS43IDQ3LjQtNDguOCA2MS4xIDIyLjQtMi40IDQ0LTguNiA2NC0xNy4zLTE1LjEgMjIuMi0zNCA0MS45LTU1LjcgNTcuNnonKSk7XG5leHBvcnRzLlRyb3BoeUZpbGwgPSBnZXRJY29uKCd0cm9waHknLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODY4IDE2MGgtOTJ2LTQwYzAtNC40LTMuNi04LTgtOEgyNTZjLTQuNCAwLTggMy42LTggOHY0MGgtOTJhNDQgNDQgMCAwIDAtNDQgNDR2MTQ4YzAgODEuNyA2MCAxNDkuNiAxMzguMiAxNjJDMjY1LjYgNjMwLjIgMzU5IDcyMS44IDQ3NiA3MzQuNXYxMDUuMkgyODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjkwNGMwIDQuNCAzLjYgOCA4IDhoNTEyYzQuNCAwIDgtMy42IDgtOHYtMzIuM2MwLTE3LjctMTQuMy0zMi0zMi0zMkg1NDhWNzM0LjVDNjY1IDcyMS44IDc1OC40IDYzMC4yIDc3My44IDUxNCA4NTIgNTAxLjYgOTEyIDQzMy43IDkxMiAzNTJWMjA0YTQ0IDQ0IDAgMCAwLTQ0LTQ0ek0yNDggNDM5LjZjLTM3LjEtMTEuOS02NC00Ni43LTY0LTg3LjZWMjMyaDY0djIwNy42ek04NDAgMzUyYzAgNDEtMjYuOSA3NS44LTY0IDg3LjZWMjMyaDY0djEyMHonKSk7XG5leHBvcnRzLlR3aXR0ZXJTcXVhcmVGaWxsID0gZ2V0SWNvbigndHdpdHRlci1zcXVhcmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek03MjcuMyA0MDEuN2MuMyA0LjcuMyA5LjYuMyAxNC40IDAgMTQ2LjgtMTExLjggMzE1LjktMzE2LjEgMzE1LjktNjMgMC0xMjEuNC0xOC4zLTE3MC42LTQ5LjggOSAxIDE3LjYgMS40IDI2LjggMS40IDUyIDAgOTkuOC0xNy42IDEzNy45LTQ3LjQtNDguOC0xLTg5LjgtMzMtMTAzLjgtNzcgMTcuMSAyLjUgMzIuNSAyLjUgNTAuMS0yYTExMSAxMTEgMCAwIDEtODguOS0xMDl2LTEuNGMxNC43IDguMyAzMiAxMy40IDUwLjEgMTQuMWExMTEuMTMgMTExLjEzIDAgMCAxLTQ5LjUtOTIuNGMwLTIwLjcgNS40LTM5LjYgMTUuMS01NmEzMTUuMjggMzE1LjI4IDAgMCAwIDIyOSAxMTYuMUM0OTIgMzUzLjEgNTQ4LjQgMjkyIDYxNi4yIDI5MmMzMiAwIDYwLjggMTMuNCA4MS4xIDM1IDI1LjEtNC43IDQ5LjEtMTQuMSA3MC41LTI2LjctOC4zIDI1LjctMjUuNyA0Ny40LTQ4LjggNjEuMSAyMi40LTIuNCA0NC04LjYgNjQtMTcuMy0xNS4xIDIyLjItMzQgNDEuOS01NS43IDU3LjZ6JykpO1xuZXhwb3J0cy5VbmxvY2tGaWxsID0gZ2V0SWNvbigndW5sb2NrJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTgzMiA0NjRIMzMyVjI0MGMwLTMwLjkgMjUuMS01NiA1Ni01NmgyNDhjMzAuOSAwIDU2IDI1LjEgNTYgNTZ2NjhjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNjhjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhIMzg4Yy03MC43IDAtMTI4IDU3LjMtMTI4IDEyOHYyMjRoLTY4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzODRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjQ5NmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNTQwIDcwMXY1M2MwIDQuNC0zLjYgOC04IDhoLTQwYy00LjQgMC04LTMuNi04LTh2LTUzYTQ4LjAxIDQ4LjAxIDAgMSAxIDU2IDB6JykpO1xuZXhwb3J0cy5VcENpcmNsZUZpbGwgPSBnZXRJY29uKCd1cC1jaXJjbGUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTE3OCA1NTVoLTQ2LjljLTEwLjIgMC0xOS45LTQuOS0yNS45LTEzLjJMNTEyIDQ2MC40IDQwNi44IDYwNS44Yy02IDguMy0xNS42IDEzLjItMjUuOSAxMy4ySDMzNGMtNi41IDAtMTAuMy03LjQtNi41LTEyLjdsMTc4LTI0NmMzLjItNC40IDkuNy00LjQgMTIuOSAwbDE3OCAyNDZjMy45IDUuMy4xIDEyLjctNi40IDEyLjd6JykpO1xuZXhwb3J0cy5VcFNxdWFyZUZpbGwgPSBnZXRJY29uKCd1cC1zcXVhcmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek02OTAgNjI0aC00Ni45Yy0xMC4yIDAtMTkuOS00LjktMjUuOS0xMy4yTDUxMiA0NjUuNCA0MDYuOCA2MTAuOGMtNiA4LjMtMTUuNiAxMy4yLTI1LjkgMTMuMkgzMzRjLTYuNSAwLTEwLjMtNy40LTYuNS0xMi43bDE3OC0yNDZjMy4yLTQuNCA5LjctNC40IDEyLjkgMGwxNzggMjQ2YzMuOSA1LjMuMSAxMi43LTYuNCAxMi43eicpKTtcbmV4cG9ydHMuVXNiRmlsbCA9IGdldEljb24oJ3VzYicsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ000MDggMzEyaDQ4YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHptMzUyIDEyMFYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJIMjk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYyODhjLTY2LjIgMC0xMjAgNTIuMS0xMjAgMTE2djM1NmMwIDQuNCAzLjYgOCA4IDhoNzIwYzQuNCAwIDgtMy42IDgtOFY1NDhjMC02My45LTUzLjgtMTE2LTEyMC0xMTZ6bS03MiAwSDMzNlYxODRoMzUydjI0OHpNNTY4IDMxMmg0OGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDh6JykpO1xuZXhwb3J0cy5XYWxsZXRGaWxsID0gZ2V0SWNvbignd2FsbGV0JywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTMyIDQ2NEg1MjhWNDQ4aDMyMHYxMjh6bS0yNjgtNjRhNDAgNDAgMCAxIDAgODAgMCA0MCA0MCAwIDEgMC04MCAweicpKTtcbmV4cG9ydHMuVmlkZW9DYW1lcmFGaWxsID0gZ2V0SWNvbigndmlkZW8tY2FtZXJhJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkxMiAzMDIuM0w3ODQgMzc2VjIyNGMwLTM1LjMtMjguNy02NC02NC02NEgxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0djU3NmMwIDM1LjMgMjguNyA2NCA2NCA2NGg1OTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjQ4bDEyOCA3My43YzIxLjMgMTIuMyA0OC0zLjEgNDgtMjcuNlYzMzBjMC0yNC42LTI2LjctNDAtNDgtMjcuN3pNMzI4IDM1MmMwIDQuNC0zLjYgOC04IDhIMjA4Yy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGgxMTJjNC40IDAgOCAzLjYgOCA4djQ4em01NjAgMjczbC0xMDQtNTkuOFY0NTguOUw4ODggMzk5djIyNnonKSk7XG5leHBvcnRzLldhcm5pbmdGaWxsID0gZ2V0SWNvbignd2FybmluZycsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ005NTUuNyA4NTZsLTQxNi03MjBjLTYuMi0xMC43LTE2LjktMTYtMjcuNy0xNnMtMjEuNiA1LjMtMjcuNyAxNmwtNDE2IDcyMEM1NiA4NzcuNCA3MS40IDkwNCA5NiA5MDRoODMyYzI0LjYgMCA0MC0yNi42IDI3LjctNDh6TTQ4MCA0MTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHYxODRjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04VjQxNnptMzIgMzUyYTQ4LjAxIDQ4LjAxIDAgMCAxIDAtOTYgNDguMDEgNDguMDEgMCAwIDEgMCA5NnonKSk7XG5leHBvcnRzLldlaWJvQ2lyY2xlRmlsbCA9IGdldEljb24oJ3dlaWJvLWNpcmNsZScsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptLTQ0LjQgNjcyQzM1My4xIDczNiAyMzYgNjgwLjQgMjM2IDU4OC45YzAtNDcuOCAzMC4yLTEwMy4xIDgyLjMtMTU1LjMgNjkuNS02OS42IDE1MC42LTEwMS40IDE4MS4xLTcwLjggMTMuNSAxMy41IDE0LjggMzYuOCA2LjEgNjQuNi00LjUgMTQgMTMuMSA2LjMgMTMuMSA2LjMgNTYuMi0yMy42IDEwNS4yLTI1IDEyMy4xLjcgOS42IDEzLjcgOC42IDMyLjgtLjIgNTUuMS00LjEgMTAuMiAxLjMgMTEuOCA5IDE0LjEgMzEuNyA5LjggNjYuOSAzMy42IDY2LjkgNzUuNS4yIDY5LjUtOTkuNyAxNTYuOS0yNDkuOCAxNTYuOXptMjA3LjMtMjkwLjhhMzQuOSAzNC45IDAgMCAwLTcuMi0zNC4xIDM0LjY4IDM0LjY4IDAgMCAwLTMzLjEtMTAuNyAxOC4yNCAxOC4yNCAwIDAgMS03LjYtMzUuN2MyNC4xLTUuMSA1MC4xIDIuMyA2Ny43IDIxLjkgMTcuNyAxOS42IDIyLjQgNDYuMyAxNC45IDY5LjhhMTguMTMgMTguMTMgMCAwIDEtMjIuOSAxMS43IDE4LjE4IDE4LjE4IDAgMCAxLTExLjgtMjIuOXptMTA2IDM0LjNzMCAuMSAwIDBhMjEuMSAyMS4xIDAgMCAxLTI2LjYgMTMuNyAyMS4xOSAyMS4xOSAwIDAgMS0xMy42LTI2LjdjMTEtMzQuMiA0LTczLjItMjEuNy0xMDEuOGExMDQuMDQgMTA0LjA0IDAgMCAwLTk4LjktMzIuMSAyMS4xNCAyMS4xNCAwIDAgMS0yNS4xLTE2LjMgMjEuMDcgMjEuMDcgMCAwIDEgMTYuMi0yNS4xYzQ5LjQtMTAuNSAxMDIuOCA0LjggMTM5LjEgNDUuMSAzNi4zIDQwLjIgNDYuMSA5NS4xIDMwLjYgMTQzLjJ6bS0zMzQuNSA2LjFjLTkxLjQgOS0xNjAuNyA2NS4xLTE1NC43IDEyNS4yIDUuOSA2MC4xIDg0LjggMTAxLjUgMTc2LjIgOTIuNSA5MS40LTkuMSAxNjAuNy02NS4xIDE1NC43LTEyNS4zLTUuOS02MC4xLTg0LjgtMTAxLjUtMTc2LjItOTIuNHptODAuMiAxNDEuN2MtMTguNyA0Mi4zLTcyLjMgNjQuOC0xMTcuOCA1MC4xLTQzLjktMTQuMi02Mi41LTU3LjctNDMuMy05Ni44IDE4LjktMzguNCA2OC02MC4xIDExMS41LTQ4LjggNDUgMTEuNyA2OCA1NC4yIDQ5LjYgOTUuNXptLTkzLTMyLjJjLTE0LjItNS45LTMyLjQuMi00MS4yIDEzLjktOC44IDEzLjgtNC43IDMwLjIgOS4zIDM2LjYgMTQuMyA2LjUgMzMuMi4zIDQyLTEzLjggOC44LTE0LjMgNC4yLTMwLjYtMTAuMS0zNi43em0zNC45LTE0LjVjLTUuNC0yLjItMTIuMi41LTE1LjQgNS44LTMuMSA1LjQtMS40IDExLjUgNC4xIDEzLjggNS41IDIuMyAxMi42LS4zIDE1LjgtNS44IDMtNS42IDEtMTEuOC00LjUtMTMuOHonKSk7XG5leHBvcnRzLldlY2hhdEZpbGwgPSBnZXRJY29uKCd3ZWNoYXQnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNjkwLjEgMzc3LjRjNS45IDAgMTEuOC4yIDE3LjYuNS0yNC40LTEyOC43LTE1OC4zLTIyNy4xLTMxOS45LTIyNy4xQzIwOSAxNTAuOCA2NCAyNzEuNCA2NCA0MjAuMmMwIDgxLjEgNDMuNiAxNTQuMiAxMTEuOSAyMDMuNmEyMS41IDIxLjUgMCAwIDEgOS4xIDE3LjZjMCAyLjQtLjUgNC42LTEuMSA2LjktNS41IDIwLjMtMTQuMiA1Mi44LTE0LjYgNTQuMy0uNyAyLjYtMS43IDUuMi0xLjcgNy45IDAgNS45IDQuOCAxMC44IDEwLjggMTAuOCAyLjMgMCA0LjItLjkgNi4yLTJsNzAuOS00MC45YzUuMy0zLjEgMTEtNSAxNy4yLTUgMy4yIDAgNi40LjUgOS41IDEuNCAzMy4xIDkuNSA2OC44IDE0LjggMTA1LjcgMTQuOCA2IDAgMTEuOS0uMSAxNy44LS40LTcuMS0yMS0xMC45LTQzLjEtMTAuOS02NiAwLTEzNS44IDEzMi4yLTI0NS44IDI5NS4zLTI0NS44em0tMTk0LjMtODYuNWMyMy44IDAgNDMuMiAxOS4zIDQzLjIgNDMuMXMtMTkuMyA0My4xLTQzLjIgNDMuMWMtMjMuOCAwLTQzLjItMTkuMy00My4yLTQzLjFzMTkuNC00My4xIDQzLjItNDMuMXptLTIxNS45IDg2LjJjLTIzLjggMC00My4yLTE5LjMtNDMuMi00My4xczE5LjMtNDMuMSA0My4yLTQzLjEgNDMuMiAxOS4zIDQzLjIgNDMuMS0xOS40IDQzLjEtNDMuMiA0My4xem01ODYuOCA0MTUuNmM1Ni45LTQxLjIgOTMuMi0xMDIgOTMuMi0xNjkuNyAwLTEyNC0xMjAuOC0yMjQuNS0yNjkuOS0yMjQuNS0xNDkgMC0yNjkuOSAxMDAuNS0yNjkuOSAyMjQuNVM1NDAuOSA4NDcuNSA2OTAgODQ3LjVjMzAuOCAwIDYwLjYtNC40IDg4LjEtMTIuMyAyLjYtLjggNS4yLTEuMiA3LjktMS4yIDUuMiAwIDkuOSAxLjYgMTQuMyA0LjFsNTkuMSAzNGMxLjcgMSAzLjMgMS43IDUuMiAxLjdhOSA5IDAgMCAwIDYuNC0yLjYgOSA5IDAgMCAwIDIuNi02LjRjMC0yLjItLjktNC40LTEuNC02LjYtLjMtMS4yLTcuNi0yOC4zLTEyLjItNDUuMy0uNS0xLjktLjktMy44LS45LTUuNy4xLTUuOSAzLjEtMTEuMiA3LjYtMTQuNXpNNjAwLjIgNTg3LjJjLTE5LjkgMC0zNi0xNi4xLTM2LTM1LjkgMC0xOS44IDE2LjEtMzUuOSAzNi0zNS45czM2IDE2LjEgMzYgMzUuOWMwIDE5LjgtMTYuMiAzNS45LTM2IDM1Ljl6bTE3OS45IDBjLTE5LjkgMC0zNi0xNi4xLTM2LTM1LjkgMC0xOS44IDE2LjEtMzUuOSAzNi0zNS45czM2IDE2LjEgMzYgMzUuOWEzNi4wOCAzNi4wOCAwIDAgMS0zNiAzNS45eicpKTtcbmV4cG9ydHMuV2luZG93c0ZpbGwgPSBnZXRJY29uKCd3aW5kb3dzJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUyMy44IDE5MS40djI4OC45aDM4MlYxMjguMXptMCA2NDIuMmwzODIgNjIuMnYtMzUyaC0zODJ6TTEyMC4xIDQ4MC4ySDQ0M1YyMDEuOWwtMzIyLjkgNTMuNXptMCAyOTAuNEw0NDMgODIzLjJWNTQzLjhIMTIwLjF6JykpO1xuZXhwb3J0cy5ZYWhvb0ZpbGwgPSBnZXRJY29uKCd5YWhvbycsIGZpbGwsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MzcuMyAyMzFIODI0LjdjLTE1LjUgMC0yNy43IDEyLjYtMjcuMSAyOC4xbDEzLjEgMzY2aDg0LjRsNjUuNC0zNjYuNGMyLjctMTUuMi03LjgtMjcuNy0yMy4yLTI3Ljd6bS03Ny40IDQ1MC40aC0xNC4xYy0yNy4xIDAtNDkuMiAyMi4yLTQ5LjIgNDkuM3YxNC4xYzAgMjcuMSAyMi4yIDQ5LjMgNDkuMiA0OS4zaDE0LjFjMjcuMSAwIDQ5LjItMjIuMiA0OS4yLTQ5LjN2LTE0LjFjMC0yNy4xLTIyLjItNDkuMy00OS4yLTQ5LjN6TTQwMi42IDIzMUMyMTYuMiAyMzEgNjUgMzU3IDY1IDUxMi41UzIxNi4yIDc5NCA0MDIuNiA3OTRzMzM3LjYtMTI2IDMzNy42LTI4MS41UzU4OS4xIDIzMSA0MDIuNiAyMzF6bTIyNS4yIDIyNS4yaC02NS4zTDQ1OC45IDU1OS44djY1LjNoODQuNHY1Ni4zSDMxOC4ydi01Ni4zaDg0LjR2LTY1LjNMMjQyLjkgMzk5LjloLTM3di01Ni4zaDE2OC41djU2LjNoLTM3bDkzLjQgOTMuNSAyOC4xLTI4LjFWNDAwaDE2OC44djU2LjJ6JykpO1xuZXhwb3J0cy5XZWlib1NxdWFyZUZpbGwgPSBnZXRJY29uKCd3ZWliby1zcXVhcmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNDMzLjYgNTk1LjFjLTE0LjItNS45LTMyLjQuMi00MS4yIDEzLjktOC44IDEzLjgtNC43IDMwLjIgOS4zIDM2LjYgMTQuMyA2LjUgMzMuMi4zIDQyLTEzLjggOC44LTE0LjMgNC4yLTMwLjYtMTAuMS0zNi43ek04ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTQ2Ny42IDczNkMzNTMuMSA3MzYgMjM2IDY4MC40IDIzNiA1ODguOWMwLTQ3LjggMzAuMi0xMDMuMSA4Mi4zLTE1NS4zIDY5LjUtNjkuNiAxNTAuNi0xMDEuNCAxODEuMS03MC44IDEzLjUgMTMuNSAxNC44IDM2LjggNi4xIDY0LjYtNC41IDE0IDEzLjEgNi4zIDEzLjEgNi4zIDU2LjItMjMuNiAxMDUuMi0yNSAxMjMuMS43IDkuNiAxMy43IDguNiAzMi44LS4yIDU1LjEtNC4xIDEwLjIgMS4zIDExLjggOSAxNC4xIDMxLjcgOS44IDY2LjkgMzMuNiA2Ni45IDc1LjUuMiA2OS41LTk5LjcgMTU2LjktMjQ5LjggMTU2Ljl6bTIwNy4zLTI5MC44YTM0LjkgMzQuOSAwIDAgMC03LjItMzQuMSAzNC42OCAzNC42OCAwIDAgMC0zMy4xLTEwLjcgMTguMjQgMTguMjQgMCAwIDEtNy42LTM1LjdjMjQuMS01LjEgNTAuMSAyLjMgNjcuNyAyMS45IDE3LjcgMTkuNiAyMi40IDQ2LjMgMTQuOSA2OS44YTE4LjEzIDE4LjEzIDAgMCAxLTIyLjkgMTEuNyAxOC4xOCAxOC4xOCAwIDAgMS0xMS44LTIyLjl6bTEwNiAzNC4zczAgLjEgMCAwYTIxLjEgMjEuMSAwIDAgMS0yNi42IDEzLjcgMjEuMTkgMjEuMTkgMCAwIDEtMTMuNi0yNi43YzExLTM0LjIgNC03My4yLTIxLjctMTAxLjhhMTA0LjA0IDEwNC4wNCAwIDAgMC05OC45LTMyLjEgMjEuMTQgMjEuMTQgMCAwIDEtMjUuMS0xNi4zIDIxLjA3IDIxLjA3IDAgMCAxIDE2LjItMjUuMWM0OS40LTEwLjUgMTAyLjggNC44IDEzOS4xIDQ1LjEgMzYuMyA0MC4yIDQ2LjEgOTUuMSAzMC42IDE0My4yem0tMzM0LjUgNi4xYy05MS40IDktMTYwLjcgNjUuMS0xNTQuNyAxMjUuMiA1LjkgNjAuMSA4NC44IDEwMS41IDE3Ni4yIDkyLjUgOTEuNC05LjEgMTYwLjctNjUuMSAxNTQuNy0xMjUuMy01LjktNjAuMS04NC44LTEwMS41LTE3Ni4yLTkyLjR6bTgwLjIgMTQxLjdjLTE4LjcgNDIuMy03Mi4zIDY0LjgtMTE3LjggNTAuMS00My45LTE0LjItNjIuNS01Ny43LTQzLjMtOTYuOCAxOC45LTM4LjQgNjgtNjAuMSAxMTEuNS00OC44IDQ1IDExLjcgNjggNTQuMiA0OS42IDk1LjV6bS01OC4xLTQ2LjdjLTUuNC0yLjItMTIuMi41LTE1LjQgNS44LTMuMSA1LjQtMS40IDExLjUgNC4xIDEzLjggNS41IDIuMyAxMi42LS4zIDE1LjgtNS44IDMtNS42IDEtMTEuOC00LjUtMTMuOHonKSk7XG5leHBvcnRzLll1cXVlRmlsbCA9IGdldEljb24oJ3l1cXVlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1NC42IDM3MC42Yy05LjktMzkuNCA5LjktMTAyLjIgNzMuNC0xMjQuNGwtNjcuOS0zLjZzLTI1LjctOTAtMTQzLjYtOThjLTExNy45LTguMS0xOTUtMy0xOTUtM3M4Ny40IDU1LjYgNTIuNCAxNTQuN2MtMjUuNiA1Mi41LTY1LjggOTUuNi0xMDguOCAxNDQuNy0xLjMgMS4zLTIuNSAyLjYtMy41IDMuN0MzMTkuNCA2MDUgOTYgODYwIDk2IDg2MGMyNDUuOSA2NC40IDQxMC43LTYuMyA1MDguMi05MS4xIDIwLjUtLjIgMzUuOS0uMyA0Ni4zLS4zIDEzNS44IDAgMjUwLjYtMTE3LjYgMjQ1LjktMjQ4LjQtMy4yLTg5LjktMzEuOS0xMTAuMi00MS44LTE0OS42eicpKTtcbmV4cG9ydHMuWW91dHViZUZpbGwgPSBnZXRJY29uKCd5b3V0dWJlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTk0MS4zIDI5Ni4xYTExMi4zIDExMi4zIDAgMCAwLTc5LjItNzkuM0M3OTIuMiAxOTggNTEyIDE5OCA1MTIgMTk4cy0yODAuMiAwLTM1MC4xIDE4LjdBMTEyLjEyIDExMi4xMiAwIDAgMCA4Mi43IDI5NkM2NCAzNjYgNjQgNTEyIDY0IDUxMnMwIDE0NiAxOC43IDIxNS45YzEwLjMgMzguNiA0MC43IDY5IDc5LjIgNzkuM0MyMzEuOCA4MjYgNTEyIDgyNiA1MTIgODI2czI4MC4yIDAgMzUwLjEtMTguOGMzOC42LTEwLjMgNjguOS00MC43IDc5LjItNzkuM0M5NjAgNjU4IDk2MCA1MTIgOTYwIDUxMnMwLTE0Ni0xOC43LTIxNS45ek00MjMgNjQ2VjM3OGwyMzIgMTMzLTIzMiAxMzV6JykpO1xuZXhwb3J0cy5aaGlodVNxdWFyZUZpbGwgPSBnZXRJY29uKCd6aGlodS1zcXVhcmUnLCBmaWxsLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek00MzIuMyA1OTIuOGw3MSA4MC43YzkuMiAzMy0zLjMgNjMuMS0zLjMgNjMuMWwtOTUuNy0xMTEuOXYtLjFjLTguOSAyOS0yMC4xIDU3LjMtMzMuMyA4NC43LTIyLjYgNDUuNy01NS4yIDU0LjctODkuNSA1Ny43LTM0LjQgMy0yMy4zLTUuMy0yMy4zLTUuMyA2OC01NS41IDc4LTg3LjggOTYuOC0xMjMuMSAxMS45LTIyLjMgMjAuNC02NC4zIDI1LjMtOTYuOEgyNjQuMXM0LjgtMzEuMiAxOS4yLTQxLjdoMTAxLjZjLjYtMTUuMy0xLjMtMTAyLjgtMi0xMzEuNGgtNDkuNGMtOS4yIDQ1LTQxIDU2LjctNDguMSA2MC4xLTcgMy40LTIzLjYgNy4xLTIxLjEgMCAyLjYtNy4xIDI3LTQ2LjIgNDMuMi0xMTAuNyAxNi4zLTY0LjYgNjMuOS02MiA2My45LTYyLTEyLjggMjIuNS0yMi40IDczLjYtMjIuNCA3My42aDE1OS43YzEwLjEgMCAxMC42IDM5IDEwLjYgMzloLTkwLjhjLS43IDIyLjctMi44IDgzLjgtNSAxMzEuNEg1MTlzMTIuMiAxNS40IDEyLjIgNDEuN2gtMTEwbC0uMSAxLjVjLTEuNSAyMC40LTYuMyA0My45LTEyLjkgNjcuNmwyNC4xLTE4LjF6bTMzNS41IDExNmgtODcuNmwtNjkuNSA0Ni42LTE2LjQtNDYuNmgtNDAuMVYzMjEuNWgyMTMuNnYzODcuM3pNNDA4LjIgNjExczAtLjEgMCAwem0yMTYgOTQuM2w1Ni44LTM4LjFoNDUuNi0uMVYzNjQuN0g1OTYuN3YzMDIuNWgxNC4xeicpKTtcbmV4cG9ydHMuWmhpaHVDaXJjbGVGaWxsID0gZ2V0SWNvbignemhpaHUtY2lyY2xlJywgZmlsbCwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0tOTAuNyA0NzcuOGwtLjEgMS41Yy0xLjUgMjAuNC02LjMgNDMuOS0xMi45IDY3LjZsMjQtMTguMSA3MSA4MC43YzkuMiAzMy0zLjMgNjMuMS0zLjMgNjMuMWwtOTUuNy0xMTEuOXYtLjFjLTguOSAyOS0yMC4xIDU3LjMtMzMuMyA4NC43LTIyLjYgNDUuNy01NS4yIDU0LjctODkuNSA1Ny43LTM0LjQgMy0yMy4zLTUuMy0yMy4zLTUuMyA2OC01NS41IDc4LTg3LjggOTYuOC0xMjMuMSAxMS45LTIyLjMgMjAuNC02NC4zIDI1LjMtOTYuOEgyNjQuMXM0LjgtMzEuMiAxOS4yLTQxLjdoMTAxLjZjLjYtMTUuMy0xLjMtMTAyLjgtMi0xMzEuNGgtNDkuNGMtOS4yIDQ1LTQxIDU2LjctNDguMSA2MC4xLTcgMy40LTIzLjYgNy4xLTIxLjEgMCAyLjYtNy4xIDI3LTQ2LjIgNDMuMi0xMTAuNyAxNi4zLTY0LjYgNjMuOS02MiA2My45LTYyLTEyLjggMjIuNS0yMi40IDczLjYtMjIuNCA3My42aDE1OS43YzEwLjEgMCAxMC42IDM5IDEwLjYgMzloLTkwLjhjLS43IDIyLjctMi44IDgzLjgtNSAxMzEuNEg1MTlzMTIuMiAxNS40IDEyLjIgNDEuN0g0MjEuM3ptMzQ2LjUgMTY3aC04Ny42bC02OS41IDQ2LjYtMTYuNC00Ni42aC00MC4xVjMyMS41aDIxMy42djM4Ny4zek00MDguMiA2MTFzMC0uMSAwIDB6bTIxNiA5NC4zbDU2LjgtMzguMWg0NS42LS4xVjM2NC43SDU5Ni43djMwMi41aDE0LjF6JykpO1xuZXhwb3J0cy5BY2NvdW50Qm9va091dGxpbmUgPSBnZXRJY29uKCdhY2NvdW50LWJvb2snLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDE4NEg3MTJ2LTY0YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY2NEgzODR2LTY0YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY2NEgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjE2YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNjU2SDE4NFYyNTZoMTI4djQ4YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTQ4aDI1NnY0OGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di00OGgxMjh2NTg0ek02MzkuNSA0MTRoLTQ1Yy0zIDAtNS44IDEuNy03LjEgNC40TDUxNCA1NjMuOGgtMi44bC03My40LTE0NS40YTggOCAwIDAgMC03LjEtNC40aC00NmMtMS4zIDAtMi43LjMtMy44IDEtMy45IDIuMS01LjMgNy0zLjIgMTAuOWw4OS4zIDE2NGgtNDguNmMtNC40IDAtOCAzLjYtOCA4djIxLjNjMCA0LjQgMy42IDggOCA4aDY1LjF2MzMuN2gtNjUuMWMtNC40IDAtOCAzLjYtOCA4djIxLjNjMCA0LjQgMy42IDggOCA4aDY1LjFWNzUyYzAgNC40IDMuNiA4IDggOGg0MS4zYzQuNCAwIDgtMy42IDgtOHYtNTMuOGg2NS40YzQuNCAwIDgtMy42IDgtOHYtMjEuM2MwLTQuNC0zLjYtOC04LThoLTY1LjR2LTMzLjdoNjUuNGM0LjQgMCA4LTMuNiA4LTh2LTIxLjNjMC00LjQtMy42LTgtOC04aC00OS4xbDg5LjMtMTY0LjFjLjYtMS4yIDEtMi41IDEtMy44LjEtNC40LTMuNC04LTcuOS04eicpKTtcbmV4cG9ydHMuQWxlcnRPdXRsaW5lID0gZ2V0SWNvbignYWxlcnQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMTkzIDc5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg1NzRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNTYzYzAtMTc2LjItMTQyLjgtMzE5LTMxOS0zMTlTMTkzIDM4Ni44IDE5MyA1NjN2MjMzem03Mi0yMzNjMC0xMzYuNCAxMTAuNi0yNDcgMjQ3LTI0N3MyNDcgMTEwLjYgMjQ3IDI0N3YxOTNINDA0VjU4NWMwLTUuNS00LjUtMTAtMTAtMTBoLTQ0Yy01LjUgMC0xMCA0LjUtMTAgMTB2MTcxaC03NVY1NjN6bS00OC4xLTI1Mi41bDM5LjYtMzkuNmMzLjEtMy4xIDMuMS04LjIgMC0xMS4zbC02Ny45LTY3LjlhOC4wMyA4LjAzIDAgMCAwLTExLjMgMGwtMzkuNiAzOS42YTguMDMgOC4wMyAwIDAgMCAwIDExLjNsNjcuOSA2Ny45YzMuMSAzLjEgOC4xIDMuMSAxMS4zIDB6bTY2OS42LTc5LjJsLTM5LjYtMzkuNmE4LjAzIDguMDMgMCAwIDAtMTEuMyAwbC02Ny45IDY3LjlhOC4wMyA4LjAzIDAgMCAwIDAgMTEuM2wzOS42IDM5LjZjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGw2Ny45LTY3LjljMy4xLTMuMiAzLjEtOC4yIDAtMTEuM3pNODMyIDg5MkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjI0YzAgNC40IDMuNiA4IDggOGg2ODhjNC40IDAgOC0zLjYgOC04di0yNGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNDg0IDE4MGg1NmM0LjQgMCA4LTMuNiA4LThWNzZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djk2YzAgNC40IDMuNiA4IDggOHonKSk7XG5leHBvcnRzLkFsaXBheUNpcmNsZU91dGxpbmUgPSBnZXRJY29uKCdhbGlwYXktY2lyY2xlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTMwOC42IDU0NS43Yy0xOS44IDItNTcuMSAxMC43LTc3LjQgMjguNi02MSA1My0yNC41IDE1MCA5OSAxNTAgNzEuOCAwIDE0My41LTQ1LjcgMTk5LjgtMTE5LTgwLjItMzguOS0xNDguMS02Ni44LTIyMS40LTU5LjZ6bTQ2MC41IDY3YzEwMC4xIDMzLjQgMTU0LjcgNDMgMTY2LjcgNDQuOEE0NDUuOSA0NDUuOSAwIDAgMCA5NjAgNTEyYzAtMjQ3LjQtMjAwLjYtNDQ4LTQ0OC00NDhTNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4YzE1NS45IDAgMjkzLjItNzkuNyAzNzMuNS0yMDAuNS03NS42LTI5LjgtMjEzLjYtODUtMjg2LjgtMTIwLjEtNjkuOSA4NS43LTE2MC4xIDEzNy44LTI1My43IDEzNy44LTE1OC40IDAtMjEyLjEtMTM4LjEtMTM3LjItMjI5IDE2LjMtMTkuOCA0NC4yLTM4LjcgODcuMy00OS40IDY3LjUtMTYuNSAxNzUgMTAuMyAyNzUuNyA0My40IDE4LjEtMzMuMyAzMy40LTY5LjkgNDQuNy0xMDguOUgzMDUuMVY0MDJoMTYwdi01Ni4ySDI3MS4zdi0zMS4zaDE5My44di04MC4xczAtMTMuNSAxMy43LTEzLjVINTU3djkzLjZoMTkxLjd2MzEuM0g1NTcuMVY0MDJoMTU2LjRjLTE1IDYxLjEtMzcuNyAxMTcuNC02Ni4yIDE2Ni44IDQ3LjUgMTcuMSA5MC4xIDMzLjMgMTIxLjggNDMuOXonKSk7XG5leHBvcnRzLkFsaXdhbmd3YW5nT3V0bGluZSA9IGdldEljb24oJ2FsaXdhbmd3YW5nJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg2OC4yIDM3Ny40Yy0xOC45LTQ1LjEtNDYuMy04NS42LTgxLjItMTIwLjZhMzc3LjI2IDM3Ny4yNiAwIDAgMC0xMjAuNS04MS4yQTM3NS42NSAzNzUuNjUgMCAwIDAgNTE5IDE0NS44Yy00MS45IDAtODIuOSA2LjctMTIxLjkgMjBDMzA2IDEyMy4zIDIwMC44IDEyMCAxNzAuNiAxMjBjLTIuMiAwLTcuNCAwLTkuNC4yLTExLjkuNC0yMi44IDYuNS0yOS4yIDE2LjQtNi41IDkuOS03LjcgMjIuNC0zLjQgMzMuNWw2NC4zIDE2MS42YTM3OC41OSAzNzguNTkgMCAwIDAtNTIuOCAxOTMuMmMwIDUxLjQgMTAgMTAxIDI5LjggMTQ3LjYgMTguOSA0NSA0Ni4yIDg1LjYgODEuMiAxMjAuNSAzNC43IDM0LjggNzUuNCA2Mi4xIDEyMC41IDgxLjJDNDE4LjMgODk0IDQ2Ny45IDkwNCA1MTkgOTA0YzUxLjMgMCAxMDAuOS0xMC4xIDE0Ny43LTI5LjggNDQuOS0xOC45IDg1LjUtNDYuMyAxMjAuNC04MS4yIDM0LjctMzQuOCA2Mi4xLTc1LjQgODEuMi0xMjAuNmEzNzYuNSAzNzYuNSAwIDAgMCAyOS44LTE0Ny42Yy0uMi01MS4yLTEwLjEtMTAwLjgtMjkuOS0xNDcuNHptLTY2LjQgMjY2LjVhMzA3LjA4IDMwNy4wOCAwIDAgMS02NS45IDk4Yy0yOC40IDI4LjUtNjEuMyA1MC43LTk3LjcgNjUuOWgtLjFjLTM4IDE2LTc4LjMgMjQuMi0xMTkuOSAyNC4yYTMwNi41MSAzMDYuNTEgMCAwIDEtMjE3LjUtOTAuMmMtMjguNC0yOC41LTUwLjYtNjEuNC02NS44LTk3Ljh2LS4xYy0xNi0zNy44LTI0LjEtNzguMi0yNC4xLTExOS45IDAtNTUuNCAxNC44LTEwOS43IDQyLjgtMTU3bDEzLjItMjIuMS05LjUtMjMuOUwyMDYgMTkyYzE0LjkuNiAzNS45IDIuMSA1OS43IDUuNiA0My44IDYuNSA4Mi41IDE3LjUgMTE0LjkgMzIuNmwxOSA4LjkgMTkuOS02LjhjMzEuNS0xMC44IDY0LjgtMTYuMiA5OC45LTE2LjJhMzA2LjUxIDMwNi41MSAwIDAgMSAyMTcuNSA5MC4yYzI4LjQgMjguNSA1MC42IDYxLjQgNjUuOCA5Ny44bC4xLjEuMS4xYzE2IDM3LjYgMjQuMSA3OCAyNC4yIDExOS44LS4xIDQxLjctOC4zIDgyLTI0LjMgMTE5Ljh6TTY4MS4xIDM2NC4yYy0yMC40IDAtMzcuMSAxNi43LTM3LjEgMzcuMXY1NS4xYzAgMjAuNCAxNi42IDM3LjEgMzcuMSAzNy4xczM3LjEtMTYuNyAzNy4xLTM3LjF2LTU1LjFjMC0yMC41LTE2LjctMzcuMS0zNy4xLTM3LjF6bS0xNzUuMiAwYy0yMC41IDAtMzcuMSAxNi43LTM3LjEgMzcuMXY1NS4xYzAgMjAuNCAxNi43IDM3LjEgMzcuMSAzNy4xIDIwLjUgMCAzNy4xLTE2LjcgMzcuMS0zNy4xdi01NS4xYzAtMjAuNS0xNi43LTM3LjEtMzcuMS0zNy4xeicpKTtcbmV4cG9ydHMuQW5kcm9pZE91dGxpbmUgPSBnZXRJY29uKCdhbmRyb2lkJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQ0OC4zIDIyNS4yYy0xOC42IDAtMzIgMTMuNC0zMiAzMS45czEzLjUgMzEuOSAzMiAzMS45YzE4LjYgMCAzMi0xMy40IDMyLTMxLjkuMS0xOC40LTEzLjQtMzEuOS0zMi0zMS45em0zOTMuOSA5Ni40Yy0xMy44LTEzLjgtMzIuNy0yMS41LTUzLjItMjEuNS0zLjkgMC03LjQuNC0xMC43IDF2LTFoLTMuNmMtNS41LTMwLjYtMTguNi02MC41LTM4LjEtODcuNC0xOC43LTI1LjctNDMtNDcuOS03MC44LTY0LjlsMjUuMS0zNS44di0zLjNjMC0uOC40LTIuMy43LTMuOC42LTIuNCAxLjQtNS41IDEuNC04LjkgMC0xOC41LTEzLjUtMzEuOS0zMi0zMS45LTkuOCAwLTE5LjUgNS43LTI1LjkgMTUuNGwtMjkuMyA0Mi4xYy0zMC05LjgtNjIuNC0xNS05My44LTE1LTMxLjMgMC02My43IDUuMi05My44IDE1TDM4OSA3OS40Yy02LjYtOS42LTE2LjEtMTUuNC0yNi0xNS40LTE4LjYgMC0zMiAxMy40LTMyIDMxLjkgMCA2LjIgMi41IDEyLjggNi43IDE3LjRsMjIuNiAzMi4zYy0yOC43IDE3LTUzLjUgMzkuNC03Mi4yIDY1LjEtMTkuNCAyNi45LTMyIDU2LjgtMzYuNyA4Ny40aC01LjV2MWMtMy4yLS42LTYuNy0xLTEwLjctMS0yMC4zIDAtMzkuMiA3LjUtNTMuMSAyMS4zLTEzLjggMTMuOC0yMS41IDMyLjYtMjEuNSA1M3YyMzVjMCAyMC4zIDcuNSAzOS4xIDIxLjQgNTIuOSAxMy44IDEzLjggMzIuOCAyMS41IDUzLjIgMjEuNSAzLjkgMCA3LjQtLjQgMTAuNy0xdjkzLjVjMCAyOS4yIDIzLjkgNTMuMSA1My4yIDUzLjFIMzMxdjU4LjNjMCAyMC4zIDcuNSAzOS4xIDIxLjQgNTIuOSAxMy44IDEzLjggMzIuOCAyMS41IDUzLjIgMjEuNSAyMC4zIDAgMzkuMi03LjUgNTMuMS0yMS4zIDEzLjgtMTMuOCAyMS41LTMyLjYgMjEuNS01M3YtNTguMkg1NDR2NTguMWMwIDIwLjMgNy41IDM5LjEgMjEuNCA1Mi45IDEzLjggMTMuOCAzMi44IDIxLjUgNTMuMiAyMS41IDIwLjQgMCAzOS4yLTcuNSA1My4xLTIxLjYgMTMuOC0xMy44IDIxLjUtMzIuNiAyMS41LTUzdi01OC4yaDMxLjljMjkuMyAwIDUzLjItMjMuOCA1My4yLTUzLjF2LTkxLjRjMy4yLjYgNi43IDEgMTAuNyAxIDIwLjMgMCAzOS4yLTcuNSA1My4xLTIxLjMgMTMuOC0xMy44IDIxLjUtMzIuNiAyMS41LTUzdi0yMzVjLS4xLTIwLjMtNy42LTM5LTIxLjQtNTIuOXpNMjQ2IDYwOS42YzAgNi44LTMuOSAxMC42LTEwLjcgMTAuNi02LjggMC0xMC43LTMuOC0xMC43LTEwLjZWMzc0LjVjMC02LjggMy45LTEwLjYgMTAuNy0xMC42IDYuOCAwIDEwLjcgMy44IDEwLjcgMTAuNnYyMzUuMXptMTMxLjEtMzk2LjhjMzcuNS0yNy4zIDg1LjMtNDIuMyAxMzUtNDIuM3M5Ny41IDE1LjEgMTM1IDQyLjVjMzIuNCAyMy43IDU0LjIgNTQuMiA2Mi43IDg3LjVIMzE0LjRjOC41LTMzLjQgMzAuNS02NCA2Mi43LTg3Ljd6bTM5LjMgNjc0LjdjLS42IDUuNi00LjQgOC43LTEwLjUgOC43LTYuOCAwLTEwLjctMy44LTEwLjctMTAuNnYtNTguMmgyMS4ydjYwLjF6bTIwMi4zIDguN2MtNi44IDAtMTAuNy0zLjgtMTAuNy0xMC42di01OC4yaDIxLjJ2NjAuMWMtLjYgNS42LTQuMyA4LjctMTAuNSA4Ljd6bTk1LjgtMTMyLjZIMzA5LjlWMzY0aDQwNC42djM5OS42em04NS4yLTE1NGMwIDYuOC0zLjkgMTAuNi0xMC43IDEwLjYtNi44IDAtMTAuNy0zLjgtMTAuNy0xMC42VjM3NC41YzAtNi44IDMuOS0xMC42IDEwLjctMTAuNiA2LjggMCAxMC43IDMuOCAxMC43IDEwLjZ2MjM1LjF6TTU3Ni4xIDIyNS4yYy0xOC42IDAtMzIgMTMuNC0zMiAzMS45czEzLjUgMzEuOSAzMiAzMS45YzE4LjYgMCAzMi4xLTEzLjQgMzIuMS0zMi0uMS0xOC42LTEzLjQtMzEuOC0zMi4xLTMxLjh6JykpO1xuZXhwb3J0cy5BcGlPdXRsaW5lID0gZ2V0SWNvbignYXBpJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkxNy43IDE0OC44bC00Mi40LTQyLjRjLTEuNi0xLjYtMy42LTIuMy01LjctMi4zcy00LjEuOC01LjcgMi4zbC03Ni4xIDc2LjFhMTk5LjI3IDE5OS4yNyAwIDAgMC0xMTIuMS0zNC4zYy01MS4yIDAtMTAyLjQgMTkuNS0xNDEuNSA1OC42TDQzMi4zIDMwOC43YTguMDMgOC4wMyAwIDAgMCAwIDExLjNMNzA0IDU5MS43YzEuNiAxLjYgMy42IDIuMyA1LjcgMi4zIDIgMCA0LjEtLjggNS43LTIuM2wxMDEuOS0xMDEuOWM2OC45LTY5IDc3LTE3NS43IDI0LjMtMjUzLjVsNzYuMS03Ni4xYzMuMS0zLjIgMy4xLTguMyAwLTExLjR6TTc2OS4xIDQ0MS43bC01OS40IDU5LjQtMTg2LjgtMTg2LjggNTkuNC01OS40YzI0LjktMjQuOSA1OC4xLTM4LjcgOTMuNC0zOC43IDM1LjMgMCA2OC40IDEzLjcgOTMuNCAzOC43IDI0LjkgMjQuOSAzOC43IDU4LjEgMzguNyA5My40IDAgMzUuMy0xMy44IDY4LjQtMzguNyA5My40em0tMTkwLjIgMTA1YTguMDMgOC4wMyAwIDAgMC0xMS4zIDBMNTAxIDYxMy4zIDQxMC43IDUyM2w2Ni43LTY2LjdjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM0w0NDEgNDA4LjZhOC4wMyA4LjAzIDAgMCAwLTExLjMgMEwzNjMgNDc1LjNsLTQzLTQzYTcuODUgNy44NSAwIDAgMC01LjctMi4zYy0yIDAtNC4xLjgtNS43IDIuM0wyMDYuOCA1MzQuMmMtNjguOSA2OS03NyAxNzUuNy0yNC4zIDI1My41bC03Ni4xIDc2LjFhOC4wMyA4LjAzIDAgMCAwIDAgMTEuM2w0Mi40IDQyLjRjMS42IDEuNiAzLjYgMi4zIDUuNyAyLjNzNC4xLS44IDUuNy0yLjNsNzYuMS03Ni4xYzMzLjcgMjIuOSA3Mi45IDM0LjMgMTEyLjEgMzQuMyA1MS4yIDAgMTAyLjQtMTkuNSAxNDEuNS01OC42bDEwMS45LTEwMS45YzMuMS0zLjEgMy4xLTguMiAwLTExLjNsLTQzLTQzIDY2LjctNjYuN2MzLjEtMy4xIDMuMS04LjIgMC0xMS4zbC0zNi42LTM2LjJ6TTQ0MS43IDc2OS4xYTEzMS4zMiAxMzEuMzIgMCAwIDEtOTMuNCAzOC43Yy0zNS4zIDAtNjguNC0xMy43LTkzLjQtMzguN2ExMzEuMzIgMTMxLjMyIDAgMCAxLTM4LjctOTMuNGMwLTM1LjMgMTMuNy02OC40IDM4LjctOTMuNGw1OS40LTU5LjQgMTg2LjggMTg2LjgtNTkuNCA1OS40eicpKTtcbmV4cG9ydHMuQXBwc3RvcmVPdXRsaW5lID0gZ2V0SWNvbignYXBwc3RvcmUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNDY0IDE0NEgxNjBjLTguOCAwLTE2IDcuMi0xNiAxNnYzMDRjMCA4LjggNy4yIDE2IDE2IDE2aDMwNGM4LjggMCAxNi03LjIgMTYtMTZWMTYwYzAtOC44LTcuMi0xNi0xNi0xNnptLTUyIDI2OEgyMTJWMjEyaDIwMHYyMDB6bTQ1Mi0yNjhINTYwYy04LjggMC0xNiA3LjItMTYgMTZ2MzA0YzAgOC44IDcuMiAxNiAxNiAxNmgzMDRjOC44IDAgMTYtNy4yIDE2LTE2VjE2MGMwLTguOC03LjItMTYtMTYtMTZ6bS01MiAyNjhINjEyVjIxMmgyMDB2MjAwek00NjQgNTQ0SDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2djMwNGMwIDguOCA3LjIgMTYgMTYgMTZoMzA0YzguOCAwIDE2LTcuMiAxNi0xNlY1NjBjMC04LjgtNy4yLTE2LTE2LTE2em0tNTIgMjY4SDIxMlY2MTJoMjAwdjIwMHptNDUyLTI2OEg1NjBjLTguOCAwLTE2IDcuMi0xNiAxNnYzMDRjMCA4LjggNy4yIDE2IDE2IDE2aDMwNGM4LjggMCAxNi03LjIgMTYtMTZWNTYwYzAtOC44LTcuMi0xNi0xNi0xNnptLTUyIDI2OEg2MTJWNjEyaDIwMHYyMDB6JykpO1xuZXhwb3J0cy5BdWRpb091dGxpbmUgPSBnZXRJY29uKCdhdWRpbycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NDIgNDU0YzAtNC40LTMuNi04LTgtOGgtNjBjLTQuNCAwLTggMy42LTggOCAwIDE0MC4zLTExMy43IDI1NC0yNTQgMjU0UzI1OCA1OTQuMyAyNTggNDU0YzAtNC40LTMuNi04LTgtOGgtNjBjLTQuNCAwLTggMy42LTggOCAwIDE2OC43IDEyNi42IDMwNy45IDI5MCAzMjcuNlY4ODRIMzI2LjdjLTEzLjcgMC0yNC43IDE0LjMtMjQuNyAzMnYzNmMwIDQuNCAyLjggOCA2LjIgOGg0MDcuNmMzLjQgMCA2LjItMy42IDYuMi04di0zNmMwLTE3LjctMTEtMzItMjQuNy0zMkg1NDhWNzgyLjFjMTY1LjMtMTggMjk0LTE1OCAyOTQtMzI4LjF6TTUxMiA2MjRjOTMuOSAwIDE3MC03NS4yIDE3MC0xNjhWMjMyYzAtOTIuOC03Ni4xLTE2OC0xNzAtMTY4cy0xNzAgNzUuMi0xNzAgMTY4djIyNGMwIDkyLjggNzYuMSAxNjggMTcwIDE2OHptLTk0LTM5MmMwLTUwLjYgNDEuOS05MiA5NC05MnM5NCA0MS40IDk0IDkydjIyNGMwIDUwLjYtNDEuOSA5Mi05NCA5MnMtOTQtNDEuNC05NC05MlYyMzJ6JykpO1xuZXhwb3J0cy5BcHBsZU91dGxpbmUgPSBnZXRJY29uKCdhcHBsZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ003NDcuNCA1MzUuN2MtLjQtNjguMiAzMC41LTExOS42IDkyLjktMTU3LjUtMzQuOS01MC04Ny43LTc3LjUtMTU3LjMtODIuOC02NS45LTUuMi0xMzggMzguNC0xNjQuNCAzOC40LTI3LjkgMC05MS43LTM2LjYtMTQxLjktMzYuNkMyNzMuMSAyOTguOCAxNjMgMzc5LjggMTYzIDU0NC42YzAgNDguNyA4LjkgOTkgMjYuNyAxNTAuOCAyMy44IDY4LjIgMTA5LjYgMjM1LjMgMTk5LjEgMjMyLjYgNDYuOC0xLjEgNzkuOS0zMy4yIDE0MC44LTMzLjIgNTkuMSAwIDg5LjcgMzMuMiAxNDEuOSAzMy4yIDkwLjMtMS4zIDE2Ny45LTE1My4yIDE5MC41LTIyMS42LTEyMS4xLTU3LjEtMTE0LjYtMTY3LjItMTE0LjYtMTcwLjd6bS0xMC42IDI2N2MtMTQuMyAxOS45LTI4LjcgMzUuNi00MS45IDQ1LjctMTAuNSA4LTE4LjYgMTEuNC0yNCAxMS42LTktLjEtMTcuNy0yLjMtMzQuNy04LjgtMS4yLS41LTIuNS0xLTQuMi0xLjZsLTQuNC0xLjdjLTE3LjQtNi43LTI3LjgtMTAuMy00MS4xLTEzLjgtMTguNi00LjgtMzcuMS03LjQtNTYuOS03LjQtMjAuMiAwLTM5LjIgMi41LTU4LjEgNy4yLTEzLjkgMy41LTI1LjYgNy40LTQyLjcgMTMuOC0uNy4zLTguMSAzLjEtMTAuMiAzLjktMy41IDEuMy02LjIgMi4zLTguNyAzLjItMTAuNCAzLjYtMTcgNS4xLTIyLjkgNS4yLS43IDAtMS4zLS4xLTEuOC0uMi0xLjEtLjItMi41LS42LTQuMS0xLjMtNC41LTEuOC05LjktNS4xLTE2LTkuOC0xNC0xMC45LTI5LjQtMjgtNDUuMS00OS45LTI3LjUtMzguNi01My41LTg5LjgtNjYtMTI1LjctMTUuNC00NC44LTIzLTg3LjctMjMtMTI4LjYgMC02MC4yIDE3LjgtMTA2IDQ4LjQtMTM3LjEgMjYuMy0yNi42IDYxLjctNDEuNSA5Ny44LTQyLjMgNS45LjEgMTQuNSAxLjUgMjUuNCA0LjUgOC42IDIuMyAxOCA1LjQgMzAuNyA5LjkgMy44IDEuNCAxNi45IDYuMSAxOC41IDYuNyA3LjcgMi44IDEzLjUgNC44IDE5LjIgNi42IDE4LjIgNS44IDMyLjMgOSA0Ny42IDkgMTUuNSAwIDI4LjgtMy4zIDQ3LjctOS44IDcuMS0yLjQgMzIuOS0xMiAzNy41LTEzLjYgMjUuNi05LjEgNDQuNS0xNCA2MC44LTE1LjIgNC44LS40IDkuMS0uNCAxMy4yLS4xIDIyLjcgMS44IDQyLjEgNi4zIDU4LjYgMTMuOC0zNy42IDQzLjQtNTcgOTYuNS01Ni45IDE1OC40LS4zIDE0LjcuOSAzMS43IDUuMSA1MS44IDYuNCAzMC41IDE4LjYgNjAuNyAzNy45IDg5IDE0LjcgMjEuNSAzMi45IDQwLjkgNTQuNyA1Ny44LTExLjUgMjMuNy0yNS42IDQ4LjItNDAuNCA2OC44em0tOTQuNS01NzJjNTAuNy02MC4yIDQ2LjEtMTE1IDQ0LjYtMTM0LjctNDQuOCAyLjYtOTYuNiAzMC41LTEyNi4xIDY0LjgtMzIuNSAzNi44LTUxLjYgODIuMy00Ny41IDEzMy42IDQ4LjQgMy43IDkyLjYtMjEuMiAxMjktNjMuN3onKSk7XG5leHBvcnRzLkJhY2t3YXJkT3V0bGluZSA9IGdldEljb24oJ2JhY2t3YXJkJywgb3V0bGluZSwgZ2V0Tm9kZShub3JtYWxWaWV3Qm94LCAnTTQ4NS42IDI0OS45TDE5OC4yIDQ5OGMtOC4zIDcuMS04LjMgMjAuOCAwIDI3LjlsMjg3LjQgMjQ4LjJjMTAuNyA5LjIgMjYuNC45IDI2LjQtMTRWMjYzLjhjMC0xNC44LTE1LjctMjMuMi0yNi40LTEzLjl6bTMyMCAwTDUxOC4yIDQ5OGExOC42IDE4LjYgMCAwIDAtNi4yIDE0YzAgNS4yIDIuMSAxMC40IDYuMiAxNGwyODcuNCAyNDguMmMxMC43IDkuMiAyNi40LjkgMjYuNC0xNFYyNjMuOGMwLTE0LjgtMTUuNy0yMy4yLTI2LjQtMTMuOXonKSk7XG5leHBvcnRzLkJhbmtPdXRsaW5lID0gZ2V0SWNvbignYmFuaycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004OTQgNDYyYzMwLjkgMCA0My44LTM5LjcgMTguNy01OEw1MzAuOCAxMjYuMmEzMS44MSAzMS44MSAwIDAgMC0zNy42IDBMMTExLjMgNDA0Yy0yNS4xIDE4LjItMTIuMiA1OCAxOC44IDU4SDE5MnYzNzRoLTcyYy00LjQgMC04IDMuNi04IDh2NTJjMCA0LjQgMy42IDggOCA4aDc4NGM0LjQgMCA4LTMuNiA4LTh2LTUyYzAtNC40LTMuNi04LTgtOGgtNzJWNDYyaDYyek01MTIgMTk2LjdsMjcxLjEgMTk3LjJIMjQwLjlMNTEyIDE5Ni43ek0yNjQgNDYyaDExN3YzNzRIMjY0VjQ2MnptMTg5IDBoMTE3djM3NEg0NTNWNDYyem0zMDcgMzc0SDY0MlY0NjJoMTE4djM3NHonKSk7XG5leHBvcnRzLkJlbGxPdXRsaW5lID0gZ2V0SWNvbignYmVsbCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004MTYgNzY4aC0yNFY0MjhjMC0xNDEuMS0xMDQuMy0yNTcuNy0yNDAtMjc3LjFWMTEyYzAtMjIuMS0xNy45LTQwLTQwLTQwcy00MCAxNy45LTQwIDQwdjM4LjljLTEzNS43IDE5LjQtMjQwIDEzNi0yNDAgMjc3LjF2MzQwaC0yNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzJjMCA0LjQgMy42IDggOCA4aDIxNmMwIDYxLjggNTAuMiAxMTIgMTEyIDExMnMxMTItNTAuMiAxMTItMTEyaDIxNmM0LjQgMCA4LTMuNiA4LTh2LTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek01MTIgODg4Yy0yNi41IDAtNDgtMjEuNS00OC00OGg5NmMwIDI2LjUtMjEuNSA0OC00OCA0OHpNMzA0IDc2OFY0MjhjMC01NS42IDIxLjYtMTA3LjggNjAuOS0xNDcuMVM0NTYuNCAyMjAgNTEyIDIyMGM1NS42IDAgMTA3LjggMjEuNiAxNDcuMSA2MC45UzcyMCAzNzIuNCA3MjAgNDI4djM0MEgzMDR6JykpO1xuZXhwb3J0cy5CZWhhbmNlU3F1YXJlT3V0bGluZSA9IGdldEljb24oJ2JlaGFuY2Utc3F1YXJlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNTk4LjUgMzUwLjloMTM4LjR2MzMuN0g1OTguNXYtMzMuN3pNNTEyIDYyOC44YTg5LjUyIDg5LjUyIDAgMCAxLTI3IDMxYy0xMS44IDguMi0yNC45IDE0LjItMzguOCAxNy43YTE2Ny40IDE2Ny40IDAgMCAxLTQ0LjYgNS43SDIzNlYzNDIuMWgxNjFjMTYuMyAwIDMxLjEgMS41IDQ0LjYgNC4zIDEzLjQgMi44IDI0LjggNy42IDM0LjQgMTQuMSA5LjUgNi41IDE3IDE1LjIgMjIuMyAyNiA1LjIgMTAuNyA3LjkgMjQuMSA3LjkgNDAgMCAxNy4yLTMuOSAzMS40LTExLjcgNDIuOS03LjkgMTEuNS0xOS4zIDIwLjgtMzQuOCAyOC4xIDIxLjEgNiAzNi42IDE2LjcgNDYuOCAzMS43IDEwLjQgMTUuMiAxNS41IDMzLjQgMTUuNSA1NC44IDAgMTcuNC0zLjMgMzIuMy0xMCA0NC44ek03OTAuOCA1NzZINjEyLjRjMCAxOS40IDYuNyAzOCAxNi44IDQ4IDEwLjIgOS45IDI0LjggMTQuOSA0My45IDE0LjkgMTMuOCAwIDI1LjUtMy41IDM1LjUtMTAuNCA5LjktNi45IDE1LjktMTQuMiAxOC4xLTIxLjhoNTkuOGMtOS42IDI5LjctMjQuMiA1MC45LTQ0IDYzLjctMTkuNiAxMi44LTQzLjYgMTkuMi03MS41IDE5LjItMTkuNSAwLTM3LTMuMi01Mi43LTkuMy0xNS4xLTUuOS0yOC43LTE0LjktMzkuOS0yNi41YTEyMS4yIDEyMS4yIDAgMCAxLTI1LjEtNDEuMmMtNi4xLTE2LjktOS4xLTM0LjctOC45LTUyLjYgMC0xOC41IDMuMS0zNS43IDkuMS01MS43IDExLjUtMzEuMSAzNS40LTU2IDY1LjktNjguOSAxNi4zLTYuOCAzMy44LTEwLjIgNTEuNS0xMCAyMSAwIDM5LjIgNCA1NSAxMi4yYTExMS42IDExMS42IDAgMCAxIDM4LjYgMzIuOGMxMC4xIDEzLjcgMTcuMiAyOS4zIDIxLjcgNDYuOSA0LjMgMTcuMyA1LjggMzUuNSA0LjYgNTQuN3ptLTEyMi05NS42Yy0xMC44IDAtMTkuOSAxLjktMjYuOSA1LjYtNyAzLjctMTIuOCA4LjMtMTcuMiAxMy42YTQ4LjQgNDguNCAwIDAgMC05LjEgMTcuNGMtMS42IDUuMy0yLjcgMTAuNy0zLjEgMTYuMkg3MjNjLTEuNi0xNy4zLTcuNi0zMC4xLTE1LjYtMzkuMS04LjQtOC45LTIxLjktMTMuNy0zOC42LTEzLjd6bS0yNDguNS0xMC4xYzguNy02LjMgMTIuOS0xNi43IDEyLjktMzEgLjMtNi44LTEuMS0xMy41LTQuMS0xOS42LTIuNy00LjktNi43LTktMTEuNi0xMS45YTQ0LjggNDQuOCAwIDAgMC0xNi42LTZjLTYuNC0xLjItMTIuOS0xLjgtMTkuMy0xLjdoLTcwLjN2NzkuN2g3Ni4xYzEzLjEuMSAyNC4yLTMuMSAzMi45LTkuNXptMTEuOCA3MmMtOS44LTcuNS0yMi45LTExLjItMzkuMi0xMS4yaC04MS44djk0aDgwLjJjNy41IDAgMTQuNC0uNyAyMS4xLTIuMXMxMi43LTMuOCAxNy44LTcuMmM1LjEtMy4zIDkuMi03LjggMTIuMy0xMy42IDMtNS44IDQuNS0xMy4yIDQuNS0yMi4xIDAtMTcuNy01LTMwLjItMTQuOS0zNy44eicpKTtcbmV4cG9ydHMuQm9va091dGxpbmUgPSBnZXRJY29uKCdib29rJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTgzMiA2NEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0yNjAgNzJoOTZ2MjA5LjlMNjIxLjUgMzEyIDU3MiAzNDcuNFYxMzZ6bTIyMCA3NTJIMjMyVjEzNmgyODB2Mjk2LjljMCAzLjMgMSA2LjYgMyA5LjNhMTUuOSAxNS45IDAgMCAwIDIyLjMgMy43bDgzLjgtNTkuOSA4MS40IDU5LjRjMi43IDIgNiAzLjEgOS40IDMuMSA4LjggMCAxNi03LjIgMTYtMTZWMTM2aDY0djc1MnonKSk7XG5leHBvcnRzLkJveFBsb3RPdXRsaW5lID0gZ2V0SWNvbignYm94LXBsb3QnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTUyIDIyNGgtNTJjLTQuNCAwLTggMy42LTggOHYyNDhoLTkyVjMwNGMwLTQuNC0zLjYtOC04LThIMjMyYy00LjQgMC04IDMuNi04IDh2MTc2aC05MlYyMzJjMC00LjQtMy42LTgtOC04SDcyYy00LjQgMC04IDMuNi04IDh2NTYwYzAgNC40IDMuNiA4IDggOGg1MmM0LjQgMCA4LTMuNiA4LThWNTQ4aDkydjE3MmMwIDQuNCAzLjYgOCA4IDhoNTYwYzQuNCAwIDgtMy42IDgtOFY1NDhoOTJ2MjQ0YzAgNC40IDMuNiA4IDggOGg1MmM0LjQgMCA4LTMuNiA4LThWMjMyYzAtNC40LTMuNi04LTgtOHpNMjk2IDM2OGg4OHYyODhoLTg4VjM2OHptNDMyIDI4OEg0NDhWMzY4aDI4MHYyODh6JykpO1xuZXhwb3J0cy5CdWxiT3V0bGluZSA9IGdldEljb24oJ2J1bGInLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNjMyIDg4OEgzOTJjLTQuNCAwLTggMy42LTggOHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxOTJjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTMyYzAtNC40LTMuNi04LTgtOHpNNTEyIDY0Yy0xODEuMSAwLTMyOCAxNDYuOS0zMjggMzI4IDAgMTIxLjQgNjYgMjI3LjQgMTY0IDI4NC4xVjc5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjc2LjFjOTgtNTYuNyAxNjQtMTYyLjcgMTY0LTI4NC4xIDAtMTgxLjEtMTQ2LjktMzI4LTMyOC0zMjh6bTEyNy45IDU0OS44TDYwNCA2MzQuNlY3NTJINDIwVjYzNC42bC0zNS45LTIwLjhDMzA1LjQgNTY4LjMgMjU2IDQ4NC41IDI1NiAzOTJjMC0xNDEuNCAxMTQuNi0yNTYgMjU2LTI1NnMyNTYgMTE0LjYgMjU2IDI1NmMwIDkyLjUtNDkuNCAxNzYuMy0xMjguMSAyMjEuOHonKSk7XG5leHBvcnRzLkJ1Z091dGxpbmUgPSBnZXRJY29uKCdidWcnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMzA0IDI4MGg1NmM0LjQgMCA4LTMuNiA4LTggMC0yOC4zIDUuOS01My4yIDE3LjEtNzMuNSAxMC42LTE5LjQgMjYtMzQuOCA0NS40LTQ1LjRDNDUwLjkgMTQyIDQ3NS43IDEzNiA1MDQgMTM2aDE2YzI4LjMgMCA1My4yIDUuOSA3My41IDE3LjEgMTkuNCAxMC42IDM0LjggMjYgNDUuNCA0NS40QzY1MCAyMTguOSA2NTYgMjQzLjcgNjU2IDI3MmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04IDAtNDAtOC44LTc2LjctMjUuOS0xMDguMWExODQuMzEgMTg0LjMxIDAgMCAwLTc0LTc0QzU5Ni43IDcyLjggNTYwIDY0IDUyMCA2NGgtMTZjLTQwIDAtNzYuNyA4LjgtMTA4LjEgMjUuOWExODQuMzEgMTg0LjMxIDAgMCAwLTc0IDc0QzMwNC44IDE5NS4zIDI5NiAyMzIgMjk2IDI3MmMwIDQuNCAzLjYgOCA4IDh6JywgJ005NDAgNTEySDc5MlY0MTJjNzYuOCAwIDEzOS02Mi4yIDEzOS0xMzkgMC00LjQtMy42LTgtOC04aC02MGMtNC40IDAtOCAzLjYtOCA4YTYzIDYzIDAgMCAxLTYzIDYzSDIzMmE2MyA2MyAwIDAgMS02My02M2MwLTQuNC0zLjYtOC04LThoLTYwYy00LjQgMC04IDMuNi04IDggMCA3Ni44IDYyLjIgMTM5IDEzOSAxMzl2MTAwSDg0Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDE0OHY5NmMwIDYuNS4yIDEzIC43IDE5LjNDMTY0LjEgNzI4LjYgMTE2IDc5Ni43IDExNiA4NzZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOCAwLTQ0LjIgMjMuOS04Mi45IDU5LjYtMTAzLjdhMjczIDI3MyAwIDAgMCAyMi43IDQ5YzI0LjMgNDEuNSA1OSA3Ni4yIDEwMC41IDEwMC41UzQ2MC41IDk2MCA1MTIgOTYwczk5LjgtMTMuOSAxNDEuMy0zOC4yYTI4MS4zOCAyODEuMzggMCAwIDAgMTIzLjItMTQ5LjVBMTIwIDEyMCAwIDAgMSA4MzYgODc2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTggMC03OS4zLTQ4LjEtMTQ3LjQtMTE2LjctMTc2LjcuNC02LjQuNy0xMi44LjctMTkuM3YtOTZoMTQ4YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04ek03MTYgNjgwYzAgMzYuOC05LjcgNzItMjcuOCAxMDIuOS0xNy43IDMwLjMtNDMgNTUuNi03My4zIDczLjNDNTg0IDg3NC4zIDU0OC44IDg4NCA1MTIgODg0cy03Mi05LjctMTAyLjktMjcuOGMtMzAuMy0xNy43LTU1LjYtNDMtNzMuMy03My4zQTIwMi43NSAyMDIuNzUgMCAwIDEgMzA4IDY4MFY0MTJoNDA4djI2OHonKSk7XG5leHBvcnRzLkNhbGN1bGF0b3JPdXRsaW5lID0gZ2V0SWNvbignY2FsY3VsYXRvcicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00yNTEuMiAzODdIMzIwdjY4LjhjMCAxLjggMS44IDMuMiA0IDMuMmg0OGMyLjIgMCA0LTEuNCA0LTMuM1YzODdoNjguOGMxLjggMCAzLjItMS44IDMuMi00di00OGMwLTIuMi0xLjQtNC0zLjMtNEgzNzZ2LTY4LjhjMC0xLjgtMS44LTMuMi00LTMuMmgtNDhjLTIuMiAwLTQgMS40LTQgMy4yVjMzMWgtNjguOGMtMS44IDAtMy4yIDEuOC0zLjIgNHY0OGMwIDIuMiAxLjQgNCAzLjIgNHptMzI4IDBoMTkzLjZjMS44IDAgMy4yLTEuOCAzLjItNHYtNDhjMC0yLjItMS40LTQtMy4zLTRINTc5LjJjLTEuOCAwLTMuMiAxLjgtMy4yIDR2NDhjMCAyLjIgMS40IDQgMy4yIDR6bTAgMjY1aDE5My42YzEuOCAwIDMuMi0xLjggMy4yLTR2LTQ4YzAtMi4yLTEuNC00LTMuMy00SDU3OS4yYy0xLjggMC0zLjIgMS44LTMuMiA0djQ4YzAgMi4yIDEuNCA0IDMuMiA0em0wIDEwNGgxOTMuNmMxLjggMCAzLjItMS44IDMuMi00di00OGMwLTIuMi0xLjQtNC0zLjMtNEg1NzkuMmMtMS44IDAtMy4yIDEuOC0zLjIgNHY0OGMwIDIuMiAxLjQgNCAzLjIgNHptLTE5NS43LTgxbDYxLjItNzQuOWM0LjMtNS4yLjctMTMuMS01LjktMTMuMUgzODhjLTIuMyAwLTQuNSAxLTUuOSAyLjlsLTM0IDQxLjYtMzQtNDEuNmE3Ljg1IDcuODUgMCAwIDAtNS45LTIuOWgtNTAuOWMtNi42IDAtMTAuMiA3LjktNS45IDEzLjFsNjEuMiA3NC45LTYyLjcgNzYuOGMtNC40IDUuMi0uOCAxMy4xIDUuOCAxMy4xaDUwLjhjMi4zIDAgNC41LTEgNS45LTIuOWwzNS41LTQzLjUgMzUuNSA0My41YzEuNSAxLjggMy43IDIuOSA1LjkgMi45aDUwLjhjNi42IDAgMTAuMi03LjkgNS45LTEzLjFMMzgzLjUgNjc1ek04ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0zNiA3MzJIMTgwVjE4MGg2NjR2NjY0eicpKTtcbmV4cG9ydHMuQnVpbGRPdXRsaW5lID0gZ2V0SWNvbignYnVpbGQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTE2IDIxMEgzNzZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjIzNkgxMDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjI3MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg1NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWNTQ2aDIzNmMxNy43IDAgMzItMTQuMyAzMi0zMlYyNDJjMC0xNy43LTE0LjMtMzItMzItMzJ6bS01MDQgNjhoMjAwdjIwMEg0MTJWMjc4em0tNjggNDY4SDE0NFY1NDZoMjAwdjIwMHptMjY4IDBINDEyVjU0NmgyMDB2MjAwem0yNjgtMjY4SDY4MFYyNzhoMjAwdjIwMHonKSk7XG5leHBvcnRzLkNhbGVuZGFyT3V0bGluZSA9IGdldEljb24oJ2NhbGVuZGFyJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxODRINzEydi02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMzg0di02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIxNmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDY1NkgxODRWNDYwaDY1NnYzODB6TTE4NCAzOTJWMjU2aDEyOHY0OGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di00OGgyNTZ2NDhjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNDhoMTI4djEzNkgxODR6JykpO1xuZXhwb3J0cy5DYW1lcmFPdXRsaW5lID0gZ2V0SWNvbignY2FtZXJhJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg2NCAyNDhINzI4bC0zMi40LTkwLjhhMzIuMDcgMzIuMDcgMCAwIDAtMzAuMi0yMS4ySDM1OC42Yy0xMy41IDAtMjUuNiA4LjUtMzAuMSAyMS4yTDI5NiAyNDhIMTYwYy00NC4yIDAtODAgMzUuOC04MCA4MHY0NTZjMCA0NC4yIDM1LjggODAgODAgODBoNzA0YzQ0LjIgMCA4MC0zNS44IDgwLTgwVjMyOGMwLTQ0LjItMzUuOC04MC04MC04MHptOCA1MzZjMCA0LjQtMy42IDgtOCA4SDE2MGMtNC40IDAtOC0zLjYtOC04VjMyOGMwLTQuNCAzLjYtOCA4LThoMTg2LjdsMTcuMS00Ny44IDIyLjktNjQuMmgyNTAuNWwyMi45IDY0LjIgMTcuMSA0Ny44SDg2NGM0LjQgMCA4IDMuNiA4IDh2NDU2ek01MTIgMzg0Yy04OC40IDAtMTYwIDcxLjYtMTYwIDE2MHM3MS42IDE2MCAxNjAgMTYwIDE2MC03MS42IDE2MC0xNjAtNzEuNi0xNjAtMTYwLTE2MHptMCAyNTZjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTYgOTYgNDMgOTYgOTYtNDMgOTYtOTYgOTZ6JykpO1xuZXhwb3J0cy5DYXJPdXRsaW5lID0gZ2V0SWNvbignY2FyJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTM4MCA3MDRoMjY0YzQuNCAwIDgtMy42IDgtOHYtODRjMC00LjQtMy42LTgtOC04aC00MGMtNC40IDAtOCAzLjYtOCA4djM2SDQyOHYtMzZjMC00LjQtMy42LTgtOC04aC00MGMtNC40IDAtOCAzLjYtOCA4djg0YzAgNC40IDMuNiA4IDggOHptMzQwLTEyM2E0MCA0MCAwIDEgMCA4MCAwIDQwIDQwIDAgMSAwLTgwIDB6bTIzOS0xNjcuNkw5MzUuMyAzNzJhOCA4IDAgMCAwLTEwLjktMi45bC01MC43IDI5LjYtNzguMy0yMTYuMmE2My45IDYzLjkgMCAwIDAtNjAuOS00NC40SDMwMS4yYy0zNC43IDAtNjUuNSAyMi40LTc2LjIgNTUuNWwtNzQuNiAyMDUuMi01MC44LTI5LjZhOCA4IDAgMCAwLTEwLjkgMi45TDY1IDQxMy40Yy0yLjIgMy44LS45IDguNiAyLjkgMTAuOGw2MC40IDM1LjItMTQuNSA0MGMtMS4yIDMuMi0xLjggNi42LTEuOCAxMHYzNDguMmMwIDE1LjcgMTEuOCAyOC40IDI2LjMgMjguNGg2Ny42YzEyLjMgMCAyMy05LjMgMjUuNi0yMi4zbDcuNy0zNy43aDU0NS42bDcuNyAzNy43YzIuNyAxMyAxMy4zIDIyLjMgMjUuNiAyMi4zaDY3LjZjMTQuNSAwIDI2LjMtMTIuNyAyNi4zLTI4LjRWNTA5LjRjMC0zLjQtLjYtNi44LTEuOC0xMGwtMTQuNS00MCA2MC4zLTM1LjJhOCA4IDAgMCAwIDMtMTAuOHpNODQwIDUxN3YyMzdIMTg0VjUxN2wxNS42LTQzaDYyNC44bDE1LjYgNDN6TTI5Mi43IDIxOC4xbC41LTEuMy40LTEuM2MxLjEtMy4zIDQuMS01LjUgNy42LTUuNWg0MjcuNmw3NS40IDIwOEgyMjBsNzIuNy0xOTkuOXpNMjI0IDU4MWE0MCA0MCAwIDEgMCA4MCAwIDQwIDQwIDAgMSAwLTgwIDB6JykpO1xuZXhwb3J0cy5DYXJldERvd25PdXRsaW5lID0gZ2V0SWNvbignY2FyZXQtZG93bicsIG91dGxpbmUsIGdldE5vZGUobm9ybWFsVmlld0JveCwgJ004NDAuNCAzMDBIMTgzLjZjLTE5LjcgMC0zMC43IDIwLjgtMTguNSAzNWwzMjguNCAzODAuOGM5LjQgMTAuOSAyNy41IDEwLjkgMzcgMEw4NTguOSAzMzVjMTIuMi0xNC4yIDEuMi0zNS0xOC41LTM1eicpKTtcbmV4cG9ydHMuQ2FyZXRMZWZ0T3V0bGluZSA9IGdldEljb24oJ2NhcmV0LWxlZnQnLCBvdXRsaW5lLCBnZXROb2RlKG5vcm1hbFZpZXdCb3gsICdNNjg5IDE2NS4xTDMwOC4yIDQ5My41Yy0xMC45IDkuNC0xMC45IDI3LjUgMCAzN0w2ODkgODU4LjljMTQuMiAxMi4yIDM1IDEuMiAzNS0xOC41VjE4My42YzAtMTkuNy0yMC44LTMwLjctMzUtMTguNXonKSk7XG5leHBvcnRzLkNhcmV0UmlnaHRPdXRsaW5lID0gZ2V0SWNvbignY2FyZXQtcmlnaHQnLCBvdXRsaW5lLCBnZXROb2RlKG5vcm1hbFZpZXdCb3gsICdNNzE1LjggNDkzLjVMMzM1IDE2NS4xYy0xNC4yLTEyLjItMzUtMS4yLTM1IDE4LjV2NjU2LjhjMCAxOS43IDIwLjggMzAuNyAzNSAxOC41bDM4MC44LTMyOC40YzEwLjktOS40IDEwLjktMjcuNiAwLTM3eicpKTtcbmV4cG9ydHMuQ2FycnlPdXRPdXRsaW5lID0gZ2V0SWNvbignY2Fycnktb3V0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxODRINzEydi02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMzg0di02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIxNmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDY1NkgxODRWMjU2aDEyOHY0OGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di00OGgyNTZ2NDhjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNDhoMTI4djU4NHpNNjg4IDQyMGgtNTUuMmMtNS4xIDAtMTAgMi41LTEzIDYuNkw0NjguOSA2MzQuNGwtNjQuNy04OWMtMy00LjEtNy44LTYuNi0xMy02LjZIMzM2Yy02LjUgMC0xMC4zIDcuNC02LjUgMTIuN2wxMjYuNCAxNzRhMTYuMSAxNi4xIDAgMCAwIDI2IDBsMjEyLjYtMjkyLjdjMy44LTUuNCAwLTEyLjgtNi41LTEyLjh6JykpO1xuZXhwb3J0cy5DaGVja0NpcmNsZU91dGxpbmUgPSBnZXRJY29uKCdjaGVjay1jaXJjbGUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNjk5IDM1M2gtNDYuOWMtMTAuMiAwLTE5LjkgNC45LTI1LjkgMTMuM0w0NjkgNTg0LjNsLTcxLjItOTguOGMtNi04LjMtMTUuNi0xMy4zLTI1LjktMTMuM0gzMjVjLTYuNSAwLTEwLjMgNy40LTYuNSAxMi43bDEyNC42IDE3Mi44YTMxLjggMzEuOCAwIDAgMCA1MS43IDBsMjEwLjYtMjkyYzMuOS01LjMuMS0xMi43LTYuNC0xMi43eicsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyeicpKTtcbmV4cG9ydHMuQ2FyZXRVcE91dGxpbmUgPSBnZXRJY29uKCdjYXJldC11cCcsIG91dGxpbmUsIGdldE5vZGUobm9ybWFsVmlld0JveCwgJ004NTguOSA2ODlMNTMwLjUgMzA4LjJjLTkuNC0xMC45LTI3LjUtMTAuOS0zNyAwTDE2NS4xIDY4OWMtMTIuMiAxNC4yLTEuMiAzNSAxOC41IDM1aDY1Ni44YzE5LjcgMCAzMC43LTIwLjggMTguNS0zNXonKSk7XG5leHBvcnRzLkNoZWNrU3F1YXJlT3V0bGluZSA9IGdldEljb24oJ2NoZWNrLXNxdWFyZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ000MzMuMSA2NTcuN2EzMS44IDMxLjggMCAwIDAgNTEuNyAwbDIxMC42LTI5MmMzLjgtNS4zIDAtMTIuNy02LjUtMTIuN0g2NDJjLTEwLjIgMC0xOS45IDQuOS0yNS45IDEzLjNMNDU5IDU4NC4zbC03MS4yLTk4LjhjLTYtOC4zLTE1LjYtMTMuMy0yNS45LTEzLjNIMzE1Yy02LjUgMC0xMC4zIDcuNC02LjUgMTIuN2wxMjQuNiAxNzIuOHonLCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDcyOEgxODRWMTg0aDY1NnY2NTZ6JykpO1xuZXhwb3J0cy5DaHJvbWVPdXRsaW5lID0gZ2V0SWNvbignY2hyb21lJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkyOCA1MTIuM3YtLjNjMC0yMjkuOC0xODYuMi00MTYtNDE2LTQxNlM5NiAyODIuMiA5NiA1MTJ2LjRjMCAyMjkuOCAxODYuMiA0MTYgNDE2IDQxNnM0MTYtMTg2LjIgNDE2LTQxNnYtLjMuMnptLTYuNy03NC42bC42IDMuMy0uNi0zLjN6TTY3Ni43IDYzOC4yYzUzLjUtODIuMiA1Mi41LTE4OS40LTExLjEtMjYzLjdsMTYyLjQtOC40YzIwLjUgNDQuNCAzMiA5My44IDMyIDE0NS45IDAgMTg1LjItMTQ0LjYgMzM2LjYtMzI3LjEgMzQ3LjRsMTQzLjgtMjIxLjJ6TTUxMiA2NTIuM2MtNzcuNSAwLTE0MC4yLTYyLjctMTQwLjItMTQwLjIgMC03Ny43IDYyLjctMTQwLjIgMTQwLjItMTQwLjJTNjUyLjIgNDM0LjUgNjUyLjIgNTEyIDU4OS41IDY1Mi4zIDUxMiA2NTIuM3ptMzY5LjItMzMxLjdsLTMtNS43IDMgNS43ek01MTIgMTY0YzEyMS4zIDAgMjI4LjIgNjIuMSAyOTAuNCAxNTYuMmwtMjYzLjYtMTMuOWMtOTcuNS01LjctMTkwLjIgNDkuMi0yMjIuMyAxNDEuMUwyMjcuOCAzMTFjNjMuMS04OC45IDE2Ni45LTE0NyAyODQuMi0xNDd6TTEwMi41IDU4NS44YzI2IDE0NSAxMjcuMSAyNjQgMjYxLjYgMzE1LjFDMjI5LjYgODUwIDEyOC41IDczMSAxMDIuNSA1ODUuOHpNMTY0IDUxMmMwLTU1LjkgMTMuMi0xMDguNyAzNi42LTE1NS41bDExOS43IDIzNS40YzQ0LjEgODYuNyAxMzcuNCAxMzkuNyAyMzQgMTIxLjZsLTc0IDE0NS4xQzMwMi45IDg0Mi41IDE2NCA2OTMuNSAxNjQgNTEyem0zMjQuNyA0MTUuNGM0IC4yIDggLjQgMTIgLjUtNC0uMi04LS4zLTEyLS41eicpKTtcbmV4cG9ydHMuQ2xvY2tDaXJjbGVPdXRsaW5lID0gZ2V0SWNvbignY2xvY2stY2lyY2xlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnonLCAnTTY4Ni43IDYzOC42TDU0NC4xIDUzNS41VjI4OGMwLTQuNC0zLjYtOC04LThINDg4Yy00LjQgMC04IDMuNi04IDh2Mjc1LjRjMCAyLjYgMS4yIDUgMy4zIDYuNWwxNjUuNCAxMjAuNmMzLjYgMi42IDguNiAxLjggMTEuMi0xLjdsMjguNi0zOWMyLjYtMy43IDEuOC04LjctMS44LTExLjJ6JykpO1xuZXhwb3J0cy5DbG9zZUNpcmNsZU91dGxpbmUgPSBnZXRJY29uKCdjbG9zZS1jaXJjbGUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNjg1LjQgMzU0LjhjMC00LjQtMy42LTgtOC04bC02NiAuM0w1MTIgNDY1LjZsLTk5LjMtMTE4LjQtNjYuMS0uM2MtNC40IDAtOCAzLjUtOCA4IDAgMS45LjcgMy43IDEuOSA1LjJsMTMwLjEgMTU1TDM0MC41IDY3MGE4LjMyIDguMzIgMCAwIDAtMS45IDUuMmMwIDQuNCAzLjYgOCA4IDhsNjYuMS0uM0w1MTIgNTY0LjRsOTkuMyAxMTguNCA2NiAuM2M0LjQgMCA4LTMuNSA4LTggMC0xLjktLjctMy43LTEuOS01LjJMNTUzLjUgNTE1bDEzMC4xLTE1NWMxLjItMS40IDEuOC0zLjMgMS44LTUuMnonLCAnTTUxMiA2NUMyNjQuNiA2NSA2NCAyNjUuNiA2NCA1MTNzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjUgNTEyIDY1em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnonKSk7XG5leHBvcnRzLkNsb3VkT3V0bGluZSA9IGdldEljb24oJ2Nsb3VkJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTgxMS40IDQxOC43Qzc2NS42IDI5Ny45IDY0OC45IDIxMiA1MTIuMiAyMTJTMjU4LjggMjk3LjggMjEzIDQxOC42QzEyNy4zIDQ0MS4xIDY0IDUxOS4xIDY0IDYxMmMwIDExMC41IDg5LjUgMjAwIDE5OS45IDIwMGg0OTYuMkM4NzAuNSA4MTIgOTYwIDcyMi41IDk2MCA2MTJjMC05Mi43LTYzLjEtMTcwLjctMTQ4LjYtMTkzLjN6bTM2LjMgMjgxYTEyMy4wNyAxMjMuMDcgMCAwIDEtODcuNiAzNi4zSDI2My45Yy0zMy4xIDAtNjQuMi0xMi45LTg3LjYtMzYuM0ExMjMuMyAxMjMuMyAwIDAgMSAxNDAgNjEyYzAtMjggOS4xLTU0LjMgMjYuMi03Ni4zYTEyNS43IDEyNS43IDAgMCAxIDY2LjEtNDMuN2wzNy45LTkuOSAxMy45LTM2LjZjOC42LTIyLjggMjAuNi00NC4xIDM1LjctNjMuNGEyNDUuNiAyNDUuNiAwIDAgMSA1Mi40LTQ5LjljNDEuMS0yOC45IDg5LjUtNDQuMiAxNDAtNDQuMnM5OC45IDE1LjMgMTQwIDQ0LjJjMTkuOSAxNCAzNy41IDMwLjggNTIuNCA0OS45IDE1LjEgMTkuMyAyNy4xIDQwLjcgMzUuNyA2My40bDEzLjggMzYuNSAzNy44IDEwYzU0LjMgMTQuNSA5Mi4xIDYzLjggOTIuMSAxMjAgMCAzMy4xLTEyLjkgNjQuMy0zNi4zIDg3Ljd6JykpO1xuZXhwb3J0cy5DbG9zZVNxdWFyZU91dGxpbmUgPSBnZXRJY29uKCdjbG9zZS1zcXVhcmUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMzU0IDY3MWg1OC45YzQuNyAwIDkuMi0yLjEgMTIuMy01LjdMNTEyIDU2MS44bDg2LjggMTAzLjVjMyAzLjYgNy41IDUuNyAxMi4zIDUuN0g2NzBjNi44IDAgMTAuNS03LjkgNi4xLTEzLjFMNTUzLjggNTEybDEyMi40LTE0NS45YzQuNC01LjIuNy0xMy4xLTYuMS0xMy4xaC01OC45Yy00LjcgMC05LjIgMi4xLTEyLjMgNS43TDUxMiA0NjIuMmwtODYuOC0xMDMuNWMtMy0zLjYtNy41LTUuNy0xMi4zLTUuN0gzNTRjLTYuOCAwLTEwLjUgNy45LTYuMSAxMy4xTDQ3MC4yIDUxMiAzNDcuOSA2NTcuOUE3Ljk1IDcuOTUgMCAwIDAgMzU0IDY3MXonLCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDcyOEgxODRWMTg0aDY1NnY2NTZ6JykpO1xuZXhwb3J0cy5Db2RlT3V0bGluZSA9IGdldEljb24oJ2NvZGUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTE2IDY3M2MwIDQuNCAzLjQgOCA3LjUgOGgxODVjNC4xIDAgNy41LTMuNiA3LjUtOHYtNDhjMC00LjQtMy40LTgtNy41LThoLTE4NWMtNC4xIDAtNy41IDMuNi03LjUgOHY0OHptLTE5NC45IDYuMWwxOTItMTYxYzMuOC0zLjIgMy44LTkuMSAwLTEyLjNsLTE5Mi0xNjAuOUE3Ljk1IDcuOTUgMCAwIDAgMzA4IDM1MXY2Mi43YzAgMi40IDEgNC42IDIuOSA2LjFMNDIwLjcgNTEybC0xMDkuOCA5Mi4yYTguMSA4LjEgMCAwIDAtMi45IDYuMVY2NzNjMCA2LjggNy45IDEwLjUgMTMuMSA2LjF6TTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDcyOEgxODRWMTg0aDY1NnY2NTZ6JykpO1xuZXhwb3J0cy5Db2RlcGVuQ2lyY2xlT3V0bGluZSA9IGdldEljb24oJ2NvZGVwZW4tY2lyY2xlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQ4OC4xIDQxNC43VjMwMy40TDMwMC45IDQyOGw4My42IDU1Ljh6bTI1NC4xIDEzNy43di03OS44bC01OS44IDM5Ljl6TTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0yNzggNTMzYzAgMS4xLS4xIDIuMS0uMiAzLjEgMCAuNC0uMS43LS4yIDFhMTQuMTYgMTQuMTYgMCAwIDEtLjggMy4yYy0uMi42LS40IDEuMi0uNiAxLjctLjIuNC0uNC44LS41IDEuMi0uMy41LS41IDEuMS0uOCAxLjYtLjIuNC0uNC43LS43IDEuMS0uMy41LS43IDEtMSAxLjUtLjMuNC0uNS43LS44IDEtLjQuNC0uOC45LTEuMiAxLjMtLjMuMy0uNi42LTEgLjktLjQuNC0uOS44LTEuNCAxLjEtLjQuMy0uNy42LTEuMS44LS4xLjEtLjMuMi0uNC4zTDUyNS4yIDc4NmMtNCAyLjctOC42IDQtMTMuMiA0LTQuNyAwLTkuMy0xLjQtMTMuMy00TDI0NC42IDYxNi45Yy0uMS0uMS0uMy0uMi0uNC0uM2wtMS4xLS44Yy0uNS0uNC0uOS0uNy0xLjMtMS4xLS4zLS4zLS42LS42LTEtLjktLjQtLjQtLjgtLjgtMS4yLTEuM2E3IDcgMCAwIDEtLjgtMWMtLjQtLjUtLjctMS0xLTEuNS0uMi0uNC0uNS0uNy0uNy0xLjEtLjMtLjUtLjYtMS4xLS44LTEuNi0uMi0uNC0uNC0uOC0uNS0xLjItLjItLjYtLjQtMS4yLS42LTEuNy0uMS0uNC0uMy0uOC0uNC0xLjItLjItLjctLjMtMS4zLS40LTItLjEtLjMtLjEtLjctLjItMS0uMS0xLS4yLTIuMS0uMi0zLjFWNDI3LjljMC0xIC4xLTIuMS4yLTMuMS4xLS4zLjEtLjcuMi0xYTE0LjE2IDE0LjE2IDAgMCAxIC44LTMuMmMuMi0uNi40LTEuMi42LTEuNy4yLS40LjQtLjguNS0xLjIuMi0uNS41LTEuMS44LTEuNi4yLS40LjQtLjcuNy0xLjEuNi0uOSAxLjItMS43IDEuOC0yLjUuNC0uNC44LS45IDEuMi0xLjMuMy0uMy42LS42IDEtLjkuNC0uNC45LS44IDEuMy0xLjEuNC0uMy43LS42IDEuMS0uOC4xLS4xLjMtLjIuNC0uM0w0OTguNyAyMzljOC01LjMgMTguNS01LjMgMjYuNSAwbDI1NC4xIDE2OS4xYy4xLjEuMy4yLjQuM2wxLjEuOCAxLjQgMS4xYy4zLjMuNi42IDEgLjkuNC40LjguOCAxLjIgMS4zLjcuOCAxLjMgMS42IDEuOCAyLjUuMi40LjUuNy43IDEuMS4zLjUuNiAxIC44IDEuNi4yLjQuNC44LjUgMS4yLjIuNi40IDEuMi42IDEuNy4xLjQuMy44LjQgMS4yLjIuNy4zIDEuMy40IDIgLjEuMy4xLjcuMiAxIC4xIDEgLjIgMi4xLjIgMy4xVjU5N3ptLTI1NC4xIDEzLjN2MTExLjNMNzIzLjEgNTk3bC04My42LTU1Ljh6TTI4MS44IDQ3Mi42djc5LjhsNTkuOC0zOS45ek01MTIgNDU2LjFsLTg0LjUgNTYuNCA4NC41IDU2LjQgODQuNS01Ni40ek03MjMuMSA0MjhMNTM1LjkgMzAzLjR2MTExLjNsMTAzLjYgNjkuMXpNMzg0LjUgNTQxLjJMMzAwLjkgNTk3bDE4Ny4yIDEyNC42VjYxMC4zbC0xMDMuNi02OS4xeicpKTtcbmV4cG9ydHMuQ29tcGFzc091dGxpbmUgPSBnZXRJY29uKCdjb21wYXNzJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnptMTk4LjQtNTg4LjFhMzIgMzIgMCAwIDAtMjQuNS41TDQxNC45IDQxNSAyOTYuNCA2ODZjLTMuNiA4LjItMy42IDE3LjUgMCAyNS43IDMuNCA3LjggOS43IDEzLjkgMTcuNyAxNyAzLjggMS41IDcuNyAyLjIgMTEuNyAyLjIgNC40IDAgOC43LS45IDEyLjgtMi43bDI3MS0xMTguNiAxMTguNS0yNzFhMzIuMDYgMzIuMDYgMCAwIDAtMTcuNy00Mi43ek01NzYuOCA1MzQuNGwyNi4yIDI2LjItNDIuNCA0Mi40LTI2LjItMjYuMkwzODAgNjQ0LjQgNDQ3LjUgNDkwIDQyMiA0NjQuNGw0Mi40LTQyLjQgMjUuNSAyNS41TDY0NC40IDM4MGwtNjcuNiAxNTQuNHpNNDY0LjQgNDIyTDQyMiA0NjQuNGwyNS41IDI1LjYgODYuOSA4Ni44IDI2LjIgMjYuMiA0Mi40LTQyLjQtMjYuMi0yNi4yLTg2LjgtODYuOXonKSk7XG5leHBvcnRzLkNvbnRhY3RzT3V0bGluZSA9IGdldEljb24oJ2NvbnRhY3RzJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTU5NC4zIDYwMS41YTExMS44IDExMS44IDAgMCAwIDI5LjEtNzUuNWMwLTYxLjktNDkuOS0xMTItMTExLjQtMTEycy0xMTEuNCA1MC4xLTExMS40IDExMmMwIDI5LjEgMTEgNTUuNSAyOS4xIDc1LjVhMTU4LjA5IDE1OC4wOSAwIDAgMC03NC42IDEyNi4xIDggOCAwIDAgMCA4IDguNEg0MDdjNC4yIDAgNy42LTMuMyA3LjktNy41IDMuOC01MC42IDQ2LTkwLjUgOTcuMi05MC41czkzLjQgNDAgOTcuMiA5MC41Yy4zIDQuMiAzLjcgNy41IDcuOSA3LjVINjYxYTggOCAwIDAgMCA4LTguNGMtMi44LTUzLjMtMzItOTkuNy03NC43LTEyNi4xek01MTIgNTc4Yy0yOC41IDAtNTEuNy0yMy4zLTUxLjctNTJzMjMuMi01MiA1MS43LTUyIDUxLjcgMjMuMyA1MS43IDUyLTIzLjIgNTItNTEuNyA1MnptNDE2LTM1NEg3Njh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1Nkg1NDh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NkgzMjh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1Nkg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NTc2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYyNTZjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCA1NjhIMTM2VjI5NmgxMjB2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZoMTQ4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2aDE0OHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmgxMjB2NDk2eicpKTtcbmV4cG9ydHMuQ29udGFpbmVyT3V0bGluZSA9IGdldEljb24oJ2NvbnRhaW5lcicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004MzIgNjRIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgODI0SDIzMlY2ODdoOTcuOWMxMS42IDMyLjggMzIgNjIuMyA1OS4xIDg0LjcgMzQuNSAyOC41IDc4LjIgNDQuMyAxMjMgNDQuM3M4OC41LTE1LjcgMTIzLTQ0LjNjMjcuMS0yMi40IDQ3LjUtNTEuOSA1OS4xLTg0LjdINzkydi02M0g2NDMuNmwtNS4yIDI0LjdDNjI2LjQgNzA4LjUgNTczLjIgNzUyIDUxMiA3NTJzLTExNC40LTQzLjUtMTI2LjUtMTAzLjNsLTUuMi0yNC43SDIzMlYxMzZoNTYwdjc1MnpNMzIwIDM0MWgzODRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LThIMzIwYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4em0wIDE2MGgzODRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LThIMzIwYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4eicpKTtcbmV4cG9ydHMuQ29udHJvbE91dGxpbmUgPSBnZXRJY29uKCdjb250cm9sJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDcyOEgxODRWMTg0aDY1NnY2NTZ6TTM0MCA2ODN2NzdjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOHYtNzdjLTEwLjEgMy4zLTIwLjggNS0zMiA1cy0yMS45LTEuOC0zMi01em02NC0xOThWMjY0YzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHYyMjFjMTAuMS0zLjMgMjAuOC01IDMyLTVzMjEuOSAxLjggMzIgNXptLTY0IDE5OGMxMC4xIDMuMyAyMC44IDUgMzIgNXMyMS45LTEuOCAzMi01YzQxLjgtMTMuNSA3Mi01Mi43IDcyLTk5cy0zMC4yLTg1LjUtNzItOTljLTEwLjEtMy4zLTIwLjgtNS0zMi01cy0yMS45IDEuOC0zMiA1Yy00MS44IDEzLjUtNzIgNTIuNy03MiA5OXMzMC4yIDg1LjUgNzIgOTl6bS4xLTExNS43Yy4zLS42LjctMS4yIDEtMS44di0uMWwxLjItMS44Yy4xLS4yLjItLjMuMy0uNS4zLS41LjctLjkgMS0xLjQuMS0uMS4yLS4zLjMtLjQuNS0uNi45LTEuMSAxLjQtMS42bC4zLS4zIDEuMi0xLjIuNC0uNGMuNS0uNSAxLS45IDEuNi0xLjQuNi0uNSAxLjEtLjkgMS43LTEuMy4yLS4xLjMtLjIuNS0uMy41LS4zLjktLjcgMS40LTEgLjEtLjEuMy0uMi40LS4zLjYtLjQgMS4yLS43IDEuOS0xLjEuMS0uMS4zLS4xLjQtLjIuNS0uMyAxLS41IDEuNi0uOGwuNi0uM2MuNy0uMyAxLjMtLjYgMi0uOC43LS4zIDEuNC0uNSAyLjEtLjcuMi0uMS40LS4xLjYtLjIuNi0uMiAxLjEtLjMgMS43LS40LjIgMCAuMy0uMS41LS4xLjctLjIgMS41LS4zIDIuMi0uNC4yIDAgLjMgMCAuNS0uMS42LS4xIDEuMi0uMSAxLjgtLjJoLjZjLjggMCAxLjUtLjEgMi4zLS4xczEuNSAwIDIuMy4xaC42Yy42IDAgMS4yLjEgMS44LjIuMiAwIC4zIDAgLjUuMS43LjEgMS41LjIgMi4yLjQuMiAwIC4zLjEuNS4xLjYuMSAxLjIuMyAxLjcuNC4yLjEuNC4xLjYuMi43LjIgMS40LjQgMi4xLjcuNy4yIDEuMy41IDIgLjhsLjYuM2MuNS4yIDEuMS41IDEuNi44LjEuMS4zLjEuNC4yLjYuMyAxLjMuNyAxLjkgMS4xLjEuMS4zLjIuNC4zLjUuMyAxIC42IDEuNCAxIC4yLjEuMy4yLjUuMy42LjQgMS4yLjkgMS43IDEuM3MxLjEuOSAxLjYgMS40bC40LjQgMS4yIDEuMi4zLjNjLjUuNSAxIDEuMSAxLjQgMS42LjEuMS4yLjMuMy40LjQuNC43LjkgMSAxLjQuMS4yLjIuMy4zLjVsMS4yIDEuOHMwIC4xLjEuMWEzNi4xOCAzNi4xOCAwIDAgMSA1LjEgMTguNWMwIDYtMS41IDExLjctNC4xIDE2LjctLjMuNi0uNyAxLjItMSAxLjggMCAwIDAgLjEtLjEuMWwtMS4yIDEuOGMtLjEuMi0uMi4zLS4zLjUtLjMuNS0uNy45LTEgMS40LS4xLjEtLjIuMy0uMy40LS41LjYtLjkgMS4xLTEuNCAxLjZsLS4zLjMtMS4yIDEuMi0uNC40Yy0uNS41LTEgLjktMS42IDEuNC0uNi41LTEuMS45LTEuNyAxLjMtLjIuMS0uMy4yLS41LjMtLjUuMy0uOS43LTEuNCAxLS4xLjEtLjMuMi0uNC4zLS42LjQtMS4yLjctMS45IDEuMS0uMS4xLS4zLjEtLjQuMi0uNS4zLTEgLjUtMS42LjhsLS42LjNjLS43LjMtMS4zLjYtMiAuOC0uNy4zLTEuNC41LTIuMS43LS4yLjEtLjQuMS0uNi4yLS42LjItMS4xLjMtMS43LjQtLjIgMC0uMy4xLS41LjEtLjcuMi0xLjUuMy0yLjIuNC0uMiAwLS4zIDAtLjUuMS0uNi4xLTEuMi4xLTEuOC4yaC0uNmMtLjggMC0xLjUuMS0yLjMuMXMtMS41IDAtMi4zLS4xaC0uNmMtLjYgMC0xLjItLjEtMS44LS4yLS4yIDAtLjMgMC0uNS0uMS0uNy0uMS0xLjUtLjItMi4yLS40LS4yIDAtLjMtLjEtLjUtLjEtLjYtLjEtMS4yLS4zLTEuNy0uNC0uMi0uMS0uNC0uMS0uNi0uMi0uNy0uMi0xLjQtLjQtMi4xLS43LS43LS4yLTEuMy0uNS0yLS44bC0uNi0uM2MtLjUtLjItMS4xLS41LTEuNi0uOC0uMS0uMS0uMy0uMS0uNC0uMi0uNi0uMy0xLjMtLjctMS45LTEuMS0uMS0uMS0uMy0uMi0uNC0uMy0uNS0uMy0xLS42LTEuNC0xLS4yLS4xLS4zLS4yLS41LS4zLS42LS40LTEuMi0uOS0xLjctMS4zcy0xLjEtLjktMS42LTEuNGwtLjQtLjQtMS4yLTEuMi0uMy0uM2MtLjUtLjUtMS0xLjEtMS40LTEuNi0uMS0uMS0uMi0uMy0uMy0uNC0uNC0uNC0uNy0uOS0xLTEuNC0uMS0uMi0uMi0uMy0uMy0uNWwtMS4yLTEuOHYtLjFjLS40LS42LS43LTEuMi0xLTEuOC0yLjYtNS00LjEtMTAuNy00LjEtMTYuN3MxLjUtMTEuNyA0LjEtMTYuN3pNNjIwIDUzOXYyMjFjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOFY1MzljLTEwLjEgMy4zLTIwLjggNS0zMiA1cy0yMS45LTEuOC0zMi01em02NC0xOTh2LTc3YzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHY3N2MxMC4xLTMuMyAyMC44LTUgMzItNXMyMS45IDEuOCAzMiA1em0tNjQgMTk4YzEwLjEgMy4zIDIwLjggNSAzMiA1czIxLjktMS44IDMyLTVjNDEuOC0xMy41IDcyLTUyLjcgNzItOTlzLTMwLjItODUuNS03Mi05OWMtMTAuMS0zLjMtMjAuOC01LTMyLTVzLTIxLjkgMS44LTMyIDVjLTQxLjggMTMuNS03MiA1Mi43LTcyIDk5czMwLjIgODUuNSA3MiA5OXptLjEtMTE1LjdjLjMtLjYuNy0xLjIgMS0xLjh2LS4xbDEuMi0xLjhjLjEtLjIuMi0uMy4zLS41LjMtLjUuNy0uOSAxLTEuNC4xLS4xLjItLjMuMy0uNC41LS42LjktMS4xIDEuNC0xLjZsLjMtLjMgMS4yLTEuMi40LS40Yy41LS41IDEtLjkgMS42LTEuNC42LS41IDEuMS0uOSAxLjctMS4zLjItLjEuMy0uMi41LS4zLjUtLjMuOS0uNyAxLjQtMSAuMS0uMS4zLS4yLjQtLjMuNi0uNCAxLjItLjcgMS45LTEuMS4xLS4xLjMtLjEuNC0uMi41LS4zIDEtLjUgMS42LS44bC42LS4zYy43LS4zIDEuMy0uNiAyLS44LjctLjMgMS40LS41IDIuMS0uNy4yLS4xLjQtLjEuNi0uMi42LS4yIDEuMS0uMyAxLjctLjQuMiAwIC4zLS4xLjUtLjEuNy0uMiAxLjUtLjMgMi4yLS40LjIgMCAuMyAwIC41LS4xLjYtLjEgMS4yLS4xIDEuOC0uMmguNmMuOCAwIDEuNS0uMSAyLjMtLjFzMS41IDAgMi4zLjFoLjZjLjYgMCAxLjIuMSAxLjguMi4yIDAgLjMgMCAuNS4xLjcuMSAxLjUuMiAyLjIuNC4yIDAgLjMuMS41LjEuNi4xIDEuMi4zIDEuNy40LjIuMS40LjEuNi4yLjcuMiAxLjQuNCAyLjEuNy43LjIgMS4zLjUgMiAuOGwuNi4zYy41LjIgMS4xLjUgMS42LjguMS4xLjMuMS40LjIuNi4zIDEuMy43IDEuOSAxLjEuMS4xLjMuMi40LjMuNS4zIDEgLjYgMS40IDEgLjIuMS4zLjIuNS4zLjYuNCAxLjIuOSAxLjcgMS4zczEuMS45IDEuNiAxLjRsLjQuNCAxLjIgMS4yLjMuM2MuNS41IDEgMS4xIDEuNCAxLjYuMS4xLjIuMy4zLjQuNC40LjcuOSAxIDEuNC4xLjIuMi4zLjMuNWwxLjIgMS44di4xYTM2LjE4IDM2LjE4IDAgMCAxIDUuMSAxOC41YzAgNi0xLjUgMTEuNy00LjEgMTYuNy0uMy42LS43IDEuMi0xIDEuOHYuMWwtMS4yIDEuOGMtLjEuMi0uMi4zLS4zLjUtLjMuNS0uNy45LTEgMS40LS4xLjEtLjIuMy0uMy40LS41LjYtLjkgMS4xLTEuNCAxLjZsLS4zLjMtMS4yIDEuMi0uNC40Yy0uNS41LTEgLjktMS42IDEuNC0uNi41LTEuMS45LTEuNyAxLjMtLjIuMS0uMy4yLS41LjMtLjUuMy0uOS43LTEuNCAxLS4xLjEtLjMuMi0uNC4zLS42LjQtMS4yLjctMS45IDEuMS0uMS4xLS4zLjEtLjQuMi0uNS4zLTEgLjUtMS42LjhsLS42LjNjLS43LjMtMS4zLjYtMiAuOC0uNy4zLTEuNC41LTIuMS43LS4yLjEtLjQuMS0uNi4yLS42LjItMS4xLjMtMS43LjQtLjIgMC0uMy4xLS41LjEtLjcuMi0xLjUuMy0yLjIuNC0uMiAwLS4zIDAtLjUuMS0uNi4xLTEuMi4xLTEuOC4yaC0uNmMtLjggMC0xLjUuMS0yLjMuMXMtMS41IDAtMi4zLS4xaC0uNmMtLjYgMC0xLjItLjEtMS44LS4yLS4yIDAtLjMgMC0uNS0uMS0uNy0uMS0xLjUtLjItMi4yLS40LS4yIDAtLjMtLjEtLjUtLjEtLjYtLjEtMS4yLS4zLTEuNy0uNC0uMi0uMS0uNC0uMS0uNi0uMi0uNy0uMi0xLjQtLjQtMi4xLS43LS43LS4yLTEuMy0uNS0yLS44bC0uNi0uM2MtLjUtLjItMS4xLS41LTEuNi0uOC0uMS0uMS0uMy0uMS0uNC0uMi0uNi0uMy0xLjMtLjctMS45LTEuMS0uMS0uMS0uMy0uMi0uNC0uMy0uNS0uMy0xLS42LTEuNC0xLS4yLS4xLS4zLS4yLS41LS4zLS42LS40LTEuMi0uOS0xLjctMS4zcy0xLjEtLjktMS42LTEuNGwtLjQtLjQtMS4yLTEuMi0uMy0uM2MtLjUtLjUtMS0xLjEtMS40LTEuNi0uMS0uMS0uMi0uMy0uMy0uNC0uNC0uNC0uNy0uOS0xLTEuNC0uMS0uMi0uMi0uMy0uMy0uNWwtMS4yLTEuOHYtLjFjLS40LS42LS43LTEuMi0xLTEuOC0yLjYtNS00LjEtMTAuNy00LjEtMTYuN3MxLjUtMTEuNyA0LjEtMTYuN3onKSk7XG5leHBvcnRzLkNvcHlPdXRsaW5lID0gZ2V0SWNvbignY29weScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004MzIgNjRIMjk2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDQ5NnY2ODhjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOFY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNzA0IDE5MkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjUzMC43YzAgOC41IDMuNCAxNi42IDkuNCAyMi42bDE3My4zIDE3My4zYzIuMiAyLjIgNC43IDQgNy40IDUuNXYxLjloNC4yYzMuNSAxLjMgNy4yIDIgMTEgMkg3MDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zNTAgODU2LjJMMjYzLjkgNzcwSDM1MHY4Ni4yek02NjQgODg4SDQxNFY3NDZjMC0yMi4xLTE3LjktNDAtNDAtNDBIMjMyVjI2NGg0MzJ2NjI0eicpKTtcbmV4cG9ydHMuQ3JlZGl0Q2FyZE91dGxpbmUgPSBnZXRJY29uKCdjcmVkaXQtY2FyZCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MjggMTYwSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NDBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTc5MiA3Mmg3NTJ2MTIwSDEzNlYyMzJ6bTc1MiA1NjBIMTM2VjQ0MGg3NTJ2MzUyem0tMjM3LTY0aDE2NWM0LjQgMCA4LTMuNiA4LTh2LTcyYzAtNC40LTMuNi04LTgtOEg2NTFjLTQuNCAwLTggMy42LTggOHY3MmMwIDQuNCAzLjYgOCA4IDh6JykpO1xuZXhwb3J0cy5Dcm93bk91dGxpbmUgPSBnZXRJY29uKCdjcm93bicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004OTkuNiAyNzYuNUw3MDUgMzk2LjQgNTE4LjQgMTQ3LjVhOC4wNiA4LjA2IDAgMCAwLTEyLjkgMEwzMTkgMzk2LjQgMTI0LjMgMjc2LjVjLTUuNy0zLjUtMTMuMSAxLjItMTIuMiA3LjlMMTg4LjUgODY1YzEuMSA3LjkgNy45IDE0IDE2IDE0aDYxNS4xYzggMCAxNC45LTYgMTUuOS0xNGw3Ni40LTU4MC42Yy44LTYuNy02LjUtMTEuNC0xMi4zLTcuOXptLTEyNiA1MzQuMUgyNTAuM2wtNTMuOC00MDkuNCAxMzkuOCA4Ni4xTDUxMiAyNTIuOWwxNzUuNyAyMzQuNCAxMzkuOC04Ni4xLTUzLjkgNDA5LjR6TTUxMiA1MDljLTYyLjEgMC0xMTIuNiA1MC41LTExMi42IDExMi42UzQ0OS45IDczNC4yIDUxMiA3MzQuMnMxMTIuNi01MC41IDExMi42LTExMi42UzU3NC4xIDUwOSA1MTIgNTA5em0wIDE2MC45Yy0yNi42IDAtNDguMi0yMS42LTQ4LjItNDguMyAwLTI2LjYgMjEuNi00OC4zIDQ4LjItNDguM3M0OC4yIDIxLjYgNDguMiA0OC4zYzAgMjYuNi0yMS42IDQ4LjMtNDguMiA0OC4zeicpKTtcbmV4cG9ydHMuQ3VzdG9tZXJTZXJ2aWNlT3V0bGluZSA9IGdldEljb24oJ2N1c3RvbWVyLXNlcnZpY2UnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDEyOGMtMjEyLjEgMC0zODQgMTcxLjktMzg0IDM4NHYzNjBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjYyNGMwLTM1LjMtMjguNy02NC02NC02NEgyMDB2LTQ4YzAtMTcyLjMgMTM5LjctMzEyIDMxMi0zMTJzMzEyIDEzOS43IDMxMiAzMTJ2NDhINjg4Yy0zNS4zIDAtNjQgMjguNy02NCA2NHYyMDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRoMTg0YzEzLjMgMCAyNC0xMC43IDI0LTI0VjUxMmMwLTIxMi4xLTE3MS45LTM4NC0zODQtMzg0ek0zMjggNjMydjE5MkgyMDBWNjMyaDEyOHptNDk2IDE5Mkg2OTZWNjMyaDEyOHYxOTJ6JykpO1xuZXhwb3J0cy5EYXNoYm9hcmRPdXRsaW5lID0gZ2V0SWNvbignZGFzaGJvYXJkJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkyNC44IDM4NS42YTQ0Ni43IDQ0Ni43IDAgMCAwLTk2LTE0Mi40IDQ0Ni43IDQ0Ni43IDAgMCAwLTE0Mi40LTk2QzYzMS4xIDEyMy44IDU3Mi41IDExMiA1MTIgMTEycy0xMTkuMSAxMS44LTE3NC40IDM1LjJhNDQ2LjcgNDQ2LjcgMCAwIDAtMTQyLjQgOTYgNDQ2LjcgNDQ2LjcgMCAwIDAtOTYgMTQyLjRDNzUuOCA0NDAuOSA2NCA0OTkuNSA2NCA1NjBjMCAxMzIuNyA1OC4zIDI1Ny43IDE1OS45IDM0My4xbDEuNyAxLjRjNS44IDQuOCAxMy4xIDcuNSAyMC42IDcuNWg1MzEuN2M3LjUgMCAxNC44LTIuNyAyMC42LTcuNWwxLjctMS40QzkwMS43IDgxNy43IDk2MCA2OTIuNyA5NjAgNTYwYzAtNjAuNS0xMS45LTExOS4xLTM1LjItMTc0LjR6TTc2MS40IDgzNkgyNjIuNkEzNzEuMTIgMzcxLjEyIDAgMCAxIDE0MCA1NjBjMC05OS40IDM4LjctMTkyLjggMTA5LTI2MyA3MC4zLTcwLjMgMTYzLjctMTA5IDI2My0xMDkgOTkuNCAwIDE5Mi44IDM4LjcgMjYzIDEwOSA3MC4zIDcwLjMgMTA5IDE2My43IDEwOSAyNjMgMCAxMDUuNi00NC41IDIwNS41LTEyMi42IDI3NnpNNjIzLjUgNDIxLjVhOC4wMyA4LjAzIDAgMCAwLTExLjMgMEw1MjcuNyA1MDZjLTE4LjctNS0zOS40LS4yLTU0LjEgMTQuNWE1NS45NSA1NS45NSAwIDAgMCAwIDc5LjIgNTUuOTUgNTUuOTUgMCAwIDAgNzkuMiAwIDU1Ljg3IDU1Ljg3IDAgMCAwIDE0LjUtNTQuMWw4NC41LTg0LjVjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM2wtMjguMy0yOC4zek00OTAgMzIwaDQ0YzQuNCAwIDgtMy42IDgtOHYtODBjMC00LjQtMy42LTgtOC04aC00NGMtNC40IDAtOCAzLjYtOCA4djgwYzAgNC40IDMuNiA4IDggOHptMjYwIDIxOHY0NGMwIDQuNCAzLjYgOCA4IDhoODBjNC40IDAgOC0zLjYgOC04di00NGMwLTQuNC0zLjYtOC04LThoLTgwYy00LjQgMC04IDMuNi04IDh6bTEyLjctMTk3LjJsLTMxLjEtMzEuMWE4LjAzIDguMDMgMCAwIDAtMTEuMyAwbC01Ni42IDU2LjZhOC4wMyA4LjAzIDAgMCAwIDAgMTEuM2wzMS4xIDMxLjFjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGw1Ni42LTU2LjZjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM3ptLTQ1OC42LTMxLjFhOC4wMyA4LjAzIDAgMCAwLTExLjMgMGwtMzEuMSAzMS4xYTguMDMgOC4wMyAwIDAgMCAwIDExLjNsNTYuNiA1Ni42YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMzEuMS0zMS4xYzMuMS0zLjEgMy4xLTguMiAwLTExLjNsLTU2LjYtNTYuNnpNMjYyIDUzMGgtODBjLTQuNCAwLTggMy42LTggOHY0NGMwIDQuNCAzLjYgOCA4IDhoODBjNC40IDAgOC0zLjYgOC04di00NGMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5EZWxldGVPdXRsaW5lID0gZ2V0SWNvbignZGVsZXRlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTM2MCAxODRoLThjNC40IDAgOC0zLjYgOC04djhoMzA0di04YzAgNC40IDMuNiA4IDggOGgtOHY3Mmg3MnYtODBjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzUyYy0zNS4zIDAtNjQgMjguNy02NCA2NHY4MGg3MnYtNzJ6bTUwNCA3MkgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyYzAgNC40IDMuNiA4IDggOGg2MC40bDI0LjcgNTIzYzEuNiAzNC4xIDI5LjggNjEgNjMuOSA2MWg0NTRjMzQuMiAwIDYyLjMtMjYuOCA2My45LTYxbDI0LjctNTIzSDg4OGM0LjQgMCA4LTMuNiA4LTh2LTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek03MzEuMyA4NDBIMjkyLjdsLTI0LjItNTEyaDQ4N2wtMjQuMiA1MTJ6JykpO1xuZXhwb3J0cy5EaWZmT3V0bGluZSA9IGdldEljb24oJ2RpZmYnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNDc2IDM5OS4xYzAtMy45LTMuMS03LjEtNy03LjFoLTQyYy0zLjggMC03IDMuMi03IDcuMVY0ODRoLTg0LjVjLTQuMSAwLTcuNSAzLjEtNy41IDd2NDJjMCAzLjggMy40IDcgNy41IDdINDIwdjg0LjljMCAzLjkgMy4yIDcuMSA3IDcuMWg0MmMzLjkgMCA3LTMuMiA3LTcuMVY1NDBoODQuNWM0LjEgMCA3LjUtMy4yIDcuNS03di00MmMwLTMuOS0zLjQtNy03LjUtN0g0NzZ2LTg0Ljl6TTU2MC41IDcwNGgtMjI1Yy00LjEgMC03LjUgMy4yLTcuNSA3djQyYzAgMy44IDMuNCA3IDcuNSA3aDIyNWM0LjEgMCA3LjUtMy4yIDcuNS03di00MmMwLTMuOC0zLjQtNy03LjUtN3ptLTcuMS01MDIuNmMtNi02LTE0LjEtOS40LTIyLjYtOS40SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzA0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDUxMmMxNy43IDAgMzItMTQuMyAzMi0zMlYzOTcuM2MwLTguNS0zLjQtMTYuNi05LjQtMjIuNkw1NTMuNCAyMDEuNHpNNjY0IDg4OEgyMzJWMjY0aDI4Mi4yTDY2NCA0MTMuOFY4ODh6bTE5MC4yLTU4MS40TDYxMS4zIDcyLjljLTYtNS43LTEzLjktOC45LTIyLjItOC45SDI5NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGgyNzdsMjE5IDIxMC42VjgyNGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04VjMyOS42YzAtOC43LTMuNS0xNy05LjgtMjN6JykpO1xuZXhwb3J0cy5EYXRhYmFzZU91dGxpbmUgPSBnZXRJY29uKCdkYXRhYmFzZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004MzIgNjRIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNjAwIDcyaDU2MHYyMDhIMjMyVjEzNnptNTYwIDQ4MEgyMzJWNDA4aDU2MHYyMDh6bTAgMjcySDIzMlY2ODBoNTYwdjIwOHpNMzA0IDI0MGE0MCA0MCAwIDEgMCA4MCAwIDQwIDQwIDAgMSAwLTgwIDB6bTAgMjcyYTQwIDQwIDAgMSAwIDgwIDAgNDAgNDAgMCAxIDAtODAgMHptMCAyNzJhNDAgNDAgMCAxIDAgODAgMCA0MCA0MCAwIDEgMC04MCAweicpKTtcbmV4cG9ydHMuRGlzbGlrZU91dGxpbmUgPSBnZXRJY29uKCdkaXNsaWtlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4NS45IDQ5MC4zYzMuNi0xMiA1LjQtMjQuNCA1LjQtMzcgMC0yOC4zLTkuMy01NS41LTI2LjEtNzcuNyAzLjYtMTIgNS40LTI0LjQgNS40LTM3IDAtMjguMy05LjMtNTUuNS0yNi4xLTc3LjcgMy42LTEyIDUuNC0yNC40IDUuNC0zNyAwLTUxLjYtMzAuNy05OC4xLTc4LjMtMTE4LjRhNjYuMSA2Ni4xIDAgMCAwLTI2LjUtNS40SDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDEyOS4zbDg1LjggMzEwLjhDMzcyLjkgODg5IDQxOC45IDkyNCA0NzAuOSA5MjRjMjkuNyAwIDU3LjQtMTEuOCA3Ny45LTMzLjQgMjAuNS0yMS41IDMxLTQ5LjcgMjkuNS03OS40bC02LTEyMi45aDIzOS45YzEyLjEgMCAyMy45LTMuMiAzNC4zLTkuMyA0MC40LTIzLjUgNjUuNS02Ni4xIDY1LjUtMTExIDAtMjguMy05LjMtNTUuNS0yNi4xLTc3Ljd6TTE4NCA0NTZWMTcyaDgxdjI4NGgtODF6bTYyNy4yIDE2MC40SDQ5Ni44bDkuNiAxOTguNGMuNiAxMS45LTQuNyAyMy4xLTE0LjYgMzAuNS02LjEgNC41LTEzLjYgNi44LTIxLjEgNi43YTQ0LjI4IDQ0LjI4IDAgMCAxLTQyLjItMzIuM0wzMjkgNDU5LjJWMTcyaDQxNS40YTU2Ljg1IDU2Ljg1IDAgMCAxIDMzLjYgNTEuOGMwIDkuNy0yLjMgMTguOS02LjkgMjcuM2wtMTMuOSAyNS40IDIxLjkgMTlhNTYuNzYgNTYuNzYgMCAwIDEgMTkuNiA0M2MwIDkuNy0yLjMgMTguOS02LjkgMjcuM2wtMTMuOSAyNS40IDIxLjkgMTlhNTYuNzYgNTYuNzYgMCAwIDEgMTkuNiA0M2MwIDkuNy0yLjMgMTguOS02LjkgMjcuM2wtMTQgMjUuNSAyMS45IDE5YTU2Ljc2IDU2Ljc2IDAgMCAxIDE5LjYgNDNjMCAxOS4xLTExIDM3LjUtMjguOCA0OC40eicpKTtcbmV4cG9ydHMuRG93bkNpcmNsZU91dGxpbmUgPSBnZXRJY29uKCdkb3duLWNpcmNsZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ002OTAgNDA1aC00Ni45Yy0xMC4yIDAtMTkuOSA0LjktMjUuOSAxMy4yTDUxMiA1NjMuNiA0MDYuOCA0MTguMmMtNi04LjMtMTUuNi0xMy4yLTI1LjktMTMuMkgzMzRjLTYuNSAwLTEwLjMgNy40LTYuNSAxMi43bDE3OCAyNDZjMy4yIDQuNCA5LjcgNC40IDEyLjkgMGwxNzgtMjQ2YzMuOS01LjMuMS0xMi43LTYuNC0xMi43eicsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyeicpKTtcbmV4cG9ydHMuRG93blNxdWFyZU91dGxpbmUgPSBnZXRJY29uKCdkb3duLXNxdWFyZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MDUuNSA2NTguN2MzLjIgNC40IDkuNyA0LjQgMTIuOSAwbDE3OC0yNDZjMy44LTUuMyAwLTEyLjctNi41LTEyLjdINjQzYy0xMC4yIDAtMTkuOSA0LjktMjUuOSAxMy4yTDUxMiA1NTguNiA0MDYuOCA0MTMuMmMtNi04LjMtMTUuNi0xMy4yLTI1LjktMTMuMkgzMzRjLTYuNSAwLTEwLjMgNy40LTYuNSAxMi43bDE3OCAyNDZ6JywgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCA3MjhIMTg0VjE4NGg2NTZ2NjU2eicpKTtcbmV4cG9ydHMuRHJpYmJibGVTcXVhcmVPdXRsaW5lID0gZ2V0SWNvbignZHJpYmJibGUtc3F1YXJlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQ5OC42IDQzMmMtNDAuOC03Mi41LTg0LjctMTMzLjQtOTEuMi0xNDIuMy02OC44IDMyLjUtMTIwLjMgOTUuOS0xMzYuMiAxNzIuMiAxMSAuMiAxMTIuNC43IDIyNy40LTI5Ljl6bTY2LjUgMjEuOGM1LjcgMTEuNyAxMS4yIDIzLjYgMTYuMyAzNS42IDEuOCA0LjIgMy42IDguNCA1LjMgMTIuNyA4MS44LTEwLjMgMTYzLjIgNi4yIDE3MS4zIDcuOS0uNS01OC4xLTIxLjMtMTExLjQtNTUuNS0xNTMuMy01LjMgNy4xLTQ2LjUgNjAtMTM3LjQgOTcuMXpNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek01MTIgODAwYy0xNTguOCAwLTI4OC0xMjkuMi0yODgtMjg4czEyOS4yLTI4OCAyODgtMjg4IDI4OCAxMjkuMiAyODggMjg4LTEyOS4yIDI4OC0yODggMjg4em04OS43LTI1OS4xYzMyLjIgODguNCA0NS4zIDE2MC40IDQ3LjggMTc1LjQgNTUuMi0zNy4zIDk0LjUtOTYuNCAxMDUuNC0xNjQuOS04LjQtMi42LTc2LjEtMjIuOC0xNTMuMi0xMC41em0tNzIuNS0yNi40YzMuMi0xIDYuNC0yIDkuNy0yLjktNi4yLTE0LTEyLjktMjgtMTkuOS00MS43LTEyMi44IDM2LjgtMjQyLjEgMzUuMi0yNTIuOCAzNS0uMSAyLjUtLjEgNS0uMSA3LjUgMCA2My4yIDIzLjkgMTIwLjkgNjMuMiAxNjQuNSA1LjUtOS42IDczLTEyMS40IDE5OS45LTE2Mi40em0xNDUuOS0xODYuMmEyNDUuMiAyNDUuMiAwIDAgMC0yMjAuOC01NS4xYzYuOCA5LjEgNTEuNSA2OS45IDkxLjggMTQ0IDg3LjUtMzIuOCAxMjQuNS04Mi42IDEyOS04OC45ek01NTQgNTUyLjhjLTEzOC43IDQ4LjMtMTg4LjYgMTQ0LjYtMTkzIDE1My42IDQxLjcgMzIuNSA5NC4xIDUxLjkgMTUxIDUxLjkgMzQuMSAwIDY2LjYtNi45IDk2LjEtMTkuNS0zLjctMjEuNi0xNy45LTk2LjgtNTIuNS0xODYuNmwtMS42LjZ6JykpO1xuZXhwb3J0cy5FbnZpcm9ubWVudE91dGxpbmUgPSBnZXRJY29uKCdlbnZpcm9ubWVudCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NTQuNiAyODkuMWEzNjIuNDkgMzYyLjQ5IDAgMCAwLTc5LjktMTE1LjcgMzcwLjgzIDM3MC44MyAwIDAgMC0xMTguMi03Ny44QzYxMC43IDc2LjYgNTYyLjEgNjcgNTEyIDY3Yy01MC4xIDAtOTguNyA5LjYtMTQ0LjUgMjguNS00NC4zIDE4LjMtODQgNDQuNS0xMTguMiA3Ny44QTM2My42IDM2My42IDAgMCAwIDE2OS40IDI4OWMtMTkuNSA0NS0yOS40IDkyLjgtMjkuNCAxNDIgMCA3MC42IDE2LjkgMTQwLjkgNTAuMSAyMDguNyAyNi43IDU0LjUgNjQgMTA3LjYgMTExIDE1OC4xIDgwLjMgODYuMiAxNjQuNSAxMzguOSAxODguNCAxNTNhNDMuOSA0My45IDAgMCAwIDIyLjQgNi4xYzcuOCAwIDE1LjUtMiAyMi40LTYuMSAyMy45LTE0LjEgMTA4LjEtNjYuOCAxODguNC0xNTMgNDctNTAuNCA4NC4zLTEwMy42IDExMS0xNTguMUM4NjcuMSA1NzIgODg0IDUwMS44IDg4NCA0MzEuMWMwLTQ5LjItOS45LTk3LTI5LjQtMTQyek01MTIgODgwLjJjLTY1LjktNDEuOS0zMDAtMjA3LjgtMzAwLTQ0OS4xIDAtNzcuOSAzMS4xLTE1MS4xIDg3LjYtMjA2LjNDMzU2LjMgMTY5LjUgNDMxLjcgMTM5IDUxMiAxMzlzMTU1LjcgMzAuNSAyMTIuNCA4NS45Qzc4MC45IDI4MCA4MTIgMzUzLjIgODEyIDQzMS4xYzAgMjQxLjMtMjM0LjEgNDA3LjItMzAwIDQ0OS4xem0wLTYxNy4yYy05Ny4yIDAtMTc2IDc4LjgtMTc2IDE3NnM3OC44IDE3NiAxNzYgMTc2IDE3Ni03OC44IDE3Ni0xNzYtNzguOC0xNzYtMTc2LTE3NnptNzkuMiAyNTUuMkExMTEuNiAxMTEuNiAwIDAgMSA1MTIgNTUxYy0yOS45IDAtNTgtMTEuNy03OS4yLTMyLjhBMTExLjYgMTExLjYgMCAwIDEgNDAwIDQzOWMwLTI5LjkgMTEuNy01OCAzMi44LTc5LjJDNDU0IDMzOC42IDQ4Mi4xIDMyNyA1MTIgMzI3YzI5LjkgMCA1OCAxMS42IDc5LjIgMzIuOEM2MTIuNCAzODEgNjI0IDQwOS4xIDYyNCA0MzljMCAyOS45LTExLjYgNTgtMzIuOCA3OS4yeicpKTtcbmV4cG9ydHMuRWRpdE91dGxpbmUgPSBnZXRJY29uKCdlZGl0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTI1Ny43IDc1MmMyIDAgNC0uMiA2LS41TDQzMS45IDcyMmMyLS40IDMuOS0xLjMgNS4zLTIuOGw0MjMuOS00MjMuOWE5Ljk2IDkuOTYgMCAwIDAgMC0xNC4xTDY5NC45IDExNC45Yy0xLjktMS45LTQuNC0yLjktNy4xLTIuOXMtNS4yIDEtNy4xIDIuOUwyNTYuOCA1MzguOGMtMS41IDEuNS0yLjQgMy4zLTIuOCA1LjNsLTI5LjUgMTY4LjJhMzMuNSAzMy41IDAgMCAwIDkuNCAyOS44YzYuNiA2LjQgMTQuOSA5LjkgMjMuOCA5Ljl6bTY3LjQtMTc0LjRMNjg3LjggMjE1bDczLjMgNzMuMy0zNjIuNyAzNjIuNi04OC45IDE1LjcgMTUuNi04OXpNODgwIDgzNkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjM2YzAgNC40IDMuNiA4IDggOGg3ODRjNC40IDAgOC0zLjYgOC04di0zNmMwLTE3LjctMTQuMy0zMi0zMi0zMnonKSk7XG5leHBvcnRzLkV4Y2xhbWF0aW9uQ2lyY2xlT3V0bGluZSA9IGdldEljb24oJ2V4Y2xhbWF0aW9uLWNpcmNsZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6JywgJ000NjQgNjg4YTQ4IDQ4IDAgMSAwIDk2IDAgNDggNDggMCAxIDAtOTYgMHptMjQtMTEyaDQ4YzQuNCAwIDgtMy42IDgtOFYyOTZjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djI3MmMwIDQuNCAzLjYgOCA4IDh6JykpO1xuZXhwb3J0cy5FeHBlcmltZW50T3V0bGluZSA9IGdldEljb24oJ2V4cGVyaW1lbnQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDQ3MmE0MCA0MCAwIDEgMCA4MCAwIDQwIDQwIDAgMSAwLTgwIDB6bTM2NyAzNTIuOUw2OTYuMyAzNTJWMTc4SDc2OHYtNjhIMjU2djY4aDcxLjd2MTc0TDE0NSA4MjQuOWMtMi44IDcuNC00LjMgMTUuMi00LjMgMjMuMSAwIDM1LjMgMjguNyA2NCA2NCA2NGg2MTQuNmM3LjkgMCAxNS43LTEuNSAyMy4xLTQuMyAzMy0xMi43IDQ5LjQtNDkuOCAzNi42LTgyLjh6TTM5NS43IDM2NC43VjE4MGgyMzIuNnYxODQuN0w3MTkuMiA2MDBjLTIwLjctNS4zLTQyLjEtOC02My45LTgtNjEuMiAwLTExOS4yIDIxLjUtMTY1LjMgNjBhMTg4Ljc4IDE4OC43OCAwIDAgMS0xMjEuMyA0My45Yy0zMi43IDAtNjQuMS04LjMtOTEuOC0yMy43bDExOC44LTMwNy41ek0yMTAuNSA4NDRsNDEuNy0xMDcuOGMzNS43IDE4LjEgNzUuNCAyNy44IDExNi42IDI3LjggNjEuMiAwIDExOS4yLTIxLjUgMTY1LjMtNjAgMzMuOS0yOC4yIDc2LjMtNDMuOSAxMjEuMy00My45IDM1IDAgNjguNCA5LjUgOTcuNiAyNy4xTDgxMy41IDg0NGgtNjAzeicpKTtcbmV4cG9ydHMuRXllSW52aXNpYmxlT3V0bGluZSA9IGdldEljb24oJ2V5ZS1pbnZpc2libGUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTQyLjIgNDg2LjJRODg5LjQ3IDM3NS4xMSA4MTYuNyAzMDVsLTUwLjg4IDUwLjg4QzgwNy4zMSAzOTUuNTMgODQzLjQ1IDQ0Ny40IDg3NC43IDUxMiA3OTEuNSA2ODQuMiA2NzMuNCA3NjYgNTEyIDc2NnEtNzIuNjcgMC0xMzMuODctMjIuMzhMMzIzIDc5OC43NVE0MDggODM4IDUxMiA4MzhxMjg4LjMgMCA0MzAuMi0zMDAuM2E2MC4yOSA2MC4yOSAwIDAgMCAwLTUxLjV6bS02My41Ny0zMjAuNjRMODM2IDEyMi44OGE4IDggMCAwIDAtMTEuMzIgMEw3MTUuMzEgMjMyLjJRNjI0Ljg2IDE4NiA1MTIgMTg2cS0yODguMyAwLTQzMC4yIDMwMC4zYTYwLjMgNjAuMyAwIDAgMCAwIDUxLjVxNTYuNjkgMTE5LjQgMTM2LjUgMTkxLjQxTDExMi40OCA4MzVhOCA4IDAgMCAwIDAgMTEuMzFMMTU1LjE3IDg4OWE4IDggMCAwIDAgMTEuMzEgMGw3MTIuMTUtNzEyLjEyYTggOCAwIDAgMCAwLTExLjMyek0xNDkuMyA1MTJDMjMyLjYgMzM5LjggMzUwLjcgMjU4IDUxMiAyNThjNTQuNTQgMCAxMDQuMTMgOS4zNiAxNDkuMTIgMjguMzlsLTcwLjMgNzAuM2ExNzYgMTc2IDAgMCAwLTIzOC4xMyAyMzguMTNsLTgzLjQyIDgzLjQyQzIyMy4xIDYzNy40OSAxODMuMyA1ODIuMjggMTQ5LjMgNTEyem0yNDYuNyAwYTExMi4xMSAxMTIuMTEgMCAwIDEgMTQ2LjItMTA2LjY5TDQwMS4zMSA1NDYuMkExMTIgMTEyIDAgMCAxIDM5NiA1MTJ6JywgJ001MDggNjI0Yy0zLjQ2IDAtNi44Ny0uMTYtMTAuMjUtLjQ3bC01Mi44MiA1Mi44MmExNzYuMDkgMTc2LjA5IDAgMCAwIDIyNy40Mi0yMjcuNDJsLTUyLjgyIDUyLjgyYy4zMSAzLjM4LjQ3IDYuNzkuNDcgMTAuMjVhMTExLjk0IDExMS45NCAwIDAgMS0xMTIgMTEyeicpKTtcbmV4cG9ydHMuRXllT3V0bGluZSA9IGdldEljb24oJ2V5ZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005NDIuMiA0ODYuMkM4NDcuNCAyODYuNSA3MDQuMSAxODYgNTEyIDE4NmMtMTkyLjIgMC0zMzUuNCAxMDAuNS00MzAuMiAzMDAuM2E2MC4zIDYwLjMgMCAwIDAgMCA1MS41QzE3Ni42IDczNy41IDMxOS45IDgzOCA1MTIgODM4YzE5Mi4yIDAgMzM1LjQtMTAwLjUgNDMwLjItMzAwLjMgNy43LTE2LjIgNy43LTM1IDAtNTEuNXpNNTEyIDc2NmMtMTYxLjMgMC0yNzkuNC04MS44LTM2Mi43LTI1NEMyMzIuNiAzMzkuOCAzNTAuNyAyNTggNTEyIDI1OGMxNjEuMyAwIDI3OS40IDgxLjggMzYyLjcgMjU0Qzc5MS41IDY4NC4yIDY3My40IDc2NiA1MTIgNzY2em0tNC00MzBjLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2czc4LjggMTc2IDE3NiAxNzYgMTc2LTc4LjggMTc2LTE3Ni03OC44LTE3Ni0xNzYtMTc2em0wIDI4OGMtNjEuOSAwLTExMi01MC4xLTExMi0xMTJzNTAuMS0xMTIgMTEyLTExMiAxMTIgNTAuMSAxMTIgMTEyLTUwLjEgMTEyLTExMiAxMTJ6JykpO1xuZXhwb3J0cy5GYWNlYm9va091dGxpbmUgPSBnZXRJY29uKCdmYWNlYm9vaycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0zMiA3MzZINjYzLjlWNjAyLjJoMTA0bDE1LjYtMTIwLjdINjYzLjl2LTc3LjFjMC0zNSA5LjctNTguOCA1OS44LTU4LjhoNjMuOXYtMTA4Yy0xMS4xLTEuNS00OS00LjgtOTMuMi00LjgtOTIuMiAwLTE1NS4zIDU2LjMtMTU1LjMgMTU5LjZ2ODlINDM0Ljl2MTIwLjdoMTA0LjNWODQ4SDE3NlYxNzZoNjcydjY3MnonKSk7XG5leHBvcnRzLkZhc3RCYWNrd2FyZE91dGxpbmUgPSBnZXRJY29uKCdmYXN0LWJhY2t3YXJkJywgb3V0bGluZSwgZ2V0Tm9kZShub3JtYWxWaWV3Qm94LCAnTTUxNy42IDI3My41TDIzMC4yIDQ5OS4zYTE2LjE0IDE2LjE0IDAgMCAwIDAgMjUuNGwyODcuNCAyMjUuOGMxMC43IDguNCAyNi40LjggMjYuNC0xMi43VjI4Ni4yYzAtMTMuNS0xNS43LTIxLjEtMjYuNC0xMi43em0zMjAgMEw1NTAuMiA0OTkuM2ExNi4xNCAxNi4xNCAwIDAgMCAwIDI1LjRsMjg3LjQgMjI1LjhjMTAuNyA4LjQgMjYuNC44IDI2LjQtMTIuN1YyODYuMmMwLTEzLjUtMTUuNy0yMS4xLTI2LjQtMTIuN3ptLTYyMC0yNS41aC01MS4yYy0zLjUgMC02LjQgMi43LTYuNCA2djUxNmMwIDMuMyAyLjkgNiA2LjQgNmg1MS4yYzMuNSAwIDYuNC0yLjcgNi40LTZWMjU0YzAtMy4zLTIuOS02LTYuNC02eicpKTtcbmV4cG9ydHMuRmFzdEZvcndhcmRPdXRsaW5lID0gZ2V0SWNvbignZmFzdC1mb3J3YXJkJywgb3V0bGluZSwgZ2V0Tm9kZShub3JtYWxWaWV3Qm94LCAnTTc5My44IDQ5OS4zTDUwNi40IDI3My41Yy0xMC43LTguNC0yNi40LS44LTI2LjQgMTIuN3Y0NTEuNmMwIDEzLjUgMTUuNyAyMS4xIDI2LjQgMTIuN2wyODcuNC0yMjUuOGExNi4xNCAxNi4xNCAwIDAgMCAwLTI1LjR6bS0zMjAgMEwxODYuNCAyNzMuNWMtMTAuNy04LjQtMjYuNC0uOC0yNi40IDEyLjd2NDUxLjVjMCAxMy41IDE1LjcgMjEuMSAyNi40IDEyLjdsMjg3LjQtMjI1LjhjNC4xLTMuMiA2LjItOCA2LjItMTIuNyAwLTQuNi0yLjEtOS40LTYuMi0xMi42ek04NTcuNiAyNDhoLTUxLjJjLTMuNSAwLTYuNCAyLjctNi40IDZ2NTE2YzAgMy4zIDIuOSA2IDYuNCA2aDUxLjJjMy41IDAgNi40LTIuNyA2LjQtNlYyNTRjMC0zLjMtMi45LTYtNi40LTZ6JykpO1xuZXhwb3J0cy5GaWxlQWRkT3V0bGluZSA9IGdldEljb24oJ2ZpbGUtYWRkJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1NC42IDI4OC42TDYzOS40IDczLjRjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzExLjNjMC04LjUtMy40LTE2LjctOS40LTIyLjd6TTc5MC4yIDMyNkg2MDJWMTM3LjhMNzkwLjIgMzI2em0xLjggNTYySDIzMlYxMzZoMzAydjIxNmE0MiA0MiAwIDAgMCA0MiA0MmgyMTZ2NDk0ek01NDQgNDcyYzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHYxMDhIMzcyYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDEwOHYxMDhjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOFY2NDRoMTA4YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04SDU0NFY0NzJ6JykpO1xuZXhwb3J0cy5GaWxlRXhjZWxPdXRsaW5lID0gZ2V0SWNvbignZmlsZS1leGNlbCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NTQuNiAyODguNkw2MzkuNCA3My40Yy02LTYtMTQuMS05LjQtMjIuNi05LjRIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMxMS4zYzAtOC41LTMuNC0xNi43LTkuNC0yMi43ek03OTAuMiAzMjZINjAyVjEzNy44TDc5MC4yIDMyNnptMS44IDU2MkgyMzJWMTM2aDMwMnYyMTZhNDIgNDIgMCAwIDAgNDIgNDJoMjE2djQ5NHpNNTE0LjEgNTgwLjFsLTYxLjgtMTAyLjRjLTIuMi0zLjYtNi4xLTUuOC0xMC4zLTUuOGgtMzguNGMtMi4zIDAtNC41LjYtNi40IDEuOS01LjYgMy41LTcuMyAxMC45LTMuNyAxNi42bDgyLjMgMTMwLjQtODMuNCAxMzIuOGExMi4wNCAxMi4wNCAwIDAgMCAxMC4yIDE4LjRoMzQuNWM0LjIgMCA4LTIuMiAxMC4yLTUuN0w1MTAgNjY0LjhsNjIuMyAxMDEuNGMyLjIgMy42IDYuMSA1LjcgMTAuMiA1LjdINjIwYzIuMyAwIDQuNS0uNyA2LjUtMS45IDUuNi0zLjYgNy4yLTExIDMuNi0xNi42bC04NC0xMzAuNCA4NS4zLTEzMi41YTEyLjA0IDEyLjA0IDAgMCAwLTEwLjEtMTguNWgtMzUuN2MtNC4yIDAtOC4xIDIuMi0xMC4zIDUuOGwtNjEuMiAxMDIuM3onKSk7XG5leHBvcnRzLkZpbGVFeGNsYW1hdGlvbk91dGxpbmUgPSBnZXRJY29uKCdmaWxlLWV4Y2xhbWF0aW9uJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1NC42IDI4OC42TDYzOS40IDczLjRjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzExLjNjMC04LjUtMy40LTE2LjctOS40LTIyLjd6TTc5MC4yIDMyNkg2MDJWMTM3LjhMNzkwLjIgMzI2em0xLjggNTYySDIzMlYxMzZoMzAydjIxNmE0MiA0MiAwIDAgMCA0MiA0MmgyMTZ2NDk0ek00NzIgNzQ0YTQwIDQwIDAgMSAwIDgwIDAgNDAgNDAgMCAxIDAtODAgMHptMTYtMTA0aDQ4YzQuNCAwIDgtMy42IDgtOFY0NDhjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djE4NGMwIDQuNCAzLjYgOCA4IDh6JykpO1xuZXhwb3J0cy5GaWxlSW1hZ2VPdXRsaW5lID0gZ2V0SWNvbignZmlsZS1pbWFnZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001NTMuMSA1MDkuMWwtNzcuOCA5OS4yLTQxLjEtNTIuNGE4IDggMCAwIDAtMTIuNiAwbC05OS44IDEyNy4yYTcuOTggNy45OCAwIDAgMCA2LjMgMTIuOUg2OTZjNi43IDAgMTAuNC03LjcgNi4zLTEyLjlsLTEzNi41LTE3NGE4LjEgOC4xIDAgMCAwLTEyLjcgMHpNMzYwIDQ0MmE0MCA0MCAwIDEgMCA4MCAwIDQwIDQwIDAgMSAwLTgwIDB6bTQ5NC42LTE1My40TDYzOS40IDczLjRjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzExLjNjMC04LjUtMy40LTE2LjctOS40LTIyLjd6TTc5MC4yIDMyNkg2MDJWMTM3LjhMNzkwLjIgMzI2em0xLjggNTYySDIzMlYxMzZoMzAydjIxNmE0MiA0MiAwIDAgMCA0MiA0MmgyMTZ2NDk0eicpKTtcbmV4cG9ydHMuRmlsZU1hcmtkb3duT3V0bGluZSA9IGdldEljb24oJ2ZpbGUtbWFya2Rvd24nLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODU0LjYgMjg4LjZMNjM5LjQgNzMuNGMtNi02LTE0LjEtOS40LTIyLjYtOS40SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2ODMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMTEuM2MwLTguNS0zLjQtMTYuNy05LjQtMjIuN3pNNzkwLjIgMzI2SDYwMlYxMzcuOEw3OTAuMiAzMjZ6bTEuOCA1NjJIMjMyVjEzNmgzMDJ2MjE2YTQyIDQyIDAgMCAwIDQyIDQyaDIxNnY0OTR6TTQyOSA0ODEuMmMtMS45LTQuNC02LjItNy4yLTExLTcuMmgtMzVjLTYuNiAwLTEyIDUuNC0xMiAxMnYyNzJjMCA2LjYgNS40IDEyIDEyIDEyaDI3LjFjNi42IDAgMTItNS40IDEyLTEyVjU4Mi4xbDY2LjggMTUwLjJhMTIgMTIgMCAwIDAgMTEgNy4xSDUyNGM0LjcgMCA5LTIuOCAxMS03LjFsNjYuOC0xNTAuNlY3NThjMCA2LjYgNS40IDEyIDEyIDEySDY0MWM2LjYgMCAxMi01LjQgMTItMTJWNDg2YzAtNi42LTUuNC0xMi0xMi0xMmgtMzQuN2MtNC44IDAtOS4xIDIuOC0xMSA3LjJsLTgzLjEgMTkxLTgzLjItMTkxeicpKTtcbmV4cG9ydHMuRmlsZVBwdE91dGxpbmUgPSBnZXRJY29uKCdmaWxlLXBwdCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ000MjQgNDc2Yy00LjQgMC04IDMuNi04IDh2Mjc2YzAgNC40IDMuNiA4IDggOGgzMi41YzQuNCAwIDgtMy42IDgtOHYtOTUuNWg2My4zYzU5LjQgMCA5Ni4yLTM4LjkgOTYuMi05NC4xIDAtNTQuNS0zNi4zLTk0LjMtOTYtOTQuM0g0MjR6bTE1MC42IDk0LjNjMCA0My40LTI2LjUgNTQuMy03MS4yIDU0LjNoLTM4LjlWNTE2LjJoNTYuMmMzMy44IDAgNTMuOSAxOS43IDUzLjkgNTQuMXptMjgwLTI4MS43TDYzOS40IDczLjRjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzExLjNjMC04LjUtMy40LTE2LjctOS40LTIyLjd6TTc5MC4yIDMyNkg2MDJWMTM3LjhMNzkwLjIgMzI2em0xLjggNTYySDIzMlYxMzZoMzAydjIxNmE0MiA0MiAwIDAgMCA0MiA0MmgyMTZ2NDk0eicpKTtcbmV4cG9ydHMuRmlsZVRleHRPdXRsaW5lID0gZ2V0SWNvbignZmlsZS10ZXh0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1NC42IDI4OC42TDYzOS40IDczLjRjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzExLjNjMC04LjUtMy40LTE2LjctOS40LTIyLjd6TTc5MC4yIDMyNkg2MDJWMTM3LjhMNzkwLjIgMzI2em0xLjggNTYySDIzMlYxMzZoMzAydjIxNmE0MiA0MiAwIDAgMCA0MiA0MmgyMTZ2NDk0ek01MDQgNjE4SDMyMGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgxODRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LTh6TTMxMiA0OTB2NDhjMCA0LjQgMy42IDggOCA4aDM4NGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOEgzMjBjLTQuNCAwLTggMy42LTggOHonKSk7XG5leHBvcnRzLkZpbGVQZGZPdXRsaW5lID0gZ2V0SWNvbignZmlsZS1wZGYnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTMxLjMgNTc0LjRsLjMtMS40YzUuOC0yMy45IDEzLjEtNTMuNyA3LjQtODAuNy0zLjgtMjEuMy0xOS41LTI5LjYtMzIuOS0zMC4yLTE1LjgtLjctMjkuOSA4LjMtMzMuNCAyMS40LTYuNiAyNC0uNyA1Ni44IDEwLjEgOTguNi0xMy42IDMyLjQtMzUuMyA3OS41LTUxLjIgMTA3LjUtMjkuNiAxNS4zLTY5LjMgMzguOS03NS4yIDY4LjctMS4yIDUuNS4yIDEyLjUgMy41IDE4LjggMy43IDcgOS42IDEyLjQgMTYuNSAxNSAzIDEuMSA2LjYgMiAxMC44IDIgMTcuNiAwIDQ2LjEtMTQuMiA4NC4xLTc5LjQgNS44LTEuOSAxMS44LTMuOSAxNy42LTUuOSAyNy4yLTkuMiA1NS40LTE4LjggODAuOS0yMy4xIDI4LjIgMTUuMSA2MC4zIDI0LjggODIuMSAyNC44IDIxLjYgMCAzMC4xLTEyLjggMzMuMy0yMC41IDUuNi0xMy41IDIuOS0zMC41LTYuMi0zOS42LTEzLjItMTMtNDUuMy0xNi40LTk1LjMtMTAuMi0yNC42LTE1LTQwLjctMzUuNC01Mi40LTY1Ljh6TTQyMS42IDcyNi4zYy0xMy45IDIwLjItMjQuNCAzMC4zLTMwLjEgMzQuNyA2LjctMTIuMyAxOS44LTI1LjMgMzAuMS0zNC43em04Ny42LTIzNS41YzUuMiA4LjkgNC41IDM1LjguNSA0OS40LTQuOS0xOS45LTUuNi00OC4xLTIuNy01MS40LjguMSAxLjUuNyAyLjIgMnptLTEuNiAxMjAuNWMxMC43IDE4LjUgMjQuMiAzNC40IDM5LjEgNDYuMi0yMS42IDQuOS00MS4zIDEzLTU4LjkgMjAuMi00LjIgMS43LTguMyAzLjQtMTIuMyA1IDEzLjMtMjQuMSAyNC40LTUxLjQgMzIuMS03MS40em0xNTUuNiA2NS41Yy4xLjIuMi41LS40LjloLS4ybC0uMi4zYy0uOC41LTkgNS4zLTQ0LjMtOC42IDQwLjYtMS45IDQ1IDcuMyA0NS4xIDcuNHptMTkxLjQtMzg4LjJMNjM5LjQgNzMuNGMtNi02LTE0LjEtOS40LTIyLjYtOS40SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2ODMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMTEuM2MwLTguNS0zLjQtMTYuNy05LjQtMjIuN3pNNzkwLjIgMzI2SDYwMlYxMzcuOEw3OTAuMiAzMjZ6bTEuOCA1NjJIMjMyVjEzNmgzMDJ2MjE2YTQyIDQyIDAgMCAwIDQyIDQyaDIxNnY0OTR6JykpO1xuZXhwb3J0cy5GaWxlWmlwT3V0bGluZSA9IGdldEljb24oJ2ZpbGUtemlwJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTI5NiAzOTJoNjR2NjRoLTY0em0wIDE5MHYxNjBoMTI4VjU4MmgtNjR2LTYyaC02NHY2MnptODAgNDh2NjRoLTMydi02NGgzMnptLTE2LTMwMmg2NHY2NGgtNjR6bS02NC02NGg2NHY2NGgtNjR6bTY0IDE5Mmg2NHY2NGgtNjR6bTAtMjU2aDY0djY0aC02NHptNDk0LjYgODguNkw2MzkuNCA3My40Yy02LTYtMTQuMS05LjQtMjIuNi05LjRIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMxMS4zYzAtOC41LTMuNC0xNi43LTkuNC0yMi43ek03OTAuMiAzMjZINjAyVjEzNy44TDc5MC4yIDMyNnptMS44IDU2MkgyMzJWMTM2aDY0djY0aDY0di02NGgxNzR2MjE2YTQyIDQyIDAgMCAwIDQyIDQyaDIxNnY0OTR6JykpO1xuZXhwb3J0cy5GaWxlT3V0bGluZSA9IGdldEljb24oJ2ZpbGUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODU0LjYgMjg4LjZMNjM5LjQgNzMuNGMtNi02LTE0LjEtOS40LTIyLjYtOS40SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2ODMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMTEuM2MwLTguNS0zLjQtMTYuNy05LjQtMjIuN3pNNzkwLjIgMzI2SDYwMlYxMzcuOEw3OTAuMiAzMjZ6bTEuOCA1NjJIMjMyVjEzNmgzMDJ2MjE2YTQyIDQyIDAgMCAwIDQyIDQyaDIxNnY0OTR6JykpO1xuZXhwb3J0cy5GaWx0ZXJPdXRsaW5lID0gZ2V0SWNvbignZmlsdGVyJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MC4xIDE1NEgxNDMuOWMtMjQuNSAwLTM5LjggMjYuNy0yNy41IDQ4TDM0OSA1OTcuNFY4MzhjMCAxNy43IDE0LjIgMzIgMzEuOCAzMmgyNjIuNGMxNy42IDAgMzEuOC0xNC4zIDMxLjgtMzJWNTk3LjRMOTA3LjcgMjAyYzEyLjItMjEuMy0zLjEtNDgtMjcuNi00OHpNNjAzLjQgNzk4SDQyMC42VjY0MmgxODIuOXYxNTZ6bTkuNi0yMzYuNmwtOS41IDE2LjZoLTE4M2wtOS41LTE2LjZMMjEyLjcgMjI2aDU5OC42TDYxMyA1NjEuNHonKSk7XG5leHBvcnRzLkZpbGVXb3JkT3V0bGluZSA9IGdldEljb24oJ2ZpbGUtd29yZCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NTQuNiAyODguNkw2MzkuNCA3My40Yy02LTYtMTQuMS05LjQtMjIuNi05LjRIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMxMS4zYzAtOC41LTMuNC0xNi43LTkuNC0yMi43ek03OTAuMiAzMjZINjAyVjEzNy44TDc5MC4yIDMyNnptMS44IDU2MkgyMzJWMTM2aDMwMnYyMTZhNDIgNDIgMCAwIDAgNDIgNDJoMjE2djQ5NHpNNTI4LjEgNDcyaC0zMi4yYy01LjUgMC0xMC4zIDMuNy0xMS42IDkuMUw0MzQuNiA2ODBsLTQ2LjEtMTk4LjdjLTEuMy01LjQtNi4xLTkuMy0xMS43LTkuM2gtMzUuNGExMi4wMiAxMi4wMiAwIDAgMC0xMS42IDE1LjFsNzQuMiAyNzZjMS40IDUuMiA2LjIgOC45IDExLjYgOC45aDMyYzUuNCAwIDEwLjItMy42IDExLjYtOC45bDUyLjgtMTk3IDUyLjggMTk3YzEuNCA1LjIgNi4yIDguOSAxMS42IDguOWgzMS44YzUuNCAwIDEwLjItMy42IDExLjYtOC45bDc0LjQtMjc2YTEyLjA0IDEyLjA0IDAgMCAwLTExLjYtMTUuMUg2NDdjLTUuNiAwLTEwLjQgMy45LTExLjcgOS4zbC00NS44IDE5OS4xLTQ5LjgtMTk5LjNjLTEuMy01LjQtNi4xLTkuMS0xMS42LTkuMXonKSk7XG5leHBvcnRzLkZpcmVPdXRsaW5lID0gZ2V0SWNvbignZmlyZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004MzQuMSA0NjkuMkEzNDcuNDkgMzQ3LjQ5IDAgMCAwIDc1MS4yIDM1NGwtMjkuMS0yNi43YTguMDkgOC4wOSAwIDAgMC0xMyAzLjNsLTEzIDM3LjNjLTguMSAyMy40LTIzIDQ3LjMtNDQuMSA3MC44LTEuNCAxLjUtMyAxLjktNC4xIDItMS4xLjEtMi44LS4xLTQuMy0xLjUtMS40LTEuMi0yLjEtMy0yLTQuOCAzLjctNjAuMi0xNC4zLTEyOC4xLTUzLjctMjAyQzU1NS4zIDE3MSA1MTAgMTIzLjEgNDUzLjQgODkuN2wtNDEuMy0yNC4zYy01LjQtMy4yLTEyLjMgMS0xMiA3LjNsMi4yIDQ4YzEuNSAzMi44LTIuMyA2MS44LTExLjMgODUuOS0xMSAyOS41LTI2LjggNTYuOS00NyA4MS41YTI5NS42NCAyOTUuNjQgMCAwIDEtNDcuNSA0Ni4xIDM1Mi42IDM1Mi42IDAgMCAwLTEwMC4zIDEyMS41QTM0Ny43NSAzNDcuNzUgMCAwIDAgMTYwIDYxMGMwIDQ3LjIgOS4zIDkyLjkgMjcuNyAxMzZhMzQ5LjQgMzQ5LjQgMCAwIDAgNzUuNSAxMTAuOWMzMi40IDMyIDcwIDU3LjIgMTExLjkgNzQuN0M0MTguNSA5NDkuOCA0NjQuNSA5NTkgNTEyIDk1OXM5My41LTkuMiAxMzYuOS0yNy4zQTM0OC42IDM0OC42IDAgMCAwIDc2MC44IDg1N2MzMi40LTMyIDU3LjgtNjkuNCA3NS41LTExMC45YTM0NC4yIDM0NC4yIDAgMCAwIDI3LjctMTM2YzAtNDguOC0xMC05Ni4yLTI5LjktMTQwLjl6TTcxMyA4MDguNWMtNTMuNyA1My4yLTEyNSA4Mi40LTIwMSA4Mi40cy0xNDcuMy0yOS4yLTIwMS04Mi40Yy01My41LTUzLjEtODMtMTIzLjUtODMtMTk4LjQgMC00My41IDkuOC04NS4yIDI5LjEtMTI0IDE4LjgtMzcuOSA0Ni44LTcxLjggODAuOC05Ny45YTM0OS42IDM0OS42IDAgMCAwIDU4LjYtNTYuOGMyNS0zMC41IDQ0LjYtNjQuNSA1OC4yLTEwMWEyNDAgMjQwIDAgMCAwIDEyLjEtNDYuNWMyNC4xIDIyLjIgNDQuMyA0OSA2MS4yIDgwLjQgMzMuNCA2Mi42IDQ4LjggMTE4LjMgNDUuOCAxNjUuN2E3NC4wMSA3NC4wMSAwIDAgMCAyNC40IDU5LjggNzMuMzYgNzMuMzYgMCAwIDAgNTMuNCAxOC44YzE5LjctMSAzNy44LTkuNyA1MS0yNC40IDEzLjMtMTQuOSAyNC44LTMwLjEgMzQuNC00NS42IDE0IDE3LjkgMjUuNyAzNy40IDM1IDU4LjQgMTUuOSAzNS44IDI0IDczLjkgMjQgMTEzLjEgMCA3NC45LTI5LjUgMTQ1LjQtODMgMTk4LjR6JykpO1xuZXhwb3J0cy5GaWxlVW5rbm93bk91dGxpbmUgPSBnZXRJY29uKCdmaWxlLXVua25vd24nLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODU0LjYgMjg4LjdMNjM5LjQgNzMuNGMtNi02LTE0LjItOS40LTIyLjctOS40SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2ODMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMTEuM2MwLTguNS0zLjQtMTYuNi05LjQtMjIuNnpNNzkwLjIgMzI2SDYwMlYxMzcuOEw3OTAuMiAzMjZ6bTEuOCA1NjJIMjMyVjEzNmgzMDJ2MjE2YTQyIDQyIDAgMCAwIDQyIDQyaDIxNnY0OTR6TTQwMiA1NDljMCA1LjQgNC40IDkuNSA5LjggOS41aDMyLjRjNS40IDAgOS44LTQuMiA5LjgtOS40IDAtMjguMiAyNS44LTUxLjYgNTgtNTEuNnM1OCAyMy40IDU4IDUxLjVjMCAyNS4zLTIxIDQ3LjItNDkuMyA1MC45LTE5LjMgMi44LTM0LjUgMjAuMy0zNC43IDQwLjF2MzJjMCA1LjUgNC41IDEwIDEwIDEwaDMyYzUuNSAwIDEwLTQuNSAxMC0xMHYtMTIuMmMwLTYgNC0xMS41IDkuNy0xMy4zIDQ0LjYtMTQuNCA3NS01NCA3NC4zLTk4LjktLjgtNTUuNS00OS4yLTEwMC44LTEwOC41LTEwMS42LTYxLjQtLjctMTExLjUgNDUuNi0xMTEuNSAxMDN6bTc4IDE5NWEzMiAzMiAwIDEgMCA2NCAwIDMyIDMyIDAgMSAwLTY0IDB6JykpO1xuZXhwb3J0cy5GbGFnT3V0bGluZSA9IGdldEljb24oJ2ZsYWcnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDMwNUg2MjRWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDE4NHYtNDBjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djc4NGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04VjY0MGgyNDh2MTEzYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMlYzMzdjMC0xNy43LTE0LjMtMzItMzItMzJ6TTE4NCA1NjhWMjMyaDM2OHYzMzZIMTg0em02NTYgMTQ1SDUwNHYtNzNoMTEyYzQuNCAwIDgtMy42IDgtOFYzNzdoMjE2djMzNnonKSk7XG5leHBvcnRzLkZvbGRlckFkZE91dGxpbmUgPSBnZXRJY29uKCdmb2xkZXItYWRkJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQ4NCA0NDMuMVY1MjhoLTg0LjVjLTQuMSAwLTcuNSAzLjEtNy41IDd2NDJjMCAzLjggMy40IDcgNy41IDdINDg0djg0LjljMCAzLjkgMy4yIDcuMSA3IDcuMWg0MmMzLjkgMCA3LTMuMiA3LTcuMVY1ODRoODQuNWM0LjEgMCA3LjUtMy4yIDcuNS03di00MmMwLTMuOS0zLjQtNy03LjUtN0g1NDB2LTg0LjljMC0zLjktMy4xLTcuMS03LTcuMWgtNDJjLTMuOCAwLTcgMy4yLTcgNy4xem0zOTYtMTQ0LjdINTIxTDQwMy43IDE4Ni4yYTguMTUgOC4xNSAwIDAgMC01LjUtMi4ySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYzMzAuNGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNODQwIDc2OEgxODRWMjU2aDE4OC41bDExOS42IDExNC40SDg0MFY3Njh6JykpO1xuZXhwb3J0cy5Gb2xkZXJPdXRsaW5lID0gZ2V0SWNvbignZm9sZGVyJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAyOTguNEg1MjFMNDAzLjcgMTg2LjJhOC4xNSA4LjE1IDAgMCAwLTUuNS0yLjJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY1OTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMzMC40YzAtMTcuNy0xNC4zLTMyLTMyLTMyek04NDAgNzY4SDE4NFYyNTZoMTg4LjVsMTE5LjYgMTE0LjRIODQwVjc2OHonKSk7XG5leHBvcnRzLkZvbGRlck9wZW5PdXRsaW5lID0gZ2V0SWNvbignZm9sZGVyLW9wZW4nLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTI4IDQ0NEg4MjBWMzMwLjRjMC0xNy43LTE0LjMtMzItMzItMzJINDczTDM1NS43IDE4Ni4yYTguMTUgOC4xNSAwIDAgMC01LjUtMi4ySDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY1OTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjk4YzEzIDAgMjQuOC03LjkgMjkuNy0yMGwxMzQtMzMyYzEuNS0zLjggMi4zLTcuOSAyLjMtMTIgMC0xNy43LTE0LjMtMzItMzItMzJ6TTEzNiAyNTZoMTg4LjVsMTE5LjYgMTE0LjRINzQ4VjQ0NEgyMzhjLTEzIDAtMjQuOCA3LjktMjkuNyAyMEwxMzYgNjQzLjJWMjU2em02MzUuMyA1MTJIMTU5bDEwMy4zLTI1Nmg2MTIuNEw3NzEuMyA3Njh6JykpO1xuZXhwb3J0cy5Gb3J3YXJkT3V0bGluZSA9IGdldEljb24oJ2ZvcndhcmQnLCBvdXRsaW5lLCBnZXROb2RlKG5vcm1hbFZpZXdCb3gsICdNODI1LjggNDk4TDUzOC40IDI0OS45Yy0xMC43LTkuMi0yNi40LS45LTI2LjQgMTR2NDk2LjNjMCAxNC45IDE1LjcgMjMuMiAyNi40IDE0TDgyNS44IDUyNmM4LjMtNy4yIDguMy0yMC44IDAtMjh6bS0zMjAgMEwyMTguNCAyNDkuOWMtMTAuNy05LjItMjYuNC0uOS0yNi40IDE0djQ5Ni4zYzAgMTQuOSAxNS43IDIzLjIgMjYuNCAxNEw1MDUuOCA1MjZjNC4xLTMuNiA2LjItOC44IDYuMi0xNCAwLTUuMi0yLjEtMTAuNC02LjItMTR6JykpO1xuZXhwb3J0cy5Gcm93bk91dGxpbmUgPSBnZXRJY29uKCdmcm93bicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00yODggNDIxYTQ4IDQ4IDAgMSAwIDk2IDAgNDggNDggMCAxIDAtOTYgMHptMzUyIDBhNDggNDggMCAxIDAgOTYgMCA0OCA0OCAwIDEgMC05NiAwek01MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMjYzIDcxMWMtMzQuMiAzNC4yLTc0IDYxLTExOC4zIDc5LjhDNjExIDg3NC4yIDU2Mi4zIDg4NCA1MTIgODg0Yy01MC4zIDAtOTktOS44LTE0NC44LTI5LjJBMzcwLjQgMzcwLjQgMCAwIDEgMjQ4LjkgNzc1Yy0zNC4yLTM0LjItNjEtNzQtNzkuOC0xMTguM0MxNDkuOCA2MTEgMTQwIDU2Mi4zIDE0MCA1MTJzOS44LTk5IDI5LjItMTQ0LjhBMzcwLjQgMzcwLjQgMCAwIDEgMjQ5IDI0OC45YzM0LjItMzQuMiA3NC02MSAxMTguMy03OS44QzQxMyAxNDkuOCA0NjEuNyAxNDAgNTEyIDE0MGM1MC4zIDAgOTkgOS44IDE0NC44IDI5LjJBMzcwLjQgMzcwLjQgMCAwIDEgNzc1LjEgMjQ5YzM0LjIgMzQuMiA2MSA3NCA3OS44IDExOC4zQzg3NC4yIDQxMyA4ODQgNDYxLjcgODg0IDUxMnMtOS44IDk5LTI5LjIgMTQ0LjhBMzY4Ljg5IDM2OC44OSAwIDAgMSA3NzUgNzc1ek01MTIgNTMzYy04NS41IDAtMTU1LjYgNjcuMy0xNjAgMTUxLjZhOCA4IDAgMCAwIDggOC40aDQ4LjFjNC4yIDAgNy44LTMuMiA4LjEtNy40QzQyMCA2MzYuMSA0NjEuNSA1OTcgNTEyIDU5N3M5Mi4xIDM5LjEgOTUuOCA4OC42Yy4zIDQuMiAzLjkgNy40IDguMSA3LjRINjY0YTggOCAwIDAgMCA4LTguNEM2NjcuNiA2MDAuMyA1OTcuNSA1MzMgNTEyIDUzM3onKSk7XG5leHBvcnRzLkZ1bmRPdXRsaW5lID0gZ2V0SWNvbignZnVuZCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MjYgMTY0SDk0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NDBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE5NmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDYzMkgxMzRWMjM2aDc1MnY1NjB6bS02NTguOS04Mi4zYzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMTcyLjUtMTcyLjUgMTE0LjQgMTE0LjVjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGwyOTctMjk3LjJjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM2wtMzYuOC0zNi44YTguMDMgOC4wMyAwIDAgMC0xMS4zIDBMNTMxIDU2NSA0MTYuNiA0NTAuNWE4LjAzIDguMDMgMCAwIDAtMTEuMyAwbC0yMTQuOSAyMTVhOC4wMyA4LjAzIDAgMCAwIDAgMTEuM2wzNi43IDM2Ljl6JykpO1xuZXhwb3J0cy5GdW5uZWxQbG90T3V0bGluZSA9IGdldEljb24oJ2Z1bm5lbC1wbG90Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MC4xIDE1NEgxNDMuOWMtMjQuNSAwLTM5LjggMjYuNy0yNy41IDQ4TDM0OSA2MDcuNFY4MzhjMCAxNy43IDE0LjIgMzIgMzEuOCAzMmgyNjIuNGMxNy42IDAgMzEuOC0xNC4zIDMxLjgtMzJWNjA3LjRMOTA3LjcgMjAyYzEyLjItMjEuMy0zLjEtNDgtMjcuNi00OHpNNjAzLjQgNzk4SDQyMC42VjY1MGgxODIuOXYxNDh6bTkuNi0yMjYuNmwtOC40IDE0LjZINDE5LjNsLTguNC0xNC42TDMzNC40IDQzOGgzNTUuMkw2MTMgNTcxLjR6TTcyNi4zIDM3NEgyOTcuN2wtODUtMTQ4aDU5OC42bC04NSAxNDh6JykpO1xuZXhwb3J0cy5HaWZ0T3V0bGluZSA9IGdldEljb24oJ2dpZnQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDMxMEg3MzIuNGMxMy42LTIxLjQgMjEuNi00Ni44IDIxLjYtNzQgMC03Ni4xLTYxLjktMTM4LTEzOC0xMzgtNDEuNCAwLTc4LjcgMTguNC0xMDQgNDcuNC0yNS4zLTI5LTYyLjYtNDcuNC0xMDQtNDcuNC03Ni4xIDAtMTM4IDYxLjktMTM4IDEzOCAwIDI3LjIgNy45IDUyLjYgMjEuNiA3NEgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjIwMGMwIDQuNCAzLjYgOCA4IDhoNDB2MzQ0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0MGMxNy43IDAgMzItMTQuMyAzMi0zMlY1NTBoNDBjNC40IDAgOC0zLjYgOC04VjM0MmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTMzNC03NGMwLTM4LjYgMzEuNC03MCA3MC03MHM3MCAzMS40IDcwIDcwLTMxLjQgNzAtNzAgNzBoLTcwdi03MHptLTEzOC03MGMzOC42IDAgNzAgMzEuNCA3MCA3MHY3MGgtNzBjLTM4LjYgMC03MC0zMS40LTcwLTcwczMxLjQtNzAgNzAtNzB6TTE4MCA0ODJWMzc4aDI5OHYxMDRIMTgwem00OCA2OGgyNTB2MzA4SDIyOFY1NTB6bTU2OCAzMDhINTQ2VjU1MGgyNTB2MzA4em00OC0zNzZINTQ2VjM3OGgyOTh2MTA0eicpKTtcbmV4cG9ydHMuR2l0aHViT3V0bGluZSA9IGdldEljb24oJ2dpdGh1YicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTEuNiA3Ni4zQzI2NC4zIDc2LjIgNjQgMjc2LjQgNjQgNTIzLjUgNjQgNzE4LjkgMTg5LjMgODg1IDM2My44IDk0NmMyMy41IDUuOSAxOS45LTEwLjggMTkuOS0yMi4ydi03Ny41Yy0xMzUuNyAxNS45LTE0MS4yLTczLjktMTUwLjMtODguOUMyMTUgNzI2IDE3MS41IDcxOCAxODQuNSA3MDNjMzAuOS0xNS45IDYyLjQgNCA5OC45IDU3LjkgMjYuNCAzOS4xIDc3LjkgMzIuNSAxMDQgMjYgNS43LTIzLjUgMTcuOS00NC41IDM0LjctNjAuOC0xNDAuNi0yNS4yLTE5OS4yLTExMS0xOTkuMi0yMTMgMC00OS41IDE2LjMtOTUgNDguMy0xMzEuNy0yMC40LTYwLjUgMS45LTExMi4zIDQuOS0xMjAgNTguMS01LjIgMTE4LjUgNDEuNiAxMjMuMiA0NS4zIDMzLTguOSA3MC43LTEzLjYgMTEyLjktMTMuNiA0Mi40IDAgODAuMiA0LjkgMTEzLjUgMTMuOSAxMS4zLTguNiA2Ny4zLTQ4LjggMTIxLjMtNDMuOSAyLjkgNy43IDI0LjcgNTguMyA1LjUgMTE4IDMyLjQgMzYuOCA0OC45IDgyLjcgNDguOSAxMzIuMyAwIDEwMi4yLTU5IDE4OC4xLTIwMCAyMTIuOWExMjcuNSAxMjcuNSAwIDAgMSAzOC4xIDkxdjExMi41Yy44IDkgMCAxNy45IDE1IDE3LjkgMTc3LjEtNTkuNyAzMDQuNi0yMjcgMzA0LjYtNDI0LjEgMC0yNDcuMi0yMDAuNC00NDcuMy00NDcuNS00NDcuM3onKSk7XG5leHBvcnRzLkdpdGxhYk91dGxpbmUgPSBnZXRJY29uKCdnaXRsYWInLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTEzLjkgNTUyLjJMODA1IDE4MS40di0uMWMtNy42LTIyLjktMjUuNy0zNi41LTQ4LjMtMzYuNS0yMy40IDAtNDIuNSAxMy41LTQ5LjcgMzUuMmwtNzEuNCAyMTNIMzg4LjhsLTcxLjQtMjEzYy03LjItMjEuNy0yNi4zLTM1LjItNDkuNy0zNS4yLTIzLjEgMC00Mi41IDE0LjgtNDguNCAzNi42TDExMC41IDU1Mi4yYy00LjQgMTQuNyAxLjIgMzEuNCAxMy41IDQwLjdsMzY4LjUgMjc2LjRjMi42IDMuNiA2LjIgNi4zIDEwLjQgNy44bDguNiA2LjQgOC41LTYuNGM0LjktMS43IDktNC43IDExLjktOC45bDM2OC40LTI3NS40YzEyLjQtOS4yIDE4LTI1LjkgMTMuNi00MC42ek03NTEuNyAxOTMuNGMxLTEuOCAyLjktMS45IDMuNS0xLjkgMS4xIDAgMi41LjMgMy40IDNMODE4IDM5NC4zSDY4NC41bDY3LjItMjAwLjl6bS00ODcuNCAxYy45LTIuNiAyLjMtMi45IDMuNC0yLjkgMi43IDAgMi45LjEgMy40IDEuN2w2Ny4zIDIwMS4ySDIwNi41bDU3LjgtMjAwek0xNTguOCA1NTguN2wyOC4yLTk3LjMgMjAyLjQgMjcwLjItMjMwLjYtMTcyLjl6bTczLjktMTE2LjRoMTIyLjFsOTAuOCAyODQuMy0yMTIuOS0yODQuM3pNNTEyLjkgNzc2TDQwNS43IDQ0Mi4zSDYyMEw1MTIuOSA3NzZ6bTE1Ny45LTMzMy43aDExOS41TDU4MCA3MjMuMWw5MC44LTI4MC44em0tNDAuNyAyOTMuOWwyMDcuMy0yNzYuNyAyOS41IDk5LjItMjM2LjggMTc3LjV6JykpO1xuZXhwb3J0cy5IZWFydE91dGxpbmUgPSBnZXRJY29uKCdoZWFydCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MjMgMjgzLjZhMjYwLjA0IDI2MC4wNCAwIDAgMC01Ni45LTgyLjggMjY0LjQgMjY0LjQgMCAwIDAtODQtNTUuNUEyNjUuMzQgMjY1LjM0IDAgMCAwIDY3OS43IDEyNWMtNDkuMyAwLTk3LjQgMTMuNS0xMzkuMiAzOS0xMCA2LjEtMTkuNSAxMi44LTI4LjUgMjAuMS05LTcuMy0xOC41LTE0LTI4LjUtMjAuMS00MS44LTI1LjUtODkuOS0zOS0xMzkuMi0zOS0zNS41IDAtNjkuOSA2LjgtMTAyLjQgMjAuMy0zMS40IDEzLTU5LjcgMzEuNy04NCA1NS41YTI1OC40NCAyNTguNDQgMCAwIDAtNTYuOSA4Mi44Yy0xMy45IDMyLjMtMjEgNjYuNi0yMSAxMDEuOSAwIDMzLjMgNi44IDY4IDIwLjMgMTAzLjMgMTEuMyAyOS41IDI3LjUgNjAuMSA0OC4yIDkxIDMyLjggNDguOSA3Ny45IDk5LjkgMTMzLjkgMTUxLjYgOTIuOCA4NS43IDE4NC43IDE0NC45IDE4OC42IDE0Ny4zbDIzLjcgMTUuMmMxMC41IDYuNyAyNCA2LjcgMzQuNSAwbDIzLjctMTUuMmMzLjktMi41IDk1LjctNjEuNiAxODguNi0xNDcuMyA1Ni01MS43IDEwMS4xLTEwMi43IDEzMy45LTE1MS42IDIwLjctMzAuOSAzNy02MS41IDQ4LjItOTEgMTMuNS0zNS4zIDIwLjMtNzAgMjAuMy0xMDMuMy4xLTM1LjMtNy02OS42LTIwLjktMTAxLjl6TTUxMiA4MTQuOFMxNTYgNTg2LjcgMTU2IDM4NS41QzE1NiAyODMuNiAyNDAuMyAyMDEgMzQ0LjMgMjAxYzczLjEgMCAxMzYuNSA0MC44IDE2Ny43IDEwMC40QzU0My4yIDI0MS44IDYwNi42IDIwMSA2NzkuNyAyMDFjMTA0IDAgMTg4LjMgODIuNiAxODguMyAxODQuNSAwIDIwMS4yLTM1NiA0MjkuMy0zNTYgNDI5LjN6JykpO1xuZXhwb3J0cy5IZGRPdXRsaW5lID0gZ2V0SWNvbignaGRkJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTgzMiA2NEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6bS02MDAgNzJoNTYwdjIwOEgyMzJWMTM2em01NjAgNDgwSDIzMlY0MDhoNTYwdjIwOHptMCAyNzJIMjMyVjY4MGg1NjB2MjA4ek00OTYgMjA4SDMxMmMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgxODRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LTh6TTMxMiA1NDRoMTg0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04SDMxMmMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHptMzI4IDI0NGE0MCA0MCAwIDEgMCA4MCAwIDQwIDQwIDAgMSAwLTgwIDB6JykpO1xuZXhwb3J0cy5IaWdobGlnaHRPdXRsaW5lID0gZ2V0SWNvbignaGlnaGxpZ2h0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTk1Ny42IDUwNy40TDYwMy4yIDE1OC4yYTcuOSA3LjkgMCAwIDAtMTEuMiAwTDM1My4zIDM5My40YTguMDMgOC4wMyAwIDAgMC0uMSAxMS4zbC4xLjEgNDAgMzkuNC0xMTcuMiAxMTUuM2E4LjAzIDguMDMgMCAwIDAtLjEgMTEuM2wuMS4xIDM5LjUgMzguOS0xODkuMSAxODdINzIuMWMtNC40IDAtOC4xIDMuNi04LjEgOFY4NjBjMCA0LjQgMy42IDggOCA4aDM0NC45YzIuMSAwIDQuMS0uOCA1LjYtMi4zbDc2LjEtNzUuNiA0MC40IDM5LjhhNy45IDcuOSAwIDAgMCAxMS4yIDBsMTE3LjEtMTE1LjYgNDAuMSAzOS41YTcuOSA3LjkgMCAwIDAgMTEuMiAwbDIzOC43LTIzNS4yYzMuNC0zIDMuNC04IC4zLTExLjJ6TTM4OS44IDc5Ni4ySDIyOS42bDEzNC40LTEzMyA4MC4xIDc4LjktNTQuMyA1NC4xem0xNTQuOC02Mi4xTDM3My4yIDU2NS4ybDY4LjYtNjcuNiAxNzEuNCAxNjguOS02OC42IDY3LjZ6TTcxMy4xIDY1OEw0NTAuMyAzOTkuMSA1OTcuNiAyNTRsMjYyLjggMjU5LTE0Ny4zIDE0NXonKSk7XG5leHBvcnRzLkhvbWVPdXRsaW5lID0gZ2V0SWNvbignaG9tZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005NDYuNSA1MDVMNTYwLjEgMTE4LjhsLTI1LjktMjUuOWEzMS41IDMxLjUgMCAwIDAtNDQuNCAwTDc3LjUgNTA1YTYzLjkgNjMuOSAwIDAgMC0xOC44IDQ2Yy40IDM1LjIgMjkuNyA2My4zIDY0LjkgNjMuM2g0Mi41Vjk0MGg2OTEuOFY2MTQuM2g0My40YzE3LjEgMCAzMy4yLTYuNyA0NS4zLTE4LjhhNjMuNiA2My42IDAgMCAwIDE4LjctNDUuM2MwLTE3LTYuNy0zMy4xLTE4LjgtNDUuMnpNNTY4IDg2OEg0NTZWNjY0aDExMnYyMDR6bTIxNy45LTMyNS43Vjg2OEg2MzJWNjQwYzAtMjIuMS0xNy45LTQwLTQwLTQwSDQzMmMtMjIuMSAwLTQwIDE3LjktNDAgNDB2MjI4SDIzOC4xVjU0Mi4zaC05NmwzNzAtMzY5LjcgMjMuMSAyMy4xTDg4MiA1NDIuM2gtOTYuMXonKSk7XG5leHBvcnRzLkhvdXJnbGFzc091dGxpbmUgPSBnZXRJY29uKCdob3VyZ2xhc3MnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNzQyIDMxOFYxODRoODZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LThIMTk2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDg2djEzNGMwIDgxLjUgNDIuNCAxNTMuMiAxMDYuNCAxOTQtNjQgNDAuOC0xMDYuNCAxMTIuNS0xMDYuNCAxOTR2MTM0aC04NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg2MzJjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LThoLTg2VjcwNmMwLTgxLjUtNDIuNC0xNTMuMi0xMDYuNC0xOTQgNjQtNDAuOCAxMDYuNC0xMTIuNSAxMDYuNC0xOTR6bS03MiAzODh2MTM0SDM1NFY3MDZjMC00Mi4yIDE2LjQtODEuOSA0Ni4zLTExMS43QzQzMC4xIDU2NC40IDQ2OS44IDU0OCA1MTIgNTQ4czgxLjkgMTYuNCAxMTEuNyA0Ni4zQzY1My42IDYyNC4xIDY3MCA2NjMuOCA2NzAgNzA2em0wLTM4OGMwIDQyLjItMTYuNCA4MS45LTQ2LjMgMTExLjdDNTkzLjkgNDU5LjYgNTU0LjIgNDc2IDUxMiA0NzZzLTgxLjktMTYuNC0xMTEuNy00Ni4zQTE1Ni42MyAxNTYuNjMgMCAwIDEgMzU0IDMxOFYxODRoMzE2djEzNHonKSk7XG5leHBvcnRzLkh0bWw1T3V0bGluZSA9IGdldEljb24oJ2h0bWw1Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTE0NSA5Nmw2NiA3NDYuNkw1MTEuOCA5MjhsMjk5LjYtODUuNEw4NzguNyA5NkgxNDV6bTYxMC45IDcwMC42bC0yNDQuMSA2OS42LTI0NS4yLTY5LjYtNTYuNy02NDEuMmg2MDMuOGwtNTcuOCA2NDEuMnpNMjgxIDI0OWwxLjcgMjQuMyAyMi43IDI1My41aDIwNi41di0uMWgxMTIuOWwtMTEuNCAxMTguNUw1MTEgNjcyLjl2LjJoLS44bC0xMDIuNC0yNy43LTYuNS03My4yaC05MWwxMS4zIDE0NC43IDE4OC42IDUyaDEuN3YtLjRsMTg3LjctNTEuNyAxLjctMTYuMyAyMS4yLTI0Mi4yIDMuMi0yNC4zSDUxMXYuMkgzODkuOWwtOC4yLTk0LjJoMzUyLjFsMS43LTE5LjUgNC44LTQ3LjJMNzQyIDI0OUg1MTF6JykpO1xuZXhwb3J0cy5JZGNhcmRPdXRsaW5lID0gZ2V0SWNvbignaWRjYXJkJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkyOCAxNjBIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4MzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNjMySDEzNlYyMzJoNzUydjU2MHpNNjEwLjMgNDc2aDEyMy40YzEuMyAwIDIuMy0zLjYgMi4zLTh2LTQ4YzAtNC40LTEtOC0yLjMtOEg2MTAuM2MtMS4zIDAtMi4zIDMuNi0yLjMgOHY0OGMwIDQuNCAxIDggMi4zIDh6bTQuOCAxNDRoMTg1LjdjMy45IDAgNy4xLTMuNiA3LjEtOHYtNDhjMC00LjQtMy4yLTgtNy4xLThINjE1LjFjLTMuOSAwLTcuMSAzLjYtNy4xIDh2NDhjMCA0LjQgMy4yIDggNy4xIDh6TTIyNCA2NzNoNDMuOWM0LjIgMCA3LjYtMy4zIDcuOS03LjUgMy44LTUwLjUgNDYtOTAuNSA5Ny4yLTkwLjVzOTMuNCA0MCA5Ny4yIDkwLjVjLjMgNC4yIDMuNyA3LjUgNy45IDcuNUg1MjJhOCA4IDAgMCAwIDgtOC40Yy0yLjgtNTMuMy0zMi05OS43LTc0LjYtMTI2LjFhMTExLjggMTExLjggMCAwIDAgMjkuMS03NS41YzAtNjEuOS00OS45LTExMi0xMTEuNC0xMTJzLTExMS40IDUwLjEtMTExLjQgMTEyYzAgMjkuMSAxMSA1NS41IDI5LjEgNzUuNWExNTguMDkgMTU4LjA5IDAgMCAwLTc0LjYgMTI2LjFjLS40IDQuNiAzLjIgOC40IDcuOCA4LjR6bTE0OS0yNjJjMjguNSAwIDUxLjcgMjMuMyA1MS43IDUycy0yMy4yIDUyLTUxLjcgNTItNTEuNy0yMy4zLTUxLjctNTIgMjMuMi01MiA1MS43LTUyeicpKTtcbmV4cG9ydHMuSW5mb0NpcmNsZU91dGxpbmUgPSBnZXRJY29uKCdpbmZvLWNpcmNsZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6JywgJ000NjQgMzM2YTQ4IDQ4IDAgMSAwIDk2IDAgNDggNDggMCAxIDAtOTYgMHptNzIgMTEyaC00OGMtNC40IDAtOCAzLjYtOCA4djI3MmMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjQ1NmMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5JbnN0YWdyYW1PdXRsaW5lID0gZ2V0SWNvbignaW5zdGFncmFtJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiAzMDYuOWMtMTEzLjUgMC0yMDUuMSA5MS42LTIwNS4xIDIwNS4xUzM5OC41IDcxNy4xIDUxMiA3MTcuMSA3MTcuMSA2MjUuNSA3MTcuMSA1MTIgNjI1LjUgMzA2LjkgNTEyIDMwNi45em0wIDMzOC40Yy03My40IDAtMTMzLjMtNTkuOS0xMzMuMy0xMzMuM1M0MzguNiAzNzguNyA1MTIgMzc4LjcgNjQ1LjMgNDM4LjYgNjQ1LjMgNTEyIDU4NS40IDY0NS4zIDUxMiA2NDUuM3ptMjEzLjUtMzk0LjZjLTI2LjUgMC00Ny45IDIxLjQtNDcuOSA0Ny45czIxLjQgNDcuOSA0Ny45IDQ3LjkgNDcuOS0yMS4zIDQ3LjktNDcuOWE0Ny44NCA0Ny44NCAwIDAgMC00Ny45LTQ3Ljl6TTkxMS44IDUxMmMwLTU1LjIuNS0xMDkuOS0yLjYtMTY1LTMuMS02NC0xNy43LTEyMC44LTY0LjUtMTY3LjYtNDYuOS00Ni45LTEwMy42LTYxLjQtMTY3LjYtNjQuNS01NS4yLTMuMS0xMDkuOS0yLjYtMTY1LTIuNi01NS4yIDAtMTA5LjktLjUtMTY1IDIuNi02NCAzLjEtMTIwLjggMTcuNy0xNjcuNiA2NC41QzEzMi42IDIyNi4zIDExOC4xIDI4MyAxMTUgMzQ3Yy0zLjEgNTUuMi0yLjYgMTA5LjktMi42IDE2NXMtLjUgMTA5LjkgMi42IDE2NWMzLjEgNjQgMTcuNyAxMjAuOCA2NC41IDE2Ny42IDQ2LjkgNDYuOSAxMDMuNiA2MS40IDE2Ny42IDY0LjUgNTUuMiAzLjEgMTA5LjkgMi42IDE2NSAyLjYgNTUuMiAwIDEwOS45LjUgMTY1LTIuNiA2NC0zLjEgMTIwLjgtMTcuNyAxNjcuNi02NC41IDQ2LjktNDYuOSA2MS40LTEwMy42IDY0LjUtMTY3LjYgMy4yLTU1LjEgMi42LTEwOS44IDIuNi0xNjV6bS04OCAyMzUuOGMtNy4zIDE4LjItMTYuMSAzMS44LTMwLjIgNDUuOC0xNC4xIDE0LjEtMjcuNiAyMi45LTQ1LjggMzAuMkM2OTUuMiA4NDQuNyA1NzAuMyA4NDAgNTEyIDg0MGMtNTguMyAwLTE4My4zIDQuNy0yMzUuOS0xNi4xLTE4LjItNy4zLTMxLjgtMTYuMS00NS44LTMwLjItMTQuMS0xNC4xLTIyLjktMjcuNi0zMC4yLTQ1LjhDMTc5LjMgNjk1LjIgMTg0IDU3MC4zIDE4NCA1MTJjMC01OC4zLTQuNy0xODMuMyAxNi4xLTIzNS45IDcuMy0xOC4yIDE2LjEtMzEuOCAzMC4yLTQ1LjhzMjcuNi0yMi45IDQ1LjgtMzAuMkMzMjguNyAxNzkuMyA0NTMuNyAxODQgNTEyIDE4NHMxODMuMy00LjcgMjM1LjkgMTYuMWMxOC4yIDcuMyAzMS44IDE2LjEgNDUuOCAzMC4yIDE0LjEgMTQuMSAyMi45IDI3LjYgMzAuMiA0NS44Qzg0NC43IDMyOC43IDg0MCA0NTMuNyA4NDAgNTEyYzAgNTguMyA0LjcgMTgzLjItMTYuMiAyMzUuOHonKSk7XG5leHBvcnRzLkluc3VyYW5jZU91dGxpbmUgPSBnZXRJY29uKCdpbnN1cmFuY2UnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNDQxLjYgMzA2LjhMNDAzIDI4OC42YTYuMSA2LjEgMCAwIDAtOC40IDMuN2MtMTcuNSA1OC41LTQ1LjIgMTEwLjEtODIuMiAxNTMuNmE2LjA1IDYuMDUgMCAwIDAtMS4yIDUuNmwxMy4yIDQzLjVjMS4zIDQuNCA3IDUuNyAxMC4yIDIuNCA3LjctOC4xIDE1LjQtMTYuOSAyMy4xLTI2VjY1NmMwIDQuNCAzLjYgOCA4IDhINDAzYzQuNCAwIDgtMy42IDgtOFYzOTMuMWE0MjkuMiA0MjkuMiAwIDAgMCAzMy42LTc5YzEtMi45LS4zLTYtMy03LjN6bTI2LjggOS4ydjEyNy4yYzAgNC40IDMuNiA4IDggOGg2NS45djE4LjZoLTk0LjljLTQuNCAwLTggMy42LTggOHYzNS42YzAgNC40IDMuNiA4IDggOGg1NS4xYy0xOS4xIDMwLjgtNDIuNCA1NS43LTcxIDc2YTYgNiAwIDAgMC0xLjYgOC4xbDIyLjggMzYuNWMxLjkgMy4xIDYuMiAzLjggOC45IDEuNCAzMS42LTI2LjggNTguNy02Mi45IDgwLjYtMTA3LjZ2MTIwYzAgNC40IDMuNiA4IDggOGgzNi4yYzQuNCAwIDgtMy42IDgtOFY1MzZjMjEuMyA0MS43IDQ3LjUgNzcuNSA3OC4xIDEwNi45IDIuNiAyLjUgNi44IDIuMSA4LjktLjdsMjYuMy0zNS4zYzItMi43IDEuNC02LjUtMS4yLTguNC0zMC41LTIyLjYtNTQuMi00Ny44LTcyLjMtNzYuOWg1OWM0LjQgMCA4LTMuNiA4LThWNDc4YzAtNC40LTMuNi04LTgtOGgtOTguOHYtMTguNmg2Ni43YzQuNCAwIDgtMy42IDgtOFYzMTZjMC00LjQtMy42LTgtOC04SDQ3Ni40Yy00LjQgMC04IDMuNi04IDh6bTUxLjUgNDIuOGg5Ny45djQxLjZoLTk3Ljl2LTQxLjZ6bTM0Ny0xODguOUw1MjcuMSA1NC4xQzUyMyA1Mi43IDUxNy41IDUyIDUxMiA1MnMtMTEgLjctMTUuMSAyLjFMMTU3LjEgMTY5LjljLTguMyAyLjgtMTUuMSAxMi40LTE1LjEgMjEuMnY0ODIuNGMwIDguOCA1LjcgMjAuNCAxMi42IDI1LjlMNDk5LjMgOTY4YzMuNSAyLjcgOCA0LjEgMTIuNiA0LjFzOS4yLTEuNCAxMi42LTQuMWwzNDQuNy0yNjguNmM2LjktNS40IDEyLjYtMTcgMTIuNi0yNS45VjE5MS4xYy4yLTguOC02LjYtMTguMy0xNC45LTIxLjJ6TTgxMCA2NTQuM0w1MTIgODg2LjUgMjE0IDY1NC4zVjIyNi43bDI5OC0xMDEuNiAyOTggMTAxLjZ2NDI3LjZ6JykpO1xuZXhwb3J0cy5JbnRlcmFjdGlvbk91dGxpbmUgPSBnZXRJY29uKCdpbnRlcmFjdGlvbicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCA3MjhIMTg0VjE4NGg2NTZ2NjU2ek0zMDQuOCA1MjRoNTAuN2MzLjcgMCA2LjgtMyA2LjgtNi44di03OC45YzAtMTkuNyAxNS45LTM1LjYgMzUuNS0zNS42aDIwNS43djUzLjRjMCA1LjcgNi41IDguOCAxMC45IDUuM2wxMDkuMS04NS43YzMuNS0yLjcgMy41LTggMC0xMC43bC0xMDkuMS04NS43Yy00LjQtMy41LTEwLjktLjMtMTAuOSA1LjNWMzM4SDM5Ny43Yy01NS4xIDAtOTkuNyA0NC44LTk5LjcgMTAwLjFWNTE3YzAgNCAzIDcgNi44IDd6bS00LjIgMTM0LjlsMTA5LjEgODUuN2M0LjQgMy41IDEwLjkuMyAxMC45LTUuM3YtNTMuNGgyMDUuN2M1NS4xIDAgOTkuNy00NC44IDk5LjctMTAwLjF2LTc4LjljMC0zLjctMy02LjgtNi44LTYuOGgtNTAuN2MtMy43IDAtNi44IDMtNi44IDYuOHY3OC45YzAgMTkuNy0xNS45IDM1LjYtMzUuNSAzNS42SDQyMC42VjU2OGMwLTUuNy02LjUtOC44LTEwLjktNS4zbC0xMDkuMSA4NS43Yy0zLjUgMi41LTMuNSA3LjggMCAxMC41eicpKTtcbmV4cG9ydHMuSW50ZXJhdGlvbk91dGxpbmUgPSBnZXRJY29uKCdpbnRlcmF0aW9uJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDcyOEgxODRWMTg0aDY1NnY2NTZ6TTMwNC44IDUyNGg1MC43YzMuNyAwIDYuOC0zIDYuOC02Ljh2LTc4LjljMC0xOS43IDE1LjktMzUuNiAzNS41LTM1LjZoMjA1Ljd2NTMuNGMwIDUuNyA2LjUgOC44IDEwLjkgNS4zbDEwOS4xLTg1LjdjMy41LTIuNyAzLjUtOCAwLTEwLjdsLTEwOS4xLTg1LjdjLTQuNC0zLjUtMTAuOS0uMy0xMC45IDUuM1YzMzhIMzk3LjdjLTU1LjEgMC05OS43IDQ0LjgtOTkuNyAxMDAuMVY1MTdjMCA0IDMgNyA2LjggN3ptLTQuMiAxMzQuOWwxMDkuMSA4NS43YzQuNCAzLjUgMTAuOS4zIDEwLjktNS4zdi01My40aDIwNS43YzU1LjEgMCA5OS43LTQ0LjggOTkuNy0xMDAuMXYtNzguOWMwLTMuNy0zLTYuOC02LjgtNi44aC01MC43Yy0zLjcgMC02LjggMy02LjggNi44djc4LjljMCAxOS43LTE1LjkgMzUuNi0zNS41IDM1LjZINDIwLjZWNTY4YzAtNS43LTYuNS04LjgtMTAuOS01LjNsLTEwOS4xIDg1LjdjLTMuNSAyLjUtMy41IDcuOCAwIDEwLjV6JykpO1xuZXhwb3J0cy5MYXlvdXRPdXRsaW5lID0gZ2V0SWNvbignbGF5b3V0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTY5NiA3MmgxMzZ2NjU2SDE4NFYxODR6bTY1NiA2NTZIMzg0VjM4NGg0NTZ2NDU2ek0zODQgMzIwVjE4NGg0NTZ2MTM2SDM4NHonKSk7XG5leHBvcnRzLkxlZnRDaXJjbGVPdXRsaW5lID0gZ2V0SWNvbignbGVmdC1jaXJjbGUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNjAzLjMgMzI3LjVsLTI0NiAxNzhhNy45NSA3Ljk1IDAgMCAwIDAgMTIuOWwyNDYgMTc4YzUuMyAzLjggMTIuNyAwIDEyLjctNi41VjY0M2MwLTEwLjItNC45LTE5LjktMTMuMi0yNS45TDQ1Ny40IDUxMmwxNDUuNC0xMDUuMmM4LjMtNiAxMy4yLTE1LjYgMTMuMi0yNS45VjMzNGMwLTYuNS03LjQtMTAuMy0xMi43LTYuNXonLCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnonKSk7XG5leHBvcnRzLkxlZnRTcXVhcmVPdXRsaW5lID0gZ2V0SWNvbignbGVmdC1zcXVhcmUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMzY1LjMgNTE4LjVsMjQ2IDE3OGM1LjMgMy44IDEyLjcgMCAxMi43LTYuNXYtNDYuOWMwLTEwLjItNC45LTE5LjktMTMuMi0yNS45TDQ2NS40IDUxMmwxNDUuNC0xMDUuMmM4LjMtNiAxMy4yLTE1LjYgMTMuMi0yNS45VjMzNGMwLTYuNS03LjQtMTAuMy0xMi43LTYuNWwtMjQ2IDE3OGE4LjA1IDguMDUgMCAwIDAgMCAxM3onLCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDcyOEgxODRWMTg0aDY1NnY2NTZ6JykpO1xuZXhwb3J0cy5MaWtlT3V0bGluZSA9IGdldEljb24oJ2xpa2UnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODg1LjkgNTMzLjdjMTYuOC0yMi4yIDI2LjEtNDkuNCAyNi4xLTc3LjcgMC00NC45LTI1LjEtODcuNC02NS41LTExMS4xYTY3LjY3IDY3LjY3IDAgMCAwLTM0LjMtOS4zSDU3Mi40bDYtMTIyLjljMS40LTI5LjctOS4xLTU3LjktMjkuNS03OS40QTEwNi42MiAxMDYuNjIgMCAwIDAgNDcxIDk5LjljLTUyIDAtOTggMzUtMTExLjggODUuMWwtODUuOSAzMTFIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjAxLjNjOS4yIDAgMTguMi0xLjggMjYuNS01LjQgNDcuNi0yMC4zIDc4LjMtNjYuOCA3OC4zLTExOC40IDAtMTIuNi0xLjgtMjUtNS40LTM3IDE2LjgtMjIuMiAyNi4xLTQ5LjQgMjYuMS03Ny43IDAtMTIuNi0xLjgtMjUtNS40LTM3IDE2LjgtMjIuMiAyNi4xLTQ5LjQgMjYuMS03Ny43LS4yLTEyLjYtMi0yNS4xLTUuNi0zNy4xek0xODQgODUyVjU2OGg4MXYyODRoLTgxem02MzYuNC0zNTNsLTIxLjkgMTkgMTMuOSAyNS40YTU2LjIgNTYuMiAwIDAgMSA2LjkgMjcuM2MwIDE2LjUtNy4yIDMyLjItMTkuNiA0M2wtMjEuOSAxOSAxMy45IDI1LjRhNTYuMiA1Ni4yIDAgMCAxIDYuOSAyNy4zYzAgMTYuNS03LjIgMzIuMi0xOS42IDQzbC0yMS45IDE5IDEzLjkgMjUuNGE1Ni4yIDU2LjIgMCAwIDEgNi45IDI3LjNjMCAyMi40LTEzLjIgNDIuNi0zMy42IDUxLjhIMzI5VjU2NC44bDk5LjUtMzYwLjVhNDQuMSA0NC4xIDAgMCAxIDQyLjItMzIuM2M3LjYgMCAxNS4xIDIuMiAyMS4xIDYuNyA5LjkgNy40IDE1LjIgMTguNiAxNC42IDMwLjVsLTkuNiAxOTguNGgzMTQuNEM4MjkgNDE4LjUgODQwIDQzNi45IDg0MCA0NTZjMCAxNi41LTcuMiAzMi4xLTE5LjYgNDN6JykpO1xuZXhwb3J0cy5MaW5rZWRpbk91dGxpbmUgPSBnZXRJY29uKCdsaW5rZWRpbicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NDcuNyAxMTJIMTc2LjNjLTM1LjUgMC02NC4zIDI4LjgtNjQuMyA2NC4zdjY3MS40YzAgMzUuNSAyOC44IDY0LjMgNjQuMyA2NC4zaDY3MS40YzM1LjUgMCA2NC4zLTI4LjggNjQuMy02NC4zVjE3Ni4zYzAtMzUuNS0yOC44LTY0LjMtNjQuMy02NC4zem0wIDczNmMtNDQ3LjgtLjEtNjcxLjctLjItNjcxLjctLjMuMS00NDcuOC4yLTY3MS43LjMtNjcxLjcgNDQ3LjguMSA2NzEuNy4yIDY3MS43LjMtLjEgNDQ3LjgtLjIgNjcxLjctLjMgNjcxLjd6TTIzMC42IDQxMS45aDExOC43djM4MS44SDIzMC42em01OS40LTUyLjJjMzcuOSAwIDY4LjgtMzAuOCA2OC44LTY4LjhhNjguOCA2OC44IDAgMSAwLTEzNy42IDBjLS4xIDM4IDMwLjcgNjguOCA2OC44IDY4Ljh6bTI1Mi4zIDI0NS4xYzAtNDkuOCA5LjUtOTggNzEuMi05OCA2MC44IDAgNjEuNyA1Ni45IDYxLjcgMTAxLjJ2MTg1LjdoMTE4LjZWNTg0LjNjMC0xMDIuOC0yMi4yLTE4MS45LTE0Mi4zLTE4MS45LTU3LjcgMC05Ni40IDMxLjctMTEyLjMgNjEuN2gtMS42di01Mi4ySDQyMy43djM4MS44aDExOC42VjYwNC44eicpKTtcbmV4cG9ydHMuTG9ja091dGxpbmUgPSBnZXRJY29uKCdsb2NrJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTgzMiA0NjRoLTY4VjI0MGMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOEgzODhjLTcwLjcgMC0xMjggNTcuMy0xMjggMTI4djIyNGgtNjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMzIgMjQwYzAtMzAuOSAyNS4xLTU2IDU2LTU2aDI0OGMzMC45IDAgNTYgMjUuMSA1NiA1NnYyMjRIMzMyVjI0MHptNDYwIDYwMEgyMzJWNTM2aDU2MHYzMDR6TTQ4NCA3MDF2NTNjMCA0LjQgMy42IDggOCA4aDQwYzQuNCAwIDgtMy42IDgtOHYtNTNhNDguMDEgNDguMDEgMCAxIDAtNTYgMHonKSk7XG5leHBvcnRzLk1lZGljaW5lQm94T3V0bGluZSA9IGdldEljb24oJ21lZGljaW5lLWJveCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004MzkuMiAyNzguMWEzMiAzMiAwIDAgMC0zMC40LTIyLjFINzM2VjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjExMmgtNzIuOGEzMS45IDMxLjkgMCAwIDAtMzAuNCAyMi4xTDExMiA1MDJ2Mzc4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlY1MDJsLTcyLjgtMjIzLjl6TTM2MCAxODRoMzA0djcySDM2MHYtNzJ6bTQ4MCA2NTZIMTg0VjUxMy40TDI0NC4zIDMyOGg1MzUuNEw4NDAgNTEzLjRWODQwek02NTIgNTcySDU0NFY0NjRjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djEwOEgzNzJjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoMTA4djEwOGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjYzNmgxMDhjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5NZWhPdXRsaW5lID0gZ2V0SWNvbignbWVoJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTI4OCA0MjFhNDggNDggMCAxIDAgOTYgMCA0OCA0OCAwIDEgMC05NiAwem0zNTIgMGE0OCA0OCAwIDEgMCA5NiAwIDQ4IDQ4IDAgMSAwLTk2IDB6TTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0yNjMgNzExYy0zNC4yIDM0LjItNzQgNjEtMTE4LjMgNzkuOEM2MTEgODc0LjIgNTYyLjMgODg0IDUxMiA4ODRjLTUwLjMgMC05OS05LjgtMTQ0LjgtMjkuMkEzNzAuNCAzNzAuNCAwIDAgMSAyNDguOSA3NzVjLTM0LjItMzQuMi02MS03NC03OS44LTExOC4zQzE0OS44IDYxMSAxNDAgNTYyLjMgMTQwIDUxMnM5LjgtOTkgMjkuMi0xNDQuOEEzNzAuNCAzNzAuNCAwIDAgMSAyNDkgMjQ4LjljMzQuMi0zNC4yIDc0LTYxIDExOC4zLTc5LjhDNDEzIDE0OS44IDQ2MS43IDE0MCA1MTIgMTQwYzUwLjMgMCA5OSA5LjggMTQ0LjggMjkuMkEzNzAuNCAzNzAuNCAwIDAgMSA3NzUuMSAyNDljMzQuMiAzNC4yIDYxIDc0IDc5LjggMTE4LjNDODc0LjIgNDEzIDg4NCA0NjEuNyA4ODQgNTEycy05LjggOTktMjkuMiAxNDQuOEEzNjguODkgMzY4Ljg5IDAgMCAxIDc3NSA3NzV6TTY2NCA1NjVIMzYwYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDMwNGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHonKSk7XG5leHBvcnRzLk1haWxPdXRsaW5lID0gZ2V0SWNvbignbWFpbCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MjggMTYwSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NDBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDExMC44Vjc5MkgxMzZWMjcwLjhsLTI3LjYtMjEuNSAzOS4zLTUwLjUgNDIuOCAzMy4zaDY0My4xbDQyLjgtMzMuMyAzOS4zIDUwLjUtMjcuNyAyMS41ek04MzMuNiAyMzJMNTEyIDQ4MiAxOTAuNCAyMzJsLTQyLjgtMzMuMy0zOS4zIDUwLjUgMjcuNiAyMS41IDM0MS42IDI2NS42YTU1Ljk5IDU1Ljk5IDAgMCAwIDY4LjcgMEw4ODggMjcwLjhsMjcuNi0yMS41LTM5LjMtNTAuNS00Mi43IDMzLjJ6JykpO1xuZXhwb3J0cy5NZXNzYWdlT3V0bGluZSA9IGdldEljb24oJ21lc3NhZ2UnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNDY0IDUxMmE0OCA0OCAwIDEgMCA5NiAwIDQ4IDQ4IDAgMSAwLTk2IDB6bTIwMCAwYTQ4IDQ4IDAgMSAwIDk2IDAgNDggNDggMCAxIDAtOTYgMHptLTQwMCAwYTQ4IDQ4IDAgMSAwIDk2IDAgNDggNDggMCAxIDAtOTYgMHptNjYxLjItMTczLjZjLTIyLjYtNTMuNy01NS0xMDEuOS05Ni4zLTE0My4zYTQ0NC4zNSA0NDQuMzUgMCAwIDAtMTQzLjMtOTYuM0M2MzAuNiA3NS43IDU3Mi4yIDY0IDUxMiA2NGgtMmMtNjAuNi4zLTExOS4zIDEyLjMtMTc0LjUgMzUuOWE0NDUuMzUgNDQ1LjM1IDAgMCAwLTE0MiA5Ni41Yy00MC45IDQxLjMtNzMgODkuMy05NS4yIDE0Mi44LTIzIDU1LjQtMzQuNiAxMTQuMy0zNC4zIDE3NC45QTQ0OS40IDQ0OS40IDAgMCAwIDExMiA3MTR2MTUyYTQ2IDQ2IDAgMCAwIDQ2IDQ2aDE1Mi4xQTQ0OS40IDQ0OS40IDAgMCAwIDUxMCA5NjBoMi4xYzU5LjkgMCAxMTgtMTEuNiAxNzIuNy0zNC4zYTQ0NC40OCA0NDQuNDggMCAwIDAgMTQyLjgtOTUuMmM0MS4zLTQwLjkgNzMuOC04OC43IDk2LjUtMTQyIDIzLjYtNTUuMiAzNS42LTExMy45IDM1LjktMTc0LjUuMy02MC45LTExLjUtMTIwLTM0LjgtMTc1LjZ6bS0xNTEuMSA0MzhDNzA0IDg0NS44IDYxMSA4ODQgNTEyIDg4NGgtMS43Yy02MC4zLS4zLTEyMC4yLTE1LjMtMTczLjEtNDMuNWwtOC40LTQuNUgxODhWNjk1LjJsLTQuNS04LjRDMTU1LjMgNjMzLjkgMTQwLjMgNTc0IDE0MCA1MTMuN2MtLjQtOTkuNyAzNy43LTE5My4zIDEwNy42LTI2My44IDY5LjgtNzAuNSAxNjMuMS0xMDkuNSAyNjIuOC0xMDkuOWgxLjdjNTAgMCA5OC41IDkuNyAxNDQuMiAyOC45IDQ0LjYgMTguNyA4NC42IDQ1LjYgMTE5IDgwIDM0LjMgMzQuMyA2MS4zIDc0LjQgODAgMTE5IDE5LjQgNDYuMiAyOS4xIDk1LjIgMjguOSAxNDUuOC0uNiA5OS42LTM5LjcgMTkyLjktMTEwLjEgMjYyLjd6JykpO1xuZXhwb3J0cy5NaW51c0NpcmNsZU91dGxpbmUgPSBnZXRJY29uKCdtaW51cy1jaXJjbGUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNjk2IDQ4MEgzMjhjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoMzY4YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04eicsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyeicpKTtcbmV4cG9ydHMuTWludXNTcXVhcmVPdXRsaW5lID0gZ2V0SWNvbignbWludXMtc3F1YXJlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTMyOCA1NDRoMzY4YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04SDMyOGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHonLCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDcyOEgxODRWMTg0aDY1NnY2NTZ6JykpO1xuZXhwb3J0cy5Nb2JpbGVPdXRsaW5lID0gZ2V0SWNvbignbW9iaWxlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTc0NCA2MkgyODBjLTM1LjMgMC02NCAyOC43LTY0IDY0djc2OGMwIDM1LjMgMjguNyA2NCA2NCA2NGg0NjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI2YzAtMzUuMy0yOC43LTY0LTY0LTY0em0tOCA4MjRIMjg4VjEzNGg0NDh2NzUyek00NzIgNzg0YTQwIDQwIDAgMSAwIDgwIDAgNDAgNDAgMCAxIDAtODAgMHonKSk7XG5leHBvcnRzLk1vbmV5Q29sbGVjdE91dGxpbmUgPSBnZXRJY29uKCdtb25leS1jb2xsZWN0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkxMS41IDcwMC43YTggOCAwIDAgMC0xMC4zLTQuOEw4NDAgNzE4LjJWMTgwYzAtMzcuNi0zMC40LTY4LTY4LTY4SDI1MmMtMzcuNiAwLTY4IDMwLjQtNjggNjh2NTM4LjJsLTYxLjMtMjIuM2MtLjktLjMtMS44LS41LTIuNy0uNS00LjQgMC04IDMuNi04IDhWNzYzYzAgMy4zIDIuMSA2LjMgNS4zIDcuNUw1MDEgOTEwLjFjNy4xIDIuNiAxNC44IDIuNiAyMS45IDBsMzgzLjgtMTM5LjVjMy4yLTEuMiA1LjMtNC4yIDUuMy03LjV2LTU5LjZjMC0xLS4yLTEuOS0uNS0yLjh6TTUxMiA4MzcuNWwtMjU2LTkzLjFWMTg0aDUxMnY1NjAuNGwtMjU2IDkzLjF6TTY2MC42IDMxMmgtNTQuNWMtMyAwLTUuOCAxLjctNy4xIDQuNGwtODQuNyAxNjguOEg1MTFsLTg0LjctMTY4LjhhOCA4IDAgMCAwLTcuMS00LjRoLTU1LjdjLTEuMyAwLTIuNi4zLTMuOCAxLTMuOSAyLjEtNS4zIDctMy4yIDEwLjhsMTAzLjkgMTkxLjZoLTU3Yy00LjQgMC04IDMuNi04IDh2MjcuMWMwIDQuNCAzLjYgOCA4IDhoNzZ2MzloLTc2Yy00LjQgMC04IDMuNi04IDh2MjcuMWMwIDQuNCAzLjYgOCA4IDhoNzZWNzA0YzAgNC40IDMuNiA4IDggOGg0OS45YzQuNCAwIDgtMy42IDgtOHYtNjMuNWg3Ni4zYzQuNCAwIDgtMy42IDgtOHYtMjcuMWMwLTQuNC0zLjYtOC04LThoLTc2LjN2LTM5aDc2LjNjNC40IDAgOC0zLjYgOC04di0yNy4xYzAtNC40LTMuNi04LTgtOEg1NjRsMTAzLjctMTkxLjZjLjYtMS4yIDEtMi41IDEtMy44LS4xLTQuMy0zLjctNy45LTguMS03Ljl6JykpO1xuZXhwb3J0cy5QYXVzZUNpcmNsZU91dGxpbmUgPSBnZXRJY29uKCdwYXVzZS1jaXJjbGUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyem0tODgtNTMyaC00OGMtNC40IDAtOCAzLjYtOCA4djMwNGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjM2MGMwLTQuNC0zLjYtOC04LTh6bTIyNCAwaC00OGMtNC40IDAtOCAzLjYtOCA4djMwNGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjM2MGMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5QYXlDaXJjbGVPdXRsaW5lID0gZ2V0SWNvbigncGF5LWNpcmNsZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6bTE1OS42LTU4NWgtNTkuNWMtMyAwLTUuOCAxLjctNy4xIDQuNGwtOTAuNiAxODBINTExbC05MC42LTE4MGE4IDggMCAwIDAtNy4xLTQuNGgtNjAuN2MtMS4zIDAtMi42LjMtMy44IDEtMy45IDIuMS01LjMgNy0zLjIgMTAuOUw0NTcgNTE1LjdoLTYxLjRjLTQuNCAwLTggMy42LTggOHYyOS45YzAgNC40IDMuNiA4IDggOGg4MS43VjYwM2gtODEuN2MtNC40IDAtOCAzLjYtOCA4djI5LjljMCA0LjQgMy42IDggOCA4aDgxLjdWNzE3YzAgNC40IDMuNiA4IDggOGg1NC4zYzQuNCAwIDgtMy42IDgtOHYtNjguMWg4MmM0LjQgMCA4LTMuNiA4LThWNjExYzAtNC40LTMuNi04LTgtOGgtODJ2LTQxLjVoODJjNC40IDAgOC0zLjYgOC04di0yOS45YzAtNC40LTMuNi04LTgtOGgtNjJsMTExLjEtMjA0LjhjLjYtMS4yIDEtMi41IDEtMy44LS4xLTQuNC0zLjctOC04LjEtOHonKSk7XG5leHBvcnRzLk5vdGlmaWNhdGlvbk91dGxpbmUgPSBnZXRJY29uKCdub3RpZmljYXRpb24nLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMmMtMy44IDAtNy43LjctMTEuNiAyLjNMMjkyIDM0NS45SDEyOGMtOC44IDAtMTYgNy40LTE2IDE2LjZ2Mjk5YzAgOS4yIDcuMiAxNi42IDE2IDE2LjZoMTAxLjdjLTMuNyAxMS42LTUuNyAyMy45LTUuNyAzNi40IDAgNjUuOSA1My44IDExOS41IDEyMCAxMTkuNSA1NS40IDAgMTAyLjEtMzcuNiAxMTUuOS04OC40bDQwOC42IDE2NC4yYzMuOSAxLjUgNy44IDIuMyAxMS42IDIuMyAxNi45IDAgMzItMTQuMiAzMi0zMy4yVjE0NS4yQzkxMiAxMjYuMiA4OTcgMTEyIDg4MCAxMTJ6TTM0NCA3NjIuM2MtMjYuNSAwLTQ4LTIxLjQtNDgtNDcuOCAwLTExLjIgMy45LTIxLjkgMTEtMzAuNGw4NC45IDM0LjFjLTIgMjQuNi0yMi43IDQ0LjEtNDcuOSA0NC4xem00OTYgNTguNEwzMTguOCA2MTEuM2wtMTIuOS01LjJIMTg0VjQxNy45aDEyMS45bDEyLjktNS4yTDg0MCAyMDMuM3Y2MTcuNHonKSk7XG5leHBvcnRzLlBob25lT3V0bGluZSA9IGdldEljb24oJ3Bob25lJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg3Ny4xIDIzOC43TDc3MC42IDEzMi4zYy0xMy0xMy0zMC40LTIwLjMtNDguOC0yMC4zcy0zNS44IDcuMi00OC44IDIwLjNMNTU4LjMgMjQ2LjhjLTEzIDEzLTIwLjMgMzAuNS0yMC4zIDQ4LjkgMCAxOC41IDcuMiAzNS44IDIwLjMgNDguOWw4OS42IDg5LjdhNDA1LjQ2IDQwNS40NiAwIDAgMS04Ni40IDEyNy4zYy0zNi43IDM2LjktNzkuNiA2Ni0xMjcuMiA4Ni42bC04OS42LTg5LjdjLTEzLTEzLTMwLjQtMjAuMy00OC44LTIwLjNhNjguMiA2OC4yIDAgMCAwLTQ4LjggMjAuM0wxMzIuMyA2NzNjLTEzIDEzLTIwLjMgMzAuNS0yMC4zIDQ4LjkgMCAxOC41IDcuMiAzNS44IDIwLjMgNDguOWwxMDYuNCAxMDYuNGMyMi4yIDIyLjIgNTIuOCAzNC45IDg0LjIgMzQuOSA2LjUgMCAxMi44LS41IDE5LjItMS42IDEzMi40LTIxLjggMjYzLjgtOTIuMyAzNjkuOS0xOTguM0M4MTggNjA2IDg4OC40IDQ3NC42IDkxMC40IDM0Mi4xYzYuMy0zNy42LTYuMy03Ni4zLTMzLjMtMTAzLjR6bS0zNy42IDkxLjVjLTE5LjUgMTE3LjktODIuOSAyMzUuNS0xNzguNCAzMzFzLTIxMyAxNTguOS0zMzAuOSAxNzguNGMtMTQuOCAyLjUtMzAtMi41LTQwLjgtMTMuMkwxODQuOSA3MjEuOSAyOTUuNyA2MTFsMTE5LjggMTIwIC45LjkgMjEuNi04YTQ4MS4yOSA0ODEuMjkgMCAwIDAgMjg1LjctMjg1LjhsOC0yMS42LTEyMC44LTEyMC43IDExMC44LTExMC45IDEwNC41IDEwNC41YzEwLjggMTAuOCAxNS44IDI2IDEzLjMgNDAuOHonKSk7XG5leHBvcnRzLlBpY3R1cmVPdXRsaW5lID0gZ2V0SWNvbigncGljdHVyZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MjggMTYwSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NDBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDYzMkgxMzZ2LTM5LjlsMTM4LjUtMTY0LjMgMTUwLjEgMTc4TDY1OC4xIDQ4OSA4ODggNzYxLjZWNzkyem0wLTEyOS44TDY2NC4yIDM5Ni44Yy0zLjItMy44LTktMy44LTEyLjIgMEw0MjQuNiA2NjYuNGwtMTQ0LTE3MC43Yy0zLjItMy44LTktMy44LTEyLjIgMEwxMzYgNjUyLjdWMjMyaDc1MnY0MzAuMnpNMzA0IDQ1NmE4OCA4OCAwIDEgMCAwLTE3NiA4OCA4OCAwIDAgMCAwIDE3NnptMC0xMTZjMTUuNSAwIDI4IDEyLjUgMjggMjhzLTEyLjUgMjgtMjggMjgtMjgtMTIuNS0yOC0yOCAxMi41LTI4IDI4LTI4eicpKTtcbmV4cG9ydHMuUGllQ2hhcnRPdXRsaW5lID0gZ2V0SWNvbigncGllLWNoYXJ0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg2NCA1MThINTA2VjE2MGMwLTQuNC0zLjYtOC04LThoLTI2YTM5OC40NiAzOTguNDYgMCAwIDAtMjgyLjggMTE3LjEgMzk4LjE5IDM5OC4xOSAwIDAgMC04NS43IDEyNy4xQTM5Ny42MSAzOTcuNjEgMCAwIDAgNzIgNTUyYTM5OC40NiAzOTguNDYgMCAwIDAgMTE3LjEgMjgyLjhjMzYuNyAzNi43IDc5LjUgNjUuNiAxMjcuMSA4NS43QTM5Ny42MSAzOTcuNjEgMCAwIDAgNDcyIDk1MmEzOTguNDYgMzk4LjQ2IDAgMCAwIDI4Mi44LTExNy4xYzM2LjctMzYuNyA2NS42LTc5LjUgODUuNy0xMjcuMUEzOTcuNjEgMzk3LjYxIDAgMCAwIDg3MiA1NTJ2LTI2YzAtNC40LTMuNi04LTgtOHpNNzA1LjcgNzg3LjhBMzMxLjU5IDMzMS41OSAwIDAgMSA0NzAuNCA4ODRjLTg4LjEtLjQtMTcwLjktMzQuOS0yMzMuMi05Ny4yQzE3NC41IDcyNC4xIDE0MCA2NDAuNyAxNDAgNTUyYzAtODguNyAzNC41LTE3Mi4xIDk3LjItMjM0LjggNTQuNi01NC42IDEyNC45LTg3LjkgMjAwLjgtOTUuNVY1ODZoMzY0LjNjLTcuNyA3Ni4zLTQxLjMgMTQ3LTk2LjYgMjAxLjh6TTk1MiA0NjIuNGwtMi42LTI4LjJjLTguNS05Mi4xLTQ5LjQtMTc5LTExNS4yLTI0NC42QTM5OS40IDM5OS40IDAgMCAwIDU4OSA3NC42TDU2MC43IDcyYy00LjctLjQtOC43IDMuMi04LjcgNy45VjQ2NGMwIDQuNCAzLjYgOCA4IDhsMzg0LTFjNC43IDAgOC40LTQgOC04LjZ6bS0zMzIuMi01OC4yVjE0Ny42YTMzMi4yNCAzMzIuMjQgMCAwIDEgMTY2LjQgODkuOGM0NS43IDQ1LjYgNzcgMTAzLjYgOTAgMTY2LjFsLTI1Ni40Ljd6JykpO1xuZXhwb3J0cy5QbGF5U3F1YXJlT3V0bGluZSA9IGdldEljb24oJ3BsYXktc3F1YXJlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQ0Mi4zIDY3Ny42bDE5OS40LTE1Ni43YTExLjMgMTEuMyAwIDAgMCAwLTE3LjdMNDQyLjMgMzQ2LjRjLTcuNC01LjgtMTguMy0uNi0xOC4zIDguOHYzMTMuNWMwIDkuNCAxMC45IDE0LjcgMTguMyA4Ljl6JywgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCA3MjhIMTg0VjE4NGg2NTZ2NjU2eicpKTtcbmV4cG9ydHMuUGxheUNpcmNsZU91dGxpbmUgPSBnZXRJY29uKCdwbGF5LWNpcmNsZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6JywgJ003MTkuNCA0OTkuMWwtMjk2LjEtMjE1QTE1LjkgMTUuOSAwIDAgMCAzOTggMjk3djQzMGMwIDEzLjEgMTQuOCAyMC41IDI1LjMgMTIuOWwyOTYuMS0yMTVhMTUuOSAxNS45IDAgMCAwIDAtMjUuOHptLTI1Ny42IDEzNFYzOTAuOUw2MjguNSA1MTIgNDYxLjggNjMzLjF6JykpO1xuZXhwb3J0cy5QbHVzQ2lyY2xlT3V0bGluZSA9IGdldEljb24oJ3BsdXMtY2lyY2xlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTY5NiA0ODBINTQ0VjMyOGMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2MTUySDMyOGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgxNTJ2MTUyYzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LThWNTQ0aDE1MmM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHonLCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnonKSk7XG5leHBvcnRzLlByaW50ZXJPdXRsaW5lID0gZ2V0SWNvbigncHJpbnRlcicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004MjAgNDM2aC00MGMtNC40IDAtOCAzLjYtOCA4djQwYzAgNC40IDMuNiA4IDggOGg0MGM0LjQgMCA4LTMuNiA4LTh2LTQwYzAtNC40LTMuNi04LTgtOHptMzItMTA0SDczMlYxMjBjMC00LjQtMy42LTgtOC04SDMwMGMtNC40IDAtOCAzLjYtOCA4djIxMkgxNzJjLTQ0LjIgMC04MCAzNS44LTgwIDgwdjMyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxNjh2MTMyYzAgNC40IDMuNiA4IDggOGg0MjRjNC40IDAgOC0zLjYgOC04Vjc3MmgxNjhjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDEyYzAtNDQuMi0zNS44LTgwLTgwLTgwek0zNjAgMTgwaDMwNHYxNTJIMzYwVjE4MHptMzA0IDY2NEgzNjBWNTY4aDMwNHYyNzZ6bTIwMC0xNDBINzMyVjUwMEgyOTJ2MjA0SDE2MFY0MTJjMC02LjYgNS40LTEyIDEyLTEyaDY4MGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjkyeicpKTtcbmV4cG9ydHMuUGx1c1NxdWFyZU91dGxpbmUgPSBnZXRJY29uKCdwbHVzLXNxdWFyZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00zMjggNTQ0aDE1MnYxNTJjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOFY1NDRoMTUyYzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04SDU0NFYzMjhjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djE1MkgzMjhjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDh6JywgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCA3MjhIMTg0VjE4NGg2NTZ2NjU2eicpKTtcbmV4cG9ydHMuUHJvZmlsZU91dGxpbmUgPSBnZXRJY29uKCdwcm9maWxlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDcyOEgxODRWMTg0aDY1NnY2NTZ6TTQ5MiA0MDBoMTg0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04SDQ5MmMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHptMCAxNDRoMTg0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04SDQ5MmMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHptMCAxNDRoMTg0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04SDQ5MmMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHpNMzQwIDM2OGE0MCA0MCAwIDEgMCA4MCAwIDQwIDQwIDAgMSAwLTgwIDB6bTAgMTQ0YTQwIDQwIDAgMSAwIDgwIDAgNDAgNDAgMCAxIDAtODAgMHptMCAxNDRhNDAgNDAgMCAxIDAgODAgMCA0MCA0MCAwIDEgMC04MCAweicpKTtcbmV4cG9ydHMuUHJvamVjdE91dGxpbmUgPSBnZXRJY29uKCdwcm9qZWN0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTI4MCA3NTJoODBjNC40IDAgOC0zLjYgOC04VjI4MGMwLTQuNC0zLjYtOC04LThoLTgwYy00LjQgMC04IDMuNi04IDh2NDY0YzAgNC40IDMuNiA4IDggOHptMTkyLTI4MGg4MGM0LjQgMCA4LTMuNiA4LThWMjgwYzAtNC40LTMuNi04LTgtOGgtODBjLTQuNCAwLTggMy42LTggOHYxODRjMCA0LjQgMy42IDggOCA4em0xOTIgNzJoODBjNC40IDAgOC0zLjYgOC04VjI4MGMwLTQuNC0zLjYtOC04LThoLTgwYy00LjQgMC04IDMuNi04IDh2MjU2YzAgNC40IDMuNiA4IDggOHptMjE2LTQzMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNzI4SDE4NFYxODRoNjU2djY1NnonKSk7XG5leHBvcnRzLlB1c2hwaW5PdXRsaW5lID0gZ2V0SWNvbigncHVzaHBpbicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NzguMyAzOTIuMUw2MzEuOSAxNDUuN2MtNi41LTYuNS0xNS05LjctMjMuNS05LjdzLTE3IDMuMi0yMy41IDkuN0w0MjMuOCAzMDYuOWMtMTIuMi0xLjQtMjQuNS0yLTM2LjgtMi03My4yIDAtMTQ2LjQgMjQuMS0yMDYuNSA3Mi4zYTMzLjIzIDMzLjIzIDAgMCAwLTIuNyA0OS40bDE4MS43IDE4MS43LTIxNS40IDIxNS4yYTE1LjggMTUuOCAwIDAgMC00LjYgOS44bC0zLjQgMzcuMmMtLjkgOS40IDYuNiAxNy40IDE1LjkgMTcuNC41IDAgMSAwIDEuNS0uMWwzNy4yLTMuNGMzLjctLjMgNy4yLTIgOS44LTQuNmwyMTUuNC0yMTUuNCAxODEuNyAxODEuN2M2LjUgNi41IDE1IDkuNyAyMy41IDkuNyA5LjcgMCAxOS4zLTQuMiAyNS45LTEyLjQgNTYuMy03MC4zIDc5LjctMTU4LjMgNzAuMi0yNDMuNGwxNjEuMS0xNjEuMWMxMi45LTEyLjggMTIuOS0zMy44IDAtNDYuOHpNNjY2LjIgNTQ5LjNsLTI0LjUgMjQuNSAzLjggMzQuNGEyNTkuOTIgMjU5LjkyIDAgMCAxLTMwLjQgMTUzLjlMMjYyIDQwOC44YzEyLjktNy4xIDI2LjMtMTMuMSA0MC4zLTE3LjkgMjcuMi05LjQgNTUuNy0xNC4xIDg0LjctMTQuMSA5LjYgMCAxOS4zLjUgMjguOSAxLjZsMzQuNCAzLjggMjQuNS0yNC41TDYwOC41IDIyNCA4MDAgNDE1LjUgNjY2LjIgNTQ5LjN6JykpO1xuZXhwb3J0cy5Qcm9wZXJ0eVNhZmV0eU91dGxpbmUgPSBnZXRJY29uKCdwcm9wZXJ0eS1zYWZldHknLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODY2LjkgMTY5LjlMNTI3LjEgNTQuMUM1MjMgNTIuNyA1MTcuNSA1MiA1MTIgNTJzLTExIC43LTE1LjEgMi4xTDE1Ny4xIDE2OS45Yy04LjMgMi44LTE1LjEgMTIuNC0xNS4xIDIxLjJ2NDgyLjRjMCA4LjggNS43IDIwLjQgMTIuNiAyNS45TDQ5OS4zIDk2OGMzLjUgMi43IDggNC4xIDEyLjYgNC4xczkuMi0xLjQgMTIuNi00LjFsMzQ0LjctMjY4LjZjNi45LTUuNCAxMi42LTE3IDEyLjYtMjUuOVYxOTEuMWMuMi04LjgtNi42LTE4LjMtMTQuOS0yMS4yek04MTAgNjU0LjNMNTEyIDg4Ni41IDIxNCA2NTQuM1YyMjYuN2wyOTgtMTAxLjYgMjk4IDEwMS42djQyNy42ek00MzAuNSAzMThoLTQ2Yy0xLjcgMC0zLjMuNC00LjggMS4yYTEwLjEgMTAuMSAwIDAgMC00IDEzLjZsODggMTYxLjFoLTQ1LjJjLTUuNSAwLTEwIDQuNS0xMCAxMHYyMS4zYzAgNS41IDQuNSAxMCAxMCAxMGg2My4xdjI5LjdoLTYzLjFjLTUuNSAwLTEwIDQuNS0xMCAxMHYyMS4zYzAgNS41IDQuNSAxMCAxMCAxMGg2My4xVjY1OGMwIDUuNSA0LjUgMTAgMTAgMTBoNDEuM2M1LjUgMCAxMC00LjUgMTAtMTB2LTUxLjhoNjMuNGM1LjUgMCAxMC00LjUgMTAtMTB2LTIxLjNjMC01LjUtNC41LTEwLTEwLTEwaC02My40di0yOS43aDYzLjRjNS41IDAgMTAtNC41IDEwLTEwdi0yMS4zYzAtNS41LTQuNS0xMC0xMC0xMGgtNDUuN2w4Ny43LTE2MS4xYTEwLjA1IDEwLjA1IDAgMCAwLTguOC0xNC44aC00NWMtMy44IDAtNy4yIDIuMS04LjkgNS41bC03My4yIDE0NC4zLTcyLjktMTQ0LjNjLTEuNy0zLjQtNS4yLTUuNS05LTUuNXonKSk7XG5leHBvcnRzLlF1ZXN0aW9uQ2lyY2xlT3V0bGluZSA9IGdldEljb24oJ3F1ZXN0aW9uLWNpcmNsZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6JywgJ002MjMuNiAzMTYuN0M1OTMuNiAyOTAuNCA1NTQgMjc2IDUxMiAyNzZzLTgxLjYgMTQuNS0xMTEuNiA0MC43QzM2OS4yIDM0NCAzNTIgMzgwLjcgMzUyIDQyMHY3LjZjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOFY0MjBjMC00NC4xIDQzLjEtODAgOTYtODBzOTYgMzUuOSA5NiA4MGMwIDMxLjEtMjIgNTkuNi01Ni4xIDcyLjctMjEuMiA4LjEtMzkuMiAyMi4zLTUyLjEgNDAuOS0xMy4xIDE5LTE5LjkgNDEuOC0xOS45IDY0LjlWNjIwYzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTIyLjdhNDguMyA0OC4zIDAgMCAxIDMwLjktNDQuOGM1OS0yMi43IDk3LjEtNzQuNyA5Ny4xLTEzMi41LjEtMzkuMy0xNy4xLTc2LTQ4LjMtMTAzLjN6TTQ3MiA3MzJhNDAgNDAgMCAxIDAgODAgMCA0MCA0MCAwIDEgMC04MCAweicpKTtcbmV4cG9ydHMuUmVhZE91dGxpbmUgPSBnZXRJY29uKCdyZWFkJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkyOCAxNjFINjk5LjJjLTQ5LjEgMC05Ny4xIDE0LjEtMTM4LjQgNDAuN0w1MTIgMjMzbC00OC44LTMxLjNBMjU1LjIgMjU1LjIgMCAwIDAgMzI0LjggMTYxSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY1NjhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMjI4LjhjNDkuMSAwIDk3LjEgMTQuMSAxMzguNCA0MC43bDQ0LjQgMjguNmMxLjMuOCAyLjggMS4zIDQuMyAxLjNzMy0uNCA0LjMtMS4zbDQ0LjQtMjguNkM2MDIgODA3LjEgNjUwLjEgNzkzIDY5OS4yIDc5M0g5MjhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTkzYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMjQuOCA3MjFIMTM2VjIzM2gxODguOGMzNS40IDAgNjkuOCAxMC4xIDk5LjUgMjkuMmw0OC44IDMxLjMgNi45IDQuNXY0NjJjLTQ3LjYtMjUuNi0xMDAuOC0zOS0xNTUuMi0zOXptNTYzLjIgMEg2OTkuMmMtNTQuNCAwLTEwNy42IDEzLjQtMTU1LjIgMzlWMjk4bDYuOS00LjUgNDguOC0zMS4zYzI5LjctMTkuMSA2NC4xLTI5LjIgOTkuNS0yOS4ySDg4OHY0ODh6TTM5Ni45IDM2MUgyMTEuMWMtMy45IDAtNy4xIDMuNC03LjEgNy41djQ1YzAgNC4xIDMuMiA3LjUgNy4xIDcuNWgxODUuN2MzLjkgMCA3LjEtMy40IDcuMS03LjV2LTQ1Yy4xLTQuMS0zLjEtNy41LTctNy41em0yMjMuMSA3LjV2NDVjMCA0LjEgMy4yIDcuNSA3LjEgNy41aDE4NS43YzMuOSAwIDcuMS0zLjQgNy4xLTcuNXYtNDVjMC00LjEtMy4yLTcuNS03LjEtNy41SDYyNy4xYy0zLjkgMC03LjEgMy40LTcuMSA3LjV6TTM5Ni45IDUwMUgyMTEuMWMtMy45IDAtNy4xIDMuNC03LjEgNy41djQ1YzAgNC4xIDMuMiA3LjUgNy4xIDcuNWgxODUuN2MzLjkgMCA3LjEtMy40IDcuMS03LjV2LTQ1Yy4xLTQuMS0zLjEtNy41LTctNy41em00MTYgMEg2MjcuMWMtMy45IDAtNy4xIDMuNC03LjEgNy41djQ1YzAgNC4xIDMuMiA3LjUgNy4xIDcuNWgxODUuN2MzLjkgMCA3LjEtMy40IDcuMS03LjV2LTQ1Yy4xLTQuMS0zLjEtNy41LTctNy41eicpKTtcbmV4cG9ydHMuUmVjb25jaWxpYXRpb25PdXRsaW5lID0gZ2V0SWNvbigncmVjb25jaWxpYXRpb24nLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNjc2IDU2NWMtNTAuOCAwLTkyIDQxLjItOTIgOTJzNDEuMiA5MiA5MiA5MiA5Mi00MS4yIDkyLTkyLTQxLjItOTItOTItOTJ6bTAgMTI2Yy0xOC44IDAtMzQtMTUuMi0zNC0zNHMxNS4yLTM0IDM0LTM0IDM0IDE1LjIgMzQgMzQtMTUuMiAzNC0zNCAzNHptMjA0LTUyM0g2NjhjMC0zMC45LTI1LjEtNTYtNTYtNTZoLTgwYy0zMC45IDAtNTYgMjUuMS01NiA1NkgyNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjIwMGgtODhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMzZjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTE2aDM2OGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMDBjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MTIgNjRoNzJ2LTU2aDY0djU2aDcydjQ4SDQ2OHYtNDh6bS0yMCA2MTZIMTc2VjYxNmgyNzJ2MjMyem0wLTI5NkgxNzZ2LTg4aDI3MnY4OHptMzkyIDI0MEg1MTJWNDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDMwNFYyNDBoMTAwdjEwNGgzMzZWMjQwaDEwMHY1NTJ6TTcwNCA0MDh2OTZjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOHYtOTZjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4ek01OTIgNTEyaDQ4YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHonKSk7XG5leHBvcnRzLlJlZEVudmVsb3BlT3V0bGluZSA9IGdldEljb24oJ3JlZC1lbnZlbG9wZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ000NDAuNiA0NjIuNmE4LjM4IDguMzggMCAwIDAtNy41LTQuNmgtNDguOGMtMS4zIDAtMi42LjQtMy45IDFhOC40IDguNCAwIDAgMC0zLjQgMTEuNGw4Ny40IDE2MS4xSDQxOWMtNC42IDAtOC40IDMuOC04LjQgOC40VjY2NWMwIDQuNiAzLjggOC40IDguNCA4LjRoNjNWNzAyaC02M2MtNC42IDAtOC40IDMuOC04LjQgOC40djI1LjFjMCA0LjYgMy44IDguNCA4LjQgOC40aDYzdjQ5LjljMCA0LjYgMy44IDguNCA4LjQgOC40aDQzLjdjNC42IDAgOC40LTMuOCA4LjQtOC40di00OS45aDYzLjNjNC43IDAgOC40LTMuOCA4LjItOC41di0yNWMwLTQuNi0zLjgtOC40LTguNC04LjRoLTYzLjN2LTI4LjZoNjMuM2M0LjYgMCA4LjQtMy44IDguNC04LjR2LTI1LjFjMC00LjYtMy44LTguNC04LjQtOC40aC00NS45bDg3LjItMTYxYTguNDUgOC40NSAwIDAgMC03LjQtMTIuNGgtNDcuOGMtMy4xIDAtNiAxLjgtNy41IDQuNmwtNzEuOSAxNDEuOS03MS43LTE0MnpNODMyIDY0SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2ODMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0MGMxNy43IDAgMzItMTQuMyAzMi0zMlY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDgyNEgyMzJWMTkzLjFsMjYwLjMgMjA0LjFjMTEuNiA5LjEgMjcuOSA5LjEgMzkuNSAwTDc5MiAxOTMuMVY4ODh6bTAtNzUxLjNoLTMxLjdMNTEyIDMzMS4zIDI2My43IDEzNi43SDIzMnYtLjdoNTYwdi43eicpKTtcbmV4cG9ydHMuUmVzdE91dGxpbmUgPSBnZXRJY29uKCdyZXN0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUwOCA3MDRjNzkuNSAwIDE0NC02NC41IDE0NC0xNDRzLTY0LjUtMTQ0LTE0NC0xNDQtMTQ0IDY0LjUtMTQ0IDE0NCA2NC41IDE0NCAxNDQgMTQ0em0wLTIyNGM0NC4yIDAgODAgMzUuOCA4MCA4MHMtMzUuOCA4MC04MCA4MC04MC0zNS44LTgwLTgwIDM1LjgtODAgODAtODB6JywgJ004MzIgMjU2aC0yOC4xbC0zNS43LTEyMC45Yy00LTEzLjctMTYuNS0yMy4xLTMwLjctMjMuMWgtNDUxYy0xNC4zIDAtMjYuOCA5LjQtMzAuNyAyMy4xTDIyMC4xIDI1NkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjI4YzAgNC40IDMuNiA4IDggOGg0NS44bDQ3LjcgNTU4LjdhMzIgMzIgMCAwIDAgMzEuOSAyOS4zaDQyOS4yYTMyIDMyIDAgMCAwIDMxLjktMjkuM0w4MDIuMiAzMjRIODU2YzQuNCAwIDgtMy42IDgtOHYtMjhjMC0xNy43LTE0LjMtMzItMzItMzJ6bS01MTguNi03NmgzOTcuMmwyMi40IDc2SDI5MWwyMi40LTc2em0zNzYuMiA2NjRIMzI2LjRMMjgyIDMyNGg0NTEuOWwtNDQuMyA1MjB6JykpO1xuZXhwb3J0cy5SaWdodENpcmNsZU91dGxpbmUgPSBnZXRJY29uKCdyaWdodC1jaXJjbGUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNjY2LjcgNTA1LjVsLTI0Ni0xNzhBOCA4IDAgMCAwIDQwOCAzMzR2NDYuOWMwIDEwLjIgNC45IDE5LjkgMTMuMiAyNS45TDU2Ni42IDUxMiA0MjEuMiA2MTcuMmMtOC4zIDYtMTMuMiAxNS42LTEzLjIgMjUuOVY2OTBjMCA2LjUgNy40IDEwLjMgMTIuNyA2LjVsMjQ2LTE3OGM0LjQtMy4yIDQuNC05LjggMC0xM3onLCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnonKSk7XG5leHBvcnRzLlJvY2tldE91dGxpbmUgPSBnZXRJY29uKCdyb2NrZXQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODY0IDczNmMwLTExMS42LTY1LjQtMjA4LTE2MC0yNTIuOVYzMTcuM2MwLTE1LjEtNS4zLTI5LjctMTUuMS00MS4yTDUzNi41IDk1LjRDNTMwLjEgODcuOCA1MjEgODQgNTEyIDg0cy0xOC4xIDMuOC0yNC41IDExLjRMMzM1LjEgMjc2LjFhNjMuOTcgNjMuOTcgMCAwIDAtMTUuMSA0MS4ydjE2NS44QzIyNS40IDUyOCAxNjAgNjI0LjQgMTYwIDczNmgxNTYuNWMtMi4zIDcuMi0zLjUgMTUtMy41IDIzLjggMCAyMi4xIDcuNiA0My43IDIxLjQgNjAuOGE5Ny4yIDk3LjIgMCAwIDAgNDMuMSAzMC42YzIzLjEgNTQgNzUuNiA4OC44IDEzNC41IDg4LjggMjkuMSAwIDU3LjMtOC42IDgxLjQtMjQuOCAyMy42LTE1LjggNDEuOS0zNy45IDUzLTY0YTk3IDk3IDAgMCAwIDQzLjEtMzAuNSA5Ny41MiA5Ny41MiAwIDAgMCAyMS40LTYwLjhjMC04LjQtMS4xLTE2LjQtMy4xLTIzLjhIODY0ek03NjIuMyA2MjEuNGM5LjQgMTQuNiAxNyAzMC4zIDIyLjUgNDYuNkg3MDBWNTU4LjdhMjExLjYgMjExLjYgMCAwIDEgNjIuMyA2Mi43ek0zODggNDgzLjFWMzE4LjhsMTI0LTE0NyAxMjQgMTQ3VjY2OEgzODhWNDgzLjF6TTIzOS4yIDY2OGM1LjUtMTYuMyAxMy4xLTMyIDIyLjUtNDYuNiAxNi4zLTI1LjIgMzcuNS00Ni41IDYyLjMtNjIuN1Y2NjhoLTg0Ljh6bTM4OC45IDExNi4yYy01LjIgMy0xMS4yIDQuMi0xNy4xIDMuNGwtMTkuNS0yLjQtMi44IDE5LjRjLTUuNCAzNy45LTM4LjQgNjYuNS03Ni43IDY2LjUtMzguMyAwLTcxLjMtMjguNi03Ni43LTY2LjVsLTIuOC0xOS41LTE5LjUgMi41YTI3LjcgMjcuNyAwIDAgMS0xNy4xLTMuNWMtOC43LTUtMTQuMS0xNC4zLTE0LjEtMjQuNCAwLTEwLjYgNS45LTE5LjQgMTQuNi0yMy44aDIzMS4zYzguOCA0LjUgMTQuNiAxMy4zIDE0LjYgMjMuOC0uMSAxMC4yLTUuNSAxOS42LTE0LjIgMjQuNXpNNDY0IDQwMGE0OCA0OCAwIDEgMCA5NiAwIDQ4IDQ4IDAgMSAwLTk2IDB6JykpO1xuZXhwb3J0cy5SaWdodFNxdWFyZU91dGxpbmUgPSBnZXRJY29uKCdyaWdodC1zcXVhcmUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNDEyLjcgNjk2LjVsMjQ2LTE3OGM0LjQtMy4yIDQuNC05LjcgMC0xMi45bC0yNDYtMTc4Yy01LjMtMy44LTEyLjcgMC0xMi43IDYuNVYzODFjMCAxMC4yIDQuOSAxOS45IDEzLjIgMjUuOUw1NTguNiA1MTIgNDEzLjIgNjE3LjJjLTguMyA2LTEzLjIgMTUuNi0xMy4yIDI1LjlWNjkwYzAgNi41IDcuNCAxMC4zIDEyLjcgNi41eicsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNzI4SDE4NFYxODRoNjU2djY1NnonKSk7XG5leHBvcnRzLlNhZmV0eUNlcnRpZmljYXRlT3V0bGluZSA9IGdldEljb24oJ3NhZmV0eS1jZXJ0aWZpY2F0ZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NjYuOSAxNjkuOUw1MjcuMSA1NC4xQzUyMyA1Mi43IDUxNy41IDUyIDUxMiA1MnMtMTEgLjctMTUuMSAyLjFMMTU3LjEgMTY5LjljLTguMyAyLjgtMTUuMSAxMi40LTE1LjEgMjEuMnY0ODIuNGMwIDguOCA1LjcgMjAuNCAxMi42IDI1LjlMNDk5LjMgOTY4YzMuNSAyLjcgOCA0LjEgMTIuNiA0LjFzOS4yLTEuNCAxMi42LTQuMWwzNDQuNy0yNjguNmM2LjktNS40IDEyLjYtMTcgMTIuNi0yNS45VjE5MS4xYy4yLTguOC02LjYtMTguMy0xNC45LTIxLjJ6TTgxMCA2NTQuM0w1MTIgODg2LjUgMjE0IDY1NC4zVjIyNi43bDI5OC0xMDEuNiAyOTggMTAxLjZ2NDI3LjZ6bS00MDUuOC0yMDFjLTMtNC4xLTcuOC02LjYtMTMtNi42SDMzNmMtNi41IDAtMTAuMyA3LjQtNi41IDEyLjdsMTI2LjQgMTc0YTE2LjEgMTYuMSAwIDAgMCAyNiAwbDIxMi42LTI5Mi43YzMuOC01LjMgMC0xMi43LTYuNS0xMi43aC01NS4yYy01LjEgMC0xMCAyLjUtMTMgNi42TDQ2OC45IDU0Mi40bC02NC43LTg5LjF6JykpO1xuZXhwb3J0cy5TY2hlZHVsZU91dGxpbmUgPSBnZXRJY29uKCdzY2hlZHVsZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MjggMjI0SDc2OHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2SDU0OHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2SDMyOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY1NzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoODMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDU2OEgxMzZWMjk2aDEyMHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmgxNDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZoMTQ4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2aDEyMHY0OTZ6TTQxNiA0OTZIMjMyYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDE4NGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptMCAxMzZIMjMyYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDE4NGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptMzA4LjItMTc3LjRMNjIwLjYgNTk4LjNsLTUyLjgtNzMuMWMtMy00LjItNy44LTYuNi0xMi45LTYuNkg1MDBjLTYuNSAwLTEwLjMgNy40LTYuNSAxMi43bDExNC4xIDE1OC4yYTE1LjkgMTUuOSAwIDAgMCAyNS44IDBsMTY1LTIyOC43YzMuOC01LjMgMC0xMi43LTYuNS0xMi43SDczN2MtNS0uMS05LjggMi40LTEyLjggNi41eicpKTtcbmV4cG9ydHMuU2F2ZU91dGxpbmUgPSBnZXRJY29uKCdzYXZlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg5My4zIDI5My4zTDczMC43IDEzMC43Yy03LjUtNy41LTE2LjctMTMtMjYuNy0xNlYxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMzOC41YzAtMTctNi43LTMzLjItMTguNy00NS4yek0zODQgMTg0aDI1NnYxMDRIMzg0VjE4NHptNDU2IDY1NkgxODRWMTg0aDEzNnYxMzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIwNS44bDEzNiAxMzZWODQwek01MTIgNDQyYy03OS41IDAtMTQ0IDY0LjUtMTQ0IDE0NHM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDQtNjQuNS0xNDQtMTQ0LTE0NHptMCAyMjRjLTQ0LjIgMC04MC0zNS44LTgwLTgwczM1LjgtODAgODAtODAgODAgMzUuOCA4MCA4MC0zNS44IDgwLTgwIDgweicpKTtcbmV4cG9ydHMuU2VjdXJpdHlTY2FuT3V0bGluZSA9IGdldEljb24oJ3NlY3VyaXR5LXNjYW4nLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODY2LjkgMTY5LjlMNTI3LjEgNTQuMUM1MjMgNTIuNyA1MTcuNSA1MiA1MTIgNTJzLTExIC43LTE1LjEgMi4xTDE1Ny4xIDE2OS45Yy04LjMgMi44LTE1LjEgMTIuNC0xNS4xIDIxLjJ2NDgyLjRjMCA4LjggNS43IDIwLjQgMTIuNiAyNS45TDQ5OS4zIDk2OGMzLjUgMi43IDggNC4xIDEyLjYgNC4xczkuMi0xLjQgMTIuNi00LjFsMzQ0LjctMjY4LjZjNi45LTUuNCAxMi42LTE3IDEyLjYtMjUuOVYxOTEuMWMuMi04LjgtNi42LTE4LjMtMTQuOS0yMS4yek04MTAgNjU0LjNMNTEyIDg4Ni41IDIxNCA2NTQuM1YyMjYuN2wyOTgtMTAxLjYgMjk4IDEwMS42djQyNy42ek00MDIuOSA1MjguOGwtNzcuNSA3Ny41YTguMDMgOC4wMyAwIDAgMCAwIDExLjNsMzQgMzRjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGw3Ny41LTc3LjVjNTUuNyAzNS4xIDEzMC4xIDI4LjQgMTc4LjYtMjAuMSA1Ni4zLTU2LjMgNTYuMy0xNDcuNSAwLTIwMy44LTU2LjMtNTYuMy0xNDcuNS01Ni4zLTIwMy44IDAtNDguNSA0OC41LTU1LjIgMTIzLTIwLjEgMTc4LjZ6bTY1LjQtMTMzLjNjMzEuMy0zMS4zIDgyLTMxLjMgMTEzLjIgMCAzMS4zIDMxLjMgMzEuMyA4MiAwIDExMy4yLTMxLjMgMzEuMy04MiAzMS4zLTExMy4yIDBzLTMxLjMtODEuOSAwLTExMy4yeicpKTtcbmV4cG9ydHMuU2V0dGluZ091dGxpbmUgPSBnZXRJY29uKCdzZXR0aW5nJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkyNC44IDYyNS43bC02NS41LTU2YzMuMS0xOSA0LjctMzguNCA0LjctNTcuOHMtMS42LTM4LjgtNC43LTU3LjhsNjUuNS01NmEzMi4wMyAzMi4wMyAwIDAgMCA5LjMtMzUuMmwtLjktMi42YTQ0My43NCA0NDMuNzQgMCAwIDAtNzkuNy0xMzcuOWwtMS44LTIuMWEzMi4xMiAzMi4xMiAwIDAgMC0zNS4xLTkuNWwtODEuMyAyOC45Yy0zMC0yNC42LTYzLjUtNDQtOTkuNy01Ny42bC0xNS43LTg1YTMyLjA1IDMyLjA1IDAgMCAwLTI1LjgtMjUuN2wtMi43LS41Yy01Mi4xLTkuNC0xMDYuOS05LjQtMTU5IDBsLTIuNy41YTMyLjA1IDMyLjA1IDAgMCAwLTI1LjggMjUuN2wtMTUuOCA4NS40YTM1MS44NiAzNTEuODYgMCAwIDAtOTkgNTcuNGwtODEuOS0yOS4xYTMyIDMyIDAgMCAwLTM1LjEgOS41bC0xLjggMi4xYTQ0Ni4wMiA0NDYuMDIgMCAwIDAtNzkuNyAxMzcuOWwtLjkgMi42Yy00LjUgMTIuNS0uOCAyNi41IDkuMyAzNS4ybDY2LjMgNTYuNmMtMy4xIDE4LjgtNC42IDM4LTQuNiA1Ny4xIDAgMTkuMiAxLjUgMzguNCA0LjYgNTcuMUw5OSA2MjUuNWEzMi4wMyAzMi4wMyAwIDAgMC05LjMgMzUuMmwuOSAyLjZjMTguMSA1MC40IDQ0LjkgOTYuOSA3OS43IDEzNy45bDEuOCAyLjFhMzIuMTIgMzIuMTIgMCAwIDAgMzUuMSA5LjVsODEuOS0yOS4xYzI5LjggMjQuNSA2My4xIDQzLjkgOTkgNTcuNGwxNS44IDg1LjRhMzIuMDUgMzIuMDUgMCAwIDAgMjUuOCAyNS43bDIuNy41YTQ0OS40IDQ0OS40IDAgMCAwIDE1OSAwbDIuNy0uNWEzMi4wNSAzMi4wNSAwIDAgMCAyNS44LTI1LjdsMTUuNy04NWEzNTAgMzUwIDAgMCAwIDk5LjctNTcuNmw4MS4zIDI4LjlhMzIgMzIgMCAwIDAgMzUuMS05LjVsMS44LTIuMWMzNC44LTQxLjEgNjEuNi04Ny41IDc5LjctMTM3LjlsLjktMi42YzQuNS0xMi4zLjgtMjYuMy05LjMtMzV6TTc4OC4zIDQ2NS45YzIuNSAxNS4xIDMuOCAzMC42IDMuOCA0Ni4xcy0xLjMgMzEtMy44IDQ2LjFsLTYuNiA0MC4xIDc0LjcgNjMuOWEzNzAuMDMgMzcwLjAzIDAgMCAxLTQyLjYgNzMuNkw3MjEgNzAyLjhsLTMxLjQgMjUuOGMtMjMuOSAxOS42LTUwLjUgMzUtNzkuMyA0NS44bC0zOC4xIDE0LjMtMTcuOSA5N2EzNzcuNSAzNzcuNSAwIDAgMS04NSAwbC0xNy45LTk3LjItMzcuOC0xNC41Yy0yOC41LTEwLjgtNTUtMjYuMi03OC43LTQ1LjdsLTMxLjQtMjUuOS05My40IDMzLjJjLTE3LTIyLjktMzEuMi00Ny42LTQyLjYtNzMuNmw3NS41LTY0LjUtNi41LTQwYy0yLjQtMTQuOS0zLjctMzAuMy0zLjctNDUuNSAwLTE1LjMgMS4yLTMwLjYgMy43LTQ1LjVsNi41LTQwLTc1LjUtNjQuNWMxMS4zLTI2LjEgMjUuNi01MC43IDQyLjYtNzMuNmw5My40IDMzLjIgMzEuNC0yNS45YzIzLjctMTkuNSA1MC4yLTM0LjkgNzguNy00NS43bDM3LjktMTQuMyAxNy45LTk3LjJjMjguMS0zLjIgNTYuOC0zLjIgODUgMGwxNy45IDk3IDM4LjEgMTQuM2MyOC43IDEwLjggNTUuNCAyNi4yIDc5LjMgNDUuOGwzMS40IDI1LjggOTIuOC0zMi45YzE3IDIyLjkgMzEuMiA0Ny42IDQyLjYgNzMuNkw3ODEuOCA0MjZsNi41IDM5Ljl6TTUxMiAzMjZjLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2czc4LjggMTc2IDE3NiAxNzYgMTc2LTc4LjggMTc2LTE3Ni03OC44LTE3Ni0xNzYtMTc2em03OS4yIDI1NS4yQTExMS42IDExMS42IDAgMCAxIDUxMiA2MTRjLTI5LjkgMC01OC0xMS43LTc5LjItMzIuOEExMTEuNiAxMTEuNiAwIDAgMSA0MDAgNTAyYzAtMjkuOSAxMS43LTU4IDMyLjgtNzkuMkM0NTQgNDAxLjYgNDgyLjEgMzkwIDUxMiAzOTBjMjkuOSAwIDU4IDExLjYgNzkuMiAzMi44QTExMS42IDExMS42IDAgMCAxIDYyNCA1MDJjMCAyOS45LTExLjcgNTgtMzIuOCA3OS4yeicpKTtcbmV4cG9ydHMuU2hvcHBpbmdPdXRsaW5lID0gZ2V0SWNvbignc2hvcHBpbmcnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODMyIDMxMkg2OTZ2LTE2YzAtMTAxLjYtODIuNC0xODQtMTg0LTE4NHMtMTg0IDgyLjQtMTg0IDE4NHYxNkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjUzNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDMyLTE2YzAtNjEuOSA1MC4xLTExMiAxMTItMTEyczExMiA1MC4xIDExMiAxMTJ2MTZINDAwdi0xNnptMzkyIDU0NEgyMzJWMzg0aDk2djg4YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTg4aDIyNHY4OGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di04OGg5NnY0NTZ6JykpO1xuZXhwb3J0cy5Ta2luT3V0bGluZSA9IGdldEljb24oJ3NraW4nLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODcwIDEyNkg2NjMuOGMtMTcuNCAwLTMyLjkgMTEuOS0zNyAyOS4zQzYxNC4zIDIwOC4xIDU2NyAyNDYgNTEyIDI0NnMtMTAyLjMtMzcuOS0xMTQuOC05MC43YTM3LjkzIDM3LjkzIDAgMCAwLTM3LTI5LjNIMTU0YTQ0IDQ0IDAgMCAwLTQ0IDQ0djI1MmE0NCA0NCAwIDAgMCA0NCA0NGg3NXYzODhhNDQgNDQgMCAwIDAgNDQgNDRoNDc4YTQ0IDQ0IDAgMCAwIDQ0LTQ0VjQ2Nmg3NWE0NCA0NCAwIDAgMCA0NC00NFYxNzBhNDQgNDQgMCAwIDAtNDQtNDR6bS0yOCAyNjhINzIzdjQzMkgzMDFWMzk0SDE4MlYxOThoMTUzLjNjMjguMiA3MS4yIDk3LjUgMTIwIDE3Ni43IDEyMHMxNDguNS00OC44IDE3Ni43LTEyMEg4NDJ2MTk2eicpKTtcbmV4cG9ydHMuU2t5cGVPdXRsaW5lID0gZ2V0SWNvbignc2t5cGUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgzLjcgNTc4LjZjNC4xLTIyLjUgNi4zLTQ1LjUgNi4zLTY4LjUgMC01MS0xMC0xMDAuNS0yOS43LTE0Ny0xOS00NS00Ni4zLTg1LjQtODEtMTIwLjFhMzc1Ljc5IDM3NS43OSAwIDAgMC0xMjAuMS04MC45Yy00Ni42LTE5LjctOTYtMjkuNy0xNDctMjkuNy0yNCAwLTQ4LjEgMi4zLTcxLjUgNi44QTIyNS4xIDIyNS4xIDAgMCAwIDMzNS42IDExM2MtNTkuNyAwLTExNS45IDIzLjMtMTU4LjEgNjUuNUEyMjIuMjUgMjIyLjI1IDAgMCAwIDExMiAzMzYuNmMwIDM4IDkuOCA3NS40IDI4LjEgMTA4LjQtMy43IDIxLjQtNS43IDQzLjMtNS43IDY1LjEgMCA1MSAxMCAxMDAuNSAyOS43IDE0NyAxOSA0NSA0Ni4yIDg1LjQgODAuOSAxMjAuMSAzNC43IDM0LjcgNzUuMSA2MS45IDEyMC4xIDgwLjkgNDYuNiAxOS43IDk2IDI5LjcgMTQ3IDI5LjcgMjIuMiAwIDQ0LjQtMiA2Ni4yLTUuOSAzMy41IDE4LjkgNzEuMyAyOSAxMTAgMjkgNTkuNyAwIDExNS45LTIzLjIgMTU4LjEtNjUuNSA0Mi4zLTQyLjIgNjUuNS05OC40IDY1LjUtMTU4LjEuMS0zOC05LjctNzUuNS0yOC4yLTEwOC43em0tODguMSAyMTZDNzY2LjkgODIzLjQgNzI5IDgzOSA2ODguNCA4MzljLTI2LjEgMC01MS44LTYuOC03NC42LTE5LjdsLTIyLjUtMTIuNy0yNS41IDQuNWMtMTcuOCAzLjItMzUuOCA0LjgtNTMuNiA0LjgtNDEuNCAwLTgxLjMtOC4xLTExOS4xLTI0LjEtMzYuMy0xNS4zLTY5LTM3LjMtOTcuMi02NS41YTMwNC4yOSAzMDQuMjkgMCAwIDEtNjUuNS05Ny4xYy0xNi0zNy43LTI0LTc3LjYtMjQtMTE5IDAtMTcuNCAxLjYtMzUuMiA0LjYtNTIuOGw0LjQtMjUuMUwyMDMgNDEwYTE1MS4wMiAxNTEuMDIgMCAwIDEtMTkuMS03My40YzAtNDAuNiAxNS43LTc4LjUgNDQuNC0xMDcuMkMyNTcuMSAyMDAuNyAyOTUgMTg1IDMzNS42IDE4NWExNTMgMTUzIDAgMCAxIDcxLjQgMTcuOWwyMi40IDExLjggMjQuOC00LjhjMTguOS0zLjYgMzguNC01LjUgNTgtNS41IDQxLjQgMCA4MS4zIDguMSAxMTkgMjQgMzYuNSAxNS40IDY5LjEgMzcuNCA5Ny4yIDY1LjUgMjguMiAyOC4xIDUwLjIgNjAuOCA2NS42IDk3LjIgMTYgMzcuNyAyNCA3Ny42IDI0IDExOSAwIDE4LjQtMS43IDM3LTUuMSA1NS41bC00LjcgMjUuNSAxMi42IDIyLjZjMTIuNiAyMi41IDE5LjIgNDggMTkuMiA3My43IDAgNDAuNy0xNS43IDc4LjUtNDQuNCAxMDcuMnpNNTgzLjQgNDY2LjJMNDk1IDQ0Ni42Yy0zMy42LTcuNy03Mi4zLTE3LjgtNzIuMy00OS41czI3LjEtNTMuOSA3Ni4xLTUzLjljOTguNyAwIDg5LjcgNjcuOCAxMzguNyA2Ny44IDI1LjggMCA0OC40LTE1LjIgNDguNC00MS4yIDAtNjAuOC05Ny40LTEwNi41LTE4MC0xMDYuNS04OS43IDAtMTg1LjIgMzguMS0xODUuMiAxMzkuNSAwIDQ4LjggMTcuNCAxMDAuOCAxMTMuNiAxMjQuOWwxMTkuNCAyOS44YzM2LjEgOC45IDQ1LjIgMjkuMiA0NS4yIDQ3LjYgMCAzMC41LTMwLjMgNjAuMy04NS4yIDYwLjMtMTA3LjIgMC05Mi4zLTgyLjUtMTQ5LjctODIuNS0yNS44IDAtNDQuNSAxNy44LTQ0LjUgNDMuMSAwIDQ5LjQgNjAgMTE1LjQgMTk0LjIgMTE1LjQgMTI3LjcgMCAxOTEtNjEuNSAxOTEtMTQ0IDAtNTMuMS0yNC41LTEwOS42LTEyMS4zLTEzMS4yeicpKTtcbmV4cG9ydHMuU2xhY2tTcXVhcmVPdXRsaW5lID0gZ2V0SWNvbignc2xhY2stc3F1YXJlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNTI5IDMxMS40YzAtMjcuOCAyMi41LTUwLjQgNTAuMy01MC40IDI3LjggMCA1MC4zIDIyLjYgNTAuMyA1MC40djEzNC40YzAgMjcuOC0yMi41IDUwLjQtNTAuMyA1MC40LTI3LjggMC01MC4zLTIyLjYtNTAuMy01MC40VjMxMS40ek0zNjEuNSA1ODAuMmMwIDI3LjgtMjIuNSA1MC40LTUwLjMgNTAuNGE1MC4zNSA1MC4zNSAwIDAgMS01MC4zLTUwLjRjMC0yNy44IDIyLjUtNTAuNCA1MC4zLTUwLjRoNTAuM3Y1MC40em0xMzQgMTM0LjRjMCAyNy44LTIyLjUgNTAuNC01MC4zIDUwLjQtMjcuOCAwLTUwLjMtMjIuNi01MC4zLTUwLjRWNTgwLjJjMC0yNy44IDIyLjUtNTAuNCA1MC4zLTUwLjRhNTAuMzUgNTAuMzUgMCAwIDEgNTAuMyA1MC40djEzNC40em0tNTAuMi0yMTguNGgtMTM0Yy0yNy44IDAtNTAuMy0yMi42LTUwLjMtNTAuNCAwLTI3LjggMjIuNS01MC40IDUwLjMtNTAuNGgxMzRjMjcuOCAwIDUwLjMgMjIuNiA1MC4zIDUwLjQtLjEgMjcuOS0yMi42IDUwLjQtNTAuMyA1MC40em0wLTEzNC40Yy0xMy4zIDAtMjYuMS01LjMtMzUuNi0xNC44UzM5NSAzMjQuOCAzOTUgMzExLjRjMC0yNy44IDIyLjUtNTAuNCA1MC4zLTUwLjQgMjcuOCAwIDUwLjMgMjIuNiA1MC4zIDUwLjR2NTAuNGgtNTAuM3ptMTM0IDQwMy4yYy0yNy44IDAtNTAuMy0yMi42LTUwLjMtNTAuNHYtNTAuNGg1MC4zYzI3LjggMCA1MC4zIDIyLjYgNTAuMyA1MC40IDAgMjcuOC0yMi41IDUwLjQtNTAuMyA1MC40em0xMzQtMTM0LjRoLTEzNGE1MC4zNSA1MC4zNSAwIDAgMS01MC4zLTUwLjRjMC0yNy44IDIyLjUtNTAuNCA1MC4zLTUwLjRoMTM0YzI3LjggMCA1MC4zIDIyLjYgNTAuMyA1MC40IDAgMjcuOC0yMi41IDUwLjQtNTAuMyA1MC40em0wLTEzNC40SDY2M3YtNTAuNGMwLTI3LjggMjIuNS01MC40IDUwLjMtNTAuNHM1MC4zIDIyLjYgNTAuMyA1MC40YzAgMjcuOC0yMi41IDUwLjQtNTAuMyA1MC40eicpKTtcbmV4cG9ydHMuU2xpZGVyc091dGxpbmUgPSBnZXRJY29uKCdzbGlkZXJzJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTMyMCAyMjRoLTY2di01NmMwLTQuNC0zLjYtOC04LThoLTUyYy00LjQgMC04IDMuNi04IDh2NTZoLTY2Yy00LjQgMC04IDMuNi04IDh2NTYwYzAgNC40IDMuNiA4IDggOGg2NnY1NmMwIDQuNCAzLjYgOCA4IDhoNTJjNC40IDAgOC0zLjYgOC04di01Nmg2NmM0LjQgMCA4LTMuNiA4LThWMjMyYzAtNC40LTMuNi04LTgtOHptLTYwIDUwOGgtODBWMjkyaDgwdjQ0MHptNjQ0LTQzNmgtNjZ2LTk2YzAtNC40LTMuNi04LTgtOGgtNTJjLTQuNCAwLTggMy42LTggOHY5NmgtNjZjLTQuNCAwLTggMy42LTggOHY0MTZjMCA0LjQgMy42IDggOCA4aDY2djk2YzAgNC40IDMuNiA4IDggOGg1MmM0LjQgMCA4LTMuNiA4LTh2LTk2aDY2YzQuNCAwIDgtMy42IDgtOFYzMDRjMC00LjQtMy42LTgtOC04em0tNjAgMzY0aC04MFYzNjRoODB2Mjk2ek02MTIgNDA0aC02NlYyMzJjMC00LjQtMy42LTgtOC04aC01MmMtNC40IDAtOCAzLjYtOCA4djE3MmgtNjZjLTQuNCAwLTggMy42LTggOHYyMDBjMCA0LjQgMy42IDggOCA4aDY2djE3MmMwIDQuNCAzLjYgOCA4IDhoNTJjNC40IDAgOC0zLjYgOC04VjYyMGg2NmM0LjQgMCA4LTMuNiA4LThWNDEyYzAtNC40LTMuNi04LTgtOHptLTYwIDE0NWEzIDMgMCAwIDEtMyAzaC03NGEzIDMgMCAwIDEtMy0zdi03NGEzIDMgMCAwIDEgMy0zaDc0YTMgMyAwIDAgMSAzIDN2NzR6JykpO1xuZXhwb3J0cy5TbWlsZU91dGxpbmUgPSBnZXRJY29uKCdzbWlsZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00yODggNDIxYTQ4IDQ4IDAgMSAwIDk2IDAgNDggNDggMCAxIDAtOTYgMHptMzUyIDBhNDggNDggMCAxIDAgOTYgMCA0OCA0OCAwIDEgMC05NiAwek01MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMjYzIDcxMWMtMzQuMiAzNC4yLTc0IDYxLTExOC4zIDc5LjhDNjExIDg3NC4yIDU2Mi4zIDg4NCA1MTIgODg0Yy01MC4zIDAtOTktOS44LTE0NC44LTI5LjJBMzcwLjQgMzcwLjQgMCAwIDEgMjQ4LjkgNzc1Yy0zNC4yLTM0LjItNjEtNzQtNzkuOC0xMTguM0MxNDkuOCA2MTEgMTQwIDU2Mi4zIDE0MCA1MTJzOS44LTk5IDI5LjItMTQ0LjhBMzcwLjQgMzcwLjQgMCAwIDEgMjQ5IDI0OC45YzM0LjItMzQuMiA3NC02MSAxMTguMy03OS44QzQxMyAxNDkuOCA0NjEuNyAxNDAgNTEyIDE0MGM1MC4zIDAgOTkgOS44IDE0NC44IDI5LjJBMzcwLjQgMzcwLjQgMCAwIDEgNzc1LjEgMjQ5YzM0LjIgMzQuMiA2MSA3NCA3OS44IDExOC4zQzg3NC4yIDQxMyA4ODQgNDYxLjcgODg0IDUxMnMtOS44IDk5LTI5LjIgMTQ0LjhBMzY4Ljg5IDM2OC44OSAwIDAgMSA3NzUgNzc1ek02NjQgNTMzaC00OC4xYy00LjIgMC03LjggMy4yLTguMSA3LjRDNjA0IDU4OS45IDU2Mi41IDYyOSA1MTIgNjI5cy05Mi4xLTM5LjEtOTUuOC04OC42Yy0uMy00LjItMy45LTcuNC04LjEtNy40SDM2MGE4IDggMCAwIDAtOCA4LjRjNC40IDg0LjMgNzQuNSAxNTEuNiAxNjAgMTUxLjZzMTU1LjYtNjcuMyAxNjAtMTUxLjZhOCA4IDAgMCAwLTgtOC40eicpKTtcbmV4cG9ydHMuU25pcHBldHNPdXRsaW5lID0gZ2V0SWNvbignc25pcHBldHMnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODMyIDExMkg3MjRWNzJjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djQwSDUwMFY3MmMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NDBIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYxMjBoLTk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNTEyYzE3LjcgMCAzMi0xNC4zIDMyLTMydi05Nmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTY2NCA4ODhIMjMyVjMzNmgyMTh2MTc0YzAgMjIuMSAxNy45IDQwIDQwIDQwaDE3NHYzMzh6bTAtNDAySDUxNFYzMzZoLjJMNjY0IDQ4NS44di4yem0xMjggMjc0aC01NlY0NTZMNTQ0IDI2NEgzNjB2LTgwaDY4djMyYzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTMyaDE1MnYzMmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di0zMmg2OHY1NzZ6JykpO1xuZXhwb3J0cy5Tb3VuZE91dGxpbmUgPSBnZXRJY29uKCdzb3VuZCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ002MjUuOSAxMTVjLTUuOSAwLTExLjkgMS42LTE3LjQgNS4zTDI1NCAzNTJIOTBjLTguOCAwLTE2IDcuMi0xNiAxNnYyODhjMCA4LjggNy4yIDE2IDE2IDE2aDE2NGwzNTQuNSAyMzEuN2M1LjUgMy42IDExLjYgNS4zIDE3LjQgNS4zIDE2LjcgMCAzMi4xLTEzLjMgMzIuMS0zMi4xVjE0Ny4xYzAtMTguOC0xNS40LTMyLjEtMzIuMS0zMi4xek01ODYgODAzTDI5My40IDYxMS43bC0xOC0xMS43SDE0NlY0MjRoMTI5LjRsMTcuOS0xMS43TDU4NiAyMjF2NTgyem0zNDgtMzI3SDgwNmMtOC44IDAtMTYgNy4yLTE2IDE2djQwYzAgOC44IDcuMiAxNiAxNiAxNmgxMjhjOC44IDAgMTYtNy4yIDE2LTE2di00MGMwLTguOC03LjItMTYtMTYtMTZ6bS00MS45IDI2MS44bC0xMTAuMy02My43YTE1LjkgMTUuOSAwIDAgMC0yMS43IDUuOWwtMTkuOSAzNC41Yy00LjQgNy42LTEuOCAxNy40IDUuOCAyMS44TDg1Ni4zIDgwMGExNS45IDE1LjkgMCAwIDAgMjEuNy01LjlsMTkuOS0zNC41YzQuNC03LjYgMS43LTE3LjQtNS44LTIxLjh6TTc2MCAzNDRhMTUuOSAxNS45IDAgMCAwIDIxLjcgNS45TDg5MiAyODYuMmM3LjYtNC40IDEwLjItMTQuMiA1LjgtMjEuOEw4NzggMjMwYTE1LjkgMTUuOSAwIDAgMC0yMS43LTUuOUw3NDYgMjg3LjhhMTUuOTkgMTUuOTkgMCAwIDAtNS44IDIxLjhMNzYwIDM0NHonKSk7XG5leHBvcnRzLlN0YXJPdXRsaW5lID0gZ2V0SWNvbignc3RhcicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MDguMSAzNTMuMWwtMjUzLjktMzYuOUw1NDAuNyA4Ni4xYy0zLjEtNi4zLTguMi0xMS40LTE0LjUtMTQuNS0xNS44LTcuOC0zNS0xLjMtNDIuOSAxNC41TDM2OS44IDMxNi4ybC0yNTMuOSAzNi45Yy03IDEtMTMuNCA0LjMtMTguMyA5LjNhMzIuMDUgMzIuMDUgMCAwIDAgLjYgNDUuM2wxODMuNyAxNzkuMS00My40IDI1Mi45YTMxLjk1IDMxLjk1IDAgMCAwIDQ2LjQgMzMuN0w1MTIgNzU0bDIyNy4xIDExOS40YzYuMiAzLjMgMTMuNCA0LjQgMjAuMyAzLjIgMTcuNC0zIDI5LjEtMTkuNSAyNi4xLTM2LjlsLTQzLjQtMjUyLjkgMTgzLjctMTc5LjFjNS00LjkgOC4zLTExLjMgOS4zLTE4LjMgMi43LTE3LjUtOS41LTMzLjctMjctMzYuM3pNNjY0LjggNTYxLjZsMzYuMSAyMTAuM0w1MTIgNjcyLjcgMzIzLjEgNzcybDM2LjEtMjEwLjMtMTUyLjgtMTQ5TDQxNy42IDM4MiA1MTIgMTkwLjcgNjA2LjQgMzgybDIxMS4yIDMwLjctMTUyLjggMTQ4Ljl6JykpO1xuZXhwb3J0cy5TdGVwQmFja3dhcmRPdXRsaW5lID0gZ2V0SWNvbignc3RlcC1iYWNrd2FyZCcsIG91dGxpbmUsIGdldE5vZGUobm9ybWFsVmlld0JveCwgJ00zNDcuNiA1MjguOTVsMzgzLjIgMzAxLjAyYzE0LjI1IDExLjIgMzUuMiAxLjEgMzUuMi0xNi45NVYyMTAuOTdjMC0xOC4wNS0yMC45NS0yOC4xNC0zNS4yLTE2Ljk0TDM0Ny42IDQ5NS4wNWEyMS41MyAyMS41MyAwIDAgMCAwIDMzLjlNMzMwIDg2NGgtNjRhOCA4IDAgMCAxLTgtOFYxNjhhOCA4IDAgMCAxIDgtOGg2NGE4IDggMCAwIDEgOCA4djY4OGE4IDggMCAwIDEtOCA4JykpO1xuZXhwb3J0cy5TdGVwRm9yd2FyZE91dGxpbmUgPSBnZXRJY29uKCdzdGVwLWZvcndhcmQnLCBvdXRsaW5lLCBnZXROb2RlKG5vcm1hbFZpZXdCb3gsICdNNjc2LjQgNTI4Ljk1TDI5My4yIDgyOS45N2MtMTQuMjUgMTEuMi0zNS4yIDEuMS0zNS4yLTE2Ljk1VjIxMC45N2MwLTE4LjA1IDIwLjk1LTI4LjE0IDM1LjItMTYuOTRsMzgzLjIgMzAxLjAyYTIxLjUzIDIxLjUzIDAgMCAxIDAgMzMuOU02OTQgODY0aDY0YTggOCAwIDAgMCA4LThWMTY4YTggOCAwIDAgMC04LThoLTY0YTggOCAwIDAgMC04IDh2Njg4YTggOCAwIDAgMCA4IDgnKSk7XG5leHBvcnRzLlN0b3BPdXRsaW5lID0gZ2V0SWNvbignc3RvcCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzIgMC04OSAzMS4zLTE3MC44IDgzLjUtMjM0LjhsNTIzLjMgNTIzLjNDNjgyLjggODUyLjcgNjAxIDg4NCA1MTIgODg0em0yODguNS0xMzcuMkwyNzcuMiAyMjMuNUMzNDEuMiAxNzEuMyA0MjMgMTQwIDUxMiAxNDBjMjA1LjQgMCAzNzIgMTY2LjYgMzcyIDM3MiAwIDg5LTMxLjMgMTcwLjgtODMuNSAyMzQuOHonKSk7XG5leHBvcnRzLlN3aXRjaGVyT3V0bGluZSA9IGdldEljb24oJ3N3aXRjaGVyJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTc1MiAyNDBIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2MDhjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI3MmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDYwMEgxODRWMzEyaDUyOHY1Mjh6bTE2OC03MjhIMjY0Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU3NnY1NzZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOFYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTMwMCA1NTBoMjk2djY0SDMwMHonKSk7XG5leHBvcnRzLlRhZ091dGxpbmUgPSBnZXRJY29uKCd0YWcnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTM4IDQ1OC44bC0yOS42LTMxMi42Yy0xLjUtMTYuMi0xNC40LTI5LTMwLjYtMzAuNkw1NjUuMiA4NmgtLjRjLTMuMiAwLTUuNyAxLTcuNiAyLjlMODguOSA1NTcuMmE5Ljk2IDkuOTYgMCAwIDAgMCAxNC4xbDM2My44IDM2My44YzEuOSAxLjkgNC40IDIuOSA3LjEgMi45czUuMi0xIDcuMS0yLjlsNDY4LjMtNDY4LjNjMi0yLjEgMy01IDIuOC04ek00NTkuNyA4MzQuN0wxODkuMyA1NjQuMyA1ODkgMTY0LjYgODM2IDE4OGwyMy40IDI0Ny0zOTkuNyAzOTkuN3pNNjgwIDI1NmMtNDguNSAwLTg4IDM5LjUtODggODhzMzkuNSA4OCA4OCA4OCA4OC0zOS41IDg4LTg4LTM5LjUtODgtODgtODh6bTAgMTIwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnonKSk7XG5leHBvcnRzLlRhYmxldE91dGxpbmUgPSBnZXRJY29uKCd0YWJsZXQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODAwIDY0SDIyNGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2NzY4YzAgMzUuMyAyOC43IDY0IDY0IDY0aDU3NmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjR6bS04IDgyNEgyMzJWMTM2aDU2MHY3NTJ6TTQ3MiA3ODRhNDAgNDAgMCAxIDAgODAgMCA0MCA0MCAwIDEgMC04MCAweicpKTtcbmV4cG9ydHMuU2hvcE91dGxpbmUgPSBnZXRJY29uKCdzaG9wJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4MiAyNzIuMVYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJIMTc0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYxMjguMWMtMTYuNyAxLTMwIDE0LjktMzAgMzEuOXYxMzEuN2ExNzcgMTc3IDAgMCAwIDE0LjQgNzAuNGM0LjMgMTAuMiA5LjYgMTkuOCAxNS42IDI4Ljl2MzQ1YzAgMTcuNiAxNC4zIDMyIDMyIDMyaDY3NmMxNy43IDAgMzItMTQuMyAzMi0zMlY1MzVhMTc1IDE3NSAwIDAgMCAxNS42LTI4LjljOS41LTIyLjMgMTQuNC00NiAxNC40LTcwLjRWMzA0YzAtMTctMTMuMy0zMC45LTMwLTMxLjl6TTIxNCAxODRoNTk2djg4SDIxNHYtODh6bTM2MiA2NTYuMUg0NDhWNzM2aDEyOHYxMDQuMXptMjM0IDBINjQwVjcwNGMwLTE3LjctMTQuMy0zMi0zMi0zMkg0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjEzNi4xSDIxNFY1OTcuOWMyLjkgMS40IDUuOSAyLjggOSA0IDIyLjMgOS40IDQ2IDE0LjEgNzAuNCAxNC4xczQ4LTQuNyA3MC40LTE0LjFjMTMuOC01LjggMjYuOC0xMy4yIDM4LjctMjIuMS4yLS4xLjQtLjEuNiAwYTE4MC40IDE4MC40IDAgMCAwIDM4LjcgMjIuMWMyMi4zIDkuNCA0NiAxNC4xIDcwLjQgMTQuMSAyNC40IDAgNDgtNC43IDcwLjQtMTQuMSAxMy44LTUuOCAyNi44LTEzLjIgMzguNy0yMi4xLjItLjEuNC0uMS42IDBhMTgwLjQgMTgwLjQgMCAwIDAgMzguNyAyMi4xYzIyLjMgOS40IDQ2IDE0LjEgNzAuNCAxNC4xIDI0LjQgMCA0OC00LjcgNzAuNC0xNC4xIDMtMS4zIDYtMi42IDktNHYyNDIuMnptMzAtNDA0LjRjMCA1OS44LTQ5IDEwOC4zLTEwOS4zIDEwOC4zLTQwLjggMC03Ni40LTIyLjEtOTUuMi01NC45LTIuOS01LTguMS04LjEtMTMuOS04LjFoLS42Yy01LjcgMC0xMSAzLjEtMTMuOSA4LjFBMTA5LjI0IDEwOS4yNCAwIDAgMSA1MTIgNTQ0Yy00MC43IDAtNzYuMi0yMi05NS01NC43LTMtNS4xLTguNC04LjMtMTQuMy04LjNzLTExLjQgMy4yLTE0LjMgOC4zYTEwOS42MyAxMDkuNjMgMCAwIDEtOTUuMSA1NC43QzIzMyA1NDQgMTg0IDQ5NS41IDE4NCA0MzUuN3YtOTEuMmMwLS4zLjItLjUuNS0uNWg2NTVjLjMgMCAuNS4yLjUuNXY5MS4yeicpKTtcbmV4cG9ydHMuVGFnc091dGxpbmUgPSBnZXRJY29uKCd0YWdzJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQ4My4yIDc5MC4zTDg2MS40IDQxMmMxLjctMS43IDIuNS00IDIuMy02LjNsLTI1LjUtMzAxLjRjLS43LTcuOC02LjgtMTMuOS0xNC42LTE0LjZMNTIyLjIgNjQuM2MtMi4zLS4yLTQuNy42LTYuMyAyLjNMMTM3LjcgNDQ0LjhhOC4wMyA4LjAzIDAgMCAwIDAgMTEuM2wzMzQuMiAzMzQuMmMzLjEgMy4yIDguMiAzLjIgMTEuMyAwem02Mi42LTY1MS43bDIyNC42IDE5IDE5IDIyNC42TDQ3Ny41IDY5NCAyMzMuOSA0NTAuNWwzMTEuOS0zMTEuOXptNjAuMTYgMTg2LjIzYTQ4IDQ4IDAgMSAwIDY3Ljg4LTY3Ljg5IDQ4IDQ4IDAgMSAwLTY3Ljg4IDY3Ljg5ek04ODkuNyA1MzkuOGwtMzkuNi0zOS41YTguMDMgOC4wMyAwIDAgMC0xMS4zIDBsLTM2MiAzNjEuMy0yMzcuNi0yMzdhOC4wMyA4LjAzIDAgMCAwLTExLjMgMGwtMzkuNiAzOS41YTguMDMgOC4wMyAwIDAgMCAwIDExLjNsMjQzLjIgMjQyLjggMzkuNiAzOS41YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsNDA3LjMtNDA2LjZjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM3onKSk7XG5leHBvcnRzLlRhb2Jhb0NpcmNsZU91dGxpbmUgPSBnZXRJY29uKCd0YW9iYW8tY2lyY2xlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0ek0zMTUuNyAyOTEuNWMyNy4zIDAgNDkuNSAyMi4xIDQ5LjUgNDkuNHMtMjIuMSA0OS40LTQ5LjUgNDkuNGE0OS40IDQ5LjQgMCAxIDEgMC05OC44ek0zNjYuOSA1NzhjLTEzLjYgNDIuMy0xMC4yIDI2LjctNjQuNCAxNDQuNWwtNzguNS00OXM4Ny43LTc5LjggMTA1LjYtMTE2LjJjMTkuMi0zOC40LTIxLjEtNTguOS0yMS4xLTU4LjlsLTYwLjItMzcuNSAzMi43LTUwLjJjNDUuNCAzMy43IDQ4LjcgMzYuNiA3OS4yIDY3LjIgMjMuOCAyMy45IDIwLjcgNTYuOCA2LjcgMTAwLjF6bTQyNy4yIDU1Yy0xNS4zIDE0My44LTIwMi40IDkwLjMtMjAyLjQgOTAuM2wxMC4yLTQxLjEgNDMuMyA5LjNjODAgNSA3Mi4zLTY0LjkgNzIuMy02NC45VjQyM2MuNi03Ny4zLTcyLjYtODUuNC0yMDQuMi0zOC4zbDMwLjYgOC4zYy0yLjUgOS0xMi41IDIzLjItMjUuMiAzOC42aDE3NnYzNS42aC05OS4xdjQ0LjVoOTguN3YzNS43aC05OC43VjYyMmMxNC45LTQuOCAyOC42LTExLjUgNDAuNS0yMC41bC04LjctMzIuNSA0Ni41LTE0LjQgMzguOCA5NC45LTU3LjMgMjMuOS0xMC4yLTM3LjhjLTI1LjYgMTkuNS03OC44IDQ4LTE3MS44IDQ1LjQtOTkuMiAyLjYtNzMuNy0xMTItNzMuNy0xMTJsMi41LTEuM0g0NzJjLS41IDE0LjctNi42IDM4LjcgMS43IDUxLjggNi44IDEwLjggMjQuMiAxMi42IDM1LjMgMTMuMSAxLjMuMSAyLjYuMSAzLjkuMXYtODUuM2gtMTAxdi0zNS43aDEwMXYtNDQuNUg0ODdjLTIyLjcgMjQuMS00My41IDQ0LjEtNDMuNSA0NC4xbC0zMC42LTI2LjdjMjEuNy0yMi45IDQzLjMtNTkuMSA1Ni44LTgzLjItMTAuOSA0LjQtMjIgOS4yLTMzLjYgMTQuMi0xMS4yIDE0LjMtMjQuMiAyOS0zOC43IDQzLjUuNS44LTUwLTI4LjQtNTAtMjguNCA1Mi4yLTQ0LjQgODEuNC0xMzkuOSA4MS40LTEzOS45bDcyLjUgMjAuNHMtNS45IDE0LTE4LjQgMzUuNmMyOTAuMy04Mi4zIDMwNy40IDUwLjUgMzA3LjQgNTAuNXMxOS4xIDkxLjggMy44IDIzNS43eicpKTtcbmV4cG9ydHMuVG9vbE91dGxpbmUgPSBnZXRJY29uKCd0b29sJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg3Ni42IDIzOS41Yy0uNS0uOS0xLjItMS44LTItMi41LTUtNS0xMy4xLTUtMTguMSAwTDY4NC4yIDQwOS4zbC02Ny45LTY3LjlMNzg4LjcgMTY5Yy44LS44IDEuNC0xLjYgMi0yLjUgMy42LTYuMSAxLjYtMTMuOS00LjUtMTcuNS05OC4yLTU4LTIyNi44LTQ0LjctMzExLjMgMzkuNy02NyA2Ny04OS4yIDE2Mi02Ni41IDI0Ny40bC0yOTMgMjkzYy0zIDMtMi44IDcuOS4zIDExbDE2OS43IDE2OS43YzMuMSAzLjEgOC4xIDMuMyAxMSAuM2wyOTIuOS0yOTIuOWM4NS41IDIyLjggMTgwLjUuNyAyNDcuNi02Ni40IDg0LjQtODQuNSA5Ny43LTIxMy4xIDM5LjctMzExLjN6TTc4NiA0OTkuOGMtNTguMSA1OC4xLTE0NS4zIDY5LjMtMjE0LjYgMzMuNmwtOC44IDguOC0uMS0uMS0yNzQgMjc0LjEtNzkuMi03OS4yIDIzMC4xLTIzMC4xczAgLjEuMS4xbDUyLjgtNTIuOGMtMzUuNy02OS4zLTI0LjUtMTU2LjUgMzMuNi0yMTQuNmExODQuMiAxODQuMiAwIDAgMSAxNDQtNTMuNUw1MzcgMzE4LjlhMzIuMDUgMzIuMDUgMCAwIDAgMCA0NS4zbDEyNC41IDEyNC41YTMyLjA1IDMyLjA1IDAgMCAwIDQ1LjMgMGwxMzIuOC0xMzIuOGMzLjcgNTEuOC0xNC40IDEwNC44LTUzLjYgMTQzLjl6JykpO1xuZXhwb3J0cy5UaHVuZGVyYm9sdE91dGxpbmUgPSBnZXRJY29uKCd0aHVuZGVyYm9sdCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NDggMzU5LjNINjI3LjdMODI1LjggMTA5YzQuMS01LjMuNC0xMy02LjMtMTNINDM2Yy0yLjggMC01LjUgMS41LTYuOSA0TDE3MCA1NDcuNWMtMy4xIDUuMy43IDEyIDYuOSAxMmgxNzQuNGwtODkuNCAzNTcuNmMtMS45IDcuOCA3LjUgMTMuMyAxMy4zIDcuN0w4NTMuNSAzNzNjNS4yLTQuOSAxLjctMTMuNy01LjUtMTMuN3pNMzc4LjIgNzMyLjVsNjAuMy0yNDFIMjgxLjFsMTg5LjYtMzI3LjRoMjI0LjZMNDg3IDQyNy40aDIxMUwzNzguMiA3MzIuNXonKSk7XG5leHBvcnRzLlRyb3BoeU91dGxpbmUgPSBnZXRJY29uKCd0cm9waHknLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODY4IDE2MGgtOTJ2LTQwYzAtNC40LTMuNi04LTgtOEgyNTZjLTQuNCAwLTggMy42LTggOHY0MGgtOTJhNDQgNDQgMCAwIDAtNDQgNDR2MTQ4YzAgODEuNyA2MCAxNDkuNiAxMzguMiAxNjJDMjY1LjcgNjMwLjIgMzU5IDcyMS43IDQ3NiA3MzQuNXYxMDUuMkgyODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjkwNGMwIDQuNCAzLjYgOCA4IDhoNTEyYzQuNCAwIDgtMy42IDgtOHYtMzIuM2MwLTE3LjctMTQuMy0zMi0zMi0zMkg1NDhWNzM0LjVDNjY1IDcyMS43IDc1OC4zIDYzMC4yIDc3My44IDUxNCA4NTIgNTAxLjYgOTEyIDQzMy43IDkxMiAzNTJWMjA0YTQ0IDQ0IDAgMCAwLTQ0LTQ0ek0xODQgMzUyVjIzMmg2NHYyMDcuNmE5MS45OSA5MS45OSAwIDAgMS02NC04Ny42em01MjAgMTI4YzAgNDkuMS0xOS4xIDk1LjQtNTMuOSAxMzAuMS0zNC44IDM0LjgtODEgNTMuOS0xMzAuMSA1My45aC0xNmMtNDkuMSAwLTk1LjQtMTkuMS0xMzAuMS01My45LTM0LjgtMzQuOC01My45LTgxLTUzLjktMTMwLjFWMTg0aDM4NHYyOTZ6bTEzNi0xMjhjMCA0MS0yNi45IDc1LjgtNjQgODcuNlYyMzJoNjR2MTIweicpKTtcbmV4cG9ydHMuVW5sb2NrT3V0bGluZSA9IGdldEljb24oJ3VubG9jaycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004MzIgNDY0SDMzMlYyNDBjMC0zMC45IDI1LjEtNTYgNTYtNTZoMjQ4YzMwLjkgMCA1NiAyNS4xIDU2IDU2djY4YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTY4YzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4SDM4OGMtNzAuNyAwLTEyOCA1Ny4zLTEyOCAxMjh2MjI0aC02OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2Mzg0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0MGMxNy43IDAgMzItMTQuMyAzMi0zMlY0OTZjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCAzNzZIMjMyVjUzNmg1NjB2MzA0ek00ODQgNzAxdjUzYzAgNC40IDMuNiA4IDggOGg0MGM0LjQgMCA4LTMuNiA4LTh2LTUzYTQ4LjAxIDQ4LjAxIDAgMSAwLTU2IDB6JykpO1xuZXhwb3J0cy5VcENpcmNsZU91dGxpbmUgPSBnZXRJY29uKCd1cC1jaXJjbGUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTE4LjUgMzYwLjNhNy45NSA3Ljk1IDAgMCAwLTEyLjkgMGwtMTc4IDI0NmMtMy44IDUuMyAwIDEyLjcgNi41IDEyLjdIMzgxYzEwLjIgMCAxOS45LTQuOSAyNS45LTEzLjJMNTEyIDQ2MC40bDEwNS4yIDE0NS40YzYgOC4zIDE1LjYgMTMuMiAyNS45IDEzLjJINjkwYzYuNSAwIDEwLjMtNy40IDYuNS0xMi43bC0xNzgtMjQ2eicsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyeicpKTtcbmV4cG9ydHMuVXBTcXVhcmVPdXRsaW5lID0gZ2V0SWNvbigndXAtc3F1YXJlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTMzNCA2MjRoNDYuOWMxMC4yIDAgMTkuOS00LjkgMjUuOS0xMy4yTDUxMiA0NjUuNGwxMDUuMiAxNDUuNGM2IDguMyAxNS42IDEzLjIgMjUuOSAxMy4ySDY5MGM2LjUgMCAxMC4zLTcuNCA2LjUtMTIuN2wtMTc4LTI0NmE3Ljk1IDcuOTUgMCAwIDAtMTIuOSAwbC0xNzggMjQ2QTcuOTYgNy45NiAwIDAgMCAzMzQgNjI0eicsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNzI4SDE4NFYxODRoNjU2djY1NnonKSk7XG5leHBvcnRzLlVzYk91dGxpbmUgPSBnZXRJY29uKCd1c2InLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNzYwIDQzMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJIMjk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYyODhjLTY2LjIgMC0xMjAgNTIuMS0xMjAgMTE2djM1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04VjU0OGMwLTI0LjMgMjEuNi00NCA0OC4xLTQ0aDQ5NS44YzI2LjUgMCA0OC4xIDE5LjcgNDguMSA0NHYzNTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOFY1NDhjMC02My45LTUzLjgtMTE2LTEyMC0xMTZ6bS00MjQgMFYxODRoMzUydjI0OEgzMzZ6bTEyMC0xODRoLTQ4Yy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04em0xNjAgMGgtNDhjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5WaWRlb0NhbWVyYU91dGxpbmUgPSBnZXRJY29uKCd2aWRlby1jYW1lcmEnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTEyIDMwMi4zTDc4NCAzNzZWMjI0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2NTc2YzAgMzUuMyAyOC43IDY0IDY0IDY0aDU5MmMzNS4zIDAgNjQtMjguNyA2NC02NFY2NDhsMTI4IDczLjdjMjEuMyAxMi4zIDQ4LTMuMSA0OC0yNy42VjMzMGMwLTI0LjYtMjYuNy00MC00OC0yNy43ek03MTIgNzkySDEzNlYyMzJoNTc2djU2MHptMTc2LTE2N2wtMTA0LTU5LjhWNDU4LjlMODg4IDM5OXYyMjZ6TTIwOCAzNjBoMTEyYzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04SDIwOGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHonKSk7XG5leHBvcnRzLldhbGxldE91dGxpbmUgPSBnZXRJY29uKCd3YWxsZXQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNDY0SDUyOFY0NDhoMzEydjEyOHptMCAyNjRIMTg0VjE4NGg2NTZ2MjAwSDQ5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDM0NHYyMDB6TTU4MCA1MTJhNDAgNDAgMCAxIDAgODAgMCA0MCA0MCAwIDEgMC04MCAweicpKTtcbmV4cG9ydHMuV2FybmluZ091dGxpbmUgPSBnZXRJY29uKCd3YXJuaW5nJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQ2NCA3MjBhNDggNDggMCAxIDAgOTYgMCA0OCA0OCAwIDEgMC05NiAwem0xNi0zMDR2MTg0YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LThWNDE2YzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHptNDc1LjcgNDQwbC00MTYtNzIwYy02LjItMTAuNy0xNi45LTE2LTI3LjctMTZzLTIxLjYgNS4zLTI3LjcgMTZsLTQxNiA3MjBDNTYgODc3LjQgNzEuNCA5MDQgOTYgOTA0aDgzMmMyNC42IDAgNDAtMjYuNiAyNy43LTQ4em0tNzgzLjUtMjcuOUw1MTIgMjM5LjlsMzM5LjggNTg4LjJIMTcyLjJ6JykpO1xuZXhwb3J0cy5XZWNoYXRPdXRsaW5lID0gZ2V0SWNvbignd2VjaGF0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTY5MC4xIDM3Ny40YzUuOSAwIDExLjguMiAxNy42LjUtMjQuNC0xMjguNy0xNTguMy0yMjcuMS0zMTkuOS0yMjcuMUMyMDkgMTUwLjggNjQgMjcxLjQgNjQgNDIwLjJjMCA4MS4xIDQzLjYgMTU0LjIgMTExLjkgMjAzLjZhMjEuNSAyMS41IDAgMCAxIDkuMSAxNy42YzAgMi40LS41IDQuNi0xLjEgNi45LTUuNSAyMC4zLTE0LjIgNTIuOC0xNC42IDU0LjMtLjcgMi42LTEuNyA1LjItMS43IDcuOSAwIDUuOSA0LjggMTAuOCAxMC44IDEwLjggMi4zIDAgNC4yLS45IDYuMi0ybDcwLjktNDAuOWM1LjMtMy4xIDExLTUgMTcuMi01IDMuMiAwIDYuNC41IDkuNSAxLjQgMzMuMSA5LjUgNjguOCAxNC44IDEwNS43IDE0LjggNiAwIDExLjktLjEgMTcuOC0uNC03LjEtMjEtMTAuOS00My4xLTEwLjktNjYgMC0xMzUuOCAxMzIuMi0yNDUuOCAyOTUuMy0yNDUuOHptLTE5NC4zLTg2LjVjMjMuOCAwIDQzLjIgMTkuMyA0My4yIDQzLjFzLTE5LjMgNDMuMS00My4yIDQzLjFjLTIzLjggMC00My4yLTE5LjMtNDMuMi00My4xczE5LjQtNDMuMSA0My4yLTQzLjF6bS0yMTUuOSA4Ni4yYy0yMy44IDAtNDMuMi0xOS4zLTQzLjItNDMuMXMxOS4zLTQzLjEgNDMuMi00My4xIDQzLjIgMTkuMyA0My4yIDQzLjEtMTkuNCA0My4xLTQzLjIgNDMuMXptNTg2LjggNDE1LjZjNTYuOS00MS4yIDkzLjItMTAyIDkzLjItMTY5LjcgMC0xMjQtMTIwLjgtMjI0LjUtMjY5LjktMjI0LjUtMTQ5IDAtMjY5LjkgMTAwLjUtMjY5LjkgMjI0LjVTNTQwLjkgODQ3LjUgNjkwIDg0Ny41YzMwLjggMCA2MC42LTQuNCA4OC4xLTEyLjMgMi42LS44IDUuMi0xLjIgNy45LTEuMiA1LjIgMCA5LjkgMS42IDE0LjMgNC4xbDU5LjEgMzRjMS43IDEgMy4zIDEuNyA1LjIgMS43YTkgOSAwIDAgMCA2LjQtMi42IDkgOSAwIDAgMCAyLjYtNi40YzAtMi4yLS45LTQuNC0xLjQtNi42LS4zLTEuMi03LjYtMjguMy0xMi4yLTQ1LjMtLjUtMS45LS45LTMuOC0uOS01LjcuMS01LjkgMy4xLTExLjIgNy42LTE0LjV6TTYwMC4yIDU4Ny4yYy0xOS45IDAtMzYtMTYuMS0zNi0zNS45IDAtMTkuOCAxNi4xLTM1LjkgMzYtMzUuOXMzNiAxNi4xIDM2IDM1LjljMCAxOS44LTE2LjIgMzUuOS0zNiAzNS45em0xNzkuOSAwYy0xOS45IDAtMzYtMTYuMS0zNi0zNS45IDAtMTkuOCAxNi4xLTM1LjkgMzYtMzUuOXMzNiAxNi4xIDM2IDM1LjlhMzYuMDggMzYuMDggMCAwIDEtMzYgMzUuOXonKSk7XG5leHBvcnRzLldlaWJvQ2lyY2xlT3V0bGluZSA9IGdldEljb24oJ3dlaWJvLWNpcmNsZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptLTQ0LjQgNjcyQzM1My4xIDczNiAyMzYgNjgwLjQgMjM2IDU4OC45YzAtNDcuOCAzMC4yLTEwMy4xIDgyLjMtMTU1LjMgNjkuNS02OS42IDE1MC42LTEwMS40IDE4MS4xLTcwLjggMTMuNSAxMy41IDE0LjggMzYuOCA2LjEgNjQuNi00LjUgMTQgMTMuMSA2LjMgMTMuMSA2LjMgNTYuMi0yMy42IDEwNS4yLTI1IDEyMy4xLjcgOS42IDEzLjcgOC42IDMyLjgtLjIgNTUuMS00LjEgMTAuMiAxLjMgMTEuOCA5IDE0LjEgMzEuNyA5LjggNjYuOSAzMy42IDY2LjkgNzUuNS4yIDY5LjUtOTkuNyAxNTYuOS0yNDkuOCAxNTYuOXptMjA3LjMtMjkwLjhhMzQuOSAzNC45IDAgMCAwLTcuMi0zNC4xIDM0LjY4IDM0LjY4IDAgMCAwLTMzLjEtMTAuNyAxOC4yNCAxOC4yNCAwIDAgMS03LjYtMzUuN2MyNC4xLTUuMSA1MC4xIDIuMyA2Ny43IDIxLjkgMTcuNyAxOS42IDIyLjQgNDYuMyAxNC45IDY5LjhhMTguMTMgMTguMTMgMCAwIDEtMjIuOSAxMS43IDE4LjE4IDE4LjE4IDAgMCAxLTExLjgtMjIuOXptMTA2IDM0LjNzMCAuMSAwIDBhMjEuMSAyMS4xIDAgMCAxLTI2LjYgMTMuNyAyMS4xOSAyMS4xOSAwIDAgMS0xMy42LTI2LjdjMTEtMzQuMiA0LTczLjItMjEuNy0xMDEuOGExMDQuMDQgMTA0LjA0IDAgMCAwLTk4LjktMzIuMSAyMS4xNCAyMS4xNCAwIDAgMS0yNS4xLTE2LjMgMjEuMDcgMjEuMDcgMCAwIDEgMTYuMi0yNS4xYzQ5LjQtMTAuNSAxMDIuOCA0LjggMTM5LjEgNDUuMSAzNi4zIDQwLjIgNDYuMSA5NS4xIDMwLjYgMTQzLjJ6bS0zMzQuNSA2LjFjLTkxLjQgOS0xNjAuNyA2NS4xLTE1NC43IDEyNS4yIDUuOSA2MC4xIDg0LjggMTAxLjUgMTc2LjIgOTIuNSA5MS40LTkuMSAxNjAuNy02NS4xIDE1NC43LTEyNS4zLTUuOS02MC4xLTg0LjgtMTAxLjUtMTc2LjItOTIuNHptODAuMiAxNDEuN2MtMTguNyA0Mi4zLTcyLjMgNjQuOC0xMTcuOCA1MC4xLTQzLjktMTQuMi02Mi41LTU3LjctNDMuMy05Ni44IDE4LjktMzguNCA2OC02MC4xIDExMS41LTQ4LjggNDUgMTEuNyA2OCA1NC4yIDQ5LjYgOTUuNXptLTkzLTMyLjJjLTE0LjItNS45LTMyLjQuMi00MS4yIDEzLjktOC44IDEzLjgtNC43IDMwLjIgOS4zIDM2LjYgMTQuMyA2LjUgMzMuMi4zIDQyLTEzLjggOC44LTE0LjMgNC4yLTMwLjYtMTAuMS0zNi43em0zNC45LTE0LjVjLTUuNC0yLjItMTIuMi41LTE1LjQgNS44LTMuMSA1LjQtMS40IDExLjUgNC4xIDEzLjggNS41IDIuMyAxMi42LS4zIDE1LjgtNS44IDMtNS42IDEtMTEuOC00LjUtMTMuOHonKSk7XG5leHBvcnRzLldpbmRvd3NPdXRsaW5lID0gZ2V0SWNvbignd2luZG93cycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00xMjAuMSA3NzAuNkw0NDMgODIzLjJWNTQzLjhIMTIwLjF2MjI2Ljh6bTYzLjQtMTYzLjVoMTk2LjJ2MTQxLjZsLTE5Ni4yLTMxLjlWNjA3LjF6bTM0MC4zIDIyNi41bDM4MiA2Mi4ydi0zNTJoLTM4MnYyODkuOHptNjMuNC0yMjYuNWgyNTUuM3YyMTQuNGwtMjU1LjMtNDEuNlY2MDcuMXptLTYzLjQtNDE1Ljd2Mjg4LjhoMzgyVjEyOC4xbC0zODIgNjMuM3ptMzE4LjcgMjI1LjVINTg3LjNWMjQ1bDI1NS4zLTQyLjN2MjE0LjJ6bS03MjIuNCA2My4zSDQ0M1YyMDEuOWwtMzIyLjkgNTMuNXYyMjQuOHpNMTgzLjUgMzA5bDE5Ni4yLTMyLjV2MTQwLjRIMTgzLjVWMzA5eicpKTtcbmV4cG9ydHMuWWFob29PdXRsaW5lID0gZ2V0SWNvbigneWFob28nLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODU5LjkgNjgxLjRoLTE0LjFjLTI3LjEgMC00OS4yIDIyLjItNDkuMiA0OS4zdjE0LjFjMCAyNy4xIDIyLjIgNDkuMyA0OS4yIDQ5LjNoMTQuMWMyNy4xIDAgNDkuMi0yMi4yIDQ5LjItNDkuM3YtMTQuMWMwLTI3LjEtMjIuMi00OS4zLTQ5LjItNDkuM3pNNDAyLjYgMjMxQzIxNi4yIDIzMSA2NSAzNTcgNjUgNTEyLjVTMjE2LjIgNzk0IDQwMi42IDc5NHMzMzcuNi0xMjYgMzM3LjYtMjgxLjVTNTg5LjEgMjMxIDQwMi42IDIzMXptMCA1MDdDMjQ1LjEgNzM4IDEyMSA2MzQuNiAxMjEgNTEyLjVjMC02Mi4zIDMyLjMtMTE5LjcgODQuOS0xNjF2NDguNGgzN2wxNTkuOCAxNTkuOXY2NS4zaC04NC40djU2LjNoMjI1LjF2LTU2LjNINDU5di02NS4zbDEwMy41LTEwMy42aDY1LjN2LTU2LjNINDU5djY1LjNsLTI4LjEgMjguMS05My40LTkzLjVoMzd2LTU2LjNIMjE2LjRjNDkuNC0zNSAxMTQuMy01Ni42IDE4Ni4yLTU2LjYgMTU3LjYgMCAyODEuNiAxMDMuNCAyODEuNiAyMjUuNVM1NjAuMiA3MzggNDAyLjYgNzM4em01MzQuNy01MDdIODI0LjdjLTE1LjUgMC0yNy43IDEyLjYtMjcuMSAyOC4xbDEzLjEgMzY2aDg0LjRsNjUuNC0zNjYuNGMyLjctMTUuMi03LjgtMjcuNy0yMy4yLTI3Ljd6JykpO1xuZXhwb3J0cy5XZWlib1NxdWFyZU91dGxpbmUgPSBnZXRJY29uKCd3ZWliby1zcXVhcmUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNDMzLjYgNTk1LjFjLTE0LjItNS45LTMyLjQuMi00MS4yIDEzLjktOC44IDEzLjgtNC43IDMwLjIgOS4zIDM2LjYgMTQuMyA2LjUgMzMuMi4zIDQyLTEzLjggOC44LTE0LjMgNC4yLTMwLjYtMTAuMS0zNi43ek04ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTQ2Ny42IDczNkMzNTMuMSA3MzYgMjM2IDY4MC40IDIzNiA1ODguOWMwLTQ3LjggMzAuMi0xMDMuMSA4Mi4zLTE1NS4zIDY5LjUtNjkuNiAxNTAuNi0xMDEuNCAxODEuMS03MC44IDEzLjUgMTMuNSAxNC44IDM2LjggNi4xIDY0LjYtNC41IDE0IDEzLjEgNi4zIDEzLjEgNi4zIDU2LjItMjMuNiAxMDUuMi0yNSAxMjMuMS43IDkuNiAxMy43IDguNiAzMi44LS4yIDU1LjEtNC4xIDEwLjIgMS4zIDExLjggOSAxNC4xIDMxLjcgOS44IDY2LjkgMzMuNiA2Ni45IDc1LjUuMiA2OS41LTk5LjcgMTU2LjktMjQ5LjggMTU2Ljl6bTIwNy4zLTI5MC44YTM0LjkgMzQuOSAwIDAgMC03LjItMzQuMSAzNC42OCAzNC42OCAwIDAgMC0zMy4xLTEwLjcgMTguMjQgMTguMjQgMCAwIDEtNy42LTM1LjdjMjQuMS01LjEgNTAuMSAyLjMgNjcuNyAyMS45IDE3LjcgMTkuNiAyMi40IDQ2LjMgMTQuOSA2OS44YTE4LjEzIDE4LjEzIDAgMCAxLTIyLjkgMTEuNyAxOC4xOCAxOC4xOCAwIDAgMS0xMS44LTIyLjl6bTEwNiAzNC4zczAgLjEgMCAwYTIxLjEgMjEuMSAwIDAgMS0yNi42IDEzLjcgMjEuMTkgMjEuMTkgMCAwIDEtMTMuNi0yNi43YzExLTM0LjIgNC03My4yLTIxLjctMTAxLjhhMTA0LjA0IDEwNC4wNCAwIDAgMC05OC45LTMyLjEgMjEuMTQgMjEuMTQgMCAwIDEtMjUuMS0xNi4zIDIxLjA3IDIxLjA3IDAgMCAxIDE2LjItMjUuMWM0OS40LTEwLjUgMTAyLjggNC44IDEzOS4xIDQ1LjEgMzYuMyA0MC4yIDQ2LjEgOTUuMSAzMC42IDE0My4yem0tMzM0LjUgNi4xYy05MS40IDktMTYwLjcgNjUuMS0xNTQuNyAxMjUuMiA1LjkgNjAuMSA4NC44IDEwMS41IDE3Ni4yIDkyLjUgOTEuNC05LjEgMTYwLjctNjUuMSAxNTQuNy0xMjUuMy01LjktNjAuMS04NC44LTEwMS41LTE3Ni4yLTkyLjR6bTgwLjIgMTQxLjdjLTE4LjcgNDIuMy03Mi4zIDY0LjgtMTE3LjggNTAuMS00My45LTE0LjItNjIuNS01Ny43LTQzLjMtOTYuOCAxOC45LTM4LjQgNjgtNjAuMSAxMTEuNS00OC44IDQ1IDExLjcgNjggNTQuMiA0OS42IDk1LjV6bS01OC4xLTQ2LjdjLTUuNC0yLjItMTIuMi41LTE1LjQgNS44LTMuMSA1LjQtMS40IDExLjUgNC4xIDEzLjggNS41IDIuMyAxMi42LS4zIDE1LjgtNS44IDMtNS42IDEtMTEuOC00LjUtMTMuOHonKSk7XG5leHBvcnRzLll1cXVlT3V0bGluZSA9IGdldEljb24oJ3l1cXVlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1NC42IDM3MC42Yy05LjktMzkuNCA5LjktMTAyLjIgNzMuNC0xMjQuNGwtNjcuOS0zLjZzLTI1LjctOTAtMTQzLjYtOThjLTExNy44LTguMS0xOTQuOS0zLTE5NS0zIC4xIDAgODcuNCA1NS42IDUyLjQgMTU0LjctMjUuNiA1Mi41LTY1LjggOTUuNi0xMDguOCAxNDQuNy0xLjMgMS4zLTIuNSAyLjYtMy41IDMuN0MzMTkuNCA2MDUgOTYgODYwIDk2IDg2MGMyNDUuOSA2NC40IDQxMC43LTYuMyA1MDguMi05MS4xIDIwLjUtLjIgMzUuOS0uMyA0Ni4zLS4zIDEzNS44IDAgMjUwLjYtMTE3LjYgMjQ1LjktMjQ4LjQtMy4yLTg5LjktMzEuOS0xMTAuMi00MS44LTE0OS42em0tMjA0LjEgMzM0Yy0xMC42IDAtMjYuMi4xLTQ2LjguM2wtMjMuNi4yLTE3LjggMTUuNWMtNDcuMSA0MS0xMDQuNCA3MS41LTE3MS40IDg3LjYtNTIuNSAxMi42LTExMCAxNi4yLTE3Mi43IDkuNiAxOC0yMC41IDM2LjUtNDEuNiA1NS40LTYzLjEgOTItMTA0LjYgMTczLjgtMTk3LjUgMjM2LjktMjY4LjVsMS40LTEuNCAxLjMtMS41YzQuMS00LjYgMjAuNi0yMy4zIDI0LjctMjguMSA5LjctMTEuMSAxNy4zLTE5LjkgMjQuNS0yOC42IDMwLjctMzYuNyA1Mi4yLTY3LjggNjktMTAyLjJsMS42LTMuMyAxLjItMy40YzEzLjctMzguOCAxNS40LTc2LjkgNi4yLTExMi44IDIyLjUuNyA0Ni41IDEuOSA3MS43IDMuNiAzMy4zIDIuMyA1NS41IDEyLjkgNzEuMSAyOS4yIDUuOCA2IDEwLjIgMTIuNSAxMy40IDE4LjcgMSAyIDEuNyAzLjYgMi4zIDVsNSAxNy43Yy0xNS43IDM0LjUtMTkuOSA3My4zLTExLjQgMTA3LjIgMyAxMS44IDYuOSAyMi40IDEyLjMgMzQuNCAyLjEgNC43IDkuNSAyMC4xIDExIDIzLjMgMTAuMyAyMi43IDE1LjQgNDMgMTYuNyA3OC43IDMuMyA5NC42LTgyLjcgMTgxLjktMTgyIDE4MS45eicpKTtcbmV4cG9ydHMuWW91dHViZU91dGxpbmUgPSBnZXRJY29uKCd5b3V0dWJlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTk2MCA1MDkuMmMwLTIuMiAwLTQuNy0uMS03LjYtLjEtOC4xLS4zLTE3LjItLjUtMjYuOS0uOC0yNy45LTIuMi01NS43LTQuNC04MS45LTMtMzYuMS03LjQtNjYuMi0xMy40LTg4LjhhMTM5LjUyIDEzOS41MiAwIDAgMC05OC4zLTk4LjVjLTI4LjMtNy42LTgzLjctMTIuMy0xNjEuNy0xNS4yLTM3LjEtMS40LTc2LjgtMi4zLTExNi41LTIuOC0xMy45LS4yLTI2LjgtLjMtMzguNC0uNGgtMjkuNGMtMTEuNi4xLTI0LjUuMi0zOC40LjQtMzkuNy41LTc5LjQgMS40LTExNi41IDIuOC03OCAzLTEzMy41IDcuNy0xNjEuNyAxNS4yQTEzOS4zNSAxMzkuMzUgMCAwIDAgODIuNCAzMDRDNzYuMyAzMjYuNiA3MiAzNTYuNyA2OSAzOTIuOGMtMi4yIDI2LjItMy42IDU0LTQuNCA4MS45LS4zIDkuNy0uNCAxOC44LS41IDI2LjkgMCAyLjktLjEgNS40LS4xIDcuNnY1LjZjMCAyLjIgMCA0LjcuMSA3LjYuMSA4LjEuMyAxNy4yLjUgMjYuOS44IDI3LjkgMi4yIDU1LjcgNC40IDgxLjkgMyAzNi4xIDcuNCA2Ni4yIDEzLjQgODguOCAxMi44IDQ3LjkgNTAuNCA4NS43IDk4LjMgOTguNSAyOC4yIDcuNiA4My43IDEyLjMgMTYxLjcgMTUuMiAzNy4xIDEuNCA3Ni44IDIuMyAxMTYuNSAyLjggMTMuOS4yIDI2LjguMyAzOC40LjRoMjkuNGMxMS42LS4xIDI0LjUtLjIgMzguNC0uNCAzOS43LS41IDc5LjQtMS40IDExNi41LTIuOCA3OC0zIDEzMy41LTcuNyAxNjEuNy0xNS4yIDQ3LjktMTIuOCA4NS41LTUwLjUgOTguMy05OC41IDYuMS0yMi42IDEwLjQtNTIuNyAxMy40LTg4LjggMi4yLTI2LjIgMy42LTU0IDQuNC04MS45LjMtOS43LjQtMTguOC41LTI2LjkgMC0yLjkuMS01LjQuMS03LjZ2LTUuNnptLTcyIDUuMmMwIDIuMSAwIDQuNC0uMSA3LjEtLjEgNy44LS4zIDE2LjQtLjUgMjUuNy0uNyAyNi42LTIuMSA1My4yLTQuMiA3Ny45LTIuNyAzMi4yLTYuNSA1OC42LTExLjIgNzYuMy02LjIgMjMuMS0yNC40IDQxLjQtNDcuNCA0Ny41LTIxIDUuNi03My45IDEwLjEtMTQ1LjggMTIuOC0zNi40IDEuNC03NS42IDIuMy0xMTQuNyAyLjgtMTMuNy4yLTI2LjQuMy0zNy44LjNoLTI4LjZsLTM3LjgtLjNjLTM5LjEtLjUtNzguMi0xLjQtMTE0LjctMi44LTcxLjktMi44LTEyNC45LTcuMi0xNDUuOC0xMi44LTIzLTYuMi00MS4yLTI0LjQtNDcuNC00Ny41LTQuNy0xNy43LTguNS00NC4xLTExLjItNzYuMy0yLjEtMjQuNy0zLjQtNTEuMy00LjItNzcuOS0uMy05LjMtLjQtMTgtLjUtMjUuNyAwLTIuNy0uMS01LjEtLjEtNy4xdi00LjhjMC0yLjEgMC00LjQuMS03LjEuMS03LjguMy0xNi40LjUtMjUuNy43LTI2LjYgMi4xLTUzLjIgNC4yLTc3LjkgMi43LTMyLjIgNi41LTU4LjYgMTEuMi03Ni4zIDYuMi0yMy4xIDI0LjQtNDEuNCA0Ny40LTQ3LjUgMjEtNS42IDczLjktMTAuMSAxNDUuOC0xMi44IDM2LjQtMS40IDc1LjYtMi4zIDExNC43LTIuOCAxMy43LS4yIDI2LjQtLjMgMzcuOC0uM2gyOC42bDM3LjguM2MzOS4xLjUgNzguMiAxLjQgMTE0LjcgMi44IDcxLjkgMi44IDEyNC45IDcuMiAxNDUuOCAxMi44IDIzIDYuMiA0MS4yIDI0LjQgNDcuNCA0Ny41IDQuNyAxNy43IDguNSA0NC4xIDExLjIgNzYuMyAyLjEgMjQuNyAzLjQgNTEuMyA0LjIgNzcuOS4zIDkuMy40IDE4IC41IDI1LjcgMCAyLjcuMSA1LjEuMSA3LjF2NC44ek00MjMgNjQ2bDIzMi0xMzUtMjMyLTEzM3onKSk7XG5leHBvcnRzLkFsaWJhYmFPdXRsaW5lID0gZ2V0SWNvbignYWxpYmFiYScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ002MDIuOSA2NjkuOGMtMzcuMiAyLjYtMzMuNi0xNy4zLTExLjUtNDYuMiA1MC40LTY3LjIgMTQzLjctMTU4LjUgMTQ3LjktMjI1LjIgNS44LTg2LjYtODEuMy0xMTMuNC0xNzEtMTEzLjQtNjIuNCAxLjYtMTI3IDE4LjktMTcxIDM0LjYtMTUxLjYgNTMuNS0yNDYuNiAxMzcuNS0zMDYuOSAyMzItNjIuNCA5My40LTQzIDE4My4yIDkxLjggMTg1LjggMTAxLjgtNC4yIDE3MC41LTMyLjUgMjM5LjctNjguMi41IDAtMTkyLjUgNTUuMS0yNjMuOSAxNC43LTcuOS00LjItMTUuNy0xMC0xNy44LTI2LjIgMC0zMy4xIDU0LjYtNjcuNyA4Ni42LTc4Ljd2LTU2LjdjNjQuNSAyMi42IDE0MC42IDE2LjMgMjA1LjctMzIgMi4xIDUuOCA0LjIgMTMuMSAzLjcgMjFoMTFjMi42LTIyLjYtMTIuNi00NC42LTM3LjgtNDYuMiA3LjMgNS44IDEyLjYgMTAuNSAxNS4yIDE0LjdsLTEgMS0uNS41Yy04My45IDU4LjgtMTY1LjMgMzEuNS0xNzMuMSAyOS45bDQ2LjctNDUuNy0xMy4xLTMzLjFjOTIuOS0zMi41IDE2OS41LTU2LjIgMjk2LjktNzguN2wtMjguNS0yMyAxNC43LTguOWM3NS41IDIxIDEyNi40IDM2LjcgMTIzLjggNzYuNi0xIDYuOC0zLjcgMTQuNy03LjkgMjMuMUM2NjAuMSA0NjYuMSA1OTQgNTM4IDU2Ny4yIDU2OWMtMTcuMyAyMC41LTM0LjYgMzkuNC00Ni43IDU4LjMtMTMuNiAxOS40LTIwLjUgMzcuMy0yMSA1My41IDIuNiAxMzEuOCAzOTEuNC02MS45IDQ2OC0xMTIuOS0xMTEuNyA0Ny44LTIzMi45IDkzLjUtMzY0LjYgMTAxLjl6bTg1LTMwMi45YzIuOCA1LjIgNC4xIDExLjYgNC4xIDE5LjEtLjEtNi44LTEuNC0xMy4zLTQuMS0xOS4xeicpKTtcbmV4cG9ydHMuQWxpZ25DZW50ZXJPdXRsaW5lID0gZ2V0SWNvbignYWxpZ24tY2VudGVyJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTI2NCAyMzBoNDk2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04SDI2NGMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHptNDk2IDQyNGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOEgyNjRjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNDk2em0xNDQgMTQwSDEyMGMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg3ODRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAtNDI0SDEyMGMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg3ODRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5BbGlnbkxlZnRPdXRsaW5lID0gZ2V0SWNvbignYWxpZ24tbGVmdCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00xMjAgMjMwaDQ5NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOEgxMjBjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bTAgNDI0aDQ5NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOEgxMjBjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bTc4NCAxNDBIMTIwYy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDc4NGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMC00MjRIMTIwYy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDc4NGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHonKSk7XG5leHBvcnRzLkFsaWduUmlnaHRPdXRsaW5lID0gZ2V0SWNvbignYWxpZ24tcmlnaHQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTA0IDE1OEg0MDhjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNDk2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDQyNEg0MDhjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNDk2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDIxMkgxMjBjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNzg0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTQyNEgxMjBjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNzg0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04eicpKTtcbmV4cG9ydHMuQWxpcGF5T3V0bGluZSA9IGdldEljb24oJ2FsaXBheScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ003ODkgNjEwLjNjLTM4LjctMTIuOS05MC43LTMyLjctMTQ4LjUtNTMuNiAzNC44LTYwLjMgNjIuNS0xMjkgODAuNy0yMDMuNkg1MzAuNXYtNjguNmgyMzMuNnYtMzguM0g1MzAuNVYxMzJoLTk1LjRjLTE2LjcgMC0xNi43IDE2LjUtMTYuNyAxNi41djk3LjhIMTgyLjJ2MzguM2gyMzYuM3Y2OC42SDIyMy40djM4LjNoMzc4LjRhNjY3LjE4IDY2Ny4xOCAwIDAgMS01NC41IDEzMi45Yy0xMjIuOC00MC40LTI1My44LTczLjItMzM2LjEtNTMtNTIuNiAxMy04Ni41IDM2LjEtMTA2LjUgNjAuMy05MS40IDExMS0yNS45IDI3OS42IDE2Ny4yIDI3OS42QzM4NiA4MTEuMiA0OTYgNzQ3LjYgNTgxLjIgNjQzIDcwOC4zIDcwNCA5NjAgODA4LjcgOTYwIDgwOC43VjY1OS40cy0zMS42LTIuNS0xNzEtNDkuMXpNMjUzLjkgNzQ2LjZjLTE1MC41IDAtMTk1LTExOC4zLTEyMC42LTE4My4xIDI0LjgtMjEuOSA3MC4yLTMyLjYgOTQuNC0zNSA4OS40LTguOCAxNzIuMiAyNS4yIDI2OS45IDcyLjgtNjguOCA4OS41LTE1Ni4zIDE0NS4zLTI0My43IDE0NS4zeicpKTtcbmV4cG9ydHMuQWxpeXVuT3V0bGluZSA9IGdldEljb24oJ2FsaXl1bicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005NTkuMiAzODMuOWMtLjMtODIuMS02Ni45LTE0OC42LTE0OS4xLTE0OC42SDU3NS45bDIxLjYgODUuMiAyMDEgNDMuN2E0Mi41OCA0Mi41OCAwIDAgMSAzMi45IDM5LjdjLjEuNS4xIDIxNi4xIDAgMjE2LjZhNDIuNTggNDIuNTggMCAwIDEtMzIuOSAzOS43bC0yMDEgNDMuNy0yMS42IDg1LjNoMjM0LjJjODIuMSAwIDE0OC44LTY2LjUgMTQ5LjEtMTQ4LjZWMzgzLjl6TTIyNS41IDY2MC40YTQyLjU4IDQyLjU4IDAgMCAxLTMyLjktMzkuN2MtLjEtLjYtLjEtMjE2LjEgMC0yMTYuNi44LTE5LjQgMTQuNi0zNS41IDMyLjktMzkuN2wyMDEtNDMuNyAyMS42LTg1LjJIMjEzLjhjLTgyLjEgMC0xNDguOCA2Ni40LTE0OS4xIDE0OC42VjY0MWMuMyA4Mi4xIDY3IDE0OC42IDE0OS4xIDE0OC42SDQ0OGwtMjEuNi04NS4zLTIwMC45LTQzLjl6bTIwMC45LTE1OC44aDE3MXYyMS4zaC0xNzF6JykpO1xuZXhwb3J0cy5BbWF6b25PdXRsaW5lID0gZ2V0SWNvbignYW1hem9uJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTgyNSA3NjguOWMtMy4zLS45LTcuMy0uNC0xMS45IDEuMy02MS42IDI4LjItMTIxLjUgNDguMy0xNzkuNyA2MC4yQzUwNy43IDg1NiAzODUuMiA4NDIuNiAyNjYgNzkwLjNjLTMzLjEtMTQuNi03OS4xLTM5LjItMTM4LTc0YTkuMzYgOS4zNiAwIDAgMC01LjMtMmMtMi0uMS0zLjcuMS01LjMuOS0xLjYuOC0yLjggMS44LTMuNyAzLjEtLjkgMS4zLTEuMSAzLjEtLjQgNS40LjYgMi4yIDIuMSA0LjcgNC42IDcuNCAxMC40IDEyLjIgMjMuMyAyNS4yIDM4LjYgMzlzMzUuNiAyOS40IDYwLjkgNDYuOGMyNS4zIDE3LjQgNTEuOCAzMi45IDc5LjMgNDYuNCAyNy42IDEzLjUgNTkuNiAyNC45IDk2LjEgMzQuMXM3MyAxMy44IDEwOS40IDEzLjhjMzYuMiAwIDcxLjQtMy43IDEwNS41LTEwLjkgMzQuMi03LjMgNjMtMTUuOSA4Ni41LTI1LjkgMjMuNC05LjkgNDUtMjEgNjQuOC0zMyAxOS44LTEyIDM0LjQtMjIuMiA0My45LTMwLjMgOS41LTguMiAxNi4zLTE0LjYgMjAuMi0xOS40IDQuNi01LjcgNi45LTEwLjYgNi45LTE0LjkuMS00LjUtMS43LTcuMS01LTcuOXpNNTI3LjQgMzQ4LjFjLTE1LjIgMS4zLTMzLjUgNC4xLTU1IDguMy0yMS41IDQuMS00MS40IDkuMy01OS44IDE1LjRzLTM3LjIgMTQuNi01Ni4zIDI1LjRjLTE5LjIgMTAuOC0zNS41IDIzLjItNDkgMzdzLTI0LjUgMzEuMS0zMy4xIDUyYy04LjYgMjAuOC0xMi45IDQzLjctMTIuOSA2OC43IDAgMjcuMSA0LjcgNTEuMiAxNC4zIDcyLjUgOS41IDIxLjMgMjIuMiAzOCAzOC4yIDUwLjQgMTUuOSAxMi40IDM0IDIyLjEgNTQgMjkuMiAyMCA3LjEgNDEuMiAxMC4zIDYzLjIgOS40IDIyLS45IDQzLjUtNC4zIDY0LjQtMTAuMyAyMC44LTUuOSA0MC40LTE1LjQgNTguNi0yOC4zIDE4LjItMTIuOSAzMy4xLTI4LjIgNDQuOC00NS43IDQuMyA2LjYgOC4xIDExLjUgMTEuNSAxNC43bDguNyA4LjljNS44IDUuOSAxNC43IDE0LjYgMjYuNyAyNi4xIDExLjkgMTEuNSAyNC4xIDIyLjcgMzYuMyAzMy43bDEwNC40LTk5LjktNi00LjljLTQuMy0zLjMtOS40LTgtMTUuMi0xNC4zLTUuOC02LjItMTEuNi0xMy4xLTE3LjItMjAuNS01LjctNy40LTEwLjYtMTYuMS0xNC43LTI1LjktNC4xLTkuOC02LjItMTkuMy02LjItMjguNVYyNTguN2MwLTEwLjEtMS45LTIxLTUuNy0zMi44LTMuOS0xMS43LTEwLjctMjQuNS0yMC43LTM4LjMtMTAtMTMuOC0yMi40LTI2LjItMzcuMi0zNy0xNC45LTEwLjgtMzQuNy0yMC01OS42LTI3LjQtMjQuOC03LjQtNTIuNi0xMS4xLTgzLjItMTEuMS0zMS4zIDAtNjAuNCAzLjctODcuNiAxMC45LTI3LjEgNy4zLTUwLjMgMTctNjkuNyAyOS4yLTE5LjMgMTIuMi0zNS45IDI2LjMtNDkuNyA0Mi40LTEzLjggMTYuMS0yNC4xIDMyLjktMzAuOCA1MC40LTYuNyAxNy41LTEwLjEgMzUuMi0xMC4xIDUzLjFMNDA4IDMxMGM1LjUtMTYuNCAxMi45LTMwLjYgMjItNDIuOCA5LjItMTIuMiAxNy45LTIxIDI1LjgtMjYuNSA4LTUuNSAxNi42LTkuOSAyNS43LTEzLjIgOS4yLTMuMyAxNS40LTUgMTguNi01LjQgMy4yLS4zIDUuNy0uNCA3LjYtLjQgMjYuNyAwIDQ1LjIgNy45IDU1LjYgMjMuNiA2LjUgOS41IDkuNyAyMy45IDkuNyA0My4zdjU2LjZjLTE1LjIuNi0zMC40IDEuNi00NS42IDIuOXpNNTczLjEgNTAwYzAgMTYuNi0yLjIgMzEuNy02LjUgNDUtOS4yIDI5LjEtMjYuNyA0Ny40LTUyLjQgNTQuOC0yMi40IDYuNi00My43IDMuMy02My45LTkuOC0yMS41LTE0LTMyLjItMzMuOC0zMi4yLTU5LjMgMC0xOS45IDUtMzYuOSAxNS01MS4xIDEwLTE0LjEgMjMuMy0yNC43IDQwLTMxLjdzMzMtMTIgNDktMTQuOWMxNS45LTMgMzMtNC44IDUxLTUuNFY1MDB6bTMzNS4yIDIxOC45Yy00LjMtNS40LTE1LjktOC45LTM0LjktMTAuNy0xOS0xLjgtMzUuNS0xLjctNDkuNy40LTE1LjMgMS44LTMxLjEgNi4yLTQ3LjMgMTMuNC0xNi4zIDcuMS0yMy40IDEzLjEtMjEuNiAxNy44bC43IDEuMy45LjcgMS40LjJoNC42Yy44IDAgMS44LS4xIDMuMi0uMiAxLjQtLjEgMi43LS4zIDMuOS0uNCAxLjItLjEgMi45LS4zIDUuMS0uNCAyLjEtLjEgNC4xLS40IDYtLjcuMyAwIDMuNy0uMyAxMC4zLS45IDYuNi0uNiAxMS40LTEgMTQuMy0xLjMgMi45LS4zIDcuOC0uNiAxNC41LS45IDYuNy0uMyAxMi4xLS4zIDE2LjEgMCA0IC4zIDguNS43IDEzLjYgMS4xIDUuMS40IDkuMiAxLjMgMTIuNCAyLjcgMy4yIDEuMyA1LjYgMyA3LjEgNS4xIDUuMiA2LjYgNC4yIDIxLjItMyA0My45cy0xNCA0MC44LTIwLjQgNTQuMmMtMi44IDUuNy0yLjggOS4yIDAgMTAuN3M2LjcuMSAxMS45LTRjMTUuNi0xMi4yIDI4LjYtMzAuNiAzOS4xLTU1LjMgNi4xLTE0LjYgMTAuNS0yOS44IDEzLjEtNDUuNyAyLjQtMTUuOSAyLTI2LjItMS4zLTMxeicpKTtcbmV4cG9ydHMuQW50Q2xvdWRPdXRsaW5lID0gZ2V0SWNvbignYW50LWNsb3VkJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTM3OC45IDczOGMtMy4xIDAtNi4xLS41LTguOC0xLjVsNC40IDMwLjdoMjYuM2wtMTUuNS0yOS45Yy0yLjEuNS00LjIuNy02LjQuN3ptNDIxLTI5MS4yYy0xMi42IDAtMjQuOCAxLjUtMzYuNSA0LjItMjEuNC0zOC40LTYyLjMtNjQuMy0xMDkuMy02NC4zLTYuOSAwLTEzLjYuNi0yMC4yIDEuNi0zNS40LTc3LjQtMTEzLjQtMTMxLjEtMjAzLjktMTMxLjEtMTEyLjMgMC0yMDUuMyA4Mi42LTIyMS42IDE5MC40QzEyNy4zIDQ1NS41IDY0IDUyMy44IDY0IDYwN2MwIDg4LjQgNzEuNiAxNjAuMSAxNjAgMTYwLjJoNTBsMTMuMi0yNy42Yy0yNi4yLTguMy00My4zLTI5LTM5LjEtNDguOCA0LjYtMjEuNiAzMi44LTMzLjkgNjMuMS0yNy41IDIyLjkgNC45IDQwLjQgMTkuMSA0NS41IDM1LjFhMjYuMSAyNi4xIDAgMCAxIDIyLjEtMTIuNGguMmMtLjgtMy4yLTEuMi02LjUtMS4yLTkuOSAwLTIwLjEgMTQuOC0zNi43IDM0LjEtMzkuNnYtMjUuNGMwLTQuNCAzLjYtOCA4LThzOCAzLjYgOCA4djI2LjNjNC42IDEuMiA4LjggMy4yIDEyLjYgNS44bDE5LjUtMjEuNGMzLTMuMyA4LTMuNSAxMS4zLS41IDMuMyAzIDMuNSA4IC41IDExLjNsLTIwIDIyLS4yLjJhNDAgNDAgMCAwIDEtNDYuOSA1OS4yYy0uNCA1LjYtMi42IDEwLjctNiAxNC44bDIwIDM4LjRIODA0di0uMWM4Ni41LTIuMiAxNTYtNzMgMTU2LTE2MC4xIDAtODguNS03MS43LTE2MC4yLTE2MC4xLTE2MC4yek0zMzguMiA3MzcuMmwtNC4zIDMwaDI0LjRsLTUuOS00MS41Yy0zLjUgNC42LTguMyA4LjUtMTQuMiAxMS41ek03OTcuNSAzMDVhNDggNDggMCAxIDAgOTYgMCA0OCA0OCAwIDEgMC05NiAwem0tNjUuNyA2MS4zYTI0IDI0IDAgMSAwIDQ4IDAgMjQgMjQgMCAxIDAtNDggMHpNMzAzLjQgNzQyLjlsLTExLjYgMjQuM2gyNmwzLjUtMjQuN2MtNS43LjgtMTEuNyAxLTE3LjkuNHonKSk7XG5leHBvcnRzLkFwYXJ0bWVudE91dGxpbmUgPSBnZXRJY29uKCdhcGFydG1lbnQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTA4IDY0MEg4MDRWNDg4YzAtNC40LTMuNi04LTgtOEg1NDh2LTk2aDEwOGM4LjggMCAxNi03LjIgMTYtMTZWODBjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2djI4OGMwIDguOCA3LjIgMTYgMTYgMTZoMTA4djk2SDIyOGMtNC40IDAtOCAzLjYtOCA4djE1MkgxMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYyODhjMCA4LjggNy4yIDE2IDE2IDE2aDI4OGM4LjggMCAxNi03LjIgMTYtMTZWNjU2YzAtOC44LTcuMi0xNi0xNi0xNkgyOTJ2LTg4aDQ0MHY4OEg2MjBjLTguOCAwLTE2IDcuMi0xNiAxNnYyODhjMCA4LjggNy4yIDE2IDE2IDE2aDI4OGM4LjggMCAxNi03LjIgMTYtMTZWNjU2YzAtOC44LTcuMi0xNi0xNi0xNnptLTU2NCA3NnYxNjhIMTc2VjcxNmgxNjh6bTg0LTQwOFYxNDBoMTY4djE2OEg0Mjh6bTQyMCA1NzZINjgwVjcxNmgxNjh2MTY4eicpKTtcbmV4cG9ydHMuQW50RGVzaWduT3V0bGluZSA9IGdldEljb24oJ2FudC1kZXNpZ24nLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNzE2LjMgMzEzLjhjMTktMTguOSAxOS00OS43IDAtNjguNmwtNjkuOS02OS45LjEuMWMtMTguNS0xOC41LTUwLjMtNTAuMy05NS4zLTk1LjItMjEuMi0yMC43LTU1LjUtMjAuNS03Ni41LjVMODAuOSA0NzQuMmE1My44NCA1My44NCAwIDAgMCAwIDc2LjRMNDc0LjYgOTQ0YTU0LjE0IDU0LjE0IDAgMCAwIDc2LjUgMGwxNjUuMS0xNjVjMTktMTguOSAxOS00OS43IDAtNjguNmE0OC43IDQ4LjcgMCAwIDAtNjguNyAwbC0xMjUgMTI1LjJjLTUuMiA1LjItMTMuMyA1LjItMTguNSAwTDE4OS41IDUyMS40Yy01LjItNS4yLTUuMi0xMy4zIDAtMTguNWwzMTQuNC0zMTQuMmMuNC0uNC45LS43IDEuMy0xLjEgNS4yLTQuMSAxMi40LTMuNyAxNy4yIDEuMWwxMjUuMiAxMjUuMWMxOSAxOSA0OS44IDE5IDY4LjcgMHpNNDA4LjYgNTE0LjRhMTA2LjMgMTA2LjIgMCAxIDAgMjEyLjYgMCAxMDYuMyAxMDYuMiAwIDEgMC0yMTIuNiAwem01MzYuMi0zOC42TDgyMS45IDM1My41Yy0xOS0xOC45LTQ5LjgtMTguOS02OC43LjFhNDguNCA0OC40IDAgMCAwIDAgNjguNmw4MyA4Mi45YzUuMiA1LjIgNS4yIDEzLjMgMCAxOC41bC04MS44IDgxLjdhNDguNCA0OC40IDAgMCAwIDAgNjguNiA0OC43IDQ4LjcgMCAwIDAgNjguNyAwbDEyMS44LTEyMS43YTUzLjkzIDUzLjkzIDAgMCAwLS4xLTc2LjR6JykpO1xuZXhwb3J0cy5BcmVhQ2hhcnRPdXRsaW5lID0gZ2V0SWNvbignYXJlYS1jaGFydCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODggNzkySDIwMFYxNjhjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djY4OGMwIDQuNCAzLjYgOCA4IDhoNzUyYzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0tNjE2LTY0aDUzNmM0LjQgMCA4LTMuNiA4LThWMjg0YzAtNy4yLTguNy0xMC43LTEzLjctNS43TDU5MiA0ODguNmwtMTI1LjQtMTI0YTguMDMgOC4wMyAwIDAgMC0xMS4zIDBsLTE4OSAxODkuNmE3Ljg3IDcuODcgMCAwIDAtMi4zIDUuNlY3MjBjMCA0LjQgMy42IDggOCA4eicpKTtcbmV4cG9ydHMuQXJyb3dMZWZ0T3V0bGluZSA9IGdldEljb24oJ2Fycm93LWxlZnQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODcyIDQ3NEgyODYuOWwzNTAuMi0zMDRjNS42LTQuOSAyLjItMTQtNS4yLTE0aC04OC41Yy0zLjkgMC03LjYgMS40LTEwLjUgMy45TDE1NSA0ODcuOGEzMS45NiAzMS45NiAwIDAgMCAwIDQ4LjNMNTM1LjEgODY2YzEuNSAxLjMgMy4zIDIgNS4yIDJoOTEuNWM3LjQgMCAxMC44LTkuMiA1LjItMTRMMjg2LjkgNTUwSDg3MmM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOHonKSk7XG5leHBvcnRzLkFycm93RG93bk91dGxpbmUgPSBnZXRJY29uKCdhcnJvdy1kb3duJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg2MiA0NjUuM2gtODFjLTQuNiAwLTkgMi0xMi4xIDUuNUw1NTAgNzIzLjFWMTYwYzAtNC40LTMuNi04LTgtOGgtNjBjLTQuNCAwLTggMy42LTggOHY1NjMuMUwyNTUuMSA0NzAuOGMtMy0zLjUtNy40LTUuNS0xMi4xLTUuNWgtODFjLTYuOCAwLTEwLjUgOC4xLTYgMTMuMkw0ODcuOSA4NjFhMzEuOTYgMzEuOTYgMCAwIDAgNDguMyAwTDg2OCA0NzguNWM0LjUtNS4yLjgtMTMuMi02LTEzLjJ6JykpO1xuZXhwb3J0cy5BcnJvd1VwT3V0bGluZSA9IGdldEljb24oJ2Fycm93LXVwJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg2OCA1NDUuNUw1MzYuMSAxNjNhMzEuOTYgMzEuOTYgMCAwIDAtNDguMyAwTDE1NiA1NDUuNWE3Ljk3IDcuOTcgMCAwIDAgNiAxMy4yaDgxYzQuNiAwIDktMiAxMi4xLTUuNUw0NzQgMzAwLjlWODY0YzAgNC40IDMuNiA4IDggOGg2MGM0LjQgMCA4LTMuNiA4LThWMzAwLjlsMjE4LjkgMjUyLjNjMyAzLjUgNy40IDUuNSAxMi4xIDUuNWg4MWM2LjggMCAxMC41LTggNi0xMy4yeicpKTtcbmV4cG9ydHMuQXJyb3dzQWx0T3V0bGluZSA9IGdldEljb24oJ2Fycm93cy1hbHQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODU1IDE2MC4xbC0xODkuMiAyMy41Yy02LjYuOC05LjMgOC44LTQuNyAxMy41bDU0LjcgNTQuNy0xNTMuNSAxNTMuNWE4LjAzIDguMDMgMCAwIDAgMCAxMS4zbDQ1LjEgNDUuMWMzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDE1My42LTE1My42IDU0LjcgNTQuN2E3Ljk0IDcuOTQgMCAwIDAgMTMuNS00LjdMODYzLjkgMTY5YTcuOSA3LjkgMCAwIDAtOC45LTguOXpNNDE2LjYgNTYyLjNhOC4wMyA4LjAzIDAgMCAwLTExLjMgMEwyNTEuOCA3MTUuOWwtNTQuNy01NC43YTcuOTQgNy45NCAwIDAgMC0xMy41IDQuN0wxNjAuMSA4NTVjLS42IDUuMiAzLjcgOS41IDguOSA4LjlsMTg5LjItMjMuNWM2LjYtLjggOS4zLTguOCA0LjctMTMuNWwtNTQuNy01NC43IDE1My42LTE1My42YzMuMS0zLjEgMy4xLTguMiAwLTExLjNsLTQ1LjItNDV6JykpO1xuZXhwb3J0cy5BcnJvd1JpZ2h0T3V0bGluZSA9IGdldEljb24oJ2Fycm93LXJpZ2h0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg2OSA0ODcuOEw0OTEuMiAxNTkuOWMtMi45LTIuNS02LjYtMy45LTEwLjUtMy45aC04OC41Yy03LjQgMC0xMC44IDkuMi01LjIgMTRsMzUwLjIgMzA0SDE1MmMtNC40IDAtOCAzLjYtOCA4djYwYzAgNC40IDMuNiA4IDggOGg1ODUuMUwzODYuOSA4NTRjLTUuNiA0LjktMi4yIDE0IDUuMiAxNGg5MS41YzEuOSAwIDMuOC0uNyA1LjItMkw4NjkgNTM2LjJhMzIuMDcgMzIuMDcgMCAwIDAgMC00OC40eicpKTtcbmV4cG9ydHMuQXVkaXRPdXRsaW5lID0gZ2V0SWNvbignYXVkaXQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMjk2IDI1MGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgzODRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LThIMjk2em0xODQgMTQ0SDI5NmMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgxODRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LTh6bS00OCA0NThIMjA4VjE0OGg1NjB2MzIwYzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LThWMTA4YzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2Nzg0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDI2NGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptNDQwLTg4SDcyOHYtMzYuNmM0Ni4zLTEzLjggODAtNTYuNiA4MC0xMDcuNCAwLTYxLjktNTAuMS0xMTItMTEyLTExMnMtMTEyIDUwLjEtMTEyIDExMmMwIDUwLjcgMzMuNyA5My42IDgwIDEwNy40Vjc2NEg1MjBjLTguOCAwLTE2IDcuMi0xNiAxNnYxNTJjMCA4LjggNy4yIDE2IDE2IDE2aDM1MmM4LjggMCAxNi03LjIgMTYtMTZWNzgwYzAtOC44LTcuMi0xNi0xNi0xNnpNNjQ2IDYyMGMwLTI3LjYgMjIuNC01MCA1MC01MHM1MCAyMi40IDUwIDUwLTIyLjQgNTAtNTAgNTAtNTAtMjIuNC01MC01MHptMTgwIDI2Nkg1NjZ2LTYwaDI2MHY2MHonKSk7XG5leHBvcnRzLkJhckNoYXJ0T3V0bGluZSA9IGdldEljb24oJ2Jhci1jaGFydCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODggNzkySDIwMFYxNjhjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djY4OGMwIDQuNCAzLjYgOCA4IDhoNzUyYzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0tNjAwLTgwaDU2YzQuNCAwIDgtMy42IDgtOFY1NjBjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djE0NGMwIDQuNCAzLjYgOCA4IDh6bTE1MiAwaDU2YzQuNCAwIDgtMy42IDgtOFYzODRjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djMyMGMwIDQuNCAzLjYgOCA4IDh6bTE1MiAwaDU2YzQuNCAwIDgtMy42IDgtOFY0NjJjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djI0MmMwIDQuNCAzLjYgOCA4IDh6bTE1MiAwaDU2YzQuNCAwIDgtMy42IDgtOFYzMDRjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djQwMGMwIDQuNCAzLjYgOCA4IDh6JykpO1xuZXhwb3J0cy5CYXJjb2RlT3V0bGluZSA9IGdldEljb24oJ2JhcmNvZGUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMTIwIDE2MEg3MmMtNC40IDAtOCAzLjYtOCA4djY4OGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjE2OGMwLTQuNC0zLjYtOC04LTh6bTgzMyAwaC00OGMtNC40IDAtOCAzLjYtOCA4djY4OGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjE2OGMwLTQuNC0zLjYtOC04LTh6TTIwMCA3MzZoMTEyYzQuNCAwIDgtMy42IDgtOFYxNjhjMC00LjQtMy42LTgtOC04SDIwMGMtNC40IDAtOCAzLjYtOCA4djU2MGMwIDQuNCAzLjYgOCA4IDh6bTMyMSAwaDQ4YzQuNCAwIDgtMy42IDgtOFYxNjhjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djU2MGMwIDQuNCAzLjYgOCA4IDh6bTEyNiAwaDE3OGM0LjQgMCA4LTMuNiA4LThWMTY4YzAtNC40LTMuNi04LTgtOEg2NDdjLTQuNCAwLTggMy42LTggOHY1NjBjMCA0LjQgMy42IDggOCA4em0tMjU1IDBoNDhjNC40IDAgOC0zLjYgOC04VjE2OGMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2NTYwYzAgNC40IDMuNiA4IDggOHptLTc5IDY0SDIwMWMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgxMTJjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LTh6bTI1NyAwaC00OGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptMjU2IDBINjQ4Yy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDE3OGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptLTM4NSAwaC00OGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHonKSk7XG5leHBvcnRzLkJhcnNPdXRsaW5lID0gZ2V0SWNvbignYmFycycsIG91dGxpbmUsIGdldE5vZGUobm9ybWFsVmlld0JveCwgJ005MTIgMTkySDMyOGMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1ODRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAgMjg0SDMyOGMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1ODRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAgMjg0SDMyOGMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1ODRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTEwNCAyMjhhNTYgNTYgMCAxIDAgMTEyIDAgNTYgNTYgMCAxIDAtMTEyIDB6bTAgMjg0YTU2IDU2IDAgMSAwIDExMiAwIDU2IDU2IDAgMSAwLTExMiAwem0wIDI4NGE1NiA1NiAwIDEgMCAxMTIgMCA1NiA1NiAwIDEgMC0xMTIgMHonKSk7XG5leHBvcnRzLkJnQ29sb3JzT3V0bGluZSA9IGdldEljb24oJ2JnLWNvbG9ycycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ003NjYuNCA3NDQuM2M0My43IDAgNzkuNC0zNi4yIDc5LjQtODAuNSAwLTUzLjUtNzkuNC0xNDAuOC03OS40LTE0MC44UzY4NyA2MTAuMyA2ODcgNjYzLjhjMCA0NC4zIDM1LjcgODAuNSA3OS40IDgwLjV6bS0zNzcuMS00NC4xYzcuMSA3LjEgMTguNiA3LjEgMjUuNiAwbDI1Ni4xLTI1NmM3LjEtNy4xIDcuMS0xOC42IDAtMjUuNmwtMjU2LTI1NmMtLjYtLjYtMS4zLTEuMi0yLTEuN2wtNzguMi03OC4yYTkuMTEgOS4xMSAwIDAgMC0xMi44IDBsLTQ4IDQ4YTkuMTEgOS4xMSAwIDAgMCAwIDEyLjhsNjcuMiA2Ny4yLTIwNy44IDIwNy45Yy03LjEgNy4xLTcuMSAxOC42IDAgMjUuNmwyNTUuOSAyNTZ6bTEyLjktNDQ4LjZsMTc4LjkgMTc4LjlIMjIzLjRsMTc4LjgtMTc4Ljl6TTkwNCA4MTZIMTIwYy00LjQgMC04IDMuNi04IDh2ODBjMCA0LjQgMy42IDggOCA4aDc4NGM0LjQgMCA4LTMuNiA4LTh2LTgwYzAtNC40LTMuNi04LTgtOHonKSk7XG5leHBvcnRzLkJlaGFuY2VPdXRsaW5lID0gZ2V0SWNvbignYmVoYW5jZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ002MzQgMjk0LjNoMTk5LjV2NDguNEg2MzR6TTQzNC4xIDQ4NS44YzQ0LjEtMjEuMSA2Ny4yLTUzLjIgNjcuMi0xMDIuOCAwLTk4LjEtNzMtMTIxLjktMTU3LjMtMTIxLjlIMTEydjQ5Mi40aDIzOC41Yzg5LjQgMCAxNzMuMy00MyAxNzMuMy0xNDMgMC02MS44LTI5LjItMTA3LjUtODkuNy0xMjQuN3pNMjIwLjIgMzQ1LjFoMTAxLjVjMzkuMSAwIDc0LjIgMTAuOSA3NC4yIDU2LjMgMCA0MS44LTI3LjMgNTguNi02NiA1OC42SDIyMC4yVjM0NS4xem0xMTUuNSAzMjQuOEgyMjAuMVY1MzQuM0gzMzhjNDcuNiAwIDc3LjcgMTkuOSA3Ny43IDcwLjMgMCA0OS42LTM1LjkgNjUuMy04MCA2NS4zem01NzUuOC04OS41YzAtMTA1LjUtNjEuNy0xOTMuNC0xNzMuMy0xOTMuNC0xMDguNSAwLTE4Mi4zIDgxLjctMTgyLjMgMTg4LjggMCAxMTEgNjkuOSAxODcuMiAxODIuMyAxODcuMiA4NS4xIDAgMTQwLjItMzguMyAxNjYuNy0xMjBoLTg2LjNjLTkuNCAzMC41LTQ3LjYgNDYuNS03Ny4zIDQ2LjUtNTcuNCAwLTg3LjQtMzMuNi04Ny40LTkwLjdoMjU2LjljLjMtNS45LjctMTIuMS43LTE4LjR6TTY1My45IDUzN2MzLjEtNDYuOSAzNC40LTc2LjIgODEuMi03Ni4yIDQ5LjIgMCA3My44IDI4LjkgNzguMSA3Ni4ySDY1My45eicpKTtcbmV4cG9ydHMuQmxvY2tPdXRsaW5lID0gZ2V0SWNvbignYmxvY2snLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODU2IDM3Nkg2NDhWMTY4YzAtOC44LTcuMi0xNi0xNi0xNkgxNjhjLTguOCAwLTE2IDcuMi0xNiAxNnY0NjRjMCA4LjggNy4yIDE2IDE2IDE2aDIwOHYyMDhjMCA4LjggNy4yIDE2IDE2IDE2aDQ2NGM4LjggMCAxNi03LjIgMTYtMTZWMzkyYzAtOC44LTcuMi0xNi0xNi0xNnptLTQ4MCAxNnYxODhIMjIwVjIyMGgzNjB2MTU2SDM5MmMtOC44IDAtMTYgNy4yLTE2IDE2em0yMDQgNTJ2MTM2SDQ0NFY0NDRoMTM2em0yMjQgMzYwSDQ0NFY2NDhoMTg4YzguOCAwIDE2LTcuMiAxNi0xNlY0NDRoMTU2djM2MHonKSk7XG5leHBvcnRzLkJvbGRPdXRsaW5lID0gZ2V0SWNvbignYm9sZCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ002OTcuOCA0ODEuNGMzMy42LTM1IDU0LjItODIuMyA1NC4yLTEzNC4zdi0xMC4yQzc1MiAyMjkuMyA2NjMuOSAxNDIgNTU1LjMgMTQySDI1OS40Yy0xNS4xIDAtMjcuNCAxMi4zLTI3LjQgMjcuNHY2NzkuMWMwIDE2LjMgMTMuMiAyOS41IDI5LjUgMjkuNWgzMTguN2MxMTcgMCAyMTEuOC05NC4yIDIxMS44LTIxMC41di0xMWMwLTczLTM3LjQtMTM3LjMtOTQuMi0xNzUuMXpNMzI4IDIzOGgyMjQuN2M1Ny4xIDAgMTAzLjMgNDQuNCAxMDMuMyA5OS4zdjkuNWMwIDU0LjgtNDYuMyA5OS4zLTEwMy4zIDk5LjNIMzI4VjIzOHptMzY2LjYgNDI5LjRjMCA2Mi45LTUxLjcgMTEzLjktMTE1LjUgMTEzLjlIMzI4VjU0Mi43aDI1MS4xYzYzLjggMCAxMTUuNSA1MSAxMTUuNSAxMTMuOXYxMC44eicpKTtcbmV4cG9ydHMuQm9yZGVyQm90dG9tT3V0bGluZSA9IGdldEljb24oJ2JvcmRlci1ib3R0b20nLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODcyIDgwOEgxNTJjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNzIwYzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0tNzIwLTk0aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHptMC00OThoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4em0wIDMzMmg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bTAtMTY2aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHptMTY2IDE2Nmg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bTAtMzMyaDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHptMzMyIDBoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4em0wIDMzMmg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bTIyMi03MmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bS0zODggNzJoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4em0zODgtNDA0aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptLTM4OCA3Mmg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bTM4OCA0MjZoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0tMzg4IDcyaDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHptMzg4LTQwNGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bS0zODggNzJoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4eicpKTtcbmV4cG9ydHMuQm9yZGVyTGVmdE91dGxpbmUgPSBnZXRJY29uKCdib3JkZXItbGVmdCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00yMDggMTQ0aC01NmMtNC40IDAtOCAzLjYtOCA4djcyMGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04VjE1MmMwLTQuNC0zLjYtOC04LTh6bTE2NiAwaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptNDk4IDBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0tMzMyIDBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0xNjYgMGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTU0MCAzMTBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0zMzIgMGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAgMzMyaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptLTMzMiAwaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMCAxNjZoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTMzMmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTMzMiAzMzJoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTMzMmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTM3NCA4MDhoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTMzMmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTMzMiAzMzJoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTMzMmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5Cb3JkZXJPdXRlck91dGxpbmUgPSBnZXRJY29uKCdib3JkZXItb3V0ZXInLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNzI4SDE4NFYxODRoNjU2djY1NnpNNDg0IDM2Nmg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6TTMwMiA1NDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4em0zNjQgMGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bS0xODIgMGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bTAgMTgyaDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHonKSk7XG5leHBvcnRzLkJvcmRlcklubmVyT3V0bGluZSA9IGdldEljb24oJ2JvcmRlci1pbm5lcicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NzIgNDc2SDU0OFYxNDRoLTcydjMzMkgxNTJjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoMzI0djMzMmg3MlY1NDhoMzI0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTE2NmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAgNDk4aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMC02NjRoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDQ5OGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTY1MCAyMTZoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4em01NiA1OTJoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0tMzMyIDBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0tNTYtNTkyaDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHptLTE2NiAwaDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHptNTYgNTkyaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptLTU2LTQyNmg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bTU2IDI2MGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5Cb3JkZXJSaWdodE91dGxpbmUgPSBnZXRJY29uKCdib3JkZXItcmlnaHQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODcyIDE0NGgtNTZjLTQuNCAwLTggMy42LTggOHY3MjBjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOFYxNTJjMC00LjQtMy42LTgtOC04em0tMTY2IDBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0tNDk4IDBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0zMzIgMGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bS0xNjYgMGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTE2NiAxNjZoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0tMzMyIDBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDMzMmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTMzMiAwaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMCAxNjZoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTMzMmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTIwOCA4MDhoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTMzMmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTQ5OCAzMzJoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTMzMmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTM3NCA4MDhoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTMzMmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5Cb3JkZXJIb3Jpem9udGFsT3V0bGluZSA9IGdldEljb24oJ2JvcmRlci1ob3Jpem9udGFsJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTU0MCAxNDRoLTU2Yy00LjQgMC04IDMuNi04IDh2NzIwYzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LThWMTUyYzAtNC40LTMuNi04LTgtOHptLTE2NiAwaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptNDk4IDBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0tNjY0IDBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em00OTggMGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTIwOCAzMTBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em02NjQgMGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAgMzMyaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptLTY2NCAwaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMCAxNjZoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTMzMmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTY2NCAzMzJoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTMzMmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTM3NCA4MDhoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTMzMmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTMzMiAzMzJoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTMzMmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5Cb3JkZXJUb3BPdXRsaW5lID0gZ2V0SWNvbignYm9yZGVyLXRvcCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NzIgMTQ0SDE1MmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg3MjBjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTIwOCAzMTBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDQ5OGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAtMzMyaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMCAxNjZoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0xNjYtMTY2aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMCAzMzJoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0zMzIgMGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAtMzMyaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMTY2IDBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0tMzMyIDBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0zMzIgMzMyaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptLTMzMiAwaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMzMyLTQ5OGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bS0zMzIgMGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTMzMiAzMzJoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0tMzMyIDBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04eicpKTtcbmV4cG9ydHMuQm9yZGVyVmVydGljbGVPdXRsaW5lID0gZ2V0SWNvbignYm9yZGVyLXZlcnRpY2xlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg3MiA0NzZIMTUyYy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDcyMGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMC0xNjZoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDQ5OGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAtNjY0aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMCA0OThoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04ek02NTAgMjE2aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHptNTYgNTkyaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptLTMzMiAwaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptLTU2LTU5Mmg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bS0xNjYgMGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bTMzMiAwaDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHpNMjA4IDgwOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTMzMiAwaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHpNMTUyIDM4Mmg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bTMzMiAwaDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHpNMjA4IDY0MmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTMzMiAwaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHonKSk7XG5leHBvcnRzLkJvcmRlck91dGxpbmUgPSBnZXRJY29uKCdib3JkZXInLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNzI4SDE4NFYxODRoNjU2djY1NnonKSk7XG5leHBvcnRzLkJyYW5jaGVzT3V0bGluZSA9IGdldEljb24oJ2JyYW5jaGVzJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTc0MCAxNjFjLTYxLjggMC0xMTIgNTAuMi0xMTIgMTEyIDAgNTAuMSAzMy4xIDkyLjYgNzguNSAxMDYuOXY5NS45TDMyMCA2MDIuNFYzMTguMWM0NC4yLTE1IDc2LTU2LjkgNzYtMTA2LjEgMC02MS44LTUwLjItMTEyLTExMi0xMTJzLTExMiA1MC4yLTExMiAxMTJjMCA0OS4yIDMxLjggOTEgNzYgMTA2LjFWNzA2Yy00NC4yIDE1LTc2IDU2LjktNzYgMTA2LjEgMCA2MS44IDUwLjIgMTEyIDExMiAxMTJzMTEyLTUwLjIgMTEyLTExMmMwLTQ5LjItMzEuOC05MS03Ni0xMDYuMXYtMjcuOGw0MjMuNS0xMzguN2E1MC41MiA1MC41MiAwIDAgMCAzNC45LTQ4LjJWMzc4LjJjNDIuOS0xNS44IDczLjYtNTcgNzMuNi0xMDUuMiAwLTYxLjgtNTAuMi0xMTItMTEyLTExMnptLTUwNCA1MWE0OC4wMSA0OC4wMSAwIDAgMSA5NiAwIDQ4LjAxIDQ4LjAxIDAgMCAxLTk2IDB6bTk2IDYwMGE0OC4wMSA0OC4wMSAwIDAgMS05NiAwIDQ4LjAxIDQ4LjAxIDAgMCAxIDk2IDB6bTQwOC00OTFhNDguMDEgNDguMDEgMCAwIDEgMC05NiA0OC4wMSA0OC4wMSAwIDAgMSAwIDk2eicpKTtcbmV4cG9ydHMuQ2hlY2tPdXRsaW5lID0gZ2V0SWNvbignY2hlY2snLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTEyIDE5MGgtNjkuOWMtOS44IDAtMTkuMSA0LjUtMjUuMSAxMi4yTDQwNC43IDcyNC41IDIwNyA0NzRhMzIgMzIgMCAwIDAtMjUuMS0xMi4ySDExMmMtNi43IDAtMTAuNCA3LjctNi4zIDEyLjlsMjczLjkgMzQ3YzEyLjggMTYuMiAzNy40IDE2LjIgNTAuMyAwbDQ4OC40LTYxOC45YzQuMS01LjEuNC0xMi44LTYuMy0xMi44eicpKTtcbmV4cG9ydHMuQ2lPdXRsaW5lID0gZ2V0SWNvbignY2knLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyem0yMTgtNTcyLjFoLTUwLjRjLTQuNCAwLTggMy42LTggOHYzODQuMmMwIDQuNCAzLjYgOCA4IDhINzMwYzQuNCAwIDgtMy42IDgtOFYzMTkuOWMwLTQuNC0zLjYtOC04LTh6bS0yODEuNCA0OS42YzQ5LjUgMCA4My4xIDMxLjUgODcgNzcuNi40IDQuMiAzLjggNy40IDggNy40aDUyLjZjMi40IDAgNC40LTIgNC40LTQuNCAwLTgxLjItNjQtMTM4LjEtMTUyLjMtMTM4LjFDMzQ1LjQgMzA0IDI4NiAzNzMuNSAyODYgNDg4LjR2NDljMCAxMTQgNTkuNCAxODIuNiAxNjIuMyAxODIuNiA4OCAwIDE1Mi4zLTU1LjEgMTUyLjMtMTMyLjUgMC0yLjQtMi00LjQtNC40LTQuNGgtNTIuN2MtNC4yIDAtNy42IDMuMi04IDcuMy00LjIgNDMtMzcuNyA3Mi40LTg3IDcyLjQtNjEuMSAwLTk1LjYtNDQuOS05NS42LTEyNS4ydi00OS4zYy4xLTgxLjQgMzQuNi0xMjYuOCA5NS43LTEyNi44eicpKTtcbmV4cG9ydHMuQ2xvc2VPdXRsaW5lID0gZ2V0SWNvbignY2xvc2UnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTYzLjggNTEybDI2Mi41LTMxMi45YzQuNC01LjIuNy0xMy4xLTYuMS0xMy4xaC03OS44Yy00LjcgMC05LjIgMi4xLTEyLjMgNS43TDUxMS42IDQ0OS44IDI5NS4xIDE5MS43Yy0zLTMuNi03LjUtNS43LTEyLjMtNS43SDIwM2MtNi44IDAtMTAuNSA3LjktNi4xIDEzLjFMNDU5LjQgNTEyIDE5Ni45IDgyNC45QTcuOTUgNy45NSAwIDAgMCAyMDMgODM4aDc5LjhjNC43IDAgOS4yLTIuMSAxMi4zLTUuN2wyMTYuNS0yNTguMSAyMTYuNSAyNTguMWMzIDMuNiA3LjUgNS43IDEyLjMgNS43aDc5LjhjNi44IDAgMTAuNS03LjkgNi4xLTEzLjFMNTYzLjggNTEyeicpKTtcbmV4cG9ydHMuQ2xvdWREb3dubG9hZE91dGxpbmUgPSBnZXRJY29uKCdjbG91ZC1kb3dubG9hZCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ002MjQgNzA2LjNoLTc0LjFWNDY0YzAtNC40LTMuNi04LTgtOGgtNjBjLTQuNCAwLTggMy42LTggOHYyNDIuM0g0MDBjLTYuNyAwLTEwLjQgNy43LTYuMyAxMi45bDExMiAxNDEuN2E4IDggMCAwIDAgMTIuNiAwbDExMi0xNDEuN2M0LjEtNS4yLjQtMTIuOS02LjMtMTIuOXonLCAnTTgxMS40IDM2Ni43Qzc2NS42IDI0NS45IDY0OC45IDE2MCA1MTIuMiAxNjBTMjU4LjggMjQ1LjggMjEzIDM2Ni42QzEyNy4zIDM4OS4xIDY0IDQ2Ny4yIDY0IDU2MGMwIDExMC41IDg5LjUgMjAwIDE5OS45IDIwMEgzMDRjNC40IDAgOC0zLjYgOC04di02MGMwLTQuNC0zLjYtOC04LThoLTQwLjFjLTMzLjcgMC02NS40LTEzLjQtODktMzcuNy0yMy41LTI0LjItMzYtNTYuOC0zNC45LTkwLjYuOS0yNi40IDkuOS01MS4yIDI2LjItNzIuMSAxNi43LTIxLjMgNDAuMS0zNi44IDY2LjEtNDMuN2wzNy45LTkuOSAxMy45LTM2LjZjOC42LTIyLjggMjAuNi00NC4xIDM1LjctNjMuNGEyNDUuNiAyNDUuNiAwIDAgMSA1Mi40LTQ5LjljNDEuMS0yOC45IDg5LjUtNDQuMiAxNDAtNDQuMnM5OC45IDE1LjMgMTQwIDQ0LjJjMTkuOSAxNCAzNy41IDMwLjggNTIuNCA0OS45IDE1LjEgMTkuMyAyNy4xIDQwLjcgMzUuNyA2My40bDEzLjggMzYuNSAzNy44IDEwQzg0Ni4xIDQ1NC41IDg4NCA1MDMuOCA4ODQgNTYwYzAgMzMuMS0xMi45IDY0LjMtMzYuMyA4Ny43YTEyMy4wNyAxMjMuMDcgMCAwIDEtODcuNiAzNi4zSDcyMGMtNC40IDAtOCAzLjYtOCA4djYwYzAgNC40IDMuNiA4IDggOGg0MC4xQzg3MC41IDc2MCA5NjAgNjcwLjUgOTYwIDU2MGMwLTkyLjctNjMuMS0xNzAuNy0xNDguNi0xOTMuM3onKSk7XG5leHBvcnRzLkNsb3VkU2VydmVyT3V0bGluZSA9IGdldEljb24oJ2Nsb3VkLXNlcnZlcicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ003MDQgNDQ2SDMyMGMtNC40IDAtOCAzLjYtOCA4djQwMmMwIDQuNCAzLjYgOCA4IDhoMzg0YzQuNCAwIDgtMy42IDgtOFY0NTRjMC00LjQtMy42LTgtOC04em0tMzI4IDY0aDI3MnYxMTdIMzc2VjUxMHptMjcyIDI5MEgzNzZWNjgzaDI3MnYxMTd6JywgJ000MjQgNzQ4YTMyIDMyIDAgMSAwIDY0IDAgMzIgMzIgMCAxIDAtNjQgMHptMC0xNzhhMzIgMzIgMCAxIDAgNjQgMCAzMiAzMiAwIDEgMC02NCAweicsICdNODExLjQgMzY4LjlDNzY1LjYgMjQ4IDY0OC45IDE2MiA1MTIuMiAxNjJTMjU4LjggMjQ3LjkgMjEzIDM2OC44QzEyNi45IDM5MS41IDYzLjUgNDcwLjIgNjQgNTYzLjYgNjQuNiA2NjggMTQ1LjYgNzUyLjkgMjQ3LjYgNzYyYzQuNy40IDguNy0zLjMgOC43LTh2LTYwLjRjMC00LTMtNy40LTctNy45LTI3LTMuNC01Mi41LTE1LjItNzIuMS0zNC41LTI0LTIzLjUtMzcuMi01NS4xLTM3LjItODguNiAwLTI4IDkuMS01NC40IDI2LjItNzYuNCAxNi43LTIxLjQgNDAuMi0zNi45IDY2LjEtNDMuN2wzNy45LTEwIDEzLjktMzYuN2M4LjYtMjIuOCAyMC42LTQ0LjIgMzUuNy02My41IDE0LjktMTkuMiAzMi42LTM2IDUyLjQtNTAgNDEuMS0yOC45IDg5LjUtNDQuMiAxNDAtNDQuMnM5OC45IDE1LjMgMTQwIDQ0LjNjMTkuOSAxNCAzNy41IDMwLjggNTIuNCA1MCAxNS4xIDE5LjMgMjcuMSA0MC43IDM1LjcgNjMuNWwxMy44IDM2LjYgMzcuOCAxMGM1NC4yIDE0LjQgOTIuMSA2My43IDkyLjEgMTIwIDAgMzMuNi0xMy4yIDY1LjEtMzcuMiA4OC42LTE5LjUgMTkuMi00NC45IDMxLjEtNzEuOSAzNC41LTQgLjUtNi45IDMuOS02LjkgNy45Vjc1NGMwIDQuNyA0LjEgOC40IDguOCA4IDEwMS43LTkuMiAxODIuNS05NCAxODMuMi0xOTguMi42LTkzLjQtNjIuNy0xNzIuMS0xNDguNi0xOTQuOXonKSk7XG5leHBvcnRzLkNsb3VkU3luY091dGxpbmUgPSBnZXRJY29uKCdjbG91ZC1zeW5jJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTgxMS40IDM2OC45Qzc2NS42IDI0OCA2NDguOSAxNjIgNTEyLjIgMTYyUzI1OC44IDI0Ny45IDIxMyAzNjguOEMxMjYuOSAzOTEuNSA2My41IDQ3MC4yIDY0IDU2My42IDY0LjYgNjY4IDE0NS42IDc1Mi45IDI0Ny42IDc2MmM0LjcuNCA4LjctMy4zIDguNy04di02MC40YzAtNC0zLTcuNC03LTcuOS0yNy0zLjQtNTIuNS0xNS4yLTcyLjEtMzQuNS0yNC0yMy41LTM3LjItNTUuMS0zNy4yLTg4LjYgMC0yOCA5LjEtNTQuNCAyNi4yLTc2LjQgMTYuNy0yMS40IDQwLjItMzYuOSA2Ni4xLTQzLjdsMzcuOS0xMCAxMy45LTM2LjdjOC42LTIyLjggMjAuNi00NC4yIDM1LjctNjMuNSAxNC45LTE5LjIgMzIuNi0zNiA1Mi40LTUwIDQxLjEtMjguOSA4OS41LTQ0LjIgMTQwLTQ0LjJzOTguOSAxNS4zIDE0MCA0NC4zYzE5LjkgMTQgMzcuNSAzMC44IDUyLjQgNTAgMTUuMSAxOS4zIDI3LjEgNDAuNyAzNS43IDYzLjVsMTMuOCAzNi42IDM3LjggMTBjNTQuMiAxNC40IDkyLjEgNjMuNyA5Mi4xIDEyMCAwIDMzLjYtMTMuMiA2NS4xLTM3LjIgODguNi0xOS41IDE5LjItNDQuOSAzMS4xLTcxLjkgMzQuNS00IC41LTYuOSAzLjktNi45IDcuOVY3NTRjMCA0LjcgNC4xIDguNCA4LjggOCAxMDEuNy05LjIgMTgyLjUtOTQgMTgzLjItMTk4LjIuNi05My40LTYyLjctMTcyLjEtMTQ4LjYtMTk0Ljl6JywgJ00zNzYuOSA2NTYuNGMxLjgtMzMuNSAxNS43LTY0LjcgMzkuNS04OC42IDI1LjQtMjUuNSA2MC0zOS44IDk2LTM5LjggMzYuMiAwIDcwLjMgMTQuMSA5NiAzOS44IDEuNCAxLjQgMi43IDIuOCA0LjEgNC4zbC0yNSAxOS42YTggOCAwIDAgMCAzIDE0LjFsOTguMiAyNGM1IDEuMiA5LjktMi42IDkuOS03LjdsLjUtMTAxLjNjMC02LjctNy42LTEwLjUtMTIuOS02LjNMNjYzIDUzMi43Yy0zNi42LTQyLTkwLjQtNjguNi0xNTAuNS02OC42LTEwNy40IDAtMTk1IDg1LjEtMTk5LjQgMTkxLjctLjIgNC41IDMuNCA4LjMgOCA4LjNIMzY5YzQuMi0uMSA3LjctMy40IDcuOS03Ljd6TTcwMyA2NjRoLTQ3LjljLTQuMiAwLTcuNyAzLjMtOCA3LjYtMS44IDMzLjUtMTUuNyA2NC43LTM5LjUgODguNi0yNS40IDI1LjUtNjAgMzkuOC05NiAzOS44LTM2LjIgMC03MC4zLTE0LjEtOTYtMzkuOC0xLjQtMS40LTIuNy0yLjgtNC4xLTQuM2wyNS0xOS42YTggOCAwIDAgMC0zLTE0LjFsLTk4LjItMjRjLTUtMS4yLTkuOSAyLjYtOS45IDcuN2wtLjQgMTAxLjRjMCA2LjcgNy42IDEwLjUgMTIuOSA2LjNsMjMuMi0xOC4yYzM2LjYgNDIgOTAuNCA2OC42IDE1MC41IDY4LjYgMTA3LjQgMCAxOTUtODUuMSAxOTkuNC0xOTEuNy4yLTQuNS0zLjQtOC4zLTgtOC4zeicpKTtcbmV4cG9ydHMuQ2xvdWRVcGxvYWRPdXRsaW5lID0gZ2V0SWNvbignY2xvdWQtdXBsb2FkJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxOC4zIDQ1OWE4IDggMCAwIDAtMTIuNiAwbC0xMTIgMTQxLjdhNy45OCA3Ljk4IDAgMCAwIDYuMyAxMi45aDczLjlWODU2YzAgNC40IDMuNiA4IDggOGg2MGM0LjQgMCA4LTMuNiA4LThWNjEzLjdINjI0YzYuNyAwIDEwLjQtNy43IDYuMy0xMi45TDUxOC4zIDQ1OXonLCAnTTgxMS40IDM2Ni43Qzc2NS42IDI0NS45IDY0OC45IDE2MCA1MTIuMiAxNjBTMjU4LjggMjQ1LjggMjEzIDM2Ni42QzEyNy4zIDM4OS4xIDY0IDQ2Ny4yIDY0IDU2MGMwIDExMC41IDg5LjUgMjAwIDE5OS45IDIwMEgzMDRjNC40IDAgOC0zLjYgOC04di02MGMwLTQuNC0zLjYtOC04LThoLTQwLjFjLTMzLjcgMC02NS40LTEzLjQtODktMzcuNy0yMy41LTI0LjItMzYtNTYuOC0zNC45LTkwLjYuOS0yNi40IDkuOS01MS4yIDI2LjItNzIuMSAxNi43LTIxLjMgNDAuMS0zNi44IDY2LjEtNDMuN2wzNy45LTkuOSAxMy45LTM2LjZjOC42LTIyLjggMjAuNi00NC4xIDM1LjctNjMuNGEyNDUuNiAyNDUuNiAwIDAgMSA1Mi40LTQ5LjljNDEuMS0yOC45IDg5LjUtNDQuMiAxNDAtNDQuMnM5OC45IDE1LjMgMTQwIDQ0LjJjMTkuOSAxNCAzNy41IDMwLjggNTIuNCA0OS45IDE1LjEgMTkuMyAyNy4xIDQwLjcgMzUuNyA2My40bDEzLjggMzYuNSAzNy44IDEwQzg0Ni4xIDQ1NC41IDg4NCA1MDMuOCA4ODQgNTYwYzAgMzMuMS0xMi45IDY0LjMtMzYuMyA4Ny43YTEyMy4wNyAxMjMuMDcgMCAwIDEtODcuNiAzNi4zSDcyMGMtNC40IDAtOCAzLjYtOCA4djYwYzAgNC40IDMuNiA4IDggOGg0MC4xQzg3MC41IDc2MCA5NjAgNjcwLjUgOTYwIDU2MGMwLTkyLjctNjMuMS0xNzAuNy0xNDguNi0xOTMuM3onKSk7XG5leHBvcnRzLkNsdXN0ZXJPdXRsaW5lID0gZ2V0SWNvbignY2x1c3RlcicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODggNjgwaC01NFY1NDBINTQ2di05MmgyMzhjOC44IDAgMTYtNy4yIDE2LTE2VjE2OGMwLTguOC03LjItMTYtMTYtMTZIMjQwYy04LjggMC0xNiA3LjItMTYgMTZ2MjY0YzAgOC44IDcuMiAxNiAxNiAxNmgyMzh2OTJIMTkwdjE0MGgtNTRjLTQuNCAwLTggMy42LTggOHYxNzZjMCA0LjQgMy42IDggOCA4aDE3NmM0LjQgMCA4LTMuNiA4LThWNjg4YzAtNC40LTMuNi04LTgtOGgtNTR2LTcyaDIyMHY3MmgtNTRjLTQuNCAwLTggMy42LTggOHYxNzZjMCA0LjQgMy42IDggOCA4aDE3NmM0LjQgMCA4LTMuNiA4LThWNjg4YzAtNC40LTMuNi04LTgtOGgtNTR2LTcyaDIyMHY3MmgtNTRjLTQuNCAwLTggMy42LTggOHYxNzZjMCA0LjQgMy42IDggOCA4aDE3NmM0LjQgMCA4LTMuNiA4LThWNjg4YzAtNC40LTMuNi04LTgtOHpNMjU2IDgwNS4zYzAgMS41LTEuMiAyLjctMi43IDIuN2gtNTguN2MtMS41IDAtMi43LTEuMi0yLjctMi43di01OC43YzAtMS41IDEuMi0yLjcgMi43LTIuN2g1OC43YzEuNSAwIDIuNyAxLjIgMi43IDIuN3Y1OC43em0yODggMGMwIDEuNS0xLjIgMi43LTIuNyAyLjdoLTU4LjdjLTEuNSAwLTIuNy0xLjItMi43LTIuN3YtNTguN2MwLTEuNSAxLjItMi43IDIuNy0yLjdoNTguN2MxLjUgMCAyLjcgMS4yIDIuNyAyLjd2NTguN3pNMjg4IDM4NFYyMTZoNDQ4djE2OEgyODh6bTU0NCA0MjEuM2MwIDEuNS0xLjIgMi43LTIuNyAyLjdoLTU4LjdjLTEuNSAwLTIuNy0xLjItMi43LTIuN3YtNTguN2MwLTEuNSAxLjItMi43IDIuNy0yLjdoNTguN2MxLjUgMCAyLjcgMS4yIDIuNyAyLjd2NTguN3pNMzYwIDMwMGE0MCA0MCAwIDEgMCA4MCAwIDQwIDQwIDAgMSAwLTgwIDB6JykpO1xuZXhwb3J0cy5Db2RlcGVuT3V0bGluZSA9IGdldEljb24oJ2NvZGVwZW4nLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTExLjcgMzg1LjNsLS4zLTEuNWMtLjItMS0uMy0xLjktLjYtMi45LS4yLS42LS40LTEuMS0uNS0xLjctLjMtLjgtLjUtMS43LS45LTIuNS0uMi0uNi0uNS0xLjEtLjgtMS43LS40LS44LS44LTEuNS0xLjItMi4zLS4zLS41LS42LTEuMS0xLTEuNi0uOC0xLjItMS43LTIuNC0yLjYtMy42LS41LS42LTEuMS0xLjMtMS43LTEuOS0uNC0uNS0uOS0uOS0xLjQtMS4zLS42LS42LTEuMy0xLjEtMS45LTEuNi0uNS0uNC0xLS44LTEuNi0xLjItLjItLjEtLjQtLjMtLjYtLjRMNTMxLjEgMTE3LjhhMzQuMyAzNC4zIDAgMCAwLTM4LjEgMEwxMjcuMyAzNjEuM2MtLjIuMS0uNC4zLS42LjQtLjUuNC0xIC44LTEuNiAxLjItLjcuNS0xLjMgMS4xLTEuOSAxLjYtLjUuNC0uOS45LTEuNCAxLjMtLjYuNi0xLjIgMS4yLTEuNyAxLjktMSAxLjEtMS44IDIuMy0yLjYgMy42LS4zLjUtLjcgMS0xIDEuNi0uNC43LS44IDEuNS0xLjIgMi4zLS4zLjUtLjUgMS4xLS44IDEuNy0uMy44LS42IDEuNy0uOSAyLjUtLjIuNi0uNCAxLjEtLjUgMS43LS4yLjktLjQgMS45LS42IDIuOWwtLjMgMS41Yy0uMiAxLjUtLjMgMy0uMyA0LjV2MjQzLjVjMCAxLjUuMSAzIC4zIDQuNWwuMyAxLjUuNiAyLjljLjIuNi4zIDEuMS41IDEuNy4zLjkuNiAxLjcuOSAyLjUuMi42LjUgMS4xLjggMS43LjQuOC43IDEuNSAxLjIgMi4zLjMuNS42IDEuMSAxIDEuNi41LjcuOSAxLjQgMS41IDIuMWwxLjIgMS41Yy41LjYgMS4xIDEuMyAxLjcgMS45LjQuNS45LjkgMS40IDEuMy42LjYgMS4zIDEuMSAxLjkgMS42LjUuNCAxIC44IDEuNiAxLjIuMi4xLjQuMy42LjRMNDkzIDkwNS43YzUuNiAzLjggMTIuMyA1LjggMTkuMSA1LjggNi42IDAgMTMuMy0xLjkgMTkuMS01LjhsMzY1LjYtMjQzLjVjLjItLjEuNC0uMy42LS40LjUtLjQgMS0uOCAxLjYtMS4yLjctLjUgMS4zLTEuMSAxLjktMS42LjUtLjQuOS0uOSAxLjQtMS4zLjYtLjYgMS4yLTEuMiAxLjctMS45bDEuMi0xLjUgMS41LTIuMWMuMy0uNS43LTEgMS0xLjYuNC0uOC44LTEuNSAxLjItMi4zLjMtLjUuNS0xLjEuOC0xLjcuMy0uOC42LTEuNy45LTIuNS4yLS41LjQtMS4xLjUtMS43LjMtLjkuNC0xLjkuNi0yLjlsLjMtMS41Yy4yLTEuNS4zLTMgLjMtNC41VjM4OS44Yy0uMy0xLjUtLjQtMy0uNi00LjV6TTU0Ni40IDIxMC41bDI2OS40IDE3OS40LTEyMC4zIDgwLjQtMTQ5LTk5LjZWMjEwLjV6bS02OC44IDB2MTYwLjJsLTE0OSA5OS42LTEyMC4zLTgwLjQgMjY5LjMtMTc5LjR6TTE4MC43IDQ1NC4xbDg2IDU3LjUtODYgNTcuNXYtMTE1em0yOTYuOSAzNTguNUwyMDguMyA2MzMuMmwxMjAuMy04MC40IDE0OSA5OS42djE2MC4yek01MTIgNTkyLjhsLTEyMS42LTgxLjJMNTEyIDQzMC4zbDEyMS42IDgxLjJMNTEyIDU5Mi44em0zNC40IDIxOS44VjY1Mi40bDE0OS05OS42IDEyMC4zIDgwLjQtMjY5LjMgMTc5LjR6TTg0My4zIDU2OWwtODYtNTcuNSA4Ni01Ny41djExNXonKSk7XG5leHBvcnRzLkNvZGVTYW5kYm94T3V0bGluZSA9IGdldEljb24oJ2NvZGUtc2FuZGJveCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ003MDkuNiAyMTBsLjQtLjJoLjJMNTEyIDk2IDMxMy45IDIwOS44aC0uMmwuNy4zTDE1MS41IDMwNHY0MTZMNTEyIDkyOGwzNjAuNS0yMDhWMzA0bC0xNjIuOS05NHpNNDgyLjcgODQzLjZMMzM5LjYgNzYxVjYyMS40TDIxMCA1NDcuOFYzNzIuOWwyNzIuNyAxNTcuM3YzMTMuNHpNMjM4LjIgMzIxLjVsMTM0LjctNzcuOCAxMzguOSA3OS43IDEzOS4xLTc5LjkgMTM1LjIgNzgtMjczLjkgMTU4LTI3NC0xNTh6TTgxNCA1NDguM2wtMTI4LjggNzMuMXYxMzkuMWwtMTQzLjkgODNWNTMwLjRMODE0IDM3My4xdjE3NS4yeicpKTtcbmV4cG9ydHMuQ29sdW1IZWlnaHRPdXRsaW5lID0gZ2V0SWNvbignY29sdW0taGVpZ2h0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg0MCA4MzZIMTg0Yy00LjQgMC04IDMuNi04IDh2NjBjMCA0LjQgMy42IDggOCA4aDY1NmM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOHptMC03MjRIMTg0Yy00LjQgMC04IDMuNi04IDh2NjBjMCA0LjQgMy42IDggOCA4aDY1NmM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOHpNNjEwLjggMzc4YzYgMCA5LjQtNyA1LjctMTEuN0w1MTUuNyAyMzguN2E3LjE0IDcuMTQgMCAwIDAtMTEuMyAwTDQwMy42IDM2Ni4zYTcuMjMgNy4yMyAwIDAgMCA1LjcgMTEuN0g0NzZ2MjY4aC02Mi44Yy02IDAtOS40IDctNS43IDExLjdsMTAwLjggMTI3LjVjMi45IDMuNyA4LjUgMy43IDExLjMgMGwxMDAuOC0xMjcuNWMzLjctNC43LjQtMTEuNy01LjctMTEuN0g1NDhWMzc4aDYyLjh6JykpO1xuZXhwb3J0cy5Db2x1bW5XaWR0aE91dGxpbmUgPSBnZXRJY29uKCdjb2x1bW4td2lkdGgnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMTgwIDE3NmgtNjBjLTQuNCAwLTggMy42LTggOHY2NTZjMCA0LjQgMy42IDggOCA4aDYwYzQuNCAwIDgtMy42IDgtOFYxODRjMC00LjQtMy42LTgtOC04em03MjQgMGgtNjBjLTQuNCAwLTggMy42LTggOHY2NTZjMCA0LjQgMy42IDggOCA4aDYwYzQuNCAwIDgtMy42IDgtOFYxODRjMC00LjQtMy42LTgtOC04ek03ODUuMyA1MDQuM0w2NTcuNyA0MDMuNmE3LjIzIDcuMjMgMCAwIDAtMTEuNyA1LjdWNDc2SDM3OHYtNjIuOGMwLTYtNy05LjQtMTEuNy01LjdMMjM4LjcgNTA4LjNhNy4xNCA3LjE0IDAgMCAwIDAgMTEuM2wxMjcuNSAxMDAuOGM0LjcgMy43IDExLjcuNCAxMS43LTUuN1Y1NDhoMjY4djYyLjhjMCA2IDcgOS40IDExLjcgNS43bDEyNy41LTEwMC44YzMuOC0yLjkgMy44LTguNS4yLTExLjR6JykpO1xuZXhwb3J0cy5Db2x1bW5IZWlnaHRPdXRsaW5lID0gZ2V0SWNvbignY29sdW1uLWhlaWdodCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NDAgODM2SDE4NGMtNC40IDAtOCAzLjYtOCA4djYwYzAgNC40IDMuNiA4IDggOGg2NTZjNC40IDAgOC0zLjYgOC04di02MGMwLTQuNC0zLjYtOC04LTh6bTAtNzI0SDE4NGMtNC40IDAtOCAzLjYtOCA4djYwYzAgNC40IDMuNiA4IDggOGg2NTZjNC40IDAgOC0zLjYgOC04di02MGMwLTQuNC0zLjYtOC04LTh6TTYxMC44IDM3OGM2IDAgOS40LTcgNS43LTExLjdMNTE1LjcgMjM4LjdhNy4xNCA3LjE0IDAgMCAwLTExLjMgMEw0MDMuNiAzNjYuM2E3LjIzIDcuMjMgMCAwIDAgNS43IDExLjdINDc2djI2OGgtNjIuOGMtNiAwLTkuNCA3LTUuNyAxMS43bDEwMC44IDEyNy41YzIuOSAzLjcgOC41IDMuNyAxMS4zIDBsMTAwLjgtMTI3LjVjMy43LTQuNy40LTExLjctNS43LTExLjdINTQ4VjM3OGg2Mi44eicpKTtcbmV4cG9ydHMuQ29mZmVlT3V0bGluZSA9IGdldEljb24oJ2NvZmZlZScsIG91dGxpbmUsIGdldE5vZGUobm9ybWFsVmlld0JveCwgJ00yNzUgMjgxYzE5LjkgMCAzNi0xNi4xIDM2LTM2VjM2YzAtMTkuOS0xNi4xLTM2LTM2LTM2cy0zNiAxNi4xLTM2IDM2djIwOWMwIDE5LjkgMTYuMSAzNiAzNiAzNnptNjEzIDE0NEg3NjhjMC0zOS44LTMyLjItNzItNzItNzJIMjAwYy0zOS44IDAtNzIgMzIuMi03MiA3MnYyNDhjMCAzLjQuMiA2LjcuNyA5LjktLjUgNy0uNyAxNC0uNyAyMS4xIDAgMTc2LjcgMTQzLjMgMzIwIDMyMCAzMjAgMTYwLjEgMCAyOTIuNy0xMTcuNSAzMTYuMy0yNzFIODg4YzM5LjggMCA3Mi0zMi4yIDcyLTcyVjQ5N2MwLTM5LjgtMzIuMi03Mi03Mi03MnpNNjk2IDY4MWgtMS4xYy43IDcuNiAxLjEgMTUuMiAxLjEgMjMgMCAxMzctMTExIDI0OC0yNDggMjQ4UzIwMCA4NDEgMjAwIDcwNGMwLTcuOC40LTE1LjQgMS4xLTIzSDIwMFY0MjVoNDk2djI1NnptMTkyLThINzc2VjQ5N2gxMTJ2MTc2ek02MTMgMjgxYzE5LjkgMCAzNi0xNi4xIDM2LTM2VjM2YzAtMTkuOS0xNi4xLTM2LTM2LTM2cy0zNiAxNi4xLTM2IDM2djIwOWMwIDE5LjkgMTYuMSAzNiAzNiAzNnptLTE3MCAwYzE5LjkgMCAzNi0xNi4xIDM2LTM2VjM2YzAtMTkuOS0xNi4xLTM2LTM2LTM2cy0zNiAxNi4xLTM2IDM2djIwOWMwIDE5LjkgMTYuMSAzNiAzNiAzNnonKSk7XG5leHBvcnRzLkNvcHlyaWdodE91dGxpbmUgPSBnZXRJY29uKCdjb3B5cmlnaHQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyem01LjYtNTMyLjdjNTMgMCA4OSAzMy44IDkzIDgzLjQuMyA0LjIgMy44IDcuNCA4IDcuNGg1Ni43YzIuNiAwIDQuNy0yLjEgNC43LTQuNyAwLTg2LjctNjguNC0xNDcuNC0xNjIuNy0xNDcuNEM0MDcuNCAyOTAgMzQ0IDM2NC4yIDM0NCA0ODYuOHY1Mi4zQzM0NCA2NjAuOCA0MDcuNCA3MzQgNTE3LjMgNzM0Yzk0IDAgMTYyLjctNTguOCAxNjIuNy0xNDEuNCAwLTIuNi0yLjEtNC43LTQuNy00LjdoLTU2LjhjLTQuMiAwLTcuNiAzLjItOCA3LjMtNC4yIDQ2LjEtNDAuMSA3Ny44LTkzIDc3LjgtNjUuMyAwLTEwMi4xLTQ3LjktMTAyLjEtMTMzLjZ2LTUyLjZjLjEtODcgMzctMTM1LjUgMTAyLjItMTM1LjV6JykpO1xuZXhwb3J0cy5EYXNoT3V0bGluZSA9IGdldEljb24oJ2Rhc2gnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMTEyIDQ3NmgxNjB2NzJIMTEyem0zMjAgMGgxNjB2NzJINDMyem0zMjAgMGgxNjB2NzJINzUyeicpKTtcbmV4cG9ydHMuRGVwbG95bWVudFVuaXRPdXRsaW5lID0gZ2V0SWNvbignZGVwbG95bWVudC11bml0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4OC4zIDY5My4yYy00Mi41LTI0LjYtOTQuMy0xOC0xMjkuMiAxMi44bC01My0zMC43VjUyMy42YzAtMTUuNy04LjQtMzAuMy0yMi0zOC4xbC0xMzYtNzguM3YtNjcuMWM0NC4yLTE1IDc2LTU2LjggNzYtMTA2LjEgMC02MS45LTUwLjEtMTEyLTExMi0xMTJzLTExMiA1MC4xLTExMiAxMTJjMCA0OS4zIDMxLjggOTEuMSA3NiAxMDYuMXY2Ny4xbC0xMzYgNzguM2MtMTMuNiA3LjgtMjIgMjIuNC0yMiAzOC4xdjE1MS42bC01MyAzMC43Yy0zNC45LTMwLjgtODYuOC0zNy40LTEyOS4yLTEyLjgtNTMuNSAzMS03MS43IDk5LjQtNDEgMTUyLjkgMzAuOCA1My41IDk4LjkgNzEuOSAxNTIuMiA0MSA0Mi41LTI0LjYgNjIuNy03MyA1My42LTExOC44bDQ4LjctMjguMyAxNDAuNiA4MWM2LjggMy45IDE0LjQgNS45IDIyIDUuOXMxNS4yLTIgMjItNS45TDY3NC41IDc0MGw0OC43IDI4LjNjLTkuMSA0NS43IDExLjIgOTQuMiA1My42IDExOC44IDUzLjMgMzAuOSAxMjEuNSAxMi42IDE1Mi4yLTQxIDMwLjgtNTMuNiAxMi42LTEyMi00MC43LTE1Mi45em0tNjczIDEzOC40YTQ3LjYgNDcuNiAwIDAgMS02NS4yLTE3LjZjLTEzLjItMjIuOS01LjQtNTIuMyAxNy41LTY1LjVhNDcuNiA0Ny42IDAgMCAxIDY1LjIgMTcuNmMxMy4yIDIyLjkgNS40IDUyLjMtMTcuNSA2NS41ek01MjIgNDYzLjh6TTQ2NCAyMzRhNDguMDEgNDguMDEgMCAwIDEgOTYgMCA0OC4wMSA0OC4wMSAwIDAgMS05NiAwem0xNzAgNDQ2LjJsLTEyMiA3MC4zLTEyMi03MC4zVjUzOS44bDEyMi03MC4zIDEyMiA3MC4zdjE0MC40em0yMzkuOSAxMzMuOWMtMTMuMiAyMi45LTQyLjQgMzAuOC02NS4yIDE3LjYtMjIuOC0xMy4yLTMwLjctNDIuNi0xNy41LTY1LjVzNDIuNC0zMC44IDY1LjItMTcuNmMyMi45IDEzLjIgMzAuNyA0Mi41IDE3LjUgNjUuNXonKSk7XG5leHBvcnRzLkRlc2t0b3BPdXRsaW5lID0gZ2V0SWNvbignZGVza3RvcCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MjggMTQwSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY0OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzgwdjExMkgzMDRjLTguOCAwLTE2IDcuMi0xNiAxNnY0OGMwIDQuNCAzLjYgOCA4IDhoNDMyYzQuNCAwIDgtMy42IDgtOHYtNDhjMC04LjgtNy4yLTE2LTE2LTE2SDU0OFY3MDBoMzgwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE3MmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDQ4OEgxMzZWMjEyaDc1MnY0MTZ6JykpO1xuZXhwb3J0cy5EaW5nZGluZ091dGxpbmUgPSBnZXRJY29uKCdkaW5nZGluZycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001NzMuNyAyNTIuNUM0MjIuNSAxOTcuNCAyMDEuMyA5Ni43IDIwMS4zIDk2LjdjLTE1LjctNC4xLTE3LjkgMTEuMS0xNy45IDExLjEtNSA2MS4xIDMzLjYgMTYwLjUgNTMuNiAxODIuOCAxOS45IDIyLjMgMzE5LjEgMTEzLjcgMzE5LjEgMTEzLjdTMzI2IDM1Ny45IDI3MC41IDM0MS45Yy01NS42LTE2LTM3LjkgMTcuOC0zNy45IDE3LjggMTEuNCA2MS43IDY0LjkgMTMxLjggMTA3LjIgMTM4LjQgNDIuMiA2LjYgMjIwLjEgNCAyMjAuMSA0cy0zNS41IDQuMS05My4yIDExLjljLTQyLjcgNS44LTk3IDEyLjUtMTExLjEgMTcuOC0zMy4xIDEyLjUgMjQgNjIuNiAyNCA2Mi42IDg0LjcgNzYuOCAxMjkuNyA1MC41IDEyOS43IDUwLjUgMzMuMy0xMC43IDYxLjQtMTguNSA4NS4yLTI0LjJMNTY1IDc0My4xaDg0LjZMNjAzIDkyOGwyMDUuMy0yNzEuOUg3MDAuOGwyMi4zLTM4LjdjLjMuNS40LjguNC44Uzc5OS44IDQ5Ni4xIDgyOSA0MzMuOGwuNi0xaC0uMWM1LTEwLjggOC42LTE5LjcgMTAtMjUuOCAxNy03MS4zLTExNC41LTk5LjQtMjY1LjgtMTU0LjV6JykpO1xuZXhwb3J0cy5EaXNjb25uZWN0T3V0bGluZSA9IGdldEljb24oJ2Rpc2Nvbm5lY3QnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODMyLjYgMTkxLjRjLTg0LjYtODQuNi0yMjEuNS04NC42LTMwNiAwbC05Ni45IDk2LjkgNTEgNTEgOTYuOS05Ni45YzUzLjgtNTMuOCAxNDQuNi01OS41IDIwNCAwIDU5LjUgNTkuNSA1My44IDE1MC4yIDAgMjA0bC05Ni45IDk2LjkgNTEuMSA1MS4xIDk2LjktOTYuOWM4NC40LTg0LjYgODQuNC0yMjEuNS0uMS0zMDYuMXpNNDQ2LjUgNzgxLjZjLTUzLjggNTMuOC0xNDQuNiA1OS41LTIwNCAwLTU5LjUtNTkuNS01My44LTE1MC4yIDAtMjA0bDk2LjktOTYuOS01MS4xLTUxLjEtOTYuOSA5Ni45Yy04NC42IDg0LjYtODQuNiAyMjEuNSAwIDMwNnMyMjEuNSA4NC42IDMwNiAwbDk2LjktOTYuOS01MS01MS05Ni44IDk3ek0yNjAuMyAyMDkuNGE4LjAzIDguMDMgMCAwIDAtMTEuMyAwTDIwOS40IDI0OWE4LjAzIDguMDMgMCAwIDAgMCAxMS4zbDU1NC40IDU1NC40YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMzkuNi0zOS42YzMuMS0zLjEgMy4xLTguMiAwLTExLjNMMjYwLjMgMjA5LjR6JykpO1xuZXhwb3J0cy5Eb2xsYXJPdXRsaW5lID0gZ2V0SWNvbignZG9sbGFyJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnptNDcuNy0zOTUuMmwtMjUuNC01LjlWMzQ4LjZjMzggNS4yIDYxLjUgMjkgNjUuNSA1OC4yLjUgNCAzLjkgNi45IDcuOSA2LjloNDQuOWM0LjcgMCA4LjQtNC4xIDgtOC44LTYuMS02Mi4zLTU3LjQtMTAyLjMtMTI1LjktMTA5LjJWMjYzYzAtNC40LTMuNi04LTgtOGgtMjguMWMtNC40IDAtOCAzLjYtOCA4djMzYy03MC44IDYuOS0xMjYuMiA0Ni0xMjYuMiAxMTkgMCA2Ny42IDQ5LjggMTAwLjIgMTAyLjEgMTEyLjdsMjQuNyA2LjN2MTQyLjdjLTQ0LjItNS45LTY5LTI5LjUtNzQuMS02MS4zLS42LTMuOC00LTYuNi03LjktNi42SDM2M2MtNC43IDAtOC40IDQtOCA4LjcgNC41IDU1IDQ2LjIgMTA1LjYgMTM1LjIgMTEyLjFWNzYxYzAgNC40IDMuNiA4IDggOGgyOC40YzQuNCAwIDgtMy42IDgtOC4xbC0uMi0zMS43Yzc4LjMtNi45IDEzNC4zLTQ4LjggMTM0LjMtMTI0LS4xLTY5LjQtNDQuMi0xMDAuNC0xMDktMTE2LjR6bS02OC42LTE2LjJjLTUuNi0xLjYtMTAuMy0zLjEtMTUtNS0zMy44LTEyLjItNDkuNS0zMS45LTQ5LjUtNTcuMyAwLTM2LjMgMjcuNS01NyA2NC41LTYxLjd2MTI0ek01MzQuMyA2NzdWNTQzLjNjMy4xLjkgNS45IDEuNiA4LjggMi4yIDQ3LjMgMTQuNCA2My4yIDM0LjQgNjMuMiA2NS4xIDAgMzkuMS0yOS40IDYyLjYtNzIgNjYuNHonKSk7XG5leHBvcnRzLkRvdWJsZVJpZ2h0T3V0bGluZSA9IGdldEljb24oJ2RvdWJsZS1yaWdodCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MzMuMiA0OTIuM0wyNzcuOSAxNjYuMWMtMy0zLjktNy43LTYuMS0xMi42LTYuMUgxODhjLTYuNyAwLTEwLjQgNy43LTYuMyAxMi45TDQ0Ny4xIDUxMiAxODEuNyA4NTEuMUE3Ljk4IDcuOTggMCAwIDAgMTg4IDg2NGg3Ny4zYzQuOSAwIDkuNi0yLjMgMTIuNi02LjFsMjU1LjMtMzI2LjFjOS4xLTExLjcgOS4xLTI3LjkgMC0zOS41em0zMDQgMEw1ODEuOSAxNjYuMWMtMy0zLjktNy43LTYuMS0xMi42LTYuMUg0OTJjLTYuNyAwLTEwLjQgNy43LTYuMyAxMi45TDc1MS4xIDUxMiA0ODUuNyA4NTEuMUE3Ljk4IDcuOTggMCAwIDAgNDkyIDg2NGg3Ny4zYzQuOSAwIDkuNi0yLjMgMTIuNi02LjFsMjU1LjMtMzI2LjFjOS4xLTExLjcgOS4xLTI3LjkgMC0zOS41eicpKTtcbmV4cG9ydHMuRG90Q2hhcnRPdXRsaW5lID0gZ2V0SWNvbignZG90LWNoYXJ0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4OCA3OTJIMjAwVjE2OGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2Njg4YzAgNC40IDMuNiA4IDggOGg3NTJjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTI4OCA2MDRhNjQgNjQgMCAxIDAgMTI4IDAgNjQgNjQgMCAxIDAtMTI4IDB6bTExOC0yMjRhNDggNDggMCAxIDAgOTYgMCA0OCA0OCAwIDEgMC05NiAwem0xNTggMjI4YTk2IDk2IDAgMSAwIDE5MiAwIDk2IDk2IDAgMSAwLTE5MiAwem0xNDgtMzE0YTU2IDU2IDAgMSAwIDExMiAwIDU2IDU2IDAgMSAwLTExMiAweicpKTtcbmV4cG9ydHMuRG91YmxlTGVmdE91dGxpbmUgPSBnZXRJY29uKCdkb3VibGUtbGVmdCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00yNzIuOSA1MTJsMjY1LjQtMzM5LjFjNC4xLTUuMi40LTEyLjktNi4zLTEyLjloLTc3LjNjLTQuOSAwLTkuNiAyLjMtMTIuNiA2LjFMMTg2LjggNDkyLjNhMzEuOTkgMzEuOTkgMCAwIDAgMCAzOS41bDI1NS4zIDMyNi4xYzMgMy45IDcuNyA2LjEgMTIuNiA2LjFINTMyYzYuNyAwIDEwLjQtNy43IDYuMy0xMi45TDI3Mi45IDUxMnptMzA0IDBsMjY1LjQtMzM5LjFjNC4xLTUuMi40LTEyLjktNi4zLTEyLjloLTc3LjNjLTQuOSAwLTkuNiAyLjMtMTIuNiA2LjFMNDkwLjggNDkyLjNhMzEuOTkgMzEuOTkgMCAwIDAgMCAzOS41bDI1NS4zIDMyNi4xYzMgMy45IDcuNyA2LjEgMTIuNiA2LjFIODM2YzYuNyAwIDEwLjQtNy43IDYuMy0xMi45TDU3Ni45IDUxMnonKSk7XG5leHBvcnRzLkRvd25sb2FkT3V0bGluZSA9IGdldEljb24oJ2Rvd25sb2FkJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUwNS43IDY2MWE4IDggMCAwIDAgMTIuNiAwbDExMi0xNDEuN2M0LjEtNS4yLjQtMTIuOS02LjMtMTIuOWgtNzQuMVYxNjhjMC00LjQtMy42LTgtOC04aC02MGMtNC40IDAtOCAzLjYtOCA4djMzOC4zSDQwMGMtNi43IDAtMTAuNCA3LjctNi4zIDEyLjlsMTEyIDE0MS44ek04NzggNjI2aC02MGMtNC40IDAtOCAzLjYtOCA4djE1NEgyMTRWNjM0YzAtNC40LTMuNi04LTgtOGgtNjBjLTQuNCAwLTggMy42LTggOHYxOThjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjg0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjYzNGMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5EcmliYmJsZU91dGxpbmUgPSBnZXRJY29uKCdkcmliYmJsZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgOTZDMjgyLjYgOTYgOTYgMjgyLjYgOTYgNTEyczE4Ni42IDQxNiA0MTYgNDE2IDQxNi0xODYuNiA0MTYtNDE2Uzc0MS40IDk2IDUxMiA5NnptMjc1LjEgMTkxLjhjNDkuNSA2MC41IDc5LjUgMTM3LjUgODAuMiAyMjEuNC0xMS43LTIuNS0xMjkuMi0yNi4zLTI0Ny40LTExLjQtMi41LTYuMS01LTEyLjItNy42LTE4LjMtNy40LTE3LjMtMTUuMy0zNC42LTIzLjYtNTEuNUM3MjAgMzc0LjMgNzc5LjYgMjk4IDc4Ny4xIDI4Ny44ek01MTIgMTU3LjJjOTAuMyAwIDE3Mi44IDMzLjkgMjM1LjUgODkuNS02LjQgOS4xLTU5LjkgODEtMTg2LjIgMTI4LjQtNTguMi0xMDctMTIyLjctMTk0LjgtMTMyLjYtMjA4IDI3LjMtNi42IDU1LjItOS45IDgzLjMtOS45ek0zNjAuOSAxOTFjOS40IDEyLjggNzIuOSAxMDAuOSAxMzEuNyAyMDUuNUMzMjYuNCA0NDAuNiAxODAgNDQwIDE2NC4xIDQzOS44YzIzLjEtMTEwLjMgOTcuNC0yMDEuOSAxOTYuOC0yNDguOHpNMTU2LjcgNTEyLjVjMC0zLjYuMS03LjMuMi0xMC45IDE1LjUuMyAxODcuNyAyLjUgMzY1LjItNTAuNiAxMC4yIDE5LjkgMTkuOSA0MC4xIDI4LjggNjAuMy00LjcgMS4zLTkuNCAyLjctMTQgNC4yQzM1My42IDU3NC45IDI1Ni4xIDczNi40IDI0OCA3NTAuMWMtNTYuNy02My05MS4zLTE0Ni4zLTkxLjMtMjM3LjZ6TTUxMiA4NjcuOGMtODIuMiAwLTE1Ny45LTI4LTIxOC4xLTc1IDYuNC0xMy4xIDc4LjMtMTUyIDI3OC43LTIyMS45bDIuMy0uOGM0OS45IDEyOS42IDcwLjUgMjM4LjMgNzUuOCAyNjkuNUEzNTAuNDYgMzUwLjQ2IDAgMCAxIDUxMiA4NjcuOHptMTk4LjUtNjAuN2MtMy42LTIxLjYtMjIuNS0xMjUuNi02OS0yNTMuM0M3NTIuOSA1MzYgODUwLjcgNTY1LjIgODYyLjggNTY5Yy0xNS44IDk4LjgtNzIuNSAxODQuMi0xNTIuMyAyMzguMXonKSk7XG5leHBvcnRzLkRyb3Bib3hPdXRsaW5lID0gZ2V0SWNvbignZHJvcGJveCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ002NCA1NTYuOWwyNjQuMiAxNzMuNUw1MTIuNSA1NzcgMjQ2LjggNDEyLjd6bTg5Ni0yOTAuM3ptMCAwTDY5Ni44IDk1IDUxMi41IDI0OC41bDI2NS4yIDE2NC4yTDUxMi41IDU3N2wxODQuMyAxNTMuNEw5NjAgNTU4LjggNzc3LjcgNDEyLjd6TTUxMyA2MDkuOEwzMjguMiA3NjMuM2wtNzkuNC01MS41djU3LjhMNTEzIDkyOGwyNjMuNy0xNTguNHYtNTcuOGwtNzguOSA1MS41ek0zMjguMiA5NUw2NCAyNjUuMWwxODIuOCAxNDcuNiAyNjUuNy0xNjQuMnpNNjQgNTU2Ljl6JykpO1xuZXhwb3J0cy5FbGxpcHNpc091dGxpbmUgPSBnZXRJY29uKCdlbGxpcHNpcycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00xNzYgNTExYTU2IDU2IDAgMSAwIDExMiAwIDU2IDU2IDAgMSAwLTExMiAwem0yODAgMGE1NiA1NiAwIDEgMCAxMTIgMCA1NiA1NiAwIDEgMC0xMTIgMHptMjgwIDBhNTYgNTYgMCAxIDAgMTEyIDAgNTYgNTYgMCAxIDAtMTEyIDB6JykpO1xuZXhwb3J0cy5FbnRlck91dGxpbmUgPSBnZXRJY29uKCdlbnRlcicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NjQgMTcwaC02MGMtNC40IDAtOCAzLjYtOCA4djUxOEgzMTB2LTczYzAtNi43LTcuOC0xMC41LTEzLTYuM2wtMTQxLjkgMTEyYTggOCAwIDAgMCAwIDEyLjZsMTQxLjkgMTEyYzUuMyA0LjIgMTMgLjQgMTMtNi4zdi03NWg0OThjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTc4YzAtNC40LTMuNi04LTgtOHonKSk7XG5leHBvcnRzLkV1cm9PdXRsaW5lID0gZ2V0SWNvbignZXVybycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6bTExNy43LTU4OC42Yy0xNS45LTMuNS0zNC40LTUuNC01NS4zLTUuNC0xMDYuNyAwLTE3OC45IDU1LjctMTk4LjYgMTQ5LjlIMzQ0Yy00LjQgMC04IDMuNi04IDh2MjcuMmMwIDQuNCAzLjYgOCA4IDhoMjYuNGMtLjMgNC4xLS4zIDguNC0uMyAxMi44djM2LjlIMzQ0Yy00LjQgMC04IDMuNi04IDhWNTY4YzAgNC40IDMuNiA4IDggOGgzMC4yYzE3LjIgOTkuMiA5MC40IDE1OCAyMDAuMiAxNTggMjAuOSAwIDM5LjQtMS43IDU1LjMtNS4xIDMuNy0uOCA2LjQtNCA2LjQtNy44di00Mi44YzAtNS00LjYtOC44LTkuNS03LjgtMTQuNyAyLjgtMzEuOSA0LjEtNTEuOCA0LjEtNjguNSAwLTExNC41LTM2LjYtMTI5LjgtOTguNmgxMzAuNmM0LjQgMCA4LTMuNiA4LTh2LTI3LjJjMC00LjQtMy42LTgtOC04SDQzOS4ydi0zNmMwLTQuNyAwLTkuNC4zLTEzLjhoMTM1LjljNC40IDAgOC0zLjYgOC04di0yNy4yYzAtNC40LTMuNi04LTgtOEg0NDcuMWMxNy4yLTU2LjkgNjIuMy05MC40IDEyNy42LTkwLjQgMTkuOSAwIDM3LjEgMS41IDUxLjcgNC40YTggOCAwIDAgMCA5LjYtNy44di00Mi44YzAtMy44LTIuNi03LTYuMy03Ljh6JykpO1xuZXhwb3J0cy5FeGNlcHRpb25PdXRsaW5lID0gZ2V0SWNvbignZXhjZXB0aW9uJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTY4OCAzMTJ2LTQ4YzAtNC40LTMuNi04LTgtOEgyOTZjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoMzg0YzQuNCAwIDgtMy42IDgtOHptLTM5MiA4OGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgxODRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LThIMjk2em0zNzYgMTE2Yy0xMTkuMyAwLTIxNiA5Ni43LTIxNiAyMTZzOTYuNyAyMTYgMjE2IDIxNiAyMTYtOTYuNyAyMTYtMjE2LTk2LjctMjE2LTIxNi0yMTZ6bTEwNy41IDMyMy41Qzc1MC44IDg2OC4yIDcxMi42IDg4NCA2NzIgODg0cy03OC44LTE1LjgtMTA3LjUtNDQuNUM1MzUuOCA4MTAuOCA1MjAgNzcyLjYgNTIwIDczMnMxNS44LTc4LjggNDQuNS0xMDcuNUM1OTMuMiA1OTUuOCA2MzEuNCA1ODAgNjcyIDU4MHM3OC44IDE1LjggMTA3LjUgNDQuNUM4MDguMiA2NTMuMiA4MjQgNjkxLjQgODI0IDczMnMtMTUuOCA3OC44LTQ0LjUgMTA3LjV6TTY0MCA4MTJhMzIgMzIgMCAxIDAgNjQgMCAzMiAzMiAwIDEgMC02NCAwem0xMi02NGg0MGM0LjQgMCA4LTMuNiA4LThWNjI4YzAtNC40LTMuNi04LTgtOGgtNDBjLTQuNCAwLTggMy42LTggOHYxMTJjMCA0LjQgMy42IDggOCA4ek00NDAgODUySDIwOFYxNDhoNTYwdjM0NGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04VjEwOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgxNjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjc4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyNzJjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5FeGNsYW1hdGlvbk91dGxpbmUgPSBnZXRJY29uKCdleGNsYW1hdGlvbicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ000NDggODA0YTY0IDY0IDAgMSAwIDEyOCAwIDY0IDY0IDAgMSAwLTEyOCAwem0zMi0xNjhoNjRjNC40IDAgOC0zLjYgOC04VjE2NGMwLTQuNC0zLjYtOC04LThoLTY0Yy00LjQgMC04IDMuNi04IDh2NDY0YzAgNC40IDMuNiA4IDggOHonKSk7XG5leHBvcnRzLkV4cG9ydE91dGxpbmUgPSBnZXRJY29uKCdleHBvcnQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODg4LjMgNzU3LjRoLTUzLjhjLTQuMiAwLTcuNyAzLjUtNy43IDcuN3Y2MS44SDE5Ny4xVjE5Ny4xaDYyOS44djYxLjhjMCA0LjIgMy41IDcuNyA3LjcgNy43aDUzLjhjNC4yIDAgNy43LTMuNCA3LjctNy43VjE1OC43YzAtMTctMTMuNy0zMC43LTMwLjctMzAuN0gxNTguN2MtMTcgMC0zMC43IDEzLjctMzAuNyAzMC43djcwNi42YzAgMTcgMTMuNyAzMC43IDMwLjcgMzAuN2g3MDYuNmMxNyAwIDMwLjctMTMuNyAzMC43LTMwLjdWNzY1LjFjMC00LjMtMy41LTcuNy03LjctNy43em0xOC42LTI1MS43TDc2NSAzOTMuN2MtNS4zLTQuMi0xMy0uNC0xMyA2LjN2NzZINDM4Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDMxNHY3NmMwIDYuNyA3LjggMTAuNSAxMyA2LjNsMTQxLjktMTEyYTggOCAwIDAgMCAwLTEyLjZ6JykpO1xuZXhwb3J0cy5GYWxsT3V0bGluZSA9IGdldEljb24oJ2ZhbGwnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTI1LjkgODA0bC0yNC0xOTkuMmMtLjgtNi42LTguOS05LjQtMTMuNi00LjdMODI5IDY1OS41IDU1Ny43IDM4OC4zYy02LjMtNi4yLTE2LjQtNi4yLTIyLjYgMEw0MzMuMyA0OTAgMTU2LjYgMjEzLjNhOC4wMyA4LjAzIDAgMCAwLTExLjMgMGwtNDUgNDUuMmE4LjAzIDguMDMgMCAwIDAgMCAxMS4zTDQyMiA1OTEuN2M2LjIgNi4zIDE2LjQgNi4zIDIyLjYgMEw1NDYuNCA0OTBsMjI2LjEgMjI2LTU5LjMgNTkuM2E4LjAxIDguMDEgMCAwIDAgNC43IDEzLjZsMTk5LjIgMjRjNS4xLjcgOS41LTMuNyA4LjgtOC45eicpKTtcbmV4cG9ydHMuRmlsZURvbmVPdXRsaW5lID0gZ2V0SWNvbignZmlsZS1kb25lJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTY4OCAzMTJ2LTQ4YzAtNC40LTMuNi04LTgtOEgyOTZjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoMzg0YzQuNCAwIDgtMy42IDgtOHptLTM5MiA4OGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgxODRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LThIMjk2em0zNzYgMTE2Yy0xMTkuMyAwLTIxNiA5Ni43LTIxNiAyMTZzOTYuNyAyMTYgMjE2IDIxNiAyMTYtOTYuNyAyMTYtMjE2LTk2LjctMjE2LTIxNi0yMTZ6bTEwNy41IDMyMy41Qzc1MC44IDg2OC4yIDcxMi42IDg4NCA2NzIgODg0cy03OC44LTE1LjgtMTA3LjUtNDQuNUM1MzUuOCA4MTAuOCA1MjAgNzcyLjYgNTIwIDczMnMxNS44LTc4LjggNDQuNS0xMDcuNUM1OTMuMiA1OTUuOCA2MzEuNCA1ODAgNjcyIDU4MHM3OC44IDE1LjggMTA3LjUgNDQuNUM4MDguMiA2NTMuMiA4MjQgNjkxLjQgODI0IDczMnMtMTUuOCA3OC44LTQ0LjUgMTA3LjV6TTc2MSA2NTZoLTQ0LjNjLTIuNiAwLTUgMS4yLTYuNSAzLjNsLTYzLjUgODcuOC0yMy4xLTMxLjlhNy45MiA3LjkyIDAgMCAwLTYuNS0zLjNINTczYy02LjUgMC0xMC4zIDcuNC02LjUgMTIuN2w3My44IDEwMi4xYzMuMiA0LjQgOS43IDQuNCAxMi45IDBsMTE0LjItMTU4YzMuOS01LjMuMS0xMi43LTYuNC0xMi43ek00NDAgODUySDIwOFYxNDhoNTYwdjM0NGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04VjEwOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgxNjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjc4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyNzJjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5GaWxlU3luY091dGxpbmUgPSBnZXRJY29uKCdmaWxlLXN5bmMnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMjk2IDI1NmMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgzODRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LThIMjk2em0xOTIgMjAwdi00OGMwLTQuNC0zLjYtOC04LThIMjk2Yy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDE4NGM0LjQgMCA4LTMuNiA4LTh6bS00OCAzOTZIMjA4VjE0OGg1NjB2MzQ0YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LThWMTA4YzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2Nzg0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDI3MmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMTA0LjEtMTE1LjZjMS44LTM0LjUgMTYuMi02Ni44IDQwLjgtOTEuNCAyNi4yLTI2LjIgNjItNDEgOTkuMS00MSAzNy40IDAgNzIuNiAxNC42IDk5LjEgNDEgMy4yIDMuMiA2LjMgNi42IDkuMiAxMC4xTDc2OS4yIDY3M2E4IDggMCAwIDAgMyAxNC4xbDkzLjMgMjIuNWM1IDEuMiA5LjgtMi42IDkuOS03LjdsLjYtOTUuNGE4IDggMCAwIDAtMTIuOS02LjRsLTIwLjMgMTUuOEM4MDUuNCA1NjkuNiA3NDguMSA1NDAgNjg0IDU0MGMtMTA5LjkgMC0xOTkuNiA4Ni45LTIwNCAxOTUuNy0uMiA0LjUgMy41IDguMyA4IDguM2g0OC4xYzQuMyAwIDcuOC0zLjMgOC03LjZ6TTg4MCA3NDRoLTQ4LjFjLTQuMyAwLTcuOCAzLjMtOCA3LjYtMS44IDM0LjUtMTYuMiA2Ni44LTQwLjggOTEuNC0yNi4yIDI2LjItNjIgNDEtOTkuMSA0MS0zNy40IDAtNzIuNi0xNC42LTk5LjEtNDEtMy4yLTMuMi02LjMtNi42LTkuMi0xMC4xbDIzLjEtMTcuOWE4IDggMCAwIDAtMy0xNC4xbC05My4zLTIyLjVjLTUtMS4yLTkuOCAyLjYtOS45IDcuN2wtLjYgOTUuNGE4IDggMCAwIDAgMTIuOSA2LjRsMjAuMy0xNS44QzU2Mi42IDkxOC40IDYxOS45IDk0OCA2ODQgOTQ4YzEwOS45IDAgMTk5LjYtODYuOSAyMDQtMTk1LjcuMi00LjUtMy41LTguMy04LTguM3onKSk7XG5leHBvcnRzLkZpbGVQcm90ZWN0T3V0bGluZSA9IGdldEljb24oJ2ZpbGUtcHJvdGVjdCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ002NDQuNyA2NjkuMmE3LjkyIDcuOTIgMCAwIDAtNi41LTMuM0g1OTRjLTYuNSAwLTEwLjMgNy40LTYuNSAxMi43bDczLjggMTAyLjFjMy4yIDQuNCA5LjcgNC40IDEyLjkgMGwxMTQuMi0xNThjMy44LTUuMyAwLTEyLjctNi41LTEyLjdoLTQ0LjNjLTIuNiAwLTUgMS4yLTYuNSAzLjNsLTYzLjUgODcuOC0yMi45LTMxLjl6TTY4OCAzMDZ2LTQ4YzAtNC40LTMuNi04LTgtOEgyOTZjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoMzg0YzQuNCAwIDgtMy42IDgtOHptLTM5MiA4OGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgxODRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LThIMjk2em0xODQgNDU4SDIwOFYxNDhoNTYwdjI5NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04VjEwOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgxNjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjc4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMTJjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTQwMi42LTMyMC44bC0xOTItNjYuN2MtLjktLjMtMS43LS40LTIuNi0uNHMtMS44LjEtMi42LjRsLTE5MiA2Ni43YTcuOTYgNy45NiAwIDAgMC01LjQgNy41djI1MS4xYzAgMi41IDEuMSA0LjggMy4xIDYuM2wxOTIgMTUwLjJjMS40IDEuMSAzLjIgMS43IDQuOSAxLjdzMy41LS42IDQuOS0xLjdsMTkyLTE1MC4yYzEuOS0xLjUgMy4xLTMuOCAzLjEtNi4zVjUzOC43YzAtMy40LTIuMi02LjQtNS40LTcuNXpNODI2IDc2My43TDY4OCA4NzEuNiA1NTAgNzYzLjdWNTc3bDEzOC00OCAxMzggNDh2MTg2Ljd6JykpO1xuZXhwb3J0cy5GaWxlU2VhcmNoT3V0bGluZSA9IGdldEljb24oJ2ZpbGUtc2VhcmNoJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTY4OCAzMTJ2LTQ4YzAtNC40LTMuNi04LTgtOEgyOTZjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoMzg0YzQuNCAwIDgtMy42IDgtOHptLTM5MiA4OGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgxODRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LThIMjk2em0xNDQgNDUySDIwOFYxNDhoNTYwdjM0NGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04VjEwOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgxNjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjc4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyNzJjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTQ0NS43IDUxLjVsLTkzLjMtOTMuM0M4MTQuNyA3ODAuNyA4MjggNzQzLjkgODI4IDcwNGMwLTk3LjItNzguOC0xNzYtMTc2LTE3NnMtMTc2IDc4LjgtMTc2IDE3NiA3OC44IDE3NiAxNzYgMTc2YzM1LjggMCA2OS0xMC43IDk2LjgtMjlsOTQuNyA5NC43YzEuNiAxLjYgMy42IDIuMyA1LjYgMi4zczQuMS0uOCA1LjYtMi4zbDMxLTMxYTcuOSA3LjkgMCAwIDAgMC0xMS4yek02NTIgODE2Yy02MS45IDAtMTEyLTUwLjEtMTEyLTExMnM1MC4xLTExMiAxMTItMTEyIDExMiA1MC4xIDExMiAxMTItNTAuMSAxMTItMTEyIDExMnonKSk7XG5leHBvcnRzLkZpbGVKcGdPdXRsaW5lID0gZ2V0SWNvbignZmlsZS1qcGcnLCBvdXRsaW5lLCBnZXROb2RlKG5vcm1hbFZpZXdCb3gsICdNODc0LjYgMzAxLjhMNTk2LjggMjEuM2MtNC41LTQuNS05LjQtOC4zLTE0LjctMTEuNS0xLjQtLjgtMi44LTEuNi00LjMtMi4zLS45LS41LTEuOS0uOS0yLjgtMS4zLTktNC0xOC45LTYuMi0yOS02LjJIMjAxYy0zOS44IDAtNzMgMzIuMi03MyA3MnY4ODBjMCAzOS44IDMzLjIgNzIgNzMgNzJoNjIzYzM5LjggMCA3MS0zMi4yIDcxLTcyVjM1Mi41YzAtMTktNy0zNy4yLTIwLjQtNTAuN3pNNTgzIDExMC40TDc4My44IDMxMkg1ODNWMTEwLjR6TTgyMyA5NTJIMjAwVjcyaDMxMXYyNDBjMCAzOS44IDMzLjIgNzIgNzMgNzJoMjM5djU2OHpNMzUwIDY5Ni41YzAgMjQuMi03LjUgMzEuNC0yMS45IDMxLjQtOSAwLTE4LjQtNS44LTI0LjgtMTguNUwyNzIuOSA3MzJjMTMuNCAyMi45IDMyLjMgMzQuMiA2MS4zIDM0LjIgNDEuNiAwIDYwLjgtMjkuOSA2MC44LTY2LjJWNTc3aC00NXYxMTkuNXpNNTAxLjMgNTc3SDQzN3YxODZoNDR2LTYyaDIxLjZjMzkuMSAwIDczLjEtMTkuNiA3My4xLTYzLjYgMC00NS44LTMzLjUtNjAuNC03NC40LTYwLjR6bS0uOCA4OUg0ODF2LTUzaDE4LjJjMjEuNSAwIDMzLjQgNi4yIDMzLjQgMjQuOSAwIDE4LjEtMTAuNSAyOC4xLTMyLjEgMjguMXptMTgyLjUtOXYzNmgzMHYzMC4xYy00IDIuOS0xMSA0LjctMTcuNyA0LjctMzQuMyAwLTUwLjctMjEuNC01MC43LTU4LjIgMC0zNi4xIDE5LjctNTcuNCA0Ny4xLTU3LjQgMTUuMyAwIDI1IDYuMiAzNCAxNC40bDIzLjctMjguM2MtMTIuNy0xMi44LTMyLjEtMjQuMi01OS4yLTI0LjItNDkuNiAwLTkxLjEgMzUuMy05MS4xIDk3IDAgNjIuNyA0MCA5NS4xIDkxLjUgOTUuMSAyNS45IDAgNDkuMi0xMC4yIDYxLjUtMjIuNlY2NTdINjgzeicpKTtcbmV4cG9ydHMuRm9udENvbG9yc091dGxpbmUgPSBnZXRJY29uKCdmb250LWNvbG9ycycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MDQgODE2SDEyMGMtNC40IDAtOCAzLjYtOCA4djgwYzAgNC40IDMuNiA4IDggOGg3ODRjNC40IDAgOC0zLjYgOC04di04MGMwLTQuNC0zLjYtOC04LTh6bS02NTAuMy04MGg4NWM0LjIgMCA4LTIuNyA5LjMtNi44bDUzLjctMTY2aDIxOS4ybDUzLjIgMTY2YzEuMyA0IDUgNi44IDkuMyA2LjhoODkuMWMxLjEgMCAyLjItLjIgMy4yLS41YTkuNyA5LjcgMCAwIDAgNi0xMi40TDU3My42IDExOC42YTkuOSA5LjkgMCAwIDAtOS4yLTYuNkg0NjIuMWMtNC4yIDAtNy45IDIuNi05LjIgNi42TDI0NC41IDcyMy4xYy0uNCAxLS41IDIuMS0uNSAzLjItLjEgNS4zIDQuMyA5LjcgOS43IDkuN3ptMjU1LjktNTE2LjFoNC4xbDgzLjggMjYzLjhINDI0LjlsODQuNy0yNjMuOHonKSk7XG5leHBvcnRzLkZvbnRTaXplT3V0bGluZSA9IGdldEljb24oJ2ZvbnQtc2l6ZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MjAgNDE2SDYxNmMtNC40IDAtOCAzLjYtOCA4djExMmMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04di01Nmg2MHYzMjBoLTQ2Yy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDE2NGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOGgtNDZWNDgwaDYwdjU2YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LThWNDI0YzAtNC40LTMuNi04LTgtOHpNNjU2IDI5NlYxNjhjMC00LjQtMy42LTgtOC04SDEwNGMtNC40IDAtOCAzLjYtOCA4djEyOGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di02NGgxNjh2NTYwaC05MmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGgyNjRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LThoLTkyVjIzMmgxNjh2NjRjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHonKSk7XG5leHBvcnRzLkZvcmtPdXRsaW5lID0gZ2V0SWNvbignZm9yaycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ003NTIgMTAwYy02MS44IDAtMTEyIDUwLjItMTEyIDExMiAwIDQ3LjcgMjkuOSA4OC41IDcyIDEwNC42djI3LjZMNTEyIDYwMS40IDMxMiAzNDQuMnYtMjcuNmM0Mi4xLTE2LjEgNzItNTYuOSA3Mi0xMDQuNiAwLTYxLjgtNTAuMi0xMTItMTEyLTExMnMtMTEyIDUwLjItMTEyIDExMmMwIDUwLjYgMzMuOCA5My41IDgwIDEwNy4zdjM0LjRjMCA5LjcgMy4zIDE5LjMgOS4zIDI3TDQ3NiA2NzIuM3YzMy42Yy00NC4yIDE1LTc2IDU2LjktNzYgMTA2LjEgMCA2MS44IDUwLjIgMTEyIDExMiAxMTJzMTEyLTUwLjIgMTEyLTExMmMwLTQ5LjItMzEuOC05MS03Ni0xMDYuMXYtMzMuNmwyMjYuNy0yOTEuNmM2LTcuNyA5LjMtMTcuMyA5LjMtMjd2LTM0LjRjNDYuMi0xMy44IDgwLTU2LjcgODAtMTA3LjMgMC02MS44LTUwLjItMTEyLTExMi0xMTJ6TTIyNCAyMTJhNDguMDEgNDguMDEgMCAwIDEgOTYgMCA0OC4wMSA0OC4wMSAwIDAgMS05NiAwem0zMzYgNjAwYTQ4LjAxIDQ4LjAxIDAgMCAxLTk2IDAgNDguMDEgNDguMDEgMCAwIDEgOTYgMHptMTkyLTU1MmE0OC4wMSA0OC4wMSAwIDAgMSAwLTk2IDQ4LjAxIDQ4LjAxIDAgMCAxIDAgOTZ6JykpO1xuZXhwb3J0cy5Gb3JtT3V0bGluZSA9IGdldEljb24oJ2Zvcm0nLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTA0IDUxMmgtNTZjLTQuNCAwLTggMy42LTggOHYzMjBIMTg0VjE4NGgzMjBjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LThIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjUyMGMwLTQuNC0zLjYtOC04LTh6JywgJ00zNTUuOSA1MzQuOUwzNTQgNjUzLjhjLS4xIDguOSA3LjEgMTYuMiAxNiAxNi4yaC40bDExOC0yLjljMi0uMSA0LS45IDUuNC0yLjNsNDE1LjktNDE1YzMuMS0zLjEgMy4xLTguMiAwLTExLjNMNzg1LjQgMTE0LjNjLTEuNi0xLjYtMy42LTIuMy01LjctMi4zcy00LjEuOC01LjcgMi4zbC00MTUuOCA0MTVhOC4zIDguMyAwIDAgMC0yLjMgNS42em02My41IDIzLjZMNzc5LjcgMTk5bDQ1LjIgNDUuMS0zNjAuNSAzNTkuNy00NS43IDEuMS43LTQ2LjR6JykpO1xuZXhwb3J0cy5GdWxsc2NyZWVuRXhpdE91dGxpbmUgPSBnZXRJY29uKCdmdWxsc2NyZWVuLWV4aXQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMzkxIDI0MC45Yy0uOC02LjYtOC45LTkuNC0xMy42LTQuN2wtNDMuNyA0My43TDIwMCAxNDYuM2E4LjAzIDguMDMgMCAwIDAtMTEuMyAwbC00Mi40IDQyLjNhOC4wMyA4LjAzIDAgMCAwIDAgMTEuM0wyODAgMzMzLjZsLTQzLjkgNDMuOWE4LjAxIDguMDEgMCAwIDAgNC43IDEzLjZMNDAxIDQxMGM1LjEuNiA5LjUtMy43IDguOS04LjlMMzkxIDI0MC45em0xMC4xIDM3My4yTDI0MC44IDYzM2MtNi42LjgtOS40IDguOS00LjcgMTMuNmw0My45IDQzLjlMMTQ2LjMgODI0YTguMDMgOC4wMyAwIDAgMCAwIDExLjNsNDIuNCA0Mi4zYzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBMMzMzLjcgNzQ0bDQzLjcgNDMuN0E4LjAxIDguMDEgMCAwIDAgMzkxIDc4M2wxOC45LTE2MC4xYy42LTUuMS0zLjctOS40LTguOC04Ljh6bTIyMS44LTIwNC4yTDc4My4yIDM5MWM2LjYtLjggOS40LTguOSA0LjctMTMuNkw3NDQgMzMzLjYgODc3LjcgMjAwYzMuMS0zLjEgMy4xLTguMiAwLTExLjNsLTQyLjQtNDIuM2E4LjAzIDguMDMgMCAwIDAtMTEuMyAwTDY5MC4zIDI3OS45bC00My43LTQzLjdhOC4wMSA4LjAxIDAgMCAwLTEzLjYgNC43TDYxNC4xIDQwMWMtLjYgNS4yIDMuNyA5LjUgOC44IDguOXpNNzQ0IDY5MC40bDQzLjktNDMuOWE4LjAxIDguMDEgMCAwIDAtNC43LTEzLjZMNjIzIDYxNGMtNS4xLS42LTkuNSAzLjctOC45IDguOUw2MzMgNzgzLjFjLjggNi42IDguOSA5LjQgMTMuNiA0LjdsNDMuNy00My43TDgyNCA4NzcuN2MzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDQyLjQtNDIuM2MzLjEtMy4xIDMuMS04LjIgMC0xMS4zTDc0NCA2OTAuNHonKSk7XG5leHBvcnRzLkZ1bGxzY3JlZW5PdXRsaW5lID0gZ2V0SWNvbignZnVsbHNjcmVlbicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00yOTAgMjM2LjRsNDMuOS00My45YTguMDEgOC4wMSAwIDAgMC00LjctMTMuNkwxNjkgMTYwYy01LjEtLjYtOS41IDMuNy04LjkgOC45TDE3OSAzMjkuMWMuOCA2LjYgOC45IDkuNCAxMy42IDQuN2w0My43LTQzLjdMMzcwIDQyMy43YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsNDIuNC00Mi4zYzMuMS0zLjEgMy4xLTguMiAwLTExLjNMMjkwIDIzNi40em0zNTIuNyAxODcuM2MzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDEzMy43LTEzMy42IDQzLjcgNDMuN2E4LjAxIDguMDEgMCAwIDAgMTMuNi00LjdMODYzLjkgMTY5Yy42LTUuMS0zLjctOS41LTguOS04LjlMNjk0LjggMTc5Yy02LjYuOC05LjQgOC45LTQuNyAxMy42bDQzLjkgNDMuOUw2MDAuMyAzNzBhOC4wMyA4LjAzIDAgMCAwIDAgMTEuM2w0Mi40IDQyLjR6TTg0NSA2OTQuOWMtLjgtNi42LTguOS05LjQtMTMuNi00LjdsLTQzLjcgNDMuN0w2NTQgNjAwLjNhOC4wMyA4LjAzIDAgMCAwLTExLjMgMGwtNDIuNCA0Mi4zYTguMDMgOC4wMyAwIDAgMCAwIDExLjNMNzM0IDc4Ny42bC00My45IDQzLjlhOC4wMSA4LjAxIDAgMCAwIDQuNyAxMy42TDg1NSA4NjRjNS4xLjYgOS41LTMuNyA4LjktOC45TDg0NSA2OTQuOXptLTQ2My43LTk0LjZhOC4wMyA4LjAzIDAgMCAwLTExLjMgMEwyMzYuMyA3MzMuOWwtNDMuNy00My43YTguMDEgOC4wMSAwIDAgMC0xMy42IDQuN0wxNjAuMSA4NTVjLS42IDUuMSAzLjcgOS41IDguOSA4LjlMMzI5LjIgODQ1YzYuNi0uOCA5LjQtOC45IDQuNy0xMy42TDI5MCA3ODcuNiA0MjMuNyA2NTRjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM2wtNDIuNC00Mi40eicpKTtcbmV4cG9ydHMuR2F0ZXdheU91dGxpbmUgPSBnZXRJY29uKCdnYXRld2F5Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkyOCAzOTJjOC44IDAgMTYtNy4yIDE2LTE2VjE5MmMwLTguOC03LjItMTYtMTYtMTZINzQ0Yy04LjggMC0xNiA3LjItMTYgMTZ2NTZIMjk2di01NmMwLTguOC03LjItMTYtMTYtMTZIOTZjLTguOCAwLTE2IDcuMi0xNiAxNnYxODRjMCA4LjggNy4yIDE2IDE2IDE2aDU2djI0MEg5NmMtOC44IDAtMTYgNy4yLTE2IDE2djE4NGMwIDguOCA3LjIgMTYgMTYgMTZoMTg0YzguOCAwIDE2LTcuMiAxNi0xNnYtNTZoNDMydjU2YzAgOC44IDcuMiAxNiAxNiAxNmgxODRjOC44IDAgMTYtNy4yIDE2LTE2VjY0OGMwLTguOC03LjItMTYtMTYtMTZoLTU2VjM5Mmg1NnpNNzkyIDI0MGg4OHY4OGgtODh2LTg4em0tNjQ4IDg4di04OGg4OHY4OGgtODh6bTg4IDQ1NmgtODh2LTg4aDg4djg4em02NDgtODh2ODhoLTg4di04OGg4OHptLTgwLTY0aC01NmMtOC44IDAtMTYgNy4yLTE2IDE2djU2SDI5NnYtNTZjMC04LjgtNy4yLTE2LTE2LTE2aC01NlYzOTJoNTZjOC44IDAgMTYtNy4yIDE2LTE2di01Nmg0MzJ2NTZjMCA4LjggNy4yIDE2IDE2IDE2aDU2djI0MHonKSk7XG5leHBvcnRzLkRvd25PdXRsaW5lID0gZ2V0SWNvbignZG93bicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODQgMjU2aC03NWMtNS4xIDAtOS45IDIuNS0xMi45IDYuNkw1MTIgNjU0LjIgMjI3LjkgMjYyLjZjLTMtNC4xLTcuOC02LjYtMTIuOS02LjZoLTc1Yy02LjUgMC0xMC4zIDcuNC02LjUgMTIuN2wzNTIuNiA0ODYuMWMxMi44IDE3LjYgMzkgMTcuNiA1MS43IDBsMzUyLjYtNDg2LjFjMy45LTUuMy4xLTEyLjctNi40LTEyLjd6JykpO1xuZXhwb3J0cy5EcmFnT3V0bGluZSA9IGdldEljb24oJ2RyYWcnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTA5LjMgNTA2LjNMNzgxLjcgNDA1LjZhNy4yMyA3LjIzIDAgMCAwLTExLjcgNS43VjQ3Nkg1NDhWMjU0aDY0LjhjNiAwIDkuNC03IDUuNy0xMS43TDUxNy43IDExNC43YTcuMTQgNy4xNCAwIDAgMC0xMS4zIDBMNDA1LjYgMjQyLjNhNy4yMyA3LjIzIDAgMCAwIDUuNyAxMS43SDQ3NnYyMjJIMjU0di02NC44YzAtNi03LTkuNC0xMS43LTUuN0wxMTQuNyA1MDYuM2E3LjE0IDcuMTQgMCAwIDAgMCAxMS4zbDEyNy41IDEwMC44YzQuNyAzLjcgMTEuNy40IDExLjctNS43VjU0OGgyMjJ2MjIyaC02NC44Yy02IDAtOS40IDctNS43IDExLjdsMTAwLjggMTI3LjVjMi45IDMuNyA4LjUgMy43IDExLjMgMGwxMDAuOC0xMjcuNWMzLjctNC43LjQtMTEuNy01LjctMTEuN0g1NDhWNTQ4aDIyMnY2NC44YzAgNiA3IDkuNCAxMS43IDUuN2wxMjcuNS0xMDAuOGE3LjMgNy4zIDAgMCAwIC4xLTExLjR6JykpO1xuZXhwb3J0cy5HbG9iYWxPdXRsaW5lID0gZ2V0SWNvbignZ2xvYmFsJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1NC40IDgwMC45Yy4yLS4zLjUtLjYuNy0uOUM5MjAuNiA3MjIuMSA5NjAgNjIxLjcgOTYwIDUxMnMtMzkuNC0yMTAuMS0xMDQuOC0yODhjLS4yLS4zLS41LS41LS43LS44LTEuMS0xLjMtMi4xLTIuNS0zLjItMy43LS40LS41LS44LS45LTEuMi0xLjRsLTQuMS00LjctLjEtLjFjLTEuNS0xLjctMy4xLTMuNC00LjYtNS4xbC0uMS0uMWMtMy4yLTMuNC02LjQtNi44LTkuNy0xMC4xbC0uMS0uMS00LjgtNC44LS4zLS4zYy0xLjUtMS41LTMtMi45LTQuNS00LjMtLjUtLjUtMS0xLTEuNi0xLjUtMS0xLTItMS45LTMtMi44LS4zLS4zLS43LS42LTEtMUM3MzYuNCAxMDkuMiA2MjkuNSA2NCA1MTIgNjRzLTIyNC40IDQ1LjItMzA0LjMgMTE5LjJjLS4zLjMtLjcuNi0xIDEtMSAuOS0yIDEuOS0zIDIuOS0uNS41LTEgMS0xLjYgMS41LTEuNSAxLjQtMyAyLjktNC41IDQuM2wtLjMuMy00LjggNC44LS4xLjFjLTMuMyAzLjMtNi41IDYuNy05LjcgMTAuMWwtLjEuMWMtMS42IDEuNy0zLjEgMy40LTQuNiA1LjFsLS4xLjFjLTEuNCAxLjUtMi44IDMuMS00LjEgNC43LS40LjUtLjguOS0xLjIgMS40LTEuMSAxLjItMi4xIDIuNS0zLjIgMy43LS4yLjMtLjUuNS0uNy44QzEwMy40IDMwMS45IDY0IDQwMi4zIDY0IDUxMnMzOS40IDIxMC4xIDEwNC44IDI4OGMuMi4zLjUuNi43LjlsMy4xIDMuN2MuNC41LjguOSAxLjIgMS40bDQuMSA0LjdjMCAuMS4xLjEuMS4yIDEuNSAxLjcgMyAzLjQgNC42IDVsLjEuMWMzLjIgMy40IDYuNCA2LjggOS42IDEwLjFsLjEuMWMxLjYgMS42IDMuMSAzLjIgNC43IDQuN2wuMy4zYzMuMyAzLjMgNi43IDYuNSAxMC4xIDkuNiA4MC4xIDc0IDE4NyAxMTkuMiAzMDQuNSAxMTkuMnMyMjQuNC00NS4yIDMwNC4zLTExOS4yYTMwMCAzMDAgMCAwIDAgMTAtOS42bC4zLS4zYzEuNi0xLjYgMy4yLTMuMSA0LjctNC43bC4xLS4xYzMuMy0zLjMgNi41LTYuNyA5LjYtMTAuMWwuMS0uMWMxLjUtMS43IDMuMS0zLjMgNC42LTUgMC0uMS4xLS4xLjEtLjIgMS40LTEuNSAyLjgtMy4xIDQuMS00LjcuNC0uNS44LS45IDEuMi0xLjRhOTkgOTkgMCAwIDAgMy4zLTMuN3ptNC4xLTE0Mi42Yy0xMy44IDMyLjYtMzIgNjIuOC01NC4yIDkwLjJhNDQ0LjA3IDQ0NC4wNyAwIDAgMC04MS41LTU1LjljMTEuNi00Ni45IDE4LjgtOTguNCAyMC43LTE1Mi42SDg4N2MtMyA0MC45LTEyLjYgODAuNi0yOC41IDExOC4zek04ODcgNDg0SDc0My41Yy0xLjktNTQuMi05LjEtMTA1LjctMjAuNy0xNTIuNiAyOS4zLTE1LjYgNTYuNi0zNC40IDgxLjUtNTUuOUEzNzMuODYgMzczLjg2IDAgMCAxIDg4NyA0ODR6TTY1OC4zIDE2NS41YzM5LjcgMTYuOCA3NS44IDQwIDEwNy42IDY5LjJhMzk0LjcyIDM5NC43MiAwIDAgMS01OS40IDQxLjhjLTE1LjctNDUtMzUuOC04NC4xLTU5LjItMTE1LjQgMy43IDEuNCA3LjQgMi45IDExIDQuNHptLTkwLjYgNzAwLjZjLTkuMiA3LjItMTguNCAxMi43LTI3LjcgMTYuNFY2OTdhMzg5LjEgMzg5LjEgMCAwIDEgMTE1LjcgMjYuMmMtOC4zIDI0LjYtMTcuOSA0Ny4zLTI5IDY3LjgtMTcuNCAzMi40LTM3LjggNTguMy01OSA3NS4xem01OS02MzMuMWMxMSAyMC42IDIwLjcgNDMuMyAyOSA2Ny44QTM4OS4xIDM4OS4xIDAgMCAxIDU0MCAzMjdWMTQxLjZjOS4yIDMuNyAxOC41IDkuMSAyNy43IDE2LjQgMjEuMiAxNi43IDQxLjYgNDIuNiA1OSA3NXpNNTQwIDY0MC45VjU0MGgxNDcuNWMtMS42IDQ0LjItNy4xIDg3LjEtMTYuMyAxMjcuOGwtLjMgMS4yQTQ0NS4wMiA0NDUuMDIgMCAwIDAgNTQwIDY0MC45em0wLTE1Ni45VjM4My4xYzQ1LjgtMi44IDg5LjgtMTIuNSAxMzAuOS0yOC4xbC4zIDEuMmM5LjIgNDAuNyAxNC43IDgzLjUgMTYuMyAxMjcuOEg1NDB6bS01NiA1NnYxMDAuOWMtNDUuOCAyLjgtODkuOCAxMi41LTEzMC45IDI4LjFsLS4zLTEuMmMtOS4yLTQwLjctMTQuNy04My41LTE2LjMtMTI3LjhINDg0em0tMTQ3LjUtNTZjMS42LTQ0LjIgNy4xLTg3LjEgMTYuMy0xMjcuOGwuMy0xLjJjNDEuMSAxNS42IDg1IDI1LjMgMTMwLjkgMjguMVY0ODRIMzM2LjV6TTQ4NCA2OTd2MTg1LjRjLTkuMi0zLjctMTguNS05LjEtMjcuNy0xNi40LTIxLjItMTYuNy00MS43LTQyLjctNTkuMS03NS4xLTExLTIwLjYtMjAuNy00My4zLTI5LTY3LjggMzcuMi0xNC42IDc1LjktMjMuMyAxMTUuOC0yNi4xem0wLTM3MGEzODkuMSAzODkuMSAwIDAgMS0xMTUuNy0yNi4yYzguMy0yNC42IDE3LjktNDcuMyAyOS02Ny44IDE3LjQtMzIuNCAzNy44LTU4LjQgNTkuMS03NS4xIDkuMi03LjIgMTguNC0xMi43IDI3LjctMTYuNFYzMjd6TTM2NS43IDE2NS41YzMuNy0xLjUgNy4zLTMgMTEtNC40LTIzLjQgMzEuMy00My41IDcwLjQtNTkuMiAxMTUuNC0yMS0xMi00MC45LTI2LTU5LjQtNDEuOCAzMS44LTI5LjIgNjcuOS01Mi40IDEwNy42LTY5LjJ6TTE2NS41IDM2NS43YzEzLjgtMzIuNiAzMi02Mi44IDU0LjItOTAuMiAyNC45IDIxLjUgNTIuMiA0MC4zIDgxLjUgNTUuOS0xMS42IDQ2LjktMTguOCA5OC40LTIwLjcgMTUyLjZIMTM3YzMtNDAuOSAxMi42LTgwLjYgMjguNS0xMTguM3pNMTM3IDU0MGgxNDMuNWMxLjkgNTQuMiA5LjEgMTA1LjcgMjAuNyAxNTIuNmE0NDQuMDcgNDQ0LjA3IDAgMCAwLTgxLjUgNTUuOUEzNzMuODYgMzczLjg2IDAgMCAxIDEzNyA1NDB6bTIyOC43IDMxOC41Yy0zOS43LTE2LjgtNzUuOC00MC0xMDcuNi02OS4yIDE4LjUtMTUuOCAzOC40LTI5LjcgNTkuNC00MS44IDE1LjcgNDUgMzUuOCA4NC4xIDU5LjIgMTE1LjQtMy43LTEuNC03LjQtMi45LTExLTQuNHptMjkyLjYgMGMtMy43IDEuNS03LjMgMy0xMSA0LjQgMjMuNC0zMS4zIDQzLjUtNzAuNCA1OS4yLTExNS40IDIxIDEyIDQwLjkgMjYgNTkuNCA0MS44YTM3My44MSAzNzMuODEgMCAwIDEtMTA3LjYgNjkuMnonKSk7XG5leHBvcnRzLkdvb2dsZVBsdXNPdXRsaW5lID0gZ2V0SWNvbignZ29vZ2xlLXBsdXMnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODc5LjUgNDcwLjRjLS4zLTI3LS40LTU0LjItLjUtODEuM2gtODAuOGMtLjMgMjctLjUgNTQuMS0uNyA4MS4zLTI3LjIuMS01NC4yLjMtODEuMi42djgwLjljMjcgLjMgNTQuMi41IDgxLjIuOC4zIDI3IC4zIDU0LjEuNSA4MS4xaDgwLjljLjEtMjcgLjMtNTQuMS41LTgxLjMgMjcuMi0uMyA1NC4yLS40IDgxLjItLjd2LTgwLjljLTI2LjktLjItNTQuMS0uMi04MS4xLS41em0tNTMwIC40Yy0uMSAzMi4zIDAgNjQuNy4xIDk3IDU0LjIgMS44IDEwOC41IDEgMTYyLjcgMS44LTIzLjkgMTIwLjMtMTg3LjQgMTU5LjMtMjczLjkgODAuNy04OS02OC45LTg0LjgtMjIwIDcuNy0yODQgNjQuNy01MS42IDE1Ni42LTM4LjkgMjIxLjMgNS44IDI1LjQtMjMuNSA0OS4yLTQ4LjcgNzIuMS03NC43LTUzLjgtNDIuOS0xMTkuOC03My41LTE5MC03MC4zLTE0Ni42LTQuOS0yODEuMyAxMjMuNS0yODMuNyAyNzAuMi05LjQgMTE5LjkgNjkuNCAyMzcuNCAxODAuNiAyNzkuOCAxMTAuOCA0Mi43IDI1Mi45IDEzLjYgMzIzLjctODYgNDYuNy02Mi45IDU2LjgtMTQzLjkgNTEuMy0yMjAtOTAuNy0uNy0xODEuMy0uNi0yNzEuOS0uM3onKSk7XG5leHBvcnRzLkdvb2dsZU91dGxpbmUgPSBnZXRJY29uKCdnb29nbGUnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODgxIDQ0Mi40SDUxOS43djE0OC41aDIwNi40Yy04LjkgNDgtMzUuOSA4OC42LTc2LjYgMTE1LjgtMzQuNCAyMy03OC4zIDM2LjYtMTI5LjkgMzYuNi05OS45IDAtMTg0LjQtNjcuNS0yMTQuNi0xNTguMi03LjYtMjMtMTItNDcuNi0xMi03Mi45czQuNC00OS45IDEyLTcyLjljMzAuMy05MC42IDExNC44LTE1OC4xIDIxNC43LTE1OC4xIDU2LjMgMCAxMDYuOCAxOS40IDE0Ni42IDU3LjRsMTEwLTExMC4xYy02Ni41LTYyLTE1My4yLTEwMC0yNTYuNi0xMDAtMTQ5LjkgMC0yNzkuNiA4Ni0zNDIuNyAyMTEuNC0yNiA1MS44LTQwLjggMTEwLjQtNDAuOCAxNzIuNFMxNTEgNjMyLjggMTc3IDY4NC42QzI0MC4xIDgxMCAzNjkuOCA4OTYgNTE5LjcgODk2YzEwMy42IDAgMTkwLjQtMzQuNCAyNTMuOC05MyA3Mi41LTY2LjggMTE0LjQtMTY1LjIgMTE0LjQtMjgyLjEgMC0yNy4yLTIuNC01My4zLTYuOS03OC41eicpKTtcbmV4cG9ydHMuSGVhdE1hcE91dGxpbmUgPSBnZXRJY29uKCdoZWF0LW1hcCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005NTUuNyA4NTZsLTQxNi03MjBjLTYuMi0xMC43LTE2LjktMTYtMjcuNy0xNnMtMjEuNiA1LjMtMjcuNyAxNmwtNDE2IDcyMEM1NiA4NzcuNCA3MS40IDkwNCA5NiA5MDRoODMyYzI0LjYgMCA0MC0yNi42IDI3LjctNDh6bS03OTAuNC0yMy45TDUxMiAyMzEuOSA4NTguNyA4MzJIMTY1LjN6bTMxOS00NzQuMWwtMjI4IDM5NGMtMTIuMyAyMS4zIDMuMSA0OCAyNy43IDQ4aDQ1NS44YzI0LjcgMCA0MC4xLTI2LjcgMjcuNy00OEw1MzkuNyAzNThjLTYuMi0xMC43LTE3LTE2LTI3LjctMTYtMTAuOCAwLTIxLjYgNS4zLTI3LjcgMTZ6bTIxNCAzODZIMzI1LjdMNTEyIDQyMmwxODYuMyAzMjJ6bS0yMTQtMTk0LjFsLTU3IDk4LjRDNDE1IDY2OS41IDQzMC40IDY5NiA0NTUgNjk2aDExNGMyNC42IDAgMzkuOS0yNi41IDI3LjctNDcuN2wtNTctOTguNGMtNi4xLTEwLjYtMTYuOS0xNS45LTI3LjctMTUuOXMtMjEuNSA1LjMtMjcuNyAxNS45em01Ny4xIDk4LjRoLTU4LjdsMjkuNC01MC43IDI5LjMgNTAuN3onKSk7XG5leHBvcnRzLkdvbGRPdXRsaW5lID0gZ2V0SWNvbignZ29sZCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00zNDIgNDcyaDM0MmMuNCAwIC45IDAgMS4zLS4xIDQuNC0uNyA3LjMtNC44IDYuNi05LjJsLTQwLjItMjQ4Yy0uNi0zLjktNC02LjctNy45LTYuN0gzODIuMmMtMy45IDAtNy4zIDIuOC03LjkgNi43bC00MC4yIDI0OGMtLjEuNC0uMS45LS4xIDEuMyAwIDQuNCAzLjYgOCA4IDh6bTkxLjItMTk2aDE1OS41bDIwLjcgMTI4aC0yMDFsMjAuOC0xMjh6bTIuNSAyODIuN2MtLjYtMy45LTQtNi43LTcuOS02LjdIMTY2LjJjLTMuOSAwLTcuMyAyLjgtNy45IDYuN2wtNDAuMiAyNDhjLS4xLjQtLjEuOS0uMSAxLjMgMCA0LjQgMy42IDggOCA4aDM0MmMuNCAwIC45IDAgMS4zLS4xIDQuNC0uNyA3LjMtNC44IDYuNi05LjJsLTQwLjItMjQ4ek0xOTYuNSA3NDhsMjAuNy0xMjhoMTU5LjVsMjAuNyAxMjhIMTk2LjV6bTcwOS40IDU4LjdsLTQwLjItMjQ4Yy0uNi0zLjktNC02LjctNy45LTYuN0g1OTYuMmMtMy45IDAtNy4zIDIuOC03LjkgNi43bC00MC4yIDI0OGMtLjEuNC0uMS45LS4xIDEuMyAwIDQuNCAzLjYgOCA4IDhoMzQyYy40IDAgLjkgMCAxLjMtLjEgNC4zLS43IDcuMy00LjggNi42LTkuMnpNNjI2LjUgNzQ4bDIwLjctMTI4aDE1OS41bDIwLjcgMTI4SDYyNi41eicpKTtcbmV4cG9ydHMuSGlzdG9yeU91dGxpbmUgPSBnZXRJY29uKCdoaXN0b3J5Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUzNi4xIDI3M0g0ODhjLTQuNCAwLTggMy42LTggOHYyNzUuM2MwIDIuNiAxLjIgNSAzLjMgNi41bDE2NS4zIDEyMC43YzMuNiAyLjYgOC42IDEuOSAxMS4yLTEuN2wyOC42LTM5YzIuNy0zLjcgMS45LTguNy0xLjctMTEuMkw1NDQuMSA1MjguNVYyODFjMC00LjQtMy42LTgtOC04em0yMTkuOCA3NS4ybDE1Ni44IDM4LjNjNSAxLjIgOS45LTIuNiA5LjktNy43bC44LTE2MS41YzAtNi43LTcuNy0xMC41LTEyLjktNi4zTDc1Mi45IDMzNC4xYTggOCAwIDAgMCAzIDE0LjF6bTE2Ny43IDMwMS4xbC01Ni43LTE5LjVhOCA4IDAgMCAwLTEwLjEgNC44Yy0xLjkgNS4xLTMuOSAxMC4xLTYgMTUuMS0xNy44IDQyLjEtNDMuMyA4MC03NS45IDExMi41YTM1MyAzNTMgMCAwIDEtMTEyLjUgNzUuOSAzNTIuMTggMzUyLjE4IDAgMCAxLTEzNy43IDI3LjhjLTQ3LjggMC05NC4xLTkuMy0xMzcuNy0yNy44YTM1MyAzNTMgMCAwIDEtMTEyLjUtNzUuOWMtMzIuNS0zMi41LTU4LTcwLjQtNzUuOS0xMTIuNUEzNTMuNDQgMzUzLjQ0IDAgMCAxIDE3MSA1MTJjMC00Ny44IDkuMy05NC4yIDI3LjgtMTM3LjggMTcuOC00Mi4xIDQzLjMtODAgNzUuOS0xMTIuNWEzNTMgMzUzIDAgMCAxIDExMi41LTc1LjlDNDMwLjYgMTY3LjMgNDc3IDE1OCA1MjQuOCAxNThzOTQuMSA5LjMgMTM3LjcgMjcuOEEzNTMgMzUzIDAgMCAxIDc3NSAyNjEuN2MxMC4yIDEwLjMgMTkuOCAyMSAyOC42IDMyLjNsNTkuOC00Ni44Qzc4NC43IDE0Ni42IDY2Mi4yIDgxLjkgNTI0LjYgODIgMjg1IDgyLjEgOTIuNiAyNzYuNyA5NSA1MTYuNCA5Ny40IDc1MS45IDI4OC45IDk0MiA1MjQuOCA5NDJjMTg1LjUgMCAzNDMuNS0xMTcuNiA0MDMuNy0yODIuMyAxLjUtNC4yLS43LTguOS00LjktMTAuNHonKSk7XG5leHBvcnRzLkllT3V0bGluZSA9IGdldEljb24oJ2llJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1Mi42IDM2Ny42YzE2LjMtMzYuOSAzMi4xLTkwLjcgMzIuMS0xMzEuOCAwLTEwOS4xLTExOS41LTE0Ny42LTMxNC41LTU3LjktMTYxLjQtMTAuOC0zMTYuOCAxMTAuNS0zNTUuNiAyNzkuNyA0Ni4zLTUyLjMgMTE3LjQtMTIzLjQgMTgzLTE1MS43QzMxNi4xIDM3OC4zIDI0Ni43IDQ3MCAxOTQgNTY1LjZjLTMxLjEgNTYuOS02NiAxNDguOC02NiAyMTcuNSAwIDE0Ny45IDEzOS4zIDEyOS44IDI3MC40IDYzIDQ3LjEgMjMuMSA5OS44IDIzLjQgMTUyLjUgMjMuNCAxNDUuNyAwIDI3Ni40LTgxLjQgMzI1LjItMjE5SDY5NC45Yy03OC44IDEzMi45LTI5NS4yIDc5LjUtMjk1LjItNzEuMmg0OTMuMmM5LjYtNjUuNC0yLjUtMTQzLjYtNDAuMy0yMTEuN3pNMjI0LjggNjQ4LjNjMjYuNiA3Ni43IDgwLjYgMTQzLjggMTUwLjQgMTg1LTEzMy4xIDczLjQtMjU5LjkgNDMuNi0xNTAuNC0xODV6bTE3NC0xNjMuM2MzLTgyLjcgNzUuNC0xNDIuMyAxNTYtMTQyLjMgODAuMSAwIDE1MyA1OS42IDE1NiAxNDIuM2gtMzEyem0yNzYuOC0yODEuNGMzMi4xLTE1LjQgNzIuOC0zMyAxMDguOC0zMyA0Ny4xIDAgODEuNCAzMi42IDgxLjQgODAuNiAwIDMwLTExLjEgNzMuNS0yMS45IDEwMS44LTM5LjMtNjMuNS05OC45LTEyMi40LTE2OC4zLTE0OS40eicpKTtcbmV4cG9ydHMuSW5ib3hPdXRsaW5lID0gZ2V0SWNvbignaW5ib3gnLCBvdXRsaW5lLCBnZXROb2RlKG5vcm1hbFZpZXdCb3gsICdNODg1LjIgNDQ2LjNsLS4yLS44LTExMi4yLTI4NS4xYy01LTE2LjEtMTkuOS0yNy4yLTM2LjgtMjcuMkgyODEuMmMtMTcgMC0zMi4xIDExLjMtMzYuOSAyNy42TDEzOS40IDQ0M2wtLjMuNy0uMi44Yy0xLjMgNC45LTEuNyA5LjktMSAxNC44LS4xIDEuNi0uMiAzLjItLjIgNC44VjgzMGE2MC45IDYwLjkgMCAwIDAgNjAuOCA2MC44aDYyNy4yYzMzLjUgMCA2MC44LTI3LjMgNjAuOS02MC44VjQ2NC4xYzAtMS4zIDAtMi42LS4xLTMuNy40LTQuOSAwLTkuNi0xLjMtMTQuMXptLTI5NS44LTQzbC0uMyAxNS43Yy0uOCA0NC45LTMxLjggNzUuMS03Ny4xIDc1LjEtMjIuMSAwLTQxLjEtNy4xLTU0LjgtMjAuNlM0MzYgNDQxLjIgNDM1LjYgNDE5bC0uMy0xNS43SDIyOS41TDMwOSAyMTBoMzk5LjJsODEuNyAxOTMuM0g1ODkuNHptLTM3NSA3Ni44aDE1Ny4zYzI0LjMgNTcuMSA3NiA5MC44IDE0MC40IDkwLjggMzMuNyAwIDY1LTkuNCA5MC4zLTI3LjIgMjIuMi0xNS42IDM5LjUtMzcuNCA1MC43LTYzLjZoMTU2LjVWODE0SDIxNC40VjQ4MC4xeicpKTtcbmV4cG9ydHMuSW1wb3J0T3V0bGluZSA9IGdldEljb24oJ2ltcG9ydCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODguMyA3NTcuNGgtNTMuOGMtNC4yIDAtNy43IDMuNS03LjcgNy43djYxLjhIMTk3LjFWMTk3LjFoNjI5Ljh2NjEuOGMwIDQuMiAzLjUgNy43IDcuNyA3LjdoNTMuOGM0LjIgMCA3LjctMy40IDcuNy03LjdWMTU4LjdjMC0xNy0xMy43LTMwLjctMzAuNy0zMC43SDE1OC43Yy0xNyAwLTMwLjcgMTMuNy0zMC43IDMwLjd2NzA2LjZjMCAxNyAxMy43IDMwLjcgMzAuNyAzMC43aDcwNi42YzE3IDAgMzAuNy0xMy43IDMwLjctMzAuN1Y3NjUuMWMwLTQuMy0zLjUtNy43LTcuNy03Ljd6TTkwMiA0NzZINTg4di03NmMwLTYuNy03LjgtMTAuNS0xMy02LjNsLTE0MS45IDExMmE4IDggMCAwIDAgMCAxMi42bDE0MS45IDExMmM1LjMgNC4yIDEzIC40IDEzLTYuM3YtNzZoMzE0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04eicpKTtcbmV4cG9ydHMuSW5mb091dGxpbmUgPSBnZXRJY29uKCdpbmZvJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQ0OCAyMjRhNjQgNjQgMCAxIDAgMTI4IDAgNjQgNjQgMCAxIDAtMTI4IDB6bTk2IDE2OGgtNjRjLTQuNCAwLTggMy42LTggOHY0NjRjMCA0LjQgMy42IDggOCA4aDY0YzQuNCAwIDgtMy42IDgtOFY0MDBjMC00LjQtMy42LTgtOC04eicpKTtcbmV4cG9ydHMuSXRhbGljT3V0bGluZSA9IGdldEljb24oJ2l0YWxpYycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ003OTggMTYwSDM2NmMtNC40IDAtOCAzLjYtOCA4djY0YzAgNC40IDMuNiA4IDggOGgxODEuMmwtMTU2IDU0NEgyMjljLTQuNCAwLTggMy42LTggOHY2NGMwIDQuNCAzLjYgOCA4IDhoNDMyYzQuNCAwIDgtMy42IDgtOHYtNjRjMC00LjQtMy42LTgtOC04SDQ3NC40bDE1Ni01NDRINzk4YzQuNCAwIDgtMy42IDgtOHYtNjRjMC00LjQtMy42LTgtOC04eicpKTtcbmV4cG9ydHMuSXNzdWVzQ2xvc2VPdXRsaW5lID0gZ2V0SWNvbignaXNzdWVzLWNsb3NlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQ2NCA2ODhhNDggNDggMCAxIDAgOTYgMCA0OCA0OCAwIDEgMC05NiAwem03Mi0xMTJjNC40IDAgOC0zLjYgOC04VjI5NmMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2MjcyYzAgNC40IDMuNiA4IDggOGg0OHptNDAwLTE4OGgtNTkuM2MtMi42IDAtNSAxLjItNi41IDMuM0w3NjMuNyA1MzguMWwtNDkuOS02OC44YTcuOTIgNy45MiAwIDAgMC02LjUtMy4zSDY0OGMtNi41IDAtMTAuMyA3LjQtNi41IDEyLjdsMTA5LjIgMTUwLjdhMTYuMSAxNi4xIDAgMCAwIDI2IDBsMTY1LjgtMjI4LjdjMy44LTUuMyAwLTEyLjctNi41LTEyLjd6bS00NCAzMDZoLTY0LjJjLTUuNSAwLTEwLjYgMi45LTEzLjYgNy41YTM1Mi4yIDM1Mi4yIDAgMCAxLTQ5LjggNjIuMkEzNTUuOTIgMzU1LjkyIDAgMCAxIDY1MS4xIDg0MGEzNTUgMzU1IDAgMCAxLTEzOC43IDI3LjljLTQ4LjEgMC05NC44LTkuNC0xMzguNy0yNy45YTM1NS45MiAzNTUuOTIgMCAwIDEtMTEzLjMtNzYuM0EzNTMuMDYgMzUzLjA2IDAgMCAxIDE4NCA2NTAuNWMtMTguNi00My44LTI4LTkwLjUtMjgtMTM4LjVzOS40LTk0LjcgMjgtMTM4LjVjMTcuOS00Mi40IDQzLjYtODAuNSA3Ni40LTExMy4yIDMyLjgtMzIuNyA3MC45LTU4LjQgMTEzLjMtNzYuM2EzNTUgMzU1IDAgMCAxIDEzOC43LTI3LjljNDguMSAwIDk0LjggOS40IDEzOC43IDI3LjkgNDIuNCAxNy45IDgwLjUgNDMuNiAxMTMuMyA3Ni4zIDE5IDE5IDM1LjYgMzkuOCA0OS44IDYyLjIgMi45IDQuNyA4LjEgNy41IDEzLjYgNy41SDg5MmM2IDAgOS44LTYuMyA3LjItMTEuNkM4MjguOCAxNzguNSA2ODQuNyA4MiA1MTcuNyA4MCAyNzguOSA3Ny4yIDgwLjUgMjcyLjUgODAgNTExLjIgNzkuNSA3NTAuMSAyNzMuMyA5NDQgNTEyLjQgOTQ0YzE2OS4yIDAgMzE1LjYtOTcgMzg2LjctMjM4LjRBOCA4IDAgMCAwIDg5MiA2OTR6JykpO1xuZXhwb3J0cy5LZXlPdXRsaW5lID0gZ2V0SWNvbigna2V5Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTYwOCAxMTJjLTE2Ny45IDAtMzA0IDEzNi4xLTMwNCAzMDQgMCA3MC4zIDIzLjkgMTM1IDYzLjkgMTg2LjVsLTQxLjEgNDEuMS02Mi4zLTYyLjNhOC4xNSA4LjE1IDAgMCAwLTExLjQgMGwtMzkuOCAzOS44YTguMTUgOC4xNSAwIDAgMCAwIDExLjRsNjIuMyA2Mi4zLTQ0LjkgNDQuOS02Mi4zLTYyLjNhOC4xNSA4LjE1IDAgMCAwLTExLjQgMGwtMzkuOCAzOS44YTguMTUgOC4xNSAwIDAgMCAwIDExLjRsNjIuMyA2Mi4zLTY1LjMgNjUuM2E4LjAzIDguMDMgMCAwIDAgMCAxMS4zbDQyLjMgNDIuM2MzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDI1My42LTI1My42QTMwNC4wNiAzMDQuMDYgMCAwIDAgNjA4IDcyMGMxNjcuOSAwIDMwNC0xMzYuMSAzMDQtMzA0Uzc3NS45IDExMiA2MDggMTEyem0xNjEuMiA0NjUuMkM3MjYuMiA2MjAuMyA2NjguOSA2NDQgNjA4IDY0NGMtNjAuOSAwLTExOC4yLTIzLjctMTYxLjItNjYuOC00My4xLTQzLTY2LjgtMTAwLjMtNjYuOC0xNjEuMiAwLTYwLjkgMjMuNy0xMTguMiA2Ni44LTE2MS4yIDQzLTQzLjEgMTAwLjMtNjYuOCAxNjEuMi02Ni44IDYwLjkgMCAxMTguMiAyMy43IDE2MS4yIDY2LjggNDMuMSA0MyA2Ni44IDEwMC4zIDY2LjggMTYxLjIgMCA2MC45LTIzLjcgMTE4LjItNjYuOCAxNjEuMnonKSk7XG5leHBvcnRzLkxhcHRvcE91dGxpbmUgPSBnZXRJY29uKCdsYXB0b3AnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTU2LjkgODQ1LjFMODk2LjQgNjMyVjE2OGMwLTE3LjctMTQuMy0zMi0zMi0zMmgtNzA0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY0NjRMNjcuOSA4NDUuMUM2MC40IDg2NiA3NS44IDg4OCA5OCA4ODhoODI4LjhjMjIuMiAwIDM3LjYtMjIgMzAuMS00Mi45ek0yMDAuNCAyMDhoNjI0djM5NWgtNjI0VjIwOHptMjI4LjMgNjA4bDguMS0zN2gxNTAuM2w4LjEgMzdINDI4Ljd6bTIyNCAwbC0xOS4xLTg2LjdjLS44LTMuNy00LjEtNi4zLTcuOC02LjNIMzk4LjJjLTMuOCAwLTcgMi42LTcuOCA2LjNMMzcxLjMgODE2SDE1MWw0Mi4zLTE0OWg2MzguMmw0Mi4zIDE0OUg2NTIuN3onKSk7XG5leHBvcnRzLkxlZnRPdXRsaW5lID0gZ2V0SWNvbignbGVmdCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ003MjQgMjE4LjNWMTQxYzAtNi43LTcuNy0xMC40LTEyLjktNi4zTDI2MC4zIDQ4Ni44YTMxLjg2IDMxLjg2IDAgMCAwIDAgNTAuM2w0NTAuOCAzNTIuMWM1LjMgNC4xIDEyLjkuNCAxMi45LTYuM3YtNzcuM2MwLTQuOS0yLjMtOS42LTYuMS0xMi42bC0zNjAtMjgxIDM2MC0yODEuMWMzLjgtMyA2LjEtNy43IDYuMS0xMi42eicpKTtcbmV4cG9ydHMuTGlua091dGxpbmUgPSBnZXRJY29uKCdsaW5rJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTU3NCA2NjUuNGE4LjAzIDguMDMgMCAwIDAtMTEuMyAwTDQ0Ni41IDc4MS42Yy01My44IDUzLjgtMTQ0LjYgNTkuNS0yMDQgMC01OS41LTU5LjUtNTMuOC0xNTAuMiAwLTIwNGwxMTYuMi0xMTYuMmMzLjEtMy4xIDMuMS04LjIgMC0xMS4zbC0zOS44LTM5LjhhOC4wMyA4LjAzIDAgMCAwLTExLjMgMEwxOTEuNCA1MjYuNWMtODQuNiA4NC42LTg0LjYgMjIxLjUgMCAzMDZzMjIxLjUgODQuNiAzMDYgMGwxMTYuMi0xMTYuMmMzLjEtMy4xIDMuMS04LjIgMC0xMS4zTDU3NCA2NjUuNHptMjU4LjYtNDc0Yy04NC42LTg0LjYtMjIxLjUtODQuNi0zMDYgMEw0MTAuMyAzMDcuNmE4LjAzIDguMDMgMCAwIDAgMCAxMS4zbDM5LjcgMzkuN2MzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDExNi4yLTExNi4yYzUzLjgtNTMuOCAxNDQuNi01OS41IDIwNCAwIDU5LjUgNTkuNSA1My44IDE1MC4yIDAgMjA0TDY2NS4zIDU2Mi42YTguMDMgOC4wMyAwIDAgMCAwIDExLjNsMzkuOCAzOS44YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMTE2LjItMTE2LjJjODQuNS04NC42IDg0LjUtMjIxLjUgMC0zMDYuMXpNNjEwLjEgMzcyLjNhOC4wMyA4LjAzIDAgMCAwLTExLjMgMEwzNzIuMyA1OTguN2E4LjAzIDguMDMgMCAwIDAgMCAxMS4zbDM5LjYgMzkuNmMzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDIyNi40LTIyNi40YzMuMS0zLjEgMy4xLTguMiAwLTExLjNsLTM5LjUtMzkuNnonKSk7XG5leHBvcnRzLkxpbmVDaGFydE91dGxpbmUgPSBnZXRJY29uKCdsaW5lLWNoYXJ0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4OCA3OTJIMjAwVjE2OGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2Njg4YzAgNC40IDMuNiA4IDggOGg3NTJjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTMwNS44IDYzNy43YzMuMSAzLjEgOC4xIDMuMSAxMS4zIDBsMTM4LjMtMTM3LjZMNTgzIDYyOC41YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMjc1LjQtMjc1LjNjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM2wtMzkuNi0zOS42YTguMDMgOC4wMyAwIDAgMC0xMS4zIDBsLTIzMCAyMjkuOUw0NjEuNCA0MDRhOC4wMyA4LjAzIDAgMCAwLTExLjMgMEwyNjYuMyA1ODYuN2E4LjAzIDguMDMgMCAwIDAgMCAxMS4zbDM5LjUgMzkuN3onKSk7XG5leHBvcnRzLkxpbmVIZWlnaHRPdXRsaW5lID0gZ2V0SWNvbignbGluZS1oZWlnaHQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNjQ4IDE2MEgxMDRjLTQuNCAwLTggMy42LTggOHYxMjhjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNjRoMTY4djU2MGgtOTJjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoMjY0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC05MlYyMzJoMTY4djY0YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LThWMTY4YzAtNC40LTMuNi04LTgtOHptMjcyLjggNTQ2SDg1NlYzMThoNjQuOGM2IDAgOS40LTcgNS43LTExLjdMODI1LjcgMTc4LjdhNy4xNCA3LjE0IDAgMCAwLTExLjMgMEw3MTMuNiAzMDYuM2E3LjIzIDcuMjMgMCAwIDAgNS43IDExLjdINzg0djM4OGgtNjQuOGMtNiAwLTkuNCA3LTUuNyAxMS43bDEwMC44IDEyNy41YzIuOSAzLjcgOC41IDMuNyAxMS4zIDBsMTAwLjgtMTI3LjVhNy4yIDcuMiAwIDAgMC01LjYtMTEuN3onKSk7XG5leHBvcnRzLkxpbmVPdXRsaW5lID0gZ2V0SWNvbignbGluZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MDQgNDc2SDEyMGMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg3ODRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5Mb2FkaW5nM1F1YXJ0ZXJzT3V0bGluZSA9IGdldEljb24oJ2xvYWRpbmctMy1xdWFydGVycycsIG91dGxpbmUsIGdldE5vZGUobm9ybWFsVmlld0JveCwgJ001MTIgMTAyNGMtNjkuMSAwLTEzNi4yLTEzLjUtMTk5LjMtNDAuMkMyNTEuNyA5NTggMTk3IDkyMSAxNTAgODc0Yy00Ny00Ny04NC0xMDEuNy0xMDkuOC0xNjIuN0MxMy41IDY0OC4yIDAgNTgxLjEgMCA1MTJjMC0xOS45IDE2LjEtMzYgMzYtMzZzMzYgMTYuMSAzNiAzNmMwIDU5LjQgMTEuNiAxMTcgMzQuNiAxNzEuMyAyMi4yIDUyLjQgNTMuOSA5OS41IDk0LjMgMTM5LjkgNDAuNCA0MC40IDg3LjUgNzIuMiAxMzkuOSA5NC4zQzM5NSA5NDAuNCA0NTIuNiA5NTIgNTEyIDk1MmM1OS40IDAgMTE3LTExLjYgMTcxLjMtMzQuNiA1Mi40LTIyLjIgOTkuNS01My45IDEzOS45LTk0LjMgNDAuNC00MC40IDcyLjItODcuNSA5NC4zLTEzOS45Qzk0MC40IDYyOSA5NTIgNTcxLjQgOTUyIDUxMmMwLTU5LjQtMTEuNi0xMTctMzQuNi0xNzEuM2E0NDAuNDUgNDQwLjQ1IDAgMCAwLTk0LjMtMTM5LjkgNDM3LjcxIDQzNy43MSAwIDAgMC0xMzkuOS05NC4zQzYyOSA4My42IDU3MS40IDcyIDUxMiA3MmMtMTkuOSAwLTM2LTE2LjEtMzYtMzZzMTYuMS0zNiAzNi0zNmM2OS4xIDAgMTM2LjIgMTMuNSAxOTkuMyA0MC4yQzc3Mi4zIDY2IDgyNyAxMDMgODc0IDE1MGM0NyA0NyA4My45IDEwMS44IDEwOS43IDE2Mi43IDI2LjcgNjMuMSA0MC4yIDEzMC4yIDQwLjIgMTk5LjNzLTEzLjUgMTM2LjItNDAuMiAxOTkuM0M5NTggNzcyLjMgOTIxIDgyNyA4NzQgODc0Yy00NyA0Ny0xMDEuOCA4My45LTE2Mi43IDEwOS43LTYzLjEgMjYuOC0xMzAuMiA0MC4zLTE5OS4zIDQwLjN6JykpO1xuZXhwb3J0cy5Mb2FkaW5nT3V0bGluZSA9IGdldEljb24oJ2xvYWRpbmcnLCBvdXRsaW5lLCBnZXROb2RlKG5vcm1hbFZpZXdCb3gsICdNOTg4IDU0OGMtMTkuOSAwLTM2LTE2LjEtMzYtMzYgMC01OS40LTExLjYtMTE3LTM0LjYtMTcxLjNhNDQwLjQ1IDQ0MC40NSAwIDAgMC05NC4zLTEzOS45IDQzNy43MSA0MzcuNzEgMCAwIDAtMTM5LjktOTQuM0M2MjkgODMuNiA1NzEuNCA3MiA1MTIgNzJjLTE5LjkgMC0zNi0xNi4xLTM2LTM2czE2LjEtMzYgMzYtMzZjNjkuMSAwIDEzNi4yIDEzLjUgMTk5LjMgNDAuM0M3NzIuMyA2NiA4MjcgMTAzIDg3NCAxNTBjNDcgNDcgODMuOSAxMDEuOCAxMDkuNyAxNjIuNyAyNi43IDYzLjEgNDAuMiAxMzAuMiA0MC4yIDE5OS4zLjEgMTkuOS0xNiAzNi0zNS45IDM2eicpKTtcbmV4cG9ydHMuTG9naW5PdXRsaW5lID0gZ2V0SWNvbignbG9naW4nLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNTIxLjcgODJjLTE1Mi41LS40LTI4Ni43IDc4LjUtMzYzLjQgMTk3LjctMy40IDUuMy40IDEyLjMgNi43IDEyLjNoNzAuM2M0LjggMCA5LjMtMi4xIDEyLjMtNS44IDctOC41IDE0LjUtMTYuNyAyMi40LTI0LjUgMzIuNi0zMi41IDcwLjUtNTguMSAxMTIuNy03NS45IDQzLjYtMTguNCA5MC0yNy44IDEzNy45LTI3LjggNDcuOSAwIDk0LjMgOS4zIDEzNy45IDI3LjggNDIuMiAxNy44IDgwLjEgNDMuNCAxMTIuNyA3NS45IDMyLjYgMzIuNSA1OC4xIDcwLjQgNzYgMTEyLjVDODY1LjcgNDE3LjggODc1IDQ2NC4xIDg3NSA1MTJjMCA0Ny45LTkuNCA5NC4yLTI3LjggMTM3LjgtMTcuOCA0Mi4xLTQzLjQgODAtNzYgMTEyLjVzLTcwLjUgNTguMS0xMTIuNyA3NS45QTM1Mi44IDM1Mi44IDAgMCAxIDUyMC42IDg2NmMtNDcuOSAwLTk0LjMtOS40LTEzNy45LTI3LjhBMzUzLjg0IDM1My44NCAwIDAgMSAyNzAgNzYyLjNjLTcuOS03LjktMTUuMy0xNi4xLTIyLjQtMjQuNS0zLTMuNy03LjYtNS44LTEyLjMtNS44SDE2NWMtNi4zIDAtMTAuMiA3LTYuNyAxMi4zQzIzNC45IDg2My4yIDM2OC41IDk0MiA1MjAuNiA5NDJjMjM2LjIgMCA0MjgtMTkwLjEgNDMwLjQtNDI1LjZDOTUzLjQgMjc3LjEgNzYxLjMgODIuNiA1MjEuNyA4MnpNMzk1LjAyIDYyNHYtNzZoLTMxNGMtNC40IDAtOC0zLjYtOC04di01NmMwLTQuNCAzLjYtOCA4LThoMzE0di03NmMwLTYuNyA3LjgtMTAuNSAxMy02LjNsMTQxLjkgMTEyYTggOCAwIDAgMSAwIDEyLjZsLTE0MS45IDExMmMtNS4yIDQuMS0xMyAuNC0xMy02LjN6JykpO1xuZXhwb3J0cy5Mb2dvdXRPdXRsaW5lID0gZ2V0SWNvbignbG9nb3V0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg2OCA3MzJoLTcwLjNjLTQuOCAwLTkuMyAyLjEtMTIuMyA1LjgtNyA4LjUtMTQuNSAxNi43LTIyLjQgMjQuNWEzNTMuODQgMzUzLjg0IDAgMCAxLTExMi43IDc1LjlBMzUyLjggMzUyLjggMCAwIDEgNTEyLjQgODY2Yy00Ny45IDAtOTQuMy05LjQtMTM3LjktMjcuOGEzNTMuODQgMzUzLjg0IDAgMCAxLTExMi43LTc1LjkgMzUzLjI4IDM1My4yOCAwIDAgMS03Ni0xMTIuNUMxNjcuMyA2MDYuMiAxNTggNTU5LjkgMTU4IDUxMnM5LjQtOTQuMiAyNy44LTEzNy44YzE3LjgtNDIuMSA0My40LTgwIDc2LTExMi41czcwLjUtNTguMSAxMTIuNy03NS45YzQzLjYtMTguNCA5MC0yNy44IDEzNy45LTI3LjggNDcuOSAwIDk0LjMgOS4zIDEzNy45IDI3LjggNDIuMiAxNy44IDgwLjEgNDMuNCAxMTIuNyA3NS45IDcuOSA3LjkgMTUuMyAxNi4xIDIyLjQgMjQuNSAzIDMuNyA3LjYgNS44IDEyLjMgNS44SDg2OGM2LjMgMCAxMC4yLTcgNi43LTEyLjNDNzk4IDE2MC41IDY2My44IDgxLjYgNTExLjMgODIgMjcxLjcgODIuNiA3OS42IDI3Ny4xIDgyIDUxNi40IDg0LjQgNzUxLjkgMjc2LjIgOTQyIDUxMi40IDk0MmMxNTIuMSAwIDI4NS43LTc4LjggMzYyLjMtMTk3LjcgMy40LTUuMy0uNC0xMi4zLTYuNy0xMi4zem04OC45LTIyNi4zTDgxNSAzOTMuN2MtNS4zLTQuMi0xMy0uNC0xMyA2LjN2NzZINDg4Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDMxNHY3NmMwIDYuNyA3LjggMTAuNSAxMyA2LjNsMTQxLjktMTEyYTggOCAwIDAgMCAwLTEyLjZ6JykpO1xuZXhwb3J0cy5NYW5PdXRsaW5lID0gZ2V0SWNvbignbWFuJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg3NCAxMjBINjIyYy0zLjMgMC02IDIuNy02IDZ2NTZjMCAzLjMgMi43IDYgNiA2aDE2MC40TDU4My4xIDM4Ny4zYy01MC0zOC41LTExMS01OS4zLTE3NS4xLTU5LjMtNzYuOSAwLTE0OS4zIDMwLTIwMy42IDg0LjRTMTIwIDUzOS4xIDEyMCA2MTZzMzAgMTQ5LjMgODQuNCAyMDMuNkMyNTguNyA4NzQgMzMxLjEgOTA0IDQwOCA5MDRzMTQ5LjMtMzAgMjAzLjYtODQuNEM2NjYgNzY1LjMgNjk2IDY5Mi45IDY5NiA2MTZjMC02NC4xLTIwLjgtMTI0LjktNTkuMi0xNzQuOUw4MzYgMjQxLjlWNDAyYzAgMy4zIDIuNyA2IDYgNmg1NmMzLjMgMCA2LTIuNyA2LTZWMTUwYzAtMTYuNS0xMy41LTMwLTMwLTMwek00MDggODI4Yy0xMTYuOSAwLTIxMi05NS4xLTIxMi0yMTJzOTUuMS0yMTIgMjEyLTIxMiAyMTIgOTUuMSAyMTIgMjEyLTk1LjEgMjEyLTIxMiAyMTJ6JykpO1xuZXhwb3J0cy5NZWRpdW1PdXRsaW5lID0gZ2V0SWNvbignbWVkaXVtJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTgzNC43IDI3OS44bDYxLjMtNTguOVYyMDhINjgzLjdMNTMyLjQgNTg2LjQgMzYwLjMgMjA4SDEzNy43djEyLjlsNzEuNiA4Ni42YzcgNi40IDEwLjYgMTUuOCA5LjcgMjUuMlY2NzNjMi4yIDEyLjMtMS43IDI0LjgtMTAuMyAzMy43TDEyOCA4MDV2MTIuN2gyMjguNnYtMTIuOWwtODAuNi05OGEzOS45OSAzOS45OSAwIDAgMS0xMS4xLTMzLjdWMzc4LjdsMjAwLjcgNDM5LjJoMjMuM2wxNzIuNi00MzkuMnYzNDkuOWMwIDkuMiAwIDExLjEtNiAxNy4ybC02Mi4xIDYwLjNWODE5aDMwMS4ydi0xMi45bC01OS45LTU4LjljLTUuMi00LTcuOS0xMC43LTYuOC0xNy4yVjI5N2ExOC4xIDE4LjEgMCAwIDEgNi44LTE3LjJ6JykpO1xuZXhwb3J0cy5NZWRpdW1Xb3JrbWFya091dGxpbmUgPSBnZXRJY29uKCdtZWRpdW0td29ya21hcmsnLCBvdXRsaW5lLCBnZXROb2RlKG5vcm1hbFZpZXdCb3gsICdNNTE3LjIgNTkwLjU1YzAgMy41NSAwIDQuMzYgMi40IDYuNTVsMTMuNDMgMTMuMjV2LjU3aC01OS41N3YtMjUuNDdhNDEuNDQgNDEuNDQgMCAwIDEtMzkuNSAyNy42NWMtMzAuNjEgMC01Mi44NC0yNC4yNS01Mi44NC02OC44NyAwLTQxLjggMjMuOTktNjkuNjkgNTcuNjUtNjkuNjlhMzUuMTUgMzUuMTUgMCAwIDEgMzQuNjEgMjEuNjd2LTU2LjE5YTYuOTkgNi45OSAwIDAgMC0yLjcxLTYuNzlsLTEyLjgtMTIuNDV2LS41Nmw1OS4zMy03LjA0djE3Ny4zN3ptLTQzLjc0LTguMDl2LTgzLjgzYTIyLjIgMjIuMiAwIDAgMC0xNy43NC04LjRjLTE0LjQ4IDAtMjguNDcgMTMuMjUtMjguNDcgNTIuNjIgMCAzNi44NiAxMi4wNyA0OS44OCAyNy4xIDQ5Ljg4YTIzLjkxIDIzLjkxIDAgMCAwIDE5LjExLTEwLjI3em04My4yMyAyOC40NlY0OTcuNzRhNy42NSA3LjY1IDAgMCAwLTIuNC02Ljc5bC0xMy4xOS0xMy43NHYtLjU3aDU5LjU2djExNC44YzAgMy41NSAwIDQuMzYgMi40IDYuNTRsMTMuMTIgMTIuNDV2LjU3bC01OS40OS0uMDh6bS0yLjE2LTE3NS42N2MwLTEzLjQgMTAuNzQtMjQuMjUgMjMuOTktMjQuMjUgMTMuMjUgMCAyMy45OCAxMC44NiAyMy45OCAyNC4yNSAwIDEzLjQtMTAuNzMgMjQuMjUtMjMuOTggMjQuMjVzLTIzLjk5LTEwLjg1LTIzLjk5LTI0LjI1em0yMDYuODMgMTU1LjA2YzAgMy41NSAwIDQuNiAyLjQgNi43OWwxMy40MyAxMy4yNXYuNTdoLTU5Ljg4VjU4MS45YTQzLjQgNDMuNCAwIDAgMS00MS4wMSAzMS4yYy0yNi41NSAwLTQwLjc4LTE5LjU2LTQwLjc4LTU2LjU5IDAtMTcuODYgMC0zNy40My41Ni01OS40MWE2LjkxIDYuOTEgMCAwIDAtMi40LTYuNTVMNjIwLjUgNDc3LjJ2LS41N2g1OS4wOXY3My44MWMwIDI0LjI1IDMuNTEgNDAuNDIgMTguNTQgNDAuNDJhMjMuOTYgMjMuOTYgMCAwIDAgMTkuMzUtMTIuMnYtODAuODVhNy42NSA3LjY1IDAgMCAwLTIuNC02Ljc5bC0xMy4yNy0xMy44MnYtLjU3aDU5LjU2VjU5MC4zem0yMDIuNzYgMjAuNmMwLTQuMzYuOC01OS45Ny44LTcyLjc1IDAtMjQuMjUtMy43Ni00MC45OC0yMC42My00MC45OGEyNi43IDI2LjcgMCAwIDAtMjEuMTkgMTEuNjQgOTkuNjggOTkuNjggMCAwIDEgMi40IDIzLjA0YzAgMTYuODEtLjU2IDM4LjIzLS44IDU5LjY2YTYuOTEgNi45MSAwIDAgMCAyLjQgNi41NWwxMy40MyAxMi40NXYuNTZoLTYwLjEyYzAtNC4wNC44LTU5Ljk4LjgtNzIuNzYgMC0yNC42NS0zLjc2LTQwLjk4LTIwLjM5LTQwLjk4LTguMi4zLTE1LjY4IDQuOC0xOS44MyAxMS45NnY4Mi40NmMwIDMuNTYgMCA0LjM3IDIuNCA2LjU1bDEzLjExIDEyLjQ1di41NmgtNTkuNDhWNDk4LjE1YTcuNjUgNy42NSAwIDAgMC0yLjQtNi44bC0xMy4xOS0xNC4xNHYtLjU3SDg0MXYyOC43OGM1LjUzLTE5IDIzLjEzLTMxLjc2IDQyLjctMzAuOTYgMTkuODIgMCAzMy4yNiAxMS4xNiAzOC45MyAzMi4zNGE0Ni40MSA0Ni40MSAwIDAgMSA0NC43Ny0zMi4zNGMyNi41NSAwIDQxLjU4IDE5LjggNDEuNTggNTcuMjMgMCAxNy44Ny0uNTYgMzguMjQtLjggNTkuNjZhNi41IDYuNSAwIDAgMCAyLjcyIDYuNTVsMTMuMTEgMTIuNDV2LjU3aC01OS44OHpNMjE1Ljg3IDU5My4zbDE3LjY2IDE3LjA1di41N2gtODkuNjJ2LS41N2wxNy45OS0xNy4wNWE2LjkxIDYuOTEgMCAwIDAgMi40LTYuNTVWNDc3LjY5YzAtNC42IDAtMTAuODMuOC0xNi4xNkwxMDQuNjYgNjEzLjFoLS43MmwtNjIuNi0xMzkuNDVjLTEuMzctMy40Ny0xLjc3LTMuNzItMi42NS02LjA2djkxLjQzYTMyLjA4IDMyLjA4IDAgMCAwIDIuOTYgMTcuODdsMjUuMTkgMzMuNDZ2LjU3SDB2LS41N2wyNS4xOC0zMy41NWEzMi4xNiAzMi4xNiAwIDAgMCAyLjk2LTE3Ljc4VjQ1Ny45N0ExOS43MSAxOS43MSAwIDAgMCAyNCA0NDQuMTVMNi4xNiA0MjAuNzh2LS41Nmg2My45Nmw1My41NiAxMTguMSA0Ny4xNy0xMTguMWg2Mi42di41NmwtMTcuNTggMTkuOGE2Ljk5IDYuOTkgMCAwIDAtMi43MiA2Ljh2MTM5LjM3YTYuNSA2LjUgMCAwIDAgMi43MiA2LjU1em03MC4xMS01NC42NXYuNTZjMCAzNC42IDE3LjY3IDQ4LjUgMzguMzggNDguNWE0My41IDQzLjUgMCAwIDAgNDAuNzctMjQuOTdoLjU2Yy03LjIgMzQuMi0yOC4xNCA1MC4zNi01OS40OCA1MC4zNi0zMy44MiAwLTY1LjcyLTIwLjYxLTY1LjcyLTY4LjM5IDAtNTAuMiAzMS45OC03MC4yNSA2Ny4zMi03MC4yNSAyOC40NiAwIDU4Ljc2IDEzLjU4IDU4Ljc2IDU3LjI0djYuOTVoLTgwLjU5em0wLTYuOTVoMzkuNDJ2LTcuMDRjMC0zNS41Ny03LjI4LTQ1LjAzLTE4LjIzLTQ1LjAzLTEzLjI3IDAtMjEuMzUgMTQuMTUtMjEuMzUgNTIuMDdoLjE2eicpKTtcbmV4cG9ydHMuTWVudVVuZm9sZE91dGxpbmUgPSBnZXRJY29uKCdtZW51LXVuZm9sZCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ000MDggNDQyaDQ4MGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOEg0MDhjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bS04IDIwNGMwIDQuNCAzLjYgOCA4IDhoNDgwYzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04SDQwOGMtNC40IDAtOCAzLjYtOCA4djU2em01MDQtNDg2SDEyMGMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg3ODRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAgNjMySDEyMGMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg3ODRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTE0Mi40IDY0Mi4xTDI5OC43IDUxOWE4Ljg0IDguODQgMCAwIDAgMC0xMy45TDE0Mi40IDM4MS45Yy01LjgtNC42LTE0LjQtLjUtMTQuNCA2Ljl2MjQ2LjNhOC45IDguOSAwIDAgMCAxNC40IDd6JykpO1xuZXhwb3J0cy5NZW51Rm9sZE91dGxpbmUgPSBnZXRJY29uKCdtZW51LWZvbGQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNDA4IDQ0Mmg0ODBjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LThINDA4Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4em0tOCAyMDRjMCA0LjQgMy42IDggOCA4aDQ4MGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOEg0MDhjLTQuNCAwLTggMy42LTggOHY1NnptNTA0LTQ4NkgxMjBjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNzg0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDYzMkgxMjBjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNzg0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04ek0xMTUuNCA1MTguOUwyNzEuNyA2NDJjNS44IDQuNiAxNC40LjUgMTQuNC02LjlWMzg4LjljMC03LjQtOC41LTExLjUtMTQuNC02LjlMMTE1LjQgNTA1LjFhOC43NCA4Ljc0IDAgMCAwIDAgMTMuOHonKSk7XG5leHBvcnRzLk1lbnVPdXRsaW5lID0gZ2V0SWNvbignbWVudScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MDQgMTYwSDEyMGMtNC40IDAtOCAzLjYtOCA4djY0YzAgNC40IDMuNiA4IDggOGg3ODRjNC40IDAgOC0zLjYgOC04di02NGMwLTQuNC0zLjYtOC04LTh6bTAgNjI0SDEyMGMtNC40IDAtOCAzLjYtOCA4djY0YzAgNC40IDMuNiA4IDggOGg3ODRjNC40IDAgOC0zLjYgOC04di02NGMwLTQuNC0zLjYtOC04LTh6bTAtMzEySDEyMGMtNC40IDAtOCAzLjYtOCA4djY0YzAgNC40IDMuNiA4IDggOGg3ODRjNC40IDAgOC0zLjYgOC04di02NGMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5NaW51c091dGxpbmUgPSBnZXRJY29uKCdtaW51cycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NzIgNDc0SDE1MmMtNC40IDAtOCAzLjYtOCA4djYwYzAgNC40IDMuNiA4IDggOGg3MjBjNC40IDAgOC0zLjYgOC04di02MGMwLTQuNC0zLjYtOC04LTh6JykpO1xuZXhwb3J0cy5Nb25pdG9yT3V0bGluZSA9IGdldEljb24oJ21vbml0b3InLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNjkyLjggNDEyLjdsLjItLjItMzQuNi00NC4zYTcuOTcgNy45NyAwIDAgMC0xMS4yLTEuNGwtNTAuNCAzOS4zLTcwLjUtOTAuMWE3Ljk3IDcuOTcgMCAwIDAtMTEuMi0xLjRsLTM3LjkgMjkuN2E3Ljk3IDcuOTcgMCAwIDAtMS40IDExLjJsNzAuNSA5MC4yLS4yLjEgMzQuNiA0NC4zYzIuNyAzLjUgNy43IDQuMSAxMS4yIDEuNGw1MC40LTM5LjMgNjQuMSA4MmMyLjcgMy41IDcuNyA0LjEgMTEuMiAxLjRsMzcuOS0yOS42YzMuNS0yLjcgNC4xLTcuNyAxLjQtMTEuMmwtNjQuMS04Mi4xek02MDggMTEyYy0xNjcuOSAwLTMwNCAxMzYuMS0zMDQgMzA0IDAgNzAuMyAyMy45IDEzNSA2My45IDE4Ni41TDExNC4zIDg1Ni4xYTguMDMgOC4wMyAwIDAgMCAwIDExLjNsNDIuMyA0Mi4zYzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMjUzLjYtMjUzLjZDNDczIDY5Ni4xIDUzNy43IDcyMCA2MDggNzIwYzE2Ny45IDAgMzA0LTEzNi4xIDMwNC0zMDRTNzc1LjkgMTEyIDYwOCAxMTJ6bTE2MS4yIDQ2NS4yQzcyNi4yIDYyMC4zIDY2OC45IDY0NCA2MDggNjQ0cy0xMTguMi0yMy43LTE2MS4yLTY2LjhDNDAzLjcgNTM0LjIgMzgwIDQ3Ni45IDM4MCA0MTZzMjMuNy0xMTguMiA2Ni44LTE2MS4yYzQzLTQzLjEgMTAwLjMtNjYuOCAxNjEuMi02Ni44czExOC4yIDIzLjcgMTYxLjIgNjYuOGM0My4xIDQzIDY2LjggMTAwLjMgNjYuOCAxNjEuMnMtMjMuNyAxMTguMi02Ni44IDE2MS4yeicpKTtcbmV4cG9ydHMuTW9yZU91dGxpbmUgPSBnZXRJY29uKCdtb3JlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQ1NiAyMzFhNTYgNTYgMCAxIDAgMTEyIDAgNTYgNTYgMCAxIDAtMTEyIDB6bTAgMjgwYTU2IDU2IDAgMSAwIDExMiAwIDU2IDU2IDAgMSAwLTExMiAwem0wIDI4MGE1NiA1NiAwIDEgMCAxMTIgMCA1NiA1NiAwIDEgMC0xMTIgMHonKSk7XG5leHBvcnRzLk9yZGVyZWRMaXN0T3V0bGluZSA9IGdldEljb24oJ29yZGVyZWQtbGlzdCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MjAgNzYwSDMzNmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1ODRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAtNTY4SDMzNmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1ODRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAgMjg0SDMzNmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1ODRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTIxNiA3MTJIMTAwYy0yLjIgMC00IDEuOC00IDR2MzRjMCAyLjIgMS44IDQgNCA0aDcyLjR2MjAuNWgtMzUuN2MtMi4yIDAtNCAxLjgtNCA0djM0YzAgMi4yIDEuOCA0IDQgNGgzNS43VjgzOEgxMDBjLTIuMiAwLTQgMS44LTQgNHYzNGMwIDIuMiAxLjggNCA0IDRoMTE2YzIuMiAwIDQtMS44IDQtNFY3MTZjMC0yLjItMS44LTQtNC00ek0xMDAgMTg4aDM4djEyMGMwIDIuMiAxLjggNCA0IDRoNDBjMi4yIDAgNC0xLjggNC00VjE1MmMwLTQuNC0zLjYtOC04LThoLTc4Yy0yLjIgMC00IDEuOC00IDR2MzZjMCAyLjIgMS44IDQgNCA0em0xMTYgMjQwSDEwMGMtMi4yIDAtNCAxLjgtNCA0djM2YzAgMi4yIDEuOCA0IDQgNGg2OC40bC03MC4zIDc3LjdhOC4zIDguMyAwIDAgMC0yLjEgNS40VjU5MmMwIDIuMiAxLjggNCA0IDRoMTE2YzIuMiAwIDQtMS44IDQtNHYtMzZjMC0yLjItMS44LTQtNC00aC02OC40bDcwLjMtNzcuN2E4LjMgOC4zIDAgMCAwIDIuMS01LjRWNDMyYzAtMi4yLTEuOC00LTQtNHonKSk7XG5leHBvcnRzLk51bWJlck91dGxpbmUgPSBnZXRJY29uKCdudW1iZXInLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODcyIDM5NGM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOEg3MDhWMTUyYzAtNC40LTMuNi04LTgtOGgtNjRjLTQuNCAwLTggMy42LTggOHYxNjZINDAwVjE1MmMwLTQuNC0zLjYtOC04LThoLTY0Yy00LjQgMC04IDMuNi04IDh2MTY2SDE1MmMtNC40IDAtOCAzLjYtOCA4djYwYzAgNC40IDMuNiA4IDggOGgxNjh2MjM2SDE1MmMtNC40IDAtOCAzLjYtOCA4djYwYzAgNC40IDMuNiA4IDggOGgxNjh2MTY2YzAgNC40IDMuNiA4IDggOGg2NGM0LjQgMCA4LTMuNiA4LThWNzA2aDIyOHYxNjZjMCA0LjQgMy42IDggOCA4aDY0YzQuNCAwIDgtMy42IDgtOFY3MDZoMTY0YzQuNCAwIDgtMy42IDgtOHYtNjBjMC00LjQtMy42LTgtOC04SDcwOFYzOTRoMTY0ek02MjggNjMwSDQwMFYzOTRoMjI4djIzNnonKSk7XG5leHBvcnRzLlBhdXNlT3V0bGluZSA9IGdldEljb24oJ3BhdXNlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTMwNCAxNzZoODB2NjcyaC04MHptNDA4IDBoLTY0Yy00LjQgMC04IDMuNi04IDh2NjU2YzAgNC40IDMuNiA4IDggOGg2NGM0LjQgMCA4LTMuNiA4LThWMTg0YzAtNC40LTMuNi04LTgtOHonKSk7XG5leHBvcnRzLlBlcmNlbnRhZ2VPdXRsaW5lID0gZ2V0SWNvbigncGVyY2VudGFnZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NTUuNyAyMTAuOGwtNDIuNC00Mi40YTguMDMgOC4wMyAwIDAgMC0xMS4zIDBMMTY4LjMgODAxLjlhOC4wMyA4LjAzIDAgMCAwIDAgMTEuM2w0Mi40IDQyLjRjMy4xIDMuMSA4LjIgMy4xIDExLjMgMEw4NTUuNiAyMjJjMy4yLTMgMy4yLTguMS4xLTExLjJ6TTMwNCA0NDhjNzkuNCAwIDE0NC02NC42IDE0NC0xNDRzLTY0LjYtMTQ0LTE0NC0xNDQtMTQ0IDY0LjYtMTQ0IDE0NCA2NC42IDE0NCAxNDQgMTQ0em0wLTIxNmMzOS43IDAgNzIgMzIuMyA3MiA3MnMtMzIuMyA3Mi03MiA3Mi03Mi0zMi4zLTcyLTcyIDMyLjMtNzIgNzItNzJ6bTQxNiAzNDRjLTc5LjQgMC0xNDQgNjQuNi0xNDQgMTQ0czY0LjYgMTQ0IDE0NCAxNDQgMTQ0LTY0LjYgMTQ0LTE0NC02NC42LTE0NC0xNDQtMTQ0em0wIDIxNmMtMzkuNyAwLTcyLTMyLjMtNzItNzJzMzIuMy03MiA3Mi03MiA3MiAzMi4zIDcyIDcyLTMyLjMgNzItNzIgNzJ6JykpO1xuZXhwb3J0cy5QYXBlckNsaXBPdXRsaW5lID0gZ2V0SWNvbigncGFwZXItY2xpcCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ003NzkuMyAxOTYuNmMtOTQuMi05NC4yLTI0Ny42LTk0LjItMzQxLjcgMGwtMjYxIDI2MC44Yy0xLjcgMS43LTIuNiA0LTIuNiA2LjRzLjkgNC43IDIuNiA2LjRsMzYuOSAzNi45YTkgOSAwIDAgMCAxMi43IDBsMjYxLTI2MC44YzMyLjQtMzIuNCA3NS41LTUwLjIgMTIxLjMtNTAuMnM4OC45IDE3LjggMTIxLjIgNTAuMmMzMi40IDMyLjQgNTAuMiA3NS41IDUwLjIgMTIxLjIgMCA0NS44LTE3LjggODguOC01MC4yIDEyMS4ybC0yNjYgMjY1LjktNDMuMSA0My4xYy00MC4zIDQwLjMtMTA1LjggNDAuMy0xNDYuMSAwLTE5LjUtMTkuNS0zMC4yLTQ1LjQtMzAuMi03M3MxMC43LTUzLjUgMzAuMi03M2wyNjMuOS0yNjMuOGM2LjctNi42IDE1LjUtMTAuMyAyNC45LTEwLjNoLjFjOS40IDAgMTguMSAzLjcgMjQuNyAxMC4zIDYuNyA2LjcgMTAuMyAxNS41IDEwLjMgMjQuOSAwIDkuMy0zLjcgMTguMS0xMC4zIDI0LjdMMzcyLjQgNjUzYy0xLjcgMS43LTIuNiA0LTIuNiA2LjRzLjkgNC43IDIuNiA2LjRsMzYuOSAzNi45YTkgOSAwIDAgMCAxMi43IDBsMjE1LjYtMjE1LjZjMTkuOS0xOS45IDMwLjgtNDYuMyAzMC44LTc0LjRzLTExLTU0LjYtMzAuOC03NC40Yy00MS4xLTQxLjEtMTA3LjktNDEtMTQ5IDBMNDYzIDM2NCAyMjQuOCA2MDIuMUExNzIuMjIgMTcyLjIyIDAgMCAwIDE3NCA3MjQuOGMwIDQ2LjMgMTguMSA4OS44IDUwLjggMTIyLjUgMzMuOSAzMy44IDc4LjMgNTAuNyAxMjIuNyA1MC43IDQ0LjQgMCA4OC44LTE2LjkgMTIyLjYtNTAuN2wzMDkuMi0zMDlDODI0LjggNDkyLjcgODUwIDQzMiA4NTAgMzY3LjVjLjEtNjQuNi0yNS4xLTEyNS4zLTcwLjctMTcwLjl6JykpO1xuZXhwb3J0cy5QaWNDZW50ZXJPdXRsaW5lID0gZ2V0SWNvbigncGljLWNlbnRlcicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005NTIgNzkySDcyYy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDg4MGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMC02MzJINzJjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoODgwYzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04ek04NDggNjYwYzguOCAwIDE2LTcuMiAxNi0xNlYzODBjMC04LjgtNy4yLTE2LTE2LTE2SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2djI2NGMwIDguOCA3LjIgMTYgMTYgMTZoNjcyek0yMzIgNDM2aDU2MHYxNTJIMjMyVjQzNnonKSk7XG5leHBvcnRzLlBpY0xlZnRPdXRsaW5lID0gZ2V0SWNvbigncGljLWxlZnQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTUyIDc5Mkg3MmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg4ODBjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAtNjMySDcyYy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDg4MGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHpNNjA4IDY2MGM4LjggMCAxNi03LjIgMTYtMTZWMzgwYzAtOC44LTcuMi0xNi0xNi0xNkg5NmMtOC44IDAtMTYgNy4yLTE2IDE2djI2NGMwIDguOCA3LjIgMTYgMTYgMTZoNTEyek0xNTIgNDM2aDQwMHYxNTJIMTUyVjQzNnptNTUyIDIxMGMwIDQuNCAzLjYgOCA4IDhoMjI0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04SDcxMmMtNC40IDAtOCAzLjYtOCA4djU2em04LTIwNGgyMjRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LThINzEyYy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4eicpKTtcbmV4cG9ydHMuUGx1c091dGxpbmUgPSBnZXRJY29uKCdwbHVzJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQ4MiAxNTJoNjBxOCAwIDggOHY3MDRxMCA4LTggOGgtNjBxLTggMC04LThWMTYwcTAtOCA4LTh6JywgJ00xNzYgNDc0aDY3MnE4IDAgOCA4djYwcTAgOC04IDhIMTc2cS04IDAtOC04di02MHEwLTggOC04eicpKTtcbmV4cG9ydHMuUGljUmlnaHRPdXRsaW5lID0gZ2V0SWNvbigncGljLXJpZ2h0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTk1MiA3OTJINzJjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoODgwYzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTYzMkg3MmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg4ODBjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bS0yNCA1MDBjOC44IDAgMTYtNy4yIDE2LTE2VjM4MGMwLTguOC03LjItMTYtMTYtMTZINDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MjY0YzAgOC44IDcuMiAxNiAxNiAxNmg1MTJ6TTQ3MiA0MzZoNDAwdjE1Mkg0NzJWNDM2ek04MCA2NDZjMCA0LjQgMy42IDggOCA4aDIyNGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOEg4OGMtNC40IDAtOCAzLjYtOCA4djU2em04LTIwNGgyMjRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LThIODhjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6JykpO1xuZXhwb3J0cy5Qb3VuZE91dGxpbmUgPSBnZXRJY29uKCdwb3VuZCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6bTEzOC0yMDkuOEg0NjkuOHYtNC43YzI3LjQtMTcuMiA0My45LTUwLjQgNDMuOS05MS4xIDAtMTQuMS0yLjItMjcuOS01LjMtNDFINjA3YzQuNCAwIDgtMy42IDgtOHYtMzBjMC00LjQtMy42LTgtOC04SDQ5NWMtNy4yLTIyLjYtMTMuNC00NS43LTEzLjQtNzAuNSAwLTQzLjUgMzQtNzAuMiA4Ny4zLTcwLjIgMjEuNSAwIDQyLjUgNC4xIDYwLjQgMTAuNSA1LjIgMS45IDEwLjYtMiAxMC42LTcuNnYtMzkuNWMwLTMuMy0yLjEtNi4zLTUuMi03LjUtMTguOC03LjItNDMuOC0xMi43LTcwLjMtMTIuNy05Mi45IDAtMTUxLjUgNDQuNS0xNTEuNSAxMjAuMyAwIDI2LjMgNi45IDUyIDE0LjYgNzcuMUgzNzRjLTQuNCAwLTggMy42LTggOHYzMGMwIDQuNCAzLjYgOCA4IDhoNjcuMWMzLjQgMTQuNyA1LjkgMjkuNCA1LjkgNDQuMiAwIDQ1LjItMjguOCA4My4zLTcyLjggOTQuMi0zLjYuOS02LjEgNC4xLTYuMSA3LjhWNzIyYzAgNC40IDMuNiA4IDggOEg2NTBjNC40IDAgOC0zLjYgOC04di0zOS44YzAtNC40LTMuNi04LTgtOHonKSk7XG5leHBvcnRzLlBvd2Vyb2ZmT3V0bGluZSA9IGdldEljb24oJ3Bvd2Vyb2ZmJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTcwNS42IDEyNC45YTggOCAwIDAgMC0xMS42IDcuMnY2NC4yYzAgNS41IDIuOSAxMC42IDcuNSAxMy42YTM1Mi4yIDM1Mi4yIDAgMCAxIDYyLjIgNDkuOGMzMi43IDMyLjggNTguNCA3MC45IDc2LjMgMTEzLjNhMzU1IDM1NSAwIDAgMSAyNy45IDEzOC43YzAgNDguMS05LjQgOTQuOC0yNy45IDEzOC43YTM1NS45MiAzNTUuOTIgMCAwIDEtNzYuMyAxMTMuMyAzNTMuMDYgMzUzLjA2IDAgMCAxLTExMy4yIDc2LjRjLTQzLjggMTguNi05MC41IDI4LTEzOC41IDI4cy05NC43LTkuNC0xMzguNS0yOGEzNTMuMDYgMzUzLjA2IDAgMCAxLTExMy4yLTc2LjRBMzU1LjkyIDM1NS45MiAwIDAgMSAxODQgNjUwLjRhMzU1IDM1NSAwIDAgMS0yNy45LTEzOC43YzAtNDguMSA5LjQtOTQuOCAyNy45LTEzOC43IDE3LjktNDIuNCA0My42LTgwLjUgNzYuMy0xMTMuMyAxOS0xOSAzOS44LTM1LjYgNjIuMi00OS44IDQuNy0yLjkgNy41LTguMSA3LjUtMTMuNlYxMzJjMC02LTYuMy05LjgtMTEuNi03LjJDMTc4LjUgMTk1LjIgODIgMzM5LjMgODAgNTA2LjMgNzcuMiA3NDUuMSAyNzIuNSA5NDMuNSA1MTEuMiA5NDRjMjM5IC41IDQzMi44LTE5My4zIDQzMi44LTQzMi40IDAtMTY5LjItOTctMzE1LjctMjM4LjQtMzg2Ljd6TTQ4MCA1NjBoNjRjNC40IDAgOC0zLjYgOC04Vjg4YzAtNC40LTMuNi04LTgtOGgtNjRjLTQuNCAwLTggMy42LTggOHY0NjRjMCA0LjQgMy42IDggOCA4eicpKTtcbmV4cG9ydHMuUHVsbFJlcXVlc3RPdXRsaW5lID0gZ2V0SWNvbigncHVsbC1yZXF1ZXN0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTc4OCA3MDUuOVYxOTJjMC04LjgtNy4yLTE2LTE2LTE2SDYwMnYtNjguOGMwLTYtNy05LjQtMTEuNy01LjdMNDYyLjcgMjAyLjNhNy4xNCA3LjE0IDAgMCAwIDAgMTEuM2wxMjcuNSAxMDAuOGM0LjcgMy43IDExLjcuNCAxMS43LTUuN1YyNDBoMTE0djQ2NS45Yy00NC4yIDE1LTc2IDU2LjktNzYgMTA2LjEgMCA2MS44IDUwLjIgMTEyIDExMiAxMTJzMTEyLTUwLjIgMTEyLTExMmMuMS00OS4yLTMxLjctOTEtNzUuOS0xMDYuMXpNNzUyIDg2MGE0OC4wMSA0OC4wMSAwIDAgMSAwLTk2IDQ4LjAxIDQ4LjAxIDAgMCAxIDAgOTZ6TTM4NCAyMTJjMC02MS44LTUwLjItMTEyLTExMi0xMTJzLTExMiA1MC4yLTExMiAxMTJjMCA0OS4yIDMxLjggOTEgNzYgMTA2LjFWNzA2Yy00NC4yIDE1LTc2IDU2LjktNzYgMTA2LjEgMCA2MS44IDUwLjIgMTEyIDExMiAxMTJzMTEyLTUwLjIgMTEyLTExMmMwLTQ5LjItMzEuOC05MS03Ni0xMDYuMVYzMTguMWM0NC4yLTE1LjEgNzYtNTYuOSA3Ni0xMDYuMXptLTE2MCAwYTQ4LjAxIDQ4LjAxIDAgMCAxIDk2IDAgNDguMDEgNDguMDEgMCAwIDEtOTYgMHptOTYgNjAwYTQ4LjAxIDQ4LjAxIDAgMCAxLTk2IDAgNDguMDEgNDguMDEgMCAwIDEgOTYgMHonKSk7XG5leHBvcnRzLlFxT3V0bGluZSA9IGdldEljb24oJ3FxJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTgyNC44IDYxMy4yYy0xNi01MS40LTM0LjQtOTQuNi02Mi43LTE2NS4zQzc2Ni41IDI2Mi4yIDY4OS4zIDExMiA1MTEuNSAxMTIgMzMxLjcgMTEyIDI1Ni4yIDI2NS4yIDI2MSA0NDcuOWMtMjguNCA3MC44LTQ2LjcgMTEzLjctNjIuNyAxNjUuMy0zNCAxMDkuNS0yMyAxNTQuOC0xNC42IDE1NS44IDE4IDIuMiA3MC4xLTgyLjQgNzAuMS04Mi40IDAgNDkgMjUuMiAxMTIuOSA3OS44IDE1OS0yNi40IDguMS04NS43IDI5LjktNzEuNiA1My44IDExLjQgMTkuMyAxOTYuMiAxMi4zIDI0OS41IDYuMyA1My4zIDYgMjM4LjEgMTMgMjQ5LjUtNi4zIDE0LjEtMjMuOC00NS4zLTQ1LjctNzEuNi01My44IDU0LjYtNDYuMiA3OS44LTExMC4xIDc5LjgtMTU5IDAgMCA1Mi4xIDg0LjYgNzAuMSA4Mi40IDguNS0xLjEgMTkuNS00Ni40LTE0LjUtMTU1Ljh6JykpO1xuZXhwb3J0cy5RdWVzdGlvbk91dGxpbmUgPSBnZXRJY29uKCdxdWVzdGlvbicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ003NjQgMjgwLjljLTE0LTMwLjYtMzMuOS01OC4xLTU5LjMtODEuNkM2NTMuMSAxNTEuNCA1ODQuNiAxMjUgNTEyIDEyNXMtMTQxLjEgMjYuNC0xOTIuNyA3NC4yYy0yNS40IDIzLjYtNDUuMyA1MS01OS4zIDgxLjctMTQuNiAzMi0yMiA2NS45LTIyIDEwMC45djI3YzAgNi4yIDUgMTEuMiAxMS4yIDExLjJoNTRjNi4yIDAgMTEuMi01IDExLjItMTEuMnYtMjdjMC05OS41IDg4LjYtMTgwLjQgMTk3LjYtMTgwLjRzMTk3LjYgODAuOSAxOTcuNiAxODAuNGMwIDQwLjgtMTQuNSA3OS4yLTQyIDExMS4yLTI3LjIgMzEuNy02NS42IDU0LjQtMTA4LjEgNjQtMjQuMyA1LjUtNDYuMiAxOS4yLTYxLjcgMzguOGExMTAuODUgMTEwLjg1IDAgMCAwLTIzLjkgNjguNnYzMS40YzAgNi4yIDUgMTEuMiAxMS4yIDExLjJoNTRjNi4yIDAgMTEuMi01IDExLjItMTEuMnYtMzEuNGMwLTE1LjcgMTAuOS0yOS41IDI2LTMyLjkgNTguNC0xMy4yIDExMS40LTQ0LjcgMTQ5LjMtODguNyAxOS4xLTIyLjMgMzQtNDcuMSA0NC4zLTc0IDEwLjctMjcuOSAxNi4xLTU3LjIgMTYuMS04NyAwLTM1LTcuNC02OS0yMi0xMDAuOXpNNTEyIDc4N2MtMzAuOSAwLTU2IDI1LjEtNTYgNTZzMjUuMSA1NiA1NiA1NiA1Ni0yNS4xIDU2LTU2LTI1LjEtNTYtNTYtNTZ6JykpO1xuZXhwb3J0cy5SYWRhckNoYXJ0T3V0bGluZSA9IGdldEljb24oJ3JhZGFyLWNoYXJ0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkyNi44IDM5Ny4xbC0zOTYtMjg4YTMxLjgxIDMxLjgxIDAgMCAwLTM3LjYgMGwtMzk2IDI4OGEzMS45OSAzMS45OSAwIDAgMC0xMS42IDM1LjhsMTUxLjMgNDY2YTMyIDMyIDAgMCAwIDMwLjQgMjIuMWg0ODkuNWMxMy45IDAgMjYuMS04LjkgMzAuNC0yMi4xbDE1MS4zLTQ2NmM0LjItMTMuMi0uNS0yNy42LTExLjctMzUuOHpNODM4LjYgNDE3bC05OC41IDMyLTIwMC0xNDQuN1YxOTkuOUw4MzguNiA0MTd6TTQ2NiA1NjcuMmwtODkuMSAxMjIuMy01NS4yLTE2OS4yTDQ2NiA1NjcuMnptLTExNi4zLTk2LjhMNDg0IDM3My4zdjE0MC44bC0xMzQuMy00My43ek01MTIgNTk5LjJsOTMuOSAxMjguOUg0MTguMUw1MTIgNTk5LjJ6bTI4LjEtMjI1LjlsMTM0LjIgOTcuMUw1NDAuMSA1MTRWMzczLjN6TTU1OCA1NjcuMmwxNDQuMy00Ni45LTU1LjIgMTY5LjJMNTU4IDU2Ny4yem0tNzQtMzY3LjN2MTA0LjRMMjgzLjkgNDQ5bC05OC41LTMyTDQ4NCAxOTkuOXpNMTY5LjMgNDcwLjhsODYuNSAyOC4xIDgwLjQgMjQ2LjQtNTMuOCA3My45LTExMy4xLTM0OC40ek0zMjcuMSA4NTNsNTAuMy02OWgyNjkuM2w1MC4zIDY5SDMyNy4xem00MTQuNS0zMy44bC01My44LTczLjkgODAuNC0yNDYuNCA4Ni41LTI4LjEtMTEzLjEgMzQ4LjR6JykpO1xuZXhwb3J0cy5RcmNvZGVPdXRsaW5lID0gZ2V0SWNvbigncXJjb2RlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQ2OCAxMjhIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMDhjMCA0LjQgMy42IDggOCA4aDMzMmM0LjQgMCA4LTMuNiA4LThWMTM2YzAtNC40LTMuNi04LTgtOHptLTU2IDI4NEgxOTJWMTkyaDIyMHYyMjB6bS0xMzgtNzRoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4em0xOTQgMjEwSDEzNmMtNC40IDAtOCAzLjYtOCA4djMwOGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMDhjNC40IDAgOC0zLjYgOC04VjU1NmMwLTQuNC0zLjYtOC04LTh6bS01NiAyODRIMTkyVjYxMmgyMjB2MjIwem0tMTM4LTc0aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHptNTkwLTYzMEg1NTZjLTQuNCAwLTggMy42LTggOHYzMzJjMCA0LjQgMy42IDggOCA4aDMzMmM0LjQgMCA4LTMuNiA4LThWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tMzIgMjg0SDYxMlYxOTJoMjIwdjIyMHptLTEzOC03NGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bTE5NCAyMTBoLTQ4Yy00LjQgMC04IDMuNi04IDh2MTM0aC03OFY1NTZjMC00LjQtMy42LTgtOC04SDU1NmMtNC40IDAtOCAzLjYtOCA4djMzMmMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjY0NGg3OHYxMDJjMCA0LjQgMy42IDggOCA4aDE5MGM0LjQgMCA4LTMuNiA4LThWNTU2YzAtNC40LTMuNi04LTgtOHpNNzQ2IDgzMmgtNDhjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LTh6bTE0MiAwaC00OGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHonKSk7XG5leHBvcnRzLlJhZGl1c0JvdHRvbWxlZnRPdXRsaW5lID0gZ2V0SWNvbigncmFkaXVzLWJvdHRvbWxlZnQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNzEyIDgyNGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTItNjk2aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHpNMTM2IDM3NGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bTAtMTc0aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHptNzUyIDYyNGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAtMTc0aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMC0xNzRoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTE3NGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAtMTc0aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptLTM0OCAwaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptLTIzMCA3Mmg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bTIzMCA2MjRIMzU4Yy04Ny4zIDAtMTU4LTcwLjctMTU4LTE1OFY0ODRjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djE4MmMwIDEyNyAxMDMgMjMwIDIzMCAyMzBoMTgyYzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04eicpKTtcbmV4cG9ydHMuUmFkaXVzQm90dG9tcmlnaHRPdXRsaW5lID0gZ2V0SWNvbigncmFkaXVzLWJvdHRvbXJpZ2h0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTM2OCA4MjRoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0tNTgtNjI0aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHptNTc4IDEwMmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAtMTc0aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHpNMTkyIDgyNGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAtMTc0aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMC0xNzRoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wLTE3NGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAtMTc0aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMjkyIDcyaDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHptMTc0IDBoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4em0yMzAgMjc2aC01NmMtNC40IDAtOCAzLjYtOCA4djE4MmMwIDg3LjMtNzAuNyAxNTgtMTU4IDE1OEg0ODRjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoMTgyYzEyNyAwIDIzMC0xMDMgMjMwLTIzMFY0ODRjMC00LjQtMy42LTgtOC04eicpKTtcbmV4cG9ydHMuUmFkaXVzVXBsZWZ0T3V0bGluZSA9IGdldEljb24oJ3JhZGl1cy11cGxlZnQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNjU2IDIwMGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bTU4IDYyNGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTE5MiA2NTBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDE3NGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTY5Ni02OTZoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDE3NGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAgMTc0aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMCAxNzRoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDE3NGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bS0zNDggMGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bS0xNzQgMGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTE3NC02OTZIMzU4Yy0xMjcgMC0yMzAgMTAzLTIzMCAyMzB2MTgyYzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LThWMzU4YzAtODcuMyA3MC43LTE1OCAxNTgtMTU4aDE4MmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHonKSk7XG5leHBvcnRzLlJhZGl1c1VwcmlnaHRPdXRsaW5lID0gZ2V0SWNvbigncmFkaXVzLXVwcmlnaHQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMzY4IDEyOGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bS0yIDY5NmgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTUyMi0xNzRoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDE3NGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTE5MiAxMjhoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDE3NGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAgMTc0aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMCAxNzRoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDE3NGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTM0OCAwaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMTc0IDBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0tNDgtNjk2SDQ4NGMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGgxODJjODcuMyAwIDE1OCA3MC43IDE1OCAxNTh2MTgyYzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LThWMzU4YzAtMTI3LTEwMy0yMzAtMjMwLTIzMHonKSk7XG5leHBvcnRzLlJhZGl1c1NldHRpbmdPdXRsaW5lID0gZ2V0SWNvbigncmFkaXVzLXNldHRpbmcnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMzk2IDE0MGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bS00NCA2ODRoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em01MjQtMjA0aC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHpNMTkyIDM0NGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTAgMTYwaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMCAxNjBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDE2MGgtNTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTMyMCAwaC01NmMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMTYwIDBoLTU2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0xNDAtMjg0YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LThWMzcwYzAtMTI3LTEwMy0yMzAtMjMwLTIzMEg0ODRjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoMTcwYzg3LjMgMCAxNTggNzAuNyAxNTggMTU4djE3MHpNMjM2IDk2SDkyYy00LjQgMC04IDMuNi04IDh2MTQ0YzAgNC40IDMuNiA4IDggOGgxNDRjNC40IDAgOC0zLjYgOC04VjEwNGMwLTQuNC0zLjYtOC04LTh6bS00OCAxMDEuNmMwIDEuMy0xLjEgMi40LTIuNCAyLjRoLTQzLjJjLTEuMyAwLTIuNC0xLjEtMi40LTIuNHYtNDMuMmMwLTEuMyAxLjEtMi40IDIuNC0yLjRoNDMuMmMxLjMgMCAyLjQgMS4xIDIuNCAyLjR2NDMuMnpNOTIwIDc4MEg3NzZjLTQuNCAwLTggMy42LTggOHYxNDRjMCA0LjQgMy42IDggOCA4aDE0NGM0LjQgMCA4LTMuNiA4LThWNzg4YzAtNC40LTMuNi04LTgtOHptLTQ4IDEwMS42YzAgMS4zLTEuMSAyLjQtMi40IDIuNGgtNDMuMmMtMS4zIDAtMi40LTEuMS0yLjQtMi40di00My4yYzAtMS4zIDEuMS0yLjQgMi40LTIuNGg0My4yYzEuMyAwIDIuNCAxLjEgMi40IDIuNHY0My4yeicpKTtcbmV4cG9ydHMuUmVkZGl0T3V0bGluZSA9IGdldEljb24oJ3JlZGRpdCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00yODggNTY4YTU2IDU2IDAgMSAwIDExMiAwIDU2IDU2IDAgMSAwLTExMiAwem0zMzguNyAxMTkuN2MtMjMuMSAxOC4yLTY4LjkgMzcuOC0xMTQuNyAzNy44cy05MS42LTE5LjYtMTE0LjctMzcuOGMtMTQuNC0xMS4zLTM1LjMtOC45LTQ2LjcgNS41cy04LjkgMzUuMyA1LjUgNDYuN0MzOTYuMyA3NzEuNiA0NTcuNSA3OTIgNTEyIDc5MnMxMTUuNy0yMC40IDE1NS45LTUyLjFhMzMuMjUgMzMuMjUgMCAxIDAtNDEuMi01Mi4yek05NjAgNDU2YzAtNjEuOS01MC4xLTExMi0xMTItMTEyLTQyLjEgMC03OC43IDIzLjItOTcuOSA1Ny42LTU3LjYtMzEuNS0xMjcuNy01MS44LTIwNC4xLTU2LjVMNjEyLjkgMTk1bDEyNy45IDM2LjljMTEuNSAzMi42IDQyLjYgNTYuMSA3OS4yIDU2LjEgNDYuNCAwIDg0LTM3LjYgODQtODRzLTM3LjYtODQtODQtODRjLTMyIDAtNTkuOCAxNy45LTc0IDQ0LjJMNjAzLjUgMTIzYTMzLjIgMzMuMiAwIDAgMC0zOS42IDE4LjRsLTkwLjggMjAzLjljLTc0LjUgNS4yLTE0Mi45IDI1LjQtMTk5LjIgNTYuMkExMTEuOTQgMTExLjk0IDAgMCAwIDE3NiAzNDRjLTYxLjkgMC0xMTIgNTAuMS0xMTIgMTEyIDAgNDUuOCAyNy41IDg1LjEgNjYuOCAxMDIuNS03LjEgMjEtMTAuOCA0My0xMC44IDY1LjUgMCAxNTQuNiAxNzUuNSAyODAgMzkyIDI4MHMzOTItMTI1LjQgMzkyLTI4MGMwLTIyLjYtMy44LTQ0LjUtMTAuOC02NS41QzkzMi41IDU0MS4xIDk2MCA1MDEuOCA5NjAgNDU2ek04MjAgMTcyLjVhMzEuNSAzMS41IDAgMSAxIDAgNjMgMzEuNSAzMS41IDAgMCAxIDAtNjN6TTEyMCA0NTZjMC0zMC45IDI1LjEtNTYgNTYtNTZhNTYgNTYgMCAwIDEgNTAuNiAzMi4xYy0yOS4zIDIyLjItNTMuNSA0Ny44LTcxLjUgNzUuOWE1Ni4yMyA1Ni4yMyAwIDAgMS0zNS4xLTUyem0zOTIgMzgxLjVjLTE3OS44IDAtMzI1LjUtOTUuNi0zMjUuNS0yMTMuNVMzMzIuMiA0MTAuNSA1MTIgNDEwLjUgODM3LjUgNTA2LjEgODM3LjUgNjI0IDY5MS44IDgzNy41IDUxMiA4MzcuNXpNODY4LjggNTA4Yy0xNy45LTI4LjEtNDIuMi01My43LTcxLjUtNzUuOSA5LTE4LjkgMjguMy0zMi4xIDUwLjYtMzIuMSAzMC45IDAgNTYgMjUuMSA1NiA1NiAuMSAyMy41LTE0LjUgNDMuNy0zNS4xIDUyek02MjQgNTY4YTU2IDU2IDAgMSAwIDExMiAwIDU2IDU2IDAgMSAwLTExMiAweicpKTtcbmV4cG9ydHMuUmVkb091dGxpbmUgPSBnZXRJY29uKCdyZWRvJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTc1OC4yIDgzOS4xQzg1MS44IDc2NS45IDkxMiA2NTEuOSA5MTIgNTIzLjkgOTEyIDMwMyA3MzMuNSAxMjQuMyA1MTIuNiAxMjQgMjkxLjQgMTIzLjcgMTEyIDMwMi44IDExMiA1MjMuOWMwIDEyNS4yIDU3LjUgMjM2LjkgMTQ3LjYgMzEwLjIgMy41IDIuOCA4LjYgMi4yIDExLjQtMS4zbDM5LjQtNTAuNWMyLjctMy40IDIuMS04LjMtMS4yLTExLjEtOC4xLTYuNi0xNS45LTEzLjctMjMuNC0yMS4yYTMxOC42NCAzMTguNjQgMCAwIDEtNjguNi0xMDEuN0MyMDAuNCA2MDkgMTkyIDU2Ny4xIDE5MiA1MjMuOXM4LjQtODUuMSAyNS4xLTEyNC41YzE2LjEtMzguMSAzOS4yLTcyLjMgNjguNi0xMDEuNyAyOS40LTI5LjQgNjMuNi01Mi41IDEwMS43LTY4LjZDNDI2LjkgMjEyLjQgNDY4LjggMjA0IDUxMiAyMDRzODUuMSA4LjQgMTI0LjUgMjUuMWMzOC4xIDE2LjEgNzIuMyAzOS4yIDEwMS43IDY4LjYgMjkuNCAyOS40IDUyLjUgNjMuNiA2OC42IDEwMS43IDE2LjcgMzkuNCAyNS4xIDgxLjMgMjUuMSAxMjQuNXMtOC40IDg1LjEtMjUuMSAxMjQuNWEzMTguNjQgMzE4LjY0IDAgMCAxLTY4LjYgMTAxLjdjLTkuMyA5LjMtMTkuMSAxOC0yOS4zIDI2TDY2OC4yIDcyNGE4IDggMCAwIDAtMTQuMSAzbC0zOS42IDE2Mi4yYy0xLjIgNSAyLjYgOS45IDcuNyA5LjlsMTY3IC44YzYuNyAwIDEwLjUtNy43IDYuMy0xMi45bC0zNy4zLTQ3Ljl6JykpO1xuZXhwb3J0cy5SZWxvYWRPdXRsaW5lID0gZ2V0SWNvbigncmVsb2FkJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkwOS4xIDIwOS4zbC01Ni40IDQ0LjFDNzc1LjggMTU1LjEgNjU2LjIgOTIgNTIxLjkgOTIgMjkwIDkyIDEwMi4zIDI3OS41IDEwMiA1MTEuNSAxMDEuNyA3NDMuNyAyODkuOCA5MzIgNTIxLjkgOTMyYzE4MS4zIDAgMzM1LjgtMTE1IDM5NC42LTI3Ni4xIDEuNS00LjItLjctOC45LTQuOS0xMC4zbC01Ni43LTE5LjVhOCA4IDAgMCAwLTEwLjEgNC44Yy0xLjggNS0zLjggMTAtNS45IDE0LjktMTcuMyA0MS00Mi4xIDc3LjgtNzMuNyAxMDkuNEEzNDQuNzcgMzQ0Ljc3IDAgMCAxIDY1NS45IDgyOWMtNDIuMyAxNy45LTg3LjQgMjctMTMzLjggMjctNDYuNSAwLTkxLjUtOS4xLTEzMy44LTI3QTM0MS41IDM0MS41IDAgMCAxIDI3OSA3NTUuMmEzNDIuMTYgMzQyLjE2IDAgMCAxLTczLjctMTA5LjRjLTE3LjktNDIuNC0yNy04Ny40LTI3LTEzMy45czkuMS05MS41IDI3LTEzMy45YzE3LjMtNDEgNDIuMS03Ny44IDczLjctMTA5LjQgMzEuNi0zMS42IDY4LjQtNTYuNCAxMDkuMy03My44IDQyLjMtMTcuOSA4Ny40LTI3IDEzMy44LTI3IDQ2LjUgMCA5MS41IDkuMSAxMzMuOCAyN2EzNDEuNSAzNDEuNSAwIDAgMSAxMDkuMyA3My44YzkuOSA5LjkgMTkuMiAyMC40IDI3LjggMzEuNGwtNjAuMiA0N2E4IDggMCAwIDAgMyAxNC4xbDE3NS42IDQzYzUgMS4yIDkuOS0yLjYgOS45LTcuN2wuOC0xODAuOWMtLjEtNi42LTcuOC0xMC4zLTEzLTYuMnonKSk7XG5leHBvcnRzLlJldHdlZXRPdXRsaW5lID0gZ2V0SWNvbigncmV0d2VldCcsIG91dGxpbmUsIGdldE5vZGUobm9ybWFsVmlld0JveCwgJ00xMzYgNTUyaDYzLjZjNC40IDAgOC0zLjYgOC04VjI4OC43aDUyOC42djcyLjZjMCAxLjkuNiAzLjcgMS44IDUuMmE4LjMgOC4zIDAgMCAwIDExLjcgMS40TDg5MyAyNTUuNGM0LjMtNSAzLjYtMTAuMyAwLTEzLjJMNzQ5LjcgMTI5LjhhOC4yMiA4LjIyIDAgMCAwLTUuMi0xLjhjLTQuNiAwLTguNCAzLjgtOC40IDguNFYyMDlIMTk5LjdjLTM5LjUgMC03MS43IDMyLjItNzEuNyA3MS44VjU0NGMwIDQuNCAzLjYgOCA4IDh6bTc1Mi04MGgtNjMuNmMtNC40IDAtOCAzLjYtOCA4djI1NS4zSDI4Ny44di03Mi42YzAtMS45LS42LTMuNy0xLjgtNS4yYTguMyA4LjMgMCAwIDAtMTEuNy0xLjRMMTMxIDc2OC42Yy00LjMgNS0zLjYgMTAuMyAwIDEzLjJsMTQzLjMgMTEyLjRjMS41IDEuMiAzLjMgMS44IDUuMiAxLjggNC42IDAgOC40LTMuOCA4LjQtOC40VjgxNWg1MzYuNmMzOS41IDAgNzEuNy0zMi4yIDcxLjctNzEuOFY0ODBjLS4yLTQuNC0zLjgtOC04LjItOHonKSk7XG5leHBvcnRzLlJpZ2h0T3V0bGluZSA9IGdldEljb24oJ3JpZ2h0Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTc2NS43IDQ4Ni44TDMxNC45IDEzNC43QTcuOTcgNy45NyAwIDAgMCAzMDIgMTQxdjc3LjNjMCA0LjkgMi4zIDkuNiA2LjEgMTIuNmwzNjAgMjgxLjEtMzYwIDI4MS4xYy0zLjkgMy02LjEgNy43LTYuMSAxMi42Vjg4M2MwIDYuNyA3LjcgMTAuNCAxMi45IDYuM2w0NTAuOC0zNTIuMWEzMS45NiAzMS45NiAwIDAgMCAwLTUwLjR6JykpO1xuZXhwb3J0cy5SaXNlT3V0bGluZSA9IGdldEljb24oJ3Jpc2UnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTE3IDIxMS4xbC0xOTkuMiAyNGMtNi42LjgtOS40IDguOS00LjcgMTMuNmw1OS4zIDU5LjMtMjI2IDIyNi0xMDEuOC0xMDEuN2MtNi4zLTYuMy0xNi40LTYuMi0yMi42IDBMMTAwLjMgNzU0LjFhOC4wMyA4LjAzIDAgMCAwIDAgMTEuM2w0NSA0NS4yYzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBMNDMzLjMgNTM0IDUzNSA2MzUuN2M2LjMgNi4yIDE2LjQgNi4yIDIyLjYgMEw4MjkgMzY0LjVsNTkuMyA1OS4zYTguMDEgOC4wMSAwIDAgMCAxMy42LTQuN2wyNC0xOTkuMmMuNy01LjEtMy43LTkuNS04LjktOC44eicpKTtcbmV4cG9ydHMuUm9sbGJhY2tPdXRsaW5lID0gZ2V0SWNvbigncm9sbGJhY2snLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNzkzIDI0MkgzNjZ2LTc0YzAtNi43LTcuNy0xMC40LTEyLjktNi4zbC0xNDIgMTEyYTggOCAwIDAgMCAwIDEyLjZsMTQyIDExMmM1LjIgNC4xIDEyLjkuNCAxMi45LTYuM3YtNzRoNDE1djQ3MEgxNzVjLTQuNCAwLTggMy42LTggOHY2MGMwIDQuNCAzLjYgOCA4IDhoNjE4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjMwNmMwLTM1LjMtMjguNy02NC02NC02NHonKSk7XG5leHBvcnRzLlNhZmV0eU91dGxpbmUgPSBnZXRJY29uKCdzYWZldHknLCBvdXRsaW5lLCBnZXROb2RlKG5vcm1hbFZpZXdCb3gsICdNNTEyIDY0TDEyOCAxOTJ2Mzg0YzAgMjEyLjEgMTcxLjkgMzg0IDM4NCAzODRzMzg0LTE3MS45IDM4NC0zODRWMTkyTDUxMiA2NHptMzEyIDUxMmMwIDE3Mi4zLTEzOS43IDMxMi0zMTIgMzEyUzIwMCA3NDguMyAyMDAgNTc2VjI0NmwzMTItMTEwIDMxMiAxMTB2MzMweicsICdNMzc4LjQgNDc1LjFhMzUuOTEgMzUuOTEgMCAwIDAtNTAuOSAwIDM1LjkxIDM1LjkxIDAgMCAwIDAgNTAuOWwxMjkuNCAxMjkuNCAyLjEgMi4xYTMzLjk4IDMzLjk4IDAgMCAwIDQ4LjEgMEw3MzAuNiA0MzRhMzMuOTggMzMuOTggMCAwIDAgMC00OC4xbC0yLjgtMi44YTMzLjk4IDMzLjk4IDAgMCAwLTQ4LjEgMEw0ODMgNTc5LjcgMzc4LjQgNDc1LjF6JykpO1xuZXhwb3J0cy5Sb2JvdE91dGxpbmUgPSBnZXRJY29uKCdyb2JvdCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00zMDAgMzI4YTYwIDYwIDAgMSAwIDEyMCAwIDYwIDYwIDAgMSAwLTEyMCAwek04NTIgNjRIMTcyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NjBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjgwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tMzIgNjYwSDIwNFYxMjhoNjE2djU5NnpNNjA0IDMyOGE2MCA2MCAwIDEgMCAxMjAgMCA2MCA2MCAwIDEgMC0xMjAgMHptMjUwLjIgNTU2SDE2OS44Yy0xNi41IDAtMjkuOCAxNC4zLTI5LjggMzJ2MzZjMCA0LjQgMy4zIDggNy40IDhoNzI5LjFjNC4xIDAgNy40LTMuNiA3LjQtOHYtMzZjLjEtMTcuNy0xMy4yLTMyLTI5LjctMzJ6TTY2NCA1MDhIMzYwYy00LjQgMC04IDMuNi04IDh2NjBjMCA0LjQgMy42IDggOCA4aDMwNGM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOHonKSk7XG5leHBvcnRzLlNlYXJjaE91dGxpbmUgPSBnZXRJY29uKCdzZWFyY2gnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTA5LjYgODU0LjVMNjQ5LjkgNTk0LjhDNjkwLjIgNTQyLjcgNzEyIDQ3OSA3MTIgNDEyYzAtODAuMi0zMS4zLTE1NS40LTg3LjktMjEyLjEtNTYuNi01Ni43LTEzMi04Ny45LTIxMi4xLTg3LjlzLTE1NS41IDMxLjMtMjEyLjEgODcuOUMxNDMuMiAyNTYuNSAxMTIgMzMxLjggMTEyIDQxMmMwIDgwLjEgMzEuMyAxNTUuNSA4Ny45IDIxMi4xQzI1Ni41IDY4MC44IDMzMS44IDcxMiA0MTIgNzEyYzY3IDAgMTMwLjYtMjEuOCAxODIuNy02MmwyNTkuNyAyNTkuNmE4LjIgOC4yIDAgMCAwIDExLjYgMGw0My42LTQzLjVhOC4yIDguMiAwIDAgMCAwLTExLjZ6TTU3MC40IDU3MC40QzUyOCA2MTIuNyA0NzEuOCA2MzYgNDEyIDYzNnMtMTE2LTIzLjMtMTU4LjQtNjUuNkMyMTEuMyA1MjggMTg4IDQ3MS44IDE4OCA0MTJzMjMuMy0xMTYuMSA2NS42LTE1OC40QzI5NiAyMTEuMyAzNTIuMiAxODggNDEyIDE4OHMxMTYuMSAyMy4yIDE1OC40IDY1LjZTNjM2IDM1Mi4yIDYzNiA0MTJzLTIzLjMgMTE2LjEtNjUuNiAxNTguNHonKSk7XG5leHBvcnRzLlNjYW5PdXRsaW5lID0gZ2V0SWNvbignc2NhbicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00xMzYgMzg0aDU2YzQuNCAwIDgtMy42IDgtOFYyMDBoMTc2YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04SDE5NmMtMzcuNiAwLTY4IDMwLjQtNjggNjh2MTgwYzAgNC40IDMuNiA4IDggOHptNTEyLTE4NGgxNzZ2MTc2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LThWMTk2YzAtMzcuNi0zMC40LTY4LTY4LTY4SDY0OGMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOHpNMzc2IDgyNEgyMDBWNjQ4YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHYxODBjMCAzNy42IDMwLjQgNjggNjggNjhoMTgwYzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em01MTItMTg0aC01NmMtNC40IDAtOCAzLjYtOCA4djE3Nkg2NDhjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoMTgwYzM3LjYgMCA2OC0zMC40IDY4LTY4VjY0OGMwLTQuNC0zLjYtOC04LTh6bTE2LTE2NEgxMjBjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNzg0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04eicpKTtcbmV4cG9ydHMuU2Npc3Nvck91dGxpbmUgPSBnZXRJY29uKCdzY2lzc29yJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTU2Ny4xIDUxMmwzMTguNS0zMTkuM2M1LTUgMS41LTEzLjctNS42LTEzLjdoLTkwLjVjLTIuMSAwLTQuMi44LTUuNiAyLjNsLTI3My4zIDI3NC05MC4yLTkwLjVjMTIuNS0yMi4xIDE5LjctNDcuNiAxOS43LTc0LjggMC04My45LTY4LjEtMTUyLTE1Mi0xNTJzLTE1MiA2OC4xLTE1MiAxNTIgNjguMSAxNTIgMTUyIDE1MmMyNy43IDAgNTMuNi03LjQgNzUuOS0yMC4zbDkwIDkwLjMtOTAuMSA5MC4zQTE1MS4wNCAxNTEuMDQgMCAwIDAgMjg4IDU4MmMtODMuOSAwLTE1MiA2OC4xLTE1MiAxNTJzNjguMSAxNTIgMTUyIDE1MiAxNTItNjguMSAxNTItMTUyYzAtMjcuMi03LjItNTIuNy0xOS43LTc0LjhsOTAuMi05MC41IDI3My4zIDI3NGMxLjUgMS41IDMuNSAyLjMgNS42IDIuM0g4ODBjNy4xIDAgMTAuNy04LjYgNS42LTEzLjdMNTY3LjEgNTEyek0yODggMzcwYy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHptMCA0NDRjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgweicpKTtcbmV4cG9ydHMuU2VsZWN0T3V0bGluZSA9IGdldEljb24oJ3NlbGVjdCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDM2MGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOEgxODRWMTg0aDY1NnYzMjBjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOFYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTY1My4zIDU5OS40bDUyLjItNTIuMmE4LjAxIDguMDEgMCAwIDAtNC43LTEzLjZsLTE3OS40LTIxYy01LjEtLjYtOS41IDMuNy04LjkgOC45bDIxIDE3OS40Yy44IDYuNiA4LjkgOS40IDEzLjYgNC43bDUyLjQtNTIuNCAyNTYuMiAyNTYuMmMzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDQyLjQtNDIuNGMzLjEtMy4xIDMuMS04LjIgMC0xMS4zTDY1My4zIDU5OS40eicpKTtcbmV4cG9ydHMuU2hha2VPdXRsaW5lID0gZ2V0SWNvbignc2hha2UnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNMzI0IDY2NmE0OCA0OCAwIDEgMCA5NiAwIDQ4IDQ4IDAgMSAwLTk2IDB6bTYxNi43LTMwOS42TDY2Ny42IDgzLjJDNjU1LjIgNzAuOSA2MzguNyA2NCA2MjEuMSA2NHMtMzQuMSA2LjgtNDYuNSAxOS4yTDgzLjMgNTc0LjVhNjUuODUgNjUuODUgMCAwIDAgMCA5My4xbDI3My4yIDI3My4yYzEyLjMgMTIuMyAyOC45IDE5LjIgNDYuNSAxOS4yczM0LjEtNi44IDQ2LjUtMTkuMmw0OTEuMy00OTEuM2MyNS42LTI1LjcgMjUuNi02Ny41LS4xLTkzLjF6TTQwMyA4ODAuMUwxNDMuOSA2MjFsNDc3LjItNDc3LjIgMjU5IDI1OS4yTDQwMyA4ODAuMXpNMTUyLjggMzczLjdhNy45IDcuOSAwIDAgMCAxMS4yIDBMMzczLjcgMTY0YTcuOSA3LjkgMCAwIDAgMC0xMS4ybC0zOC40LTM4LjRhNy45IDcuOSAwIDAgMC0xMS4yIDBMMTE0LjMgMzIzLjlhNy45IDcuOSAwIDAgMCAwIDExLjJsMzguNSAzOC42em03MTguNiAyNzYuNmE3LjkgNy45IDAgMCAwLTExLjIgMEw2NTAuMyA4NjAuMWE3LjkgNy45IDAgMCAwIDAgMTEuMmwzOC40IDM4LjRhNy45IDcuOSAwIDAgMCAxMS4yIDBMOTA5LjcgNzAwYTcuOSA3LjkgMCAwIDAgMC0xMS4ybC0zOC4zLTM4LjV6JykpO1xuZXhwb3J0cy5TaGFyZUFsdE91dGxpbmUgPSBnZXRJY29uKCdzaGFyZS1hbHQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNzUyIDY2NGMtMjguNSAwLTU0LjggMTAtNzUuNCAyNi43TDQ2OS40IDU0MC44YTE2MC42OCAxNjAuNjggMCAwIDAgMC01Ny42bDIwNy4yLTE0OS45QzY5Ny4yIDM1MCA3MjMuNSAzNjAgNzUyIDM2MGM2Ni4yIDAgMTIwLTUzLjggMTIwLTEyMHMtNTMuOC0xMjAtMTIwLTEyMC0xMjAgNTMuOC0xMjAgMTIwYzAgMTEuNiAxLjYgMjIuNyA0LjcgMzMuM0w0MzkuOSA0MTUuOEM0MTAuNyAzNzcuMSAzNjQuMyAzNTIgMzEyIDM1MmMtODguNCAwLTE2MCA3MS42LTE2MCAxNjBzNzEuNiAxNjAgMTYwIDE2MGM1Mi4zIDAgOTguNy0yNS4xIDEyNy45LTYzLjhsMTk2LjggMTQyLjVjLTMuMSAxMC42LTQuNyAyMS44LTQuNyAzMy4zIDAgNjYuMiA1My44IDEyMCAxMjAgMTIwczEyMC01My44IDEyMC0xMjAtNTMuOC0xMjAtMTIwLTEyMHptMC00NzZjMjguNyAwIDUyIDIzLjMgNTIgNTJzLTIzLjMgNTItNTIgNTItNTItMjMuMy01Mi01MiAyMy4zLTUyIDUyLTUyek0zMTIgNjAwYy00OC41IDAtODgtMzkuNS04OC04OHMzOS41LTg4IDg4LTg4IDg4IDM5LjUgODggODgtMzkuNSA4OC04OCA4OHptNDQwIDIzNmMtMjguNyAwLTUyLTIzLjMtNTItNTJzMjMuMy01MiA1Mi01MiA1MiAyMy4zIDUyIDUyLTIzLjMgNTItNTIgNTJ6JykpO1xuZXhwb3J0cy5TaG9wcGluZ0NhcnRPdXRsaW5lID0gZ2V0SWNvbignc2hvcHBpbmctY2FydCcsIG91dGxpbmUsIGdldE5vZGUobm9ybWFsVmlld0JveCwgJ005MjIuOSA3MDEuOUgzMjcuNGwyOS45LTYwLjkgNDk2LjgtLjljMTYuOCAwIDMxLjItMTIgMzQuMi0yOC42bDY4LjgtMzg1LjFjMS44LTEwLjEtLjktMjAuNS03LjUtMjguNGEzNC45OSAzNC45OSAwIDAgMC0yNi42LTEyLjVsLTYzMi0yLjEtNS40LTI1LjRjLTMuNC0xNi4yLTE4LTI4LTM0LjYtMjhIOTYuNWEzNS4zIDM1LjMgMCAxIDAgMCA3MC42aDEyNS45TDI0NiAzMTIuOGw1OC4xIDI4MS4zLTc0LjggMTIyLjFhMzQuOTYgMzQuOTYgMCAwIDAtMyAzNi44YzYgMTEuOSAxOC4xIDE5LjQgMzEuNSAxOS40aDYyLjhhMTAyLjQzIDEwMi40MyAwIDAgMC0yMC42IDYxLjdjMCA1Ni42IDQ2IDEwMi42IDEwMi42IDEwMi42czEwMi42LTQ2IDEwMi42LTEwMi42YzAtMjIuMy03LjQtNDQtMjAuNi02MS43aDE2MS4xYTEwMi40MyAxMDIuNDMgMCAwIDAtMjAuNiA2MS43YzAgNTYuNiA0NiAxMDIuNiAxMDIuNiAxMDIuNnMxMDIuNi00NiAxMDIuNi0xMDIuNmMwLTIyLjMtNy40LTQ0LTIwLjYtNjEuN0g5MjNjMTkuNCAwIDM1LjMtMTUuOCAzNS4zLTM1LjNhMzUuNDIgMzUuNDIgMCAwIDAtMzUuNC0zNS4yek0zMDUuNyAyNTNsNTc1LjggMS45LTU2LjQgMzE1LjgtNDUyLjMuOEwzMDUuNyAyNTN6bTk2LjkgNjEyLjdjLTE3LjQgMC0zMS42LTE0LjItMzEuNi0zMS42IDAtMTcuNCAxNC4yLTMxLjYgMzEuNi0zMS42czMxLjYgMTQuMiAzMS42IDMxLjZhMzEuNiAzMS42IDAgMCAxLTMxLjYgMzEuNnptMzI1LjEgMGMtMTcuNCAwLTMxLjYtMTQuMi0zMS42LTMxLjYgMC0xNy40IDE0LjItMzEuNiAzMS42LTMxLjZzMzEuNiAxNC4yIDMxLjYgMzEuNmEzMS42IDMxLjYgMCAwIDEtMzEuNiAzMS42eicpKTtcbmV4cG9ydHMuU2hyaW5rT3V0bGluZSA9IGdldEljb24oJ3NocmluaycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004ODEuNyAxODcuNGwtNDUuMS00NS4xYTguMDMgOC4wMyAwIDAgMC0xMS4zIDBMNjY3LjggMjk5LjlsLTU0LjctNTQuN2E3Ljk0IDcuOTQgMCAwIDAtMTMuNSA0LjdMNTc2LjEgNDM5Yy0uNiA1LjIgMy43IDkuNSA4LjkgOC45bDE4OS4yLTIzLjVjNi42LS44IDkuMy04LjggNC43LTEzLjVsLTU0LjctNTQuNyAxNTcuNi0xNTcuNmMzLTMgMy04LjEtLjEtMTEuMnpNNDM5IDU3Ni4xbC0xODkuMiAyMy41Yy02LjYuOC05LjMgOC45LTQuNyAxMy41bDU0LjcgNTQuNy0xNTcuNSAxNTcuNWE4LjAzIDguMDMgMCAwIDAgMCAxMS4zbDQ1LjEgNDUuMWMzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDE1Ny42LTE1Ny42IDU0LjcgNTQuN2E3Ljk0IDcuOTQgMCAwIDAgMTMuNS00LjdMNDQ3LjkgNTg1YTcuOSA3LjkgMCAwIDAtOC45LTguOXonKSk7XG5leHBvcnRzLlNsYWNrT3V0bGluZSA9IGdldEljb24oJ3NsYWNrJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQwOS40IDEyOGMtNDIuNCAwLTc2LjcgMzQuNC03Ni43IDc2LjggMCAyMC4zIDguMSAzOS45IDIyLjQgNTQuM2E3Ni43NCA3Ni43NCAwIDAgMCA1NC4zIDIyLjVoNzYuN3YtNzYuOGMwLTQyLjMtMzQuMy03Ni43LTc2LjctNzYuOHptMCAyMDQuOEgyMDQuN2MtNDIuNCAwLTc2LjcgMzQuNC03Ni43IDc2LjhzMzQuNCA3Ni44IDc2LjcgNzYuOGgyMDQuNmM0Mi40IDAgNzYuNy0zNC40IDc2LjctNzYuOC4xLTQyLjQtMzQuMy03Ni44LTc2LjYtNzYuOHpNNjE0IDQ4Ni40YzQyLjQgMCA3Ni44LTM0LjQgNzYuNy03Ni44VjIwNC44YzAtNDIuNC0zNC4zLTc2LjgtNzYuNy03Ni44LTQyLjQgMC03Ni43IDM0LjQtNzYuNyA3Ni44djIwNC44YzAgNDIuNSAzNC4zIDc2LjggNzYuNyA3Ni44em0yODEuNC03Ni44YzAtNDIuNC0zNC40LTc2LjgtNzYuNy03Ni44Uzc0MiAzNjcuMiA3NDIgNDA5LjZ2NzYuOGg3Ni43YzQyLjMgMCA3Ni43LTM0LjQgNzYuNy03Ni44em0tNzYuOCAxMjhINjE0Yy00Mi40IDAtNzYuNyAzNC40LTc2LjcgNzYuOCAwIDIwLjMgOC4xIDM5LjkgMjIuNCA1NC4zYTc2Ljc0IDc2Ljc0IDAgMCAwIDU0LjMgMjIuNWgyMDQuNmM0Mi40IDAgNzYuNy0zNC40IDc2LjctNzYuOC4xLTQyLjQtMzQuMy03Ni43LTc2LjctNzYuOHpNNjE0IDc0Mi40aC03Ni43djc2LjhjMCA0Mi40IDM0LjQgNzYuOCA3Ni43IDc2LjggNDIuNCAwIDc2LjgtMzQuNCA3Ni43LTc2LjguMS00Mi40LTM0LjMtNzYuNy03Ni43LTc2Ljh6TTQwOS40IDUzNy42Yy00Mi40IDAtNzYuNyAzNC40LTc2LjcgNzYuOHYyMDQuOGMwIDQyLjQgMzQuNCA3Ni44IDc2LjcgNzYuOCA0Mi40IDAgNzYuOC0zNC40IDc2LjctNzYuOFY2MTQuNGMwLTIwLjMtOC4xLTM5LjktMjIuNC01NC4zYTc2LjkyIDc2LjkyIDAgMCAwLTU0LjMtMjIuNXpNMTI4IDYxNC40YzAgMjAuMyA4LjEgMzkuOSAyMi40IDU0LjNhNzYuNzQgNzYuNzQgMCAwIDAgNTQuMyAyMi41YzQyLjQgMCA3Ni44LTM0LjQgNzYuNy03Ni44di03Ni44aC03Ni43Yy00Mi4zIDAtNzYuNyAzNC40LTc2LjcgNzYuOHonKSk7XG5leHBvcnRzLlNtYWxsRGFzaE91dGxpbmUgPSBnZXRJY29uKCdzbWFsbC1kYXNoJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTExMiA0NzZoNzJ2NzJoLTcyem0xODIgMGg3MnY3MmgtNzJ6bTM2NCAwaDcydjcyaC03MnptMTgyIDBoNzJ2NzJoLTcyem0tMzY0IDBoNzJ2NzJoLTcyeicpKTtcbmV4cG9ydHMuU29sdXRpb25PdXRsaW5lID0gZ2V0SWNvbignc29sdXRpb24nLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNjg4IDI2NGMwLTQuNC0zLjYtOC04LThIMjk2Yy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDM4NGM0LjQgMCA4LTMuNiA4LTh2LTQ4em0tOCAxMzZIMjk2Yy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDM4NGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHpNNDgwIDU0NEgyOTZjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoMTg0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04em0tNDggMzA4SDIwOFYxNDhoNTYwdjM0NGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04VjEwOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgxNjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjc4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyNjRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bTM1Ni44LTc0LjRjMjktMjYuMyA0Ny4yLTY0LjMgNDcuMi0xMDYuNiAwLTc5LjUtNjQuNS0xNDQtMTQ0LTE0NHMtMTQ0IDY0LjUtMTQ0IDE0NGMwIDQyLjMgMTguMiA4MC4zIDQ3LjIgMTA2LjYtNTcgMzIuNS05Ni4yIDkyLjctOTkuMiAxNjIuMS0uMiA0LjUgMy41IDguMyA4IDguM2g0OC4xYzQuMiAwIDcuNy0zLjMgOC03LjZDNTY0IDg3MS4yIDYyMS43IDgxNiA2OTIgODE2czEyOCA1NS4yIDEzMS45IDEyNC40Yy4yIDQuMiAzLjcgNy42IDggNy42SDg4MGM0LjYgMCA4LjItMy44IDgtOC4zLTIuOS02OS41LTQyLjItMTI5LjYtOTkuMi0xNjIuMXpNNjkyIDU5MWM0NC4yIDAgODAgMzUuOCA4MCA4MHMtMzUuOCA4MC04MCA4MC04MC0zNS44LTgwLTgwIDM1LjgtODAgODAtODB6JykpO1xuZXhwb3J0cy5Ta2V0Y2hPdXRsaW5lID0gZ2V0SWNvbignc2tldGNoJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTkyNS42IDQwNS4xbC0yMDMtMjUzLjdhNi41IDYuNSAwIDAgMC01LTIuNEgzMDYuNGMtMS45IDAtMy44LjktNSAyLjRsLTIwMyAyNTMuN2E2LjUgNi41IDAgMCAwIC4yIDguM2w0MDguNiA0NTkuNWMxLjIgMS40IDMgMi4xIDQuOCAyLjEgMS44IDAgMy41LS44IDQuOC0yLjFsNDA4LjYtNDU5LjVhNi41IDYuNSAwIDAgMCAuMi04LjN6TTY0NS4yIDIwNi40bDM0LjQgMTMzLjktMTMyLjUtMTMzLjloOTguMXptOC4yIDE3OC41SDM3MC42TDUxMiAyNDJsMTQxLjQgMTQyLjl6TTM3OC44IDIwNi40aDk4LjFMMzQ0LjMgMzQwLjNsMzQuNS0xMzMuOXptLTUzLjQgN2wtNDQuMSAxNzEuNWgtOTMuMWwxMzcuMi0xNzEuNXpNMTk0LjYgNDM0LjlIMjg5bDEyNS44IDI0Ny43LTIyMC4yLTI0Ny43ek01MTIgNzYzLjRMMzQ1LjEgNDM0LjloMzMzLjdMNTEyIDc2My40em05Ny4xLTgwLjhMNzM1IDQzNC45aDk0LjRMNjA5LjEgNjgyLjZ6bTEzMy42LTI5Ny43bC00NC4xLTE3MS41IDEzNy4yIDE3MS41aC05My4xeicpKTtcbmV4cG9ydHMuU29ydERlc2NlbmRpbmdPdXRsaW5lID0gZ2V0SWNvbignc29ydC1kZXNjZW5kaW5nJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTgzOS42IDQzMy44TDc0OSAxNTAuNWE5LjI0IDkuMjQgMCAwIDAtOC45LTYuNWgtNzcuNGMtNC4xIDAtNy42IDIuNi04LjkgNi41bC05MS4zIDI4My4zYy0uMy45LS41IDEuOS0uNSAyLjkgMCA1LjEgNC4yIDkuMyA5LjMgOS4zaDU2LjRjNC4yIDAgNy44LTIuOCA5LTYuOGwxNy41LTYxLjZoODlsMTcuMyA2MS41YzEuMSA0IDQuOCA2LjggOSA2LjhoNjEuMmMxIDAgMS45LS4xIDIuOC0uNCAyLjQtLjggNC4zLTIuNCA1LjUtNC42IDEuMS0yLjIgMS4zLTQuNy42LTcuMXpNNjYzLjMgMzI1LjVsMzIuOC0xMTYuOWg2LjNsMzIuMSAxMTYuOWgtNzEuMnptMTQzLjUgNDkyLjlINjc3LjJ2LS40bDEzMi42LTE4OC45YzEuMS0xLjYgMS43LTMuNCAxLjctNS40di0zNi40YzAtNS4xLTQuMi05LjMtOS4zLTkuM2gtMjA0Yy01LjEgMC05LjMgNC4yLTkuMyA5LjN2NDNjMCA1LjEgNC4yIDkuMyA5LjMgOS4zaDEyMi42di40TDU4Ny43IDgyOC45YTkuMzUgOS4zNSAwIDAgMC0xLjcgNS40djM2LjRjMCA1LjEgNC4yIDkuMyA5LjMgOS4zaDIxMS40YzUuMSAwIDkuMy00LjIgOS4zLTkuM3YtNDNhOS4yIDkuMiAwIDAgMC05LjItOS4zek0zMTAuMyAxNjcuMWE4IDggMCAwIDAtMTIuNiAwTDE4NS43IDMwOWMtNC4yIDUuMy0uNCAxMyA2LjMgMTNoNzZ2NTMwYzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LThWMzIyaDc2YzYuNyAwIDEwLjUtNy44IDYuMy0xM2wtMTEyLTE0MS45eicpKTtcbmV4cG9ydHMuU29ydEFzY2VuZGluZ091dGxpbmUgPSBnZXRJY29uKCdzb3J0LWFzY2VuZGluZycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004MzkuNiA0MzMuOEw3NDkgMTUwLjVhOS4yNCA5LjI0IDAgMCAwLTguOS02LjVoLTc3LjRjLTQuMSAwLTcuNiAyLjYtOC45IDYuNWwtOTEuMyAyODMuM2MtLjMuOS0uNSAxLjktLjUgMi45IDAgNS4xIDQuMiA5LjMgOS4zIDkuM2g1Ni40YzQuMiAwIDcuOC0yLjggOS02LjhsMTcuNS02MS42aDg5bDE3LjMgNjEuNWMxLjEgNCA0LjggNi44IDkgNi44aDYxLjJjMSAwIDEuOS0uMSAyLjgtLjQgMi40LS44IDQuMy0yLjQgNS41LTQuNiAxLjEtMi4yIDEuMy00LjcuNi03LjF6TTY2My4zIDMyNS41bDMyLjgtMTE2LjloNi4zbDMyLjEgMTE2LjloLTcxLjJ6bTE0My41IDQ5Mi45SDY3Ny4ydi0uNGwxMzIuNi0xODguOWMxLjEtMS42IDEuNy0zLjQgMS43LTUuNHYtMzYuNGMwLTUuMS00LjItOS4zLTkuMy05LjNoLTIwNGMtNS4xIDAtOS4zIDQuMi05LjMgOS4zdjQzYzAgNS4xIDQuMiA5LjMgOS4zIDkuM2gxMjIuNnYuNEw1ODcuNyA4MjguOWE5LjM1IDkuMzUgMCAwIDAtMS43IDUuNHYzNi40YzAgNS4xIDQuMiA5LjMgOS4zIDkuM2gyMTEuNGM1LjEgMCA5LjMtNC4yIDkuMy05LjN2LTQzYTkuMiA5LjIgMCAwIDAtOS4yLTkuM3pNNDE2IDcwMmgtNzZWMTcyYzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY1MzBoLTc2Yy02LjcgMC0xMC41IDcuOC02LjMgMTNsMTEyIDE0MS45YTggOCAwIDAgMCAxMi42IDBsMTEyLTE0MS45YzQuMS01LjIuNC0xMy02LjMtMTN6JykpO1xuZXhwb3J0cy5TdG9ja091dGxpbmUgPSBnZXRJY29uKCdzdG9jaycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MDQgNzQ3SDEyMGMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg3ODRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTE2NS43IDYyMS44bDM5LjcgMzkuNWMzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDIzNC43LTIzMy45IDk3LjYgOTcuM2EzMi4xMSAzMi4xMSAwIDAgMCA0NS4yIDBsMjY0LjItMjYzLjJjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM2wtMzkuNy0zOS42YTguMDMgOC4wMyAwIDAgMC0xMS4zIDBsLTIzNS43IDIzNS05Ny43LTk3LjNhMzIuMTEgMzIuMTEgMCAwIDAtNDUuMiAwTDE2NS43IDYxMC41YTcuOTQgNy45NCAwIDAgMCAwIDExLjN6JykpO1xuZXhwb3J0cy5Td2FwTGVmdE91dGxpbmUgPSBnZXRJY29uKCdzd2FwLWxlZnQnLCBvdXRsaW5lLCBnZXROb2RlKG5vcm1hbFZpZXdCb3gsICdNODcyIDU3MkgyNjYuOGwxNDQuMy0xODNjNC4xLTUuMi40LTEzLTYuMy0xM0gzNDBjLTkuOCAwLTE5LjEgNC41LTI1LjEgMTIuMmwtMTY0IDIwOGMtMTYuNSAyMS0xLjYgNTEuOCAyNS4xIDUxLjhoNjk2YzQuNCAwIDgtMy42IDgtOHYtNjBjMC00LjQtMy42LTgtOC04eicpKTtcbmV4cG9ydHMuU3dhcFJpZ2h0T3V0bGluZSA9IGdldEljb24oJ3N3YXAtcmlnaHQnLCBvdXRsaW5lLCBnZXROb2RlKG5vcm1hbFZpZXdCb3gsICdNODczLjEgNTk2LjJsLTE2NC0yMDhBMzIgMzIgMCAwIDAgNjg0IDM3NmgtNjQuOGMtNi43IDAtMTAuNCA3LjctNi4zIDEzbDE0NC4zIDE4M0gxNTJjLTQuNCAwLTggMy42LTggOHY2MGMwIDQuNCAzLjYgOCA4IDhoNjk1LjljMjYuOCAwIDQxLjctMzAuOCAyNS4yLTUxLjh6JykpO1xuZXhwb3J0cy5TdHJpa2V0aHJvdWdoT3V0bGluZSA9IGdldEljb24oJ3N0cmlrZXRocm91Z2gnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTUyIDQ3NEg1NjkuOWMtMTAtMi0yMC41LTQtMzEuNi02LTE1LjktMi45LTIyLjItNC4xLTMwLjgtNS44LTUxLjMtMTAtODIuMi0yMC0xMDYuOC0zNC4yLTM1LjEtMjAuNS01Mi4yLTQ4LjMtNTIuMi04NS4xIDAtMzcgMTUuMi02Ny43IDQ0LTg5IDI4LjQtMjEgNjguOC0zMi4xIDExNi44LTMyLjEgNTQuOCAwIDk3LjEgMTQuNCAxMjUuOCA0Mi44IDE0LjYgMTQuNCAyNS4zIDMyLjEgMzEuOCA1Mi42IDEuMyA0LjEgMi44IDEwIDQuMyAxNy44LjkgNC44IDUuMiA4LjIgOS45IDguMmg3Mi44YzUuNiAwIDEwLjEtNC42IDEwLjEtMTAuMXYtMWMtLjctNi44LTEuMy0xMi4xLTItMTYtNy4zLTQzLjUtMjgtODEuNy01OS43LTExMC4zLTQ0LjQtNDAuNS0xMDkuNy02MS44LTE4OC43LTYxLjgtNzIuMyAwLTEzNy40IDE4LjEtMTgzLjMgNTAuOS0yNS42IDE4LjQtNDUuNCA0MS4yLTU4LjYgNjcuNy0xMy41IDI3LjEtMjAuMyA1OC40LTIwLjMgOTIuOSAwIDI5LjUgNS43IDU0LjUgMTcuMyA3Ni41IDguMyAxNS43IDE5LjYgMjkuNSAzNC4xIDQySDcyYy00LjQgMC04IDMuNi04IDh2NjBjMCA0LjQgMy42IDggOCA4aDQzMy4yYzIuMS40IDMuOS44IDUuOSAxLjIgMzAuOSA2LjIgNDkuNSAxMC40IDY2LjYgMTUuMiAyMyA2LjUgNDAuNiAxMy4zIDU1LjIgMjEuNSAzNS44IDIwLjIgNTMuMyA0OS4yIDUzLjMgODkgMCAzNS4zLTE1LjUgNjYuOC00My42IDg4LjgtMzAuNSAyMy45LTc1LjYgMzYuNC0xMzAuNSAzNi40LTQzLjcgMC04MC43LTguNS0xMTAuMi0yNS0yOS4xLTE2LjMtNDkuMS0zOS44LTU5LjctNjkuNS0uOC0yLjItMS43LTUuMi0yLjctOS0xLjItNC40LTUuMy03LjUtOS43LTcuNWgtNzkuN2MtNS42IDAtMTAuMSA0LjYtMTAuMSAxMC4xdjFjLjIgMi4zLjQgNC4yLjYgNS43IDYuNSA0OC44IDMwLjMgODguOCA3MC43IDExOC44IDQ3LjEgMzQuOCAxMTMuNCA1My4yIDE5MS44IDUzLjIgODQuMiAwIDE1NC44LTE5LjggMjA0LjItNTcuMyAyNS0xOC45IDQ0LjItNDIuMiA1Ny4xLTY5IDEzLTI3LjEgMTkuNy01Ny45IDE5LjctOTEuNSAwLTMxLjgtNS44LTU4LjQtMTcuOC04MS40LTUuOC0xMS4yLTEzLjEtMjEuNS0yMS44LTMwLjhIOTUyYzQuNCAwIDgtMy42IDgtOHYtNjBhOCA4IDAgMCAwLTgtNy45eicpKTtcbmV4cG9ydHMuU3dhcE91dGxpbmUgPSBnZXRJY29uKCdzd2FwJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg0Ny45IDU5MkgxNTJjLTQuNCAwLTggMy42LTggOHY2MGMwIDQuNCAzLjYgOCA4IDhoNjA1LjJMNjEyLjkgODUxYy00LjEgNS4yLS40IDEzIDYuMyAxM2g3Mi41YzQuOSAwIDkuNS0yLjIgMTIuNi02LjFsMTY4LjgtMjE0LjFjMTYuNS0yMSAxLjYtNTEuOC0yNS4yLTUxLjh6TTg3MiAzNTZIMjY2LjhsMTQ0LjMtMTgzYzQuMS01LjIuNC0xMy02LjMtMTNoLTcyLjVjLTQuOSAwLTkuNSAyLjItMTIuNiA2LjFMMTUwLjkgMzgwLjJjLTE2LjUgMjEtMS42IDUxLjggMjUuMSA1MS44aDY5NmM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOHonKSk7XG5leHBvcnRzLlN5bmNPdXRsaW5lID0gZ2V0SWNvbignc3luYycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00xNjggNTA0LjJjMS00My43IDEwLTg2LjEgMjYuOS0xMjYgMTcuMy00MSA0Mi4xLTc3LjcgNzMuNy0xMDkuNFMzMzcgMjEyLjMgMzc4IDE5NWM0Mi40LTE3LjkgODcuNC0yNyAxMzMuOS0yN3M5MS41IDkuMSAxMzMuOCAyN0EzNDEuNSAzNDEuNSAwIDAgMSA3NTUgMjY4LjhjOS45IDkuOSAxOS4yIDIwLjQgMjcuOCAzMS40bC02MC4yIDQ3YTggOCAwIDAgMCAzIDE0LjFsMTc1LjcgNDNjNSAxLjIgOS45LTIuNiA5LjktNy43bC44LTE4MC45YzAtNi43LTcuNy0xMC41LTEyLjktNi4zbC01Ni40IDQ0LjFDNzY1LjggMTU1LjEgNjQ2LjIgOTIgNTExLjggOTIgMjgyLjcgOTIgOTYuMyAyNzUuNiA5MiA1MDMuOGE4IDggMCAwIDAgOCA4LjJoNjBjNC40IDAgNy45LTMuNSA4LTcuOHptNzU2IDcuOGgtNjBjLTQuNCAwLTcuOSAzLjUtOCA3LjgtMSA0My43LTEwIDg2LjEtMjYuOSAxMjYtMTcuMyA0MS00Mi4xIDc3LjgtNzMuNyAxMDkuNEEzNDIuNDUgMzQyLjQ1IDAgMCAxIDUxMi4xIDg1NmEzNDIuMjQgMzQyLjI0IDAgMCAxLTI0My4yLTEwMC44Yy05LjktOS45LTE5LjItMjAuNC0yNy44LTMxLjRsNjAuMi00N2E4IDggMCAwIDAtMy0xNC4xbC0xNzUuNy00M2MtNS0xLjItOS45IDIuNi05LjkgNy43bC0uNyAxODFjMCA2LjcgNy43IDEwLjUgMTIuOSA2LjNsNTYuNC00NC4xQzI1OC4yIDg2OC45IDM3Ny44IDkzMiA1MTIuMiA5MzJjMjI5LjIgMCA0MTUuNS0xODMuNyA0MTkuOC00MTEuOGE4IDggMCAwIDAtOC04LjJ6JykpO1xuZXhwb3J0cy5UYWJsZU91dGxpbmUgPSBnZXRJY29uKCd0YWJsZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MjggMTYwSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NDBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDIwOEg2NzZWMjMyaDIxMnYxMzZ6bTAgMjI0SDY3NlY0MzJoMjEydjE2MHpNNDEyIDQzMmgyMDB2MTYwSDQxMlY0MzJ6bTIwMC02NEg0MTJWMjMyaDIwMHYxMzZ6bS00NzYgNjRoMjEydjE2MEgxMzZWNDMyem0wLTIwMGgyMTJ2MTM2SDEzNlYyMzJ6bTAgNDI0aDIxMnYxMzZIMTM2VjY1NnptMjc2IDBoMjAwdjEzNkg0MTJWNjU2em00NzYgMTM2SDY3NlY2NTZoMjEydjEzNnonKSk7XG5leHBvcnRzLlRlYW1PdXRsaW5lID0gZ2V0SWNvbigndGVhbScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004MjQuMiA2OTkuOWEzMDEuNTUgMzAxLjU1IDAgMCAwLTg2LjQtNjAuNEM3ODMuMSA2MDIuOCA4MTIgNTQ2LjggODEyIDQ4NGMwLTExMC44LTkyLjQtMjAxLjctMjAzLjItMjAwLTEwOS4xIDEuNy0xOTcgOTAuNi0xOTcgMjAwIDAgNjIuOCAyOSAxMTguOCA3NC4yIDE1NS41YTMwMC45NSAzMDAuOTUgMCAwIDAtODYuNCA2MC40QzM0NSA3NTQuNiAzMTQgODI2LjggMzEyIDkwMy44YTggOCAwIDAgMCA4IDguMmg1NmM0LjMgMCA3LjktMy40IDgtNy43IDEuOS01OCAyNS40LTExMi4zIDY2LjctMTUzLjVBMjI2LjYyIDIyNi42MiAwIDAgMSA2MTIgNjg0YzYwLjkgMCAxMTguMiAyMy43IDE2MS4zIDY2LjhDODE0LjUgNzkyIDgzOCA4NDYuMyA4NDAgOTA0LjNjLjEgNC4zIDMuNyA3LjcgOCA3LjdoNTZhOCA4IDAgMCAwIDgtOC4yYy0yLTc3LTMzLTE0OS4yLTg3LjgtMjAzLjl6TTYxMiA2MTJjLTM0LjIgMC02Ni40LTEzLjMtOTAuNS0zNy41YTEyNi44NiAxMjYuODYgMCAwIDEtMzcuNS05MS44Yy4zLTMyLjggMTMuNC02NC41IDM2LjMtODggMjQtMjQuNiA1Ni4xLTM4LjMgOTAuNC0zOC43IDMzLjktLjMgNjYuOCAxMi45IDkxIDM2LjYgMjQuOCAyNC4zIDM4LjQgNTYuOCAzOC40IDkxLjQgMCAzNC4yLTEzLjMgNjYuMy0zNy41IDkwLjVBMTI3LjMgMTI3LjMgMCAwIDEgNjEyIDYxMnpNMzYxLjUgNTEwLjRjLS45LTguNy0xLjQtMTcuNS0xLjQtMjYuNCAwLTE1LjkgMS41LTMxLjQgNC4zLTQ2LjUuNy0zLjYtMS4yLTcuMy00LjUtOC44LTEzLjYtNi4xLTI2LjEtMTQuNS0zNi45LTI1LjFhMTI3LjU0IDEyNy41NCAwIDAgMS0zOC43LTk1LjRjLjktMzIuMSAxMy44LTYyLjYgMzYuMy04NS42IDI0LjctMjUuMyA1Ny45LTM5LjEgOTMuMi0zOC43IDMxLjkuMyA2Mi43IDEyLjYgODYgMzQuNCA3LjkgNy40IDE0LjcgMTUuNiAyMC40IDI0LjQgMiAzLjEgNS45IDQuNCA5LjMgMy4yIDE3LjYtNi4xIDM2LjItMTAuNCA1NS4zLTEyLjQgNS42LS42IDguOC02LjYgNi4zLTExLjYtMzIuNS02NC4zLTk4LjktMTA4LjctMTc1LjctMTA5LjktMTEwLjktMS43LTIwMy4zIDg5LjItMjAzLjMgMTk5LjkgMCA2Mi44IDI4LjkgMTE4LjggNzQuMiAxNTUuNS0zMS44IDE0LjctNjEuMSAzNS04Ni41IDYwLjQtNTQuOCA1NC43LTg1LjggMTI2LjktODcuOCAyMDRhOCA4IDAgMCAwIDggOC4yaDU2LjFjNC4zIDAgNy45LTMuNCA4LTcuNyAxLjktNTggMjUuNC0xMTIuMyA2Ni43LTE1My41IDI5LjQtMjkuNCA2NS40LTQ5LjggMTA0LjctNTkuNyAzLjktMSA2LjUtNC43IDYtOC43eicpKTtcbmV4cG9ydHMuVGFvYmFvT3V0bGluZSA9IGdldEljb24oJ3Rhb2JhbycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00xNjguNSAyNzMuN2E2OC43IDY4LjcgMCAxIDAgMTM3LjQgMCA2OC43IDY4LjcgMCAxIDAtMTM3LjQgMHptNzMwIDc5LjJzLTIzLjctMTg0LjQtNDI2LjktNzAuMWMxNy4zLTMwIDI1LjYtNDkuNSAyNS42LTQ5LjVMMzk2LjQgMjA1cy00MC42IDEzMi42LTExMyAxOTQuNGMwIDAgNzAuMSA0MC42IDY5LjQgMzkuNCAyMC4xLTIwLjEgMzguMi00MC42IDUzLjctNjAuNCAxNi4xLTcgMzEuNS0xMy42IDQ2LjctMTkuOC0xOC42IDMzLjUtNDguNyA4My44LTc4LjggMTE1LjZsNDIuNCAzN3MyOC44LTI3LjcgNjAuNC02MS4yaDM2djYxLjhIMzcyLjl2NDkuNWgxNDAuM3YxMTguNWMtMS43IDAtMy42IDAtNS40LS4yLTE1LjQtLjctMzkuNS0zLjMtNDktMTguMi0xMS41LTE4LjEtMy01MS41LTIuNC03MS45aC05N2wtMy40IDEuOHMtMzUuNSAxNTkuMSAxMDIuMyAxNTUuNWMxMjkuMSAzLjYgMjAzLTM2IDIzOC42LTYzLjFsMTQuMiA1Mi42IDc5LjYtMzMuMi01My45LTEzMS45LTY0LjYgMjAuMSAxMi4xIDQ1LjJjLTE2LjYgMTIuNC0zNS42IDIxLjctNTYuMiAyOC40VjU2MS4zaDEzNy4xdi00OS41SDYyOC4xVjQ1MGgxMzcuNnYtNDkuNUg1MjEuM2MxNy42LTIxLjQgMzEuNS00MS4xIDM1LTUzLjZsLTQyLjUtMTEuNmMxODIuOC02NS41IDI4NC41LTU0LjIgMjgzLjYgNTMuMnYyODIuOHMxMC44IDk3LjEtMTAwLjQgOTAuMWwtNjAuMi0xMi45LTE0LjIgNTcuMVM4ODIuNSA4ODAgOTAzLjcgNjgwLjJjMjEuMy0yMDAtNS4yLTMyNy4zLTUuMi0zMjcuM3ptLTcwNy40IDE4LjNsLTQ1LjQgNjkuNyA4My42IDUyLjFzNTYgMjguNSAyOS40IDgxLjlDMjMzLjggNjI1LjUgMTEyIDczNi4zIDExMiA3MzYuM2wxMDkgNjguMWM3NS40LTE2My43IDcwLjUtMTQyIDg5LjUtMjAwLjcgMTkuNS02MC4xIDIzLjctMTA1LjktOS40LTEzOS4xLTQyLjQtNDIuNi00Ny00Ni42LTExMC05My40eicpKTtcbmV4cG9ydHMuVG9Ub3BPdXRsaW5lID0gZ2V0SWNvbigndG8tdG9wJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4NSA3ODBIMTY1Yy00LjQgMC04IDMuNi04IDh2NjBjMCA0LjQgMy42IDggOCA4aDcyMGM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOHpNNDAwIDMyNS43aDczLjlWNjY0YzAgNC40IDMuNiA4IDggOGg2MGM0LjQgMCA4LTMuNiA4LThWMzI1LjdINjI0YzYuNyAwIDEwLjQtNy43IDYuMy0xMi45TDUxOC4zIDE3MWE4IDggMCAwIDAtMTIuNiAwbC0xMTIgMTQxLjdjLTQuMSA1LjMtLjQgMTMgNi4zIDEzeicpKTtcbmV4cG9ydHMuVHJhZGVtYXJrT3V0bGluZSA9IGdldEljb24oJ3RyYWRlbWFyaycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6bTg3LjUtMzM0LjdjMzQuOC0xMi44IDc4LjQtNDkgNzguNC0xMTkuMiAwLTcxLjItNDUuNS0xMzEuMS0xNDQuMi0xMzEuMUgzNzhjLTQuNCAwLTggMy42LTggOHY0MTBjMCA0LjQgMy42IDggOCA4aDU0LjVjNC40IDAgOC0zLjYgOC04VjU2MS4yaDg4LjdsNzQuNiAxNTkuMmMxLjMgMi44IDQuMSA0LjYgNy4yIDQuNmg2MmE3LjkgNy45IDAgMCAwIDcuMS0xMS41bC04MC42LTE2NC4yek01MjIgNTA1aC04MS41VjM1N2g4My40YzQ4IDAgODAuOSAyNS4zIDgwLjkgNzUuNSAwIDQ2LjktMjkuOCA3Mi41LTgyLjggNzIuNXonKSk7XG5leHBvcnRzLlRyYW5zYWN0aW9uT3V0bGluZSA9IGdldEljb24oJ3RyYW5zYWN0aW9uJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTY2OC42IDMyMGMwLTQuNC0zLjYtOC04LThoLTU0LjVjLTMgMC01LjggMS43LTcuMSA0LjRsLTg0LjcgMTY4LjhINTExbC04NC43LTE2OC44YTggOCAwIDAgMC03LjEtNC40aC01NS43Yy0xLjMgMC0yLjYuMy0zLjggMS0zLjkgMi4xLTUuMyA3LTMuMiAxMC44bDEwMy45IDE5MS42aC01N2MtNC40IDAtOCAzLjYtOCA4djI3LjFjMCA0LjQgMy42IDggOCA4aDc2djM5aC03NmMtNC40IDAtOCAzLjYtOCA4djI3LjFjMCA0LjQgMy42IDggOCA4aDc2VjcwNGMwIDQuNCAzLjYgOCA4IDhoNDkuOWM0LjQgMCA4LTMuNiA4LTh2LTYzLjVoNzYuM2M0LjQgMCA4LTMuNiA4LTh2LTI3LjFjMC00LjQtMy42LTgtOC04aC03Ni4zdi0zOWg3Ni4zYzQuNCAwIDgtMy42IDgtOHYtMjcuMWMwLTQuNC0zLjYtOC04LThINTY0bDEwMy43LTE5MS42Yy41LTEuMS45LTIuNC45LTMuN3pNMTU3LjkgNTA0LjJhMzUyLjcgMzUyLjcgMCAwIDEgMTAzLjUtMjQyLjRjMzIuNS0zMi41IDcwLjMtNTguMSAxMTIuNC03NS45IDQzLjYtMTguNCA4OS45LTI3LjggMTM3LjYtMjcuOCA0Ny44IDAgOTQuMSA5LjMgMTM3LjYgMjcuOCA0Mi4xIDE3LjggNzkuOSA0My40IDExMi40IDc1LjkgMTAgMTAgMTkuMyAyMC41IDI3LjkgMzEuNGwtNTAgMzkuMWE4IDggMCAwIDAgMyAxNC4xbDE1Ni44IDM4LjNjNSAxLjIgOS45LTIuNiA5LjktNy43bC44LTE2MS41YzAtNi43LTcuNy0xMC41LTEyLjktNi4zbC00Ny44IDM3LjRDNzcwLjcgMTQ2LjMgNjQ4LjYgODIgNTExLjUgODIgMjc3IDgyIDg2LjMgMjcwLjEgODIgNTAzLjhhOCA4IDAgMCAwIDggOC4yaDYwYzQuMyAwIDcuOC0zLjUgNy45LTcuOHpNOTM0IDUxMmgtNjBjLTQuMyAwLTcuOSAzLjUtOCA3LjhhMzUyLjcgMzUyLjcgMCAwIDEtMTAzLjUgMjQyLjQgMzUyLjU3IDM1Mi41NyAwIDAgMS0xMTIuNCA3NS45Yy00My42IDE4LjQtODkuOSAyNy44LTEzNy42IDI3LjhzLTk0LjEtOS4zLTEzNy42LTI3LjhhMzUyLjU3IDM1Mi41NyAwIDAgMS0xMTIuNC03NS45Yy0xMC0xMC0xOS4zLTIwLjUtMjcuOS0zMS40bDQ5LjktMzkuMWE4IDggMCAwIDAtMy0xNC4xbC0xNTYuOC0zOC4zYy01LTEuMi05LjkgMi42LTkuOSA3LjdsLS44IDE2MS43YzAgNi43IDcuNyAxMC41IDEyLjkgNi4zbDQ3LjgtMzcuNEMyNTMuMyA4NzcuNyAzNzUuNCA5NDIgNTEyLjUgOTQyIDc0NyA5NDIgOTM3LjcgNzUzLjkgOTQyIDUyMC4yYTggOCAwIDAgMC04LTguMnonKSk7XG5leHBvcnRzLlR3aXR0ZXJPdXRsaW5lID0gZ2V0SWNvbigndHdpdHRlcicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ005MjggMjU0LjNjLTMwLjYgMTMuMi02My45IDIyLjctOTguMiAyNi40YTE3MC4xIDE3MC4xIDAgMCAwIDc1LTk0IDMzNi42NCAzMzYuNjQgMCAwIDEtMTA4LjIgNDEuMkExNzAuMSAxNzAuMSAwIDAgMCA2NzIgMTc0Yy05NC41IDAtMTcwLjUgNzYuNi0xNzAuNSAxNzAuNiAwIDEzLjIgMS42IDI2LjQgNC4yIDM5LjEtMTQxLjUtNy40LTI2Ny43LTc1LTM1MS42LTE3OC41YTE2OS4zMiAxNjkuMzIgMCAwIDAtMjMuMiA4Ni4xYzAgNTkuMiAzMC4xIDExMS40IDc2IDE0Mi4xYTE3MiAxNzIgMCAwIDEtNzcuMS0yMS43djIuMWMwIDgyLjkgNTguNiAxNTEuNiAxMzYuNyAxNjcuNGExODAuNiAxODAuNiAwIDAgMS00NC45IDUuOGMtMTEuMSAwLTIxLjYtMS4xLTMyLjItMi42QzIxMSA2NTIgMjczLjkgNzAxLjEgMzQ4LjggNzAyLjdjLTU4LjYgNDUuOS0xMzIgNzIuOS0yMTEuNyA3Mi45LTE0LjMgMC0yNy41LS41LTQxLjItMi4xQzE3MS41IDgyMiAyNjEuMiA4NTAgMzU3LjggODUwIDY3MS40IDg1MCA4NDMgNTkwLjIgODQzIDM2NC43YzAtNy40IDAtMTQuOC0uNS0yMi4yIDMzLjItMjQuMyA2Mi4zLTU0LjQgODUuNS04OC4yeicpKTtcbmV4cG9ydHMuVW5kZXJsaW5lT3V0bGluZSA9IGdldEljb24oJ3VuZGVybGluZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004MjQgODA0SDIwMGMtNC40IDAtOCAzLjQtOCA3LjZ2NjAuOGMwIDQuMiAzLjYgNy42IDggNy42aDYyNGM0LjQgMCA4LTMuNCA4LTcuNnYtNjAuOGMwLTQuMi0zLjYtNy42LTgtNy42em0tMzEyLTc2YzY5LjQgMCAxMzQuNi0yNy4xIDE4My44LTc2LjJDNzQ1IDYwMi43IDc3MiA1MzcuNCA3NzIgNDY4VjE1NmMwLTYuNi01LjQtMTItMTItMTJoLTYwYy02LjYgMC0xMiA1LjQtMTIgMTJ2MzEyYzAgOTctNzkgMTc2LTE3NiAxNzZzLTE3Ni03OS0xNzYtMTc2VjE1NmMwLTYuNi01LjQtMTItMTItMTJoLTYwYy02LjYgMC0xMiA1LjQtMTIgMTJ2MzEyYzAgNjkuNCAyNy4xIDEzNC42IDc2LjIgMTgzLjhDMzc3LjMgNzAxIDQ0Mi42IDcyOCA1MTIgNzI4eicpKTtcbmV4cG9ydHMuVW5kb091dGxpbmUgPSBnZXRJY29uKCd1bmRvJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTUxMS40IDEyNEMyOTAuNSAxMjQuMyAxMTIgMzAzIDExMiA1MjMuOWMwIDEyOCA2MC4yIDI0MiAxNTMuOCAzMTUuMmwtMzcuNSA0OGMtNC4xIDUuMy0uMyAxMyA2LjMgMTIuOWwxNjctLjhjNS4yIDAgOS00LjkgNy43LTkuOUwzNjkuOCA3MjdhOCA4IDAgMCAwLTE0LjEtM0wzMTUgNzc2LjFjLTEwLjItOC0yMC0xNi43LTI5LjMtMjZhMzE4LjY0IDMxOC42NCAwIDAgMS02OC42LTEwMS43QzIwMC40IDYwOSAxOTIgNTY3LjEgMTkyIDUyMy45czguNC04NS4xIDI1LjEtMTI0LjVjMTYuMS0zOC4xIDM5LjItNzIuMyA2OC42LTEwMS43IDI5LjQtMjkuNCA2My42LTUyLjUgMTAxLjctNjguNkM0MjYuOSAyMTIuNCA0NjguOCAyMDQgNTEyIDIwNHM4NS4xIDguNCAxMjQuNSAyNS4xYzM4LjEgMTYuMSA3Mi4zIDM5LjIgMTAxLjcgNjguNiAyOS40IDI5LjQgNTIuNSA2My42IDY4LjYgMTAxLjcgMTYuNyAzOS40IDI1LjEgODEuMyAyNS4xIDEyNC41cy04LjQgODUuMS0yNS4xIDEyNC41YTMxOC42NCAzMTguNjQgMCAwIDEtNjguNiAxMDEuN2MtNy41IDcuNS0xNS4zIDE0LjUtMjMuNCAyMS4yYTcuOTMgNy45MyAwIDAgMC0xLjIgMTEuMWwzOS40IDUwLjVjMi44IDMuNSA3LjkgNC4xIDExLjQgMS4zQzg1NC41IDc2MC44IDkxMiA2NDkuMSA5MTIgNTIzLjljMC0yMjEuMS0xNzkuNC00MDAuMi00MDAuNi0zOTkuOXonKSk7XG5leHBvcnRzLlVub3JkZXJlZExpc3RPdXRsaW5lID0gZ2V0SWNvbigndW5vcmRlcmVkLWxpc3QnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNOTEyIDE5MkgzMjhjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTg0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDI4NEgzMjhjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTg0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDI4NEgzMjhjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTg0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04ek0xMDQgMjI4YTU2IDU2IDAgMSAwIDExMiAwIDU2IDU2IDAgMSAwLTExMiAwem0wIDI4NGE1NiA1NiAwIDEgMCAxMTIgMCA1NiA1NiAwIDEgMC0xMTIgMHptMCAyODRhNTYgNTYgMCAxIDAgMTEyIDAgNTYgNTYgMCAxIDAtMTEyIDB6JykpO1xuZXhwb3J0cy5VcE91dGxpbmUgPSBnZXRJY29uKCd1cCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004OTAuNSA3NTUuM0w1MzcuOSAyNjkuMmMtMTIuOC0xNy42LTM5LTE3LjYtNTEuNyAwTDEzMy41IDc1NS4zQTggOCAwIDAgMCAxNDAgNzY4aDc1YzUuMSAwIDkuOS0yLjUgMTIuOS02LjZMNTEyIDM2OS44bDI4NC4xIDM5MS42YzMgNC4xIDcuOCA2LjYgMTIuOSA2LjZoNzVjNi41IDAgMTAuMy03LjQgNi41LTEyLjd6JykpO1xuZXhwb3J0cy5VcGxvYWRPdXRsaW5lID0gZ2V0SWNvbigndXBsb2FkJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTQwMCAzMTcuN2g3My45VjY1NmMwIDQuNCAzLjYgOCA4IDhoNjBjNC40IDAgOC0zLjYgOC04VjMxNy43SDYyNGM2LjcgMCAxMC40LTcuNyA2LjMtMTIuOUw1MTguMyAxNjNhOCA4IDAgMCAwLTEyLjYgMGwtMTEyIDE0MS43Yy00LjEgNS4zLS40IDEzIDYuMyAxM3pNODc4IDYyNmgtNjBjLTQuNCAwLTggMy42LTggOHYxNTRIMjE0VjYzNGMwLTQuNC0zLjYtOC04LThoLTYwYy00LjQgMC04IDMuNi04IDh2MTk4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY4NGMxNy43IDAgMzItMTQuMyAzMi0zMlY2MzRjMC00LjQtMy42LTgtOC04eicpKTtcbmV4cG9ydHMuVXNlckFkZE91dGxpbmUgPSBnZXRJY29uKCd1c2VyLWFkZCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ002NzguMyA2NDIuNGMyNC4yLTEzIDUxLjktMjAuNCA4MS40LTIwLjRoLjFjMyAwIDQuNC0zLjYgMi4yLTUuNmEzNzEuNjcgMzcxLjY3IDAgMCAwLTEwMy43LTY1LjhjLS40LS4yLS44LS4zLTEuMi0uNUM3MTkuMiA1MDUgNzU5LjYgNDMxLjcgNzU5LjYgMzQ5YzAtMTM3LTExMC44LTI0OC0yNDcuNS0yNDhTMjY0LjcgMjEyIDI2NC43IDM0OWMwIDgyLjcgNDAuNCAxNTYgMTAyLjYgMjAxLjEtLjQuMi0uOC4zLTEuMi41LTQ0LjcgMTguOS04NC44IDQ2LTExOS4zIDgwLjZhMzczLjQyIDM3My40MiAwIDAgMC04MC40IDExOS41QTM3My42IDM3My42IDAgMCAwIDEzNyA4ODguOGE4IDggMCAwIDAgOCA4LjJoNTkuOWM0LjMgMCA3LjktMy41IDgtNy44IDItNzcuMiAzMi45LTE0OS41IDg3LjYtMjA0LjNDMzU3IDYyOC4yIDQzMi4yIDU5NyA1MTIuMiA1OTdjNTYuNyAwIDExMS4xIDE1LjcgMTU4IDQ1LjFhOC4xIDguMSAwIDAgMCA4LjEuM3pNNTEyLjIgNTIxYy00NS44IDAtODguOS0xNy45LTEyMS40LTUwLjRBMTcxLjIgMTcxLjIgMCAwIDEgMzQwLjUgMzQ5YzAtNDUuOSAxNy45LTg5LjEgNTAuMy0xMjEuNlM0NjYuMyAxNzcgNTEyLjIgMTc3czg4LjkgMTcuOSAxMjEuNCA1MC40QTE3MS4yIDE3MS4yIDAgMCAxIDY4My45IDM0OWMwIDQ1LjktMTcuOSA4OS4xLTUwLjMgMTIxLjZDNjAxLjEgNTAzLjEgNTU4IDUyMSA1MTIuMiA1MjF6TTg4MCA3NTloLTg0di04NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2ODRoLTg0Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDg0djg0YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTg0aDg0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04eicpKTtcbmV4cG9ydHMuVXNlcmdyb3VwQWRkT3V0bGluZSA9IGdldEljb24oJ3VzZXJncm91cC1hZGQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNODkyIDc3MmgtODB2LTgwYzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHY4MGgtODBjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoODB2ODBjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOHYtODBoODBjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LTh6TTM3My41IDQ5OC40Yy0uOS04LjctMS40LTE3LjUtMS40LTI2LjQgMC0xNS45IDEuNS0zMS40IDQuMy00Ni41LjctMy42LTEuMi03LjMtNC41LTguOC0xMy42LTYuMS0yNi4xLTE0LjUtMzYuOS0yNS4xYTEyNy41NCAxMjcuNTQgMCAwIDEtMzguNy05NS40Yy45LTMyLjEgMTMuOC02Mi42IDM2LjMtODUuNiAyNC43LTI1LjMgNTcuOS0zOS4xIDkzLjItMzguNyAzMS45LjMgNjIuNyAxMi42IDg2IDM0LjQgNy45IDcuNCAxNC43IDE1LjYgMjAuNCAyNC40IDIgMy4xIDUuOSA0LjQgOS4zIDMuMiAxNy42LTYuMSAzNi4yLTEwLjQgNTUuMy0xMi40IDUuNi0uNiA4LjgtNi42IDYuMy0xMS42LTMyLjUtNjQuMy05OC45LTEwOC43LTE3NS43LTEwOS45LTExMC44LTEuNy0yMDMuMiA4OS4yLTIwMy4yIDIwMCAwIDYyLjggMjguOSAxMTguOCA3NC4yIDE1NS41LTMxLjggMTQuNy02MS4xIDM1LTg2LjUgNjAuNC01NC44IDU0LjctODUuOCAxMjYuOS04Ny44IDIwNGE4IDggMCAwIDAgOCA4LjJoNTYuMWM0LjMgMCA3LjktMy40IDgtNy43IDEuOS01OCAyNS40LTExMi4zIDY2LjctMTUzLjUgMjkuNC0yOS40IDY1LjQtNDkuOCAxMDQuNy01OS43IDMuOC0xLjEgNi40LTQuOCA1LjktOC44ek04MjQgNDcyYzAtMTA5LjQtODcuOS0xOTguMy0xOTYuOS0yMDBDNTE2LjMgMjcwLjMgNDI0IDM2MS4yIDQyNCA0NzJjMCA2Mi44IDI5IDExOC44IDc0LjIgMTU1LjVhMzAwLjk1IDMwMC45NSAwIDAgMC04Ni40IDYwLjRDMzU3IDc0Mi42IDMyNiA4MTQuOCAzMjQgODkxLjhhOCA4IDAgMCAwIDggOC4yaDU2YzQuMyAwIDcuOS0zLjQgOC03LjcgMS45LTU4IDI1LjQtMTEyLjMgNjYuNy0xNTMuNUM1MDUuOCA2OTUuNyA1NjMgNjcyIDYyNCA2NzJjMTEwLjQgMCAyMDAtODkuNSAyMDAtMjAwem0tMTA5LjUgOTAuNUM2OTAuMyA1ODYuNyA2NTguMiA2MDAgNjI0IDYwMHMtNjYuMy0xMy4zLTkwLjUtMzcuNWExMjcuMjYgMTI3LjI2IDAgMCAxLTM3LjUtOTEuOGMuMy0zMi44IDEzLjQtNjQuNSAzNi4zLTg4IDI0LTI0LjYgNTYuMS0zOC4zIDkwLjQtMzguNyAzMy45LS4zIDY2LjggMTIuOSA5MSAzNi42IDI0LjggMjQuMyAzOC40IDU2LjggMzguNCA5MS40LS4xIDM0LjItMTMuNCA2Ni4zLTM3LjYgOTAuNXonKSk7XG5leHBvcnRzLlVzZXJPdXRsaW5lID0gZ2V0SWNvbigndXNlcicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NTguNSA3NjMuNmEzNzQgMzc0IDAgMCAwLTgwLjYtMTE5LjUgMzc1LjYzIDM3NS42MyAwIDAgMC0xMTkuNS04MC42Yy0uNC0uMi0uOC0uMy0xLjItLjVDNzE5LjUgNTE4IDc2MCA0NDQuNyA3NjAgMzYyYzAtMTM3LTExMS0yNDgtMjQ4LTI0OFMyNjQgMjI1IDI2NCAzNjJjMCA4Mi43IDQwLjUgMTU2IDEwMi44IDIwMS4xLS40LjItLjguMy0xLjIuNS00NC44IDE4LjktODUgNDYtMTE5LjUgODAuNmEzNzUuNjMgMzc1LjYzIDAgMCAwLTgwLjYgMTE5LjVBMzcxLjcgMzcxLjcgMCAwIDAgMTM2IDkwMS44YTggOCAwIDAgMCA4IDguMmg2MGM0LjQgMCA3LjktMy41IDgtNy44IDItNzcuMiAzMy0xNDkuNSA4Ny44LTIwNC4zIDU2LjctNTYuNyAxMzItODcuOSAyMTIuMi04Ny45czE1NS41IDMxLjIgMjEyLjIgODcuOUM3NzkgNzUyLjcgODEwIDgyNSA4MTIgOTAyLjJjLjEgNC40IDMuNiA3LjggOCA3LjhoNjBhOCA4IDAgMCAwIDgtOC4yYy0xLTQ3LjgtMTAuOS05NC4zLTI5LjUtMTM4LjJ6TTUxMiA1MzRjLTQ1LjkgMC04OS4xLTE3LjktMTIxLjYtNTAuNFMzNDAgNDA3LjkgMzQwIDM2MmMwLTQ1LjkgMTcuOS04OS4xIDUwLjQtMTIxLjZTNDY2LjEgMTkwIDUxMiAxOTBzODkuMSAxNy45IDEyMS42IDUwLjRTNjg0IDMxNi4xIDY4NCAzNjJjMCA0NS45LTE3LjkgODkuMS01MC40IDEyMS42UzU1Ny45IDUzNCA1MTIgNTM0eicpKTtcbmV4cG9ydHMuVXNlckRlbGV0ZU91dGxpbmUgPSBnZXRJY29uKCd1c2VyLWRlbGV0ZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ002NzguMyA2NTUuNGMyNC4yLTEzIDUxLjktMjAuNCA4MS40LTIwLjRoLjFjMyAwIDQuNC0zLjYgMi4yLTUuNmEzNzEuNjcgMzcxLjY3IDAgMCAwLTEwMy43LTY1LjhjLS40LS4yLS44LS4zLTEuMi0uNUM3MTkuMiA1MTggNzU5LjYgNDQ0LjcgNzU5LjYgMzYyYzAtMTM3LTExMC44LTI0OC0yNDcuNS0yNDhTMjY0LjcgMjI1IDI2NC43IDM2MmMwIDgyLjcgNDAuNCAxNTYgMTAyLjYgMjAxLjEtLjQuMi0uOC4zLTEuMi41LTQ0LjcgMTguOS04NC44IDQ2LTExOS4zIDgwLjZhMzczLjQyIDM3My40MiAwIDAgMC04MC40IDExOS41QTM3My42IDM3My42IDAgMCAwIDEzNyA5MDEuOGE4IDggMCAwIDAgOCA4LjJoNTkuOWM0LjMgMCA3LjktMy41IDgtNy44IDItNzcuMiAzMi45LTE0OS41IDg3LjYtMjA0LjNDMzU3IDY0MS4yIDQzMi4yIDYxMCA1MTIuMiA2MTBjNTYuNyAwIDExMS4xIDE1LjcgMTU4IDQ1LjFhOC4xIDguMSAwIDAgMCA4LjEuM3pNNTEyLjIgNTM0Yy00NS44IDAtODguOS0xNy45LTEyMS40LTUwLjRBMTcxLjIgMTcxLjIgMCAwIDEgMzQwLjUgMzYyYzAtNDUuOSAxNy45LTg5LjEgNTAuMy0xMjEuNlM0NjYuMyAxOTAgNTEyLjIgMTkwczg4LjkgMTcuOSAxMjEuNCA1MC40QTE3MS4yIDE3MS4yIDAgMCAxIDY4My45IDM2MmMwIDQ1LjktMTcuOSA4OS4xLTUwLjMgMTIxLjZDNjAxLjEgNTE2LjEgNTU4IDUzNCA1MTIuMiA1MzR6TTg4MCA3NzJINjQwYy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDI0MGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHonKSk7XG5leHBvcnRzLlVzZXJncm91cERlbGV0ZU91dGxpbmUgPSBnZXRJY29uKCd1c2VyZ3JvdXAtZGVsZXRlJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg4OCA3ODRINjY0Yy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDIyNGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHpNMzczLjUgNTEwLjRjLS45LTguNy0xLjQtMTcuNS0xLjQtMjYuNCAwLTE1LjkgMS41LTMxLjQgNC4zLTQ2LjUuNy0zLjYtMS4yLTcuMy00LjUtOC44LTEzLjYtNi4xLTI2LjEtMTQuNS0zNi45LTI1LjFhMTI3LjU0IDEyNy41NCAwIDAgMS0zOC43LTk1LjRjLjktMzIuMSAxMy44LTYyLjYgMzYuMy04NS42IDI0LjctMjUuMyA1Ny45LTM5LjEgOTMuMi0zOC43IDMxLjkuMyA2Mi43IDEyLjYgODYgMzQuNCA3LjkgNy40IDE0LjcgMTUuNiAyMC40IDI0LjQgMiAzLjEgNS45IDQuNCA5LjMgMy4yIDE3LjYtNi4xIDM2LjItMTAuNCA1NS4zLTEyLjQgNS42LS42IDguOC02LjYgNi4zLTExLjYtMzIuNS02NC4zLTk4LjktMTA4LjctMTc1LjctMTA5LjktMTEwLjktMS43LTIwMy4zIDg5LjItMjAzLjMgMTk5LjkgMCA2Mi44IDI4LjkgMTE4LjggNzQuMiAxNTUuNS0zMS44IDE0LjctNjEuMSAzNS04Ni41IDYwLjQtNTQuOCA1NC43LTg1LjggMTI2LjktODcuOCAyMDRhOCA4IDAgMCAwIDggOC4yaDU2LjFjNC4zIDAgNy45LTMuNCA4LTcuNyAxLjktNTggMjUuNC0xMTIuMyA2Ni43LTE1My41IDI5LjQtMjkuNCA2NS40LTQ5LjggMTA0LjctNTkuNyAzLjktMSA2LjUtNC43IDYtOC43ek04MjQgNDg0YzAtMTA5LjQtODcuOS0xOTguMy0xOTYuOS0yMDBDNTE2LjMgMjgyLjMgNDI0IDM3My4yIDQyNCA0ODRjMCA2Mi44IDI5IDExOC44IDc0LjIgMTU1LjVhMzAwLjk1IDMwMC45NSAwIDAgMC04Ni40IDYwLjRDMzU3IDc1NC42IDMyNiA4MjYuOCAzMjQgOTAzLjhhOCA4IDAgMCAwIDggOC4yaDU2YzQuMyAwIDcuOS0zLjQgOC03LjcgMS45LTU4IDI1LjQtMTEyLjMgNjYuNy0xNTMuNUM1MDUuOCA3MDcuNyA1NjMgNjg0IDYyNCA2ODRjMTEwLjQgMCAyMDAtODkuNSAyMDAtMjAwem0tMTA5LjUgOTAuNUM2OTAuMyA1OTguNyA2NTguMiA2MTIgNjI0IDYxMnMtNjYuMy0xMy4zLTkwLjUtMzcuNWExMjcuMjYgMTI3LjI2IDAgMCAxLTM3LjUtOTEuOGMuMy0zMi44IDEzLjQtNjQuNSAzNi4zLTg4IDI0LTI0LjYgNTYuMS0zOC4zIDkwLjQtMzguNyAzMy45LS4zIDY2LjggMTIuOSA5MSAzNi42IDI0LjggMjQuMyAzOC40IDU2LjggMzguNCA5MS40LS4xIDM0LjItMTMuNCA2Ni4zLTM3LjYgOTAuNXonKSk7XG5leHBvcnRzLlZlcnRpY2FsQWxpZ25Cb3R0b21PdXRsaW5lID0gZ2V0SWNvbigndmVydGljYWwtYWxpZ24tYm90dG9tJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1OS45IDc4MEgxNjQuMWMtNC41IDAtOC4xIDMuNi04LjEgOHY2MGMwIDQuNCAzLjYgOCA4LjEgOGg2OTUuOGM0LjUgMCA4LjEtMy42IDguMS04di02MGMwLTQuNC0zLjYtOC04LjEtOHpNNTA1LjcgNjY5YTggOCAwIDAgMCAxMi42IDBsMTEyLTE0MS43YzQuMS01LjIuNC0xMi45LTYuMy0xMi45aC03NC4xVjE3NmMwLTQuNC0zLjYtOC04LThoLTYwYy00LjQgMC04IDMuNi04IDh2MzM4LjNINDAwYy02LjcgMC0xMC40IDcuNy02LjMgMTIuOWwxMTIgMTQxLjh6JykpO1xuZXhwb3J0cy5WZXJ0aWNhbEFsaWduTWlkZGxlT3V0bGluZSA9IGdldEljb24oJ3ZlcnRpY2FsLWFsaWduLW1pZGRsZScsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ004NTkuOSA0NzRIMTY0LjFjLTQuNSAwLTguMSAzLjYtOC4xIDh2NjBjMCA0LjQgMy42IDggOC4xIDhoNjk1LjhjNC41IDAgOC4xLTMuNiA4LjEtOHYtNjBjMC00LjQtMy42LTgtOC4xLTh6bS0zNTMuNi03NC43YzIuOSAzLjcgOC41IDMuNyAxMS4zIDBsMTAwLjgtMTI3LjVjMy43LTQuNy40LTExLjctNS43LTExLjdINTUwVjEwNGMwLTQuNC0zLjYtOC04LThoLTYwYy00LjQgMC04IDMuNi04IDh2MTU2aC02Mi44Yy02IDAtOS40IDctNS43IDExLjdsMTAwLjggMTI3LjZ6bTExLjQgMjI1LjRhNy4xNCA3LjE0IDAgMCAwLTExLjMgMEw0MDUuNiA3NTIuM2E3LjIzIDcuMjMgMCAwIDAgNS43IDExLjdINDc0djE1NmMwIDQuNCAzLjYgOCA4IDhoNjBjNC40IDAgOC0zLjYgOC04Vjc2NGg2Mi44YzYgMCA5LjQtNyA1LjctMTEuN0w1MTcuNyA2MjQuN3onKSk7XG5leHBvcnRzLlZlcnRpY2FsQWxpZ25Ub3BPdXRsaW5lID0gZ2V0SWNvbigndmVydGljYWwtYWxpZ24tdG9wJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTg1OS45IDE2OEgxNjQuMWMtNC41IDAtOC4xIDMuNi04LjEgOHY2MGMwIDQuNCAzLjYgOCA4LjEgOGg2OTUuOGM0LjUgMCA4LjEtMy42IDguMS04di02MGMwLTQuNC0zLjYtOC04LjEtOHpNNTE4LjMgMzU1YTggOCAwIDAgMC0xMi42IDBsLTExMiAxNDEuN2E3Ljk4IDcuOTggMCAwIDAgNi4zIDEyLjloNzMuOVY4NDhjMCA0LjQgMy42IDggOCA4aDYwYzQuNCAwIDgtMy42IDgtOFY1MDkuN0g2MjRjNi43IDAgMTAuNC03LjcgNi4zLTEyLjlMNTE4LjMgMzU1eicpKTtcbmV4cG9ydHMuVmVydGljYWxSaWdodE91dGxpbmUgPSBnZXRJY29uKCd2ZXJ0aWNhbC1yaWdodCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ00zMjYgMTY0aC02NGMtNC40IDAtOCAzLjYtOCA4djY4OGMwIDQuNCAzLjYgOCA4IDhoNjRjNC40IDAgOC0zLjYgOC04VjE3MmMwLTQuNC0zLjYtOC04LTh6bTQ0NCA3Mi40VjE2NGMwLTYuOC03LjktMTAuNS0xMy4xLTYuMUwzMzUgNTEybDQyMS45IDM1NC4xYzUuMiA0LjQgMTMuMS43IDEzLjEtNi4xdi03Mi40YzAtOS40LTQuMi0xOC40LTExLjQtMjQuNUw0NTkuNCA1MTJsMjk5LjItMjUxLjFjNy4yLTYuMSAxMS40LTE1LjEgMTEuNC0yNC41eicpKTtcbmV4cG9ydHMuVmVydGljYWxMZWZ0T3V0bGluZSA9IGdldEljb24oJ3ZlcnRpY2FsLWxlZnQnLCBvdXRsaW5lLCBnZXROb2RlKG5ld1ZpZXdCb3gsICdNNzYyIDE2NGgtNjRjLTQuNCAwLTggMy42LTggOHY2ODhjMCA0LjQgMy42IDggOCA4aDY0YzQuNCAwIDgtMy42IDgtOFYxNzJjMC00LjQtMy42LTgtOC04em0tNTA4IDB2NzIuNGMwIDkuNSA0LjIgMTguNCAxMS40IDI0LjVMNTY0LjYgNTEyIDI2NS40IDc2My4xYy03LjIgNi4xLTExLjQgMTUtMTEuNCAyNC41Vjg2MGMwIDYuOCA3LjkgMTAuNSAxMy4xIDYuMUw2ODkgNTEyIDI2Ny4xIDE1Ny45QTcuOTUgNy45NSAwIDAgMCAyNTQgMTY0eicpKTtcbmV4cG9ydHMuV2lmaU91dGxpbmUgPSBnZXRJY29uKCd3aWZpJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTcyMyA2MjAuNUM2NjYuOCA1NzEuNiA1OTMuNCA1NDIgNTEzIDU0MnMtMTUzLjggMjkuNi0yMTAuMSA3OC42YTguMSA4LjEgMCAwIDAtLjggMTEuMmwzNiA0Mi45YzIuOSAzLjQgOCAzLjggMTEuNC45QzM5My4xIDYzNy4yIDQ1MC4zIDYxNCA1MTMgNjE0czExOS45IDIzLjIgMTYzLjUgNjEuNWMzLjQgMi45IDguNSAyLjUgMTEuNC0uOWwzNi00Mi45YzIuOC0zLjMgMi40LTguMy0uOS0xMS4yem0xMTcuNC0xNDAuMUM3NTEuNyA0MDYuNSA2MzcuNiAzNjIgNTEzIDM2MnMtMjM4LjcgNDQuNS0zMjcuNSAxMTguNGE4LjA1IDguMDUgMCAwIDAtMSAxMS4zbDM2IDQyLjljMi44IDMuNCA3LjkgMy44IDExLjIgMUMzMDggNDcyLjIgNDA2LjEgNDM0IDUxMyA0MzRzMjA1IDM4LjIgMjgxLjIgMTAxLjZjMy40IDIuOCA4LjQgMi40IDExLjItMWwzNi00Mi45YzIuOC0zLjQgMi40LTguNS0xLTExLjN6bTExNi43LTEzOUM4MzUuNyAyNDEuOCA2ODAuMyAxODIgNTExIDE4MmMtMTY4LjIgMC0zMjIuNiA1OS00NDMuNyAxNTcuNGE4IDggMCAwIDAtMS4xIDExLjRsMzYgNDIuOWMyLjggMy4zIDcuOCAzLjggMTEuMSAxLjFDMjIyIDMwNi43IDM2MC4zIDI1NCA1MTEgMjU0YzE1MS44IDAgMjkxIDUzLjUgNDAwIDE0Mi43IDMuNCAyLjggOC40IDIuMyAxMS4yLTEuMWwzNi00Mi45YzIuOS0zLjQgMi40LTguNS0xLjEtMTEuM3pNNDQ4IDc3OGE2NCA2NCAwIDEgMCAxMjggMCA2NCA2NCAwIDEgMC0xMjggMHonKSk7XG5leHBvcnRzLlpoaWh1T3V0bGluZSA9IGdldEljb24oJ3poaWh1Jywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTU2NC43IDIzMC4xVjgwM2g2MGwyNS4yIDcxLjRMNzU2LjMgODAzaDEzMS41VjIzMC4xSDU2NC43em0yNDcuNyA0OTdoLTU5LjlsLTc1LjEgNTAuNC0xNy44LTUwLjRoLTE4VjMwOC4zaDE3MC43djQxOC44ek01MjYuMSA0ODYuOUgzOTMuM2MyLjEtNDQuOSA0LjMtMTA0LjMgNi42LTE3Mi45aDEzMC45bC0uMS04LjFjMC0uNi0uMi0xNC43LTIuMy0yOS4xLTIuMS0xNS02LjYtMzQuOS0yMS0zNC45SDI4Ny44YzQuNC0yMC42IDE1LjctNjkuNyAyOS40LTkzLjhsNi40LTExLjItMTIuOS0uN2MtLjggMC0xOS42LS45LTQxLjQgMTAuNi0zNS43IDE5LTUxLjcgNTYuNC01OC43IDg0LjQtMTguNCA3My4xLTQ0LjYgMTIzLjktNTUuNyAxNDUuNi0zLjMgNi40LTUuMyAxMC4yLTYuMiAxMi44LTEuOCA0LjktLjggOS44IDIuOCAxMyAxMC41IDkuNSAzOC4yLTIuOSAzOC41LTMgLjYtLjMgMS4zLS42IDIuMi0xIDEzLjktNi4zIDU1LjEtMjUgNjkuOC04NC41aDU2LjdjLjcgMzIuMiAzLjEgMTM4LjQgMi45IDE3Mi45aC0xNDFsLTIuMSAxLjVjLTIzLjEgMTYuOS0zMC41IDYzLjItMzAuOCA2NS4ybC0xLjQgOS4yaDE2N2MtMTIuMyA3OC4zLTI2LjUgMTEzLjQtMzQgMTI3LjQtMy43IDctNy4zIDE0LTEwLjcgMjAuOC0yMS4zIDQyLjItNDMuNCA4NS44LTEyNi4zIDE1My42LTMuNiAyLjgtNyA4LTQuOCAxMy43IDIuNCA2LjMgOS4zIDkuMSAyNC42IDkuMSA1LjQgMCAxMS44LS4zIDE5LjQtMSA0OS45LTQuNCAxMDAuOC0xOCAxMzUuMS04Ny42IDE3LTM1LjEgMzEuNy03MS43IDQzLjktMTA4LjlMNDk3IDg1MGw1LTEyYy44LTEuOSAxOS00Ni4zIDUuMS05NS45bC0uNS0xLjgtMTA4LjEtMTIzLTIyIDE2LjZjNi40LTI2LjEgMTAuNi00OS45IDEyLjUtNzEuMWgxNTguN3YtOGMwLTQwLjEtMTguNS02My45LTE5LjItNjQuOWwtMi40LTN6JykpO1xuZXhwb3J0cy5XZWlib091dGxpbmUgPSBnZXRJY29uKCd3ZWlibycsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ000NTcuMyA1NDNjLTY4LjEtMTcuNy0xNDUgMTYuMi0xNzQuNiA3Ni4yLTMwLjEgNjEuMi0xIDEyOS4xIDY3LjggMTUxLjMgNzEuMiAyMyAxNTUuMi0xMi4yIDE4NC40LTc4LjMgMjguNy02NC42LTcuMi0xMzEtNzcuNi0xNDkuMnptLTUyIDE1Ni4yYy0xMy44IDIyLjEtNDMuNSAzMS43LTY1LjggMjEuNi0yMi0xMC0yOC41LTM1LjctMTQuNi01Ny4yIDEzLjctMjEuNCA0Mi4zLTMxIDY0LjQtMjEuNyAyMi40IDkuNSAyOS42IDM1IDE2IDU3LjN6bTQ1LjUtNTguNWMtNSA4LjYtMTYuMSAxMi43LTI0LjcgOS4xLTguNS0zLjUtMTEuMi0xMy4xLTYuNC0yMS41IDUtOC40IDE1LjYtMTIuNCAyNC4xLTkuMSA4LjcgMy4yIDExLjggMTIuOSA3IDIxLjV6bTMzNC41LTE5Ny4yYzE1IDQuOCAzMS0zLjQgMzUuOS0xOC4zIDExLjgtMzYuNiA0LjQtNzguNC0yMy4yLTEwOWExMTEuMzkgMTExLjM5IDAgMCAwLTEwNi0zNC4zIDI4LjQ1IDI4LjQ1IDAgMCAwLTIxLjkgMzMuOCAyOC4zOSAyOC4zOSAwIDAgMCAzMy44IDIxLjhjMTguNC0zLjkgMzguMyAxLjggNTEuOSAxNi43YTU0LjIgNTQuMiAwIDAgMSAxMS4zIDUzLjMgMjguNDUgMjguNDUgMCAwIDAgMTguMiAzNnptOTkuOC0yMDZjLTU2LjctNjIuOS0xNDAuNC04Ni45LTIxNy43LTcwLjVhMzIuOTggMzIuOTggMCAwIDAtMjUuNCAzOS4zIDMzLjEyIDMzLjEyIDAgMCAwIDM5LjMgMjUuNWM1NS0xMS43IDExNC40IDUuNCAxNTQuOCA1MC4xIDQwLjMgNDQuNyA1MS4yIDEwNS43IDM0IDE1OS4xLTUuNiAxNy40IDMuOSAzNiAyMS4zIDQxLjcgMTcuNCA1LjYgMzYtMy45IDQxLjYtMjEuMnYtLjFjMjQuMS03NS40IDguOS0xNjEuMS00Ny45LTIyMy45ek03MjkgNDk5Yy0xMi4yLTMuNi0yMC41LTYuMS0xNC4xLTIyLjEgMTMuOC0zNC43IDE1LjItNjQuNy4zLTg2LTI4LTQwLjEtMTA0LjgtMzcuOS0xOTIuOC0xLjEgMCAwLTI3LjYgMTIuMS0yMC42LTkuOCAxMy41LTQzLjUgMTEuNS03OS45LTkuNi0xMDEtNDcuNy00Ny44LTE3NC42IDEuOC0yODMuNSAxMTAuNkMxMjcuMyA0NzEuMSA4MCA1NTcuNSA4MCA2MzIuMiA4MCA3NzUuMSAyNjMuMiA4NjIgNDQyLjUgODYyYzIzNSAwIDM5MS4zLTEzNi41IDM5MS4zLTI0NSAwLTY1LjUtNTUuMi0xMDIuNi0xMDQuOC0xMTh6TTQ0MyA4MTAuOGMtMTQzIDE0LjEtMjY2LjUtNTAuNS0yNzUuOC0xNDQuNS05LjMtOTMuOSA5OS4yLTE4MS41IDI0Mi4yLTE5NS42IDE0My0xNC4yIDI2Ni41IDUwLjUgMjc1LjggMTQ0LjRDNjk0LjQgNzA5IDU4NiA3OTYuNiA0NDMgODEwLjh6JykpO1xuZXhwb3J0cy5Xb21hbk91dGxpbmUgPSBnZXRJY29uKCd3b21hbicsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ003MTIuOCA1NDguOGM1My42LTUzLjYgODMuMi0xMjUgODMuMi0yMDAuOCAwLTc1LjktMjkuNS0xNDcuMi04My4yLTIwMC44QzY1OS4yIDkzLjYgNTg3LjggNjQgNTEyIDY0cy0xNDcuMiAyOS41LTIwMC44IDgzLjJDMjU3LjYgMjAwLjkgMjI4IDI3Mi4xIDIyOCAzNDhjMCA2My44IDIwLjkgMTI0LjQgNTkuNCAxNzMuOSA3LjMgOS40IDE1LjIgMTguMyAyMy43IDI2LjkgOC41IDguNSAxNy41IDE2LjQgMjYuOCAyMy43IDM5LjYgMzAuOCA4Ni4zIDUwLjQgMTM2LjEgNTdWNzM2SDM2MGMtNC40IDAtOCAzLjYtOCA4djYwYzAgNC40IDMuNiA4IDggOGgxMTR2MTQwYzAgNC40IDMuNiA4IDggOGg2MGM0LjQgMCA4LTMuNiA4LThWODEyaDExNGM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOEg1NTBWNjI5LjVjNjEuNS04LjIgMTE4LjItMzYuMSAxNjIuOC04MC43ek01MTIgNTU2Yy01NS42IDAtMTA3LjctMjEuNi0xNDcuMS02MC45QzMyNS42IDQ1NS44IDMwNCA0MDMuNiAzMDQgMzQ4czIxLjYtMTA3LjcgNjAuOS0xNDcuMUM0MDQuMiAxNjEuNSA0NTYuNCAxNDAgNTEyIDE0MHMxMDcuNyAyMS42IDE0Ny4xIDYwLjlDNjk4LjQgMjQwLjIgNzIwIDI5Mi40IDcyMCAzNDhzLTIxLjYgMTA3LjctNjAuOSAxNDcuMUM2MTkuNyA1MzQuNCA1NjcuNiA1NTYgNTEyIDU1NnonKSk7XG5leHBvcnRzLlpvb21Jbk91dGxpbmUgPSBnZXRJY29uKCd6b29tLWluJywgb3V0bGluZSwgZ2V0Tm9kZShuZXdWaWV3Qm94LCAnTTYzNyA0NDNINTE5VjMwOWMwLTQuNC0zLjYtOC04LThoLTYwYy00LjQgMC04IDMuNi04IDh2MTM0SDMyNWMtNC40IDAtOCAzLjYtOCA4djYwYzAgNC40IDMuNiA4IDggOGgxMTh2MTM0YzAgNC40IDMuNiA4IDggOGg2MGM0LjQgMCA4LTMuNiA4LThWNTE5aDExOGM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOHptMjg0IDQyNEw3NzUgNzIxYzEyMi4xLTE0OC45IDExMy42LTM2OS41LTI2LTUwOS0xNDgtMTQ4LjEtMzg4LjQtMTQ4LjEtNTM3IDAtMTQ4LjEgMTQ4LjYtMTQ4LjEgMzg5IDAgNTM3IDEzOS41IDEzOS42IDM2MC4xIDE0OC4xIDUwOSAyNmwxNDYgMTQ2YzMuMiAyLjggOC4zIDIuOCAxMSAwbDQzLTQzYzIuOC0yLjcgMi44LTcuOCAwLTExek02OTYgNjk2Yy0xMTguOCAxMTguNy0zMTEuMiAxMTguNy00MzAgMC0xMTguNy0xMTguOC0xMTguNy0zMTEuMiAwLTQzMCAxMTguOC0xMTguNyAzMTEuMi0xMTguNyA0MzAgMCAxMTguNyAxMTguOCAxMTguNyAzMTEuMiAwIDQzMHonKSk7XG5leHBvcnRzLkFjY291bnRCb29rVHdvVG9uZSA9IGdldEljb24oJ2FjY291bnQtYm9vaycsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ003MTIgMzA0YzAgNC40LTMuNiA4LTggOGgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhIMzg0djQ4YzAgNC40LTMuNiA4LTggOGgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhIMTg0djU4NGg2NTZWMjU2SDcxMnY0OHptLTY1LjYgMTIxLjhsLTg5LjMgMTY0LjFoNDkuMWM0LjQgMCA4IDMuNiA4IDh2MjEuM2MwIDQuNC0zLjYgOC04IDhoLTY1LjR2MzMuN2g2NS40YzQuNCAwIDggMy42IDggOHYyMS4zYzAgNC40LTMuNiA4LTggOGgtNjUuNFY3NTJjMCA0LjQtMy42IDgtOCA4aC00MS4zYy00LjQgMC04LTMuNi04LTh2LTUzLjhoLTY1LjFjLTQuNCAwLTgtMy42LTgtOHYtMjEuM2MwLTQuNCAzLjYtOCA4LThoNjUuMXYtMzMuN2gtNjUuMWMtNC40IDAtOC0zLjYtOC04di0yMS4zYzAtNC40IDMuNi04IDgtOEg0NjdsLTg5LjMtMTY0Yy0yLjEtMy45LS43LTguOCAzLjItMTAuOSAxLjEtLjcgMi41LTEgMy44LTFoNDZhOCA4IDAgMCAxIDcuMSA0LjRsNzMuNCAxNDUuNGgyLjhsNzMuNC0xNDUuNGMxLjMtMi43IDQuMS00LjQgNy4xLTQuNGg0NWM0LjUgMCA4IDMuNiA3LjkgOCAwIDEuMy0uNCAyLjYtMSAzLjh6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTYzOS41IDQxNGgtNDVjLTMgMC01LjggMS43LTcuMSA0LjRMNTE0IDU2My44aC0yLjhsLTczLjQtMTQ1LjRhOCA4IDAgMCAwLTcuMS00LjRoLTQ2Yy0xLjMgMC0yLjcuMy0zLjggMS0zLjkgMi4xLTUuMyA3LTMuMiAxMC45bDg5LjMgMTY0aC00OC42Yy00LjQgMC04IDMuNi04IDh2MjEuM2MwIDQuNCAzLjYgOCA4IDhoNjUuMXYzMy43aC02NS4xYy00LjQgMC04IDMuNi04IDh2MjEuM2MwIDQuNCAzLjYgOCA4IDhoNjUuMVY3NTJjMCA0LjQgMy42IDggOCA4aDQxLjNjNC40IDAgOC0zLjYgOC04di01My44aDY1LjRjNC40IDAgOC0zLjYgOC04di0yMS4zYzAtNC40LTMuNi04LTgtOGgtNjUuNHYtMzMuN2g2NS40YzQuNCAwIDgtMy42IDgtOHYtMjEuM2MwLTQuNC0zLjYtOC04LThoLTQ5LjFsODkuMy0xNjQuMWMuNi0xLjIgMS0yLjUgMS0zLjguMS00LjQtMy40LTgtNy45LTh6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg4MCAxODRINzEydi02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMzg0di02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIxNmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDY1NkgxODRWMjU2aDEyOHY0OGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di00OGgyNTZ2NDhjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNDhoMTI4djU4NHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuWm9vbU91dE91dGxpbmUgPSBnZXRJY29uKCd6b29tLW91dCcsIG91dGxpbmUsIGdldE5vZGUobmV3Vmlld0JveCwgJ002MzcgNDQzSDMyNWMtNC40IDAtOCAzLjYtOCA4djYwYzAgNC40IDMuNiA4IDggOGgzMTJjNC40IDAgOC0zLjYgOC04di02MGMwLTQuNC0zLjYtOC04LTh6bTI4NCA0MjRMNzc1IDcyMWMxMjIuMS0xNDguOSAxMTMuNi0zNjkuNS0yNi01MDktMTQ4LTE0OC4xLTM4OC40LTE0OC4xLTUzNyAwLTE0OC4xIDE0OC42LTE0OC4xIDM4OSAwIDUzNyAxMzkuNSAxMzkuNiAzNjAuMSAxNDguMSA1MDkgMjZsMTQ2IDE0NmMzLjIgMi44IDguMyAyLjggMTEgMGw0My00M2MyLjgtMi43IDIuOC03LjggMC0xMXpNNjk2IDY5NmMtMTE4LjggMTE4LjctMzExLjIgMTE4LjctNDMwIDAtMTE4LjctMTE4LjgtMTE4LjctMzExLjIgMC00MzAgMTE4LjgtMTE4LjcgMzExLjItMTE4LjcgNDMwIDAgMTE4LjcgMTE4LjggMTE4LjcgMzExLjIgMCA0MzB6JykpO1xuZXhwb3J0cy5BbGVydFR3b1RvbmUgPSBnZXRJY29uKCdhbGVydCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00zNDAgNTg1YzAtNS41IDQuNS0xMCAxMC0xMGg0NGM1LjUgMCAxMCA0LjUgMTAgMTB2MTcxaDM1NVY1NjNjMC0xMzYuNC0xMTAuNi0yNDctMjQ3LTI0N1MyNjUgNDI2LjYgMjY1IDU2M3YxOTNoNzVWNTg1eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ00yMTYuOSAzMTAuNWwzOS42LTM5LjZjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM2wtNjcuOS02Ny45YTguMDMgOC4wMyAwIDAgMC0xMS4zIDBsLTM5LjYgMzkuNmE4LjAzIDguMDMgMCAwIDAgMCAxMS4zbDY3LjkgNjcuOWMzLjEgMy4xIDguMSAzLjEgMTEuMyAwem02NjkuNi03OS4ybC0zOS42LTM5LjZhOC4wMyA4LjAzIDAgMCAwLTExLjMgMGwtNjcuOSA2Ny45YTguMDMgOC4wMyAwIDAgMCAwIDExLjNsMzkuNiAzOS42YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsNjcuOS02Ny45YzMuMS0zLjIgMy4xLTguMiAwLTExLjN6TTQ4NCAxODBoNTZjNC40IDAgOC0zLjYgOC04Vjc2YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY5NmMwIDQuNCAzLjYgOCA4IDh6bTM0OCA3MTJIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYyNGMwIDQuNCAzLjYgOCA4IDhoNjg4YzQuNCAwIDgtMy42IDgtOHYtMjRjMC0xNy43LTE0LjMtMzItMzItMzJ6bS02MzktOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNTc0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjU2M2MwLTE3Ni4yLTE0Mi44LTMxOS0zMTktMzE5UzE5MyAzODYuOCAxOTMgNTYzdjIzM3ptNzItMjMzYzAtMTM2LjQgMTEwLjYtMjQ3IDI0Ny0yNDdzMjQ3IDExMC42IDI0NyAyNDd2MTkzSDQwNFY1ODVjMC01LjUtNC41LTEwLTEwLTEwaC00NGMtNS41IDAtMTAgNC41LTEwIDEwdjE3MWgtNzVWNTYzeidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5BcGlUd29Ub25lID0gZ2V0SWNvbignYXBpJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTE0OC4yIDY3NC42em0xMDYuNy05Mi4zYy0yNSAyNS0zOC43IDU4LjEtMzguNyA5My40czEzLjggNjguNSAzOC43IDkzLjRjMjUgMjUgNTguMSAzOC43IDkzLjQgMzguNyAzNS4zIDAgNjguNS0xMy44IDkzLjQtMzguN2w1OS40LTU5LjQtMTg2LjgtMTg2LjgtNTkuNCA1OS40em00MjAuOC0zNjYuMWMtMzUuMyAwLTY4LjUgMTMuOC05My40IDM4LjdsLTU5LjQgNTkuNCAxODYuOCAxODYuOCA1OS40LTU5LjRjMjQuOS0yNSAzOC43LTU4LjEgMzguNy05My40cy0xMy44LTY4LjUtMzguNy05My40Yy0yNS0yNS01OC4xLTM4LjctOTMuNC0zOC43eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001NzguOSA1NDYuN2E4LjAzIDguMDMgMCAwIDAtMTEuMyAwTDUwMSA2MTMuMyA0MTAuNyA1MjNsNjYuNy02Ni43YzMuMS0zLjEgMy4xLTguMiAwLTExLjNMNDQxIDQwOC42YTguMDMgOC4wMyAwIDAgMC0xMS4zIDBMMzYzIDQ3NS4zbC00My00M2E3Ljg1IDcuODUgMCAwIDAtNS43LTIuM2MtMiAwLTQuMS44LTUuNyAyLjNMMjA2LjggNTM0LjJhMTk5LjQ1IDE5OS40NSAwIDAgMC01OC42IDE0MC40Yy0uMiAzOS41IDExLjIgNzkuMSAzNC4zIDExMy4xbC03Ni4xIDc2LjFhOC4wMyA4LjAzIDAgMCAwIDAgMTEuM2w0Mi40IDQyLjRjMS42IDEuNiAzLjYgMi4zIDUuNyAyLjNzNC4xLS44IDUuNy0yLjNsNzYuMS03Ni4xYzMzLjcgMjIuOSA3Mi45IDM0LjMgMTEyLjEgMzQuMyA1MS4yIDAgMTAyLjQtMTkuNSAxNDEuNS01OC42bDEwMS45LTEwMS45YzMuMS0zLjEgMy4xLTguMiAwLTExLjNsLTQzLTQzIDY2LjctNjYuN2MzLjEtMy4xIDMuMS04LjIgMC0xMS4zbC0zNi42LTM2LjJ6TTQ0MS43IDc2OS4xYTEzMS4zMiAxMzEuMzIgMCAwIDEtOTMuNCAzOC43Yy0zNS4zIDAtNjguNC0xMy43LTkzLjQtMzguNy0yNC45LTI0LjktMzguNy01OC4xLTM4LjctOTMuNHMxMy43LTY4LjQgMzguNy05My40bDU5LjQtNTkuNCAxODYuOCAxODYuOC01OS40IDU5LjR6bTQ3Ni02MjAuM2wtNDIuNC00Mi40Yy0xLjYtMS42LTMuNi0yLjMtNS43LTIuM3MtNC4xLjgtNS43IDIuM2wtNzYuMSA3Ni4xYTE5OS4yNyAxOTkuMjcgMCAwIDAtMTEyLjEtMzQuM2MtNTEuMiAwLTEwMi40IDE5LjUtMTQxLjUgNTguNkw0MzIuMyAzMDguN2E4LjAzIDguMDMgMCAwIDAgMCAxMS4zTDcwNCA1OTEuN2MxLjYgMS42IDMuNiAyLjMgNS43IDIuMyAyIDAgNC4xLS44IDUuNy0yLjNsMTAxLjktMTAxLjljNjguOS02OSA3Ny0xNzUuNyAyNC4zLTI1My41bDc2LjEtNzYuMWMzLjEtMy4yIDMuMS04LjMgMC0xMS40ek03NjkuMSA0NDEuN2wtNTkuNCA1OS40LTE4Ni44LTE4Ni44IDU5LjQtNTkuNGMyNC45LTI0LjkgNTguMS0zOC43IDkzLjQtMzguN3M2OC40IDEzLjcgOTMuNCAzOC43YzI0LjkgMjQuOSAzOC43IDU4LjEgMzguNyA5My40cy0xMy44IDY4LjQtMzguNyA5My40eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5BcHBzdG9yZVR3b1RvbmUgPSBnZXRJY29uKCdhcHBzdG9yZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODY0IDE0NEg1NjBjLTguOCAwLTE2IDcuMi0xNiAxNnYzMDRjMCA4LjggNy4yIDE2IDE2IDE2aDMwNGM4LjggMCAxNi03LjIgMTYtMTZWMTYwYzAtOC44LTcuMi0xNi0xNi0xNnptLTUyIDI2OEg2MTJWMjEyaDIwMHYyMDB6TTQ2NCA1NDRIMTYwYy04LjggMC0xNiA3LjItMTYgMTZ2MzA0YzAgOC44IDcuMiAxNiAxNiAxNmgzMDRjOC44IDAgMTYtNy4yIDE2LTE2VjU2MGMwLTguOC03LjItMTYtMTYtMTZ6bS01MiAyNjhIMjEyVjYxMmgyMDB2MjAwem01Mi02NjhIMTYwYy04LjggMC0xNiA3LjItMTYgMTZ2MzA0YzAgOC44IDcuMiAxNiAxNiAxNmgzMDRjOC44IDAgMTYtNy4yIDE2LTE2VjE2MGMwLTguOC03LjItMTYtMTYtMTZ6bS01MiAyNjhIMjEyVjIxMmgyMDB2MjAwem00NTIgMTMySDU2MGMtOC44IDAtMTYgNy4yLTE2IDE2djMwNGMwIDguOCA3LjIgMTYgMTYgMTZoMzA0YzguOCAwIDE2LTcuMiAxNi0xNlY1NjBjMC04LjgtNy4yLTE2LTE2LTE2em0tNTIgMjY4SDYxMlY2MTJoMjAwdjIwMHonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00yMTIgMjEyaDIwMHYyMDBIMjEyem00MDAgMGgyMDB2MjAwSDYxMnpNMjEyIDYxMmgyMDB2MjAwSDIxMnptNDAwIDBoMjAwdjIwMEg2MTJ6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkJhbmtUd29Ub25lID0gZ2V0SWNvbignYmFuaycsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW3NlY29uZGFyeUNvbG9yLCAnTTI0MC45IDM5My45aDU0Mi4yTDUxMiAxOTYuN3onXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODk0IDQ2MmMzMC45IDAgNDMuOC0zOS43IDE4LjctNThMNTMwLjggMTI2LjJhMzEuODEgMzEuODEgMCAwIDAtMzcuNiAwTDExMS4zIDQwNGMtMjUuMSAxOC4yLTEyLjIgNTggMTguOCA1OEgxOTJ2Mzc0aC03MmMtNC40IDAtOCAzLjYtOCA4djUyYzAgNC40IDMuNiA4IDggOGg3ODRjNC40IDAgOC0zLjYgOC04di01MmMwLTQuNC0zLjYtOC04LThoLTcyVjQ2Mmg2MnpNMzgxIDgzNkgyNjRWNDYyaDExN3YzNzR6bTE4OSAwSDQ1M1Y0NjJoMTE3djM3NHptMTkwIDBINjQyVjQ2MmgxMTh2Mzc0ek0yNDAuOSAzOTMuOUw1MTIgMTk2LjdsMjcxLjEgMTk3LjJIMjQwLjl6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkF1ZGlvVHdvVG9uZSA9IGdldEljb24oJ2F1ZGlvJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUxMiA1NTJjNTQuMyAwIDk4LTQzLjIgOTgtOTZWMjMyYzAtNTIuOC00My43LTk2LTk4LTk2cy05OCA0My4yLTk4IDk2djIyNGMwIDUyLjggNDMuNyA5NiA5OCA5NnonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODQyIDQ1NGMwLTQuNC0zLjYtOC04LThoLTYwYy00LjQgMC04IDMuNi04IDggMCAxNDAuMy0xMTMuNyAyNTQtMjU0IDI1NFMyNTggNTk0LjMgMjU4IDQ1NGMwLTQuNC0zLjYtOC04LThoLTYwYy00LjQgMC04IDMuNi04IDggMCAxNjguNyAxMjYuNiAzMDcuOSAyOTAgMzI3LjZWODg0SDMyNi43Yy0xMy43IDAtMjQuNyAxNC4zLTI0LjcgMzJ2MzZjMCA0LjQgMi44IDggNi4yIDhoNDA3LjZjMy40IDAgNi4yLTMuNiA2LjItOHYtMzZjMC0xNy43LTExLTMyLTI0LjctMzJINTQ4Vjc4Mi4xYzE2NS4zLTE4IDI5NC0xNTggMjk0LTMyOC4xeidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MTIgNjI0YzkzLjkgMCAxNzAtNzUuMiAxNzAtMTY4VjIzMmMwLTkyLjgtNzYuMS0xNjgtMTcwLTE2OHMtMTcwIDc1LjItMTcwIDE2OHYyMjRjMCA5Mi44IDc2LjEgMTY4IDE3MCAxNjh6bS05OC0zOTJjMC01Mi44IDQzLjctOTYgOTgtOTZzOTggNDMuMiA5OCA5NnYyMjRjMCA1Mi44LTQzLjcgOTYtOTggOTZzLTk4LTQzLjItOTgtOTZWMjMyeidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5CZWxsVHdvVG9uZSA9IGdldEljb24oJ2JlbGwnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDIyMGMtNTUuNiAwLTEwNy44IDIxLjYtMTQ3LjEgNjAuOVMzMDQgMzcyLjQgMzA0IDQyOHYzNDBoNDE2VjQyOGMwLTU1LjYtMjEuNi0xMDcuOC02MC45LTE0Ny4xUzU2Ny42IDIyMCA1MTIgMjIwem0yODAgMjA4YzAtMTQxLjEtMTA0LjMtMjU3LjgtMjQwLTI3Ny4ydi4xYzEzNS43IDE5LjQgMjQwIDEzNiAyNDAgMjc3LjF6TTQ3MiAxNTAuOXYtLjFDMzM2LjMgMTcwLjIgMjMyIDI4Ni45IDIzMiA0MjhjMC0xNDEuMSAxMDQuMy0yNTcuNyAyNDAtMjc3LjF6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTgxNiA3NjhoLTI0VjQyOGMwLTE0MS4xLTEwNC4zLTI1Ny43LTI0MC0yNzcuMVYxMTJjMC0yMi4xLTE3LjktNDAtNDAtNDBzLTQwIDE3LjktNDAgNDB2MzguOWMtMTM1LjcgMTkuNC0yNDAgMTM2LTI0MCAyNzcuMXYzNDBoLTI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmMwIDQuNCAzLjYgOCA4IDhoMjE2YzAgNjEuOCA1MC4yIDExMiAxMTIgMTEyczExMi01MC4yIDExMi0xMTJoMjE2YzQuNCAwIDgtMy42IDgtOHYtMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTUxMiA4ODhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4aDk2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4em0yMDgtMTIwSDMwNFY0MjhjMC01NS42IDIxLjYtMTA3LjggNjAuOS0xNDcuMVM0NTYuNCAyMjAgNTEyIDIyMGM1NS42IDAgMTA3LjggMjEuNiAxNDcuMSA2MC45UzcyMCAzNzIuNCA3MjAgNDI4djM0MHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuQm9va1R3b1RvbmUgPSBnZXRJY29uKCdib29rJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004MzIgNjRIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tMjYwIDcyaDk2djIwOS45TDYyMS41IDMxMiA1NzIgMzQ3LjRWMTM2ek0yMzIgODg4VjEzNmgyODB2Mjk2LjljMCAzLjMgMSA2LjYgMyA5LjNhMTUuOSAxNS45IDAgMCAwIDIyLjMgMy43bDgzLjgtNTkuOSA4MS40IDU5LjRjMi43IDIgNiAzLjEgOS40IDMuMSA4LjggMCAxNi03LjIgMTYtMTZWMTM2aDY0djc1MkgyMzJ6J1xuICAgIF0sIFtzZWNvbmRhcnlDb2xvciwgJ002NjggMzQ1LjlWMTM2aC05NnYyMTEuNGw0OS41LTM1LjR6J10sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNzI3LjkgMTM2djI5Ni41YzAgOC44LTcuMiAxNi0xNiAxNi0zLjQgMC02LjctMS4xLTkuNC0zLjFMNjIxLjEgMzg2bC04My44IDU5LjlhMTUuOSAxNS45IDAgMCAxLTIyLjMtMy43Yy0yLTIuNy0zLTYtMy05LjNWMTM2SDIzMnY3NTJoNTU5LjlWMTM2aC02NHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuQm94UGxvdFR3b1RvbmUgPSBnZXRJY29uKCdib3gtcGxvdCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW3NlY29uZGFyeUNvbG9yLCAnTTI5NiAzNjhoODh2Mjg4aC04OHptMTUyIDBoMjgwdjI4OEg0NDh6J10sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTk1MiAyMjRoLTUyYy00LjQgMC04IDMuNi04IDh2MjQ4aC05MlYzMDRjMC00LjQtMy42LTgtOC04SDIzMmMtNC40IDAtOCAzLjYtOCA4djE3NmgtOTJWMjMyYzAtNC40LTMuNi04LTgtOEg3MmMtNC40IDAtOCAzLjYtOCA4djU2MGMwIDQuNCAzLjYgOCA4IDhoNTJjNC40IDAgOC0zLjYgOC04VjU0OGg5MnYxNzJjMCA0LjQgMy42IDggOCA4aDU2MGM0LjQgMCA4LTMuNiA4LThWNTQ4aDkydjI0NGMwIDQuNCAzLjYgOCA4IDhoNTJjNC40IDAgOC0zLjYgOC04VjIzMmMwLTQuNC0zLjYtOC04LTh6TTM4NCA2NTZoLTg4VjM2OGg4OHYyODh6bTM0NCAwSDQ0OFYzNjhoMjgwdjI4OHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuQnVnVHdvVG9uZSA9IGdldEljb24oJ2J1ZycsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNMzA4IDQxMnYyNjhjMCAzNi43OCA5LjY4IDcxLjk2IDI3LjggMTAyLjlhMjA1LjM5IDIwNS4zOSAwIDAgMCA3My4zIDczLjNBMjAyLjY4IDIwMi42OCAwIDAgMCA1MTIgODg0YzM2Ljc4IDAgNzEuOTYtOS42OCAxMDIuOS0yNy44YTIwNS4zOSAyMDUuMzkgMCAwIDAgNzMuMy03My4zQTIwMi42OCAyMDIuNjggMCAwIDAgNzE2IDY4MFY0MTJIMzA4em00ODQgMTcydjk2YzAgNi41LS4yMiAxMi45NS0uNjYgMTkuMzVDODU5Ljk0IDcyOC42NCA5MDggNzk2LjcgOTA4IDg3NmE4IDggMCAwIDEtOCA4aC01NmE4IDggMCAwIDEtOC04YzAtNDQuMjQtMjMuOTQtODIuODktNTkuNTctMTAzLjdhMjc4LjYzIDI3OC42MyAwIDAgMS0yMi42NiA0OS4wMiAyODEuMzkgMjgxLjM5IDAgMCAxLTEwMC40NSAxMDAuNDVDNjExLjg0IDk0Ni4wNyA1NjMuNTUgOTYwIDUxMiA5NjBzLTk5Ljg0LTEzLjkzLTE0MS4zMi0zOC4yM2EyODEuMzkgMjgxLjM5IDAgMCAxLTEwMC40NS0xMDAuNDUgMjc4LjYzIDI3OC42MyAwIDAgMS0yMi42Ni00OS4wMkExMTkuOTUgMTE5Ljk1IDAgMCAwIDE4OCA4NzZhOCA4IDAgMCAxLTggOGgtNTZhOCA4IDAgMCAxLTgtOGMwLTc5LjMgNDguMDctMTQ3LjM2IDExNi42Ni0xNzYuNjVBMjg0LjEyIDI4NC4xMiAwIDAgMSAyMzIgNjgwdi05Nkg4NGE4IDggMCAwIDEtOC04di01NmE4IDggMCAwIDEgOC04aDE0OFY0MTJjLTc2Ljc3IDAtMTM5LTYyLjIzLTEzOS0xMzlhOCA4IDAgMCAxIDgtOGg2MGE4IDggMCAwIDEgOCA4IDYzIDYzIDAgMCAwIDYzIDYzaDU2MGE2MyA2MyAwIDAgMCA2My02MyA4IDggMCAwIDEgOC04aDYwYTggOCAwIDAgMSA4IDhjMCA3Ni43Ny02Mi4yMyAxMzktMTM5IDEzOXYxMDBoMTQ4YTggOCAwIDAgMSA4IDh2NTZhOCA4IDAgMCAxLTggOEg3OTJ6TTM2OCAyNzJhOCA4IDAgMCAxLTggOGgtNTZhOCA4IDAgMCAxLTgtOGMwLTQwLjA0IDguNzgtNzYuNzUgMjUuOS0xMDguMDdhMTg0LjU3IDE4NC41NyAwIDAgMSA3NC4wMy03NC4wM0M0MjcuMjUgNzIuNzggNDYzLjk2IDY0IDUwNCA2NGgxNmM0MC4wNCAwIDc2Ljc1IDguNzggMTA4LjA3IDI1LjlhMTg0LjU3IDE4NC41NyAwIDAgMSA3NC4wMyA3NC4wM0M3MTkuMjIgMTk1LjI1IDcyOCAyMzEuOTYgNzI4IDI3MmE4IDggMCAwIDEtOCA4aC01NmE4IDggMCAwIDEtOC04YzAtMjguMzMtNS45NC01My4xNS0xNy4wOC03My41M2ExMTIuNTYgMTEyLjU2IDAgMCAwLTQ1LjM5LTQ1LjRDNTczLjE1IDE0MS45NSA1NDguMzMgMTM2IDUyMCAxMzZoLTE2Yy0yOC4zMyAwLTUzLjE1IDUuOTQtNzMuNTMgMTcuMDhhMTEyLjU2IDExMi41NiAwIDAgMC00NS40IDQ1LjM5QzM3My45NSAyMTguODUgMzY4IDI0My42NyAzNjggMjcyeidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTMwOCA0MTJ2MjY4YzAgMzYuNzggOS42OCA3MS45NiAyNy44IDEwMi45YTIwNS4zOSAyMDUuMzkgMCAwIDAgNzMuMyA3My4zQTIwMi42OCAyMDIuNjggMCAwIDAgNTEyIDg4NGMzNi43OCAwIDcxLjk2LTkuNjggMTAyLjktMjcuOGEyMDUuMzkgMjA1LjM5IDAgMCAwIDczLjMtNzMuM0EyMDIuNjggMjAyLjY4IDAgMCAwIDcxNiA2ODBWNDEySDMwOHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuQnVsYlR3b1RvbmUgPSBnZXRJY29uKCdidWxiJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUxMiAxMzZjLTE0MS40IDAtMjU2IDExNC42LTI1NiAyNTYgMCA5Mi41IDQ5LjQgMTc2LjMgMTI4LjEgMjIxLjhsMzUuOSAyMC44Vjc1MmgxODRWNjM0LjZsMzUuOS0yMC44QzcxOC42IDU2OC4zIDc2OCA0ODQuNSA3NjggMzkyYzAtMTQxLjQtMTE0LjYtMjU2LTI1Ni0yNTZ6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTYzMiA4ODhIMzkyYy00LjQgMC04IDMuNi04IDh2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoMTkyYzE3LjcgMCAzMi0xNC4zIDMyLTMydi0zMmMwLTQuNC0zLjYtOC04LTh6TTUxMiA2NGMtMTgxLjEgMC0zMjggMTQ2LjktMzI4IDMyOCAwIDEyMS40IDY2IDIyNy40IDE2NCAyODQuMVY3OTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoMjY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjY3Ni4xYzk4LTU2LjcgMTY0LTE2Mi43IDE2NC0yODQuMSAwLTE4MS4xLTE0Ni45LTMyOC0zMjgtMzI4em0xMjcuOSA1NDkuOEw2MDQgNjM0LjZWNzUySDQyMFY2MzQuNmwtMzUuOS0yMC44QzMwNS40IDU2OC4zIDI1NiA0ODQuNSAyNTYgMzkyYzAtMTQxLjQgMTE0LjYtMjU2IDI1Ni0yNTZzMjU2IDExNC42IDI1NiAyNTZjMCA5Mi41LTQ5LjQgMTc2LjMtMTI4LjEgMjIxLjh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkNhbGN1bGF0b3JUd29Ub25lID0gZ2V0SWNvbignY2FsY3VsYXRvcicsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNzI4SDE4NFYxODRoNjU2djY1NnonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00xODQgODQwaDY1NlYxODRIMTg0djY1NnptMjU2LjItNzVoLTUwLjhjLTIuMiAwLTQuNS0xLjEtNS45LTIuOUwzNDggNzE4LjZsLTM1LjUgNDMuNWE3LjM4IDcuMzggMCAwIDEtNS45IDIuOWgtNTAuOGMtNi42IDAtMTAuMi03LjktNS44LTEzLjFsNjIuNy03Ni44LTYxLjItNzQuOWMtNC4zLTUuMi0uNy0xMy4xIDUuOS0xMy4xaDUwLjljMi4yIDAgNC41IDEuMSA1LjkgMi45bDM0IDQxLjYgMzQtNDEuNmMxLjUtMS45IDMuNi0yLjkgNS45LTIuOWg1MC44YzYuNiAwIDEwLjIgNy45IDUuOSAxMy4xTDM4My41IDY3NWw2Mi43IDc2LjhjNC4yIDUuMy42IDEzLjItNiAxMy4yek01NzYgMzM1YzAtMi4yIDEuNC00IDMuMi00aDE5My41YzEuOSAwIDMuMyAxLjggMy4zIDR2NDhjMCAyLjItMS40IDQtMy4yIDRINTc5LjJjLTEuOCAwLTMuMi0xLjgtMy4yLTR2LTQ4em0wIDI2NWMwLTIuMiAxLjQtNCAzLjItNGgxOTMuNWMxLjkgMCAzLjMgMS44IDMuMyA0djQ4YzAgMi4yLTEuNCA0LTMuMiA0SDU3OS4yYy0xLjggMC0zLjItMS44LTMuMi00di00OHptMCAxMDRjMC0yLjIgMS40LTQgMy4yLTRoMTkzLjVjMS45IDAgMy4zIDEuOCAzLjMgNHY0OGMwIDIuMi0xLjQgNC0zLjIgNEg1NzkuMmMtMS44IDAtMy4yLTEuOC0zLjItNHYtNDh6TTI0OCAzMzVjMC0yLjIgMS40LTQgMy4yLTRIMzIwdi02OC44YzAtMS44IDEuOC0zLjIgNC0zLjJoNDhjMi4yIDAgNCAxLjQgNCAzLjJWMzMxaDY4LjdjMS45IDAgMy4zIDEuOCAzLjMgNHY0OGMwIDIuMi0xLjQgNC0zLjIgNEgzNzZ2NjguN2MwIDEuOS0xLjggMy4zLTQgMy4zaC00OGMtMi4yIDAtNC0xLjQtNC0zLjJWMzg3aC02OC44Yy0xLjggMC0zLjItMS44LTMuMi00di00OHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNMzgzLjUgNjc1bDYxLjMtNzQuOGM0LjMtNS4yLjctMTMuMS01LjktMTMuMWgtNTAuOGMtMi4zIDAtNC40IDEtNS45IDIuOWwtMzQgNDEuNi0zNC00MS42YTcuNjkgNy42OSAwIDAgMC01LjktMi45aC01MC45Yy02LjYgMC0xMC4yIDcuOS01LjkgMTMuMWw2MS4yIDc0LjktNjIuNyA3Ni44Yy00LjQgNS4yLS44IDEzLjEgNS44IDEzLjFoNTAuOGMyLjMgMCA0LjQtMSA1LjktMi45bDM1LjUtNDMuNSAzNS41IDQzLjVjMS40IDEuOCAzLjcgMi45IDUuOSAyLjloNTAuOGM2LjYgMCAxMC4yLTcuOSA2LTEzLjJMMzgzLjUgNjc1ek0yNTEuMiAzODdIMzIwdjY4LjhjMCAxLjggMS44IDMuMiA0IDMuMmg0OGMyLjIgMCA0LTEuNCA0LTMuM1YzODdoNjguOGMxLjggMCAzLjItMS44IDMuMi00di00OGMwLTIuMi0xLjQtNC0zLjMtNEgzNzZ2LTY4LjhjMC0xLjgtMS44LTMuMi00LTMuMmgtNDhjLTIuMiAwLTQgMS40LTQgMy4yVjMzMWgtNjguOGMtMS44IDAtMy4yIDEuOC0zLjIgNHY0OGMwIDIuMiAxLjQgNCAzLjIgNHptMzI4IDM2OWgxOTMuNmMxLjggMCAzLjItMS44IDMuMi00di00OGMwLTIuMi0xLjQtNC0zLjMtNEg1NzkuMmMtMS44IDAtMy4yIDEuOC0zLjIgNHY0OGMwIDIuMiAxLjQgNCAzLjIgNHptMC0xMDRoMTkzLjZjMS44IDAgMy4yLTEuOCAzLjItNHYtNDhjMC0yLjItMS40LTQtMy4zLTRINTc5LjJjLTEuOCAwLTMuMiAxLjgtMy4yIDR2NDhjMCAyLjIgMS40IDQgMy4yIDR6bTAtMjY1aDE5My42YzEuOCAwIDMuMi0xLjggMy4yLTR2LTQ4YzAtMi4yLTEuNC00LTMuMy00SDU3OS4yYy0xLjggMC0zLjIgMS44LTMuMiA0djQ4YzAgMi4yIDEuNCA0IDMuMiA0eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5CdWlsZFR3b1RvbmUgPSBnZXRJY29uKCdidWlsZCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW3NlY29uZGFyeUNvbG9yLCAnTTE0NCA1NDZoMjAwdjIwMEgxNDR6bTI2OC0yNjhoMjAwdjIwMEg0MTJ6J10sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTkxNiAyMTBIMzc2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYyMzZIMTA4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYyNzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNTQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjU0NmgyMzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjQyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zNDQgNzQ2SDE0NFY1NDZoMjAwdjIwMHptMjY4IDBINDEyVjU0NmgyMDB2MjAwem0wLTI2OEg0MTJWMjc4aDIwMHYyMDB6bTI2OCAwSDY4MFYyNzhoMjAwdjIwMHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuQ2FsZW5kYXJUd29Ub25lID0gZ2V0SWNvbignY2FsZW5kYXInLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNzEyIDMwNGMwIDQuNC0zLjYgOC04IDhoLTU2Yy00LjQgMC04LTMuNi04LTh2LTQ4SDM4NHY0OGMwIDQuNC0zLjYgOC04IDhoLTU2Yy00LjQgMC04LTMuNi04LTh2LTQ4SDE4NHYxMzZoNjU2VjI1Nkg3MTJ2NDh6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg4MCAxODRINzEydi02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMzg0di02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIxNmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDY1NkgxODRWNDYwaDY1NnYzODB6bTAtNDQ4SDE4NFYyNTZoMTI4djQ4YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTQ4aDI1NnY0OGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di00OGgxMjh2MTM2eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5DYW1lcmFUd29Ub25lID0gZ2V0SWNvbignY2FtZXJhJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTg2NCAzMjBINjc3LjJsLTE3LjEtNDcuOC0yMi45LTY0LjJIMzg2LjdsLTIyLjkgNjQuMi0xNy4xIDQ3LjhIMTYwYy00LjQgMC04IDMuNi04IDh2NDU2YzAgNC40IDMuNiA4IDggOGg3MDRjNC40IDAgOC0zLjYgOC04VjMyOGMwLTQuNC0zLjYtOC04LTh6TTUxMiA3MDRjLTg4LjQgMC0xNjAtNzEuNi0xNjAtMTYwczcxLjYtMTYwIDE2MC0xNjAgMTYwIDcxLjYgMTYwIDE2MC03MS42IDE2MC0xNjAgMTYweidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MTIgMzg0Yy04OC40IDAtMTYwIDcxLjYtMTYwIDE2MHM3MS42IDE2MCAxNjAgMTYwIDE2MC03MS42IDE2MC0xNjAtNzEuNi0xNjAtMTYwLTE2MHptMCAyNTZjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTYgOTYgNDMgOTYgOTYtNDMgOTYtOTYgOTZ6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg2NCAyNDhINzI4bC0zMi40LTkwLjhhMzIuMDcgMzIuMDcgMCAwIDAtMzAuMi0yMS4ySDM1OC42Yy0xMy41IDAtMjUuNiA4LjUtMzAuMSAyMS4yTDI5NiAyNDhIMTYwYy00NC4yIDAtODAgMzUuOC04MCA4MHY0NTZjMCA0NC4yIDM1LjggODAgODAgODBoNzA0YzQ0LjIgMCA4MC0zNS44IDgwLTgwVjMyOGMwLTQ0LjItMzUuOC04MC04MC04MHptOCA1MzZjMCA0LjQtMy42IDgtOCA4SDE2MGMtNC40IDAtOC0zLjYtOC04VjMyOGMwLTQuNCAzLjYtOCA4LThoMTg2LjdsMTcuMS00Ny44IDIyLjktNjQuMmgyNTAuNWwyMi45IDY0LjIgMTcuMSA0Ny44SDg2NGM0LjQgMCA4IDMuNiA4IDh2NDU2eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5DYXJUd29Ub25lID0gZ2V0SWNvbignY2FyJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTE5OS42IDQ3NEwxODQgNTE3djIzN2g2NTZWNTE3bC0xNS42LTQzSDE5OS42ek0yNjQgNjIxYy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwIDQwIDE3LjkgNDAgNDAtMTcuOSA0MC00MCA0MHptMzg4IDc1YzAgNC40LTMuNiA4LTggOEgzODBjLTQuNCAwLTgtMy42LTgtOHYtODRjMC00LjQgMy42LTggOC04aDQwYzQuNCAwIDggMy42IDggOHYzNmgxNjh2LTM2YzAtNC40IDMuNi04IDgtOGg0MGM0LjQgMCA4IDMuNiA4IDh2ODR6bTEwOC03NWMtMjIuMSAwLTQwLTE3LjktNDAtNDBzMTcuOS00MCA0MC00MCA0MCAxNy45IDQwIDQwLTE3LjkgNDAtNDAgNDB6J1xuICAgIF0sIFtwcmltYXJ5Q29sb3IsICdNNzIwIDU4MWE0MCA0MCAwIDEgMCA4MCAwIDQwIDQwIDAgMSAwLTgwIDB6J10sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTk1OSA0MTMuNEw5MzUuMyAzNzJhOCA4IDAgMCAwLTEwLjktMi45bC01MC43IDI5LjYtNzguMy0yMTYuMmE2My45IDYzLjkgMCAwIDAtNjAuOS00NC40SDMwMS4yYy0zNC43IDAtNjUuNSAyMi40LTc2LjIgNTUuNWwtNzQuNiAyMDUuMi01MC44LTI5LjZhOCA4IDAgMCAwLTEwLjkgMi45TDY1IDQxMy40Yy0yLjIgMy44LS45IDguNiAyLjkgMTAuOGw2MC40IDM1LjItMTQuNSA0MGMtMS4yIDMuMi0xLjggNi42LTEuOCAxMHYzNDguMmMwIDE1LjcgMTEuOCAyOC40IDI2LjMgMjguNGg2Ny42YzEyLjMgMCAyMy05LjMgMjUuNi0yMi4zbDcuNy0zNy43aDU0NS42bDcuNyAzNy43YzIuNyAxMyAxMy4zIDIyLjMgMjUuNiAyMi4zaDY3LjZjMTQuNSAwIDI2LjMtMTIuNyAyNi4zLTI4LjRWNTA5LjRjMC0zLjQtLjYtNi44LTEuOC0xMGwtMTQuNS00MCA2MC4zLTM1LjJhOCA4IDAgMCAwIDMtMTAuOHpNMjkyLjcgMjE4LjFsLjUtMS4zLjQtMS4zYzEuMS0zLjMgNC4xLTUuNSA3LjYtNS41aDQyNy42bDc1LjQgMjA4SDIyMGw3Mi43LTE5OS45ek04NDAgNzU0SDE4NFY1MTdsMTUuNi00M2g2MjQuOGwxNS42IDQzdjIzN3onXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNMjI0IDU4MWE0MCA0MCAwIDEgMCA4MCAwIDQwIDQwIDAgMSAwLTgwIDB6bTQyMCAyM2gtNDBjLTQuNCAwLTggMy42LTggOHYzNkg0Mjh2LTM2YzAtNC40LTMuNi04LTgtOGgtNDBjLTQuNCAwLTggMy42LTggOHY4NGMwIDQuNCAzLjYgOCA4IDhoMjY0YzQuNCAwIDgtMy42IDgtOHYtODRjMC00LjQtMy42LTgtOC04eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5DYXJyeU91dFR3b1RvbmUgPSBnZXRJY29uKCdjYXJyeS1vdXQnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg4MCAxODRINzEydi02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMzg0di02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIxNmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDY1NkgxODRWMjU2aDEyOHY0OGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di00OGgyNTZ2NDhjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNDhoMTI4djU4NHonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ003MTIgMzA0YzAgNC40LTMuNiA4LTggOGgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhIMzg0djQ4YzAgNC40LTMuNiA4LTggOGgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhIMTg0djU4NGg2NTZWMjU2SDcxMnY0OHptLTE3LjUgMTI4LjhMNDgxLjkgNzI1LjVhMTYuMSAxNi4xIDAgMCAxLTI2IDBsLTEyNi40LTE3NGMtMy44LTUuMyAwLTEyLjcgNi41LTEyLjdoNTUuMmM1LjIgMCAxMCAyLjUgMTMgNi42bDY0LjcgODkgMTUwLjktMjA3LjhjMy00LjEgNy45LTYuNiAxMy02LjZINjg4YzYuNSAwIDEwLjMgNy40IDYuNSAxMi44eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ002ODggNDIwaC01NS4yYy01LjEgMC0xMCAyLjUtMTMgNi42TDQ2OC45IDYzNC40bC02NC43LTg5Yy0zLTQuMS03LjgtNi42LTEzLTYuNkgzMzZjLTYuNSAwLTEwLjMgNy40LTYuNSAxMi43bDEyNi40IDE3NGExNi4xIDE2LjEgMCAwIDAgMjYgMGwyMTIuNi0yOTIuN2MzLjgtNS40IDAtMTIuOC02LjUtMTIuOHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuQ2hlY2tDaXJjbGVUd29Ub25lID0gZ2V0SWNvbignY2hlY2stY2lyY2xlJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDE0MGMtMjA1LjQgMC0zNzIgMTY2LjYtMzcyIDM3MnMxNjYuNiAzNzIgMzcyIDM3MiAzNzItMTY2LjYgMzcyLTM3Mi0xNjYuNi0zNzItMzcyLTM3MnptMTkzLjQgMjI1LjdsLTIxMC42IDI5MmEzMS44IDMxLjggMCAwIDEtNTEuNyAwTDMxOC41IDQ4NC45Yy0zLjgtNS4zIDAtMTIuNyA2LjUtMTIuN2g0Ni45YzEwLjMgMCAxOS45IDUgMjUuOSAxMy4zbDcxLjIgOTguOCAxNTcuMi0yMThjNi04LjQgMTUuNy0xMy4zIDI1LjktMTMuM0g2OTljNi41IDAgMTAuMyA3LjQgNi40IDEyLjd6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTY5OSAzNTNoLTQ2LjljLTEwLjIgMC0xOS45IDQuOS0yNS45IDEzLjNMNDY5IDU4NC4zbC03MS4yLTk4LjhjLTYtOC4zLTE1LjYtMTMuMy0yNS45LTEzLjNIMzI1Yy02LjUgMC0xMC4zIDcuNC02LjUgMTIuN2wxMjQuNiAxNzIuOGEzMS44IDMxLjggMCAwIDAgNTEuNyAwbDIxMC42LTI5MmMzLjktNS4zLjEtMTIuNy02LjQtMTIuN3onXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuQ2hlY2tTcXVhcmVUd29Ub25lID0gZ2V0SWNvbignY2hlY2stc3F1YXJlJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCA3MjhIMTg0VjE4NGg2NTZ2NjU2eidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTE4NCA4NDBoNjU2VjE4NEgxODR2NjU2em0xMzAtMzY3LjhoNDYuOWMxMC4yIDAgMTkuOSA0LjkgMjUuOSAxMy4zbDcxLjIgOTguOCAxNTcuMi0yMThjNi04LjMgMTUuNi0xMy4zIDI1LjktMTMuM0g2ODhjNi41IDAgMTAuMyA3LjQgNi41IDEyLjdsLTIxMC42IDI5MmEzMS44IDMxLjggMCAwIDEtNTEuNyAwTDMwNy41IDQ4NC45Yy0zLjgtNS4zIDAtMTIuNyA2LjUtMTIuN3onXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNDMyLjIgNjU3LjdhMzEuOCAzMS44IDAgMCAwIDUxLjcgMGwyMTAuNi0yOTJjMy44LTUuMyAwLTEyLjctNi41LTEyLjdoLTQ2LjljLTEwLjMgMC0xOS45IDUtMjUuOSAxMy4zTDQ1OCA1ODQuM2wtNzEuMi05OC44Yy02LTguNC0xNS43LTEzLjMtMjUuOS0xMy4zSDMxNGMtNi41IDAtMTAuMyA3LjQtNi41IDEyLjdsMTI0LjcgMTcyLjh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkNsb2NrQ2lyY2xlVHdvVG9uZSA9IGdldEljb24oJ2Nsb2NrLWNpcmNsZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyeidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUxMiAxNDBjLTIwNS40IDAtMzcyIDE2Ni42LTM3MiAzNzJzMTY2LjYgMzcyIDM3MiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzItMTY2LjYtMzcyLTM3Mi0zNzJ6bTE3Ni41IDUwOS43bC0yOC42IDM5YTcuOTkgNy45OSAwIDAgMS0xMS4yIDEuN0w0ODMuMyA1NjkuOGE3LjkyIDcuOTIgMCAwIDEtMy4zLTYuNVYyODhjMC00LjQgMy42LTggOC04aDQ4LjFjNC40IDAgOCAzLjYgOCA4djI0Ny41bDE0Mi42IDEwMy4xYzMuNiAyLjUgNC40IDcuNSAxLjggMTEuMXonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNjg2LjcgNjM4LjZMNTQ0LjEgNTM1LjVWMjg4YzAtNC40LTMuNi04LTgtOEg0ODhjLTQuNCAwLTggMy42LTggOHYyNzUuM2MwIDIuNiAxLjIgNSAzLjMgNi41bDE2NS40IDEyMC42YzMuNiAyLjYgOC42IDEuOSAxMS4yLTEuN2wyOC42LTM5YzIuNi0zLjYgMS44LTguNi0xLjgtMTEuMXonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuQ2xvc2VDaXJjbGVUd29Ub25lID0gZ2V0SWNvbignY2xvc2UtY2lyY2xlJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDE0MGMtMjA1LjQgMC0zNzIgMTY2LjYtMzcyIDM3MnMxNjYuNiAzNzIgMzcyIDM3MiAzNzItMTY2LjYgMzcyLTM3Mi0xNjYuNi0zNzItMzcyLTM3MnptMTcxLjggNTI3LjFjMS4yIDEuNSAxLjkgMy4zIDEuOSA1LjIgMCA0LjUtMy42IDgtOCA4bC02Ni0uMy05OS4zLTExOC40LTk5LjMgMTE4LjUtNjYuMS4zYy00LjQgMC04LTMuNi04LTggMC0xLjkuNy0zLjcgMS45LTUuMkw0NzEgNTEyLjNsLTEzMC4xLTE1NWE4LjMyIDguMzIgMCAwIDEtMS45LTUuMmMwLTQuNSAzLjYtOCA4LThsNjYuMS4zIDk5LjMgMTE4LjQgOTkuNC0xMTguNSA2Ni0uM2M0LjQgMCA4IDMuNiA4IDggMCAxLjktLjYgMy44LTEuOCA1LjJsLTEzMC4xIDE1NSAxMjkuOSAxNTQuOXonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNjg1LjggMzUyYzAtNC40LTMuNi04LTgtOGwtNjYgLjMtOTkuNCAxMTguNS05OS4zLTExOC40LTY2LjEtLjNjLTQuNCAwLTggMy41LTggOCAwIDEuOS43IDMuNyAxLjkgNS4ybDEzMC4xIDE1NS0xMzAuMSAxNTQuOWE4LjMyIDguMzIgMCAwIDAtMS45IDUuMmMwIDQuNCAzLjYgOCA4IDhsNjYuMS0uMyA5OS4zLTExOC41TDYxMS43IDY4MGw2NiAuM2M0LjQgMCA4LTMuNSA4LTggMC0xLjktLjctMy43LTEuOS01LjJMNTUzLjkgNTEyLjJsMTMwLjEtMTU1YzEuMi0xLjQgMS44LTMuMyAxLjgtNS4yeidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5DbG91ZFR3b1RvbmUgPSBnZXRJY29uKCdjbG91ZCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ003OTEuOSA0OTJsLTM3LjgtMTAtMTMuOC0zNi41Yy04LjYtMjIuNy0yMC42LTQ0LjEtMzUuNy02My40YTI0NS43MyAyNDUuNzMgMCAwIDAtNTIuNC00OS45Yy00MS4xLTI4LjktODkuNS00NC4yLTE0MC00NC4ycy05OC45IDE1LjMtMTQwIDQ0LjJhMjQ1LjYgMjQ1LjYgMCAwIDAtNTIuNCA0OS45IDI0MC40NyAyNDAuNDcgMCAwIDAtMzUuNyA2My40bC0xMy45IDM2LjYtMzcuOSA5LjlhMTI1LjcgMTI1LjcgMCAwIDAtNjYuMSA0My43QTEyMy4xIDEyMy4xIDAgMCAwIDE0MCA2MTJjMCAzMy4xIDEyLjkgNjQuMyAzNi4zIDg3LjcgMjMuNCAyMy40IDU0LjUgMzYuMyA4Ny42IDM2LjNoNDk2LjJjMzMuMSAwIDY0LjItMTIuOSA4Ny42LTM2LjNBMTIzLjMgMTIzLjMgMCAwIDAgODg0IDYxMmMwLTU2LjItMzcuOC0xMDUuNS05Mi4xLTEyMHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODExLjQgNDE4LjdDNzY1LjYgMjk3LjkgNjQ4LjkgMjEyIDUxMi4yIDIxMlMyNTguOCAyOTcuOCAyMTMgNDE4LjZDMTI3LjMgNDQxLjEgNjQgNTE5LjEgNjQgNjEyYzAgMTEwLjUgODkuNSAyMDAgMTk5LjkgMjAwaDQ5Ni4yQzg3MC41IDgxMiA5NjAgNzIyLjUgOTYwIDYxMmMwLTkyLjctNjMuMS0xNzAuNy0xNDguNi0xOTMuM3ptMzYuMyAyODFhMTIzLjA3IDEyMy4wNyAwIDAgMS04Ny42IDM2LjNIMjYzLjljLTMzLjEgMC02NC4yLTEyLjktODcuNi0zNi4zQTEyMy4zIDEyMy4zIDAgMCAxIDE0MCA2MTJjMC0yOCA5LjEtNTQuMyAyNi4yLTc2LjNhMTI1LjcgMTI1LjcgMCAwIDEgNjYuMS00My43bDM3LjktOS45IDEzLjktMzYuNmM4LjYtMjIuOCAyMC42LTQ0LjEgMzUuNy02My40YTI0NS42IDI0NS42IDAgMCAxIDUyLjQtNDkuOWM0MS4xLTI4LjkgODkuNS00NC4yIDE0MC00NC4yczk4LjkgMTUuMyAxNDAgNDQuMmMxOS45IDE0IDM3LjUgMzAuOCA1Mi40IDQ5LjkgMTUuMSAxOS4zIDI3LjEgNDAuNyAzNS43IDYzLjRsMTMuOCAzNi41IDM3LjggMTBjNTQuMyAxNC41IDkyLjEgNjMuOCA5Mi4xIDEyMCAwIDMzLjEtMTIuOSA2NC4zLTM2LjMgODcuN3onXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuQ2xvc2VTcXVhcmVUd29Ub25lID0gZ2V0SWNvbignY2xvc2Utc3F1YXJlJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCA3MjhIMTg0VjE4NGg2NTZ2NjU2eidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTE4NCA4NDBoNjU2VjE4NEgxODR2NjU2em0xNjMuOS00NzMuOUE3Ljk1IDcuOTUgMCAwIDEgMzU0IDM1M2g1OC45YzQuNyAwIDkuMiAyLjEgMTIuMyA1LjdMNTEyIDQ2Mi4ybDg2LjgtMTAzLjVjMy0zLjYgNy41LTUuNyAxMi4zLTUuN0g2NzBjNi44IDAgMTAuNSA3LjkgNi4xIDEzLjFMNTUzLjggNTEybDEyMi4zIDE0NS45YzQuNCA1LjIuNyAxMy4xLTYuMSAxMy4xaC01OC45Yy00LjcgMC05LjItMi4xLTEyLjMtNS43TDUxMiA1NjEuOGwtODYuOCAxMDMuNWMtMyAzLjYtNy41IDUuNy0xMi4zIDUuN0gzNTRjLTYuOCAwLTEwLjUtNy45LTYuMS0xMy4xTDQ3MC4yIDUxMiAzNDcuOSAzNjYuMXonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNMzU0IDY3MWg1OC45YzQuOCAwIDkuMy0yLjEgMTIuMy01LjdMNTEyIDU2MS44bDg2LjggMTAzLjVjMy4xIDMuNiA3LjYgNS43IDEyLjMgNS43SDY3MGM2LjggMCAxMC41LTcuOSA2LjEtMTMuMUw1NTMuOCA1MTJsMTIyLjMtMTQ1LjljNC40LTUuMi43LTEzLjEtNi4xLTEzLjFoLTU4LjljLTQuOCAwLTkuMyAyLjEtMTIuMyA1LjdMNTEyIDQ2Mi4ybC04Ni44LTEwMy41Yy0zLjEtMy42LTcuNi01LjctMTIuMy01LjdIMzU0Yy02LjggMC0xMC41IDcuOS02LjEgMTMuMUw0NzAuMiA1MTIgMzQ3LjkgNjU3LjlBNy45NSA3Ljk1IDAgMCAwIDM1NCA2NzF6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkNvZGVUd29Ub25lID0gZ2V0SWNvbignY29kZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNzI4SDE4NFYxODRoNjU2djY1NnonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00xODQgODQwaDY1NlYxODRIMTg0djY1NnptMzM5LjUtMjIzaDE4NWM0LjEgMCA3LjUgMy42IDcuNSA4djQ4YzAgNC40LTMuNCA4LTcuNSA4aC0xODVjLTQuMSAwLTcuNS0zLjYtNy41LTh2LTQ4YzAtNC40IDMuNC04IDcuNS04ek0zMDggNjEwLjNjMC0yLjMgMS4xLTQuNiAyLjktNi4xTDQyMC43IDUxMmwtMTA5LjgtOTIuMmE3LjYzIDcuNjMgMCAwIDEtMi45LTYuMVYzNTFjMC02LjggNy45LTEwLjUgMTMuMS02LjFsMTkyIDE2MC45YzMuOSAzLjIgMy45IDkuMSAwIDEyLjNsLTE5MiAxNjFjLTUuMiA0LjQtMTMuMS43LTEzLjEtNi4xdi02Mi43eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ00zMjEuMSA2NzkuMWwxOTItMTYxYzMuOS0zLjIgMy45LTkuMSAwLTEyLjNsLTE5Mi0xNjAuOUE3Ljk1IDcuOTUgMCAwIDAgMzA4IDM1MXY2Mi43YzAgMi40IDEgNC42IDIuOSA2LjFMNDIwLjcgNTEybC0xMDkuOCA5Mi4yYTguMSA4LjEgMCAwIDAtMi45IDYuMVY2NzNjMCA2LjggNy45IDEwLjUgMTMuMSA2LjF6TTUxNiA2NzNjMCA0LjQgMy40IDggNy41IDhoMTg1YzQuMSAwIDcuNS0zLjYgNy41LTh2LTQ4YzAtNC40LTMuNC04LTcuNS04aC0xODVjLTQuMSAwLTcuNSAzLjYtNy41IDh2NDh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkNvbXBhc3NUd29Ub25lID0gZ2V0SWNvbignY29tcGFzcycsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001MTIgMTQwYy0yMDUuNCAwLTM3MiAxNjYuNi0zNzIgMzcyczE2Ni42IDM3MiAzNzIgMzcyIDM3Mi0xNjYuNiAzNzItMzcyLTE2Ni42LTM3Mi0zNzItMzcyek0zMjcuNiA3MDEuN2MtMiAuOS00LjQgMC01LjMtMi4xLS40LTEtLjQtMi4yIDAtMy4yTDQyMSA0NzAuOSA1NTMuMSA2MDNsLTIyNS41IDk4Ljd6bTM3NS4xLTM3NS4xTDYwNCA1NTIuMSA0NzEuOSA0MjBsMjI1LjUtOTguN2MyLS45IDQuNCAwIDUuMyAyLjEuNCAxIC40IDIuMSAwIDMuMnonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNMzIyLjMgNjk2LjRjLS40IDEtLjQgMi4yIDAgMy4yLjkgMi4xIDMuMyAzIDUuMyAyLjFMNTUzLjEgNjAzIDQyMSA0NzAuOWwtOTguNyAyMjUuNXptMzc1LjEtMzc1LjFMNDcxLjkgNDIwIDYwNCA1NTIuMWw5OC43LTIyNS41Yy40LTEuMS40LTIuMiAwLTMuMi0uOS0yLjEtMy4zLTMtNS4zLTIuMXonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyeidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5Db250YWN0c1R3b1RvbmUgPSBnZXRJY29uKCdjb250YWN0cycsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ000NjAuMyA1MjZhNTEuNyA1MiAwIDEgMCAxMDMuNCAwIDUxLjcgNTIgMCAxIDAtMTAzLjQgMHonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ003NjggMzUyYzAgNC40LTMuNiA4LTggOGgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNTZINTQ4djU2YzAgNC40LTMuNiA4LTggOGgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNTZIMzI4djU2YzAgNC40LTMuNiA4LTggOGgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNTZIMTM2djQ5Nmg3NTJWMjk2SDc2OHY1NnpNNjYxIDczNmgtNDMuOGMtNC4yIDAtNy42LTMuMy03LjktNy41LTMuOC01MC41LTQ2LTkwLjUtOTcuMi05MC41cy05My40IDM5LjktOTcuMiA5MC41Yy0uMyA0LjItMy43IDcuNS03LjkgNy41aC00My45YTggOCAwIDAgMS04LTguNGMyLjgtNTMuMyAzMS45LTk5LjYgNzQuNi0xMjYuMS0xOC4xLTIwLTI5LjEtNDYuNC0yOS4xLTc1LjUgMC02MS45IDQ5LjktMTEyIDExMS40LTExMnMxMTEuNCA1MC4xIDExMS40IDExMmMwIDI5LjEtMTEgNTUuNi0yOS4xIDc1LjUgNDIuNyAyNi40IDcxLjkgNzIuOCA3NC43IDEyNi4xYTggOCAwIDAgMS04IDguNHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTk0LjMgNjAxLjVhMTExLjggMTExLjggMCAwIDAgMjkuMS03NS41YzAtNjEuOS00OS45LTExMi0xMTEuNC0xMTJzLTExMS40IDUwLjEtMTExLjQgMTEyYzAgMjkuMSAxMSA1NS41IDI5LjEgNzUuNWExNTguMDkgMTU4LjA5IDAgMCAwLTc0LjYgMTI2LjEgOCA4IDAgMCAwIDggOC40SDQwN2M0LjIgMCA3LjYtMy4zIDcuOS03LjUgMy44LTUwLjYgNDYtOTAuNSA5Ny4yLTkwLjVzOTMuNCA0MCA5Ny4yIDkwLjVjLjMgNC4yIDMuNyA3LjUgNy45IDcuNUg2NjFhOCA4IDAgMCAwIDgtOC40Yy0yLjgtNTMuMy0zMi05OS43LTc0LjctMTI2LjF6TTUxMiA1NzhjLTI4LjUgMC01MS43LTIzLjMtNTEuNy01MnMyMy4yLTUyIDUxLjctNTIgNTEuNyAyMy4zIDUxLjcgNTItMjMuMiA1Mi01MS43IDUyeidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ005MjggMjI0SDc2OHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2SDU0OHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2SDMyOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY1NzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoODMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDU2OEgxMzZWMjk2aDEyMHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmgxNDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZoMTQ4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2aDEyMHY0OTZ6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkNvbnRhaW5lclR3b1RvbmUgPSBnZXRJY29uKCdjb250YWluZXInLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNjM1IDc3MS43Yy0zNC41IDI4LjYtNzguMiA0NC4zLTEyMyA0NC4zcy04OC41LTE1LjgtMTIzLTQ0LjNhMTk0LjAyIDE5NC4wMiAwIDAgMS01OS4xLTg0LjdIMjMydjIwMWg1NjBWNjg3aC05Ny45Yy0xMS42IDMyLjgtMzIgNjIuMy01OS4xIDg0Ljd6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTMyMCA1MDFoMzg0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04SDMyMGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODMyIDY0SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2ODMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0MGMxNy43IDAgMzItMTQuMyAzMi0zMlY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDgyNEgyMzJWNjg3aDk3LjljMTEuNiAzMi44IDMyIDYyLjMgNTkuMSA4NC43IDM0LjUgMjguNSA3OC4yIDQ0LjMgMTIzIDQ0LjNzODguNS0xNS43IDEyMy00NC4zYzI3LjEtMjIuNCA0Ny41LTUxLjkgNTkuMS04NC43SDc5MnYyMDF6bTAtMjY0SDY0My42bC01LjIgMjQuN0M2MjYuNCA3MDguNSA1NzMuMiA3NTIgNTEyIDc1MnMtMTE0LjQtNDMuNS0xMjYuNS0xMDMuM2wtNS4yLTI0LjdIMjMyVjEzNmg1NjB2NDg4eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ00zMjAgMzQxaDM4NGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOEgzMjBjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkNvbnRyb2xUd29Ub25lID0gZ2V0SWNvbignY29udHJvbCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNzI4SDE4NFYxODRoNjU2djY1NnonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ002MTYgNDQwYTM2IDM2IDAgMSAwIDcyIDAgMzYgMzYgMCAxIDAtNzIgMHpNMzQwLjQgNjAxLjVsMS41IDIuNGMwIC4xLjEuMS4xLjJsLjkgMS4yYy4xLjEuMi4yLjIuMyAxIDEuMyAyIDIuNSAzLjIgMy42bC4yLjJjLjQuNC44LjggMS4yIDEuMS44LjggMS43IDEuNSAyLjYgMi4xaC4xbDEuMi45Yy4xLjEuMy4yLjQuMyAxLjIuOCAyLjUgMS42IDMuOSAyLjIuMi4xLjUuMi43LjQuNC4yLjcuMyAxLjEuNS4zLjEuNy4zIDEgLjQuNS4yIDEgLjQgMS41LjUuNC4xLjkuMyAxLjMuNGwuOS4zIDEuNC4zYy4yLjEuNS4xLjcuMi43LjEgMS40LjMgMi4xLjQuMiAwIC40IDAgLjYuMS42LjEgMS4xLjEgMS43LjIuMiAwIC40IDAgLjcuMS44IDAgMS41LjEgMi4zLjFzMS41IDAgMi4zLS4xYy4yIDAgLjQgMCAuNy0uMS42IDAgMS4yLS4xIDEuNy0uMi4yIDAgLjQgMCAuNi0uMS43LS4xIDEuNC0uMiAyLjEtLjQuMi0uMS41LS4xLjctLjJsMS40LS4zLjktLjNjLjQtLjEuOS0uMyAxLjMtLjQuNS0uMiAxLS40IDEuNS0uNS4zLS4xLjctLjMgMS0uNC40LS4yLjctLjMgMS4xLS41LjItLjEuNS0uMi43LS40IDEuMy0uNyAyLjYtMS40IDMuOS0yLjIuMS0uMS4zLS4yLjQtLjNsMS4yLS45aC4xYy45LS43IDEuOC0xLjQgMi42LTIuMS40LS40LjgtLjcgMS4yLTEuMWwuMi0uMmMxLjEtMS4xIDIuMi0yLjQgMy4yLTMuNi4xLS4xLjItLjIuMi0uM2wuOS0xLjJjMC0uMS4xLS4xLjEtLjJsMS41LTIuNGMuMS0uMi4yLS4zLjMtLjUgMi43LTUuMSA0LjMtMTAuOSA0LjMtMTdzLTEuNi0xMi00LjMtMTdjLS4xLS4yLS4yLS40LS4zLS41bC0xLjUtMi40YzAtLjEtLjEtLjEtLjEtLjJsLS45LTEuMmMtLjEtLjEtLjItLjItLjItLjMtMS0xLjMtMi0yLjUtMy4yLTMuNmwtLjItLjJjLS40LS40LS44LS44LTEuMi0xLjEtLjgtLjgtMS43LTEuNS0yLjYtMi4xaC0uMWwtMS4yLS45Yy0uMS0uMS0uMy0uMi0uNC0uMy0xLjItLjgtMi41LTEuNi0zLjktMi4yLS4yLS4xLS41LS4yLS43LS40LS40LS4yLS43LS4zLTEuMS0uNS0uMy0uMS0uNy0uMy0xLS40LS41LS4yLTEtLjQtMS41LS41LS40LS4xLS45LS4zLTEuMy0uNGwtLjktLjMtMS40LS4zYy0uMi0uMS0uNS0uMS0uNy0uMi0uNy0uMS0xLjQtLjMtMi4xLS40LS4yIDAtLjQgMC0uNi0uMS0uNi0uMS0xLjEtLjEtMS43LS4yLS4yIDAtLjQgMC0uNy0uMS0uOCAwLTEuNS0uMS0yLjMtLjFzLTEuNSAwLTIuMy4xYy0uMiAwLS40IDAtLjcuMS0uNiAwLTEuMi4xLTEuNy4yLS4yIDAtLjQgMC0uNi4xLS43LjEtMS40LjItMi4xLjQtLjIuMS0uNS4xLS43LjJsLTEuNC4zLS45LjNjLS40LjEtLjkuMy0xLjMuNC0uNS4yLTEgLjQtMS41LjUtLjMuMS0uNy4zLTEgLjQtLjQuMi0uNy4zLTEuMS41LS4yLjEtLjUuMi0uNy40LTEuMy43LTIuNiAxLjQtMy45IDIuMi0uMS4xLS4zLjItLjQuM2wtMS4yLjloLS4xYy0uOS43LTEuOCAxLjQtMi42IDIuMS0uNC40LS44LjctMS4yIDEuMWwtLjIuMmE1NC44IDU0LjggMCAwIDAtMy4yIDMuNmMtLjEuMS0uMi4yLS4yLjNsLS45IDEuMmMwIC4xLS4xLjEtLjEuMmwtMS41IDIuNGMtLjEuMi0uMi4zLS4zLjUtMi43IDUuMS00LjMgMTAuOS00LjMgMTdzMS42IDEyIDQuMyAxN2MuMS4yLjIuMy4zLjV6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMTg0IDg0MGg2NTZWMTg0SDE4NHY2NTZ6bTQzNi40LTQ5OS4xYy0uMiAwLS4zLjEtLjQuMXYtNzdjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHY3N2MtLjIgMC0uMy0uMS0uNC0uMSA0MiAxMy40IDcyLjQgNTIuNyA3Mi40IDk5LjEgMCA0Ni40LTMwLjQgODUuNy03Mi40IDk5LjEuMiAwIC4zLS4xLjQtLjF2MjIxYzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOFY1MzljLjIgMCAuMy4xLjQuMS00Mi0xMy40LTcyLjQtNTIuNy03Mi40LTk5LjEgMC00Ni40IDMwLjQtODUuNyA3Mi40LTk5LjF6TTM0MCA0ODVWMjY0YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MjIxYzQxLjcgMTMuNiA3MiA1Mi44IDcyIDk5cy0zMC4zIDg1LjUtNzIgOTl2NzdjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di03N2MtNDEuNy0xMy42LTcyLTUyLjgtNzItOTlzMzAuMy04NS41IDcyLTk5eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ00zNDAgNjgzdjc3YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTc3YzQxLjctMTMuNSA3Mi01Mi44IDcyLTk5cy0zMC4zLTg1LjQtNzItOTlWMjY0YzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHYyMjFjLTQxLjcgMTMuNS03MiA1Mi44LTcyIDk5czMwLjMgODUuNCA3MiA5OXptLjEtMTE2Yy4xLS4yLjItLjMuMy0uNWwxLjUtMi40YzAtLjEuMS0uMS4xLS4ybC45LTEuMmMwLS4xLjEtLjIuMi0uMyAxLTEuMiAyLjEtMi41IDMuMi0zLjZsLjItLjJjLjQtLjQuOC0uNyAxLjItMS4xLjgtLjcgMS43LTEuNCAyLjYtMi4xaC4xbDEuMi0uOWMuMS0uMS4zLS4yLjQtLjMgMS4zLS44IDIuNi0xLjUgMy45LTIuMi4yLS4yLjUtLjMuNy0uNC40LS4yLjctLjMgMS4xLS41LjMtLjEuNy0uMyAxLS40LjUtLjEgMS0uMyAxLjUtLjUuNC0uMS45LS4zIDEuMy0uNGwuOS0uMyAxLjQtLjNjLjItLjEuNS0uMS43LS4yLjctLjIgMS40LS4zIDIuMS0uNC4yLS4xLjQtLjEuNi0uMS41LS4xIDEuMS0uMiAxLjctLjIuMy0uMS41LS4xLjctLjEuOC0uMSAxLjUtLjEgMi4zLS4xczEuNS4xIDIuMy4xYy4zLjEuNS4xLjcuMS42LjEgMS4xLjEgMS43LjIuMi4xLjQuMS42LjEuNy4xIDEuNC4zIDIuMS40LjIuMS41LjEuNy4ybDEuNC4zLjkuM2MuNC4xLjkuMyAxLjMuNC41LjEgMSAuMyAxLjUuNS4zLjEuNy4zIDEgLjQuNC4yLjcuMyAxLjEuNS4yLjIuNS4zLjcuNCAxLjQuNiAyLjcgMS40IDMuOSAyLjIuMS4xLjMuMi40LjNsMS4yLjloLjFjLjkuNiAxLjggMS4zIDIuNiAyLjEuNC4zLjguNyAxLjIgMS4xbC4yLjJjMS4yIDEuMSAyLjIgMi4zIDMuMiAzLjYgMCAuMS4xLjIuMi4zbC45IDEuMmMwIC4xLjEuMS4xLjJsMS41IDIuNEEzNi4wMyAzNi4wMyAwIDAgMSA0MDggNTg0YzAgNi4xLTEuNiAxMS45LTQuMyAxNy0uMS4yLS4yLjMtLjMuNWwtMS41IDIuNGMwIC4xLS4xLjEtLjEuMmwtLjkgMS4yYzAgLjEtLjEuMi0uMi4zLTEgMS4yLTIuMSAyLjUtMy4yIDMuNmwtLjIuMmMtLjQuNC0uOC43LTEuMiAxLjEtLjguNy0xLjcgMS40LTIuNiAyLjFoLS4xbC0xLjIuOWMtLjEuMS0uMy4yLS40LjMtMS4zLjgtMi42IDEuNS0zLjkgMi4yLS4yLjItLjUuMy0uNy40LS40LjItLjcuMy0xLjEuNS0uMy4xLS43LjMtMSAuNC0uNS4xLTEgLjMtMS41LjUtLjQuMS0uOS4zLTEuMy40bC0uOS4zLTEuNC4zYy0uMi4xLS41LjEtLjcuMi0uNy4yLTEuNC4zLTIuMS40LS4yLjEtLjQuMS0uNi4xLS41LjEtMS4xLjItMS43LjItLjMuMS0uNS4xLS43LjEtLjguMS0xLjUuMS0yLjMuMXMtMS41LS4xLTIuMy0uMWMtLjMtLjEtLjUtLjEtLjctLjEtLjYtLjEtMS4xLS4xLTEuNy0uMi0uMi0uMS0uNC0uMS0uNi0uMS0uNy0uMS0xLjQtLjMtMi4xLS40LS4yLS4xLS41LS4xLS43LS4ybC0xLjQtLjMtLjktLjNjLS40LS4xLS45LS4zLTEuMy0uNC0uNS0uMS0xLS4zLTEuNS0uNS0uMy0uMS0uNy0uMy0xLS40LS40LS4yLS43LS4zLTEuMS0uNS0uMi0uMi0uNS0uMy0uNy0uNC0xLjQtLjYtMi43LTEuNC0zLjktMi4yLS4xLS4xLS4zLS4yLS40LS4zbC0xLjItLjloLS4xYy0uOS0uNi0xLjgtMS4zLTIuNi0yLjEtLjQtLjMtLjgtLjctMS4yLTEuMWwtLjItLjJjLTEuMi0xLjEtMi4yLTIuMy0zLjItMy42IDAtLjEtLjEtLjItLjItLjNsLS45LTEuMmMwLS4xLS4xLS4xLS4xLS4ybC0xLjUtMi40Yy0uMS0uMi0uMi0uMy0uMy0uNS0yLjctNS00LjMtMTAuOS00LjMtMTdzMS42LTExLjkgNC4zLTE3em0yODAuMy0yNy45Yy0uMSAwLS4yLS4xLS40LS4xdjIyMWMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjUzOWMtLjEgMC0uMi4xLS40LjEgNDItMTMuNCA3Mi40LTUyLjcgNzIuNC05OS4xIDAtNDYuNC0zMC40LTg1LjctNzIuNC05OS4xLjEgMCAuMi4xLjQuMXYtNzdjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djc3Yy4xIDAgLjItLjEuNC0uMS00MiAxMy40LTcyLjQgNTIuNy03Mi40IDk5LjEgMCA0Ni40IDMwLjQgODUuNyA3Mi40IDk5LjF6TTY1MiA0MDRjMTkuOSAwIDM2IDE2LjEgMzYgMzZzLTE2LjEgMzYtMzYgMzYtMzYtMTYuMS0zNi0zNiAxNi4xLTM2IDM2LTM2eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5Db3B5VHdvVG9uZSA9IGdldEljb24oJ2NvcHknLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtzZWNvbmRhcnlDb2xvciwgJ00yMzIgNzA2aDE0MmMyMi4xIDAgNDAgMTcuOSA0MCA0MHYxNDJoMjUwVjI2NEgyMzJ2NDQyeiddLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004MzIgNjRIMjk2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDQ5NnY2ODhjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOFY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMnonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNzA0IDE5MkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjUzMC43YzAgOC41IDMuNCAxNi42IDkuNCAyMi42bDE3My4zIDE3My4zYzIuMiAyLjIgNC43IDQgNy40IDUuNXYxLjloNC4yYzMuNSAxLjMgNy4yIDIgMTEgMkg3MDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zNTAgODU2LjJMMjYzLjkgNzcwSDM1MHY4Ni4yek02NjQgODg4SDQxNFY3NDZjMC0yMi4xLTE3LjktNDAtNDAtNDBIMjMyVjI2NGg0MzJ2NjI0eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5DcmVkaXRDYXJkVHdvVG9uZSA9IGdldEljb24oJ2NyZWRpdC1jYXJkJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTEzNiA3OTJoNzUyVjQ0MEgxMzZ2MzUyem01MDctMTQ0YzAtNC40IDMuNi04IDgtOGgxNjVjNC40IDAgOCAzLjYgOCA4djcyYzAgNC40LTMuNiA4LTggOEg2NTFjLTQuNCAwLTgtMy42LTgtOHYtNzJ6TTEzNiAyMzJoNzUydjEyMEgxMzZ6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTY1MSA3MjhoMTY1YzQuNCAwIDgtMy42IDgtOHYtNzJjMC00LjQtMy42LTgtOC04SDY1MWMtNC40IDAtOCAzLjYtOCA4djcyYzAgNC40IDMuNiA4IDggOHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNOTI4IDE2MEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjQwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCA2MzJIMTM2VjQ0MGg3NTJ2MzUyem0wLTQ0MEgxMzZWMjMyaDc1MnYxMjB6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkNyb3duVHdvVG9uZSA9IGdldEljb24oJ2Nyb3duJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTkxMS45IDI4My45di41TDgzNS41IDg2NWMtMSA4LTcuOSAxNC0xNS45IDE0SDIwNC41Yy04LjEgMC0xNC45LTYuMS0xNi0xNGwtNzYuNC01ODAuNnYtLjYgMS42TDE4OC41IDg2NmMxLjEgNy45IDcuOSAxNCAxNiAxNGg2MTUuMWM4IDAgMTQuOS02IDE1LjktMTRsNzYuNC01ODAuNmMuMS0uNS4xLTEgMC0xLjV6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNzczLjYgODEwLjZsNTMuOS00MDkuNC0xMzkuOCA4Ni4xTDUxMiAyNTIuOSAzMzYuMyA0ODcuM2wtMTM5LjgtODYuMSA1My44IDQwOS40aDUyMy4zem0tMzc0LjItMTg5YzAtNjIuMSA1MC41LTExMi42IDExMi42LTExMi42czExMi42IDUwLjUgMTEyLjYgMTEyLjZ2MWMwIDYyLjEtNTAuNSAxMTIuNi0xMTIuNiAxMTIuNnMtMTEyLjYtNTAuNS0xMTIuNi0xMTIuNnYtMXonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDczNC4yYzYxLjkgMCAxMTIuMy01MC4yIDExMi42LTExMi4xdi0uNWMwLTYyLjEtNTAuNS0xMTIuNi0xMTIuNi0xMTIuNnMtMTEyLjYgNTAuNS0xMTIuNiAxMTIuNnYuNWMuMyA2MS45IDUwLjcgMTEyLjEgMTEyLjYgMTEyLjF6bTAtMTYwLjljMjYuNiAwIDQ4LjIgMjEuNiA0OC4yIDQ4LjMgMCAyNi42LTIxLjYgNDguMy00OC4yIDQ4LjNzLTQ4LjItMjEuNi00OC4yLTQ4LjNjMC0yNi42IDIxLjYtNDguMyA0OC4yLTQ4LjN6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTE4OC41IDg2NWMxLjEgNy45IDcuOSAxNCAxNiAxNGg2MTUuMWM4IDAgMTQuOS02IDE1LjktMTRsNzYuNC01ODAuNnYtLjVjLjMtNi40LTYuNy0xMC44LTEyLjMtNy40TDcwNSAzOTYuNCA1MTguNCAxNDcuNWE4LjA2IDguMDYgMCAwIDAtMTIuOSAwTDMxOSAzOTYuNCAxMjQuMyAyNzYuNWMtNS41LTMuNC0xMi42LjktMTIuMiA3LjN2LjZMMTg4LjUgODY1em0xNDcuOC0zNzcuN0w1MTIgMjUyLjlsMTc1LjcgMjM0LjQgMTM5LjgtODYuMS01My45IDQwOS40SDI1MC4zbC01My44LTQwOS40IDEzOS44IDg2LjF6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkN1c3RvbWVyU2VydmljZVR3b1RvbmUgPSBnZXRJY29uKCdjdXN0b21lci1zZXJ2aWNlJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbc2Vjb25kYXJ5Q29sb3IsICdNNjk2IDYzMmgxMjh2MTkySDY5NnptLTQ5NiAwaDEyOHYxOTJIMjAweiddLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MTIgMTI4Yy0yMTIuMSAwLTM4NCAxNzEuOS0zODQgMzg0djM2MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjI0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDIwMHYtNDhjMC0xNzIuMyAxMzkuNy0zMTIgMzEyLTMxMnMzMTIgMTM5LjcgMzEyIDMxMnY0OEg2ODhjLTM1LjMgMC02NCAyOC43LTY0IDY0djIwOGMwIDM1LjMgMjguNyA2NCA2NCA2NGgxODRjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNTEyYzAtMjEyLjEtMTcxLjktMzg0LTM4NC0zODR6TTMyOCA2MzJ2MTkySDIwMFY2MzJoMTI4em00OTYgMTkySDY5NlY2MzJoMTI4djE5MnonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuRGFzaGJvYXJkVHdvVG9uZSA9IGdldEljb24oJ2Rhc2hib2FyZCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001MTIgMTg4Yy05OS4zIDAtMTkyLjcgMzguNy0yNjMgMTA5LTcwLjMgNzAuMi0xMDkgMTYzLjYtMTA5IDI2MyAwIDEwNS42IDQ0LjUgMjA1LjUgMTIyLjYgMjc2aDQ5OC44QTM3MS4xMiAzNzEuMTIgMCAwIDAgODg0IDU2MGMwLTk5LjMtMzguNy0xOTIuNy0xMDktMjYzLTcwLjItNzAuMy0xNjMuNi0xMDktMjYzLTEwOXptLTMwIDQ0YzAtNC40IDMuNi04IDgtOGg0NGM0LjQgMCA4IDMuNiA4IDh2ODBjMCA0LjQtMy42IDgtOCA4aC00NGMtNC40IDAtOC0zLjYtOC04di04MHpNMjcwIDU4MmMwIDQuNC0zLjYgOC04IDhoLTgwYy00LjQgMC04LTMuNi04LTh2LTQ0YzAtNC40IDMuNi04IDgtOGg4MGM0LjQgMCA4IDMuNiA4IDh2NDR6bTkwLjctMjA0LjRsLTMxLjEgMzEuMWE4LjAzIDguMDMgMCAwIDEtMTEuMyAwbC01Ni42LTU2LjZhOC4wMyA4LjAzIDAgMCAxIDAtMTEuM2wzMS4xLTMxLjFjMy4xLTMuMSA4LjItMy4xIDExLjMgMGw1Ni42IDU2LjZjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM3ptMjkxLjEgODMuNWwtODQuNSA4NC41YzUgMTguNy4yIDM5LjQtMTQuNSA1NC4xYTU1Ljk1IDU1Ljk1IDAgMCAxLTc5LjIgMCA1NS45NSA1NS45NSAwIDAgMSAwLTc5LjIgNTUuODcgNTUuODcgMCAwIDEgNTQuMS0xNC41bDg0LjUtODQuNWMzLjEtMy4xIDguMi0zLjEgMTEuMyAwbDI4LjMgMjguM2MzLjEgMy4xIDMuMSA4LjIgMCAxMS4zem00My01Mi40bC0zMS4xLTMxLjFhOC4wMyA4LjAzIDAgMCAxIDAtMTEuM2w1Ni42LTU2LjZjMy4xLTMuMSA4LjItMy4xIDExLjMgMGwzMS4xIDMxLjFjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtNTYuNiA1Ni42YTguMDMgOC4wMyAwIDAgMS0xMS4zIDB6TTg0NiA1Mzh2NDRjMCA0LjQtMy42IDgtOCA4aC04MGMtNC40IDAtOC0zLjYtOC04di00NGMwLTQuNCAzLjYtOCA4LThoODBjNC40IDAgOCAzLjYgOCA4eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ002MjMuNSA0MjEuNWE4LjAzIDguMDMgMCAwIDAtMTEuMyAwTDUyNy43IDUwNmMtMTguNy01LTM5LjQtLjItNTQuMSAxNC41YTU1Ljk1IDU1Ljk1IDAgMCAwIDAgNzkuMiA1NS45NSA1NS45NSAwIDAgMCA3OS4yIDAgNTUuODcgNTUuODcgMCAwIDAgMTQuNS01NC4xbDg0LjUtODQuNWMzLjEtMy4xIDMuMS04LjIgMC0xMS4zbC0yOC4zLTI4LjN6TTQ5MCAzMjBoNDRjNC40IDAgOC0zLjYgOC04di04MGMwLTQuNC0zLjYtOC04LThoLTQ0Yy00LjQgMC04IDMuNi04IDh2ODBjMCA0LjQgMy42IDggOCA4eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ005MjQuOCAzODUuNmE0NDYuNyA0NDYuNyAwIDAgMC05Ni0xNDIuNCA0NDYuNyA0NDYuNyAwIDAgMC0xNDIuNC05NkM2MzEuMSAxMjMuOCA1NzIuNSAxMTIgNTEyIDExMnMtMTE5LjEgMTEuOC0xNzQuNCAzNS4yYTQ0Ni43IDQ0Ni43IDAgMCAwLTE0Mi40IDk2IDQ0Ni43IDQ0Ni43IDAgMCAwLTk2IDE0Mi40Qzc1LjggNDQwLjkgNjQgNDk5LjUgNjQgNTYwYzAgMTMyLjcgNTguMyAyNTcuNyAxNTkuOSAzNDMuMWwxLjcgMS40YzUuOCA0LjggMTMuMSA3LjUgMjAuNiA3LjVoNTMxLjdjNy41IDAgMTQuOC0yLjcgMjAuNi03LjVsMS43LTEuNEM5MDEuNyA4MTcuNyA5NjAgNjkyLjcgOTYwIDU2MGMwLTYwLjUtMTEuOS0xMTkuMS0zNS4yLTE3NC40ek03NjEuNCA4MzZIMjYyLjZBMzcxLjEyIDM3MS4xMiAwIDAgMSAxNDAgNTYwYzAtOTkuNCAzOC43LTE5Mi44IDEwOS0yNjMgNzAuMy03MC4zIDE2My43LTEwOSAyNjMtMTA5IDk5LjQgMCAxOTIuOCAzOC43IDI2MyAxMDkgNzAuMyA3MC4zIDEwOSAxNjMuNyAxMDkgMjYzIDAgMTA1LjYtNDQuNSAyMDUuNS0xMjIuNiAyNzZ6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTc2Mi43IDM0MC44bC0zMS4xLTMxLjFhOC4wMyA4LjAzIDAgMCAwLTExLjMgMGwtNTYuNiA1Ni42YTguMDMgOC4wMyAwIDAgMCAwIDExLjNsMzEuMSAzMS4xYzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsNTYuNi01Ni42YzMuMS0zLjEgMy4xLTguMiAwLTExLjN6TTc1MCA1Mzh2NDRjMCA0LjQgMy42IDggOCA4aDgwYzQuNCAwIDgtMy42IDgtOHYtNDRjMC00LjQtMy42LTgtOC04aC04MGMtNC40IDAtOCAzLjYtOCA4ek0zMDQuMSAzMDkuN2E4LjAzIDguMDMgMCAwIDAtMTEuMyAwbC0zMS4xIDMxLjFhOC4wMyA4LjAzIDAgMCAwIDAgMTEuM2w1Ni42IDU2LjZjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGwzMS4xLTMxLjFjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM2wtNTYuNi01Ni42ek0yNjIgNTMwaC04MGMtNC40IDAtOCAzLjYtOCA4djQ0YzAgNC40IDMuNiA4IDggOGg4MGM0LjQgMCA4LTMuNiA4LTh2LTQ0YzAtNC40LTMuNi04LTgtOHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuRGVsZXRlVHdvVG9uZSA9IGdldEljb24oJ2RlbGV0ZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW3NlY29uZGFyeUNvbG9yLCAnTTI5Mi43IDg0MGg0MzguNmwyNC4yLTUxMmgtNDg3eiddLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004NjQgMjU2SDczNnYtODBjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzUyYy0zNS4zIDAtNjQgMjguNy02NCA2NHY4MEgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyYzAgNC40IDMuNiA4IDggOGg2MC40bDI0LjcgNTIzYzEuNiAzNC4xIDI5LjggNjEgNjMuOSA2MWg0NTRjMzQuMiAwIDYyLjMtMjYuOCA2My45LTYxbDI0LjctNTIzSDg4OGM0LjQgMCA4LTMuNiA4LTh2LTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNTA0LTcyaDMwNHY3MkgzNjB2LTcyem0zNzEuMyA2NTZIMjkyLjdsLTI0LjItNTEyaDQ4N2wtMjQuMiA1MTJ6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkRpZmZUd29Ub25lID0gZ2V0SWNvbignZGlmZicsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00yMzIgMjY0djYyNGg0MzJWNDEzLjhMNTE0LjIgMjY0SDIzMnptMzM2IDQ4OWMwIDMuOC0zLjQgNy03LjUgN2gtMjI1Yy00LjEgMC03LjUtMy4yLTcuNS03di00MmMwLTMuOCAzLjQtNyA3LjUtN2gyMjVjNC4xIDAgNy41IDMuMiA3LjUgN3Y0MnptMC0yNjJ2NDJjMCAzLjgtMy40IDctNy41IDdINDc2djg0LjljMCAzLjktMy4xIDcuMS03IDcuMWgtNDJjLTMuOCAwLTctMy4yLTctNy4xVjU0MGgtODQuNWMtNC4xIDAtNy41LTMuMi03LjUtN3YtNDJjMC0zLjkgMy40LTcgNy41LTdINDIwdi04NC45YzAtMy45IDMuMi03LjEgNy03LjFoNDJjMy45IDAgNyAzLjIgNyA3LjFWNDg0aDg0LjVjNC4xIDAgNy41IDMuMSA3LjUgN3onXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODU0LjIgMzA2LjZMNjExLjMgNzIuOWMtNi01LjctMTMuOS04LjktMjIuMi04LjlIMjk2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDI3N2wyMTkgMjEwLjZWODI0YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LThWMzI5LjZjMC04LjctMy41LTE3LTkuOC0yM3onXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTUzLjQgMjAxLjRjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjcwNGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg1MTJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzk3LjNjMC04LjUtMy40LTE2LjYtOS40LTIyLjZMNTUzLjQgMjAxLjR6TTY2NCA4ODhIMjMyVjI2NGgyODIuMkw2NjQgNDEzLjhWODg4eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ000NzYgMzk5LjFjMC0zLjktMy4xLTcuMS03LTcuMWgtNDJjLTMuOCAwLTcgMy4yLTcgNy4xVjQ4NGgtODQuNWMtNC4xIDAtNy41IDMuMS03LjUgN3Y0MmMwIDMuOCAzLjQgNyA3LjUgN0g0MjB2ODQuOWMwIDMuOSAzLjIgNy4xIDcgNy4xaDQyYzMuOSAwIDctMy4yIDctNy4xVjU0MGg4NC41YzQuMSAwIDcuNS0zLjIgNy41LTd2LTQyYzAtMy45LTMuNC03LTcuNS03SDQ3NnYtODQuOXpNNTYwLjUgNzA0aC0yMjVjLTQuMSAwLTcuNSAzLjItNy41IDd2NDJjMCAzLjggMy40IDcgNy41IDdoMjI1YzQuMSAwIDcuNS0zLjIgNy41LTd2LTQyYzAtMy44LTMuNC03LTcuNS03eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5EYXRhYmFzZVR3b1RvbmUgPSBnZXRJY29uKCdkYXRhYmFzZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00yMzIgNjE2aDU2MFY0MDhIMjMydjIwOHptMTEyLTE0NGMyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MC00MC0xNy45LTQwLTQwIDE3LjktNDAgNDAtNDB6TTIzMiA4ODhoNTYwVjY4MEgyMzJ2MjA4em0xMTItMTQ0YzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwLTQwLTE3LjktNDAtNDAgMTcuOS00MCA0MC00MHpNMjMyIDM0NGg1NjBWMTM2SDIzMnYyMDh6bTExMi0xNDRjMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDAtNDAtMTcuOS00MC00MCAxNy45LTQwIDQwLTQweidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ00zMDQgNTEyYTQwIDQwIDAgMSAwIDgwIDAgNDAgNDAgMCAxIDAtODAgMHptMCAyNzJhNDAgNDAgMCAxIDAgODAgMCA0MCA0MCAwIDEgMC04MCAwem0wLTU0NGE0MCA0MCAwIDEgMCA4MCAwIDQwIDQwIDAgMSAwLTgwIDB6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTgzMiA2NEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCA4MjRIMjMyVjY4MGg1NjB2MjA4em0wLTI3MkgyMzJWNDA4aDU2MHYyMDh6bTAtMjcySDIzMlYxMzZoNTYwdjIwOHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuRGlzbGlrZVR3b1RvbmUgPSBnZXRJY29uKCdkaXNsaWtlJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTI3MyAxMDAuMXY0MjhoLjNsLS4zLTQyOHpNODIwLjQgNTI1bC0yMS45LTE5IDE0LTI1LjVhNTYuMiA1Ni4yIDAgMCAwIDYuOS0yNy4zYzAtMTYuNS03LjEtMzIuMi0xOS42LTQzbC0yMS45LTE5IDEzLjktMjUuNGE1Ni4yIDU2LjIgMCAwIDAgNi45LTI3LjNjMC0xNi41LTcuMS0zMi4yLTE5LjYtNDNsLTIxLjktMTkgMTMuOS0yNS40YTU2LjIgNTYuMiAwIDAgMCA2LjktMjcuM2MwLTIyLjQtMTMuMi00Mi42LTMzLjYtNTEuOEgzNDV2MzQ1LjJjMTguNiA2Ny4yIDQ2LjQgMTY4IDgzLjUgMzAyLjVhNDQuMjggNDQuMjggMCAwIDAgNDIuMiAzMi4zYzcuNS4xIDE1LTIuMiAyMS4xLTYuNyA5LjktNy40IDE1LjItMTguNiAxNC42LTMwLjVsLTkuNi0xOTguNGgzMTQuNEM4MjkgNjA1LjUgODQwIDU4Ny4xIDg0MCA1NjhjMC0xNi41LTcuMS0zMi4yLTE5LjYtNDN6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTExMiAxMzJ2MzY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY1VjEwMGgtNjVjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem03NzMuOSAzNTguM2MzLjYtMTIgNS40LTI0LjQgNS40LTM3IDAtMjguMy05LjMtNTUuNS0yNi4xLTc3LjcgMy42LTEyIDUuNC0yNC40IDUuNC0zNyAwLTI4LjMtOS4zLTU1LjUtMjYuMS03Ny43IDMuNi0xMiA1LjQtMjQuNCA1LjQtMzcgMC01MS42LTMwLjctOTguMS03OC4zLTExOC40YTY2LjEgNjYuMSAwIDAgMC0yNi41LTUuNEgyNzNsLjMgNDI4IDg1LjggMzEwLjhDMzcyLjkgODg5IDQxOC45IDkyNCA0NzAuOSA5MjRjMjkuNyAwIDU3LjQtMTEuOCA3Ny45LTMzLjQgMjAuNS0yMS41IDMxLTQ5LjcgMjkuNS03OS40bC02LTEyMi45aDIzOS45YzEyLjEgMCAyMy45LTMuMiAzNC4zLTkuMyA0MC40LTIzLjUgNjUuNS02Ni4xIDY1LjUtMTExIDAtMjguMy05LjMtNTUuNS0yNi4xLTc3Ljd6bS03NC43IDEyNi4xSDQ5Ni44bDkuNiAxOTguNGMuNiAxMS45LTQuNyAyMy4xLTE0LjYgMzAuNS02LjEgNC41LTEzLjYgNi44LTIxLjEgNi43YTQ0LjI4IDQ0LjI4IDAgMCAxLTQyLjItMzIuM2MtMzcuMS0xMzQuNC02NC45LTIzNS4yLTgzLjUtMzAyLjVWMTcyaDM5OS40YTU2Ljg1IDU2Ljg1IDAgMCAxIDMzLjYgNTEuOGMwIDkuNy0yLjMgMTguOS02LjkgMjcuM2wtMTMuOSAyNS40IDIxLjkgMTlhNTYuNzYgNTYuNzYgMCAwIDEgMTkuNiA0M2MwIDkuNy0yLjMgMTguOS02LjkgMjcuM2wtMTMuOSAyNS40IDIxLjkgMTlhNTYuNzYgNTYuNzYgMCAwIDEgMTkuNiA0M2MwIDkuNy0yLjMgMTguOS02LjkgMjcuM2wtMTQgMjUuNSAyMS45IDE5YTU2Ljc2IDU2Ljc2IDAgMCAxIDE5LjYgNDNjMCAxOS4xLTExIDM3LjUtMjguOCA0OC40eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5Eb3duQ2lyY2xlVHdvVG9uZSA9IGdldEljb24oJ2Rvd24tY2lyY2xlJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUxMiAxNDBjLTIwNS40IDAtMzcyIDE2Ni42LTM3MiAzNzJzMTY2LjYgMzcyIDM3MiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzItMTY2LjYtMzcyLTM3Mi0zNzJ6bTE4NC40IDI3Ny43bC0xNzggMjQ2YTcuOTUgNy45NSAwIDAgMS0xMi45IDBsLTE3OC0yNDZjLTMuOC01LjMgMC0xMi43IDYuNS0xMi43aDQ2LjljMTAuMyAwIDE5LjkgNC45IDI1LjkgMTMuMkw1MTIgNTYzLjZsMTA1LjItMTQ1LjRjNi04LjMgMTUuNy0xMy4yIDI1LjktMTMuMkg2OTBjNi41IDAgMTAuMyA3LjQgNi40IDEyLjd6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNjkwIDQwNWgtNDYuOWMtMTAuMiAwLTE5LjkgNC45LTI1LjkgMTMuMkw1MTIgNTYzLjYgNDA2LjggNDE4LjJjLTYtOC4zLTE1LjYtMTMuMi0yNS45LTEzLjJIMzM0Yy02LjUgMC0xMC4zIDcuNC02LjUgMTIuN2wxNzggMjQ2YzMuMiA0LjQgOS43IDQuNCAxMi45IDBsMTc4LTI0NmMzLjktNS4zLjEtMTIuNy02LjQtMTIuN3onXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuRG93blNxdWFyZVR3b1RvbmUgPSBnZXRJY29uKCdkb3duLXNxdWFyZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNzI4SDE4NFYxODRoNjU2djY1NnonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00xODQgODQwaDY1NlYxODRIMTg0djY1NnptMTUwLTQ0MGg0Ni45YzEwLjMgMCAxOS45IDQuOSAyNS45IDEzLjJMNTEyIDU1OC42bDEwNS4yLTE0NS40YzYtOC4zIDE1LjctMTMuMiAyNS45LTEzLjJINjkwYzYuNSAwIDEwLjMgNy40IDYuNCAxMi43bC0xNzggMjQ2YTcuOTUgNy45NSAwIDAgMS0xMi45IDBsLTE3OC0yNDZjLTMuOC01LjMgMC0xMi43IDYuNS0xMi43eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MDUuNSA2NTguN2MzLjIgNC40IDkuNyA0LjQgMTIuOSAwbDE3OC0yNDZjMy45LTUuMy4xLTEyLjctNi40LTEyLjdoLTQ2LjljLTEwLjIgMC0xOS45IDQuOS0yNS45IDEzLjJMNTEyIDU1OC42IDQwNi44IDQxMy4yYy02LTguMy0xNS42LTEzLjItMjUuOS0xMy4ySDMzNGMtNi41IDAtMTAuMyA3LjQtNi41IDEyLjdsMTc4IDI0NnonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuRW52aXJvbm1lbnRUd29Ub25lID0gZ2V0SWNvbignZW52aXJvbm1lbnQnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNzI0LjQgMjI0LjlDNjY3LjcgMTY5LjUgNTkyLjMgMTM5IDUxMiAxMzlzLTE1NS43IDMwLjUtMjEyLjQgODUuOEMyNDMuMSAyODAgMjEyIDM1My4yIDIxMiA0MzEuMWMwIDI0MS4zIDIzNC4xIDQwNy4yIDMwMCA0NDkuMSA2NS45LTQxLjkgMzAwLTIwNy44IDMwMC00NDkuMSAwLTc3LjktMzEuMS0xNTEuMS04Ny42LTIwNi4yek01MTIgNjE1Yy05Ny4yIDAtMTc2LTc4LjgtMTc2LTE3NnM3OC44LTE3NiAxNzYtMTc2IDE3NiA3OC44IDE3NiAxNzYtNzguOCAxNzYtMTc2IDE3NnonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDI2M2MtOTcuMiAwLTE3NiA3OC44LTE3NiAxNzZzNzguOCAxNzYgMTc2IDE3NiAxNzYtNzguOCAxNzYtMTc2LTc4LjgtMTc2LTE3Ni0xNzZ6bTc5LjIgMjU1LjJBMTExLjYgMTExLjYgMCAwIDEgNTEyIDU1MWMtMjkuOSAwLTU4LTExLjctNzkuMi0zMi44QTExMS42IDExMS42IDAgMCAxIDQwMCA0MzljMC0yOS45IDExLjctNTggMzIuOC03OS4yQzQ1NCAzMzguNiA0ODIuMSAzMjcgNTEyIDMyN2MyOS45IDAgNTggMTEuNiA3OS4yIDMyLjhTNjI0IDQwOS4xIDYyNCA0MzljMCAyOS45LTExLjYgNTgtMzIuOCA3OS4yeidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004NTQuNiAyODkuMWEzNjIuNDkgMzYyLjQ5IDAgMCAwLTc5LjktMTE1LjcgMzcwLjgzIDM3MC44MyAwIDAgMC0xMTguMi03Ny44QzYxMC43IDc2LjYgNTYyLjEgNjcgNTEyIDY3Yy01MC4xIDAtOTguNyA5LjYtMTQ0LjUgMjguNS00NC4zIDE4LjMtODQgNDQuNS0xMTguMiA3Ny44QTM2My42IDM2My42IDAgMCAwIDE2OS40IDI4OWMtMTkuNSA0NS0yOS40IDkyLjgtMjkuNCAxNDIgMCA3MC42IDE2LjkgMTQwLjkgNTAuMSAyMDguNyAyNi43IDU0LjUgNjQgMTA3LjYgMTExIDE1OC4xIDgwLjMgODYuMiAxNjQuNSAxMzguOSAxODguNCAxNTNhNDMuOSA0My45IDAgMCAwIDIyLjQgNi4xYzcuOCAwIDE1LjUtMiAyMi40LTYuMSAyMy45LTE0LjEgMTA4LjEtNjYuOCAxODguNC0xNTMgNDctNTAuNCA4NC4zLTEwMy42IDExMS0xNTguMUM4NjcuMSA1NzIgODg0IDUwMS44IDg4NCA0MzEuMWMwLTQ5LjItOS45LTk3LTI5LjQtMTQyek01MTIgODgwLjJjLTY1LjktNDEuOS0zMDAtMjA3LjgtMzAwLTQ0OS4xIDAtNzcuOSAzMS4xLTE1MS4xIDg3LjYtMjA2LjNDMzU2LjMgMTY5LjUgNDMxLjcgMTM5IDUxMiAxMzlzMTU1LjcgMzAuNSAyMTIuNCA4NS45Qzc4MC45IDI4MCA4MTIgMzUzLjIgODEyIDQzMS4xYzAgMjQxLjMtMjM0LjEgNDA3LjItMzAwIDQ0OS4xeidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5FZGl0VHdvVG9uZSA9IGdldEljb24oJ2VkaXQnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtzZWNvbmRhcnlDb2xvciwgJ003NjEuMSAyODguM0w2ODcuOCAyMTUgMzI1LjEgNTc3LjZsLTE1LjYgODkgODguOS0xNS43eiddLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004ODAgODM2SDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzZjMCA0LjQgMy42IDggOCA4aDc4NGM0LjQgMCA4LTMuNiA4LTh2LTM2YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNjIyLjMtODRjMiAwIDQtLjIgNi0uNUw0MzEuOSA3MjJjMi0uNCAzLjktMS4zIDUuMy0yLjhsNDIzLjktNDIzLjlhOS45NiA5Ljk2IDAgMCAwIDAtMTQuMUw2OTQuOSAxMTQuOWMtMS45LTEuOS00LjQtMi45LTcuMS0yLjlzLTUuMiAxLTcuMSAyLjlMMjU2LjggNTM4LjhjLTEuNSAxLjUtMi40IDMuMy0yLjggNS4zbC0yOS41IDE2OC4yYTMzLjUgMzMuNSAwIDAgMCA5LjQgMjkuOGM2LjYgNi40IDE0LjkgOS45IDIzLjggOS45em02Ny40LTE3NC40TDY4Ny44IDIxNWw3My4zIDczLjMtMzYyLjcgMzYyLjYtODguOSAxNS43IDE1LjYtODl6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkV4Y2xhbWF0aW9uQ2lyY2xlVHdvVG9uZSA9IGdldEljb24oJ2V4Y2xhbWF0aW9uLWNpcmNsZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyeidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUxMiAxNDBjLTIwNS40IDAtMzcyIDE2Ni42LTM3MiAzNzJzMTY2LjYgMzcyIDM3MiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzItMTY2LjYtMzcyLTM3Mi0zNzJ6bS0zMiAxNTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHYyNzJjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04VjI5NnptMzIgNDQwYTQ4LjAxIDQ4LjAxIDAgMCAxIDAtOTYgNDguMDEgNDguMDEgMCAwIDEgMCA5NnonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNDg4IDU3Nmg0OGM0LjQgMCA4LTMuNiA4LThWMjk2YzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHYyNzJjMCA0LjQgMy42IDggOCA4em0tMjQgMTEyYTQ4IDQ4IDAgMSAwIDk2IDAgNDggNDggMCAxIDAtOTYgMHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuRXhwZXJpbWVudFR3b1RvbmUgPSBnZXRJY29uKCdleHBlcmltZW50JywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTU1MS45IDUxM2MxOS42IDAgMzUuOS0xNC4yIDM5LjMtMzIuOEE0MC4wMiA0MC4wMiAwIDAgMSA1NTIgNTEyYTQwIDQwIDAgMCAxLTQwLTM5LjR2LjVjMCAyMiAxNy45IDM5LjkgMzkuOSAzOS45ek03NTIgNjg3LjhsLS4zLS4zYy0yOS0xNy41LTYyLjMtMjYuOC05Ny0yNi44LTQ0LjkgMC04Ny4yIDE1LjctMTIxIDQzLjhhMjU2LjI3IDI1Ni4yNyAwIDAgMS0xNjQuOSA1OS45Yy00MS4yIDAtODEtOS44LTExNi43LTI4TDIxMC41IDg0NGg2MDNsLTU5LjktMTU1LjItMS42LTF6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg3OSA4MjQuOUw2OTYuMyAzNTJWMTc4SDc2OHYtNjhIMjU2djY4aDcxLjd2MTc0TDE0NSA4MjQuOWMtMi44IDcuNC00LjMgMTUuMi00LjMgMjMuMSAwIDM1LjMgMjguNyA2NCA2NCA2NGg2MTQuNmM3LjkgMCAxNS43LTEuNSAyMy4xLTQuMyAzMy0xMi43IDQ5LjQtNDkuOCAzNi42LTgyLjh6TTM5NS43IDM2NC43VjE4MGgyMzIuNnYxODQuN0w3MTkuMiA2MDBjLTIwLjctNS4zLTQyLjEtOC02My45LTgtNjEuMiAwLTExOS4yIDIxLjUtMTY1LjMgNjBhMTg4Ljc4IDE4OC43OCAwIDAgMS0xMjEuMyA0My45Yy0zMi43IDAtNjQuMS04LjMtOTEuOC0yMy43bDExOC44LTMwNy41ek0yMTAuNSA4NDRsNDEuNi0xMDcuNi4xLS4yYzM1LjcgMTguMSA3NS40IDI3LjggMTE2LjYgMjcuOCA2MS4yIDAgMTE5LjItMjEuNSAxNjUuMy02MCAzMy45LTI4LjIgNzYuMy00My45IDEyMS4zLTQzLjkgMzUgMCA2OC40IDkuNSA5Ny42IDI3LjFsLjYgMS42TDgxMy41IDg0NGgtNjAzeidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001NTIgNTEyYzE5LjMgMCAzNS40LTEzLjYgMzkuMi0zMS44LjYtMi43LjgtNS40LjgtOC4yIDAtMjIuMS0xNy45LTQwLTQwLTQwcy00MCAxNy45LTQwIDQwdi42YTQwIDQwIDAgMCAwIDQwIDM5LjR6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkV5ZUludmlzaWJsZVR3b1RvbmUgPSBnZXRJY29uKCdleWUtaW52aXNpYmxlJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTI1NC44OSA3NTguODVsMTI1LjU3LTEyNS41N2ExNzYgMTc2IDAgMCAxIDI0OC44Mi0yNDguODJMNzU3IDI1Ni43MlE2NTEuNjkgMTg2LjA3IDUxMiAxODZxLTI4OC4zIDAtNDMwLjIgMzAwLjNhNjAuMyA2MC4zIDAgMCAwIDAgNTEuNXE2OS4yNyAxNDUuOTEgMTczLjA5IDIyMS4wNXpNOTQyLjIgNDg2LjJRODg5LjQ2IDM3NS4xMSA4MTYuNyAzMDVMNjcyLjQ4IDQ0OS4yN2ExNzYuMDkgMTc2LjA5IDAgMCAxLTIyNy4yMiAyMjcuMjFMMzIzIDc5OC43NVE0MDggODM4IDUxMiA4MzhxMjg4LjMgMCA0MzAuMi0zMDAuM2E2MC4yOSA2MC4yOSAwIDAgMCAwLTUxLjV6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTk0Mi4yIDQ4Ni4yUTg4OS40NyAzNzUuMTEgODE2LjcgMzA1bC01MC44OCA1MC44OEM4MDcuMzEgMzk1LjUzIDg0My40NSA0NDcuNCA4NzQuNyA1MTIgNzkxLjUgNjg0LjIgNjczLjQgNzY2IDUxMiA3NjZxLTcyLjY3IDAtMTMzLjg3LTIyLjM4TDMyMyA3OTguNzVRNDA4IDgzOCA1MTIgODM4cTI4OC4zIDAgNDMwLjItMzAwLjNhNjAuMjkgNjAuMjkgMCAwIDAgMC01MS41ek04NzguNjMgMTY1LjU2TDgzNiAxMjIuODhhOCA4IDAgMCAwLTExLjMyIDBMNzE1LjMxIDIzMi4yUTYyNC44NiAxODYgNTEyIDE4NnEtMjg4LjMgMC00MzAuMiAzMDAuM2E2MC4zIDYwLjMgMCAwIDAgMCA1MS41cTU2LjY5IDExOS40IDEzNi41IDE5MS40MUwxMTIuNDggODM1YTggOCAwIDAgMCAwIDExLjMxTDE1NS4xNyA4ODlhOCA4IDAgMCAwIDExLjMxIDBsNzEyLjE1LTcxMi4xMmE4IDggMCAwIDAgMC0xMS4zMnpNMTQ5LjMgNTEyQzIzMi42IDMzOS44IDM1MC43IDI1OCA1MTIgMjU4YzU0LjU0IDAgMTA0LjEzIDkuMzYgMTQ5LjEyIDI4LjM5bC03MC4zIDcwLjNhMTc2IDE3NiAwIDAgMC0yMzguMTMgMjM4LjEzbC04My40MiA4My40MkMyMjMuMSA2MzcuNDkgMTgzLjMgNTgyLjI4IDE0OS4zIDUxMnptMjQ2LjcgMGExMTIuMTEgMTEyLjExIDAgMCAxIDE0Ni4yLTEwNi42OUw0MDEuMzEgNTQ2LjJBMTEyIDExMiAwIDAgMSAzOTYgNTEyeidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MDggNjI0Yy0zLjQ2IDAtNi44Ny0uMTYtMTAuMjUtLjQ3bC01Mi44MiA1Mi44MmExNzYuMDkgMTc2LjA5IDAgMCAwIDIyNy40Mi0yMjcuNDJsLTUyLjgyIDUyLjgyYy4zMSAzLjM4LjQ3IDYuNzkuNDcgMTAuMjVhMTExLjk0IDExMS45NCAwIDAgMS0xMTIgMTEyeidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5FeWVUd29Ub25lID0gZ2V0SWNvbignZXllJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTgxLjggNTM3LjhhNjAuMyA2MC4zIDAgMCAxIDAtNTEuNUMxNzYuNiAyODYuNSAzMTkuOCAxODYgNTEyIDE4NmMtMTkyLjIgMC0zMzUuNCAxMDAuNS00MzAuMiAzMDAuM2E2MC4zIDYwLjMgMCAwIDAgMCA1MS41QzE3Ni42IDczNy41IDMxOS45IDgzOCA1MTIgODM4Yy0xOTIuMSAwLTMzNS40LTEwMC41LTQzMC4yLTMwMC4yeidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUxMiAyNThjLTE2MS4zIDAtMjc5LjQgODEuOC0zNjIuNyAyNTRDMjMyLjYgNjg0LjIgMzUwLjcgNzY2IDUxMiA3NjZjMTYxLjQgMCAyNzkuNS04MS44IDM2Mi43LTI1NEM3OTEuNCAzMzkuOCA2NzMuMyAyNTggNTEyIDI1OHptLTQgNDMwYy05Ny4yIDAtMTc2LTc4LjgtMTc2LTE3NnM3OC44LTE3NiAxNzYtMTc2IDE3NiA3OC44IDE3NiAxNzYtNzguOCAxNzYtMTc2IDE3NnonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNOTQyLjIgNDg2LjJDODQ3LjQgMjg2LjUgNzA0LjEgMTg2IDUxMiAxODZjLTE5Mi4yIDAtMzM1LjQgMTAwLjUtNDMwLjIgMzAwLjNhNjAuMyA2MC4zIDAgMCAwIDAgNTEuNUMxNzYuNiA3MzcuNSAzMTkuOSA4MzggNTEyIDgzOGMxOTIuMiAwIDMzNS40LTEwMC41IDQzMC4yLTMwMC4zIDcuNy0xNi4yIDcuNy0zNSAwLTUxLjV6TTUxMiA3NjZjLTE2MS4zIDAtMjc5LjQtODEuOC0zNjIuNy0yNTRDMjMyLjYgMzM5LjggMzUwLjcgMjU4IDUxMiAyNThzMjc5LjQgODEuOCAzNjIuNyAyNTRDNzkxLjUgNjg0LjIgNjczLjQgNzY2IDUxMiA3NjZ6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTUwOCAzMzZjLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2czc4LjggMTc2IDE3NiAxNzYgMTc2LTc4LjggMTc2LTE3Ni03OC44LTE3Ni0xNzYtMTc2em0wIDI4OGMtNjEuOSAwLTExMi01MC4xLTExMi0xMTJzNTAuMS0xMTIgMTEyLTExMiAxMTIgNTAuMSAxMTIgMTEyLTUwLjEgMTEyLTExMiAxMTJ6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkZpbGVBZGRUd29Ub25lID0gZ2V0SWNvbignZmlsZS1hZGQnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTM0IDM1MlYxMzZIMjMydjc1Mmg1NjBWMzk0SDU3NmE0MiA0MiAwIDAgMS00Mi00MnptMTI2IDIzNnY0OGMwIDQuNC0zLjYgOC04IDhINTQ0djEwOGMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LThWNjQ0SDM3MmMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoMTA4VjQ3MmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djEwOGgxMDhjNC40IDAgOCAzLjYgOCA4eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004NTQuNiAyODguNkw2MzkuNCA3My40Yy02LTYtMTQuMS05LjQtMjIuNi05LjRIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMxMS4zYzAtOC41LTMuNC0xNi43LTkuNC0yMi43ek02MDIgMTM3LjhMNzkwLjIgMzI2SDYwMlYxMzcuOHpNNzkyIDg4OEgyMzJWMTM2aDMwMnYyMTZhNDIgNDIgMCAwIDAgNDIgNDJoMjE2djQ5NHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTQ0IDQ3MmMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2MTA4SDM3MmMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgxMDh2MTA4YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LThWNjQ0aDEwOGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOEg1NDRWNDcyeidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5GaWxlRXhjbGFtYXRpb25Ud29Ub25lID0gZ2V0SWNvbignZmlsZS1leGNsYW1hdGlvbicsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001MzQgMzUyVjEzNkgyMzJ2NzUyaDU2MFYzOTRINTc2YTQyIDQyIDAgMCAxLTQyLTQyem0tNTQgOTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHYxODRjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04VjQ0OHptMzIgMzM2Yy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwIDQwIDE3LjkgNDAgNDAtMTcuOSA0MC00MCA0MHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODU0LjYgMjg4LjZMNjM5LjQgNzMuNGMtNi02LTE0LjEtOS40LTIyLjYtOS40SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2ODMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMTEuM2MwLTguNS0zLjQtMTYuNy05LjQtMjIuN3pNNjAyIDEzNy44TDc5MC4yIDMyNkg2MDJWMTM3Ljh6TTc5MiA4ODhIMjMyVjEzNmgzMDJ2MjE2YTQyIDQyIDAgMCAwIDQyIDQyaDIxNnY0OTR6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTQ4OCA2NDBoNDhjNC40IDAgOC0zLjYgOC04VjQ0OGMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2MTg0YzAgNC40IDMuNiA4IDggOHptLTE2IDEwNGE0MCA0MCAwIDEgMCA4MCAwIDQwIDQwIDAgMSAwLTgwIDB6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkZpbGVJbWFnZVR3b1RvbmUgPSBnZXRJY29uKCdmaWxlLWltYWdlJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUzNCAzNTJWMTM2SDIzMnY3NTJoNTYwVjM5NEg1NzZhNDIgNDIgMCAwIDEtNDItNDJ6bS0xMzQgNTBjMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDAtNDAtMTcuOS00MC00MCAxNy45LTQwIDQwLTQwem0yOTYgMjk0SDMyOC4xYy02LjcgMC0xMC40LTcuNy02LjMtMTIuOWw5OS44LTEyNy4yYTggOCAwIDAgMSAxMi42IDBsNDEuMSA1Mi40IDc3LjgtOTkuMmE4LjEgOC4xIDAgMCAxIDEyLjcgMGwxMzYuNSAxNzRjNC4xIDUuMi40IDEyLjktNi4zIDEyLjl6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg1NC42IDI4OC42TDYzOS40IDczLjRjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzExLjNjMC04LjUtMy40LTE2LjctOS40LTIyLjd6TTYwMiAxMzcuOEw3OTAuMiAzMjZINjAyVjEzNy44ek03OTIgODg4SDIzMlYxMzZoMzAydjIxNmE0MiA0MiAwIDAgMCA0MiA0MmgyMTZ2NDk0eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001NTMuMSA1MDkuMWwtNzcuOCA5OS4yLTQxLjEtNTIuNGE4IDggMCAwIDAtMTIuNiAwbC05OS44IDEyNy4yYTcuOTggNy45OCAwIDAgMCA2LjMgMTIuOUg2OTZjNi43IDAgMTAuNC03LjcgNi4zLTEyLjlsLTEzNi41LTE3NGE4LjEgOC4xIDAgMCAwLTEyLjcgMHpNMzYwIDQ0MmE0MCA0MCAwIDEgMCA4MCAwIDQwIDQwIDAgMSAwLTgwIDB6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkZpbGVFeGNlbFR3b1RvbmUgPSBnZXRJY29uKCdmaWxlLWV4Y2VsJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUzNCAzNTJWMTM2SDIzMnY3NTJoNTYwVjM5NEg1NzZhNDIgNDIgMCAwIDEtNDItNDJ6bTUxLjYgMTIwaDM1LjdhMTIuMDQgMTIuMDQgMCAwIDEgMTAuMSAxOC41TDU0Ni4xIDYyM2w4NCAxMzAuNGMzLjYgNS42IDIgMTMtMy42IDE2LjYtMiAxLjItNC4yIDEuOS02LjUgMS45aC0zNy41Yy00LjEgMC04LTIuMS0xMC4yLTUuN0w1MTAgNjY0LjhsLTYyLjcgMTAxLjVjLTIuMiAzLjUtNiA1LjctMTAuMiA1LjdoLTM0LjVhMTIuMDQgMTIuMDQgMCAwIDEtMTAuMi0xOC40bDgzLjQtMTMyLjgtODIuMy0xMzAuNGMtMy42LTUuNy0xLjktMTMuMSAzLjctMTYuNiAxLjktMS4zIDQuMS0xLjkgNi40LTEuOUg0NDJjNC4yIDAgOC4xIDIuMiAxMC4zIDUuOGw2MS44IDEwMi40IDYxLjItMTAyLjNjMi4yLTMuNiA2LjEtNS44IDEwLjMtNS44eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004NTQuNiAyODguNkw2MzkuNCA3My40Yy02LTYtMTQuMS05LjQtMjIuNi05LjRIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMxMS4zYzAtOC41LTMuNC0xNi43LTkuNC0yMi43ek02MDIgMTM3LjhMNzkwLjIgMzI2SDYwMlYxMzcuOHpNNzkyIDg4OEgyMzJWMTM2aDMwMnYyMTZhNDIgNDIgMCAwIDAgNDIgNDJoMjE2djQ5NHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTE0LjEgNTgwLjFsLTYxLjgtMTAyLjRjLTIuMi0zLjYtNi4xLTUuOC0xMC4zLTUuOGgtMzguNGMtMi4zIDAtNC41LjYtNi40IDEuOS01LjYgMy41LTcuMyAxMC45LTMuNyAxNi42bDgyLjMgMTMwLjQtODMuNCAxMzIuOGExMi4wNCAxMi4wNCAwIDAgMCAxMC4yIDE4LjRoMzQuNWM0LjIgMCA4LTIuMiAxMC4yLTUuN0w1MTAgNjY0LjhsNjIuMyAxMDEuNGMyLjIgMy42IDYuMSA1LjcgMTAuMiA1LjdINjIwYzIuMyAwIDQuNS0uNyA2LjUtMS45IDUuNi0zLjYgNy4yLTExIDMuNi0xNi42bC04NC0xMzAuNCA4NS4zLTEzMi41YTEyLjA0IDEyLjA0IDAgMCAwLTEwLjEtMTguNWgtMzUuN2MtNC4yIDAtOC4xIDIuMi0xMC4zIDUuOGwtNjEuMiAxMDIuM3onXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuRmlsZU1hcmtkb3duVHdvVG9uZSA9IGdldEljb24oJ2ZpbGUtbWFya2Rvd24nLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTM0IDM1MlYxMzZIMjMydjc1Mmg1NjBWMzk0SDU3NmE0MiA0MiAwIDAgMS00Mi00MnptNzIuMyAxMjJINjQxYzYuNiAwIDEyIDUuNCAxMiAxMnYyNzJjMCA2LjYtNS40IDEyLTEyIDEyaC0yNy4yYy02LjYgMC0xMi01LjQtMTItMTJWNTgxLjdMNTM1IDczMi4zYy0yIDQuMy02LjMgNy4xLTExIDcuMWgtMjQuMWExMiAxMiAwIDAgMS0xMS03LjFsLTY2LjgtMTUwLjJWNzU4YzAgNi42LTUuNCAxMi0xMiAxMkgzODNjLTYuNiAwLTEyLTUuNC0xMi0xMlY0ODZjMC02LjYgNS40LTEyIDEyLTEyaDM1YzQuOCAwIDkuMSAyLjggMTEgNy4ybDgzLjIgMTkxIDgzLjEtMTkxYzEuOS00LjQgNi4yLTcuMiAxMS03LjJ6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg1NC42IDI4OC42TDYzOS40IDczLjRjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzExLjNjMC04LjUtMy40LTE2LjctOS40LTIyLjd6TTYwMiAxMzcuOEw3OTAuMiAzMjZINjAyVjEzNy44ek03OTIgODg4SDIzMlYxMzZoMzAydjIxNmE0MiA0MiAwIDAgMCA0MiA0MmgyMTZ2NDk0eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ000MjkgNDgxLjJjLTEuOS00LjQtNi4yLTcuMi0xMS03LjJoLTM1Yy02LjYgMC0xMiA1LjQtMTIgMTJ2MjcyYzAgNi42IDUuNCAxMiAxMiAxMmgyNy4xYzYuNiAwIDEyLTUuNCAxMi0xMlY1ODIuMWw2Ni44IDE1MC4yYTEyIDEyIDAgMCAwIDExIDcuMUg1MjRjNC43IDAgOS0yLjggMTEtNy4xbDY2LjgtMTUwLjZWNzU4YzAgNi42IDUuNCAxMiAxMiAxMkg2NDFjNi42IDAgMTItNS40IDEyLTEyVjQ4NmMwLTYuNi01LjQtMTItMTItMTJoLTM0LjdjLTQuOCAwLTkuMSAyLjgtMTEgNy4ybC04My4xIDE5MS04My4yLTE5MXonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuRmlsZVBkZlR3b1RvbmUgPSBnZXRJY29uKCdmaWxlLXBkZicsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001MDkuMiA0OTAuOGMtLjctMS4zLTEuNC0xLjktMi4yLTItMi45IDMuMy0yLjIgMzEuNSAyLjcgNTEuNCA0LTEzLjYgNC43LTQwLjUtLjUtNDkuNHptLTEuNiAxMjAuNWMtNy43IDIwLTE4LjggNDcuMy0zMi4xIDcxLjQgNC0xLjYgOC4xLTMuMyAxMi4zLTUgMTcuNi03LjIgMzcuMy0xNS4zIDU4LjktMjAuMi0xNC45LTExLjgtMjguNC0yNy43LTM5LjEtNDYuMnonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001MzQgMzUyVjEzNkgyMzJ2NzUyaDU2MFYzOTRINTc2YTQyIDQyIDAgMCAxLTQyLTQyem01NSAyODcuNmMxNi4xLTEuOSAzMC42LTIuOCA0NC4zLTIuMyAxMi44LjQgMjMuNiAyIDMyIDUuMS4yLjEuMy4xLjUuMi40LjIuOC4zIDEuMi41LjUuMiAxLjEuNCAxLjYuNy4xLjEuMy4xLjQuMiA0LjEgMS44IDcuNSA0IDEwLjEgNi42IDkuMSA5LjEgMTEuOCAyNi4xIDYuMiAzOS42LTMuMiA3LjctMTEuNyAyMC41LTMzLjMgMjAuNS0yMS44IDAtNTMuOS05LjctODIuMS0yNC44LTI1LjUgNC4zLTUzLjcgMTMuOS04MC45IDIzLjEtNS44IDItMTEuOCA0LTE3LjYgNS45LTM4IDY1LjItNjYuNSA3OS40LTg0LjEgNzkuNC00LjIgMC03LjgtLjktMTAuOC0yLTYuOS0yLjYtMTIuOC04LTE2LjUtMTUtLjktMS43LTEuNi0zLjQtMi4yLTUuMi0xLjYtNC44LTIuMS05LjYtMS4zLTEzLjZsLjYtMi43Yy4xLS4yLjEtLjQuMi0uNi4yLS43LjQtMS40LjctMi4xIDAtLjEuMS0uMi4xLS4zIDQuMS0xMS45IDEzLjYtMjMuNCAyNy43LTM0LjYgMTIuMy05LjggMjcuMS0xOC43IDQ1LjktMjguNCAxNS45LTI4IDM3LjYtNzUuMSA1MS4yLTEwNy40LTEwLjgtNDEuOC0xNi43LTc0LjYtMTAuMS05OC42LjktMy4zIDIuNS02LjQgNC42LTkuMS4yLS4yLjMtLjQuNS0uNi4xLS4xLjEtLjIuMi0uMiA2LjMtNy41IDE2LjktMTEuOSAyOC4xLTExLjUgMTYuNi43IDI5LjcgMTEuNSAzMyAzMC4xIDEuNyA4IDIuMiAxNi41IDEuOSAyNS43di43YzAgLjUgMCAxLS4xIDEuNS0uNyAxMy4zLTMgMjYuNi03LjMgNDQuNy0uNCAxLjYtLjggMy4yLTEuMiA1LjJsLTEgNC4xLS4xLjNjLjEuMi4xLjMuMi41bDEuOCA0LjVjLjEuMy4zLjcuNCAxIC43IDEuNiAxLjQgMy4zIDIuMSA0Ljh2LjFjOC43IDE4LjggMTkuNyAzMy40IDMzLjkgNDUuMSA0LjMgMy41IDguOSA2LjcgMTMuOSA5LjggMS44LS41IDMuNS0uNyA1LjMtLjl6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMzkxLjUgNzYxYzUuNy00LjQgMTYuMi0xNC41IDMwLjEtMzQuNy0xMC4zIDkuNC0yMy40IDIyLjQtMzAuMSAzNC43em0yNzAuOS04M2wuMi0uM2guMmMuNi0uNC41LS43LjQtLjktLjEtLjEtNC41LTkuMy00NS4xLTcuNCAzNS4zIDEzLjkgNDMuNSA5LjEgNDQuMyA4LjZ6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg1NC42IDI4OC42TDYzOS40IDczLjRjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzExLjNjMC04LjUtMy40LTE2LjctOS40LTIyLjd6TTYwMiAxMzcuOEw3OTAuMiAzMjZINjAyVjEzNy44ek03OTIgODg4SDIzMlYxMzZoMzAydjIxNmE0MiA0MiAwIDAgMCA0MiA0MmgyMTZ2NDk0eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MzUuOSA1ODUuM2MtLjgtMS43LTEuNS0zLjMtMi4yLTQuOS0uMS0uMy0uMy0uNy0uNC0xbC0xLjgtNC41Yy0uMS0uMi0uMS0uMy0uMi0uNWwuMS0uMy4yLTEuMWM0LTE2LjMgOC42LTM1LjMgOS40LTU0LjR2LS43Yy4zLTguNi0uMi0xNy4yLTItMjUuNi0zLjgtMjEuMy0xOS41LTI5LjYtMzIuOS0zMC4yLTExLjMtLjUtMjEuOCA0LTI4LjEgMTEuNC0uMS4xLS4xLjItLjIuMi0uMi4yLS40LjQtLjUuNi0yLjEgMi43LTMuNyA1LjgtNC42IDkuMS02LjYgMjQtLjcgNTYuOCAxMC4xIDk4LjYtMTMuNiAzMi40LTM1LjMgNzkuNC01MS4yIDEwNy40di4xYy0yNy43IDE0LjMtNjQuMSAzNS44LTczLjYgNjIuOSAwIC4xLS4xLjItLjEuMy0uMi43LS41IDEuNC0uNyAyLjEtLjEuMi0uMS40LS4yLjYtLjIuOS0uNSAxLjgtLjYgMi43LS45IDQtLjQgOC44IDEuMyAxMy42LjYgMS44IDEuMyAzLjUgMi4yIDUuMiAzLjcgNyA5LjYgMTIuNCAxNi41IDE1IDMgMS4xIDYuNiAyIDEwLjggMiAxNy42IDAgNDYuMS0xNC4yIDg0LjEtNzkuNCA1LjgtMS45IDExLjgtMy45IDE3LjYtNS45IDI3LjItOS4yIDU1LjQtMTguOCA4MC45LTIzLjEgMjguMiAxNS4xIDYwLjMgMjQuOCA4Mi4xIDI0LjggMjEuNiAwIDMwLjEtMTIuOCAzMy4zLTIwLjUgNS42LTEzLjUgMi45LTMwLjUtNi4yLTM5LjYtMi42LTIuNi02LTQuOC0xMC4xLTYuNi0uMS0uMS0uMy0uMS0uNC0uMi0uNS0uMi0xLjEtLjQtMS42LS43LS40LS4yLS44LS4zLTEuMi0uNS0uMi0uMS0uMy0uMS0uNS0uMi0xNi4yLTUuOC00MS43LTYuNy03Ni4zLTIuOGwtNS4zLjZjLTUtMy05LjYtNi4zLTEzLjktOS44LTE0LjItMTEuMy0yNS4xLTI1LjgtMzMuOC00NC43ek0zOTEuNSA3NjFjNi43LTEyLjMgMTkuOC0yNS4zIDMwLjEtMzQuNy0xMy45IDIwLjItMjQuNCAzMC4zLTMwLjEgMzQuN3pNNTA3IDQ4OC44Yy44LjEgMS41LjcgMi4yIDIgNS4yIDguOSA0LjUgMzUuOC41IDQ5LjQtNC45LTE5LjktNS42LTQ4LjEtMi43LTUxLjR6bS0xOS4yIDE4OC45Yy00LjIgMS43LTguMyAzLjQtMTIuMyA1IDEzLjMtMjQuMSAyNC40LTUxLjQgMzIuMS03MS40IDEwLjcgMTguNSAyNC4yIDM0LjQgMzkuMSA0Ni4yLTIxLjYgNC45LTQxLjMgMTMtNTguOSAyMC4yem0xNzUuNC0uOWMuMS4yLjIuNS0uNC45aC0uMmwtLjIuM2MtLjguNS05IDUuMy00NC4zLTguNiA0MC42LTEuOSA0NSA3LjMgNDUuMSA3LjR6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkZpbGVQcHRUd29Ub25lID0gZ2V0SWNvbignZmlsZS1wcHQnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNDY0LjUgNTE2LjJ2MTA4LjRoMzguOWM0NC43IDAgNzEuMi0xMC45IDcxLjItNTQuMyAwLTM0LjQtMjAuMS01NC4xLTUzLjktNTQuMWgtNTYuMnonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001MzQgMzUyVjEzNkgyMzJ2NzUyaDU2MFYzOTRINTc2YTQyIDQyIDAgMCAxLTQyLTQyem05MCAyMTguNGMwIDU1LjItMzYuOCA5NC4xLTk2LjIgOTQuMWgtNjMuM1Y3NjBjMCA0LjQtMy42IDgtOCA4SDQyNGMtNC40IDAtOC0zLjYtOC04VjQ4NGMwLTQuNCAzLjYtOCA4LTh2LjFoMTA0YzU5LjcgMCA5NiAzOS44IDk2IDk0LjN6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg1NC42IDI4OC42TDYzOS40IDczLjRjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzExLjNjMC04LjUtMy40LTE2LjctOS40LTIyLjd6TTYwMiAxMzcuOEw3OTAuMiAzMjZINjAyVjEzNy44ek03OTIgODg4SDIzMlYxMzZoMzAydjIxNmE0MiA0MiAwIDAgMCA0MiA0MmgyMTZ2NDk0eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ000MjQgNDc2LjFjLTQuNC0uMS04IDMuNS04IDcuOXYyNzZjMCA0LjQgMy42IDggOCA4aDMyLjVjNC40IDAgOC0zLjYgOC04di05NS41aDYzLjNjNTkuNCAwIDk2LjItMzguOSA5Ni4yLTk0LjEgMC01NC41LTM2LjMtOTQuMy05Ni05NC4zSDQyNHptMTUwLjYgOTQuMmMwIDQzLjQtMjYuNSA1NC4zLTcxLjIgNTQuM2gtMzguOVY1MTYuMmg1Ni4yYzMzLjggMCA1My45IDE5LjcgNTMuOSA1NC4xeidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5GaWxlVGV4dFR3b1RvbmUgPSBnZXRJY29uKCdmaWxlLXRleHQnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTM0IDM1MlYxMzZIMjMydjc1Mmg1NjBWMzk0SDU3NmE0MiA0MiAwIDAgMS00Mi00MnptLTIyIDMyMmMwIDQuNC0zLjYgOC04IDhIMzIwYy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGgxODRjNC40IDAgOCAzLjYgOCA4djQ4em0yMDAtMTg0djQ4YzAgNC40LTMuNiA4LTggOEgzMjBjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDM4NGM0LjQgMCA4IDMuNiA4IDh6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg1NC42IDI4OC42TDYzOS40IDczLjRjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzExLjNjMC04LjUtMy40LTE2LjctOS40LTIyLjd6TTYwMiAxMzcuOEw3OTAuMiAzMjZINjAyVjEzNy44ek03OTIgODg4SDIzMlYxMzZoMzAydjIxNmE0MiA0MiAwIDAgMCA0MiA0MmgyMTZ2NDk0eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ00zMTIgNDkwdjQ4YzAgNC40IDMuNiA4IDggOGgzODRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LThIMzIwYy00LjQgMC04IDMuNi04IDh6bTE5MiAxMjhIMzIwYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDE4NGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuRmlsZVVua25vd25Ud29Ub25lID0gZ2V0SWNvbignZmlsZS11bmtub3duJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUzNCAzNTJWMTM2SDIzMnY3NTJoNTYwVjM5NEg1NzZhNDIgNDIgMCAwIDEtNDItNDJ6bS0yMiA0MjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMTAtMjI4LjRjLjcgNDQuOS0yOS43IDg0LjUtNzQuMyA5OC45LTUuNyAxLjgtOS43IDcuMy05LjcgMTMuM1Y2NzJjMCA1LjUtNC41IDEwLTEwIDEwaC0zMmMtNS41IDAtMTAtNC41LTEwLTEwdi0zMmMuMi0xOS44IDE1LjQtMzcuMyAzNC43LTQwLjFDNTQ5IDU5Ni4yIDU3MCA1NzQuMyA1NzAgNTQ5YzAtMjguMS0yNS44LTUxLjUtNTgtNTEuNXMtNTggMjMuNC01OCA1MS42YzAgNS4yLTQuNCA5LjQtOS44IDkuNGgtMzIuNGMtNS40IDAtOS44LTQuMS05LjgtOS41IDAtNTcuNCA1MC4xLTEwMy43IDExMS41LTEwMyA1OS4zLjggMTA3LjcgNDYuMSAxMDguNSAxMDEuNnonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODU0LjYgMjg4LjdMNjM5LjQgNzMuNGMtNi02LTE0LjItOS40LTIyLjctOS40SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2ODMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMTEuM2MwLTguNS0zLjQtMTYuNi05LjQtMjIuNnpNNjAyIDEzNy44TDc5MC4yIDMyNkg2MDJWMTM3Ljh6TTc5MiA4ODhIMjMyVjEzNmgzMDJ2MjE2YTQyIDQyIDAgMCAwIDQyIDQyaDIxNnY0OTR6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTQ4MCA3NDRhMzIgMzIgMCAxIDAgNjQgMCAzMiAzMiAwIDEgMC02NCAwem0tNzgtMTk1YzAgNS40IDQuNCA5LjUgOS44IDkuNWgzMi40YzUuNCAwIDkuOC00LjIgOS44LTkuNCAwLTI4LjIgMjUuOC01MS42IDU4LTUxLjZzNTggMjMuNCA1OCA1MS41YzAgMjUuMy0yMSA0Ny4yLTQ5LjMgNTAuOS0xOS4zIDIuOC0zNC41IDIwLjMtMzQuNyA0MC4xdjMyYzAgNS41IDQuNSAxMCAxMCAxMGgzMmM1LjUgMCAxMC00LjUgMTAtMTB2LTEyLjJjMC02IDQtMTEuNSA5LjctMTMuMyA0NC42LTE0LjQgNzUtNTQgNzQuMy05OC45LS44LTU1LjUtNDkuMi0xMDAuOC0xMDguNS0xMDEuNi02MS40LS43LTExMS41IDQ1LjYtMTExLjUgMTAzeidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5GaWxlWmlwVHdvVG9uZSA9IGdldEljb24oJ2ZpbGUtemlwJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbc2Vjb25kYXJ5Q29sb3IsICdNMzQ0IDYzMGgzMnYyaC0zMnonXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001MzQgMzUyVjEzNkgzNjB2NjRoNjR2NjRoLTY0djY0aDY0djY0aC02NHY2NGg2NHY2NGgtNjR2NjJoNjR2MTYwSDI5NlY1MjBoNjR2LTY0aC02NHYtNjRoNjR2LTY0aC02NHYtNjRoNjR2LTY0aC02NHYtNjRoLTY0djc1Mmg1NjBWMzk0SDU3NmE0MiA0MiAwIDAgMS00Mi00MnonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODU0LjYgMjg4LjZMNjM5LjQgNzMuNGMtNi02LTE0LjEtOS40LTIyLjYtOS40SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2ODMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMTEuM2MwLTguNS0zLjQtMTYuNy05LjQtMjIuN3pNNjAyIDEzNy44TDc5MC4yIDMyNkg2MDJWMTM3Ljh6TTc5MiA4ODhIMjMyVjEzNmg2NHY2NGg2NHYtNjRoMTc0djIxNmE0MiA0MiAwIDAgMCA0MiA0MmgyMTZ2NDk0eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ00yOTYgMzkyaDY0djY0aC02NHptMC0xMjhoNjR2NjRoLTY0em0wIDMxOHYxNjBoMTI4VjU4MmgtNjR2LTYyaC02NHY2MnptNDggNTB2LTJoMzJ2NjRoLTMydi02MnptMTYtNDMyaDY0djY0aC02NHptMCAyNTZoNjR2NjRoLTY0em0wLTEyOGg2NHY2NGgtNjR6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkZpbGVXb3JkVHdvVG9uZSA9IGdldEljb24oJ2ZpbGUtd29yZCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001MzQgMzUyVjEzNkgyMzJ2NzUyaDU2MFYzOTRINTc2YTQyIDQyIDAgMCAxLTQyLTQyem0xMDEuMyAxMjkuM2MxLjMtNS40IDYuMS05LjMgMTEuNy05LjNoMzUuNmExMi4wNCAxMi4wNCAwIDAgMSAxMS42IDE1LjFsLTc0LjQgMjc2Yy0xLjQgNS4zLTYuMiA4LjktMTEuNiA4LjloLTMxLjhjLTUuNCAwLTEwLjItMy43LTExLjYtOC45bC01Mi44LTE5Ny01Mi44IDE5N2MtMS40IDUuMy02LjIgOC45LTExLjYgOC45aC0zMmMtNS40IDAtMTAuMi0zLjctMTEuNi04LjlsLTc0LjItMjc2YTEyLjAyIDEyLjAyIDAgMCAxIDExLjYtMTUuMWgzNS40YzUuNiAwIDEwLjQgMy45IDExLjcgOS4zTDQzNC42IDY4MGw0OS43LTE5OC45YzEuMy01LjQgNi4xLTkuMSAxMS42LTkuMWgzMi4yYzUuNSAwIDEwLjMgMy43IDExLjYgOS4xbDQ5LjggMTk5LjMgNDUuOC0xOTkuMXonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODU0LjYgMjg4LjZMNjM5LjQgNzMuNGMtNi02LTE0LjEtOS40LTIyLjYtOS40SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2ODMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMTEuM2MwLTguNS0zLjQtMTYuNy05LjQtMjIuN3pNNjAyIDEzNy44TDc5MC4yIDMyNkg2MDJWMTM3Ljh6TTc5MiA4ODhIMjMyVjEzNmgzMDJ2MjE2YTQyIDQyIDAgMCAwIDQyIDQyaDIxNnY0OTR6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTUyOC4xIDQ3MmgtMzIuMmMtNS41IDAtMTAuMyAzLjctMTEuNiA5LjFMNDM0LjYgNjgwbC00Ni4xLTE5OC43Yy0xLjMtNS40LTYuMS05LjMtMTEuNy05LjNoLTM1LjRhMTIuMDIgMTIuMDIgMCAwIDAtMTEuNiAxNS4xbDc0LjIgMjc2YzEuNCA1LjIgNi4yIDguOSAxMS42IDguOWgzMmM1LjQgMCAxMC4yLTMuNiAxMS42LTguOWw1Mi44LTE5NyA1Mi44IDE5N2MxLjQgNS4yIDYuMiA4LjkgMTEuNiA4LjloMzEuOGM1LjQgMCAxMC4yLTMuNiAxMS42LTguOWw3NC40LTI3NmExMi4wNCAxMi4wNCAwIDAgMC0xMS42LTE1LjFINjQ3Yy01LjYgMC0xMC40IDMuOS0xMS43IDkuM2wtNDUuOCAxOTkuMS00OS44LTE5OS4zYy0xLjMtNS40LTYuMS05LjEtMTEuNi05LjF6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkZpbGVUd29Ub25lID0gZ2V0SWNvbignZmlsZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW3NlY29uZGFyeUNvbG9yLCAnTTUzNCAzNTJWMTM2SDIzMnY3NTJoNTYwVjM5NEg1NzZhNDIgNDIgMCAwIDEtNDItNDJ6J10sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg1NC42IDI4OC42TDYzOS40IDczLjRjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzExLjNjMC04LjUtMy40LTE2LjctOS40LTIyLjd6TTYwMiAxMzcuOEw3OTAuMiAzMjZINjAyVjEzNy44ek03OTIgODg4SDIzMlYxMzZoMzAydjIxNmE0MiA0MiAwIDAgMCA0MiA0MmgyMTZ2NDk0eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5GaWx0ZXJUd29Ub25lID0gZ2V0SWNvbignZmlsdGVyJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTQyMC42IDc5OGgxODIuOVY2NDJINDIwLjZ6TTQxMSA1NjEuNGw5LjUgMTYuNmgxODNsOS41LTE2LjZMODExLjMgMjI2SDIxMi43eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004ODAuMSAxNTRIMTQzLjljLTI0LjUgMC0zOS44IDI2LjctMjcuNSA0OEwzNDkgNTk3LjRWODM4YzAgMTcuNyAxNC4yIDMyIDMxLjggMzJoMjYyLjRjMTcuNiAwIDMxLjgtMTQuMyAzMS44LTMyVjU5Ny40TDkwNy43IDIwMmMxMi4yLTIxLjMtMy4xLTQ4LTI3LjYtNDh6TTYwMy41IDc5OEg0MjAuNlY2NDJoMTgyLjl2MTU2em05LjUtMjM2LjZsLTkuNSAxNi42aC0xODNsLTkuNS0xNi42TDIxMi43IDIyNmg1OTguNkw2MTMgNTYxLjR6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkZpcmVUd29Ub25lID0gZ2V0SWNvbignZmlyZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ003MzcgNDM4LjZjLTkuNiAxNS41LTIxLjEgMzAuNy0zNC40IDQ1LjZhNzMuMSA3My4xIDAgMCAxLTUxIDI0LjQgNzMuMzYgNzMuMzYgMCAwIDEtNTMuNC0xOC44IDc0LjAxIDc0LjAxIDAgMCAxLTI0LjQtNTkuOGMzLTQ3LjQtMTIuNC0xMDMuMS00NS44LTE2NS43LTE2LjktMzEuNC0zNy4xLTU4LjItNjEuMi04MC40YTI0MCAyNDAgMCAwIDEtMTIuMSA0Ni41IDM1NC4yNiAzNTQuMjYgMCAwIDEtNTguMiAxMDEgMzQ5LjYgMzQ5LjYgMCAwIDEtNTguNiA1Ni44Yy0zNCAyNi4xLTYyIDYwLTgwLjggOTcuOWEyNzUuOTYgMjc1Ljk2IDAgMCAwLTI5LjEgMTI0YzAgNzQuOSAyOS41IDE0NS4zIDgzIDE5OC40IDUzLjcgNTMuMiAxMjUgODIuNCAyMDEgODIuNHMxNDcuMy0yOS4yIDIwMS04Mi40YzUzLjUtNTMgODMtMTIzLjUgODMtMTk4LjQgMC0zOS4yLTguMS03Ny4zLTI0LTExMy4xLTkuMy0yMS0yMS00MC41LTM1LTU4LjR6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTgzNC4xIDQ2OS4yQTM0Ny40OSAzNDcuNDkgMCAwIDAgNzUxLjIgMzU0bC0yOS4xLTI2LjdhOC4wOSA4LjA5IDAgMCAwLTEzIDMuM2wtMTMgMzcuM2MtOC4xIDIzLjQtMjMgNDcuMy00NC4xIDcwLjgtMS40IDEuNS0zIDEuOS00LjEgMi0xLjEuMS0yLjgtLjEtNC4zLTEuNS0xLjQtMS4yLTIuMS0zLTItNC44IDMuNy02MC4yLTE0LjMtMTI4LjEtNTMuNy0yMDJDNTU1LjMgMTcxIDUxMCAxMjMuMSA0NTMuNCA4OS43bC00MS4zLTI0LjNjLTUuNC0zLjItMTIuMyAxLTEyIDcuM2wyLjIgNDhjMS41IDMyLjgtMi4zIDYxLjgtMTEuMyA4NS45LTExIDI5LjUtMjYuOCA1Ni45LTQ3IDgxLjVhMjk1LjY0IDI5NS42NCAwIDAgMS00Ny41IDQ2LjEgMzUyLjYgMzUyLjYgMCAwIDAtMTAwLjMgMTIxLjVBMzQ3Ljc1IDM0Ny43NSAwIDAgMCAxNjAgNjEwYzAgNDcuMiA5LjMgOTIuOSAyNy43IDEzNmEzNDkuNCAzNDkuNCAwIDAgMCA3NS41IDExMC45YzMyLjQgMzIgNzAgNTcuMiAxMTEuOSA3NC43QzQxOC41IDk0OS44IDQ2NC41IDk1OSA1MTIgOTU5czkzLjUtOS4yIDEzNi45LTI3LjNBMzQ4LjYgMzQ4LjYgMCAwIDAgNzYwLjggODU3YzMyLjQtMzIgNTcuOC02OS40IDc1LjUtMTEwLjlhMzQ0LjIgMzQ0LjIgMCAwIDAgMjcuNy0xMzZjMC00OC44LTEwLTk2LjItMjkuOS0xNDAuOXpNNzEzIDgwOC41Yy01My43IDUzLjItMTI1IDgyLjQtMjAxIDgyLjRzLTE0Ny4zLTI5LjItMjAxLTgyLjRjLTUzLjUtNTMuMS04My0xMjMuNS04My0xOTguNCAwLTQzLjUgOS44LTg1LjIgMjkuMS0xMjQgMTguOC0zNy45IDQ2LjgtNzEuOCA4MC44LTk3LjlhMzQ5LjYgMzQ5LjYgMCAwIDAgNTguNi01Ni44YzI1LTMwLjUgNDQuNi02NC41IDU4LjItMTAxYTI0MCAyNDAgMCAwIDAgMTIuMS00Ni41YzI0LjEgMjIuMiA0NC4zIDQ5IDYxLjIgODAuNCAzMy40IDYyLjYgNDguOCAxMTguMyA0NS44IDE2NS43YTc0LjAxIDc0LjAxIDAgMCAwIDI0LjQgNTkuOCA3My4zNiA3My4zNiAwIDAgMCA1My40IDE4LjhjMTkuNy0xIDM3LjgtOS43IDUxLTI0LjQgMTMuMy0xNC45IDI0LjgtMzAuMSAzNC40LTQ1LjYgMTQgMTcuOSAyNS43IDM3LjQgMzUgNTguNCAxNS45IDM1LjggMjQgNzMuOSAyNCAxMTMuMSAwIDc0LjktMjkuNSAxNDUuNC04MyAxOTguNHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuRm9sZGVyQWRkVHdvVG9uZSA9IGdldEljb24oJ2ZvbGRlci1hZGQnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMzcyLjUgMjU2SDE4NHY1MTJoNjU2VjM3MC40SDQ5Mi4xTDM3Mi41IDI1NnpNNTQwIDQ0My4xVjUyOGg4NC41YzQuMSAwIDcuNSAzLjEgNy41IDd2NDJjMCAzLjgtMy40IDctNy41IDdINTQwdjg0LjljMCAzLjktMy4xIDcuMS03IDcuMWgtNDJjLTMuOCAwLTctMy4yLTctNy4xVjU4NGgtODQuNWMtNC4xIDAtNy41LTMuMi03LjUtN3YtNDJjMC0zLjkgMy40LTcgNy41LTdINDg0di04NC45YzAtMy45IDMuMi03LjEgNy03LjFoNDJjMy45IDAgNyAzLjIgNyA3LjF6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg4MCAyOTguNEg1MjFMNDAzLjcgMTg2LjJhOC4xNSA4LjE1IDAgMCAwLTUuNS0yLjJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY1OTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMzMC40YzAtMTcuNy0xNC4zLTMyLTMyLTMyek04NDAgNzY4SDE4NFYyNTZoMTg4LjVsMTE5LjYgMTE0LjRIODQwVjc2OHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNDg0IDQ0My4xVjUyOGgtODQuNWMtNC4xIDAtNy41IDMuMS03LjUgN3Y0MmMwIDMuOCAzLjQgNyA3LjUgN0g0ODR2ODQuOWMwIDMuOSAzLjIgNy4xIDcgNy4xaDQyYzMuOSAwIDctMy4yIDctNy4xVjU4NGg4NC41YzQuMSAwIDcuNS0zLjIgNy41LTd2LTQyYzAtMy45LTMuNC03LTcuNS03SDU0MHYtODQuOWMwLTMuOS0zLjEtNy4xLTctNy4xaC00MmMtMy44IDAtNyAzLjItNyA3LjF6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkZsYWdUd29Ub25lID0gZ2V0SWNvbignZmxhZycsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW3NlY29uZGFyeUNvbG9yLCAnTTE4NCAyMzJoMzY4djMzNkgxODR6J10sIFtzZWNvbmRhcnlDb2xvciwgJ002MjQgNjMyYzAgNC40LTMuNiA4LTggOEg1MDR2NzNoMzM2VjM3N0g2MjR2MjU1eiddLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004ODAgMzA1SDYyNFYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJIMTg0di00MGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2Nzg0YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LThWNjQwaDI0OHYxMTNjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMzN2MwLTE3LjctMTQuMy0zMi0zMi0zMnpNMTg0IDU2OFYyMzJoMzY4djMzNkgxODR6bTY1NiAxNDVINTA0di03M2gxMTJjNC40IDAgOC0zLjYgOC04VjM3N2gyMTZ2MzM2eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5Gb2xkZXJUd29Ub25lID0gZ2V0SWNvbignZm9sZGVyJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004ODAgMjk4LjRINTIxTDQwMy43IDE4Ni4yYTguMTUgOC4xNSAwIDAgMC01LjUtMi4ySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYzMzAuNGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNODQwIDc2OEgxODRWMjU2aDE4OC41bDExOS42IDExNC40SDg0MFY3Njh6J1xuICAgIF0sIFtzZWNvbmRhcnlDb2xvciwgJ00zNzIuNSAyNTZIMTg0djUxMmg2NTZWMzcwLjRINDkyLjF6J10pO1xufSk7XG5leHBvcnRzLkZvbGRlck9wZW5Ud29Ub25lID0gZ2V0SWNvbignZm9sZGVyLW9wZW4nLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtzZWNvbmRhcnlDb2xvciwgJ00xNTkgNzY4aDYxMi4zbDEwMy40LTI1NkgyNjIuM3onXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNOTI4IDQ0NEg4MjBWMzMwLjRjMC0xNy43LTE0LjMtMzItMzItMzJINDczTDM1NS43IDE4Ni4yYTguMTUgOC4xNSAwIDAgMC01LjUtMi4ySDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY1OTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjk4YzEzIDAgMjQuOC03LjkgMjkuNy0yMGwxMzQtMzMyYzEuNS0zLjggMi4zLTcuOSAyLjMtMTIgMC0xNy43LTE0LjMtMzItMzItMzJ6TTEzNiAyNTZoMTg4LjVsMTE5LjYgMTE0LjRINzQ4VjQ0NEgyMzhjLTEzIDAtMjQuOCA3LjktMjkuNyAyMEwxMzYgNjQzLjJWMjU2em02MzUuMyA1MTJIMTU5bDEwMy4zLTI1Nmg2MTIuNEw3NzEuMyA3Njh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkZyb3duVHdvVG9uZSA9IGdldEljb24oJ2Zyb3duJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDE0MGMtMjA1LjQgMC0zNzIgMTY2LjYtMzcyIDM3MnMxNjYuNiAzNzIgMzcyIDM3MiAzNzItMTY2LjYgMzcyLTM3Mi0xNjYuNi0zNzItMzcyLTM3MnpNMjg4IDQyMWE0OC4wMSA0OC4wMSAwIDAgMSA5NiAwIDQ4LjAxIDQ4LjAxIDAgMCAxLTk2IDB6bTM3NiAyNzJoLTQ4LjFjLTQuMiAwLTcuOC0zLjItOC4xLTcuNEM2MDQgNjM2LjEgNTYyLjUgNTk3IDUxMiA1OTdzLTkyLjEgMzkuMS05NS44IDg4LjZjLS4zIDQuMi0zLjkgNy40LTguMSA3LjRIMzYwYTggOCAwIDAgMS04LTguNGM0LjQtODQuMyA3NC41LTE1MS42IDE2MC0xNTEuNnMxNTUuNiA2Ny4zIDE2MCAxNTEuNmE4IDggMCAwIDEtOCA4LjR6bTI0LTIyNGE0OC4wMSA0OC4wMSAwIDAgMSAwLTk2IDQ4LjAxIDQ4LjAxIDAgMCAxIDAgOTZ6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTI4OCA0MjFhNDggNDggMCAxIDAgOTYgMCA0OCA0OCAwIDEgMC05NiAwem0yMjQgMTEyYy04NS41IDAtMTU1LjYgNjcuMy0xNjAgMTUxLjZhOCA4IDAgMCAwIDggOC40aDQ4LjFjNC4yIDAgNy44LTMuMiA4LjEtNy40IDMuNy00OS41IDQ1LjMtODguNiA5NS44LTg4LjZzOTIgMzkuMSA5NS44IDg4LjZjLjMgNC4yIDMuOSA3LjQgOC4xIDcuNEg2NjRhOCA4IDAgMCAwIDgtOC40QzY2Ny42IDYwMC4zIDU5Ny41IDUzMyA1MTIgNTMzem0xMjgtMTEyYTQ4IDQ4IDAgMSAwIDk2IDAgNDggNDggMCAxIDAtOTYgMHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuRnVuZFR3b1RvbmUgPSBnZXRJY29uKCdmdW5kJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ005MjggMTYwSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NDBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDYzMkgxMzZWMjMyaDc1MnY1NjB6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMTM2IDc5Mmg3NTJWMjMySDEzNnY1NjB6bTU2LjQtMTMwLjVsMjE0LjktMjE1YzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBMNTMzIDU2MWwyNTQuNS0yNTQuNmMzLjEtMy4xIDguMi0zLjEgMTEuMyAwbDM2LjggMzYuOGMzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0yOTcgMjk3LjJhOC4wMyA4LjAzIDAgMCAxLTExLjMgMEw0MTIuOSA1MzcuMiAyNDAuNCA3MDkuN2E4LjAzIDguMDMgMCAwIDEtMTEuMyAwbC0zNi43LTM2LjlhOC4wMyA4LjAzIDAgMCAxIDAtMTEuM3onXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNMjI5LjEgNzA5LjdjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGwxNzIuNS0xNzIuNSAxMTQuNCAxMTQuNWMzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDI5Ny0yOTcuMmMzLjEtMy4xIDMuMS04LjIgMC0xMS4zbC0zNi44LTM2LjhhOC4wMyA4LjAzIDAgMCAwLTExLjMgMEw1MzMgNTYxIDQxOC42IDQ0Ni41YTguMDMgOC4wMyAwIDAgMC0xMS4zIDBsLTIxNC45IDIxNWE4LjAzIDguMDMgMCAwIDAgMCAxMS4zbDM2LjcgMzYuOXonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuRnVubmVsUGxvdFR3b1RvbmUgPSBnZXRJY29uKCdmdW5uZWwtcGxvdCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ000MjAuNiA3OThoMTgyLjlWNjUwSDQyMC42ek0yOTcuNyAzNzRoNDI4LjZsODUtMTQ4SDIxMi43em0xMTMuMiAxOTcuNGw4LjQgMTQuNmgxODUuM2w4LjQtMTQuNkw2ODkuNiA0MzhIMzM0LjR6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg4MC4xIDE1NEgxNDMuOWMtMjQuNSAwLTM5LjggMjYuNy0yNy41IDQ4TDM0OSA2MDcuNFY4MzhjMCAxNy43IDE0LjIgMzIgMzEuOCAzMmgyNjIuNGMxNy42IDAgMzEuOC0xNC4zIDMxLjgtMzJWNjA3LjRMOTA3LjcgMjAyYzEyLjItMjEuMy0zLjEtNDgtMjcuNi00OHpNNjAzLjUgNzk4SDQyMC42VjY1MGgxODIuOXYxNDh6bTkuNS0yMjYuNmwtOC40IDE0LjZINDE5LjNsLTguNC0xNC42TDMzNC40IDQzOGgzNTUuMkw2MTMgNTcxLjR6TTcyNi4zIDM3NEgyOTcuN2wtODUtMTQ4aDU5OC42bC04NSAxNDh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkdpZnRUd29Ub25lID0gZ2V0SWNvbignZ2lmdCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001NDYgMzc4aDI5OHYxMDRINTQ2ek0yMjggNTUwaDI1MHYzMDhIMjI4em0tNDgtMTcyaDI5OHYxMDRIMTgwem0zNjYgMTcyaDI1MHYzMDhINTQ2eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004ODAgMzEwSDczMi40YzEzLjYtMjEuNCAyMS42LTQ2LjggMjEuNi03NCAwLTc2LjEtNjEuOS0xMzgtMTM4LTEzOC00MS40IDAtNzguNyAxOC40LTEwNCA0Ny40LTI1LjMtMjktNjIuNi00Ny40LTEwNC00Ny40LTc2LjEgMC0xMzggNjEuOS0xMzggMTM4IDAgMjcuMiA3LjkgNTIuNiAyMS42IDc0SDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MjAwYzAgNC40IDMuNiA4IDggOGg0MHYzNDRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjU1MGg0MGM0LjQgMCA4LTMuNiA4LThWMzQyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek00NzggODU4SDIyOFY1NTBoMjUwdjMwOHptMC0zNzZIMTgwVjM3OGgyOTh2MTA0em0wLTE3NmgtNzBjLTM4LjYgMC03MC0zMS40LTcwLTcwczMxLjQtNzAgNzAtNzAgNzAgMzEuNCA3MCA3MHY3MHptNjgtNzBjMC0zOC42IDMxLjQtNzAgNzAtNzBzNzAgMzEuNCA3MCA3MC0zMS40IDcwLTcwIDcwaC03MHYtNzB6bTI1MCA2MjJINTQ2VjU1MGgyNTB2MzA4em00OC0zNzZINTQ2VjM3OGgyOTh2MTA0eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5IZGRUd29Ub25lID0gZ2V0SWNvbignaGRkJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTIzMiA4ODhoNTYwVjY4MEgyMzJ2MjA4em00NDgtMTQwYzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwLTQwLTE3LjktNDAtNDAgMTcuOS00MCA0MC00MHpNMjMyIDYxNmg1NjBWNDA4SDIzMnYyMDh6bTcyLTEyOGMwLTQuNCAzLjYtOCA4LThoMTg0YzQuNCAwIDggMy42IDggOHY0OGMwIDQuNC0zLjYgOC04IDhIMzEyYy00LjQgMC04LTMuNi04LTh2LTQ4em0tNzItMTQ0aDU2MFYxMzZIMjMydjIwOHptNzItMTI4YzAtNC40IDMuNi04IDgtOGgxODRjNC40IDAgOCAzLjYgOCA4djQ4YzAgNC40LTMuNiA4LTggOEgzMTJjLTQuNCAwLTgtMy42LTgtOHYtNDh6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTgzMiA2NEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCA4MjRIMjMyVjY4MGg1NjB2MjA4em0wLTI3MkgyMzJWNDA4aDU2MHYyMDh6bTAtMjcySDIzMlYxMzZoNTYwdjIwOHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNMzEyIDU0NGgxODRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LThIMzEyYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4em0wLTI3MmgxODRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LThIMzEyYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4em0zMjggNTE2YTQwIDQwIDAgMSAwIDgwIDAgNDAgNDAgMCAxIDAtODAgMHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuSGVhcnRUd29Ub25lID0gZ2V0SWNvbignaGVhcnQnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTkyMyAyODMuNmEyNjAuMDQgMjYwLjA0IDAgMCAwLTU2LjktODIuOCAyNjQuNCAyNjQuNCAwIDAgMC04NC01NS41QTI2NS4zNCAyNjUuMzQgMCAwIDAgNjc5LjcgMTI1Yy00OS4zIDAtOTcuNCAxMy41LTEzOS4yIDM5LTEwIDYuMS0xOS41IDEyLjgtMjguNSAyMC4xLTktNy4zLTE4LjUtMTQtMjguNS0yMC4xLTQxLjgtMjUuNS04OS45LTM5LTEzOS4yLTM5LTM1LjUgMC02OS45IDYuOC0xMDIuNCAyMC4zLTMxLjQgMTMtNTkuNyAzMS43LTg0IDU1LjVhMjU4LjQ0IDI1OC40NCAwIDAgMC01Ni45IDgyLjhjLTEzLjkgMzIuMy0yMSA2Ni42LTIxIDEwMS45IDAgMzMuMyA2LjggNjggMjAuMyAxMDMuMyAxMS4zIDI5LjUgMjcuNSA2MC4xIDQ4LjIgOTEgMzIuOCA0OC45IDc3LjkgOTkuOSAxMzMuOSAxNTEuNiA5Mi44IDg1LjcgMTg0LjcgMTQ0LjkgMTg4LjYgMTQ3LjNsMjMuNyAxNS4yYzEwLjUgNi43IDI0IDYuNyAzNC41IDBsMjMuNy0xNS4yYzMuOS0yLjUgOTUuNy02MS42IDE4OC42LTE0Ny4zIDU2LTUxLjcgMTAxLjEtMTAyLjcgMTMzLjktMTUxLjYgMjAuNy0zMC45IDM3LTYxLjUgNDguMi05MSAxMy41LTM1LjMgMjAuMy03MCAyMC4zLTEwMy4zLjEtMzUuMy03LTY5LjYtMjAuOS0xMDEuOXpNNTEyIDgxNC44UzE1NiA1ODYuNyAxNTYgMzg1LjVDMTU2IDI4My42IDI0MC4zIDIwMSAzNDQuMyAyMDFjNzMuMSAwIDEzNi41IDQwLjggMTY3LjcgMTAwLjRDNTQzLjIgMjQxLjggNjA2LjYgMjAxIDY3OS43IDIwMWMxMDQgMCAxODguMyA4Mi42IDE4OC4zIDE4NC41IDAgMjAxLjItMzU2IDQyOS4zLTM1NiA0MjkuM3onXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ002NzkuNyAyMDFjLTczLjEgMC0xMzYuNSA0MC44LTE2Ny43IDEwMC40QzQ4MC44IDI0MS44IDQxNy40IDIwMSAzNDQuMyAyMDFjLTEwNCAwLTE4OC4zIDgyLjYtMTg4LjMgMTg0LjUgMCAyMDEuMiAzNTYgNDI5LjMgMzU2IDQyOS4zczM1Ni0yMjguMSAzNTYtNDI5LjNDODY4IDI4My42IDc4My43IDIwMSA2NzkuNyAyMDF6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkhpZ2hsaWdodFR3b1RvbmUgPSBnZXRJY29uKCdoaWdobGlnaHQnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMjI5LjYgNzk2LjNoMTYwLjJsNTQuMy01NC4xLTgwLjEtNzguOXptMjIwLjctMzk3LjFsMjYyLjggMjU4LjkgMTQ3LjMtMTQ1LTI2Mi44LTI1OXptLTc3LjEgMTY2LjFsMTcxLjQgMTY4LjkgNjguNi02Ny42LTE3MS40LTE2OC45eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ005NTcuNiA1MDcuNUw2MDMuMiAxNTguM2E3LjkgNy45IDAgMCAwLTExLjIgMEwzNTMuMyAzOTMuNWE4LjAzIDguMDMgMCAwIDAtLjEgMTEuM2wuMS4xIDQwIDM5LjQtMTE3LjIgMTE1LjNhOC4wMyA4LjAzIDAgMCAwLS4xIDExLjNsLjEuMSAzOS41IDM4LjktMTg5LjEgMTg3SDcyLjFjLTQuNCAwLTguMSAzLjYtOC4xIDh2NTUuMmMwIDQuNCAzLjYgOCA4IDhoMzQ0LjljMi4xIDAgNC4xLS44IDUuNi0yLjNsNzYuMS03NS42TDUzOSA4MzBhNy45IDcuOSAwIDAgMCAxMS4yIDBsMTE3LjEtMTE1LjYgNDAuMSAzOS41YTcuOSA3LjkgMCAwIDAgMTEuMiAwbDIzOC43LTIzNS4yYzMuNC0zIDMuNC04IC4zLTExLjJ6TTM4OS44IDc5Ni4zSDIyOS42bDEzNC40LTEzMyA4MC4xIDc4LjktNTQuMyA1NC4xem0xNTQuOC02Mi4xTDM3My4yIDU2NS4zbDY4LjYtNjcuNiAxNzEuNCAxNjguOS02OC42IDY3LjZ6bTE2OC41LTc2LjFMNDUwLjMgMzk5LjJsMTQ3LjMtMTQ1LjEgMjYyLjggMjU5LTE0Ny4zIDE0NXonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuSG9tZVR3b1RvbmUgPSBnZXRJY29uKCdob21lJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUxMi4xIDE3Mi42bC0zNzAgMzY5LjdoOTZWODY4SDM5MlY2NDBjMC0yMi4xIDE3LjktNDAgNDAtNDBoMTYwYzIyLjEgMCA0MCAxNy45IDQwIDQwdjIyOGgxNTMuOVY1NDIuM0g4ODJMNTM1LjIgMTk1LjdsLTIzLjEtMjMuMXptNDM0LjUgNDIyLjljLTYgNi0xMy4xIDEwLjgtMjAuOCAxMy45IDcuNy0zLjIgMTQuOC03LjkgMjAuOC0xMy45em0tODg3LTM0LjdjNSAzMC4zIDMxLjQgNTMuNSA2My4xIDUzLjVoLjljLTMxLjkgMC01OC45LTIzLTY0LTUzLjV6bS0uOS0xMC41di0xLjkgMS45em0uMS0yLjZjLjEtMy4xLjUtNi4xIDEtOS4xLS42IDIuOS0uOSA2LTEgOS4xeidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ005NTEgNTEwYzAtLjEtLjEtLjEtLjEtLjJsLTEuOC0yLjFjLS4xLS4xLS4yLS4zLS40LS40LS43LS44LTEuNS0xLjYtMi4yLTIuNEw1NjAuMSAxMTguOGwtMjUuOS0yNS45YTMxLjUgMzEuNSAwIDAgMC00NC40IDBMNzcuNSA1MDVhNjMuNiA2My42IDAgMCAwLTE2IDI2LjZsLS42IDIuMS0uMyAxLjEtLjMgMS4yYy0uMi43LS4zIDEuNC0uNCAyLjEgMCAuMSAwIC4zLS4xLjQtLjYgMy0uOSA2LTEgOS4xdjMuM2MwIC41IDAgMSAuMSAxLjUgMCAuNSAwIC45LjEgMS40IDAgLjUuMSAxIC4xIDEuNSAwIC42LjEgMS4yLjIgMS44IDAgLjMuMS42LjEuOWwuMyAyLjV2LjFjNS4xIDMwLjUgMzIuMiA1My41IDY0IDUzLjVoNDIuNVY5NDBoNjkxLjdWNjE0LjNoNDMuNGM4LjYgMCAxNi45LTEuNyAyNC41LTQuOXMxNC43LTcuOSAyMC44LTEzLjlhNjMuNiA2My42IDAgMCAwIDE4LjctNDUuM2MwLTE0LjctNS0yOC44LTE0LjMtNDAuMnpNNTY4IDg2OEg0NTZWNjY0aDExMnYyMDR6bTIxNy45LTMyNS43Vjg2OEg2MzJWNjQwYzAtMjIuMS0xNy45LTQwLTQwLTQwSDQzMmMtMjIuMSAwLTQwIDE3LjktNDAgNDB2MjI4SDIzOC4xVjU0Mi4zaC05NmwzNzAtMzY5LjcgMjMuMSAyMy4xTDg4MiA1NDIuM2gtOTYuMXonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuSG91cmdsYXNzVHdvVG9uZSA9IGdldEljb24oJ2hvdXJnbGFzcycsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001MTIgNTQ4Yy00Mi4yIDAtODEuOSAxNi40LTExMS43IDQ2LjNBMTU2LjYzIDE1Ni42MyAwIDAgMCAzNTQgNzA2djEzNGgzMTZWNzA2YzAtNDIuMi0xNi40LTgxLjktNDYuMy0xMTEuN0ExNTYuNjMgMTU2LjYzIDAgMCAwIDUxMiA1NDh6TTM1NCAzMThjMCA0Mi4yIDE2LjQgODEuOSA0Ni4zIDExMS43QzQzMC4xIDQ1OS42IDQ2OS44IDQ3NiA1MTIgNDc2czgxLjktMTYuNCAxMTEuNy00Ni4zQzY1My42IDM5OS45IDY3MCAzNjAuMiA2NzAgMzE4VjE4NEgzNTR2MTM0eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ003NDIgMzE4VjE4NGg4NmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOEgxOTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoODZ2MTM0YzAgODEuNSA0Mi40IDE1My4yIDEwNi40IDE5NC02NCA0MC44LTEwNi40IDExMi41LTEwNi40IDE5NHYxMzRoLTg2Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDYzMmM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtODZWNzA2YzAtODEuNS00Mi40LTE1My4yLTEwNi40LTE5NCA2NC00MC44IDEwNi40LTExMi41IDEwNi40LTE5NHptLTcyIDM4OHYxMzRIMzU0VjcwNmMwLTQyLjIgMTYuNC04MS45IDQ2LjMtMTExLjdDNDMwLjEgNTY0LjQgNDY5LjggNTQ4IDUxMiA1NDhzODEuOSAxNi40IDExMS43IDQ2LjNDNjUzLjYgNjI0LjEgNjcwIDY2My44IDY3MCA3MDZ6bTAtMzg4YzAgNDIuMi0xNi40IDgxLjktNDYuMyAxMTEuN0M1OTMuOSA0NTkuNiA1NTQuMiA0NzYgNTEyIDQ3NnMtODEuOS0xNi40LTExMS43LTQ2LjNBMTU2LjYzIDE1Ni42MyAwIDAgMSAzNTQgMzE4VjE4NGgzMTZ2MTM0eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5IdG1sNVR3b1RvbmUgPSBnZXRJY29uKCdodG1sNScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNMTQ1IDk2bDY2IDc0Ni42TDUxMS44IDkyOGwyOTkuNi04NS40TDg3OC43IDk2SDE0NXptNjEwLjkgNzAwLjZsLTI0NC4xIDY5LjYtMjQ1LjItNjkuNi01Ni43LTY0MS4yaDYwMy44bC01Ny44IDY0MS4yeidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTIwOS45IDE1NS40bDU2LjcgNjQxLjIgMjQ1LjIgNjkuNiAyNDQuMS02OS42IDU3LjgtNjQxLjJIMjA5Ljl6bTUzMC40IDExNy45bC00LjggNDcuMi0xLjcgMTkuNUgzODEuN2w4LjIgOTQuMkg1MTF2LS4yaDIxNC43bC0zLjIgMjQuMy0yMS4yIDI0Mi4yLTEuNyAxNi4zLTE4Ny43IDUxLjd2LjRoLTEuN2wtMTg4LjYtNTItMTEuMy0xNDQuN2g5MWw2LjUgNzMuMiAxMDIuNCAyNy43aC44di0uMmwxMDIuNC0yNy43IDExLjQtMTE4LjVINTExLjl2LjFIMzA1LjRsLTIyLjctMjUzLjVMMjgxIDI0OWg0NjFsLTEuNyAyNC4zeidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ00yODEgMjQ5bDEuNyAyNC4zIDIyLjcgMjUzLjVoMjA2LjV2LS4xaDExMi45bC0xMS40IDExOC41TDUxMSA2NzIuOXYuMmgtLjhsLTEwMi40LTI3LjctNi41LTczLjJoLTkxbDExLjMgMTQ0LjcgMTg4LjYgNTJoMS43di0uNGwxODcuNy01MS43IDEuNy0xNi4zIDIxLjItMjQyLjIgMy4yLTI0LjNINTExdi4ySDM4OS45bC04LjItOTQuMmgzNTIuMWwxLjctMTkuNSA0LjgtNDcuMkw3NDIgMjQ5SDUxMXonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuSWRjYXJkVHdvVG9uZSA9IGdldEljb24oJ2lkY2FyZCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNOTI4IDE2MEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjQwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCA2MzJIMTM2VjIzMmg3NTJ2NTYweidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTEzNiA3OTJoNzUyVjIzMkgxMzZ2NTYwem00NzItMzcyYzAtNC40IDEtOCAyLjMtOGgxMjMuNGMxLjMgMCAyLjMgMy42IDIuMyA4djQ4YzAgNC40LTEgOC0yLjMgOEg2MTAuM2MtMS4zIDAtMi4zLTMuNi0yLjMtOHYtNDh6bTAgMTQ0YzAtNC40IDMuMi04IDcuMS04aDE4NS43YzMuOSAwIDcuMSAzLjYgNy4xIDh2NDhjMCA0LjQtMy4yIDgtNy4xIDhINjE1LjFjLTMuOSAwLTcuMS0zLjYtNy4xLTh2LTQ4ek0yMTYuMiA2NjQuNmMyLjgtNTMuMyAzMS45LTk5LjYgNzQuNi0xMjYuMS0xOC4xLTIwLTI5LjEtNDYuNC0yOS4xLTc1LjUgMC02MS45IDQ5LjktMTEyIDExMS40LTExMnMxMTEuNCA1MC4xIDExMS40IDExMmMwIDI5LjEtMTEgNTUuNi0yOS4xIDc1LjUgNDIuNiAyNi40IDcxLjggNzIuOCA3NC42IDEyNi4xYTggOCAwIDAgMS04IDguNGgtNDMuOWMtNC4yIDAtNy42LTMuMy03LjktNy41LTMuOC01MC41LTQ2LTkwLjUtOTcuMi05MC41cy05My40IDQwLTk3LjIgOTAuNWMtLjMgNC4yLTMuNyA3LjUtNy45IDcuNUgyMjRjLTQuNiAwLTguMi0zLjgtNy44LTguNHonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00zMjEuMyA0NjNhNTEuNyA1MiAwIDEgMCAxMDMuNCAwIDUxLjcgNTIgMCAxIDAtMTAzLjQgMHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNjEwLjMgNDc2aDEyMy40YzEuMyAwIDIuMy0zLjYgMi4zLTh2LTQ4YzAtNC40LTEtOC0yLjMtOEg2MTAuM2MtMS4zIDAtMi4zIDMuNi0yLjMgOHY0OGMwIDQuNCAxIDggMi4zIDh6bTQuOCAxNDRoMTg1LjdjMy45IDAgNy4xLTMuNiA3LjEtOHYtNDhjMC00LjQtMy4yLTgtNy4xLThINjE1LjFjLTMuOSAwLTcuMSAzLjYtNy4xIDh2NDhjMCA0LjQgMy4yIDggNy4xIDh6TTIyNCA2NzNoNDMuOWM0LjIgMCA3LjYtMy4zIDcuOS03LjUgMy44LTUwLjUgNDYtOTAuNSA5Ny4yLTkwLjVzOTMuNCA0MCA5Ny4yIDkwLjVjLjMgNC4yIDMuNyA3LjUgNy45IDcuNUg1MjJhOCA4IDAgMCAwIDgtOC40Yy0yLjgtNTMuMy0zMi05OS43LTc0LjYtMTI2LjFhMTExLjggMTExLjggMCAwIDAgMjkuMS03NS41YzAtNjEuOS00OS45LTExMi0xMTEuNC0xMTJzLTExMS40IDUwLjEtMTExLjQgMTEyYzAgMjkuMSAxMSA1NS41IDI5LjEgNzUuNWExNTguMDkgMTU4LjA5IDAgMCAwLTc0LjYgMTI2LjFjLS40IDQuNiAzLjIgOC40IDcuOCA4LjR6bTE0OS0yNjJjMjguNSAwIDUxLjcgMjMuMyA1MS43IDUycy0yMy4yIDUyLTUxLjcgNTItNTEuNy0yMy4zLTUxLjctNTIgMjMuMi01MiA1MS43LTUyeidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5JbmZvQ2lyY2xlVHdvVG9uZSA9IGdldEljb24oJ2luZm8tY2lyY2xlJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDE0MGMtMjA1LjQgMC0zNzIgMTY2LjYtMzcyIDM3MnMxNjYuNiAzNzIgMzcyIDM3MiAzNzItMTY2LjYgMzcyLTM3Mi0xNjYuNi0zNzItMzcyLTM3MnptMzIgNTg4YzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOFY0NTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHYyNzJ6bS0zMi0zNDRhNDguMDEgNDguMDEgMCAwIDEgMC05NiA0OC4wMSA0OC4wMSAwIDAgMSAwIDk2eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ000NjQgMzM2YTQ4IDQ4IDAgMSAwIDk2IDAgNDggNDggMCAxIDAtOTYgMHptNzIgMTEyaC00OGMtNC40IDAtOCAzLjYtOCA4djI3MmMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjQ1NmMwLTQuNC0zLjYtOC04LTh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkluc3VyYW5jZVR3b1RvbmUgPSBnZXRJY29uKCdpbnN1cmFuY2UnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg2Ni45IDE2OS45TDUyNy4xIDU0LjFDNTIzIDUyLjcgNTE3LjUgNTIgNTEyIDUycy0xMSAuNy0xNS4xIDIuMUwxNTcuMSAxNjkuOWMtOC4zIDIuOC0xNS4xIDEyLjQtMTUuMSAyMS4ydjQ4Mi40YzAgOC44IDUuNyAyMC40IDEyLjYgMjUuOUw0OTkuMyA5NjhjMy41IDIuNyA4IDQuMSAxMi42IDQuMXM5LjItMS40IDEyLjYtNC4xbDM0NC43LTI2OC42YzYuOS01LjQgMTIuNi0xNyAxMi42LTI1LjlWMTkxLjFjLjItOC44LTYuNi0xOC4zLTE0LjktMjEuMnpNODEwIDY1NC4zTDUxMiA4ODYuNSAyMTQgNjU0LjNWMjI2LjdsMjk4LTEwMS42IDI5OCAxMDEuNnY0MjcuNnonXG4gICAgXSwgW3NlY29uZGFyeUNvbG9yLCAnTTUyMS45IDM1OC44aDk3Ljl2NDEuNmgtOTcuOXonXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00yMTQgMjI2Ljd2NDI3LjZsMjk4IDIzMi4yIDI5OC0yMzIuMlYyMjYuN0w1MTIgMTI1LjEgMjE0IDIyNi43ek00MTMuMyA2NTZoLS4yYzAgNC40LTMuNiA4LTggOGgtMzcuM2MtNC40IDAtOC0zLjYtOC04VjQ3MS40Yy03LjcgOS4yLTE1LjQgMTcuOS0yMy4xIDI2YTYuMDQgNi4wNCAwIDAgMS0xMC4yLTIuNGwtMTMuMi00My41Yy0uNi0yLS4yLTQuMSAxLjItNS42IDM3LTQzLjQgNjQuNy05NS4xIDgyLjItMTUzLjYgMS4xLTMuNSA1LTUuMyA4LjQtMy43bDM4LjYgMTguM2MyLjcgMS4zIDQuMSA0LjQgMy4yIDcuMmE0MjkuMiA0MjkuMiAwIDAgMS0zMy42IDc5VjY1NnptMjU3LjktMzQwdjEyNy4yYzAgNC40LTMuNiA4LTggOGgtNjYuN3YxOC42aDk4LjhjNC40IDAgOCAzLjYgOCA4djM1LjZjMCA0LjQtMy42IDgtOCA4aC01OWMxOC4xIDI5LjEgNDEuOCA1NC4zIDcyLjMgNzYuOSAyLjYgMi4xIDMuMiA1LjkgMS4yIDguNWwtMjYuMyAzNS4zYTUuOTIgNS45MiAwIDAgMS04LjkuN2MtMzAuNi0yOS4zLTU2LjgtNjUuMi03OC4xLTEwNi45VjY1NmMwIDQuNC0zLjYgOC04IDhoLTM2LjJjLTQuNCAwLTgtMy42LTgtOFY1MzZjLTIyIDQ0LjctNDkgODAuOC04MC42IDEwNy42YTYuMzggNi4zOCAwIDAgMS00LjggMS40Yy0xLjctLjMtMy4yLTEuMy00LjEtMi44TDQzMiA2MDUuN2E2IDYgMCAwIDEgMS42LTguMWMyOC42LTIwLjMgNTEuOS00NS4yIDcxLTc2aC01NS4xYy00LjQgMC04LTMuNi04LThWNDc4YzAtNC40IDMuNi04IDgtOGg5NC45di0xOC42aC02NS45Yy00LjQgMC04LTMuNi04LThWMzE2YzAtNC40IDMuNi04IDgtOGgxODQuN2M0LjQgMCA4IDMuNiA4IDh6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTQ0My43IDMwNi45bC0zOC42LTE4LjNjLTMuNC0xLjYtNy4zLjItOC40IDMuNy0xNy41IDU4LjUtNDUuMiAxMTAuMi04Mi4yIDE1My42YTUuNyA1LjcgMCAwIDAtMS4yIDUuNmwxMy4yIDQzLjVjMS40IDQuNSA3IDUuOCAxMC4yIDIuNCA3LjctOC4xIDE1LjQtMTYuOCAyMy4xLTI2VjY1NmMwIDQuNCAzLjYgOCA4IDhoMzcuM2M0LjQgMCA4LTMuNiA4LThoLjJWMzkzLjFhNDI5LjIgNDI5LjIgMCAwIDAgMzMuNi03OWMuOS0yLjgtLjUtNS45LTMuMi03LjJ6bTI2LjggOS4xdjEyNy40YzAgNC40IDMuNiA4IDggOGg2NS45VjQ3MGgtOTQuOWMtNC40IDAtOCAzLjYtOCA4djM1LjZjMCA0LjQgMy42IDggOCA4aDU1LjFjLTE5LjEgMzAuOC00Mi40IDU1LjctNzEgNzZhNiA2IDAgMCAwLTEuNiA4LjFsMjIuOCAzNi41Yy45IDEuNSAyLjQgMi41IDQuMSAyLjggMS43LjMgMy41LS4yIDQuOC0xLjQgMzEuNi0yNi44IDU4LjYtNjIuOSA4MC42LTEwNy42djEyMGMwIDQuNCAzLjYgOCA4IDhoMzYuMmM0LjQgMCA4LTMuNiA4LThWNTM1LjljMjEuMyA0MS43IDQ3LjUgNzcuNiA3OC4xIDEwNi45IDIuNiAyLjUgNi43IDIuMiA4LjktLjdsMjYuMy0zNS4zYzItMi42IDEuNC02LjQtMS4yLTguNS0zMC41LTIyLjYtNTQuMi00Ny44LTcyLjMtNzYuOWg1OWM0LjQgMCA4LTMuNiA4LTh2LTM1LjZjMC00LjQtMy42LTgtOC04aC05OC44di0xOC42aDY2LjdjNC40IDAgOC0zLjYgOC04VjMxNmMwLTQuNC0zLjYtOC04LThINDc4LjVjLTQuNCAwLTggMy42LTggOHptNTEuNCA0Mi44aDk3Ljl2NDEuNmgtOTcuOXYtNDEuNnonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuSW50ZXJhY3Rpb25Ud29Ub25lID0gZ2V0SWNvbignaW50ZXJhY3Rpb24nLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDcyOEgxODRWMTg0aDY1NnY2NTZ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMTg0IDg0MGg2NTZWMTg0SDE4NHY2NTZ6bTExNC00MDEuOWMwLTU1LjMgNDQuNi0xMDAuMSA5OS43LTEwMC4xaDIwNS44di01My40YzAtNS42IDYuNS04LjggMTAuOS01LjNMNzIzLjUgMzY1YzMuNSAyLjcgMy41IDggMCAxMC43bC0xMDkuMSA4NS43Yy00LjQgMy41LTEwLjkuNC0xMC45LTUuM3YtNTMuNEgzOTcuOGMtMTkuNiAwLTM1LjUgMTUuOS0zNS41IDM1LjZ2NzguOWMwIDMuOC0zLjEgNi44LTYuOCA2LjhoLTUwLjdjLTMuOCAwLTYuOC0zLTYuOC03di03OC45em0yLjYgMjEwLjNsMTA5LjEtODUuN2M0LjQtMy41IDEwLjktLjQgMTAuOSA1LjN2NTMuNGgyMDUuNmMxOS42IDAgMzUuNS0xNS45IDM1LjUtMzUuNnYtNzguOWMwLTMuOCAzLjEtNi44IDYuOC02LjhoNTAuN2MzLjggMCA2LjggMy4xIDYuOCA2Ljh2NzguOWMwIDU1LjMtNDQuNiAxMDAuMS05OS43IDEwMC4xSDQyMC42djUzLjRjMCA1LjYtNi41IDguOC0xMC45IDUuM2wtMTA5LjEtODUuN2MtMy41LTIuNy0zLjUtOCAwLTEwLjV6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTMwNC44IDUyNGg1MC43YzMuNyAwIDYuOC0zIDYuOC02Ljh2LTc4LjljMC0xOS43IDE1LjktMzUuNiAzNS41LTM1LjZoMjA1Ljd2NTMuNGMwIDUuNyA2LjUgOC44IDEwLjkgNS4zbDEwOS4xLTg1LjdjMy41LTIuNyAzLjUtOCAwLTEwLjdsLTEwOS4xLTg1LjdjLTQuNC0zLjUtMTAuOS0uMy0xMC45IDUuM1YzMzhIMzk3LjdjLTU1LjEgMC05OS43IDQ0LjgtOTkuNyAxMDAuMVY1MTdjMCA0IDMgNyA2LjggN3ptLTQuMiAxMzQuOWwxMDkuMSA4NS43YzQuNCAzLjUgMTAuOS4zIDEwLjktNS4zdi01My40aDIwNS43YzU1LjEgMCA5OS43LTQ0LjggOTkuNy0xMDAuMXYtNzguOWMwLTMuNy0zLTYuOC02LjgtNi44aC01MC43Yy0zLjcgMC02LjggMy02LjggNi44djc4LjljMCAxOS43LTE1LjkgMzUuNi0zNS41IDM1LjZINDIwLjZWNTY4YzAtNS43LTYuNS04LjgtMTAuOS01LjNsLTEwOS4xIDg1LjdjLTMuNSAyLjUtMy41IDcuOCAwIDEwLjV6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkludGVyYXRpb25Ud29Ub25lID0gZ2V0SWNvbignaW50ZXJhdGlvbicsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNzI4SDE4NFYxODRoNjU2djY1NnonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00xODQgODQwaDY1NlYxODRIMTg0djY1NnptMTE0LTQwMS45YzAtNTUuMyA0NC42LTEwMC4xIDk5LjctMTAwLjFoMjA1Ljh2LTUzLjRjMC01LjYgNi41LTguOCAxMC45LTUuM0w3MjMuNSAzNjVjMy41IDIuNyAzLjUgOCAwIDEwLjdsLTEwOS4xIDg1LjdjLTQuNCAzLjUtMTAuOS40LTEwLjktNS4zdi01My40SDM5Ny44Yy0xOS42IDAtMzUuNSAxNS45LTM1LjUgMzUuNnY3OC45YzAgMy44LTMuMSA2LjgtNi44IDYuOGgtNTAuN2MtMy44IDAtNi44LTMtNi44LTd2LTc4Ljl6bTIuNiAyMTAuM2wxMDkuMS04NS43YzQuNC0zLjUgMTAuOS0uNCAxMC45IDUuM3Y1My40aDIwNS42YzE5LjYgMCAzNS41LTE1LjkgMzUuNS0zNS42di03OC45YzAtMy44IDMuMS02LjggNi44LTYuOGg1MC43YzMuOCAwIDYuOCAzLjEgNi44IDYuOHY3OC45YzAgNTUuMy00NC42IDEwMC4xLTk5LjcgMTAwLjFINDIwLjZ2NTMuNGMwIDUuNi02LjUgOC44LTEwLjkgNS4zbC0xMDkuMS04NS43Yy0zLjUtMi43LTMuNS04IDAtMTAuNXonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNMzA0LjggNTI0aDUwLjdjMy43IDAgNi44LTMgNi44LTYuOHYtNzguOWMwLTE5LjcgMTUuOS0zNS42IDM1LjUtMzUuNmgyMDUuN3Y1My40YzAgNS43IDYuNSA4LjggMTAuOSA1LjNsMTA5LjEtODUuN2MzLjUtMi43IDMuNS04IDAtMTAuN2wtMTA5LjEtODUuN2MtNC40LTMuNS0xMC45LS4zLTEwLjkgNS4zVjMzOEgzOTcuN2MtNTUuMSAwLTk5LjcgNDQuOC05OS43IDEwMC4xVjUxN2MwIDQgMyA3IDYuOCA3em0tNC4yIDEzNC45bDEwOS4xIDg1LjdjNC40IDMuNSAxMC45LjMgMTAuOS01LjN2LTUzLjRoMjA1LjdjNTUuMSAwIDk5LjctNDQuOCA5OS43LTEwMC4xdi03OC45YzAtMy43LTMtNi44LTYuOC02LjhoLTUwLjdjLTMuNyAwLTYuOCAzLTYuOCA2Ljh2NzguOWMwIDE5LjctMTUuOSAzNS42LTM1LjUgMzUuNkg0MjAuNlY1NjhjMC01LjctNi41LTguOC0xMC45LTUuM2wtMTA5LjEgODUuN2MtMy41IDIuNS0zLjUgNy44IDAgMTAuNXonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuTGF5b3V0VHdvVG9uZSA9IGdldEljb24oJ2xheW91dCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00zODQgMTg1aDQ1NnYxMzZIMzg0em0tMjAwIDBoMTM2djY1NkgxODR6bTY5Ni03M0gxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjFjMC0xNy43IDE0LjMtMzIgMzItMzJoNzM2YzE3LjcgMCAzMiAxNC4zIDMyIDMydi0xYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zODQgMzg1aDQ1NnY0NTZIMzg0eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004ODAgMTEzSDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDVjMC0xNy43LTE0LjMtMzItMzItMzJ6TTMyMCA4NDFIMTg0VjE4NWgxMzZ2NjU2em01MjAgMEgzODRWMzg1aDQ1NnY0NTZ6bTAtNTIwSDM4NFYxODVoNDU2djEzNnonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuTGVmdENpcmNsZVR3b1RvbmUgPSBnZXRJY29uKCdsZWZ0LWNpcmNsZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001MTIgMTQwYy0yMDUuNCAwLTM3MiAxNjYuNi0zNzIgMzcyczE2Ni42IDM3MiAzNzIgMzcyIDM3Mi0xNjYuNiAzNzItMzcyLTE2Ni42LTM3Mi0zNzItMzcyem0xMDQgMjQwLjljMCAxMC4zLTQuOSAxOS45LTEzLjIgMjUuOUw0NTcuNCA1MTJsMTQ1LjQgMTA1LjFjOC4zIDYgMTMuMiAxNS43IDEzLjIgMjUuOXY0Ni45YzAgNi41LTcuNCAxMC4zLTEyLjcgNi41bC0yNDYtMTc4YTcuOTUgNy45NSAwIDAgMSAwLTEyLjlsMjQ2LTE3OGM1LjMtMy44IDEyLjcgMCAxMi43IDYuNXY0Ni45eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTYwMy4zIDMyNy41bC0yNDYgMTc4YTcuOTUgNy45NSAwIDAgMCAwIDEyLjlsMjQ2IDE3OGM1LjMgMy44IDEyLjcgMCAxMi43LTYuNVY2NDNjMC0xMC4yLTQuOS0xOS45LTEzLjItMjUuOUw0NTcuNCA1MTJsMTQ1LjQtMTA1LjJjOC4zLTYgMTMuMi0xNS42IDEzLjItMjUuOVYzMzRjMC02LjUtNy40LTEwLjMtMTIuNy02LjV6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkxlZnRTcXVhcmVUd29Ub25lID0gZ2V0SWNvbignbGVmdC1zcXVhcmUnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDcyOEgxODRWMTg0aDY1NnY2NTZ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMTg0IDg0MGg2NTZWMTg0SDE4NHY2NTZ6bTE4MS4zLTMzNC41bDI0Ni0xNzhjNS4zLTMuOCAxMi43IDAgMTIuNyA2LjV2NDYuOWMwIDEwLjMtNC45IDE5LjktMTMuMiAyNS45TDQ2NS40IDUxMmwxNDUuNCAxMDUuMmM4LjMgNiAxMy4yIDE1LjcgMTMuMiAyNS45VjY5MGMwIDYuNS03LjQgMTAuMy0xMi43IDYuNGwtMjQ2LTE3OGE3Ljk1IDcuOTUgMCAwIDEgMC0xMi45eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ00zNjUuMyA1MTguNGwyNDYgMTc4YzUuMyAzLjkgMTIuNy4xIDEyLjctNi40di00Ni45YzAtMTAuMi00LjktMTkuOS0xMy4yLTI1LjlMNDY1LjQgNTEybDE0NS40LTEwNS4yYzguMy02IDEzLjItMTUuNiAxMy4yLTI1LjlWMzM0YzAtNi41LTcuNC0xMC4zLTEyLjctNi41bC0yNDYgMTc4YTcuOTUgNy45NSAwIDAgMCAwIDEyLjl6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkxpa2VUd29Ub25lID0gZ2V0SWNvbignbGlrZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00yNzMgNDk1Ljl2NDI4bC4zLTQyOHptNTM4LjItODguM0g0OTYuOGw5LjYtMTk4LjRjLjYtMTEuOS00LjctMjMuMS0xNC42LTMwLjUtNi4xLTQuNS0xMy42LTYuOC0yMS4xLTYuNy0xOS42LjEtMzYuOSAxMy40LTQyLjIgMzIuMy0zNy4xIDEzNC40LTY0LjkgMjM1LjItODMuNSAzMDIuNVY4NTJoMzk5LjRhNTYuODUgNTYuODUgMCAwIDAgMzMuNi01MS44YzAtOS43LTIuMy0xOC45LTYuOS0yNy4zbC0xMy45LTI1LjQgMjEuOS0xOWE1Ni43NiA1Ni43NiAwIDAgMCAxOS42LTQzYzAtOS43LTIuMy0xOC45LTYuOS0yNy4zbC0xMy45LTI1LjQgMjEuOS0xOWE1Ni43NiA1Ni43NiAwIDAgMCAxOS42LTQzYzAtOS43LTIuMy0xOC45LTYuOS0yNy4zbC0xNC0yNS41IDIxLjktMTlhNTYuNzYgNTYuNzYgMCAwIDAgMTkuNi00M2MwLTE5LjEtMTEtMzcuNS0yOC44LTQ4LjR6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTExMiA1Mjh2MzY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY1VjQ5NmgtNjVjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem03NzMuOSA1LjdjMTYuOC0yMi4yIDI2LjEtNDkuNCAyNi4xLTc3LjcgMC00NC45LTI1LjEtODcuNS02NS41LTExMWE2Ny42NyA2Ny42NyAwIDAgMC0zNC4zLTkuM0g1NzIuM2w2LTEyMi45YzEuNS0yOS43LTktNTcuOS0yOS41LTc5LjRhMTA2LjQgMTA2LjQgMCAwIDAtNzcuOS0zMy40Yy01MiAwLTk4IDM1LTExMS44IDg1LjFsLTg1LjggMzEwLjgtLjMgNDI4aDQ3Mi4xYzkuMyAwIDE4LjItMS44IDI2LjUtNS40IDQ3LjYtMjAuMyA3OC4zLTY2LjggNzguMy0xMTguNCAwLTEyLjYtMS44LTI1LTUuNC0zNyAxNi44LTIyLjIgMjYuMS00OS40IDI2LjEtNzcuNyAwLTEyLjYtMS44LTI1LTUuNC0zNyAxNi44LTIyLjIgMjYuMS00OS40IDI2LjEtNzcuNyAwLTEyLjYtMS44LTI1LTUuNC0zN3pNODIwLjQgNDk5bC0yMS45IDE5IDE0IDI1LjVhNTYuMiA1Ni4yIDAgMCAxIDYuOSAyNy4zYzAgMTYuNS03LjEgMzIuMi0xOS42IDQzbC0yMS45IDE5IDEzLjkgMjUuNGE1Ni4yIDU2LjIgMCAwIDEgNi45IDI3LjNjMCAxNi41LTcuMSAzMi4yLTE5LjYgNDNsLTIxLjkgMTkgMTMuOSAyNS40YTU2LjIgNTYuMiAwIDAgMSA2LjkgMjcuM2MwIDIyLjQtMTMuMiA0Mi42LTMzLjYgNTEuOEgzNDVWNTA2LjhjMTguNi02Ny4yIDQ2LjQtMTY4IDgzLjUtMzAyLjVhNDQuMjggNDQuMjggMCAwIDEgNDIuMi0zMi4zYzcuNS0uMSAxNSAyLjIgMjEuMSA2LjcgOS45IDcuNCAxNS4yIDE4LjYgMTQuNiAzMC41bC05LjYgMTk4LjRoMzE0LjRDODI5IDQxOC41IDg0MCA0MzYuOSA4NDAgNDU2YzAgMTYuNS03LjEgMzIuMi0xOS42IDQzeidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5Mb2NrVHdvVG9uZSA9IGdldEljb24oJ2xvY2snLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTgzMiA0NjRoLTY4VjI0MGMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOEgzODhjLTcwLjcgMC0xMjggNTcuMy0xMjggMTI4djIyNGgtNjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMzIgMjQwYzAtMzAuOSAyNS4xLTU2IDU2LTU2aDI0OGMzMC45IDAgNTYgMjUuMSA1NiA1NnYyMjRIMzMyVjI0MHptNDYwIDYwMEgyMzJWNTM2aDU2MHYzMDR6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMjMyIDg0MGg1NjBWNTM2SDIzMnYzMDR6bTI4MC0yMjZhNDguMDEgNDguMDEgMCAwIDEgMjggODd2NTNjMCA0LjQtMy42IDgtOCA4aC00MGMtNC40IDAtOC0zLjYtOC04di01M2E0OC4wMSA0OC4wMSAwIDAgMSAyOC04N3onXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNDg0IDcwMXY1M2MwIDQuNCAzLjYgOCA4IDhoNDBjNC40IDAgOC0zLjYgOC04di01M2E0OC4wMSA0OC4wMSAwIDEgMC01NiAweidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5NYWlsVHdvVG9uZSA9IGdldEljb24oJ21haWwnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNDc3LjUgNTM2LjNMMTM1LjkgMjcwLjdsLTI3LjUtMjEuNCAyNy42IDIxLjVWNzkyaDc1MlYyNzAuOEw1NDYuMiA1MzYuM2E1NS45OSA1NS45OSAwIDAgMS02OC43IDB6J1xuICAgIF0sIFtzZWNvbmRhcnlDb2xvciwgJ004NzYuMyAxOTguOGwzOS4zIDUwLjUtMjcuNiAyMS41IDI3LjctMjEuNS0zOS4zLTUwLjV6J10sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTkyOCAxNjBIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4MzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tOTQuNSA3Mi4xTDUxMiA0ODIgMTkwLjUgMjMyLjFoNjQzem01NC41IDM4LjdWNzkySDEzNlYyNzAuOGwtMjcuNi0yMS41IDI3LjUgMjEuNCAzNDEuNiAyNjUuNmE1NS45OSA1NS45OSAwIDAgMCA2OC43IDBMODg4IDI3MC44bDI3LjYtMjEuNS0zOS4zLTUwLjVoLjFsMzkuMyA1MC41LTI3LjcgMjEuNXonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuTWVkaWNpbmVCb3hUd29Ub25lID0gZ2V0SWNvbignbWVkaWNpbmUtYm94JywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTI0NC4zIDMyOEwxODQgNTEzLjRWODQwaDY1NlY1MTMuNEw3NzkuNyAzMjhIMjQ0LjN6TTY2MCA2MjhjMCA0LjQtMy42IDgtOCA4SDU0NHYxMDhjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04VjYzNkgzNzJjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDEwOFY0NjRjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHYxMDhoMTA4YzQuNCAwIDggMy42IDggOHY0OHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNjUyIDU3Mkg1NDRWNDY0YzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHYxMDhIMzcyYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDEwOHYxMDhjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOFY2MzZoMTA4YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004MzkuMiAyNzguMWEzMiAzMiAwIDAgMC0zMC40LTIyLjFINzM2VjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjExMmgtNzIuOGEzMS45IDMxLjkgMCAwIDAtMzAuNCAyMi4xTDExMiA1MDJ2Mzc4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlY1MDJsLTcyLjgtMjIzLjl6TTM2MCAxODRoMzA0djcySDM2MHYtNzJ6bTQ4MCA2NTZIMTg0VjUxMy40TDI0NC4zIDMyOGg1MzUuNEw4NDAgNTEzLjRWODQweidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5NZWhUd29Ub25lID0gZ2V0SWNvbignbWVoJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDE0MGMtMjA1LjQgMC0zNzIgMTY2LjYtMzcyIDM3MnMxNjYuNiAzNzIgMzcyIDM3MiAzNzItMTY2LjYgMzcyLTM3Mi0xNjYuNi0zNzItMzcyLTM3MnpNMjg4IDQyMWE0OC4wMSA0OC4wMSAwIDAgMSA5NiAwIDQ4LjAxIDQ4LjAxIDAgMCAxLTk2IDB6bTM4NCAyMDBjMCA0LjQtMy42IDgtOCA4SDM2MGMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoMzA0YzQuNCAwIDggMy42IDggOHY0OHptMTYtMTUyYTQ4LjAxIDQ4LjAxIDAgMCAxIDAtOTYgNDguMDEgNDguMDEgMCAwIDEgMCA5NnonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNMjg4IDQyMWE0OCA0OCAwIDEgMCA5NiAwIDQ4IDQ4IDAgMSAwLTk2IDB6bTM3NiAxNDRIMzYwYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDMwNGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptLTI0LTE0NGE0OCA0OCAwIDEgMCA5NiAwIDQ4IDQ4IDAgMSAwLTk2IDB6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLk1lc3NhZ2VUd29Ub25lID0gZ2V0SWNvbignbWVzc2FnZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ003NzUuMyAyNDguOWEzNjkuNjIgMzY5LjYyIDAgMCAwLTExOS04MEEzNzAuMiAzNzAuMiAwIDAgMCA1MTIuMSAxNDBoLTEuN2MtOTkuNy40LTE5MyAzOS40LTI2Mi44IDEwOS45LTY5LjkgNzAuNS0xMDggMTY0LjEtMTA3LjYgMjYzLjguMyA2MC4zIDE1LjMgMTIwLjIgNDMuNSAxNzMuMWw0LjUgOC40VjgzNmgxNDAuOGw4LjQgNC41YzUyLjkgMjguMiAxMTIuOCA0My4yIDE3My4xIDQzLjVoMS43Yzk5IDAgMTkyLTM4LjIgMjYyLjEtMTA3LjYgNzAuNC02OS44IDEwOS41LTE2My4xIDExMC4xLTI2Mi43LjItNTAuNi05LjUtOTkuNi0yOC45LTE0NS44YTM3MC4xNSAzNzAuMTUgMCAwIDAtODAtMTE5ek0zMTIgNTYwYTQ4LjAxIDQ4LjAxIDAgMCAxIDAtOTYgNDguMDEgNDguMDEgMCAwIDEgMCA5NnptMjAwIDBhNDguMDEgNDguMDEgMCAwIDEgMC05NiA0OC4wMSA0OC4wMSAwIDAgMSAwIDk2em0yMDAgMGE0OC4wMSA0OC4wMSAwIDAgMSAwLTk2IDQ4LjAxIDQ4LjAxIDAgMCAxIDAgOTZ6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTY2NCA1MTJhNDggNDggMCAxIDAgOTYgMCA0OCA0OCAwIDEgMC05NiAwem0tNDAwIDBhNDggNDggMCAxIDAgOTYgMCA0OCA0OCAwIDEgMC05NiAweidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ005MjUuMiAzMzguNGMtMjIuNi01My43LTU1LTEwMS45LTk2LjMtMTQzLjNhNDQ0LjM1IDQ0NC4zNSAwIDAgMC0xNDMuMy05Ni4zQzYzMC42IDc1LjcgNTcyLjIgNjQgNTEyIDY0aC0yYy02MC42LjMtMTE5LjMgMTIuMy0xNzQuNSAzNS45YTQ0NS4zNSA0NDUuMzUgMCAwIDAtMTQyIDk2LjVjLTQwLjkgNDEuMy03MyA4OS4zLTk1LjIgMTQyLjgtMjMgNTUuNC0zNC42IDExNC4zLTM0LjMgMTc0LjlBNDQ5LjQgNDQ5LjQgMCAwIDAgMTEyIDcxNHYxNTJhNDYgNDYgMCAwIDAgNDYgNDZoMTUyLjFBNDQ5LjQgNDQ5LjQgMCAwIDAgNTEwIDk2MGgyLjFjNTkuOSAwIDExOC0xMS42IDE3Mi43LTM0LjNhNDQ0LjQ4IDQ0NC40OCAwIDAgMCAxNDIuOC05NS4yYzQxLjMtNDAuOSA3My44LTg4LjcgOTYuNS0xNDIgMjMuNi01NS4yIDM1LjYtMTEzLjkgMzUuOS0xNzQuNS4zLTYwLjktMTEuNS0xMjAtMzQuOC0xNzUuNnptLTE1MS4xIDQzOEM3MDQgODQ1LjggNjExIDg4NCA1MTIgODg0aC0xLjdjLTYwLjMtLjMtMTIwLjItMTUuMy0xNzMuMS00My41bC04LjQtNC41SDE4OFY2OTUuMmwtNC41LTguNEMxNTUuMyA2MzMuOSAxNDAuMyA1NzQgMTQwIDUxMy43Yy0uNC05OS43IDM3LjctMTkzLjMgMTA3LjYtMjYzLjggNjkuOC03MC41IDE2My4xLTEwOS41IDI2Mi44LTEwOS45aDEuN2M1MCAwIDk4LjUgOS43IDE0NC4yIDI4LjkgNDQuNiAxOC43IDg0LjYgNDUuNiAxMTkgODAgMzQuMyAzNC4zIDYxLjMgNzQuNCA4MCAxMTkgMTkuNCA0Ni4yIDI5LjEgOTUuMiAyOC45IDE0NS44LS42IDk5LjYtMzkuNyAxOTIuOS0xMTAuMSAyNjIuN3onXG4gICAgXSwgW3ByaW1hcnlDb2xvciwgJ000NjQgNTEyYTQ4IDQ4IDAgMSAwIDk2IDAgNDggNDggMCAxIDAtOTYgMHonXSk7XG59KTtcbmV4cG9ydHMuTWludXNDaXJjbGVUd29Ub25lID0gZ2V0SWNvbignbWludXMtY2lyY2xlJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDE0MGMtMjA1LjQgMC0zNzIgMTY2LjYtMzcyIDM3MnMxNjYuNiAzNzIgMzcyIDM3MiAzNzItMTY2LjYgMzcyLTM3Mi0xNjYuNi0zNzItMzcyLTM3MnptMTkyIDM5NmMwIDQuNC0zLjYgOC04IDhIMzI4Yy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGgzNjhjNC40IDAgOCAzLjYgOCA4djQ4eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ002OTYgNDgwSDMyOGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgzNjhjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LTh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLk1pbnVzU3F1YXJlVHdvVG9uZSA9IGdldEljb24oJ21pbnVzLXNxdWFyZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNzI4SDE4NFYxODRoNjU2djY1NnonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00xODQgODQwaDY1NlYxODRIMTg0djY1NnptMTM2LTM1MmMwLTQuNCAzLjYtOCA4LThoMzY4YzQuNCAwIDggMy42IDggOHY0OGMwIDQuNC0zLjYgOC04IDhIMzI4Yy00LjQgMC04LTMuNi04LTh2LTQ4eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ00zMjggNTQ0aDM2OGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOEgzMjhjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLk1vYmlsZVR3b1RvbmUgPSBnZXRJY29uKCdtb2JpbGUnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTc0NCA2NEgyODBjLTM1LjMgMC02NCAyOC43LTY0IDY0djc2OGMwIDM1LjMgMjguNyA2NCA2NCA2NGg0NjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0em0tOCA4MjRIMjg4VjEzNmg0NDh2NzUyeidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTI4OCA4ODhoNDQ4VjEzNkgyODh2NzUyem0yMjQtMTQyYzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwLTQwLTE3LjktNDAtNDAgMTcuOS00MCA0MC00MHonXG4gICAgXSwgW3ByaW1hcnlDb2xvciwgJ000NzIgNzg2YTQwIDQwIDAgMSAwIDgwIDAgNDAgNDAgMCAxIDAtODAgMHonXSk7XG59KTtcbmV4cG9ydHMuUGF1c2VDaXJjbGVUd29Ub25lID0gZ2V0SWNvbigncGF1c2UtY2lyY2xlJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDE0MGMtMjA1LjQgMC0zNzIgMTY2LjYtMzcyIDM3MnMxNjYuNiAzNzIgMzcyIDM3MiAzNzItMTY2LjYgMzcyLTM3Mi0xNjYuNi0zNzItMzcyLTM3MnptLTgwIDUyNGMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LThWMzYwYzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MzA0em0yMjQgMGMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LThWMzYwYzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MzA0eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ000MjQgMzUyaC00OGMtNC40IDAtOCAzLjYtOCA4djMwNGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjM2MGMwLTQuNC0zLjYtOC04LTh6bTIyNCAwaC00OGMtNC40IDAtOCAzLjYtOCA4djMwNGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjM2MGMwLTQuNC0zLjYtOC04LTh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLk1vbmV5Q29sbGVjdFR3b1RvbmUgPSBnZXRJY29uKCdtb25leS1jb2xsZWN0JywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTI1NiA3NDQuNGwyNTYgOTMuMSAyNTYtOTMuMVYxODRIMjU2djU2MC40ek0zNTkuNyAzMTNjMS4yLS43IDIuNS0xIDMuOC0xaDU1LjdhOCA4IDAgMCAxIDcuMSA0LjRMNTExIDQ4NS4yaDMuM0w1OTkgMzE2LjRjMS4zLTIuNyA0LjEtNC40IDcuMS00LjRoNTQuNWM0LjQgMCA4IDMuNiA4LjEgNy45IDAgMS4zLS40IDIuNi0xIDMuOEw1NjQgNTE1LjNoNTcuNmM0LjQgMCA4IDMuNiA4IDh2MjcuMWMwIDQuNC0zLjYgOC04IDhoLTc2LjN2MzloNzYuM2M0LjQgMCA4IDMuNiA4IDh2MjcuMWMwIDQuNC0zLjYgOC04IDhoLTc2LjNWNzA0YzAgNC40LTMuNiA4LTggOGgtNDkuOWMtNC40IDAtOC0zLjYtOC04di02My40aC03NmMtNC40IDAtOC0zLjYtOC04di0yNy4xYzAtNC40IDMuNi04IDgtOGg3NnYtMzloLTc2Yy00LjQgMC04LTMuNi04LTh2LTI3LjFjMC00LjQgMy42LTggOC04aDU3TDM1Ni41IDMyMy44Yy0yLjEtMy44LS43LTguNyAzLjItMTAuOHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNOTExLjUgNzAwLjdhOCA4IDAgMCAwLTEwLjMtNC44TDg0MCA3MTguMlYxODBjMC0zNy42LTMwLjQtNjgtNjgtNjhIMjUyYy0zNy42IDAtNjggMzAuNC02OCA2OHY1MzguMmwtNjEuMy0yMi4zYy0uOS0uMy0xLjgtLjUtMi43LS41LTQuNCAwLTggMy42LTggOFY3NjNjMCAzLjMgMi4xIDYuMyA1LjMgNy41TDUwMSA5MTAuMWM3LjEgMi42IDE0LjggMi42IDIxLjkgMGwzODMuOC0xMzkuNWMzLjItMS4yIDUuMy00LjIgNS4zLTcuNXYtNTkuNmMwLTEtLjItMS45LS41LTIuOHpNNzY4IDc0NC40bC0yNTYgOTMuMS0yNTYtOTMuMVYxODRoNTEydjU2MC40eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ000NjAuNCA1MTUuNGgtNTdjLTQuNCAwLTggMy42LTggOHYyNy4xYzAgNC40IDMuNiA4IDggOGg3NnYzOWgtNzZjLTQuNCAwLTggMy42LTggOHYyNy4xYzAgNC40IDMuNiA4IDggOGg3NlY3MDRjMCA0LjQgMy42IDggOCA4aDQ5LjljNC40IDAgOC0zLjYgOC04di02My41aDc2LjNjNC40IDAgOC0zLjYgOC04di0yNy4xYzAtNC40LTMuNi04LTgtOGgtNzYuM3YtMzloNzYuM2M0LjQgMCA4LTMuNiA4LTh2LTI3LjFjMC00LjQtMy42LTgtOC04SDU2NGwxMDMuNy0xOTEuNmMuNi0xLjIgMS0yLjUgMS0zLjgtLjEtNC4zLTMuNy03LjktOC4xLTcuOWgtNTQuNWMtMyAwLTUuOCAxLjctNy4xIDQuNGwtODQuNyAxNjguOEg1MTFsLTg0LjctMTY4LjhhOCA4IDAgMCAwLTcuMS00LjRoLTU1LjdjLTEuMyAwLTIuNi4zLTMuOCAxLTMuOSAyLjEtNS4zIDctMy4yIDEwLjhsMTAzLjkgMTkxLjZ6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLk5vdGlmaWNhdGlvblR3b1RvbmUgPSBnZXRJY29uKCdub3RpZmljYXRpb24nLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMjI5LjYgNjc4LjFjLTMuNyAxMS42LTUuNiAyMy45LTUuNiAzNi40IDAtMTIuNSAyLTI0LjggNS43LTM2LjRoLS4xem03Ni4zLTI2MC4ySDE4NHYxODguMmgxMjEuOWwxMi45IDUuMkw4NDAgODIwLjdWMjAzLjNMMzE4LjggNDEyLjd6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg4MCAxMTJjLTMuOCAwLTcuNy43LTExLjYgMi4zTDI5MiAzNDUuOUgxMjhjLTguOCAwLTE2IDcuNC0xNiAxNi42djI5OWMwIDkuMiA3LjIgMTYuNiAxNiAxNi42aDEwMS43Yy0zLjcgMTEuNi01LjcgMjMuOS01LjcgMzYuNCAwIDY1LjkgNTMuOCAxMTkuNSAxMjAgMTE5LjUgNTUuNCAwIDEwMi4xLTM3LjYgMTE1LjktODguNGw0MDguNiAxNjQuMmMzLjkgMS41IDcuOCAyLjMgMTEuNiAyLjMgMTYuOSAwIDMyLTE0LjIgMzItMzMuMlYxNDUuMkM5MTIgMTI2LjIgODk3IDExMiA4ODAgMTEyek0zNDQgNzYyLjNjLTI2LjUgMC00OC0yMS40LTQ4LTQ3LjggMC0xMS4yIDMuOS0yMS45IDExLTMwLjRsODQuOSAzNC4xYy0yIDI0LjYtMjIuNyA0NC4xLTQ3LjkgNDQuMXptNDk2IDU4LjRMMzE4LjggNjExLjNsLTEyLjktNS4ySDE4NFY0MTcuOWgxMjEuOWwxMi45LTUuMkw4NDAgMjAzLjN2NjE3LjR6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLlBob25lVHdvVG9uZSA9IGdldEljb24oJ3Bob25lJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTcyMS43IDE4NC45TDYxMC45IDI5NS44bDEyMC44IDEyMC43LTggMjEuNkE0ODEuMjkgNDgxLjI5IDAgMCAxIDQzOCA3MjMuOWwtMjEuNiA4LS45LS45LTExOS44LTEyMC0xMTAuOCAxMTAuOSAxMDQuNSAxMDQuNWMxMC44IDEwLjcgMjYgMTUuNyA0MC44IDEzLjIgMTE3LjktMTkuNSAyMzUuNC04Mi45IDMzMC45LTE3OC40czE1OC45LTIxMy4xIDE3OC40LTMzMWMyLjUtMTQuOC0yLjUtMzAtMTMuMy00MC44TDcyMS43IDE4NC45eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004NzcuMSAyMzguN0w3NzAuNiAxMzIuM2MtMTMtMTMtMzAuNC0yMC4zLTQ4LjgtMjAuM3MtMzUuOCA3LjItNDguOCAyMC4zTDU1OC4zIDI0Ni44Yy0xMyAxMy0yMC4zIDMwLjUtMjAuMyA0OC45IDAgMTguNSA3LjIgMzUuOCAyMC4zIDQ4LjlsODkuNiA4OS43YTQwNS40NiA0MDUuNDYgMCAwIDEtODYuNCAxMjcuM2MtMzYuNyAzNi45LTc5LjYgNjYtMTI3LjIgODYuNmwtODkuNi04OS43Yy0xMy0xMy0zMC40LTIwLjMtNDguOC0yMC4zYTY4LjIgNjguMiAwIDAgMC00OC44IDIwLjNMMTMyLjMgNjczYy0xMyAxMy0yMC4zIDMwLjUtMjAuMyA0OC45IDAgMTguNSA3LjIgMzUuOCAyMC4zIDQ4LjlsMTA2LjQgMTA2LjRjMjIuMiAyMi4yIDUyLjggMzQuOSA4NC4yIDM0LjkgNi41IDAgMTIuOC0uNSAxOS4yLTEuNiAxMzIuNC0yMS44IDI2My44LTkyLjMgMzY5LjktMTk4LjNDODE4IDYwNiA4ODguNCA0NzQuNiA5MTAuNCAzNDIuMWM2LjMtMzcuNi02LjMtNzYuMy0zMy4zLTEwMy40em0tMzcuNiA5MS41Yy0xOS41IDExNy45LTgyLjkgMjM1LjUtMTc4LjQgMzMxcy0yMTMgMTU4LjktMzMwLjkgMTc4LjRjLTE0LjggMi41LTMwLTIuNS00MC44LTEzLjJMMTg0LjkgNzIxLjkgMjk1LjcgNjExbDExOS44IDEyMCAuOS45IDIxLjYtOGE0ODEuMjkgNDgxLjI5IDAgMCAwIDI4NS43LTI4NS44bDgtMjEuNi0xMjAuOC0xMjAuNyAxMTAuOC0xMTAuOSAxMDQuNSAxMDQuNWMxMC44IDEwLjggMTUuOCAyNiAxMy4zIDQwLjh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLlBpY3R1cmVUd29Ub25lID0gZ2V0SWNvbigncGljdHVyZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNOTI4IDE2MEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjQwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCA2MzJIMTM2di0zOS45bDEzOC41LTE2NC4zIDE1MC4xIDE3OEw2NTguMSA0ODkgODg4IDc2MS42Vjc5MnptMC0xMjkuOEw2NjQuMiAzOTYuOGMtMy4yLTMuOC05LTMuOC0xMi4yIDBMNDI0LjYgNjY2LjRsLTE0NC0xNzAuN2MtMy4yLTMuOC05LTMuOC0xMi4yIDBMMTM2IDY1Mi43VjIzMmg3NTJ2NDMwLjJ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNDI0LjYgNzY1LjhsLTE1MC4xLTE3OEwxMzYgNzUyLjFWNzkyaDc1MnYtMzAuNEw2NTguMSA0ODl6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMTM2IDY1Mi43bDEzMi40LTE1N2MzLjItMy44IDktMy44IDEyLjIgMGwxNDQgMTcwLjdMNjUyIDM5Ni44YzMuMi0zLjggOS0zLjggMTIuMiAwTDg4OCA2NjIuMlYyMzJIMTM2djQyMC43ek0zMDQgMjgwYTg4IDg4IDAgMSAxIDAgMTc2IDg4IDg4IDAgMCAxIDAtMTc2eidcbiAgICBdLCBbc2Vjb25kYXJ5Q29sb3IsICdNMjc2IDM2OGEyOCAyOCAwIDEgMCA1NiAwIDI4IDI4IDAgMSAwLTU2IDB6J10sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTMwNCA0NTZhODggODggMCAxIDAgMC0xNzYgODggODggMCAwIDAgMCAxNzZ6bTAtMTE2YzE1LjUgMCAyOCAxMi41IDI4IDI4cy0xMi41IDI4LTI4IDI4LTI4LTEyLjUtMjgtMjggMTIuNS0yOCAyOC0yOHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuUGxheUNpcmNsZVR3b1RvbmUgPSBnZXRJY29uKCdwbGF5LWNpcmNsZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyeidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUxMiAxNDBjLTIwNS40IDAtMzcyIDE2Ni42LTM3MiAzNzJzMTY2LjYgMzcyIDM3MiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzItMTY2LjYtMzcyLTM3Mi0zNzJ6bTE2NC4xIDM3OC4yTDQ1Ny43IDY3Ny4xYTguMDIgOC4wMiAwIDAgMS0xMi43LTYuNVYzNTNhOCA4IDAgMCAxIDEyLjctNi41bDIxOC40IDE1OC44YTcuOSA3LjkgMCAwIDEgMCAxMi45eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ002NzYuMSA1MDUuM0w0NTcuNyAzNDYuNUE4IDggMCAwIDAgNDQ1IDM1M3YzMTcuNmE4LjAyIDguMDIgMCAwIDAgMTIuNyA2LjVsMjE4LjQtMTU4LjlhNy45IDcuOSAwIDAgMCAwLTEyLjl6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLlBsYXlTcXVhcmVUd29Ub25lID0gZ2V0SWNvbigncGxheS1zcXVhcmUnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDcyOEgxODRWMTg0aDY1NnY2NTZ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMTg0IDg0MGg2NTZWMTg0SDE4NHY2NTZ6bTI0MC00ODQuN2MwLTkuNCAxMC45LTE0LjcgMTguMy04LjhsMTk5LjQgMTU2LjdhMTEuMiAxMS4yIDAgMCAxIDAgMTcuNkw0NDIuMyA2NzcuNmMtNy40IDUuOC0xOC4zLjYtMTguMy04LjhWMzU1LjN6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTQ0Mi4zIDY3Ny42bDE5OS40LTE1Ni44YTExLjIgMTEuMiAwIDAgMCAwLTE3LjZMNDQyLjMgMzQ2LjVjLTcuNC01LjktMTguMy0uNi0xOC4zIDguOHYzMTMuNWMwIDkuNCAxMC45IDE0LjYgMTguMyA4Ljh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLlBpZUNoYXJ0VHdvVG9uZSA9IGdldEljb24oJ3BpZS1jaGFydCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00zMTYuMiA5MjAuNWMtNDcuNi0yMC4xLTkwLjQtNDktMTI3LjEtODUuN2EzOTguMTkgMzk4LjE5IDAgMCAxLTg1LjctMTI3LjFBMzk3LjEyIDM5Ny4xMiAwIDAgMSA3MiA1NTIuMnYuMmEzOTguNTcgMzk4LjU3IDAgMCAwIDExNyAyODIuNWMzNi43IDM2LjcgNzkuNCA2NS41IDEyNyA4NS42QTM5Ni42NCAzOTYuNjQgMCAwIDAgNDcxLjYgOTUyYzI3IDAgNTMuNi0yLjcgNzkuNy03LjktMjUuOSA1LjItNTIuNCA3LjgtNzkuMyA3LjgtNTQgLjEtMTA2LjQtMTAuNS0xNTUuOC0zMS40ek01NjAgNDcyYy00LjQgMC04LTMuNi04LThWNzkuOWMwLTEuMy4zLTIuNS45LTMuNi0uOSAxLjMtMS41IDIuOS0xLjUgNC42djM4My43YzAgNC40IDMuNiA4IDggOGwzODMuNi0xYzEuNiAwIDMuMS0uNSA0LjQtMS4zLTEgLjUtMi4yLjctMy40LjdsLTM4NCAxeidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTYxOS44IDE0Ny42djI1Ni42bDI1Ni40LS43Yy0xMy02Mi41LTQ0LjMtMTIwLjUtOTAtMTY2LjFhMzMyLjI0IDMzMi4yNCAwIDAgMC0xNjYuNC04OS44eidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTQzOCAyMjEuN2MtNzUuOSA3LjYtMTQ2LjIgNDAuOS0yMDAuOCA5NS41QzE3NC41IDM3OS45IDE0MCA0NjMuMyAxNDAgNTUyczM0LjUgMTcyLjEgOTcuMiAyMzQuOGM2Mi4zIDYyLjMgMTQ1LjEgOTYuOCAyMzMuMiA5Ny4yIDg4LjIuNCAxNzIuNy0zNC4xIDIzNS4zLTk2LjJDNzYxIDczMyA3OTQuNiA2NjIuMyA4MDIuMyA1ODZINDM4VjIyMS43eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004NjQgNTE4SDUwNlYxNjBjMC00LjQtMy42LTgtOC04aC0yNmEzOTguNDYgMzk4LjQ2IDAgMCAwLTI4Mi44IDExNy4xIDM5OC4xOSAzOTguMTkgMCAwIDAtODUuNyAxMjcuMUEzOTcuNjEgMzk3LjYxIDAgMCAwIDcyIDU1MnYuMmMwIDUzLjkgMTAuNiAxMDYuMiAzMS40IDE1NS41IDIwLjEgNDcuNiA0OSA5MC40IDg1LjcgMTI3LjEgMzYuNyAzNi43IDc5LjUgNjUuNiAxMjcuMSA4NS43QTM5Ny42MSAzOTcuNjEgMCAwIDAgNDcyIDk1MmMyNi45IDAgNTMuNC0yLjYgNzkuMy03LjggMjYuMS01LjMgNTEuNy0xMy4xIDc2LjQtMjMuNiA0Ny42LTIwLjEgOTAuNC00OSAxMjcuMS04NS43IDM2LjctMzYuNyA2NS42LTc5LjUgODUuNy0xMjcuMUEzOTcuNjEgMzk3LjYxIDAgMCAwIDg3MiA1NTJ2LTI2YzAtNC40LTMuNi04LTgtOHpNNzA1LjcgNzg3LjhBMzMxLjU5IDMzMS41OSAwIDAgMSA0NzAuNCA4ODRjLTg4LjEtLjQtMTcwLjktMzQuOS0yMzMuMi05Ny4yQzE3NC41IDcyNC4xIDE0MCA2NDAuNyAxNDAgNTUyczM0LjUtMTcyLjEgOTcuMi0yMzQuOGM1NC42LTU0LjYgMTI0LjktODcuOSAyMDAuOC05NS41VjU4NmgzNjQuM2MtNy43IDc2LjMtNDEuMyAxNDctOTYuNiAyMDEuOHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNOTUyIDQ2Mi40bC0yLjYtMjguMmMtOC41LTkyLjEtNDkuNC0xNzktMTE1LjItMjQ0LjZBMzk5LjQgMzk5LjQgMCAwIDAgNTg5IDc0LjZMNTYwLjcgNzJjLTMuNC0uMy02LjQgMS41LTcuOCA0LjNhOC43IDguNyAwIDAgMC0uOSAzLjZWNDY0YzAgNC40IDMuNiA4IDggOGwzODQtMWMxLjIgMCAyLjMtLjMgMy40LS43YTguMSA4LjEgMCAwIDAgNC42LTcuOXptLTMzMi4yLTU4LjJWMTQ3LjZhMzMyLjI0IDMzMi4yNCAwIDAgMSAxNjYuNCA4OS44YzQ1LjcgNDUuNiA3NyAxMDMuNiA5MCAxNjYuMWwtMjU2LjQuN3onXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuUGx1c0NpcmNsZVR3b1RvbmUgPSBnZXRJY29uKCdwbHVzLWNpcmNsZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyeidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUxMiAxNDBjLTIwNS40IDAtMzcyIDE2Ni42LTM3MiAzNzJzMTY2LjYgMzcyIDM3MiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzItMTY2LjYtMzcyLTM3Mi0zNzJ6bTE5MiAzOTZjMCA0LjQtMy42IDgtOCA4SDU0NHYxNTJjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04VjU0NEgzMjhjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDE1MlYzMjhjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHYxNTJoMTUyYzQuNCAwIDggMy42IDggOHY0OHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNjk2IDQ4MEg1NDRWMzI4YzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHYxNTJIMzI4Yy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDE1MnYxNTJjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOFY1NDRoMTUyYzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5QbHVzU3F1YXJlVHdvVG9uZSA9IGdldEljb24oJ3BsdXMtc3F1YXJlJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCA3MjhIMTg0VjE4NGg2NTZ2NjU2eidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTE4NCA4NDBoNjU2VjE4NEgxODR2NjU2em0xMzYtMzUyYzAtNC40IDMuNi04IDgtOGgxNTJWMzI4YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MTUyaDE1MmM0LjQgMCA4IDMuNiA4IDh2NDhjMCA0LjQtMy42IDgtOCA4SDU0NHYxNTJjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04VjU0NEgzMjhjLTQuNCAwLTgtMy42LTgtOHYtNDh6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTMyOCA1NDRoMTUydjE1MmMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjU0NGgxNTJjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LThINTQ0VjMyOGMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2MTUySDMyOGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuUG91bmRDaXJjbGVUd29Ub25lID0gZ2V0SWNvbigncG91bmQtY2lyY2xlJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDE0MGMtMjA1LjQgMC0zNzIgMTY2LjYtMzcyIDM3MnMxNjYuNiAzNzIgMzcyIDM3MiAzNzItMTY2LjYgMzcyLTM3Mi0xNjYuNi0zNzItMzcyLTM3MnptMTQ2IDU4Mi4xYzAgNC40LTMuNiA4LTggOEgzNzYuMmMtNC40IDAtOC0zLjYtOC04di0zOC41YzAtMy43IDIuNS02LjkgNi4xLTcuOCA0NC0xMC45IDcyLjgtNDkgNzIuOC05NC4yIDAtMTQuNy0yLjUtMjkuNC01LjktNDQuMkgzNzRjLTQuNCAwLTgtMy42LTgtOHYtMzBjMC00LjQgMy42LTggOC04aDUzLjdjLTcuOC0yNS4xLTE0LjYtNTAuNy0xNC42LTc3LjEgMC03NS44IDU4LjYtMTIwLjMgMTUxLjUtMTIwLjMgMjYuNSAwIDUxLjQgNS41IDcwLjMgMTIuNyAzLjEgMS4yIDUuMiA0LjIgNS4yIDcuNXYzOS41YTggOCAwIDAgMS0xMC42IDcuNmMtMTcuOS02LjQtMzktMTAuNS02MC40LTEwLjUtNTMuMyAwLTg3LjMgMjYuNi04Ny4zIDcwLjIgMCAyNC43IDYuMiA0Ny45IDEzLjQgNzAuNWgxMTJjNC40IDAgOCAzLjYgOCA4djMwYzAgNC40LTMuNiA4LTggOGgtOTguNmMzLjEgMTMuMiA1LjMgMjYuOSA1LjMgNDEgMCA0MC43LTE2LjUgNzMuOS00My45IDkxLjF2NC43aDE4MGM0LjQgMCA4IDMuNiA4IDh2MzkuOHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNjUwIDY3NC4zSDQ3MHYtNC43YzI3LjQtMTcuMiA0My45LTUwLjQgNDMuOS05MS4xIDAtMTQuMS0yLjItMjcuOC01LjMtNDFoOTguNmM0LjQgMCA4LTMuNiA4LTh2LTMwYzAtNC40LTMuNi04LTgtOGgtMTEyYy03LjItMjIuNi0xMy40LTQ1LjgtMTMuNC03MC41IDAtNDMuNiAzNC03MC4yIDg3LjMtNzAuMiAyMS40IDAgNDIuNSA0LjEgNjAuNCAxMC41YTggOCAwIDAgMCAxMC42LTcuNnYtMzkuNWMwLTMuMy0yLjEtNi4zLTUuMi03LjUtMTguOS03LjItNDMuOC0xMi43LTcwLjMtMTIuNy05Mi45IDAtMTUxLjUgNDQuNS0xNTEuNSAxMjAuMyAwIDI2LjQgNi44IDUyIDE0LjYgNzcuMUgzNzRjLTQuNCAwLTggMy42LTggOHYzMGMwIDQuNCAzLjYgOCA4IDhoNjcuMmMzLjQgMTQuOCA1LjkgMjkuNSA1LjkgNDQuMiAwIDQ1LjItMjguOCA4My4zLTcyLjggOTQuMi0zLjYuOS02LjEgNC4xLTYuMSA3Ljh2MzguNWMwIDQuNCAzLjYgOCA4IDhINjUwYzQuNCAwIDgtMy42IDgtOHYtMzkuOGMwLTQuNC0zLjYtOC04LTh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLlByaW50ZXJUd29Ub25lID0gZ2V0SWNvbigncHJpbnRlcicsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00zNjAgMTgwaDMwNHYxNTJIMzYwem00OTIgMjIwSDE3MmMtNi42IDAtMTIgNS40LTEyIDEydjI5MmgxMzJWNTAwaDQ0MHYyMDRoMTMyVjQxMmMwLTYuNi01LjQtMTItMTItMTJ6bS0yNCA4NGMwIDQuNC0zLjYgOC04IDhoLTQwYy00LjQgMC04LTMuNi04LTh2LTQwYzAtNC40IDMuNi04IDgtOGg0MGM0LjQgMCA4IDMuNiA4IDh2NDB6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg1MiAzMzJINzMyVjEyMGMwLTQuNC0zLjYtOC04LThIMzAwYy00LjQgMC04IDMuNi04IDh2MjEySDE3MmMtNDQuMiAwLTgwIDM1LjgtODAgODB2MzI4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2OHYxMzJjMCA0LjQgMy42IDggOCA4aDQyNGM0LjQgMCA4LTMuNiA4LThWNzcyaDE2OGMxNy43IDAgMzItMTQuMyAzMi0zMlY0MTJjMC00NC4yLTM1LjgtODAtODAtODB6TTM2MCAxODBoMzA0djE1MkgzNjBWMTgwem0zMDQgNjY0SDM2MFY1NjhoMzA0djI3NnptMjAwLTE0MEg3MzJWNTAwSDI5MnYyMDRIMTYwVjQxMmMwLTYuNiA1LjQtMTIgMTItMTJoNjgwYzYuNiAwIDEyIDUuNCAxMiAxMnYyOTJ6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTgyMCA0MzZoLTQwYy00LjQgMC04IDMuNi04IDh2NDBjMCA0LjQgMy42IDggOCA4aDQwYzQuNCAwIDgtMy42IDgtOHYtNDBjMC00LjQtMy42LTgtOC04eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5Qcm9maWxlVHdvVG9uZSA9IGdldEljb24oJ3Byb2ZpbGUnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDcyOEgxODRWMTg0aDY1NnY2NTZ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMTg0IDg0MGg2NTZWMTg0SDE4NHY2NTZ6bTMwMC00OTZjMC00LjQgMy42LTggOC04aDE4NGM0LjQgMCA4IDMuNiA4IDh2NDhjMCA0LjQtMy42IDgtOCA4SDQ5MmMtNC40IDAtOC0zLjYtOC04di00OHptMCAxNDRjMC00LjQgMy42LTggOC04aDE4NGM0LjQgMCA4IDMuNiA4IDh2NDhjMCA0LjQtMy42IDgtOCA4SDQ5MmMtNC40IDAtOC0zLjYtOC04di00OHptMCAxNDRjMC00LjQgMy42LTggOC04aDE4NGM0LjQgMCA4IDMuNiA4IDh2NDhjMCA0LjQtMy42IDgtOCA4SDQ5MmMtNC40IDAtOC0zLjYtOC04di00OHpNMzgwIDMyOGMyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MC00MC0xNy45LTQwLTQwIDE3LjktNDAgNDAtNDB6bTAgMTQ0YzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwLTQwLTE3LjktNDAtNDAgMTcuOS00MCA0MC00MHptMCAxNDRjMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDAtNDAtMTcuOS00MC00MCAxNy45LTQwIDQwLTQweidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ00zNDAgNjU2YTQwIDQwIDAgMSAwIDgwIDAgNDAgNDAgMCAxIDAtODAgMHptMC0xNDRhNDAgNDAgMCAxIDAgODAgMCA0MCA0MCAwIDEgMC04MCAwem0wLTE0NGE0MCA0MCAwIDEgMCA4MCAwIDQwIDQwIDAgMSAwLTgwIDB6bTE1MiAzMjBoMTg0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04SDQ5MmMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHptMC0xNDRoMTg0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04SDQ5MmMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHptMC0xNDRoMTg0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04SDQ5MmMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuUHJvamVjdFR3b1RvbmUgPSBnZXRJY29uKCdwcm9qZWN0JywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004ODAgMTEySDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDczNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCA3MjhIMTg0VjE4NGg2NTZ2NjU2eidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTE4NCA4NDBoNjU2VjE4NEgxODR2NjU2em00NzItNTYwYzAtNC40IDMuNi04IDgtOGg4MGM0LjQgMCA4IDMuNiA4IDh2MjU2YzAgNC40LTMuNiA4LTggOGgtODBjLTQuNCAwLTgtMy42LTgtOFYyODB6bS0xOTIgMGMwLTQuNCAzLjYtOCA4LThoODBjNC40IDAgOCAzLjYgOCA4djE4NGMwIDQuNC0zLjYgOC04IDhoLTgwYy00LjQgMC04LTMuNi04LThWMjgwem0tMTkyIDBjMC00LjQgMy42LTggOC04aDgwYzQuNCAwIDggMy42IDggOHY0NjRjMCA0LjQtMy42IDgtOCA4aC04MGMtNC40IDAtOC0zLjYtOC04VjI4MHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNMjgwIDc1Mmg4MGM0LjQgMCA4LTMuNiA4LThWMjgwYzAtNC40LTMuNi04LTgtOGgtODBjLTQuNCAwLTggMy42LTggOHY0NjRjMCA0LjQgMy42IDggOCA4em0xOTItMjgwaDgwYzQuNCAwIDgtMy42IDgtOFYyODBjMC00LjQtMy42LTgtOC04aC04MGMtNC40IDAtOCAzLjYtOCA4djE4NGMwIDQuNCAzLjYgOCA4IDh6bTE5MiA3Mmg4MGM0LjQgMCA4LTMuNiA4LThWMjgwYzAtNC40LTMuNi04LTgtOGgtODBjLTQuNCAwLTggMy42LTggOHYyNTZjMCA0LjQgMy42IDggOCA4eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5QdXNocGluVHdvVG9uZSA9IGdldEljb24oJ3B1c2hwaW4nLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNDc0LjggMzU3LjdsLTI0LjUgMjQuNS0zNC40LTMuOGMtOS42LTEuMS0xOS4zLTEuNi0yOC45LTEuNi0yOSAwLTU3LjUgNC43LTg0LjcgMTQuMS0xNCA0LjgtMjcuNCAxMC44LTQwLjMgMTcuOWwzNTMuMSAzNTMuM2EyNTkuOTIgMjU5LjkyIDAgMCAwIDMwLjQtMTUzLjlsLTMuOC0zNC40IDI0LjUtMjQuNUw4MDAgNDE1LjUgNjA4LjUgMjI0IDQ3NC44IDM1Ny43eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004NzguMyAzOTIuMUw2MzEuOSAxNDUuN2MtNi41LTYuNS0xNS05LjctMjMuNS05LjdzLTE3IDMuMi0yMy41IDkuN0w0MjMuOCAzMDYuOWMtMTIuMi0xLjQtMjQuNS0yLTM2LjgtMi03My4yIDAtMTQ2LjQgMjQuMS0yMDYuNSA3Mi4zYTMzLjIzIDMzLjIzIDAgMCAwLTIuNyA0OS40bDE4MS43IDE4MS43LTIxNS40IDIxNS4yYTE1LjggMTUuOCAwIDAgMC00LjYgOS44bC0zLjQgMzcuMmMtLjkgOS40IDYuNiAxNy40IDE1LjkgMTcuNC41IDAgMSAwIDEuNS0uMWwzNy4yLTMuNGMzLjctLjMgNy4yLTIgOS44LTQuNmwyMTUuNC0yMTUuNCAxODEuNyAxODEuN2M2LjUgNi41IDE1IDkuNyAyMy41IDkuNyA5LjcgMCAxOS4zLTQuMiAyNS45LTEyLjQgNTYuMy03MC4zIDc5LjctMTU4LjMgNzAuMi0yNDMuNGwxNjEuMS0xNjEuMWMxMi45LTEyLjggMTIuOS0zMy44IDAtNDYuOHpNNjY2LjIgNTQ5LjNsLTI0LjUgMjQuNSAzLjggMzQuNGEyNTkuOTIgMjU5LjkyIDAgMCAxLTMwLjQgMTUzLjlMMjYyIDQwOC44YzEyLjktNy4xIDI2LjMtMTMuMSA0MC4zLTE3LjkgMjcuMi05LjQgNTUuNy0xNC4xIDg0LjctMTQuMSA5LjYgMCAxOS4zLjUgMjguOSAxLjZsMzQuNCAzLjggMjQuNS0yNC41TDYwOC41IDIyNCA4MDAgNDE1LjUgNjY2LjIgNTQ5LjN6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLlByb3BlcnR5U2FmZXR5VHdvVG9uZSA9IGdldEljb24oJ3Byb3BlcnR5LXNhZmV0eScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODY2LjkgMTY5LjlMNTI3LjEgNTQuMUM1MjMgNTIuNyA1MTcuNSA1MiA1MTIgNTJzLTExIC43LTE1LjEgMi4xTDE1Ny4xIDE2OS45Yy04LjMgMi44LTE1LjEgMTIuNC0xNS4xIDIxLjJ2NDgyLjRjMCA4LjggNS43IDIwLjQgMTIuNiAyNS45TDQ5OS4zIDk2OGMzLjUgMi43IDggNC4xIDEyLjYgNC4xczkuMi0xLjQgMTIuNi00LjFsMzQ0LjctMjY4LjZjNi45LTUuNCAxMi42LTE3IDEyLjYtMjUuOVYxOTEuMWMuMi04LjgtNi42LTE4LjMtMTQuOS0yMS4yek04MTAgNjU0LjNMNTEyIDg4Ni41IDIxNCA2NTQuM1YyMjYuN2wyOTgtMTAxLjYgMjk4IDEwMS42djQyNy42eidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTIxNCAyMjYuN3Y0MjcuNmwyOTggMjMyLjIgMjk4LTIzMi4yVjIyNi43TDUxMiAxMjUuMSAyMTQgMjI2Ljd6TTU5My45IDMxOGg0NWM1LjUgMCAxMCA0LjUgMTAgMTAgLjEgMS43LS4zIDMuMy0xLjEgNC44bC04Ny43IDE2MS4xaDQ1LjdjNS41IDAgMTAgNC41IDEwIDEwdjIxLjNjMCA1LjUtNC41IDEwLTEwIDEwaC02My40djI5LjdoNjMuNGM1LjUgMCAxMCA0LjUgMTAgMTB2MjEuM2MwIDUuNS00LjUgMTAtMTAgMTBoLTYzLjRWNjU4YzAgNS41LTQuNSAxMC0xMCAxMGgtNDEuM2MtNS41IDAtMTAtNC41LTEwLTEwdi01MS44SDQxOGMtNS41IDAtMTAtNC41LTEwLTEwdi0yMS4zYzAtNS41IDQuNS0xMCAxMC0xMGg2My4xdi0yOS43SDQxOGMtNS41IDAtMTAtNC41LTEwLTEwdi0yMS4zYzAtNS41IDQuNS0xMCAxMC0xMGg0NS4ybC04OC0xNjEuMWMtMi42LTQuOC0uOS0xMC45IDQtMTMuNiAxLjUtLjggMy4xLTEuMiA0LjgtMS4yaDQ2YzMuOCAwIDcuMiAyLjEgOC45IDUuNWw3Mi45IDE0NC4zTDU4NSAzMjMuNWExMCAxMCAwIDAgMSA4LjktNS41eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ000MzguOSAzMjMuNWE5Ljg4IDkuODggMCAwIDAtOC45LTUuNWgtNDZjLTEuNyAwLTMuMy40LTQuOCAxLjItNC45IDIuNy02LjYgOC44LTQgMTMuNmw4OCAxNjEuMUg0MThjLTUuNSAwLTEwIDQuNS0xMCAxMHYyMS4zYzAgNS41IDQuNSAxMCAxMCAxMGg2My4xdjI5LjdINDE4Yy01LjUgMC0xMCA0LjUtMTAgMTB2MjEuM2MwIDUuNSA0LjUgMTAgMTAgMTBoNjMuMVY2NThjMCA1LjUgNC41IDEwIDEwIDEwaDQxLjNjNS41IDAgMTAtNC41IDEwLTEwdi01MS44aDYzLjRjNS41IDAgMTAtNC41IDEwLTEwdi0yMS4zYzAtNS41LTQuNS0xMC0xMC0xMGgtNjMuNHYtMjkuN2g2My40YzUuNSAwIDEwLTQuNSAxMC0xMHYtMjEuM2MwLTUuNS00LjUtMTAtMTAtMTBoLTQ1LjdsODcuNy0xNjEuMWMuOC0xLjUgMS4yLTMuMSAxLjEtNC44IDAtNS41LTQuNS0xMC0xMC0xMGgtNDVhMTAgMTAgMCAwIDAtOC45IDUuNWwtNzMuMiAxNDQuMy03Mi45LTE0NC4zeidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5RdWVzdGlvbkNpcmNsZVR3b1RvbmUgPSBnZXRJY29uKCdxdWVzdGlvbi1jaXJjbGUnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001MTIgMTQwYy0yMDUuNCAwLTM3MiAxNjYuNi0zNzIgMzcyczE2Ni42IDM3MiAzNzIgMzcyIDM3Mi0xNjYuNiAzNzItMzcyLTE2Ni42LTM3Mi0zNzItMzcyem0wIDYzMmMtMjIuMSAwLTQwLTE3LjktNDAtNDBzMTcuOS00MCA0MC00MCA0MCAxNy45IDQwIDQwLTE3LjkgNDAtNDAgNDB6bTYyLjktMjE5LjVhNDguMyA0OC4zIDAgMCAwLTMwLjkgNDQuOFY2MjBjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di0yMS41YzAtMjMuMSA2LjctNDUuOSAxOS45LTY0LjkgMTIuOS0xOC42IDMwLjktMzIuOCA1Mi4xLTQwLjkgMzQtMTMuMSA1Ni00MS42IDU2LTcyLjcgMC00NC4xLTQzLjEtODAtOTYtODBzLTk2IDM1LjktOTYgODB2Ny42YzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOFY0MjBjMC0zOS4zIDE3LjItNzYgNDguNC0xMDMuM0M0MzAuNCAyOTAuNCA0NzAgMjc2IDUxMiAyNzZzODEuNiAxNC41IDExMS42IDQwLjdDNjU0LjggMzQ0IDY3MiAzODAuNyA2NzIgNDIwYzAgNTcuOC0zOC4xIDEwOS44LTk3LjEgMTMyLjV6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTQ3MiA3MzJhNDAgNDAgMCAxIDAgODAgMCA0MCA0MCAwIDEgMC04MCAwem0xNTEuNi00MTUuM0M1OTMuNiAyOTAuNSA1NTQgMjc2IDUxMiAyNzZzLTgxLjYgMTQuNC0xMTEuNiA0MC43QzM2OS4yIDM0NCAzNTIgMzgwLjcgMzUyIDQyMHY3LjZjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOFY0MjBjMC00NC4xIDQzLjEtODAgOTYtODBzOTYgMzUuOSA5NiA4MGMwIDMxLjEtMjIgNTkuNi01NiA3Mi43LTIxLjIgOC4xLTM5LjIgMjIuMy01Mi4xIDQwLjktMTMuMiAxOS0xOS45IDQxLjgtMTkuOSA2NC45VjYyMGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04di0yMi43YTQ4LjMgNDguMyAwIDAgMSAzMC45LTQ0LjhjNTktMjIuNyA5Ny4xLTc0LjcgOTcuMS0xMzIuNSAwLTM5LjMtMTcuMi03Ni00OC40LTEwMy4zeidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5SZWNvbmNpbGlhdGlvblR3b1RvbmUgPSBnZXRJY29uKCdyZWNvbmNpbGlhdGlvbicsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ003NDAgMzQ0SDQwNFYyNDBIMzA0djE2MGgxNzZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2MzYwaDMyOFYyNDBINzQwdjEwNHpNNTg0IDQ0OGMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djU2YzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOHYtNTZ6bTkyIDMwMWMtNTAuOCAwLTkyLTQxLjItOTItOTJzNDEuMi05MiA5Mi05MiA5MiA0MS4yIDkyIDkyLTQxLjIgOTItOTIgOTJ6bTkyLTM0MXY5NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTk2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh6J1xuICAgIF0sIFtzZWNvbmRhcnlDb2xvciwgJ002NDIgNjU3YTM0IDM0IDAgMSAwIDY4IDAgMzQgMzQgMCAxIDAtNjggMHonXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTkyIDUxMmg0OGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDh6bTExMi0xMDR2OTZjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOHYtOTZjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004ODAgMTY4SDY2OGMwLTMwLjktMjUuMS01Ni01Ni01NmgtODBjLTMwLjkgMC01NiAyNS4xLTU2IDU2SDI2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MjAwaC04OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMzNmMxNy43IDAgMzItMTQuMyAzMi0zMnYtMTZoMzY4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIwMGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQxMiA2NGg3MnYtNTZoNjR2NTZoNzJ2NDhINDY4di00OHptLTIwIDYxNkgxNzZWNjE2aDI3MnYyMzJ6bTAtMjk2SDE3NnYtODhoMjcydjg4em0zOTIgMjQwSDUxMlY0MzJjMC0xNy43LTE0LjMtMzItMzItMzJIMzA0VjI0MGgxMDB2MTA0aDMzNlYyNDBoMTAwdjU1MnonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNjc2IDU2NWMtNTAuOCAwLTkyIDQxLjItOTIgOTJzNDEuMiA5MiA5MiA5MiA5Mi00MS4yIDkyLTkyLTQxLjItOTItOTItOTJ6bTAgMTI2Yy0xOC44IDAtMzQtMTUuMi0zNC0zNHMxNS4yLTM0IDM0LTM0IDM0IDE1LjIgMzQgMzQtMTUuMiAzNC0zNCAzNHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuUmVkRW52ZWxvcGVUd29Ub25lID0gZ2V0SWNvbigncmVkLWVudmVsb3BlJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004MzIgNjRIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgODI0SDIzMlYxOTMuMWwyNjAuMyAyMDQuMWMxMS42IDkuMSAyNy45IDkuMSAzOS41IDBMNzkyIDE5My4xVjg4OHptMC03NTEuM2gtMzEuN0w1MTIgMzMxLjMgMjYzLjcgMTM2LjdIMjMydi0uN2g1NjB2Ljd6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNDkyLjMgMzk3LjJMMjMyIDE5My4xVjg4OGg1NjBWMTkzLjFMNTMxLjggMzk3LjJhMzEuOTkgMzEuOTkgMCAwIDEtMzkuNSAwem05OS40IDYwLjloNDcuOGE4LjQ1IDguNDUgMCAwIDEgNy40IDEyLjRsLTg3LjIgMTYxaDQ1LjljNC42IDAgOC40IDMuOCA4LjQgOC40VjY2NWMwIDQuNi0zLjggOC40LTguNCA4LjRoLTYzLjNWNzAyaDYzLjNjNC42IDAgOC40IDMuOCA4LjQgOC40djI1Yy4yIDQuNy0zLjUgOC41LTguMiA4LjVoLTYzLjN2NDkuOWMwIDQuNi0zLjggOC40LTguNCA4LjRoLTQzLjdjLTQuNiAwLTguNC0zLjgtOC40LTguNHYtNDkuOWgtNjNjLTQuNiAwLTguNC0zLjgtOC40LTguNHYtMjUuMWMwLTQuNiAzLjgtOC40IDguNC04LjRoNjN2LTI4LjZoLTYzYy00LjYgMC04LjQtMy44LTguNC04LjR2LTI1LjFjMC00LjYgMy44LTguNCA4LjQtOC40aDQ1LjRMMzc3IDQ3MC40YTguNCA4LjQgMCAwIDEgMy40LTExLjRjMS4zLS42IDIuNi0xIDMuOS0xaDQ4LjhjMy4yIDAgNi4xIDEuOCA3LjUgNC42bDcxLjcgMTQyIDcxLjktMTQxLjlhOC42IDguNiAwIDAgMSA3LjUtNC42eidcbiAgICBdLCBbc2Vjb25kYXJ5Q29sb3IsICdNMjMyIDEzNi43aDMxLjdMNTEyIDMzMS4zbDI0OC4zLTE5NC42SDc5MnYtLjdIMjMyeiddLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ000NDAuNiA0NjIuNmE4LjM4IDguMzggMCAwIDAtNy41LTQuNmgtNDguOGMtMS4zIDAtMi42LjQtMy45IDFhOC40IDguNCAwIDAgMC0zLjQgMTEuNGw4Ny40IDE2MS4xSDQxOWMtNC42IDAtOC40IDMuOC04LjQgOC40VjY2NWMwIDQuNiAzLjggOC40IDguNCA4LjRoNjNWNzAyaC02M2MtNC42IDAtOC40IDMuOC04LjQgOC40djI1LjFjMCA0LjYgMy44IDguNCA4LjQgOC40aDYzdjQ5LjljMCA0LjYgMy44IDguNCA4LjQgOC40aDQzLjdjNC42IDAgOC40LTMuOCA4LjQtOC40di00OS45aDYzLjNjNC43IDAgOC40LTMuOCA4LjItOC41di0yNWMwLTQuNi0zLjgtOC40LTguNC04LjRoLTYzLjN2LTI4LjZoNjMuM2M0LjYgMCA4LjQtMy44IDguNC04LjR2LTI1LjFjMC00LjYtMy44LTguNC04LjQtOC40aC00NS45bDg3LjItMTYxYTguNDUgOC40NSAwIDAgMC03LjQtMTIuNGgtNDcuOGMtMy4xIDAtNiAxLjgtNy41IDQuNmwtNzEuOSAxNDEuOS03MS43LTE0MnonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuUmVzdFR3b1RvbmUgPSBnZXRJY29uKCdyZXN0JywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTMyNi40IDg0NGgzNjMuMmw0NC4zLTUyMEgyODJsNDQuNCA1MjB6TTUwOCA0MTZjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDRzLTY0LjUgMTQ0LTE0NCAxNDQtMTQ0LTY0LjUtMTQ0LTE0NCA2NC41LTE0NCAxNDQtMTQ0eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MDggNzA0Yzc5LjUgMCAxNDQtNjQuNSAxNDQtMTQ0cy02NC41LTE0NC0xNDQtMTQ0LTE0NCA2NC41LTE0NCAxNDQgNjQuNSAxNDQgMTQ0IDE0NHptMC0yMjRjNDQuMiAwIDgwIDM1LjggODAgODBzLTM1LjggODAtODAgODAtODAtMzUuOC04MC04MCAzNS44LTgwIDgwLTgweidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004MzIgMjU2aC0yOC4xbC0zNS43LTEyMC45Yy00LTEzLjctMTYuNS0yMy4xLTMwLjctMjMuMWgtNDUxYy0xNC4zIDAtMjYuOCA5LjQtMzAuNyAyMy4xTDIyMC4xIDI1NkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjI4YzAgNC40IDMuNiA4IDggOGg0NS44bDQ3LjcgNTU4LjdhMzIgMzIgMCAwIDAgMzEuOSAyOS4zaDQyOS4yYTMyIDMyIDAgMCAwIDMxLjktMjkuM0w4MDIuMiAzMjRIODU2YzQuNCAwIDgtMy42IDgtOHYtMjhjMC0xNy43LTE0LjMtMzItMzItMzJ6bS01MTguNi03NmgzOTcuMmwyMi40IDc2SDI5MWwyMi40LTc2em0zNzYuMiA2NjRIMzI2LjRMMjgyIDMyNGg0NTEuOWwtNDQuMyA1MjB6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLlJpZ2h0Q2lyY2xlVHdvVG9uZSA9IGdldEljb24oJ3JpZ2h0LWNpcmNsZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001MTIgMTQwYy0yMDUuNCAwLTM3MiAxNjYuNi0zNzIgMzcyczE2Ni42IDM3MiAzNzIgMzcyIDM3Mi0xNjYuNiAzNzItMzcyLTE2Ni42LTM3Mi0zNzItMzcyem0xNTQuNyAzNzguNGwtMjQ2IDE3OGMtNS4zIDMuOC0xMi43IDAtMTIuNy02LjVWNjQzYzAtMTAuMiA0LjktMTkuOSAxMy4yLTI1LjlMNTY2LjYgNTEyIDQyMS4yIDQwNi44Yy04LjMtNi0xMy4yLTE1LjYtMTMuMi0yNS45VjMzNGMwLTYuNSA3LjQtMTAuMyAxMi43LTYuNWwyNDYgMTc4YzQuNCAzLjIgNC40IDkuNyAwIDEyLjl6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNjY2LjcgNTA1LjVsLTI0Ni0xNzhjLTUuMy0zLjgtMTIuNyAwLTEyLjcgNi41djQ2LjljMCAxMC4zIDQuOSAxOS45IDEzLjIgMjUuOUw1NjYuNiA1MTIgNDIxLjIgNjE3LjFjLTguMyA2LTEzLjIgMTUuNy0xMy4yIDI1Ljl2NDYuOWMwIDYuNSA3LjQgMTAuMyAxMi43IDYuNWwyNDYtMTc4YzQuNC0zLjIgNC40LTkuNyAwLTEyLjl6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLlJvY2tldFR3b1RvbmUgPSBnZXRJY29uKCdyb2NrZXQnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMjYxLjcgNjIxLjRjLTkuNCAxNC42LTE3IDMwLjMtMjIuNSA0Ni42SDMyNFY1NTguN2MtMjQuOCAxNi4yLTQ2IDM3LjUtNjIuMyA2Mi43ek03MDAgNTU4LjdWNjY4aDg0LjhjLTUuNS0xNi4zLTEzLjEtMzItMjIuNS00Ni42YTIxMS42IDIxMS42IDAgMCAwLTYyLjMtNjIuN3ptLTY0LTIzOS45bC0xMjQtMTQ3LTEyNCAxNDdWNjY4aDI0OFYzMTguOHpNNTEyIDQ0OGE0OC4wMSA0OC4wMSAwIDAgMSAwLTk2IDQ4LjAxIDQ4LjAxIDAgMCAxIDAgOTZ6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg2NCA3MzZjMC0xMTEuNi02NS40LTIwOC0xNjAtMjUyLjlWMzE3LjNjMC0xNS4xLTUuMy0yOS43LTE1LjEtNDEuMkw1MzYuNSA5NS40QzUzMC4xIDg3LjggNTIxIDg0IDUxMiA4NHMtMTguMSAzLjgtMjQuNSAxMS40TDMzNS4xIDI3Ni4xYTYzLjk3IDYzLjk3IDAgMCAwLTE1LjEgNDEuMnYxNjUuOEMyMjUuNCA1MjggMTYwIDYyNC40IDE2MCA3MzZoMTU2LjVjLTIuMyA3LjItMy41IDE1LTMuNSAyMy44IDAgMjIuMSA3LjYgNDMuNyAyMS40IDYwLjhhOTcuMiA5Ny4yIDAgMCAwIDQzLjEgMzAuNmMyMy4xIDU0IDc1LjYgODguOCAxMzQuNSA4OC44IDI5LjEgMCA1Ny4zLTguNiA4MS40LTI0LjggMjMuNi0xNS44IDQxLjktMzcuOSA1My02NGE5NyA5NyAwIDAgMCA0My4xLTMwLjUgOTcuNTIgOTcuNTIgMCAwIDAgMjEuNC02MC44YzAtOC40LTEuMS0xNi40LTMuMS0yMy44TDg2NCA3MzZ6bS01NDAtNjhoLTg0LjhjNS41LTE2LjMgMTMuMS0zMiAyMi41LTQ2LjYgMTYuMy0yNS4yIDM3LjUtNDYuNSA2Mi4zLTYyLjdWNjY4em02NC0xODQuOVYzMTguOGwxMjQtMTQ3IDEyNCAxNDdWNjY4SDM4OFY0ODMuMXptMjQwLjEgMzAxLjFjLTUuMiAzLTExLjIgNC4yLTE3LjEgMy40bC0xOS41LTIuNC0yLjggMTkuNGMtNS40IDM3LjktMzguNCA2Ni41LTc2LjcgNjYuNXMtNzEuMy0yOC42LTc2LjctNjYuNWwtMi44LTE5LjUtMTkuNSAyLjVhMjcuNyAyNy43IDAgMCAxLTE3LjEtMy41Yy04LjctNS0xNC4xLTE0LjMtMTQuMS0yNC40IDAtMTAuNiA1LjktMTkuNCAxNC42LTIzLjhoMjMxLjNjOC44IDQuNSAxNC42IDEzLjMgMTQuNiAyMy44LS4xIDEwLjItNS41IDE5LjYtMTQuMiAyNC41ek03MDAgNjY4VjU1OC43YTIxMS42IDIxMS42IDAgMCAxIDYyLjMgNjIuN2M5LjQgMTQuNiAxNyAzMC4zIDIyLjUgNDYuNkg3MDB6J1xuICAgIF0sIFtwcmltYXJ5Q29sb3IsICdNNDY0IDQwMGE0OCA0OCAwIDEgMCA5NiAwIDQ4IDQ4IDAgMSAwLTk2IDB6J10pO1xufSk7XG5leHBvcnRzLlJpZ2h0U3F1YXJlVHdvVG9uZSA9IGdldEljb24oJ3JpZ2h0LXNxdWFyZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNzI4SDE4NFYxODRoNjU2djY1NnonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00xODQgODQwaDY1NlYxODRIMTg0djY1NnptMjE2LTE5Ni45YzAtMTAuMiA0LjktMTkuOSAxMy4yLTI1LjlMNTU4LjYgNTEyIDQxMy4yIDQwNi44Yy04LjMtNi0xMy4yLTE1LjYtMTMuMi0yNS45VjMzNGMwLTYuNSA3LjQtMTAuMyAxMi43LTYuNWwyNDYgMTc4YzQuNCAzLjIgNC40IDkuNyAwIDEyLjlsLTI0NiAxNzhjLTUuMyAzLjktMTIuNy4xLTEyLjctNi40di00Ni45eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ000MTIuNyA2OTYuNGwyNDYtMTc4YzQuNC0zLjIgNC40LTkuNyAwLTEyLjlsLTI0Ni0xNzhjLTUuMy0zLjgtMTIuNyAwLTEyLjcgNi41djQ2LjljMCAxMC4zIDQuOSAxOS45IDEzLjIgMjUuOUw1NTguNiA1MTIgNDEzLjIgNjE3LjJjLTguMyA2LTEzLjIgMTUuNy0xMy4yIDI1LjlWNjkwYzAgNi41IDcuNCAxMC4zIDEyLjcgNi40eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5TYWZldHlDZXJ0aWZpY2F0ZVR3b1RvbmUgPSBnZXRJY29uKCdzYWZldHktY2VydGlmaWNhdGUnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg2Ni45IDE2OS45TDUyNy4xIDU0LjFDNTIzIDUyLjcgNTE3LjUgNTIgNTEyIDUycy0xMSAuNy0xNS4xIDIuMUwxNTcuMSAxNjkuOWMtOC4zIDIuOC0xNS4xIDEyLjQtMTUuMSAyMS4ydjQ4Mi40YzAgOC44IDUuNyAyMC40IDEyLjYgMjUuOUw0OTkuMyA5NjhjMy41IDIuNyA4IDQuMSAxMi42IDQuMXM5LjItMS40IDEyLjYtNC4xbDM0NC43LTI2OC42YzYuOS01LjQgMTIuNi0xNyAxMi42LTI1LjlWMTkxLjFjLjItOC44LTYuNi0xOC4zLTE0LjktMjEuMnpNODEwIDY1NC4zTDUxMiA4ODYuNSAyMTQgNjU0LjNWMjI2LjdsMjk4LTEwMS42IDI5OCAxMDEuNnY0MjcuNnonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00yMTQgMjI2Ljd2NDI3LjZsMjk4IDIzMi4yIDI5OC0yMzIuMlYyMjYuN0w1MTIgMTI1LjEgMjE0IDIyNi43ek02MzIuOCAzMjhINjg4YzYuNSAwIDEwLjMgNy40IDYuNSAxMi43TDQ4MS45IDYzMy40YTE2LjEgMTYuMSAwIDAgMS0yNiAwbC0xMjYuNC0xNzRjLTMuOC01LjMgMC0xMi43IDYuNS0xMi43aDU1LjJjNS4yIDAgMTAgMi41IDEzIDYuNmw2NC43IDg5LjEgMTUwLjktMjA3LjhjMy00LjEgNy45LTYuNiAxMy02LjZ6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTQwNC4yIDQ1My4zYy0zLTQuMS03LjgtNi42LTEzLTYuNkgzMzZjLTYuNSAwLTEwLjMgNy40LTYuNSAxMi43bDEyNi40IDE3NGExNi4xIDE2LjEgMCAwIDAgMjYgMGwyMTIuNi0yOTIuN2MzLjgtNS4zIDAtMTIuNy02LjUtMTIuN2gtNTUuMmMtNS4xIDAtMTAgMi41LTEzIDYuNkw0NjguOSA1NDIuNGwtNjQuNy04OS4xeidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5TYXZlVHdvVG9uZSA9IGdldEljb24oJ3NhdmUnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNzA0IDMyMGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE4NEgxODR2NjU2aDY1NlYzNDEuOGwtMTM2LTEzNlYzMjB6TTUxMiA3MzBjLTc5LjUgMC0xNDQtNjQuNS0xNDQtMTQ0czY0LjUtMTQ0IDE0NC0xNDQgMTQ0IDY0LjUgMTQ0IDE0NC02NC41IDE0NC0xNDQgMTQ0eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MTIgNDQyYy03OS41IDAtMTQ0IDY0LjUtMTQ0IDE0NHM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDQtNjQuNS0xNDQtMTQ0LTE0NHptMCAyMjRjLTQ0LjIgMC04MC0zNS44LTgwLTgwczM1LjgtODAgODAtODAgODAgMzUuOCA4MCA4MC0zNS44IDgwLTgwIDgweidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004OTMuMyAyOTMuM0w3MzAuNyAxMzAuN2MtLjctLjctMS40LTEuMy0yLjEtMi0uMS0uMS0uMy0uMi0uNC0uMy0uNy0uNy0xLjUtMS4zLTIuMi0xLjlhNjQgNjQgMCAwIDAtMjItMTEuN1YxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMzOC41YzAtMTctNi43LTMzLjItMTguNy00NS4yek0zODQgMTg0aDI1NnYxMDRIMzg0VjE4NHptNDU2IDY1NkgxODRWMTg0aDEzNnYxMzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIwNS44bDEzNiAxMzZWODQweidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5TY2hlZHVsZVR3b1RvbmUgPSBnZXRJY29uKCdzY2hlZHVsZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ003NjggMzUyYzAgNC40LTMuNiA4LTggOGgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNTZINTQ4djU2YzAgNC40LTMuNiA4LTggOGgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNTZIMzI4djU2YzAgNC40LTMuNiA4LTggOGgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNTZIMTM2djQ5Nmg3NTJWMjk2SDc2OHY1NnpNNDI0IDY4OGMwIDQuNC0zLjYgOC04IDhIMjMyYy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGgxODRjNC40IDAgOCAzLjYgOCA4djQ4em0wLTEzNmMwIDQuNC0zLjYgOC04IDhIMjMyYy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGgxODRjNC40IDAgOCAzLjYgOCA4djQ4em0zNzQuNC05MS4ybC0xNjUgMjI4LjdhMTUuOSAxNS45IDAgMCAxLTI1LjggMEw0OTMuNSA1MzEuM2MtMy44LTUuMyAwLTEyLjcgNi41LTEyLjdoNTQuOWM1LjEgMCA5LjkgMi40IDEyLjkgNi42bDUyLjggNzMuMSAxMDMuNi0xNDMuN2MzLTQuMSA3LjgtNi42IDEyLjgtNi41aDU0LjljNi41IDAgMTAuMyA3LjQgNi41IDEyLjd6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTcyNC4yIDQ1NC42TDYyMC42IDU5OC4zbC01Mi44LTczLjFjLTMtNC4yLTcuOC02LjYtMTIuOS02LjZINTAwYy02LjUgMC0xMC4zIDcuNC02LjUgMTIuN2wxMTQuMSAxNTguMmExNS45IDE1LjkgMCAwIDAgMjUuOCAwbDE2NS0yMjguN2MzLjgtNS4zIDAtMTIuNy02LjUtMTIuN0g3MzdjLTUtLjEtOS44IDIuNC0xMi44IDYuNXpNNDE2IDQ5NkgyMzJjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoMTg0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ005MjggMjI0SDc2OHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2SDU0OHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2SDMyOHYtNTZjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djU2SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY1NzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoODMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDU2OEgxMzZWMjk2aDEyMHY1NmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di01NmgxNDh2NTZjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNTZoMTQ4djU2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTU2aDEyMHY0OTZ6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTQxNiA2MzJIMjMyYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDE4NGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuU2VjdXJpdHlTY2FuVHdvVG9uZSA9IGdldEljb24oJ3NlY3VyaXR5LXNjYW4nLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg2Ni45IDE2OS45TDUyNy4xIDU0LjFDNTIzIDUyLjcgNTE3LjUgNTIgNTEyIDUycy0xMSAuNy0xNS4xIDIuMUwxNTcuMSAxNjkuOWMtOC4zIDIuOC0xNS4xIDEyLjQtMTUuMSAyMS4ydjQ4Mi40YzAgOC44IDUuNyAyMC40IDEyLjYgMjUuOUw0OTkuMyA5NjhjMy41IDIuNyA4IDQuMSAxMi42IDQuMXM5LjItMS40IDEyLjYtNC4xbDM0NC43LTI2OC42YzYuOS01LjQgMTIuNi0xNyAxMi42LTI1LjlWMTkxLjFjLjItOC44LTYuNi0xOC4zLTE0LjktMjEuMnpNODEwIDY1NC4zTDUxMiA4ODYuNSAyMTQgNjU0LjNWMjI2LjdsMjk4LTEwMS42IDI5OCAxMDEuNnY0MjcuNnonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ000NjAuNyA0NTEuMWE4MC4xIDgwLjEgMCAxIDAgMTYwLjIgMCA4MC4xIDgwLjEgMCAxIDAtMTYwLjIgMHonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00yMTQgMjI2Ljd2NDI3LjZsMjk4IDIzMi4yIDI5OC0yMzIuMlYyMjYuN0w1MTIgMTI1LjEgMjE0IDIyNi43em00MjguNyAxMjIuNWM1Ni4zIDU2LjMgNTYuMyAxNDcuNSAwIDIwMy44LTQ4LjUgNDguNS0xMjMgNTUuMi0xNzguNiAyMC4xbC03Ny41IDc3LjVhOC4wMyA4LjAzIDAgMCAxLTExLjMgMGwtMzQtMzRhOC4wMyA4LjAzIDAgMCAxIDAtMTEuM2w3Ny41LTc3LjVjLTM1LjEtNTUuNy0yOC40LTEzMC4xIDIwLjEtMTc4LjYgNTYuMy01Ni4zIDE0Ny41LTU2LjMgMjAzLjggMHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNDE4LjggNTI3LjhsLTc3LjUgNzcuNWE4LjAzIDguMDMgMCAwIDAgMCAxMS4zbDM0IDM0YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsNzcuNS03Ny41YzU1LjYgMzUuMSAxMzAuMSAyOC40IDE3OC42LTIwLjEgNTYuMy01Ni4zIDU2LjMtMTQ3LjUgMC0yMDMuOC01Ni4zLTU2LjMtMTQ3LjUtNTYuMy0yMDMuOCAwLTQ4LjUgNDguNS01NS4yIDEyMi45LTIwLjEgMTc4LjZ6bTY1LjQtMTMzLjNhODAuMSA4MC4xIDAgMCAxIDExMy4zIDAgODAuMSA4MC4xIDAgMCAxIDAgMTEzLjNjLTMxLjMgMzEuMy04MiAzMS4zLTExMy4zIDBzLTMxLjMtODIgMC0xMTMuM3onXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuU2V0dGluZ1R3b1RvbmUgPSBnZXRJY29uKCdzZXR0aW5nJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTg1OS4zIDU2OS43bC4yLjFjMy4xLTE4LjkgNC42LTM4LjIgNC42LTU3LjMgMC0xNy4xLTEuMy0zNC4zLTMuNy01MS4xIDIuNCAxNi43IDMuNiAzMy42IDMuNiA1MC41IDAgMTkuNC0xLjYgMzguOC00LjcgNTcuOHpNOTkgMzk4LjFjLS41LS40LS45LS44LTEuNC0xLjMuNy43IDEuNCAxLjQgMi4yIDIuMWw2NS41IDU1Ljl2LS4xTDk5IDM5OC4xem01MzYuNi0yMTZoLjFsLTE1LjUtODMuOGMtLjItMS0uNC0xLjktLjctMi44LjEuNS4zIDEuMS40IDEuNmwxNS43IDg1em01NCA1NDYuNWwzMS40LTI1LjggOTIuOCAzMi45YzE3LTIyLjkgMzEuMy00Ny41IDQyLjYtNzMuNmwtNzQuNy02My45IDYuNi00MC4xYzIuNS0xNS4xIDMuOC0zMC42IDMuOC00Ni4xcy0xLjMtMzEtMy44LTQ2LjFsLTYuNS0zOS45IDc0LjctNjMuOWMtMTEuNC0yNi0yNS42LTUwLjctNDIuNi03My42bC05Mi44IDMyLjktMzEuNC0yNS44Yy0yMy45LTE5LjYtNTAuNi0zNS03OS4zLTQ1LjhsLTM4LjEtMTQuMy0xNy45LTk3YTM3Ny41IDM3Ny41IDAgMCAwLTg1IDBsLTE3LjkgOTcuMi0zNy45IDE0LjNjLTI4LjUgMTAuOC01NSAyNi4yLTc4LjcgNDUuN2wtMzEuNCAyNS45LTkzLjQtMzMuMmMtMTcgMjIuOS0zMS4zIDQ3LjUtNDIuNiA3My42bDc1LjUgNjQuNS02LjUgNDBjLTIuNSAxNC45LTMuNyAzMC4yLTMuNyA0NS41IDAgMTUuMiAxLjMgMzAuNiAzLjcgNDUuNWw2LjUgNDAtNzUuNSA2NC41YzExLjQgMjYgMjUuNiA1MC43IDQyLjYgNzMuNmw5My40LTMzLjIgMzEuNCAyNS45YzIzLjcgMTkuNSA1MC4yIDM0LjkgNzguNyA0NS43bDM3LjggMTQuNSAxNy45IDk3LjJjMjguMiAzLjIgNTYuOSAzLjIgODUgMGwxNy45LTk3IDM4LjEtMTQuM2MyOC44LTEwLjggNTUuNC0yNi4yIDc5LjMtNDUuOHptLTE3Ny4xLTUwLjNjLTMwLjUgMC01OS4yLTcuOC04NC4zLTIxLjVDMzczLjMgNjI3IDMzNiA1NjguOSAzMzYgNTAyYzAtOTcuMiA3OC44LTE3NiAxNzYtMTc2IDY2LjkgMCAxMjUgMzcuMyAxNTQuOCA5Mi4yIDEzLjcgMjUgMjEuNSA1My43IDIxLjUgODQuMyAwIDk3LjEtNzguNyAxNzUuOC0xNzUuOCAxNzUuOHpNMjA3LjIgODEyLjhjLTUuNSAxLjktMTEuMiAyLjMtMTYuNiAxLjIgNS43IDEuMiAxMS43IDEgMTcuNS0xbDgxLjQtMjljLS4xLS4xLS4zLS4yLS40LS4zbC04MS45IDI5LjF6bTcxNy42LTQxNC43bC02NS41IDU2YzAgLjIuMS41LjEuN2w2NS40LTU1LjljNy4xLTYuMSAxMS4xLTE0LjkgMTEuMi0yNC0uMyA4LjgtNC4zIDE3LjMtMTEuMiAyMy4yeidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTkzNS44IDY0Ni42Yy41IDQuNyAwIDkuNS0xLjcgMTQuMWwtLjkgMi42YTQ0Ni4wMiA0NDYuMDIgMCAwIDEtNzkuNyAxMzcuOWwtMS44IDIuMWEzMiAzMiAwIDAgMS0zNS4xIDkuNWwtODEuMy0yOC45YTM1MCAzNTAgMCAwIDEtOTkuNyA1Ny42bC0xNS43IDg1YTMyLjA1IDMyLjA1IDAgMCAxLTI1LjggMjUuN2wtMi43LjVhNDQ1LjIgNDQ1LjIgMCAwIDEtNzkuMiA3LjFoLjNjMjYuNyAwIDUzLjQtMi40IDc5LjQtNy4xbDIuNy0uNWEzMi4wNSAzMi4wNSAwIDAgMCAyNS44LTI1LjdsMTUuNy04NC45YzM2LjItMTMuNiA2OS42LTMyLjkgOTkuNi01Ny41bDgxLjIgMjguOWEzMiAzMiAwIDAgMCAzNS4xLTkuNWwxLjgtMi4xYzM0LjgtNDEuMSA2MS41LTg3LjQgNzkuNi0xMzcuN2wuOS0yLjZjMS42LTQuNyAyLjEtOS43IDEuNS0xNC41eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ002ODggNTAyYzAtMzAuMy03LjctNTguOS0yMS4yLTgzLjhDNjM3IDM2My4zIDU3OC45IDMyNiA1MTIgMzI2Yy05Ny4yIDAtMTc2IDc4LjgtMTc2IDE3NiAwIDY2LjkgMzcuMyAxMjUgOTIuMiAxNTQuOCAyNC45IDEzLjUgNTMuNCAyMS4yIDgzLjggMjEuMiA5Ny4yIDAgMTc2LTc4LjggMTc2LTE3NnptLTI4OCAwYzAtMjkuOSAxMS43LTU4IDMyLjgtNzkuMkM0NTQgNDAxLjYgNDgyLjEgMzkwIDUxMiAzOTBjMjkuOSAwIDU4IDExLjYgNzkuMiAzMi44QTExMS42IDExMS42IDAgMCAxIDYyNCA1MDJjMCAyOS45LTExLjcgNTgtMzIuOCA3OS4yQTExMS42IDExMS42IDAgMCAxIDUxMiA2MTRjLTI5LjkgMC01OC0xMS43LTc5LjItMzIuOEExMTEuNiAxMTEuNiAwIDAgMSA0MDAgNTAyeidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001OTQuMSA5NTIuMmEzMi4wNSAzMi4wNSAwIDAgMCAyNS44LTI1LjdsMTUuNy04NWEzNTAgMzUwIDAgMCAwIDk5LjctNTcuNmw4MS4zIDI4LjlhMzIgMzIgMCAwIDAgMzUuMS05LjVsMS44LTIuMWMzNC44LTQxLjEgNjEuNi04Ny41IDc5LjctMTM3LjlsLjktMi42YzEuNy00LjYgMi4yLTkuNCAxLjctMTQuMS0uOS03LjktNC43LTE1LjQtMTEtMjAuOWwtNjUuMy01NS45LS4yLS4xYzMuMS0xOSA0LjctMzguNCA0LjctNTcuOCAwLTE2LjktMS4yLTMzLjktMy42LTUwLjUtLjMtMi4yLS43LTQuNC0xLTYuNiAwLS4yLS4xLS41LS4xLS43bDY1LjUtNTZjNi45LTUuOSAxMC45LTE0LjQgMTEuMi0yMy4yLjEtNC0uNS04LjEtMS45LTEybC0uOS0yLjZhNDQzLjc0IDQ0My43NCAwIDAgMC03OS43LTEzNy45bC0xLjgtMi4xYTMyLjEyIDMyLjEyIDAgMCAwLTM1LjEtOS41bC04MS4zIDI4LjljLTMwLTI0LjYtNjMuNC00NC05OS42LTU3LjZoLS4xbC0xNS43LTg1Yy0uMS0uNS0uMi0xLjEtLjQtMS42YTMyLjA4IDMyLjA4IDAgMCAwLTI1LjQtMjQuMWwtMi43LS41Yy01Mi4xLTkuNC0xMDYuOS05LjQtMTU5IDBsLTIuNy41YTMyLjA1IDMyLjA1IDAgMCAwLTI1LjggMjUuN2wtMTUuOCA4NS40YTM1MS44NiAzNTEuODYgMCAwIDAtOTkgNTcuNGwtODEuOS0yOS4xYTMyIDMyIDAgMCAwLTM1LjEgOS41bC0xLjggMi4xYTQ0Ni4wMiA0NDYuMDIgMCAwIDAtNzkuNyAxMzcuOWwtLjkgMi42YTMyLjA5IDMyLjA5IDAgMCAwIDcuOSAzMy45Yy41LjQuOS45IDEuNCAxLjNsNjYuMyA1Ni42di4xYy0zLjEgMTguOC00LjYgMzcuOS00LjYgNTcgMCAxOS4yIDEuNSAzOC40IDQuNiA1Ny4xTDk5IDYyNS41YTMyLjAzIDMyLjAzIDAgMCAwLTkuMyAzNS4ybC45IDIuNmMxOC4xIDUwLjQgNDQuOSA5Ni45IDc5LjcgMTM3LjlsMS44IDIuMWM0LjkgNS43IDExLjQgOS40IDE4LjUgMTAuNyA1LjQgMSAxMS4xLjcgMTYuNi0xLjJsODEuOS0yOS4xYy4xLjEuMy4yLjQuMyAyOS43IDI0LjMgNjIuOCA0My42IDk4LjYgNTcuMWwxNS44IDg1LjRhMzIuMDUgMzIuMDUgMCAwIDAgMjUuOCAyNS43bDIuNy41YzI2LjEgNC43IDUyLjggNy4xIDc5LjUgNy4xaC4zYzI2LjYgMCA1My4zLTIuNCA3OS4yLTcuMWwyLjctLjV6bS0zOS44LTY2LjVhMzc3LjUgMzc3LjUgMCAwIDEtODUgMGwtMTcuOS05Ny4yLTM3LjgtMTQuNWMtMjguNS0xMC44LTU1LTI2LjItNzguNy00NS43bC0zMS40LTI1LjktOTMuNCAzMy4yYy0xNy0yMi45LTMxLjItNDcuNi00Mi42LTczLjZsNzUuNS02NC41LTYuNS00MGMtMi40LTE0LjktMy43LTMwLjMtMy43LTQ1LjUgMC0xNS4zIDEuMi0zMC42IDMuNy00NS41bDYuNS00MC03NS41LTY0LjVjMTEuMy0yNi4xIDI1LjYtNTAuNyA0Mi42LTczLjZsOTMuNCAzMy4yIDMxLjQtMjUuOWMyMy43LTE5LjUgNTAuMi0zNC45IDc4LjctNDUuN2wzNy45LTE0LjMgMTcuOS05Ny4yYzI4LjEtMy4yIDU2LjgtMy4yIDg1IDBsMTcuOSA5NyAzOC4xIDE0LjNjMjguNyAxMC44IDU1LjQgMjYuMiA3OS4zIDQ1LjhsMzEuNCAyNS44IDkyLjgtMzIuOWMxNyAyMi45IDMxLjIgNDcuNiA0Mi42IDczLjZMNzgxLjggNDI2bDYuNSAzOS45YzIuNSAxNS4xIDMuOCAzMC42IDMuOCA0Ni4xcy0xLjMgMzEtMy44IDQ2LjFsLTYuNiA0MC4xIDc0LjcgNjMuOWEzNzAuMDMgMzcwLjAzIDAgMCAxLTQyLjYgNzMuNkw3MjEgNzAyLjhsLTMxLjQgMjUuOGMtMjMuOSAxOS42LTUwLjUgMzUtNzkuMyA0NS44bC0zOC4xIDE0LjMtMTcuOSA5N3onXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuU2hvcFR3b1RvbmUgPSBnZXRJY29uKCdzaG9wJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTgzOS41IDM0NGgtNjU1Yy0uMyAwLS41LjItLjUuNXY5MS4yYzAgNTkuOCA0OSAxMDguMyAxMDkuMyAxMDguMyA0MC43IDAgNzYuMi0yMiA5NS4xLTU0LjcgMi45LTUuMSA4LjQtOC4zIDE0LjMtOC4zczExLjMgMy4yIDE0LjMgOC4zYzE4LjggMzIuNyA1NC4zIDU0LjcgOTUgNTQuNyA0MC44IDAgNzYuNC0yMi4xIDk1LjEtNTQuOSAyLjktNSA4LjItOC4xIDEzLjktOC4xaC42YzUuOCAwIDExIDMuMSAxMy45IDguMSAxOC44IDMyLjggNTQuNCA1NC45IDk1LjIgNTQuOUM3OTEgNTQ0IDg0MCA0OTUuNSA4NDAgNDM1Ljd2LTkxLjJjMC0uMy0uMi0uNS0uNS0uNXonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODgyIDI3Mi4xVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgxNzRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjEyOC4xYy0xNi43IDEtMzAgMTQuOS0zMCAzMS45djEzMS43YTE3NyAxNzcgMCAwIDAgMTQuNCA3MC40YzQuMyAxMC4yIDkuNiAxOS44IDE1LjYgMjguOXYzNDVjMCAxNy42IDE0LjMgMzIgMzIgMzJoNjc2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjUzNWExNzUgMTc1IDAgMCAwIDE1LjYtMjguOWM5LjUtMjIuMyAxNC40LTQ2IDE0LjQtNzAuNFYzMDRjMC0xNy0xMy4zLTMwLjktMzAtMzEuOXpNMjE0IDE4NGg1OTZ2ODhIMjE0di04OHptMzYyIDY1Ni4xSDQ0OFY3MzZoMTI4djEwNC4xem0yMzQuNCAwSDY0MFY3MDRjMC0xNy43LTE0LjMtMzItMzItMzJINDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYxMzYuMUgyMTRWNTk3LjljMi45IDEuNCA1LjkgMi44IDkgNCAyMi4zIDkuNCA0NiAxNC4xIDcwLjQgMTQuMSAyNC40IDAgNDgtNC43IDcwLjQtMTQuMSAxMy44LTUuOCAyNi44LTEzLjIgMzguNy0yMi4xLjItLjEuNC0uMS42IDBhMTgwLjQgMTgwLjQgMCAwIDAgMzguNyAyMi4xYzIyLjMgOS40IDQ2IDE0LjEgNzAuNCAxNC4xczQ4LTQuNyA3MC40LTE0LjFjMTMuOC01LjggMjYuOC0xMy4yIDM4LjctMjIuMS4yLS4xLjQtLjEuNiAwYTE4MC40IDE4MC40IDAgMCAwIDM4LjcgMjIuMWMyMi4zIDkuNCA0NiAxNC4xIDcwLjQgMTQuMXM0OC00LjcgNzAuNC0xNC4xYzMtMS4zIDYtMi42IDktNHYyNDIuMnpNODQwIDQzNS43YzAgNTkuOC00OSAxMDguMy0xMDkuMyAxMDguMy00MC44IDAtNzYuNC0yMi4xLTk1LjItNTQuOS0yLjktNS04LjEtOC4xLTEzLjktOC4xaC0uNmMtNS43IDAtMTEgMy4xLTEzLjkgOC4xQTEwOS4yNCAxMDkuMjQgMCAwIDEgNTEyIDU0NGMtNDAuNyAwLTc2LjItMjItOTUtNTQuNy0zLTUuMS04LjQtOC4zLTE0LjMtOC4zcy0xMS40IDMuMi0xNC4zIDguM2ExMDkuNjMgMTA5LjYzIDAgMCAxLTk1LjEgNTQuN0MyMzMgNTQ0IDE4NCA0OTUuNSAxODQgNDM1Ljd2LTkxLjJjMC0uMy4yLS41LjUtLjVoNjU1Yy4zIDAgLjUuMi41LjV2OTEuMnonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuU2hvcHBpbmdUd29Ub25lID0gZ2V0SWNvbignc2hvcHBpbmcnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNjk2IDQ3MmMwIDQuNC0zLjYgOC04IDhoLTU2Yy00LjQgMC04LTMuNi04LTh2LTg4SDQwMHY4OGMwIDQuNC0zLjYgOC04IDhoLTU2Yy00LjQgMC04LTMuNi04LTh2LTg4aC05NnY0NTZoNTYwVjM4NGgtOTZ2ODh6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTgzMiAzMTJINjk2di0xNmMwLTEwMS42LTgyLjQtMTg0LTE4NC0xODRzLTE4NCA4Mi40LTE4NCAxODR2MTZIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY1MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQzMi0xNmMwLTYxLjkgNTAuMS0xMTIgMTEyLTExMnMxMTIgNTAuMSAxMTIgMTEydjE2SDQwMHYtMTZ6bTM5MiA1NDRIMjMyVjM4NGg5NnY4OGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di04OGgyMjR2ODhjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtODhoOTZ2NDU2eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5Ta2luVHdvVG9uZSA9IGdldEljb24oJ3NraW4nLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDMxOGMtNzkuMiAwLTE0OC41LTQ4LjgtMTc2LjctMTIwSDE4MnYxOTZoMTE5djQzMmg0MjJWMzk0aDExOVYxOThINjg4LjdjLTI4LjIgNzEuMi05Ny41IDEyMC0xNzYuNyAxMjB6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg3MCAxMjZINjYzLjhjLTE3LjQgMC0zMi45IDExLjktMzcgMjkuM0M2MTQuMyAyMDguMSA1NjcgMjQ2IDUxMiAyNDZzLTEwMi4zLTM3LjktMTE0LjgtOTAuN2EzNy45MyAzNy45MyAwIDAgMC0zNy0yOS4zSDE1NGE0NCA0NCAwIDAgMC00NCA0NHYyNTJhNDQgNDQgMCAwIDAgNDQgNDRoNzV2Mzg4YTQ0IDQ0IDAgMCAwIDQ0IDQ0aDQ3OGE0NCA0NCAwIDAgMCA0NC00NFY0NjZoNzVhNDQgNDQgMCAwIDAgNDQtNDRWMTcwYTQ0IDQ0IDAgMCAwLTQ0LTQ0em0tMjggMjY4SDcyM3Y0MzJIMzAxVjM5NEgxODJWMTk4aDE1My4zYzI4LjIgNzEuMiA5Ny41IDEyMCAxNzYuNyAxMjBzMTQ4LjUtNDguOCAxNzYuNy0xMjBIODQydjE5NnonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuU2xpZGVyc1R3b1RvbmUgPSBnZXRJY29uKCdzbGlkZXJzJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTE4MCAyOTJoODB2NDQwaC04MHptMzY5IDE4MGgtNzRhMyAzIDAgMCAwLTMgM3Y3NGEzIDMgMCAwIDAgMyAzaDc0YTMgMyAwIDAgMCAzLTN2LTc0YTMgMyAwIDAgMC0zLTN6bTIxNS0xMDhoODB2Mjk2aC04MHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNOTA0IDI5NmgtNjZ2LTk2YzAtNC40LTMuNi04LTgtOGgtNTJjLTQuNCAwLTggMy42LTggOHY5NmgtNjZjLTQuNCAwLTggMy42LTggOHY0MTZjMCA0LjQgMy42IDggOCA4aDY2djk2YzAgNC40IDMuNiA4IDggOGg1MmM0LjQgMCA4LTMuNiA4LTh2LTk2aDY2YzQuNCAwIDgtMy42IDgtOFYzMDRjMC00LjQtMy42LTgtOC04em0tNjAgMzY0aC04MFYzNjRoODB2Mjk2ek02MTIgNDA0aC02NlYyMzJjMC00LjQtMy42LTgtOC04aC01MmMtNC40IDAtOCAzLjYtOCA4djE3MmgtNjZjLTQuNCAwLTggMy42LTggOHYyMDBjMCA0LjQgMy42IDggOCA4aDY2djE3MmMwIDQuNCAzLjYgOCA4IDhoNTJjNC40IDAgOC0zLjYgOC04VjYyMGg2NmM0LjQgMCA4LTMuNiA4LThWNDEyYzAtNC40LTMuNi04LTgtOHptLTYwIDE0NWEzIDMgMCAwIDEtMyAzaC03NGEzIDMgMCAwIDEtMy0zdi03NGEzIDMgMCAwIDEgMy0zaDc0YTMgMyAwIDAgMSAzIDN2NzR6TTMyMCAyMjRoLTY2di01NmMwLTQuNC0zLjYtOC04LThoLTUyYy00LjQgMC04IDMuNi04IDh2NTZoLTY2Yy00LjQgMC04IDMuNi04IDh2NTYwYzAgNC40IDMuNiA4IDggOGg2NnY1NmMwIDQuNCAzLjYgOCA4IDhoNTJjNC40IDAgOC0zLjYgOC04di01Nmg2NmM0LjQgMCA4LTMuNiA4LThWMjMyYzAtNC40LTMuNi04LTgtOHptLTYwIDUwOGgtODBWMjkyaDgwdjQ0MHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuU21pbGVUd29Ub25lID0gZ2V0SWNvbignc21pbGUnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001MTIgMTQwYy0yMDUuNCAwLTM3MiAxNjYuNi0zNzIgMzcyczE2Ni42IDM3MiAzNzIgMzcyIDM3Mi0xNjYuNiAzNzItMzcyLTE2Ni42LTM3Mi0zNzItMzcyek0yODggNDIxYTQ4LjAxIDQ4LjAxIDAgMCAxIDk2IDAgNDguMDEgNDguMDEgMCAwIDEtOTYgMHptMjI0IDI3MmMtODUuNSAwLTE1NS42LTY3LjMtMTYwLTE1MS42YTggOCAwIDAgMSA4LTguNGg0OC4xYzQuMiAwIDcuOCAzLjIgOC4xIDcuNEM0MjAgNTg5LjkgNDYxLjUgNjI5IDUxMiA2MjlzOTIuMS0zOS4xIDk1LjgtODguNmMuMy00LjIgMy45LTcuNCA4LjEtNy40SDY2NGE4IDggMCAwIDEgOCA4LjRDNjY3LjYgNjI1LjcgNTk3LjUgNjkzIDUxMiA2OTN6bTE3Ni0yMjRhNDguMDEgNDguMDEgMCAwIDEgMC05NiA0OC4wMSA0OC4wMSAwIDAgMSAwIDk2eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ00yODggNDIxYTQ4IDQ4IDAgMSAwIDk2IDAgNDggNDggMCAxIDAtOTYgMHptMzc2IDExMmgtNDguMWMtNC4yIDAtNy44IDMuMi04LjEgNy40LTMuNyA0OS41LTQ1LjMgODguNi05NS44IDg4LjZzLTkyLTM5LjEtOTUuOC04OC42Yy0uMy00LjItMy45LTcuNC04LjEtNy40SDM2MGE4IDggMCAwIDAtOCA4LjRjNC40IDg0LjMgNzQuNSAxNTEuNiAxNjAgMTUxLjZzMTU1LjYtNjcuMyAxNjAtMTUxLjZhOCA4IDAgMCAwLTgtOC40em0tMjQtMTEyYTQ4IDQ4IDAgMSAwIDk2IDAgNDggNDggMCAxIDAtOTYgMHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuU25pcHBldHNUd29Ub25lID0gZ2V0SWNvbignc25pcHBldHMnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNDUwIDUxMFYzMzZIMjMydjU1Mmg0MzJWNTUwSDQ5MGMtMjIuMSAwLTQwLTE3LjktNDAtNDB6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTgzMiAxMTJINzI0VjcyYzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY0MEg1MDBWNzJjMC00LjQtMy42LTgtOC04aC01NmMtNC40IDAtOCAzLjYtOCA4djQwSDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTIwaC05NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDUxMmMxNy43IDAgMzItMTQuMyAzMi0zMnYtOTZoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek02NjQgODg4SDIzMlYzMzZoMjE4djE3NGMwIDIyLjEgMTcuOSA0MCA0MCA0MGgxNzR2MzM4em0wLTQwMkg1MTRWMzM2aC4yTDY2NCA0ODUuOHYuMnptMTI4IDI3NGgtNTZWNDU2TDU0NCAyNjRIMzYwdi04MGg2OHYzMmMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di0zMmgxNTJ2MzJjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtMzJoNjh2NTc2eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5Tb3VuZFR3b1RvbmUgPSBnZXRJY29uKCdzb3VuZCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00yNzUuNCA0MjRIMTQ2djE3NmgxMjkuNGwxOCAxMS43TDU4NiA4MDNWMjIxTDI5My4zIDQxMi4zeidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004OTIuMSA3MzcuOGwtMTEwLjMtNjMuN2ExNS45IDE1LjkgMCAwIDAtMjEuNyA1LjlsLTE5LjkgMzQuNWMtNC40IDcuNi0xLjggMTcuNCA1LjggMjEuOEw4NTYuMyA4MDBhMTUuOSAxNS45IDAgMCAwIDIxLjctNS45bDE5LjktMzQuNWM0LjQtNy42IDEuNy0xNy40LTUuOC0yMS44ek05MzQgNDc2SDgwNmMtOC44IDAtMTYgNy4yLTE2IDE2djQwYzAgOC44IDcuMiAxNiAxNiAxNmgxMjhjOC44IDAgMTYtNy4yIDE2LTE2di00MGMwLTguOC03LjItMTYtMTYtMTZ6TTc2MCAzNDRhMTUuOSAxNS45IDAgMCAwIDIxLjcgNS45TDg5MiAyODYuMmM3LjYtNC40IDEwLjItMTQuMiA1LjgtMjEuOEw4NzggMjMwYTE1LjkgMTUuOSAwIDAgMC0yMS43LTUuOUw3NDYgMjg3LjhhMTUuOTkgMTUuOTkgMCAwIDAtNS44IDIxLjhMNzYwIDM0NHpNNjI1LjkgMTE1Yy01LjkgMC0xMS45IDEuNi0xNy40IDUuM0wyNTQgMzUySDkwYy04LjggMC0xNiA3LjItMTYgMTZ2Mjg4YzAgOC44IDcuMiAxNiAxNiAxNmgxNjRsMzU0LjUgMjMxLjdjNS41IDMuNiAxMS42IDUuMyAxNy40IDUuMyAxNi43IDAgMzIuMS0xMy4zIDMyLjEtMzIuMVYxNDcuMWMwLTE4LjgtMTUuNC0zMi4xLTMyLjEtMzIuMXpNNTg2IDgwM0wyOTMuNCA2MTEuN2wtMTgtMTEuN0gxNDZWNDI0aDEyOS40bDE3LjktMTEuN0w1ODYgMjIxdjU4MnonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuU3RhclR3b1RvbmUgPSBnZXRJY29uKCdzdGFyJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUxMi41IDE5MC40bC05NC40IDE5MS4zLTIxMS4yIDMwLjcgMTUyLjggMTQ5LTM2LjEgMjEwLjMgMTg4LjktOTkuMyAxODguOSA5OS4yLTM2LjEtMjEwLjMgMTUyLjgtMTQ4LjktMjExLjItMzAuN3onXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNOTA4LjYgMzUyLjhsLTI1My45LTM2LjlMNTQxLjIgODUuOGMtMy4xLTYuMy04LjItMTEuNC0xNC41LTE0LjUtMTUuOC03LjgtMzUtMS4zLTQyLjkgMTQuNUwzNzAuMyAzMTUuOWwtMjUzLjkgMzYuOWMtNyAxLTEzLjQgNC4zLTE4LjMgOS4zYTMyLjA1IDMyLjA1IDAgMCAwIC42IDQ1LjNsMTgzLjcgMTc5LjFMMjM5IDgzOS40YTMxLjk1IDMxLjk1IDAgMCAwIDQ2LjQgMzMuN2wyMjcuMS0xMTkuNCAyMjcuMSAxMTkuNGM2LjIgMy4zIDEzLjQgNC40IDIwLjMgMy4yIDE3LjQtMyAyOS4xLTE5LjUgMjYuMS0zNi45bC00My40LTI1Mi45IDE4My43LTE3OS4xYzUtNC45IDguMy0xMS4zIDkuMy0xOC4zIDIuNy0xNy41LTkuNS0zMy43LTI3LTM2LjN6TTY2NS4zIDU2MS4zbDM2LjEgMjEwLjMtMTg4LjktOTkuMi0xODguOSA5OS4zIDM2LjEtMjEwLjMtMTUyLjgtMTQ5IDIxMS4yLTMwLjcgOTQuNC0xOTEuMyA5NC40IDE5MS4zIDIxMS4yIDMwLjctMTUyLjggMTQ4Ljl6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLlN0b3BUd29Ub25lID0gZ2V0SWNvbignc3RvcCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTI4OC41IDY4Mi44TDI3Ny43IDIyNEMyNTggMjQwIDI0MCAyNTggMjI0IDI3Ny43bDUyMi44IDUyMi44QzY4Mi44IDg1Mi43IDYwMSA4ODQgNTEyIDg4NGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3MmMwIDg5LTMxLjMgMTcwLjgtODMuNSAyMzQuOHonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001MTIgMTQwYy0yMDUuNCAwLTM3MiAxNjYuNi0zNzIgMzcyczE2Ni42IDM3MiAzNzIgMzcyYzg5IDAgMTcwLjgtMzEuMyAyMzQuOC04My41TDIyNCAyNzcuN2MxNi0xOS43IDM0LTM3LjcgNTMuNy01My43bDUyMi44IDUyMi44Qzg1Mi43IDY4Mi44IDg4NCA2MDEgODg0IDUxMmMwLTIwNS40LTE2Ni42LTM3Mi0zNzItMzcyeidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5Td2l0Y2hlclR3b1RvbmUgPSBnZXRJY29uKCdzd2l0Y2hlcicsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW3NlY29uZGFyeUNvbG9yLCAnTTE4NCA4NDBoNTI4VjMxMkgxODR2NTI4em0xMTYtMjkwaDI5NnY2NEgzMDB2LTY0eiddLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004ODAgMTEySDI2NGMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGg1NzZ2NTc2YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LThWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyeidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ003NTIgMjQwSDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjA4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMlYyNzJjMC0xNy43LTE0LjMtMzItMzItMzJ6bS00MCA2MDBIMTg0VjMxMmg1Mjh2NTI4eidcbiAgICBdLCBbcHJpbWFyeUNvbG9yLCAnTTMwMCA1NTBoMjk2djY0SDMwMHonXSk7XG59KTtcbmV4cG9ydHMuVGFibGV0VHdvVG9uZSA9IGdldEljb24oJ3RhYmxldCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODAwIDY0SDIyNGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2NzY4YzAgMzUuMyAyOC43IDY0IDY0IDY0aDU3NmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjR6bS04IDgyNEgyMzJWMTM2aDU2MHY3NTJ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMjMyIDg4OGg1NjBWMTM2SDIzMnY3NTJ6bTI4MC0xNDRjMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDAtNDAtMTcuOS00MC00MCAxNy45LTQwIDQwLTQweidcbiAgICBdLCBbcHJpbWFyeUNvbG9yLCAnTTQ3MiA3ODRhNDAgNDAgMCAxIDAgODAgMCA0MCA0MCAwIDEgMC04MCAweiddKTtcbn0pO1xuZXhwb3J0cy5UYWdUd29Ub25lID0gZ2V0SWNvbigndGFnJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTU4OSAxNjQuNkwxODkuMyA1NjQuM2wyNzAuNCAyNzAuNEw4NTkuNCA0MzUgODM2IDE4OGwtMjQ3LTIzLjR6TTY4MCA0MzJjLTQ4LjUgMC04OC0zOS41LTg4LTg4czM5LjUtODggODgtODggODggMzkuNSA4OCA4OC0zOS41IDg4LTg4IDg4eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ002ODAgMjU2Yy00OC41IDAtODggMzkuNS04OCA4OHMzOS41IDg4IDg4IDg4IDg4LTM5LjUgODgtODgtMzkuNS04OC04OC04OHptMCAxMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyeidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ005MzggNDU4LjhsLTI5LjYtMzEyLjZjLTEuNS0xNi4yLTE0LjQtMjktMzAuNi0zMC42TDU2NS4yIDg2aC0uNGMtMy4yIDAtNS43IDEtNy42IDIuOUw4OC45IDU1Ny4yYTkuOTYgOS45NiAwIDAgMCAwIDE0LjFsMzYzLjggMzYzLjhhOS45IDkuOSAwIDAgMCA3LjEgMi45YzIuNyAwIDUuMi0xIDcuMS0yLjlsNDY4LjMtNDY4LjNjMi0yLjEgMy01IDIuOC04ek00NTkuNyA4MzQuN0wxODkuMyA1NjQuMyA1ODkgMTY0LjYgODM2IDE4OGwyMy40IDI0Ny0zOTkuNyAzOTkuN3onXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuVGFnc1R3b1RvbmUgPSBnZXRJY29uKCd0YWdzJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTQ3Ny41IDY5NGwzMTEuOS0zMTEuOC0xOS0yMjQuNi0yMjQuNi0xOS0zMTEuOSAzMTEuOUw0NzcuNSA2OTR6bTExNi00MTUuNWE0Ny44MSA0Ny44MSAwIDAgMSAzMy45LTMzLjljMTYuNi00LjQgMzQuMi4zIDQ2LjQgMTIuNGE0Ny45MyA0Ny45MyAwIDAgMSAxMi40IDQ2LjQgNDcuODEgNDcuODEgMCAwIDEtMzMuOSAzMy45Yy0xNi42IDQuNC0zNC4yLS4zLTQ2LjQtMTIuNGE0OC4zIDQ4LjMgMCAwIDEtMTIuNC00Ni40eidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTQ3Ni42IDc5Mi42Yy0xLjctLjItMy40LTEtNC43LTIuM0wxMzcuNyA0NTYuMWE4LjAzIDguMDMgMCAwIDEgMC0xMS4zTDUxNS45IDY2LjZjMS4yLTEuMyAyLjktMi4xIDQuNy0yLjNoLS40Yy0yLjMtLjItNC43LjYtNi4zIDIuM0wxMzUuNyA0NDQuOGE4LjAzIDguMDMgMCAwIDAgMCAxMS4zbDMzNC4yIDMzNC4yYzEuOCAxLjkgNC4zIDIuNiA2LjcgMi4zeidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004ODkuNyA1MzkuOGwtMzkuNi0zOS41YTguMDMgOC4wMyAwIDAgMC0xMS4zIDBsLTM2MiAzNjEuMy0yMzcuNi0yMzdhOC4wMyA4LjAzIDAgMCAwLTExLjMgMGwtMzkuNiAzOS41YTguMDMgOC4wMyAwIDAgMCAwIDExLjNsMjQzLjIgMjQyLjggMzkuNiAzOS41YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsNDA3LjMtNDA2LjZjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM3pNNjUyLjMgMzM3LjNhNDcuODEgNDcuODEgMCAwIDAgMzMuOS0zMy45YzQuNC0xNi42LS4zLTM0LjItMTIuNC00Ni40YTQ3LjkzIDQ3LjkzIDAgMCAwLTQ2LjQtMTIuNCA0Ny44MSA0Ny44MSAwIDAgMC0zMy45IDMzLjljLTQuNCAxNi42LjMgMzQuMiAxMi40IDQ2LjRhNDguMyA0OC4zIDAgMCAwIDQ2LjQgMTIuNHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNMTM3LjcgNDQ0LjhhOC4wMyA4LjAzIDAgMCAwIDAgMTEuM2wzMzQuMiAzMzQuMmMxLjMgMS4zIDIuOSAyLjEgNC43IDIuMyAyLjQuMyA0LjgtLjUgNi42LTIuM0w4NjEuNCA0MTJjMS43LTEuNyAyLjUtNCAyLjMtNi4zbC0yNS41LTMwMS40Yy0uNy03LjgtNi44LTEzLjktMTQuNi0xNC42TDUyMi4yIDY0LjNoLTEuNmMtMS44LjItMy40IDEtNC43IDIuM0wxMzcuNyA0NDQuOHptNDA4LjEtMzA2LjJsMjI0LjYgMTkgMTkgMjI0LjZMNDc3LjUgNjk0IDIzMy45IDQ1MC41bDMxMS45LTMxMS45eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5Ub29sVHdvVG9uZSA9IGdldEljb24oJ3Rvb2wnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNzA2LjggNDg4LjdhMzIuMDUgMzIuMDUgMCAwIDEtNDUuMyAwTDUzNyAzNjQuMmEzMi4wNSAzMi4wNSAwIDAgMSAwLTQ1LjNsMTMyLjktMTMyLjhhMTg0LjIgMTg0LjIgMCAwIDAtMTQ0IDUzLjVjLTU4LjEgNTguMS02OS4zIDE0NS4zLTMzLjYgMjE0LjZMNDM5LjUgNTA3Yy0uMSAwLS4xLS4xLS4xLS4xTDIwOS4zIDczN2w3OS4yIDc5LjIgMjc0LTI3NC4xLjEuMSA4LjgtOC44YzY5LjMgMzUuNyAxNTYuNSAyNC41IDIxNC42LTMzLjYgMzkuMi0zOS4xIDU3LjMtOTIuMSA1My42LTE0My45TDcwNi44IDQ4OC43eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ004NzYuNiAyMzkuNWMtLjUtLjktMS4yLTEuOC0yLTIuNS01LTUtMTMuMS01LTE4LjEgMEw2ODQuMiA0MDkuM2wtNjcuOS02Ny45TDc4OC43IDE2OWMuOC0uOCAxLjQtMS42IDItMi41IDMuNi02LjEgMS42LTEzLjktNC41LTE3LjUtOTguMi01OC0yMjYuOC00NC43LTMxMS4zIDM5LjctNjcgNjctODkuMiAxNjItNjYuNSAyNDcuNGwtMjkzIDI5M2MtMyAzLTIuOCA3LjkuMyAxMWwxNjkuNyAxNjkuN2MzLjEgMy4xIDguMSAzLjMgMTEgLjNsMjkyLjktMjkyLjljODUuNSAyMi44IDE4MC41LjcgMjQ3LjYtNjYuNCA4NC40LTg0LjUgOTcuNy0yMTMuMSAzOS43LTMxMS4zek03ODYgNDk5LjhjLTU4LjEgNTguMS0xNDUuMyA2OS4zLTIxNC42IDMzLjZsLTguOCA4LjgtLjEtLjEtMjc0IDI3NC4xLTc5LjItNzkuMiAyMzAuMS0yMzAuMXMwIC4xLjEuMWw1Mi44LTUyLjhjLTM1LjctNjkuMy0yNC41LTE1Ni41IDMzLjYtMjE0LjZhMTg0LjIgMTg0LjIgMCAwIDEgMTQ0LTUzLjVMNTM3IDMxOC45YTMyLjA1IDMyLjA1IDAgMCAwIDAgNDUuM2wxMjQuNSAxMjQuNWEzMi4wNSAzMi4wNSAwIDAgMCA0NS4zIDBsMTMyLjgtMTMyLjhjMy43IDUxLjgtMTQuNCAxMDQuOC01My42IDE0My45eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5UcmFkZW1hcmtDaXJjbGVUd29Ub25lID0gZ2V0SWNvbigndHJhZGVtYXJrLWNpcmNsZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyeidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUxMiAxNDBjLTIwNS40IDAtMzcyIDE2Ni42LTM3MiAzNzJzMTY2LjYgMzcyIDM3MiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzItMTY2LjYtMzcyLTM3Mi0zNzJ6bTE3MC43IDU4NC4yYy0xLjEuNS0yLjMuOC0zLjUuOGgtNjJjLTMuMSAwLTUuOS0xLjgtNy4yLTQuNmwtNzQuNi0xNTkuMmgtODguN1Y3MTdjMCA0LjQtMy42IDgtOCA4SDM4NGMtNC40IDAtOC0zLjYtOC04VjMwN2MwLTQuNCAzLjYtOCA4LThoMTU1LjZjOTguOCAwIDE0NC4yIDU5LjkgMTQ0LjIgMTMxLjEgMCA3MC4yLTQzLjYgMTA2LjQtNzguNCAxMTkuMmw4MC44IDE2NC4yYzIuMSAzLjkuNCA4LjctMy41IDEwLjd6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTI5LjkgMzU3aC04My40djE0OEg1MjhjNTMgMCA4Mi44LTI1LjYgODIuOC03Mi40IDAtNTAuMy0zMi45LTc1LjYtODAuOS03NS42eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ002MDUuNCA1NDkuM2MzNC44LTEyLjggNzguNC00OSA3OC40LTExOS4yIDAtNzEuMi00NS40LTEzMS4xLTE0NC4yLTEzMS4xSDM4NGMtNC40IDAtOCAzLjYtOCA4djQxMGMwIDQuNCAzLjYgOCA4IDhoNTQuN2M0LjQgMCA4LTMuNiA4LThWNTYxLjJoODguN0w2MTAgNzIwLjRjMS4zIDIuOCA0LjEgNC42IDcuMiA0LjZoNjJjMS4yIDAgMi40LS4zIDMuNS0uOCAzLjktMiA1LjYtNi44IDMuNS0xMC43bC04MC44LTE2NC4yek01MjggNTA1aC04MS41VjM1N2g4My40YzQ4IDAgODAuOSAyNS4zIDgwLjkgNzUuNiAwIDQ2LjgtMjkuOCA3Mi40LTgyLjggNzIuNHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuVW5sb2NrVHdvVG9uZSA9IGdldEljb24oJ3VubG9jaycsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00yMzIgODQwaDU2MFY1MzZIMjMydjMwNHptMjgwLTIyNmE0OC4wMSA0OC4wMSAwIDAgMSAyOCA4N3Y1M2MwIDQuNC0zLjYgOC04IDhoLTQwYy00LjQgMC04LTMuNi04LTh2LTUzYTQ4LjAxIDQ4LjAxIDAgMCAxIDI4LTg3eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ000ODQgNzAxdjUzYzAgNC40IDMuNiA4IDggOGg0MGM0LjQgMCA4LTMuNiA4LTh2LTUzYTQ4LjAxIDQ4LjAxIDAgMSAwLTU2IDB6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTgzMiA0NjRIMzMyVjI0MGMwLTMwLjkgMjUuMS01NiA1Ni01NmgyNDhjMzAuOSAwIDU2IDI1LjEgNTYgNTZ2NjhjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNjhjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhIMzg4Yy03MC43IDAtMTI4IDU3LjMtMTI4IDEyOHYyMjRoLTY4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzODRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjQ5NmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDM3NkgyMzJWNTM2aDU2MHYzMDR6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLlRyb3BoeVR3b1RvbmUgPSBnZXRJY29uKCd0cm9waHknLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMzIwIDQ4MGMwIDQ5LjEgMTkuMSA5NS4zIDUzLjkgMTMwLjEgMzQuNyAzNC44IDgxIDUzLjkgMTMwLjEgNTMuOWgxNmM0OS4xIDAgOTUuMy0xOS4xIDEzMC4xLTUzLjkgMzQuOC0zNC43IDUzLjktODEgNTMuOS0xMzAuMVYxODRIMzIwdjI5NnpNMTg0IDM1MmMwIDQxIDI2LjkgNzUuOCA2NCA4Ny42LTM3LjEtMTEuOS02NC00Ni43LTY0LTg3LjZ6bTM2NCAzODIuNUM2NjUgNzIxLjggNzU4LjQgNjMwLjIgNzczLjggNTE0IDc1OC4zIDYzMC4yIDY2NSA3MjEuNyA1NDggNzM0LjV6TTI1MC4yIDUxNEMyNjUuNiA2MzAuMiAzNTkgNzIxLjggNDc2IDczNC41IDM1OSA3MjEuNyAyNjUuNyA2MzAuMiAyNTAuMiA1MTR6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg2OCAxNjBoLTkydi00MGMwLTQuNC0zLjYtOC04LThIMjU2Yy00LjQgMC04IDMuNi04IDh2NDBoLTkyYTQ0IDQ0IDAgMCAwLTQ0IDQ0djE0OGMwIDgxLjcgNjAgMTQ5LjYgMTM4LjIgMTYyQzI2NS43IDYzMC4yIDM1OSA3MjEuNyA0NzYgNzM0LjV2MTA1LjJIMjgwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY5MDRjMCA0LjQgMy42IDggOCA4aDUxMmM0LjQgMCA4LTMuNiA4LTh2LTMyLjNjMC0xNy43LTE0LjMtMzItMzItMzJINTQ4VjczNC41QzY2NSA3MjEuNyA3NTguMyA2MzAuMiA3NzMuOCA1MTQgODUyIDUwMS42IDkxMiA0MzMuNyA5MTIgMzUyVjIwNGE0NCA0NCAwIDAgMC00NC00NHpNMjQ4IDQzOS42YTkxLjk5IDkxLjk5IDAgMCAxLTY0LTg3LjZWMjMyaDY0djIwNy42ek03MDQgNDgwYzAgNDkuMS0xOS4xIDk1LjQtNTMuOSAxMzAuMS0zNC44IDM0LjgtODEgNTMuOS0xMzAuMSA1My45aC0xNmMtNDkuMSAwLTk1LjQtMTkuMS0xMzAuMS01My45LTM0LjgtMzQuOC01My45LTgxLTUzLjktMTMwLjFWMTg0aDM4NHYyOTZ6bTEzNi0xMjhjMCA0MS0yNi45IDc1LjgtNjQgODcuNlYyMzJoNjR2MTIweidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5VcENpcmNsZVR3b1RvbmUgPSBnZXRJY29uKCd1cC1jaXJjbGUnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDE0MGMtMjA1LjQgMC0zNzIgMTY2LjYtMzcyIDM3MnMxNjYuNiAzNzIgMzcyIDM3MiAzNzItMTY2LjYgMzcyLTM3Mi0xNjYuNi0zNzItMzcyLTM3MnptMTc4IDQ3OWgtNDYuOWMtMTAuMiAwLTE5LjktNC45LTI1LjktMTMuMkw1MTIgNDYwLjQgNDA2LjggNjA1LjhjLTYgOC4zLTE1LjYgMTMuMi0yNS45IDEzLjJIMzM0Yy02LjUgMC0xMC4zLTcuNC02LjUtMTIuN2wxNzgtMjQ2YzMuMi00LjQgOS43LTQuNCAxMi45IDBsMTc4IDI0NmMzLjkgNS4zLjEgMTIuNy02LjQgMTIuN3onXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyeidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MTguNCAzNjAuM2E3Ljk1IDcuOTUgMCAwIDAtMTIuOSAwbC0xNzggMjQ2Yy0zLjggNS4zIDAgMTIuNyA2LjUgMTIuN2g0Ni45YzEwLjMgMCAxOS45LTQuOSAyNS45LTEzLjJMNTEyIDQ2MC40bDEwNS4yIDE0NS40YzYgOC4zIDE1LjcgMTMuMiAyNS45IDEzLjJINjkwYzYuNSAwIDEwLjMtNy40IDYuNC0xMi43bC0xNzgtMjQ2eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5UaHVuZGVyYm9sdFR3b1RvbmUgPSBnZXRJY29uKCd0aHVuZGVyYm9sdCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ002OTUuNCAxNjQuMUg0NzAuOEwyODEuMiA0OTEuNWgxNTcuNGwtNjAuMyAyNDEgMzE5LjgtMzA1LjFoLTIxMXonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODQ4LjEgMzU5LjNINjI3LjhMODI1LjkgMTA5YzQuMS01LjMuNC0xMy02LjMtMTNINDM2LjFjLTIuOCAwLTUuNSAxLjUtNi45IDRMMTcwLjEgNTQ3LjVjLTMuMSA1LjMuNyAxMiA2LjkgMTJoMTc0LjRMMjYyIDkxNy4xYy0xLjkgNy44IDcuNSAxMy4zIDEzLjMgNy43TDg1My42IDM3M2M1LjItNC45IDEuNy0xMy43LTUuNS0xMy43ek0zNzguMyA3MzIuNWw2MC4zLTI0MUgyODEuMmwxODkuNi0zMjcuNGgyMjQuNkw0ODcuMSA0MjcuNGgyMTFMMzc4LjMgNzMyLjV6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLlVwU3F1YXJlVHdvVG9uZSA9IGdldEljb24oJ3VwLXNxdWFyZScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNODgwIDExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNzI4SDE4NFYxODRoNjU2djY1NnonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00xODQgODQwaDY1NlYxODRIMTg0djY1NnptMTQzLjUtMjI4LjdsMTc4LTI0NmMzLjItNC40IDkuNy00LjQgMTIuOSAwbDE3OCAyNDZjMy45IDUuMy4xIDEyLjctNi40IDEyLjdoLTQ2LjljLTEwLjIgMC0xOS45LTQuOS0yNS45LTEzLjJMNTEyIDQ2NS40IDQwNi44IDYxMC44Yy02IDguMy0xNS42IDEzLjItMjUuOSAxMy4ySDMzNGMtNi41IDAtMTAuMy03LjQtNi41LTEyLjd6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTMzNCA2MjRoNDYuOWMxMC4zIDAgMTkuOS00LjkgMjUuOS0xMy4yTDUxMiA0NjUuNGwxMDUuMiAxNDUuNGM2IDguMyAxNS43IDEzLjIgMjUuOSAxMy4ySDY5MGM2LjUgMCAxMC4zLTcuNCA2LjQtMTIuN2wtMTc4LTI0NmE3Ljk1IDcuOTUgMCAwIDAtMTIuOSAwbC0xNzggMjQ2Yy0zLjggNS4zIDAgMTIuNyA2LjUgMTIuN3onXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuVXNiVHdvVG9uZSA9IGdldEljb24oJ3VzYicsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ003NTkuOSA1MDRIMjY0LjFjLTI2LjUgMC00OC4xIDE5LjctNDguMSA0NHYyOTJoNTkyVjU0OGMwLTI0LjMtMjEuNi00NC00OC4xLTQ0eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ000NTYgMjQ4aC00OGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptMTYwIDBoLTQ4Yy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ003NjAgNDMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjI4OGMtNjYuMiAwLTEyMCA1Mi4xLTEyMCAxMTZ2MzU2YzAgNC40IDMuNiA4IDggOGg3MjBjNC40IDAgOC0zLjYgOC04VjU0OGMwLTYzLjktNTMuOC0xMTYtMTIwLTExNnpNMzM2IDE4NGgzNTJ2MjQ4SDMzNlYxODR6bTQ3MiA2NTZIMjE2VjU0OGMwLTI0LjMgMjEuNi00NCA0OC4xLTQ0aDQ5NS44YzI2LjUgMCA0OC4xIDE5LjcgNDguMSA0NHYyOTJ6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLlZpZGVvQ2FtZXJhVHdvVG9uZSA9IGdldEljb24oJ3ZpZGVvLWNhbWVyYScsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ00xMzYgNzkyaDU3NlYyMzJIMTM2djU2MHptNjQtNDg4YzAtNC40IDMuNi04IDgtOGgxMTJjNC40IDAgOCAzLjYgOCA4djQ4YzAgNC40LTMuNiA4LTggOEgyMDhjLTQuNCAwLTgtMy42LTgtOHYtNDh6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTkxMiAzMDIuM0w3ODQgMzc2VjIyNGMwLTM1LjMtMjguNy02NC02NC02NEgxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0djU3NmMwIDM1LjMgMjguNyA2NCA2NCA2NGg1OTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjQ4bDEyOCA3My43YzIxLjMgMTIuMyA0OC0zLjEgNDgtMjcuNlYzMzBjMC0yNC42LTI2LjctNDAtNDgtMjcuN3pNNzEyIDc5MkgxMzZWMjMyaDU3NnY1NjB6bTE3Ni0xNjdsLTEwNC01OS44VjQ1OC45TDg4OCAzOTl2MjI2eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ00yMDggMzYwaDExMmM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOEgyMDhjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLldhbGxldFR3b1RvbmUgPSBnZXRJY29uKCd3YWxsZXQnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDQ2NEg1MjhWNDQ4aDMxMnYxMjh6bTAtMTkySDQ5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDM0NHYyMDBIMTg0VjE4NGg2NTZ2MjAweidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUyOCA1NzZoMzEyVjQ0OEg1Mjh2MTI4em05Mi0xMDRjMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDAtNDAtMTcuOS00MC00MCAxNy45LTQwIDQwLTQweidcbiAgICBdLCBbcHJpbWFyeUNvbG9yLCAnTTU4MCA1MTJhNDAgNDAgMCAxIDAgODAgMCA0MCA0MCAwIDEgMC04MCAweiddLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTE4NCA4NDBoNjU2VjY0MEg0OTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzNDRWMTg0SDE4NHY2NTZ6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLldhcm5pbmdUd29Ub25lID0gZ2V0SWNvbignd2FybmluZycsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNOTU1LjcgODU2bC00MTYtNzIwYy02LjItMTAuNy0xNi45LTE2LTI3LjctMTZzLTIxLjYgNS4zLTI3LjcgMTZsLTQxNiA3MjBDNTYgODc3LjQgNzEuNCA5MDQgOTYgOTA0aDgzMmMyNC42IDAgNDAtMjYuNiAyNy43LTQ4em0tNzgzLjUtMjcuOUw1MTIgMjM5LjlsMzM5LjggNTg4LjJIMTcyLjJ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNMTcyLjIgODI4LjFoNjc5LjZMNTEyIDIzOS45IDE3Mi4yIDgyOC4xek01NjAgNzIwYTQ4LjAxIDQ4LjAxIDAgMCAxLTk2IDAgNDguMDEgNDguMDEgMCAwIDEgOTYgMHptLTE2LTMwNHYxODRjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04VjQxNmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ000NjQgNzIwYTQ4IDQ4IDAgMSAwIDk2IDAgNDggNDggMCAxIDAtOTYgMHptMTYtMzA0djE4NGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjQxNmMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkNpVHdvVG9uZSA9IGdldEljb24oJ2NpJywgdHdvdG9uZSwgZnVuY3Rpb24gKHByaW1hcnlDb2xvciwgc2Vjb25kYXJ5Q29sb3IpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZShuZXdWaWV3Qm94LCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ001MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6J1xuICAgIF0sIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDE0MGMtMjA1LjQgMC0zNzIgMTY2LjYtMzcyIDM3MnMxNjYuNiAzNzIgMzcyIDM3MiAzNzItMTY2LjYgMzcyLTM3Mi0xNjYuNi0zNzItMzcyLTM3MnptLTYzLjUgNTIyLjhjNDkuMyAwIDgyLjgtMjkuNCA4Ny03Mi40LjQtNC4xIDMuOC03LjMgOC03LjNoNTIuN2MyLjQgMCA0LjQgMiA0LjQgNC40IDAgNzcuNC02NC4zIDEzMi41LTE1Mi4zIDEzMi41QzM0NS40IDcyMCAyODYgNjUxLjQgMjg2IDUzNy40di00OUMyODYgMzczLjUgMzQ1LjQgMzA0IDQ0OC4zIDMwNGM4OC4zIDAgMTUyLjMgNTYuOSAxNTIuMyAxMzguMSAwIDIuNC0yIDQuNC00LjQgNC40aC01Mi42Yy00LjIgMC03LjYtMy4yLTgtNy40LTMuOS00Ni4xLTM3LjUtNzcuNi04Ny03Ny42LTYxLjEgMC05NS42IDQ1LjQtOTUuNyAxMjYuOHY0OS4zYzAgODAuMyAzNC41IDEyNS4yIDk1LjYgMTI1LjJ6TTczOCA3MDQuMWMwIDQuNC0zLjYgOC04IDhoLTUwLjRjLTQuNCAwLTgtMy42LTgtOFYzMTkuOWMwLTQuNCAzLjYtOCA4LThINzMwYzQuNCAwIDggMy42IDggOHYzODQuMnonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNzMwIDMxMS45aC01MC40Yy00LjQgMC04IDMuNi04IDh2Mzg0LjJjMCA0LjQgMy42IDggOCA4SDczMGM0LjQgMCA4LTMuNiA4LThWMzE5LjljMC00LjQtMy42LTgtOC04em0tMjgxLjQgNDkuNmM0OS41IDAgODMuMSAzMS41IDg3IDc3LjYuNCA0LjIgMy44IDcuNCA4IDcuNGg1Mi42YzIuNCAwIDQuNC0yIDQuNC00LjQgMC04MS4yLTY0LTEzOC4xLTE1Mi4zLTEzOC4xQzM0NS40IDMwNCAyODYgMzczLjUgMjg2IDQ4OC40djQ5YzAgMTE0IDU5LjQgMTgyLjYgMTYyLjMgMTgyLjYgODggMCAxNTIuMy01NS4xIDE1Mi4zLTEzMi41IDAtMi40LTItNC40LTQuNC00LjRoLTUyLjdjLTQuMiAwLTcuNiAzLjItOCA3LjMtNC4yIDQzLTM3LjcgNzIuNC04NyA3Mi40LTYxLjEgMC05NS42LTQ0LjktOTUuNi0xMjUuMnYtNDkuM2MuMS04MS40IDM0LjYtMTI2LjggOTUuNy0xMjYuOHonXG4gICAgXSk7XG59KTtcbmV4cG9ydHMuQ29weXJpZ2h0VHdvVG9uZSA9IGdldEljb24oJ2NvcHlyaWdodCcsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyeidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUxMiAxNDBjLTIwNS40IDAtMzcyIDE2Ni42LTM3MiAzNzJzMTY2LjYgMzcyIDM3MiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzItMTY2LjYtMzcyLTM3Mi0zNzJ6bTUuNSA1MzNjNTIuOSAwIDg4LjgtMzEuNyA5My03Ny44LjQtNC4xIDMuOC03LjMgOC03LjNoNTYuOGMyLjYgMCA0LjcgMi4xIDQuNyA0LjcgMCA4Mi42LTY4LjcgMTQxLjQtMTYyLjcgMTQxLjRDNDA3LjQgNzM0IDM0NCA2NjAuOCAzNDQgNTM5LjF2LTUyLjNDMzQ0IDM2NC4yIDQwNy40IDI5MCA1MTcuMyAyOTBjOTQuMyAwIDE2Mi43IDYwLjcgMTYyLjcgMTQ3LjQgMCAyLjYtMi4xIDQuNy00LjcgNC43aC01Ni43Yy00LjIgMC03LjctMy4yLTgtNy40LTQtNDkuNi00MC04My40LTkzLTgzLjQtNjUuMiAwLTEwMi4xIDQ4LjUtMTAyLjIgMTM1LjV2NTIuNmMwIDg1LjcgMzYuOCAxMzMuNiAxMDIuMSAxMzMuNnonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTE3LjYgMzUxLjNjNTMgMCA4OSAzMy44IDkzIDgzLjQuMyA0LjIgMy44IDcuNCA4IDcuNGg1Ni43YzIuNiAwIDQuNy0yLjEgNC43LTQuNyAwLTg2LjctNjguNC0xNDcuNC0xNjIuNy0xNDcuNEM0MDcuNCAyOTAgMzQ0IDM2NC4yIDM0NCA0ODYuOHY1Mi4zQzM0NCA2NjAuOCA0MDcuNCA3MzQgNTE3LjMgNzM0Yzk0IDAgMTYyLjctNTguOCAxNjIuNy0xNDEuNCAwLTIuNi0yLjEtNC43LTQuNy00LjdoLTU2LjhjLTQuMiAwLTcuNiAzLjItOCA3LjMtNC4yIDQ2LjEtNDAuMSA3Ny44LTkzIDc3LjgtNjUuMyAwLTEwMi4xLTQ3LjktMTAyLjEtMTMzLjZ2LTUyLjZjLjEtODcgMzctMTM1LjUgMTAyLjItMTM1LjV6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkRvbGxhclR3b1RvbmUgPSBnZXRJY29uKCdkb2xsYXInLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ000MjYuNiA0MTAuM2MwIDI1LjQgMTUuNyA0NS4xIDQ5LjUgNTcuMyA0LjcgMS45IDkuNCAzLjQgMTUgNXYtMTI0Yy0zNyA0LjctNjQuNSAyNS40LTY0LjUgNjEuN3ptMTE2LjUgMTM1LjJjLTIuOS0uNi01LjctMS4zLTguOC0yLjJWNjc3YzQyLjYtMy44IDcyLTI3LjMgNzItNjYuNCAwLTMwLjctMTUuOS01MC43LTYzLjItNjUuMXonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001MTIgMTQwYy0yMDUuNCAwLTM3MiAxNjYuNi0zNzIgMzcyczE2Ni42IDM3MiAzNzIgMzcyIDM3Mi0xNjYuNiAzNzItMzcyLTE2Ni42LTM3Mi0zNzItMzcyem0yMi40IDU4OS4ybC4yIDMxLjdjMCA0LjUtMy42IDguMS04IDguMWgtMjguNGMtNC40IDAtOC0zLjYtOC04di0zMS40Yy04OS02LjUtMTMwLjctNTcuMS0xMzUuMi0xMTIuMS0uNC00LjcgMy4zLTguNyA4LTguN2g0Ni4yYzMuOSAwIDcuMyAyLjggNy45IDYuNiA1LjEgMzEuOCAyOS45IDU1LjQgNzQuMSA2MS4zVjUzNGwtMjQuNy02LjNjLTUyLjMtMTIuNS0xMDIuMS00NS4xLTEwMi4xLTExMi43IDAtNzMgNTUuNC0xMTIuMSAxMjYuMi0xMTl2LTMzYzAtNC40IDMuNi04IDgtOGgyOC4xYzQuNCAwIDggMy42IDggOHYzMi43YzY4LjUgNi45IDExOS44IDQ2LjkgMTI1LjkgMTA5LjJhOC4xIDguMSAwIDAgMS04IDguOGgtNDQuOWMtNCAwLTcuNC0yLjktNy45LTYuOS00LTI5LjItMjcuNS01My02NS41LTU4LjJ2MTM0LjNsMjUuNCA1LjljNjQuOCAxNiAxMDguOSA0NyAxMDkgMTE2LjQgMCA3NS4yLTU2IDExNy4xLTEzNC4zIDEyNHonXG4gICAgXSwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTU5LjcgNDg4LjhsLTI1LjQtNS45VjM0OC42YzM4IDUuMiA2MS41IDI5IDY1LjUgNTguMi41IDQgMy45IDYuOSA3LjkgNi45aDQ0LjljNC43IDAgOC40LTQuMSA4LTguOC02LjEtNjIuMy01Ny40LTEwMi4zLTEyNS45LTEwOS4yVjI2M2MwLTQuNC0zLjYtOC04LThoLTI4LjFjLTQuNCAwLTggMy42LTggOHYzM2MtNzAuOCA2LjktMTI2LjIgNDYtMTI2LjIgMTE5IDAgNjcuNiA0OS44IDEwMC4yIDEwMi4xIDExMi43bDI0LjcgNi4zdjE0Mi43Yy00NC4yLTUuOS02OS0yOS41LTc0LjEtNjEuMy0uNi0zLjgtNC02LjYtNy45LTYuNkgzNjNjLTQuNyAwLTguNCA0LTggOC43IDQuNSA1NSA0Ni4yIDEwNS42IDEzNS4yIDExMi4xVjc2MWMwIDQuNCAzLjYgOCA4IDhoMjguNGM0LjQgMCA4LTMuNiA4LTguMWwtLjItMzEuN2M3OC4zLTYuOSAxMzQuMy00OC44IDEzNC4zLTEyNC0uMS02OS40LTQ0LjItMTAwLjQtMTA5LTExNi40em0tNjguNi0xNi4yYy01LjYtMS42LTEwLjMtMy4xLTE1LTUtMzMuOC0xMi4yLTQ5LjUtMzEuOS00OS41LTU3LjMgMC0zNi4zIDI3LjUtNTcgNjQuNS02MS43djEyNHpNNTM0LjMgNjc3VjU0My4zYzMuMS45IDUuOSAxLjYgOC44IDIuMiA0Ny4zIDE0LjQgNjMuMiAzNC40IDYzLjIgNjUuMSAwIDM5LjEtMjkuNCA2Mi42LTcyIDY2LjR6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkV1cm9Ud29Ub25lID0gZ2V0SWNvbignZXVybycsIHR3b3RvbmUsIGZ1bmN0aW9uIChwcmltYXJ5Q29sb3IsIHNlY29uZGFyeUNvbG9yKSB7XG4gICAgcmV0dXJuIGdldE5vZGUobmV3Vmlld0JveCwgW1xuICAgICAgICBwcmltYXJ5Q29sb3IsXG4gICAgICAgICdNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyeidcbiAgICBdLCBbXG4gICAgICAgIHNlY29uZGFyeUNvbG9yLFxuICAgICAgICAnTTUxMiAxNDBjLTIwNS40IDAtMzcyIDE2Ni42LTM3MiAzNzJzMTY2LjYgMzcyIDM3MiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzItMTY2LjYtMzcyLTM3Mi0zNzJ6bTExNy4xIDU4MS4xYzAgMy44LTIuNyA3LTYuNCA3LjgtMTUuOSAzLjQtMzQuNCA1LjEtNTUuMyA1LjEtMTA5LjggMC0xODMtNTguOC0yMDAuMi0xNThIMzM3Yy00LjQgMC04LTMuNi04LTh2LTI3LjJjMC00LjQgMy42LTggOC04aDI2LjF2LTM2LjljMC00LjQgMC04LjcuMy0xMi44SDMzN2MtNC40IDAtOC0zLjYtOC04di0yNy4yYzAtNC40IDMuNi04IDgtOGgzMS44QzM4OC41IDM0NS43IDQ2MC43IDI5MCA1NjcuNCAyOTBjMjAuOSAwIDM5LjQgMS45IDU1LjMgNS40IDMuNy44IDYuMyA0IDYuMyA3LjhWMzQ2YTggOCAwIDAgMS05LjYgNy44Yy0xNC42LTIuOS0zMS44LTQuNC01MS43LTQuNC02NS4zIDAtMTEwLjQgMzMuNS0xMjcuNiA5MC40aDEyOC4zYzQuNCAwIDggMy42IDggOFY0NzVjMCA0LjQtMy42IDgtOCA4SDQzMi41Yy0uMyA0LjQtLjMgOS4xLS4zIDEzLjh2MzZoMTM2LjRjNC40IDAgOCAzLjYgOCA4VjU2OGMwIDQuNC0zLjYgOC04IDhINDM4YzE1LjMgNjIgNjEuMyA5OC42IDEyOS44IDk4LjYgMTkuOSAwIDM3LjEtMS4zIDUxLjgtNC4xIDQuOS0xIDkuNSAyLjggOS41IDcuOHY0Mi44eidcbiAgICBdLCBbXG4gICAgICAgIHByaW1hcnlDb2xvcixcbiAgICAgICAgJ002MTkuNiA2NzAuNWMtMTQuNyAyLjgtMzEuOSA0LjEtNTEuOCA0LjEtNjguNSAwLTExNC41LTM2LjYtMTI5LjgtOTguNmgxMzAuNmM0LjQgMCA4LTMuNiA4LTh2LTI3LjJjMC00LjQtMy42LTgtOC04SDQzMi4ydi0zNmMwLTQuNyAwLTkuNC4zLTEzLjhoMTM1LjljNC40IDAgOC0zLjYgOC04di0yNy4yYzAtNC40LTMuNi04LTgtOEg0NDAuMWMxNy4yLTU2LjkgNjIuMy05MC40IDEyNy42LTkwLjQgMTkuOSAwIDM3LjEgMS41IDUxLjcgNC40YTggOCAwIDAgMCA5LjYtNy44di00Mi44YzAtMy44LTIuNi03LTYuMy03LjgtMTUuOS0zLjUtMzQuNC01LjQtNTUuMy01LjQtMTA2LjcgMC0xNzguOSA1NS43LTE5OC42IDE0OS45SDMzN2MtNC40IDAtOCAzLjYtOCA4djI3LjJjMCA0LjQgMy42IDggOCA4aDI2LjRjLS4zIDQuMS0uMyA4LjQtLjMgMTIuOHYzNi45SDMzN2MtNC40IDAtOCAzLjYtOCA4VjU2OGMwIDQuNCAzLjYgOCA4IDhoMzAuMmMxNy4yIDk5LjIgOTAuNCAxNTggMjAwLjIgMTU4IDIwLjkgMCAzOS40LTEuNyA1NS4zLTUuMSAzLjctLjggNi40LTQgNi40LTcuOHYtNDIuOGMwLTUtNC42LTguOC05LjUtNy44eidcbiAgICBdKTtcbn0pO1xuZXhwb3J0cy5Hb2xkVHdvVG9uZSA9IGdldEljb24oJ2dvbGQnLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTQzNS43IDU1OC43Yy0uNi0zLjktNC02LjctNy45LTYuN0gxNjYuMmMtMy45IDAtNy4zIDIuOC03LjkgNi43bC00MC4yIDI0OGMtLjEuNC0uMS45LS4xIDEuMyAwIDQuNCAzLjYgOCA4IDhoMzQyYy40IDAgLjkgMCAxLjMtLjEgNC40LS43IDcuMy00LjggNi42LTkuMmwtNDAuMi0yNDh6TTE5Ni41IDc0OGwyMC43LTEyOGgxNTkuNWwyMC43IDEyOEgxOTYuNXptNzA5LjQgNTguN2wtNDAuMi0yNDhjLS42LTMuOS00LTYuNy03LjktNi43SDU5Ni4yYy0zLjkgMC03LjMgMi44LTcuOSA2LjdsLTQwLjIgMjQ4Yy0uMS40LS4xLjktLjEgMS4zIDAgNC40IDMuNiA4IDggOGgzNDJjLjQgMCAuOSAwIDEuMy0uMSA0LjMtLjcgNy4zLTQuOCA2LjYtOS4yek02MjYuNSA3NDhsMjAuNy0xMjhoMTU5LjVsMjAuNyAxMjhINjI2LjV6TTM0MiA0NzJoMzQyYy40IDAgLjkgMCAxLjMtLjEgNC40LS43IDcuMy00LjggNi42LTkuMmwtNDAuMi0yNDhjLS42LTMuOS00LTYuNy03LjktNi43SDM4Mi4yYy0zLjkgMC03LjMgMi44LTcuOSA2LjdsLTQwLjIgMjQ4Yy0uMS40LS4xLjktLjEgMS4zIDAgNC40IDMuNiA4IDggOHptOTEuMi0xOTZoMTU5LjVsMjAuNyAxMjhoLTIwMWwyMC44LTEyOHonXG4gICAgXSwgW1xuICAgICAgICBzZWNvbmRhcnlDb2xvcixcbiAgICAgICAgJ001OTIuNyAyNzZINDMzLjJsLTIwLjggMTI4aDIwMXpNMjE3LjIgNjIwbC0yMC43IDEyOGgyMDAuOWwtMjAuNy0xMjh6bTQzMCAwbC0yMC43IDEyOGgyMDAuOWwtMjAuNy0xMjh6J1xuICAgIF0pO1xufSk7XG5leHBvcnRzLkNhbmxlbmRhclR3b1RvbmUgPSBnZXRJY29uKCdjYW5sZW5kYXInLCB0d290b25lLCBmdW5jdGlvbiAocHJpbWFyeUNvbG9yLCBzZWNvbmRhcnlDb2xvcikge1xuICAgIHJldHVybiBnZXROb2RlKG5ld1ZpZXdCb3gsIFtcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICdNNzEyIDMwNGMwIDQuNC0zLjYgOC04IDhoLTU2Yy00LjQgMC04LTMuNi04LTh2LTQ4SDM4NHY0OGMwIDQuNC0zLjYgOC04IDhoLTU2Yy00LjQgMC04LTMuNi04LTh2LTQ4SDE4NHYxMzZoNjU2VjI1Nkg3MTJ2NDh6J1xuICAgIF0sIFtcbiAgICAgICAgcHJpbWFyeUNvbG9yLFxuICAgICAgICAnTTg4MCAxODRINzEydi02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMzg0di02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIxNmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDY1NkgxODRWNDYwaDY1NnYzODB6bTAtNDQ4SDE4NFYyNTZoMTI4djQ4YzAgNC40IDMuNiA4IDggOGg1NmM0LjQgMCA4LTMuNiA4LTh2LTQ4aDI1NnY0OGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di00OGgxMjh2MTM2eidcbiAgICBdKTtcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdGlueWNvbG9yMl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJ0aW55Y29sb3IyXCIpKTtcbnZhciBodWVTdGVwID0gMjsgLy8g6Imy55u46Zi25qKvXG52YXIgc2F0dXJhdGlvblN0ZXAgPSAxNjsgLy8g6aWx5ZKM5bqm6Zi25qKv77yM5rWF6Imy6YOo5YiGXG52YXIgc2F0dXJhdGlvblN0ZXAyID0gNTsgLy8g6aWx5ZKM5bqm6Zi25qKv77yM5rex6Imy6YOo5YiGXG52YXIgYnJpZ2h0bmVzc1N0ZXAxID0gNTsgLy8g5Lqu5bqm6Zi25qKv77yM5rWF6Imy6YOo5YiGXG52YXIgYnJpZ2h0bmVzc1N0ZXAyID0gMTU7IC8vIOS6ruW6pumYtuair++8jOa3seiJsumDqOWIhlxudmFyIGxpZ2h0Q29sb3JDb3VudCA9IDU7IC8vIOa1heiJsuaVsOmHj++8jOS4u+iJsuS4ilxudmFyIGRhcmtDb2xvckNvdW50ID0gNDsgLy8g5rex6Imy5pWw6YeP77yM5Li76Imy5LiLXG5mdW5jdGlvbiBnZXRIdWUoaHN2LCBpLCBsaWdodCkge1xuICAgIHZhciBodWU7XG4gICAgLy8g5qC55o2u6Imy55u45LiN5ZCM77yM6Imy55u46L2s5ZCR5LiN5ZCMXG4gICAgaWYgKE1hdGgucm91bmQoaHN2LmgpID49IDYwICYmIE1hdGgucm91bmQoaHN2LmgpIDw9IDI0MCkge1xuICAgICAgICBodWUgPSBsaWdodCA/IE1hdGgucm91bmQoaHN2LmgpIC0gaHVlU3RlcCAqIGkgOiBNYXRoLnJvdW5kKGhzdi5oKSArIGh1ZVN0ZXAgKiBpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaHVlID0gbGlnaHQgPyBNYXRoLnJvdW5kKGhzdi5oKSArIGh1ZVN0ZXAgKiBpIDogTWF0aC5yb3VuZChoc3YuaCkgLSBodWVTdGVwICogaTtcbiAgICB9XG4gICAgaWYgKGh1ZSA8IDApIHtcbiAgICAgICAgaHVlICs9IDM2MDtcbiAgICB9XG4gICAgZWxzZSBpZiAoaHVlID49IDM2MCkge1xuICAgICAgICBodWUgLT0gMzYwO1xuICAgIH1cbiAgICByZXR1cm4gaHVlO1xufVxuZnVuY3Rpb24gZ2V0U2F0dXJhdGlvbihoc3YsIGksIGxpZ2h0KSB7XG4gICAgLy8gZ3JleSBjb2xvciBkb24ndCBjaGFuZ2Ugc2F0dXJhdGlvblxuICAgIGlmIChoc3YuaCA9PT0gMCAmJiBoc3YucyA9PT0gMCkge1xuICAgICAgICByZXR1cm4gaHN2LnM7XG4gICAgfVxuICAgIHZhciBzYXR1cmF0aW9uO1xuICAgIGlmIChsaWdodCkge1xuICAgICAgICBzYXR1cmF0aW9uID0gTWF0aC5yb3VuZChoc3YucyAqIDEwMCkgLSBzYXR1cmF0aW9uU3RlcCAqIGk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGkgPT09IGRhcmtDb2xvckNvdW50KSB7XG4gICAgICAgIHNhdHVyYXRpb24gPSBNYXRoLnJvdW5kKGhzdi5zICogMTAwKSArIHNhdHVyYXRpb25TdGVwO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc2F0dXJhdGlvbiA9IE1hdGgucm91bmQoaHN2LnMgKiAxMDApICsgc2F0dXJhdGlvblN0ZXAyICogaTtcbiAgICB9XG4gICAgLy8g6L6555WM5YC85L+u5q2jXG4gICAgaWYgKHNhdHVyYXRpb24gPiAxMDApIHtcbiAgICAgICAgc2F0dXJhdGlvbiA9IDEwMDtcbiAgICB9XG4gICAgLy8g56ys5LiA5qC855qEIHMg6ZmQ5Yi25ZyoIDYtMTAg5LmL6Ze0XG4gICAgaWYgKGxpZ2h0ICYmIGkgPT09IGxpZ2h0Q29sb3JDb3VudCAmJiBzYXR1cmF0aW9uID4gMTApIHtcbiAgICAgICAgc2F0dXJhdGlvbiA9IDEwO1xuICAgIH1cbiAgICBpZiAoc2F0dXJhdGlvbiA8IDYpIHtcbiAgICAgICAgc2F0dXJhdGlvbiA9IDY7XG4gICAgfVxuICAgIHJldHVybiBzYXR1cmF0aW9uO1xufVxuZnVuY3Rpb24gZ2V0VmFsdWUoaHN2LCBpLCBsaWdodCkge1xuICAgIGlmIChsaWdodCkge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChoc3YudiAqIDEwMCkgKyBicmlnaHRuZXNzU3RlcDEgKiBpO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZChoc3YudiAqIDEwMCkgLSBicmlnaHRuZXNzU3RlcDIgKiBpO1xufVxuZnVuY3Rpb24gZ2VuZXJhdGUoY29sb3IpIHtcbiAgICB2YXIgcGF0dGVybnMgPSBbXTtcbiAgICB2YXIgcENvbG9yID0gdGlueWNvbG9yMl8xLmRlZmF1bHQoY29sb3IpO1xuICAgIGZvciAodmFyIGkgPSBsaWdodENvbG9yQ291bnQ7IGkgPiAwOyBpIC09IDEpIHtcbiAgICAgICAgdmFyIGhzdiA9IHBDb2xvci50b0hzdigpO1xuICAgICAgICB2YXIgY29sb3JTdHJpbmcgPSB0aW55Y29sb3IyXzEuZGVmYXVsdCh7XG4gICAgICAgICAgICBoOiBnZXRIdWUoaHN2LCBpLCB0cnVlKSxcbiAgICAgICAgICAgIHM6IGdldFNhdHVyYXRpb24oaHN2LCBpLCB0cnVlKSxcbiAgICAgICAgICAgIHY6IGdldFZhbHVlKGhzdiwgaSwgdHJ1ZSksXG4gICAgICAgIH0pLnRvSGV4U3RyaW5nKCk7XG4gICAgICAgIHBhdHRlcm5zLnB1c2goY29sb3JTdHJpbmcpO1xuICAgIH1cbiAgICBwYXR0ZXJucy5wdXNoKHBDb2xvci50b0hleFN0cmluZygpKTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBkYXJrQ29sb3JDb3VudDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBoc3YgPSBwQ29sb3IudG9Ic3YoKTtcbiAgICAgICAgdmFyIGNvbG9yU3RyaW5nID0gdGlueWNvbG9yMl8xLmRlZmF1bHQoe1xuICAgICAgICAgICAgaDogZ2V0SHVlKGhzdiwgaSksXG4gICAgICAgICAgICBzOiBnZXRTYXR1cmF0aW9uKGhzdiwgaSksXG4gICAgICAgICAgICB2OiBnZXRWYWx1ZShoc3YsIGkpLFxuICAgICAgICB9KS50b0hleFN0cmluZygpO1xuICAgICAgICBwYXR0ZXJucy5wdXNoKGNvbG9yU3RyaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhdHRlcm5zO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gZ2VuZXJhdGU7XG4iLCIvLyBUaW55Q29sb3IgdjEuNC4xXG4vLyBodHRwczovL2dpdGh1Yi5jb20vYmdyaW5zL1RpbnlDb2xvclxuLy8gQnJpYW4gR3JpbnN0ZWFkLCBNSVQgTGljZW5zZVxuXG4oZnVuY3Rpb24oTWF0aCkge1xuXG52YXIgdHJpbUxlZnQgPSAvXlxccysvLFxuICAgIHRyaW1SaWdodCA9IC9cXHMrJC8sXG4gICAgdGlueUNvdW50ZXIgPSAwLFxuICAgIG1hdGhSb3VuZCA9IE1hdGgucm91bmQsXG4gICAgbWF0aE1pbiA9IE1hdGgubWluLFxuICAgIG1hdGhNYXggPSBNYXRoLm1heCxcbiAgICBtYXRoUmFuZG9tID0gTWF0aC5yYW5kb207XG5cbmZ1bmN0aW9uIHRpbnljb2xvciAoY29sb3IsIG9wdHMpIHtcblxuICAgIGNvbG9yID0gKGNvbG9yKSA/IGNvbG9yIDogJyc7XG4gICAgb3B0cyA9IG9wdHMgfHwgeyB9O1xuXG4gICAgLy8gSWYgaW5wdXQgaXMgYWxyZWFkeSBhIHRpbnljb2xvciwgcmV0dXJuIGl0c2VsZlxuICAgIGlmIChjb2xvciBpbnN0YW5jZW9mIHRpbnljb2xvcikge1xuICAgICAgIHJldHVybiBjb2xvcjtcbiAgICB9XG4gICAgLy8gSWYgd2UgYXJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLCBjYWxsIHVzaW5nIG5ldyBpbnN0ZWFkXG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIHRpbnljb2xvcikpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aW55Y29sb3IoY29sb3IsIG9wdHMpO1xuICAgIH1cblxuICAgIHZhciByZ2IgPSBpbnB1dFRvUkdCKGNvbG9yKTtcbiAgICB0aGlzLl9vcmlnaW5hbElucHV0ID0gY29sb3IsXG4gICAgdGhpcy5fciA9IHJnYi5yLFxuICAgIHRoaXMuX2cgPSByZ2IuZyxcbiAgICB0aGlzLl9iID0gcmdiLmIsXG4gICAgdGhpcy5fYSA9IHJnYi5hLFxuICAgIHRoaXMuX3JvdW5kQSA9IG1hdGhSb3VuZCgxMDAqdGhpcy5fYSkgLyAxMDAsXG4gICAgdGhpcy5fZm9ybWF0ID0gb3B0cy5mb3JtYXQgfHwgcmdiLmZvcm1hdDtcbiAgICB0aGlzLl9ncmFkaWVudFR5cGUgPSBvcHRzLmdyYWRpZW50VHlwZTtcblxuICAgIC8vIERvbid0IGxldCB0aGUgcmFuZ2Ugb2YgWzAsMjU1XSBjb21lIGJhY2sgaW4gWzAsMV0uXG4gICAgLy8gUG90ZW50aWFsbHkgbG9zZSBhIGxpdHRsZSBiaXQgb2YgcHJlY2lzaW9uIGhlcmUsIGJ1dCB3aWxsIGZpeCBpc3N1ZXMgd2hlcmVcbiAgICAvLyAuNSBnZXRzIGludGVycHJldGVkIGFzIGhhbGYgb2YgdGhlIHRvdGFsLCBpbnN0ZWFkIG9mIGhhbGYgb2YgMVxuICAgIC8vIElmIGl0IHdhcyBzdXBwb3NlZCB0byBiZSAxMjgsIHRoaXMgd2FzIGFscmVhZHkgdGFrZW4gY2FyZSBvZiBieSBgaW5wdXRUb1JnYmBcbiAgICBpZiAodGhpcy5fciA8IDEpIHsgdGhpcy5fciA9IG1hdGhSb3VuZCh0aGlzLl9yKTsgfVxuICAgIGlmICh0aGlzLl9nIDwgMSkgeyB0aGlzLl9nID0gbWF0aFJvdW5kKHRoaXMuX2cpOyB9XG4gICAgaWYgKHRoaXMuX2IgPCAxKSB7IHRoaXMuX2IgPSBtYXRoUm91bmQodGhpcy5fYik7IH1cblxuICAgIHRoaXMuX29rID0gcmdiLm9rO1xuICAgIHRoaXMuX3RjX2lkID0gdGlueUNvdW50ZXIrKztcbn1cblxudGlueWNvbG9yLnByb3RvdHlwZSA9IHtcbiAgICBpc0Rhcms6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCcmlnaHRuZXNzKCkgPCAxMjg7XG4gICAgfSxcbiAgICBpc0xpZ2h0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzRGFyaygpO1xuICAgIH0sXG4gICAgaXNWYWxpZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vaztcbiAgICB9LFxuICAgIGdldE9yaWdpbmFsSW5wdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX29yaWdpbmFsSW5wdXQ7XG4gICAgfSxcbiAgICBnZXRGb3JtYXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybWF0O1xuICAgIH0sXG4gICAgZ2V0QWxwaGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYTtcbiAgICB9LFxuICAgIGdldEJyaWdodG5lc3M6IGZ1bmN0aW9uKCkge1xuICAgICAgICAvL2h0dHA6Ly93d3cudzMub3JnL1RSL0FFUlQjY29sb3ItY29udHJhc3RcbiAgICAgICAgdmFyIHJnYiA9IHRoaXMudG9SZ2IoKTtcbiAgICAgICAgcmV0dXJuIChyZ2IuciAqIDI5OSArIHJnYi5nICogNTg3ICsgcmdiLmIgKiAxMTQpIC8gMTAwMDtcbiAgICB9LFxuICAgIGdldEx1bWluYW5jZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRlZlxuICAgICAgICB2YXIgcmdiID0gdGhpcy50b1JnYigpO1xuICAgICAgICB2YXIgUnNSR0IsIEdzUkdCLCBCc1JHQiwgUiwgRywgQjtcbiAgICAgICAgUnNSR0IgPSByZ2Iuci8yNTU7XG4gICAgICAgIEdzUkdCID0gcmdiLmcvMjU1O1xuICAgICAgICBCc1JHQiA9IHJnYi5iLzI1NTtcblxuICAgICAgICBpZiAoUnNSR0IgPD0gMC4wMzkyOCkge1IgPSBSc1JHQiAvIDEyLjkyO30gZWxzZSB7UiA9IE1hdGgucG93KCgoUnNSR0IgKyAwLjA1NSkgLyAxLjA1NSksIDIuNCk7fVxuICAgICAgICBpZiAoR3NSR0IgPD0gMC4wMzkyOCkge0cgPSBHc1JHQiAvIDEyLjkyO30gZWxzZSB7RyA9IE1hdGgucG93KCgoR3NSR0IgKyAwLjA1NSkgLyAxLjA1NSksIDIuNCk7fVxuICAgICAgICBpZiAoQnNSR0IgPD0gMC4wMzkyOCkge0IgPSBCc1JHQiAvIDEyLjkyO30gZWxzZSB7QiA9IE1hdGgucG93KCgoQnNSR0IgKyAwLjA1NSkgLyAxLjA1NSksIDIuNCk7fVxuICAgICAgICByZXR1cm4gKDAuMjEyNiAqIFIpICsgKDAuNzE1MiAqIEcpICsgKDAuMDcyMiAqIEIpO1xuICAgIH0sXG4gICAgc2V0QWxwaGE6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2EgPSBib3VuZEFscGhhKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fcm91bmRBID0gbWF0aFJvdW5kKDEwMCp0aGlzLl9hKSAvIDEwMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICB0b0hzdjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBoc3YgPSByZ2JUb0hzdih0aGlzLl9yLCB0aGlzLl9nLCB0aGlzLl9iKTtcbiAgICAgICAgcmV0dXJuIHsgaDogaHN2LmggKiAzNjAsIHM6IGhzdi5zLCB2OiBoc3YudiwgYTogdGhpcy5fYSB9O1xuICAgIH0sXG4gICAgdG9Ic3ZTdHJpbmc6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgaHN2ID0gcmdiVG9Ic3YodGhpcy5fciwgdGhpcy5fZywgdGhpcy5fYik7XG4gICAgICAgIHZhciBoID0gbWF0aFJvdW5kKGhzdi5oICogMzYwKSwgcyA9IG1hdGhSb3VuZChoc3YucyAqIDEwMCksIHYgPSBtYXRoUm91bmQoaHN2LnYgKiAxMDApO1xuICAgICAgICByZXR1cm4gKHRoaXMuX2EgPT0gMSkgP1xuICAgICAgICAgIFwiaHN2KFwiICArIGggKyBcIiwgXCIgKyBzICsgXCIlLCBcIiArIHYgKyBcIiUpXCIgOlxuICAgICAgICAgIFwiaHN2YShcIiArIGggKyBcIiwgXCIgKyBzICsgXCIlLCBcIiArIHYgKyBcIiUsIFwiKyB0aGlzLl9yb3VuZEEgKyBcIilcIjtcbiAgICB9LFxuICAgIHRvSHNsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGhzbCA9IHJnYlRvSHNsKHRoaXMuX3IsIHRoaXMuX2csIHRoaXMuX2IpO1xuICAgICAgICByZXR1cm4geyBoOiBoc2wuaCAqIDM2MCwgczogaHNsLnMsIGw6IGhzbC5sLCBhOiB0aGlzLl9hIH07XG4gICAgfSxcbiAgICB0b0hzbFN0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBoc2wgPSByZ2JUb0hzbCh0aGlzLl9yLCB0aGlzLl9nLCB0aGlzLl9iKTtcbiAgICAgICAgdmFyIGggPSBtYXRoUm91bmQoaHNsLmggKiAzNjApLCBzID0gbWF0aFJvdW5kKGhzbC5zICogMTAwKSwgbCA9IG1hdGhSb3VuZChoc2wubCAqIDEwMCk7XG4gICAgICAgIHJldHVybiAodGhpcy5fYSA9PSAxKSA/XG4gICAgICAgICAgXCJoc2woXCIgICsgaCArIFwiLCBcIiArIHMgKyBcIiUsIFwiICsgbCArIFwiJSlcIiA6XG4gICAgICAgICAgXCJoc2xhKFwiICsgaCArIFwiLCBcIiArIHMgKyBcIiUsIFwiICsgbCArIFwiJSwgXCIrIHRoaXMuX3JvdW5kQSArIFwiKVwiO1xuICAgIH0sXG4gICAgdG9IZXg6IGZ1bmN0aW9uKGFsbG93M0NoYXIpIHtcbiAgICAgICAgcmV0dXJuIHJnYlRvSGV4KHRoaXMuX3IsIHRoaXMuX2csIHRoaXMuX2IsIGFsbG93M0NoYXIpO1xuICAgIH0sXG4gICAgdG9IZXhTdHJpbmc6IGZ1bmN0aW9uKGFsbG93M0NoYXIpIHtcbiAgICAgICAgcmV0dXJuICcjJyArIHRoaXMudG9IZXgoYWxsb3czQ2hhcik7XG4gICAgfSxcbiAgICB0b0hleDg6IGZ1bmN0aW9uKGFsbG93NENoYXIpIHtcbiAgICAgICAgcmV0dXJuIHJnYmFUb0hleCh0aGlzLl9yLCB0aGlzLl9nLCB0aGlzLl9iLCB0aGlzLl9hLCBhbGxvdzRDaGFyKTtcbiAgICB9LFxuICAgIHRvSGV4OFN0cmluZzogZnVuY3Rpb24oYWxsb3c0Q2hhcikge1xuICAgICAgICByZXR1cm4gJyMnICsgdGhpcy50b0hleDgoYWxsb3c0Q2hhcik7XG4gICAgfSxcbiAgICB0b1JnYjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB7IHI6IG1hdGhSb3VuZCh0aGlzLl9yKSwgZzogbWF0aFJvdW5kKHRoaXMuX2cpLCBiOiBtYXRoUm91bmQodGhpcy5fYiksIGE6IHRoaXMuX2EgfTtcbiAgICB9LFxuICAgIHRvUmdiU3RyaW5nOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl9hID09IDEpID9cbiAgICAgICAgICBcInJnYihcIiAgKyBtYXRoUm91bmQodGhpcy5fcikgKyBcIiwgXCIgKyBtYXRoUm91bmQodGhpcy5fZykgKyBcIiwgXCIgKyBtYXRoUm91bmQodGhpcy5fYikgKyBcIilcIiA6XG4gICAgICAgICAgXCJyZ2JhKFwiICsgbWF0aFJvdW5kKHRoaXMuX3IpICsgXCIsIFwiICsgbWF0aFJvdW5kKHRoaXMuX2cpICsgXCIsIFwiICsgbWF0aFJvdW5kKHRoaXMuX2IpICsgXCIsIFwiICsgdGhpcy5fcm91bmRBICsgXCIpXCI7XG4gICAgfSxcbiAgICB0b1BlcmNlbnRhZ2VSZ2I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4geyByOiBtYXRoUm91bmQoYm91bmQwMSh0aGlzLl9yLCAyNTUpICogMTAwKSArIFwiJVwiLCBnOiBtYXRoUm91bmQoYm91bmQwMSh0aGlzLl9nLCAyNTUpICogMTAwKSArIFwiJVwiLCBiOiBtYXRoUm91bmQoYm91bmQwMSh0aGlzLl9iLCAyNTUpICogMTAwKSArIFwiJVwiLCBhOiB0aGlzLl9hIH07XG4gICAgfSxcbiAgICB0b1BlcmNlbnRhZ2VSZ2JTdHJpbmc6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuX2EgPT0gMSkgP1xuICAgICAgICAgIFwicmdiKFwiICArIG1hdGhSb3VuZChib3VuZDAxKHRoaXMuX3IsIDI1NSkgKiAxMDApICsgXCIlLCBcIiArIG1hdGhSb3VuZChib3VuZDAxKHRoaXMuX2csIDI1NSkgKiAxMDApICsgXCIlLCBcIiArIG1hdGhSb3VuZChib3VuZDAxKHRoaXMuX2IsIDI1NSkgKiAxMDApICsgXCIlKVwiIDpcbiAgICAgICAgICBcInJnYmEoXCIgKyBtYXRoUm91bmQoYm91bmQwMSh0aGlzLl9yLCAyNTUpICogMTAwKSArIFwiJSwgXCIgKyBtYXRoUm91bmQoYm91bmQwMSh0aGlzLl9nLCAyNTUpICogMTAwKSArIFwiJSwgXCIgKyBtYXRoUm91bmQoYm91bmQwMSh0aGlzLl9iLCAyNTUpICogMTAwKSArIFwiJSwgXCIgKyB0aGlzLl9yb3VuZEEgKyBcIilcIjtcbiAgICB9LFxuICAgIHRvTmFtZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLl9hID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJ0cmFuc3BhcmVudFwiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2EgPCAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaGV4TmFtZXNbcmdiVG9IZXgodGhpcy5fciwgdGhpcy5fZywgdGhpcy5fYiwgdHJ1ZSldIHx8IGZhbHNlO1xuICAgIH0sXG4gICAgdG9GaWx0ZXI6IGZ1bmN0aW9uKHNlY29uZENvbG9yKSB7XG4gICAgICAgIHZhciBoZXg4U3RyaW5nID0gJyMnICsgcmdiYVRvQXJnYkhleCh0aGlzLl9yLCB0aGlzLl9nLCB0aGlzLl9iLCB0aGlzLl9hKTtcbiAgICAgICAgdmFyIHNlY29uZEhleDhTdHJpbmcgPSBoZXg4U3RyaW5nO1xuICAgICAgICB2YXIgZ3JhZGllbnRUeXBlID0gdGhpcy5fZ3JhZGllbnRUeXBlID8gXCJHcmFkaWVudFR5cGUgPSAxLCBcIiA6IFwiXCI7XG5cbiAgICAgICAgaWYgKHNlY29uZENvbG9yKSB7XG4gICAgICAgICAgICB2YXIgcyA9IHRpbnljb2xvcihzZWNvbmRDb2xvcik7XG4gICAgICAgICAgICBzZWNvbmRIZXg4U3RyaW5nID0gJyMnICsgcmdiYVRvQXJnYkhleChzLl9yLCBzLl9nLCBzLl9iLCBzLl9hKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChcIitncmFkaWVudFR5cGUrXCJzdGFydENvbG9yc3RyPVwiK2hleDhTdHJpbmcrXCIsZW5kQ29sb3JzdHI9XCIrc2Vjb25kSGV4OFN0cmluZytcIilcIjtcbiAgICB9LFxuICAgIHRvU3RyaW5nOiBmdW5jdGlvbihmb3JtYXQpIHtcbiAgICAgICAgdmFyIGZvcm1hdFNldCA9ICEhZm9ybWF0O1xuICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgdGhpcy5fZm9ybWF0O1xuXG4gICAgICAgIHZhciBmb3JtYXR0ZWRTdHJpbmcgPSBmYWxzZTtcbiAgICAgICAgdmFyIGhhc0FscGhhID0gdGhpcy5fYSA8IDEgJiYgdGhpcy5fYSA+PSAwO1xuICAgICAgICB2YXIgbmVlZHNBbHBoYUZvcm1hdCA9ICFmb3JtYXRTZXQgJiYgaGFzQWxwaGEgJiYgKGZvcm1hdCA9PT0gXCJoZXhcIiB8fCBmb3JtYXQgPT09IFwiaGV4NlwiIHx8IGZvcm1hdCA9PT0gXCJoZXgzXCIgfHwgZm9ybWF0ID09PSBcImhleDRcIiB8fCBmb3JtYXQgPT09IFwiaGV4OFwiIHx8IGZvcm1hdCA9PT0gXCJuYW1lXCIpO1xuXG4gICAgICAgIGlmIChuZWVkc0FscGhhRm9ybWF0KSB7XG4gICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIFwidHJhbnNwYXJlbnRcIiwgYWxsIG90aGVyIG5vbi1hbHBoYSBmb3JtYXRzXG4gICAgICAgICAgICAvLyB3aWxsIHJldHVybiByZ2JhIHdoZW4gdGhlcmUgaXMgdHJhbnNwYXJlbmN5LlxuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJuYW1lXCIgJiYgdGhpcy5fYSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvTmFtZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9SZ2JTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9ybWF0ID09PSBcInJnYlwiKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRTdHJpbmcgPSB0aGlzLnRvUmdiU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJwcmdiXCIpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFN0cmluZyA9IHRoaXMudG9QZXJjZW50YWdlUmdiU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJoZXhcIiB8fCBmb3JtYXQgPT09IFwiaGV4NlwiKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRTdHJpbmcgPSB0aGlzLnRvSGV4U3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJoZXgzXCIpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFN0cmluZyA9IHRoaXMudG9IZXhTdHJpbmcodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJoZXg0XCIpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFN0cmluZyA9IHRoaXMudG9IZXg4U3RyaW5nKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmb3JtYXQgPT09IFwiaGV4OFwiKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRTdHJpbmcgPSB0aGlzLnRvSGV4OFN0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmb3JtYXQgPT09IFwibmFtZVwiKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRTdHJpbmcgPSB0aGlzLnRvTmFtZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmb3JtYXQgPT09IFwiaHNsXCIpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFN0cmluZyA9IHRoaXMudG9Ic2xTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9ybWF0ID09PSBcImhzdlwiKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRTdHJpbmcgPSB0aGlzLnRvSHN2U3RyaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9ybWF0dGVkU3RyaW5nIHx8IHRoaXMudG9IZXhTdHJpbmcoKTtcbiAgICB9LFxuICAgIGNsb25lOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRpbnljb2xvcih0aGlzLnRvU3RyaW5nKCkpO1xuICAgIH0sXG5cbiAgICBfYXBwbHlNb2RpZmljYXRpb246IGZ1bmN0aW9uKGZuLCBhcmdzKSB7XG4gICAgICAgIHZhciBjb2xvciA9IGZuLmFwcGx5KG51bGwsIFt0aGlzXS5jb25jYXQoW10uc2xpY2UuY2FsbChhcmdzKSkpO1xuICAgICAgICB0aGlzLl9yID0gY29sb3IuX3I7XG4gICAgICAgIHRoaXMuX2cgPSBjb2xvci5fZztcbiAgICAgICAgdGhpcy5fYiA9IGNvbG9yLl9iO1xuICAgICAgICB0aGlzLnNldEFscGhhKGNvbG9yLl9hKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBsaWdodGVuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGxpZ2h0ZW4sIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBicmlnaHRlbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihicmlnaHRlbiwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGRhcmtlbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihkYXJrZW4sIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBkZXNhdHVyYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGRlc2F0dXJhdGUsIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBzYXR1cmF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihzYXR1cmF0ZSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGdyZXlzY2FsZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihncmV5c2NhbGUsIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBzcGluOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKHNwaW4sIGFyZ3VtZW50cyk7XG4gICAgfSxcblxuICAgIF9hcHBseUNvbWJpbmF0aW9uOiBmdW5jdGlvbihmbiwgYXJncykge1xuICAgICAgICByZXR1cm4gZm4uYXBwbHkobnVsbCwgW3RoaXNdLmNvbmNhdChbXS5zbGljZS5jYWxsKGFyZ3MpKSk7XG4gICAgfSxcbiAgICBhbmFsb2dvdXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihhbmFsb2dvdXMsIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBjb21wbGVtZW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24oY29tcGxlbWVudCwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIG1vbm9jaHJvbWF0aWM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihtb25vY2hyb21hdGljLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgc3BsaXRjb21wbGVtZW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24oc3BsaXRjb21wbGVtZW50LCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgdHJpYWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbih0cmlhZCwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIHRldHJhZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKHRldHJhZCwgYXJndW1lbnRzKTtcbiAgICB9XG59O1xuXG4vLyBJZiBpbnB1dCBpcyBhbiBvYmplY3QsIGZvcmNlIDEgaW50byBcIjEuMFwiIHRvIGhhbmRsZSByYXRpb3MgcHJvcGVybHlcbi8vIFN0cmluZyBpbnB1dCByZXF1aXJlcyBcIjEuMFwiIGFzIGlucHV0LCBzbyAxIHdpbGwgYmUgdHJlYXRlZCBhcyAxXG50aW55Y29sb3IuZnJvbVJhdGlvID0gZnVuY3Rpb24oY29sb3IsIG9wdHMpIHtcbiAgICBpZiAodHlwZW9mIGNvbG9yID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdmFyIG5ld0NvbG9yID0ge307XG4gICAgICAgIGZvciAodmFyIGkgaW4gY29sb3IpIHtcbiAgICAgICAgICAgIGlmIChjb2xvci5oYXNPd25Qcm9wZXJ0eShpKSkge1xuICAgICAgICAgICAgICAgIGlmIChpID09PSBcImFcIikge1xuICAgICAgICAgICAgICAgICAgICBuZXdDb2xvcltpXSA9IGNvbG9yW2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Q29sb3JbaV0gPSBjb252ZXJ0VG9QZXJjZW50YWdlKGNvbG9yW2ldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29sb3IgPSBuZXdDb2xvcjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGlueWNvbG9yKGNvbG9yLCBvcHRzKTtcbn07XG5cbi8vIEdpdmVuIGEgc3RyaW5nIG9yIG9iamVjdCwgY29udmVydCB0aGF0IGlucHV0IHRvIFJHQlxuLy8gUG9zc2libGUgc3RyaW5nIGlucHV0czpcbi8vXG4vLyAgICAgXCJyZWRcIlxuLy8gICAgIFwiI2YwMFwiIG9yIFwiZjAwXCJcbi8vICAgICBcIiNmZjAwMDBcIiBvciBcImZmMDAwMFwiXG4vLyAgICAgXCIjZmYwMDAwMDBcIiBvciBcImZmMDAwMDAwXCJcbi8vICAgICBcInJnYiAyNTUgMCAwXCIgb3IgXCJyZ2IgKDI1NSwgMCwgMClcIlxuLy8gICAgIFwicmdiIDEuMCAwIDBcIiBvciBcInJnYiAoMSwgMCwgMClcIlxuLy8gICAgIFwicmdiYSAoMjU1LCAwLCAwLCAxKVwiIG9yIFwicmdiYSAyNTUsIDAsIDAsIDFcIlxuLy8gICAgIFwicmdiYSAoMS4wLCAwLCAwLCAxKVwiIG9yIFwicmdiYSAxLjAsIDAsIDAsIDFcIlxuLy8gICAgIFwiaHNsKDAsIDEwMCUsIDUwJSlcIiBvciBcImhzbCAwIDEwMCUgNTAlXCJcbi8vICAgICBcImhzbGEoMCwgMTAwJSwgNTAlLCAxKVwiIG9yIFwiaHNsYSAwIDEwMCUgNTAlLCAxXCJcbi8vICAgICBcImhzdigwLCAxMDAlLCAxMDAlKVwiIG9yIFwiaHN2IDAgMTAwJSAxMDAlXCJcbi8vXG5mdW5jdGlvbiBpbnB1dFRvUkdCKGNvbG9yKSB7XG5cbiAgICB2YXIgcmdiID0geyByOiAwLCBnOiAwLCBiOiAwIH07XG4gICAgdmFyIGEgPSAxO1xuICAgIHZhciBzID0gbnVsbDtcbiAgICB2YXIgdiA9IG51bGw7XG4gICAgdmFyIGwgPSBudWxsO1xuICAgIHZhciBvayA9IGZhbHNlO1xuICAgIHZhciBmb3JtYXQgPSBmYWxzZTtcblxuICAgIGlmICh0eXBlb2YgY29sb3IgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICBjb2xvciA9IHN0cmluZ0lucHV0VG9PYmplY3QoY29sb3IpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29sb3IgPT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAoaXNWYWxpZENTU1VuaXQoY29sb3IucikgJiYgaXNWYWxpZENTU1VuaXQoY29sb3IuZykgJiYgaXNWYWxpZENTU1VuaXQoY29sb3IuYikpIHtcbiAgICAgICAgICAgIHJnYiA9IHJnYlRvUmdiKGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIpO1xuICAgICAgICAgICAgb2sgPSB0cnVlO1xuICAgICAgICAgICAgZm9ybWF0ID0gU3RyaW5nKGNvbG9yLnIpLnN1YnN0cigtMSkgPT09IFwiJVwiID8gXCJwcmdiXCIgOiBcInJnYlwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzVmFsaWRDU1NVbml0KGNvbG9yLmgpICYmIGlzVmFsaWRDU1NVbml0KGNvbG9yLnMpICYmIGlzVmFsaWRDU1NVbml0KGNvbG9yLnYpKSB7XG4gICAgICAgICAgICBzID0gY29udmVydFRvUGVyY2VudGFnZShjb2xvci5zKTtcbiAgICAgICAgICAgIHYgPSBjb252ZXJ0VG9QZXJjZW50YWdlKGNvbG9yLnYpO1xuICAgICAgICAgICAgcmdiID0gaHN2VG9SZ2IoY29sb3IuaCwgcywgdik7XG4gICAgICAgICAgICBvayA9IHRydWU7XG4gICAgICAgICAgICBmb3JtYXQgPSBcImhzdlwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzVmFsaWRDU1NVbml0KGNvbG9yLmgpICYmIGlzVmFsaWRDU1NVbml0KGNvbG9yLnMpICYmIGlzVmFsaWRDU1NVbml0KGNvbG9yLmwpKSB7XG4gICAgICAgICAgICBzID0gY29udmVydFRvUGVyY2VudGFnZShjb2xvci5zKTtcbiAgICAgICAgICAgIGwgPSBjb252ZXJ0VG9QZXJjZW50YWdlKGNvbG9yLmwpO1xuICAgICAgICAgICAgcmdiID0gaHNsVG9SZ2IoY29sb3IuaCwgcywgbCk7XG4gICAgICAgICAgICBvayA9IHRydWU7XG4gICAgICAgICAgICBmb3JtYXQgPSBcImhzbFwiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbG9yLmhhc093blByb3BlcnR5KFwiYVwiKSkge1xuICAgICAgICAgICAgYSA9IGNvbG9yLmE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhID0gYm91bmRBbHBoYShhKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIG9rOiBvayxcbiAgICAgICAgZm9ybWF0OiBjb2xvci5mb3JtYXQgfHwgZm9ybWF0LFxuICAgICAgICByOiBtYXRoTWluKDI1NSwgbWF0aE1heChyZ2IuciwgMCkpLFxuICAgICAgICBnOiBtYXRoTWluKDI1NSwgbWF0aE1heChyZ2IuZywgMCkpLFxuICAgICAgICBiOiBtYXRoTWluKDI1NSwgbWF0aE1heChyZ2IuYiwgMCkpLFxuICAgICAgICBhOiBhXG4gICAgfTtcbn1cblxuXG4vLyBDb252ZXJzaW9uIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gYHJnYlRvSHNsYCwgYHJnYlRvSHN2YCwgYGhzbFRvUmdiYCwgYGhzdlRvUmdiYCBtb2RpZmllZCBmcm9tOlxuLy8gPGh0dHA6Ly9tamlqYWNrc29uLmNvbS8yMDA4LzAyL3JnYi10by1oc2wtYW5kLXJnYi10by1oc3YtY29sb3ItbW9kZWwtY29udmVyc2lvbi1hbGdvcml0aG1zLWluLWphdmFzY3JpcHQ+XG5cbi8vIGByZ2JUb1JnYmBcbi8vIEhhbmRsZSBib3VuZHMgLyBwZXJjZW50YWdlIGNoZWNraW5nIHRvIGNvbmZvcm0gdG8gQ1NTIGNvbG9yIHNwZWNcbi8vIDxodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWNvbG9yLz5cbi8vICpBc3N1bWVzOiogciwgZywgYiBpbiBbMCwgMjU1XSBvciBbMCwgMV1cbi8vICpSZXR1cm5zOiogeyByLCBnLCBiIH0gaW4gWzAsIDI1NV1cbmZ1bmN0aW9uIHJnYlRvUmdiKHIsIGcsIGIpe1xuICAgIHJldHVybiB7XG4gICAgICAgIHI6IGJvdW5kMDEociwgMjU1KSAqIDI1NSxcbiAgICAgICAgZzogYm91bmQwMShnLCAyNTUpICogMjU1LFxuICAgICAgICBiOiBib3VuZDAxKGIsIDI1NSkgKiAyNTVcbiAgICB9O1xufVxuXG4vLyBgcmdiVG9Ic2xgXG4vLyBDb252ZXJ0cyBhbiBSR0IgY29sb3IgdmFsdWUgdG8gSFNMLlxuLy8gKkFzc3VtZXM6KiByLCBnLCBhbmQgYiBhcmUgY29udGFpbmVkIGluIFswLCAyNTVdIG9yIFswLCAxXVxuLy8gKlJldHVybnM6KiB7IGgsIHMsIGwgfSBpbiBbMCwxXVxuZnVuY3Rpb24gcmdiVG9Ic2wociwgZywgYikge1xuXG4gICAgciA9IGJvdW5kMDEociwgMjU1KTtcbiAgICBnID0gYm91bmQwMShnLCAyNTUpO1xuICAgIGIgPSBib3VuZDAxKGIsIDI1NSk7XG5cbiAgICB2YXIgbWF4ID0gbWF0aE1heChyLCBnLCBiKSwgbWluID0gbWF0aE1pbihyLCBnLCBiKTtcbiAgICB2YXIgaCwgcywgbCA9IChtYXggKyBtaW4pIC8gMjtcblxuICAgIGlmKG1heCA9PSBtaW4pIHtcbiAgICAgICAgaCA9IHMgPSAwOyAvLyBhY2hyb21hdGljXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgZCA9IG1heCAtIG1pbjtcbiAgICAgICAgcyA9IGwgPiAwLjUgPyBkIC8gKDIgLSBtYXggLSBtaW4pIDogZCAvIChtYXggKyBtaW4pO1xuICAgICAgICBzd2l0Y2gobWF4KSB7XG4gICAgICAgICAgICBjYXNlIHI6IGggPSAoZyAtIGIpIC8gZCArIChnIDwgYiA/IDYgOiAwKTsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGc6IGggPSAoYiAtIHIpIC8gZCArIDI7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBiOiBoID0gKHIgLSBnKSAvIGQgKyA0OyBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGggLz0gNjtcbiAgICB9XG5cbiAgICByZXR1cm4geyBoOiBoLCBzOiBzLCBsOiBsIH07XG59XG5cbi8vIGBoc2xUb1JnYmBcbi8vIENvbnZlcnRzIGFuIEhTTCBjb2xvciB2YWx1ZSB0byBSR0IuXG4vLyAqQXNzdW1lczoqIGggaXMgY29udGFpbmVkIGluIFswLCAxXSBvciBbMCwgMzYwXSBhbmQgcyBhbmQgbCBhcmUgY29udGFpbmVkIFswLCAxXSBvciBbMCwgMTAwXVxuLy8gKlJldHVybnM6KiB7IHIsIGcsIGIgfSBpbiB0aGUgc2V0IFswLCAyNTVdXG5mdW5jdGlvbiBoc2xUb1JnYihoLCBzLCBsKSB7XG4gICAgdmFyIHIsIGcsIGI7XG5cbiAgICBoID0gYm91bmQwMShoLCAzNjApO1xuICAgIHMgPSBib3VuZDAxKHMsIDEwMCk7XG4gICAgbCA9IGJvdW5kMDEobCwgMTAwKTtcblxuICAgIGZ1bmN0aW9uIGh1ZTJyZ2IocCwgcSwgdCkge1xuICAgICAgICBpZih0IDwgMCkgdCArPSAxO1xuICAgICAgICBpZih0ID4gMSkgdCAtPSAxO1xuICAgICAgICBpZih0IDwgMS82KSByZXR1cm4gcCArIChxIC0gcCkgKiA2ICogdDtcbiAgICAgICAgaWYodCA8IDEvMikgcmV0dXJuIHE7XG4gICAgICAgIGlmKHQgPCAyLzMpIHJldHVybiBwICsgKHEgLSBwKSAqICgyLzMgLSB0KSAqIDY7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIGlmKHMgPT09IDApIHtcbiAgICAgICAgciA9IGcgPSBiID0gbDsgLy8gYWNocm9tYXRpY1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHEgPSBsIDwgMC41ID8gbCAqICgxICsgcykgOiBsICsgcyAtIGwgKiBzO1xuICAgICAgICB2YXIgcCA9IDIgKiBsIC0gcTtcbiAgICAgICAgciA9IGh1ZTJyZ2IocCwgcSwgaCArIDEvMyk7XG4gICAgICAgIGcgPSBodWUycmdiKHAsIHEsIGgpO1xuICAgICAgICBiID0gaHVlMnJnYihwLCBxLCBoIC0gMS8zKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyByOiByICogMjU1LCBnOiBnICogMjU1LCBiOiBiICogMjU1IH07XG59XG5cbi8vIGByZ2JUb0hzdmBcbi8vIENvbnZlcnRzIGFuIFJHQiBjb2xvciB2YWx1ZSB0byBIU1Zcbi8vICpBc3N1bWVzOiogciwgZywgYW5kIGIgYXJlIGNvbnRhaW5lZCBpbiB0aGUgc2V0IFswLCAyNTVdIG9yIFswLCAxXVxuLy8gKlJldHVybnM6KiB7IGgsIHMsIHYgfSBpbiBbMCwxXVxuZnVuY3Rpb24gcmdiVG9Ic3YociwgZywgYikge1xuXG4gICAgciA9IGJvdW5kMDEociwgMjU1KTtcbiAgICBnID0gYm91bmQwMShnLCAyNTUpO1xuICAgIGIgPSBib3VuZDAxKGIsIDI1NSk7XG5cbiAgICB2YXIgbWF4ID0gbWF0aE1heChyLCBnLCBiKSwgbWluID0gbWF0aE1pbihyLCBnLCBiKTtcbiAgICB2YXIgaCwgcywgdiA9IG1heDtcblxuICAgIHZhciBkID0gbWF4IC0gbWluO1xuICAgIHMgPSBtYXggPT09IDAgPyAwIDogZCAvIG1heDtcblxuICAgIGlmKG1heCA9PSBtaW4pIHtcbiAgICAgICAgaCA9IDA7IC8vIGFjaHJvbWF0aWNcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN3aXRjaChtYXgpIHtcbiAgICAgICAgICAgIGNhc2UgcjogaCA9IChnIC0gYikgLyBkICsgKGcgPCBiID8gNiA6IDApOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgZzogaCA9IChiIC0gcikgLyBkICsgMjsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGI6IGggPSAociAtIGcpIC8gZCArIDQ7IGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGggLz0gNjtcbiAgICB9XG4gICAgcmV0dXJuIHsgaDogaCwgczogcywgdjogdiB9O1xufVxuXG4vLyBgaHN2VG9SZ2JgXG4vLyBDb252ZXJ0cyBhbiBIU1YgY29sb3IgdmFsdWUgdG8gUkdCLlxuLy8gKkFzc3VtZXM6KiBoIGlzIGNvbnRhaW5lZCBpbiBbMCwgMV0gb3IgWzAsIDM2MF0gYW5kIHMgYW5kIHYgYXJlIGNvbnRhaW5lZCBpbiBbMCwgMV0gb3IgWzAsIDEwMF1cbi8vICpSZXR1cm5zOiogeyByLCBnLCBiIH0gaW4gdGhlIHNldCBbMCwgMjU1XVxuIGZ1bmN0aW9uIGhzdlRvUmdiKGgsIHMsIHYpIHtcblxuICAgIGggPSBib3VuZDAxKGgsIDM2MCkgKiA2O1xuICAgIHMgPSBib3VuZDAxKHMsIDEwMCk7XG4gICAgdiA9IGJvdW5kMDEodiwgMTAwKTtcblxuICAgIHZhciBpID0gTWF0aC5mbG9vcihoKSxcbiAgICAgICAgZiA9IGggLSBpLFxuICAgICAgICBwID0gdiAqICgxIC0gcyksXG4gICAgICAgIHEgPSB2ICogKDEgLSBmICogcyksXG4gICAgICAgIHQgPSB2ICogKDEgLSAoMSAtIGYpICogcyksXG4gICAgICAgIG1vZCA9IGkgJSA2LFxuICAgICAgICByID0gW3YsIHEsIHAsIHAsIHQsIHZdW21vZF0sXG4gICAgICAgIGcgPSBbdCwgdiwgdiwgcSwgcCwgcF1bbW9kXSxcbiAgICAgICAgYiA9IFtwLCBwLCB0LCB2LCB2LCBxXVttb2RdO1xuXG4gICAgcmV0dXJuIHsgcjogciAqIDI1NSwgZzogZyAqIDI1NSwgYjogYiAqIDI1NSB9O1xufVxuXG4vLyBgcmdiVG9IZXhgXG4vLyBDb252ZXJ0cyBhbiBSR0IgY29sb3IgdG8gaGV4XG4vLyBBc3N1bWVzIHIsIGcsIGFuZCBiIGFyZSBjb250YWluZWQgaW4gdGhlIHNldCBbMCwgMjU1XVxuLy8gUmV0dXJucyBhIDMgb3IgNiBjaGFyYWN0ZXIgaGV4XG5mdW5jdGlvbiByZ2JUb0hleChyLCBnLCBiLCBhbGxvdzNDaGFyKSB7XG5cbiAgICB2YXIgaGV4ID0gW1xuICAgICAgICBwYWQyKG1hdGhSb3VuZChyKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKG1hdGhSb3VuZChnKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKG1hdGhSb3VuZChiKS50b1N0cmluZygxNikpXG4gICAgXTtcblxuICAgIC8vIFJldHVybiBhIDMgY2hhcmFjdGVyIGhleCBpZiBwb3NzaWJsZVxuICAgIGlmIChhbGxvdzNDaGFyICYmIGhleFswXS5jaGFyQXQoMCkgPT0gaGV4WzBdLmNoYXJBdCgxKSAmJiBoZXhbMV0uY2hhckF0KDApID09IGhleFsxXS5jaGFyQXQoMSkgJiYgaGV4WzJdLmNoYXJBdCgwKSA9PSBoZXhbMl0uY2hhckF0KDEpKSB7XG4gICAgICAgIHJldHVybiBoZXhbMF0uY2hhckF0KDApICsgaGV4WzFdLmNoYXJBdCgwKSArIGhleFsyXS5jaGFyQXQoMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhleC5qb2luKFwiXCIpO1xufVxuXG4vLyBgcmdiYVRvSGV4YFxuLy8gQ29udmVydHMgYW4gUkdCQSBjb2xvciBwbHVzIGFscGhhIHRyYW5zcGFyZW5jeSB0byBoZXhcbi8vIEFzc3VtZXMgciwgZywgYiBhcmUgY29udGFpbmVkIGluIHRoZSBzZXQgWzAsIDI1NV0gYW5kXG4vLyBhIGluIFswLCAxXS4gUmV0dXJucyBhIDQgb3IgOCBjaGFyYWN0ZXIgcmdiYSBoZXhcbmZ1bmN0aW9uIHJnYmFUb0hleChyLCBnLCBiLCBhLCBhbGxvdzRDaGFyKSB7XG5cbiAgICB2YXIgaGV4ID0gW1xuICAgICAgICBwYWQyKG1hdGhSb3VuZChyKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKG1hdGhSb3VuZChnKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKG1hdGhSb3VuZChiKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKGNvbnZlcnREZWNpbWFsVG9IZXgoYSkpXG4gICAgXTtcblxuICAgIC8vIFJldHVybiBhIDQgY2hhcmFjdGVyIGhleCBpZiBwb3NzaWJsZVxuICAgIGlmIChhbGxvdzRDaGFyICYmIGhleFswXS5jaGFyQXQoMCkgPT0gaGV4WzBdLmNoYXJBdCgxKSAmJiBoZXhbMV0uY2hhckF0KDApID09IGhleFsxXS5jaGFyQXQoMSkgJiYgaGV4WzJdLmNoYXJBdCgwKSA9PSBoZXhbMl0uY2hhckF0KDEpICYmIGhleFszXS5jaGFyQXQoMCkgPT0gaGV4WzNdLmNoYXJBdCgxKSkge1xuICAgICAgICByZXR1cm4gaGV4WzBdLmNoYXJBdCgwKSArIGhleFsxXS5jaGFyQXQoMCkgKyBoZXhbMl0uY2hhckF0KDApICsgaGV4WzNdLmNoYXJBdCgwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGV4LmpvaW4oXCJcIik7XG59XG5cbi8vIGByZ2JhVG9BcmdiSGV4YFxuLy8gQ29udmVydHMgYW4gUkdCQSBjb2xvciB0byBhbiBBUkdCIEhleDggc3RyaW5nXG4vLyBSYXJlbHkgdXNlZCwgYnV0IHJlcXVpcmVkIGZvciBcInRvRmlsdGVyKClcIlxuZnVuY3Rpb24gcmdiYVRvQXJnYkhleChyLCBnLCBiLCBhKSB7XG5cbiAgICB2YXIgaGV4ID0gW1xuICAgICAgICBwYWQyKGNvbnZlcnREZWNpbWFsVG9IZXgoYSkpLFxuICAgICAgICBwYWQyKG1hdGhSb3VuZChyKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKG1hdGhSb3VuZChnKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKG1hdGhSb3VuZChiKS50b1N0cmluZygxNikpXG4gICAgXTtcblxuICAgIHJldHVybiBoZXguam9pbihcIlwiKTtcbn1cblxuLy8gYGVxdWFsc2Bcbi8vIENhbiBiZSBjYWxsZWQgd2l0aCBhbnkgdGlueWNvbG9yIGlucHV0XG50aW55Y29sb3IuZXF1YWxzID0gZnVuY3Rpb24gKGNvbG9yMSwgY29sb3IyKSB7XG4gICAgaWYgKCFjb2xvcjEgfHwgIWNvbG9yMikgeyByZXR1cm4gZmFsc2U7IH1cbiAgICByZXR1cm4gdGlueWNvbG9yKGNvbG9yMSkudG9SZ2JTdHJpbmcoKSA9PSB0aW55Y29sb3IoY29sb3IyKS50b1JnYlN0cmluZygpO1xufTtcblxudGlueWNvbG9yLnJhbmRvbSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aW55Y29sb3IuZnJvbVJhdGlvKHtcbiAgICAgICAgcjogbWF0aFJhbmRvbSgpLFxuICAgICAgICBnOiBtYXRoUmFuZG9tKCksXG4gICAgICAgIGI6IG1hdGhSYW5kb20oKVxuICAgIH0pO1xufTtcblxuXG4vLyBNb2RpZmljYXRpb24gRnVuY3Rpb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGFua3MgdG8gbGVzcy5qcyBmb3Igc29tZSBvZiB0aGUgYmFzaWNzIGhlcmVcbi8vIDxodHRwczovL2dpdGh1Yi5jb20vY2xvdWRoZWFkL2xlc3MuanMvYmxvYi9tYXN0ZXIvbGliL2xlc3MvZnVuY3Rpb25zLmpzPlxuXG5mdW5jdGlvbiBkZXNhdHVyYXRlKGNvbG9yLCBhbW91bnQpIHtcbiAgICBhbW91bnQgPSAoYW1vdW50ID09PSAwKSA/IDAgOiAoYW1vdW50IHx8IDEwKTtcbiAgICB2YXIgaHNsID0gdGlueWNvbG9yKGNvbG9yKS50b0hzbCgpO1xuICAgIGhzbC5zIC09IGFtb3VudCAvIDEwMDtcbiAgICBoc2wucyA9IGNsYW1wMDEoaHNsLnMpO1xuICAgIHJldHVybiB0aW55Y29sb3IoaHNsKTtcbn1cblxuZnVuY3Rpb24gc2F0dXJhdGUoY29sb3IsIGFtb3VudCkge1xuICAgIGFtb3VudCA9IChhbW91bnQgPT09IDApID8gMCA6IChhbW91bnQgfHwgMTApO1xuICAgIHZhciBoc2wgPSB0aW55Y29sb3IoY29sb3IpLnRvSHNsKCk7XG4gICAgaHNsLnMgKz0gYW1vdW50IC8gMTAwO1xuICAgIGhzbC5zID0gY2xhbXAwMShoc2wucyk7XG4gICAgcmV0dXJuIHRpbnljb2xvcihoc2wpO1xufVxuXG5mdW5jdGlvbiBncmV5c2NhbGUoY29sb3IpIHtcbiAgICByZXR1cm4gdGlueWNvbG9yKGNvbG9yKS5kZXNhdHVyYXRlKDEwMCk7XG59XG5cbmZ1bmN0aW9uIGxpZ2h0ZW4gKGNvbG9yLCBhbW91bnQpIHtcbiAgICBhbW91bnQgPSAoYW1vdW50ID09PSAwKSA/IDAgOiAoYW1vdW50IHx8IDEwKTtcbiAgICB2YXIgaHNsID0gdGlueWNvbG9yKGNvbG9yKS50b0hzbCgpO1xuICAgIGhzbC5sICs9IGFtb3VudCAvIDEwMDtcbiAgICBoc2wubCA9IGNsYW1wMDEoaHNsLmwpO1xuICAgIHJldHVybiB0aW55Y29sb3IoaHNsKTtcbn1cblxuZnVuY3Rpb24gYnJpZ2h0ZW4oY29sb3IsIGFtb3VudCkge1xuICAgIGFtb3VudCA9IChhbW91bnQgPT09IDApID8gMCA6IChhbW91bnQgfHwgMTApO1xuICAgIHZhciByZ2IgPSB0aW55Y29sb3IoY29sb3IpLnRvUmdiKCk7XG4gICAgcmdiLnIgPSBtYXRoTWF4KDAsIG1hdGhNaW4oMjU1LCByZ2IuciAtIG1hdGhSb3VuZCgyNTUgKiAtIChhbW91bnQgLyAxMDApKSkpO1xuICAgIHJnYi5nID0gbWF0aE1heCgwLCBtYXRoTWluKDI1NSwgcmdiLmcgLSBtYXRoUm91bmQoMjU1ICogLSAoYW1vdW50IC8gMTAwKSkpKTtcbiAgICByZ2IuYiA9IG1hdGhNYXgoMCwgbWF0aE1pbigyNTUsIHJnYi5iIC0gbWF0aFJvdW5kKDI1NSAqIC0gKGFtb3VudCAvIDEwMCkpKSk7XG4gICAgcmV0dXJuIHRpbnljb2xvcihyZ2IpO1xufVxuXG5mdW5jdGlvbiBkYXJrZW4gKGNvbG9yLCBhbW91bnQpIHtcbiAgICBhbW91bnQgPSAoYW1vdW50ID09PSAwKSA/IDAgOiAoYW1vdW50IHx8IDEwKTtcbiAgICB2YXIgaHNsID0gdGlueWNvbG9yKGNvbG9yKS50b0hzbCgpO1xuICAgIGhzbC5sIC09IGFtb3VudCAvIDEwMDtcbiAgICBoc2wubCA9IGNsYW1wMDEoaHNsLmwpO1xuICAgIHJldHVybiB0aW55Y29sb3IoaHNsKTtcbn1cblxuLy8gU3BpbiB0YWtlcyBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGFtb3VudCB3aXRoaW4gWy0zNjAsIDM2MF0gaW5kaWNhdGluZyB0aGUgY2hhbmdlIG9mIGh1ZS5cbi8vIFZhbHVlcyBvdXRzaWRlIG9mIHRoaXMgcmFuZ2Ugd2lsbCBiZSB3cmFwcGVkIGludG8gdGhpcyByYW5nZS5cbmZ1bmN0aW9uIHNwaW4oY29sb3IsIGFtb3VudCkge1xuICAgIHZhciBoc2wgPSB0aW55Y29sb3IoY29sb3IpLnRvSHNsKCk7XG4gICAgdmFyIGh1ZSA9IChoc2wuaCArIGFtb3VudCkgJSAzNjA7XG4gICAgaHNsLmggPSBodWUgPCAwID8gMzYwICsgaHVlIDogaHVlO1xuICAgIHJldHVybiB0aW55Y29sb3IoaHNsKTtcbn1cblxuLy8gQ29tYmluYXRpb24gRnVuY3Rpb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoYW5rcyB0byBqUXVlcnkgeENvbG9yIGZvciBzb21lIG9mIHRoZSBpZGVhcyBiZWhpbmQgdGhlc2Vcbi8vIDxodHRwczovL2dpdGh1Yi5jb20vaW5mdXNpb24valF1ZXJ5LXhjb2xvci9ibG9iL21hc3Rlci9qcXVlcnkueGNvbG9yLmpzPlxuXG5mdW5jdGlvbiBjb21wbGVtZW50KGNvbG9yKSB7XG4gICAgdmFyIGhzbCA9IHRpbnljb2xvcihjb2xvcikudG9Ic2woKTtcbiAgICBoc2wuaCA9IChoc2wuaCArIDE4MCkgJSAzNjA7XG4gICAgcmV0dXJuIHRpbnljb2xvcihoc2wpO1xufVxuXG5mdW5jdGlvbiB0cmlhZChjb2xvcikge1xuICAgIHZhciBoc2wgPSB0aW55Y29sb3IoY29sb3IpLnRvSHNsKCk7XG4gICAgdmFyIGggPSBoc2wuaDtcbiAgICByZXR1cm4gW1xuICAgICAgICB0aW55Y29sb3IoY29sb3IpLFxuICAgICAgICB0aW55Y29sb3IoeyBoOiAoaCArIDEyMCkgJSAzNjAsIHM6IGhzbC5zLCBsOiBoc2wubCB9KSxcbiAgICAgICAgdGlueWNvbG9yKHsgaDogKGggKyAyNDApICUgMzYwLCBzOiBoc2wucywgbDogaHNsLmwgfSlcbiAgICBdO1xufVxuXG5mdW5jdGlvbiB0ZXRyYWQoY29sb3IpIHtcbiAgICB2YXIgaHNsID0gdGlueWNvbG9yKGNvbG9yKS50b0hzbCgpO1xuICAgIHZhciBoID0gaHNsLmg7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgdGlueWNvbG9yKGNvbG9yKSxcbiAgICAgICAgdGlueWNvbG9yKHsgaDogKGggKyA5MCkgJSAzNjAsIHM6IGhzbC5zLCBsOiBoc2wubCB9KSxcbiAgICAgICAgdGlueWNvbG9yKHsgaDogKGggKyAxODApICUgMzYwLCBzOiBoc2wucywgbDogaHNsLmwgfSksXG4gICAgICAgIHRpbnljb2xvcih7IGg6IChoICsgMjcwKSAlIDM2MCwgczogaHNsLnMsIGw6IGhzbC5sIH0pXG4gICAgXTtcbn1cblxuZnVuY3Rpb24gc3BsaXRjb21wbGVtZW50KGNvbG9yKSB7XG4gICAgdmFyIGhzbCA9IHRpbnljb2xvcihjb2xvcikudG9Ic2woKTtcbiAgICB2YXIgaCA9IGhzbC5oO1xuICAgIHJldHVybiBbXG4gICAgICAgIHRpbnljb2xvcihjb2xvciksXG4gICAgICAgIHRpbnljb2xvcih7IGg6IChoICsgNzIpICUgMzYwLCBzOiBoc2wucywgbDogaHNsLmx9KSxcbiAgICAgICAgdGlueWNvbG9yKHsgaDogKGggKyAyMTYpICUgMzYwLCBzOiBoc2wucywgbDogaHNsLmx9KVxuICAgIF07XG59XG5cbmZ1bmN0aW9uIGFuYWxvZ291cyhjb2xvciwgcmVzdWx0cywgc2xpY2VzKSB7XG4gICAgcmVzdWx0cyA9IHJlc3VsdHMgfHwgNjtcbiAgICBzbGljZXMgPSBzbGljZXMgfHwgMzA7XG5cbiAgICB2YXIgaHNsID0gdGlueWNvbG9yKGNvbG9yKS50b0hzbCgpO1xuICAgIHZhciBwYXJ0ID0gMzYwIC8gc2xpY2VzO1xuICAgIHZhciByZXQgPSBbdGlueWNvbG9yKGNvbG9yKV07XG5cbiAgICBmb3IgKGhzbC5oID0gKChoc2wuaCAtIChwYXJ0ICogcmVzdWx0cyA+PiAxKSkgKyA3MjApICUgMzYwOyAtLXJlc3VsdHM7ICkge1xuICAgICAgICBoc2wuaCA9IChoc2wuaCArIHBhcnQpICUgMzYwO1xuICAgICAgICByZXQucHVzaCh0aW55Y29sb3IoaHNsKSk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG1vbm9jaHJvbWF0aWMoY29sb3IsIHJlc3VsdHMpIHtcbiAgICByZXN1bHRzID0gcmVzdWx0cyB8fCA2O1xuICAgIHZhciBoc3YgPSB0aW55Y29sb3IoY29sb3IpLnRvSHN2KCk7XG4gICAgdmFyIGggPSBoc3YuaCwgcyA9IGhzdi5zLCB2ID0gaHN2LnY7XG4gICAgdmFyIHJldCA9IFtdO1xuICAgIHZhciBtb2RpZmljYXRpb24gPSAxIC8gcmVzdWx0cztcblxuICAgIHdoaWxlIChyZXN1bHRzLS0pIHtcbiAgICAgICAgcmV0LnB1c2godGlueWNvbG9yKHsgaDogaCwgczogcywgdjogdn0pKTtcbiAgICAgICAgdiA9ICh2ICsgbW9kaWZpY2F0aW9uKSAlIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbn1cblxuLy8gVXRpbGl0eSBGdW5jdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG50aW55Y29sb3IubWl4ID0gZnVuY3Rpb24oY29sb3IxLCBjb2xvcjIsIGFtb3VudCkge1xuICAgIGFtb3VudCA9IChhbW91bnQgPT09IDApID8gMCA6IChhbW91bnQgfHwgNTApO1xuXG4gICAgdmFyIHJnYjEgPSB0aW55Y29sb3IoY29sb3IxKS50b1JnYigpO1xuICAgIHZhciByZ2IyID0gdGlueWNvbG9yKGNvbG9yMikudG9SZ2IoKTtcblxuICAgIHZhciBwID0gYW1vdW50IC8gMTAwO1xuXG4gICAgdmFyIHJnYmEgPSB7XG4gICAgICAgIHI6ICgocmdiMi5yIC0gcmdiMS5yKSAqIHApICsgcmdiMS5yLFxuICAgICAgICBnOiAoKHJnYjIuZyAtIHJnYjEuZykgKiBwKSArIHJnYjEuZyxcbiAgICAgICAgYjogKChyZ2IyLmIgLSByZ2IxLmIpICogcCkgKyByZ2IxLmIsXG4gICAgICAgIGE6ICgocmdiMi5hIC0gcmdiMS5hKSAqIHApICsgcmdiMS5hXG4gICAgfTtcblxuICAgIHJldHVybiB0aW55Y29sb3IocmdiYSk7XG59O1xuXG5cbi8vIFJlYWRhYmlsaXR5IEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNjb250cmFzdC1yYXRpb2RlZiAoV0NBRyBWZXJzaW9uIDIpXG5cbi8vIGBjb250cmFzdGBcbi8vIEFuYWx5emUgdGhlIDIgY29sb3JzIGFuZCByZXR1cm5zIHRoZSBjb2xvciBjb250cmFzdCBkZWZpbmVkIGJ5IChXQ0FHIFZlcnNpb24gMilcbnRpbnljb2xvci5yZWFkYWJpbGl0eSA9IGZ1bmN0aW9uKGNvbG9yMSwgY29sb3IyKSB7XG4gICAgdmFyIGMxID0gdGlueWNvbG9yKGNvbG9yMSk7XG4gICAgdmFyIGMyID0gdGlueWNvbG9yKGNvbG9yMik7XG4gICAgcmV0dXJuIChNYXRoLm1heChjMS5nZXRMdW1pbmFuY2UoKSxjMi5nZXRMdW1pbmFuY2UoKSkrMC4wNSkgLyAoTWF0aC5taW4oYzEuZ2V0THVtaW5hbmNlKCksYzIuZ2V0THVtaW5hbmNlKCkpKzAuMDUpO1xufTtcblxuLy8gYGlzUmVhZGFibGVgXG4vLyBFbnN1cmUgdGhhdCBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9yIGNvbWJpbmF0aW9ucyBtZWV0IFdDQUcyIGd1aWRlbGluZXMuXG4vLyBUaGUgdGhpcmQgYXJndW1lbnQgaXMgYW4gb3B0aW9uYWwgT2JqZWN0LlxuLy8gICAgICB0aGUgJ2xldmVsJyBwcm9wZXJ0eSBzdGF0ZXMgJ0FBJyBvciAnQUFBJyAtIGlmIG1pc3Npbmcgb3IgaW52YWxpZCwgaXQgZGVmYXVsdHMgdG8gJ0FBJztcbi8vICAgICAgdGhlICdzaXplJyBwcm9wZXJ0eSBzdGF0ZXMgJ2xhcmdlJyBvciAnc21hbGwnIC0gaWYgbWlzc2luZyBvciBpbnZhbGlkLCBpdCBkZWZhdWx0cyB0byAnc21hbGwnLlxuLy8gSWYgdGhlIGVudGlyZSBvYmplY3QgaXMgYWJzZW50LCBpc1JlYWRhYmxlIGRlZmF1bHRzIHRvIHtsZXZlbDpcIkFBXCIsc2l6ZTpcInNtYWxsXCJ9LlxuXG4vLyAqRXhhbXBsZSpcbi8vICAgIHRpbnljb2xvci5pc1JlYWRhYmxlKFwiIzAwMFwiLCBcIiMxMTFcIikgPT4gZmFsc2Vcbi8vICAgIHRpbnljb2xvci5pc1JlYWRhYmxlKFwiIzAwMFwiLCBcIiMxMTFcIix7bGV2ZWw6XCJBQVwiLHNpemU6XCJsYXJnZVwifSkgPT4gZmFsc2VcbnRpbnljb2xvci5pc1JlYWRhYmxlID0gZnVuY3Rpb24oY29sb3IxLCBjb2xvcjIsIHdjYWcyKSB7XG4gICAgdmFyIHJlYWRhYmlsaXR5ID0gdGlueWNvbG9yLnJlYWRhYmlsaXR5KGNvbG9yMSwgY29sb3IyKTtcbiAgICB2YXIgd2NhZzJQYXJtcywgb3V0O1xuXG4gICAgb3V0ID0gZmFsc2U7XG5cbiAgICB3Y2FnMlBhcm1zID0gdmFsaWRhdGVXQ0FHMlBhcm1zKHdjYWcyKTtcbiAgICBzd2l0Y2ggKHdjYWcyUGFybXMubGV2ZWwgKyB3Y2FnMlBhcm1zLnNpemUpIHtcbiAgICAgICAgY2FzZSBcIkFBc21hbGxcIjpcbiAgICAgICAgY2FzZSBcIkFBQWxhcmdlXCI6XG4gICAgICAgICAgICBvdXQgPSByZWFkYWJpbGl0eSA+PSA0LjU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkFBbGFyZ2VcIjpcbiAgICAgICAgICAgIG91dCA9IHJlYWRhYmlsaXR5ID49IDM7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkFBQXNtYWxsXCI6XG4gICAgICAgICAgICBvdXQgPSByZWFkYWJpbGl0eSA+PSA3O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG5cbn07XG5cbi8vIGBtb3N0UmVhZGFibGVgXG4vLyBHaXZlbiBhIGJhc2UgY29sb3IgYW5kIGEgbGlzdCBvZiBwb3NzaWJsZSBmb3JlZ3JvdW5kIG9yIGJhY2tncm91bmRcbi8vIGNvbG9ycyBmb3IgdGhhdCBiYXNlLCByZXR1cm5zIHRoZSBtb3N0IHJlYWRhYmxlIGNvbG9yLlxuLy8gT3B0aW9uYWxseSByZXR1cm5zIEJsYWNrIG9yIFdoaXRlIGlmIHRoZSBtb3N0IHJlYWRhYmxlIGNvbG9yIGlzIHVucmVhZGFibGUuXG4vLyAqRXhhbXBsZSpcbi8vICAgIHRpbnljb2xvci5tb3N0UmVhZGFibGUodGlueWNvbG9yLm1vc3RSZWFkYWJsZShcIiMxMjNcIiwgW1wiIzEyNFwiLCBcIiMxMjVcIl0se2luY2x1ZGVGYWxsYmFja0NvbG9yczpmYWxzZX0pLnRvSGV4U3RyaW5nKCk7IC8vIFwiIzExMjI1NVwiXG4vLyAgICB0aW55Y29sb3IubW9zdFJlYWRhYmxlKHRpbnljb2xvci5tb3N0UmVhZGFibGUoXCIjMTIzXCIsIFtcIiMxMjRcIiwgXCIjMTI1XCJdLHtpbmNsdWRlRmFsbGJhY2tDb2xvcnM6dHJ1ZX0pLnRvSGV4U3RyaW5nKCk7ICAvLyBcIiNmZmZmZmZcIlxuLy8gICAgdGlueWNvbG9yLm1vc3RSZWFkYWJsZShcIiNhODAxNWFcIiwgW1wiI2ZhZjNmM1wiXSx7aW5jbHVkZUZhbGxiYWNrQ29sb3JzOnRydWUsbGV2ZWw6XCJBQUFcIixzaXplOlwibGFyZ2VcIn0pLnRvSGV4U3RyaW5nKCk7IC8vIFwiI2ZhZjNmM1wiXG4vLyAgICB0aW55Y29sb3IubW9zdFJlYWRhYmxlKFwiI2E4MDE1YVwiLCBbXCIjZmFmM2YzXCJdLHtpbmNsdWRlRmFsbGJhY2tDb2xvcnM6dHJ1ZSxsZXZlbDpcIkFBQVwiLHNpemU6XCJzbWFsbFwifSkudG9IZXhTdHJpbmcoKTsgLy8gXCIjZmZmZmZmXCJcbnRpbnljb2xvci5tb3N0UmVhZGFibGUgPSBmdW5jdGlvbihiYXNlQ29sb3IsIGNvbG9yTGlzdCwgYXJncykge1xuICAgIHZhciBiZXN0Q29sb3IgPSBudWxsO1xuICAgIHZhciBiZXN0U2NvcmUgPSAwO1xuICAgIHZhciByZWFkYWJpbGl0eTtcbiAgICB2YXIgaW5jbHVkZUZhbGxiYWNrQ29sb3JzLCBsZXZlbCwgc2l6ZSA7XG4gICAgYXJncyA9IGFyZ3MgfHwge307XG4gICAgaW5jbHVkZUZhbGxiYWNrQ29sb3JzID0gYXJncy5pbmNsdWRlRmFsbGJhY2tDb2xvcnMgO1xuICAgIGxldmVsID0gYXJncy5sZXZlbDtcbiAgICBzaXplID0gYXJncy5zaXplO1xuXG4gICAgZm9yICh2YXIgaT0gMDsgaSA8IGNvbG9yTGlzdC5sZW5ndGggOyBpKyspIHtcbiAgICAgICAgcmVhZGFiaWxpdHkgPSB0aW55Y29sb3IucmVhZGFiaWxpdHkoYmFzZUNvbG9yLCBjb2xvckxpc3RbaV0pO1xuICAgICAgICBpZiAocmVhZGFiaWxpdHkgPiBiZXN0U2NvcmUpIHtcbiAgICAgICAgICAgIGJlc3RTY29yZSA9IHJlYWRhYmlsaXR5O1xuICAgICAgICAgICAgYmVzdENvbG9yID0gdGlueWNvbG9yKGNvbG9yTGlzdFtpXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGlueWNvbG9yLmlzUmVhZGFibGUoYmFzZUNvbG9yLCBiZXN0Q29sb3IsIHtcImxldmVsXCI6bGV2ZWwsXCJzaXplXCI6c2l6ZX0pIHx8ICFpbmNsdWRlRmFsbGJhY2tDb2xvcnMpIHtcbiAgICAgICAgcmV0dXJuIGJlc3RDb2xvcjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGFyZ3MuaW5jbHVkZUZhbGxiYWNrQ29sb3JzPWZhbHNlO1xuICAgICAgICByZXR1cm4gdGlueWNvbG9yLm1vc3RSZWFkYWJsZShiYXNlQ29sb3IsW1wiI2ZmZlwiLCBcIiMwMDBcIl0sYXJncyk7XG4gICAgfVxufTtcblxuXG4vLyBCaWcgTGlzdCBvZiBDb2xvcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gPGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtY29sb3IvI3N2Zy1jb2xvcj5cbnZhciBuYW1lcyA9IHRpbnljb2xvci5uYW1lcyA9IHtcbiAgICBhbGljZWJsdWU6IFwiZjBmOGZmXCIsXG4gICAgYW50aXF1ZXdoaXRlOiBcImZhZWJkN1wiLFxuICAgIGFxdWE6IFwiMGZmXCIsXG4gICAgYXF1YW1hcmluZTogXCI3ZmZmZDRcIixcbiAgICBhenVyZTogXCJmMGZmZmZcIixcbiAgICBiZWlnZTogXCJmNWY1ZGNcIixcbiAgICBiaXNxdWU6IFwiZmZlNGM0XCIsXG4gICAgYmxhY2s6IFwiMDAwXCIsXG4gICAgYmxhbmNoZWRhbG1vbmQ6IFwiZmZlYmNkXCIsXG4gICAgYmx1ZTogXCIwMGZcIixcbiAgICBibHVldmlvbGV0OiBcIjhhMmJlMlwiLFxuICAgIGJyb3duOiBcImE1MmEyYVwiLFxuICAgIGJ1cmx5d29vZDogXCJkZWI4ODdcIixcbiAgICBidXJudHNpZW5uYTogXCJlYTdlNWRcIixcbiAgICBjYWRldGJsdWU6IFwiNWY5ZWEwXCIsXG4gICAgY2hhcnRyZXVzZTogXCI3ZmZmMDBcIixcbiAgICBjaG9jb2xhdGU6IFwiZDI2OTFlXCIsXG4gICAgY29yYWw6IFwiZmY3ZjUwXCIsXG4gICAgY29ybmZsb3dlcmJsdWU6IFwiNjQ5NWVkXCIsXG4gICAgY29ybnNpbGs6IFwiZmZmOGRjXCIsXG4gICAgY3JpbXNvbjogXCJkYzE0M2NcIixcbiAgICBjeWFuOiBcIjBmZlwiLFxuICAgIGRhcmtibHVlOiBcIjAwMDA4YlwiLFxuICAgIGRhcmtjeWFuOiBcIjAwOGI4YlwiLFxuICAgIGRhcmtnb2xkZW5yb2Q6IFwiYjg4NjBiXCIsXG4gICAgZGFya2dyYXk6IFwiYTlhOWE5XCIsXG4gICAgZGFya2dyZWVuOiBcIjAwNjQwMFwiLFxuICAgIGRhcmtncmV5OiBcImE5YTlhOVwiLFxuICAgIGRhcmtraGFraTogXCJiZGI3NmJcIixcbiAgICBkYXJrbWFnZW50YTogXCI4YjAwOGJcIixcbiAgICBkYXJrb2xpdmVncmVlbjogXCI1NTZiMmZcIixcbiAgICBkYXJrb3JhbmdlOiBcImZmOGMwMFwiLFxuICAgIGRhcmtvcmNoaWQ6IFwiOTkzMmNjXCIsXG4gICAgZGFya3JlZDogXCI4YjAwMDBcIixcbiAgICBkYXJrc2FsbW9uOiBcImU5OTY3YVwiLFxuICAgIGRhcmtzZWFncmVlbjogXCI4ZmJjOGZcIixcbiAgICBkYXJrc2xhdGVibHVlOiBcIjQ4M2Q4YlwiLFxuICAgIGRhcmtzbGF0ZWdyYXk6IFwiMmY0ZjRmXCIsXG4gICAgZGFya3NsYXRlZ3JleTogXCIyZjRmNGZcIixcbiAgICBkYXJrdHVycXVvaXNlOiBcIjAwY2VkMVwiLFxuICAgIGRhcmt2aW9sZXQ6IFwiOTQwMGQzXCIsXG4gICAgZGVlcHBpbms6IFwiZmYxNDkzXCIsXG4gICAgZGVlcHNreWJsdWU6IFwiMDBiZmZmXCIsXG4gICAgZGltZ3JheTogXCI2OTY5NjlcIixcbiAgICBkaW1ncmV5OiBcIjY5Njk2OVwiLFxuICAgIGRvZGdlcmJsdWU6IFwiMWU5MGZmXCIsXG4gICAgZmlyZWJyaWNrOiBcImIyMjIyMlwiLFxuICAgIGZsb3JhbHdoaXRlOiBcImZmZmFmMFwiLFxuICAgIGZvcmVzdGdyZWVuOiBcIjIyOGIyMlwiLFxuICAgIGZ1Y2hzaWE6IFwiZjBmXCIsXG4gICAgZ2FpbnNib3JvOiBcImRjZGNkY1wiLFxuICAgIGdob3N0d2hpdGU6IFwiZjhmOGZmXCIsXG4gICAgZ29sZDogXCJmZmQ3MDBcIixcbiAgICBnb2xkZW5yb2Q6IFwiZGFhNTIwXCIsXG4gICAgZ3JheTogXCI4MDgwODBcIixcbiAgICBncmVlbjogXCIwMDgwMDBcIixcbiAgICBncmVlbnllbGxvdzogXCJhZGZmMmZcIixcbiAgICBncmV5OiBcIjgwODA4MFwiLFxuICAgIGhvbmV5ZGV3OiBcImYwZmZmMFwiLFxuICAgIGhvdHBpbms6IFwiZmY2OWI0XCIsXG4gICAgaW5kaWFucmVkOiBcImNkNWM1Y1wiLFxuICAgIGluZGlnbzogXCI0YjAwODJcIixcbiAgICBpdm9yeTogXCJmZmZmZjBcIixcbiAgICBraGFraTogXCJmMGU2OGNcIixcbiAgICBsYXZlbmRlcjogXCJlNmU2ZmFcIixcbiAgICBsYXZlbmRlcmJsdXNoOiBcImZmZjBmNVwiLFxuICAgIGxhd25ncmVlbjogXCI3Y2ZjMDBcIixcbiAgICBsZW1vbmNoaWZmb246IFwiZmZmYWNkXCIsXG4gICAgbGlnaHRibHVlOiBcImFkZDhlNlwiLFxuICAgIGxpZ2h0Y29yYWw6IFwiZjA4MDgwXCIsXG4gICAgbGlnaHRjeWFuOiBcImUwZmZmZlwiLFxuICAgIGxpZ2h0Z29sZGVucm9keWVsbG93OiBcImZhZmFkMlwiLFxuICAgIGxpZ2h0Z3JheTogXCJkM2QzZDNcIixcbiAgICBsaWdodGdyZWVuOiBcIjkwZWU5MFwiLFxuICAgIGxpZ2h0Z3JleTogXCJkM2QzZDNcIixcbiAgICBsaWdodHBpbms6IFwiZmZiNmMxXCIsXG4gICAgbGlnaHRzYWxtb246IFwiZmZhMDdhXCIsXG4gICAgbGlnaHRzZWFncmVlbjogXCIyMGIyYWFcIixcbiAgICBsaWdodHNreWJsdWU6IFwiODdjZWZhXCIsXG4gICAgbGlnaHRzbGF0ZWdyYXk6IFwiNzg5XCIsXG4gICAgbGlnaHRzbGF0ZWdyZXk6IFwiNzg5XCIsXG4gICAgbGlnaHRzdGVlbGJsdWU6IFwiYjBjNGRlXCIsXG4gICAgbGlnaHR5ZWxsb3c6IFwiZmZmZmUwXCIsXG4gICAgbGltZTogXCIwZjBcIixcbiAgICBsaW1lZ3JlZW46IFwiMzJjZDMyXCIsXG4gICAgbGluZW46IFwiZmFmMGU2XCIsXG4gICAgbWFnZW50YTogXCJmMGZcIixcbiAgICBtYXJvb246IFwiODAwMDAwXCIsXG4gICAgbWVkaXVtYXF1YW1hcmluZTogXCI2NmNkYWFcIixcbiAgICBtZWRpdW1ibHVlOiBcIjAwMDBjZFwiLFxuICAgIG1lZGl1bW9yY2hpZDogXCJiYTU1ZDNcIixcbiAgICBtZWRpdW1wdXJwbGU6IFwiOTM3MGRiXCIsXG4gICAgbWVkaXVtc2VhZ3JlZW46IFwiM2NiMzcxXCIsXG4gICAgbWVkaXVtc2xhdGVibHVlOiBcIjdiNjhlZVwiLFxuICAgIG1lZGl1bXNwcmluZ2dyZWVuOiBcIjAwZmE5YVwiLFxuICAgIG1lZGl1bXR1cnF1b2lzZTogXCI0OGQxY2NcIixcbiAgICBtZWRpdW12aW9sZXRyZWQ6IFwiYzcxNTg1XCIsXG4gICAgbWlkbmlnaHRibHVlOiBcIjE5MTk3MFwiLFxuICAgIG1pbnRjcmVhbTogXCJmNWZmZmFcIixcbiAgICBtaXN0eXJvc2U6IFwiZmZlNGUxXCIsXG4gICAgbW9jY2FzaW46IFwiZmZlNGI1XCIsXG4gICAgbmF2YWpvd2hpdGU6IFwiZmZkZWFkXCIsXG4gICAgbmF2eTogXCIwMDAwODBcIixcbiAgICBvbGRsYWNlOiBcImZkZjVlNlwiLFxuICAgIG9saXZlOiBcIjgwODAwMFwiLFxuICAgIG9saXZlZHJhYjogXCI2YjhlMjNcIixcbiAgICBvcmFuZ2U6IFwiZmZhNTAwXCIsXG4gICAgb3JhbmdlcmVkOiBcImZmNDUwMFwiLFxuICAgIG9yY2hpZDogXCJkYTcwZDZcIixcbiAgICBwYWxlZ29sZGVucm9kOiBcImVlZThhYVwiLFxuICAgIHBhbGVncmVlbjogXCI5OGZiOThcIixcbiAgICBwYWxldHVycXVvaXNlOiBcImFmZWVlZVwiLFxuICAgIHBhbGV2aW9sZXRyZWQ6IFwiZGI3MDkzXCIsXG4gICAgcGFwYXlhd2hpcDogXCJmZmVmZDVcIixcbiAgICBwZWFjaHB1ZmY6IFwiZmZkYWI5XCIsXG4gICAgcGVydTogXCJjZDg1M2ZcIixcbiAgICBwaW5rOiBcImZmYzBjYlwiLFxuICAgIHBsdW06IFwiZGRhMGRkXCIsXG4gICAgcG93ZGVyYmx1ZTogXCJiMGUwZTZcIixcbiAgICBwdXJwbGU6IFwiODAwMDgwXCIsXG4gICAgcmViZWNjYXB1cnBsZTogXCI2NjMzOTlcIixcbiAgICByZWQ6IFwiZjAwXCIsXG4gICAgcm9zeWJyb3duOiBcImJjOGY4ZlwiLFxuICAgIHJveWFsYmx1ZTogXCI0MTY5ZTFcIixcbiAgICBzYWRkbGVicm93bjogXCI4YjQ1MTNcIixcbiAgICBzYWxtb246IFwiZmE4MDcyXCIsXG4gICAgc2FuZHlicm93bjogXCJmNGE0NjBcIixcbiAgICBzZWFncmVlbjogXCIyZThiNTdcIixcbiAgICBzZWFzaGVsbDogXCJmZmY1ZWVcIixcbiAgICBzaWVubmE6IFwiYTA1MjJkXCIsXG4gICAgc2lsdmVyOiBcImMwYzBjMFwiLFxuICAgIHNreWJsdWU6IFwiODdjZWViXCIsXG4gICAgc2xhdGVibHVlOiBcIjZhNWFjZFwiLFxuICAgIHNsYXRlZ3JheTogXCI3MDgwOTBcIixcbiAgICBzbGF0ZWdyZXk6IFwiNzA4MDkwXCIsXG4gICAgc25vdzogXCJmZmZhZmFcIixcbiAgICBzcHJpbmdncmVlbjogXCIwMGZmN2ZcIixcbiAgICBzdGVlbGJsdWU6IFwiNDY4MmI0XCIsXG4gICAgdGFuOiBcImQyYjQ4Y1wiLFxuICAgIHRlYWw6IFwiMDA4MDgwXCIsXG4gICAgdGhpc3RsZTogXCJkOGJmZDhcIixcbiAgICB0b21hdG86IFwiZmY2MzQ3XCIsXG4gICAgdHVycXVvaXNlOiBcIjQwZTBkMFwiLFxuICAgIHZpb2xldDogXCJlZTgyZWVcIixcbiAgICB3aGVhdDogXCJmNWRlYjNcIixcbiAgICB3aGl0ZTogXCJmZmZcIixcbiAgICB3aGl0ZXNtb2tlOiBcImY1ZjVmNVwiLFxuICAgIHllbGxvdzogXCJmZjBcIixcbiAgICB5ZWxsb3dncmVlbjogXCI5YWNkMzJcIlxufTtcblxuLy8gTWFrZSBpdCBlYXN5IHRvIGFjY2VzcyBjb2xvcnMgdmlhIGBoZXhOYW1lc1toZXhdYFxudmFyIGhleE5hbWVzID0gdGlueWNvbG9yLmhleE5hbWVzID0gZmxpcChuYW1lcyk7XG5cblxuLy8gVXRpbGl0aWVzXG4vLyAtLS0tLS0tLS1cblxuLy8gYHsgJ25hbWUxJzogJ3ZhbDEnIH1gIGJlY29tZXMgYHsgJ3ZhbDEnOiAnbmFtZTEnIH1gXG5mdW5jdGlvbiBmbGlwKG8pIHtcbiAgICB2YXIgZmxpcHBlZCA9IHsgfTtcbiAgICBmb3IgKHZhciBpIGluIG8pIHtcbiAgICAgICAgaWYgKG8uaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgICAgICAgIGZsaXBwZWRbb1tpXV0gPSBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmbGlwcGVkO1xufVxuXG4vLyBSZXR1cm4gYSB2YWxpZCBhbHBoYSB2YWx1ZSBbMCwxXSB3aXRoIGFsbCBpbnZhbGlkIHZhbHVlcyBiZWluZyBzZXQgdG8gMVxuZnVuY3Rpb24gYm91bmRBbHBoYShhKSB7XG4gICAgYSA9IHBhcnNlRmxvYXQoYSk7XG5cbiAgICBpZiAoaXNOYU4oYSkgfHwgYSA8IDAgfHwgYSA+IDEpIHtcbiAgICAgICAgYSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGE7XG59XG5cbi8vIFRha2UgaW5wdXQgZnJvbSBbMCwgbl0gYW5kIHJldHVybiBpdCBhcyBbMCwgMV1cbmZ1bmN0aW9uIGJvdW5kMDEobiwgbWF4KSB7XG4gICAgaWYgKGlzT25lUG9pbnRaZXJvKG4pKSB7IG4gPSBcIjEwMCVcIjsgfVxuXG4gICAgdmFyIHByb2Nlc3NQZXJjZW50ID0gaXNQZXJjZW50YWdlKG4pO1xuICAgIG4gPSBtYXRoTWluKG1heCwgbWF0aE1heCgwLCBwYXJzZUZsb2F0KG4pKSk7XG5cbiAgICAvLyBBdXRvbWF0aWNhbGx5IGNvbnZlcnQgcGVyY2VudGFnZSBpbnRvIG51bWJlclxuICAgIGlmIChwcm9jZXNzUGVyY2VudCkge1xuICAgICAgICBuID0gcGFyc2VJbnQobiAqIG1heCwgMTApIC8gMTAwO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvcnNcbiAgICBpZiAoKE1hdGguYWJzKG4gLSBtYXgpIDwgMC4wMDAwMDEpKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgaW50byBbMCwgMV0gcmFuZ2UgaWYgaXQgaXNuJ3QgYWxyZWFkeVxuICAgIHJldHVybiAobiAlIG1heCkgLyBwYXJzZUZsb2F0KG1heCk7XG59XG5cbi8vIEZvcmNlIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMVxuZnVuY3Rpb24gY2xhbXAwMSh2YWwpIHtcbiAgICByZXR1cm4gbWF0aE1pbigxLCBtYXRoTWF4KDAsIHZhbCkpO1xufVxuXG4vLyBQYXJzZSBhIGJhc2UtMTYgaGV4IHZhbHVlIGludG8gYSBiYXNlLTEwIGludGVnZXJcbmZ1bmN0aW9uIHBhcnNlSW50RnJvbUhleCh2YWwpIHtcbiAgICByZXR1cm4gcGFyc2VJbnQodmFsLCAxNik7XG59XG5cbi8vIE5lZWQgdG8gaGFuZGxlIDEuMCBhcyAxMDAlLCBzaW5jZSBvbmNlIGl0IGlzIGEgbnVtYmVyLCB0aGVyZSBpcyBubyBkaWZmZXJlbmNlIGJldHdlZW4gaXQgYW5kIDFcbi8vIDxodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzc0MjIwNzIvamF2YXNjcmlwdC1ob3ctdG8tZGV0ZWN0LW51bWJlci1hcy1hLWRlY2ltYWwtaW5jbHVkaW5nLTEtMD5cbmZ1bmN0aW9uIGlzT25lUG9pbnRaZXJvKG4pIHtcbiAgICByZXR1cm4gdHlwZW9mIG4gPT0gXCJzdHJpbmdcIiAmJiBuLmluZGV4T2YoJy4nKSAhPSAtMSAmJiBwYXJzZUZsb2F0KG4pID09PSAxO1xufVxuXG4vLyBDaGVjayB0byBzZWUgaWYgc3RyaW5nIHBhc3NlZCBpbiBpcyBhIHBlcmNlbnRhZ2VcbmZ1bmN0aW9uIGlzUGVyY2VudGFnZShuKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBuID09PSBcInN0cmluZ1wiICYmIG4uaW5kZXhPZignJScpICE9IC0xO1xufVxuXG4vLyBGb3JjZSBhIGhleCB2YWx1ZSB0byBoYXZlIDIgY2hhcmFjdGVyc1xuZnVuY3Rpb24gcGFkMihjKSB7XG4gICAgcmV0dXJuIGMubGVuZ3RoID09IDEgPyAnMCcgKyBjIDogJycgKyBjO1xufVxuXG4vLyBSZXBsYWNlIGEgZGVjaW1hbCB3aXRoIGl0J3MgcGVyY2VudGFnZSB2YWx1ZVxuZnVuY3Rpb24gY29udmVydFRvUGVyY2VudGFnZShuKSB7XG4gICAgaWYgKG4gPD0gMSkge1xuICAgICAgICBuID0gKG4gKiAxMDApICsgXCIlXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIG47XG59XG5cbi8vIENvbnZlcnRzIGEgZGVjaW1hbCB0byBhIGhleCB2YWx1ZVxuZnVuY3Rpb24gY29udmVydERlY2ltYWxUb0hleChkKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChkKSAqIDI1NSkudG9TdHJpbmcoMTYpO1xufVxuLy8gQ29udmVydHMgYSBoZXggdmFsdWUgdG8gYSBkZWNpbWFsXG5mdW5jdGlvbiBjb252ZXJ0SGV4VG9EZWNpbWFsKGgpIHtcbiAgICByZXR1cm4gKHBhcnNlSW50RnJvbUhleChoKSAvIDI1NSk7XG59XG5cbnZhciBtYXRjaGVycyA9IChmdW5jdGlvbigpIHtcblxuICAgIC8vIDxodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXZhbHVlcy8jaW50ZWdlcnM+XG4gICAgdmFyIENTU19JTlRFR0VSID0gXCJbLVxcXFwrXT9cXFxcZCslP1wiO1xuXG4gICAgLy8gPGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdmFsdWVzLyNudW1iZXItdmFsdWU+XG4gICAgdmFyIENTU19OVU1CRVIgPSBcIlstXFxcXCtdP1xcXFxkKlxcXFwuXFxcXGQrJT9cIjtcblxuICAgIC8vIEFsbG93IHBvc2l0aXZlL25lZ2F0aXZlIGludGVnZXIvbnVtYmVyLiAgRG9uJ3QgY2FwdHVyZSB0aGUgZWl0aGVyL29yLCBqdXN0IHRoZSBlbnRpcmUgb3V0Y29tZS5cbiAgICB2YXIgQ1NTX1VOSVQgPSBcIig/OlwiICsgQ1NTX05VTUJFUiArIFwiKXwoPzpcIiArIENTU19JTlRFR0VSICsgXCIpXCI7XG5cbiAgICAvLyBBY3R1YWwgbWF0Y2hpbmcuXG4gICAgLy8gUGFyZW50aGVzZXMgYW5kIGNvbW1hcyBhcmUgb3B0aW9uYWwsIGJ1dCBub3QgcmVxdWlyZWQuXG4gICAgLy8gV2hpdGVzcGFjZSBjYW4gdGFrZSB0aGUgcGxhY2Ugb2YgY29tbWFzIG9yIG9wZW5pbmcgcGFyZW5cbiAgICB2YXIgUEVSTUlTU0lWRV9NQVRDSDMgPSBcIltcXFxcc3xcXFxcKF0rKFwiICsgQ1NTX1VOSVQgKyBcIilbLHxcXFxcc10rKFwiICsgQ1NTX1VOSVQgKyBcIilbLHxcXFxcc10rKFwiICsgQ1NTX1VOSVQgKyBcIilcXFxccypcXFxcKT9cIjtcbiAgICB2YXIgUEVSTUlTU0lWRV9NQVRDSDQgPSBcIltcXFxcc3xcXFxcKF0rKFwiICsgQ1NTX1VOSVQgKyBcIilbLHxcXFxcc10rKFwiICsgQ1NTX1VOSVQgKyBcIilbLHxcXFxcc10rKFwiICsgQ1NTX1VOSVQgKyBcIilbLHxcXFxcc10rKFwiICsgQ1NTX1VOSVQgKyBcIilcXFxccypcXFxcKT9cIjtcblxuICAgIHJldHVybiB7XG4gICAgICAgIENTU19VTklUOiBuZXcgUmVnRXhwKENTU19VTklUKSxcbiAgICAgICAgcmdiOiBuZXcgUmVnRXhwKFwicmdiXCIgKyBQRVJNSVNTSVZFX01BVENIMyksXG4gICAgICAgIHJnYmE6IG5ldyBSZWdFeHAoXCJyZ2JhXCIgKyBQRVJNSVNTSVZFX01BVENINCksXG4gICAgICAgIGhzbDogbmV3IFJlZ0V4cChcImhzbFwiICsgUEVSTUlTU0lWRV9NQVRDSDMpLFxuICAgICAgICBoc2xhOiBuZXcgUmVnRXhwKFwiaHNsYVwiICsgUEVSTUlTU0lWRV9NQVRDSDQpLFxuICAgICAgICBoc3Y6IG5ldyBSZWdFeHAoXCJoc3ZcIiArIFBFUk1JU1NJVkVfTUFUQ0gzKSxcbiAgICAgICAgaHN2YTogbmV3IFJlZ0V4cChcImhzdmFcIiArIFBFUk1JU1NJVkVfTUFUQ0g0KSxcbiAgICAgICAgaGV4MzogL14jPyhbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KSQvLFxuICAgICAgICBoZXg2OiAvXiM/KFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pJC8sXG4gICAgICAgIGhleDQ6IC9eIz8oWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pJC8sXG4gICAgICAgIGhleDg6IC9eIz8oWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pJC9cbiAgICB9O1xufSkoKTtcblxuLy8gYGlzVmFsaWRDU1NVbml0YFxuLy8gVGFrZSBpbiBhIHNpbmdsZSBzdHJpbmcgLyBudW1iZXIgYW5kIGNoZWNrIHRvIHNlZSBpZiBpdCBsb29rcyBsaWtlIGEgQ1NTIHVuaXRcbi8vIChzZWUgYG1hdGNoZXJzYCBhYm92ZSBmb3IgZGVmaW5pdGlvbikuXG5mdW5jdGlvbiBpc1ZhbGlkQ1NTVW5pdChjb2xvcikge1xuICAgIHJldHVybiAhIW1hdGNoZXJzLkNTU19VTklULmV4ZWMoY29sb3IpO1xufVxuXG4vLyBgc3RyaW5nSW5wdXRUb09iamVjdGBcbi8vIFBlcm1pc3NpdmUgc3RyaW5nIHBhcnNpbmcuICBUYWtlIGluIGEgbnVtYmVyIG9mIGZvcm1hdHMsIGFuZCBvdXRwdXQgYW4gb2JqZWN0XG4vLyBiYXNlZCBvbiBkZXRlY3RlZCBmb3JtYXQuICBSZXR1cm5zIGB7IHIsIGcsIGIgfWAgb3IgYHsgaCwgcywgbCB9YCBvciBgeyBoLCBzLCB2fWBcbmZ1bmN0aW9uIHN0cmluZ0lucHV0VG9PYmplY3QoY29sb3IpIHtcblxuICAgIGNvbG9yID0gY29sb3IucmVwbGFjZSh0cmltTGVmdCwnJykucmVwbGFjZSh0cmltUmlnaHQsICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIHZhciBuYW1lZCA9IGZhbHNlO1xuICAgIGlmIChuYW1lc1tjb2xvcl0pIHtcbiAgICAgICAgY29sb3IgPSBuYW1lc1tjb2xvcl07XG4gICAgICAgIG5hbWVkID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29sb3IgPT0gJ3RyYW5zcGFyZW50Jykge1xuICAgICAgICByZXR1cm4geyByOiAwLCBnOiAwLCBiOiAwLCBhOiAwLCBmb3JtYXQ6IFwibmFtZVwiIH07XG4gICAgfVxuXG4gICAgLy8gVHJ5IHRvIG1hdGNoIHN0cmluZyBpbnB1dCB1c2luZyByZWd1bGFyIGV4cHJlc3Npb25zLlxuICAgIC8vIEtlZXAgbW9zdCBvZiB0aGUgbnVtYmVyIGJvdW5kaW5nIG91dCBvZiB0aGlzIGZ1bmN0aW9uIC0gZG9uJ3Qgd29ycnkgYWJvdXQgWzAsMV0gb3IgWzAsMTAwXSBvciBbMCwzNjBdXG4gICAgLy8gSnVzdCByZXR1cm4gYW4gb2JqZWN0IGFuZCBsZXQgdGhlIGNvbnZlcnNpb24gZnVuY3Rpb25zIGhhbmRsZSB0aGF0LlxuICAgIC8vIFRoaXMgd2F5IHRoZSByZXN1bHQgd2lsbCBiZSB0aGUgc2FtZSB3aGV0aGVyIHRoZSB0aW55Y29sb3IgaXMgaW5pdGlhbGl6ZWQgd2l0aCBzdHJpbmcgb3Igb2JqZWN0LlxuICAgIHZhciBtYXRjaDtcbiAgICBpZiAoKG1hdGNoID0gbWF0Y2hlcnMucmdiLmV4ZWMoY29sb3IpKSkge1xuICAgICAgICByZXR1cm4geyByOiBtYXRjaFsxXSwgZzogbWF0Y2hbMl0sIGI6IG1hdGNoWzNdIH07XG4gICAgfVxuICAgIGlmICgobWF0Y2ggPSBtYXRjaGVycy5yZ2JhLmV4ZWMoY29sb3IpKSkge1xuICAgICAgICByZXR1cm4geyByOiBtYXRjaFsxXSwgZzogbWF0Y2hbMl0sIGI6IG1hdGNoWzNdLCBhOiBtYXRjaFs0XSB9O1xuICAgIH1cbiAgICBpZiAoKG1hdGNoID0gbWF0Y2hlcnMuaHNsLmV4ZWMoY29sb3IpKSkge1xuICAgICAgICByZXR1cm4geyBoOiBtYXRjaFsxXSwgczogbWF0Y2hbMl0sIGw6IG1hdGNoWzNdIH07XG4gICAgfVxuICAgIGlmICgobWF0Y2ggPSBtYXRjaGVycy5oc2xhLmV4ZWMoY29sb3IpKSkge1xuICAgICAgICByZXR1cm4geyBoOiBtYXRjaFsxXSwgczogbWF0Y2hbMl0sIGw6IG1hdGNoWzNdLCBhOiBtYXRjaFs0XSB9O1xuICAgIH1cbiAgICBpZiAoKG1hdGNoID0gbWF0Y2hlcnMuaHN2LmV4ZWMoY29sb3IpKSkge1xuICAgICAgICByZXR1cm4geyBoOiBtYXRjaFsxXSwgczogbWF0Y2hbMl0sIHY6IG1hdGNoWzNdIH07XG4gICAgfVxuICAgIGlmICgobWF0Y2ggPSBtYXRjaGVycy5oc3ZhLmV4ZWMoY29sb3IpKSkge1xuICAgICAgICByZXR1cm4geyBoOiBtYXRjaFsxXSwgczogbWF0Y2hbMl0sIHY6IG1hdGNoWzNdLCBhOiBtYXRjaFs0XSB9O1xuICAgIH1cbiAgICBpZiAoKG1hdGNoID0gbWF0Y2hlcnMuaGV4OC5leGVjKGNvbG9yKSkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHI6IHBhcnNlSW50RnJvbUhleChtYXRjaFsxXSksXG4gICAgICAgICAgICBnOiBwYXJzZUludEZyb21IZXgobWF0Y2hbMl0pLFxuICAgICAgICAgICAgYjogcGFyc2VJbnRGcm9tSGV4KG1hdGNoWzNdKSxcbiAgICAgICAgICAgIGE6IGNvbnZlcnRIZXhUb0RlY2ltYWwobWF0Y2hbNF0pLFxuICAgICAgICAgICAgZm9ybWF0OiBuYW1lZCA/IFwibmFtZVwiIDogXCJoZXg4XCJcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKChtYXRjaCA9IG1hdGNoZXJzLmhleDYuZXhlYyhjb2xvcikpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByOiBwYXJzZUludEZyb21IZXgobWF0Y2hbMV0pLFxuICAgICAgICAgICAgZzogcGFyc2VJbnRGcm9tSGV4KG1hdGNoWzJdKSxcbiAgICAgICAgICAgIGI6IHBhcnNlSW50RnJvbUhleChtYXRjaFszXSksXG4gICAgICAgICAgICBmb3JtYXQ6IG5hbWVkID8gXCJuYW1lXCIgOiBcImhleFwiXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmICgobWF0Y2ggPSBtYXRjaGVycy5oZXg0LmV4ZWMoY29sb3IpKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcjogcGFyc2VJbnRGcm9tSGV4KG1hdGNoWzFdICsgJycgKyBtYXRjaFsxXSksXG4gICAgICAgICAgICBnOiBwYXJzZUludEZyb21IZXgobWF0Y2hbMl0gKyAnJyArIG1hdGNoWzJdKSxcbiAgICAgICAgICAgIGI6IHBhcnNlSW50RnJvbUhleChtYXRjaFszXSArICcnICsgbWF0Y2hbM10pLFxuICAgICAgICAgICAgYTogY29udmVydEhleFRvRGVjaW1hbChtYXRjaFs0XSArICcnICsgbWF0Y2hbNF0pLFxuICAgICAgICAgICAgZm9ybWF0OiBuYW1lZCA/IFwibmFtZVwiIDogXCJoZXg4XCJcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKChtYXRjaCA9IG1hdGNoZXJzLmhleDMuZXhlYyhjb2xvcikpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByOiBwYXJzZUludEZyb21IZXgobWF0Y2hbMV0gKyAnJyArIG1hdGNoWzFdKSxcbiAgICAgICAgICAgIGc6IHBhcnNlSW50RnJvbUhleChtYXRjaFsyXSArICcnICsgbWF0Y2hbMl0pLFxuICAgICAgICAgICAgYjogcGFyc2VJbnRGcm9tSGV4KG1hdGNoWzNdICsgJycgKyBtYXRjaFszXSksXG4gICAgICAgICAgICBmb3JtYXQ6IG5hbWVkID8gXCJuYW1lXCIgOiBcImhleFwiXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVdDQUcyUGFybXMocGFybXMpIHtcbiAgICAvLyByZXR1cm4gdmFsaWQgV0NBRzIgcGFybXMgZm9yIGlzUmVhZGFibGUuXG4gICAgLy8gSWYgaW5wdXQgcGFybXMgYXJlIGludmFsaWQsIHJldHVybiB7XCJsZXZlbFwiOlwiQUFcIiwgXCJzaXplXCI6XCJzbWFsbFwifVxuICAgIHZhciBsZXZlbCwgc2l6ZTtcbiAgICBwYXJtcyA9IHBhcm1zIHx8IHtcImxldmVsXCI6XCJBQVwiLCBcInNpemVcIjpcInNtYWxsXCJ9O1xuICAgIGxldmVsID0gKHBhcm1zLmxldmVsIHx8IFwiQUFcIikudG9VcHBlckNhc2UoKTtcbiAgICBzaXplID0gKHBhcm1zLnNpemUgfHwgXCJzbWFsbFwiKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChsZXZlbCAhPT0gXCJBQVwiICYmIGxldmVsICE9PSBcIkFBQVwiKSB7XG4gICAgICAgIGxldmVsID0gXCJBQVwiO1xuICAgIH1cbiAgICBpZiAoc2l6ZSAhPT0gXCJzbWFsbFwiICYmIHNpemUgIT09IFwibGFyZ2VcIikge1xuICAgICAgICBzaXplID0gXCJzbWFsbFwiO1xuICAgIH1cbiAgICByZXR1cm4ge1wibGV2ZWxcIjpsZXZlbCwgXCJzaXplXCI6c2l6ZX07XG59XG5cbi8vIE5vZGU6IEV4cG9ydCBmdW5jdGlvblxuaWYgKHR5cGVvZiBtb2R1bGUgIT09IFwidW5kZWZpbmVkXCIgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHRpbnljb2xvcjtcbn1cbi8vIEFNRC9yZXF1aXJlanM6IERlZmluZSB0aGUgbW9kdWxlXG5lbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgICBkZWZpbmUoZnVuY3Rpb24gKCkge3JldHVybiB0aW55Y29sb3I7fSk7XG59XG4vLyBCcm93c2VyOiBFeHBvc2UgdG8gd2luZG93XG5lbHNlIHtcbiAgICB3aW5kb3cudGlueWNvbG9yID0gdGlueWNvbG9yO1xufVxuXG59KShNYXRoKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IGNyZWF0ZTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9pbmRleCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vaW5kZXhcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxudmFyIF9fcmVzdCA9IHZvaWQgMCAmJiAodm9pZCAwKS5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApIHRbcF0gPSBzW3BdO1xuICB9XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbnZhciBjdXN0b21DYWNoZSA9IG5ldyBTZXQoKTtcblxuZnVuY3Rpb24gY3JlYXRlKCkge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gIHZhciBzY3JpcHRVcmwgPSBvcHRpb25zLnNjcmlwdFVybCxcbiAgICAgIF9vcHRpb25zJGV4dHJhQ29tbW9uUCA9IG9wdGlvbnMuZXh0cmFDb21tb25Qcm9wcyxcbiAgICAgIGV4dHJhQ29tbW9uUHJvcHMgPSBfb3B0aW9ucyRleHRyYUNvbW1vblAgPT09IHZvaWQgMCA/IHt9IDogX29wdGlvbnMkZXh0cmFDb21tb25QO1xuICAvKipcbiAgICogRE9NIEFQSSByZXF1aXJlZC5cbiAgICogTWFrZSBzdXJlIGluIGJyb3dzZXIgZW52aXJvbm1lbnQuXG4gICAqIFRoZSBDdXN0b20gSWNvbiB3aWxsIGNyZWF0ZSBhIDxzY3JpcHQvPlxuICAgKiB0aGF0IGxvYWRzIFNWRyBzeW1ib2xzIGFuZCBpbnNlcnQgdGhlIFNWRyBFbGVtZW50IGludG8gdGhlIGRvY3VtZW50IGJvZHkuXG4gICAqL1xuXG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBzY3JpcHRVcmwgPT09ICdzdHJpbmcnICYmIHNjcmlwdFVybC5sZW5ndGggJiYgIWN1c3RvbUNhY2hlLmhhcyhzY3JpcHRVcmwpKSB7XG4gICAgdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ3NyYycsIHNjcmlwdFVybCk7XG4gICAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnZGF0YS1uYW1lc3BhY2UnLCBzY3JpcHRVcmwpO1xuICAgIGN1c3RvbUNhY2hlLmFkZChzY3JpcHRVcmwpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgfVxuXG4gIHZhciBJY29uZm9udCA9IGZ1bmN0aW9uIEljb25mb250KHByb3BzKSB7XG4gICAgdmFyIHR5cGUgPSBwcm9wcy50eXBlLFxuICAgICAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgICByZXN0UHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcInR5cGVcIiwgXCJjaGlsZHJlblwiXSk7IC8vIGNvbXBvbmVudCA+IGNoaWxkcmVuID4gdHlwZVxuXG5cbiAgICB2YXIgY29udGVudCA9IG51bGw7XG5cbiAgICBpZiAocHJvcHMudHlwZSkge1xuICAgICAgY29udGVudCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidXNlXCIsIHtcbiAgICAgICAgeGxpbmtIcmVmOiBcIiNcIi5jb25jYXQodHlwZSlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgY29udGVudCA9IGNoaWxkcmVuO1xuICAgIH1cblxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfaW5kZXhbXCJkZWZhdWx0XCJdLCBfZXh0ZW5kcyh7fSwgZXh0cmFDb21tb25Qcm9wcywgcmVzdFByb3BzKSwgY29udGVudCk7XG4gIH07XG5cbiAgSWNvbmZvbnQuZGlzcGxheU5hbWUgPSAnSWNvbmZvbnQnO1xuICByZXR1cm4gSWNvbmZvbnQ7XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmdldFRoZW1lRnJvbVR5cGVOYW1lID0gZ2V0VGhlbWVGcm9tVHlwZU5hbWU7XG5leHBvcnRzLnJlbW92ZVR5cGVUaGVtZSA9IHJlbW92ZVR5cGVUaGVtZTtcbmV4cG9ydHMud2l0aFRoZW1lU3VmZml4ID0gd2l0aFRoZW1lU3VmZml4O1xuZXhwb3J0cy5hbGlhcyA9IGFsaWFzO1xuZXhwb3J0cy5zdmdCYXNlUHJvcHMgPSB2b2lkIDA7XG5cbnZhciBfd2FybmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL191dGlsL3dhcm5pbmdcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuLy8gVGhlc2UgcHJvcHMgbWFrZSBzdXJlIHRoYXQgdGhlIFNWRyBiZWhhdmlvdXJzIGxpa2UgZ2VuZXJhbCB0ZXh0LlxuLy8gUmVmZXJlbmNlOiBodHRwczovL2Jsb2cucHJvdG90eXByLmlvL2FsaWduLXN2Zy1pY29ucy10by10ZXh0LWFuZC1zYXktZ29vZGJ5ZS10by1mb250LWljb25zLWQ0NGIzZDdiMjZiNFxudmFyIHN2Z0Jhc2VQcm9wcyA9IHtcbiAgd2lkdGg6ICcxZW0nLFxuICBoZWlnaHQ6ICcxZW0nLFxuICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgJ2FyaWEtaGlkZGVuJzogdHJ1ZSxcbiAgZm9jdXNhYmxlOiAnZmFsc2UnXG59O1xuZXhwb3J0cy5zdmdCYXNlUHJvcHMgPSBzdmdCYXNlUHJvcHM7XG52YXIgZmlsbFRlc3RlciA9IC8tZmlsbCQvO1xudmFyIG91dGxpbmVUZXN0ZXIgPSAvLW8kLztcbnZhciB0d29Ub25lVGVzdGVyID0gLy10d290b25lJC87XG5cbmZ1bmN0aW9uIGdldFRoZW1lRnJvbVR5cGVOYW1lKHR5cGUpIHtcbiAgdmFyIHJlc3VsdCA9IG51bGw7XG5cbiAgaWYgKGZpbGxUZXN0ZXIudGVzdCh0eXBlKSkge1xuICAgIHJlc3VsdCA9ICdmaWxsZWQnO1xuICB9IGVsc2UgaWYgKG91dGxpbmVUZXN0ZXIudGVzdCh0eXBlKSkge1xuICAgIHJlc3VsdCA9ICdvdXRsaW5lZCc7XG4gIH0gZWxzZSBpZiAodHdvVG9uZVRlc3Rlci50ZXN0KHR5cGUpKSB7XG4gICAgcmVzdWx0ID0gJ3R3b1RvbmUnO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlVHlwZVRoZW1lKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUucmVwbGFjZShmaWxsVGVzdGVyLCAnJykucmVwbGFjZShvdXRsaW5lVGVzdGVyLCAnJykucmVwbGFjZSh0d29Ub25lVGVzdGVyLCAnJyk7XG59XG5cbmZ1bmN0aW9uIHdpdGhUaGVtZVN1ZmZpeCh0eXBlLCB0aGVtZSkge1xuICB2YXIgcmVzdWx0ID0gdHlwZTtcblxuICBpZiAodGhlbWUgPT09ICdmaWxsZWQnKSB7XG4gICAgcmVzdWx0ICs9ICctZmlsbCc7XG4gIH0gZWxzZSBpZiAodGhlbWUgPT09ICdvdXRsaW5lZCcpIHtcbiAgICByZXN1bHQgKz0gJy1vJztcbiAgfSBlbHNlIGlmICh0aGVtZSA9PT0gJ3R3b1RvbmUnKSB7XG4gICAgcmVzdWx0ICs9ICctdHdvdG9uZSc7XG4gIH0gZWxzZSB7XG4gICAgKDAsIF93YXJuaW5nW1wiZGVmYXVsdFwiXSkoZmFsc2UsICdJY29uJywgXCJUaGlzIGljb24gJ1wiLmNvbmNhdCh0eXBlLCBcIicgaGFzIHVua25vd24gdGhlbWUgJ1wiKS5jb25jYXQodGhlbWUsIFwiJ1wiKSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufSAvLyBGb3IgYWxpYXMgb3IgY29tcGF0aWJpbGl0eVxuXG5cbmZ1bmN0aW9uIGFsaWFzKHR5cGUpIHtcbiAgdmFyIG5ld1R5cGUgPSB0eXBlO1xuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ2Nyb3NzJzpcbiAgICAgIG5ld1R5cGUgPSAnY2xvc2UnO1xuICAgICAgYnJlYWs7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMTMwMDdcblxuICAgIGNhc2UgJ2ludGVyYXRpb24nOlxuICAgICAgbmV3VHlwZSA9ICdpbnRlcmFjdGlvbic7XG4gICAgICBicmVhaztcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8xNjgxMFxuXG4gICAgY2FzZSAnY2FubGVuZGFyJzpcbiAgICAgIG5ld1R5cGUgPSAnY2FsZW5kYXInO1xuICAgICAgYnJlYWs7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMTc0NDhcblxuICAgIGNhc2UgJ2NvbHVtLWhlaWdodCc6XG4gICAgICBuZXdUeXBlID0gJ2NvbHVtbi1oZWlnaHQnO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICB9XG5cbiAgKDAsIF93YXJuaW5nW1wiZGVmYXVsdFwiXSkobmV3VHlwZSA9PT0gdHlwZSwgJ0ljb24nLCBcIkljb24gJ1wiLmNvbmNhdCh0eXBlLCBcIicgd2FzIGEgdHlwbyBhbmQgaXMgbm93IGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgJ1wiKS5jb25jYXQobmV3VHlwZSwgXCInIGluc3RlYWQuXCIpKTtcbiAgcmV0dXJuIG5ld1R5cGU7XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9kZWZhdWx0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2xvY2FsZS9kZWZhdWx0XCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbnZhciBfZGVmYXVsdCA9IF9kZWZhdWx0MltcImRlZmF1bHRcIl07XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IHtcbiAgLy8gT3B0aW9ucy5qc3hcbiAgaXRlbXNfcGVyX3BhZ2U6ICcvIHBhZ2UnLFxuICBqdW1wX3RvOiAnR28gdG8nLFxuICBqdW1wX3RvX2NvbmZpcm06ICdjb25maXJtJyxcbiAgcGFnZTogJycsXG5cbiAgLy8gUGFnaW5hdGlvbi5qc3hcbiAgcHJldl9wYWdlOiAnUHJldmlvdXMgUGFnZScsXG4gIG5leHRfcGFnZTogJ05leHQgUGFnZScsXG4gIHByZXZfNTogJ1ByZXZpb3VzIDUgUGFnZXMnLFxuICBuZXh0XzU6ICdOZXh0IDUgUGFnZXMnLFxuICBwcmV2XzM6ICdQcmV2aW91cyAzIFBhZ2VzJyxcbiAgbmV4dF8zOiAnTmV4dCAzIFBhZ2VzJ1xufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IHtcbiAgdG9kYXk6ICdUb2RheScsXG4gIG5vdzogJ05vdycsXG4gIGJhY2tUb1RvZGF5OiAnQmFjayB0byB0b2RheScsXG4gIG9rOiAnT2snLFxuICBjbGVhcjogJ0NsZWFyJyxcbiAgbW9udGg6ICdNb250aCcsXG4gIHllYXI6ICdZZWFyJyxcbiAgdGltZVNlbGVjdDogJ3NlbGVjdCB0aW1lJyxcbiAgZGF0ZVNlbGVjdDogJ3NlbGVjdCBkYXRlJyxcbiAgd2Vla1NlbGVjdDogJ0Nob29zZSBhIHdlZWsnLFxuICBtb250aFNlbGVjdDogJ0Nob29zZSBhIG1vbnRoJyxcbiAgeWVhclNlbGVjdDogJ0Nob29zZSBhIHllYXInLFxuICBkZWNhZGVTZWxlY3Q6ICdDaG9vc2UgYSBkZWNhZGUnLFxuICB5ZWFyRm9ybWF0OiAnWVlZWScsXG4gIGRhdGVGb3JtYXQ6ICdNL0QvWVlZWScsXG4gIGRheUZvcm1hdDogJ0QnLFxuICBkYXRlVGltZUZvcm1hdDogJ00vRC9ZWVlZIEhIOm1tOnNzJyxcbiAgbW9udGhCZWZvcmVZZWFyOiB0cnVlLFxuICBwcmV2aW91c01vbnRoOiAnUHJldmlvdXMgbW9udGggKFBhZ2VVcCknLFxuICBuZXh0TW9udGg6ICdOZXh0IG1vbnRoIChQYWdlRG93biknLFxuICBwcmV2aW91c1llYXI6ICdMYXN0IHllYXIgKENvbnRyb2wgKyBsZWZ0KScsXG4gIG5leHRZZWFyOiAnTmV4dCB5ZWFyIChDb250cm9sICsgcmlnaHQpJyxcbiAgcHJldmlvdXNEZWNhZGU6ICdMYXN0IGRlY2FkZScsXG4gIG5leHREZWNhZGU6ICdOZXh0IGRlY2FkZScsXG4gIHByZXZpb3VzQ2VudHVyeTogJ0xhc3QgY2VudHVyeScsXG4gIG5leHRDZW50dXJ5OiAnTmV4dCBjZW50dXJ5J1xufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfZW5fVVMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9kYXRlLXBpY2tlci9sb2NhbGUvZW5fVVNcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxudmFyIF9kZWZhdWx0ID0gX2VuX1VTW1wiZGVmYXVsdFwiXTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnNldFR3b1RvbmVDb2xvciA9IHNldFR3b1RvbmVDb2xvcjtcbmV4cG9ydHMuZ2V0VHdvVG9uZUNvbG9yID0gZ2V0VHdvVG9uZUNvbG9yO1xuXG52YXIgX2ljb25zUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9pY29ucy1yZWFjdFwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBzZXRUd29Ub25lQ29sb3IocHJpbWFyeUNvbG9yKSB7XG4gIHJldHVybiBfaWNvbnNSZWFjdFtcImRlZmF1bHRcIl0uc2V0VHdvVG9uZUNvbG9ycyh7XG4gICAgcHJpbWFyeUNvbG9yOiBwcmltYXJ5Q29sb3JcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFR3b1RvbmVDb2xvcigpIHtcbiAgdmFyIGNvbG9ycyA9IF9pY29uc1JlYWN0W1wiZGVmYXVsdFwiXS5nZXRUd29Ub25lQ29sb3JzKCk7XG5cbiAgcmV0dXJuIGNvbG9ycy5wcmltYXJ5Q29sb3I7XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IGV4cG9ydHMuQU5UX01BUksgPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBQcm9wVHlwZXMgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicHJvcC10eXBlc1wiKSk7XG5cbnZhciBtb21lbnQgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwibW9tZW50XCIpKTtcblxudmFyIF9pbnRlcm9wRGVmYXVsdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL191dGlsL2ludGVyb3BEZWZhdWx0XCIpKTtcblxudmFyIF9sb2NhbGUgPSByZXF1aXJlKFwiLi4vbW9kYWwvbG9jYWxlXCIpO1xuXG52YXIgX3dhcm5pbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9fdXRpbC93YXJuaW5nXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxudmFyIEFOVF9NQVJLID0gJ2ludGVybmFsTWFyayc7XG5leHBvcnRzLkFOVF9NQVJLID0gQU5UX01BUks7XG5cbmZ1bmN0aW9uIHNldE1vbWVudExvY2FsZShsb2NhbGUpIHtcbiAgaWYgKGxvY2FsZSAmJiBsb2NhbGUubG9jYWxlKSB7XG4gICAgKDAsIF9pbnRlcm9wRGVmYXVsdFtcImRlZmF1bHRcIl0pKG1vbWVudCkubG9jYWxlKGxvY2FsZS5sb2NhbGUpO1xuICB9IGVsc2Uge1xuICAgICgwLCBfaW50ZXJvcERlZmF1bHRbXCJkZWZhdWx0XCJdKShtb21lbnQpLmxvY2FsZSgnZW4nKTtcbiAgfVxufVxuXG52YXIgTG9jYWxlUHJvdmlkZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKExvY2FsZVByb3ZpZGVyLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKExvY2FsZVByb3ZpZGVyKTtcblxuICBmdW5jdGlvbiBMb2NhbGVQcm92aWRlcihwcm9wcykge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMb2NhbGVQcm92aWRlcik7XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKTtcbiAgICBzZXRNb21lbnRMb2NhbGUocHJvcHMubG9jYWxlKTtcbiAgICAoMCwgX2xvY2FsZS5jaGFuZ2VDb25maXJtTG9jYWxlKShwcm9wcy5sb2NhbGUgJiYgcHJvcHMubG9jYWxlLk1vZGFsKTtcbiAgICAoMCwgX3dhcm5pbmdbXCJkZWZhdWx0XCJdKShwcm9wcy5fQU5UX01BUktfXyA9PT0gQU5UX01BUkssICdMb2NhbGVQcm92aWRlcicsICdgTG9jYWxlUHJvdmlkZXJgIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgYGxvY2FsZWAgd2l0aCBgQ29uZmlnUHJvdmlkZXJgIGluc3RlYWQ6IGh0dHA6Ly91LmFudC5kZXNpZ24vbG9jYWxlJyk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKExvY2FsZVByb3ZpZGVyLCBbe1xuICAgIGtleTogXCJnZXRDaGlsZENvbnRleHRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q2hpbGRDb250ZXh0KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW50TG9jYWxlOiBfZXh0ZW5kcyhfZXh0ZW5kcyh7fSwgdGhpcy5wcm9wcy5sb2NhbGUpLCB7XG4gICAgICAgICAgZXhpc3Q6IHRydWVcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICB2YXIgbG9jYWxlID0gdGhpcy5wcm9wcy5sb2NhbGU7XG5cbiAgICAgIGlmIChwcmV2UHJvcHMubG9jYWxlICE9PSBsb2NhbGUpIHtcbiAgICAgICAgc2V0TW9tZW50TG9jYWxlKGxvY2FsZSk7XG4gICAgICAgICgwLCBfbG9jYWxlLmNoYW5nZUNvbmZpcm1Mb2NhbGUpKGxvY2FsZSAmJiBsb2NhbGUuTW9kYWwpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgICgwLCBfbG9jYWxlLmNoYW5nZUNvbmZpcm1Mb2NhbGUpKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTG9jYWxlUHJvdmlkZXI7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gTG9jYWxlUHJvdmlkZXI7XG5Mb2NhbGVQcm92aWRlci5wcm9wVHlwZXMgPSB7XG4gIGxvY2FsZTogUHJvcFR5cGVzLm9iamVjdFxufTtcbkxvY2FsZVByb3ZpZGVyLmRlZmF1bHRQcm9wcyA9IHtcbiAgbG9jYWxlOiB7fVxufTtcbkxvY2FsZVByb3ZpZGVyLmNoaWxkQ29udGV4dFR5cGVzID0ge1xuICBhbnRMb2NhbGU6IFByb3BUeXBlcy5vYmplY3Rcbn07IiwidmFyIG1hcCA9IHtcblx0XCIuL2FmXCI6IDIwNixcblx0XCIuL2FmLmpzXCI6IDIwNixcblx0XCIuL2FyXCI6IDIwNyxcblx0XCIuL2FyLWR6XCI6IDIwOCxcblx0XCIuL2FyLWR6LmpzXCI6IDIwOCxcblx0XCIuL2FyLWt3XCI6IDIwOSxcblx0XCIuL2FyLWt3LmpzXCI6IDIwOSxcblx0XCIuL2FyLWx5XCI6IDIxMCxcblx0XCIuL2FyLWx5LmpzXCI6IDIxMCxcblx0XCIuL2FyLW1hXCI6IDIxMSxcblx0XCIuL2FyLW1hLmpzXCI6IDIxMSxcblx0XCIuL2FyLXNhXCI6IDIxMixcblx0XCIuL2FyLXNhLmpzXCI6IDIxMixcblx0XCIuL2FyLXRuXCI6IDIxMyxcblx0XCIuL2FyLXRuLmpzXCI6IDIxMyxcblx0XCIuL2FyLmpzXCI6IDIwNyxcblx0XCIuL2F6XCI6IDIxNCxcblx0XCIuL2F6LmpzXCI6IDIxNCxcblx0XCIuL2JlXCI6IDIxNSxcblx0XCIuL2JlLmpzXCI6IDIxNSxcblx0XCIuL2JnXCI6IDIxNixcblx0XCIuL2JnLmpzXCI6IDIxNixcblx0XCIuL2JtXCI6IDIxNyxcblx0XCIuL2JtLmpzXCI6IDIxNyxcblx0XCIuL2JuXCI6IDIxOCxcblx0XCIuL2JuLmpzXCI6IDIxOCxcblx0XCIuL2JvXCI6IDIxOSxcblx0XCIuL2JvLmpzXCI6IDIxOSxcblx0XCIuL2JyXCI6IDIyMCxcblx0XCIuL2JyLmpzXCI6IDIyMCxcblx0XCIuL2JzXCI6IDIyMSxcblx0XCIuL2JzLmpzXCI6IDIyMSxcblx0XCIuL2NhXCI6IDIyMixcblx0XCIuL2NhLmpzXCI6IDIyMixcblx0XCIuL2NzXCI6IDIyMyxcblx0XCIuL2NzLmpzXCI6IDIyMyxcblx0XCIuL2N2XCI6IDIyNCxcblx0XCIuL2N2LmpzXCI6IDIyNCxcblx0XCIuL2N5XCI6IDIyNSxcblx0XCIuL2N5LmpzXCI6IDIyNSxcblx0XCIuL2RhXCI6IDIyNixcblx0XCIuL2RhLmpzXCI6IDIyNixcblx0XCIuL2RlXCI6IDIyNyxcblx0XCIuL2RlLWF0XCI6IDIyOCxcblx0XCIuL2RlLWF0LmpzXCI6IDIyOCxcblx0XCIuL2RlLWNoXCI6IDIyOSxcblx0XCIuL2RlLWNoLmpzXCI6IDIyOSxcblx0XCIuL2RlLmpzXCI6IDIyNyxcblx0XCIuL2R2XCI6IDIzMCxcblx0XCIuL2R2LmpzXCI6IDIzMCxcblx0XCIuL2VsXCI6IDIzMSxcblx0XCIuL2VsLmpzXCI6IDIzMSxcblx0XCIuL2VuLWF1XCI6IDIzMixcblx0XCIuL2VuLWF1LmpzXCI6IDIzMixcblx0XCIuL2VuLWNhXCI6IDIzMyxcblx0XCIuL2VuLWNhLmpzXCI6IDIzMyxcblx0XCIuL2VuLWdiXCI6IDIzNCxcblx0XCIuL2VuLWdiLmpzXCI6IDIzNCxcblx0XCIuL2VuLWllXCI6IDIzNSxcblx0XCIuL2VuLWllLmpzXCI6IDIzNSxcblx0XCIuL2VuLWlsXCI6IDIzNixcblx0XCIuL2VuLWlsLmpzXCI6IDIzNixcblx0XCIuL2VuLWluXCI6IDIzNyxcblx0XCIuL2VuLWluLmpzXCI6IDIzNyxcblx0XCIuL2VuLW56XCI6IDIzOCxcblx0XCIuL2VuLW56LmpzXCI6IDIzOCxcblx0XCIuL2VuLXNnXCI6IDIzOSxcblx0XCIuL2VuLXNnLmpzXCI6IDIzOSxcblx0XCIuL2VvXCI6IDI0MCxcblx0XCIuL2VvLmpzXCI6IDI0MCxcblx0XCIuL2VzXCI6IDI0MSxcblx0XCIuL2VzLWRvXCI6IDI0Mixcblx0XCIuL2VzLWRvLmpzXCI6IDI0Mixcblx0XCIuL2VzLXVzXCI6IDI0Myxcblx0XCIuL2VzLXVzLmpzXCI6IDI0Myxcblx0XCIuL2VzLmpzXCI6IDI0MSxcblx0XCIuL2V0XCI6IDI0NCxcblx0XCIuL2V0LmpzXCI6IDI0NCxcblx0XCIuL2V1XCI6IDI0NSxcblx0XCIuL2V1LmpzXCI6IDI0NSxcblx0XCIuL2ZhXCI6IDI0Nixcblx0XCIuL2ZhLmpzXCI6IDI0Nixcblx0XCIuL2ZpXCI6IDI0Nyxcblx0XCIuL2ZpLmpzXCI6IDI0Nyxcblx0XCIuL2ZpbFwiOiAyNDgsXG5cdFwiLi9maWwuanNcIjogMjQ4LFxuXHRcIi4vZm9cIjogMjQ5LFxuXHRcIi4vZm8uanNcIjogMjQ5LFxuXHRcIi4vZnJcIjogMjUwLFxuXHRcIi4vZnItY2FcIjogMjUxLFxuXHRcIi4vZnItY2EuanNcIjogMjUxLFxuXHRcIi4vZnItY2hcIjogMjUyLFxuXHRcIi4vZnItY2guanNcIjogMjUyLFxuXHRcIi4vZnIuanNcIjogMjUwLFxuXHRcIi4vZnlcIjogMjUzLFxuXHRcIi4vZnkuanNcIjogMjUzLFxuXHRcIi4vZ2FcIjogMjU0LFxuXHRcIi4vZ2EuanNcIjogMjU0LFxuXHRcIi4vZ2RcIjogMjU1LFxuXHRcIi4vZ2QuanNcIjogMjU1LFxuXHRcIi4vZ2xcIjogMjU2LFxuXHRcIi4vZ2wuanNcIjogMjU2LFxuXHRcIi4vZ29tLWRldmFcIjogMjU3LFxuXHRcIi4vZ29tLWRldmEuanNcIjogMjU3LFxuXHRcIi4vZ29tLWxhdG5cIjogMjU4LFxuXHRcIi4vZ29tLWxhdG4uanNcIjogMjU4LFxuXHRcIi4vZ3VcIjogMjU5LFxuXHRcIi4vZ3UuanNcIjogMjU5LFxuXHRcIi4vaGVcIjogMjYwLFxuXHRcIi4vaGUuanNcIjogMjYwLFxuXHRcIi4vaGlcIjogMjYxLFxuXHRcIi4vaGkuanNcIjogMjYxLFxuXHRcIi4vaHJcIjogMjYyLFxuXHRcIi4vaHIuanNcIjogMjYyLFxuXHRcIi4vaHVcIjogMjYzLFxuXHRcIi4vaHUuanNcIjogMjYzLFxuXHRcIi4vaHktYW1cIjogMjY0LFxuXHRcIi4vaHktYW0uanNcIjogMjY0LFxuXHRcIi4vaWRcIjogMjY1LFxuXHRcIi4vaWQuanNcIjogMjY1LFxuXHRcIi4vaXNcIjogMjY2LFxuXHRcIi4vaXMuanNcIjogMjY2LFxuXHRcIi4vaXRcIjogMjY3LFxuXHRcIi4vaXQtY2hcIjogMjY4LFxuXHRcIi4vaXQtY2guanNcIjogMjY4LFxuXHRcIi4vaXQuanNcIjogMjY3LFxuXHRcIi4vamFcIjogMjY5LFxuXHRcIi4vamEuanNcIjogMjY5LFxuXHRcIi4vanZcIjogMjcwLFxuXHRcIi4vanYuanNcIjogMjcwLFxuXHRcIi4va2FcIjogMjcxLFxuXHRcIi4va2EuanNcIjogMjcxLFxuXHRcIi4va2tcIjogMjcyLFxuXHRcIi4va2suanNcIjogMjcyLFxuXHRcIi4va21cIjogMjczLFxuXHRcIi4va20uanNcIjogMjczLFxuXHRcIi4va25cIjogMjc0LFxuXHRcIi4va24uanNcIjogMjc0LFxuXHRcIi4va29cIjogMjc1LFxuXHRcIi4va28uanNcIjogMjc1LFxuXHRcIi4va3VcIjogMjc2LFxuXHRcIi4va3UuanNcIjogMjc2LFxuXHRcIi4va3lcIjogMjc3LFxuXHRcIi4va3kuanNcIjogMjc3LFxuXHRcIi4vbGJcIjogMjc4LFxuXHRcIi4vbGIuanNcIjogMjc4LFxuXHRcIi4vbG9cIjogMjc5LFxuXHRcIi4vbG8uanNcIjogMjc5LFxuXHRcIi4vbHRcIjogMjgwLFxuXHRcIi4vbHQuanNcIjogMjgwLFxuXHRcIi4vbHZcIjogMjgxLFxuXHRcIi4vbHYuanNcIjogMjgxLFxuXHRcIi4vbWVcIjogMjgyLFxuXHRcIi4vbWUuanNcIjogMjgyLFxuXHRcIi4vbWlcIjogMjgzLFxuXHRcIi4vbWkuanNcIjogMjgzLFxuXHRcIi4vbWtcIjogMjg0LFxuXHRcIi4vbWsuanNcIjogMjg0LFxuXHRcIi4vbWxcIjogMjg1LFxuXHRcIi4vbWwuanNcIjogMjg1LFxuXHRcIi4vbW5cIjogMjg2LFxuXHRcIi4vbW4uanNcIjogMjg2LFxuXHRcIi4vbXJcIjogMjg3LFxuXHRcIi4vbXIuanNcIjogMjg3LFxuXHRcIi4vbXNcIjogMjg4LFxuXHRcIi4vbXMtbXlcIjogMjg5LFxuXHRcIi4vbXMtbXkuanNcIjogMjg5LFxuXHRcIi4vbXMuanNcIjogMjg4LFxuXHRcIi4vbXRcIjogMjkwLFxuXHRcIi4vbXQuanNcIjogMjkwLFxuXHRcIi4vbXlcIjogMjkxLFxuXHRcIi4vbXkuanNcIjogMjkxLFxuXHRcIi4vbmJcIjogMjkyLFxuXHRcIi4vbmIuanNcIjogMjkyLFxuXHRcIi4vbmVcIjogMjkzLFxuXHRcIi4vbmUuanNcIjogMjkzLFxuXHRcIi4vbmxcIjogMjk0LFxuXHRcIi4vbmwtYmVcIjogMjk1LFxuXHRcIi4vbmwtYmUuanNcIjogMjk1LFxuXHRcIi4vbmwuanNcIjogMjk0LFxuXHRcIi4vbm5cIjogMjk2LFxuXHRcIi4vbm4uanNcIjogMjk2LFxuXHRcIi4vb2MtbG5jXCI6IDI5Nyxcblx0XCIuL29jLWxuYy5qc1wiOiAyOTcsXG5cdFwiLi9wYS1pblwiOiAyOTgsXG5cdFwiLi9wYS1pbi5qc1wiOiAyOTgsXG5cdFwiLi9wbFwiOiAyOTksXG5cdFwiLi9wbC5qc1wiOiAyOTksXG5cdFwiLi9wdFwiOiAzMDAsXG5cdFwiLi9wdC1iclwiOiAzMDEsXG5cdFwiLi9wdC1ici5qc1wiOiAzMDEsXG5cdFwiLi9wdC5qc1wiOiAzMDAsXG5cdFwiLi9yb1wiOiAzMDIsXG5cdFwiLi9yby5qc1wiOiAzMDIsXG5cdFwiLi9ydVwiOiAzMDMsXG5cdFwiLi9ydS5qc1wiOiAzMDMsXG5cdFwiLi9zZFwiOiAzMDQsXG5cdFwiLi9zZC5qc1wiOiAzMDQsXG5cdFwiLi9zZVwiOiAzMDUsXG5cdFwiLi9zZS5qc1wiOiAzMDUsXG5cdFwiLi9zaVwiOiAzMDYsXG5cdFwiLi9zaS5qc1wiOiAzMDYsXG5cdFwiLi9za1wiOiAzMDcsXG5cdFwiLi9zay5qc1wiOiAzMDcsXG5cdFwiLi9zbFwiOiAzMDgsXG5cdFwiLi9zbC5qc1wiOiAzMDgsXG5cdFwiLi9zcVwiOiAzMDksXG5cdFwiLi9zcS5qc1wiOiAzMDksXG5cdFwiLi9zclwiOiAzMTAsXG5cdFwiLi9zci1jeXJsXCI6IDMxMSxcblx0XCIuL3NyLWN5cmwuanNcIjogMzExLFxuXHRcIi4vc3IuanNcIjogMzEwLFxuXHRcIi4vc3NcIjogMzEyLFxuXHRcIi4vc3MuanNcIjogMzEyLFxuXHRcIi4vc3ZcIjogMzEzLFxuXHRcIi4vc3YuanNcIjogMzEzLFxuXHRcIi4vc3dcIjogMzE0LFxuXHRcIi4vc3cuanNcIjogMzE0LFxuXHRcIi4vdGFcIjogMzE1LFxuXHRcIi4vdGEuanNcIjogMzE1LFxuXHRcIi4vdGVcIjogMzE2LFxuXHRcIi4vdGUuanNcIjogMzE2LFxuXHRcIi4vdGV0XCI6IDMxNyxcblx0XCIuL3RldC5qc1wiOiAzMTcsXG5cdFwiLi90Z1wiOiAzMTgsXG5cdFwiLi90Zy5qc1wiOiAzMTgsXG5cdFwiLi90aFwiOiAzMTksXG5cdFwiLi90aC5qc1wiOiAzMTksXG5cdFwiLi90a1wiOiAzMjAsXG5cdFwiLi90ay5qc1wiOiAzMjAsXG5cdFwiLi90bC1waFwiOiAzMjEsXG5cdFwiLi90bC1waC5qc1wiOiAzMjEsXG5cdFwiLi90bGhcIjogMzIyLFxuXHRcIi4vdGxoLmpzXCI6IDMyMixcblx0XCIuL3RyXCI6IDMyMyxcblx0XCIuL3RyLmpzXCI6IDMyMyxcblx0XCIuL3R6bFwiOiAzMjQsXG5cdFwiLi90emwuanNcIjogMzI0LFxuXHRcIi4vdHptXCI6IDMyNSxcblx0XCIuL3R6bS1sYXRuXCI6IDMyNixcblx0XCIuL3R6bS1sYXRuLmpzXCI6IDMyNixcblx0XCIuL3R6bS5qc1wiOiAzMjUsXG5cdFwiLi91Zy1jblwiOiAzMjcsXG5cdFwiLi91Zy1jbi5qc1wiOiAzMjcsXG5cdFwiLi91a1wiOiAzMjgsXG5cdFwiLi91ay5qc1wiOiAzMjgsXG5cdFwiLi91clwiOiAzMjksXG5cdFwiLi91ci5qc1wiOiAzMjksXG5cdFwiLi91elwiOiAzMzAsXG5cdFwiLi91ei1sYXRuXCI6IDMzMSxcblx0XCIuL3V6LWxhdG4uanNcIjogMzMxLFxuXHRcIi4vdXouanNcIjogMzMwLFxuXHRcIi4vdmlcIjogMzMyLFxuXHRcIi4vdmkuanNcIjogMzMyLFxuXHRcIi4veC1wc2V1ZG9cIjogMzMzLFxuXHRcIi4veC1wc2V1ZG8uanNcIjogMzMzLFxuXHRcIi4veW9cIjogMzM0LFxuXHRcIi4veW8uanNcIjogMzM0LFxuXHRcIi4vemgtY25cIjogMzM1LFxuXHRcIi4vemgtY24uanNcIjogMzM1LFxuXHRcIi4vemgtaGtcIjogMzM2LFxuXHRcIi4vemgtaGsuanNcIjogMzM2LFxuXHRcIi4vemgtbW9cIjogMzM3LFxuXHRcIi4vemgtbW8uanNcIjogMzM3LFxuXHRcIi4vemgtdHdcIjogMzM4LFxuXHRcIi4vemgtdHcuanNcIjogMzM4XG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gNDk3OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBpbnRlcm9wRGVmYXVsdDtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzM2NTBcbi8vIHNpbmNlIHdlIGFyZSB1c2luZyB0cyAzLjUuMSwgaXQgc2hvdWxkIGJlIHNhZmUgdG8gcmVtb3ZlLlxuZnVuY3Rpb24gaW50ZXJvcERlZmF1bHQobSkge1xuICByZXR1cm4gbVtcImRlZmF1bHRcIl0gfHwgbTtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy53aXRoQ29uZmlnQ29uc3VtZXIgPSB3aXRoQ29uZmlnQ29uc3VtZXI7XG5leHBvcnRzLkNvbmZpZ0NvbnN1bWVyID0gZXhwb3J0cy5Db25maWdDb250ZXh0ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NyZWF0ZVJlYWN0Q29udGV4dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2NyZWF0ZS1yZWFjdC1jb250ZXh0XCIpKTtcblxudmFyIF9yZW5kZXJFbXB0eSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vcmVuZGVyRW1wdHlcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxudmFyIENvbmZpZ0NvbnRleHQgPSAoMCwgX2NyZWF0ZVJlYWN0Q29udGV4dFtcImRlZmF1bHRcIl0pKHtcbiAgLy8gV2UgcHJvdmlkZSBhIGRlZmF1bHQgZnVuY3Rpb24gZm9yIENvbnRleHQgd2l0aG91dCBwcm92aWRlclxuICBnZXRQcmVmaXhDbHM6IGZ1bmN0aW9uIGdldFByZWZpeENscyhzdWZmaXhDbHMsIGN1c3RvbWl6ZVByZWZpeENscykge1xuICAgIGlmIChjdXN0b21pemVQcmVmaXhDbHMpIHJldHVybiBjdXN0b21pemVQcmVmaXhDbHM7XG4gICAgcmV0dXJuIFwiYW50LVwiLmNvbmNhdChzdWZmaXhDbHMpO1xuICB9LFxuICByZW5kZXJFbXB0eTogX3JlbmRlckVtcHR5W1wiZGVmYXVsdFwiXVxufSk7XG5leHBvcnRzLkNvbmZpZ0NvbnRleHQgPSBDb25maWdDb250ZXh0O1xudmFyIENvbmZpZ0NvbnN1bWVyID0gQ29uZmlnQ29udGV4dC5Db25zdW1lcjtcbmV4cG9ydHMuQ29uZmlnQ29uc3VtZXIgPSBDb25maWdDb25zdW1lcjtcblxuZnVuY3Rpb24gd2l0aENvbmZpZ0NvbnN1bWVyKGNvbmZpZykge1xuICByZXR1cm4gZnVuY3Rpb24gd2l0aENvbmZpZ0NvbnN1bWVyRnVuYyhDb21wb25lbnQpIHtcbiAgICAvLyBXcmFwIHdpdGggQ29uZmlnQ29uc3VtZXIuIFNpbmNlIHdlIG5lZWQgY29tcGF0aWJsZSB3aXRoIHJlYWN0IDE1LCBiZSBjYXJlIHdoZW4gdXNpbmcgcmVmIG1ldGhvZHNcbiAgICB2YXIgU0ZDID0gZnVuY3Rpb24gU0ZDKHByb3BzKSB7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ29uZmlnQ29uc3VtZXIsIG51bGwsIGZ1bmN0aW9uIChjb25maWdQcm9wcykge1xuICAgICAgICB2YXIgYmFzaWNQcmVmaXhDbHMgPSBjb25maWcucHJlZml4Q2xzO1xuICAgICAgICB2YXIgZ2V0UHJlZml4Q2xzID0gY29uZmlnUHJvcHMuZ2V0UHJlZml4Q2xzO1xuICAgICAgICB2YXIgY3VzdG9taXplUHJlZml4Q2xzID0gcHJvcHMucHJlZml4Q2xzO1xuICAgICAgICB2YXIgcHJlZml4Q2xzID0gZ2V0UHJlZml4Q2xzKGJhc2ljUHJlZml4Q2xzLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50LCBfZXh0ZW5kcyh7fSwgY29uZmlnUHJvcHMsIHByb3BzLCB7XG4gICAgICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHNcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHZhciBjb25zID0gQ29tcG9uZW50LmNvbnN0cnVjdG9yO1xuICAgIHZhciBuYW1lID0gY29ucyAmJiBjb25zLmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnO1xuICAgIFNGQy5kaXNwbGF5TmFtZSA9IFwid2l0aENvbmZpZ0NvbnN1bWVyKFwiLmNvbmNhdChuYW1lLCBcIilcIik7XG4gICAgcmV0dXJuIFNGQztcbiAgfTtcbn0iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfcmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xuXG52YXIgX3JlYWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0KTtcblxudmFyIF9wcm9wVHlwZXMgPSByZXF1aXJlKCdwcm9wLXR5cGVzJyk7XG5cbnZhciBfcHJvcFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Byb3BUeXBlcyk7XG5cbnZhciBfZ3VkID0gcmVxdWlyZSgnZ3VkJyk7XG5cbnZhciBfZ3VkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2d1ZCk7XG5cbnZhciBfd2FybmluZyA9IHJlcXVpcmUoJ3dhcm5pbmcnKTtcblxudmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBNQVhfU0lHTkVEXzMxX0JJVF9JTlQgPSAxMDczNzQxODIzO1xuXG4vLyBJbmxpbmVkIE9iamVjdC5pcyBwb2x5ZmlsbC5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9pc1xuZnVuY3Rpb24gb2JqZWN0SXMoeCwgeSkge1xuICBpZiAoeCA9PT0geSkge1xuICAgIHJldHVybiB4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5O1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUV2ZW50RW1pdHRlcih2YWx1ZSkge1xuICB2YXIgaGFuZGxlcnMgPSBbXTtcbiAgcmV0dXJuIHtcbiAgICBvbjogZnVuY3Rpb24gb24oaGFuZGxlcikge1xuICAgICAgaGFuZGxlcnMucHVzaChoYW5kbGVyKTtcbiAgICB9LFxuICAgIG9mZjogZnVuY3Rpb24gb2ZmKGhhbmRsZXIpIHtcbiAgICAgIGhhbmRsZXJzID0gaGFuZGxlcnMuZmlsdGVyKGZ1bmN0aW9uIChoKSB7XG4gICAgICAgIHJldHVybiBoICE9PSBoYW5kbGVyO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gc2V0KG5ld1ZhbHVlLCBjaGFuZ2VkQml0cykge1xuICAgICAgdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIGhhbmRsZXJzLmZvckVhY2goZnVuY3Rpb24gKGhhbmRsZXIpIHtcbiAgICAgICAgcmV0dXJuIGhhbmRsZXIodmFsdWUsIGNoYW5nZWRCaXRzKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gb25seUNoaWxkKGNoaWxkcmVuKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuWzBdIDogY2hpbGRyZW47XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVJlYWN0Q29udGV4dChkZWZhdWx0VmFsdWUsIGNhbGN1bGF0ZUNoYW5nZWRCaXRzKSB7XG4gIHZhciBfUHJvdmlkZXIkY2hpbGRDb250ZXgsIF9Db25zdW1lciRjb250ZXh0VHlwZTtcblxuICB2YXIgY29udGV4dFByb3AgPSAnX19jcmVhdGUtcmVhY3QtY29udGV4dC0nICsgKDAsIF9ndWQyLmRlZmF1bHQpKCkgKyAnX18nO1xuXG4gIHZhciBQcm92aWRlciA9IGZ1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gICAgX2luaGVyaXRzKFByb3ZpZGVyLCBfQ29tcG9uZW50KTtcblxuICAgIGZ1bmN0aW9uIFByb3ZpZGVyKCkge1xuICAgICAgdmFyIF90ZW1wLCBfdGhpcywgX3JldDtcblxuICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFByb3ZpZGVyKTtcblxuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF9yZXQgPSAoX3RlbXAgPSAoX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfQ29tcG9uZW50LmNhbGwuYXBwbHkoX0NvbXBvbmVudCwgW3RoaXNdLmNvbmNhdChhcmdzKSkpLCBfdGhpcyksIF90aGlzLmVtaXR0ZXIgPSBjcmVhdGVFdmVudEVtaXR0ZXIoX3RoaXMucHJvcHMudmFsdWUpLCBfdGVtcCksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKF90aGlzLCBfcmV0KTtcbiAgICB9XG5cbiAgICBQcm92aWRlci5wcm90b3R5cGUuZ2V0Q2hpbGRDb250ZXh0ID0gZnVuY3Rpb24gZ2V0Q2hpbGRDb250ZXh0KCkge1xuICAgICAgdmFyIF9yZWY7XG5cbiAgICAgIHJldHVybiBfcmVmID0ge30sIF9yZWZbY29udGV4dFByb3BdID0gdGhpcy5lbWl0dGVyLCBfcmVmO1xuICAgIH07XG5cbiAgICBQcm92aWRlci5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy52YWx1ZSAhPT0gbmV4dFByb3BzLnZhbHVlKSB7XG4gICAgICAgIHZhciBvbGRWYWx1ZSA9IHRoaXMucHJvcHMudmFsdWU7XG4gICAgICAgIHZhciBuZXdWYWx1ZSA9IG5leHRQcm9wcy52YWx1ZTtcbiAgICAgICAgdmFyIGNoYW5nZWRCaXRzID0gdm9pZCAwO1xuXG4gICAgICAgIGlmIChvYmplY3RJcyhvbGRWYWx1ZSwgbmV3VmFsdWUpKSB7XG4gICAgICAgICAgY2hhbmdlZEJpdHMgPSAwOyAvLyBObyBjaGFuZ2VcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaGFuZ2VkQml0cyA9IHR5cGVvZiBjYWxjdWxhdGVDaGFuZ2VkQml0cyA9PT0gJ2Z1bmN0aW9uJyA/IGNhbGN1bGF0ZUNoYW5nZWRCaXRzKG9sZFZhbHVlLCBuZXdWYWx1ZSkgOiBNQVhfU0lHTkVEXzMxX0JJVF9JTlQ7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICgwLCBfd2FybmluZzIuZGVmYXVsdCkoKGNoYW5nZWRCaXRzICYgTUFYX1NJR05FRF8zMV9CSVRfSU5UKSA9PT0gY2hhbmdlZEJpdHMsICdjYWxjdWxhdGVDaGFuZ2VkQml0czogRXhwZWN0ZWQgdGhlIHJldHVybiB2YWx1ZSB0byBiZSBhICcgKyAnMzEtYml0IGludGVnZXIuIEluc3RlYWQgcmVjZWl2ZWQ6ICVzJywgY2hhbmdlZEJpdHMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNoYW5nZWRCaXRzIHw9IDA7XG5cbiAgICAgICAgICBpZiAoY2hhbmdlZEJpdHMgIT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdHRlci5zZXQobmV4dFByb3BzLnZhbHVlLCBjaGFuZ2VkQml0cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIFByb3ZpZGVyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICB9O1xuXG4gICAgcmV0dXJuIFByb3ZpZGVyO1xuICB9KF9yZWFjdC5Db21wb25lbnQpO1xuXG4gIFByb3ZpZGVyLmNoaWxkQ29udGV4dFR5cGVzID0gKF9Qcm92aWRlciRjaGlsZENvbnRleCA9IHt9LCBfUHJvdmlkZXIkY2hpbGRDb250ZXhbY29udGV4dFByb3BdID0gX3Byb3BUeXBlczIuZGVmYXVsdC5vYmplY3QuaXNSZXF1aXJlZCwgX1Byb3ZpZGVyJGNoaWxkQ29udGV4KTtcblxuICB2YXIgQ29uc3VtZXIgPSBmdW5jdGlvbiAoX0NvbXBvbmVudDIpIHtcbiAgICBfaW5oZXJpdHMoQ29uc3VtZXIsIF9Db21wb25lbnQyKTtcblxuICAgIGZ1bmN0aW9uIENvbnN1bWVyKCkge1xuICAgICAgdmFyIF90ZW1wMiwgX3RoaXMyLCBfcmV0MjtcblxuICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENvbnN1bWVyKTtcblxuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gX3JldDIgPSAoX3RlbXAyID0gKF90aGlzMiA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9Db21wb25lbnQyLmNhbGwuYXBwbHkoX0NvbXBvbmVudDIsIFt0aGlzXS5jb25jYXQoYXJncykpKSwgX3RoaXMyKSwgX3RoaXMyLnN0YXRlID0ge1xuICAgICAgICB2YWx1ZTogX3RoaXMyLmdldFZhbHVlKClcbiAgICAgIH0sIF90aGlzMi5vblVwZGF0ZSA9IGZ1bmN0aW9uIChuZXdWYWx1ZSwgY2hhbmdlZEJpdHMpIHtcbiAgICAgICAgdmFyIG9ic2VydmVkQml0cyA9IF90aGlzMi5vYnNlcnZlZEJpdHMgfCAwO1xuICAgICAgICBpZiAoKG9ic2VydmVkQml0cyAmIGNoYW5nZWRCaXRzKSAhPT0gMCkge1xuICAgICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7IHZhbHVlOiBfdGhpczIuZ2V0VmFsdWUoKSB9KTtcbiAgICAgICAgfVxuICAgICAgfSwgX3RlbXAyKSwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oX3RoaXMyLCBfcmV0Mik7XG4gICAgfVxuXG4gICAgQ29uc3VtZXIucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgICAgdmFyIG9ic2VydmVkQml0cyA9IG5leHRQcm9wcy5vYnNlcnZlZEJpdHM7XG5cbiAgICAgIHRoaXMub2JzZXJ2ZWRCaXRzID0gb2JzZXJ2ZWRCaXRzID09PSB1bmRlZmluZWQgfHwgb2JzZXJ2ZWRCaXRzID09PSBudWxsID8gTUFYX1NJR05FRF8zMV9CSVRfSU5UIC8vIFN1YnNjcmliZSB0byBhbGwgY2hhbmdlcyBieSBkZWZhdWx0XG4gICAgICA6IG9ic2VydmVkQml0cztcbiAgICB9O1xuXG4gICAgQ29uc3VtZXIucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5jb250ZXh0W2NvbnRleHRQcm9wXSkge1xuICAgICAgICB0aGlzLmNvbnRleHRbY29udGV4dFByb3BdLm9uKHRoaXMub25VcGRhdGUpO1xuICAgICAgfVxuICAgICAgdmFyIG9ic2VydmVkQml0cyA9IHRoaXMucHJvcHMub2JzZXJ2ZWRCaXRzO1xuXG4gICAgICB0aGlzLm9ic2VydmVkQml0cyA9IG9ic2VydmVkQml0cyA9PT0gdW5kZWZpbmVkIHx8IG9ic2VydmVkQml0cyA9PT0gbnVsbCA/IE1BWF9TSUdORURfMzFfQklUX0lOVCAvLyBTdWJzY3JpYmUgdG8gYWxsIGNoYW5nZXMgYnkgZGVmYXVsdFxuICAgICAgOiBvYnNlcnZlZEJpdHM7XG4gICAgfTtcblxuICAgIENvbnN1bWVyLnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgaWYgKHRoaXMuY29udGV4dFtjb250ZXh0UHJvcF0pIHtcbiAgICAgICAgdGhpcy5jb250ZXh0W2NvbnRleHRQcm9wXS5vZmYodGhpcy5vblVwZGF0ZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIENvbnN1bWVyLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uIGdldFZhbHVlKCkge1xuICAgICAgaWYgKHRoaXMuY29udGV4dFtjb250ZXh0UHJvcF0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dFtjb250ZXh0UHJvcF0uZ2V0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBDb25zdW1lci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIG9ubHlDaGlsZCh0aGlzLnByb3BzLmNoaWxkcmVuKSh0aGlzLnN0YXRlLnZhbHVlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIENvbnN1bWVyO1xuICB9KF9yZWFjdC5Db21wb25lbnQpO1xuXG4gIENvbnN1bWVyLmNvbnRleHRUeXBlcyA9IChfQ29uc3VtZXIkY29udGV4dFR5cGUgPSB7fSwgX0NvbnN1bWVyJGNvbnRleHRUeXBlW2NvbnRleHRQcm9wXSA9IF9wcm9wVHlwZXMyLmRlZmF1bHQub2JqZWN0LCBfQ29uc3VtZXIkY29udGV4dFR5cGUpO1xuXG5cbiAgcmV0dXJuIHtcbiAgICBQcm92aWRlcjogUHJvdmlkZXIsXG4gICAgQ29uc3VtZXI6IENvbnN1bWVyXG4gIH07XG59XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGNyZWF0ZVJlYWN0Q29udGV4dDtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8vIEBmbG93XG4ndXNlIHN0cmljdCc7XG5cbnZhciBrZXkgPSAnX19nbG9iYWxfdW5pcXVlX2lkX18nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gZ2xvYmFsW2tleV0gPSAoZ2xvYmFsW2tleV0gfHwgMCkgKyAxO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9lbXB0eSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2VtcHR5XCIpKTtcblxudmFyIF8gPSByZXF1aXJlKFwiLlwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciByZW5kZXJFbXB0eSA9IGZ1bmN0aW9uIHJlbmRlckVtcHR5KGNvbXBvbmVudE5hbWUpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF8uQ29uZmlnQ29uc3VtZXIsIG51bGwsIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIGdldFByZWZpeENscyA9IF9yZWYuZ2V0UHJlZml4Q2xzO1xuICAgIHZhciBwcmVmaXggPSBnZXRQcmVmaXhDbHMoJ2VtcHR5Jyk7XG5cbiAgICBzd2l0Y2ggKGNvbXBvbmVudE5hbWUpIHtcbiAgICAgIGNhc2UgJ1RhYmxlJzpcbiAgICAgIGNhc2UgJ0xpc3QnOlxuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2VtcHR5W1wiZGVmYXVsdFwiXSwge1xuICAgICAgICAgIGltYWdlOiBfZW1wdHlbXCJkZWZhdWx0XCJdLlBSRVNFTlRFRF9JTUFHRV9TSU1QTEVcbiAgICAgICAgfSk7XG5cbiAgICAgIGNhc2UgJ1NlbGVjdCc6XG4gICAgICBjYXNlICdUcmVlU2VsZWN0JzpcbiAgICAgIGNhc2UgJ0Nhc2NhZGVyJzpcbiAgICAgIGNhc2UgJ1RyYW5zZmVyJzpcbiAgICAgIGNhc2UgJ01lbnRpb25zJzpcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9lbXB0eVtcImRlZmF1bHRcIl0sIHtcbiAgICAgICAgICBpbWFnZTogX2VtcHR5W1wiZGVmYXVsdFwiXS5QUkVTRU5URURfSU1BR0VfU0lNUExFLFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi1zbWFsbFwiKVxuICAgICAgICB9KTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9lbXB0eVtcImRlZmF1bHRcIl0sIG51bGwpO1xuICAgIH1cbiAgfSk7XG59O1xuXG52YXIgX2RlZmF1bHQgPSByZW5kZXJFbXB0eTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9jb25maWdQcm92aWRlciA9IHJlcXVpcmUoXCIuLi9jb25maWctcHJvdmlkZXJcIik7XG5cbnZhciBfTG9jYWxlUmVjZWl2ZXIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9sb2NhbGUtcHJvdmlkZXIvTG9jYWxlUmVjZWl2ZXJcIikpO1xuXG52YXIgX2VtcHR5ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9lbXB0eVwiKSk7XG5cbnZhciBfc2ltcGxlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9zaW1wbGVcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxudmFyIF9fcmVzdCA9IHZvaWQgMCAmJiAodm9pZCAwKS5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApIHRbcF0gPSBzW3BdO1xuICB9XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbnZhciBkZWZhdWx0RW1wdHlJbWcgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfZW1wdHlbXCJkZWZhdWx0XCJdLCBudWxsKTtcbnZhciBzaW1wbGVFbXB0eUltZyA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9zaW1wbGVbXCJkZWZhdWx0XCJdLCBudWxsKTtcblxudmFyIEVtcHR5ID0gZnVuY3Rpb24gRW1wdHkocHJvcHMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jb25maWdQcm92aWRlci5Db25maWdDb25zdW1lciwgbnVsbCwgZnVuY3Rpb24gKF9yZWYpIHtcbiAgICB2YXIgZ2V0UHJlZml4Q2xzID0gX3JlZi5nZXRQcmVmaXhDbHM7XG5cbiAgICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICBjdXN0b21pemVQcmVmaXhDbHMgPSBwcm9wcy5wcmVmaXhDbHMsXG4gICAgICAgIF9wcm9wcyRpbWFnZSA9IHByb3BzLmltYWdlLFxuICAgICAgICBpbWFnZSA9IF9wcm9wcyRpbWFnZSA9PT0gdm9pZCAwID8gZGVmYXVsdEVtcHR5SW1nIDogX3Byb3BzJGltYWdlLFxuICAgICAgICBkZXNjcmlwdGlvbiA9IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgICBpbWFnZVN0eWxlID0gcHJvcHMuaW1hZ2VTdHlsZSxcbiAgICAgICAgcmVzdFByb3BzID0gX19yZXN0KHByb3BzLCBbXCJjbGFzc05hbWVcIiwgXCJwcmVmaXhDbHNcIiwgXCJpbWFnZVwiLCBcImRlc2NyaXB0aW9uXCIsIFwiY2hpbGRyZW5cIiwgXCJpbWFnZVN0eWxlXCJdKTtcblxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfTG9jYWxlUmVjZWl2ZXJbXCJkZWZhdWx0XCJdLCB7XG4gICAgICBjb21wb25lbnROYW1lOiBcIkVtcHR5XCJcbiAgICB9LCBmdW5jdGlvbiAobG9jYWxlKSB7XG4gICAgICB2YXIgcHJlZml4Q2xzID0gZ2V0UHJlZml4Q2xzKCdlbXB0eScsIGN1c3RvbWl6ZVByZWZpeENscyk7XG4gICAgICB2YXIgZGVzID0gdHlwZW9mIGRlc2NyaXB0aW9uICE9PSAndW5kZWZpbmVkJyA/IGRlc2NyaXB0aW9uIDogbG9jYWxlLmRlc2NyaXB0aW9uO1xuICAgICAgdmFyIGFsdCA9IHR5cGVvZiBkZXMgPT09ICdzdHJpbmcnID8gZGVzIDogJ2VtcHR5JztcbiAgICAgIHZhciBpbWFnZU5vZGUgPSBudWxsO1xuXG4gICAgICBpZiAodHlwZW9mIGltYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICBpbWFnZU5vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImltZ1wiLCB7XG4gICAgICAgICAgYWx0OiBhbHQsXG4gICAgICAgICAgc3JjOiBpbWFnZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltYWdlTm9kZSA9IGltYWdlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgICAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKHByZWZpeENscywgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLW5vcm1hbFwiKSwgaW1hZ2UgPT09IHNpbXBsZUVtcHR5SW1nKSwgY2xhc3NOYW1lKVxuICAgICAgfSwgcmVzdFByb3BzKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaW1hZ2VcIiksXG4gICAgICAgIHN0eWxlOiBpbWFnZVN0eWxlXG4gICAgICB9LCBpbWFnZU5vZGUpLCBkZXMgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWRlc2NyaXB0aW9uXCIpXG4gICAgICB9LCBkZXMpLCBjaGlsZHJlbiAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1mb290ZXJcIilcbiAgICAgIH0sIGNoaWxkcmVuKSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuRW1wdHkuUFJFU0VOVEVEX0lNQUdFX0RFRkFVTFQgPSBkZWZhdWx0RW1wdHlJbWc7XG5FbXB0eS5QUkVTRU5URURfSU1BR0VfU0lNUExFID0gc2ltcGxlRW1wdHlJbWc7XG52YXIgX2RlZmF1bHQgPSBFbXB0eTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgRW1wdHkgPSBmdW5jdGlvbiBFbXB0eSgpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHtcbiAgICB3aWR0aDogXCIxODRcIixcbiAgICBoZWlnaHQ6IFwiMTUyXCIsXG4gICAgdmlld0JveDogXCIwIDAgMTg0IDE1MlwiLFxuICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIHtcbiAgICBmaWxsOiBcIm5vbmVcIixcbiAgICBmaWxsUnVsZTogXCJldmVub2RkXCJcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIHtcbiAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKDI0IDMxLjY3KVwiXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZWxsaXBzZVwiLCB7XG4gICAgZmlsbE9wYWNpdHk6IFwiLjhcIixcbiAgICBmaWxsOiBcIiNGNUY1RjdcIixcbiAgICBjeDogXCI2Ny43OTdcIixcbiAgICBjeTogXCIxMDYuODlcIixcbiAgICByeDogXCI2Ny43OTdcIixcbiAgICByeTogXCIxMi42NjhcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xMjIuMDM0IDY5LjY3NEw5OC4xMDkgNDAuMjI5Yy0xLjE0OC0xLjM4Ni0yLjgyNi0yLjIyNS00LjU5My0yLjIyNWgtNTEuNDRjLTEuNzY2IDAtMy40NDQuODM5LTQuNTkyIDIuMjI1TDEzLjU2IDY5LjY3NHYxNS4zODNoMTA4LjQ3NVY2OS42NzR6XCIsXG4gICAgZmlsbDogXCIjQUVCOEMyXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTAxLjUzNyA4Ni4yMTRMODAuNjMgNjEuMTAyYy0xLjAwMS0xLjIwNy0yLjUwNy0xLjg2Ny00LjA0OC0xLjg2N0gzMS43MjRjLTEuNTQgMC0zLjA0Ny42Ni00LjA0OCAxLjg2N0w2Ljc2OSA4Ni4yMTR2MTMuNzkyaDk0Ljc2OFY4Ni4yMTR6XCIsXG4gICAgZmlsbDogXCJ1cmwoI2xpbmVhckdyYWRpZW50LTEpXCIsXG4gICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgxMy41NilcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0zMy44MyAwaDY3LjkzM2E0IDQgMCAwIDEgNCA0djkzLjM0NGE0IDQgMCAwIDEtNCA0SDMzLjgzYTQgNCAwIDAgMS00LTRWNGE0IDQgMCAwIDEgNC00elwiLFxuICAgIGZpbGw6IFwiI0Y1RjVGN1wiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTQyLjY3OCA5Ljk1M2g1MC4yMzdhMiAyIDAgMCAxIDIgMlYzNi45MWEyIDIgMCAwIDEtMiAySDQyLjY3OGEyIDIgMCAwIDEtMi0yVjExLjk1M2EyIDIgMCAwIDEgMi0yek00Mi45NCA0OS43NjdoNDkuNzEzYTIuMjYyIDIuMjYyIDAgMSAxIDAgNC41MjRINDIuOTRhMi4yNjIgMi4yNjIgMCAwIDEgMC00LjUyNHpNNDIuOTQgNjEuNTNoNDkuNzEzYTIuMjYyIDIuMjYyIDAgMSAxIDAgNC41MjVINDIuOTRhMi4yNjIgMi4yNjIgMCAwIDEgMC00LjUyNXpNMTIxLjgxMyAxMDUuMDMyYy0uNzc1IDMuMDcxLTMuNDk3IDUuMzYtNi43MzUgNS4zNkgyMC41MTVjLTMuMjM4IDAtNS45Ni0yLjI5LTYuNzM0LTUuMzZhNy4zMDkgNy4zMDkgMCAwIDEtLjIyMi0xLjc5VjY5LjY3NWgyNi4zMThjMi45MDcgMCA1LjI1IDIuNDQ4IDUuMjUgNS40MnYuMDRjMCAyLjk3MSAyLjM3IDUuMzcgNS4yNzcgNS4zN2gzNC43ODVjMi45MDcgMCA1LjI3Ny0yLjQyMSA1LjI3Ny01LjM5M1Y3NS4xYzAtMi45NzIgMi4zNDMtNS40MjYgNS4yNS01LjQyNmgyNi4zMTh2MzMuNTY5YzAgLjYxNy0uMDc3IDEuMjE2LS4yMjEgMS43ODl6XCIsXG4gICAgZmlsbDogXCIjRENFMEU2XCJcbiAgfSkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE0OS4xMjEgMzMuMjkybC02LjgzIDIuNjVhMSAxIDAgMCAxLTEuMzE3LTEuMjNsMS45MzctNi4yMDdjLTIuNTg5LTIuOTQ0LTQuMTA5LTYuNTM0LTQuMTA5LTEwLjQwOEMxMzguODAyIDguMTAyIDE0OC45MiAwIDE2MS40MDIgMCAxNzMuODgxIDAgMTg0IDguMTAyIDE4NCAxOC4wOTdjMCA5Ljk5NS0xMC4xMTggMTguMDk3LTIyLjU5OSAxOC4wOTctNC41MjggMC04Ljc0NC0xLjA2Ni0xMi4yOC0yLjkwMnpcIixcbiAgICBmaWxsOiBcIiNEQ0UwRTZcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIHtcbiAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKDE0OS42NSAxNS4zODMpXCIsXG4gICAgZmlsbDogXCIjRkZGXCJcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJlbGxpcHNlXCIsIHtcbiAgICBjeDogXCIyMC42NTRcIixcbiAgICBjeTogXCIzLjE2N1wiLFxuICAgIHJ4OiBcIjIuODQ5XCIsXG4gICAgcnk6IFwiMi44MTVcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk01LjY5OCA1LjYzSDBMMi44OTguNzA0ek05LjI1OS43MDRoNC45ODVWNS42M0g5LjI1OXpcIlxuICB9KSkpKTtcbn07XG5cbnZhciBfZGVmYXVsdCA9IEVtcHR5O1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBTaW1wbGUgPSBmdW5jdGlvbiBTaW1wbGUoKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7XG4gICAgd2lkdGg6IFwiNjRcIixcbiAgICBoZWlnaHQ6IFwiNDFcIixcbiAgICB2aWV3Qm94OiBcIjAgMCA2NCA0MVwiLFxuICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIHtcbiAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKDAgMSlcIixcbiAgICBmaWxsOiBcIm5vbmVcIixcbiAgICBmaWxsUnVsZTogXCJldmVub2RkXCJcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJlbGxpcHNlXCIsIHtcbiAgICBmaWxsOiBcIiNGNUY1RjVcIixcbiAgICBjeDogXCIzMlwiLFxuICAgIGN5OiBcIjMzXCIsXG4gICAgcng6IFwiMzJcIixcbiAgICByeTogXCI3XCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCB7XG4gICAgZmlsbFJ1bGU6IFwibm9uemVyb1wiLFxuICAgIHN0cm9rZTogXCIjRDlEOUQ5XCJcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk01NSAxMi43Nkw0NC44NTQgMS4yNThDNDQuMzY3LjQ3NCA0My42NTYgMCA0Mi45MDcgMEgyMS4wOTNjLS43NDkgMC0xLjQ2LjQ3NC0xLjk0NyAxLjI1N0w5IDEyLjc2MVYyMmg0NnYtOS4yNHpcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk00MS42MTMgMTUuOTMxYzAtMS42MDUuOTk0LTIuOTMgMi4yMjctMi45MzFINTV2MTguMTM3QzU1IDMzLjI2IDUzLjY4IDM1IDUyLjA1IDM1aC00MC4xQzEwLjMyIDM1IDkgMzMuMjU5IDkgMzEuMTM3VjEzaDExLjE2YzEuMjMzIDAgMi4yMjcgMS4zMjMgMi4yMjcgMi45Mjh2LjAyMmMwIDEuNjA1IDEuMDA1IDIuOTAxIDIuMjM3IDIuOTAxaDE0Ljc1MmMxLjIzMiAwIDIuMjM3LTEuMzA4IDIuMjM3LTIuOTEzdi0uMDA3elwiLFxuICAgIGZpbGw6IFwiI0ZBRkFGQVwiXG4gIH0pKSkpO1xufTtcblxudmFyIF9kZWZhdWx0ID0gU2ltcGxlO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gZ2V0RGF0YU9yQXJpYVByb3BzO1xuXG5mdW5jdGlvbiBnZXREYXRhT3JBcmlhUHJvcHMocHJvcHMpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHByb3BzKS5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGtleSkge1xuICAgIGlmICgoa2V5LnN1YnN0cigwLCA1KSA9PT0gJ2RhdGEtJyB8fCBrZXkuc3Vic3RyKDAsIDUpID09PSAnYXJpYS0nIHx8IGtleSA9PT0gJ3JvbGUnKSAmJiBrZXkuc3Vic3RyKDAsIDcpICE9PSAnZGF0YS1fXycpIHtcbiAgICAgIHByZXZba2V5XSA9IHByb3BzW2tleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZXY7XG4gIH0sIHt9KTtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mMyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX3R5cGVvZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKSk7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfc2xpY2VkVG9BcnJheTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIikpO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfb21pdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXV0aWwvbGliL29taXRcIikpO1xuXG52YXIgX3JjVGFibGUgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmMtdGFibGVcIikpO1xuXG52YXIgX1RhYmxlID0gcmVxdWlyZShcInJjLXRhYmxlL2xpYi9UYWJsZVwiKTtcblxudmFyIF91c2VDb2x1bW5zID0gcmVxdWlyZShcInJjLXRhYmxlL2xpYi9ob29rcy91c2VDb2x1bW5zXCIpO1xuXG52YXIgX3NwaW4gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9zcGluXCIpKTtcblxudmFyIF9wYWdpbmF0aW9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vcGFnaW5hdGlvblwiKSk7XG5cbnZhciBfY29udGV4dCA9IHJlcXVpcmUoXCIuLi9jb25maWctcHJvdmlkZXIvY29udGV4dFwiKTtcblxudmFyIF91c2VQYWdpbmF0aW9uMyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCIuL2hvb2tzL3VzZVBhZ2luYXRpb25cIikpO1xuXG52YXIgX3VzZUxhenlLVk1hcDMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2hvb2tzL3VzZUxhenlLVk1hcFwiKSk7XG5cbnZhciBfdXNlU2VsZWN0aW9uMyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCIuL2hvb2tzL3VzZVNlbGVjdGlvblwiKSk7XG5cbnZhciBfdXNlU29ydGVyMyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCIuL2hvb2tzL3VzZVNvcnRlclwiKSk7XG5cbnZhciBfdXNlRmlsdGVyMyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCIuL2hvb2tzL3VzZUZpbHRlclwiKSk7XG5cbnZhciBfdXNlVGl0bGVDb2x1bW5zMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vaG9va3MvdXNlVGl0bGVDb2x1bW5zXCIpKTtcblxudmFyIF9FeHBhbmRJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9FeHBhbmRJY29uXCIpKTtcblxudmFyIF9zY3JvbGxUbyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL191dGlsL3Njcm9sbFRvXCIpKTtcblxudmFyIF9lbl9VUyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2xvY2FsZS9lbl9VU1wiKSk7XG5cbnZhciBfU2l6ZUNvbnRleHQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9jb25maWctcHJvdmlkZXIvU2l6ZUNvbnRleHRcIikpO1xuXG52YXIgX0NvbHVtbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vQ29sdW1uXCIpKTtcblxudmFyIF9Db2x1bW5Hcm91cCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vQ29sdW1uR3JvdXBcIikpO1xuXG52YXIgX2Rldldhcm5pbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9fdXRpbC9kZXZXYXJuaW5nXCIpKTtcblxudmFyIF91c2VCcmVha3BvaW50ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZ3JpZC9ob29rcy91c2VCcmVha3BvaW50XCIpKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mMyhvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxudmFyIEVNUFRZX0xJU1QgPSBbXTtcblxuZnVuY3Rpb24gVGFibGUocHJvcHMpIHtcbiAgdmFyIF9jbGFzc05hbWVzMztcblxuICB2YXIgY3VzdG9taXplUHJlZml4Q2xzID0gcHJvcHMucHJlZml4Q2xzLFxuICAgICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgc3R5bGUgPSBwcm9wcy5zdHlsZSxcbiAgICAgIGN1c3RvbWl6ZVNpemUgPSBwcm9wcy5zaXplLFxuICAgICAgYm9yZGVyZWQgPSBwcm9wcy5ib3JkZXJlZCxcbiAgICAgIGN1c3RvbWl6ZURyb3Bkb3duUHJlZml4Q2xzID0gcHJvcHMuZHJvcGRvd25QcmVmaXhDbHMsXG4gICAgICBkYXRhU291cmNlID0gcHJvcHMuZGF0YVNvdXJjZSxcbiAgICAgIHBhZ2luYXRpb24gPSBwcm9wcy5wYWdpbmF0aW9uLFxuICAgICAgcm93U2VsZWN0aW9uID0gcHJvcHMucm93U2VsZWN0aW9uLFxuICAgICAgcm93S2V5ID0gcHJvcHMucm93S2V5LFxuICAgICAgcm93Q2xhc3NOYW1lID0gcHJvcHMucm93Q2xhc3NOYW1lLFxuICAgICAgY29sdW1ucyA9IHByb3BzLmNvbHVtbnMsXG4gICAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgbGVnYWN5Q2hpbGRyZW5Db2x1bW5OYW1lID0gcHJvcHMuY2hpbGRyZW5Db2x1bW5OYW1lLFxuICAgICAgb25DaGFuZ2UgPSBwcm9wcy5vbkNoYW5nZSxcbiAgICAgIGdldFBvcHVwQ29udGFpbmVyID0gcHJvcHMuZ2V0UG9wdXBDb250YWluZXIsXG4gICAgICBsb2FkaW5nID0gcHJvcHMubG9hZGluZyxcbiAgICAgIGV4cGFuZEljb24gPSBwcm9wcy5leHBhbmRJY29uLFxuICAgICAgZXhwYW5kYWJsZSA9IHByb3BzLmV4cGFuZGFibGUsXG4gICAgICBleHBhbmRlZFJvd1JlbmRlciA9IHByb3BzLmV4cGFuZGVkUm93UmVuZGVyLFxuICAgICAgZXhwYW5kSWNvbkNvbHVtbkluZGV4ID0gcHJvcHMuZXhwYW5kSWNvbkNvbHVtbkluZGV4LFxuICAgICAgaW5kZW50U2l6ZSA9IHByb3BzLmluZGVudFNpemUsXG4gICAgICBzY3JvbGwgPSBwcm9wcy5zY3JvbGwsXG4gICAgICBzb3J0RGlyZWN0aW9ucyA9IHByb3BzLnNvcnREaXJlY3Rpb25zLFxuICAgICAgbG9jYWxlID0gcHJvcHMubG9jYWxlLFxuICAgICAgX3Byb3BzJHNob3dTb3J0ZXJUb29sID0gcHJvcHMuc2hvd1NvcnRlclRvb2x0aXAsXG4gICAgICBzaG93U29ydGVyVG9vbHRpcCA9IF9wcm9wcyRzaG93U29ydGVyVG9vbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9wcm9wcyRzaG93U29ydGVyVG9vbDtcbiAgKDAsIF9kZXZXYXJuaW5nW1wiZGVmYXVsdFwiXSkoISh0eXBlb2Ygcm93S2V5ID09PSAnZnVuY3Rpb24nICYmIHJvd0tleS5sZW5ndGggPiAxKSwgJ1RhYmxlJywgJ2BpbmRleGAgcGFyYW1ldGVyIG9mIGByb3dLZXlgIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGl0IHdpbGwgd29yayBhcyBleHBlY3RlZC4nKTtcbiAgdmFyIHNjcmVlbnMgPSAoMCwgX3VzZUJyZWFrcG9pbnRbXCJkZWZhdWx0XCJdKSgpO1xuICB2YXIgbWVyZ2VkQ29sdW1ucyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBtYXRjaGVkID0gbmV3IFNldChPYmplY3Qua2V5cyhzY3JlZW5zKS5maWx0ZXIoZnVuY3Rpb24gKG0pIHtcbiAgICAgIHJldHVybiBzY3JlZW5zW21dO1xuICAgIH0pKTtcbiAgICByZXR1cm4gKGNvbHVtbnMgfHwgKDAsIF91c2VDb2x1bW5zLmNvbnZlcnRDaGlsZHJlblRvQ29sdW1ucykoY2hpbGRyZW4pKS5maWx0ZXIoZnVuY3Rpb24gKGMpIHtcbiAgICAgIHJldHVybiAhYy5yZXNwb25zaXZlIHx8IGMucmVzcG9uc2l2ZS5zb21lKGZ1bmN0aW9uIChyKSB7XG4gICAgICAgIHJldHVybiBtYXRjaGVkLmhhcyhyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LCBbY2hpbGRyZW4sIGNvbHVtbnMsIHNjcmVlbnNdKTtcbiAgdmFyIHRhYmxlUHJvcHMgPSAoMCwgX29taXRbXCJkZWZhdWx0XCJdKShwcm9wcywgWydjbGFzc05hbWUnLCAnc3R5bGUnLCAnY29sdW1ucyddKTtcbiAgdmFyIHNpemUgPSBSZWFjdC51c2VDb250ZXh0KF9TaXplQ29udGV4dFtcImRlZmF1bHRcIl0pO1xuXG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoX2NvbnRleHQuQ29uZmlnQ29udGV4dCksXG4gICAgICBfUmVhY3QkdXNlQ29udGV4dCRsb2MgPSBfUmVhY3QkdXNlQ29udGV4dC5sb2NhbGUsXG4gICAgICBjb250ZXh0TG9jYWxlID0gX1JlYWN0JHVzZUNvbnRleHQkbG9jID09PSB2b2lkIDAgPyBfZW5fVVNbXCJkZWZhdWx0XCJdIDogX1JlYWN0JHVzZUNvbnRleHQkbG9jLFxuICAgICAgcmVuZGVyRW1wdHkgPSBfUmVhY3QkdXNlQ29udGV4dC5yZW5kZXJFbXB0eSxcbiAgICAgIGRpcmVjdGlvbiA9IF9SZWFjdCR1c2VDb250ZXh0LmRpcmVjdGlvbjtcblxuICB2YXIgbWVyZ2VkU2l6ZSA9IGN1c3RvbWl6ZVNpemUgfHwgc2l6ZTtcbiAgdmFyIHRhYmxlTG9jYWxlID0gKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKCgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgY29udGV4dExvY2FsZS5UYWJsZSksIGxvY2FsZSk7XG4gIHZhciByYXdEYXRhID0gZGF0YVNvdXJjZSB8fCBFTVBUWV9MSVNUO1xuXG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dDIgPSBSZWFjdC51c2VDb250ZXh0KF9jb250ZXh0LkNvbmZpZ0NvbnRleHQpLFxuICAgICAgZ2V0UHJlZml4Q2xzID0gX1JlYWN0JHVzZUNvbnRleHQyLmdldFByZWZpeENscztcblxuICB2YXIgcHJlZml4Q2xzID0gZ2V0UHJlZml4Q2xzKCd0YWJsZScsIGN1c3RvbWl6ZVByZWZpeENscyk7XG4gIHZhciBkcm9wZG93blByZWZpeENscyA9IGdldFByZWZpeENscygnZHJvcGRvd24nLCBjdXN0b21pemVEcm9wZG93blByZWZpeENscyk7XG4gIHZhciBtZXJnZWRFeHBhbmRhYmxlID0gKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHtcbiAgICBjaGlsZHJlbkNvbHVtbk5hbWU6IGxlZ2FjeUNoaWxkcmVuQ29sdW1uTmFtZSxcbiAgICBleHBhbmRJY29uQ29sdW1uSW5kZXg6IGV4cGFuZEljb25Db2x1bW5JbmRleFxuICB9LCBleHBhbmRhYmxlKTtcbiAgdmFyIF9tZXJnZWRFeHBhbmRhYmxlJGNoaSA9IG1lcmdlZEV4cGFuZGFibGUuY2hpbGRyZW5Db2x1bW5OYW1lLFxuICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lID0gX21lcmdlZEV4cGFuZGFibGUkY2hpID09PSB2b2lkIDAgPyAnY2hpbGRyZW4nIDogX21lcmdlZEV4cGFuZGFibGUkY2hpO1xuICB2YXIgZXhwYW5kVHlwZSA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIGlmIChyYXdEYXRhLnNvbWUoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBfYTtcblxuICAgICAgcmV0dXJuIChfYSA9IGl0ZW0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVtjaGlsZHJlbkNvbHVtbk5hbWVdO1xuICAgIH0pKSB7XG4gICAgICByZXR1cm4gJ25lc3QnO1xuICAgIH1cblxuICAgIGlmIChleHBhbmRlZFJvd1JlbmRlciB8fCBleHBhbmRhYmxlICYmIGV4cGFuZGFibGUuZXhwYW5kZWRSb3dSZW5kZXIpIHtcbiAgICAgIHJldHVybiAncm93JztcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSwgW3Jhd0RhdGFdKTtcbiAgdmFyIGludGVybmFsUmVmcyA9IHtcbiAgICBib2R5OiBSZWFjdC51c2VSZWYoKVxuICB9OyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IFJvd0tleSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIGdldFJvd0tleSA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2Ygcm93S2V5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gcm93S2V5O1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiAocmVjb3JkKSB7XG4gICAgICB2YXIgX2E7XG5cbiAgICAgIHJldHVybiAoX2EgPSByZWNvcmQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVtyb3dLZXldO1xuICAgIH07XG4gIH0sIFtyb3dLZXldKTtcblxuICB2YXIgX3VzZUxhenlLVk1hcCA9ICgwLCBfdXNlTGF6eUtWTWFwM1tcImRlZmF1bHRcIl0pKHJhd0RhdGEsIGNoaWxkcmVuQ29sdW1uTmFtZSwgZ2V0Um93S2V5KSxcbiAgICAgIF91c2VMYXp5S1ZNYXAyID0gKDAsIF9zbGljZWRUb0FycmF5MltcImRlZmF1bHRcIl0pKF91c2VMYXp5S1ZNYXAsIDEpLFxuICAgICAgZ2V0UmVjb3JkQnlLZXkgPSBfdXNlTGF6eUtWTWFwMlswXTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PSBFdmVudHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gIHZhciBjaGFuZ2VFdmVudEluZm8gPSB7fTtcblxuICB2YXIgdHJpZ2dlck9uQ2hhbmdlID0gZnVuY3Rpb24gdHJpZ2dlck9uQ2hhbmdlKGluZm8sIGFjdGlvbikge1xuICAgIHZhciByZXNldCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogZmFsc2U7XG4gICAgdmFyIGNoYW5nZUluZm8gPSAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCBjaGFuZ2VFdmVudEluZm8pLCBpbmZvKTtcblxuICAgIGlmIChyZXNldCkge1xuICAgICAgY2hhbmdlRXZlbnRJbmZvLnJlc2V0UGFnaW5hdGlvbigpOyAvLyBSZXNldCBldmVudCBwYXJhbVxuXG4gICAgICBpZiAoY2hhbmdlSW5mby5wYWdpbmF0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgY2hhbmdlSW5mby5wYWdpbmF0aW9uLmN1cnJlbnQgPSAxO1xuICAgICAgfSAvLyBUcmlnZ2VyIHBhZ2luYXRpb24gZXZlbnRzXG5cblxuICAgICAgaWYgKHBhZ2luYXRpb24gJiYgcGFnaW5hdGlvbi5vbkNoYW5nZSkge1xuICAgICAgICBwYWdpbmF0aW9uLm9uQ2hhbmdlKDEsIGNoYW5nZUluZm8ucGFnaW5hdGlvbi5wYWdlU2l6ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNjcm9sbCAmJiBzY3JvbGwuc2Nyb2xsVG9GaXJzdFJvd09uQ2hhbmdlICE9PSBmYWxzZSAmJiBpbnRlcm5hbFJlZnMuYm9keS5jdXJyZW50KSB7XG4gICAgICAoMCwgX3Njcm9sbFRvW1wiZGVmYXVsdFwiXSkoMCwge1xuICAgICAgICBnZXRDb250YWluZXI6IGZ1bmN0aW9uIGdldENvbnRhaW5lcigpIHtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuYWxSZWZzLmJvZHkuY3VycmVudDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKGNoYW5nZUluZm8ucGFnaW5hdGlvbiwgY2hhbmdlSW5mby5maWx0ZXJzLCBjaGFuZ2VJbmZvLnNvcnRlciwge1xuICAgICAgY3VycmVudERhdGFTb3VyY2U6ICgwLCBfdXNlRmlsdGVyMy5nZXRGaWx0ZXJEYXRhKSgoMCwgX3VzZVNvcnRlcjMuZ2V0U29ydERhdGEpKHJhd0RhdGEsIGNoYW5nZUluZm8uc29ydGVyU3RhdGVzLCBjaGlsZHJlbkNvbHVtbk5hbWUpLCBjaGFuZ2VJbmZvLmZpbHRlclN0YXRlcyksXG4gICAgICBhY3Rpb246IGFjdGlvblxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICogQ29udHJvbGxlZCBzdGF0ZSBpbiBgY29sdW1uc2AgaXMgbm90IGEgZ29vZCBpZGVhIHRoYXQgbWFrZXMgdG9vIG1hbnkgY29kZSAoMTAwMCsgbGluZT8pIHRvIHJlYWRcbiAgICogc3RhdGUgb3V0IGFuZCB0aGVuIHB1dCBpdCBiYWNrIHRvIHRpdGxlIHJlbmRlci4gTW92ZSB0aGVzZSBjb2RlIGludG8gYGhvb2tzYCBidXQgc3RpbGwgdG9vXG4gICAqIGNvbXBsZXguIFdlIHNob3VsZCBwcm92aWRlcyBUYWJsZSBwcm9wcyBsaWtlIGBzb3J0ZXJgICYgYGZpbHRlcmAgdG8gaGFuZGxlIGNvbnRyb2wgaW4gbmV4dCBiaWcgdmVyc2lvbi5cbiAgICovXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gU29ydGVyID09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuICB2YXIgb25Tb3J0ZXJDaGFuZ2UgPSBmdW5jdGlvbiBvblNvcnRlckNoYW5nZShzb3J0ZXIsIHNvcnRlclN0YXRlcykge1xuICAgIHRyaWdnZXJPbkNoYW5nZSh7XG4gICAgICBzb3J0ZXI6IHNvcnRlcixcbiAgICAgIHNvcnRlclN0YXRlczogc29ydGVyU3RhdGVzXG4gICAgfSwgJ3NvcnQnLCBmYWxzZSk7XG4gIH07XG5cbiAgdmFyIF91c2VTb3J0ZXIgPSAoMCwgX3VzZVNvcnRlcjNbXCJkZWZhdWx0XCJdKSh7XG4gICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgbWVyZ2VkQ29sdW1uczogbWVyZ2VkQ29sdW1ucyxcbiAgICBvblNvcnRlckNoYW5nZTogb25Tb3J0ZXJDaGFuZ2UsXG4gICAgc29ydERpcmVjdGlvbnM6IHNvcnREaXJlY3Rpb25zIHx8IFsnYXNjZW5kJywgJ2Rlc2NlbmQnXSxcbiAgICB0YWJsZUxvY2FsZTogdGFibGVMb2NhbGUsXG4gICAgc2hvd1NvcnRlclRvb2x0aXA6IHNob3dTb3J0ZXJUb29sdGlwXG4gIH0pLFxuICAgICAgX3VzZVNvcnRlcjIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyW1wiZGVmYXVsdFwiXSkoX3VzZVNvcnRlciwgNCksXG4gICAgICB0cmFuc2Zvcm1Tb3J0ZXJDb2x1bW5zID0gX3VzZVNvcnRlcjJbMF0sXG4gICAgICBzb3J0U3RhdGVzID0gX3VzZVNvcnRlcjJbMV0sXG4gICAgICBzb3J0ZXJUaXRsZVByb3BzID0gX3VzZVNvcnRlcjJbMl0sXG4gICAgICBnZXRTb3J0ZXJzID0gX3VzZVNvcnRlcjJbM107XG5cbiAgdmFyIHNvcnRlZERhdGEgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gKDAsIF91c2VTb3J0ZXIzLmdldFNvcnREYXRhKShyYXdEYXRhLCBzb3J0U3RhdGVzLCBjaGlsZHJlbkNvbHVtbk5hbWUpO1xuICB9LCBbcmF3RGF0YSwgc29ydFN0YXRlc10pO1xuICBjaGFuZ2VFdmVudEluZm8uc29ydGVyID0gZ2V0U29ydGVycygpO1xuICBjaGFuZ2VFdmVudEluZm8uc29ydGVyU3RhdGVzID0gc29ydFN0YXRlczsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PSBGaWx0ZXIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBvbkZpbHRlckNoYW5nZSA9IGZ1bmN0aW9uIG9uRmlsdGVyQ2hhbmdlKGZpbHRlcnMsIGZpbHRlclN0YXRlcykge1xuICAgIHRyaWdnZXJPbkNoYW5nZSh7XG4gICAgICBmaWx0ZXJzOiBmaWx0ZXJzLFxuICAgICAgZmlsdGVyU3RhdGVzOiBmaWx0ZXJTdGF0ZXNcbiAgICB9LCAnZmlsdGVyJywgdHJ1ZSk7XG4gIH07XG5cbiAgdmFyIF91c2VGaWx0ZXIgPSAoMCwgX3VzZUZpbHRlcjNbXCJkZWZhdWx0XCJdKSh7XG4gICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgbG9jYWxlOiB0YWJsZUxvY2FsZSxcbiAgICBkcm9wZG93blByZWZpeENsczogZHJvcGRvd25QcmVmaXhDbHMsXG4gICAgbWVyZ2VkQ29sdW1uczogbWVyZ2VkQ29sdW1ucyxcbiAgICBvbkZpbHRlckNoYW5nZTogb25GaWx0ZXJDaGFuZ2UsXG4gICAgZ2V0UG9wdXBDb250YWluZXI6IGdldFBvcHVwQ29udGFpbmVyXG4gIH0pLFxuICAgICAgX3VzZUZpbHRlcjIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyW1wiZGVmYXVsdFwiXSkoX3VzZUZpbHRlciwgMyksXG4gICAgICB0cmFuc2Zvcm1GaWx0ZXJDb2x1bW5zID0gX3VzZUZpbHRlcjJbMF0sXG4gICAgICBmaWx0ZXJTdGF0ZXMgPSBfdXNlRmlsdGVyMlsxXSxcbiAgICAgIGdldEZpbHRlcnMgPSBfdXNlRmlsdGVyMlsyXTtcblxuICB2YXIgbWVyZ2VkRGF0YSA9ICgwLCBfdXNlRmlsdGVyMy5nZXRGaWx0ZXJEYXRhKShzb3J0ZWREYXRhLCBmaWx0ZXJTdGF0ZXMpO1xuICBjaGFuZ2VFdmVudEluZm8uZmlsdGVycyA9IGdldEZpbHRlcnMoKTtcbiAgY2hhbmdlRXZlbnRJbmZvLmZpbHRlclN0YXRlcyA9IGZpbHRlclN0YXRlczsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PSBDb2x1bW4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBjb2x1bW5UaXRsZVByb3BzID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgc29ydGVyVGl0bGVQcm9wcyk7XG4gIH0sIFtzb3J0ZXJUaXRsZVByb3BzXSk7XG5cbiAgdmFyIF91c2VUaXRsZUNvbHVtbnMgPSAoMCwgX3VzZVRpdGxlQ29sdW1uczNbXCJkZWZhdWx0XCJdKShjb2x1bW5UaXRsZVByb3BzKSxcbiAgICAgIF91c2VUaXRsZUNvbHVtbnMyID0gKDAsIF9zbGljZWRUb0FycmF5MltcImRlZmF1bHRcIl0pKF91c2VUaXRsZUNvbHVtbnMsIDEpLFxuICAgICAgdHJhbnNmb3JtVGl0bGVDb2x1bW5zID0gX3VzZVRpdGxlQ29sdW1uczJbMF07IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09IFBhZ2luYXRpb24gPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gIHZhciBvblBhZ2luYXRpb25DaGFuZ2UgPSBmdW5jdGlvbiBvblBhZ2luYXRpb25DaGFuZ2UoY3VycmVudCwgcGFnZVNpemUpIHtcbiAgICB0cmlnZ2VyT25DaGFuZ2Uoe1xuICAgICAgcGFnaW5hdGlvbjogKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKCgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgY2hhbmdlRXZlbnRJbmZvLnBhZ2luYXRpb24pLCB7XG4gICAgICAgIGN1cnJlbnQ6IGN1cnJlbnQsXG4gICAgICAgIHBhZ2VTaXplOiBwYWdlU2l6ZVxuICAgICAgfSlcbiAgICB9LCAncGFnaW5hdGUnKTtcbiAgfTtcblxuICB2YXIgX3VzZVBhZ2luYXRpb24gPSAoMCwgX3VzZVBhZ2luYXRpb24zW1wiZGVmYXVsdFwiXSkobWVyZ2VkRGF0YS5sZW5ndGgsIHBhZ2luYXRpb24sIG9uUGFnaW5hdGlvbkNoYW5nZSksXG4gICAgICBfdXNlUGFnaW5hdGlvbjIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyW1wiZGVmYXVsdFwiXSkoX3VzZVBhZ2luYXRpb24sIDIpLFxuICAgICAgbWVyZ2VkUGFnaW5hdGlvbiA9IF91c2VQYWdpbmF0aW9uMlswXSxcbiAgICAgIHJlc2V0UGFnaW5hdGlvbiA9IF91c2VQYWdpbmF0aW9uMlsxXTtcblxuICBjaGFuZ2VFdmVudEluZm8ucGFnaW5hdGlvbiA9IHBhZ2luYXRpb24gPT09IGZhbHNlID8ge30gOiAoMCwgX3VzZVBhZ2luYXRpb24zLmdldFBhZ2luYXRpb25QYXJhbSkocGFnaW5hdGlvbiwgbWVyZ2VkUGFnaW5hdGlvbik7XG4gIGNoYW5nZUV2ZW50SW5mby5yZXNldFBhZ2luYXRpb24gPSByZXNldFBhZ2luYXRpb247IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09IERhdGEgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICB2YXIgcGFnZURhdGEgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAocGFnaW5hdGlvbiA9PT0gZmFsc2UgfHwgIW1lcmdlZFBhZ2luYXRpb24ucGFnZVNpemUpIHtcbiAgICAgIHJldHVybiBtZXJnZWREYXRhO1xuICAgIH1cblxuICAgIHZhciBfbWVyZ2VkUGFnaW5hdGlvbiRjdXIgPSBtZXJnZWRQYWdpbmF0aW9uLmN1cnJlbnQsXG4gICAgICAgIGN1cnJlbnQgPSBfbWVyZ2VkUGFnaW5hdGlvbiRjdXIgPT09IHZvaWQgMCA/IDEgOiBfbWVyZ2VkUGFnaW5hdGlvbiRjdXIsXG4gICAgICAgIHRvdGFsID0gbWVyZ2VkUGFnaW5hdGlvbi50b3RhbCxcbiAgICAgICAgX21lcmdlZFBhZ2luYXRpb24kcGFnID0gbWVyZ2VkUGFnaW5hdGlvbi5wYWdlU2l6ZSxcbiAgICAgICAgcGFnZVNpemUgPSBfbWVyZ2VkUGFnaW5hdGlvbiRwYWcgPT09IHZvaWQgMCA/IF91c2VQYWdpbmF0aW9uMy5ERUZBVUxUX1BBR0VfU0laRSA6IF9tZXJnZWRQYWdpbmF0aW9uJHBhZztcbiAgICAoMCwgX2Rldldhcm5pbmdbXCJkZWZhdWx0XCJdKShjdXJyZW50ID4gMCwgJ1RhYmxlJywgJ2BjdXJyZW50YCBzaG91bGQgYmUgcG9zaXRpdmUgbnVtYmVyLicpOyAvLyBEeW5hbWljIHRhYmxlIGRhdGFcblxuICAgIGlmIChtZXJnZWREYXRhLmxlbmd0aCA8IHRvdGFsKSB7XG4gICAgICBpZiAobWVyZ2VkRGF0YS5sZW5ndGggPiBwYWdlU2l6ZSkge1xuICAgICAgICAoMCwgX2Rldldhcm5pbmdbXCJkZWZhdWx0XCJdKShmYWxzZSwgJ1RhYmxlJywgJ2BkYXRhU291cmNlYCBsZW5ndGggaXMgbGVzcyB0aGFuIGBwYWdpbmF0aW9uLnRvdGFsYCBidXQgbGFyZ2UgdGhhbiBgcGFnaW5hdGlvbi5wYWdlU2l6ZWAuIFBsZWFzZSBtYWtlIHN1cmUgeW91ciBjb25maWcgY29ycmVjdCBkYXRhIHdpdGggYXN5bmMgbW9kZS4nKTtcbiAgICAgICAgcmV0dXJuIG1lcmdlZERhdGEuc2xpY2UoKGN1cnJlbnQgLSAxKSAqIHBhZ2VTaXplLCBjdXJyZW50ICogcGFnZVNpemUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWVyZ2VkRGF0YTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2VkRGF0YS5zbGljZSgoY3VycmVudCAtIDEpICogcGFnZVNpemUsIGN1cnJlbnQgKiBwYWdlU2l6ZSk7XG4gIH0sIFshIXBhZ2luYXRpb24sIG1lcmdlZERhdGEsIG1lcmdlZFBhZ2luYXRpb24gJiYgbWVyZ2VkUGFnaW5hdGlvbi5jdXJyZW50LCBtZXJnZWRQYWdpbmF0aW9uICYmIG1lcmdlZFBhZ2luYXRpb24ucGFnZVNpemUsIG1lcmdlZFBhZ2luYXRpb24gJiYgbWVyZ2VkUGFnaW5hdGlvbi50b3RhbF0pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PSBTZWxlY3Rpb25zID09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIF91c2VTZWxlY3Rpb24gPSAoMCwgX3VzZVNlbGVjdGlvbjNbXCJkZWZhdWx0XCJdKShyb3dTZWxlY3Rpb24sIHtcbiAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICBkYXRhOiBtZXJnZWREYXRhLFxuICAgIHBhZ2VEYXRhOiBwYWdlRGF0YSxcbiAgICBnZXRSb3dLZXk6IGdldFJvd0tleSxcbiAgICBnZXRSZWNvcmRCeUtleTogZ2V0UmVjb3JkQnlLZXksXG4gICAgZXhwYW5kVHlwZTogZXhwYW5kVHlwZSxcbiAgICBjaGlsZHJlbkNvbHVtbk5hbWU6IGNoaWxkcmVuQ29sdW1uTmFtZSxcbiAgICBsb2NhbGU6IHRhYmxlTG9jYWxlLFxuICAgIGV4cGFuZEljb25Db2x1bW5JbmRleDogbWVyZ2VkRXhwYW5kYWJsZS5leHBhbmRJY29uQ29sdW1uSW5kZXgsXG4gICAgZ2V0UG9wdXBDb250YWluZXI6IGdldFBvcHVwQ29udGFpbmVyXG4gIH0pLFxuICAgICAgX3VzZVNlbGVjdGlvbjIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyW1wiZGVmYXVsdFwiXSkoX3VzZVNlbGVjdGlvbiwgMiksXG4gICAgICB0cmFuc2Zvcm1TZWxlY3Rpb25Db2x1bW5zID0gX3VzZVNlbGVjdGlvbjJbMF0sXG4gICAgICBzZWxlY3RlZEtleVNldCA9IF91c2VTZWxlY3Rpb24yWzFdO1xuXG4gIHZhciBpbnRlcm5hbFJvd0NsYXNzTmFtZSA9IGZ1bmN0aW9uIGludGVybmFsUm93Q2xhc3NOYW1lKHJlY29yZCwgaW5kZXgsIGluZGVudCkge1xuICAgIHZhciBtZXJnZWRSb3dDbGFzc05hbWU7XG5cbiAgICBpZiAodHlwZW9mIHJvd0NsYXNzTmFtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbWVyZ2VkUm93Q2xhc3NOYW1lID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkocm93Q2xhc3NOYW1lKHJlY29yZCwgaW5kZXgsIGluZGVudCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZWRSb3dDbGFzc05hbWUgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShyb3dDbGFzc05hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKSgoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKHt9LCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXJvdy1zZWxlY3RlZFwiKSwgc2VsZWN0ZWRLZXlTZXQuaGFzKGdldFJvd0tleShyZWNvcmQsIGluZGV4KSkpLCBtZXJnZWRSb3dDbGFzc05hbWUpO1xuICB9OyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PSBFeHBhbmRhYmxlID09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBhc3Mgb3JpZ2luIHJlbmRlciBzdGF0dXMgaW50byBgcmMtdGFibGVgLCB0aGlzIGNhbiBiZSByZW1vdmVkIHdoZW4gcmVmYWN0b3Igd2l0aCBgcmMtdGFibGVgXG5cblxuICBtZXJnZWRFeHBhbmRhYmxlLl9fUEFSRU5UX1JFTkRFUl9JQ09OX18gPSBtZXJnZWRFeHBhbmRhYmxlLmV4cGFuZEljb247IC8vIEN1c3RvbWl6ZSBleHBhbmRhYmxlIGljb25cblxuICBtZXJnZWRFeHBhbmRhYmxlLmV4cGFuZEljb24gPSBtZXJnZWRFeHBhbmRhYmxlLmV4cGFuZEljb24gfHwgZXhwYW5kSWNvbiB8fCAoMCwgX0V4cGFuZEljb25bXCJkZWZhdWx0XCJdKSh0YWJsZUxvY2FsZSk7IC8vIEFkanVzdCBleHBhbmQgaWNvbiBpbmRleCwgbm8gb3ZlcndyaXRlIGV4cGFuZEljb25Db2x1bW5JbmRleCBpZiBzZXQuXG5cbiAgaWYgKGV4cGFuZFR5cGUgPT09ICduZXN0JyAmJiBtZXJnZWRFeHBhbmRhYmxlLmV4cGFuZEljb25Db2x1bW5JbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbWVyZ2VkRXhwYW5kYWJsZS5leHBhbmRJY29uQ29sdW1uSW5kZXggPSByb3dTZWxlY3Rpb24gPyAxIDogMDtcbiAgfSBlbHNlIGlmIChtZXJnZWRFeHBhbmRhYmxlLmV4cGFuZEljb25Db2x1bW5JbmRleCA+IDAgJiYgcm93U2VsZWN0aW9uKSB7XG4gICAgbWVyZ2VkRXhwYW5kYWJsZS5leHBhbmRJY29uQ29sdW1uSW5kZXggLT0gMTtcbiAgfSAvLyBJbmRlbnQgc2l6ZVxuXG5cbiAgaWYgKHR5cGVvZiBtZXJnZWRFeHBhbmRhYmxlLmluZGVudFNpemUgIT09ICdudW1iZXInKSB7XG4gICAgbWVyZ2VkRXhwYW5kYWJsZS5pbmRlbnRTaXplID0gdHlwZW9mIGluZGVudFNpemUgPT09ICdudW1iZXInID8gaW5kZW50U2l6ZSA6IDE1O1xuICB9IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gUmVuZGVyID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gIHZhciB0cmFuc2Zvcm1Db2x1bW5zID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGlubmVyQ29sdW1ucykge1xuICAgIHJldHVybiB0cmFuc2Zvcm1UaXRsZUNvbHVtbnModHJhbnNmb3JtU2VsZWN0aW9uQ29sdW1ucyh0cmFuc2Zvcm1GaWx0ZXJDb2x1bW5zKHRyYW5zZm9ybVNvcnRlckNvbHVtbnMoaW5uZXJDb2x1bW5zKSkpKTtcbiAgfSwgW3RyYW5zZm9ybVNvcnRlckNvbHVtbnMsIHRyYW5zZm9ybUZpbHRlckNvbHVtbnMsIHRyYW5zZm9ybVNlbGVjdGlvbkNvbHVtbnNdKTtcbiAgdmFyIHRvcFBhZ2luYXRpb25Ob2RlO1xuICB2YXIgYm90dG9tUGFnaW5hdGlvbk5vZGU7XG5cbiAgaWYgKHBhZ2luYXRpb24gIT09IGZhbHNlICYmIChtZXJnZWRQYWdpbmF0aW9uID09PSBudWxsIHx8IG1lcmdlZFBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1lcmdlZFBhZ2luYXRpb24udG90YWwpKSB7XG4gICAgdmFyIHBhZ2luYXRpb25TaXplO1xuXG4gICAgaWYgKG1lcmdlZFBhZ2luYXRpb24uc2l6ZSkge1xuICAgICAgcGFnaW5hdGlvblNpemUgPSBtZXJnZWRQYWdpbmF0aW9uLnNpemU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhZ2luYXRpb25TaXplID0gbWVyZ2VkU2l6ZSA9PT0gJ3NtYWxsJyB8fCBtZXJnZWRTaXplID09PSAnbWlkZGxlJyA/ICdzbWFsbCcgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdmFyIHJlbmRlclBhZ2luYXRpb24gPSBmdW5jdGlvbiByZW5kZXJQYWdpbmF0aW9uKHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX3BhZ2luYXRpb25bXCJkZWZhdWx0XCJdLCAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcGFnaW5hdGlvbiBcIikuY29uY2F0KHByZWZpeENscywgXCItcGFnaW5hdGlvbi1cIikuY29uY2F0KHBvc2l0aW9uKVxuICAgICAgfSwgbWVyZ2VkUGFnaW5hdGlvbiwge1xuICAgICAgICBzaXplOiBwYWdpbmF0aW9uU2l6ZVxuICAgICAgfSkpO1xuICAgIH07XG5cbiAgICB2YXIgZGVmYXVsdFBvc2l0aW9uID0gZGlyZWN0aW9uID09PSAncnRsJyA/ICdsZWZ0JyA6ICdyaWdodCc7XG4gICAgdmFyIHBvc2l0aW9uID0gbWVyZ2VkUGFnaW5hdGlvbi5wb3NpdGlvbjtcblxuICAgIGlmIChwb3NpdGlvbiAhPT0gbnVsbCAmJiBBcnJheS5pc0FycmF5KHBvc2l0aW9uKSkge1xuICAgICAgdmFyIHRvcFBvcyA9IHBvc2l0aW9uLmZpbmQoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHAuaW5kZXhPZigndG9wJykgIT09IC0xO1xuICAgICAgfSk7XG4gICAgICB2YXIgYm90dG9tUG9zID0gcG9zaXRpb24uZmluZChmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gcC5pbmRleE9mKCdib3R0b20nKSAhPT0gLTE7XG4gICAgICB9KTtcbiAgICAgIHZhciBpc0Rpc2FibGUgPSBwb3NpdGlvbi5ldmVyeShmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gXCJcIi5jb25jYXQocCkgPT09ICdub25lJztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXRvcFBvcyAmJiAhYm90dG9tUG9zICYmICFpc0Rpc2FibGUpIHtcbiAgICAgICAgYm90dG9tUGFnaW5hdGlvbk5vZGUgPSByZW5kZXJQYWdpbmF0aW9uKGRlZmF1bHRQb3NpdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGlmICh0b3BQb3MpIHtcbiAgICAgICAgdG9wUGFnaW5hdGlvbk5vZGUgPSByZW5kZXJQYWdpbmF0aW9uKHRvcFBvcy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJ3RvcCcsICcnKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChib3R0b21Qb3MpIHtcbiAgICAgICAgYm90dG9tUGFnaW5hdGlvbk5vZGUgPSByZW5kZXJQYWdpbmF0aW9uKGJvdHRvbVBvcy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJ2JvdHRvbScsICcnKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvdHRvbVBhZ2luYXRpb25Ob2RlID0gcmVuZGVyUGFnaW5hdGlvbihkZWZhdWx0UG9zaXRpb24pO1xuICAgIH1cbiAgfSAvLyA+Pj4+Pj4+Pj4gU3Bpbm5pbmdcblxuXG4gIHZhciBzcGluUHJvcHM7XG5cbiAgaWYgKHR5cGVvZiBsb2FkaW5nID09PSAnYm9vbGVhbicpIHtcbiAgICBzcGluUHJvcHMgPSB7XG4gICAgICBzcGlubmluZzogbG9hZGluZ1xuICAgIH07XG4gIH0gZWxzZSBpZiAoKDAsIF90eXBlb2YyW1wiZGVmYXVsdFwiXSkobG9hZGluZykgPT09ICdvYmplY3QnKSB7XG4gICAgc3BpblByb3BzID0gKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHtcbiAgICAgIHNwaW5uaW5nOiB0cnVlXG4gICAgfSwgbG9hZGluZyk7XG4gIH1cblxuICB2YXIgd3JhcHBlckNsYXNzTmFtZXMgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXdyYXBwZXJcIiksICgwLCBfZGVmaW5lUHJvcGVydHkyW1wiZGVmYXVsdFwiXSkoe30sIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItd3JhcHBlci1ydGxcIiksIGRpcmVjdGlvbiA9PT0gJ3J0bCcpLCBjbGFzc05hbWUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIGNsYXNzTmFtZTogd3JhcHBlckNsYXNzTmFtZXMsXG4gICAgc3R5bGU6IHN0eWxlXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9zcGluW1wiZGVmYXVsdFwiXSwgKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHtcbiAgICBzcGlubmluZzogZmFsc2VcbiAgfSwgc3BpblByb3BzKSwgdG9wUGFnaW5hdGlvbk5vZGUsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yY1RhYmxlW1wiZGVmYXVsdFwiXSwgKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCB0YWJsZVByb3BzLCB7XG4gICAgY29sdW1uczogbWVyZ2VkQ29sdW1ucyxcbiAgICBkaXJlY3Rpb246IGRpcmVjdGlvbixcbiAgICBleHBhbmRhYmxlOiBtZXJnZWRFeHBhbmRhYmxlLFxuICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgIGNsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoKF9jbGFzc05hbWVzMyA9IHt9LCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzMywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1taWRkbGVcIiksIG1lcmdlZFNpemUgPT09ICdtaWRkbGUnKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lczMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc21hbGxcIiksIG1lcmdlZFNpemUgPT09ICdzbWFsbCcpLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzMywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ib3JkZXJlZFwiKSwgYm9yZGVyZWQpLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzMywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1lbXB0eVwiKSwgcmF3RGF0YS5sZW5ndGggPT09IDApLCBfY2xhc3NOYW1lczMpKSxcbiAgICBkYXRhOiBwYWdlRGF0YSxcbiAgICByb3dLZXk6IGdldFJvd0tleSxcbiAgICByb3dDbGFzc05hbWU6IGludGVybmFsUm93Q2xhc3NOYW1lLFxuICAgIGVtcHR5VGV4dDogbG9jYWxlICYmIGxvY2FsZS5lbXB0eVRleHQgfHwgcmVuZGVyRW1wdHkoJ1RhYmxlJykgLy8gSW50ZXJuYWxcbiAgICAsXG4gICAgaW50ZXJuYWxIb29rczogX1RhYmxlLklOVEVSTkFMX0hPT0tTLFxuICAgIGludGVybmFsUmVmczogaW50ZXJuYWxSZWZzLFxuICAgIHRyYW5zZm9ybUNvbHVtbnM6IHRyYW5zZm9ybUNvbHVtbnNcbiAgfSkpLCBib3R0b21QYWdpbmF0aW9uTm9kZSkpO1xufVxuXG5UYWJsZS5kZWZhdWx0UHJvcHMgPSB7XG4gIHJvd0tleTogJ2tleSdcbn07XG5UYWJsZS5TRUxFQ1RJT05fQUxMID0gX3VzZVNlbGVjdGlvbjMuU0VMRUNUSU9OX0FMTDtcblRhYmxlLlNFTEVDVElPTl9JTlZFUlQgPSBfdXNlU2VsZWN0aW9uMy5TRUxFQ1RJT05fSU5WRVJUO1xuVGFibGUuU0VMRUNUSU9OX05PTkUgPSBfdXNlU2VsZWN0aW9uMy5TRUxFQ1RJT05fTk9ORTtcblRhYmxlLkNvbHVtbiA9IF9Db2x1bW5bXCJkZWZhdWx0XCJdO1xuVGFibGUuQ29sdW1uR3JvdXAgPSBfQ29sdW1uR3JvdXBbXCJkZWZhdWx0XCJdO1xuVGFibGUuU3VtbWFyeSA9IF9yY1RhYmxlLlN1bW1hcnk7XG52YXIgX2RlZmF1bHQgPSBUYWJsZTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkge1xuICB2YXIgX2kgPSBhcnIgJiYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgYXJyW1N5bWJvbC5pdGVyYXRvcl0gfHwgYXJyW1wiQEBpdGVyYXRvclwiXSk7XG5cbiAgaWYgKF9pID09IG51bGwpIHJldHVybjtcbiAgdmFyIF9hcnIgPSBbXTtcbiAgdmFyIF9uID0gdHJ1ZTtcbiAgdmFyIF9kID0gZmFsc2U7XG5cbiAgdmFyIF9zLCBfZTtcblxuICB0cnkge1xuICAgIGZvciAoX2kgPSBfaS5jYWxsKGFycik7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7XG5cbiAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9kID0gdHJ1ZTtcbiAgICBfZSA9IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoX2QpIHRocm93IF9lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfYXJyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXlMaW1pdDtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiLCIvKiogQGxpY2Vuc2UgUmVhY3QgdjE2LjEzLjFcbiAqIHJlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO3ZhciBiPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsYz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLGQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LGU9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcsZj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCxnPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LGg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDksaz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLGw9Yj9TeW1ib2wuZm9yKFwicmVhY3QuYXN5bmNfbW9kZVwiKTo2MDExMSxtPWI/U3ltYm9sLmZvcihcInJlYWN0LmNvbmN1cnJlbnRfbW9kZVwiKTo2MDExMSxuPWI/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLHA9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIik6NjAxMTMscT1iP1xuU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIik6NjAxMjAscj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LHQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNix2PWI/U3ltYm9sLmZvcihcInJlYWN0LmJsb2NrXCIpOjYwMTIxLHc9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnVuZGFtZW50YWxcIik6NjAxMTcseD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5yZXNwb25kZXJcIik6NjAxMTgseT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTo2MDExOTtcbmZ1bmN0aW9uIHooYSl7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSl7dmFyIHU9YS4kJHR5cGVvZjtzd2l0Y2godSl7Y2FzZSBjOnN3aXRjaChhPWEudHlwZSxhKXtjYXNlIGw6Y2FzZSBtOmNhc2UgZTpjYXNlIGc6Y2FzZSBmOmNhc2UgcDpyZXR1cm4gYTtkZWZhdWx0OnN3aXRjaChhPWEmJmEuJCR0eXBlb2YsYSl7Y2FzZSBrOmNhc2UgbjpjYXNlIHQ6Y2FzZSByOmNhc2UgaDpyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB1fX1jYXNlIGQ6cmV0dXJuIHV9fX1mdW5jdGlvbiBBKGEpe3JldHVybiB6KGEpPT09bX1leHBvcnRzLkFzeW5jTW9kZT1sO2V4cG9ydHMuQ29uY3VycmVudE1vZGU9bTtleHBvcnRzLkNvbnRleHRDb25zdW1lcj1rO2V4cG9ydHMuQ29udGV4dFByb3ZpZGVyPWg7ZXhwb3J0cy5FbGVtZW50PWM7ZXhwb3J0cy5Gb3J3YXJkUmVmPW47ZXhwb3J0cy5GcmFnbWVudD1lO2V4cG9ydHMuTGF6eT10O2V4cG9ydHMuTWVtbz1yO2V4cG9ydHMuUG9ydGFsPWQ7XG5leHBvcnRzLlByb2ZpbGVyPWc7ZXhwb3J0cy5TdHJpY3RNb2RlPWY7ZXhwb3J0cy5TdXNwZW5zZT1wO2V4cG9ydHMuaXNBc3luY01vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIEEoYSl8fHooYSk9PT1sfTtleHBvcnRzLmlzQ29uY3VycmVudE1vZGU9QTtleHBvcnRzLmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09a307ZXhwb3J0cy5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWh9O2V4cG9ydHMuaXNFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1jfTtleHBvcnRzLmlzRm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PW59O2V4cG9ydHMuaXNGcmFnbWVudD1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWV9O2V4cG9ydHMuaXNMYXp5PWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09dH07XG5leHBvcnRzLmlzTWVtbz1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXJ9O2V4cG9ydHMuaXNQb3J0YWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1kfTtleHBvcnRzLmlzUHJvZmlsZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1nfTtleHBvcnRzLmlzU3RyaWN0TW9kZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWZ9O2V4cG9ydHMuaXNTdXNwZW5zZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXB9O1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgYXx8YT09PWV8fGE9PT1tfHxhPT09Z3x8YT09PWZ8fGE9PT1wfHxhPT09cXx8XCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmKGEuJCR0eXBlb2Y9PT10fHxhLiQkdHlwZW9mPT09cnx8YS4kJHR5cGVvZj09PWh8fGEuJCR0eXBlb2Y9PT1rfHxhLiQkdHlwZW9mPT09bnx8YS4kJHR5cGVvZj09PXd8fGEuJCR0eXBlb2Y9PT14fHxhLiQkdHlwZW9mPT09eXx8YS4kJHR5cGVvZj09PXYpfTtleHBvcnRzLnR5cGVPZj16O1xuIiwiLyoqIEBsaWNlbnNlIFJlYWN0IHYxNi4xMy4xXG4gKiByZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0Jzt2YXIgYj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLGM9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKTo2MDEwMyxkPWI/U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKTo2MDEwNixlPWI/U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpOjYwMTA3LGY9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIik6NjAxMDgsZz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKTo2MDExNCxoPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpOjYwMTA5LGs9Yj9TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKTo2MDExMCxsPWI/U3ltYm9sLmZvcihcInJlYWN0LmFzeW5jX21vZGVcIik6NjAxMTEsbT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb25jdXJyZW50X21vZGVcIik6NjAxMTEsbj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKTo2MDExMixwPWI/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpOjYwMTEzLHE9Yj9cblN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpOjYwMTIwLHI9Yj9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSx0PWI/U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik6NjAxMTYsdj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5ibG9ja1wiKTo2MDEyMSx3PWI/U3ltYm9sLmZvcihcInJlYWN0LmZ1bmRhbWVudGFsXCIpOjYwMTE3LHg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucmVzcG9uZGVyXCIpOjYwMTE4LHk9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc2NvcGVcIik6NjAxMTk7XG5mdW5jdGlvbiB6KGEpe2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpe3ZhciB1PWEuJCR0eXBlb2Y7c3dpdGNoKHUpe2Nhc2UgYzpzd2l0Y2goYT1hLnR5cGUsYSl7Y2FzZSBsOmNhc2UgbTpjYXNlIGU6Y2FzZSBnOmNhc2UgZjpjYXNlIHA6cmV0dXJuIGE7ZGVmYXVsdDpzd2l0Y2goYT1hJiZhLiQkdHlwZW9mLGEpe2Nhc2UgazpjYXNlIG46Y2FzZSB0OmNhc2UgcjpjYXNlIGg6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdX19Y2FzZSBkOnJldHVybiB1fX19ZnVuY3Rpb24gQShhKXtyZXR1cm4geihhKT09PW19ZXhwb3J0cy5Bc3luY01vZGU9bDtleHBvcnRzLkNvbmN1cnJlbnRNb2RlPW07ZXhwb3J0cy5Db250ZXh0Q29uc3VtZXI9aztleHBvcnRzLkNvbnRleHRQcm92aWRlcj1oO2V4cG9ydHMuRWxlbWVudD1jO2V4cG9ydHMuRm9yd2FyZFJlZj1uO2V4cG9ydHMuRnJhZ21lbnQ9ZTtleHBvcnRzLkxhenk9dDtleHBvcnRzLk1lbW89cjtleHBvcnRzLlBvcnRhbD1kO1xuZXhwb3J0cy5Qcm9maWxlcj1nO2V4cG9ydHMuU3RyaWN0TW9kZT1mO2V4cG9ydHMuU3VzcGVuc2U9cDtleHBvcnRzLmlzQXN5bmNNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiBBKGEpfHx6KGEpPT09bH07ZXhwb3J0cy5pc0NvbmN1cnJlbnRNb2RlPUE7ZXhwb3J0cy5pc0NvbnRleHRDb25zdW1lcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWt9O2V4cG9ydHMuaXNDb250ZXh0UHJvdmlkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1ofTtleHBvcnRzLmlzRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09Y307ZXhwb3J0cy5pc0ZvcndhcmRSZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1ufTtleHBvcnRzLmlzRnJhZ21lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1lfTtleHBvcnRzLmlzTGF6eT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXR9O1xuZXhwb3J0cy5pc01lbW89ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1yfTtleHBvcnRzLmlzUG9ydGFsPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09ZH07ZXhwb3J0cy5pc1Byb2ZpbGVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09Z307ZXhwb3J0cy5pc1N0cmljdE1vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1mfTtleHBvcnRzLmlzU3VzcGVuc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1wfTtcbmV4cG9ydHMuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGEpe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGF8fGE9PT1lfHxhPT09bXx8YT09PWd8fGE9PT1mfHxhPT09cHx8YT09PXF8fFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJihhLiQkdHlwZW9mPT09dHx8YS4kJHR5cGVvZj09PXJ8fGEuJCR0eXBlb2Y9PT1ofHxhLiQkdHlwZW9mPT09a3x8YS4kJHR5cGVvZj09PW58fGEuJCR0eXBlb2Y9PT13fHxhLiQkdHlwZW9mPT09eHx8YS4kJHR5cGVvZj09PXl8fGEuJCR0eXBlb2Y9PT12KX07ZXhwb3J0cy50eXBlT2Y9ejtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuSU5URVJOQUxfSE9PS1MgPSB2b2lkIDA7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfZXh0ZW5kczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIikpO1xuXG52YXIgX29iamVjdFNwcmVhZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFNwcmVhZDJcIikpO1xuXG52YXIgX3RvQ29uc3VtYWJsZUFycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIikpO1xuXG52YXIgX3R5cGVvZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKSk7XG5cbnZhciBfc2xpY2VkVG9BcnJheTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIikpO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2lzVmlzaWJsZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXV0aWwvbGliL0RvbS9pc1Zpc2libGVcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9zaGFsbG93ZXF1YWwgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJzaGFsbG93ZXF1YWxcIikpO1xuXG52YXIgX3dhcm5pbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYy11dGlsL2xpYi93YXJuaW5nXCIpKTtcblxudmFyIF9yY1Jlc2l6ZU9ic2VydmVyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtcmVzaXplLW9ic2VydmVyXCIpKTtcblxudmFyIF9nZXRTY3JvbGxCYXJTaXplID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtdXRpbC9saWIvZ2V0U2Nyb2xsQmFyU2l6ZVwiKSk7XG5cbnZhciBfQ29sdW1uR3JvdXAgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3N1Z2FyL0NvbHVtbkdyb3VwXCIpKTtcblxudmFyIF9Db2x1bW4gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3N1Z2FyL0NvbHVtblwiKSk7XG5cbnZhciBfRml4ZWRIZWFkZXIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL0hlYWRlci9GaXhlZEhlYWRlclwiKSk7XG5cbnZhciBfSGVhZGVyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9IZWFkZXIvSGVhZGVyXCIpKTtcblxudmFyIF9UYWJsZUNvbnRleHQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2NvbnRleHQvVGFibGVDb250ZXh0XCIpKTtcblxudmFyIF9Cb2R5Q29udGV4dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vY29udGV4dC9Cb2R5Q29udGV4dFwiKSk7XG5cbnZhciBfQm9keSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vQm9keVwiKSk7XG5cbnZhciBfdXNlQ29sdW1uczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2hvb2tzL3VzZUNvbHVtbnNcIikpO1xuXG52YXIgX3VzZUZyYW1lID0gcmVxdWlyZShcIi4vaG9va3MvdXNlRnJhbWVcIik7XG5cbnZhciBfdmFsdWVVdGlsID0gcmVxdWlyZShcIi4vdXRpbHMvdmFsdWVVdGlsXCIpO1xuXG52YXIgX1Jlc2l6ZUNvbnRleHQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2NvbnRleHQvUmVzaXplQ29udGV4dFwiKSk7XG5cbnZhciBfdXNlU3RpY2t5T2Zmc2V0cyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vaG9va3MvdXNlU3RpY2t5T2Zmc2V0c1wiKSk7XG5cbnZhciBfQ29sR3JvdXAgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL0NvbEdyb3VwXCIpKTtcblxudmFyIF9sZWdhY3lVdGlsID0gcmVxdWlyZShcIi4vdXRpbHMvbGVnYWN5VXRpbFwiKTtcblxudmFyIF9QYW5lbCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vUGFuZWxcIikpO1xuXG52YXIgX0Zvb3RlciA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCIuL0Zvb3RlclwiKSk7XG5cbnZhciBfZXhwYW5kVXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxzL2V4cGFuZFV0aWxcIik7XG5cbnZhciBfZml4VXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxzL2ZpeFV0aWxcIik7XG5cbnZhciBfc3RpY2t5U2Nyb2xsQmFyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9zdGlja3lTY3JvbGxCYXJcIikpO1xuXG52YXIgX3VzZVN0aWNreTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2hvb2tzL3VzZVN0aWNreVwiKSk7XG5cbi8qKlxuICogRmVhdHVyZTpcbiAqICAtIGZpeGVkIG5vdCBuZWVkIHRvIHNldCB3aWR0aFxuICogIC0gc3VwcG9ydCBgcm93RXhwYW5kYWJsZWAgdG8gY29uZmlnIHJvdyBleHBhbmQgbG9naWNcbiAqICAtIGFkZCBgc3VtbWFyeWAgdG8gc3VwcG9ydCBgKCkgPT4gUmVhY3ROb2RlYFxuICpcbiAqIFVwZGF0ZTpcbiAqICAtIGBkYXRhSW5kZXhgIGlzIGBhcnJheVtdYCBub3dcbiAqICAtIGBleHBhbmRhYmxlYCB3cmFwIGFsbCB0aGUgZXhwYW5kIHJlbGF0ZWQgcHJvcHNcbiAqXG4gKiBSZW1vdmVkOlxuICogIC0gZXhwYW5kSWNvbkFzQ2VsbFxuICogIC0gdXNlRml4ZWRIZWFkZXJcbiAqICAtIHJvd1JlZlxuICogIC0gY29sdW1uc1tudW1iZXJdLm9uQ2VsbENsaWNrXG4gKiAgLSBvblJvd0NsaWNrXG4gKiAgLSBvblJvd0RvdWJsZUNsaWNrXG4gKiAgLSBvblJvd01vdXNlRW50ZXJcbiAqICAtIG9uUm93TW91c2VMZWF2ZVxuICogIC0gZ2V0Qm9keVdyYXBwZXJcbiAqICAtIGJvZHlTdHlsZVxuICpcbiAqIERlcHJlY2F0ZWQ6XG4gKiAgLSBBbGwgZXhwYW5kZWQgcHJvcHMsIG1vdmUgaW50byBleHBhbmRhYmxlXG4gKi9cbi8vIFVzZWQgZm9yIGNvbmRpdGlvbnMgY2FjaGVcbnZhciBFTVBUWV9EQVRBID0gW107IC8vIFVzZWQgZm9yIGN1c3RvbWl6ZSBzY3JvbGxcblxudmFyIEVNUFRZX1NDUk9MTF9UQVJHRVQgPSB7fTtcbnZhciBJTlRFUk5BTF9IT09LUyA9ICdyYy10YWJsZS1pbnRlcm5hbC1ob29rJztcbmV4cG9ydHMuSU5URVJOQUxfSE9PS1MgPSBJTlRFUk5BTF9IT09LUztcbnZhciBNZW1vVGFibGVDb250ZW50ID0gLyojX19QVVJFX18qL1JlYWN0Lm1lbW8oZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgcmV0dXJuIGNoaWxkcmVuO1xufSwgZnVuY3Rpb24gKHByZXYsIG5leHQpIHtcbiAgaWYgKCEoMCwgX3NoYWxsb3dlcXVhbC5kZWZhdWx0KShwcmV2LnByb3BzLCBuZXh0LnByb3BzKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyBObyBhZGRpdGlvbmFsIHJlbmRlciB3aGVuIHBpbmdlZCBzdGF0dXMgY2hhbmdlLlxuICAvLyBUaGlzIGlzIG5vdCBhIGJ1Zy5cblxuXG4gIHJldHVybiBwcmV2LnBpbmdMZWZ0ICE9PSBuZXh0LnBpbmdMZWZ0IHx8IHByZXYucGluZ1JpZ2h0ICE9PSBuZXh0LnBpbmdSaWdodDtcbn0pO1xuXG5mdW5jdGlvbiBUYWJsZShwcm9wcykge1xuICB2YXIgX2NsYXNzTmFtZXM7XG5cbiAgdmFyIHByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIHJvd0NsYXNzTmFtZSA9IHByb3BzLnJvd0NsYXNzTmFtZSxcbiAgICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsXG4gICAgICBkYXRhID0gcHJvcHMuZGF0YSxcbiAgICAgIHJvd0tleSA9IHByb3BzLnJvd0tleSxcbiAgICAgIHNjcm9sbCA9IHByb3BzLnNjcm9sbCxcbiAgICAgIHRhYmxlTGF5b3V0ID0gcHJvcHMudGFibGVMYXlvdXQsXG4gICAgICBkaXJlY3Rpb24gPSBwcm9wcy5kaXJlY3Rpb24sXG4gICAgICB0aXRsZSA9IHByb3BzLnRpdGxlLFxuICAgICAgZm9vdGVyID0gcHJvcHMuZm9vdGVyLFxuICAgICAgc3VtbWFyeSA9IHByb3BzLnN1bW1hcnksXG4gICAgICBpZCA9IHByb3BzLmlkLFxuICAgICAgc2hvd0hlYWRlciA9IHByb3BzLnNob3dIZWFkZXIsXG4gICAgICBjb21wb25lbnRzID0gcHJvcHMuY29tcG9uZW50cyxcbiAgICAgIGVtcHR5VGV4dCA9IHByb3BzLmVtcHR5VGV4dCxcbiAgICAgIG9uUm93ID0gcHJvcHMub25Sb3csXG4gICAgICBvbkhlYWRlclJvdyA9IHByb3BzLm9uSGVhZGVyUm93LFxuICAgICAgaW50ZXJuYWxIb29rcyA9IHByb3BzLmludGVybmFsSG9va3MsXG4gICAgICB0cmFuc2Zvcm1Db2x1bW5zID0gcHJvcHMudHJhbnNmb3JtQ29sdW1ucyxcbiAgICAgIGludGVybmFsUmVmcyA9IHByb3BzLmludGVybmFsUmVmcyxcbiAgICAgIHN0aWNreSA9IHByb3BzLnN0aWNreTtcbiAgdmFyIG1lcmdlZERhdGEgPSBkYXRhIHx8IEVNUFRZX0RBVEE7XG4gIHZhciBoYXNEYXRhID0gISFtZXJnZWREYXRhLmxlbmd0aDsgLy8gPT09PT09PT09PT09PT09PT09PT09IEVmZmVjdHMgPT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBfUmVhY3QkdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZSgwKSxcbiAgICAgIF9SZWFjdCR1c2VTdGF0ZTIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyLmRlZmF1bHQpKF9SZWFjdCR1c2VTdGF0ZSwgMiksXG4gICAgICBzY3JvbGxiYXJTaXplID0gX1JlYWN0JHVzZVN0YXRlMlswXSxcbiAgICAgIHNldFNjcm9sbGJhclNpemUgPSBfUmVhY3QkdXNlU3RhdGUyWzFdO1xuXG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgc2V0U2Nyb2xsYmFyU2l6ZSgoMCwgX2dldFNjcm9sbEJhclNpemUuZGVmYXVsdCkoKSk7XG4gIH0pOyAvLyA9PT09PT09PT09PT09PT09PT09PT0gV2FybmluZyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBbJ29uUm93Q2xpY2snLCAnb25Sb3dEb3VibGVDbGljaycsICdvblJvd0NvbnRleHRNZW51JywgJ29uUm93TW91c2VFbnRlcicsICdvblJvd01vdXNlTGVhdmUnXS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAoMCwgX3dhcm5pbmcuZGVmYXVsdCkocHJvcHNbbmFtZV0gPT09IHVuZGVmaW5lZCwgXCJgXCIuY29uY2F0KG5hbWUsIFwiYCBpcyByZW1vdmVkLCBwbGVhc2UgdXNlIGBvblJvd2AgaW5zdGVhZC5cIikpO1xuICAgIH0pO1xuICAgICgwLCBfd2FybmluZy5kZWZhdWx0KSghKCdnZXRCb2R5V3JhcHBlcicgaW4gcHJvcHMpLCAnYGdldEJvZHlXcmFwcGVyYCBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGN1c3RvbSBgY29tcG9uZW50c2AgaW5zdGVhZC4nKTtcbiAgfSAvLyA9PT09PT09PT09PT09PT09PT09PSBDdXN0b21pemUgPT09PT09PT09PT09PT09PT09PT09XG5cblxuICB2YXIgbWVyZ2VkQ29tcG9uZW50cyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAoMCwgX3ZhbHVlVXRpbC5tZXJnZU9iamVjdCkoY29tcG9uZW50cywge30pO1xuICB9LCBbY29tcG9uZW50c10pO1xuICB2YXIgZ2V0Q29tcG9uZW50ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKHBhdGgsIGRlZmF1bHRDb21wb25lbnQpIHtcbiAgICByZXR1cm4gKDAsIF92YWx1ZVV0aWwuZ2V0UGF0aFZhbHVlKShtZXJnZWRDb21wb25lbnRzLCBwYXRoKSB8fCBkZWZhdWx0Q29tcG9uZW50O1xuICB9LCBbbWVyZ2VkQ29tcG9uZW50c10pO1xuICB2YXIgZ2V0Um93S2V5ID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiByb3dLZXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiByb3dLZXk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICAgIHZhciBrZXkgPSByZWNvcmQgJiYgcmVjb3JkW3Jvd0tleV07XG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICgwLCBfd2FybmluZy5kZWZhdWx0KShrZXkgIT09IHVuZGVmaW5lZCwgJ0VhY2ggcmVjb3JkIGluIHRhYmxlIHNob3VsZCBoYXZlIGEgdW5pcXVlIGBrZXlgIHByb3AsIG9yIHNldCBgcm93S2V5YCB0byBhbiB1bmlxdWUgcHJpbWFyeSBrZXkuJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBrZXk7XG4gICAgfTtcbiAgfSwgW3Jvd0tleV0pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09IEV4cGFuZCA9PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIGV4cGFuZGFibGVDb25maWcgPSAoMCwgX2xlZ2FjeVV0aWwuZ2V0RXhwYW5kYWJsZVByb3BzKShwcm9wcyk7XG4gIHZhciBleHBhbmRJY29uID0gZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRJY29uLFxuICAgICAgZXhwYW5kZWRSb3dLZXlzID0gZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd0tleXMsXG4gICAgICBkZWZhdWx0RXhwYW5kZWRSb3dLZXlzID0gZXhwYW5kYWJsZUNvbmZpZy5kZWZhdWx0RXhwYW5kZWRSb3dLZXlzLFxuICAgICAgZGVmYXVsdEV4cGFuZEFsbFJvd3MgPSBleHBhbmRhYmxlQ29uZmlnLmRlZmF1bHRFeHBhbmRBbGxSb3dzLFxuICAgICAgZXhwYW5kZWRSb3dSZW5kZXIgPSBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZGVkUm93UmVuZGVyLFxuICAgICAgb25FeHBhbmQgPSBleHBhbmRhYmxlQ29uZmlnLm9uRXhwYW5kLFxuICAgICAgb25FeHBhbmRlZFJvd3NDaGFuZ2UgPSBleHBhbmRhYmxlQ29uZmlnLm9uRXhwYW5kZWRSb3dzQ2hhbmdlLFxuICAgICAgZXhwYW5kUm93QnlDbGljayA9IGV4cGFuZGFibGVDb25maWcuZXhwYW5kUm93QnlDbGljayxcbiAgICAgIHJvd0V4cGFuZGFibGUgPSBleHBhbmRhYmxlQ29uZmlnLnJvd0V4cGFuZGFibGUsXG4gICAgICBleHBhbmRJY29uQ29sdW1uSW5kZXggPSBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZEljb25Db2x1bW5JbmRleCxcbiAgICAgIGV4cGFuZGVkUm93Q2xhc3NOYW1lID0gZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd0NsYXNzTmFtZSxcbiAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZSA9IGV4cGFuZGFibGVDb25maWcuY2hpbGRyZW5Db2x1bW5OYW1lLFxuICAgICAgaW5kZW50U2l6ZSA9IGV4cGFuZGFibGVDb25maWcuaW5kZW50U2l6ZTtcbiAgdmFyIG1lcmdlZEV4cGFuZEljb24gPSBleHBhbmRJY29uIHx8IF9leHBhbmRVdGlsLnJlbmRlckV4cGFuZEljb247XG4gIHZhciBtZXJnZWRDaGlsZHJlbkNvbHVtbk5hbWUgPSBjaGlsZHJlbkNvbHVtbk5hbWUgfHwgJ2NoaWxkcmVuJztcbiAgdmFyIGV4cGFuZGFibGVUeXBlID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGV4cGFuZGVkUm93UmVuZGVyKSB7XG4gICAgICByZXR1cm4gJ3Jvdyc7XG4gICAgfVxuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG5cbiAgICAvKipcbiAgICAgKiBGaXggaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMjExNTRcbiAgICAgKiBUaGlzIGlzIGEgd29ya2Fyb3VuZCB0byBub3QgdG8gYnJlYWsgY3VycmVudCBiZWhhdmlvci5cbiAgICAgKiBXZSBjYW4gcmVtb3ZlIGZvbGxvdyBjb2RlIGFmdGVyIGZpbmFsIHJlbGVhc2UuXG4gICAgICpcbiAgICAgKiBUbyBvdGhlciBkZXZlbG9wZXI6XG4gICAgICogIERvIG5vdCB1c2UgYF9fUEFSRU5UX1JFTkRFUl9JQ09OX19gIGluIHByb2Qgc2luY2Ugd2Ugd2lsbCByZW1vdmUgdGhpcyB3aGVuIHJlZmFjdG9yXG4gICAgICovXG5cblxuICAgIGlmIChwcm9wcy5leHBhbmRhYmxlICYmIGludGVybmFsSG9va3MgPT09IElOVEVSTkFMX0hPT0tTICYmIHByb3BzLmV4cGFuZGFibGUuX19QQVJFTlRfUkVOREVSX0lDT05fXyB8fCBtZXJnZWREYXRhLnNvbWUoZnVuY3Rpb24gKHJlY29yZCkge1xuICAgICAgcmV0dXJuIHJlY29yZCAmJiAoMCwgX3R5cGVvZjIuZGVmYXVsdCkocmVjb3JkKSA9PT0gJ29iamVjdCcgJiYgcmVjb3JkW21lcmdlZENoaWxkcmVuQ29sdW1uTmFtZV07XG4gICAgfSkpIHtcbiAgICAgIHJldHVybiAnbmVzdCc7XG4gICAgfVxuICAgIC8qIGVzbGludC1lbmFibGUgKi9cblxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbISFleHBhbmRlZFJvd1JlbmRlciwgbWVyZ2VkRGF0YV0pO1xuXG4gIHZhciBfUmVhY3QkdXNlU3RhdGUzID0gUmVhY3QudXNlU3RhdGUoZnVuY3Rpb24gKCkge1xuICAgIGlmIChkZWZhdWx0RXhwYW5kZWRSb3dLZXlzKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdEV4cGFuZGVkUm93S2V5cztcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdEV4cGFuZEFsbFJvd3MpIHtcbiAgICAgIHJldHVybiAoMCwgX2V4cGFuZFV0aWwuZmluZEFsbENoaWxkcmVuS2V5cykobWVyZ2VkRGF0YSwgZ2V0Um93S2V5LCBtZXJnZWRDaGlsZHJlbkNvbHVtbk5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfSksXG4gICAgICBfUmVhY3QkdXNlU3RhdGU0ID0gKDAsIF9zbGljZWRUb0FycmF5Mi5kZWZhdWx0KShfUmVhY3QkdXNlU3RhdGUzLCAyKSxcbiAgICAgIGlubmVyRXhwYW5kZWRLZXlzID0gX1JlYWN0JHVzZVN0YXRlNFswXSxcbiAgICAgIHNldElubmVyRXhwYW5kZWRLZXlzID0gX1JlYWN0JHVzZVN0YXRlNFsxXTtcblxuICB2YXIgbWVyZ2VkRXhwYW5kZWRLZXlzID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIG5ldyBTZXQoZXhwYW5kZWRSb3dLZXlzIHx8IGlubmVyRXhwYW5kZWRLZXlzIHx8IFtdKTtcbiAgfSwgW2V4cGFuZGVkUm93S2V5cywgaW5uZXJFeHBhbmRlZEtleXNdKTtcbiAgdmFyIG9uVHJpZ2dlckV4cGFuZCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICB2YXIga2V5ID0gZ2V0Um93S2V5KHJlY29yZCwgbWVyZ2VkRGF0YS5pbmRleE9mKHJlY29yZCkpO1xuICAgIHZhciBuZXdFeHBhbmRlZEtleXM7XG4gICAgdmFyIGhhc0tleSA9IG1lcmdlZEV4cGFuZGVkS2V5cy5oYXMoa2V5KTtcblxuICAgIGlmIChoYXNLZXkpIHtcbiAgICAgIG1lcmdlZEV4cGFuZGVkS2V5cy5kZWxldGUoa2V5KTtcbiAgICAgIG5ld0V4cGFuZGVkS2V5cyA9ICgwLCBfdG9Db25zdW1hYmxlQXJyYXkyLmRlZmF1bHQpKG1lcmdlZEV4cGFuZGVkS2V5cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld0V4cGFuZGVkS2V5cyA9IFtdLmNvbmNhdCgoMCwgX3RvQ29uc3VtYWJsZUFycmF5Mi5kZWZhdWx0KShtZXJnZWRFeHBhbmRlZEtleXMpLCBba2V5XSk7XG4gICAgfVxuXG4gICAgc2V0SW5uZXJFeHBhbmRlZEtleXMobmV3RXhwYW5kZWRLZXlzKTtcblxuICAgIGlmIChvbkV4cGFuZCkge1xuICAgICAgb25FeHBhbmQoIWhhc0tleSwgcmVjb3JkKTtcbiAgICB9XG5cbiAgICBpZiAob25FeHBhbmRlZFJvd3NDaGFuZ2UpIHtcbiAgICAgIG9uRXhwYW5kZWRSb3dzQ2hhbmdlKG5ld0V4cGFuZGVkS2V5cyk7XG4gICAgfVxuICB9LCBbZ2V0Um93S2V5LCBtZXJnZWRFeHBhbmRlZEtleXMsIG1lcmdlZERhdGEsIG9uRXhwYW5kLCBvbkV4cGFuZGVkUm93c0NoYW5nZV0pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09IENvbHVtbiA9PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZTUgPSBSZWFjdC51c2VTdGF0ZSgwKSxcbiAgICAgIF9SZWFjdCR1c2VTdGF0ZTYgPSAoMCwgX3NsaWNlZFRvQXJyYXkyLmRlZmF1bHQpKF9SZWFjdCR1c2VTdGF0ZTUsIDIpLFxuICAgICAgY29tcG9uZW50V2lkdGggPSBfUmVhY3QkdXNlU3RhdGU2WzBdLFxuICAgICAgc2V0Q29tcG9uZW50V2lkdGggPSBfUmVhY3QkdXNlU3RhdGU2WzFdO1xuXG4gIHZhciBfdXNlQ29sdW1ucyA9ICgwLCBfdXNlQ29sdW1uczMuZGVmYXVsdCkoKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKCgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSgoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoe30sIHByb3BzKSwgZXhwYW5kYWJsZUNvbmZpZyksIHt9LCB7XG4gICAgZXhwYW5kYWJsZTogISFleHBhbmRlZFJvd1JlbmRlcixcbiAgICBleHBhbmRlZEtleXM6IG1lcmdlZEV4cGFuZGVkS2V5cyxcbiAgICBnZXRSb3dLZXk6IGdldFJvd0tleSxcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8yMzg5NFxuICAgIG9uVHJpZ2dlckV4cGFuZDogb25UcmlnZ2VyRXhwYW5kLFxuICAgIGV4cGFuZEljb246IG1lcmdlZEV4cGFuZEljb24sXG4gICAgZXhwYW5kSWNvbkNvbHVtbkluZGV4OiBleHBhbmRJY29uQ29sdW1uSW5kZXgsXG4gICAgZGlyZWN0aW9uOiBkaXJlY3Rpb25cbiAgfSksIGludGVybmFsSG9va3MgPT09IElOVEVSTkFMX0hPT0tTID8gdHJhbnNmb3JtQ29sdW1ucyA6IG51bGwpLFxuICAgICAgX3VzZUNvbHVtbnMyID0gKDAsIF9zbGljZWRUb0FycmF5Mi5kZWZhdWx0KShfdXNlQ29sdW1ucywgMiksXG4gICAgICBjb2x1bW5zID0gX3VzZUNvbHVtbnMyWzBdLFxuICAgICAgZmxhdHRlbkNvbHVtbnMgPSBfdXNlQ29sdW1uczJbMV07XG5cbiAgdmFyIGNvbHVtbkNvbnRleHQgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sdW1uczogY29sdW1ucyxcbiAgICAgIGZsYXR0ZW5Db2x1bW5zOiBmbGF0dGVuQ29sdW1uc1xuICAgIH07XG4gIH0sIFtjb2x1bW5zLCBmbGF0dGVuQ29sdW1uc10pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09IFNjcm9sbCA9PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIGZ1bGxUYWJsZVJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICB2YXIgc2Nyb2xsSGVhZGVyUmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIHZhciBzY3JvbGxCb2R5UmVmID0gUmVhY3QudXNlUmVmKCk7XG5cbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZTcgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksXG4gICAgICBfUmVhY3QkdXNlU3RhdGU4ID0gKDAsIF9zbGljZWRUb0FycmF5Mi5kZWZhdWx0KShfUmVhY3QkdXNlU3RhdGU3LCAyKSxcbiAgICAgIHBpbmdlZExlZnQgPSBfUmVhY3QkdXNlU3RhdGU4WzBdLFxuICAgICAgc2V0UGluZ2VkTGVmdCA9IF9SZWFjdCR1c2VTdGF0ZThbMV07XG5cbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZTkgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksXG4gICAgICBfUmVhY3QkdXNlU3RhdGUxMCA9ICgwLCBfc2xpY2VkVG9BcnJheTIuZGVmYXVsdCkoX1JlYWN0JHVzZVN0YXRlOSwgMiksXG4gICAgICBwaW5nZWRSaWdodCA9IF9SZWFjdCR1c2VTdGF0ZTEwWzBdLFxuICAgICAgc2V0UGluZ2VkUmlnaHQgPSBfUmVhY3QkdXNlU3RhdGUxMFsxXTtcblxuICB2YXIgX3VzZUxheW91dFN0YXRlID0gKDAsIF91c2VGcmFtZS51c2VMYXlvdXRTdGF0ZSkobmV3IE1hcCgpKSxcbiAgICAgIF91c2VMYXlvdXRTdGF0ZTIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyLmRlZmF1bHQpKF91c2VMYXlvdXRTdGF0ZSwgMiksXG4gICAgICBjb2xzV2lkdGhzID0gX3VzZUxheW91dFN0YXRlMlswXSxcbiAgICAgIHVwZGF0ZUNvbHNXaWR0aHMgPSBfdXNlTGF5b3V0U3RhdGUyWzFdOyAvLyBDb252ZXJ0IG1hcCB0byBudW1iZXIgd2lkdGhcblxuXG4gIHZhciBjb2xzS2V5cyA9ICgwLCBfdmFsdWVVdGlsLmdldENvbHVtbnNLZXkpKGZsYXR0ZW5Db2x1bW5zKTtcbiAgdmFyIHB1cmVDb2xXaWR0aHMgPSBjb2xzS2V5cy5tYXAoZnVuY3Rpb24gKGNvbHVtbktleSkge1xuICAgIHJldHVybiBjb2xzV2lkdGhzLmdldChjb2x1bW5LZXkpO1xuICB9KTtcbiAgdmFyIGNvbFdpZHRocyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBwdXJlQ29sV2lkdGhzO1xuICB9LCBbcHVyZUNvbFdpZHRocy5qb2luKCdfJyldKTtcbiAgdmFyIHN0aWNreU9mZnNldHMgPSAoMCwgX3VzZVN0aWNreU9mZnNldHMuZGVmYXVsdCkoY29sV2lkdGhzLCBmbGF0dGVuQ29sdW1ucy5sZW5ndGgsIGRpcmVjdGlvbik7XG4gIHZhciBmaXhIZWFkZXIgPSBzY3JvbGwgJiYgKDAsIF92YWx1ZVV0aWwudmFsaWRhdGVWYWx1ZSkoc2Nyb2xsLnkpO1xuICB2YXIgaG9yaXpvblNjcm9sbCA9IHNjcm9sbCAmJiAoMCwgX3ZhbHVlVXRpbC52YWxpZGF0ZVZhbHVlKShzY3JvbGwueCk7XG4gIHZhciBmaXhDb2x1bW4gPSBob3Jpem9uU2Nyb2xsICYmIGZsYXR0ZW5Db2x1bW5zLnNvbWUoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgdmFyIGZpeGVkID0gX3JlZjIuZml4ZWQ7XG4gICAgcmV0dXJuIGZpeGVkO1xuICB9KTsgLy8gU3RpY2t5XG5cbiAgdmFyIHN0aWNreVJlZiA9IFJlYWN0LnVzZVJlZigpO1xuXG4gIHZhciBfdXNlU3RpY2t5ID0gKDAsIF91c2VTdGlja3kyLmRlZmF1bHQpKHN0aWNreSwgcHJlZml4Q2xzKSxcbiAgICAgIGlzU3RpY2t5ID0gX3VzZVN0aWNreS5pc1N0aWNreSxcbiAgICAgIG9mZnNldEhlYWRlciA9IF91c2VTdGlja3kub2Zmc2V0SGVhZGVyLFxuICAgICAgb2Zmc2V0U2Nyb2xsID0gX3VzZVN0aWNreS5vZmZzZXRTY3JvbGwsXG4gICAgICBzdGlja3lDbGFzc05hbWUgPSBfdXNlU3RpY2t5LnN0aWNreUNsYXNzTmFtZSxcbiAgICAgIGNvbnRhaW5lciA9IF91c2VTdGlja3kuY29udGFpbmVyO1xuXG4gIHZhciBzY3JvbGxYU3R5bGU7XG4gIHZhciBzY3JvbGxZU3R5bGU7XG4gIHZhciBzY3JvbGxUYWJsZVN0eWxlO1xuXG4gIGlmIChmaXhIZWFkZXIpIHtcbiAgICBzY3JvbGxZU3R5bGUgPSB7XG4gICAgICBvdmVyZmxvd1k6ICdzY3JvbGwnLFxuICAgICAgbWF4SGVpZ2h0OiBzY3JvbGwueVxuICAgIH07XG4gIH1cblxuICBpZiAoaG9yaXpvblNjcm9sbCkge1xuICAgIHNjcm9sbFhTdHlsZSA9IHtcbiAgICAgIG92ZXJmbG93WDogJ2F1dG8nXG4gICAgfTsgLy8gV2hlbiBubyB2ZXJ0aWNhbCBzY3JvbGxiYXIsIHNob3VsZCBoaWRlIGl0XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9wdWxsLzIwNzA1XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMjE4NzlcblxuICAgIGlmICghZml4SGVhZGVyKSB7XG4gICAgICBzY3JvbGxZU3R5bGUgPSB7XG4gICAgICAgIG92ZXJmbG93WTogJ2hpZGRlbidcbiAgICAgIH07XG4gICAgfVxuXG4gICAgc2Nyb2xsVGFibGVTdHlsZSA9IHtcbiAgICAgIHdpZHRoOiBzY3JvbGwueCA9PT0gdHJ1ZSA/ICdhdXRvJyA6IHNjcm9sbC54LFxuICAgICAgbWluV2lkdGg6ICcxMDAlJ1xuICAgIH07XG4gIH1cblxuICB2YXIgb25Db2x1bW5SZXNpemUgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoY29sdW1uS2V5LCB3aWR0aCkge1xuICAgIGlmICgoMCwgX2lzVmlzaWJsZS5kZWZhdWx0KShmdWxsVGFibGVSZWYuY3VycmVudCkpIHtcbiAgICAgIHVwZGF0ZUNvbHNXaWR0aHMoZnVuY3Rpb24gKHdpZHRocykge1xuICAgICAgICBpZiAod2lkdGhzLmdldChjb2x1bW5LZXkpICE9PSB3aWR0aCkge1xuICAgICAgICAgIHZhciBuZXdXaWR0aHMgPSBuZXcgTWFwKHdpZHRocyk7XG4gICAgICAgICAgbmV3V2lkdGhzLnNldChjb2x1bW5LZXksIHdpZHRoKTtcbiAgICAgICAgICByZXR1cm4gbmV3V2lkdGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHdpZHRocztcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIHZhciBfdXNlVGltZW91dExvY2sgPSAoMCwgX3VzZUZyYW1lLnVzZVRpbWVvdXRMb2NrKShudWxsKSxcbiAgICAgIF91c2VUaW1lb3V0TG9jazIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyLmRlZmF1bHQpKF91c2VUaW1lb3V0TG9jaywgMiksXG4gICAgICBzZXRTY3JvbGxUYXJnZXQgPSBfdXNlVGltZW91dExvY2syWzBdLFxuICAgICAgZ2V0U2Nyb2xsVGFyZ2V0ID0gX3VzZVRpbWVvdXRMb2NrMlsxXTtcblxuICBmdW5jdGlvbiBmb3JjZVNjcm9sbChzY3JvbGxMZWZ0LCB0YXJnZXQpIHtcbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0YXJnZXQoc2Nyb2xsTGVmdCk7XG4gICAgfSBlbHNlIGlmICh0YXJnZXQuc2Nyb2xsTGVmdCAhPT0gc2Nyb2xsTGVmdCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICB0YXJnZXQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XG4gICAgfVxuICB9XG5cbiAgdmFyIG9uU2Nyb2xsID0gZnVuY3Rpb24gb25TY3JvbGwoX3JlZjMpIHtcbiAgICB2YXIgY3VycmVudFRhcmdldCA9IF9yZWYzLmN1cnJlbnRUYXJnZXQsXG4gICAgICAgIHNjcm9sbExlZnQgPSBfcmVmMy5zY3JvbGxMZWZ0O1xuICAgIHZhciBpc1JUTCA9IGRpcmVjdGlvbiA9PT0gJ3J0bCc7XG4gICAgdmFyIG1lcmdlZFNjcm9sbExlZnQgPSB0eXBlb2Ygc2Nyb2xsTGVmdCA9PT0gJ251bWJlcicgPyBzY3JvbGxMZWZ0IDogY3VycmVudFRhcmdldC5zY3JvbGxMZWZ0O1xuICAgIHZhciBjb21wYXJlVGFyZ2V0ID0gY3VycmVudFRhcmdldCB8fCBFTVBUWV9TQ1JPTExfVEFSR0VUO1xuXG4gICAgaWYgKCFnZXRTY3JvbGxUYXJnZXQoKSB8fCBnZXRTY3JvbGxUYXJnZXQoKSA9PT0gY29tcGFyZVRhcmdldCkge1xuICAgICAgdmFyIF9zdGlja3lSZWYkY3VycmVudDtcblxuICAgICAgc2V0U2Nyb2xsVGFyZ2V0KGNvbXBhcmVUYXJnZXQpO1xuICAgICAgZm9yY2VTY3JvbGwobWVyZ2VkU2Nyb2xsTGVmdCwgc2Nyb2xsSGVhZGVyUmVmLmN1cnJlbnQpO1xuICAgICAgZm9yY2VTY3JvbGwobWVyZ2VkU2Nyb2xsTGVmdCwgc2Nyb2xsQm9keVJlZi5jdXJyZW50KTtcbiAgICAgIGZvcmNlU2Nyb2xsKG1lcmdlZFNjcm9sbExlZnQsIChfc3RpY2t5UmVmJGN1cnJlbnQgPSBzdGlja3lSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX3N0aWNreVJlZiRjdXJyZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfc3RpY2t5UmVmJGN1cnJlbnQuc2V0U2Nyb2xsTGVmdCk7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRUYXJnZXQpIHtcbiAgICAgIHZhciBzY3JvbGxXaWR0aCA9IGN1cnJlbnRUYXJnZXQuc2Nyb2xsV2lkdGgsXG4gICAgICAgICAgY2xpZW50V2lkdGggPSBjdXJyZW50VGFyZ2V0LmNsaWVudFdpZHRoO1xuXG4gICAgICBpZiAoaXNSVEwpIHtcbiAgICAgICAgc2V0UGluZ2VkTGVmdCgtbWVyZ2VkU2Nyb2xsTGVmdCA8IHNjcm9sbFdpZHRoIC0gY2xpZW50V2lkdGgpO1xuICAgICAgICBzZXRQaW5nZWRSaWdodCgtbWVyZ2VkU2Nyb2xsTGVmdCA+IDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0UGluZ2VkTGVmdChtZXJnZWRTY3JvbGxMZWZ0ID4gMCk7XG4gICAgICAgIHNldFBpbmdlZFJpZ2h0KG1lcmdlZFNjcm9sbExlZnQgPCBzY3JvbGxXaWR0aCAtIGNsaWVudFdpZHRoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIHRyaWdnZXJPblNjcm9sbCA9IGZ1bmN0aW9uIHRyaWdnZXJPblNjcm9sbCgpIHtcbiAgICBpZiAoc2Nyb2xsQm9keVJlZi5jdXJyZW50KSB7XG4gICAgICBvblNjcm9sbCh7XG4gICAgICAgIGN1cnJlbnRUYXJnZXQ6IHNjcm9sbEJvZHlSZWYuY3VycmVudFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBvbkZ1bGxUYWJsZVJlc2l6ZSA9IGZ1bmN0aW9uIG9uRnVsbFRhYmxlUmVzaXplKF9yZWY0KSB7XG4gICAgdmFyIHdpZHRoID0gX3JlZjQud2lkdGg7XG4gICAgdHJpZ2dlck9uU2Nyb2xsKCk7XG4gICAgc2V0Q29tcG9uZW50V2lkdGgoZnVsbFRhYmxlUmVmLmN1cnJlbnQgPyBmdWxsVGFibGVSZWYuY3VycmVudC5vZmZzZXRXaWR0aCA6IHdpZHRoKTtcbiAgfTsgLy8gU3luYyBzY3JvbGwgYmFyIHdoZW4gaW5pdCBvciBgaG9yaXpvblNjcm9sbGAgY2hhbmdlZFxuXG5cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdHJpZ2dlck9uU2Nyb2xsO1xuICB9LCBbXSk7XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGhvcml6b25TY3JvbGwpIHtcbiAgICAgIHRyaWdnZXJPblNjcm9sbCgpO1xuICAgIH1cbiAgfSwgW2hvcml6b25TY3JvbGxdKTsgLy8gPT09PT09PT09PT09PT09PT09IElOVEVSTkFMIEhPT0tTID09PT09PT09PT09PT09PT09PVxuXG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGludGVybmFsSG9va3MgPT09IElOVEVSTkFMX0hPT0tTICYmIGludGVybmFsUmVmcykge1xuICAgICAgaW50ZXJuYWxSZWZzLmJvZHkuY3VycmVudCA9IHNjcm9sbEJvZHlSZWYuY3VycmVudDtcbiAgICB9XG4gIH0pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09IFJlbmRlciA9PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIFRhYmxlQ29tcG9uZW50ID0gZ2V0Q29tcG9uZW50KFsndGFibGUnXSwgJ3RhYmxlJyk7IC8vIFRhYmxlIGxheW91dFxuXG4gIHZhciBtZXJnZWRUYWJsZUxheW91dCA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIGlmICh0YWJsZUxheW91dCkge1xuICAgICAgcmV0dXJuIHRhYmxlTGF5b3V0O1xuICAgIH0gLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMjUyMjdcbiAgICAvLyBXaGVuIHNjcm9sbC54IGlzIG1heC1jb250ZW50LCBubyBuZWVkIHRvIGZpeCB0YWJsZSBsYXlvdXRcbiAgICAvLyBpdCdzIHdpZHRoIHNob3VsZCBzdHJldGNoIG91dCB0byBmaXQgY29udGVudFxuXG5cbiAgICBpZiAoZml4Q29sdW1uKSB7XG4gICAgICByZXR1cm4gc2Nyb2xsLnggPT09ICdtYXgtY29udGVudCcgPyAnYXV0bycgOiAnZml4ZWQnO1xuICAgIH1cblxuICAgIGlmIChmaXhIZWFkZXIgfHwgaXNTdGlja3kgfHwgZmxhdHRlbkNvbHVtbnMuc29tZShmdW5jdGlvbiAoX3JlZjUpIHtcbiAgICAgIHZhciBlbGxpcHNpcyA9IF9yZWY1LmVsbGlwc2lzO1xuICAgICAgcmV0dXJuIGVsbGlwc2lzO1xuICAgIH0pKSB7XG4gICAgICByZXR1cm4gJ2ZpeGVkJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ2F1dG8nO1xuICB9LCBbZml4SGVhZGVyLCBmaXhDb2x1bW4sIGZsYXR0ZW5Db2x1bW5zLCB0YWJsZUxheW91dCwgaXNTdGlja3ldKTtcbiAgdmFyIGdyb3VwVGFibGVOb2RlOyAvLyBIZWFkZXIgcHJvcHNcblxuICB2YXIgaGVhZGVyUHJvcHMgPSB7XG4gICAgY29sV2lkdGhzOiBjb2xXaWR0aHMsXG4gICAgY29sdW1Db3VudDogZmxhdHRlbkNvbHVtbnMubGVuZ3RoLFxuICAgIHN0aWNreU9mZnNldHM6IHN0aWNreU9mZnNldHMsXG4gICAgb25IZWFkZXJSb3c6IG9uSGVhZGVyUm93LFxuICAgIGZpeEhlYWRlcjogZml4SGVhZGVyLFxuICAgIHNjcm9sbDogc2Nyb2xsXG4gIH07IC8vIEVtcHR5XG5cbiAgdmFyIGVtcHR5Tm9kZSA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIGlmIChoYXNEYXRhKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGVtcHR5VGV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGVtcHR5VGV4dCgpO1xuICAgIH1cblxuICAgIHJldHVybiBlbXB0eVRleHQ7XG4gIH0sIFtoYXNEYXRhLCBlbXB0eVRleHRdKTsgLy8gQm9keVxuXG4gIHZhciBib2R5VGFibGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQm9keS5kZWZhdWx0LCB7XG4gICAgZGF0YTogbWVyZ2VkRGF0YSxcbiAgICBtZWFzdXJlQ29sdW1uV2lkdGg6IGZpeEhlYWRlciB8fCBob3Jpem9uU2Nyb2xsIHx8IGlzU3RpY2t5LFxuICAgIGV4cGFuZGVkS2V5czogbWVyZ2VkRXhwYW5kZWRLZXlzLFxuICAgIHJvd0V4cGFuZGFibGU6IHJvd0V4cGFuZGFibGUsXG4gICAgZ2V0Um93S2V5OiBnZXRSb3dLZXksXG4gICAgb25Sb3c6IG9uUm93LFxuICAgIGVtcHR5Tm9kZTogZW1wdHlOb2RlLFxuICAgIGNoaWxkcmVuQ29sdW1uTmFtZTogbWVyZ2VkQ2hpbGRyZW5Db2x1bW5OYW1lXG4gIH0pO1xuICB2YXIgYm9keUNvbEdyb3VwID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0NvbEdyb3VwLmRlZmF1bHQsIHtcbiAgICBjb2xXaWR0aHM6IGZsYXR0ZW5Db2x1bW5zLm1hcChmdW5jdGlvbiAoX3JlZjYpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWY2LndpZHRoO1xuICAgICAgcmV0dXJuIHdpZHRoO1xuICAgIH0pLFxuICAgIGNvbHVtbnM6IGZsYXR0ZW5Db2x1bW5zXG4gIH0pO1xuICB2YXIgZm9vdGVyVGFibGUgPSBzdW1tYXJ5ICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9Gb290ZXIuZGVmYXVsdCwgbnVsbCwgc3VtbWFyeShtZXJnZWREYXRhKSk7XG4gIHZhciBjdXN0b21pemVTY3JvbGxCb2R5ID0gZ2V0Q29tcG9uZW50KFsnYm9keSddKTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0eXBlb2YgY3VzdG9taXplU2Nyb2xsQm9keSA9PT0gJ2Z1bmN0aW9uJyAmJiBoYXNEYXRhICYmICFmaXhIZWFkZXIpIHtcbiAgICAoMCwgX3dhcm5pbmcuZGVmYXVsdCkoZmFsc2UsICdgY29tcG9uZW50cy5ib2R5YCB3aXRoIHJlbmRlciBwcm9wcyBpcyBvbmx5IHdvcmsgb24gYHNjcm9sbC55YC4nKTtcbiAgfVxuXG4gIGlmIChmaXhIZWFkZXIgfHwgaXNTdGlja3kpIHtcbiAgICB2YXIgYm9keUNvbnRlbnQ7XG5cbiAgICBpZiAodHlwZW9mIGN1c3RvbWl6ZVNjcm9sbEJvZHkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGJvZHlDb250ZW50ID0gY3VzdG9taXplU2Nyb2xsQm9keShtZXJnZWREYXRhLCB7XG4gICAgICAgIHNjcm9sbGJhclNpemU6IHNjcm9sbGJhclNpemUsXG4gICAgICAgIHJlZjogc2Nyb2xsQm9keVJlZixcbiAgICAgICAgb25TY3JvbGw6IG9uU2Nyb2xsXG4gICAgICB9KTtcbiAgICAgIGhlYWRlclByb3BzLmNvbFdpZHRocyA9IGZsYXR0ZW5Db2x1bW5zLm1hcChmdW5jdGlvbiAoX3JlZjcsIGluZGV4KSB7XG4gICAgICAgIHZhciB3aWR0aCA9IF9yZWY3LndpZHRoO1xuICAgICAgICB2YXIgY29sV2lkdGggPSBpbmRleCA9PT0gY29sdW1ucy5sZW5ndGggLSAxID8gd2lkdGggLSBzY3JvbGxiYXJTaXplIDogd2lkdGg7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjb2xXaWR0aCA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTihjb2xXaWR0aCkpIHtcbiAgICAgICAgICByZXR1cm4gY29sV2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICAoMCwgX3dhcm5pbmcuZGVmYXVsdCkoZmFsc2UsICdXaGVuIHVzZSBgY29tcG9uZW50cy5ib2R5YCB3aXRoIHJlbmRlciBwcm9wcy4gRWFjaCBjb2x1bW4gc2hvdWxkIGhhdmUgYSBmaXhlZCBgd2lkdGhgIHZhbHVlLicpO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBib2R5Q29udGVudCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgc3R5bGU6ICgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSgoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoe30sIHNjcm9sbFhTdHlsZSksIHNjcm9sbFlTdHlsZSksXG4gICAgICAgIG9uU2Nyb2xsOiBvblNjcm9sbCxcbiAgICAgICAgcmVmOiBzY3JvbGxCb2R5UmVmLFxuICAgICAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lcy5kZWZhdWx0KShcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWJvZHlcIikpXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUYWJsZUNvbXBvbmVudCwge1xuICAgICAgICBzdHlsZTogKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKCgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSh7fSwgc2Nyb2xsVGFibGVTdHlsZSksIHt9LCB7XG4gICAgICAgICAgdGFibGVMYXlvdXQ6IG1lcmdlZFRhYmxlTGF5b3V0XG4gICAgICAgIH0pXG4gICAgICB9LCBib2R5Q29sR3JvdXAsIGJvZHlUYWJsZSwgZm9vdGVyVGFibGUpKTtcbiAgICB9XG5cbiAgICBncm91cFRhYmxlTm9kZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBzaG93SGVhZGVyICE9PSBmYWxzZSAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfRml4ZWRIZWFkZXIuZGVmYXVsdCwgKDAsIF9leHRlbmRzMi5kZWZhdWx0KSh7XG4gICAgICBub0RhdGE6ICFtZXJnZWREYXRhLmxlbmd0aCxcbiAgICAgIG1heENvbnRlbnRTY3JvbGw6IGhvcml6b25TY3JvbGwgJiYgc2Nyb2xsLnggPT09ICdtYXgtY29udGVudCdcbiAgICB9LCBoZWFkZXJQcm9wcywgY29sdW1uQ29udGV4dCwge1xuICAgICAgZGlyZWN0aW9uOiBkaXJlY3Rpb24gLy8gRml4ZWQgUHJvcHNcbiAgICAgICxcbiAgICAgIG9mZnNldEhlYWRlcjogb2Zmc2V0SGVhZGVyLFxuICAgICAgc3RpY2t5Q2xhc3NOYW1lOiBzdGlja3lDbGFzc05hbWUsXG4gICAgICByZWY6IHNjcm9sbEhlYWRlclJlZixcbiAgICAgIG9uU2Nyb2xsOiBvblNjcm9sbFxuICAgIH0pKSwgYm9keUNvbnRlbnQsIGlzU3RpY2t5ICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9zdGlja3lTY3JvbGxCYXIuZGVmYXVsdCwge1xuICAgICAgcmVmOiBzdGlja3lSZWYsXG4gICAgICBvZmZzZXRTY3JvbGw6IG9mZnNldFNjcm9sbCxcbiAgICAgIHNjcm9sbEJvZHlSZWY6IHNjcm9sbEJvZHlSZWYsXG4gICAgICBvblNjcm9sbDogb25TY3JvbGwsXG4gICAgICBjb250YWluZXI6IGNvbnRhaW5lclxuICAgIH0pKTtcbiAgfSBlbHNlIHtcbiAgICBncm91cFRhYmxlTm9kZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgIHN0eWxlOiAoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKHt9LCBzY3JvbGxYU3R5bGUpLCBzY3JvbGxZU3R5bGUpLFxuICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXMuZGVmYXVsdCkoXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1jb250ZW50XCIpKSxcbiAgICAgIG9uU2Nyb2xsOiBvblNjcm9sbCxcbiAgICAgIHJlZjogc2Nyb2xsQm9keVJlZlxuICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFRhYmxlQ29tcG9uZW50LCB7XG4gICAgICBzdHlsZTogKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKCgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSh7fSwgc2Nyb2xsVGFibGVTdHlsZSksIHt9LCB7XG4gICAgICAgIHRhYmxlTGF5b3V0OiBtZXJnZWRUYWJsZUxheW91dFxuICAgICAgfSlcbiAgICB9LCBib2R5Q29sR3JvdXAsIHNob3dIZWFkZXIgIT09IGZhbHNlICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9IZWFkZXIuZGVmYXVsdCwgKDAsIF9leHRlbmRzMi5kZWZhdWx0KSh7fSwgaGVhZGVyUHJvcHMsIGNvbHVtbkNvbnRleHQpKSwgYm9keVRhYmxlLCBmb290ZXJUYWJsZSkpO1xuICB9XG5cbiAgdmFyIGFyaWFQcm9wcyA9ICgwLCBfbGVnYWN5VXRpbC5nZXREYXRhQW5kQXJpYVByb3BzKShwcm9wcyk7XG4gIHZhciBmdWxsVGFibGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCAoMCwgX2V4dGVuZHMyLmRlZmF1bHQpKHtcbiAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lcy5kZWZhdWx0KShwcmVmaXhDbHMsIGNsYXNzTmFtZSwgKF9jbGFzc05hbWVzID0ge30sICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXJ0bFwiKSwgZGlyZWN0aW9uID09PSAncnRsJyksICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXBpbmctbGVmdFwiKSwgcGluZ2VkTGVmdCksICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXBpbmctcmlnaHRcIiksIHBpbmdlZFJpZ2h0KSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbGF5b3V0LWZpeGVkXCIpLCB0YWJsZUxheW91dCA9PT0gJ2ZpeGVkJyksICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWZpeGVkLWhlYWRlclwiKSwgZml4SGVhZGVyKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZml4ZWQtY29sdW1uXCIpLCBmaXhDb2x1bW4pLCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zY3JvbGwtaG9yaXpvbnRhbFwiKSwgaG9yaXpvblNjcm9sbCksICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWhhcy1maXgtbGVmdFwiKSwgZmxhdHRlbkNvbHVtbnNbMF0gJiYgZmxhdHRlbkNvbHVtbnNbMF0uZml4ZWQpLCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1oYXMtZml4LXJpZ2h0XCIpLCBmbGF0dGVuQ29sdW1uc1tmbGF0dGVuQ29sdW1ucy5sZW5ndGggLSAxXSAmJiBmbGF0dGVuQ29sdW1uc1tmbGF0dGVuQ29sdW1ucy5sZW5ndGggLSAxXS5maXhlZCA9PT0gJ3JpZ2h0JyksIF9jbGFzc05hbWVzKSksXG4gICAgc3R5bGU6IHN0eWxlLFxuICAgIGlkOiBpZCxcbiAgICByZWY6IGZ1bGxUYWJsZVJlZlxuICB9LCBhcmlhUHJvcHMpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChNZW1vVGFibGVDb250ZW50LCB7XG4gICAgcGluZ0xlZnQ6IHBpbmdlZExlZnQsXG4gICAgcGluZ1JpZ2h0OiBwaW5nZWRSaWdodCxcbiAgICBwcm9wczogKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKCgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSh7fSwgcHJvcHMpLCB7fSwge1xuICAgICAgc3RpY2t5T2Zmc2V0czogc3RpY2t5T2Zmc2V0cyxcbiAgICAgIG1lcmdlZEV4cGFuZGVkS2V5czogbWVyZ2VkRXhwYW5kZWRLZXlzXG4gICAgfSlcbiAgfSwgdGl0bGUgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX1BhbmVsLmRlZmF1bHQsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdGl0bGVcIilcbiAgfSwgdGl0bGUobWVyZ2VkRGF0YSkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNvbnRhaW5lclwiKVxuICB9LCBncm91cFRhYmxlTm9kZSksIGZvb3RlciAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfUGFuZWwuZGVmYXVsdCwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1mb290ZXJcIilcbiAgfSwgZm9vdGVyKG1lcmdlZERhdGEpKSkpO1xuXG4gIGlmIChob3Jpem9uU2Nyb2xsKSB7XG4gICAgZnVsbFRhYmxlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX3JjUmVzaXplT2JzZXJ2ZXIuZGVmYXVsdCwge1xuICAgICAgb25SZXNpemU6IG9uRnVsbFRhYmxlUmVzaXplXG4gICAgfSwgZnVsbFRhYmxlKTtcbiAgfVxuXG4gIHZhciBUYWJsZUNvbnRleHRWYWx1ZSA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgIGdldENvbXBvbmVudDogZ2V0Q29tcG9uZW50LFxuICAgICAgc2Nyb2xsYmFyU2l6ZTogc2Nyb2xsYmFyU2l6ZSxcbiAgICAgIGRpcmVjdGlvbjogZGlyZWN0aW9uLFxuICAgICAgZml4ZWRJbmZvTGlzdDogZmxhdHRlbkNvbHVtbnMubWFwKGZ1bmN0aW9uIChfLCBjb2xJbmRleCkge1xuICAgICAgICByZXR1cm4gKDAsIF9maXhVdGlsLmdldENlbGxGaXhlZEluZm8pKGNvbEluZGV4LCBjb2xJbmRleCwgZmxhdHRlbkNvbHVtbnMsIHN0aWNreU9mZnNldHMsIGRpcmVjdGlvbik7XG4gICAgICB9KSxcbiAgICAgIGlzU3RpY2t5OiBpc1N0aWNreVxuICAgIH07XG4gIH0sIFtwcmVmaXhDbHMsIGdldENvbXBvbmVudCwgc2Nyb2xsYmFyU2l6ZSwgZGlyZWN0aW9uLCBmbGF0dGVuQ29sdW1ucywgc3RpY2t5T2Zmc2V0cywgZGlyZWN0aW9uLCBpc1N0aWNreV0pO1xuICB2YXIgQm9keUNvbnRleHRWYWx1ZSA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKHt9LCBjb2x1bW5Db250ZXh0KSwge30sIHtcbiAgICAgIHRhYmxlTGF5b3V0OiBtZXJnZWRUYWJsZUxheW91dCxcbiAgICAgIHJvd0NsYXNzTmFtZTogcm93Q2xhc3NOYW1lLFxuICAgICAgZXhwYW5kZWRSb3dDbGFzc05hbWU6IGV4cGFuZGVkUm93Q2xhc3NOYW1lLFxuICAgICAgY29tcG9uZW50V2lkdGg6IGNvbXBvbmVudFdpZHRoLFxuICAgICAgZml4SGVhZGVyOiBmaXhIZWFkZXIsXG4gICAgICBmaXhDb2x1bW46IGZpeENvbHVtbixcbiAgICAgIGhvcml6b25TY3JvbGw6IGhvcml6b25TY3JvbGwsXG4gICAgICBleHBhbmRJY29uOiBtZXJnZWRFeHBhbmRJY29uLFxuICAgICAgZXhwYW5kYWJsZVR5cGU6IGV4cGFuZGFibGVUeXBlLFxuICAgICAgZXhwYW5kUm93QnlDbGljazogZXhwYW5kUm93QnlDbGljayxcbiAgICAgIGV4cGFuZGVkUm93UmVuZGVyOiBleHBhbmRlZFJvd1JlbmRlcixcbiAgICAgIG9uVHJpZ2dlckV4cGFuZDogb25UcmlnZ2VyRXhwYW5kLFxuICAgICAgZXhwYW5kSWNvbkNvbHVtbkluZGV4OiBleHBhbmRJY29uQ29sdW1uSW5kZXgsXG4gICAgICBpbmRlbnRTaXplOiBpbmRlbnRTaXplXG4gICAgfSk7XG4gIH0sIFtjb2x1bW5Db250ZXh0LCBtZXJnZWRUYWJsZUxheW91dCwgcm93Q2xhc3NOYW1lLCBleHBhbmRlZFJvd0NsYXNzTmFtZSwgY29tcG9uZW50V2lkdGgsIGZpeEhlYWRlciwgZml4Q29sdW1uLCBob3Jpem9uU2Nyb2xsLCBtZXJnZWRFeHBhbmRJY29uLCBleHBhbmRhYmxlVHlwZSwgZXhwYW5kUm93QnlDbGljaywgZXhwYW5kZWRSb3dSZW5kZXIsIG9uVHJpZ2dlckV4cGFuZCwgZXhwYW5kSWNvbkNvbHVtbkluZGV4LCBpbmRlbnRTaXplXSk7XG4gIHZhciBSZXNpemVDb250ZXh0VmFsdWUgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb25Db2x1bW5SZXNpemU6IG9uQ29sdW1uUmVzaXplXG4gICAgfTtcbiAgfSwgW29uQ29sdW1uUmVzaXplXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfVGFibGVDb250ZXh0LmRlZmF1bHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogVGFibGVDb250ZXh0VmFsdWVcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0JvZHlDb250ZXh0LmRlZmF1bHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogQm9keUNvbnRleHRWYWx1ZVxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfUmVzaXplQ29udGV4dC5kZWZhdWx0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IFJlc2l6ZUNvbnRleHRWYWx1ZVxuICB9LCBmdWxsVGFibGUpKSk7XG59XG5cblRhYmxlLkNvbHVtbiA9IF9Db2x1bW4uZGVmYXVsdDtcblRhYmxlLkNvbHVtbkdyb3VwID0gX0NvbHVtbkdyb3VwLmRlZmF1bHQ7XG5UYWJsZS5TdW1tYXJ5ID0gX0Zvb3Rlci5Gb290ZXJDb21wb25lbnRzO1xuVGFibGUuZGVmYXVsdFByb3BzID0ge1xuICByb3dLZXk6ICdrZXknLFxuICBwcmVmaXhDbHM6ICdyYy10YWJsZScsXG4gIGVtcHR5VGV4dDogZnVuY3Rpb24gZW1wdHlUZXh0KCkge1xuICAgIHJldHVybiAnTm8gRGF0YSc7XG4gIH1cbn07XG52YXIgX2RlZmF1bHQgPSBUYWJsZTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcblxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShhcnIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhvdXRIb2xlcztcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVNwcmVhZDtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9kZWZhdWx0ID0gZnVuY3Rpb24gX2RlZmF1bHQoZWxlbWVudCkge1xuICBpZiAoIWVsZW1lbnQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlbGVtZW50LmdldEJCb3gpIHtcbiAgICB2YXIgYm94ID0gZWxlbWVudC5nZXRCQm94KCk7XG5cbiAgICBpZiAoYm94LndpZHRoIHx8IGJveC5oZWlnaHQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCkge1xuICAgIHZhciBfYm94ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGlmIChfYm94LndpZHRoIHx8IF9ib3guaGVpZ2h0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuLyoqXG4gKiBUaGlzIGlzIGEgc3ludGFjdGljIHN1Z2FyIGZvciBgY29sdW1uc2AgcHJvcC5cbiAqIFNvIEhPQyB3aWxsIG5vdCB3b3JrIG9uIHRoaXMuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmZ1bmN0aW9uIENvbHVtbkdyb3VwKF8pIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbnZhciBfZGVmYXVsdCA9IENvbHVtbkdyb3VwO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cbi8qKlxuICogVGhpcyBpcyBhIHN5bnRhY3RpYyBzdWdhciBmb3IgYGNvbHVtbnNgIHByb3AuXG4gKiBTbyBIT0Mgd2lsbCBub3Qgd29yayBvbiB0aGlzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5mdW5jdGlvbiBDb2x1bW4oXykge1xuICByZXR1cm4gbnVsbDtcbn1cblxudmFyIF9kZWZhdWx0ID0gQ29sdW1uO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlV2lsZGNhcmRcIik7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpKTtcblxudmFyIF9vYmplY3RTcHJlYWQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RTcHJlYWQyXCIpKTtcblxudmFyIF90b0NvbnN1bWFibGVBcnJheTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCIpKTtcblxudmFyIF9vYmplY3RXaXRob3V0UHJvcGVydGllczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfcmVmMiA9IHJlcXVpcmUoXCJyYy11dGlsL2xpYi9yZWZcIik7XG5cbnZhciBfSGVhZGVyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9IZWFkZXJcIikpO1xuXG52YXIgX0NvbEdyb3VwID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vQ29sR3JvdXBcIikpO1xuXG52YXIgX1RhYmxlQ29udGV4dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2NvbnRleHQvVGFibGVDb250ZXh0XCIpKTtcblxuZnVuY3Rpb24gdXNlQ29sdW1uV2lkdGgoY29sV2lkdGhzLCBjb2x1bUNvdW50KSB7XG4gIHJldHVybiAoMCwgUmVhY3QudXNlTWVtbykoZnVuY3Rpb24gKCkge1xuICAgIHZhciBjbG9uZUNvbHVtbnMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29sdW1Db3VudDsgaSArPSAxKSB7XG4gICAgICB2YXIgdmFsID0gY29sV2lkdGhzW2ldO1xuXG4gICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xvbmVDb2x1bW5zW2ldID0gdmFsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lQ29sdW1ucztcbiAgfSwgW2NvbFdpZHRocy5qb2luKCdfJyksIGNvbHVtQ291bnRdKTtcbn1cblxudmFyIEZpeGVkSGVhZGVyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKF9yZWYsIHJlZikge1xuICB2YXIgbm9EYXRhID0gX3JlZi5ub0RhdGEsXG4gICAgICBjb2x1bW5zID0gX3JlZi5jb2x1bW5zLFxuICAgICAgZmxhdHRlbkNvbHVtbnMgPSBfcmVmLmZsYXR0ZW5Db2x1bW5zLFxuICAgICAgY29sV2lkdGhzID0gX3JlZi5jb2xXaWR0aHMsXG4gICAgICBjb2x1bUNvdW50ID0gX3JlZi5jb2x1bUNvdW50LFxuICAgICAgc3RpY2t5T2Zmc2V0cyA9IF9yZWYuc3RpY2t5T2Zmc2V0cyxcbiAgICAgIGRpcmVjdGlvbiA9IF9yZWYuZGlyZWN0aW9uLFxuICAgICAgZml4SGVhZGVyID0gX3JlZi5maXhIZWFkZXIsXG4gICAgICBvZmZzZXRIZWFkZXIgPSBfcmVmLm9mZnNldEhlYWRlcixcbiAgICAgIHN0aWNreUNsYXNzTmFtZSA9IF9yZWYuc3RpY2t5Q2xhc3NOYW1lLFxuICAgICAgb25TY3JvbGwgPSBfcmVmLm9uU2Nyb2xsLFxuICAgICAgbWF4Q29udGVudFNjcm9sbCA9IF9yZWYubWF4Q29udGVudFNjcm9sbCxcbiAgICAgIHByb3BzID0gKDAsIF9vYmplY3RXaXRob3V0UHJvcGVydGllczIuZGVmYXVsdCkoX3JlZiwgW1wibm9EYXRhXCIsIFwiY29sdW1uc1wiLCBcImZsYXR0ZW5Db2x1bW5zXCIsIFwiY29sV2lkdGhzXCIsIFwiY29sdW1Db3VudFwiLCBcInN0aWNreU9mZnNldHNcIiwgXCJkaXJlY3Rpb25cIiwgXCJmaXhIZWFkZXJcIiwgXCJvZmZzZXRIZWFkZXJcIiwgXCJzdGlja3lDbGFzc05hbWVcIiwgXCJvblNjcm9sbFwiLCBcIm1heENvbnRlbnRTY3JvbGxcIl0pO1xuXG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoX1RhYmxlQ29udGV4dC5kZWZhdWx0KSxcbiAgICAgIHByZWZpeENscyA9IF9SZWFjdCR1c2VDb250ZXh0LnByZWZpeENscyxcbiAgICAgIHNjcm9sbGJhclNpemUgPSBfUmVhY3QkdXNlQ29udGV4dC5zY3JvbGxiYXJTaXplLFxuICAgICAgaXNTdGlja3kgPSBfUmVhY3QkdXNlQ29udGV4dC5pc1N0aWNreTtcblxuICB2YXIgY29tYmluYXRpb25TY3JvbGxCYXJTaXplID0gaXNTdGlja3kgJiYgIWZpeEhlYWRlciA/IDAgOiBzY3JvbGxiYXJTaXplOyAvLyBQYXNzIHdoZWVsIHRvIHNjcm9sbCBldmVudFxuXG4gIHZhciBzY3JvbGxSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIHZhciBzZXRTY3JvbGxSZWYgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICgwLCBfcmVmMi5maWxsUmVmKShyZWYsIGVsZW1lbnQpO1xuICAgICgwLCBfcmVmMi5maWxsUmVmKShzY3JvbGxSZWYsIGVsZW1lbnQpO1xuICB9LCBbXSk7XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9zY3JvbGxSZWYkY3VycmVudDtcblxuICAgIGZ1bmN0aW9uIG9uV2hlZWwoZSkge1xuICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQsXG4gICAgICAgICAgZGVsdGFYID0gZS5kZWx0YVg7XG5cbiAgICAgIGlmIChkZWx0YVgpIHtcbiAgICAgICAgb25TY3JvbGwoe1xuICAgICAgICAgIGN1cnJlbnRUYXJnZXQ6IGN1cnJlbnRUYXJnZXQsXG4gICAgICAgICAgc2Nyb2xsTGVmdDogY3VycmVudFRhcmdldC5zY3JvbGxMZWZ0ICsgZGVsdGFYXG4gICAgICAgIH0pO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgKF9zY3JvbGxSZWYkY3VycmVudCA9IHNjcm9sbFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfc2Nyb2xsUmVmJGN1cnJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zY3JvbGxSZWYkY3VycmVudC5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3Njcm9sbFJlZiRjdXJyZW50MjtcblxuICAgICAgKF9zY3JvbGxSZWYkY3VycmVudDIgPSBzY3JvbGxSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX3Njcm9sbFJlZiRjdXJyZW50MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3Njcm9sbFJlZiRjdXJyZW50Mi5yZW1vdmVFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwpO1xuICAgIH07XG4gIH0sIFtdKTsgLy8gQ2hlY2sgaWYgYWxsIGZsYXR0ZW5Db2x1bW5zIGhhcyB3aWR0aFxuXG4gIHZhciBhbGxGbGF0dGVuQ29sdW1uc1dpdGhXaWR0aCA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmbGF0dGVuQ29sdW1ucy5ldmVyeShmdW5jdGlvbiAoY29sdW1uKSB7XG4gICAgICByZXR1cm4gY29sdW1uLndpZHRoID49IDA7XG4gICAgfSk7XG4gIH0sIFtmbGF0dGVuQ29sdW1uc10pOyAvLyBBZGQgc2Nyb2xsYmFyIGNvbHVtblxuXG4gIHZhciBsYXN0Q29sdW1uID0gZmxhdHRlbkNvbHVtbnNbZmxhdHRlbkNvbHVtbnMubGVuZ3RoIC0gMV07XG4gIHZhciBTY3JvbGxCYXJDb2x1bW4gPSB7XG4gICAgZml4ZWQ6IGxhc3RDb2x1bW4gPyBsYXN0Q29sdW1uLmZpeGVkIDogbnVsbCxcbiAgICBvbkhlYWRlckNlbGw6IGZ1bmN0aW9uIG9uSGVhZGVyQ2VsbCgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1jZWxsLXNjcm9sbGJhclwiKVxuICAgICAgfTtcbiAgICB9XG4gIH07XG4gIHZhciBjb2x1bW5zV2l0aFNjcm9sbGJhciA9ICgwLCBSZWFjdC51c2VNZW1vKShmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNvbWJpbmF0aW9uU2Nyb2xsQmFyU2l6ZSA/IFtdLmNvbmNhdCgoMCwgX3RvQ29uc3VtYWJsZUFycmF5Mi5kZWZhdWx0KShjb2x1bW5zKSwgW1Njcm9sbEJhckNvbHVtbl0pIDogY29sdW1ucztcbiAgfSwgW2NvbWJpbmF0aW9uU2Nyb2xsQmFyU2l6ZSwgY29sdW1uc10pO1xuICB2YXIgZmxhdHRlbkNvbHVtbnNXaXRoU2Nyb2xsYmFyID0gKDAsIFJlYWN0LnVzZU1lbW8pKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY29tYmluYXRpb25TY3JvbGxCYXJTaXplID8gW10uY29uY2F0KCgwLCBfdG9Db25zdW1hYmxlQXJyYXkyLmRlZmF1bHQpKGZsYXR0ZW5Db2x1bW5zKSwgW1Njcm9sbEJhckNvbHVtbl0pIDogZmxhdHRlbkNvbHVtbnM7XG4gIH0sIFtjb21iaW5hdGlvblNjcm9sbEJhclNpemUsIGZsYXR0ZW5Db2x1bW5zXSk7IC8vIENhbGN1bGF0ZSB0aGUgc3RpY2t5IG9mZnNldHNcblxuICB2YXIgaGVhZGVyU3RpY2t5T2Zmc2V0cyA9ICgwLCBSZWFjdC51c2VNZW1vKShmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJpZ2h0ID0gc3RpY2t5T2Zmc2V0cy5yaWdodCxcbiAgICAgICAgbGVmdCA9IHN0aWNreU9mZnNldHMubGVmdDtcbiAgICByZXR1cm4gKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKCgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSh7fSwgc3RpY2t5T2Zmc2V0cyksIHt9LCB7XG4gICAgICBsZWZ0OiBkaXJlY3Rpb24gPT09ICdydGwnID8gW10uY29uY2F0KCgwLCBfdG9Db25zdW1hYmxlQXJyYXkyLmRlZmF1bHQpKGxlZnQubWFwKGZ1bmN0aW9uICh3aWR0aCkge1xuICAgICAgICByZXR1cm4gd2lkdGggKyBjb21iaW5hdGlvblNjcm9sbEJhclNpemU7XG4gICAgICB9KSksIFswXSkgOiBsZWZ0LFxuICAgICAgcmlnaHQ6IGRpcmVjdGlvbiA9PT0gJ3J0bCcgPyByaWdodCA6IFtdLmNvbmNhdCgoMCwgX3RvQ29uc3VtYWJsZUFycmF5Mi5kZWZhdWx0KShyaWdodC5tYXAoZnVuY3Rpb24gKHdpZHRoKSB7XG4gICAgICAgIHJldHVybiB3aWR0aCArIGNvbWJpbmF0aW9uU2Nyb2xsQmFyU2l6ZTtcbiAgICAgIH0pKSwgWzBdKSxcbiAgICAgIGlzU3RpY2t5OiBpc1N0aWNreVxuICAgIH0pO1xuICB9LCBbY29tYmluYXRpb25TY3JvbGxCYXJTaXplLCBzdGlja3lPZmZzZXRzLCBpc1N0aWNreV0pO1xuICB2YXIgbWVyZ2VkQ29sdW1uV2lkdGggPSB1c2VDb2x1bW5XaWR0aChjb2xXaWR0aHMsIGNvbHVtQ291bnQpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIHN0eWxlOiAoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoe1xuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gICAgfSwgaXNTdGlja3kgPyB7XG4gICAgICB0b3A6IG9mZnNldEhlYWRlclxuICAgIH0gOiB7fSksXG4gICAgcmVmOiBzZXRTY3JvbGxSZWYsXG4gICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXMuZGVmYXVsdCkoXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1oZWFkZXJcIiksICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHt9LCBzdGlja3lDbGFzc05hbWUsICEhc3RpY2t5Q2xhc3NOYW1lKSlcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ0YWJsZVwiLCB7XG4gICAgc3R5bGU6IHtcbiAgICAgIHRhYmxlTGF5b3V0OiAnZml4ZWQnLFxuICAgICAgdmlzaWJpbGl0eTogbm9EYXRhIHx8IG1lcmdlZENvbHVtbldpZHRoID8gbnVsbCA6ICdoaWRkZW4nXG4gICAgfVxuICB9LCAoIW5vRGF0YSB8fCAhbWF4Q29udGVudFNjcm9sbCB8fCBhbGxGbGF0dGVuQ29sdW1uc1dpdGhXaWR0aCkgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0NvbEdyb3VwLmRlZmF1bHQsIHtcbiAgICBjb2xXaWR0aHM6IG1lcmdlZENvbHVtbldpZHRoID8gW10uY29uY2F0KCgwLCBfdG9Db25zdW1hYmxlQXJyYXkyLmRlZmF1bHQpKG1lcmdlZENvbHVtbldpZHRoKSwgW2NvbWJpbmF0aW9uU2Nyb2xsQmFyU2l6ZV0pIDogW10sXG4gICAgY29sdW1Db3VudDogY29sdW1Db3VudCArIDEsXG4gICAgY29sdW1uczogZmxhdHRlbkNvbHVtbnNXaXRoU2Nyb2xsYmFyXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfSGVhZGVyLmRlZmF1bHQsICgwLCBfZXh0ZW5kczIuZGVmYXVsdCkoe30sIHByb3BzLCB7XG4gICAgc3RpY2t5T2Zmc2V0czogaGVhZGVyU3RpY2t5T2Zmc2V0cyxcbiAgICBjb2x1bW5zOiBjb2x1bW5zV2l0aFNjcm9sbGJhcixcbiAgICBmbGF0dGVuQ29sdW1uczogZmxhdHRlbkNvbHVtbnNXaXRoU2Nyb2xsYmFyXG4gIH0pKSkpO1xufSk7XG5GaXhlZEhlYWRlci5kaXNwbGF5TmFtZSA9ICdGaXhlZEhlYWRlcic7XG52YXIgX2RlZmF1bHQgPSBGaXhlZEhlYWRlcjtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsImZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0gc291cmNlS2V5c1tpXTtcbiAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9leHRlbmRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfQ2VsbCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL0NlbGxcIikpO1xuXG52YXIgX1RhYmxlQ29udGV4dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2NvbnRleHQvVGFibGVDb250ZXh0XCIpKTtcblxudmFyIF9maXhVdGlsID0gcmVxdWlyZShcIi4uL3V0aWxzL2ZpeFV0aWxcIik7XG5cbnZhciBfdmFsdWVVdGlsID0gcmVxdWlyZShcIi4uL3V0aWxzL3ZhbHVlVXRpbFwiKTtcblxuZnVuY3Rpb24gSGVhZGVyUm93KF9yZWYpIHtcbiAgdmFyIGNlbGxzID0gX3JlZi5jZWxscyxcbiAgICAgIHN0aWNreU9mZnNldHMgPSBfcmVmLnN0aWNreU9mZnNldHMsXG4gICAgICBmbGF0dGVuQ29sdW1ucyA9IF9yZWYuZmxhdHRlbkNvbHVtbnMsXG4gICAgICBSb3dDb21wb25lbnQgPSBfcmVmLnJvd0NvbXBvbmVudCxcbiAgICAgIENlbGxDb21wb25lbnQgPSBfcmVmLmNlbGxDb21wb25lbnQsXG4gICAgICBvbkhlYWRlclJvdyA9IF9yZWYub25IZWFkZXJSb3csXG4gICAgICBpbmRleCA9IF9yZWYuaW5kZXg7XG5cbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChfVGFibGVDb250ZXh0LmRlZmF1bHQpLFxuICAgICAgcHJlZml4Q2xzID0gX1JlYWN0JHVzZUNvbnRleHQucHJlZml4Q2xzLFxuICAgICAgZGlyZWN0aW9uID0gX1JlYWN0JHVzZUNvbnRleHQuZGlyZWN0aW9uO1xuXG4gIHZhciByb3dQcm9wcztcblxuICBpZiAob25IZWFkZXJSb3cpIHtcbiAgICByb3dQcm9wcyA9IG9uSGVhZGVyUm93KGNlbGxzLm1hcChmdW5jdGlvbiAoY2VsbCkge1xuICAgICAgcmV0dXJuIGNlbGwuY29sdW1uO1xuICAgIH0pLCBpbmRleCk7XG4gIH1cblxuICB2YXIgY29sdW1uc0tleSA9ICgwLCBfdmFsdWVVdGlsLmdldENvbHVtbnNLZXkpKGNlbGxzLm1hcChmdW5jdGlvbiAoY2VsbCkge1xuICAgIHJldHVybiBjZWxsLmNvbHVtbjtcbiAgfSkpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUm93Q29tcG9uZW50LCByb3dQcm9wcywgY2VsbHMubWFwKGZ1bmN0aW9uIChjZWxsLCBjZWxsSW5kZXgpIHtcbiAgICB2YXIgY29sdW1uID0gY2VsbC5jb2x1bW47XG4gICAgdmFyIGZpeGVkSW5mbyA9ICgwLCBfZml4VXRpbC5nZXRDZWxsRml4ZWRJbmZvKShjZWxsLmNvbFN0YXJ0LCBjZWxsLmNvbEVuZCwgZmxhdHRlbkNvbHVtbnMsIHN0aWNreU9mZnNldHMsIGRpcmVjdGlvbik7XG4gICAgdmFyIGFkZGl0aW9uYWxQcm9wcztcblxuICAgIGlmIChjb2x1bW4gJiYgY29sdW1uLm9uSGVhZGVyQ2VsbCkge1xuICAgICAgYWRkaXRpb25hbFByb3BzID0gY2VsbC5jb2x1bW4ub25IZWFkZXJDZWxsKGNvbHVtbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9DZWxsLmRlZmF1bHQsICgwLCBfZXh0ZW5kczIuZGVmYXVsdCkoe30sIGNlbGwsIHtcbiAgICAgIGVsbGlwc2lzOiBjb2x1bW4uZWxsaXBzaXMsXG4gICAgICBhbGlnbjogY29sdW1uLmFsaWduLFxuICAgICAgY29tcG9uZW50OiBDZWxsQ29tcG9uZW50LFxuICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICBrZXk6IGNvbHVtbnNLZXlbY2VsbEluZGV4XVxuICAgIH0sIGZpeGVkSW5mbywge1xuICAgICAgYWRkaXRpb25hbFByb3BzOiBhZGRpdGlvbmFsUHJvcHMsXG4gICAgICByb3dUeXBlOiBcImhlYWRlclwiXG4gICAgfSkpO1xuICB9KSk7XG59XG5cbkhlYWRlclJvdy5kaXNwbGF5TmFtZSA9ICdIZWFkZXJSb3cnO1xudmFyIF9kZWZhdWx0ID0gSGVhZGVyUm93O1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX0JvZHlSb3cgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL0JvZHlSb3dcIikpO1xuXG52YXIgX1RhYmxlQ29udGV4dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2NvbnRleHQvVGFibGVDb250ZXh0XCIpKTtcblxudmFyIF9FeHBhbmRlZFJvdyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vRXhwYW5kZWRSb3dcIikpO1xuXG52YXIgX0JvZHlDb250ZXh0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vY29udGV4dC9Cb2R5Q29udGV4dFwiKSk7XG5cbnZhciBfdmFsdWVVdGlsID0gcmVxdWlyZShcIi4uL3V0aWxzL3ZhbHVlVXRpbFwiKTtcblxudmFyIF9SZXNpemVDb250ZXh0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vY29udGV4dC9SZXNpemVDb250ZXh0XCIpKTtcblxudmFyIF9NZWFzdXJlQ2VsbCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vTWVhc3VyZUNlbGxcIikpO1xuXG5mdW5jdGlvbiBCb2R5KF9yZWYpIHtcbiAgdmFyIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICBnZXRSb3dLZXkgPSBfcmVmLmdldFJvd0tleSxcbiAgICAgIG1lYXN1cmVDb2x1bW5XaWR0aCA9IF9yZWYubWVhc3VyZUNvbHVtbldpZHRoLFxuICAgICAgZXhwYW5kZWRLZXlzID0gX3JlZi5leHBhbmRlZEtleXMsXG4gICAgICBvblJvdyA9IF9yZWYub25Sb3csXG4gICAgICByb3dFeHBhbmRhYmxlID0gX3JlZi5yb3dFeHBhbmRhYmxlLFxuICAgICAgZW1wdHlOb2RlID0gX3JlZi5lbXB0eU5vZGUsXG4gICAgICBjaGlsZHJlbkNvbHVtbk5hbWUgPSBfcmVmLmNoaWxkcmVuQ29sdW1uTmFtZTtcblxuICB2YXIgX1JlYWN0JHVzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KF9SZXNpemVDb250ZXh0LmRlZmF1bHQpLFxuICAgICAgb25Db2x1bW5SZXNpemUgPSBfUmVhY3QkdXNlQ29udGV4dC5vbkNvbHVtblJlc2l6ZTtcblxuICB2YXIgX1JlYWN0JHVzZUNvbnRleHQyID0gUmVhY3QudXNlQ29udGV4dChfVGFibGVDb250ZXh0LmRlZmF1bHQpLFxuICAgICAgcHJlZml4Q2xzID0gX1JlYWN0JHVzZUNvbnRleHQyLnByZWZpeENscyxcbiAgICAgIGdldENvbXBvbmVudCA9IF9SZWFjdCR1c2VDb250ZXh0Mi5nZXRDb21wb25lbnQ7XG5cbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0MyA9IFJlYWN0LnVzZUNvbnRleHQoX0JvZHlDb250ZXh0LmRlZmF1bHQpLFxuICAgICAgZml4SGVhZGVyID0gX1JlYWN0JHVzZUNvbnRleHQzLmZpeEhlYWRlcixcbiAgICAgIGhvcml6b25TY3JvbGwgPSBfUmVhY3QkdXNlQ29udGV4dDMuaG9yaXpvblNjcm9sbCxcbiAgICAgIGZsYXR0ZW5Db2x1bW5zID0gX1JlYWN0JHVzZUNvbnRleHQzLmZsYXR0ZW5Db2x1bW5zLFxuICAgICAgY29tcG9uZW50V2lkdGggPSBfUmVhY3QkdXNlQ29udGV4dDMuY29tcG9uZW50V2lkdGg7XG5cbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBXcmFwcGVyQ29tcG9uZW50ID0gZ2V0Q29tcG9uZW50KFsnYm9keScsICd3cmFwcGVyJ10sICd0Ym9keScpO1xuICAgIHZhciB0ckNvbXBvbmVudCA9IGdldENvbXBvbmVudChbJ2JvZHknLCAncm93J10sICd0cicpO1xuICAgIHZhciB0ZENvbXBvbmVudCA9IGdldENvbXBvbmVudChbJ2JvZHknLCAnY2VsbCddLCAndGQnKTtcbiAgICB2YXIgcm93cztcblxuICAgIGlmIChkYXRhLmxlbmd0aCkge1xuICAgICAgcm93cyA9IGRhdGEubWFwKGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XG4gICAgICAgIHZhciBrZXkgPSBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCk7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQm9keVJvdy5kZWZhdWx0LCB7XG4gICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgcm93S2V5OiBrZXksXG4gICAgICAgICAgcmVjb3JkOiByZWNvcmQsXG4gICAgICAgICAgcmVjb3JkS2V5OiBrZXksXG4gICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgIHJvd0NvbXBvbmVudDogdHJDb21wb25lbnQsXG4gICAgICAgICAgY2VsbENvbXBvbmVudDogdGRDb21wb25lbnQsXG4gICAgICAgICAgZXhwYW5kZWRLZXlzOiBleHBhbmRlZEtleXMsXG4gICAgICAgICAgb25Sb3c6IG9uUm93LFxuICAgICAgICAgIGdldFJvd0tleTogZ2V0Um93S2V5LFxuICAgICAgICAgIHJvd0V4cGFuZGFibGU6IHJvd0V4cGFuZGFibGUsXG4gICAgICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lOiBjaGlsZHJlbkNvbHVtbk5hbWVcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm93cyA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9FeHBhbmRlZFJvdy5kZWZhdWx0LCB7XG4gICAgICAgIGV4cGFuZGVkOiB0cnVlLFxuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcGxhY2Vob2xkZXJcIiksXG4gICAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgICBmaXhIZWFkZXI6IGZpeEhlYWRlcixcbiAgICAgICAgZml4Q29sdW1uOiBob3Jpem9uU2Nyb2xsLFxuICAgICAgICBob3Jpem9uU2Nyb2xsOiBob3Jpem9uU2Nyb2xsLFxuICAgICAgICBjb21wb25lbnQ6IHRyQ29tcG9uZW50LFxuICAgICAgICBjb21wb25lbnRXaWR0aDogY29tcG9uZW50V2lkdGgsXG4gICAgICAgIGNlbGxDb21wb25lbnQ6IHRkQ29tcG9uZW50LFxuICAgICAgICBjb2xTcGFuOiBmbGF0dGVuQ29sdW1ucy5sZW5ndGhcbiAgICAgIH0sIGVtcHR5Tm9kZSk7XG4gICAgfVxuXG4gICAgdmFyIGNvbHVtbnNLZXkgPSAoMCwgX3ZhbHVlVXRpbC5nZXRDb2x1bW5zS2V5KShmbGF0dGVuQ29sdW1ucyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFdyYXBwZXJDb21wb25lbnQsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi10Ym9keVwiKVxuICAgIH0sIG1lYXN1cmVDb2x1bW5XaWR0aCAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInRyXCIsIHtcbiAgICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsXG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbWVhc3VyZS1yb3dcIiksXG4gICAgICBzdHlsZToge1xuICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIGZvbnRTaXplOiAwXG4gICAgICB9XG4gICAgfSwgY29sdW1uc0tleS5tYXAoZnVuY3Rpb24gKGNvbHVtbktleSkge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9NZWFzdXJlQ2VsbC5kZWZhdWx0LCB7XG4gICAgICAgIGtleTogY29sdW1uS2V5LFxuICAgICAgICBjb2x1bW5LZXk6IGNvbHVtbktleSxcbiAgICAgICAgb25Db2x1bW5SZXNpemU6IG9uQ29sdW1uUmVzaXplXG4gICAgICB9KTtcbiAgICB9KSksIHJvd3MpO1xuICB9LCBbZGF0YSwgcHJlZml4Q2xzLCBvblJvdywgbWVhc3VyZUNvbHVtbldpZHRoLCBleHBhbmRlZEtleXMsIGdldFJvd0tleSwgZ2V0Q29tcG9uZW50LCBjb21wb25lbnRXaWR0aCwgZW1wdHlOb2RlLCBmbGF0dGVuQ29sdW1uc10pO1xufVxuXG52YXIgTWVtb0JvZHkgPSAvKiNfX1BVUkVfXyovUmVhY3QubWVtbyhCb2R5KTtcbk1lbW9Cb2R5LmRpc3BsYXlOYW1lID0gJ0JvZHknO1xudmFyIF9kZWZhdWx0ID0gTWVtb0JvZHk7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfZXh0ZW5kczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIikpO1xuXG52YXIgX29iamVjdFNwcmVhZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFNwcmVhZDJcIikpO1xuXG52YXIgX3NsaWNlZFRvQXJyYXkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfQ2VsbCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL0NlbGxcIikpO1xuXG52YXIgX1RhYmxlQ29udGV4dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2NvbnRleHQvVGFibGVDb250ZXh0XCIpKTtcblxudmFyIF9Cb2R5Q29udGV4dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2NvbnRleHQvQm9keUNvbnRleHRcIikpO1xuXG52YXIgX3ZhbHVlVXRpbCA9IHJlcXVpcmUoXCIuLi91dGlscy92YWx1ZVV0aWxcIik7XG5cbnZhciBfRXhwYW5kZWRSb3cgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL0V4cGFuZGVkUm93XCIpKTtcblxuZnVuY3Rpb24gQm9keVJvdyhwcm9wcykge1xuICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgc3R5bGUgPSBwcm9wcy5zdHlsZSxcbiAgICAgIHJlY29yZCA9IHByb3BzLnJlY29yZCxcbiAgICAgIGluZGV4ID0gcHJvcHMuaW5kZXgsXG4gICAgICByb3dLZXkgPSBwcm9wcy5yb3dLZXksXG4gICAgICBnZXRSb3dLZXkgPSBwcm9wcy5nZXRSb3dLZXksXG4gICAgICByb3dFeHBhbmRhYmxlID0gcHJvcHMucm93RXhwYW5kYWJsZSxcbiAgICAgIGV4cGFuZGVkS2V5cyA9IHByb3BzLmV4cGFuZGVkS2V5cyxcbiAgICAgIG9uUm93ID0gcHJvcHMub25Sb3csXG4gICAgICBfcHJvcHMkaW5kZW50ID0gcHJvcHMuaW5kZW50LFxuICAgICAgaW5kZW50ID0gX3Byb3BzJGluZGVudCA9PT0gdm9pZCAwID8gMCA6IF9wcm9wcyRpbmRlbnQsXG4gICAgICBSb3dDb21wb25lbnQgPSBwcm9wcy5yb3dDb21wb25lbnQsXG4gICAgICBjZWxsQ29tcG9uZW50ID0gcHJvcHMuY2VsbENvbXBvbmVudCxcbiAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZSA9IHByb3BzLmNoaWxkcmVuQ29sdW1uTmFtZTtcblxuICB2YXIgX1JlYWN0JHVzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KF9UYWJsZUNvbnRleHQuZGVmYXVsdCksXG4gICAgICBwcmVmaXhDbHMgPSBfUmVhY3QkdXNlQ29udGV4dC5wcmVmaXhDbHMsXG4gICAgICBmaXhlZEluZm9MaXN0ID0gX1JlYWN0JHVzZUNvbnRleHQuZml4ZWRJbmZvTGlzdDtcblxuICB2YXIgX1JlYWN0JHVzZUNvbnRleHQyID0gUmVhY3QudXNlQ29udGV4dChfQm9keUNvbnRleHQuZGVmYXVsdCksXG4gICAgICBmaXhIZWFkZXIgPSBfUmVhY3QkdXNlQ29udGV4dDIuZml4SGVhZGVyLFxuICAgICAgZml4Q29sdW1uID0gX1JlYWN0JHVzZUNvbnRleHQyLmZpeENvbHVtbixcbiAgICAgIGhvcml6b25TY3JvbGwgPSBfUmVhY3QkdXNlQ29udGV4dDIuaG9yaXpvblNjcm9sbCxcbiAgICAgIGNvbXBvbmVudFdpZHRoID0gX1JlYWN0JHVzZUNvbnRleHQyLmNvbXBvbmVudFdpZHRoLFxuICAgICAgZmxhdHRlbkNvbHVtbnMgPSBfUmVhY3QkdXNlQ29udGV4dDIuZmxhdHRlbkNvbHVtbnMsXG4gICAgICBleHBhbmRhYmxlVHlwZSA9IF9SZWFjdCR1c2VDb250ZXh0Mi5leHBhbmRhYmxlVHlwZSxcbiAgICAgIGV4cGFuZFJvd0J5Q2xpY2sgPSBfUmVhY3QkdXNlQ29udGV4dDIuZXhwYW5kUm93QnlDbGljayxcbiAgICAgIG9uVHJpZ2dlckV4cGFuZCA9IF9SZWFjdCR1c2VDb250ZXh0Mi5vblRyaWdnZXJFeHBhbmQsXG4gICAgICByb3dDbGFzc05hbWUgPSBfUmVhY3QkdXNlQ29udGV4dDIucm93Q2xhc3NOYW1lLFxuICAgICAgZXhwYW5kZWRSb3dDbGFzc05hbWUgPSBfUmVhY3QkdXNlQ29udGV4dDIuZXhwYW5kZWRSb3dDbGFzc05hbWUsXG4gICAgICBpbmRlbnRTaXplID0gX1JlYWN0JHVzZUNvbnRleHQyLmluZGVudFNpemUsXG4gICAgICBleHBhbmRJY29uID0gX1JlYWN0JHVzZUNvbnRleHQyLmV4cGFuZEljb24sXG4gICAgICBleHBhbmRlZFJvd1JlbmRlciA9IF9SZWFjdCR1c2VDb250ZXh0Mi5leHBhbmRlZFJvd1JlbmRlcixcbiAgICAgIGV4cGFuZEljb25Db2x1bW5JbmRleCA9IF9SZWFjdCR1c2VDb250ZXh0Mi5leHBhbmRJY29uQ29sdW1uSW5kZXg7XG5cbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSxcbiAgICAgIF9SZWFjdCR1c2VTdGF0ZTIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyLmRlZmF1bHQpKF9SZWFjdCR1c2VTdGF0ZSwgMiksXG4gICAgICBleHBhbmRSZW5kZWQgPSBfUmVhY3QkdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0RXhwYW5kUmVuZGVkID0gX1JlYWN0JHVzZVN0YXRlMlsxXTtcblxuICB2YXIgZXhwYW5kZWQgPSBleHBhbmRlZEtleXMgJiYgZXhwYW5kZWRLZXlzLmhhcyhwcm9wcy5yZWNvcmRLZXkpO1xuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmIChleHBhbmRlZCkge1xuICAgICAgc2V0RXhwYW5kUmVuZGVkKHRydWUpO1xuICAgIH1cbiAgfSwgW2V4cGFuZGVkXSk7XG4gIHZhciByb3dTdXBwb3J0RXhwYW5kID0gZXhwYW5kYWJsZVR5cGUgPT09ICdyb3cnICYmICghcm93RXhwYW5kYWJsZSB8fCByb3dFeHBhbmRhYmxlKHJlY29yZCkpOyAvLyBPbmx5IHdoZW4gcm93IGlzIG5vdCBleHBhbmRhYmxlIGFuZCBgY2hpbGRyZW5gIGV4aXN0IGluIHJlY29yZFxuXG4gIHZhciBuZXN0RXhwYW5kYWJsZSA9IGV4cGFuZGFibGVUeXBlID09PSAnbmVzdCc7XG4gIHZhciBoYXNOZXN0Q2hpbGRyZW4gPSBjaGlsZHJlbkNvbHVtbk5hbWUgJiYgcmVjb3JkICYmIHJlY29yZFtjaGlsZHJlbkNvbHVtbk5hbWVdO1xuICB2YXIgbWVyZ2VkRXhwYW5kYWJsZSA9IHJvd1N1cHBvcnRFeHBhbmQgfHwgbmVzdEV4cGFuZGFibGU7IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PSBvblJvdyA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICB2YXIgYWRkaXRpb25hbFByb3BzO1xuXG4gIGlmIChvblJvdykge1xuICAgIGFkZGl0aW9uYWxQcm9wcyA9IG9uUm93KHJlY29yZCwgaW5kZXgpO1xuICB9XG5cbiAgdmFyIG9uQ2xpY2sgPSBmdW5jdGlvbiBvbkNsaWNrKGV2ZW50KSB7XG4gICAgaWYgKGV4cGFuZFJvd0J5Q2xpY2sgJiYgbWVyZ2VkRXhwYW5kYWJsZSkge1xuICAgICAgb25UcmlnZ2VyRXhwYW5kKHJlY29yZCwgZXZlbnQpO1xuICAgIH1cblxuICAgIGlmIChhZGRpdGlvbmFsUHJvcHMgJiYgYWRkaXRpb25hbFByb3BzLm9uQ2xpY2spIHtcbiAgICAgIHZhciBfYWRkaXRpb25hbFByb3BzO1xuXG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgfVxuXG4gICAgICAoX2FkZGl0aW9uYWxQcm9wcyA9IGFkZGl0aW9uYWxQcm9wcykub25DbGljay5hcHBseShfYWRkaXRpb25hbFByb3BzLCBbZXZlbnRdLmNvbmNhdChhcmdzKSk7XG4gICAgfVxuICB9OyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT0gQmFzZSB0ciByb3cgPT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuICB2YXIgY29tcHV0ZVJvd0NsYXNzTmFtZTtcblxuICBpZiAodHlwZW9mIHJvd0NsYXNzTmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb21wdXRlUm93Q2xhc3NOYW1lID0gcm93Q2xhc3NOYW1lO1xuICB9IGVsc2UgaWYgKHR5cGVvZiByb3dDbGFzc05hbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb21wdXRlUm93Q2xhc3NOYW1lID0gcm93Q2xhc3NOYW1lKHJlY29yZCwgaW5kZXgsIGluZGVudCk7XG4gIH1cblxuICB2YXIgY29sdW1uc0tleSA9ICgwLCBfdmFsdWVVdGlsLmdldENvbHVtbnNLZXkpKGZsYXR0ZW5Db2x1bW5zKTtcbiAgdmFyIGJhc2VSb3dOb2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUm93Q29tcG9uZW50LCAoMCwgX2V4dGVuZHMyLmRlZmF1bHQpKHt9LCBhZGRpdGlvbmFsUHJvcHMsIHtcbiAgICBcImRhdGEtcm93LWtleVwiOiByb3dLZXksXG4gICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXMuZGVmYXVsdCkoY2xhc3NOYW1lLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXJvd1wiKSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1yb3ctbGV2ZWwtXCIpLmNvbmNhdChpbmRlbnQpLCBjb21wdXRlUm93Q2xhc3NOYW1lLCBhZGRpdGlvbmFsUHJvcHMgJiYgYWRkaXRpb25hbFByb3BzLmNsYXNzTmFtZSksXG4gICAgc3R5bGU6ICgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSgoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoe30sIHN0eWxlKSwgYWRkaXRpb25hbFByb3BzID8gYWRkaXRpb25hbFByb3BzLnN0eWxlIDogbnVsbCksXG4gICAgb25DbGljazogb25DbGlja1xuICB9KSwgZmxhdHRlbkNvbHVtbnMubWFwKGZ1bmN0aW9uIChjb2x1bW4sIGNvbEluZGV4KSB7XG4gICAgdmFyIHJlbmRlciA9IGNvbHVtbi5yZW5kZXIsXG4gICAgICAgIGRhdGFJbmRleCA9IGNvbHVtbi5kYXRhSW5kZXgsXG4gICAgICAgIGNvbHVtbkNsYXNzTmFtZSA9IGNvbHVtbi5jbGFzc05hbWU7XG4gICAgdmFyIGtleSA9IGNvbHVtbnNLZXlbY29sSW5kZXhdO1xuICAgIHZhciBmaXhlZEluZm8gPSBmaXhlZEluZm9MaXN0W2NvbEluZGV4XTsgLy8gPT09PT09PT09PT09PSBVc2VkIGZvciBuZXN0IGV4cGFuZGFibGUgPT09PT09PT09PT09PVxuXG4gICAgdmFyIGFwcGVuZENlbGxOb2RlO1xuXG4gICAgaWYgKGNvbEluZGV4ID09PSAoZXhwYW5kSWNvbkNvbHVtbkluZGV4IHx8IDApICYmIG5lc3RFeHBhbmRhYmxlKSB7XG4gICAgICBhcHBlbmRDZWxsTm9kZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIHBhZGRpbmdMZWZ0OiBcIlwiLmNvbmNhdChpbmRlbnRTaXplICogaW5kZW50LCBcInB4XCIpXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1yb3ctaW5kZW50IGluZGVudC1sZXZlbC1cIikuY29uY2F0KGluZGVudClcbiAgICAgIH0pLCBleHBhbmRJY29uKHtcbiAgICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICAgIGV4cGFuZGVkOiBleHBhbmRlZCxcbiAgICAgICAgZXhwYW5kYWJsZTogaGFzTmVzdENoaWxkcmVuLFxuICAgICAgICByZWNvcmQ6IHJlY29yZCxcbiAgICAgICAgb25FeHBhbmQ6IG9uVHJpZ2dlckV4cGFuZFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHZhciBhZGRpdGlvbmFsQ2VsbFByb3BzO1xuXG4gICAgaWYgKGNvbHVtbi5vbkNlbGwpIHtcbiAgICAgIGFkZGl0aW9uYWxDZWxsUHJvcHMgPSBjb2x1bW4ub25DZWxsKHJlY29yZCwgaW5kZXgpO1xuICAgIH1cblxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQ2VsbC5kZWZhdWx0LCAoMCwgX2V4dGVuZHMyLmRlZmF1bHQpKHtcbiAgICAgIGNsYXNzTmFtZTogY29sdW1uQ2xhc3NOYW1lLFxuICAgICAgZWxsaXBzaXM6IGNvbHVtbi5lbGxpcHNpcyxcbiAgICAgIGFsaWduOiBjb2x1bW4uYWxpZ24sXG4gICAgICBjb21wb25lbnQ6IGNlbGxDb21wb25lbnQsXG4gICAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgIGtleToga2V5LFxuICAgICAgcmVjb3JkOiByZWNvcmQsXG4gICAgICBpbmRleDogaW5kZXgsXG4gICAgICBkYXRhSW5kZXg6IGRhdGFJbmRleCxcbiAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgc2hvdWxkQ2VsbFVwZGF0ZTogY29sdW1uLnNob3VsZENlbGxVcGRhdGVcbiAgICB9LCBmaXhlZEluZm8sIHtcbiAgICAgIGFwcGVuZE5vZGU6IGFwcGVuZENlbGxOb2RlLFxuICAgICAgYWRkaXRpb25hbFByb3BzOiBhZGRpdGlvbmFsQ2VsbFByb3BzXG4gICAgfSkpO1xuICB9KSk7IC8vID09PT09PT09PT09PT09PT09PT09PT09PSBFeHBhbmQgUm93ID09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICB2YXIgZXhwYW5kUm93Tm9kZTtcblxuICBpZiAocm93U3VwcG9ydEV4cGFuZCAmJiAoZXhwYW5kUmVuZGVkIHx8IGV4cGFuZGVkKSkge1xuICAgIHZhciBleHBhbmRDb250ZW50ID0gZXhwYW5kZWRSb3dSZW5kZXIocmVjb3JkLCBpbmRleCwgaW5kZW50ICsgMSwgZXhwYW5kZWQpO1xuICAgIHZhciBjb21wdXRlZEV4cGFuZGVkUm93Q2xhc3NOYW1lID0gZXhwYW5kZWRSb3dDbGFzc05hbWUgJiYgZXhwYW5kZWRSb3dDbGFzc05hbWUocmVjb3JkLCBpbmRleCwgaW5kZW50KTtcbiAgICBleHBhbmRSb3dOb2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0V4cGFuZGVkUm93LmRlZmF1bHQsIHtcbiAgICAgIGV4cGFuZGVkOiBleHBhbmRlZCxcbiAgICAgIGNsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzLmRlZmF1bHQpKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZXhwYW5kZWQtcm93XCIpLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWV4cGFuZGVkLXJvdy1sZXZlbC1cIikuY29uY2F0KGluZGVudCArIDEpLCBjb21wdXRlZEV4cGFuZGVkUm93Q2xhc3NOYW1lKSxcbiAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgZml4SGVhZGVyOiBmaXhIZWFkZXIsXG4gICAgICBmaXhDb2x1bW46IGZpeENvbHVtbixcbiAgICAgIGhvcml6b25TY3JvbGw6IGhvcml6b25TY3JvbGwsXG4gICAgICBjb21wb25lbnQ6IFJvd0NvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFdpZHRoOiBjb21wb25lbnRXaWR0aCxcbiAgICAgIGNlbGxDb21wb25lbnQ6IGNlbGxDb21wb25lbnQsXG4gICAgICBjb2xTcGFuOiBmbGF0dGVuQ29sdW1ucy5sZW5ndGhcbiAgICB9LCBleHBhbmRDb250ZW50KTtcbiAgfSAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09IE5lc3QgUm93ID09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuICB2YXIgbmVzdFJvd05vZGU7XG5cbiAgaWYgKGhhc05lc3RDaGlsZHJlbiAmJiBleHBhbmRlZCkge1xuICAgIG5lc3RSb3dOb2RlID0gKHJlY29yZFtjaGlsZHJlbkNvbHVtbk5hbWVdIHx8IFtdKS5tYXAoZnVuY3Rpb24gKHN1YlJlY29yZCwgc3ViSW5kZXgpIHtcbiAgICAgIHZhciBzdWJLZXkgPSBnZXRSb3dLZXkoc3ViUmVjb3JkLCBzdWJJbmRleCk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQm9keVJvdywgKDAsIF9leHRlbmRzMi5kZWZhdWx0KSh7fSwgcHJvcHMsIHtcbiAgICAgICAga2V5OiBzdWJLZXksXG4gICAgICAgIHJvd0tleTogc3ViS2V5LFxuICAgICAgICByZWNvcmQ6IHN1YlJlY29yZCxcbiAgICAgICAgcmVjb3JkS2V5OiBzdWJLZXksXG4gICAgICAgIGluZGV4OiBzdWJJbmRleCxcbiAgICAgICAgaW5kZW50OiBpbmRlbnQgKyAxXG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGJhc2VSb3dOb2RlLCBleHBhbmRSb3dOb2RlLCBuZXN0Um93Tm9kZSk7XG59XG5cbkJvZHlSb3cuZGlzcGxheU5hbWUgPSAnQm9keVJvdyc7XG52YXIgX2RlZmF1bHQgPSBCb2R5Um93O1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gTWVhc3VyZUNlbGw7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfcmNSZXNpemVPYnNlcnZlciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXJlc2l6ZS1vYnNlcnZlclwiKSk7XG5cbmZ1bmN0aW9uIE1lYXN1cmVDZWxsKF9yZWYpIHtcbiAgdmFyIGNvbHVtbktleSA9IF9yZWYuY29sdW1uS2V5LFxuICAgICAgb25Db2x1bW5SZXNpemUgPSBfcmVmLm9uQ29sdW1uUmVzaXplO1xuICB2YXIgY2VsbFJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmIChjZWxsUmVmLmN1cnJlbnQpIHtcbiAgICAgIG9uQ29sdW1uUmVzaXplKGNvbHVtbktleSwgY2VsbFJlZi5jdXJyZW50Lm9mZnNldFdpZHRoKTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yY1Jlc2l6ZU9ic2VydmVyLmRlZmF1bHQsIHtcbiAgICBvblJlc2l6ZTogZnVuY3Rpb24gb25SZXNpemUoX3JlZjIpIHtcbiAgICAgIHZhciBvZmZzZXRXaWR0aCA9IF9yZWYyLm9mZnNldFdpZHRoO1xuICAgICAgb25Db2x1bW5SZXNpemUoY29sdW1uS2V5LCBvZmZzZXRXaWR0aCk7XG4gICAgfVxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInRkXCIsIHtcbiAgICByZWY6IGNlbGxSZWYsXG4gICAgc3R5bGU6IHtcbiAgICAgIHBhZGRpbmc6IDAsXG4gICAgICBib3JkZXI6IDAsXG4gICAgICBoZWlnaHQ6IDBcbiAgICB9XG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICBzdHlsZToge1xuICAgICAgaGVpZ2h0OiAwLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gICAgfVxuICB9LCBcIlxceEEwXCIpKSk7XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfcmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG5cbi8qKlxuICogR2V0IHN0aWNreSBjb2x1bW4gb2Zmc2V0IHdpZHRoXG4gKi9cbmZ1bmN0aW9uIHVzZVN0aWNreU9mZnNldHMoY29sV2lkdGhzLCBjb2x1bW5Db3VudCwgZGlyZWN0aW9uKSB7XG4gIHZhciBzdGlja3lPZmZzZXRzID0gKDAsIF9yZWFjdC51c2VNZW1vKShmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlZnRPZmZzZXRzID0gW107XG4gICAgdmFyIHJpZ2h0T2Zmc2V0cyA9IFtdO1xuICAgIHZhciBsZWZ0ID0gMDtcbiAgICB2YXIgcmlnaHQgPSAwO1xuXG4gICAgZm9yICh2YXIgc3RhcnQgPSAwOyBzdGFydCA8IGNvbHVtbkNvdW50OyBzdGFydCArPSAxKSB7XG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgICAgICAvLyBMZWZ0IG9mZnNldFxuICAgICAgICByaWdodE9mZnNldHNbc3RhcnRdID0gcmlnaHQ7XG4gICAgICAgIHJpZ2h0ICs9IGNvbFdpZHRoc1tzdGFydF0gfHwgMDsgLy8gUmlnaHQgb2Zmc2V0XG5cbiAgICAgICAgdmFyIGVuZCA9IGNvbHVtbkNvdW50IC0gc3RhcnQgLSAxO1xuICAgICAgICBsZWZ0T2Zmc2V0c1tlbmRdID0gbGVmdDtcbiAgICAgICAgbGVmdCArPSBjb2xXaWR0aHNbZW5kXSB8fCAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTGVmdCBvZmZzZXRcbiAgICAgICAgbGVmdE9mZnNldHNbc3RhcnRdID0gbGVmdDtcbiAgICAgICAgbGVmdCArPSBjb2xXaWR0aHNbc3RhcnRdIHx8IDA7IC8vIFJpZ2h0IG9mZnNldFxuXG4gICAgICAgIHZhciBfZW5kID0gY29sdW1uQ291bnQgLSBzdGFydCAtIDE7XG5cbiAgICAgICAgcmlnaHRPZmZzZXRzW19lbmRdID0gcmlnaHQ7XG4gICAgICAgIHJpZ2h0ICs9IGNvbFdpZHRoc1tfZW5kXSB8fCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsZWZ0OiBsZWZ0T2Zmc2V0cyxcbiAgICAgIHJpZ2h0OiByaWdodE9mZnNldHNcbiAgICB9O1xuICB9LCBbY29sV2lkdGhzLCBjb2x1bW5Db3VudCwgZGlyZWN0aW9uXSk7XG4gIHJldHVybiBzdGlja3lPZmZzZXRzO1xufVxuXG52YXIgX2RlZmF1bHQgPSB1c2VTdGlja3lPZmZzZXRzO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlV2lsZGNhcmRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbmZ1bmN0aW9uIFBhbmVsKF9yZWYpIHtcbiAgdmFyIGNsYXNzTmFtZSA9IF9yZWYuY2xhc3NOYW1lLFxuICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lXG4gIH0sIGNoaWxkcmVuKTtcbn1cblxudmFyIF9kZWZhdWx0ID0gUGFuZWw7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlV2lsZGNhcmRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkZvb3RlckNvbXBvbmVudHMgPSBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfVGFibGVDb250ZXh0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vY29udGV4dC9UYWJsZUNvbnRleHRcIikpO1xuXG52YXIgX0NlbGwgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL0NlbGxcIikpO1xuXG52YXIgX1JvdyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vUm93XCIpKTtcblxuZnVuY3Rpb24gRm9vdGVyKF9yZWYpIHtcbiAgdmFyIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcblxuICB2YXIgX1JlYWN0JHVzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KF9UYWJsZUNvbnRleHQuZGVmYXVsdCksXG4gICAgICBwcmVmaXhDbHMgPSBfUmVhY3QkdXNlQ29udGV4dC5wcmVmaXhDbHM7XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidGZvb3RcIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zdW1tYXJ5XCIpXG4gIH0sIGNoaWxkcmVuKTtcbn1cblxudmFyIF9kZWZhdWx0ID0gRm9vdGVyO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG52YXIgRm9vdGVyQ29tcG9uZW50cyA9IHtcbiAgQ2VsbDogX0NlbGwuZGVmYXVsdCxcbiAgUm93OiBfUm93LmRlZmF1bHRcbn07XG5leHBvcnRzLkZvb3RlckNvbXBvbmVudHMgPSBGb290ZXJDb21wb25lbnRzOyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IFN1bW1hcnlDZWxsO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9DZWxsID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vQ2VsbFwiKSk7XG5cbnZhciBfVGFibGVDb250ZXh0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vY29udGV4dC9UYWJsZUNvbnRleHRcIikpO1xuXG5mdW5jdGlvbiBTdW1tYXJ5Q2VsbChfcmVmKSB7XG4gIHZhciBjbGFzc05hbWUgPSBfcmVmLmNsYXNzTmFtZSxcbiAgICAgIGluZGV4ID0gX3JlZi5pbmRleCxcbiAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICAgIGNvbFNwYW4gPSBfcmVmLmNvbFNwYW4sXG4gICAgICByb3dTcGFuID0gX3JlZi5yb3dTcGFuLFxuICAgICAgYWxpZ24gPSBfcmVmLmFsaWduO1xuXG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoX1RhYmxlQ29udGV4dC5kZWZhdWx0KSxcbiAgICAgIHByZWZpeENscyA9IF9SZWFjdCR1c2VDb250ZXh0LnByZWZpeENscyxcbiAgICAgIGZpeGVkSW5mb0xpc3QgPSBfUmVhY3QkdXNlQ29udGV4dC5maXhlZEluZm9MaXN0O1xuXG4gIHZhciBmaXhlZEluZm8gPSBmaXhlZEluZm9MaXN0W2luZGV4XTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9DZWxsLmRlZmF1bHQsICgwLCBfZXh0ZW5kczIuZGVmYXVsdCkoe1xuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgIGluZGV4OiBpbmRleCxcbiAgICBjb21wb25lbnQ6IFwidGRcIixcbiAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICByZWNvcmQ6IG51bGwsXG4gICAgZGF0YUluZGV4OiBudWxsLFxuICAgIGFsaWduOiBhbGlnbixcbiAgICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBjb2xTcGFuOiBjb2xTcGFuLFxuICAgICAgICAgIHJvd1NwYW46IHJvd1NwYW5cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH0sIGZpeGVkSW5mbykpO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gRm9vdGVyUm93O1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG5mdW5jdGlvbiBGb290ZXJSb3cocHJvcHMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidHJcIiwgcHJvcHMpO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMucmVuZGVyRXhwYW5kSWNvbiA9IHJlbmRlckV4cGFuZEljb247XG5leHBvcnRzLmZpbmRBbGxDaGlsZHJlbktleXMgPSBmaW5kQWxsQ2hpbGRyZW5LZXlzO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIikpO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxuZnVuY3Rpb24gcmVuZGVyRXhwYW5kSWNvbihfcmVmKSB7XG4gIHZhciBfY2xhc3NOYW1lcztcblxuICB2YXIgcHJlZml4Q2xzID0gX3JlZi5wcmVmaXhDbHMsXG4gICAgICByZWNvcmQgPSBfcmVmLnJlY29yZCxcbiAgICAgIG9uRXhwYW5kID0gX3JlZi5vbkV4cGFuZCxcbiAgICAgIGV4cGFuZGVkID0gX3JlZi5leHBhbmRlZCxcbiAgICAgIGV4cGFuZGFibGUgPSBfcmVmLmV4cGFuZGFibGU7XG4gIHZhciBleHBhbmRDbGFzc05hbWUgPSBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXJvdy1leHBhbmQtaWNvblwiKTtcblxuICBpZiAoIWV4cGFuZGFibGUpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgIGNsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzLmRlZmF1bHQpKGV4cGFuZENsYXNzTmFtZSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1yb3ctc3BhY2VkXCIpKVxuICAgIH0pO1xuICB9XG5cbiAgdmFyIG9uQ2xpY2sgPSBmdW5jdGlvbiBvbkNsaWNrKGV2ZW50KSB7XG4gICAgb25FeHBhbmQocmVjb3JkLCBldmVudCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH07XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXMuZGVmYXVsdCkoZXhwYW5kQ2xhc3NOYW1lLCAoX2NsYXNzTmFtZXMgPSB7fSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcm93LWV4cGFuZGVkXCIpLCBleHBhbmRlZCksICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXJvdy1jb2xsYXBzZWRcIiksICFleHBhbmRlZCksIF9jbGFzc05hbWVzKSksXG4gICAgb25DbGljazogb25DbGlja1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZmluZEFsbENoaWxkcmVuS2V5cyhkYXRhLCBnZXRSb3dLZXksIGNoaWxkcmVuQ29sdW1uTmFtZSkge1xuICB2YXIga2V5cyA9IFtdO1xuXG4gIGZ1bmN0aW9uIGRpZyhsaXN0KSB7XG4gICAgKGxpc3QgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG4gICAgICBrZXlzLnB1c2goZ2V0Um93S2V5KGl0ZW0sIGluZGV4KSk7XG4gICAgICBkaWcoaXRlbVtjaGlsZHJlbkNvbHVtbk5hbWVdKTtcbiAgICB9KTtcbiAgfVxuXG4gIGRpZyhkYXRhKTtcbiAgcmV0dXJuIGtleXM7XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlV2lsZGNhcmRcIik7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIikpO1xuXG52YXIgX29iamVjdFNwcmVhZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFNwcmVhZDJcIikpO1xuXG52YXIgX3NsaWNlZFRvQXJyYXkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9hZGRFdmVudExpc3RlbmVyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtdXRpbC9saWIvRG9tL2FkZEV2ZW50TGlzdGVuZXJcIikpO1xuXG52YXIgX2dldFNjcm9sbEJhclNpemUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYy11dGlsL2xpYi9nZXRTY3JvbGxCYXJTaXplXCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfY3NzID0gcmVxdWlyZShcInJjLXV0aWwvbGliL0RvbS9jc3NcIik7XG5cbnZhciBfVGFibGVDb250ZXh0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9jb250ZXh0L1RhYmxlQ29udGV4dFwiKSk7XG5cbnZhciBfdXNlRnJhbWUgPSByZXF1aXJlKFwiLi9ob29rcy91c2VGcmFtZVwiKTtcblxudmFyIFN0aWNreVNjcm9sbEJhciA9IGZ1bmN0aW9uIFN0aWNreVNjcm9sbEJhcihfcmVmLCByZWYpIHtcbiAgdmFyIF9zY3JvbGxCb2R5UmVmJGN1cnJlbiwgX3Njcm9sbEJvZHlSZWYkY3VycmVuMjtcblxuICB2YXIgc2Nyb2xsQm9keVJlZiA9IF9yZWYuc2Nyb2xsQm9keVJlZixcbiAgICAgIG9uU2Nyb2xsID0gX3JlZi5vblNjcm9sbCxcbiAgICAgIG9mZnNldFNjcm9sbCA9IF9yZWYub2Zmc2V0U2Nyb2xsLFxuICAgICAgY29udGFpbmVyID0gX3JlZi5jb250YWluZXI7XG5cbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChfVGFibGVDb250ZXh0LmRlZmF1bHQpLFxuICAgICAgcHJlZml4Q2xzID0gX1JlYWN0JHVzZUNvbnRleHQucHJlZml4Q2xzO1xuXG4gIHZhciBib2R5U2Nyb2xsV2lkdGggPSAoKF9zY3JvbGxCb2R5UmVmJGN1cnJlbiA9IHNjcm9sbEJvZHlSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX3Njcm9sbEJvZHlSZWYkY3VycmVuID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfc2Nyb2xsQm9keVJlZiRjdXJyZW4uc2Nyb2xsV2lkdGgpIHx8IDA7XG4gIHZhciBib2R5V2lkdGggPSAoKF9zY3JvbGxCb2R5UmVmJGN1cnJlbjIgPSBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9zY3JvbGxCb2R5UmVmJGN1cnJlbjIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zY3JvbGxCb2R5UmVmJGN1cnJlbjIuY2xpZW50V2lkdGgpIHx8IDA7XG4gIHZhciBzY3JvbGxCYXJXaWR0aCA9IGJvZHlTY3JvbGxXaWR0aCAmJiBib2R5V2lkdGggKiAoYm9keVdpZHRoIC8gYm9keVNjcm9sbFdpZHRoKTtcbiAgdmFyIHNjcm9sbEJhclJlZiA9IFJlYWN0LnVzZVJlZigpO1xuXG4gIHZhciBfdXNlTGF5b3V0U3RhdGUgPSAoMCwgX3VzZUZyYW1lLnVzZUxheW91dFN0YXRlKSh7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBpc0hpZGRlblNjcm9sbEJhcjogZmFsc2VcbiAgfSksXG4gICAgICBfdXNlTGF5b3V0U3RhdGUyID0gKDAsIF9zbGljZWRUb0FycmF5Mi5kZWZhdWx0KShfdXNlTGF5b3V0U3RhdGUsIDIpLFxuICAgICAgc2Nyb2xsU3RhdGUgPSBfdXNlTGF5b3V0U3RhdGUyWzBdLFxuICAgICAgc2V0U2Nyb2xsU3RhdGUgPSBfdXNlTGF5b3V0U3RhdGUyWzFdO1xuXG4gIHZhciByZWZTdGF0ZSA9IFJlYWN0LnVzZVJlZih7XG4gICAgZGVsdGE6IDAsXG4gICAgeDogMFxuICB9KTtcblxuICB2YXIgX1JlYWN0JHVzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLFxuICAgICAgX1JlYWN0JHVzZVN0YXRlMiA9ICgwLCBfc2xpY2VkVG9BcnJheTIuZGVmYXVsdCkoX1JlYWN0JHVzZVN0YXRlLCAyKSxcbiAgICAgIGlzQWN0aXZlID0gX1JlYWN0JHVzZVN0YXRlMlswXSxcbiAgICAgIHNldEFjdGl2ZSA9IF9SZWFjdCR1c2VTdGF0ZTJbMV07XG5cbiAgdmFyIG9uTW91c2VVcCA9IGZ1bmN0aW9uIG9uTW91c2VVcCgpIHtcbiAgICBzZXRBY3RpdmUoZmFsc2UpO1xuICB9O1xuXG4gIHZhciBvbk1vdXNlRG93biA9IGZ1bmN0aW9uIG9uTW91c2VEb3duKGV2ZW50KSB7XG4gICAgZXZlbnQucGVyc2lzdCgpO1xuICAgIHJlZlN0YXRlLmN1cnJlbnQuZGVsdGEgPSBldmVudC5wYWdlWCAtIHNjcm9sbFN0YXRlLnNjcm9sbExlZnQ7XG4gICAgcmVmU3RhdGUuY3VycmVudC54ID0gMDtcbiAgICBzZXRBY3RpdmUodHJ1ZSk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICB2YXIgb25Nb3VzZU1vdmUgPSBmdW5jdGlvbiBvbk1vdXNlTW92ZShldmVudCkge1xuICAgIHZhciBfd2luZG93O1xuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL01vdXNlRXZlbnQvYnV0dG9uc1xuICAgIHZhciBfcmVmMiA9IGV2ZW50IHx8ICgoX3dpbmRvdyA9IHdpbmRvdykgPT09IG51bGwgfHwgX3dpbmRvdyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3dpbmRvdy5ldmVudCksXG4gICAgICAgIGJ1dHRvbnMgPSBfcmVmMi5idXR0b25zO1xuXG4gICAgaWYgKCFpc0FjdGl2ZSB8fCBidXR0b25zID09PSAwKSB7XG4gICAgICAvLyBJZiBvdXQgYm9keSBtb3VzZSB1cCwgd2UgY2FuIHNldCBpc0FjdGl2ZSBmYWxzZSB3aGVuIG1vdXNlIG1vdmVcbiAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICBzZXRBY3RpdmUoZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGxlZnQgPSByZWZTdGF0ZS5jdXJyZW50LnggKyBldmVudC5wYWdlWCAtIHJlZlN0YXRlLmN1cnJlbnQueCAtIHJlZlN0YXRlLmN1cnJlbnQuZGVsdGE7XG5cbiAgICBpZiAobGVmdCA8PSAwKSB7XG4gICAgICBsZWZ0ID0gMDtcbiAgICB9XG5cbiAgICBpZiAobGVmdCArIHNjcm9sbEJhcldpZHRoID49IGJvZHlXaWR0aCkge1xuICAgICAgbGVmdCA9IGJvZHlXaWR0aCAtIHNjcm9sbEJhcldpZHRoO1xuICAgIH1cblxuICAgIG9uU2Nyb2xsKHtcbiAgICAgIHNjcm9sbExlZnQ6IGxlZnQgLyBib2R5V2lkdGggKiAoYm9keVNjcm9sbFdpZHRoICsgMilcbiAgICB9KTtcbiAgICByZWZTdGF0ZS5jdXJyZW50LnggPSBldmVudC5wYWdlWDtcbiAgfTtcblxuICB2YXIgb25Db250YWluZXJTY3JvbGwgPSBmdW5jdGlvbiBvbkNvbnRhaW5lclNjcm9sbCgpIHtcbiAgICB2YXIgdGFibGVPZmZzZXRUb3AgPSAoMCwgX2Nzcy5nZXRPZmZzZXQpKHNjcm9sbEJvZHlSZWYuY3VycmVudCkudG9wO1xuICAgIHZhciB0YWJsZUJvdHRvbU9mZnNldCA9IHRhYmxlT2Zmc2V0VG9wICsgc2Nyb2xsQm9keVJlZi5jdXJyZW50Lm9mZnNldEhlaWdodDtcbiAgICB2YXIgY3VycmVudENsaWVudE9mZnNldCA9IGNvbnRhaW5lciA9PT0gd2luZG93ID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCArIHdpbmRvdy5pbm5lckhlaWdodCA6ICgwLCBfY3NzLmdldE9mZnNldCkoY29udGFpbmVyKS50b3AgKyBjb250YWluZXIuY2xpZW50SGVpZ2h0O1xuXG4gICAgaWYgKHRhYmxlQm90dG9tT2Zmc2V0IC0gKDAsIF9nZXRTY3JvbGxCYXJTaXplLmRlZmF1bHQpKCkgPD0gY3VycmVudENsaWVudE9mZnNldCB8fCB0YWJsZU9mZnNldFRvcCA+PSBjdXJyZW50Q2xpZW50T2Zmc2V0IC0gb2Zmc2V0U2Nyb2xsKSB7XG4gICAgICBzZXRTY3JvbGxTdGF0ZShmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgcmV0dXJuICgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSgoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoe30sIHN0YXRlKSwge30sIHtcbiAgICAgICAgICBpc0hpZGRlblNjcm9sbEJhcjogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTY3JvbGxTdGF0ZShmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgcmV0dXJuICgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSgoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoe30sIHN0YXRlKSwge30sIHtcbiAgICAgICAgICBpc0hpZGRlblNjcm9sbEJhcjogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIHNldFNjcm9sbExlZnQgPSBmdW5jdGlvbiBzZXRTY3JvbGxMZWZ0KGxlZnQpIHtcbiAgICBzZXRTY3JvbGxTdGF0ZShmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIHJldHVybiAoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKHt9LCBzdGF0ZSksIHt9LCB7XG4gICAgICAgIHNjcm9sbExlZnQ6IGxlZnQgLyBib2R5U2Nyb2xsV2lkdGggKiBib2R5V2lkdGggfHwgMFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2V0U2Nyb2xsTGVmdDogc2V0U2Nyb2xsTGVmdFxuICAgIH07XG4gIH0pO1xuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHZhciBvbk1vdXNlVXBMaXN0ZW5lciA9ICgwLCBfYWRkRXZlbnRMaXN0ZW5lci5kZWZhdWx0KShkb2N1bWVudC5ib2R5LCAnbW91c2V1cCcsIG9uTW91c2VVcCwgZmFsc2UpO1xuICAgIHZhciBvbk1vdXNlTW92ZUxpc3RlbmVyID0gKDAsIF9hZGRFdmVudExpc3RlbmVyLmRlZmF1bHQpKGRvY3VtZW50LmJvZHksICdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSwgZmFsc2UpO1xuICAgIG9uQ29udGFpbmVyU2Nyb2xsKCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIG9uTW91c2VVcExpc3RlbmVyLnJlbW92ZSgpO1xuICAgICAgb25Nb3VzZU1vdmVMaXN0ZW5lci5yZW1vdmUoKTtcbiAgICB9O1xuICB9LCBbc2Nyb2xsQmFyV2lkdGgsIGlzQWN0aXZlXSk7XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9uU2Nyb2xsTGlzdGVuZXIgPSAoMCwgX2FkZEV2ZW50TGlzdGVuZXIuZGVmYXVsdCkoY29udGFpbmVyLCAnc2Nyb2xsJywgb25Db250YWluZXJTY3JvbGwsIGZhbHNlKTtcbiAgICB2YXIgb25SZXNpemVMaXN0ZW5lciA9ICgwLCBfYWRkRXZlbnRMaXN0ZW5lci5kZWZhdWx0KSh3aW5kb3csICdyZXNpemUnLCBvbkNvbnRhaW5lclNjcm9sbCwgZmFsc2UpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBvblNjcm9sbExpc3RlbmVyLnJlbW92ZSgpO1xuICAgICAgb25SZXNpemVMaXN0ZW5lci5yZW1vdmUoKTtcbiAgICB9O1xuICB9LCBbY29udGFpbmVyXSk7XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFzY3JvbGxTdGF0ZS5pc0hpZGRlblNjcm9sbEJhcikge1xuICAgICAgc2V0U2Nyb2xsU3RhdGUoZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgIHZhciBib2R5Tm9kZSA9IHNjcm9sbEJvZHlSZWYuY3VycmVudDtcblxuICAgICAgICBpZiAoIWJvZHlOb2RlKSB7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSgoMCwgX29iamVjdFNwcmVhZDIuZGVmYXVsdCkoe30sIHN0YXRlKSwge30sIHtcbiAgICAgICAgICBzY3JvbGxMZWZ0OiBib2R5Tm9kZS5zY3JvbGxMZWZ0IC8gYm9keU5vZGUuc2Nyb2xsV2lkdGggKiBib2R5Tm9kZS5jbGllbnRXaWR0aFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3Njcm9sbFN0YXRlLmlzSGlkZGVuU2Nyb2xsQmFyXSk7XG5cbiAgaWYgKGJvZHlTY3JvbGxXaWR0aCA8PSBib2R5V2lkdGggfHwgIXNjcm9sbEJhcldpZHRoIHx8IHNjcm9sbFN0YXRlLmlzSGlkZGVuU2Nyb2xsQmFyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIHN0eWxlOiB7XG4gICAgICBoZWlnaHQ6ICgwLCBfZ2V0U2Nyb2xsQmFyU2l6ZS5kZWZhdWx0KSgpLFxuICAgICAgd2lkdGg6IGJvZHlXaWR0aCxcbiAgICAgIGJvdHRvbTogb2Zmc2V0U2Nyb2xsXG4gICAgfSxcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc3RpY2t5LXNjcm9sbFwiKVxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgb25Nb3VzZURvd246IG9uTW91c2VEb3duLFxuICAgIHJlZjogc2Nyb2xsQmFyUmVmLFxuICAgIGNsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzLmRlZmF1bHQpKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc3RpY2t5LXNjcm9sbC1iYXJcIiksICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHt9LCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXN0aWNreS1zY3JvbGwtYmFyLWFjdGl2ZVwiKSwgaXNBY3RpdmUpKSxcbiAgICBzdHlsZToge1xuICAgICAgd2lkdGg6IFwiXCIuY29uY2F0KHNjcm9sbEJhcldpZHRoLCBcInB4XCIpLFxuICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZTNkKFwiLmNvbmNhdChzY3JvbGxTdGF0ZS5zY3JvbGxMZWZ0LCBcInB4LCAwLCAwKVwiKVxuICAgIH1cbiAgfSkpO1xufTtcblxudmFyIF9kZWZhdWx0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoU3RpY2t5U2Nyb2xsQmFyKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gYWRkRXZlbnRMaXN0ZW5lcldyYXA7XG5cbnZhciBfcmVhY3REb20gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdC1kb21cIikpO1xuXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyV3JhcCh0YXJnZXQsIGV2ZW50VHlwZSwgY2IsIG9wdGlvbikge1xuICAvKiBlc2xpbnQgY2FtZWxjYXNlOiAyICovXG4gIHZhciBjYWxsYmFjayA9IF9yZWFjdERvbS5kZWZhdWx0LnVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzID8gZnVuY3Rpb24gcnVuKGUpIHtcbiAgICBfcmVhY3REb20uZGVmYXVsdC51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyhjYiwgZSk7XG4gIH0gOiBjYjtcblxuICBpZiAodGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBvcHRpb24pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIGlmICh0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmdldCA9IGdldDtcbmV4cG9ydHMuc2V0ID0gc2V0O1xuZXhwb3J0cy5nZXRPdXRlcldpZHRoID0gZ2V0T3V0ZXJXaWR0aDtcbmV4cG9ydHMuZ2V0T3V0ZXJIZWlnaHQgPSBnZXRPdXRlckhlaWdodDtcbmV4cG9ydHMuZ2V0RG9jU2l6ZSA9IGdldERvY1NpemU7XG5leHBvcnRzLmdldENsaWVudFNpemUgPSBnZXRDbGllbnRTaXplO1xuZXhwb3J0cy5nZXRTY3JvbGwgPSBnZXRTY3JvbGw7XG5leHBvcnRzLmdldE9mZnNldCA9IGdldE9mZnNldDtcblxuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbnZhciBQSVhFTF9QQVRURVJOID0gL21hcmdpbnxwYWRkaW5nfHdpZHRofGhlaWdodHxtYXh8bWlufG9mZnNldC87XG52YXIgcmVtb3ZlUGl4ZWwgPSB7XG4gIGxlZnQ6IHRydWUsXG4gIHRvcDogdHJ1ZVxufTtcbnZhciBmbG9hdE1hcCA9IHtcbiAgY3NzRmxvYXQ6IDEsXG4gIHN0eWxlRmxvYXQ6IDEsXG4gIGZsb2F0OiAxXG59O1xuXG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IDEgPyBub2RlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShub2RlLCBudWxsKSA6IHt9O1xufVxuXG5mdW5jdGlvbiBnZXRTdHlsZVZhbHVlKG5vZGUsIHR5cGUsIHZhbHVlKSB7XG4gIHR5cGUgPSB0eXBlLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYgKHZhbHVlID09PSAnYXV0bycpIHtcbiAgICBpZiAodHlwZSA9PT0gJ2hlaWdodCcpIHtcbiAgICAgIHJldHVybiBub2RlLm9mZnNldEhlaWdodDtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ3dpZHRoJykge1xuICAgICAgcmV0dXJuIG5vZGUub2Zmc2V0V2lkdGg7XG4gICAgfVxuICB9XG5cbiAgaWYgKCEodHlwZSBpbiByZW1vdmVQaXhlbCkpIHtcbiAgICByZW1vdmVQaXhlbFt0eXBlXSA9IFBJWEVMX1BBVFRFUk4udGVzdCh0eXBlKTtcbiAgfVxuXG4gIHJldHVybiByZW1vdmVQaXhlbFt0eXBlXSA/IHBhcnNlRmxvYXQodmFsdWUpIHx8IDAgOiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gZ2V0KG5vZGUsIG5hbWUpIHtcbiAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gIG5hbWUgPSBmbG9hdE1hcFtuYW1lXSA/ICdjc3NGbG9hdCcgaW4gbm9kZS5zdHlsZSA/ICdjc3NGbG9hdCcgOiAnc3R5bGVGbG9hdCcgOiBuYW1lO1xuICByZXR1cm4gbGVuZ3RoID09PSAxID8gc3R5bGUgOiBnZXRTdHlsZVZhbHVlKG5vZGUsIG5hbWUsIHN0eWxlW25hbWVdIHx8IG5vZGUuc3R5bGVbbmFtZV0pO1xufVxuXG5mdW5jdGlvbiBzZXQobm9kZSwgbmFtZSwgdmFsdWUpIHtcbiAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIG5hbWUgPSBmbG9hdE1hcFtuYW1lXSA/ICdjc3NGbG9hdCcgaW4gbm9kZS5zdHlsZSA/ICdjc3NGbG9hdCcgOiAnc3R5bGVGbG9hdCcgOiBuYW1lO1xuXG4gIGlmIChsZW5ndGggPT09IDMpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBQSVhFTF9QQVRURVJOLnRlc3QobmFtZSkpIHtcbiAgICAgIHZhbHVlID0gXCJcIi5jb25jYXQodmFsdWUsIFwicHhcIik7XG4gICAgfVxuXG4gICAgbm9kZS5zdHlsZVtuYW1lXSA9IHZhbHVlOyAvLyBOdW1iZXJcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGZvciAodmFyIHggaW4gbmFtZSkge1xuICAgIGlmIChuYW1lLmhhc093blByb3BlcnR5KHgpKSB7XG4gICAgICBzZXQobm9kZSwgeCwgbmFtZVt4XSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG59XG5cbmZ1bmN0aW9uIGdldE91dGVyV2lkdGgoZWwpIHtcbiAgaWYgKGVsID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgfVxuXG4gIHJldHVybiBlbC5vZmZzZXRXaWR0aDtcbn1cblxuZnVuY3Rpb24gZ2V0T3V0ZXJIZWlnaHQoZWwpIHtcbiAgaWYgKGVsID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICB9XG5cbiAgcmV0dXJuIGVsLm9mZnNldEhlaWdodDtcbn1cblxuZnVuY3Rpb24gZ2V0RG9jU2l6ZSgpIHtcbiAgdmFyIHdpZHRoID0gTWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFdpZHRoLCBkb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoKTtcbiAgdmFyIGhlaWdodCA9IE1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQsIGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0KTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50U2l6ZSgpIHtcbiAgdmFyIHdpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFNjcm9sbCgpIHtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBNYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCwgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0KSxcbiAgICBzY3JvbGxUb3A6IE1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AsIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRPZmZzZXQobm9kZSkge1xuICB2YXIgYm94ID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIGRvY0VsZW0gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7IC8vIDwgaWU4IOS4jeaUr+aMgSB3aW4ucGFnZVhPZmZzZXQsIOWImeS9v+eUqCBkb2NFbGVtLnNjcm9sbExlZnRcblxuICByZXR1cm4ge1xuICAgIGxlZnQ6IGJveC5sZWZ0ICsgKHdpbmRvdy5wYWdlWE9mZnNldCB8fCBkb2NFbGVtLnNjcm9sbExlZnQpIC0gKGRvY0VsZW0uY2xpZW50TGVmdCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudExlZnQgfHwgMCksXG4gICAgdG9wOiBib3gudG9wICsgKHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2NFbGVtLnNjcm9sbFRvcCkgLSAoZG9jRWxlbS5jbGllbnRUb3AgfHwgZG9jdW1lbnQuYm9keS5jbGllbnRUb3AgfHwgMClcbiAgfTtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB1c2VTdGlja3k7XG5cbnZhciBfdHlwZW9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9jYW5Vc2VEb20gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYy11dGlsL2xpYi9Eb20vY2FuVXNlRG9tXCIpKTtcblxuLy8gZml4IHNzciByZW5kZXJcbnZhciBkZWZhdWx0Q29udGFpbmVyID0gKDAsIF9jYW5Vc2VEb20uZGVmYXVsdCkoKSA/IHdpbmRvdyA6IG51bGw7XG4vKiogU3RpY2t5IGhlYWRlciBob29rcyAqL1xuXG5mdW5jdGlvbiB1c2VTdGlja3koc3RpY2t5LCBwcmVmaXhDbHMpIHtcbiAgdmFyIF9yZWYgPSAoMCwgX3R5cGVvZjIuZGVmYXVsdCkoc3RpY2t5KSA9PT0gJ29iamVjdCcgPyBzdGlja3kgOiB7fSxcbiAgICAgIF9yZWYkb2Zmc2V0SGVhZGVyID0gX3JlZi5vZmZzZXRIZWFkZXIsXG4gICAgICBvZmZzZXRIZWFkZXIgPSBfcmVmJG9mZnNldEhlYWRlciA9PT0gdm9pZCAwID8gMCA6IF9yZWYkb2Zmc2V0SGVhZGVyLFxuICAgICAgX3JlZiRvZmZzZXRTY3JvbGwgPSBfcmVmLm9mZnNldFNjcm9sbCxcbiAgICAgIG9mZnNldFNjcm9sbCA9IF9yZWYkb2Zmc2V0U2Nyb2xsID09PSB2b2lkIDAgPyAwIDogX3JlZiRvZmZzZXRTY3JvbGwsXG4gICAgICBfcmVmJGdldENvbnRhaW5lciA9IF9yZWYuZ2V0Q29udGFpbmVyLFxuICAgICAgZ2V0Q29udGFpbmVyID0gX3JlZiRnZXRDb250YWluZXIgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZGVmYXVsdENvbnRhaW5lcjtcbiAgfSA6IF9yZWYkZ2V0Q29udGFpbmVyO1xuXG4gIHZhciBjb250YWluZXIgPSBnZXRDb250YWluZXIoKSB8fCBkZWZhdWx0Q29udGFpbmVyO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGlzU3RpY2t5ID0gISFzdGlja3k7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzU3RpY2t5OiBpc1N0aWNreSxcbiAgICAgIHN0aWNreUNsYXNzTmFtZTogaXNTdGlja3kgPyBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXN0aWNreS1oZWFkZXJcIikgOiAnJyxcbiAgICAgIG9mZnNldEhlYWRlcjogb2Zmc2V0SGVhZGVyLFxuICAgICAgb2Zmc2V0U2Nyb2xsOiBvZmZzZXRTY3JvbGwsXG4gICAgICBjb250YWluZXI6IGNvbnRhaW5lclxuICAgIH07XG4gIH0sIFtvZmZzZXRTY3JvbGwsIG9mZnNldEhlYWRlciwgcHJlZml4Q2xzLCBjb250YWluZXJdKTtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfZXh0ZW5kczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIikpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIikpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIikpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIikpO1xuXG52YXIgX2luaGVyaXRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIikpO1xuXG52YXIgX2NyZWF0ZVN1cGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlU3VwZXJcIikpO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9vbWl0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtdXRpbC9saWIvb21pdFwiKSk7XG5cbnZhciBfZGVib3VuY2UgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJsb2Rhc2gvZGVib3VuY2VcIikpO1xuXG52YXIgX2NvbmZpZ1Byb3ZpZGVyID0gcmVxdWlyZShcIi4uL2NvbmZpZy1wcm92aWRlclwiKTtcblxudmFyIF90eXBlID0gcmVxdWlyZShcIi4uL191dGlsL3R5cGVcIik7XG5cbnZhciBfcmVhY3ROb2RlID0gcmVxdWlyZShcIi4uL191dGlsL3JlYWN0Tm9kZVwiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgX19yZXN0ID0gdm9pZCAwICYmICh2b2lkIDApLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG4gIH1cblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxudmFyIFNwaW5TaXplcyA9ICgwLCBfdHlwZS50dXBsZSkoJ3NtYWxsJywgJ2RlZmF1bHQnLCAnbGFyZ2UnKTsgLy8gUmVuZGVyIGluZGljYXRvclxuXG52YXIgZGVmYXVsdEluZGljYXRvciA9IG51bGw7XG5cbmZ1bmN0aW9uIHJlbmRlckluZGljYXRvcihwcmVmaXhDbHMsIHByb3BzKSB7XG4gIHZhciBpbmRpY2F0b3IgPSBwcm9wcy5pbmRpY2F0b3I7XG4gIHZhciBkb3RDbGFzc05hbWUgPSBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWRvdFwiKTsgLy8gc2hvdWxkIG5vdCBiZSByZW5kZXIgZGVmYXVsdCBpbmRpY2F0b3Igd2hlbiBpbmRpY2F0b3IgdmFsdWUgaXMgbnVsbFxuXG4gIGlmIChpbmRpY2F0b3IgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICgoMCwgX3JlYWN0Tm9kZS5pc1ZhbGlkRWxlbWVudCkoaW5kaWNhdG9yKSkge1xuICAgIHJldHVybiAoMCwgX3JlYWN0Tm9kZS5jbG9uZUVsZW1lbnQpKGluZGljYXRvciwge1xuICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShpbmRpY2F0b3IucHJvcHMuY2xhc3NOYW1lLCBkb3RDbGFzc05hbWUpXG4gICAgfSk7XG4gIH1cblxuICBpZiAoKDAsIF9yZWFjdE5vZGUuaXNWYWxpZEVsZW1lbnQpKGRlZmF1bHRJbmRpY2F0b3IpKSB7XG4gICAgcmV0dXJuICgwLCBfcmVhY3ROb2RlLmNsb25lRWxlbWVudCkoZGVmYXVsdEluZGljYXRvciwge1xuICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShkZWZhdWx0SW5kaWNhdG9yLnByb3BzLmNsYXNzTmFtZSwgZG90Q2xhc3NOYW1lKVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShkb3RDbGFzc05hbWUsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZG90LXNwaW5cIikpXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiaVwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWRvdC1pdGVtXCIpXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImlcIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1kb3QtaXRlbVwiKVxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZG90LWl0ZW1cIilcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiaVwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWRvdC1pdGVtXCIpXG4gIH0pKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkRGVsYXkoc3Bpbm5pbmcsIGRlbGF5KSB7XG4gIHJldHVybiAhIXNwaW5uaW5nICYmICEhZGVsYXkgJiYgIWlzTmFOKE51bWJlcihkZWxheSkpO1xufVxuXG52YXIgU3BpbiA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICAoMCwgX2luaGVyaXRzMltcImRlZmF1bHRcIl0pKFNwaW4sIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSAoMCwgX2NyZWF0ZVN1cGVyMltcImRlZmF1bHRcIl0pKFNwaW4pO1xuXG4gIGZ1bmN0aW9uIFNwaW4ocHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMltcImRlZmF1bHRcIl0pKHRoaXMsIFNwaW4pO1xuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcHJvcHMpO1xuXG4gICAgX3RoaXMuZGVib3VuY2lmeVVwZGF0ZVNwaW5uaW5nID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICB2YXIgX3JlZiA9IHByb3BzIHx8IF90aGlzLnByb3BzLFxuICAgICAgICAgIGRlbGF5ID0gX3JlZi5kZWxheTtcblxuICAgICAgaWYgKGRlbGF5KSB7XG4gICAgICAgIF90aGlzLmNhbmNlbEV4aXN0aW5nU3BpbigpO1xuXG4gICAgICAgIF90aGlzLnVwZGF0ZVNwaW5uaW5nID0gKDAsIF9kZWJvdW5jZVtcImRlZmF1bHRcIl0pKF90aGlzLm9yaWdpbmFsVXBkYXRlU3Bpbm5pbmcsIGRlbGF5KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3RoaXMudXBkYXRlU3Bpbm5pbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgc3Bpbm5pbmcgPSBfdGhpcy5wcm9wcy5zcGlubmluZztcbiAgICAgIHZhciBjdXJyZW50U3Bpbm5pbmcgPSBfdGhpcy5zdGF0ZS5zcGlubmluZztcblxuICAgICAgaWYgKGN1cnJlbnRTcGlubmluZyAhPT0gc3Bpbm5pbmcpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIHNwaW5uaW5nOiBzcGlubmluZ1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3RoaXMucmVuZGVyU3BpbiA9IGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgdmFyIF9jbGFzc05hbWVzO1xuXG4gICAgICB2YXIgZ2V0UHJlZml4Q2xzID0gX3JlZjIuZ2V0UHJlZml4Q2xzLFxuICAgICAgICAgIGRpcmVjdGlvbiA9IF9yZWYyLmRpcmVjdGlvbjtcblxuICAgICAgdmFyIF9hID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgY3VzdG9taXplUHJlZml4Q2xzID0gX2EucHJlZml4Q2xzLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF9hLmNsYXNzTmFtZSxcbiAgICAgICAgICBzaXplID0gX2Euc2l6ZSxcbiAgICAgICAgICB0aXAgPSBfYS50aXAsXG4gICAgICAgICAgd3JhcHBlckNsYXNzTmFtZSA9IF9hLndyYXBwZXJDbGFzc05hbWUsXG4gICAgICAgICAgc3R5bGUgPSBfYS5zdHlsZSxcbiAgICAgICAgICByZXN0UHJvcHMgPSBfX3Jlc3QoX2EsIFtcInByZWZpeENsc1wiLCBcImNsYXNzTmFtZVwiLCBcInNpemVcIiwgXCJ0aXBcIiwgXCJ3cmFwcGVyQ2xhc3NOYW1lXCIsIFwic3R5bGVcIl0pO1xuXG4gICAgICB2YXIgc3Bpbm5pbmcgPSBfdGhpcy5zdGF0ZS5zcGlubmluZztcbiAgICAgIHZhciBwcmVmaXhDbHMgPSBnZXRQcmVmaXhDbHMoJ3NwaW4nLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICAgICAgdmFyIHNwaW5DbGFzc05hbWUgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShwcmVmaXhDbHMsIChfY2xhc3NOYW1lcyA9IHt9LCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXNtXCIpLCBzaXplID09PSAnc21hbGwnKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1sZ1wiKSwgc2l6ZSA9PT0gJ2xhcmdlJyksICgwLCBfZGVmaW5lUHJvcGVydHkyW1wiZGVmYXVsdFwiXSkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc3Bpbm5pbmdcIiksIHNwaW5uaW5nKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zaG93LXRleHRcIiksICEhdGlwKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ydGxcIiksIGRpcmVjdGlvbiA9PT0gJ3J0bCcpLCBfY2xhc3NOYW1lcyksIGNsYXNzTmFtZSk7IC8vIGZpeCBodHRwczovL2ZiLm1lL3JlYWN0LXVua25vd24tcHJvcFxuXG4gICAgICB2YXIgZGl2UHJvcHMgPSAoMCwgX29taXRbXCJkZWZhdWx0XCJdKShyZXN0UHJvcHMsIFsnc3Bpbm5pbmcnLCAnZGVsYXknLCAnaW5kaWNhdG9yJ10pO1xuICAgICAgdmFyIHNwaW5FbGVtZW50ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCBkaXZQcm9wcywge1xuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIGNsYXNzTmFtZTogc3BpbkNsYXNzTmFtZVxuICAgICAgfSksIHJlbmRlckluZGljYXRvcihwcmVmaXhDbHMsIF90aGlzLnByb3BzKSwgdGlwID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdGV4dFwiKVxuICAgICAgfSwgdGlwKSA6IG51bGwpO1xuXG4gICAgICBpZiAoX3RoaXMuaXNOZXN0ZWRQYXR0ZXJuKCkpIHtcbiAgICAgICAgdmFyIGNvbnRhaW5lckNsYXNzTmFtZSA9ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY29udGFpbmVyXCIpLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKHt9LCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWJsdXJcIiksIHNwaW5uaW5nKSk7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIGRpdlByb3BzLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLW5lc3RlZC1sb2FkaW5nXCIpLCB3cmFwcGVyQ2xhc3NOYW1lKVxuICAgICAgICB9KSwgc3Bpbm5pbmcgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIGtleTogXCJsb2FkaW5nXCJcbiAgICAgICAgfSwgc3BpbkVsZW1lbnQpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBjb250YWluZXJDbGFzc05hbWUsXG4gICAgICAgICAga2V5OiBcImNvbnRhaW5lclwiXG4gICAgICAgIH0sIF90aGlzLnByb3BzLmNoaWxkcmVuKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzcGluRWxlbWVudDtcbiAgICB9O1xuXG4gICAgdmFyIHNwaW5uaW5nID0gcHJvcHMuc3Bpbm5pbmcsXG4gICAgICAgIGRlbGF5ID0gcHJvcHMuZGVsYXk7XG4gICAgdmFyIHNob3VsZEJlRGVsYXllZCA9IHNob3VsZERlbGF5KHNwaW5uaW5nLCBkZWxheSk7XG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICBzcGlubmluZzogc3Bpbm5pbmcgJiYgIXNob3VsZEJlRGVsYXllZFxuICAgIH07XG4gICAgX3RoaXMub3JpZ2luYWxVcGRhdGVTcGlubmluZyA9IF90aGlzLnVwZGF0ZVNwaW5uaW5nO1xuXG4gICAgX3RoaXMuZGVib3VuY2lmeVVwZGF0ZVNwaW5uaW5nKHByb3BzKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MyW1wiZGVmYXVsdFwiXSkoU3BpbiwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNwaW5uaW5nKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICB0aGlzLmRlYm91bmNpZnlVcGRhdGVTcGlubmluZygpO1xuICAgICAgdGhpcy51cGRhdGVTcGlubmluZygpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIHRoaXMuY2FuY2VsRXhpc3RpbmdTcGluKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNhbmNlbEV4aXN0aW5nU3BpblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjYW5jZWxFeGlzdGluZ1NwaW4oKSB7XG4gICAgICB2YXIgdXBkYXRlU3Bpbm5pbmcgPSB0aGlzLnVwZGF0ZVNwaW5uaW5nO1xuXG4gICAgICBpZiAodXBkYXRlU3Bpbm5pbmcgJiYgdXBkYXRlU3Bpbm5pbmcuY2FuY2VsKSB7XG4gICAgICAgIHVwZGF0ZVNwaW5uaW5nLmNhbmNlbCgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc05lc3RlZFBhdHRlcm5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNOZXN0ZWRQYXR0ZXJuKCkge1xuICAgICAgcmV0dXJuICEhKHRoaXMucHJvcHMgJiYgdHlwZW9mIHRoaXMucHJvcHMuY2hpbGRyZW4gIT09ICd1bmRlZmluZWQnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfY29uZmlnUHJvdmlkZXIuQ29uZmlnQ29uc3VtZXIsIG51bGwsIHRoaXMucmVuZGVyU3Bpbik7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwic2V0RGVmYXVsdEluZGljYXRvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXREZWZhdWx0SW5kaWNhdG9yKGluZGljYXRvcikge1xuICAgICAgZGVmYXVsdEluZGljYXRvciA9IGluZGljYXRvcjtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFNwaW47XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cblNwaW4uZGVmYXVsdFByb3BzID0ge1xuICBzcGlubmluZzogdHJ1ZSxcbiAgc2l6ZTogJ2RlZmF1bHQnLFxuICB3cmFwcGVyQ2xhc3NOYW1lOiAnJ1xufTtcbnZhciBfZGVmYXVsdCA9IFNwaW47XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgby5fX3Byb3RvX18gPSBwO1xuICAgIHJldHVybiBvO1xuICB9O1xuXG4gIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2Y7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7IiwiZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2Yobykge1xuICAgIHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7XG4gIH07XG4gIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbiAgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2Y7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7IiwiZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlO1xuICBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlO1xuICBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlO1xuXG4gIHRyeSB7XG4gICAgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdDtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKVtcImRlZmF1bHRcIl07XG5cbnZhciBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgPSByZXF1aXJlKFwiLi9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanNcIik7XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHtcbiAgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHtcbiAgICByZXR1cm4gY2FsbDtcbiAgfVxuXG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm47XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7IiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIG5vdyA9IHJlcXVpcmUoJy4vbm93JyksXG4gICAgdG9OdW1iZXIgPSByZXF1aXJlKCcuL3RvTnVtYmVyJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heCxcbiAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGVsYXlzIGludm9raW5nIGBmdW5jYCB1bnRpbCBhZnRlciBgd2FpdGBcbiAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICogZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG8gaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uXG4gKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAqIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnRcbiAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gKiBpbnZvY2F0aW9uLlxuICpcbiAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gKlxuICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gKlxuICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAqICBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4LlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAqXG4gKiAvLyBJbnZva2UgYHNlbmRNYWlsYCB3aGVuIGNsaWNrZWQsIGRlYm91bmNpbmcgc3Vic2VxdWVudCBjYWxscy5cbiAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICogICAndHJhaWxpbmcnOiBmYWxzZVxuICogfSkpO1xuICpcbiAqIC8vIEVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHMuXG4gKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAqIGpRdWVyeShzb3VyY2UpLm9uKCdtZXNzYWdlJywgZGVib3VuY2VkKTtcbiAqXG4gKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgZGVib3VuY2VkLmNhbmNlbCk7XG4gKi9cbmZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RBcmdzLFxuICAgICAgbGFzdFRoaXMsXG4gICAgICBtYXhXYWl0LFxuICAgICAgcmVzdWx0LFxuICAgICAgdGltZXJJZCxcbiAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgIGxhc3RJbnZva2VUaW1lID0gMCxcbiAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICBsZWFkaW5nID0gISFvcHRpb25zLmxlYWRpbmc7XG4gICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICB0aW1lV2FpdGluZyA9IHdhaXQgLSB0aW1lU2luY2VMYXN0Q2FsbDtcblxuICAgIHJldHVybiBtYXhpbmdcbiAgICAgID8gbmF0aXZlTWluKHRpbWVXYWl0aW5nLCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSlcbiAgICAgIDogdGltZVdhaXRpbmc7XG4gIH1cblxuICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgIC8vIHRyYWlsaW5nIGVkZ2UsIHRoZSBzeXN0ZW0gdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgYW5kIHdlJ3JlIHRyZWF0aW5nXG4gICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAodGltZVNpbmNlTGFzdENhbGwgPCAwKSB8fCAobWF4aW5nICYmIHRpbWVTaW5jZUxhc3RJbnZva2UgPj0gbWF4V2FpdCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgIHZhciB0aW1lID0gbm93KCk7XG4gICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICB9XG4gICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIE9ubHkgaW52b2tlIGlmIHdlIGhhdmUgYGxhc3RBcmdzYCB3aGljaCBtZWFucyBgZnVuY2AgaGFzIGJlZW5cbiAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgIHJldHVybiBpbnZva2VGdW5jKHRpbWUpO1xuICAgIH1cbiAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWYgKHRpbWVySWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgIH1cbiAgICBsYXN0SW52b2tlVGltZSA9IDA7XG4gICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlYm91bmNlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgbGFzdEFyZ3MgPSBhcmd1bWVudHM7XG4gICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICBpZiAoaXNJbnZva2luZykge1xuICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICByZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGRlYm91bmNlZC5jYW5jZWwgPSBjYW5jZWw7XG4gIGRlYm91bmNlZC5mbHVzaCA9IGZsdXNoO1xuICByZXR1cm4gZGVib3VuY2VkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlYm91bmNlO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgRGF0ZVxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gKiB9LCBfLm5vdygpKTtcbiAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gKi9cbnZhciBub3cgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gbm93O1xuIiwidmFyIGJhc2VUcmltID0gcmVxdWlyZSgnLi9fYmFzZVRyaW0nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTkFOID0gMCAvIDA7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JpbmFyeSA9IC9eMGJbMDFdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG9jdGFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbnZhciBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvTnVtYmVyKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBJbmZpbml0eVxuICpcbiAqIF8udG9OdW1iZXIoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBOQU47XG4gIH1cbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHZhciBvdGhlciA9IHR5cGVvZiB2YWx1ZS52YWx1ZU9mID09ICdmdW5jdGlvbicgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgfVxuICB2YWx1ZSA9IGJhc2VUcmltKHZhbHVlKTtcbiAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9OdW1iZXI7XG4iLCJ2YXIgdHJpbW1lZEVuZEluZGV4ID0gcmVxdWlyZSgnLi9fdHJpbW1lZEVuZEluZGV4Jyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW1TdGFydCA9IC9eXFxzKy87XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udHJpbWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byB0cmltLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUcmltKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nXG4gICAgPyBzdHJpbmcuc2xpY2UoMCwgdHJpbW1lZEVuZEluZGV4KHN0cmluZykgKyAxKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJylcbiAgICA6IHN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVHJpbTtcbiIsIi8qKiBVc2VkIHRvIG1hdGNoIGEgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVyLiAqL1xudmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2VcbiAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIuXG4gKi9cbmZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgdmFyIGluZGV4ID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgtLSAmJiByZVdoaXRlc3BhY2UudGVzdChzdHJpbmcuY2hhckF0KGluZGV4KSkpIHt9XG4gIHJldHVybiBpbmRleDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmltbWVkRW5kSW5kZXg7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTeW1ib2w7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgdmFyIGlzT3duID0gaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLFxuICAgICAgdGFnID0gdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXG4gIHRyeSB7XG4gICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdW5kZWZpbmVkO1xuICAgIHZhciB1bm1hc2tlZCA9IHRydWU7XG4gIH0gY2F0Y2ggKGUpIHt9XG5cbiAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICBpZiAodW5tYXNrZWQpIHtcbiAgICBpZiAoaXNPd24pIHtcbiAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHRhZztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRSYXdUYWc7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvYmplY3RUb1N0cmluZztcbiIsIi8qKiBAbGljZW5zZSBSZWFjdCB2MTYuMTMuMVxuICogcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7dmFyIGI9XCJmdW5jdGlvblwiPT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcixjPWI/U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIik6NjAxMDMsZD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIik6NjAxMDYsZT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKTo2MDEwNyxmPWI/U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpOjYwMTA4LGc9Yj9TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIik6NjAxMTQsaD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKTo2MDEwOSxrPWI/U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIik6NjAxMTAsbD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5hc3luY19tb2RlXCIpOjYwMTExLG09Yj9TeW1ib2wuZm9yKFwicmVhY3QuY29uY3VycmVudF9tb2RlXCIpOjYwMTExLG49Yj9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIscD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxxPWI/XG5TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKTo2MDEyMCxyPWI/U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIik6NjAxMTUsdD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpOjYwMTE2LHY9Yj9TeW1ib2wuZm9yKFwicmVhY3QuYmxvY2tcIik6NjAxMjEsdz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mdW5kYW1lbnRhbFwiKTo2MDExNyx4PWI/U3ltYm9sLmZvcihcInJlYWN0LnJlc3BvbmRlclwiKTo2MDExOCx5PWI/U3ltYm9sLmZvcihcInJlYWN0LnNjb3BlXCIpOjYwMTE5O1xuZnVuY3Rpb24geihhKXtpZihcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hKXt2YXIgdT1hLiQkdHlwZW9mO3N3aXRjaCh1KXtjYXNlIGM6c3dpdGNoKGE9YS50eXBlLGEpe2Nhc2UgbDpjYXNlIG06Y2FzZSBlOmNhc2UgZzpjYXNlIGY6Y2FzZSBwOnJldHVybiBhO2RlZmF1bHQ6c3dpdGNoKGE9YSYmYS4kJHR5cGVvZixhKXtjYXNlIGs6Y2FzZSBuOmNhc2UgdDpjYXNlIHI6Y2FzZSBoOnJldHVybiBhO2RlZmF1bHQ6cmV0dXJuIHV9fWNhc2UgZDpyZXR1cm4gdX19fWZ1bmN0aW9uIEEoYSl7cmV0dXJuIHooYSk9PT1tfWV4cG9ydHMuQXN5bmNNb2RlPWw7ZXhwb3J0cy5Db25jdXJyZW50TW9kZT1tO2V4cG9ydHMuQ29udGV4dENvbnN1bWVyPWs7ZXhwb3J0cy5Db250ZXh0UHJvdmlkZXI9aDtleHBvcnRzLkVsZW1lbnQ9YztleHBvcnRzLkZvcndhcmRSZWY9bjtleHBvcnRzLkZyYWdtZW50PWU7ZXhwb3J0cy5MYXp5PXQ7ZXhwb3J0cy5NZW1vPXI7ZXhwb3J0cy5Qb3J0YWw9ZDtcbmV4cG9ydHMuUHJvZmlsZXI9ZztleHBvcnRzLlN0cmljdE1vZGU9ZjtleHBvcnRzLlN1c3BlbnNlPXA7ZXhwb3J0cy5pc0FzeW5jTW9kZT1mdW5jdGlvbihhKXtyZXR1cm4gQShhKXx8eihhKT09PWx9O2V4cG9ydHMuaXNDb25jdXJyZW50TW9kZT1BO2V4cG9ydHMuaXNDb250ZXh0Q29uc3VtZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1rfTtleHBvcnRzLmlzQ29udGV4dFByb3ZpZGVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09aH07ZXhwb3J0cy5pc0VsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PWN9O2V4cG9ydHMuaXNGb3J3YXJkUmVmPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09bn07ZXhwb3J0cy5pc0ZyYWdtZW50PWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09ZX07ZXhwb3J0cy5pc0xhenk9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT10fTtcbmV4cG9ydHMuaXNNZW1vPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09cn07ZXhwb3J0cy5pc1BvcnRhbD1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWR9O2V4cG9ydHMuaXNQcm9maWxlcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWd9O2V4cG9ydHMuaXNTdHJpY3RNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09Zn07ZXhwb3J0cy5pc1N1c3BlbnNlPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09cH07XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50VHlwZT1mdW5jdGlvbihhKXtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGF8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhfHxhPT09ZXx8YT09PW18fGE9PT1nfHxhPT09Znx8YT09PXB8fGE9PT1xfHxcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiYoYS4kJHR5cGVvZj09PXR8fGEuJCR0eXBlb2Y9PT1yfHxhLiQkdHlwZW9mPT09aHx8YS4kJHR5cGVvZj09PWt8fGEuJCR0eXBlb2Y9PT1ufHxhLiQkdHlwZW9mPT09d3x8YS4kJHR5cGVvZj09PXh8fGEuJCR0eXBlb2Y9PT15fHxhLiQkdHlwZW9mPT09dil9O2V4cG9ydHMudHlwZU9mPXo7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbnZhciBydW50aW1lID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIHZhciBPcCA9IE9iamVjdC5wcm90b3R5cGU7XG4gIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTtcbiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gIHZhciAkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiID8gU3ltYm9sIDoge307XG4gIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gIHZhciB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG5cbiAgZnVuY3Rpb24gZGVmaW5lKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIG9ialtrZXldO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gSUUgOCBoYXMgYSBicm9rZW4gT2JqZWN0LmRlZmluZVByb3BlcnR5IHRoYXQgb25seSB3b3JrcyBvbiBET00gb2JqZWN0cy5cbiAgICBkZWZpbmUoe30sIFwiXCIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBkZWZpbmUgPSBmdW5jdGlvbihvYmosIGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfVxuICBleHBvcnRzLndyYXAgPSB3cmFwO1xuXG4gIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG4gIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG4gIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG4gIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG4gIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcbiAgICB9XG4gIH1cblxuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cbiAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cbiAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gIC8vIGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuXG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIGlmIChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJlxuICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAvLyBvZiB0aGUgcG9seWZpbGwuXG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxuXG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9XG4gICAgR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IGRlZmluZShcbiAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSxcbiAgICB0b1N0cmluZ1RhZ1N5bWJvbCxcbiAgICBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgKTtcblxuICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICBkZWZpbmUocHJvdG90eXBlLCBtZXRob2QsIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBkZWZpbmUoZ2VuRnVuLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKTtcbiAgICB9XG4gICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApO1xuICAgIHJldHVybiBnZW5GdW47XG4gIH07XG5cbiAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG4gIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC5cbiAgZXhwb3J0cy5hd3JhcCA9IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yLCBQcm9taXNlSW1wbCkge1xuICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWNvcmQuYXJnO1xuICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlSW1wbC5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkge1xuICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uXG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgICAvLyBJZiBhIHJlamVjdGVkIFByb21pc2Ugd2FzIHlpZWxkZWQsIHRocm93IHRoZSByZWplY3Rpb24gYmFja1xuICAgICAgICAgIC8vIGludG8gdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgaGFuZGxlZCB0aGVyZS5cbiAgICAgICAgICByZXR1cm4gaW52b2tlKFwidGhyb3dcIiwgZXJyb3IsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cbiAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlSW1wbChmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICBleHBvcnRzLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yO1xuXG4gIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2ZcbiAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG4gIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICBleHBvcnRzLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QsIFByb21pc2VJbXBsKSB7XG4gICAgaWYgKFByb21pc2VJbXBsID09PSB2b2lkIDApIFByb21pc2VJbXBsID0gUHJvbWlzZTtcblxuICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoXG4gICAgICB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSxcbiAgICAgIFByb21pc2VJbXBsXG4gICAgKTtcblxuICAgIHJldHVybiBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbilcbiAgICAgID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG4gICAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7XG4gICAgICAgIH0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgIHZhciBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQ7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgdGhyb3cgYXJnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWdlbmVyYXRvcnJlc3VtZVxuICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGNvbnRleHQuYXJnID0gYXJnO1xuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbCkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydCkge1xuICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgICBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nO1xuXG4gICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG4gICAgICAgICAgLy8gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGlubmVyRm4sIHdlIGxlYXZlIHN0YXRlID09PVxuICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cbiAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBsZXRlZFxuICAgICAgICAgICAgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG4gICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXhjZXB0aW9uIGJ5IGxvb3BpbmcgYmFjayBhcm91bmQgdG8gdGhlXG4gICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZykgY2FsbCBhYm92ZS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gQ2FsbCBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF0oY29udGV4dC5hcmcpIGFuZCBoYW5kbGUgdGhlXG4gIC8vIHJlc3VsdCwgZWl0aGVyIGJ5IHJldHVybmluZyBhIHsgdmFsdWUsIGRvbmUgfSByZXN1bHQgZnJvbSB0aGVcbiAgLy8gZGVsZWdhdGUgaXRlcmF0b3IsIG9yIGJ5IG1vZGlmeWluZyBjb250ZXh0Lm1ldGhvZCBhbmQgY29udGV4dC5hcmcsXG4gIC8vIHNldHRpbmcgY29udGV4dC5kZWxlZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuaW5nIHRoZSBDb250aW51ZVNlbnRpbmVsLlxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEEgLnRocm93IG9yIC5yZXR1cm4gd2hlbiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIG5vIC50aHJvd1xuICAgICAgLy8gbWV0aG9kIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAvLyBOb3RlOiBbXCJyZXR1cm5cIl0gbXVzdCBiZSB1c2VkIGZvciBFUzMgcGFyc2luZyBjb21wYXRpYmlsaXR5LlxuICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3JbXCJyZXR1cm5cIl0pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgICAgLy8gY2hhbmNlIHRvIGNsZWFuIHVwLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAvLyBJZiBtYXliZUludm9rZURlbGVnYXRlKGNvbnRleHQpIGNoYW5nZWQgY29udGV4dC5tZXRob2QgZnJvbVxuICAgICAgICAgICAgLy8gXCJyZXR1cm5cIiB0byBcInRocm93XCIsIGxldCB0aGF0IG92ZXJyaWRlIHRoZSBUeXBlRXJyb3IgYmVsb3cuXG4gICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgaWYgKCEgaW5mbykge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnlcbiAgICAgIC8vIHZhcmlhYmxlIHNwZWNpZmllZCBieSBkZWxlZ2F0ZS5yZXN1bHROYW1lIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblxuICAgICAgLy8gUmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbiAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblxuICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci5cbiAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgfVxuXG4gIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG4gIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuICBkZWZpbmUoR3AsIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvclwiKTtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH07XG5cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG4gICAgaWYgKDEgaW4gbG9jcykge1xuICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdO1xuICAgIH1cblxuICAgIGlmICgyIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdO1xuICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuICAgIH1cblxuICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgZGVsZXRlIHJlY29yZC5hcmc7XG4gICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2hcbiAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogXCJyb290XCIgfV07XG4gICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBleHBvcnRzLmtleXMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGtleXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBrZXlzLnJldmVyc2UoKTtcblxuICAgIC8vIFJhdGhlciB0aGFuIHJldHVybmluZyBhbiBvYmplY3Qgd2l0aCBhIG5leHQgbWV0aG9kLCB3ZSBrZWVwXG4gICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICBuZXh0LnZhbHVlID0ga2V5O1xuICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcbiAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaXRlcmFibGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSB7XG4gICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcbiAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cbiAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG4gIH1cbiAgZXhwb3J0cy52YWx1ZXMgPSB2YWx1ZXM7XG5cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH1cblxuICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuICAgIHJlc2V0OiBmdW5jdGlvbihza2lwVGVtcFJlc2V0KSB7XG4gICAgICB0aGlzLnByZXYgPSAwO1xuICAgICAgdGhpcy5uZXh0ID0gMDtcbiAgICAgIC8vIFJlc2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG5cbiAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUgb3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOlxuICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiZcbiAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICB9LFxuXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikge1xuICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbjtcbiAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXG4gICAgICAgIGlmIChjYXVnaHQpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhISBjYXVnaHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvXG4gICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICB2YXIgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG5cbiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFicnVwdDogZnVuY3Rpb24odHlwZSwgYXJnKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiZcbiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJlxuICAgICAgICAgICh0eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJlxuICAgICAgICAgIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmXG4gICAgICAgICAgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcbiAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICBmaW5hbGx5RW50cnkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7XG4gICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG5cbiAgICBjb21wbGV0ZTogZnVuY3Rpb24ocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgIHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBhZnRlckxvYykge1xuICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfSxcblxuICAgIGZpbmlzaDogZnVuY3Rpb24oZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG4gICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbih0cnlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcbiAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cbiAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24oaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cbiAgICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cbiAgfTtcblxuICAvLyBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIGFzIGEgQ29tbW9uSlMgbW9kdWxlXG4gIC8vIG9yIG5vdCwgcmV0dXJuIHRoZSBydW50aW1lIG9iamVjdCBzbyB0aGF0IHdlIGNhbiBkZWNsYXJlIHRoZSB2YXJpYWJsZVxuICAvLyByZWdlbmVyYXRvclJ1bnRpbWUgaW4gdGhlIG91dGVyIHNjb3BlLCB3aGljaCBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmVcbiAgLy8gaW5qZWN0ZWQgZWFzaWx5IGJ5IGBiaW4vcmVnZW5lcmF0b3IgLS1pbmNsdWRlLXJ1bnRpbWUgc2NyaXB0LmpzYC5cbiAgcmV0dXJuIGV4cG9ydHM7XG5cbn0oXG4gIC8vIElmIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZSwgdXNlIG1vZHVsZS5leHBvcnRzXG4gIC8vIGFzIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgbmFtZXNwYWNlLiBPdGhlcndpc2UgY3JlYXRlIGEgbmV3IGVtcHR5XG4gIC8vIG9iamVjdC4gRWl0aGVyIHdheSwgdGhlIHJlc3VsdGluZyBvYmplY3Qgd2lsbCBiZSB1c2VkIHRvIGluaXRpYWxpemVcbiAgLy8gdGhlIHJlZ2VuZXJhdG9yUnVudGltZSB2YXJpYWJsZSBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS5cbiAgdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiA/IG1vZHVsZS5leHBvcnRzIDoge31cbikpO1xuXG50cnkge1xuICByZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lO1xufSBjYXRjaCAoYWNjaWRlbnRhbFN0cmljdE1vZGUpIHtcbiAgLy8gVGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSBydW5uaW5nIGluIHN0cmljdCBtb2RlLCBzbyB0aGUgYWJvdmVcbiAgLy8gYXNzaWdubWVudCBzaG91bGQgYWx3YXlzIHdvcmsgdW5sZXNzIHNvbWV0aGluZyBpcyBtaXNjb25maWd1cmVkLiBKdXN0XG4gIC8vIGluIGNhc2UgcnVudGltZS5qcyBhY2NpZGVudGFsbHkgcnVucyBpbiBzdHJpY3QgbW9kZSwgd2UgY2FuIGVzY2FwZVxuICAvLyBzdHJpY3QgbW9kZSB1c2luZyBhIGdsb2JhbCBGdW5jdGlvbiBjYWxsLiBUaGlzIGNvdWxkIGNvbmNlaXZhYmx5IGZhaWxcbiAgLy8gaWYgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBmb3JiaWRzIHVzaW5nIEZ1bmN0aW9uLCBidXQgaW4gdGhhdCBjYXNlXG4gIC8vIHRoZSBwcm9wZXIgc29sdXRpb24gaXMgdG8gZml4IHRoZSBhY2NpZGVudGFsIHN0cmljdCBtb2RlIHByb2JsZW0uIElmXG4gIC8vIHlvdSd2ZSBtaXNjb25maWd1cmVkIHlvdXIgYnVuZGxlciB0byBmb3JjZSBzdHJpY3QgbW9kZSBhbmQgYXBwbGllZCBhXG4gIC8vIENTUCB0byBmb3JiaWQgRnVuY3Rpb24sIGFuZCB5b3UncmUgbm90IHdpbGxpbmcgdG8gZml4IGVpdGhlciBvZiB0aG9zZVxuICAvLyBwcm9ibGVtcywgcGxlYXNlIGRldGFpbCB5b3VyIHVuaXF1ZSBwcmVkaWNhbWVudCBpbiBhIEdpdEh1YiBpc3N1ZS5cbiAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdXNlTWVtbztcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxuZnVuY3Rpb24gdXNlTWVtbyhnZXRWYWx1ZSwgY29uZGl0aW9uLCBzaG91bGRVcGRhdGUpIHtcbiAgdmFyIGNhY2hlUmVmID0gUmVhY3QudXNlUmVmKHt9KTtcblxuICBpZiAoISgndmFsdWUnIGluIGNhY2hlUmVmLmN1cnJlbnQpIHx8IHNob3VsZFVwZGF0ZShjYWNoZVJlZi5jdXJyZW50LmNvbmRpdGlvbiwgY29uZGl0aW9uKSkge1xuICAgIGNhY2hlUmVmLmN1cnJlbnQudmFsdWUgPSBnZXRWYWx1ZSgpO1xuICAgIGNhY2hlUmVmLmN1cnJlbnQuY29uZGl0aW9uID0gY29uZGl0aW9uO1xuICB9XG5cbiAgcmV0dXJuIGNhY2hlUmVmLmN1cnJlbnQudmFsdWU7XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gZXhwb3J0cy5BTlRfTUFSSyA9IHZvaWQgMDtcblxudmFyIF9leHRlbmRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKSk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiKSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiKSk7XG5cbnZhciBfaW5oZXJpdHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiKSk7XG5cbnZhciBfY3JlYXRlU3VwZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVTdXBlclwiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfZGV2V2FybmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL191dGlsL2Rldldhcm5pbmdcIikpO1xuXG52YXIgX2xvY2FsZSA9IHJlcXVpcmUoXCIuLi9tb2RhbC9sb2NhbGVcIik7XG5cbnZhciBfY29udGV4dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vY29udGV4dFwiKSk7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxudmFyIEFOVF9NQVJLID0gJ2ludGVybmFsTWFyayc7XG5leHBvcnRzLkFOVF9NQVJLID0gQU5UX01BUks7XG5cbnZhciBMb2NhbGVQcm92aWRlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICAoMCwgX2luaGVyaXRzMltcImRlZmF1bHRcIl0pKExvY2FsZVByb3ZpZGVyLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gKDAsIF9jcmVhdGVTdXBlcjJbXCJkZWZhdWx0XCJdKShMb2NhbGVQcm92aWRlcik7XG5cbiAgZnVuY3Rpb24gTG9jYWxlUHJvdmlkZXIocHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMltcImRlZmF1bHRcIl0pKHRoaXMsIExvY2FsZVByb3ZpZGVyKTtcbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKTtcbiAgICAoMCwgX2xvY2FsZS5jaGFuZ2VDb25maXJtTG9jYWxlKShwcm9wcy5sb2NhbGUgJiYgcHJvcHMubG9jYWxlLk1vZGFsKTtcbiAgICAoMCwgX2Rldldhcm5pbmdbXCJkZWZhdWx0XCJdKShwcm9wcy5fQU5UX01BUktfXyA9PT0gQU5UX01BUkssICdMb2NhbGVQcm92aWRlcicsICdgTG9jYWxlUHJvdmlkZXJgIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgYGxvY2FsZWAgd2l0aCBgQ29uZmlnUHJvdmlkZXJgIGluc3RlYWQ6IGh0dHA6Ly91LmFudC5kZXNpZ24vbG9jYWxlJyk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczJbXCJkZWZhdWx0XCJdKShMb2NhbGVQcm92aWRlciwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAoMCwgX2xvY2FsZS5jaGFuZ2VDb25maXJtTG9jYWxlKSh0aGlzLnByb3BzLmxvY2FsZSAmJiB0aGlzLnByb3BzLmxvY2FsZS5Nb2RhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICB2YXIgbG9jYWxlID0gdGhpcy5wcm9wcy5sb2NhbGU7XG5cbiAgICAgIGlmIChwcmV2UHJvcHMubG9jYWxlICE9PSBsb2NhbGUpIHtcbiAgICAgICAgKDAsIF9sb2NhbGUuY2hhbmdlQ29uZmlybUxvY2FsZSkobG9jYWxlICYmIGxvY2FsZS5Nb2RhbCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgKDAsIF9sb2NhbGUuY2hhbmdlQ29uZmlybUxvY2FsZSkoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgbG9jYWxlID0gX3RoaXMkcHJvcHMubG9jYWxlLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMuY2hpbGRyZW47XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2NvbnRleHRbXCJkZWZhdWx0XCJdLlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCBsb2NhbGUpLCB7XG4gICAgICAgICAgZXhpc3Q6IHRydWVcbiAgICAgICAgfSlcbiAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIExvY2FsZVByb3ZpZGVyO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IExvY2FsZVByb3ZpZGVyO1xuTG9jYWxlUHJvdmlkZXIuZGVmYXVsdFByb3BzID0ge1xuICBsb2NhbGU6IHt9XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuY2hhbmdlQ29uZmlybUxvY2FsZSA9IGNoYW5nZUNvbmZpcm1Mb2NhbGU7XG5leHBvcnRzLmdldENvbmZpcm1Mb2NhbGUgPSBnZXRDb25maXJtTG9jYWxlO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIF9kZWZhdWx0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vbG9jYWxlL2RlZmF1bHRcIikpO1xuXG52YXIgcnVudGltZUxvY2FsZSA9ICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgX2RlZmF1bHRbXCJkZWZhdWx0XCJdLk1vZGFsKTtcblxuZnVuY3Rpb24gY2hhbmdlQ29uZmlybUxvY2FsZShuZXdMb2NhbGUpIHtcbiAgaWYgKG5ld0xvY2FsZSkge1xuICAgIHJ1bnRpbWVMb2NhbGUgPSAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCBydW50aW1lTG9jYWxlKSwgbmV3TG9jYWxlKTtcbiAgfSBlbHNlIHtcbiAgICBydW50aW1lTG9jYWxlID0gKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCBfZGVmYXVsdFtcImRlZmF1bHRcIl0uTW9kYWwpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldENvbmZpcm1Mb2NhbGUoKSB7XG4gIHJldHVybiBydW50aW1lTG9jYWxlO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIGxvY2FsZSA9IHtcbiAgbG9jYWxlOiAnZW5fVVMnLFxuICB0b2RheTogJ1RvZGF5JyxcbiAgbm93OiAnTm93JyxcbiAgYmFja1RvVG9kYXk6ICdCYWNrIHRvIHRvZGF5JyxcbiAgb2s6ICdPaycsXG4gIGNsZWFyOiAnQ2xlYXInLFxuICBtb250aDogJ01vbnRoJyxcbiAgeWVhcjogJ1llYXInLFxuICB0aW1lU2VsZWN0OiAnc2VsZWN0IHRpbWUnLFxuICBkYXRlU2VsZWN0OiAnc2VsZWN0IGRhdGUnLFxuICB3ZWVrU2VsZWN0OiAnQ2hvb3NlIGEgd2VlaycsXG4gIG1vbnRoU2VsZWN0OiAnQ2hvb3NlIGEgbW9udGgnLFxuICB5ZWFyU2VsZWN0OiAnQ2hvb3NlIGEgeWVhcicsXG4gIGRlY2FkZVNlbGVjdDogJ0Nob29zZSBhIGRlY2FkZScsXG4gIHllYXJGb3JtYXQ6ICdZWVlZJyxcbiAgZGF0ZUZvcm1hdDogJ00vRC9ZWVlZJyxcbiAgZGF5Rm9ybWF0OiAnRCcsXG4gIGRhdGVUaW1lRm9ybWF0OiAnTS9EL1lZWVkgSEg6bW06c3MnLFxuICBtb250aEJlZm9yZVllYXI6IHRydWUsXG4gIHByZXZpb3VzTW9udGg6ICdQcmV2aW91cyBtb250aCAoUGFnZVVwKScsXG4gIG5leHRNb250aDogJ05leHQgbW9udGggKFBhZ2VEb3duKScsXG4gIHByZXZpb3VzWWVhcjogJ0xhc3QgeWVhciAoQ29udHJvbCArIGxlZnQpJyxcbiAgbmV4dFllYXI6ICdOZXh0IHllYXIgKENvbnRyb2wgKyByaWdodCknLFxuICBwcmV2aW91c0RlY2FkZTogJ0xhc3QgZGVjYWRlJyxcbiAgbmV4dERlY2FkZTogJ05leHQgZGVjYWRlJyxcbiAgcHJldmlvdXNDZW50dXJ5OiAnTGFzdCBjZW50dXJ5JyxcbiAgbmV4dENlbnR1cnk6ICdOZXh0IGNlbnR1cnknXG59O1xudmFyIF9kZWZhdWx0ID0gbG9jYWxlO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfZW5fVVMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9kYXRlLXBpY2tlci9sb2NhbGUvZW5fVVNcIikpO1xuXG52YXIgX2RlZmF1bHQgPSBfZW5fVVNbXCJkZWZhdWx0XCJdO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9kZWZhdWx0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2xvY2FsZS9kZWZhdWx0XCIpKTtcblxudmFyIF9kZWZhdWx0ID0gX2RlZmF1bHQyW1wiZGVmYXVsdFwiXTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2VtcHR5ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZW1wdHlcIikpO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuXCIpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciByZW5kZXJFbXB0eSA9IGZ1bmN0aW9uIHJlbmRlckVtcHR5KGNvbXBvbmVudE5hbWUpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF8uQ29uZmlnQ29uc3VtZXIsIG51bGwsIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIGdldFByZWZpeENscyA9IF9yZWYuZ2V0UHJlZml4Q2xzO1xuICAgIHZhciBwcmVmaXggPSBnZXRQcmVmaXhDbHMoJ2VtcHR5Jyk7XG5cbiAgICBzd2l0Y2ggKGNvbXBvbmVudE5hbWUpIHtcbiAgICAgIGNhc2UgJ1RhYmxlJzpcbiAgICAgIGNhc2UgJ0xpc3QnOlxuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2VtcHR5W1wiZGVmYXVsdFwiXSwge1xuICAgICAgICAgIGltYWdlOiBfZW1wdHlbXCJkZWZhdWx0XCJdLlBSRVNFTlRFRF9JTUFHRV9TSU1QTEVcbiAgICAgICAgfSk7XG5cbiAgICAgIGNhc2UgJ1NlbGVjdCc6XG4gICAgICBjYXNlICdUcmVlU2VsZWN0JzpcbiAgICAgIGNhc2UgJ0Nhc2NhZGVyJzpcbiAgICAgIGNhc2UgJ1RyYW5zZmVyJzpcbiAgICAgIGNhc2UgJ01lbnRpb25zJzpcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9lbXB0eVtcImRlZmF1bHRcIl0sIHtcbiAgICAgICAgICBpbWFnZTogX2VtcHR5W1wiZGVmYXVsdFwiXS5QUkVTRU5URURfSU1BR0VfU0lNUExFLFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi1zbWFsbFwiKVxuICAgICAgICB9KTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9lbXB0eVtcImRlZmF1bHRcIl0sIG51bGwpO1xuICAgIH1cbiAgfSk7XG59O1xuXG52YXIgX2RlZmF1bHQgPSByZW5kZXJFbXB0eTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBFbXB0eSA9IGZ1bmN0aW9uIEVtcHR5KCkge1xuICB2YXIgX1JlYWN0JHVzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KF9jb25maWdQcm92aWRlci5Db25maWdDb250ZXh0KSxcbiAgICAgIGdldFByZWZpeENscyA9IF9SZWFjdCR1c2VDb250ZXh0LmdldFByZWZpeENscztcblxuICB2YXIgcHJlZml4Q2xzID0gZ2V0UHJlZml4Q2xzKCdlbXB0eS1pbWctZGVmYXVsdCcpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwge1xuICAgIGNsYXNzTmFtZTogcHJlZml4Q2xzLFxuICAgIHdpZHRoOiBcIjE4NFwiLFxuICAgIGhlaWdodDogXCIxNTJcIixcbiAgICB2aWV3Qm94OiBcIjAgMCAxODQgMTUyXCIsXG4gICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImdcIiwge1xuICAgIGZpbGw6IFwibm9uZVwiLFxuICAgIGZpbGxSdWxlOiBcImV2ZW5vZGRcIlxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImdcIiwge1xuICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoMjQgMzEuNjcpXCJcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJlbGxpcHNlXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZWxsaXBzZVwiKSxcbiAgICBjeDogXCI2Ny43OTdcIixcbiAgICBjeTogXCIxMDYuODlcIixcbiAgICByeDogXCI2Ny43OTdcIixcbiAgICByeTogXCIxMi42NjhcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcGF0aC0xXCIpLFxuICAgIGQ6IFwiTTEyMi4wMzQgNjkuNjc0TDk4LjEwOSA0MC4yMjljLTEuMTQ4LTEuMzg2LTIuODI2LTIuMjI1LTQuNTkzLTIuMjI1aC01MS40NGMtMS43NjYgMC0zLjQ0NC44MzktNC41OTIgMi4yMjVMMTMuNTYgNjkuNjc0djE1LjM4M2gxMDguNDc1VjY5LjY3NHpcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcGF0aC0yXCIpLFxuICAgIGQ6IFwiTTEwMS41MzcgODYuMjE0TDgwLjYzIDYxLjEwMmMtMS4wMDEtMS4yMDctMi41MDctMS44NjctNC4wNDgtMS44NjdIMzEuNzI0Yy0xLjU0IDAtMy4wNDcuNjYtNC4wNDggMS44NjdMNi43NjkgODYuMjE0djEzLjc5Mmg5NC43NjhWODYuMjE0elwiLFxuICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoMTMuNTYpXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXBhdGgtM1wiKSxcbiAgICBkOiBcIk0zMy44MyAwaDY3LjkzM2E0IDQgMCAwIDEgNCA0djkzLjM0NGE0IDQgMCAwIDEtNCA0SDMzLjgzYTQgNCAwIDAgMS00LTRWNGE0IDQgMCAwIDEgNC00elwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1wYXRoLTRcIiksXG4gICAgZDogXCJNNDIuNjc4IDkuOTUzaDUwLjIzN2EyIDIgMCAwIDEgMiAyVjM2LjkxYTIgMiAwIDAgMS0yIDJINDIuNjc4YTIgMiAwIDAgMS0yLTJWMTEuOTUzYTIgMiAwIDAgMSAyLTJ6TTQyLjk0IDQ5Ljc2N2g0OS43MTNhMi4yNjIgMi4yNjIgMCAxIDEgMCA0LjUyNEg0Mi45NGEyLjI2MiAyLjI2MiAwIDAgMSAwLTQuNTI0ek00Mi45NCA2MS41M2g0OS43MTNhMi4yNjIgMi4yNjIgMCAxIDEgMCA0LjUyNUg0Mi45NGEyLjI2MiAyLjI2MiAwIDAgMSAwLTQuNTI1ek0xMjEuODEzIDEwNS4wMzJjLS43NzUgMy4wNzEtMy40OTcgNS4zNi02LjczNSA1LjM2SDIwLjUxNWMtMy4yMzggMC01Ljk2LTIuMjktNi43MzQtNS4zNmE3LjMwOSA3LjMwOSAwIDAgMS0uMjIyLTEuNzlWNjkuNjc1aDI2LjMxOGMyLjkwNyAwIDUuMjUgMi40NDggNS4yNSA1LjQydi4wNGMwIDIuOTcxIDIuMzcgNS4zNyA1LjI3NyA1LjM3aDM0Ljc4NWMyLjkwNyAwIDUuMjc3LTIuNDIxIDUuMjc3LTUuMzkzVjc1LjFjMC0yLjk3MiAyLjM0My01LjQyNiA1LjI1LTUuNDI2aDI2LjMxOHYzMy41NjljMCAuNjE3LS4wNzcgMS4yMTYtLjIyMSAxLjc4OXpcIlxuICB9KSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXBhdGgtNVwiKSxcbiAgICBkOiBcIk0xNDkuMTIxIDMzLjI5MmwtNi44MyAyLjY1YTEgMSAwIDAgMS0xLjMxNy0xLjIzbDEuOTM3LTYuMjA3Yy0yLjU4OS0yLjk0NC00LjEwOS02LjUzNC00LjEwOS0xMC40MDhDMTM4LjgwMiA4LjEwMiAxNDguOTIgMCAxNjEuNDAyIDAgMTczLjg4MSAwIDE4NCA4LjEwMiAxODQgMTguMDk3YzAgOS45OTUtMTAuMTE4IDE4LjA5Ny0yMi41OTkgMTguMDk3LTQuNTI4IDAtOC43NDQtMS4wNjYtMTIuMjgtMi45MDJ6XCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWdcIiksXG4gICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgxNDkuNjUgMTUuMzgzKVwiXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZWxsaXBzZVwiLCB7XG4gICAgY3g6IFwiMjAuNjU0XCIsXG4gICAgY3k6IFwiMy4xNjdcIixcbiAgICByeDogXCIyLjg0OVwiLFxuICAgIHJ5OiBcIjIuODE1XCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNNS42OTggNS42M0gwTDIuODk4LjcwNHpNOS4yNTkuNzA0aDQuOTg1VjUuNjNIOS4yNTl6XCJcbiAgfSkpKSk7XG59O1xuXG52YXIgX2RlZmF1bHQgPSBFbXB0eTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBTaW1wbGUgPSBmdW5jdGlvbiBTaW1wbGUoKSB7XG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnRleHQpLFxuICAgICAgZ2V0UHJlZml4Q2xzID0gX1JlYWN0JHVzZUNvbnRleHQuZ2V0UHJlZml4Q2xzO1xuXG4gIHZhciBwcmVmaXhDbHMgPSBnZXRQcmVmaXhDbHMoJ2VtcHR5LWltZy1zaW1wbGUnKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHtcbiAgICBjbGFzc05hbWU6IHByZWZpeENscyxcbiAgICB3aWR0aDogXCI2NFwiLFxuICAgIGhlaWdodDogXCI0MVwiLFxuICAgIHZpZXdCb3g6IFwiMCAwIDY0IDQxXCIsXG4gICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImdcIiwge1xuICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoMCAxKVwiLFxuICAgIGZpbGw6IFwibm9uZVwiLFxuICAgIGZpbGxSdWxlOiBcImV2ZW5vZGRcIlxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImVsbGlwc2VcIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1lbGxpcHNlXCIpLFxuICAgIGN4OiBcIjMyXCIsXG4gICAgY3k6IFwiMzNcIixcbiAgICByeDogXCIzMlwiLFxuICAgIHJ5OiBcIjdcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZ1wiKSxcbiAgICBmaWxsUnVsZTogXCJub256ZXJvXCJcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk01NSAxMi43Nkw0NC44NTQgMS4yNThDNDQuMzY3LjQ3NCA0My42NTYgMCA0Mi45MDcgMEgyMS4wOTNjLS43NDkgMC0xLjQ2LjQ3NC0xLjk0NyAxLjI1N0w5IDEyLjc2MVYyMmg0NnYtOS4yNHpcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk00MS42MTMgMTUuOTMxYzAtMS42MDUuOTk0LTIuOTMgMi4yMjctMi45MzFINTV2MTguMTM3QzU1IDMzLjI2IDUzLjY4IDM1IDUyLjA1IDM1aC00MC4xQzEwLjMyIDM1IDkgMzMuMjU5IDkgMzEuMTM3VjEzaDExLjE2YzEuMjMzIDAgMi4yMjcgMS4zMjMgMi4yMjcgMi45Mjh2LjAyMmMwIDEuNjA1IDEuMDA1IDIuOTAxIDIuMjM3IDIuOTAxaDE0Ljc1MmMxLjIzMiAwIDIuMjM3LTEuMzA4IDIuMjM3LTIuOTEzdi0uMDA3elwiLFxuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1wYXRoXCIpXG4gIH0pKSkpO1xufTtcblxudmFyIF9kZWZhdWx0ID0gU2ltcGxlO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCIvKiogQGxpY2Vuc2UgUmVhY3QgdjE2LjEzLjFcbiAqIHJlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO3ZhciBiPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsYz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLGQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LGU9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcsZj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCxnPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LGg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDksaz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLGw9Yj9TeW1ib2wuZm9yKFwicmVhY3QuYXN5bmNfbW9kZVwiKTo2MDExMSxtPWI/U3ltYm9sLmZvcihcInJlYWN0LmNvbmN1cnJlbnRfbW9kZVwiKTo2MDExMSxuPWI/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLHA9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIik6NjAxMTMscT1iP1xuU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIik6NjAxMjAscj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LHQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNix2PWI/U3ltYm9sLmZvcihcInJlYWN0LmJsb2NrXCIpOjYwMTIxLHc9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnVuZGFtZW50YWxcIik6NjAxMTcseD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5yZXNwb25kZXJcIik6NjAxMTgseT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTo2MDExOTtcbmZ1bmN0aW9uIHooYSl7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSl7dmFyIHU9YS4kJHR5cGVvZjtzd2l0Y2godSl7Y2FzZSBjOnN3aXRjaChhPWEudHlwZSxhKXtjYXNlIGw6Y2FzZSBtOmNhc2UgZTpjYXNlIGc6Y2FzZSBmOmNhc2UgcDpyZXR1cm4gYTtkZWZhdWx0OnN3aXRjaChhPWEmJmEuJCR0eXBlb2YsYSl7Y2FzZSBrOmNhc2UgbjpjYXNlIHQ6Y2FzZSByOmNhc2UgaDpyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB1fX1jYXNlIGQ6cmV0dXJuIHV9fX1mdW5jdGlvbiBBKGEpe3JldHVybiB6KGEpPT09bX1leHBvcnRzLkFzeW5jTW9kZT1sO2V4cG9ydHMuQ29uY3VycmVudE1vZGU9bTtleHBvcnRzLkNvbnRleHRDb25zdW1lcj1rO2V4cG9ydHMuQ29udGV4dFByb3ZpZGVyPWg7ZXhwb3J0cy5FbGVtZW50PWM7ZXhwb3J0cy5Gb3J3YXJkUmVmPW47ZXhwb3J0cy5GcmFnbWVudD1lO2V4cG9ydHMuTGF6eT10O2V4cG9ydHMuTWVtbz1yO2V4cG9ydHMuUG9ydGFsPWQ7XG5leHBvcnRzLlByb2ZpbGVyPWc7ZXhwb3J0cy5TdHJpY3RNb2RlPWY7ZXhwb3J0cy5TdXNwZW5zZT1wO2V4cG9ydHMuaXNBc3luY01vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIEEoYSl8fHooYSk9PT1sfTtleHBvcnRzLmlzQ29uY3VycmVudE1vZGU9QTtleHBvcnRzLmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09a307ZXhwb3J0cy5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWh9O2V4cG9ydHMuaXNFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1jfTtleHBvcnRzLmlzRm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PW59O2V4cG9ydHMuaXNGcmFnbWVudD1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWV9O2V4cG9ydHMuaXNMYXp5PWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09dH07XG5leHBvcnRzLmlzTWVtbz1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXJ9O2V4cG9ydHMuaXNQb3J0YWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1kfTtleHBvcnRzLmlzUHJvZmlsZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1nfTtleHBvcnRzLmlzU3RyaWN0TW9kZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWZ9O2V4cG9ydHMuaXNTdXNwZW5zZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXB9O1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgYXx8YT09PWV8fGE9PT1tfHxhPT09Z3x8YT09PWZ8fGE9PT1wfHxhPT09cXx8XCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmKGEuJCR0eXBlb2Y9PT10fHxhLiQkdHlwZW9mPT09cnx8YS4kJHR5cGVvZj09PWh8fGEuJCR0eXBlb2Y9PT1rfHxhLiQkdHlwZW9mPT09bnx8YS4kJHR5cGVvZj09PXd8fGEuJCR0eXBlb2Y9PT14fHxhLiQkdHlwZW9mPT09eXx8YS4kJHR5cGVvZj09PXYpfTtleHBvcnRzLnR5cGVPZj16O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX0xvYWRpbmdPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zLXN2Zy9saWIvYXNuL0xvYWRpbmdPdXRsaW5lZFwiKSk7XG5cbnZhciBfQW50ZEljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9jb21wb25lbnRzL0FudGRJY29uXCIpKTtcblxuLy8gR0VORVJBVEUgQlkgLi9zY3JpcHRzL2dlbmVyYXRlLnRzXG4vLyBET04gTk9UIEVESVQgSVQgTUFOVUFMTFlcbnZhciBMb2FkaW5nT3V0bGluZWQgPSBmdW5jdGlvbiBMb2FkaW5nT3V0bGluZWQocHJvcHMsIHJlZikge1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0FudGRJY29uLmRlZmF1bHQsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgcmVmOiByZWYsXG4gICAgaWNvbjogX0xvYWRpbmdPdXRsaW5lZC5kZWZhdWx0XG4gIH0pKTtcbn07XG5cbkxvYWRpbmdPdXRsaW5lZC5kaXNwbGF5TmFtZSA9ICdMb2FkaW5nT3V0bGluZWQnO1xuXG52YXIgX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihMb2FkaW5nT3V0bGluZWQpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcbi8vIFRoaXMgaWNvbiBmaWxlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIExvYWRpbmdPdXRsaW5lZCA9IHsgXCJpY29uXCI6IHsgXCJ0YWdcIjogXCJzdmdcIiwgXCJhdHRyc1wiOiB7IFwidmlld0JveFwiOiBcIjAgMCAxMDI0IDEwMjRcIiwgXCJmb2N1c2FibGVcIjogXCJmYWxzZVwiIH0sIFwiY2hpbGRyZW5cIjogW3sgXCJ0YWdcIjogXCJwYXRoXCIsIFwiYXR0cnNcIjogeyBcImRcIjogXCJNOTg4IDU0OGMtMTkuOSAwLTM2LTE2LjEtMzYtMzYgMC01OS40LTExLjYtMTE3LTM0LjYtMTcxLjNhNDQwLjQ1IDQ0MC40NSAwIDAwLTk0LjMtMTM5LjkgNDM3LjcxIDQzNy43MSAwIDAwLTEzOS45LTk0LjNDNjI5IDgzLjYgNTcxLjQgNzIgNTEyIDcyYy0xOS45IDAtMzYtMTYuMS0zNi0zNnMxNi4xLTM2IDM2LTM2YzY5LjEgMCAxMzYuMiAxMy41IDE5OS4zIDQwLjNDNzcyLjMgNjYgODI3IDEwMyA4NzQgMTUwYzQ3IDQ3IDgzLjkgMTAxLjggMTA5LjcgMTYyLjcgMjYuNyA2My4xIDQwLjIgMTMwLjIgNDAuMiAxOTkuMy4xIDE5LjktMTYgMzYtMzUuOSAzNnpcIiB9IH1dIH0sIFwibmFtZVwiOiBcImxvYWRpbmdcIiwgXCJ0aGVtZVwiOiBcIm91dGxpbmVkXCIgfTtcbmV4cG9ydHMuZGVmYXVsdCA9IExvYWRpbmdPdXRsaW5lZDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuc2V0VHdvVG9uZUNvbG9yID0gc2V0VHdvVG9uZUNvbG9yO1xuZXhwb3J0cy5nZXRUd29Ub25lQ29sb3IgPSBnZXRUd29Ub25lQ29sb3I7XG5cbnZhciBfc2xpY2VkVG9BcnJheTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIikpO1xuXG52YXIgX0ljb25CYXNlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9JY29uQmFzZVwiKSk7XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKFwiLi4vdXRpbHNcIik7XG5cbmZ1bmN0aW9uIHNldFR3b1RvbmVDb2xvcih0d29Ub25lQ29sb3IpIHtcbiAgdmFyIF9ub3JtYWxpemVUd29Ub25lQ29sbyA9ICgwLCBfdXRpbHMubm9ybWFsaXplVHdvVG9uZUNvbG9ycykodHdvVG9uZUNvbG9yKSxcbiAgICAgIF9ub3JtYWxpemVUd29Ub25lQ29sbzIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyLmRlZmF1bHQpKF9ub3JtYWxpemVUd29Ub25lQ29sbywgMiksXG4gICAgICBwcmltYXJ5Q29sb3IgPSBfbm9ybWFsaXplVHdvVG9uZUNvbG8yWzBdLFxuICAgICAgc2Vjb25kYXJ5Q29sb3IgPSBfbm9ybWFsaXplVHdvVG9uZUNvbG8yWzFdO1xuXG4gIHJldHVybiBfSWNvbkJhc2UuZGVmYXVsdC5zZXRUd29Ub25lQ29sb3JzKHtcbiAgICBwcmltYXJ5Q29sb3I6IHByaW1hcnlDb2xvcixcbiAgICBzZWNvbmRhcnlDb2xvcjogc2Vjb25kYXJ5Q29sb3JcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFR3b1RvbmVDb2xvcigpIHtcbiAgdmFyIGNvbG9ycyA9IF9JY29uQmFzZS5kZWZhdWx0LmdldFR3b1RvbmVDb2xvcnMoKTtcblxuICBpZiAoIWNvbG9ycy5jYWxjdWxhdGVkKSB7XG4gICAgcmV0dXJuIGNvbG9ycy5wcmltYXJ5Q29sb3I7XG4gIH1cblxuICByZXR1cm4gW2NvbG9ycy5wcmltYXJ5Q29sb3IsIGNvbG9ycy5zZWNvbmRhcnlDb2xvcl07XG59IiwiJ3VzZSBzdHJpY3QnO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxuICB9KTtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuICBcbiAgdmFyIF9FeGNsYW1hdGlvbkNpcmNsZUZpbGxlZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZSgnLi9saWIvaWNvbnMvRXhjbGFtYXRpb25DaXJjbGVGaWxsZWQnKSk7XG4gIFxuICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG4gIFxuICB2YXIgX2RlZmF1bHQgPSBfRXhjbGFtYXRpb25DaXJjbGVGaWxsZWQ7XG4gIGV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuICBtb2R1bGUuZXhwb3J0cyA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9FeGNsYW1hdGlvbkNpcmNsZUZpbGxlZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zLXN2Zy9saWIvYXNuL0V4Y2xhbWF0aW9uQ2lyY2xlRmlsbGVkXCIpKTtcblxudmFyIF9BbnRkSWNvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2NvbXBvbmVudHMvQW50ZEljb25cIikpO1xuXG4vLyBHRU5FUkFURSBCWSAuL3NjcmlwdHMvZ2VuZXJhdGUudHNcbi8vIERPTiBOT1QgRURJVCBJVCBNQU5VQUxMWVxudmFyIEV4Y2xhbWF0aW9uQ2lyY2xlRmlsbGVkID0gZnVuY3Rpb24gRXhjbGFtYXRpb25DaXJjbGVGaWxsZWQocHJvcHMsIHJlZikge1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0FudGRJY29uLmRlZmF1bHQsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgcmVmOiByZWYsXG4gICAgaWNvbjogX0V4Y2xhbWF0aW9uQ2lyY2xlRmlsbGVkLmRlZmF1bHRcbiAgfSkpO1xufTtcblxuRXhjbGFtYXRpb25DaXJjbGVGaWxsZWQuZGlzcGxheU5hbWUgPSAnRXhjbGFtYXRpb25DaXJjbGVGaWxsZWQnO1xuXG52YXIgX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihFeGNsYW1hdGlvbkNpcmNsZUZpbGxlZCk7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuLy8gVGhpcyBpY29uIGZpbGUgaXMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRXhjbGFtYXRpb25DaXJjbGVGaWxsZWQgPSB7IFwiaWNvblwiOiB7IFwidGFnXCI6IFwic3ZnXCIsIFwiYXR0cnNcIjogeyBcInZpZXdCb3hcIjogXCI2NCA2NCA4OTYgODk2XCIsIFwiZm9jdXNhYmxlXCI6IFwiZmFsc2VcIiB9LCBcImNoaWxkcmVuXCI6IFt7IFwidGFnXCI6IFwicGF0aFwiLCBcImF0dHJzXCI6IHsgXCJkXCI6IFwiTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0tMzIgMjMyYzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MjcyYzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOFYyOTZ6bTMyIDQ0MGE0OC4wMSA0OC4wMSAwIDAxMC05NiA0OC4wMSA0OC4wMSAwIDAxMCA5NnpcIiB9IH1dIH0sIFwibmFtZVwiOiBcImV4Y2xhbWF0aW9uLWNpcmNsZVwiLCBcInRoZW1lXCI6IFwiZmlsbGVkXCIgfTtcbmV4cG9ydHMuZGVmYXVsdCA9IEV4Y2xhbWF0aW9uQ2lyY2xlRmlsbGVkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX0Nsb3NlQ2lyY2xlRmlsbGVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vQ2xvc2VDaXJjbGVGaWxsZWRcIikpO1xuXG52YXIgX0FudGRJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vY29tcG9uZW50cy9BbnRkSWNvblwiKSk7XG5cbi8vIEdFTkVSQVRFIEJZIC4vc2NyaXB0cy9nZW5lcmF0ZS50c1xuLy8gRE9OIE5PVCBFRElUIElUIE1BTlVBTExZXG52YXIgQ2xvc2VDaXJjbGVGaWxsZWQgPSBmdW5jdGlvbiBDbG9zZUNpcmNsZUZpbGxlZChwcm9wcywgcmVmKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQW50ZEljb24uZGVmYXVsdCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICByZWY6IHJlZixcbiAgICBpY29uOiBfQ2xvc2VDaXJjbGVGaWxsZWQuZGVmYXVsdFxuICB9KSk7XG59O1xuXG5DbG9zZUNpcmNsZUZpbGxlZC5kaXNwbGF5TmFtZSA9ICdDbG9zZUNpcmNsZUZpbGxlZCc7XG5cbnZhciBfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKENsb3NlQ2lyY2xlRmlsbGVkKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBUaGlzIGljb24gZmlsZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBDbG9zZUNpcmNsZUZpbGxlZCA9IHsgXCJpY29uXCI6IHsgXCJ0YWdcIjogXCJzdmdcIiwgXCJhdHRyc1wiOiB7IFwidmlld0JveFwiOiBcIjY0IDY0IDg5NiA4OTZcIiwgXCJmb2N1c2FibGVcIjogXCJmYWxzZVwiIH0sIFwiY2hpbGRyZW5cIjogW3sgXCJ0YWdcIjogXCJwYXRoXCIsIFwiYXR0cnNcIjogeyBcImRcIjogXCJNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTE2NS40IDYxOC4ybC02Ni0uM0w1MTIgNTYzLjRsLTk5LjMgMTE4LjQtNjYuMS4zYy00LjQgMC04LTMuNS04LTggMC0xLjkuNy0zLjcgMS45LTUuMmwxMzAuMS0xNTVMMzQwLjUgMzU5YTguMzIgOC4zMiAwIDAxLTEuOS01LjJjMC00LjQgMy42LTggOC04bDY2LjEuM0w1MTIgNDY0LjZsOTkuMy0xMTguNCA2Ni0uM2M0LjQgMCA4IDMuNSA4IDggMCAxLjktLjcgMy43LTEuOSA1LjJMNTUzLjUgNTE0bDEzMCAxNTVjMS4yIDEuNSAxLjkgMy4zIDEuOSA1LjIgMCA0LjQtMy42IDgtOCA4elwiIH0gfV0gfSwgXCJuYW1lXCI6IFwiY2xvc2UtY2lyY2xlXCIsIFwidGhlbWVcIjogXCJmaWxsZWRcIiB9O1xuZXhwb3J0cy5kZWZhdWx0ID0gQ2xvc2VDaXJjbGVGaWxsZWQ7XG4iLCIndXNlIHN0cmljdCc7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG4gIH0pO1xuICBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG4gIFxuICB2YXIgX0NoZWNrQ2lyY2xlRmlsbGVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCcuL2xpYi9pY29ucy9DaGVja0NpcmNsZUZpbGxlZCcpKTtcbiAgXG4gIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cbiAgXG4gIHZhciBfZGVmYXVsdCA9IF9DaGVja0NpcmNsZUZpbGxlZDtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG4gIG1vZHVsZS5leHBvcnRzID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX0NoZWNrQ2lyY2xlRmlsbGVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vQ2hlY2tDaXJjbGVGaWxsZWRcIikpO1xuXG52YXIgX0FudGRJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vY29tcG9uZW50cy9BbnRkSWNvblwiKSk7XG5cbi8vIEdFTkVSQVRFIEJZIC4vc2NyaXB0cy9nZW5lcmF0ZS50c1xuLy8gRE9OIE5PVCBFRElUIElUIE1BTlVBTExZXG52YXIgQ2hlY2tDaXJjbGVGaWxsZWQgPSBmdW5jdGlvbiBDaGVja0NpcmNsZUZpbGxlZChwcm9wcywgcmVmKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQW50ZEljb24uZGVmYXVsdCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICByZWY6IHJlZixcbiAgICBpY29uOiBfQ2hlY2tDaXJjbGVGaWxsZWQuZGVmYXVsdFxuICB9KSk7XG59O1xuXG5DaGVja0NpcmNsZUZpbGxlZC5kaXNwbGF5TmFtZSA9ICdDaGVja0NpcmNsZUZpbGxlZCc7XG5cbnZhciBfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKENoZWNrQ2lyY2xlRmlsbGVkKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBUaGlzIGljb24gZmlsZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBDaGVja0NpcmNsZUZpbGxlZCA9IHsgXCJpY29uXCI6IHsgXCJ0YWdcIjogXCJzdmdcIiwgXCJhdHRyc1wiOiB7IFwidmlld0JveFwiOiBcIjY0IDY0IDg5NiA4OTZcIiwgXCJmb2N1c2FibGVcIjogXCJmYWxzZVwiIH0sIFwiY2hpbGRyZW5cIjogW3sgXCJ0YWdcIjogXCJwYXRoXCIsIFwiYXR0cnNcIjogeyBcImRcIjogXCJNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTE5My41IDMwMS43bC0yMTAuNiAyOTJhMzEuOCAzMS44IDAgMDEtNTEuNyAwTDMxOC41IDQ4NC45Yy0zLjgtNS4zIDAtMTIuNyA2LjUtMTIuN2g0Ni45YzEwLjIgMCAxOS45IDQuOSAyNS45IDEzLjNsNzEuMiA5OC44IDE1Ny4yLTIxOGM2LTguMyAxNS42LTEzLjMgMjUuOS0xMy4zSDY5OWM2LjUgMCAxMC4zIDcuNCA2LjUgMTIuN3pcIiB9IH1dIH0sIFwibmFtZVwiOiBcImNoZWNrLWNpcmNsZVwiLCBcInRoZW1lXCI6IFwiZmlsbGVkXCIgfTtcbmV4cG9ydHMuZGVmYXVsdCA9IENoZWNrQ2lyY2xlRmlsbGVkO1xuIiwiJ3VzZSBzdHJpY3QnO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxuICB9KTtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuICBcbiAgdmFyIF9JbmZvQ2lyY2xlRmlsbGVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCcuL2xpYi9pY29ucy9JbmZvQ2lyY2xlRmlsbGVkJykpO1xuICBcbiAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuICBcbiAgdmFyIF9kZWZhdWx0ID0gX0luZm9DaXJjbGVGaWxsZWQ7XG4gIGV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuICBtb2R1bGUuZXhwb3J0cyA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9JbmZvQ2lyY2xlRmlsbGVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vSW5mb0NpcmNsZUZpbGxlZFwiKSk7XG5cbnZhciBfQW50ZEljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9jb21wb25lbnRzL0FudGRJY29uXCIpKTtcblxuLy8gR0VORVJBVEUgQlkgLi9zY3JpcHRzL2dlbmVyYXRlLnRzXG4vLyBET04gTk9UIEVESVQgSVQgTUFOVUFMTFlcbnZhciBJbmZvQ2lyY2xlRmlsbGVkID0gZnVuY3Rpb24gSW5mb0NpcmNsZUZpbGxlZChwcm9wcywgcmVmKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQW50ZEljb24uZGVmYXVsdCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICByZWY6IHJlZixcbiAgICBpY29uOiBfSW5mb0NpcmNsZUZpbGxlZC5kZWZhdWx0XG4gIH0pKTtcbn07XG5cbkluZm9DaXJjbGVGaWxsZWQuZGlzcGxheU5hbWUgPSAnSW5mb0NpcmNsZUZpbGxlZCc7XG5cbnZhciBfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKEluZm9DaXJjbGVGaWxsZWQpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcbi8vIFRoaXMgaWNvbiBmaWxlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEluZm9DaXJjbGVGaWxsZWQgPSB7IFwiaWNvblwiOiB7IFwidGFnXCI6IFwic3ZnXCIsIFwiYXR0cnNcIjogeyBcInZpZXdCb3hcIjogXCI2NCA2NCA4OTYgODk2XCIsIFwiZm9jdXNhYmxlXCI6IFwiZmFsc2VcIiB9LCBcImNoaWxkcmVuXCI6IFt7IFwidGFnXCI6IFwicGF0aFwiLCBcImF0dHJzXCI6IHsgXCJkXCI6IFwiTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0zMiA2NjRjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04VjQ1NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djI3MnptLTMyLTM0NGE0OC4wMSA0OC4wMSAwIDAxMC05NiA0OC4wMSA0OC4wMSAwIDAxMCA5NnpcIiB9IH1dIH0sIFwibmFtZVwiOiBcImluZm8tY2lyY2xlXCIsIFwidGhlbWVcIjogXCJmaWxsZWRcIiB9O1xuZXhwb3J0cy5kZWZhdWx0ID0gSW5mb0NpcmNsZUZpbGxlZDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF90eXBlb2YgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IGNyZWF0ZVVzZU1lc3NhZ2U7XG5cbnZhciBfZXh0ZW5kczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIikpO1xuXG52YXIgX3NsaWNlZFRvQXJyYXkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF91c2VOb3RpZmljYXRpb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYy1ub3RpZmljYXRpb24vbGliL3VzZU5vdGlmaWNhdGlvblwiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLlwiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBjcmVhdGVVc2VNZXNzYWdlKGdldFJjTm90aWZpY2F0aW9uSW5zdGFuY2UsIGdldFJDTm90aWNlUHJvcHMpIHtcbiAgdmFyIHVzZU1lc3NhZ2UgPSBmdW5jdGlvbiB1c2VNZXNzYWdlKCkge1xuICAgIC8vIFdlIGNhbiBvbmx5IGdldCBjb250ZW50IGJ5IHJlbmRlclxuICAgIHZhciBnZXRQcmVmaXhDbHM7IC8vIFdlIGNyZWF0ZSBhIHByb3h5IHRvIGhhbmRsZSBkZWxheSBjcmVhdGVkIGluc3RhbmNlXG5cbiAgICB2YXIgaW5uZXJJbnN0YW5jZSA9IG51bGw7XG4gICAgdmFyIHByb3h5ID0ge1xuICAgICAgYWRkOiBmdW5jdGlvbiBhZGQobm90aWNlUHJvcHMsIGhvbGRlckNhbGxiYWNrKSB7XG4gICAgICAgIGlubmVySW5zdGFuY2UgPT09IG51bGwgfHwgaW5uZXJJbnN0YW5jZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaW5uZXJJbnN0YW5jZS5jb21wb25lbnQuYWRkKG5vdGljZVByb3BzLCBob2xkZXJDYWxsYmFjayk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBfdXNlUkNOb3RpZmljYXRpb24gPSAoMCwgX3VzZU5vdGlmaWNhdGlvbltcImRlZmF1bHRcIl0pKHByb3h5KSxcbiAgICAgICAgX3VzZVJDTm90aWZpY2F0aW9uMiA9ICgwLCBfc2xpY2VkVG9BcnJheTJbXCJkZWZhdWx0XCJdKShfdXNlUkNOb3RpZmljYXRpb24sIDIpLFxuICAgICAgICBob29rTm90aWZ5ID0gX3VzZVJDTm90aWZpY2F0aW9uMlswXSxcbiAgICAgICAgaG9sZGVyID0gX3VzZVJDTm90aWZpY2F0aW9uMlsxXTtcblxuICAgIGZ1bmN0aW9uIG5vdGlmeShhcmdzKSB7XG4gICAgICB2YXIgY3VzdG9taXplUHJlZml4Q2xzID0gYXJncy5wcmVmaXhDbHM7XG4gICAgICB2YXIgbWVyZ2VkUHJlZml4Q2xzID0gZ2V0UHJlZml4Q2xzKCdtZXNzYWdlJywgY3VzdG9taXplUHJlZml4Q2xzKTtcbiAgICAgIHZhciByb290UHJlZml4Q2xzID0gZ2V0UHJlZml4Q2xzKCk7XG4gICAgICB2YXIgdGFyZ2V0ID0gYXJncy5rZXkgfHwgKDAsIF8uZ2V0S2V5VGhlbkluY3JlYXNlS2V5KSgpO1xuICAgICAgdmFyIGNsb3NlUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgIHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uIGNhbGxiYWNrKCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgYXJncy5vbkNsb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBhcmdzLm9uQ2xvc2UoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgfTtcblxuICAgICAgICBnZXRSY05vdGlmaWNhdGlvbkluc3RhbmNlKCgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIGFyZ3MpLCB7XG4gICAgICAgICAgcHJlZml4Q2xzOiBtZXJnZWRQcmVmaXhDbHMsXG4gICAgICAgICAgcm9vdFByZWZpeENsczogcm9vdFByZWZpeENsc1xuICAgICAgICB9KSwgZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgICB2YXIgcHJlZml4Q2xzID0gX3JlZi5wcmVmaXhDbHMsXG4gICAgICAgICAgICAgIGluc3RhbmNlID0gX3JlZi5pbnN0YW5jZTtcbiAgICAgICAgICBpbm5lckluc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgICAgICAgaG9va05vdGlmeShnZXRSQ05vdGljZVByb3BzKCgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIGFyZ3MpLCB7XG4gICAgICAgICAgICBrZXk6IHRhcmdldCxcbiAgICAgICAgICAgIG9uQ2xvc2U6IGNhbGxiYWNrXG4gICAgICAgICAgfSksIHByZWZpeENscykpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gZnVuY3Rpb24gcmVzdWx0KCkge1xuICAgICAgICBpZiAoaW5uZXJJbnN0YW5jZSkge1xuICAgICAgICAgIGlubmVySW5zdGFuY2UucmVtb3ZlTm90aWNlKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJlc3VsdC50aGVuID0gZnVuY3Rpb24gKGZpbGxlZCwgcmVqZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGNsb3NlUHJvbWlzZS50aGVuKGZpbGxlZCwgcmVqZWN0ZWQpO1xuICAgICAgfTtcblxuICAgICAgcmVzdWx0LnByb21pc2UgPSBjbG9zZVByb21pc2U7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gLy8gRmlsbCBmdW5jdGlvbnNcblxuXG4gICAgdmFyIGhvb2tBcGlSZWYgPSBSZWFjdC51c2VSZWYoe30pO1xuICAgIGhvb2tBcGlSZWYuY3VycmVudC5vcGVuID0gbm90aWZ5O1xuICAgIFsnc3VjY2VzcycsICdpbmZvJywgJ3dhcm5pbmcnLCAnZXJyb3InLCAnbG9hZGluZyddLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgIHJldHVybiAoMCwgXy5hdHRhY2hUeXBlQXBpKShob29rQXBpUmVmLmN1cnJlbnQsIHR5cGUpO1xuICAgIH0pO1xuICAgIHJldHVybiBbaG9va0FwaVJlZi5jdXJyZW50LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfY29uZmlnUHJvdmlkZXIuQ29uZmlnQ29uc3VtZXIsIHtcbiAgICAgIGtleTogXCJob2xkZXJcIlxuICAgIH0sIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICBnZXRQcmVmaXhDbHMgPSBjb250ZXh0LmdldFByZWZpeENscztcbiAgICAgIHJldHVybiBob2xkZXI7XG4gICAgfSldO1xuICB9O1xuXG4gIHJldHVybiB1c2VNZXNzYWdlO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9leHRlbmRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKSk7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiKSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiKSk7XG5cbnZhciBfaW5oZXJpdHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiKSk7XG5cbnZhciBfY3JlYXRlU3VwZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVTdXBlclwiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfcmVhY3REb20gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdC1kb21cIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIE5vdGljZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICAoMCwgX2luaGVyaXRzMi5kZWZhdWx0KShOb3RpY2UsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSAoMCwgX2NyZWF0ZVN1cGVyMi5kZWZhdWx0KShOb3RpY2UpO1xuXG4gIGZ1bmN0aW9uIE5vdGljZSgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMi5kZWZhdWx0KSh0aGlzLCBOb3RpY2UpO1xuICAgIF90aGlzID0gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgX3RoaXMuY2xvc2VUaW1lciA9IG51bGw7XG5cbiAgICBfdGhpcy5jbG9zZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoZSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5jbGVhckNsb3NlVGltZXIoKTtcblxuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgb25DbG9zZSA9IF90aGlzJHByb3BzLm9uQ2xvc2UsXG4gICAgICAgICAgbm90aWNlS2V5ID0gX3RoaXMkcHJvcHMubm90aWNlS2V5O1xuXG4gICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICBvbkNsb3NlKG5vdGljZUtleSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLnN0YXJ0Q2xvc2VUaW1lciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpcy5wcm9wcy5kdXJhdGlvbikge1xuICAgICAgICBfdGhpcy5jbG9zZVRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzLmNsb3NlKCk7XG4gICAgICAgIH0sIF90aGlzLnByb3BzLmR1cmF0aW9uICogMTAwMCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLmNsZWFyQ2xvc2VUaW1lciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpcy5jbG9zZVRpbWVyKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChfdGhpcy5jbG9zZVRpbWVyKTtcbiAgICAgICAgX3RoaXMuY2xvc2VUaW1lciA9IG51bGw7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MyLmRlZmF1bHQpKE5vdGljZSwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB0aGlzLnN0YXJ0Q2xvc2VUaW1lcigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgaWYgKHRoaXMucHJvcHMuZHVyYXRpb24gIT09IHByZXZQcm9wcy5kdXJhdGlvbiB8fCB0aGlzLnByb3BzLnVwZGF0ZU1hcmsgIT09IHByZXZQcm9wcy51cGRhdGVNYXJrKSB7XG4gICAgICAgIHRoaXMucmVzdGFydENsb3NlVGltZXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICB0aGlzLmNsZWFyQ2xvc2VUaW1lcigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZXN0YXJ0Q2xvc2VUaW1lclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXN0YXJ0Q2xvc2VUaW1lcigpIHtcbiAgICAgIHRoaXMuY2xlYXJDbG9zZVRpbWVyKCk7XG4gICAgICB0aGlzLnN0YXJ0Q2xvc2VUaW1lcigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHByZWZpeENscyA9IF90aGlzJHByb3BzMi5wcmVmaXhDbHMsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMyLmNsYXNzTmFtZSxcbiAgICAgICAgICBjbG9zYWJsZSA9IF90aGlzJHByb3BzMi5jbG9zYWJsZSxcbiAgICAgICAgICBjbG9zZUljb24gPSBfdGhpcyRwcm9wczIuY2xvc2VJY29uLFxuICAgICAgICAgIHN0eWxlID0gX3RoaXMkcHJvcHMyLnN0eWxlLFxuICAgICAgICAgIG9uQ2xpY2sgPSBfdGhpcyRwcm9wczIub25DbGljayxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzMi5jaGlsZHJlbixcbiAgICAgICAgICBob2xkZXIgPSBfdGhpcyRwcm9wczIuaG9sZGVyO1xuICAgICAgdmFyIGNvbXBvbmVudENsYXNzID0gXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ub3RpY2VcIik7XG4gICAgICB2YXIgZGF0YU9yQXJpYUF0dHJpYnV0ZVByb3BzID0gT2JqZWN0LmtleXModGhpcy5wcm9wcykucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgICAgICBpZiAoa2V5LnN1YnN0cigwLCA1KSA9PT0gJ2RhdGEtJyB8fCBrZXkuc3Vic3RyKDAsIDUpID09PSAnYXJpYS0nIHx8IGtleSA9PT0gJ3JvbGUnKSB7XG4gICAgICAgICAgYWNjW2tleV0gPSBfdGhpczIucHJvcHNba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSk7XG4gICAgICB2YXIgbm9kZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsICgwLCBfZXh0ZW5kczIuZGVmYXVsdCkoe1xuICAgICAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lcy5kZWZhdWx0KShjb21wb25lbnRDbGFzcywgY2xhc3NOYW1lLCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KSh7fSwgXCJcIi5jb25jYXQoY29tcG9uZW50Q2xhc3MsIFwiLWNsb3NhYmxlXCIpLCBjbG9zYWJsZSkpLFxuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIG9uTW91c2VFbnRlcjogdGhpcy5jbGVhckNsb3NlVGltZXIsXG4gICAgICAgIG9uTW91c2VMZWF2ZTogdGhpcy5zdGFydENsb3NlVGltZXIsXG4gICAgICAgIG9uQ2xpY2s6IG9uQ2xpY2tcbiAgICAgIH0sIGRhdGFPckFyaWFBdHRyaWJ1dGVQcm9wcyksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChjb21wb25lbnRDbGFzcywgXCItY29udGVudFwiKVxuICAgICAgfSwgY2hpbGRyZW4pLCBjbG9zYWJsZSA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiYVwiLCB7XG4gICAgICAgIHRhYkluZGV4OiAwLFxuICAgICAgICBvbkNsaWNrOiB0aGlzLmNsb3NlLFxuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KGNvbXBvbmVudENsYXNzLCBcIi1jbG9zZVwiKVxuICAgICAgfSwgY2xvc2VJY29uIHx8IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQoY29tcG9uZW50Q2xhc3MsIFwiLWNsb3NlLXhcIilcbiAgICAgIH0pKSA6IG51bGwpO1xuXG4gICAgICBpZiAoaG9sZGVyKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovX3JlYWN0RG9tLmRlZmF1bHQuY3JlYXRlUG9ydGFsKG5vZGUsIGhvbGRlcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gTm90aWNlO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBOb3RpY2U7XG5Ob3RpY2UuZGVmYXVsdFByb3BzID0ge1xuICBvbkNsb3NlOiBmdW5jdGlvbiBvbkNsb3NlKCkge30sXG4gIGR1cmF0aW9uOiAxLjVcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gZXhwb3J0cy5nZXRJbnN0YW5jZSA9IHZvaWQgMDtcblxudmFyIF9yZWdlbmVyYXRvciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCIpKTtcblxudmFyIF9leHRlbmRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKSk7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfcmNOb3RpZmljYXRpb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYy1ub3RpZmljYXRpb25cIikpO1xuXG52YXIgX0Nsb3NlT3V0bGluZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9pY29ucy9DbG9zZU91dGxpbmVkXCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfQ2hlY2tDaXJjbGVPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zL0NoZWNrQ2lyY2xlT3V0bGluZWRcIikpO1xuXG52YXIgX0Nsb3NlQ2lyY2xlT3V0bGluZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9pY29ucy9DbG9zZUNpcmNsZU91dGxpbmVkXCIpKTtcblxudmFyIF9FeGNsYW1hdGlvbkNpcmNsZU91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMvRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZFwiKSk7XG5cbnZhciBfSW5mb0NpcmNsZU91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMvSW5mb0NpcmNsZU91dGxpbmVkXCIpKTtcblxudmFyIF91c2VOb3RpZmljYXRpb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2hvb2tzL3VzZU5vdGlmaWNhdGlvblwiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBfX2F3YWl0ZXIgPSB2b2lkIDAgJiYgKHZvaWQgMCkuX19hd2FpdGVyIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkge1xuICAgICAgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7XG4gICAgfVxuXG4gICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn07XG5cbnZhciBub3RpZmljYXRpb25JbnN0YW5jZSA9IHt9O1xudmFyIGRlZmF1bHREdXJhdGlvbiA9IDQuNTtcbnZhciBkZWZhdWx0VG9wID0gMjQ7XG52YXIgZGVmYXVsdEJvdHRvbSA9IDI0O1xudmFyIGRlZmF1bHRQcmVmaXhDbHMgPSAnJztcbnZhciBkZWZhdWx0UGxhY2VtZW50ID0gJ3RvcFJpZ2h0JztcbnZhciBkZWZhdWx0R2V0Q29udGFpbmVyO1xudmFyIGRlZmF1bHRDbG9zZUljb247XG52YXIgcnRsID0gZmFsc2U7XG5cbmZ1bmN0aW9uIHNldE5vdGlmaWNhdGlvbkNvbmZpZyhvcHRpb25zKSB7XG4gIHZhciBkdXJhdGlvbiA9IG9wdGlvbnMuZHVyYXRpb24sXG4gICAgICBwbGFjZW1lbnQgPSBvcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIGJvdHRvbSA9IG9wdGlvbnMuYm90dG9tLFxuICAgICAgdG9wID0gb3B0aW9ucy50b3AsXG4gICAgICBnZXRDb250YWluZXIgPSBvcHRpb25zLmdldENvbnRhaW5lcixcbiAgICAgIGNsb3NlSWNvbiA9IG9wdGlvbnMuY2xvc2VJY29uLFxuICAgICAgcHJlZml4Q2xzID0gb3B0aW9ucy5wcmVmaXhDbHM7XG5cbiAgaWYgKHByZWZpeENscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZGVmYXVsdFByZWZpeENscyA9IHByZWZpeENscztcbiAgfVxuXG4gIGlmIChkdXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZGVmYXVsdER1cmF0aW9uID0gZHVyYXRpb247XG4gIH1cblxuICBpZiAocGxhY2VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICBkZWZhdWx0UGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICB9IGVsc2UgaWYgKG9wdGlvbnMucnRsKSB7XG4gICAgZGVmYXVsdFBsYWNlbWVudCA9ICd0b3BMZWZ0JztcbiAgfVxuXG4gIGlmIChib3R0b20gIT09IHVuZGVmaW5lZCkge1xuICAgIGRlZmF1bHRCb3R0b20gPSBib3R0b207XG4gIH1cblxuICBpZiAodG9wICE9PSB1bmRlZmluZWQpIHtcbiAgICBkZWZhdWx0VG9wID0gdG9wO1xuICB9XG5cbiAgaWYgKGdldENvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZGVmYXVsdEdldENvbnRhaW5lciA9IGdldENvbnRhaW5lcjtcbiAgfVxuXG4gIGlmIChjbG9zZUljb24gIT09IHVuZGVmaW5lZCkge1xuICAgIGRlZmF1bHRDbG9zZUljb24gPSBjbG9zZUljb247XG4gIH1cblxuICBpZiAob3B0aW9ucy5ydGwgIT09IHVuZGVmaW5lZCkge1xuICAgIHJ0bCA9IG9wdGlvbnMucnRsO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFBsYWNlbWVudFN0eWxlKHBsYWNlbWVudCkge1xuICB2YXIgdG9wID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBkZWZhdWx0VG9wO1xuICB2YXIgYm90dG9tID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBkZWZhdWx0Qm90dG9tO1xuICB2YXIgc3R5bGU7XG5cbiAgc3dpdGNoIChwbGFjZW1lbnQpIHtcbiAgICBjYXNlICd0b3BMZWZ0JzpcbiAgICAgIHN0eWxlID0ge1xuICAgICAgICBsZWZ0OiAwLFxuICAgICAgICB0b3A6IHRvcCxcbiAgICAgICAgYm90dG9tOiAnYXV0bydcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3RvcFJpZ2h0JzpcbiAgICAgIHN0eWxlID0ge1xuICAgICAgICByaWdodDogMCxcbiAgICAgICAgdG9wOiB0b3AsXG4gICAgICAgIGJvdHRvbTogJ2F1dG8nXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdib3R0b21MZWZ0JzpcbiAgICAgIHN0eWxlID0ge1xuICAgICAgICBsZWZ0OiAwLFxuICAgICAgICB0b3A6ICdhdXRvJyxcbiAgICAgICAgYm90dG9tOiBib3R0b21cbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBzdHlsZSA9IHtcbiAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgIHRvcDogJ2F1dG8nLFxuICAgICAgICBib3R0b206IGJvdHRvbVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG5mdW5jdGlvbiBnZXROb3RpZmljYXRpb25JbnN0YW5jZShhcmdzLCBjYWxsYmFjaykge1xuICB2YXIgX2FyZ3MkcGxhY2VtZW50ID0gYXJncy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfYXJncyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IGRlZmF1bHRQbGFjZW1lbnQgOiBfYXJncyRwbGFjZW1lbnQsXG4gICAgICB0b3AgPSBhcmdzLnRvcCxcbiAgICAgIGJvdHRvbSA9IGFyZ3MuYm90dG9tLFxuICAgICAgX2FyZ3MkZ2V0Q29udGFpbmVyID0gYXJncy5nZXRDb250YWluZXIsXG4gICAgICBnZXRDb250YWluZXIgPSBfYXJncyRnZXRDb250YWluZXIgPT09IHZvaWQgMCA/IGRlZmF1bHRHZXRDb250YWluZXIgOiBfYXJncyRnZXRDb250YWluZXIsXG4gICAgICBfYXJncyRjbG9zZUljb24gPSBhcmdzLmNsb3NlSWNvbixcbiAgICAgIGNsb3NlSWNvbiA9IF9hcmdzJGNsb3NlSWNvbiA9PT0gdm9pZCAwID8gZGVmYXVsdENsb3NlSWNvbiA6IF9hcmdzJGNsb3NlSWNvbixcbiAgICAgIGN1c3RvbWl6ZVByZWZpeENscyA9IGFyZ3MucHJlZml4Q2xzO1xuXG4gIHZhciBfZ2xvYmFsQ29uZmlnID0gKDAsIF9jb25maWdQcm92aWRlci5nbG9iYWxDb25maWcpKCksXG4gICAgICBnZXRQcmVmaXhDbHMgPSBfZ2xvYmFsQ29uZmlnLmdldFByZWZpeENscztcblxuICB2YXIgcHJlZml4Q2xzID0gZ2V0UHJlZml4Q2xzKCdub3RpZmljYXRpb24nLCBjdXN0b21pemVQcmVmaXhDbHMgfHwgZGVmYXVsdFByZWZpeENscyk7XG4gIHZhciBjYWNoZUtleSA9IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItXCIpLmNvbmNhdChwbGFjZW1lbnQpO1xuICB2YXIgY2FjaGVJbnN0YW5jZSA9IG5vdGlmaWNhdGlvbkluc3RhbmNlW2NhY2hlS2V5XTtcblxuICBpZiAoY2FjaGVJbnN0YW5jZSkge1xuICAgIFByb21pc2UucmVzb2x2ZShjYWNoZUluc3RhbmNlKS50aGVuKGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICAgICAgY2FsbGJhY2soe1xuICAgICAgICBwcmVmaXhDbHM6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbm90aWNlXCIpLFxuICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2VcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBjbG9zZUljb25Ub1JlbmRlciA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNsb3NlLXhcIilcbiAgfSwgY2xvc2VJY29uIHx8IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9DbG9zZU91dGxpbmVkW1wiZGVmYXVsdFwiXSwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1jbG9zZS1pY29uXCIpXG4gIH0pKTtcbiAgdmFyIG5vdGlmaWNhdGlvbkNsYXNzID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KHBsYWNlbWVudCksICgwLCBfZGVmaW5lUHJvcGVydHkyW1wiZGVmYXVsdFwiXSkoe30sIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcnRsXCIpLCBydGwgPT09IHRydWUpKTtcbiAgbm90aWZpY2F0aW9uSW5zdGFuY2VbY2FjaGVLZXldID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICBfcmNOb3RpZmljYXRpb25bXCJkZWZhdWx0XCJdLm5ld0luc3RhbmNlKHtcbiAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgY2xhc3NOYW1lOiBub3RpZmljYXRpb25DbGFzcyxcbiAgICAgIHN0eWxlOiBnZXRQbGFjZW1lbnRTdHlsZShwbGFjZW1lbnQsIHRvcCwgYm90dG9tKSxcbiAgICAgIGdldENvbnRhaW5lcjogZ2V0Q29udGFpbmVyLFxuICAgICAgY2xvc2VJY29uOiBjbG9zZUljb25Ub1JlbmRlclxuICAgIH0sIGZ1bmN0aW9uIChub3RpZmljYXRpb24pIHtcbiAgICAgIHJlc29sdmUobm90aWZpY2F0aW9uKTtcbiAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgcHJlZml4Q2xzOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLW5vdGljZVwiKSxcbiAgICAgICAgaW5zdGFuY2U6IG5vdGlmaWNhdGlvblxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG52YXIgdHlwZVRvSWNvbiA9IHtcbiAgc3VjY2VzczogX0NoZWNrQ2lyY2xlT3V0bGluZWRbXCJkZWZhdWx0XCJdLFxuICBpbmZvOiBfSW5mb0NpcmNsZU91dGxpbmVkW1wiZGVmYXVsdFwiXSxcbiAgZXJyb3I6IF9DbG9zZUNpcmNsZU91dGxpbmVkW1wiZGVmYXVsdFwiXSxcbiAgd2FybmluZzogX0V4Y2xhbWF0aW9uQ2lyY2xlT3V0bGluZWRbXCJkZWZhdWx0XCJdXG59O1xuXG5mdW5jdGlvbiBnZXRSQ05vdGljZVByb3BzKGFyZ3MsIHByZWZpeENscykge1xuICB2YXIgZHVyYXRpb25BcmcgPSBhcmdzLmR1cmF0aW9uLFxuICAgICAgaWNvbiA9IGFyZ3MuaWNvbixcbiAgICAgIHR5cGUgPSBhcmdzLnR5cGUsXG4gICAgICBkZXNjcmlwdGlvbiA9IGFyZ3MuZGVzY3JpcHRpb24sXG4gICAgICBtZXNzYWdlID0gYXJncy5tZXNzYWdlLFxuICAgICAgYnRuID0gYXJncy5idG4sXG4gICAgICBvbkNsb3NlID0gYXJncy5vbkNsb3NlLFxuICAgICAgb25DbGljayA9IGFyZ3Mub25DbGljayxcbiAgICAgIGtleSA9IGFyZ3Mua2V5LFxuICAgICAgc3R5bGUgPSBhcmdzLnN0eWxlLFxuICAgICAgY2xhc3NOYW1lID0gYXJncy5jbGFzc05hbWU7XG4gIHZhciBkdXJhdGlvbiA9IGR1cmF0aW9uQXJnID09PSB1bmRlZmluZWQgPyBkZWZhdWx0RHVyYXRpb24gOiBkdXJhdGlvbkFyZztcbiAgdmFyIGljb25Ob2RlID0gbnVsbDtcblxuICBpZiAoaWNvbikge1xuICAgIGljb25Ob2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pY29uXCIpXG4gICAgfSwgYXJncy5pY29uKTtcbiAgfSBlbHNlIGlmICh0eXBlKSB7XG4gICAgaWNvbk5vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudCh0eXBlVG9JY29uW3R5cGVdIHx8IG51bGwsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pY29uIFwiKS5jb25jYXQocHJlZml4Q2xzLCBcIi1pY29uLVwiKS5jb25jYXQodHlwZSlcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBhdXRvTWFyZ2luVGFnID0gIWRlc2NyaXB0aW9uICYmIGljb25Ob2RlID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbWVzc2FnZS1zaW5nbGUtbGluZS1hdXRvLW1hcmdpblwiKVxuICB9KSA6IG51bGw7XG4gIHJldHVybiB7XG4gICAgY29udGVudDogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgY2xhc3NOYW1lOiBpY29uTm9kZSA/IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItd2l0aC1pY29uXCIpIDogJycsXG4gICAgICByb2xlOiBcImFsZXJ0XCJcbiAgICB9LCBpY29uTm9kZSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLW1lc3NhZ2VcIilcbiAgICB9LCBhdXRvTWFyZ2luVGFnLCBtZXNzYWdlKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWRlc2NyaXB0aW9uXCIpXG4gICAgfSwgZGVzY3JpcHRpb24pLCBidG4gPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWJ0blwiKVxuICAgIH0sIGJ0bikgOiBudWxsKSxcbiAgICBkdXJhdGlvbjogZHVyYXRpb24sXG4gICAgY2xvc2FibGU6IHRydWUsXG4gICAgb25DbG9zZTogb25DbG9zZSxcbiAgICBvbkNsaWNrOiBvbkNsaWNrLFxuICAgIGtleToga2V5LFxuICAgIHN0eWxlOiBzdHlsZSB8fCB7fSxcbiAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKGNsYXNzTmFtZSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKSh7fSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KHR5cGUpLCAhIXR5cGUpKVxuICB9O1xufVxuXG5mdW5jdGlvbiBub3RpY2UoYXJncykge1xuICBnZXROb3RpZmljYXRpb25JbnN0YW5jZShhcmdzLCBmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBwcmVmaXhDbHMgPSBfcmVmLnByZWZpeENscyxcbiAgICAgICAgaW5zdGFuY2UgPSBfcmVmLmluc3RhbmNlO1xuICAgIGluc3RhbmNlLm5vdGljZShnZXRSQ05vdGljZVByb3BzKGFyZ3MsIHByZWZpeENscykpO1xuICB9KTtcbn1cblxudmFyIGFwaSA9IHtcbiAgb3Blbjogbm90aWNlLFxuICBjbG9zZTogZnVuY3Rpb24gY2xvc2Uoa2V5KSB7XG4gICAgT2JqZWN0LmtleXMobm90aWZpY2F0aW9uSW5zdGFuY2UpLmZvckVhY2goZnVuY3Rpb24gKGNhY2hlS2V5KSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5vdGlmaWNhdGlvbkluc3RhbmNlW2NhY2hlS2V5XSkudGhlbihmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgICAgICAgaW5zdGFuY2UucmVtb3ZlTm90aWNlKGtleSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcbiAgY29uZmlnOiBzZXROb3RpZmljYXRpb25Db25maWcsXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgT2JqZWN0LmtleXMobm90aWZpY2F0aW9uSW5zdGFuY2UpLmZvckVhY2goZnVuY3Rpb24gKGNhY2hlS2V5KSB7XG4gICAgICBQcm9taXNlLnJlc29sdmUobm90aWZpY2F0aW9uSW5zdGFuY2VbY2FjaGVLZXldKS50aGVuKGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICAgICAgICBpbnN0YW5jZS5kZXN0cm95KCk7XG4gICAgICB9KTtcbiAgICAgIGRlbGV0ZSBub3RpZmljYXRpb25JbnN0YW5jZVtjYWNoZUtleV07IC8vIGxndG1banMvbWlzc2luZy1hd2FpdF1cbiAgICB9KTtcbiAgfVxufTtcblsnc3VjY2VzcycsICdpbmZvJywgJ3dhcm5pbmcnLCAnZXJyb3InXS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gIGFwaVt0eXBlXSA9IGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgcmV0dXJuIGFwaS5vcGVuKCgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIGFyZ3MpLCB7XG4gICAgICB0eXBlOiB0eXBlXG4gICAgfSkpO1xuICB9O1xufSk7XG5hcGkud2FybiA9IGFwaS53YXJuaW5nO1xuYXBpLnVzZU5vdGlmaWNhdGlvbiA9ICgwLCBfdXNlTm90aWZpY2F0aW9uW1wiZGVmYXVsdFwiXSkoZ2V0Tm90aWZpY2F0aW9uSW5zdGFuY2UsIGdldFJDTm90aWNlUHJvcHMpO1xuLyoqIEBwcml2YXRlIHRlc3QgT25seSBmdW5jdGlvbi4gTm90IHdvcmsgb24gcHJvZHVjdGlvbiAqL1xuXG52YXIgZ2V0SW5zdGFuY2UgPSBmdW5jdGlvbiBnZXRJbnN0YW5jZShjYWNoZUtleSkge1xuICByZXR1cm4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JbXCJkZWZhdWx0XCJdLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcbiAgICByZXR1cm4gX3JlZ2VuZXJhdG9yW1wiZGVmYXVsdFwiXS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICB3aGlsZSAoMSkge1xuICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiLCBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnID8gbm90aWZpY2F0aW9uSW5zdGFuY2VbY2FjaGVLZXldIDogbnVsbCk7XG5cbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIF9jYWxsZWUpO1xuICB9KSk7XG59O1xuXG5leHBvcnRzLmdldEluc3RhbmNlID0gZ2V0SW5zdGFuY2U7XG52YXIgX2RlZmF1bHQgPSBhcGk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9DbG9zZU91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vQ2xvc2VPdXRsaW5lZFwiKSk7XG5cbnZhciBfQW50ZEljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9jb21wb25lbnRzL0FudGRJY29uXCIpKTtcblxuLy8gR0VORVJBVEUgQlkgLi9zY3JpcHRzL2dlbmVyYXRlLnRzXG4vLyBET04gTk9UIEVESVQgSVQgTUFOVUFMTFlcbnZhciBDbG9zZU91dGxpbmVkID0gZnVuY3Rpb24gQ2xvc2VPdXRsaW5lZChwcm9wcywgcmVmKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQW50ZEljb24uZGVmYXVsdCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICByZWY6IHJlZixcbiAgICBpY29uOiBfQ2xvc2VPdXRsaW5lZC5kZWZhdWx0XG4gIH0pKTtcbn07XG5cbkNsb3NlT3V0bGluZWQuZGlzcGxheU5hbWUgPSAnQ2xvc2VPdXRsaW5lZCc7XG5cbnZhciBfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKENsb3NlT3V0bGluZWQpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcbi8vIFRoaXMgaWNvbiBmaWxlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIENsb3NlT3V0bGluZWQgPSB7IFwiaWNvblwiOiB7IFwidGFnXCI6IFwic3ZnXCIsIFwiYXR0cnNcIjogeyBcInZpZXdCb3hcIjogXCI2NCA2NCA4OTYgODk2XCIsIFwiZm9jdXNhYmxlXCI6IFwiZmFsc2VcIiB9LCBcImNoaWxkcmVuXCI6IFt7IFwidGFnXCI6IFwicGF0aFwiLCBcImF0dHJzXCI6IHsgXCJkXCI6IFwiTTU2My44IDUxMmwyNjIuNS0zMTIuOWM0LjQtNS4yLjctMTMuMS02LjEtMTMuMWgtNzkuOGMtNC43IDAtOS4yIDIuMS0xMi4zIDUuN0w1MTEuNiA0NDkuOCAyOTUuMSAxOTEuN2MtMy0zLjYtNy41LTUuNy0xMi4zLTUuN0gyMDNjLTYuOCAwLTEwLjUgNy45LTYuMSAxMy4xTDQ1OS40IDUxMiAxOTYuOSA4MjQuOUE3Ljk1IDcuOTUgMCAwMDIwMyA4MzhoNzkuOGM0LjcgMCA5LjItMi4xIDEyLjMtNS43bDIxNi41LTI1OC4xIDIxNi41IDI1OC4xYzMgMy42IDcuNSA1LjcgMTIuMyA1LjdoNzkuOGM2LjggMCAxMC41LTcuOSA2LjEtMTMuMUw1NjMuOCA1MTJ6XCIgfSB9XSB9LCBcIm5hbWVcIjogXCJjbG9zZVwiLCBcInRoZW1lXCI6IFwib3V0bGluZWRcIiB9O1xuZXhwb3J0cy5kZWZhdWx0ID0gQ2xvc2VPdXRsaW5lZDtcbiIsIid1c2Ugc3RyaWN0JztcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbiAgfSk7XG4gIGV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbiAgXG4gIHZhciBfQ2hlY2tDaXJjbGVPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZSgnLi9saWIvaWNvbnMvQ2hlY2tDaXJjbGVPdXRsaW5lZCcpKTtcbiAgXG4gIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cbiAgXG4gIHZhciBfZGVmYXVsdCA9IF9DaGVja0NpcmNsZU91dGxpbmVkO1xuICBleHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcbiAgbW9kdWxlLmV4cG9ydHMgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlV2lsZGNhcmRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfQ2hlY2tDaXJjbGVPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zLXN2Zy9saWIvYXNuL0NoZWNrQ2lyY2xlT3V0bGluZWRcIikpO1xuXG52YXIgX0FudGRJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vY29tcG9uZW50cy9BbnRkSWNvblwiKSk7XG5cbi8vIEdFTkVSQVRFIEJZIC4vc2NyaXB0cy9nZW5lcmF0ZS50c1xuLy8gRE9OIE5PVCBFRElUIElUIE1BTlVBTExZXG52YXIgQ2hlY2tDaXJjbGVPdXRsaW5lZCA9IGZ1bmN0aW9uIENoZWNrQ2lyY2xlT3V0bGluZWQocHJvcHMsIHJlZikge1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0FudGRJY29uLmRlZmF1bHQsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgcmVmOiByZWYsXG4gICAgaWNvbjogX0NoZWNrQ2lyY2xlT3V0bGluZWQuZGVmYXVsdFxuICB9KSk7XG59O1xuXG5DaGVja0NpcmNsZU91dGxpbmVkLmRpc3BsYXlOYW1lID0gJ0NoZWNrQ2lyY2xlT3V0bGluZWQnO1xuXG52YXIgX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihDaGVja0NpcmNsZU91dGxpbmVkKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBUaGlzIGljb24gZmlsZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBDaGVja0NpcmNsZU91dGxpbmVkID0geyBcImljb25cIjogeyBcInRhZ1wiOiBcInN2Z1wiLCBcImF0dHJzXCI6IHsgXCJ2aWV3Qm94XCI6IFwiNjQgNjQgODk2IDg5NlwiLCBcImZvY3VzYWJsZVwiOiBcImZhbHNlXCIgfSwgXCJjaGlsZHJlblwiOiBbeyBcInRhZ1wiOiBcInBhdGhcIiwgXCJhdHRyc1wiOiB7IFwiZFwiOiBcIk02OTkgMzUzaC00Ni45Yy0xMC4yIDAtMTkuOSA0LjktMjUuOSAxMy4zTDQ2OSA1ODQuM2wtNzEuMi05OC44Yy02LTguMy0xNS42LTEzLjMtMjUuOS0xMy4zSDMyNWMtNi41IDAtMTAuMyA3LjQtNi41IDEyLjdsMTI0LjYgMTcyLjhhMzEuOCAzMS44IDAgMDA1MS43IDBsMjEwLjYtMjkyYzMuOS01LjMuMS0xMi43LTYuNC0xMi43elwiIH0gfSwgeyBcInRhZ1wiOiBcInBhdGhcIiwgXCJhdHRyc1wiOiB7IFwiZFwiOiBcIk01MTIgNjRDMjY0LjYgNjQgNjQgMjY0LjYgNjQgNTEyczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY0IDUxMiA2NHptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6XCIgfSB9XSB9LCBcIm5hbWVcIjogXCJjaGVjay1jaXJjbGVcIiwgXCJ0aGVtZVwiOiBcIm91dGxpbmVkXCIgfTtcbmV4cG9ydHMuZGVmYXVsdCA9IENoZWNrQ2lyY2xlT3V0bGluZWQ7XG4iLCIndXNlIHN0cmljdCc7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG4gIH0pO1xuICBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG4gIFxuICB2YXIgX0Nsb3NlQ2lyY2xlT3V0bGluZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoJy4vbGliL2ljb25zL0Nsb3NlQ2lyY2xlT3V0bGluZWQnKSk7XG4gIFxuICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG4gIFxuICB2YXIgX2RlZmF1bHQgPSBfQ2xvc2VDaXJjbGVPdXRsaW5lZDtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG4gIG1vZHVsZS5leHBvcnRzID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX0Nsb3NlQ2lyY2xlT3V0bGluZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9pY29ucy1zdmcvbGliL2Fzbi9DbG9zZUNpcmNsZU91dGxpbmVkXCIpKTtcblxudmFyIF9BbnRkSWNvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2NvbXBvbmVudHMvQW50ZEljb25cIikpO1xuXG4vLyBHRU5FUkFURSBCWSAuL3NjcmlwdHMvZ2VuZXJhdGUudHNcbi8vIERPTiBOT1QgRURJVCBJVCBNQU5VQUxMWVxudmFyIENsb3NlQ2lyY2xlT3V0bGluZWQgPSBmdW5jdGlvbiBDbG9zZUNpcmNsZU91dGxpbmVkKHByb3BzLCByZWYpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9BbnRkSWNvbi5kZWZhdWx0LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywge1xuICAgIHJlZjogcmVmLFxuICAgIGljb246IF9DbG9zZUNpcmNsZU91dGxpbmVkLmRlZmF1bHRcbiAgfSkpO1xufTtcblxuQ2xvc2VDaXJjbGVPdXRsaW5lZC5kaXNwbGF5TmFtZSA9ICdDbG9zZUNpcmNsZU91dGxpbmVkJztcblxudmFyIF9kZWZhdWx0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoQ2xvc2VDaXJjbGVPdXRsaW5lZCk7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuLy8gVGhpcyBpY29uIGZpbGUgaXMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQ2xvc2VDaXJjbGVPdXRsaW5lZCA9IHsgXCJpY29uXCI6IHsgXCJ0YWdcIjogXCJzdmdcIiwgXCJhdHRyc1wiOiB7IFwidmlld0JveFwiOiBcIjY0IDY0IDg5NiA4OTZcIiwgXCJmb2N1c2FibGVcIjogXCJmYWxzZVwiIH0sIFwiY2hpbGRyZW5cIjogW3sgXCJ0YWdcIjogXCJwYXRoXCIsIFwiYXR0cnNcIjogeyBcImRcIjogXCJNNjg1LjQgMzU0LjhjMC00LjQtMy42LTgtOC04bC02NiAuM0w1MTIgNDY1LjZsLTk5LjMtMTE4LjQtNjYuMS0uM2MtNC40IDAtOCAzLjUtOCA4IDAgMS45LjcgMy43IDEuOSA1LjJsMTMwLjEgMTU1TDM0MC41IDY3MGE4LjMyIDguMzIgMCAwMC0xLjkgNS4yYzAgNC40IDMuNiA4IDggOGw2Ni4xLS4zTDUxMiA1NjQuNGw5OS4zIDExOC40IDY2IC4zYzQuNCAwIDgtMy41IDgtOCAwLTEuOS0uNy0zLjctMS45LTUuMkw1NTMuNSA1MTVsMTMwLjEtMTU1YzEuMi0xLjQgMS44LTMuMyAxLjgtNS4yelwiIH0gfSwgeyBcInRhZ1wiOiBcInBhdGhcIiwgXCJhdHRyc1wiOiB7IFwiZFwiOiBcIk01MTIgNjVDMjY0LjYgNjUgNjQgMjY1LjYgNjQgNTEzczIwMC42IDQ0OCA0NDggNDQ4IDQ0OC0yMDAuNiA0NDgtNDQ4Uzc1OS40IDY1IDUxMiA2NXptMCA4MjBjLTIwNS40IDAtMzcyLTE2Ni42LTM3Mi0zNzJzMTY2LjYtMzcyIDM3Mi0zNzIgMzcyIDE2Ni42IDM3MiAzNzItMTY2LjYgMzcyLTM3MiAzNzJ6XCIgfSB9XSB9LCBcIm5hbWVcIjogXCJjbG9zZS1jaXJjbGVcIiwgXCJ0aGVtZVwiOiBcIm91dGxpbmVkXCIgfTtcbmV4cG9ydHMuZGVmYXVsdCA9IENsb3NlQ2lyY2xlT3V0bGluZWQ7XG4iLCIndXNlIHN0cmljdCc7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG4gIH0pO1xuICBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG4gIFxuICB2YXIgX0V4Y2xhbWF0aW9uQ2lyY2xlT3V0bGluZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoJy4vbGliL2ljb25zL0V4Y2xhbWF0aW9uQ2lyY2xlT3V0bGluZWQnKSk7XG4gIFxuICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG4gIFxuICB2YXIgX2RlZmF1bHQgPSBfRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZDtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG4gIG1vZHVsZS5leHBvcnRzID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX0V4Y2xhbWF0aW9uQ2lyY2xlT3V0bGluZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9pY29ucy1zdmcvbGliL2Fzbi9FeGNsYW1hdGlvbkNpcmNsZU91dGxpbmVkXCIpKTtcblxudmFyIF9BbnRkSWNvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2NvbXBvbmVudHMvQW50ZEljb25cIikpO1xuXG4vLyBHRU5FUkFURSBCWSAuL3NjcmlwdHMvZ2VuZXJhdGUudHNcbi8vIERPTiBOT1QgRURJVCBJVCBNQU5VQUxMWVxudmFyIEV4Y2xhbWF0aW9uQ2lyY2xlT3V0bGluZWQgPSBmdW5jdGlvbiBFeGNsYW1hdGlvbkNpcmNsZU91dGxpbmVkKHByb3BzLCByZWYpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9BbnRkSWNvbi5kZWZhdWx0LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywge1xuICAgIHJlZjogcmVmLFxuICAgIGljb246IF9FeGNsYW1hdGlvbkNpcmNsZU91dGxpbmVkLmRlZmF1bHRcbiAgfSkpO1xufTtcblxuRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZC5kaXNwbGF5TmFtZSA9ICdFeGNsYW1hdGlvbkNpcmNsZU91dGxpbmVkJztcblxudmFyIF9kZWZhdWx0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCk7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuLy8gVGhpcyBpY29uIGZpbGUgaXMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCA9IHsgXCJpY29uXCI6IHsgXCJ0YWdcIjogXCJzdmdcIiwgXCJhdHRyc1wiOiB7IFwidmlld0JveFwiOiBcIjY0IDY0IDg5NiA4OTZcIiwgXCJmb2N1c2FibGVcIjogXCJmYWxzZVwiIH0sIFwiY2hpbGRyZW5cIjogW3sgXCJ0YWdcIjogXCJwYXRoXCIsIFwiYXR0cnNcIjogeyBcImRcIjogXCJNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyelwiIH0gfSwgeyBcInRhZ1wiOiBcInBhdGhcIiwgXCJhdHRyc1wiOiB7IFwiZFwiOiBcIk00NjQgNjg4YTQ4IDQ4IDAgMTA5NiAwIDQ4IDQ4IDAgMTAtOTYgMHptMjQtMTEyaDQ4YzQuNCAwIDgtMy42IDgtOFYyOTZjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djI3MmMwIDQuNCAzLjYgOCA4IDh6XCIgfSB9XSB9LCBcIm5hbWVcIjogXCJleGNsYW1hdGlvbi1jaXJjbGVcIiwgXCJ0aGVtZVwiOiBcIm91dGxpbmVkXCIgfTtcbmV4cG9ydHMuZGVmYXVsdCA9IEV4Y2xhbWF0aW9uQ2lyY2xlT3V0bGluZWQ7XG4iLCIndXNlIHN0cmljdCc7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG4gIH0pO1xuICBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG4gIFxuICB2YXIgX0luZm9DaXJjbGVPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZSgnLi9saWIvaWNvbnMvSW5mb0NpcmNsZU91dGxpbmVkJykpO1xuICBcbiAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuICBcbiAgdmFyIF9kZWZhdWx0ID0gX0luZm9DaXJjbGVPdXRsaW5lZDtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG4gIG1vZHVsZS5leHBvcnRzID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX0luZm9DaXJjbGVPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zLXN2Zy9saWIvYXNuL0luZm9DaXJjbGVPdXRsaW5lZFwiKSk7XG5cbnZhciBfQW50ZEljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9jb21wb25lbnRzL0FudGRJY29uXCIpKTtcblxuLy8gR0VORVJBVEUgQlkgLi9zY3JpcHRzL2dlbmVyYXRlLnRzXG4vLyBET04gTk9UIEVESVQgSVQgTUFOVUFMTFlcbnZhciBJbmZvQ2lyY2xlT3V0bGluZWQgPSBmdW5jdGlvbiBJbmZvQ2lyY2xlT3V0bGluZWQocHJvcHMsIHJlZikge1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0FudGRJY29uLmRlZmF1bHQsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgcmVmOiByZWYsXG4gICAgaWNvbjogX0luZm9DaXJjbGVPdXRsaW5lZC5kZWZhdWx0XG4gIH0pKTtcbn07XG5cbkluZm9DaXJjbGVPdXRsaW5lZC5kaXNwbGF5TmFtZSA9ICdJbmZvQ2lyY2xlT3V0bGluZWQnO1xuXG52YXIgX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihJbmZvQ2lyY2xlT3V0bGluZWQpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcbi8vIFRoaXMgaWNvbiBmaWxlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEluZm9DaXJjbGVPdXRsaW5lZCA9IHsgXCJpY29uXCI6IHsgXCJ0YWdcIjogXCJzdmdcIiwgXCJhdHRyc1wiOiB7IFwidmlld0JveFwiOiBcIjY0IDY0IDg5NiA4OTZcIiwgXCJmb2N1c2FibGVcIjogXCJmYWxzZVwiIH0sIFwiY2hpbGRyZW5cIjogW3sgXCJ0YWdcIjogXCJwYXRoXCIsIFwiYXR0cnNcIjogeyBcImRcIjogXCJNNTEyIDY0QzI2NC42IDY0IDY0IDI2NC42IDY0IDUxMnMyMDAuNiA0NDggNDQ4IDQ0OCA0NDgtMjAwLjYgNDQ4LTQ0OFM3NTkuNCA2NCA1MTIgNjR6bTAgODIwYy0yMDUuNCAwLTM3Mi0xNjYuNi0zNzItMzcyczE2Ni42LTM3MiAzNzItMzcyIDM3MiAxNjYuNiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzIgMzcyelwiIH0gfSwgeyBcInRhZ1wiOiBcInBhdGhcIiwgXCJhdHRyc1wiOiB7IFwiZFwiOiBcIk00NjQgMzM2YTQ4IDQ4IDAgMTA5NiAwIDQ4IDQ4IDAgMTAtOTYgMHptNzIgMTEyaC00OGMtNC40IDAtOCAzLjYtOCA4djI3MmMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjQ1NmMwLTQuNC0zLjYtOC04LTh6XCIgfSB9XSB9LCBcIm5hbWVcIjogXCJpbmZvLWNpcmNsZVwiLCBcInRoZW1lXCI6IFwib3V0bGluZWRcIiB9O1xuZXhwb3J0cy5kZWZhdWx0ID0gSW5mb0NpcmNsZU91dGxpbmVkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gY3JlYXRlVXNlTm90aWZpY2F0aW9uO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIF9zbGljZWRUb0FycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfdXNlTm90aWZpY2F0aW9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtbm90aWZpY2F0aW9uL2xpYi91c2VOb3RpZmljYXRpb25cIikpO1xuXG52YXIgX2NvbmZpZ1Byb3ZpZGVyID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy1wcm92aWRlclwiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBjcmVhdGVVc2VOb3RpZmljYXRpb24oZ2V0Tm90aWZpY2F0aW9uSW5zdGFuY2UsIGdldFJDTm90aWNlUHJvcHMpIHtcbiAgdmFyIHVzZU5vdGlmaWNhdGlvbiA9IGZ1bmN0aW9uIHVzZU5vdGlmaWNhdGlvbigpIHtcbiAgICAvLyBXZSBjYW4gb25seSBnZXQgY29udGVudCBieSByZW5kZXJcbiAgICB2YXIgZ2V0UHJlZml4Q2xzOyAvLyBXZSBjcmVhdGUgYSBwcm94eSB0byBoYW5kbGUgZGVsYXkgY3JlYXRlZCBpbnN0YW5jZVxuXG4gICAgdmFyIGlubmVySW5zdGFuY2UgPSBudWxsO1xuICAgIHZhciBwcm94eSA9IHtcbiAgICAgIGFkZDogZnVuY3Rpb24gYWRkKG5vdGljZVByb3BzLCBob2xkZXJDYWxsYmFjaykge1xuICAgICAgICBpbm5lckluc3RhbmNlID09PSBudWxsIHx8IGlubmVySW5zdGFuY2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGlubmVySW5zdGFuY2UuY29tcG9uZW50LmFkZChub3RpY2VQcm9wcywgaG9sZGVyQ2FsbGJhY2spO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgX3VzZVJDTm90aWZpY2F0aW9uID0gKDAsIF91c2VOb3RpZmljYXRpb25bXCJkZWZhdWx0XCJdKShwcm94eSksXG4gICAgICAgIF91c2VSQ05vdGlmaWNhdGlvbjIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyW1wiZGVmYXVsdFwiXSkoX3VzZVJDTm90aWZpY2F0aW9uLCAyKSxcbiAgICAgICAgaG9va05vdGlmeSA9IF91c2VSQ05vdGlmaWNhdGlvbjJbMF0sXG4gICAgICAgIGhvbGRlciA9IF91c2VSQ05vdGlmaWNhdGlvbjJbMV07XG5cbiAgICBmdW5jdGlvbiBub3RpZnkoYXJncykge1xuICAgICAgdmFyIGN1c3RvbWl6ZVByZWZpeENscyA9IGFyZ3MucHJlZml4Q2xzO1xuICAgICAgdmFyIG1lcmdlZFByZWZpeENscyA9IGdldFByZWZpeENscygnbm90aWZpY2F0aW9uJywgY3VzdG9taXplUHJlZml4Q2xzKTtcbiAgICAgIGdldE5vdGlmaWNhdGlvbkluc3RhbmNlKCgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIGFyZ3MpLCB7XG4gICAgICAgIHByZWZpeENsczogbWVyZ2VkUHJlZml4Q2xzXG4gICAgICB9KSwgZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIHByZWZpeENscyA9IF9yZWYucHJlZml4Q2xzLFxuICAgICAgICAgICAgaW5zdGFuY2UgPSBfcmVmLmluc3RhbmNlO1xuICAgICAgICBpbm5lckluc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgICAgIGhvb2tOb3RpZnkoZ2V0UkNOb3RpY2VQcm9wcyhhcmdzLCBwcmVmaXhDbHMpKTtcbiAgICAgIH0pO1xuICAgIH0gLy8gRmlsbCBmdW5jdGlvbnNcblxuXG4gICAgdmFyIGhvb2tBcGlSZWYgPSBSZWFjdC51c2VSZWYoe30pO1xuICAgIGhvb2tBcGlSZWYuY3VycmVudC5vcGVuID0gbm90aWZ5O1xuICAgIFsnc3VjY2VzcycsICdpbmZvJywgJ3dhcm5pbmcnLCAnZXJyb3InXS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICBob29rQXBpUmVmLmN1cnJlbnRbdHlwZV0gPSBmdW5jdGlvbiAoYXJncykge1xuICAgICAgICByZXR1cm4gaG9va0FwaVJlZi5jdXJyZW50Lm9wZW4oKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKCgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgYXJncyksIHtcbiAgICAgICAgICB0eXBlOiB0eXBlXG4gICAgICAgIH0pKTtcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIFtob29rQXBpUmVmLmN1cnJlbnQsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jb25maWdQcm92aWRlci5Db25maWdDb25zdW1lciwge1xuICAgICAga2V5OiBcImhvbGRlclwiXG4gICAgfSwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgIGdldFByZWZpeENscyA9IGNvbnRleHQuZ2V0UHJlZml4Q2xzO1xuICAgICAgcmV0dXJuIGhvbGRlcjtcbiAgICB9KV07XG4gIH07XG5cbiAgcmV0dXJuIHVzZU5vdGlmaWNhdGlvbjtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9QYWdpbmF0aW9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9QYWdpbmF0aW9uXCIpKTtcblxudmFyIF9kZWZhdWx0ID0gX1BhZ2luYXRpb25bXCJkZWZhdWx0XCJdO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfZXh0ZW5kczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIikpO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX3JjUGFnaW5hdGlvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXBhZ2luYXRpb25cIikpO1xuXG52YXIgX2VuX1VTID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtcGFnaW5hdGlvbi9saWIvbG9jYWxlL2VuX1VTXCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfTGVmdE91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMvTGVmdE91dGxpbmVkXCIpKTtcblxudmFyIF9SaWdodE91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMvUmlnaHRPdXRsaW5lZFwiKSk7XG5cbnZhciBfRG91YmxlTGVmdE91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMvRG91YmxlTGVmdE91dGxpbmVkXCIpKTtcblxudmFyIF9Eb3VibGVSaWdodE91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMvRG91YmxlUmlnaHRPdXRsaW5lZFwiKSk7XG5cbnZhciBfTWluaVNlbGVjdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vTWluaVNlbGVjdFwiKSk7XG5cbnZhciBfc2VsZWN0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vc2VsZWN0XCIpKTtcblxudmFyIF9Mb2NhbGVSZWNlaXZlciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2xvY2FsZS1wcm92aWRlci9Mb2NhbGVSZWNlaXZlclwiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX3VzZUJyZWFrcG9pbnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZ3JpZC9ob29rcy91c2VCcmVha3BvaW50XCIpKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgX19yZXN0ID0gdm9pZCAwICYmICh2b2lkIDApLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG4gIH1cblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxudmFyIFBhZ2luYXRpb24gPSBmdW5jdGlvbiBQYWdpbmF0aW9uKF9hKSB7XG4gIHZhciBjdXN0b21pemVQcmVmaXhDbHMgPSBfYS5wcmVmaXhDbHMsXG4gICAgICBjdXN0b21pemVTZWxlY3RQcmVmaXhDbHMgPSBfYS5zZWxlY3RQcmVmaXhDbHMsXG4gICAgICBjbGFzc05hbWUgPSBfYS5jbGFzc05hbWUsXG4gICAgICBzaXplID0gX2Euc2l6ZSxcbiAgICAgIGN1c3RvbUxvY2FsZSA9IF9hLmxvY2FsZSxcbiAgICAgIHJlc3RQcm9wcyA9IF9fcmVzdChfYSwgW1wicHJlZml4Q2xzXCIsIFwic2VsZWN0UHJlZml4Q2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwic2l6ZVwiLCBcImxvY2FsZVwiXSk7XG5cbiAgdmFyIF91c2VCcmVha3BvaW50ID0gKDAsIF91c2VCcmVha3BvaW50MltcImRlZmF1bHRcIl0pKCksXG4gICAgICB4cyA9IF91c2VCcmVha3BvaW50LnhzO1xuXG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnRleHQpLFxuICAgICAgZ2V0UHJlZml4Q2xzID0gX1JlYWN0JHVzZUNvbnRleHQuZ2V0UHJlZml4Q2xzLFxuICAgICAgZGlyZWN0aW9uID0gX1JlYWN0JHVzZUNvbnRleHQuZGlyZWN0aW9uO1xuXG4gIHZhciBwcmVmaXhDbHMgPSBnZXRQcmVmaXhDbHMoJ3BhZ2luYXRpb24nLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuXG4gIHZhciBnZXRJY29uc1Byb3BzID0gZnVuY3Rpb24gZ2V0SWNvbnNQcm9wcygpIHtcbiAgICB2YXIgZWxsaXBzaXMgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWl0ZW0tZWxsaXBzaXNcIilcbiAgICB9LCBcIlxcdTIwMjJcXHUyMDIyXFx1MjAyMlwiKTtcbiAgICB2YXIgcHJldkljb24gPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaXRlbS1saW5rXCIpLFxuICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgIHRhYkluZGV4OiAtMVxuICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9MZWZ0T3V0bGluZWRbXCJkZWZhdWx0XCJdLCBudWxsKSk7XG4gICAgdmFyIG5leHRJY29uID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWl0ZW0tbGlua1wiKSxcbiAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICB0YWJJbmRleDogLTFcbiAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfUmlnaHRPdXRsaW5lZFtcImRlZmF1bHRcIl0sIG51bGwpKTtcbiAgICB2YXIganVtcFByZXZJY29uID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pdGVtLWxpbmtcIilcbiAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaXRlbS1jb250YWluZXJcIilcbiAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfRG91YmxlTGVmdE91dGxpbmVkW1wiZGVmYXVsdFwiXSwge1xuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWl0ZW0tbGluay1pY29uXCIpXG4gICAgfSksIGVsbGlwc2lzKSk7XG4gICAgdmFyIGp1bXBOZXh0SWNvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiYVwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaXRlbS1saW5rXCIpXG4gICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWl0ZW0tY29udGFpbmVyXCIpXG4gICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0RvdWJsZVJpZ2h0T3V0bGluZWRbXCJkZWZhdWx0XCJdLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaXRlbS1saW5rLWljb25cIilcbiAgICB9KSwgZWxsaXBzaXMpKTsgLy8gY2hhbmdlIGFycm93cyBkaXJlY3Rpb24gaW4gcmlnaHQtdG8tbGVmdCBkaXJlY3Rpb25cblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgICB2YXIgX3JlZiA9IFtuZXh0SWNvbiwgcHJldkljb25dO1xuICAgICAgcHJldkljb24gPSBfcmVmWzBdO1xuICAgICAgbmV4dEljb24gPSBfcmVmWzFdO1xuICAgICAgdmFyIF9yZWYyID0gW2p1bXBOZXh0SWNvbiwganVtcFByZXZJY29uXTtcbiAgICAgIGp1bXBQcmV2SWNvbiA9IF9yZWYyWzBdO1xuICAgICAganVtcE5leHRJY29uID0gX3JlZjJbMV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHByZXZJY29uOiBwcmV2SWNvbixcbiAgICAgIG5leHRJY29uOiBuZXh0SWNvbixcbiAgICAgIGp1bXBQcmV2SWNvbjoganVtcFByZXZJY29uLFxuICAgICAganVtcE5leHRJY29uOiBqdW1wTmV4dEljb25cbiAgICB9O1xuICB9O1xuXG4gIHZhciByZW5kZXJQYWdpbmF0aW9uID0gZnVuY3Rpb24gcmVuZGVyUGFnaW5hdGlvbihjb250ZXh0TG9jYWxlKSB7XG4gICAgdmFyIGxvY2FsZSA9ICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIGNvbnRleHRMb2NhbGUpLCBjdXN0b21Mb2NhbGUpO1xuICAgIHZhciBpc1NtYWxsID0gc2l6ZSA9PT0gJ3NtYWxsJyB8fCAhISh4cyAmJiAhc2l6ZSAmJiByZXN0UHJvcHMucmVzcG9uc2l2ZSk7XG4gICAgdmFyIHNlbGVjdFByZWZpeENscyA9IGdldFByZWZpeENscygnc2VsZWN0JywgY3VzdG9taXplU2VsZWN0UHJlZml4Q2xzKTtcbiAgICB2YXIgZXh0ZW5kZWRDbGFzc05hbWUgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKSgoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKHtcbiAgICAgIG1pbmk6IGlzU21hbGxcbiAgICB9LCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXJ0bFwiKSwgZGlyZWN0aW9uID09PSAncnRsJyksIGNsYXNzTmFtZSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yY1BhZ2luYXRpb25bXCJkZWZhdWx0XCJdLCAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIHJlc3RQcm9wcywge1xuICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICBzZWxlY3RQcmVmaXhDbHM6IHNlbGVjdFByZWZpeENsc1xuICAgIH0sIGdldEljb25zUHJvcHMoKSwge1xuICAgICAgY2xhc3NOYW1lOiBleHRlbmRlZENsYXNzTmFtZSxcbiAgICAgIHNlbGVjdENvbXBvbmVudENsYXNzOiBpc1NtYWxsID8gX01pbmlTZWxlY3RbXCJkZWZhdWx0XCJdIDogX3NlbGVjdFtcImRlZmF1bHRcIl0sXG4gICAgICBsb2NhbGU6IGxvY2FsZVxuICAgIH0pKTtcbiAgfTtcblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0xvY2FsZVJlY2VpdmVyW1wiZGVmYXVsdFwiXSwge1xuICAgIGNvbXBvbmVudE5hbWU6IFwiUGFnaW5hdGlvblwiLFxuICAgIGRlZmF1bHRMb2NhbGU6IF9lbl9VU1tcImRlZmF1bHRcIl1cbiAgfSwgcmVuZGVyUGFnaW5hdGlvbik7XG59O1xuXG52YXIgX2RlZmF1bHQgPSBQYWdpbmF0aW9uO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlV2lsZGNhcmRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfTGVmdE91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vTGVmdE91dGxpbmVkXCIpKTtcblxudmFyIF9BbnRkSWNvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2NvbXBvbmVudHMvQW50ZEljb25cIikpO1xuXG4vLyBHRU5FUkFURSBCWSAuL3NjcmlwdHMvZ2VuZXJhdGUudHNcbi8vIERPTiBOT1QgRURJVCBJVCBNQU5VQUxMWVxudmFyIExlZnRPdXRsaW5lZCA9IGZ1bmN0aW9uIExlZnRPdXRsaW5lZChwcm9wcywgcmVmKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQW50ZEljb24uZGVmYXVsdCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICByZWY6IHJlZixcbiAgICBpY29uOiBfTGVmdE91dGxpbmVkLmRlZmF1bHRcbiAgfSkpO1xufTtcblxuTGVmdE91dGxpbmVkLmRpc3BsYXlOYW1lID0gJ0xlZnRPdXRsaW5lZCc7XG5cbnZhciBfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKExlZnRPdXRsaW5lZCk7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuLy8gVGhpcyBpY29uIGZpbGUgaXMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgTGVmdE91dGxpbmVkID0geyBcImljb25cIjogeyBcInRhZ1wiOiBcInN2Z1wiLCBcImF0dHJzXCI6IHsgXCJ2aWV3Qm94XCI6IFwiNjQgNjQgODk2IDg5NlwiLCBcImZvY3VzYWJsZVwiOiBcImZhbHNlXCIgfSwgXCJjaGlsZHJlblwiOiBbeyBcInRhZ1wiOiBcInBhdGhcIiwgXCJhdHRyc1wiOiB7IFwiZFwiOiBcIk03MjQgMjE4LjNWMTQxYzAtNi43LTcuNy0xMC40LTEyLjktNi4zTDI2MC4zIDQ4Ni44YTMxLjg2IDMxLjg2IDAgMDAwIDUwLjNsNDUwLjggMzUyLjFjNS4zIDQuMSAxMi45LjQgMTIuOS02LjN2LTc3LjNjMC00LjktMi4zLTkuNi02LjEtMTIuNmwtMzYwLTI4MSAzNjAtMjgxLjFjMy44LTMgNi4xLTcuNyA2LjEtMTIuNnpcIiB9IH1dIH0sIFwibmFtZVwiOiBcImxlZnRcIiwgXCJ0aGVtZVwiOiBcIm91dGxpbmVkXCIgfTtcbmV4cG9ydHMuZGVmYXVsdCA9IExlZnRPdXRsaW5lZDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9SaWdodE91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vUmlnaHRPdXRsaW5lZFwiKSk7XG5cbnZhciBfQW50ZEljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9jb21wb25lbnRzL0FudGRJY29uXCIpKTtcblxuLy8gR0VORVJBVEUgQlkgLi9zY3JpcHRzL2dlbmVyYXRlLnRzXG4vLyBET04gTk9UIEVESVQgSVQgTUFOVUFMTFlcbnZhciBSaWdodE91dGxpbmVkID0gZnVuY3Rpb24gUmlnaHRPdXRsaW5lZChwcm9wcywgcmVmKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQW50ZEljb24uZGVmYXVsdCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICByZWY6IHJlZixcbiAgICBpY29uOiBfUmlnaHRPdXRsaW5lZC5kZWZhdWx0XG4gIH0pKTtcbn07XG5cblJpZ2h0T3V0bGluZWQuZGlzcGxheU5hbWUgPSAnUmlnaHRPdXRsaW5lZCc7XG5cbnZhciBfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKFJpZ2h0T3V0bGluZWQpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcbi8vIFRoaXMgaWNvbiBmaWxlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJpZ2h0T3V0bGluZWQgPSB7IFwiaWNvblwiOiB7IFwidGFnXCI6IFwic3ZnXCIsIFwiYXR0cnNcIjogeyBcInZpZXdCb3hcIjogXCI2NCA2NCA4OTYgODk2XCIsIFwiZm9jdXNhYmxlXCI6IFwiZmFsc2VcIiB9LCBcImNoaWxkcmVuXCI6IFt7IFwidGFnXCI6IFwicGF0aFwiLCBcImF0dHJzXCI6IHsgXCJkXCI6IFwiTTc2NS43IDQ4Ni44TDMxNC45IDEzNC43QTcuOTcgNy45NyAwIDAwMzAyIDE0MXY3Ny4zYzAgNC45IDIuMyA5LjYgNi4xIDEyLjZsMzYwIDI4MS4xLTM2MCAyODEuMWMtMy45IDMtNi4xIDcuNy02LjEgMTIuNlY4ODNjMCA2LjcgNy43IDEwLjQgMTIuOSA2LjNsNDUwLjgtMzUyLjFhMzEuOTYgMzEuOTYgMCAwMDAtNTAuNHpcIiB9IH1dIH0sIFwibmFtZVwiOiBcInJpZ2h0XCIsIFwidGhlbWVcIjogXCJvdXRsaW5lZFwiIH07XG5leHBvcnRzLmRlZmF1bHQgPSBSaWdodE91dGxpbmVkO1xuIiwiJ3VzZSBzdHJpY3QnO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxuICB9KTtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuICBcbiAgdmFyIF9Eb3VibGVMZWZ0T3V0bGluZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoJy4vbGliL2ljb25zL0RvdWJsZUxlZnRPdXRsaW5lZCcpKTtcbiAgXG4gIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cbiAgXG4gIHZhciBfZGVmYXVsdCA9IF9Eb3VibGVMZWZ0T3V0bGluZWQ7XG4gIGV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuICBtb2R1bGUuZXhwb3J0cyA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9Eb3VibGVMZWZ0T3V0bGluZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9pY29ucy1zdmcvbGliL2Fzbi9Eb3VibGVMZWZ0T3V0bGluZWRcIikpO1xuXG52YXIgX0FudGRJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vY29tcG9uZW50cy9BbnRkSWNvblwiKSk7XG5cbi8vIEdFTkVSQVRFIEJZIC4vc2NyaXB0cy9nZW5lcmF0ZS50c1xuLy8gRE9OIE5PVCBFRElUIElUIE1BTlVBTExZXG52YXIgRG91YmxlTGVmdE91dGxpbmVkID0gZnVuY3Rpb24gRG91YmxlTGVmdE91dGxpbmVkKHByb3BzLCByZWYpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9BbnRkSWNvbi5kZWZhdWx0LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywge1xuICAgIHJlZjogcmVmLFxuICAgIGljb246IF9Eb3VibGVMZWZ0T3V0bGluZWQuZGVmYXVsdFxuICB9KSk7XG59O1xuXG5Eb3VibGVMZWZ0T3V0bGluZWQuZGlzcGxheU5hbWUgPSAnRG91YmxlTGVmdE91dGxpbmVkJztcblxudmFyIF9kZWZhdWx0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoRG91YmxlTGVmdE91dGxpbmVkKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBUaGlzIGljb24gZmlsZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBEb3VibGVMZWZ0T3V0bGluZWQgPSB7IFwiaWNvblwiOiB7IFwidGFnXCI6IFwic3ZnXCIsIFwiYXR0cnNcIjogeyBcInZpZXdCb3hcIjogXCI2NCA2NCA4OTYgODk2XCIsIFwiZm9jdXNhYmxlXCI6IFwiZmFsc2VcIiB9LCBcImNoaWxkcmVuXCI6IFt7IFwidGFnXCI6IFwicGF0aFwiLCBcImF0dHJzXCI6IHsgXCJkXCI6IFwiTTI3Mi45IDUxMmwyNjUuNC0zMzkuMWM0LjEtNS4yLjQtMTIuOS02LjMtMTIuOWgtNzcuM2MtNC45IDAtOS42IDIuMy0xMi42IDYuMUwxODYuOCA0OTIuM2EzMS45OSAzMS45OSAwIDAwMCAzOS41bDI1NS4zIDMyNi4xYzMgMy45IDcuNyA2LjEgMTIuNiA2LjFINTMyYzYuNyAwIDEwLjQtNy43IDYuMy0xMi45TDI3Mi45IDUxMnptMzA0IDBsMjY1LjQtMzM5LjFjNC4xLTUuMi40LTEyLjktNi4zLTEyLjloLTc3LjNjLTQuOSAwLTkuNiAyLjMtMTIuNiA2LjFMNDkwLjggNDkyLjNhMzEuOTkgMzEuOTkgMCAwMDAgMzkuNWwyNTUuMyAzMjYuMWMzIDMuOSA3LjcgNi4xIDEyLjYgNi4xSDgzNmM2LjcgMCAxMC40LTcuNyA2LjMtMTIuOUw1NzYuOSA1MTJ6XCIgfSB9XSB9LCBcIm5hbWVcIjogXCJkb3VibGUtbGVmdFwiLCBcInRoZW1lXCI6IFwib3V0bGluZWRcIiB9O1xuZXhwb3J0cy5kZWZhdWx0ID0gRG91YmxlTGVmdE91dGxpbmVkO1xuIiwiJ3VzZSBzdHJpY3QnO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxuICB9KTtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuICBcbiAgdmFyIF9Eb3VibGVSaWdodE91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCcuL2xpYi9pY29ucy9Eb3VibGVSaWdodE91dGxpbmVkJykpO1xuICBcbiAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuICBcbiAgdmFyIF9kZWZhdWx0ID0gX0RvdWJsZVJpZ2h0T3V0bGluZWQ7XG4gIGV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuICBtb2R1bGUuZXhwb3J0cyA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9Eb3VibGVSaWdodE91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vRG91YmxlUmlnaHRPdXRsaW5lZFwiKSk7XG5cbnZhciBfQW50ZEljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9jb21wb25lbnRzL0FudGRJY29uXCIpKTtcblxuLy8gR0VORVJBVEUgQlkgLi9zY3JpcHRzL2dlbmVyYXRlLnRzXG4vLyBET04gTk9UIEVESVQgSVQgTUFOVUFMTFlcbnZhciBEb3VibGVSaWdodE91dGxpbmVkID0gZnVuY3Rpb24gRG91YmxlUmlnaHRPdXRsaW5lZChwcm9wcywgcmVmKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQW50ZEljb24uZGVmYXVsdCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICByZWY6IHJlZixcbiAgICBpY29uOiBfRG91YmxlUmlnaHRPdXRsaW5lZC5kZWZhdWx0XG4gIH0pKTtcbn07XG5cbkRvdWJsZVJpZ2h0T3V0bGluZWQuZGlzcGxheU5hbWUgPSAnRG91YmxlUmlnaHRPdXRsaW5lZCc7XG5cbnZhciBfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKERvdWJsZVJpZ2h0T3V0bGluZWQpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcbi8vIFRoaXMgaWNvbiBmaWxlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIERvdWJsZVJpZ2h0T3V0bGluZWQgPSB7IFwiaWNvblwiOiB7IFwidGFnXCI6IFwic3ZnXCIsIFwiYXR0cnNcIjogeyBcInZpZXdCb3hcIjogXCI2NCA2NCA4OTYgODk2XCIsIFwiZm9jdXNhYmxlXCI6IFwiZmFsc2VcIiB9LCBcImNoaWxkcmVuXCI6IFt7IFwidGFnXCI6IFwicGF0aFwiLCBcImF0dHJzXCI6IHsgXCJkXCI6IFwiTTUzMy4yIDQ5Mi4zTDI3Ny45IDE2Ni4xYy0zLTMuOS03LjctNi4xLTEyLjYtNi4xSDE4OGMtNi43IDAtMTAuNCA3LjctNi4zIDEyLjlMNDQ3LjEgNTEyIDE4MS43IDg1MS4xQTcuOTggNy45OCAwIDAwMTg4IDg2NGg3Ny4zYzQuOSAwIDkuNi0yLjMgMTIuNi02LjFsMjU1LjMtMzI2LjFjOS4xLTExLjcgOS4xLTI3LjkgMC0zOS41em0zMDQgMEw1ODEuOSAxNjYuMWMtMy0zLjktNy43LTYuMS0xMi42LTYuMUg0OTJjLTYuNyAwLTEwLjQgNy43LTYuMyAxMi45TDc1MS4xIDUxMiA0ODUuNyA4NTEuMUE3Ljk4IDcuOTggMCAwMDQ5MiA4NjRoNzcuM2M0LjkgMCA5LjYtMi4zIDEyLjYtNi4xbDI1NS4zLTMyNi4xYzkuMS0xMS43IDkuMS0yNy45IDAtMzkuNXpcIiB9IH1dIH0sIFwibmFtZVwiOiBcImRvdWJsZS1yaWdodFwiLCBcInRoZW1lXCI6IFwib3V0bGluZWRcIiB9O1xuZXhwb3J0cy5kZWZhdWx0ID0gRG91YmxlUmlnaHRPdXRsaW5lZDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF90eXBlb2YgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9leHRlbmRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfc2VsZWN0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vc2VsZWN0XCIpKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgTWluaVNlbGVjdCA9IGZ1bmN0aW9uIE1pbmlTZWxlY3QocHJvcHMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9zZWxlY3RbXCJkZWZhdWx0XCJdLCAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe1xuICAgIHNpemU6IFwic21hbGxcIlxuICB9LCBwcm9wcykpO1xufTtcblxuTWluaVNlbGVjdC5PcHRpb24gPSBfc2VsZWN0W1wiZGVmYXVsdFwiXS5PcHRpb247XG52YXIgX2RlZmF1bHQgPSBNaW5pU2VsZWN0O1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBnZXRJY29ucztcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9Eb3duT3V0bGluZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9pY29ucy9Eb3duT3V0bGluZWRcIikpO1xuXG52YXIgX0xvYWRpbmdPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zL0xvYWRpbmdPdXRsaW5lZFwiKSk7XG5cbnZhciBfQ2hlY2tPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zL0NoZWNrT3V0bGluZWRcIikpO1xuXG52YXIgX0Nsb3NlT3V0bGluZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9pY29ucy9DbG9zZU91dGxpbmVkXCIpKTtcblxudmFyIF9DbG9zZUNpcmNsZUZpbGxlZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zL0Nsb3NlQ2lyY2xlRmlsbGVkXCIpKTtcblxudmFyIF9TZWFyY2hPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zL1NlYXJjaE91dGxpbmVkXCIpKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBnZXRJY29ucyhfcmVmKSB7XG4gIHZhciBzdWZmaXhJY29uID0gX3JlZi5zdWZmaXhJY29uLFxuICAgICAgY2xlYXJJY29uID0gX3JlZi5jbGVhckljb24sXG4gICAgICBtZW51SXRlbVNlbGVjdGVkSWNvbiA9IF9yZWYubWVudUl0ZW1TZWxlY3RlZEljb24sXG4gICAgICByZW1vdmVJY29uID0gX3JlZi5yZW1vdmVJY29uLFxuICAgICAgbG9hZGluZyA9IF9yZWYubG9hZGluZyxcbiAgICAgIG11bHRpcGxlID0gX3JlZi5tdWx0aXBsZSxcbiAgICAgIHByZWZpeENscyA9IF9yZWYucHJlZml4Q2xzO1xuICAvLyBDbGVhciBJY29uXG4gIHZhciBtZXJnZWRDbGVhckljb24gPSBjbGVhckljb247XG5cbiAgaWYgKCFjbGVhckljb24pIHtcbiAgICBtZXJnZWRDbGVhckljb24gPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQ2xvc2VDaXJjbGVGaWxsZWRbXCJkZWZhdWx0XCJdLCBudWxsKTtcbiAgfSAvLyBBcnJvdyBpdGVtIGljb25cblxuXG4gIHZhciBtZXJnZWRTdWZmaXhJY29uID0gbnVsbDtcblxuICBpZiAoc3VmZml4SWNvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbWVyZ2VkU3VmZml4SWNvbiA9IHN1ZmZpeEljb247XG4gIH0gZWxzZSBpZiAobG9hZGluZykge1xuICAgIG1lcmdlZFN1ZmZpeEljb24gPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfTG9hZGluZ091dGxpbmVkW1wiZGVmYXVsdFwiXSwge1xuICAgICAgc3BpbjogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHZhciBpY29uQ2xzID0gXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zdWZmaXhcIik7XG5cbiAgICBtZXJnZWRTdWZmaXhJY29uID0gZnVuY3Rpb24gbWVyZ2VkU3VmZml4SWNvbihfcmVmMikge1xuICAgICAgdmFyIG9wZW4gPSBfcmVmMi5vcGVuLFxuICAgICAgICAgIHNob3dTZWFyY2ggPSBfcmVmMi5zaG93U2VhcmNoO1xuXG4gICAgICBpZiAob3BlbiAmJiBzaG93U2VhcmNoKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfU2VhcmNoT3V0bGluZWRbXCJkZWZhdWx0XCJdLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBpY29uQ2xzXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0Rvd25PdXRsaW5lZFtcImRlZmF1bHRcIl0sIHtcbiAgICAgICAgY2xhc3NOYW1lOiBpY29uQ2xzXG4gICAgICB9KTtcbiAgICB9O1xuICB9IC8vIENoZWNrZWQgaXRlbSBpY29uXG5cblxuICB2YXIgbWVyZ2VkSXRlbUljb24gPSBudWxsO1xuXG4gIGlmIChtZW51SXRlbVNlbGVjdGVkSWNvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbWVyZ2VkSXRlbUljb24gPSBtZW51SXRlbVNlbGVjdGVkSWNvbjtcbiAgfSBlbHNlIGlmIChtdWx0aXBsZSkge1xuICAgIG1lcmdlZEl0ZW1JY29uID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0NoZWNrT3V0bGluZWRbXCJkZWZhdWx0XCJdLCBudWxsKTtcbiAgfSBlbHNlIHtcbiAgICBtZXJnZWRJdGVtSWNvbiA9IG51bGw7XG4gIH1cblxuICB2YXIgbWVyZ2VkUmVtb3ZlSWNvbiA9IG51bGw7XG5cbiAgaWYgKHJlbW92ZUljb24gIT09IHVuZGVmaW5lZCkge1xuICAgIG1lcmdlZFJlbW92ZUljb24gPSByZW1vdmVJY29uO1xuICB9IGVsc2Uge1xuICAgIG1lcmdlZFJlbW92ZUljb24gPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQ2xvc2VPdXRsaW5lZFtcImRlZmF1bHRcIl0sIG51bGwpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjbGVhckljb246IG1lcmdlZENsZWFySWNvbixcbiAgICBzdWZmaXhJY29uOiBtZXJnZWRTdWZmaXhJY29uLFxuICAgIGl0ZW1JY29uOiBtZXJnZWRJdGVtSWNvbixcbiAgICByZW1vdmVJY29uOiBtZXJnZWRSZW1vdmVJY29uXG4gIH07XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX0Rvd25PdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zLXN2Zy9saWIvYXNuL0Rvd25PdXRsaW5lZFwiKSk7XG5cbnZhciBfQW50ZEljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9jb21wb25lbnRzL0FudGRJY29uXCIpKTtcblxuLy8gR0VORVJBVEUgQlkgLi9zY3JpcHRzL2dlbmVyYXRlLnRzXG4vLyBET04gTk9UIEVESVQgSVQgTUFOVUFMTFlcbnZhciBEb3duT3V0bGluZWQgPSBmdW5jdGlvbiBEb3duT3V0bGluZWQocHJvcHMsIHJlZikge1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0FudGRJY29uLmRlZmF1bHQsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgcmVmOiByZWYsXG4gICAgaWNvbjogX0Rvd25PdXRsaW5lZC5kZWZhdWx0XG4gIH0pKTtcbn07XG5cbkRvd25PdXRsaW5lZC5kaXNwbGF5TmFtZSA9ICdEb3duT3V0bGluZWQnO1xuXG52YXIgX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihEb3duT3V0bGluZWQpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcbi8vIFRoaXMgaWNvbiBmaWxlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIERvd25PdXRsaW5lZCA9IHsgXCJpY29uXCI6IHsgXCJ0YWdcIjogXCJzdmdcIiwgXCJhdHRyc1wiOiB7IFwidmlld0JveFwiOiBcIjY0IDY0IDg5NiA4OTZcIiwgXCJmb2N1c2FibGVcIjogXCJmYWxzZVwiIH0sIFwiY2hpbGRyZW5cIjogW3sgXCJ0YWdcIjogXCJwYXRoXCIsIFwiYXR0cnNcIjogeyBcImRcIjogXCJNODg0IDI1NmgtNzVjLTUuMSAwLTkuOSAyLjUtMTIuOSA2LjZMNTEyIDY1NC4yIDIyNy45IDI2Mi42Yy0zLTQuMS03LjgtNi42LTEyLjktNi42aC03NWMtNi41IDAtMTAuMyA3LjQtNi41IDEyLjdsMzUyLjYgNDg2LjFjMTIuOCAxNy42IDM5IDE3LjYgNTEuNyAwbDM1Mi42LTQ4Ni4xYzMuOS01LjMuMS0xMi43LTYuNC0xMi43elwiIH0gfV0gfSwgXCJuYW1lXCI6IFwiZG93blwiLCBcInRoZW1lXCI6IFwib3V0bGluZWRcIiB9O1xuZXhwb3J0cy5kZWZhdWx0ID0gRG93bk91dGxpbmVkO1xuIiwiJ3VzZSBzdHJpY3QnO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxuICB9KTtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuICBcbiAgdmFyIF9DaGVja091dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCcuL2xpYi9pY29ucy9DaGVja091dGxpbmVkJykpO1xuICBcbiAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuICBcbiAgdmFyIF9kZWZhdWx0ID0gX0NoZWNrT3V0bGluZWQ7XG4gIGV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuICBtb2R1bGUuZXhwb3J0cyA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9DaGVja091dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vQ2hlY2tPdXRsaW5lZFwiKSk7XG5cbnZhciBfQW50ZEljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9jb21wb25lbnRzL0FudGRJY29uXCIpKTtcblxuLy8gR0VORVJBVEUgQlkgLi9zY3JpcHRzL2dlbmVyYXRlLnRzXG4vLyBET04gTk9UIEVESVQgSVQgTUFOVUFMTFlcbnZhciBDaGVja091dGxpbmVkID0gZnVuY3Rpb24gQ2hlY2tPdXRsaW5lZChwcm9wcywgcmVmKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQW50ZEljb24uZGVmYXVsdCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICByZWY6IHJlZixcbiAgICBpY29uOiBfQ2hlY2tPdXRsaW5lZC5kZWZhdWx0XG4gIH0pKTtcbn07XG5cbkNoZWNrT3V0bGluZWQuZGlzcGxheU5hbWUgPSAnQ2hlY2tPdXRsaW5lZCc7XG5cbnZhciBfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKENoZWNrT3V0bGluZWQpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcbi8vIFRoaXMgaWNvbiBmaWxlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIENoZWNrT3V0bGluZWQgPSB7IFwiaWNvblwiOiB7IFwidGFnXCI6IFwic3ZnXCIsIFwiYXR0cnNcIjogeyBcInZpZXdCb3hcIjogXCI2NCA2NCA4OTYgODk2XCIsIFwiZm9jdXNhYmxlXCI6IFwiZmFsc2VcIiB9LCBcImNoaWxkcmVuXCI6IFt7IFwidGFnXCI6IFwicGF0aFwiLCBcImF0dHJzXCI6IHsgXCJkXCI6IFwiTTkxMiAxOTBoLTY5LjljLTkuOCAwLTE5LjEgNC41LTI1LjEgMTIuMkw0MDQuNyA3MjQuNSAyMDcgNDc0YTMyIDMyIDAgMDAtMjUuMS0xMi4ySDExMmMtNi43IDAtMTAuNCA3LjctNi4zIDEyLjlsMjczLjkgMzQ3YzEyLjggMTYuMiAzNy40IDE2LjIgNTAuMyAwbDQ4OC40LTYxOC45YzQuMS01LjEuNC0xMi44LTYuMy0xMi44elwiIH0gfV0gfSwgXCJuYW1lXCI6IFwiY2hlY2tcIiwgXCJ0aGVtZVwiOiBcIm91dGxpbmVkXCIgfTtcbmV4cG9ydHMuZGVmYXVsdCA9IENoZWNrT3V0bGluZWQ7XG4iLCIndXNlIHN0cmljdCc7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG4gIH0pO1xuICBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG4gIFxuICB2YXIgX1NlYXJjaE91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCcuL2xpYi9pY29ucy9TZWFyY2hPdXRsaW5lZCcpKTtcbiAgXG4gIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cbiAgXG4gIHZhciBfZGVmYXVsdCA9IF9TZWFyY2hPdXRsaW5lZDtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG4gIG1vZHVsZS5leHBvcnRzID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX1NlYXJjaE91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMtc3ZnL2xpYi9hc24vU2VhcmNoT3V0bGluZWRcIikpO1xuXG52YXIgX0FudGRJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vY29tcG9uZW50cy9BbnRkSWNvblwiKSk7XG5cbi8vIEdFTkVSQVRFIEJZIC4vc2NyaXB0cy9nZW5lcmF0ZS50c1xuLy8gRE9OIE5PVCBFRElUIElUIE1BTlVBTExZXG52YXIgU2VhcmNoT3V0bGluZWQgPSBmdW5jdGlvbiBTZWFyY2hPdXRsaW5lZChwcm9wcywgcmVmKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfQW50ZEljb24uZGVmYXVsdCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICByZWY6IHJlZixcbiAgICBpY29uOiBfU2VhcmNoT3V0bGluZWQuZGVmYXVsdFxuICB9KSk7XG59O1xuXG5TZWFyY2hPdXRsaW5lZC5kaXNwbGF5TmFtZSA9ICdTZWFyY2hPdXRsaW5lZCc7XG5cbnZhciBfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKFNlYXJjaE91dGxpbmVkKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBUaGlzIGljb24gZmlsZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBTZWFyY2hPdXRsaW5lZCA9IHsgXCJpY29uXCI6IHsgXCJ0YWdcIjogXCJzdmdcIiwgXCJhdHRyc1wiOiB7IFwidmlld0JveFwiOiBcIjY0IDY0IDg5NiA4OTZcIiwgXCJmb2N1c2FibGVcIjogXCJmYWxzZVwiIH0sIFwiY2hpbGRyZW5cIjogW3sgXCJ0YWdcIjogXCJwYXRoXCIsIFwiYXR0cnNcIjogeyBcImRcIjogXCJNOTA5LjYgODU0LjVMNjQ5LjkgNTk0LjhDNjkwLjIgNTQyLjcgNzEyIDQ3OSA3MTIgNDEyYzAtODAuMi0zMS4zLTE1NS40LTg3LjktMjEyLjEtNTYuNi01Ni43LTEzMi04Ny45LTIxMi4xLTg3LjlzLTE1NS41IDMxLjMtMjEyLjEgODcuOUMxNDMuMiAyNTYuNSAxMTIgMzMxLjggMTEyIDQxMmMwIDgwLjEgMzEuMyAxNTUuNSA4Ny45IDIxMi4xQzI1Ni41IDY4MC44IDMzMS44IDcxMiA0MTIgNzEyYzY3IDAgMTMwLjYtMjEuOCAxODIuNy02MmwyNTkuNyAyNTkuNmE4LjIgOC4yIDAgMDAxMS42IDBsNDMuNi00My41YTguMiA4LjIgMCAwMDAtMTEuNnpNNTcwLjQgNTcwLjRDNTI4IDYxMi43IDQ3MS44IDYzNiA0MTIgNjM2cy0xMTYtMjMuMy0xNTguNC02NS42QzIxMS4zIDUyOCAxODggNDcxLjggMTg4IDQxMnMyMy4zLTExNi4xIDY1LjYtMTU4LjRDMjk2IDIxMS4zIDM1Mi4yIDE4OCA0MTIgMTg4czExNi4xIDIzLjIgMTU4LjQgNjUuNlM2MzYgMzUyLjIgNjM2IDQxMnMtMjMuMyAxMTYuMS02NS42IDE1OC40elwiIH0gfV0gfSwgXCJuYW1lXCI6IFwic2VhcmNoXCIsIFwidGhlbWVcIjogXCJvdXRsaW5lZFwiIH07XG5leHBvcnRzLmRlZmF1bHQgPSBTZWFyY2hPdXRsaW5lZDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gZXhwb3J0cy5yZXNwb25zaXZlTWFwID0gZXhwb3J0cy5yZXNwb25zaXZlQXJyYXkgPSB2b2lkIDA7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfZXh0ZW5kczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIikpO1xuXG52YXIgcmVzcG9uc2l2ZUFycmF5ID0gWyd4eGwnLCAneGwnLCAnbGcnLCAnbWQnLCAnc20nLCAneHMnXTtcbmV4cG9ydHMucmVzcG9uc2l2ZUFycmF5ID0gcmVzcG9uc2l2ZUFycmF5O1xudmFyIHJlc3BvbnNpdmVNYXAgPSB7XG4gIHhzOiAnKG1heC13aWR0aDogNTc1cHgpJyxcbiAgc206ICcobWluLXdpZHRoOiA1NzZweCknLFxuICBtZDogJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gIGxnOiAnKG1pbi13aWR0aDogOTkycHgpJyxcbiAgeGw6ICcobWluLXdpZHRoOiAxMjAwcHgpJyxcbiAgeHhsOiAnKG1pbi13aWR0aDogMTYwMHB4KSdcbn07XG5leHBvcnRzLnJlc3BvbnNpdmVNYXAgPSByZXNwb25zaXZlTWFwO1xudmFyIHN1YnNjcmliZXJzID0gbmV3IE1hcCgpO1xudmFyIHN1YlVpZCA9IC0xO1xudmFyIHNjcmVlbnMgPSB7fTtcbnZhciByZXNwb25zaXZlT2JzZXJ2ZSA9IHtcbiAgbWF0Y2hIYW5kbGVyczoge30sXG4gIGRpc3BhdGNoOiBmdW5jdGlvbiBkaXNwYXRjaChwb2ludE1hcCkge1xuICAgIHNjcmVlbnMgPSBwb2ludE1hcDtcbiAgICBzdWJzY3JpYmVycy5mb3JFYWNoKGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgICByZXR1cm4gZnVuYyhzY3JlZW5zKTtcbiAgICB9KTtcbiAgICByZXR1cm4gc3Vic2NyaWJlcnMuc2l6ZSA+PSAxO1xuICB9LFxuICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNjcmliZShmdW5jKSB7XG4gICAgaWYgKCFzdWJzY3JpYmVycy5zaXplKSB0aGlzLnJlZ2lzdGVyKCk7XG4gICAgc3ViVWlkICs9IDE7XG4gICAgc3Vic2NyaWJlcnMuc2V0KHN1YlVpZCwgZnVuYyk7XG4gICAgZnVuYyhzY3JlZW5zKTtcbiAgICByZXR1cm4gc3ViVWlkO1xuICB9LFxuICB1bnN1YnNjcmliZTogZnVuY3Rpb24gdW5zdWJzY3JpYmUodG9rZW4pIHtcbiAgICBzdWJzY3JpYmVyc1tcImRlbGV0ZVwiXSh0b2tlbik7XG4gICAgaWYgKCFzdWJzY3JpYmVycy5zaXplKSB0aGlzLnVucmVnaXN0ZXIoKTtcbiAgfSxcbiAgdW5yZWdpc3RlcjogZnVuY3Rpb24gdW5yZWdpc3RlcigpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgT2JqZWN0LmtleXMocmVzcG9uc2l2ZU1hcCkuZm9yRWFjaChmdW5jdGlvbiAoc2NyZWVuKSB7XG4gICAgICB2YXIgbWF0Y2hNZWRpYVF1ZXJ5ID0gcmVzcG9uc2l2ZU1hcFtzY3JlZW5dO1xuICAgICAgdmFyIGhhbmRsZXIgPSBfdGhpcy5tYXRjaEhhbmRsZXJzW21hdGNoTWVkaWFRdWVyeV07XG4gICAgICBoYW5kbGVyID09PSBudWxsIHx8IGhhbmRsZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGhhbmRsZXIubXFsLnJlbW92ZUxpc3RlbmVyKGhhbmRsZXIgPT09IG51bGwgfHwgaGFuZGxlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogaGFuZGxlci5saXN0ZW5lcik7XG4gICAgfSk7XG4gICAgc3Vic2NyaWJlcnMuY2xlYXIoKTtcbiAgfSxcbiAgcmVnaXN0ZXI6IGZ1bmN0aW9uIHJlZ2lzdGVyKCkge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgT2JqZWN0LmtleXMocmVzcG9uc2l2ZU1hcCkuZm9yRWFjaChmdW5jdGlvbiAoc2NyZWVuKSB7XG4gICAgICB2YXIgbWF0Y2hNZWRpYVF1ZXJ5ID0gcmVzcG9uc2l2ZU1hcFtzY3JlZW5dO1xuXG4gICAgICB2YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiBsaXN0ZW5lcihfcmVmKSB7XG4gICAgICAgIHZhciBtYXRjaGVzID0gX3JlZi5tYXRjaGVzO1xuXG4gICAgICAgIF90aGlzMi5kaXNwYXRjaCgoMCwgX2V4dGVuZHMzW1wiZGVmYXVsdFwiXSkoKDAsIF9leHRlbmRzM1tcImRlZmF1bHRcIl0pKHt9LCBzY3JlZW5zKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKSh7fSwgc2NyZWVuLCBtYXRjaGVzKSkpO1xuICAgICAgfTtcblxuICAgICAgdmFyIG1xbCA9IHdpbmRvdy5tYXRjaE1lZGlhKG1hdGNoTWVkaWFRdWVyeSk7XG4gICAgICBtcWwuYWRkTGlzdGVuZXIobGlzdGVuZXIpO1xuICAgICAgX3RoaXMyLm1hdGNoSGFuZGxlcnNbbWF0Y2hNZWRpYVF1ZXJ5XSA9IHtcbiAgICAgICAgbXFsOiBtcWwsXG4gICAgICAgIGxpc3RlbmVyOiBsaXN0ZW5lclxuICAgICAgfTtcbiAgICAgIGxpc3RlbmVyKG1xbCk7XG4gICAgfSk7XG4gIH1cbn07XG52YXIgX2RlZmF1bHQgPSByZXNwb25zaXZlT2JzZXJ2ZTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5nZXRQYWdpbmF0aW9uUGFyYW0gPSBnZXRQYWdpbmF0aW9uUGFyYW07XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHVzZVBhZ2luYXRpb247XG5leHBvcnRzLkRFRkFVTFRfUEFHRV9TSVpFID0gdm9pZCAwO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIF9zbGljZWRUb0FycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiKSk7XG5cbnZhciBfdHlwZW9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpKTtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcblxudmFyIF9fcmVzdCA9IHZvaWQgMCAmJiAodm9pZCAwKS5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApIHRbcF0gPSBzW3BdO1xuICB9XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbnZhciBERUZBVUxUX1BBR0VfU0laRSA9IDEwO1xuZXhwb3J0cy5ERUZBVUxUX1BBR0VfU0laRSA9IERFRkFVTFRfUEFHRV9TSVpFO1xuXG5mdW5jdGlvbiBnZXRQYWdpbmF0aW9uUGFyYW0ocGFnaW5hdGlvbiwgbWVyZ2VkUGFnaW5hdGlvbikge1xuICB2YXIgcGFyYW0gPSB7XG4gICAgY3VycmVudDogbWVyZ2VkUGFnaW5hdGlvbi5jdXJyZW50LFxuICAgIHBhZ2VTaXplOiBtZXJnZWRQYWdpbmF0aW9uLnBhZ2VTaXplXG4gIH07XG4gIHZhciBwYWdpbmF0aW9uT2JqID0gcGFnaW5hdGlvbiAmJiAoMCwgX3R5cGVvZjJbXCJkZWZhdWx0XCJdKShwYWdpbmF0aW9uKSA9PT0gJ29iamVjdCcgPyBwYWdpbmF0aW9uIDoge307XG4gIE9iamVjdC5rZXlzKHBhZ2luYXRpb25PYmopLmZvckVhY2goZnVuY3Rpb24gKHBhZ2VQcm9wKSB7XG4gICAgdmFyIHZhbHVlID0gbWVyZ2VkUGFnaW5hdGlvbltwYWdlUHJvcF07XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwYXJhbVtwYWdlUHJvcF0gPSB2YWx1ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcGFyYW07XG59XG5cbmZ1bmN0aW9uIGV4dGVuZHNPYmplY3QoKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcblxuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgbGlzdCA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBsaXN0W19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgbGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChvYmopIHtcbiAgICBpZiAob2JqKSB7XG4gICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsID0gb2JqW2tleV07XG5cbiAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHVzZVBhZ2luYXRpb24odG90YWwsIHBhZ2luYXRpb24sIG9uQ2hhbmdlKSB7XG4gIHZhciBfYSA9IHBhZ2luYXRpb24gJiYgKDAsIF90eXBlb2YyW1wiZGVmYXVsdFwiXSkocGFnaW5hdGlvbikgPT09ICdvYmplY3QnID8gcGFnaW5hdGlvbiA6IHt9LFxuICAgICAgX2EkdG90YWwgPSBfYS50b3RhbCxcbiAgICAgIHBhZ2luYXRpb25Ub3RhbCA9IF9hJHRvdGFsID09PSB2b2lkIDAgPyAwIDogX2EkdG90YWwsXG4gICAgICBwYWdpbmF0aW9uT2JqID0gX19yZXN0KF9hLCBbXCJ0b3RhbFwiXSk7XG5cbiAgdmFyIF91c2VTdGF0ZSA9ICgwLCBfcmVhY3QudXNlU3RhdGUpKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY3VycmVudDogJ2RlZmF1bHRDdXJyZW50JyBpbiBwYWdpbmF0aW9uT2JqID8gcGFnaW5hdGlvbk9iai5kZWZhdWx0Q3VycmVudCA6IDEsXG4gICAgICBwYWdlU2l6ZTogJ2RlZmF1bHRQYWdlU2l6ZScgaW4gcGFnaW5hdGlvbk9iaiA/IHBhZ2luYXRpb25PYmouZGVmYXVsdFBhZ2VTaXplIDogREVGQVVMVF9QQUdFX1NJWkVcbiAgICB9O1xuICB9KSxcbiAgICAgIF91c2VTdGF0ZTIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyW1wiZGVmYXVsdFwiXSkoX3VzZVN0YXRlLCAyKSxcbiAgICAgIGlubmVyUGFnaW5hdGlvbiA9IF91c2VTdGF0ZTJbMF0sXG4gICAgICBzZXRJbm5lclBhZ2luYXRpb24gPSBfdXNlU3RhdGUyWzFdOyAvLyA9PT09PT09PT09PT0gQmFzaWMgUGFnaW5hdGlvbiBDb25maWcgPT09PT09PT09PT09XG5cblxuICB2YXIgbWVyZ2VkUGFnaW5hdGlvbiA9IGV4dGVuZHNPYmplY3QoaW5uZXJQYWdpbmF0aW9uLCBwYWdpbmF0aW9uT2JqLCB7XG4gICAgdG90YWw6IHBhZ2luYXRpb25Ub3RhbCA+IDAgPyBwYWdpbmF0aW9uVG90YWwgOiB0b3RhbFxuICB9KTsgLy8gUmVzZXQgYGN1cnJlbnRgIGlmIGRhdGEgbGVuZ3RoIG9yIHBhZ2VTaXplIGNoYW5nZWRcblxuICB2YXIgbWF4UGFnZSA9IE1hdGguY2VpbCgocGFnaW5hdGlvblRvdGFsIHx8IHRvdGFsKSAvIG1lcmdlZFBhZ2luYXRpb24ucGFnZVNpemUpO1xuXG4gIGlmIChtZXJnZWRQYWdpbmF0aW9uLmN1cnJlbnQgPiBtYXhQYWdlKSB7XG4gICAgLy8gUHJldmVudCBhIG1heGltdW0gcGFnZSBjb3VudCBvZiAwXG4gICAgbWVyZ2VkUGFnaW5hdGlvbi5jdXJyZW50ID0gbWF4UGFnZSB8fCAxO1xuICB9XG5cbiAgdmFyIHJlZnJlc2hQYWdpbmF0aW9uID0gZnVuY3Rpb24gcmVmcmVzaFBhZ2luYXRpb24oKSB7XG4gICAgdmFyIGN1cnJlbnQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IDE7XG4gICAgdmFyIHBhZ2VTaXplID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgc2V0SW5uZXJQYWdpbmF0aW9uKHtcbiAgICAgIGN1cnJlbnQ6IGN1cnJlbnQsXG4gICAgICBwYWdlU2l6ZTogcGFnZVNpemUgfHwgbWVyZ2VkUGFnaW5hdGlvbi5wYWdlU2l6ZVxuICAgIH0pO1xuICB9O1xuXG4gIHZhciBvbkludGVybmFsQ2hhbmdlID0gZnVuY3Rpb24gb25JbnRlcm5hbENoYW5nZShjdXJyZW50LCBwYWdlU2l6ZSkge1xuICAgIHZhciBfYTtcblxuICAgIGlmIChwYWdpbmF0aW9uKSB7XG4gICAgICAoX2EgPSBwYWdpbmF0aW9uLm9uQ2hhbmdlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChwYWdpbmF0aW9uLCBjdXJyZW50LCBwYWdlU2l6ZSk7XG4gICAgfVxuXG4gICAgcmVmcmVzaFBhZ2luYXRpb24oY3VycmVudCwgcGFnZVNpemUpO1xuICAgIG9uQ2hhbmdlKGN1cnJlbnQsIHBhZ2VTaXplIHx8IChtZXJnZWRQYWdpbmF0aW9uID09PSBudWxsIHx8IG1lcmdlZFBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1lcmdlZFBhZ2luYXRpb24ucGFnZVNpemUpKTtcbiAgfTtcblxuICBpZiAocGFnaW5hdGlvbiA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gW3t9LCBmdW5jdGlvbiAoKSB7fV07XG4gIH1cblxuICByZXR1cm4gWygwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIG1lcmdlZFBhZ2luYXRpb24pLCB7XG4gICAgb25DaGFuZ2U6IG9uSW50ZXJuYWxDaGFuZ2VcbiAgfSksIHJlZnJlc2hQYWdpbmF0aW9uXTtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mMyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdXNlTGF6eUtWTWFwO1xuXG52YXIgX3R5cGVvZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZjMob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIHVzZUxhenlLVk1hcChkYXRhLCBjaGlsZHJlbkNvbHVtbk5hbWUsIGdldFJvd0tleSkge1xuICB2YXIgbWFwQ2FjaGVSZWYgPSBSZWFjdC51c2VSZWYoe30pO1xuXG4gIGZ1bmN0aW9uIGdldFJlY29yZEJ5S2V5KGtleSkge1xuICAgIGlmICghbWFwQ2FjaGVSZWYuY3VycmVudCB8fCBtYXBDYWNoZVJlZi5jdXJyZW50LmRhdGEgIT09IGRhdGEgfHwgbWFwQ2FjaGVSZWYuY3VycmVudC5jaGlsZHJlbkNvbHVtbk5hbWUgIT09IGNoaWxkcmVuQ29sdW1uTmFtZSB8fCBtYXBDYWNoZVJlZi5jdXJyZW50LmdldFJvd0tleSAhPT0gZ2V0Um93S2V5KSB7XG4gICAgICB2YXIga3ZNYXAgPSBuZXcgTWFwKCk7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1pbm5lci1kZWNsYXJhdGlvbnMgKi9cblxuICAgICAgZnVuY3Rpb24gZGlnKHJlY29yZHMpIHtcbiAgICAgICAgcmVjb3Jkcy5mb3JFYWNoKGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XG4gICAgICAgICAgdmFyIHJvd0tleSA9IGdldFJvd0tleShyZWNvcmQsIGluZGV4KTtcbiAgICAgICAgICBrdk1hcC5zZXQocm93S2V5LCByZWNvcmQpO1xuXG4gICAgICAgICAgaWYgKHJlY29yZCAmJiAoMCwgX3R5cGVvZjJbXCJkZWZhdWx0XCJdKShyZWNvcmQpID09PSAnb2JqZWN0JyAmJiBjaGlsZHJlbkNvbHVtbk5hbWUgaW4gcmVjb3JkKSB7XG4gICAgICAgICAgICBkaWcocmVjb3JkW2NoaWxkcmVuQ29sdW1uTmFtZV0gfHwgW10pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlICovXG5cblxuICAgICAgZGlnKGRhdGEpO1xuICAgICAgbWFwQ2FjaGVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lOiBjaGlsZHJlbkNvbHVtbk5hbWUsXG4gICAgICAgIGt2TWFwOiBrdk1hcCxcbiAgICAgICAgZ2V0Um93S2V5OiBnZXRSb3dLZXlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcENhY2hlUmVmLmN1cnJlbnQua3ZNYXAuZ2V0KGtleSk7XG4gIH1cblxuICByZXR1cm4gW2dldFJlY29yZEJ5S2V5XTtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mMyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdXNlU2VsZWN0aW9uO1xuZXhwb3J0cy5TRUxFQ1RJT05fTk9ORSA9IGV4cG9ydHMuU0VMRUNUSU9OX0lOVkVSVCA9IGV4cG9ydHMuU0VMRUNUSU9OX0FMTCA9IHZvaWQgMDtcblxudmFyIF90b0FycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9BcnJheVwiKSk7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfZXh0ZW5kczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIikpO1xuXG52YXIgX3NsaWNlZFRvQXJyYXkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIpKTtcblxudmFyIF90b0NvbnN1bWFibGVBcnJheTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCIpKTtcblxudmFyIF90eXBlb2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIikpO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX0Rvd25PdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zL0Rvd25PdXRsaW5lZFwiKSk7XG5cbnZhciBfdHJlZVV0aWwgPSByZXF1aXJlKFwicmMtdHJlZS9saWIvdXRpbHMvdHJlZVV0aWxcIik7XG5cbnZhciBfY29uZHVjdFV0aWwgPSByZXF1aXJlKFwicmMtdHJlZS9saWIvdXRpbHMvY29uZHVjdFV0aWxcIik7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCJyYy10cmVlL2xpYi91dGlsXCIpO1xuXG52YXIgX3JjVGFibGUgPSByZXF1aXJlKFwicmMtdGFibGVcIik7XG5cbnZhciBfdXNlTWVyZ2VkU3RhdGUzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtdXRpbC9saWIvaG9va3MvdXNlTWVyZ2VkU3RhdGVcIikpO1xuXG52YXIgX2NoZWNrYm94ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY2hlY2tib3hcIikpO1xuXG52YXIgX2Ryb3Bkb3duID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vZHJvcGRvd25cIikpO1xuXG52YXIgX21lbnUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9tZW51XCIpKTtcblxudmFyIF9yYWRpbyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uLy4uL3JhZGlvXCIpKTtcblxudmFyIF9kZXZXYXJuaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vX3V0aWwvZGV2V2FybmluZ1wiKSk7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZjMob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbi8vIFRPRE86IHdhcm5pbmcgaWYgdXNlIGFqYXghISFcbnZhciBTRUxFQ1RJT05fQUxMID0gJ1NFTEVDVF9BTEwnO1xuZXhwb3J0cy5TRUxFQ1RJT05fQUxMID0gU0VMRUNUSU9OX0FMTDtcbnZhciBTRUxFQ1RJT05fSU5WRVJUID0gJ1NFTEVDVF9JTlZFUlQnO1xuZXhwb3J0cy5TRUxFQ1RJT05fSU5WRVJUID0gU0VMRUNUSU9OX0lOVkVSVDtcbnZhciBTRUxFQ1RJT05fTk9ORSA9ICdTRUxFQ1RfTk9ORSc7XG5leHBvcnRzLlNFTEVDVElPTl9OT05FID0gU0VMRUNUSU9OX05PTkU7XG5cbmZ1bmN0aW9uIGdldEZpeGVkVHlwZShjb2x1bW4pIHtcbiAgcmV0dXJuIGNvbHVtbiAmJiBjb2x1bW4uZml4ZWQ7XG59XG5cbmZ1bmN0aW9uIGZsYXR0ZW5EYXRhKGRhdGEsIGNoaWxkcmVuQ29sdW1uTmFtZSkge1xuICB2YXIgbGlzdCA9IFtdO1xuICAoZGF0YSB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAocmVjb3JkKSB7XG4gICAgbGlzdC5wdXNoKHJlY29yZCk7XG5cbiAgICBpZiAocmVjb3JkICYmICgwLCBfdHlwZW9mMltcImRlZmF1bHRcIl0pKHJlY29yZCkgPT09ICdvYmplY3QnICYmIGNoaWxkcmVuQ29sdW1uTmFtZSBpbiByZWNvcmQpIHtcbiAgICAgIGxpc3QgPSBbXS5jb25jYXQoKDAsIF90b0NvbnN1bWFibGVBcnJheTJbXCJkZWZhdWx0XCJdKShsaXN0KSwgKDAsIF90b0NvbnN1bWFibGVBcnJheTJbXCJkZWZhdWx0XCJdKShmbGF0dGVuRGF0YShyZWNvcmRbY2hpbGRyZW5Db2x1bW5OYW1lXSwgY2hpbGRyZW5Db2x1bW5OYW1lKSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBsaXN0O1xufVxuXG5mdW5jdGlvbiB1c2VTZWxlY3Rpb24ocm93U2VsZWN0aW9uLCBjb25maWcpIHtcbiAgdmFyIF9yZWYgPSByb3dTZWxlY3Rpb24gfHwge30sXG4gICAgICBwcmVzZXJ2ZVNlbGVjdGVkUm93S2V5cyA9IF9yZWYucHJlc2VydmVTZWxlY3RlZFJvd0tleXMsXG4gICAgICBzZWxlY3RlZFJvd0tleXMgPSBfcmVmLnNlbGVjdGVkUm93S2V5cyxcbiAgICAgIGRlZmF1bHRTZWxlY3RlZFJvd0tleXMgPSBfcmVmLmRlZmF1bHRTZWxlY3RlZFJvd0tleXMsXG4gICAgICBnZXRDaGVja2JveFByb3BzID0gX3JlZi5nZXRDaGVja2JveFByb3BzLFxuICAgICAgb25TZWxlY3Rpb25DaGFuZ2UgPSBfcmVmLm9uQ2hhbmdlLFxuICAgICAgb25TZWxlY3QgPSBfcmVmLm9uU2VsZWN0LFxuICAgICAgb25TZWxlY3RBbGwgPSBfcmVmLm9uU2VsZWN0QWxsLFxuICAgICAgb25TZWxlY3RJbnZlcnQgPSBfcmVmLm9uU2VsZWN0SW52ZXJ0LFxuICAgICAgb25TZWxlY3ROb25lID0gX3JlZi5vblNlbGVjdE5vbmUsXG4gICAgICBvblNlbGVjdE11bHRpcGxlID0gX3JlZi5vblNlbGVjdE11bHRpcGxlLFxuICAgICAgc2VsZWN0aW9uQ29sV2lkdGggPSBfcmVmLmNvbHVtbldpZHRoLFxuICAgICAgc2VsZWN0aW9uVHlwZSA9IF9yZWYudHlwZSxcbiAgICAgIHNlbGVjdGlvbnMgPSBfcmVmLnNlbGVjdGlvbnMsXG4gICAgICBmaXhlZCA9IF9yZWYuZml4ZWQsXG4gICAgICBjdXN0b21pemVSZW5kZXJDZWxsID0gX3JlZi5yZW5kZXJDZWxsLFxuICAgICAgaGlkZVNlbGVjdEFsbCA9IF9yZWYuaGlkZVNlbGVjdEFsbCxcbiAgICAgIF9yZWYkY2hlY2tTdHJpY3RseSA9IF9yZWYuY2hlY2tTdHJpY3RseSxcbiAgICAgIGNoZWNrU3RyaWN0bHkgPSBfcmVmJGNoZWNrU3RyaWN0bHkgPT09IHZvaWQgMCA/IHRydWUgOiBfcmVmJGNoZWNrU3RyaWN0bHk7XG5cbiAgdmFyIHByZWZpeENscyA9IGNvbmZpZy5wcmVmaXhDbHMsXG4gICAgICBkYXRhID0gY29uZmlnLmRhdGEsXG4gICAgICBwYWdlRGF0YSA9IGNvbmZpZy5wYWdlRGF0YSxcbiAgICAgIGdldFJlY29yZEJ5S2V5ID0gY29uZmlnLmdldFJlY29yZEJ5S2V5LFxuICAgICAgZ2V0Um93S2V5ID0gY29uZmlnLmdldFJvd0tleSxcbiAgICAgIGV4cGFuZFR5cGUgPSBjb25maWcuZXhwYW5kVHlwZSxcbiAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZSA9IGNvbmZpZy5jaGlsZHJlbkNvbHVtbk5hbWUsXG4gICAgICB0YWJsZUxvY2FsZSA9IGNvbmZpZy5sb2NhbGUsXG4gICAgICBleHBhbmRJY29uQ29sdW1uSW5kZXggPSBjb25maWcuZXhwYW5kSWNvbkNvbHVtbkluZGV4LFxuICAgICAgZ2V0UG9wdXBDb250YWluZXIgPSBjb25maWcuZ2V0UG9wdXBDb250YWluZXI7IC8vID09PT09PT09PT09PT09PT09PT09PT09PSBDYWNoZXMgPT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIHByZXNlcnZlUmVjb3Jkc1JlZiA9IFJlYWN0LnVzZVJlZihuZXcgTWFwKCkpOyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09IEtleXMgPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBfdXNlTWVyZ2VkU3RhdGUgPSAoMCwgX3VzZU1lcmdlZFN0YXRlM1tcImRlZmF1bHRcIl0pKHNlbGVjdGVkUm93S2V5cyB8fCBkZWZhdWx0U2VsZWN0ZWRSb3dLZXlzIHx8IFtdLCB7XG4gICAgdmFsdWU6IHNlbGVjdGVkUm93S2V5c1xuICB9KSxcbiAgICAgIF91c2VNZXJnZWRTdGF0ZTIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyW1wiZGVmYXVsdFwiXSkoX3VzZU1lcmdlZFN0YXRlLCAyKSxcbiAgICAgIG1lcmdlZFNlbGVjdGVkS2V5cyA9IF91c2VNZXJnZWRTdGF0ZTJbMF0sXG4gICAgICBzZXRNZXJnZWRTZWxlY3RlZEtleXMgPSBfdXNlTWVyZ2VkU3RhdGUyWzFdO1xuXG4gIHZhciBfdXNlTWVtbyA9ICgwLCBSZWFjdC51c2VNZW1vKShmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNoZWNrU3RyaWN0bHkgPyB7XG4gICAgICBrZXlFbnRpdGllczogbnVsbFxuICAgIH0gOiAoMCwgX3RyZWVVdGlsLmNvbnZlcnREYXRhVG9FbnRpdGllcykoZGF0YSwge1xuICAgICAgZXh0ZXJuYWxHZXRLZXk6IGdldFJvd0tleSxcbiAgICAgIGNoaWxkcmVuUHJvcE5hbWU6IGNoaWxkcmVuQ29sdW1uTmFtZVxuICAgIH0pO1xuICB9LCBbZGF0YSwgZ2V0Um93S2V5LCBjaGVja1N0cmljdGx5LCBjaGlsZHJlbkNvbHVtbk5hbWVdKSxcbiAgICAgIGtleUVudGl0aWVzID0gX3VzZU1lbW8ua2V5RW50aXRpZXM7IC8vIEdldCBmbGF0dGVuIGRhdGFcblxuXG4gIHZhciBmbGF0dGVkRGF0YSA9ICgwLCBSZWFjdC51c2VNZW1vKShmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZsYXR0ZW5EYXRhKHBhZ2VEYXRhLCBjaGlsZHJlbkNvbHVtbk5hbWUpO1xuICB9LCBbcGFnZURhdGEsIGNoaWxkcmVuQ29sdW1uTmFtZV0pOyAvLyBHZXQgYWxsIGNoZWNrYm94IHByb3BzXG5cbiAgdmFyIGNoZWNrYm94UHJvcHNNYXAgPSAoMCwgUmVhY3QudXNlTWVtbykoZnVuY3Rpb24gKCkge1xuICAgIHZhciBtYXAgPSBuZXcgTWFwKCk7XG4gICAgZmxhdHRlZERhdGEuZm9yRWFjaChmdW5jdGlvbiAocmVjb3JkLCBpbmRleCkge1xuICAgICAgdmFyIGtleSA9IGdldFJvd0tleShyZWNvcmQsIGluZGV4KTtcbiAgICAgIHZhciBjaGVja2JveFByb3BzID0gKGdldENoZWNrYm94UHJvcHMgPyBnZXRDaGVja2JveFByb3BzKHJlY29yZCkgOiBudWxsKSB8fCB7fTtcbiAgICAgIG1hcC5zZXQoa2V5LCBjaGVja2JveFByb3BzKTtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgKCdjaGVja2VkJyBpbiBjaGVja2JveFByb3BzIHx8ICdkZWZhdWx0Q2hlY2tlZCcgaW4gY2hlY2tib3hQcm9wcykpIHtcbiAgICAgICAgKDAsIF9kZXZXYXJuaW5nW1wiZGVmYXVsdFwiXSkoZmFsc2UsICdUYWJsZScsICdEbyBub3Qgc2V0IGBjaGVja2VkYCBvciBgZGVmYXVsdENoZWNrZWRgIGluIGBnZXRDaGVja2JveFByb3BzYC4gUGxlYXNlIHVzZSBgc2VsZWN0ZWRSb3dLZXlzYCBpbnN0ZWFkLicpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBtYXA7XG4gIH0sIFtmbGF0dGVkRGF0YSwgZ2V0Um93S2V5LCBnZXRDaGVja2JveFByb3BzXSk7XG4gIHZhciBpc0NoZWNrYm94RGlzYWJsZWQgPSAoMCwgUmVhY3QudXNlQ2FsbGJhY2spKGZ1bmN0aW9uIChyKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgcmV0dXJuICEhKChfYSA9IGNoZWNrYm94UHJvcHNNYXAuZ2V0KGdldFJvd0tleShyKSkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kaXNhYmxlZCk7XG4gIH0sIFtjaGVja2JveFByb3BzTWFwLCBnZXRSb3dLZXldKTtcblxuICB2YXIgX3VzZU1lbW8yID0gKDAsIFJlYWN0LnVzZU1lbW8pKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoY2hlY2tTdHJpY3RseSkge1xuICAgICAgcmV0dXJuIFttZXJnZWRTZWxlY3RlZEtleXMgfHwgW10sIFtdXTtcbiAgICB9XG5cbiAgICB2YXIgX2NvbmR1Y3RDaGVjayA9ICgwLCBfY29uZHVjdFV0aWwuY29uZHVjdENoZWNrKShtZXJnZWRTZWxlY3RlZEtleXMsIHRydWUsIGtleUVudGl0aWVzLCBpc0NoZWNrYm94RGlzYWJsZWQpLFxuICAgICAgICBjaGVja2VkS2V5cyA9IF9jb25kdWN0Q2hlY2suY2hlY2tlZEtleXMsXG4gICAgICAgIGhhbGZDaGVja2VkS2V5cyA9IF9jb25kdWN0Q2hlY2suaGFsZkNoZWNrZWRLZXlzO1xuXG4gICAgcmV0dXJuIFtjaGVja2VkS2V5cyB8fCBbXSwgaGFsZkNoZWNrZWRLZXlzXTtcbiAgfSwgW21lcmdlZFNlbGVjdGVkS2V5cywgY2hlY2tTdHJpY3RseSwga2V5RW50aXRpZXMsIGlzQ2hlY2tib3hEaXNhYmxlZF0pLFxuICAgICAgX3VzZU1lbW8zID0gKDAsIF9zbGljZWRUb0FycmF5MltcImRlZmF1bHRcIl0pKF91c2VNZW1vMiwgMiksXG4gICAgICBkZXJpdmVkU2VsZWN0ZWRLZXlzID0gX3VzZU1lbW8zWzBdLFxuICAgICAgZGVyaXZlZEhhbGZTZWxlY3RlZEtleXMgPSBfdXNlTWVtbzNbMV07XG5cbiAgdmFyIGRlcml2ZWRTZWxlY3RlZEtleVNldCA9ICgwLCBSZWFjdC51c2VNZW1vKShmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGtleXMgPSBzZWxlY3Rpb25UeXBlID09PSAncmFkaW8nID8gZGVyaXZlZFNlbGVjdGVkS2V5cy5zbGljZSgwLCAxKSA6IGRlcml2ZWRTZWxlY3RlZEtleXM7XG4gICAgcmV0dXJuIG5ldyBTZXQoa2V5cyk7XG4gIH0sIFtkZXJpdmVkU2VsZWN0ZWRLZXlzLCBzZWxlY3Rpb25UeXBlXSk7XG4gIHZhciBkZXJpdmVkSGFsZlNlbGVjdGVkS2V5U2V0ID0gKDAsIFJlYWN0LnVzZU1lbW8pKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gc2VsZWN0aW9uVHlwZSA9PT0gJ3JhZGlvJyA/IG5ldyBTZXQoKSA6IG5ldyBTZXQoZGVyaXZlZEhhbGZTZWxlY3RlZEtleXMpO1xuICB9LCBbZGVyaXZlZEhhbGZTZWxlY3RlZEtleXMsIHNlbGVjdGlvblR5cGVdKTsgLy8gU2F2ZSBsYXN0IHNlbGVjdGVkIGtleSB0byBlbmFibGUgcmFuZ2Ugc2VsZWN0aW9uXG5cbiAgdmFyIF91c2VTdGF0ZSA9ICgwLCBSZWFjdC51c2VTdGF0ZSkobnVsbCksXG4gICAgICBfdXNlU3RhdGUyID0gKDAsIF9zbGljZWRUb0FycmF5MltcImRlZmF1bHRcIl0pKF91c2VTdGF0ZSwgMiksXG4gICAgICBsYXN0U2VsZWN0ZWRLZXkgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0TGFzdFNlbGVjdGVkS2V5ID0gX3VzZVN0YXRlMlsxXTsgLy8gUmVzZXQgaWYgcm93U2VsZWN0aW9uIHJlc2V0XG5cblxuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmICghcm93U2VsZWN0aW9uKSB7XG4gICAgICBzZXRNZXJnZWRTZWxlY3RlZEtleXMoW10pO1xuICAgIH1cbiAgfSwgWyEhcm93U2VsZWN0aW9uXSk7XG4gIHZhciBzZXRTZWxlY3RlZEtleXMgPSAoMCwgUmVhY3QudXNlQ2FsbGJhY2spKGZ1bmN0aW9uIChrZXlzKSB7XG4gICAgdmFyIGF2YWlsYWJsZUtleXM7XG4gICAgdmFyIHJlY29yZHM7XG5cbiAgICBpZiAocHJlc2VydmVTZWxlY3RlZFJvd0tleXMpIHtcbiAgICAgIC8vIEtlZXAga2V5IGlmIG1hcmsgYXMgcHJlc2VydmVTZWxlY3RlZFJvd0tleXNcbiAgICAgIHZhciBuZXdDYWNoZSA9IG5ldyBNYXAoKTtcbiAgICAgIGF2YWlsYWJsZUtleXMgPSBrZXlzO1xuICAgICAgcmVjb3JkcyA9IGtleXMubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHJlY29yZCA9IGdldFJlY29yZEJ5S2V5KGtleSk7XG5cbiAgICAgICAgaWYgKCFyZWNvcmQgJiYgcHJlc2VydmVSZWNvcmRzUmVmLmN1cnJlbnQuaGFzKGtleSkpIHtcbiAgICAgICAgICByZWNvcmQgPSBwcmVzZXJ2ZVJlY29yZHNSZWYuY3VycmVudC5nZXQoa2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5ld0NhY2hlLnNldChrZXksIHJlY29yZCk7XG4gICAgICAgIHJldHVybiByZWNvcmQ7XG4gICAgICB9KTsgLy8gUmVmcmVzaCB0byBuZXcgY2FjaGVcblxuICAgICAgcHJlc2VydmVSZWNvcmRzUmVmLmN1cnJlbnQgPSBuZXdDYWNoZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRmlsdGVyIGtleSB3aGljaCBub3QgZXhpc3QgaW4gdGhlIGBkYXRhU291cmNlYFxuICAgICAgYXZhaWxhYmxlS2V5cyA9IFtdO1xuICAgICAgcmVjb3JkcyA9IFtdO1xuICAgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHJlY29yZCA9IGdldFJlY29yZEJ5S2V5KGtleSk7XG5cbiAgICAgICAgaWYgKHJlY29yZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYXZhaWxhYmxlS2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldE1lcmdlZFNlbGVjdGVkS2V5cyhhdmFpbGFibGVLZXlzKTtcbiAgICBvblNlbGVjdGlvbkNoYW5nZSA9PT0gbnVsbCB8fCBvblNlbGVjdGlvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TZWxlY3Rpb25DaGFuZ2UoYXZhaWxhYmxlS2V5cywgcmVjb3Jkcyk7XG4gIH0sIFtzZXRNZXJnZWRTZWxlY3RlZEtleXMsIGdldFJlY29yZEJ5S2V5LCBvblNlbGVjdGlvbkNoYW5nZSwgcHJlc2VydmVTZWxlY3RlZFJvd0tleXNdKTsgLy8gPT09PT09PT09PT09PT09PT09PT09PSBTZWxlY3Rpb25zID09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVHJpZ2dlciBzaW5nbGUgYG9uU2VsZWN0YCBldmVudFxuXG4gIHZhciB0cmlnZ2VyU2luZ2xlU2VsZWN0aW9uID0gKDAsIFJlYWN0LnVzZUNhbGxiYWNrKShmdW5jdGlvbiAoa2V5LCBzZWxlY3RlZCwga2V5cywgZXZlbnQpIHtcbiAgICBpZiAob25TZWxlY3QpIHtcbiAgICAgIHZhciByb3dzID0ga2V5cy5tYXAoZnVuY3Rpb24gKGspIHtcbiAgICAgICAgcmV0dXJuIGdldFJlY29yZEJ5S2V5KGspO1xuICAgICAgfSk7XG4gICAgICBvblNlbGVjdChnZXRSZWNvcmRCeUtleShrZXkpLCBzZWxlY3RlZCwgcm93cywgZXZlbnQpO1xuICAgIH1cblxuICAgIHNldFNlbGVjdGVkS2V5cyhrZXlzKTtcbiAgfSwgW29uU2VsZWN0LCBnZXRSZWNvcmRCeUtleSwgc2V0U2VsZWN0ZWRLZXlzXSk7XG4gIHZhciBtZXJnZWRTZWxlY3Rpb25zID0gKDAsIFJlYWN0LnVzZU1lbW8pKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXNlbGVjdGlvbnMgfHwgaGlkZVNlbGVjdEFsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIHNlbGVjdGlvbkxpc3QgPSBzZWxlY3Rpb25zID09PSB0cnVlID8gW1NFTEVDVElPTl9BTEwsIFNFTEVDVElPTl9JTlZFUlQsIFNFTEVDVElPTl9OT05FXSA6IHNlbGVjdGlvbnM7XG4gICAgcmV0dXJuIHNlbGVjdGlvbkxpc3QubWFwKGZ1bmN0aW9uIChzZWxlY3Rpb24pIHtcbiAgICAgIGlmIChzZWxlY3Rpb24gPT09IFNFTEVDVElPTl9BTEwpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBrZXk6ICdhbGwnLFxuICAgICAgICAgIHRleHQ6IHRhYmxlTG9jYWxlLnNlbGVjdGlvbkFsbCxcbiAgICAgICAgICBvblNlbGVjdDogZnVuY3Rpb24gb25TZWxlY3QoKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZEtleXMoZGF0YS5tYXAoZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGdldFJvd0tleShyZWNvcmQsIGluZGV4KTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxlY3Rpb24gPT09IFNFTEVDVElPTl9JTlZFUlQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBrZXk6ICdpbnZlcnQnLFxuICAgICAgICAgIHRleHQ6IHRhYmxlTG9jYWxlLnNlbGVjdEludmVydCxcbiAgICAgICAgICBvblNlbGVjdDogZnVuY3Rpb24gb25TZWxlY3QoKSB7XG4gICAgICAgICAgICB2YXIga2V5U2V0ID0gbmV3IFNldChkZXJpdmVkU2VsZWN0ZWRLZXlTZXQpO1xuICAgICAgICAgICAgcGFnZURhdGEuZm9yRWFjaChmdW5jdGlvbiAocmVjb3JkLCBpbmRleCkge1xuICAgICAgICAgICAgICB2YXIga2V5ID0gZ2V0Um93S2V5KHJlY29yZCwgaW5kZXgpO1xuXG4gICAgICAgICAgICAgIGlmIChrZXlTZXQuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICBrZXlTZXRbXCJkZWxldGVcIl0oa2V5KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBrZXlTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGtleXMgPSBBcnJheS5mcm9tKGtleVNldCk7XG5cbiAgICAgICAgICAgIGlmIChvblNlbGVjdEludmVydCkge1xuICAgICAgICAgICAgICAoMCwgX2Rldldhcm5pbmdbXCJkZWZhdWx0XCJdKShmYWxzZSwgJ1RhYmxlJywgJ2BvblNlbGVjdEludmVydGAgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZS4gUGxlYXNlIHVzZSBgb25DaGFuZ2VgIGluc3RlYWQuJyk7XG4gICAgICAgICAgICAgIG9uU2VsZWN0SW52ZXJ0KGtleXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRTZWxlY3RlZEtleXMoa2V5cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoc2VsZWN0aW9uID09PSBTRUxFQ1RJT05fTk9ORSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtleTogJ25vbmUnLFxuICAgICAgICAgIHRleHQ6IHRhYmxlTG9jYWxlLnNlbGVjdE5vbmUsXG4gICAgICAgICAgb25TZWxlY3Q6IGZ1bmN0aW9uIG9uU2VsZWN0KCkge1xuICAgICAgICAgICAgb25TZWxlY3ROb25lID09PSBudWxsIHx8IG9uU2VsZWN0Tm9uZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TZWxlY3ROb25lKCk7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZEtleXMoW10pO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgICB9KTtcbiAgfSwgW3NlbGVjdGlvbnMsIGRlcml2ZWRTZWxlY3RlZEtleVNldCwgcGFnZURhdGEsIGdldFJvd0tleSwgb25TZWxlY3RJbnZlcnQsIHNldFNlbGVjdGVkS2V5c10pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09PSBDb2x1bW5zID09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciB0cmFuc2Zvcm1Db2x1bW5zID0gKDAsIFJlYWN0LnVzZUNhbGxiYWNrKShmdW5jdGlvbiAoY29sdW1ucykge1xuICAgIGlmICghcm93U2VsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gY29sdW1ucztcbiAgICB9IC8vIFN1cHBvcnQgc2VsZWN0aW9uXG5cblxuICAgIHZhciBrZXlTZXQgPSBuZXcgU2V0KGRlcml2ZWRTZWxlY3RlZEtleVNldCk7IC8vIFJlY29yZCBrZXkgb25seSBuZWVkIGNoZWNrIHdpdGggZW5hYmxlZFxuXG4gICAgdmFyIHJlY29yZEtleXMgPSBmbGF0dGVkRGF0YS5tYXAoZ2V0Um93S2V5KS5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuICFjaGVja2JveFByb3BzTWFwLmdldChrZXkpLmRpc2FibGVkO1xuICAgIH0pO1xuICAgIHZhciBjaGVja2VkQ3VycmVudEFsbCA9IHJlY29yZEtleXMuZXZlcnkoZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIGtleVNldC5oYXMoa2V5KTtcbiAgICB9KTtcbiAgICB2YXIgY2hlY2tlZEN1cnJlbnRTb21lID0gcmVjb3JkS2V5cy5zb21lKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHJldHVybiBrZXlTZXQuaGFzKGtleSk7XG4gICAgfSk7XG5cbiAgICB2YXIgb25TZWxlY3RBbGxDaGFuZ2UgPSBmdW5jdGlvbiBvblNlbGVjdEFsbENoYW5nZSgpIHtcbiAgICAgIHZhciBjaGFuZ2VLZXlzID0gW107XG5cbiAgICAgIGlmIChjaGVja2VkQ3VycmVudEFsbCkge1xuICAgICAgICByZWNvcmRLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIGtleVNldFtcImRlbGV0ZVwiXShrZXkpO1xuICAgICAgICAgIGNoYW5nZUtleXMucHVzaChrZXkpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlY29yZEtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgaWYgKCFrZXlTZXQuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIGtleVNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgIGNoYW5nZUtleXMucHVzaChrZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBrZXlzID0gQXJyYXkuZnJvbShrZXlTZXQpO1xuICAgICAgb25TZWxlY3RBbGwgPT09IG51bGwgfHwgb25TZWxlY3RBbGwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2VsZWN0QWxsKCFjaGVja2VkQ3VycmVudEFsbCwga2V5cy5tYXAoZnVuY3Rpb24gKGspIHtcbiAgICAgICAgcmV0dXJuIGdldFJlY29yZEJ5S2V5KGspO1xuICAgICAgfSksIGNoYW5nZUtleXMubWFwKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgIHJldHVybiBnZXRSZWNvcmRCeUtleShrKTtcbiAgICAgIH0pKTtcbiAgICAgIHNldFNlbGVjdGVkS2V5cyhrZXlzKTtcbiAgICB9OyAvLyA9PT09PT09PT09PT09PT09PT09PT0gUmVuZGVyID09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFRpdGxlIENlbGxcblxuXG4gICAgdmFyIHRpdGxlO1xuXG4gICAgaWYgKHNlbGVjdGlvblR5cGUgIT09ICdyYWRpbycpIHtcbiAgICAgIHZhciBjdXN0b21pemVTZWxlY3Rpb25zO1xuXG4gICAgICBpZiAobWVyZ2VkU2VsZWN0aW9ucykge1xuICAgICAgICB2YXIgbWVudSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9tZW51W1wiZGVmYXVsdFwiXSwge1xuICAgICAgICAgIGdldFBvcHVwQ29udGFpbmVyOiBnZXRQb3B1cENvbnRhaW5lclxuICAgICAgICB9LCBtZXJnZWRTZWxlY3Rpb25zLm1hcChmdW5jdGlvbiAoc2VsZWN0aW9uLCBpbmRleCkge1xuICAgICAgICAgIHZhciBrZXkgPSBzZWxlY3Rpb24ua2V5LFxuICAgICAgICAgICAgICB0ZXh0ID0gc2VsZWN0aW9uLnRleHQsXG4gICAgICAgICAgICAgIG9uU2VsZWN0aW9uQ2xpY2sgPSBzZWxlY3Rpb24ub25TZWxlY3Q7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9tZW51W1wiZGVmYXVsdFwiXS5JdGVtLCB7XG4gICAgICAgICAgICBrZXk6IGtleSB8fCBpbmRleCxcbiAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG4gICAgICAgICAgICAgIG9uU2VsZWN0aW9uQ2xpY2sgPT09IG51bGwgfHwgb25TZWxlY3Rpb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TZWxlY3Rpb25DbGljayhyZWNvcmRLZXlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCB0ZXh0KTtcbiAgICAgICAgfSkpO1xuICAgICAgICBjdXN0b21pemVTZWxlY3Rpb25zID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zZWxlY3Rpb24tZXh0cmFcIilcbiAgICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2Ryb3Bkb3duW1wiZGVmYXVsdFwiXSwge1xuICAgICAgICAgIG92ZXJsYXk6IG1lbnUsXG4gICAgICAgICAgZ2V0UG9wdXBDb250YWluZXI6IGdldFBvcHVwQ29udGFpbmVyXG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfRG93bk91dGxpbmVkW1wiZGVmYXVsdFwiXSwgbnVsbCkpKSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBhbGxEaXNhYmxlZCA9IGZsYXR0ZWREYXRhLmV2ZXJ5KGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XG4gICAgICAgIHZhciBrZXkgPSBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCk7XG4gICAgICAgIHZhciBjaGVja2JveFByb3BzID0gY2hlY2tib3hQcm9wc01hcC5nZXQoa2V5KSB8fCB7fTtcbiAgICAgICAgcmV0dXJuIGNoZWNrYm94UHJvcHMuZGlzYWJsZWQ7XG4gICAgICB9KTtcbiAgICAgIHRpdGxlID0gIWhpZGVTZWxlY3RBbGwgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc2VsZWN0aW9uXCIpXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfY2hlY2tib3hbXCJkZWZhdWx0XCJdLCB7XG4gICAgICAgIGNoZWNrZWQ6ICFhbGxEaXNhYmxlZCAmJiAhIWZsYXR0ZWREYXRhLmxlbmd0aCAmJiBjaGVja2VkQ3VycmVudEFsbCxcbiAgICAgICAgaW5kZXRlcm1pbmF0ZTogIWNoZWNrZWRDdXJyZW50QWxsICYmIGNoZWNrZWRDdXJyZW50U29tZSxcbiAgICAgICAgb25DaGFuZ2U6IG9uU2VsZWN0QWxsQ2hhbmdlLFxuICAgICAgICBkaXNhYmxlZDogZmxhdHRlZERhdGEubGVuZ3RoID09PSAwIHx8IGFsbERpc2FibGVkLFxuICAgICAgICBza2lwR3JvdXA6IHRydWVcbiAgICAgIH0pLCBjdXN0b21pemVTZWxlY3Rpb25zKTtcbiAgICB9IC8vIEJvZHkgQ2VsbFxuXG5cbiAgICB2YXIgcmVuZGVyQ2VsbDtcblxuICAgIGlmIChzZWxlY3Rpb25UeXBlID09PSAncmFkaW8nKSB7XG4gICAgICByZW5kZXJDZWxsID0gZnVuY3Rpb24gcmVuZGVyQ2VsbChfLCByZWNvcmQsIGluZGV4KSB7XG4gICAgICAgIHZhciBrZXkgPSBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCk7XG4gICAgICAgIHZhciBjaGVja2VkID0ga2V5U2V0LmhhcyhrZXkpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGU6IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yYWRpb1tcImRlZmF1bHRcIl0sICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgY2hlY2tib3hQcm9wc01hcC5nZXQoa2V5KSwge1xuICAgICAgICAgICAgY2hlY2tlZDogY2hlY2tlZCxcbiAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soZSkge1xuICAgICAgICAgICAgICByZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgICAgICAgaWYgKCFrZXlTZXQuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyU2luZ2xlU2VsZWN0aW9uKGtleSwgdHJ1ZSwgW2tleV0sIGV2ZW50Lm5hdGl2ZUV2ZW50KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKSxcbiAgICAgICAgICBjaGVja2VkOiBjaGVja2VkXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZW5kZXJDZWxsID0gZnVuY3Rpb24gcmVuZGVyQ2VsbChfLCByZWNvcmQsIGluZGV4KSB7XG4gICAgICAgIHZhciBfYTtcblxuICAgICAgICB2YXIga2V5ID0gZ2V0Um93S2V5KHJlY29yZCwgaW5kZXgpO1xuICAgICAgICB2YXIgY2hlY2tlZCA9IGtleVNldC5oYXMoa2V5KTtcbiAgICAgICAgdmFyIGluZGV0ZXJtaW5hdGUgPSBkZXJpdmVkSGFsZlNlbGVjdGVkS2V5U2V0LmhhcyhrZXkpO1xuICAgICAgICB2YXIgY2hlY2tib3hQcm9wcyA9IGNoZWNrYm94UHJvcHNNYXAuZ2V0KGtleSk7XG4gICAgICAgIHZhciBtZXJnZWRJbmRldGVybWluYXRlO1xuXG4gICAgICAgIGlmIChleHBhbmRUeXBlID09PSAnbmVzdCcpIHtcbiAgICAgICAgICBtZXJnZWRJbmRldGVybWluYXRlID0gaW5kZXRlcm1pbmF0ZTtcbiAgICAgICAgICAoMCwgX2Rldldhcm5pbmdbXCJkZWZhdWx0XCJdKSh0eXBlb2YgKGNoZWNrYm94UHJvcHMgPT09IG51bGwgfHwgY2hlY2tib3hQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2hlY2tib3hQcm9wcy5pbmRldGVybWluYXRlKSAhPT0gJ2Jvb2xlYW4nLCAnVGFibGUnLCAnc2V0IGBpbmRldGVybWluYXRlYCB1c2luZyBgcm93U2VsZWN0aW9uLmdldENoZWNrYm94UHJvcHNgIGlzIG5vdCBhbGxvd2VkIHdpdGggdHJlZSBzdHJ1Y3R1cmVkIGRhdGFTb3VyY2UuJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWVyZ2VkSW5kZXRlcm1pbmF0ZSA9IChfYSA9IGNoZWNrYm94UHJvcHMgPT09IG51bGwgfHwgY2hlY2tib3hQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2hlY2tib3hQcm9wcy5pbmRldGVybWluYXRlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBpbmRldGVybWluYXRlO1xuICAgICAgICB9IC8vIFJlY29yZCBjaGVja2VkXG5cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGU6IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jaGVja2JveFtcImRlZmF1bHRcIl0sICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgY2hlY2tib3hQcm9wcywge1xuICAgICAgICAgICAgaW5kZXRlcm1pbmF0ZTogbWVyZ2VkSW5kZXRlcm1pbmF0ZSxcbiAgICAgICAgICAgIGNoZWNrZWQ6IGNoZWNrZWQsXG4gICAgICAgICAgICBza2lwR3JvdXA6IHRydWUsXG4gICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKF9yZWYyKSB7XG4gICAgICAgICAgICAgIHZhciBuYXRpdmVFdmVudCA9IF9yZWYyLm5hdGl2ZUV2ZW50O1xuICAgICAgICAgICAgICB2YXIgc2hpZnRLZXkgPSBuYXRpdmVFdmVudC5zaGlmdEtleTtcbiAgICAgICAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgdmFyIGVuZEluZGV4ID0gLTE7IC8vIEdldCByYW5nZSBvZiB0aGlzXG5cbiAgICAgICAgICAgICAgaWYgKHNoaWZ0S2V5ICYmIGNoZWNrU3RyaWN0bHkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcG9pbnRLZXlzID0gbmV3IFNldChbbGFzdFNlbGVjdGVkS2V5LCBrZXldKTtcbiAgICAgICAgICAgICAgICByZWNvcmRLZXlzLnNvbWUoZnVuY3Rpb24gKHJlY29yZEtleSwgcmVjb3JkSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChwb2ludEtleXMuaGFzKHJlY29yZEtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IHJlY29yZEluZGV4O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gcmVjb3JkSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGVuZEluZGV4ICE9PSAtMSAmJiBzdGFydEluZGV4ICE9PSBlbmRJbmRleCAmJiBjaGVja1N0cmljdGx5KSB7XG4gICAgICAgICAgICAgICAgLy8gQmF0Y2ggdXBkYXRlIHNlbGVjdGlvbnNcbiAgICAgICAgICAgICAgICB2YXIgcmFuZ2VLZXlzID0gcmVjb3JkS2V5cy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgIHZhciBjaGFuZ2VkS2V5cyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgIHJhbmdlS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChyZWNvcmRLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleVNldC5oYXMocmVjb3JkS2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWRLZXlzLnB1c2gocmVjb3JkS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICBrZXlTZXRbXCJkZWxldGVcIl0ocmVjb3JkS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJhbmdlS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChyZWNvcmRLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFrZXlTZXQuaGFzKHJlY29yZEtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkS2V5cy5wdXNoKHJlY29yZEtleSk7XG4gICAgICAgICAgICAgICAgICAgICAga2V5U2V0LmFkZChyZWNvcmRLZXkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIga2V5cyA9IEFycmF5LmZyb20oa2V5U2V0KTtcbiAgICAgICAgICAgICAgICBvblNlbGVjdE11bHRpcGxlID09PSBudWxsIHx8IG9uU2VsZWN0TXVsdGlwbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2VsZWN0TXVsdGlwbGUoIWNoZWNrZWQsIGtleXMubWFwKGZ1bmN0aW9uIChyZWNvcmRLZXkpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRSZWNvcmRCeUtleShyZWNvcmRLZXkpO1xuICAgICAgICAgICAgICAgIH0pLCBjaGFuZ2VkS2V5cy5tYXAoZnVuY3Rpb24gKHJlY29yZEtleSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldFJlY29yZEJ5S2V5KHJlY29yZEtleSk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkS2V5cyhrZXlzKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBTaW5nbGUgcmVjb3JkIHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgdmFyIG9yaWdpbkNoZWNrZWRLZXlzID0gZGVyaXZlZFNlbGVjdGVkS2V5cztcblxuICAgICAgICAgICAgICAgIGlmIChjaGVja1N0cmljdGx5KSB7XG4gICAgICAgICAgICAgICAgICB2YXIgY2hlY2tlZEtleXMgPSBjaGVja2VkID8gKDAsIF91dGlsLmFyckRlbCkob3JpZ2luQ2hlY2tlZEtleXMsIGtleSkgOiAoMCwgX3V0aWwuYXJyQWRkKShvcmlnaW5DaGVja2VkS2V5cywga2V5KTtcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJTaW5nbGVTZWxlY3Rpb24oa2V5LCAhY2hlY2tlZCwgY2hlY2tlZEtleXMsIG5hdGl2ZUV2ZW50KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgLy8gQWx3YXlzIGZpbGwgZmlyc3RcbiAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSAoMCwgX2NvbmR1Y3RVdGlsLmNvbmR1Y3RDaGVjaykoW10uY29uY2F0KCgwLCBfdG9Db25zdW1hYmxlQXJyYXkyW1wiZGVmYXVsdFwiXSkob3JpZ2luQ2hlY2tlZEtleXMpLCBba2V5XSksIHRydWUsIGtleUVudGl0aWVzLCBpc0NoZWNrYm94RGlzYWJsZWQpO1xuICAgICAgICAgICAgICAgICAgdmFyIF9jaGVja2VkS2V5cyA9IHJlc3VsdC5jaGVja2VkS2V5cyxcbiAgICAgICAgICAgICAgICAgICAgICBoYWxmQ2hlY2tlZEtleXMgPSByZXN1bHQuaGFsZkNoZWNrZWRLZXlzO1xuICAgICAgICAgICAgICAgICAgdmFyIG5leHRDaGVja2VkS2V5cyA9IF9jaGVja2VkS2V5czsgLy8gSWYgcmVtb3ZlLCB3ZSBkbyBpdCBhZ2FpbiB0byBjb3JyZWN0aW9uXG5cbiAgICAgICAgICAgICAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wS2V5U2V0ID0gbmV3IFNldChfY2hlY2tlZEtleXMpO1xuICAgICAgICAgICAgICAgICAgICB0ZW1wS2V5U2V0W1wiZGVsZXRlXCJdKGtleSk7XG4gICAgICAgICAgICAgICAgICAgIG5leHRDaGVja2VkS2V5cyA9ICgwLCBfY29uZHVjdFV0aWwuY29uZHVjdENoZWNrKShBcnJheS5mcm9tKHRlbXBLZXlTZXQpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgaGFsZkNoZWNrZWRLZXlzOiBoYWxmQ2hlY2tlZEtleXNcbiAgICAgICAgICAgICAgICAgICAgfSwga2V5RW50aXRpZXMsIGlzQ2hlY2tib3hEaXNhYmxlZCkuY2hlY2tlZEtleXM7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJTaW5nbGVTZWxlY3Rpb24oa2V5LCAhY2hlY2tlZCwgbmV4dENoZWNrZWRLZXlzLCBuYXRpdmVFdmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgc2V0TGFzdFNlbGVjdGVkS2V5KGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkpLFxuICAgICAgICAgIGNoZWNrZWQ6IGNoZWNrZWRcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIHJlbmRlclNlbGVjdGlvbkNlbGwgPSBmdW5jdGlvbiByZW5kZXJTZWxlY3Rpb25DZWxsKF8sIHJlY29yZCwgaW5kZXgpIHtcbiAgICAgIHZhciBfcmVuZGVyQ2VsbCA9IHJlbmRlckNlbGwoXywgcmVjb3JkLCBpbmRleCksXG4gICAgICAgICAgbm9kZSA9IF9yZW5kZXJDZWxsLm5vZGUsXG4gICAgICAgICAgY2hlY2tlZCA9IF9yZW5kZXJDZWxsLmNoZWNrZWQ7XG5cbiAgICAgIGlmIChjdXN0b21pemVSZW5kZXJDZWxsKSB7XG4gICAgICAgIHJldHVybiBjdXN0b21pemVSZW5kZXJDZWxsKGNoZWNrZWQsIHJlY29yZCwgaW5kZXgsIG5vZGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9OyAvLyBDb2x1bW5zXG5cblxuICAgIHZhciBzZWxlY3Rpb25Db2x1bW4gPSAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKHtcbiAgICAgIHdpZHRoOiBzZWxlY3Rpb25Db2xXaWR0aCxcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zZWxlY3Rpb24tY29sdW1uXCIpLFxuICAgICAgdGl0bGU6IHJvd1NlbGVjdGlvbi5jb2x1bW5UaXRsZSB8fCB0aXRsZSxcbiAgICAgIHJlbmRlcjogcmVuZGVyU2VsZWN0aW9uQ2VsbFxuICAgIH0sIF9yY1RhYmxlLklOVEVSTkFMX0NPTF9ERUZJTkUsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zZWxlY3Rpb24tY29sXCIpXG4gICAgfSk7XG5cbiAgICBpZiAoZXhwYW5kVHlwZSA9PT0gJ3JvdycgJiYgY29sdW1ucy5sZW5ndGggJiYgIWV4cGFuZEljb25Db2x1bW5JbmRleCkge1xuICAgICAgdmFyIF9jb2x1bW5zID0gKDAsIF90b0FycmF5MltcImRlZmF1bHRcIl0pKGNvbHVtbnMpLFxuICAgICAgICAgIGV4cGFuZENvbHVtbiA9IF9jb2x1bW5zWzBdLFxuICAgICAgICAgIHJlc3RDb2x1bW5zID0gX2NvbHVtbnMuc2xpY2UoMSk7XG5cbiAgICAgIHZhciBzZWxlY3Rpb25GaXhlZCA9IGZpeGVkIHx8IGdldEZpeGVkVHlwZShyZXN0Q29sdW1uc1swXSk7XG5cbiAgICAgIGlmIChzZWxlY3Rpb25GaXhlZCkge1xuICAgICAgICBleHBhbmRDb2x1bW4uZml4ZWQgPSBzZWxlY3Rpb25GaXhlZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFtleHBhbmRDb2x1bW4sICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIHNlbGVjdGlvbkNvbHVtbiksIHtcbiAgICAgICAgZml4ZWQ6IHNlbGVjdGlvbkZpeGVkXG4gICAgICB9KV0uY29uY2F0KCgwLCBfdG9Db25zdW1hYmxlQXJyYXkyW1wiZGVmYXVsdFwiXSkocmVzdENvbHVtbnMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gWygwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIHNlbGVjdGlvbkNvbHVtbiksIHtcbiAgICAgIGZpeGVkOiBmaXhlZCB8fCBnZXRGaXhlZFR5cGUoY29sdW1uc1swXSlcbiAgICB9KV0uY29uY2F0KCgwLCBfdG9Db25zdW1hYmxlQXJyYXkyW1wiZGVmYXVsdFwiXSkoY29sdW1ucykpO1xuICB9LCBbZ2V0Um93S2V5LCBmbGF0dGVkRGF0YSwgcm93U2VsZWN0aW9uLCBkZXJpdmVkU2VsZWN0ZWRLZXlzLCBkZXJpdmVkU2VsZWN0ZWRLZXlTZXQsIGRlcml2ZWRIYWxmU2VsZWN0ZWRLZXlTZXQsIHNlbGVjdGlvbkNvbFdpZHRoLCBtZXJnZWRTZWxlY3Rpb25zLCBleHBhbmRUeXBlLCBsYXN0U2VsZWN0ZWRLZXksIGNoZWNrYm94UHJvcHNNYXAsIG9uU2VsZWN0TXVsdGlwbGUsIHRyaWdnZXJTaW5nbGVTZWxlY3Rpb24sIGlzQ2hlY2tib3hEaXNhYmxlZF0pO1xuICByZXR1cm4gW3RyYW5zZm9ybUNvbHVtbnMsIGRlcml2ZWRTZWxlY3RlZEtleVNldF07XG59IiwidmFyIGFycmF5V2l0aEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRoSG9sZXMuanNcIik7XG5cbnZhciBpdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXkuanNcIik7XG5cbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCIpO1xuXG52YXIgbm9uSXRlcmFibGVSZXN0ID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCIpO1xuXG5mdW5jdGlvbiBfdG9BcnJheShhcnIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKGFycikgfHwgaXRlcmFibGVUb0FycmF5KGFycikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfdG9BcnJheTtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLkludGVybmFsVHJlZU5vZGUgPSB2b2lkIDA7XG5cbnZhciBfZXh0ZW5kczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIikpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIikpO1xuXG52YXIgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIikpO1xuXG52YXIgX29iamVjdFNwcmVhZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFNwcmVhZDJcIikpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIikpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIikpO1xuXG52YXIgX2Fzc2VydFRoaXNJbml0aWFsaXplZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiKSk7XG5cbnZhciBfaW5oZXJpdHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiKSk7XG5cbnZhciBfY3JlYXRlU3VwZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVTdXBlclwiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG52YXIgX2NvbnRleHRUeXBlcyA9IHJlcXVpcmUoXCIuL2NvbnRleHRUeXBlc1wiKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxudmFyIF9JbmRlbnQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL0luZGVudFwiKSk7XG5cbnZhciBfdHJlZVV0aWwgPSByZXF1aXJlKFwiLi91dGlscy90cmVlVXRpbFwiKTtcblxuLy8gQHRzLWlnbm9yZVxudmFyIElDT05fT1BFTiA9ICdvcGVuJztcbnZhciBJQ09OX0NMT1NFID0gJ2Nsb3NlJztcbnZhciBkZWZhdWx0VGl0bGUgPSAnLS0tJztcblxudmFyIEludGVybmFsVHJlZU5vZGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgKDAsIF9pbmhlcml0czIuZGVmYXVsdCkoSW50ZXJuYWxUcmVlTm9kZSwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9ICgwLCBfY3JlYXRlU3VwZXIyLmRlZmF1bHQpKEludGVybmFsVHJlZU5vZGUpO1xuXG4gIGZ1bmN0aW9uIEludGVybmFsVHJlZU5vZGUoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazIuZGVmYXVsdCkodGhpcywgSW50ZXJuYWxUcmVlTm9kZSk7XG4gICAgX3RoaXMgPSBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGRyYWdOb2RlSGlnaGxpZ2h0OiBmYWxzZVxuICAgIH07XG5cbiAgICBfdGhpcy5vblNlbGVjdG9yQ2xpY2sgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgLy8gQ2xpY2sgdHJpZ2dlciBiZWZvcmUgc2VsZWN0L2NoZWNrIG9wZXJhdGlvblxuICAgICAgdmFyIG9uTm9kZUNsaWNrID0gX3RoaXMucHJvcHMuY29udGV4dC5vbk5vZGVDbGljaztcbiAgICAgIG9uTm9kZUNsaWNrKGUsICgwLCBfdHJlZVV0aWwuY29udmVydE5vZGVQcm9wc1RvRXZlbnREYXRhKShfdGhpcy5wcm9wcykpO1xuXG4gICAgICBpZiAoX3RoaXMuaXNTZWxlY3RhYmxlKCkpIHtcbiAgICAgICAgX3RoaXMub25TZWxlY3QoZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5vbkNoZWNrKGUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5vblNlbGVjdG9yRG91YmxlQ2xpY2sgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIG9uTm9kZURvdWJsZUNsaWNrID0gX3RoaXMucHJvcHMuY29udGV4dC5vbk5vZGVEb3VibGVDbGljaztcbiAgICAgIG9uTm9kZURvdWJsZUNsaWNrKGUsICgwLCBfdHJlZVV0aWwuY29udmVydE5vZGVQcm9wc1RvRXZlbnREYXRhKShfdGhpcy5wcm9wcykpO1xuICAgIH07XG5cbiAgICBfdGhpcy5vblNlbGVjdCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoX3RoaXMuaXNEaXNhYmxlZCgpKSByZXR1cm47XG4gICAgICB2YXIgb25Ob2RlU2VsZWN0ID0gX3RoaXMucHJvcHMuY29udGV4dC5vbk5vZGVTZWxlY3Q7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBvbk5vZGVTZWxlY3QoZSwgKDAsIF90cmVlVXRpbC5jb252ZXJ0Tm9kZVByb3BzVG9FdmVudERhdGEpKF90aGlzLnByb3BzKSk7XG4gICAgfTtcblxuICAgIF90aGlzLm9uQ2hlY2sgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKF90aGlzLmlzRGlzYWJsZWQoKSkgcmV0dXJuO1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgZGlzYWJsZUNoZWNrYm94ID0gX3RoaXMkcHJvcHMuZGlzYWJsZUNoZWNrYm94LFxuICAgICAgICAgIGNoZWNrZWQgPSBfdGhpcyRwcm9wcy5jaGVja2VkO1xuICAgICAgdmFyIG9uTm9kZUNoZWNrID0gX3RoaXMucHJvcHMuY29udGV4dC5vbk5vZGVDaGVjaztcbiAgICAgIGlmICghX3RoaXMuaXNDaGVja2FibGUoKSB8fCBkaXNhYmxlQ2hlY2tib3gpIHJldHVybjtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHZhciB0YXJnZXRDaGVja2VkID0gIWNoZWNrZWQ7XG4gICAgICBvbk5vZGVDaGVjayhlLCAoMCwgX3RyZWVVdGlsLmNvbnZlcnROb2RlUHJvcHNUb0V2ZW50RGF0YSkoX3RoaXMucHJvcHMpLCB0YXJnZXRDaGVja2VkKTtcbiAgICB9O1xuXG4gICAgX3RoaXMub25Nb3VzZUVudGVyID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBvbk5vZGVNb3VzZUVudGVyID0gX3RoaXMucHJvcHMuY29udGV4dC5vbk5vZGVNb3VzZUVudGVyO1xuICAgICAgb25Ob2RlTW91c2VFbnRlcihlLCAoMCwgX3RyZWVVdGlsLmNvbnZlcnROb2RlUHJvcHNUb0V2ZW50RGF0YSkoX3RoaXMucHJvcHMpKTtcbiAgICB9O1xuXG4gICAgX3RoaXMub25Nb3VzZUxlYXZlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBvbk5vZGVNb3VzZUxlYXZlID0gX3RoaXMucHJvcHMuY29udGV4dC5vbk5vZGVNb3VzZUxlYXZlO1xuICAgICAgb25Ob2RlTW91c2VMZWF2ZShlLCAoMCwgX3RyZWVVdGlsLmNvbnZlcnROb2RlUHJvcHNUb0V2ZW50RGF0YSkoX3RoaXMucHJvcHMpKTtcbiAgICB9O1xuXG4gICAgX3RoaXMub25Db250ZXh0TWVudSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgb25Ob2RlQ29udGV4dE1lbnUgPSBfdGhpcy5wcm9wcy5jb250ZXh0Lm9uTm9kZUNvbnRleHRNZW51O1xuICAgICAgb25Ob2RlQ29udGV4dE1lbnUoZSwgKDAsIF90cmVlVXRpbC5jb252ZXJ0Tm9kZVByb3BzVG9FdmVudERhdGEpKF90aGlzLnByb3BzKSk7XG4gICAgfTtcblxuICAgIF90aGlzLm9uRHJhZ1N0YXJ0ID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBvbk5vZGVEcmFnU3RhcnQgPSBfdGhpcy5wcm9wcy5jb250ZXh0Lm9uTm9kZURyYWdTdGFydDtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZHJhZ05vZGVIaWdobGlnaHQ6IHRydWVcbiAgICAgIH0pO1xuXG4gICAgICBvbk5vZGVEcmFnU3RhcnQoZSwgKDAsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQyLmRlZmF1bHQpKF90aGlzKSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIGllIHRocm93IGVycm9yXG4gICAgICAgIC8vIGZpcmVmb3gtbmVlZC1pdFxuICAgICAgICBlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCd0ZXh0L3BsYWluJywgJycpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHsvLyBlbXB0eVxuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5vbkRyYWdFbnRlciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgb25Ob2RlRHJhZ0VudGVyID0gX3RoaXMucHJvcHMuY29udGV4dC5vbk5vZGVEcmFnRW50ZXI7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgb25Ob2RlRHJhZ0VudGVyKGUsICgwLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkMi5kZWZhdWx0KShfdGhpcykpO1xuICAgIH07XG5cbiAgICBfdGhpcy5vbkRyYWdPdmVyID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBvbk5vZGVEcmFnT3ZlciA9IF90aGlzLnByb3BzLmNvbnRleHQub25Ob2RlRHJhZ092ZXI7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgb25Ob2RlRHJhZ092ZXIoZSwgKDAsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQyLmRlZmF1bHQpKF90aGlzKSk7XG4gICAgfTtcblxuICAgIF90aGlzLm9uRHJhZ0xlYXZlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBvbk5vZGVEcmFnTGVhdmUgPSBfdGhpcy5wcm9wcy5jb250ZXh0Lm9uTm9kZURyYWdMZWF2ZTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBvbk5vZGVEcmFnTGVhdmUoZSwgKDAsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQyLmRlZmF1bHQpKF90aGlzKSk7XG4gICAgfTtcblxuICAgIF90aGlzLm9uRHJhZ0VuZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgb25Ob2RlRHJhZ0VuZCA9IF90aGlzLnByb3BzLmNvbnRleHQub25Ob2RlRHJhZ0VuZDtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZHJhZ05vZGVIaWdobGlnaHQ6IGZhbHNlXG4gICAgICB9KTtcblxuICAgICAgb25Ob2RlRHJhZ0VuZChlLCAoMCwgX2Fzc2VydFRoaXNJbml0aWFsaXplZDIuZGVmYXVsdCkoX3RoaXMpKTtcbiAgICB9O1xuXG4gICAgX3RoaXMub25Ecm9wID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBvbk5vZGVEcm9wID0gX3RoaXMucHJvcHMuY29udGV4dC5vbk5vZGVEcm9wO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBkcmFnTm9kZUhpZ2hsaWdodDogZmFsc2VcbiAgICAgIH0pO1xuXG4gICAgICBvbk5vZGVEcm9wKGUsICgwLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkMi5kZWZhdWx0KShfdGhpcykpO1xuICAgIH07IC8vIERpc2FibGVkIGl0ZW0gc3RpbGwgY2FuIGJlIHN3aXRjaFxuXG5cbiAgICBfdGhpcy5vbkV4cGFuZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgbG9hZGluZyA9IF90aGlzJHByb3BzMi5sb2FkaW5nLFxuICAgICAgICAgIG9uTm9kZUV4cGFuZCA9IF90aGlzJHByb3BzMi5jb250ZXh0Lm9uTm9kZUV4cGFuZDtcbiAgICAgIGlmIChsb2FkaW5nKSByZXR1cm47XG4gICAgICBvbk5vZGVFeHBhbmQoZSwgKDAsIF90cmVlVXRpbC5jb252ZXJ0Tm9kZVByb3BzVG9FdmVudERhdGEpKF90aGlzLnByb3BzKSk7XG4gICAgfTsgLy8gRHJhZyB1c2FnZVxuXG5cbiAgICBfdGhpcy5zZXRTZWxlY3RIYW5kbGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgX3RoaXMuc2VsZWN0SGFuZGxlID0gbm9kZTtcbiAgICB9O1xuXG4gICAgX3RoaXMuZ2V0Tm9kZVN0YXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGV4cGFuZGVkID0gX3RoaXMucHJvcHMuZXhwYW5kZWQ7XG5cbiAgICAgIGlmIChfdGhpcy5pc0xlYWYoKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4cGFuZGVkID8gSUNPTl9PUEVOIDogSUNPTl9DTE9TRTtcbiAgICB9O1xuXG4gICAgX3RoaXMuaGFzQ2hpbGRyZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgZXZlbnRLZXkgPSBfdGhpcy5wcm9wcy5ldmVudEtleTtcbiAgICAgIHZhciBrZXlFbnRpdGllcyA9IF90aGlzLnByb3BzLmNvbnRleHQua2V5RW50aXRpZXM7XG5cbiAgICAgIHZhciBfcmVmID0ga2V5RW50aXRpZXNbZXZlbnRLZXldIHx8IHt9LFxuICAgICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcblxuICAgICAgcmV0dXJuICEhKGNoaWxkcmVuIHx8IFtdKS5sZW5ndGg7XG4gICAgfTtcblxuICAgIF90aGlzLmlzTGVhZiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBpc0xlYWYgPSBfdGhpcyRwcm9wczMuaXNMZWFmLFxuICAgICAgICAgIGxvYWRlZCA9IF90aGlzJHByb3BzMy5sb2FkZWQ7XG4gICAgICB2YXIgbG9hZERhdGEgPSBfdGhpcy5wcm9wcy5jb250ZXh0LmxvYWREYXRhO1xuXG4gICAgICB2YXIgaGFzQ2hpbGRyZW4gPSBfdGhpcy5oYXNDaGlsZHJlbigpO1xuXG4gICAgICBpZiAoaXNMZWFmID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpc0xlYWYgfHwgIWxvYWREYXRhICYmICFoYXNDaGlsZHJlbiB8fCBsb2FkRGF0YSAmJiBsb2FkZWQgJiYgIWhhc0NoaWxkcmVuO1xuICAgIH07XG5cbiAgICBfdGhpcy5pc0Rpc2FibGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGRpc2FibGVkID0gX3RoaXMucHJvcHMuZGlzYWJsZWQ7XG4gICAgICB2YXIgdHJlZURpc2FibGVkID0gX3RoaXMucHJvcHMuY29udGV4dC5kaXNhYmxlZDtcbiAgICAgIHJldHVybiAhISh0cmVlRGlzYWJsZWQgfHwgZGlzYWJsZWQpO1xuICAgIH07XG5cbiAgICBfdGhpcy5pc0NoZWNrYWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBjaGVja2FibGUgPSBfdGhpcy5wcm9wcy5jaGVja2FibGU7XG4gICAgICB2YXIgdHJlZUNoZWNrYWJsZSA9IF90aGlzLnByb3BzLmNvbnRleHQuY2hlY2thYmxlOyAvLyBSZXR1cm4gZmFsc2UgaWYgdHJlZSBvciB0cmVlTm9kZSBpcyBub3QgY2hlY2thYmxlXG5cbiAgICAgIGlmICghdHJlZUNoZWNrYWJsZSB8fCBjaGVja2FibGUgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gdHJlZUNoZWNrYWJsZTtcbiAgICB9OyAvLyBMb2FkIGRhdGEgdG8gYXZvaWQgZGVmYXVsdCBleHBhbmRlZCB0cmVlIHdpdGhvdXQgZGF0YVxuXG5cbiAgICBfdGhpcy5zeW5jTG9hZERhdGEgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgIHZhciBleHBhbmRlZCA9IHByb3BzLmV4cGFuZGVkLFxuICAgICAgICAgIGxvYWRpbmcgPSBwcm9wcy5sb2FkaW5nLFxuICAgICAgICAgIGxvYWRlZCA9IHByb3BzLmxvYWRlZDtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyRjb250ZXh0ID0gX3RoaXMucHJvcHMuY29udGV4dCxcbiAgICAgICAgICBsb2FkRGF0YSA9IF90aGlzJHByb3BzJGNvbnRleHQubG9hZERhdGEsXG4gICAgICAgICAgb25Ob2RlTG9hZCA9IF90aGlzJHByb3BzJGNvbnRleHQub25Ob2RlTG9hZDtcbiAgICAgIGlmIChsb2FkaW5nKSByZXR1cm47IC8vIHJlYWQgZnJvbSBzdGF0ZSB0byBhdm9pZCBsb2FkRGF0YSBhdCBzYW1lIHRpbWVcblxuICAgICAgaWYgKGxvYWREYXRhICYmIGV4cGFuZGVkICYmICFfdGhpcy5pc0xlYWYoKSkge1xuICAgICAgICAvLyBXZSBuZWVkbid0IHJlbG9hZCBkYXRhIHdoZW4gaGFzIGNoaWxkcmVuIGluIHN5bmMgbG9naWNcbiAgICAgICAgLy8gSXQncyBvbmx5IG5lZWRlZCBpbiBub2RlIGV4cGFuZGVkXG4gICAgICAgIGlmICghX3RoaXMuaGFzQ2hpbGRyZW4oKSAmJiAhbG9hZGVkKSB7XG4gICAgICAgICAgb25Ob2RlTG9hZCgoMCwgX3RyZWVVdGlsLmNvbnZlcnROb2RlUHJvcHNUb0V2ZW50RGF0YSkoX3RoaXMucHJvcHMpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5yZW5kZXJTd2l0Y2hlckljb25Eb20gPSBmdW5jdGlvbiAoaXNMZWFmKSB7XG4gICAgICB2YXIgc3dpdGNoZXJJY29uRnJvbVByb3BzID0gX3RoaXMucHJvcHMuc3dpdGNoZXJJY29uO1xuICAgICAgdmFyIHN3aXRjaGVySWNvbkZyb21DdHggPSBfdGhpcy5wcm9wcy5jb250ZXh0LnN3aXRjaGVySWNvbjtcbiAgICAgIHZhciBzd2l0Y2hlckljb24gPSBzd2l0Y2hlckljb25Gcm9tUHJvcHMgfHwgc3dpdGNoZXJJY29uRnJvbUN0eDsgLy8gaWYgc3dpdGNoZXJJY29uRG9tIGlzIG51bGwsIG5vIHJlbmRlciBzd2l0Y2hlciBzcGFuXG5cbiAgICAgIGlmICh0eXBlb2Ygc3dpdGNoZXJJY29uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBzd2l0Y2hlckljb24oKDAsIF9vYmplY3RTcHJlYWQyLmRlZmF1bHQpKCgwLCBfb2JqZWN0U3ByZWFkMi5kZWZhdWx0KSh7fSwgX3RoaXMucHJvcHMpLCB7fSwge1xuICAgICAgICAgIGlzTGVhZjogaXNMZWFmXG4gICAgICAgIH0pKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN3aXRjaGVySWNvbjtcbiAgICB9OyAvLyBTd2l0Y2hlclxuXG5cbiAgICBfdGhpcy5yZW5kZXJTd2l0Y2hlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBleHBhbmRlZCA9IF90aGlzLnByb3BzLmV4cGFuZGVkO1xuICAgICAgdmFyIHByZWZpeENscyA9IF90aGlzLnByb3BzLmNvbnRleHQucHJlZml4Q2xzO1xuXG4gICAgICBpZiAoX3RoaXMuaXNMZWFmKCkpIHtcbiAgICAgICAgLy8gaWYgc3dpdGNoZXJJY29uRG9tIGlzIG51bGwsIG5vIHJlbmRlciBzd2l0Y2hlciBzcGFuXG4gICAgICAgIHZhciBfc3dpdGNoZXJJY29uRG9tID0gX3RoaXMucmVuZGVyU3dpdGNoZXJJY29uRG9tKHRydWUpO1xuXG4gICAgICAgIHJldHVybiBfc3dpdGNoZXJJY29uRG9tICE9PSBmYWxzZSA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXMuZGVmYXVsdCkoXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zd2l0Y2hlclwiKSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zd2l0Y2hlci1ub29wXCIpKVxuICAgICAgICB9LCBfc3dpdGNoZXJJY29uRG9tKSA6IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciBzd2l0Y2hlckNscyA9ICgwLCBfY2xhc3NuYW1lcy5kZWZhdWx0KShcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXN3aXRjaGVyXCIpLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXN3aXRjaGVyX1wiKS5jb25jYXQoZXhwYW5kZWQgPyBJQ09OX09QRU4gOiBJQ09OX0NMT1NFKSk7XG5cbiAgICAgIHZhciBzd2l0Y2hlckljb25Eb20gPSBfdGhpcy5yZW5kZXJTd2l0Y2hlckljb25Eb20oZmFsc2UpO1xuXG4gICAgICByZXR1cm4gc3dpdGNoZXJJY29uRG9tICE9PSBmYWxzZSA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIG9uQ2xpY2s6IF90aGlzLm9uRXhwYW5kLFxuICAgICAgICBjbGFzc05hbWU6IHN3aXRjaGVyQ2xzXG4gICAgICB9LCBzd2l0Y2hlckljb25Eb20pIDogbnVsbDtcbiAgICB9OyAvLyBDaGVja2JveFxuXG5cbiAgICBfdGhpcy5yZW5kZXJDaGVja2JveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczQgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGVja2VkID0gX3RoaXMkcHJvcHM0LmNoZWNrZWQsXG4gICAgICAgICAgaGFsZkNoZWNrZWQgPSBfdGhpcyRwcm9wczQuaGFsZkNoZWNrZWQsXG4gICAgICAgICAgZGlzYWJsZUNoZWNrYm94ID0gX3RoaXMkcHJvcHM0LmRpc2FibGVDaGVja2JveDtcbiAgICAgIHZhciBwcmVmaXhDbHMgPSBfdGhpcy5wcm9wcy5jb250ZXh0LnByZWZpeENscztcblxuICAgICAgdmFyIGRpc2FibGVkID0gX3RoaXMuaXNEaXNhYmxlZCgpO1xuXG4gICAgICB2YXIgY2hlY2thYmxlID0gX3RoaXMuaXNDaGVja2FibGUoKTtcblxuICAgICAgaWYgKCFjaGVja2FibGUpIHJldHVybiBudWxsOyAvLyBbTGVnYWN5XSBDdXN0b20gZWxlbWVudCBzaG91bGQgYmUgc2VwYXJhdGUgd2l0aCBgY2hlY2thYmxlYCBpbiBmdXR1cmVcblxuICAgICAgdmFyICRjdXN0b20gPSB0eXBlb2YgY2hlY2thYmxlICE9PSAnYm9vbGVhbicgPyBjaGVja2FibGUgOiBudWxsO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzLmRlZmF1bHQpKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY2hlY2tib3hcIiksIGNoZWNrZWQgJiYgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1jaGVja2JveC1jaGVja2VkXCIpLCAhY2hlY2tlZCAmJiBoYWxmQ2hlY2tlZCAmJiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVcIiksIChkaXNhYmxlZCB8fCBkaXNhYmxlQ2hlY2tib3gpICYmIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY2hlY2tib3gtZGlzYWJsZWRcIikpLFxuICAgICAgICBvbkNsaWNrOiBfdGhpcy5vbkNoZWNrXG4gICAgICB9LCAkY3VzdG9tKTtcbiAgICB9O1xuXG4gICAgX3RoaXMucmVuZGVySWNvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBsb2FkaW5nID0gX3RoaXMucHJvcHMubG9hZGluZztcbiAgICAgIHZhciBwcmVmaXhDbHMgPSBfdGhpcy5wcm9wcy5jb250ZXh0LnByZWZpeENscztcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lcy5kZWZhdWx0KShcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWljb25FbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaWNvbl9fXCIpLmNvbmNhdChfdGhpcy5nZXROb2RlU3RhdGUoKSB8fCAnZG9jdScpLCBsb2FkaW5nICYmIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaWNvbl9sb2FkaW5nXCIpKVxuICAgICAgfSk7XG4gICAgfTsgLy8gSWNvbiArIFRpdGxlXG5cblxuICAgIF90aGlzLnJlbmRlclNlbGVjdG9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGRyYWdOb2RlSGlnaGxpZ2h0ID0gX3RoaXMuc3RhdGUuZHJhZ05vZGVIaWdobGlnaHQ7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM1ID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgdGl0bGUgPSBfdGhpcyRwcm9wczUudGl0bGUsXG4gICAgICAgICAgc2VsZWN0ZWQgPSBfdGhpcyRwcm9wczUuc2VsZWN0ZWQsXG4gICAgICAgICAgaWNvbiA9IF90aGlzJHByb3BzNS5pY29uLFxuICAgICAgICAgIGxvYWRpbmcgPSBfdGhpcyRwcm9wczUubG9hZGluZyxcbiAgICAgICAgICBkYXRhID0gX3RoaXMkcHJvcHM1LmRhdGE7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMkY29udGV4dDIgPSBfdGhpcy5wcm9wcy5jb250ZXh0LFxuICAgICAgICAgIHByZWZpeENscyA9IF90aGlzJHByb3BzJGNvbnRleHQyLnByZWZpeENscyxcbiAgICAgICAgICBzaG93SWNvbiA9IF90aGlzJHByb3BzJGNvbnRleHQyLnNob3dJY29uLFxuICAgICAgICAgIHRyZWVJY29uID0gX3RoaXMkcHJvcHMkY29udGV4dDIuaWNvbixcbiAgICAgICAgICBkcmFnZ2FibGUgPSBfdGhpcyRwcm9wcyRjb250ZXh0Mi5kcmFnZ2FibGUsXG4gICAgICAgICAgbG9hZERhdGEgPSBfdGhpcyRwcm9wcyRjb250ZXh0Mi5sb2FkRGF0YSxcbiAgICAgICAgICB0aXRsZVJlbmRlciA9IF90aGlzJHByb3BzJGNvbnRleHQyLnRpdGxlUmVuZGVyO1xuXG4gICAgICB2YXIgZGlzYWJsZWQgPSBfdGhpcy5pc0Rpc2FibGVkKCk7XG5cbiAgICAgIHZhciBtZXJnZWREcmFnZ2FibGUgPSB0eXBlb2YgZHJhZ2dhYmxlID09PSAnZnVuY3Rpb24nID8gZHJhZ2dhYmxlKGRhdGEpIDogZHJhZ2dhYmxlO1xuICAgICAgdmFyIHdyYXBDbGFzcyA9IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbm9kZS1jb250ZW50LXdyYXBwZXJcIik7IC8vIEljb24gLSBTdGlsbCBzaG93IGxvYWRpbmcgaWNvbiB3aGVuIGxvYWRpbmcgd2l0aG91dCBzaG93SWNvblxuXG4gICAgICB2YXIgJGljb247XG5cbiAgICAgIGlmIChzaG93SWNvbikge1xuICAgICAgICB2YXIgY3VycmVudEljb24gPSBpY29uIHx8IHRyZWVJY29uO1xuICAgICAgICAkaWNvbiA9IGN1cnJlbnRJY29uID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lcy5kZWZhdWx0KShcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWljb25FbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaWNvbl9fY3VzdG9taXplXCIpKVxuICAgICAgICB9LCB0eXBlb2YgY3VycmVudEljb24gPT09ICdmdW5jdGlvbicgPyBjdXJyZW50SWNvbihfdGhpcy5wcm9wcykgOiBjdXJyZW50SWNvbikgOiBfdGhpcy5yZW5kZXJJY29uKCk7XG4gICAgICB9IGVsc2UgaWYgKGxvYWREYXRhICYmIGxvYWRpbmcpIHtcbiAgICAgICAgJGljb24gPSBfdGhpcy5yZW5kZXJJY29uKCk7XG4gICAgICB9IC8vIFRpdGxlXG5cblxuICAgICAgdmFyIHRpdGxlTm9kZTtcblxuICAgICAgaWYgKHR5cGVvZiB0aXRsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aXRsZU5vZGUgPSB0aXRsZShkYXRhKTtcbiAgICAgIH0gZWxzZSBpZiAodGl0bGVSZW5kZXIpIHtcbiAgICAgICAgdGl0bGVOb2RlID0gdGl0bGVSZW5kZXIoZGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aXRsZU5vZGUgPSB0aXRsZTtcbiAgICAgIH1cblxuICAgICAgdmFyICR0aXRsZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi10aXRsZVwiKVxuICAgICAgfSwgdGl0bGVOb2RlKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICByZWY6IF90aGlzLnNldFNlbGVjdEhhbmRsZSxcbiAgICAgICAgdGl0bGU6IHR5cGVvZiB0aXRsZSA9PT0gJ3N0cmluZycgPyB0aXRsZSA6ICcnLFxuICAgICAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lcy5kZWZhdWx0KShcIlwiLmNvbmNhdCh3cmFwQ2xhc3MpLCBcIlwiLmNvbmNhdCh3cmFwQ2xhc3MsIFwiLVwiKS5jb25jYXQoX3RoaXMuZ2V0Tm9kZVN0YXRlKCkgfHwgJ25vcm1hbCcpLCAhZGlzYWJsZWQgJiYgKHNlbGVjdGVkIHx8IGRyYWdOb2RlSGlnaGxpZ2h0KSAmJiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLW5vZGUtc2VsZWN0ZWRcIiksICFkaXNhYmxlZCAmJiBtZXJnZWREcmFnZ2FibGUgJiYgJ2RyYWdnYWJsZScpLFxuICAgICAgICBkcmFnZ2FibGU6ICFkaXNhYmxlZCAmJiBtZXJnZWREcmFnZ2FibGUgfHwgdW5kZWZpbmVkLFxuICAgICAgICBcImFyaWEtZ3JhYmJlZFwiOiAhZGlzYWJsZWQgJiYgbWVyZ2VkRHJhZ2dhYmxlIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgb25Nb3VzZUVudGVyOiBfdGhpcy5vbk1vdXNlRW50ZXIsXG4gICAgICAgIG9uTW91c2VMZWF2ZTogX3RoaXMub25Nb3VzZUxlYXZlLFxuICAgICAgICBvbkNvbnRleHRNZW51OiBfdGhpcy5vbkNvbnRleHRNZW51LFxuICAgICAgICBvbkNsaWNrOiBfdGhpcy5vblNlbGVjdG9yQ2xpY2ssXG4gICAgICAgIG9uRG91YmxlQ2xpY2s6IF90aGlzLm9uU2VsZWN0b3JEb3VibGVDbGljayxcbiAgICAgICAgb25EcmFnU3RhcnQ6IG1lcmdlZERyYWdnYWJsZSA/IF90aGlzLm9uRHJhZ1N0YXJ0IDogdW5kZWZpbmVkXG4gICAgICB9LCAkaWNvbiwgJHRpdGxlLCBfdGhpcy5yZW5kZXJEcm9wSW5kaWNhdG9yKCkpO1xuICAgIH07XG5cbiAgICBfdGhpcy5yZW5kZXJEcm9wSW5kaWNhdG9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNiA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIGRpc2FibGVkID0gX3RoaXMkcHJvcHM2LmRpc2FibGVkLFxuICAgICAgICAgIGV2ZW50S2V5ID0gX3RoaXMkcHJvcHM2LmV2ZW50S2V5O1xuICAgICAgdmFyIF90aGlzJHByb3BzJGNvbnRleHQzID0gX3RoaXMucHJvcHMuY29udGV4dCxcbiAgICAgICAgICBkcmFnZ2FibGUgPSBfdGhpcyRwcm9wcyRjb250ZXh0My5kcmFnZ2FibGUsXG4gICAgICAgICAgZHJvcExldmVsT2Zmc2V0ID0gX3RoaXMkcHJvcHMkY29udGV4dDMuZHJvcExldmVsT2Zmc2V0LFxuICAgICAgICAgIGRyb3BQb3NpdGlvbiA9IF90aGlzJHByb3BzJGNvbnRleHQzLmRyb3BQb3NpdGlvbixcbiAgICAgICAgICBwcmVmaXhDbHMgPSBfdGhpcyRwcm9wcyRjb250ZXh0My5wcmVmaXhDbHMsXG4gICAgICAgICAgaW5kZW50ID0gX3RoaXMkcHJvcHMkY29udGV4dDMuaW5kZW50LFxuICAgICAgICAgIGRyb3BJbmRpY2F0b3JSZW5kZXIgPSBfdGhpcyRwcm9wcyRjb250ZXh0My5kcm9wSW5kaWNhdG9yUmVuZGVyLFxuICAgICAgICAgIGRyYWdPdmVyTm9kZUtleSA9IF90aGlzJHByb3BzJGNvbnRleHQzLmRyYWdPdmVyTm9kZUtleSxcbiAgICAgICAgICBkaXJlY3Rpb24gPSBfdGhpcyRwcm9wcyRjb250ZXh0My5kaXJlY3Rpb247XG4gICAgICB2YXIgbWVyZ2VkRHJhZ2dhYmxlID0gZHJhZ2dhYmxlICE9PSBmYWxzZTsgLy8gYWxsb3dEcm9wIGlzIGNhbGN1bGF0ZWQgaW4gVHJlZS50c3gsIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGNhbGMgaXQgaGVyZVxuXG4gICAgICB2YXIgc2hvd0luZGljYXRvciA9ICFkaXNhYmxlZCAmJiBtZXJnZWREcmFnZ2FibGUgJiYgZHJhZ092ZXJOb2RlS2V5ID09PSBldmVudEtleTtcbiAgICAgIHJldHVybiBzaG93SW5kaWNhdG9yID8gZHJvcEluZGljYXRvclJlbmRlcih7XG4gICAgICAgIGRyb3BQb3NpdGlvbjogZHJvcFBvc2l0aW9uLFxuICAgICAgICBkcm9wTGV2ZWxPZmZzZXQ6IGRyb3BMZXZlbE9mZnNldCxcbiAgICAgICAgaW5kZW50OiBpbmRlbnQsXG4gICAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgICBkaXJlY3Rpb246IGRpcmVjdGlvblxuICAgICAgfSkgOiBudWxsO1xuICAgIH07XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH0gLy8gSXNvbW9ycGhpYyBuZWVkbid0IGxvYWQgZGF0YSBpbiBzZXJ2ZXIgc2lkZVxuXG5cbiAgKDAsIF9jcmVhdGVDbGFzczIuZGVmYXVsdCkoSW50ZXJuYWxUcmVlTm9kZSwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB0aGlzLnN5bmNMb2FkRGF0YSh0aGlzLnByb3BzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkVXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgIHRoaXMuc3luY0xvYWREYXRhKHRoaXMucHJvcHMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc1NlbGVjdGFibGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNTZWxlY3RhYmxlKCkge1xuICAgICAgdmFyIHNlbGVjdGFibGUgPSB0aGlzLnByb3BzLnNlbGVjdGFibGU7XG4gICAgICB2YXIgdHJlZVNlbGVjdGFibGUgPSB0aGlzLnByb3BzLmNvbnRleHQuc2VsZWN0YWJsZTsgLy8gSWdub3JlIHdoZW4gc2VsZWN0YWJsZSBpcyB1bmRlZmluZWQgb3IgbnVsbFxuXG4gICAgICBpZiAodHlwZW9mIHNlbGVjdGFibGUgPT09ICdib29sZWFuJykge1xuICAgICAgICByZXR1cm4gc2VsZWN0YWJsZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRyZWVTZWxlY3RhYmxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF9jbGFzc05hbWVzO1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHM3ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBldmVudEtleSA9IF90aGlzJHByb3BzNy5ldmVudEtleSxcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczcuY2xhc3NOYW1lLFxuICAgICAgICAgIHN0eWxlID0gX3RoaXMkcHJvcHM3LnN0eWxlLFxuICAgICAgICAgIGRyYWdPdmVyID0gX3RoaXMkcHJvcHM3LmRyYWdPdmVyLFxuICAgICAgICAgIGRyYWdPdmVyR2FwVG9wID0gX3RoaXMkcHJvcHM3LmRyYWdPdmVyR2FwVG9wLFxuICAgICAgICAgIGRyYWdPdmVyR2FwQm90dG9tID0gX3RoaXMkcHJvcHM3LmRyYWdPdmVyR2FwQm90dG9tLFxuICAgICAgICAgIGlzTGVhZiA9IF90aGlzJHByb3BzNy5pc0xlYWYsXG4gICAgICAgICAgaXNTdGFydCA9IF90aGlzJHByb3BzNy5pc1N0YXJ0LFxuICAgICAgICAgIGlzRW5kID0gX3RoaXMkcHJvcHM3LmlzRW5kLFxuICAgICAgICAgIGV4cGFuZGVkID0gX3RoaXMkcHJvcHM3LmV4cGFuZGVkLFxuICAgICAgICAgIHNlbGVjdGVkID0gX3RoaXMkcHJvcHM3LnNlbGVjdGVkLFxuICAgICAgICAgIGNoZWNrZWQgPSBfdGhpcyRwcm9wczcuY2hlY2tlZCxcbiAgICAgICAgICBoYWxmQ2hlY2tlZCA9IF90aGlzJHByb3BzNy5oYWxmQ2hlY2tlZCxcbiAgICAgICAgICBsb2FkaW5nID0gX3RoaXMkcHJvcHM3LmxvYWRpbmcsXG4gICAgICAgICAgZG9tUmVmID0gX3RoaXMkcHJvcHM3LmRvbVJlZixcbiAgICAgICAgICBhY3RpdmUgPSBfdGhpcyRwcm9wczcuYWN0aXZlLFxuICAgICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczcuZGF0YSxcbiAgICAgICAgICBvbk1vdXNlTW92ZSA9IF90aGlzJHByb3BzNy5vbk1vdXNlTW92ZSxcbiAgICAgICAgICBvdGhlclByb3BzID0gKDAsIF9vYmplY3RXaXRob3V0UHJvcGVydGllczIuZGVmYXVsdCkoX3RoaXMkcHJvcHM3LCBbXCJldmVudEtleVwiLCBcImNsYXNzTmFtZVwiLCBcInN0eWxlXCIsIFwiZHJhZ092ZXJcIiwgXCJkcmFnT3ZlckdhcFRvcFwiLCBcImRyYWdPdmVyR2FwQm90dG9tXCIsIFwiaXNMZWFmXCIsIFwiaXNTdGFydFwiLCBcImlzRW5kXCIsIFwiZXhwYW5kZWRcIiwgXCJzZWxlY3RlZFwiLCBcImNoZWNrZWRcIiwgXCJoYWxmQ2hlY2tlZFwiLCBcImxvYWRpbmdcIiwgXCJkb21SZWZcIiwgXCJhY3RpdmVcIiwgXCJkYXRhXCIsIFwib25Nb3VzZU1vdmVcIl0pO1xuICAgICAgdmFyIF90aGlzJHByb3BzJGNvbnRleHQ0ID0gdGhpcy5wcm9wcy5jb250ZXh0LFxuICAgICAgICAgIHByZWZpeENscyA9IF90aGlzJHByb3BzJGNvbnRleHQ0LnByZWZpeENscyxcbiAgICAgICAgICBmaWx0ZXJUcmVlTm9kZSA9IF90aGlzJHByb3BzJGNvbnRleHQ0LmZpbHRlclRyZWVOb2RlLFxuICAgICAgICAgIGRyYWdnYWJsZSA9IF90aGlzJHByb3BzJGNvbnRleHQ0LmRyYWdnYWJsZSxcbiAgICAgICAgICBrZXlFbnRpdGllcyA9IF90aGlzJHByb3BzJGNvbnRleHQ0LmtleUVudGl0aWVzLFxuICAgICAgICAgIGRyb3BDb250YWluZXJLZXkgPSBfdGhpcyRwcm9wcyRjb250ZXh0NC5kcm9wQ29udGFpbmVyS2V5LFxuICAgICAgICAgIGRyb3BUYXJnZXRLZXkgPSBfdGhpcyRwcm9wcyRjb250ZXh0NC5kcm9wVGFyZ2V0S2V5O1xuICAgICAgdmFyIGRpc2FibGVkID0gdGhpcy5pc0Rpc2FibGVkKCk7XG4gICAgICB2YXIgZGF0YU9yQXJpYUF0dHJpYnV0ZVByb3BzID0gKDAsIF91dGlsLmdldERhdGFBbmRBcmlhKShvdGhlclByb3BzKTtcblxuICAgICAgdmFyIF9yZWYyID0ga2V5RW50aXRpZXNbZXZlbnRLZXldIHx8IHt9LFxuICAgICAgICAgIGxldmVsID0gX3JlZjIubGV2ZWw7XG5cbiAgICAgIHZhciBpc0VuZE5vZGUgPSBpc0VuZFtpc0VuZC5sZW5ndGggLSAxXTtcbiAgICAgIHZhciBtZXJnZWREcmFnZ2FibGUgPSB0eXBlb2YgZHJhZ2dhYmxlID09PSAnZnVuY3Rpb24nID8gZHJhZ2dhYmxlKGRhdGEpIDogZHJhZ2dhYmxlO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsICgwLCBfZXh0ZW5kczIuZGVmYXVsdCkoe1xuICAgICAgICByZWY6IGRvbVJlZixcbiAgICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXMuZGVmYXVsdCkoY2xhc3NOYW1lLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXRyZWVub2RlXCIpLCAoX2NsYXNzTmFtZXMgPSB7fSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdHJlZW5vZGUtZGlzYWJsZWRcIiksIGRpc2FibGVkKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdHJlZW5vZGUtc3dpdGNoZXItXCIpLmNvbmNhdChleHBhbmRlZCA/ICdvcGVuJyA6ICdjbG9zZScpLCAhaXNMZWFmKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdHJlZW5vZGUtY2hlY2tib3gtY2hlY2tlZFwiKSwgY2hlY2tlZCksICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXRyZWVub2RlLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVcIiksIGhhbGZDaGVja2VkKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdHJlZW5vZGUtc2VsZWN0ZWRcIiksIHNlbGVjdGVkKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdHJlZW5vZGUtbG9hZGluZ1wiKSwgbG9hZGluZyksICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXRyZWVub2RlLWFjdGl2ZVwiKSwgYWN0aXZlKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdHJlZW5vZGUtbGVhZi1sYXN0XCIpLCBpc0VuZE5vZGUpLCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfY2xhc3NOYW1lcywgJ2Ryb3AtdGFyZ2V0JywgZHJvcFRhcmdldEtleSA9PT0gZXZlbnRLZXkpLCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfY2xhc3NOYW1lcywgJ2Ryb3AtY29udGFpbmVyJywgZHJvcENvbnRhaW5lcktleSA9PT0gZXZlbnRLZXkpLCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfY2xhc3NOYW1lcywgJ2RyYWctb3ZlcicsICFkaXNhYmxlZCAmJiBkcmFnT3ZlciksICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKF9jbGFzc05hbWVzLCAnZHJhZy1vdmVyLWdhcC10b3AnLCAhZGlzYWJsZWQgJiYgZHJhZ092ZXJHYXBUb3ApLCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfY2xhc3NOYW1lcywgJ2RyYWctb3Zlci1nYXAtYm90dG9tJywgIWRpc2FibGVkICYmIGRyYWdPdmVyR2FwQm90dG9tKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX2NsYXNzTmFtZXMsICdmaWx0ZXItbm9kZScsIGZpbHRlclRyZWVOb2RlICYmIGZpbHRlclRyZWVOb2RlKCgwLCBfdHJlZVV0aWwuY29udmVydE5vZGVQcm9wc1RvRXZlbnREYXRhKSh0aGlzLnByb3BzKSkpLCBfY2xhc3NOYW1lcykpLFxuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIG9uRHJhZ0VudGVyOiBtZXJnZWREcmFnZ2FibGUgPyB0aGlzLm9uRHJhZ0VudGVyIDogdW5kZWZpbmVkLFxuICAgICAgICBvbkRyYWdPdmVyOiBtZXJnZWREcmFnZ2FibGUgPyB0aGlzLm9uRHJhZ092ZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIG9uRHJhZ0xlYXZlOiBtZXJnZWREcmFnZ2FibGUgPyB0aGlzLm9uRHJhZ0xlYXZlIDogdW5kZWZpbmVkLFxuICAgICAgICBvbkRyb3A6IG1lcmdlZERyYWdnYWJsZSA/IHRoaXMub25Ecm9wIDogdW5kZWZpbmVkLFxuICAgICAgICBvbkRyYWdFbmQ6IG1lcmdlZERyYWdnYWJsZSA/IHRoaXMub25EcmFnRW5kIDogdW5kZWZpbmVkLFxuICAgICAgICBvbk1vdXNlTW92ZTogb25Nb3VzZU1vdmVcbiAgICAgIH0sIGRhdGFPckFyaWFBdHRyaWJ1dGVQcm9wcyksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9JbmRlbnQuZGVmYXVsdCwge1xuICAgICAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgICAgbGV2ZWw6IGxldmVsLFxuICAgICAgICBpc1N0YXJ0OiBpc1N0YXJ0LFxuICAgICAgICBpc0VuZDogaXNFbmRcbiAgICAgIH0pLCB0aGlzLnJlbmRlclN3aXRjaGVyKCksIHRoaXMucmVuZGVyQ2hlY2tib3goKSwgdGhpcy5yZW5kZXJTZWxlY3RvcigpKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEludGVybmFsVHJlZU5vZGU7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cbmV4cG9ydHMuSW50ZXJuYWxUcmVlTm9kZSA9IEludGVybmFsVHJlZU5vZGU7XG5cbnZhciBDb250ZXh0VHJlZU5vZGUgPSBmdW5jdGlvbiBDb250ZXh0VHJlZU5vZGUocHJvcHMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jb250ZXh0VHlwZXMuVHJlZUNvbnRleHQuQ29uc3VtZXIsIG51bGwsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEludGVybmFsVHJlZU5vZGUsICgwLCBfZXh0ZW5kczIuZGVmYXVsdCkoe30sIHByb3BzLCB7XG4gICAgICBjb250ZXh0OiBjb250ZXh0XG4gICAgfSkpO1xuICB9KTtcbn07XG5cbkNvbnRleHRUcmVlTm9kZS5kaXNwbGF5TmFtZSA9ICdUcmVlTm9kZSc7XG5Db250ZXh0VHJlZU5vZGUuZGVmYXVsdFByb3BzID0ge1xuICB0aXRsZTogZGVmYXVsdFRpdGxlXG59O1xuQ29udGV4dFRyZWVOb2RlLmlzVHJlZU5vZGUgPSAxO1xudmFyIF9kZWZhdWx0ID0gQ29udGV4dFRyZWVOb2RlO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlV2lsZGNhcmRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLlRyZWVDb250ZXh0ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG4vKipcbiAqIFdlYnBhY2sgaGFzIGJ1ZyBmb3IgaW1wb3J0IGxvb3AsIHdoaWNoIGlzIG5vdCB0aGUgc2FtZSBiZWhhdmlvciBhcyBFUyBtb2R1bGUuXG4gKiBXaGVuIHV0aWwuanMgaW1wb3J0cyB0aGUgVHJlZU5vZGUgZm9yIHRyZWUgZ2VuZXJhdGUgd2lsbCBjYXVzZSB0cmVlQ29udGV4dFR5cGVzIGJlIGVtcHR5LlxuICovXG52YXIgVHJlZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmV4cG9ydHMuVHJlZUNvbnRleHQgPSBUcmVlQ29udGV4dDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG52YXIgSW5kZW50ID0gZnVuY3Rpb24gSW5kZW50KF9yZWYpIHtcbiAgdmFyIHByZWZpeENscyA9IF9yZWYucHJlZml4Q2xzLFxuICAgICAgbGV2ZWwgPSBfcmVmLmxldmVsLFxuICAgICAgaXNTdGFydCA9IF9yZWYuaXNTdGFydCxcbiAgICAgIGlzRW5kID0gX3JlZi5pc0VuZDtcbiAgdmFyIGJhc2VDbGFzc05hbWUgPSBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWluZGVudC11bml0XCIpO1xuICB2YXIgbGlzdCA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGV2ZWw7IGkgKz0gMSkge1xuICAgIHZhciBfY2xhc3NOYW1lcztcblxuICAgIGxpc3QucHVzaCggLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgIGtleTogaSxcbiAgICAgIGNsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzLmRlZmF1bHQpKGJhc2VDbGFzc05hbWUsIChfY2xhc3NOYW1lcyA9IHt9LCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQoYmFzZUNsYXNzTmFtZSwgXCItc3RhcnRcIiksIGlzU3RhcnRbaV0pLCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQoYmFzZUNsYXNzTmFtZSwgXCItZW5kXCIpLCBpc0VuZFtpXSksIF9jbGFzc05hbWVzKSlcbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiLFxuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pbmRlbnRcIilcbiAgfSwgbGlzdCk7XG59O1xuXG52YXIgX2RlZmF1bHQgPSBJbmRlbnQ7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmlzQ2hlY2tEaXNhYmxlZCA9IGlzQ2hlY2tEaXNhYmxlZDtcbmV4cG9ydHMuY29uZHVjdENoZWNrID0gY29uZHVjdENoZWNrO1xuXG52YXIgX3dhcm5pbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYy11dGlsL2xpYi93YXJuaW5nXCIpKTtcblxuZnVuY3Rpb24gcmVtb3ZlRnJvbUNoZWNrZWRLZXlzKGhhbGZDaGVja2VkS2V5cywgY2hlY2tlZEtleXMpIHtcbiAgdmFyIGZpbHRlcmVkS2V5cyA9IG5ldyBTZXQoKTtcbiAgaGFsZkNoZWNrZWRLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGlmICghY2hlY2tlZEtleXMuaGFzKGtleSkpIHtcbiAgICAgIGZpbHRlcmVkS2V5cy5hZGQoa2V5KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZmlsdGVyZWRLZXlzO1xufVxuXG5mdW5jdGlvbiBpc0NoZWNrRGlzYWJsZWQobm9kZSkge1xuICB2YXIgX3JlZiA9IG5vZGUgfHwge30sXG4gICAgICBkaXNhYmxlZCA9IF9yZWYuZGlzYWJsZWQsXG4gICAgICBkaXNhYmxlQ2hlY2tib3ggPSBfcmVmLmRpc2FibGVDaGVja2JveCxcbiAgICAgIGNoZWNrYWJsZSA9IF9yZWYuY2hlY2thYmxlO1xuXG4gIHJldHVybiAhIShkaXNhYmxlZCB8fCBkaXNhYmxlQ2hlY2tib3gpIHx8IGNoZWNrYWJsZSA9PT0gZmFsc2U7XG59IC8vIEZpbGwgbWlzcyBrZXlzXG5cblxuZnVuY3Rpb24gZmlsbENvbmR1Y3RDaGVjayhrZXlzLCBsZXZlbEVudGl0aWVzLCBtYXhMZXZlbCwgc3ludGhldGljR2V0Q2hlY2tEaXNhYmxlZCkge1xuICB2YXIgY2hlY2tlZEtleXMgPSBuZXcgU2V0KGtleXMpO1xuICB2YXIgaGFsZkNoZWNrZWRLZXlzID0gbmV3IFNldCgpOyAvLyBBZGQgY2hlY2tlZCBrZXlzIHRvcCB0byBib3R0b21cblxuICBmb3IgKHZhciBsZXZlbCA9IDA7IGxldmVsIDw9IG1heExldmVsOyBsZXZlbCArPSAxKSB7XG4gICAgdmFyIGVudGl0aWVzID0gbGV2ZWxFbnRpdGllcy5nZXQobGV2ZWwpIHx8IG5ldyBTZXQoKTtcbiAgICBlbnRpdGllcy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRpdHkpIHtcbiAgICAgIHZhciBrZXkgPSBlbnRpdHkua2V5LFxuICAgICAgICAgIG5vZGUgPSBlbnRpdHkubm9kZSxcbiAgICAgICAgICBfZW50aXR5JGNoaWxkcmVuID0gZW50aXR5LmNoaWxkcmVuLFxuICAgICAgICAgIGNoaWxkcmVuID0gX2VudGl0eSRjaGlsZHJlbiA9PT0gdm9pZCAwID8gW10gOiBfZW50aXR5JGNoaWxkcmVuO1xuXG4gICAgICBpZiAoY2hlY2tlZEtleXMuaGFzKGtleSkgJiYgIXN5bnRoZXRpY0dldENoZWNrRGlzYWJsZWQobm9kZSkpIHtcbiAgICAgICAgY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uIChjaGlsZEVudGl0eSkge1xuICAgICAgICAgIHJldHVybiAhc3ludGhldGljR2V0Q2hlY2tEaXNhYmxlZChjaGlsZEVudGl0eS5ub2RlKTtcbiAgICAgICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGRFbnRpdHkpIHtcbiAgICAgICAgICBjaGVja2VkS2V5cy5hZGQoY2hpbGRFbnRpdHkua2V5KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0gLy8gQWRkIGNoZWNrZWQga2V5cyBmcm9tIGJvdHRvbSB0byB0b3BcblxuXG4gIHZhciB2aXNpdGVkS2V5cyA9IG5ldyBTZXQoKTtcblxuICBmb3IgKHZhciBfbGV2ZWwgPSBtYXhMZXZlbDsgX2xldmVsID49IDA7IF9sZXZlbCAtPSAxKSB7XG4gICAgdmFyIF9lbnRpdGllcyA9IGxldmVsRW50aXRpZXMuZ2V0KF9sZXZlbCkgfHwgbmV3IFNldCgpO1xuXG4gICAgX2VudGl0aWVzLmZvckVhY2goZnVuY3Rpb24gKGVudGl0eSkge1xuICAgICAgdmFyIHBhcmVudCA9IGVudGl0eS5wYXJlbnQsXG4gICAgICAgICAgbm9kZSA9IGVudGl0eS5ub2RlOyAvLyBTa2lwIGlmIG5vIG5lZWQgdG8gY2hlY2tcblxuICAgICAgaWYgKHN5bnRoZXRpY0dldENoZWNrRGlzYWJsZWQobm9kZSkgfHwgIWVudGl0eS5wYXJlbnQgfHwgdmlzaXRlZEtleXMuaGFzKGVudGl0eS5wYXJlbnQua2V5KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIFNraXAgaWYgcGFyZW50IGlzIGRpc2FibGVkXG5cblxuICAgICAgaWYgKHN5bnRoZXRpY0dldENoZWNrRGlzYWJsZWQoZW50aXR5LnBhcmVudC5ub2RlKSkge1xuICAgICAgICB2aXNpdGVkS2V5cy5hZGQocGFyZW50LmtleSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGFsbENoZWNrZWQgPSB0cnVlO1xuICAgICAgdmFyIHBhcnRpYWxDaGVja2VkID0gZmFsc2U7XG4gICAgICAocGFyZW50LmNoaWxkcmVuIHx8IFtdKS5maWx0ZXIoZnVuY3Rpb24gKGNoaWxkRW50aXR5KSB7XG4gICAgICAgIHJldHVybiAhc3ludGhldGljR2V0Q2hlY2tEaXNhYmxlZChjaGlsZEVudGl0eS5ub2RlKTtcbiAgICAgIH0pLmZvckVhY2goZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgIHZhciBrZXkgPSBfcmVmMi5rZXk7XG4gICAgICAgIHZhciBjaGVja2VkID0gY2hlY2tlZEtleXMuaGFzKGtleSk7XG5cbiAgICAgICAgaWYgKGFsbENoZWNrZWQgJiYgIWNoZWNrZWQpIHtcbiAgICAgICAgICBhbGxDaGVja2VkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBhcnRpYWxDaGVja2VkICYmIChjaGVja2VkIHx8IGhhbGZDaGVja2VkS2V5cy5oYXMoa2V5KSkpIHtcbiAgICAgICAgICBwYXJ0aWFsQ2hlY2tlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoYWxsQ2hlY2tlZCkge1xuICAgICAgICBjaGVja2VkS2V5cy5hZGQocGFyZW50LmtleSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJ0aWFsQ2hlY2tlZCkge1xuICAgICAgICBoYWxmQ2hlY2tlZEtleXMuYWRkKHBhcmVudC5rZXkpO1xuICAgICAgfVxuXG4gICAgICB2aXNpdGVkS2V5cy5hZGQocGFyZW50LmtleSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNoZWNrZWRLZXlzOiBBcnJheS5mcm9tKGNoZWNrZWRLZXlzKSxcbiAgICBoYWxmQ2hlY2tlZEtleXM6IEFycmF5LmZyb20ocmVtb3ZlRnJvbUNoZWNrZWRLZXlzKGhhbGZDaGVja2VkS2V5cywgY2hlY2tlZEtleXMpKVxuICB9O1xufSAvLyBSZW1vdmUgdXNlbGVzcyBrZXlcblxuXG5mdW5jdGlvbiBjbGVhbkNvbmR1Y3RDaGVjayhrZXlzLCBoYWxmS2V5cywgbGV2ZWxFbnRpdGllcywgbWF4TGV2ZWwsIHN5bnRoZXRpY0dldENoZWNrRGlzYWJsZWQpIHtcbiAgdmFyIGNoZWNrZWRLZXlzID0gbmV3IFNldChrZXlzKTtcbiAgdmFyIGhhbGZDaGVja2VkS2V5cyA9IG5ldyBTZXQoaGFsZktleXMpOyAvLyBSZW1vdmUgY2hlY2tlZCBrZXlzIGZyb20gdG9wIHRvIGJvdHRvbVxuXG4gIGZvciAodmFyIGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4TGV2ZWw7IGxldmVsICs9IDEpIHtcbiAgICB2YXIgZW50aXRpZXMgPSBsZXZlbEVudGl0aWVzLmdldChsZXZlbCkgfHwgbmV3IFNldCgpO1xuICAgIGVudGl0aWVzLmZvckVhY2goZnVuY3Rpb24gKGVudGl0eSkge1xuICAgICAgdmFyIGtleSA9IGVudGl0eS5rZXksXG4gICAgICAgICAgbm9kZSA9IGVudGl0eS5ub2RlLFxuICAgICAgICAgIF9lbnRpdHkkY2hpbGRyZW4yID0gZW50aXR5LmNoaWxkcmVuLFxuICAgICAgICAgIGNoaWxkcmVuID0gX2VudGl0eSRjaGlsZHJlbjIgPT09IHZvaWQgMCA/IFtdIDogX2VudGl0eSRjaGlsZHJlbjI7XG5cbiAgICAgIGlmICghY2hlY2tlZEtleXMuaGFzKGtleSkgJiYgIWhhbGZDaGVja2VkS2V5cy5oYXMoa2V5KSAmJiAhc3ludGhldGljR2V0Q2hlY2tEaXNhYmxlZChub2RlKSkge1xuICAgICAgICBjaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGNoaWxkRW50aXR5KSB7XG4gICAgICAgICAgcmV0dXJuICFzeW50aGV0aWNHZXRDaGVja0Rpc2FibGVkKGNoaWxkRW50aXR5Lm5vZGUpO1xuICAgICAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZEVudGl0eSkge1xuICAgICAgICAgIGNoZWNrZWRLZXlzLmRlbGV0ZShjaGlsZEVudGl0eS5rZXkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSAvLyBSZW1vdmUgY2hlY2tlZCBrZXlzIGZvcm0gYm90dG9tIHRvIHRvcFxuXG5cbiAgaGFsZkNoZWNrZWRLZXlzID0gbmV3IFNldCgpO1xuICB2YXIgdmlzaXRlZEtleXMgPSBuZXcgU2V0KCk7XG5cbiAgZm9yICh2YXIgX2xldmVsMiA9IG1heExldmVsOyBfbGV2ZWwyID49IDA7IF9sZXZlbDIgLT0gMSkge1xuICAgIHZhciBfZW50aXRpZXMyID0gbGV2ZWxFbnRpdGllcy5nZXQoX2xldmVsMikgfHwgbmV3IFNldCgpO1xuXG4gICAgX2VudGl0aWVzMi5mb3JFYWNoKGZ1bmN0aW9uIChlbnRpdHkpIHtcbiAgICAgIHZhciBwYXJlbnQgPSBlbnRpdHkucGFyZW50LFxuICAgICAgICAgIG5vZGUgPSBlbnRpdHkubm9kZTsgLy8gU2tpcCBpZiBubyBuZWVkIHRvIGNoZWNrXG5cbiAgICAgIGlmIChzeW50aGV0aWNHZXRDaGVja0Rpc2FibGVkKG5vZGUpIHx8ICFlbnRpdHkucGFyZW50IHx8IHZpc2l0ZWRLZXlzLmhhcyhlbnRpdHkucGFyZW50LmtleSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBTa2lwIGlmIHBhcmVudCBpcyBkaXNhYmxlZFxuXG5cbiAgICAgIGlmIChzeW50aGV0aWNHZXRDaGVja0Rpc2FibGVkKGVudGl0eS5wYXJlbnQubm9kZSkpIHtcbiAgICAgICAgdmlzaXRlZEtleXMuYWRkKHBhcmVudC5rZXkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBhbGxDaGVja2VkID0gdHJ1ZTtcbiAgICAgIHZhciBwYXJ0aWFsQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgKHBhcmVudC5jaGlsZHJlbiB8fCBbXSkuZmlsdGVyKGZ1bmN0aW9uIChjaGlsZEVudGl0eSkge1xuICAgICAgICByZXR1cm4gIXN5bnRoZXRpY0dldENoZWNrRGlzYWJsZWQoY2hpbGRFbnRpdHkubm9kZSk7XG4gICAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgICB2YXIga2V5ID0gX3JlZjMua2V5O1xuICAgICAgICB2YXIgY2hlY2tlZCA9IGNoZWNrZWRLZXlzLmhhcyhrZXkpO1xuXG4gICAgICAgIGlmIChhbGxDaGVja2VkICYmICFjaGVja2VkKSB7XG4gICAgICAgICAgYWxsQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwYXJ0aWFsQ2hlY2tlZCAmJiAoY2hlY2tlZCB8fCBoYWxmQ2hlY2tlZEtleXMuaGFzKGtleSkpKSB7XG4gICAgICAgICAgcGFydGlhbENoZWNrZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKCFhbGxDaGVja2VkKSB7XG4gICAgICAgIGNoZWNrZWRLZXlzLmRlbGV0ZShwYXJlbnQua2V5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcnRpYWxDaGVja2VkKSB7XG4gICAgICAgIGhhbGZDaGVja2VkS2V5cy5hZGQocGFyZW50LmtleSk7XG4gICAgICB9XG5cbiAgICAgIHZpc2l0ZWRLZXlzLmFkZChwYXJlbnQua2V5KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2hlY2tlZEtleXM6IEFycmF5LmZyb20oY2hlY2tlZEtleXMpLFxuICAgIGhhbGZDaGVja2VkS2V5czogQXJyYXkuZnJvbShyZW1vdmVGcm9tQ2hlY2tlZEtleXMoaGFsZkNoZWNrZWRLZXlzLCBjaGVja2VkS2V5cykpXG4gIH07XG59XG4vKipcbiAqIENvbmR1Y3Qgd2l0aCBrZXlzLlxuICogQHBhcmFtIGtleUxpc3QgY3VycmVudCBrZXkgbGlzdFxuICogQHBhcmFtIGtleUVudGl0aWVzIGtleSAtIGRhdGFFbnRpdHkgbWFwXG4gKiBAcGFyYW0gbW9kZSBgZmlsbGAgdG8gZmlsbCBtaXNzaW5nIGtleSwgYGNsZWFuYCB0byByZW1vdmUgdXNlbGVzcyBrZXlcbiAqL1xuXG5cbmZ1bmN0aW9uIGNvbmR1Y3RDaGVjayhrZXlMaXN0LCBjaGVja2VkLCBrZXlFbnRpdGllcywgZ2V0Q2hlY2tEaXNhYmxlZCkge1xuICB2YXIgd2FybmluZ01pc3NLZXlzID0gW107XG4gIHZhciBzeW50aGV0aWNHZXRDaGVja0Rpc2FibGVkO1xuXG4gIGlmIChnZXRDaGVja0Rpc2FibGVkKSB7XG4gICAgc3ludGhldGljR2V0Q2hlY2tEaXNhYmxlZCA9IGdldENoZWNrRGlzYWJsZWQ7XG4gIH0gZWxzZSB7XG4gICAgc3ludGhldGljR2V0Q2hlY2tEaXNhYmxlZCA9IGlzQ2hlY2tEaXNhYmxlZDtcbiAgfSAvLyBXZSBvbmx5IGhhbmRsZSBleGlzdCBrZXlzXG5cblxuICB2YXIga2V5cyA9IG5ldyBTZXQoa2V5TGlzdC5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBoYXNFbnRpdHkgPSAhIWtleUVudGl0aWVzW2tleV07XG5cbiAgICBpZiAoIWhhc0VudGl0eSkge1xuICAgICAgd2FybmluZ01pc3NLZXlzLnB1c2goa2V5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzRW50aXR5O1xuICB9KSk7XG4gIHZhciBsZXZlbEVudGl0aWVzID0gbmV3IE1hcCgpO1xuICB2YXIgbWF4TGV2ZWwgPSAwOyAvLyBDb252ZXJ0IGVudGl0aWVzIGJ5IGxldmVsIGZvciBjYWxjdWxhdGlvblxuXG4gIE9iamVjdC5rZXlzKGtleUVudGl0aWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgZW50aXR5ID0ga2V5RW50aXRpZXNba2V5XTtcbiAgICB2YXIgbGV2ZWwgPSBlbnRpdHkubGV2ZWw7XG4gICAgdmFyIGxldmVsU2V0ID0gbGV2ZWxFbnRpdGllcy5nZXQobGV2ZWwpO1xuXG4gICAgaWYgKCFsZXZlbFNldCkge1xuICAgICAgbGV2ZWxTZXQgPSBuZXcgU2V0KCk7XG4gICAgICBsZXZlbEVudGl0aWVzLnNldChsZXZlbCwgbGV2ZWxTZXQpO1xuICAgIH1cblxuICAgIGxldmVsU2V0LmFkZChlbnRpdHkpO1xuICAgIG1heExldmVsID0gTWF0aC5tYXgobWF4TGV2ZWwsIGxldmVsKTtcbiAgfSk7XG4gICgwLCBfd2FybmluZy5kZWZhdWx0KSghd2FybmluZ01pc3NLZXlzLmxlbmd0aCwgXCJUcmVlIG1pc3NpbmcgZm9sbG93IGtleXM6IFwiLmNvbmNhdCh3YXJuaW5nTWlzc0tleXMuc2xpY2UoMCwgMTAwKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBcIidcIi5jb25jYXQoa2V5LCBcIidcIik7XG4gIH0pLmpvaW4oJywgJykpKTtcbiAgdmFyIHJlc3VsdDtcblxuICBpZiAoY2hlY2tlZCA9PT0gdHJ1ZSkge1xuICAgIHJlc3VsdCA9IGZpbGxDb25kdWN0Q2hlY2soa2V5cywgbGV2ZWxFbnRpdGllcywgbWF4TGV2ZWwsIHN5bnRoZXRpY0dldENoZWNrRGlzYWJsZWQpO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9IGNsZWFuQ29uZHVjdENoZWNrKGtleXMsIGNoZWNrZWQuaGFsZkNoZWNrZWRLZXlzLCBsZXZlbEVudGl0aWVzLCBtYXhMZXZlbCwgc3ludGhldGljR2V0Q2hlY2tEaXNhYmxlZCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF90eXBlb2YgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9leHRlbmRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKSk7XG5cbnZhciBfc2xpY2VkVG9BcnJheTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIikpO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9FbGxpcHNpc091dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMvRWxsaXBzaXNPdXRsaW5lZFwiKSk7XG5cbnZhciBfYnV0dG9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vYnV0dG9uXCIpKTtcblxudmFyIF9jb25maWdQcm92aWRlciA9IHJlcXVpcmUoXCIuLi9jb25maWctcHJvdmlkZXJcIik7XG5cbnZhciBfZHJvcGRvd24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2Ryb3Bkb3duXCIpKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgX19yZXN0ID0gdm9pZCAwICYmICh2b2lkIDApLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG4gIH1cblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxudmFyIEJ1dHRvbkdyb3VwID0gX2J1dHRvbltcImRlZmF1bHRcIl0uR3JvdXA7XG5cbnZhciBEcm9wZG93bkJ1dHRvbiA9IGZ1bmN0aW9uIERyb3Bkb3duQnV0dG9uKHByb3BzKSB7XG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnRleHQpLFxuICAgICAgZ2V0Q29udGV4dFBvcHVwQ29udGFpbmVyID0gX1JlYWN0JHVzZUNvbnRleHQuZ2V0UG9wdXBDb250YWluZXIsXG4gICAgICBnZXRQcmVmaXhDbHMgPSBfUmVhY3QkdXNlQ29udGV4dC5nZXRQcmVmaXhDbHMsXG4gICAgICBkaXJlY3Rpb24gPSBfUmVhY3QkdXNlQ29udGV4dC5kaXJlY3Rpb247XG5cbiAgdmFyIGN1c3RvbWl6ZVByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgIHR5cGUgPSBwcm9wcy50eXBlLFxuICAgICAgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZCxcbiAgICAgIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLFxuICAgICAgaHRtbFR5cGUgPSBwcm9wcy5odG1sVHlwZSxcbiAgICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICBvdmVybGF5ID0gcHJvcHMub3ZlcmxheSxcbiAgICAgIHRyaWdnZXIgPSBwcm9wcy50cmlnZ2VyLFxuICAgICAgYWxpZ24gPSBwcm9wcy5hbGlnbixcbiAgICAgIHZpc2libGUgPSBwcm9wcy52aXNpYmxlLFxuICAgICAgb25WaXNpYmxlQ2hhbmdlID0gcHJvcHMub25WaXNpYmxlQ2hhbmdlLFxuICAgICAgcGxhY2VtZW50ID0gcHJvcHMucGxhY2VtZW50LFxuICAgICAgZ2V0UG9wdXBDb250YWluZXIgPSBwcm9wcy5nZXRQb3B1cENvbnRhaW5lcixcbiAgICAgIGhyZWYgPSBwcm9wcy5ocmVmLFxuICAgICAgX3Byb3BzJGljb24gPSBwcm9wcy5pY29uLFxuICAgICAgaWNvbiA9IF9wcm9wcyRpY29uID09PSB2b2lkIDAgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfRWxsaXBzaXNPdXRsaW5lZFtcImRlZmF1bHRcIl0sIG51bGwpIDogX3Byb3BzJGljb24sXG4gICAgICB0aXRsZSA9IHByb3BzLnRpdGxlLFxuICAgICAgYnV0dG9uc1JlbmRlciA9IHByb3BzLmJ1dHRvbnNSZW5kZXIsXG4gICAgICBtb3VzZUVudGVyRGVsYXkgPSBwcm9wcy5tb3VzZUVudGVyRGVsYXksXG4gICAgICBtb3VzZUxlYXZlRGVsYXkgPSBwcm9wcy5tb3VzZUxlYXZlRGVsYXksXG4gICAgICByZXN0UHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcInByZWZpeENsc1wiLCBcInR5cGVcIiwgXCJkaXNhYmxlZFwiLCBcIm9uQ2xpY2tcIiwgXCJodG1sVHlwZVwiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwib3ZlcmxheVwiLCBcInRyaWdnZXJcIiwgXCJhbGlnblwiLCBcInZpc2libGVcIiwgXCJvblZpc2libGVDaGFuZ2VcIiwgXCJwbGFjZW1lbnRcIiwgXCJnZXRQb3B1cENvbnRhaW5lclwiLCBcImhyZWZcIiwgXCJpY29uXCIsIFwidGl0bGVcIiwgXCJidXR0b25zUmVuZGVyXCIsIFwibW91c2VFbnRlckRlbGF5XCIsIFwibW91c2VMZWF2ZURlbGF5XCJdKTtcblxuICB2YXIgcHJlZml4Q2xzID0gZ2V0UHJlZml4Q2xzKCdkcm9wZG93bi1idXR0b24nLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICB2YXIgZHJvcGRvd25Qcm9wcyA9IHtcbiAgICBhbGlnbjogYWxpZ24sXG4gICAgb3ZlcmxheTogb3ZlcmxheSxcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgdHJpZ2dlcjogZGlzYWJsZWQgPyBbXSA6IHRyaWdnZXIsXG4gICAgb25WaXNpYmxlQ2hhbmdlOiBvblZpc2libGVDaGFuZ2UsXG4gICAgZ2V0UG9wdXBDb250YWluZXI6IGdldFBvcHVwQ29udGFpbmVyIHx8IGdldENvbnRleHRQb3B1cENvbnRhaW5lcixcbiAgICBtb3VzZUVudGVyRGVsYXk6IG1vdXNlRW50ZXJEZWxheSxcbiAgICBtb3VzZUxlYXZlRGVsYXk6IG1vdXNlTGVhdmVEZWxheVxuICB9O1xuXG4gIGlmICgndmlzaWJsZScgaW4gcHJvcHMpIHtcbiAgICBkcm9wZG93blByb3BzLnZpc2libGUgPSB2aXNpYmxlO1xuICB9XG5cbiAgaWYgKCdwbGFjZW1lbnQnIGluIHByb3BzKSB7XG4gICAgZHJvcGRvd25Qcm9wcy5wbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gIH0gZWxzZSB7XG4gICAgZHJvcGRvd25Qcm9wcy5wbGFjZW1lbnQgPSBkaXJlY3Rpb24gPT09ICdydGwnID8gJ2JvdHRvbUxlZnQnIDogJ2JvdHRvbVJpZ2h0JztcbiAgfVxuXG4gIHZhciBsZWZ0QnV0dG9uID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2J1dHRvbltcImRlZmF1bHRcIl0sIHtcbiAgICB0eXBlOiB0eXBlLFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICBvbkNsaWNrOiBvbkNsaWNrLFxuICAgIGh0bWxUeXBlOiBodG1sVHlwZSxcbiAgICBocmVmOiBocmVmLFxuICAgIHRpdGxlOiB0aXRsZVxuICB9LCBjaGlsZHJlbik7XG4gIHZhciByaWdodEJ1dHRvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9idXR0b25bXCJkZWZhdWx0XCJdLCB7XG4gICAgdHlwZTogdHlwZSxcbiAgICBpY29uOiBpY29uXG4gIH0pO1xuXG4gIHZhciBfYnV0dG9uc1JlbmRlciA9IGJ1dHRvbnNSZW5kZXIoW2xlZnRCdXR0b24sIHJpZ2h0QnV0dG9uXSksXG4gICAgICBfYnV0dG9uc1JlbmRlcjIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyW1wiZGVmYXVsdFwiXSkoX2J1dHRvbnNSZW5kZXIsIDIpLFxuICAgICAgbGVmdEJ1dHRvblRvUmVuZGVyID0gX2J1dHRvbnNSZW5kZXIyWzBdLFxuICAgICAgcmlnaHRCdXR0b25Ub1JlbmRlciA9IF9idXR0b25zUmVuZGVyMlsxXTtcblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQnV0dG9uR3JvdXAsICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgcmVzdFByb3BzLCB7XG4gICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShwcmVmaXhDbHMsIGNsYXNzTmFtZSlcbiAgfSksIGxlZnRCdXR0b25Ub1JlbmRlciwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2Ryb3Bkb3duW1wiZGVmYXVsdFwiXSwgZHJvcGRvd25Qcm9wcywgcmlnaHRCdXR0b25Ub1JlbmRlcikpO1xufTtcblxuRHJvcGRvd25CdXR0b24uX19BTlRfQlVUVE9OID0gdHJ1ZTtcbkRyb3Bkb3duQnV0dG9uLmRlZmF1bHRQcm9wcyA9IHtcbiAgdHlwZTogJ2RlZmF1bHQnLFxuICBidXR0b25zUmVuZGVyOiBmdW5jdGlvbiBidXR0b25zUmVuZGVyKGJ1dHRvbnMpIHtcbiAgICByZXR1cm4gYnV0dG9ucztcbiAgfVxufTtcbnZhciBfZGVmYXVsdCA9IERyb3Bkb3duQnV0dG9uO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCIndXNlIHN0cmljdCc7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG4gIH0pO1xuICBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG4gIFxuICB2YXIgX0VsbGlwc2lzT3V0bGluZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoJy4vbGliL2ljb25zL0VsbGlwc2lzT3V0bGluZWQnKSk7XG4gIFxuICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG4gIFxuICB2YXIgX2RlZmF1bHQgPSBfRWxsaXBzaXNPdXRsaW5lZDtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG4gIG1vZHVsZS5leHBvcnRzID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX0VsbGlwc2lzT3V0bGluZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9pY29ucy1zdmcvbGliL2Fzbi9FbGxpcHNpc091dGxpbmVkXCIpKTtcblxudmFyIF9BbnRkSWNvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2NvbXBvbmVudHMvQW50ZEljb25cIikpO1xuXG4vLyBHRU5FUkFURSBCWSAuL3NjcmlwdHMvZ2VuZXJhdGUudHNcbi8vIERPTiBOT1QgRURJVCBJVCBNQU5VQUxMWVxudmFyIEVsbGlwc2lzT3V0bGluZWQgPSBmdW5jdGlvbiBFbGxpcHNpc091dGxpbmVkKHByb3BzLCByZWYpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9BbnRkSWNvbi5kZWZhdWx0LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywge1xuICAgIHJlZjogcmVmLFxuICAgIGljb246IF9FbGxpcHNpc091dGxpbmVkLmRlZmF1bHRcbiAgfSkpO1xufTtcblxuRWxsaXBzaXNPdXRsaW5lZC5kaXNwbGF5TmFtZSA9ICdFbGxpcHNpc091dGxpbmVkJztcblxudmFyIF9kZWZhdWx0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoRWxsaXBzaXNPdXRsaW5lZCk7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuLy8gVGhpcyBpY29uIGZpbGUgaXMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRWxsaXBzaXNPdXRsaW5lZCA9IHsgXCJpY29uXCI6IHsgXCJ0YWdcIjogXCJzdmdcIiwgXCJhdHRyc1wiOiB7IFwidmlld0JveFwiOiBcIjY0IDY0IDg5NiA4OTZcIiwgXCJmb2N1c2FibGVcIjogXCJmYWxzZVwiIH0sIFwiY2hpbGRyZW5cIjogW3sgXCJ0YWdcIjogXCJwYXRoXCIsIFwiYXR0cnNcIjogeyBcImRcIjogXCJNMTc2IDUxMWE1NiA1NiAwIDEwMTEyIDAgNTYgNTYgMCAxMC0xMTIgMHptMjgwIDBhNTYgNTYgMCAxMDExMiAwIDU2IDU2IDAgMTAtMTEyIDB6bTI4MCAwYTU2IDU2IDAgMTAxMTIgMCA1NiA1NiAwIDEwLTExMiAwelwiIH0gfV0gfSwgXCJuYW1lXCI6IFwiZWxsaXBzaXNcIiwgXCJ0aGVtZVwiOiBcIm91dGxpbmVkXCIgfTtcbmV4cG9ydHMuZGVmYXVsdCA9IEVsbGlwc2lzT3V0bGluZWQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mMyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuY29udmVydExlZ2FjeVByb3BzID0gY29udmVydExlZ2FjeVByb3BzO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfZXh0ZW5kczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIikpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIikpO1xuXG52YXIgX3NsaWNlZFRvQXJyYXkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIpKTtcblxudmFyIF90eXBlb2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIikpO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9vbWl0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtdXRpbC9saWIvb21pdFwiKSk7XG5cbnZhciBfYnV0dG9uR3JvdXAgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2J1dHRvbi1ncm91cFwiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX3dhdmUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9fdXRpbC93YXZlXCIpKTtcblxudmFyIF90eXBlID0gcmVxdWlyZShcIi4uL191dGlsL3R5cGVcIik7XG5cbnZhciBfZGV2V2FybmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL191dGlsL2Rldldhcm5pbmdcIikpO1xuXG52YXIgX1NpemVDb250ZXh0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyL1NpemVDb250ZXh0XCIpKTtcblxudmFyIF9Mb2FkaW5nSWNvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vTG9hZGluZ0ljb25cIikpO1xuXG52YXIgX3JlYWN0Tm9kZSA9IHJlcXVpcmUoXCIuLi9fdXRpbC9yZWFjdE5vZGVcIik7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZjMob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBfX3Jlc3QgPSB2b2lkIDAgJiYgKHZvaWQgMCkuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcbiAgfVxuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvYnV0dG9uLWhhcy10eXBlICovXG5cblxudmFyIHJ4VHdvQ05DaGFyID0gL15bXFx1NGUwMC1cXHU5ZmE1XXsyfSQvO1xudmFyIGlzVHdvQ05DaGFyID0gcnhUd29DTkNoYXIudGVzdC5iaW5kKHJ4VHdvQ05DaGFyKTtcblxuZnVuY3Rpb24gaXNTdHJpbmcoc3RyKSB7XG4gIHJldHVybiB0eXBlb2Ygc3RyID09PSAnc3RyaW5nJztcbn1cblxuZnVuY3Rpb24gaXNVbmJvcmRlcmVkQnV0dG9uVHlwZSh0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSAndGV4dCcgfHwgdHlwZSA9PT0gJ2xpbmsnO1xufSAvLyBJbnNlcnQgb25lIHNwYWNlIGJldHdlZW4gdHdvIGNoaW5lc2UgY2hhcmFjdGVycyBhdXRvbWF0aWNhbGx5LlxuXG5cbmZ1bmN0aW9uIGluc2VydFNwYWNlKGNoaWxkLCBuZWVkSW5zZXJ0ZWQpIHtcbiAgLy8gQ2hlY2sgdGhlIGNoaWxkIGlmIGlzIHVuZGVmaW5lZCBvciBudWxsLlxuICBpZiAoY2hpbGQgPT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBTUEFDRSA9IG5lZWRJbnNlcnRlZCA/ICcgJyA6ICcnOyAvLyBzdHJpY3ROdWxsQ2hlY2tzIG9vcHMuXG5cbiAgaWYgKHR5cGVvZiBjaGlsZCAhPT0gJ3N0cmluZycgJiYgdHlwZW9mIGNoaWxkICE9PSAnbnVtYmVyJyAmJiBpc1N0cmluZyhjaGlsZC50eXBlKSAmJiBpc1R3b0NOQ2hhcihjaGlsZC5wcm9wcy5jaGlsZHJlbikpIHtcbiAgICByZXR1cm4gKDAsIF9yZWFjdE5vZGUuY2xvbmVFbGVtZW50KShjaGlsZCwge1xuICAgICAgY2hpbGRyZW46IGNoaWxkLnByb3BzLmNoaWxkcmVuLnNwbGl0KCcnKS5qb2luKFNQQUNFKVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoaXNUd29DTkNoYXIoY2hpbGQpKSB7XG4gICAgICBjaGlsZCA9IGNoaWxkLnNwbGl0KCcnKS5qb2luKFNQQUNFKTtcbiAgICB9XG5cbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIGNoaWxkKTtcbiAgfVxuXG4gIHJldHVybiBjaGlsZDtcbn1cblxuZnVuY3Rpb24gc3BhY2VDaGlsZHJlbihjaGlsZHJlbiwgbmVlZEluc2VydGVkKSB7XG4gIHZhciBpc1ByZXZDaGlsZFB1cmUgPSBmYWxzZTtcbiAgdmFyIGNoaWxkTGlzdCA9IFtdO1xuICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICB2YXIgdHlwZSA9ICgwLCBfdHlwZW9mMltcImRlZmF1bHRcIl0pKGNoaWxkKTtcbiAgICB2YXIgaXNDdXJyZW50Q2hpbGRQdXJlID0gdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZSA9PT0gJ251bWJlcic7XG5cbiAgICBpZiAoaXNQcmV2Q2hpbGRQdXJlICYmIGlzQ3VycmVudENoaWxkUHVyZSkge1xuICAgICAgdmFyIGxhc3RJbmRleCA9IGNoaWxkTGlzdC5sZW5ndGggLSAxO1xuICAgICAgdmFyIGxhc3RDaGlsZCA9IGNoaWxkTGlzdFtsYXN0SW5kZXhdO1xuICAgICAgY2hpbGRMaXN0W2xhc3RJbmRleF0gPSBcIlwiLmNvbmNhdChsYXN0Q2hpbGQpLmNvbmNhdChjaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoaWxkTGlzdC5wdXNoKGNoaWxkKTtcbiAgICB9XG5cbiAgICBpc1ByZXZDaGlsZFB1cmUgPSBpc0N1cnJlbnRDaGlsZFB1cmU7XG4gIH0pOyAvLyBQYXNzIHRvIFJlYWN0LkNoaWxkcmVuLm1hcCB0byBhdXRvIGZpbGwga2V5XG5cbiAgcmV0dXJuIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZExpc3QsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBpbnNlcnRTcGFjZShjaGlsZCwgbmVlZEluc2VydGVkKTtcbiAgfSk7XG59XG5cbnZhciBCdXR0b25UeXBlcyA9ICgwLCBfdHlwZS50dXBsZSkoJ2RlZmF1bHQnLCAncHJpbWFyeScsICdnaG9zdCcsICdkYXNoZWQnLCAnbGluaycsICd0ZXh0Jyk7XG52YXIgQnV0dG9uU2hhcGVzID0gKDAsIF90eXBlLnR1cGxlKSgnY2lyY2xlJywgJ3JvdW5kJyk7XG52YXIgQnV0dG9uSFRNTFR5cGVzID0gKDAsIF90eXBlLnR1cGxlKSgnc3VibWl0JywgJ2J1dHRvbicsICdyZXNldCcpO1xuXG5mdW5jdGlvbiBjb252ZXJ0TGVnYWN5UHJvcHModHlwZSkge1xuICBpZiAodHlwZSA9PT0gJ2RhbmdlcicpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGFuZ2VyOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogdHlwZVxuICB9O1xufVxuXG52YXIgSW50ZXJuYWxCdXR0b24gPSBmdW5jdGlvbiBJbnRlcm5hbEJ1dHRvbihwcm9wcywgcmVmKSB7XG4gIHZhciBfY2xhc3NOYW1lcztcblxuICB2YXIgX3Byb3BzJGxvYWRpbmcgPSBwcm9wcy5sb2FkaW5nLFxuICAgICAgbG9hZGluZyA9IF9wcm9wcyRsb2FkaW5nID09PSB2b2lkIDAgPyBmYWxzZSA6IF9wcm9wcyRsb2FkaW5nLFxuICAgICAgY3VzdG9taXplUHJlZml4Q2xzID0gcHJvcHMucHJlZml4Q2xzLFxuICAgICAgdHlwZSA9IHByb3BzLnR5cGUsXG4gICAgICBkYW5nZXIgPSBwcm9wcy5kYW5nZXIsXG4gICAgICBzaGFwZSA9IHByb3BzLnNoYXBlLFxuICAgICAgY3VzdG9taXplU2l6ZSA9IHByb3BzLnNpemUsXG4gICAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgaWNvbiA9IHByb3BzLmljb24sXG4gICAgICBfcHJvcHMkZ2hvc3QgPSBwcm9wcy5naG9zdCxcbiAgICAgIGdob3N0ID0gX3Byb3BzJGdob3N0ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9wcm9wcyRnaG9zdCxcbiAgICAgIF9wcm9wcyRibG9jayA9IHByb3BzLmJsb2NrLFxuICAgICAgYmxvY2sgPSBfcHJvcHMkYmxvY2sgPT09IHZvaWQgMCA/IGZhbHNlIDogX3Byb3BzJGJsb2NrLFxuICAgICAgX3Byb3BzJGh0bWxUeXBlID0gcHJvcHMuaHRtbFR5cGUsXG4gICAgICBodG1sVHlwZSA9IF9wcm9wcyRodG1sVHlwZSA9PT0gdm9pZCAwID8gJ2J1dHRvbicgOiBfcHJvcHMkaHRtbFR5cGUsXG4gICAgICByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJsb2FkaW5nXCIsIFwicHJlZml4Q2xzXCIsIFwidHlwZVwiLCBcImRhbmdlclwiLCBcInNoYXBlXCIsIFwic2l6ZVwiLCBcImNsYXNzTmFtZVwiLCBcImNoaWxkcmVuXCIsIFwiaWNvblwiLCBcImdob3N0XCIsIFwiYmxvY2tcIiwgXCJodG1sVHlwZVwiXSk7XG5cbiAgdmFyIHNpemUgPSBSZWFjdC51c2VDb250ZXh0KF9TaXplQ29udGV4dFtcImRlZmF1bHRcIl0pO1xuXG4gIHZhciBfUmVhY3QkdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZSghIWxvYWRpbmcpLFxuICAgICAgX1JlYWN0JHVzZVN0YXRlMiA9ICgwLCBfc2xpY2VkVG9BcnJheTJbXCJkZWZhdWx0XCJdKShfUmVhY3QkdXNlU3RhdGUsIDIpLFxuICAgICAgaW5uZXJMb2FkaW5nID0gX1JlYWN0JHVzZVN0YXRlMlswXSxcbiAgICAgIHNldExvYWRpbmcgPSBfUmVhY3QkdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBfUmVhY3QkdXNlU3RhdGUzID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLFxuICAgICAgX1JlYWN0JHVzZVN0YXRlNCA9ICgwLCBfc2xpY2VkVG9BcnJheTJbXCJkZWZhdWx0XCJdKShfUmVhY3QkdXNlU3RhdGUzLCAyKSxcbiAgICAgIGhhc1R3b0NOQ2hhciA9IF9SZWFjdCR1c2VTdGF0ZTRbMF0sXG4gICAgICBzZXRIYXNUd29DTkNoYXIgPSBfUmVhY3QkdXNlU3RhdGU0WzFdO1xuXG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnRleHQpLFxuICAgICAgZ2V0UHJlZml4Q2xzID0gX1JlYWN0JHVzZUNvbnRleHQuZ2V0UHJlZml4Q2xzLFxuICAgICAgYXV0b0luc2VydFNwYWNlSW5CdXR0b24gPSBfUmVhY3QkdXNlQ29udGV4dC5hdXRvSW5zZXJ0U3BhY2VJbkJ1dHRvbixcbiAgICAgIGRpcmVjdGlvbiA9IF9SZWFjdCR1c2VDb250ZXh0LmRpcmVjdGlvbjtcblxuICB2YXIgYnV0dG9uUmVmID0gcmVmIHx8IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVSZWYoKTtcbiAgdmFyIGRlbGF5VGltZW91dFJlZiA9IFJlYWN0LnVzZVJlZigpO1xuXG4gIHZhciBpc05lZWRJbnNlcnRlZCA9IGZ1bmN0aW9uIGlzTmVlZEluc2VydGVkKCkge1xuICAgIHJldHVybiBSZWFjdC5DaGlsZHJlbi5jb3VudChjaGlsZHJlbikgPT09IDEgJiYgIWljb24gJiYgIWlzVW5ib3JkZXJlZEJ1dHRvblR5cGUodHlwZSk7XG4gIH07XG5cbiAgdmFyIGZpeFR3b0NOQ2hhciA9IGZ1bmN0aW9uIGZpeFR3b0NOQ2hhcigpIHtcbiAgICAvLyBGaXggZm9yIEhPQyB1c2FnZSBsaWtlIDxGb3JtYXRNZXNzYWdlIC8+XG4gICAgaWYgKCFidXR0b25SZWYgfHwgIWJ1dHRvblJlZi5jdXJyZW50IHx8IGF1dG9JbnNlcnRTcGFjZUluQnV0dG9uID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBidXR0b25UZXh0ID0gYnV0dG9uUmVmLmN1cnJlbnQudGV4dENvbnRlbnQ7XG5cbiAgICBpZiAoaXNOZWVkSW5zZXJ0ZWQoKSAmJiBpc1R3b0NOQ2hhcihidXR0b25UZXh0KSkge1xuICAgICAgaWYgKCFoYXNUd29DTkNoYXIpIHtcbiAgICAgICAgc2V0SGFzVHdvQ05DaGFyKHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaGFzVHdvQ05DaGFyKSB7XG4gICAgICBzZXRIYXNUd29DTkNoYXIoZmFsc2UpO1xuICAgIH1cbiAgfTsgLy8gPT09PT09PT09PT09PT09IFVwZGF0ZSBMb2FkaW5nID09PT09PT09PT09PT09PVxuXG5cbiAgdmFyIGxvYWRpbmdPckRlbGF5O1xuXG4gIGlmICgoMCwgX3R5cGVvZjJbXCJkZWZhdWx0XCJdKShsb2FkaW5nKSA9PT0gJ29iamVjdCcgJiYgbG9hZGluZy5kZWxheSkge1xuICAgIGxvYWRpbmdPckRlbGF5ID0gbG9hZGluZy5kZWxheSB8fCB0cnVlO1xuICB9IGVsc2Uge1xuICAgIGxvYWRpbmdPckRlbGF5ID0gISFsb2FkaW5nO1xuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBjbGVhclRpbWVvdXQoZGVsYXlUaW1lb3V0UmVmLmN1cnJlbnQpO1xuXG4gICAgaWYgKHR5cGVvZiBsb2FkaW5nT3JEZWxheSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGRlbGF5VGltZW91dFJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRMb2FkaW5nKGxvYWRpbmdPckRlbGF5KTtcbiAgICAgIH0sIGxvYWRpbmdPckRlbGF5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0TG9hZGluZyhsb2FkaW5nT3JEZWxheSk7XG4gICAgfVxuICB9LCBbbG9hZGluZ09yRGVsYXldKTtcbiAgUmVhY3QudXNlRWZmZWN0KGZpeFR3b0NOQ2hhciwgW2J1dHRvblJlZl0pO1xuXG4gIHZhciBoYW5kbGVDbGljayA9IGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGUpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssXG4gICAgICAgIGRpc2FibGVkID0gcHJvcHMuZGlzYWJsZWQ7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzMwMjA3XG5cbiAgICBpZiAoaW5uZXJMb2FkaW5nIHx8IGRpc2FibGVkKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgKF9hID0gb25DbGljaykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hKGUpO1xuICB9O1xuXG4gICgwLCBfZGV2V2FybmluZ1tcImRlZmF1bHRcIl0pKCEodHlwZW9mIGljb24gPT09ICdzdHJpbmcnICYmIGljb24ubGVuZ3RoID4gMiksICdCdXR0b24nLCBcImBpY29uYCBpcyB1c2luZyBSZWFjdE5vZGUgaW5zdGVhZCBvZiBzdHJpbmcgbmFtaW5nIGluIHY0LiBQbGVhc2UgY2hlY2sgYFwiLmNvbmNhdChpY29uLCBcImAgYXQgaHR0cHM6Ly9hbnQuZGVzaWduL2NvbXBvbmVudHMvaWNvblwiKSk7XG4gICgwLCBfZGV2V2FybmluZ1tcImRlZmF1bHRcIl0pKCEoZ2hvc3QgJiYgaXNVbmJvcmRlcmVkQnV0dG9uVHlwZSh0eXBlKSksICdCdXR0b24nLCBcImBsaW5rYCBvciBgdGV4dGAgYnV0dG9uIGNhbid0IGJlIGEgYGdob3N0YCBidXR0b24uXCIpO1xuICB2YXIgcHJlZml4Q2xzID0gZ2V0UHJlZml4Q2xzKCdidG4nLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICB2YXIgYXV0b0luc2VydFNwYWNlID0gYXV0b0luc2VydFNwYWNlSW5CdXR0b24gIT09IGZhbHNlOyAvLyBsYXJnZSA9PiBsZ1xuICAvLyBzbWFsbCA9PiBzbVxuXG4gIHZhciBzaXplQ2xzID0gJyc7XG5cbiAgc3dpdGNoIChjdXN0b21pemVTaXplIHx8IHNpemUpIHtcbiAgICBjYXNlICdsYXJnZSc6XG4gICAgICBzaXplQ2xzID0gJ2xnJztcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnc21hbGwnOlxuICAgICAgc2l6ZUNscyA9ICdzbSc7XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHZhciBpY29uVHlwZSA9IGlubmVyTG9hZGluZyA/ICdsb2FkaW5nJyA6IGljb247XG4gIHZhciBjbGFzc2VzID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkocHJlZml4Q2xzLCAoX2NsYXNzTmFtZXMgPSB7fSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KHR5cGUpLCB0eXBlKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KHNoYXBlKSwgc2hhcGUpLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLVwiKS5jb25jYXQoc2l6ZUNscyksIHNpemVDbHMpLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWljb24tb25seVwiKSwgIWNoaWxkcmVuICYmIGNoaWxkcmVuICE9PSAwICYmICEhaWNvblR5cGUpLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWJhY2tncm91bmQtZ2hvc3RcIiksIGdob3N0ICYmICFpc1VuYm9yZGVyZWRCdXR0b25UeXBlKHR5cGUpKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1sb2FkaW5nXCIpLCBpbm5lckxvYWRpbmcpLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXR3by1jaGluZXNlLWNoYXJzXCIpLCBoYXNUd29DTkNoYXIgJiYgYXV0b0luc2VydFNwYWNlKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ibG9ja1wiKSwgYmxvY2spLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWRhbmdlcm91c1wiKSwgISFkYW5nZXIpLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXJ0bFwiKSwgZGlyZWN0aW9uID09PSAncnRsJyksIF9jbGFzc05hbWVzKSwgY2xhc3NOYW1lKTtcbiAgdmFyIGljb25Ob2RlID0gaWNvbiAmJiAhaW5uZXJMb2FkaW5nID8gaWNvbiA6IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9Mb2FkaW5nSWNvbltcImRlZmF1bHRcIl0sIHtcbiAgICBleGlzdEljb246ICEhaWNvbixcbiAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICBsb2FkaW5nOiAhIWlubmVyTG9hZGluZ1xuICB9KTtcbiAgdmFyIGtpZHMgPSBjaGlsZHJlbiB8fCBjaGlsZHJlbiA9PT0gMCA/IHNwYWNlQ2hpbGRyZW4oY2hpbGRyZW4sIGlzTmVlZEluc2VydGVkKCkgJiYgYXV0b0luc2VydFNwYWNlKSA6IG51bGw7XG4gIHZhciBsaW5rQnV0dG9uUmVzdFByb3BzID0gKDAsIF9vbWl0W1wiZGVmYXVsdFwiXSkocmVzdCwgWyduYXZpZ2F0ZSddKTtcblxuICBpZiAobGlua0J1dHRvblJlc3RQcm9wcy5ocmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgbGlua0J1dHRvblJlc3RQcm9wcywge1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLFxuICAgICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgICByZWY6IGJ1dHRvblJlZlxuICAgIH0pLCBpY29uTm9kZSwga2lkcyk7XG4gIH1cblxuICB2YXIgYnV0dG9uTm9kZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgcmVzdCwge1xuICAgIHR5cGU6IGh0bWxUeXBlLFxuICAgIGNsYXNzTmFtZTogY2xhc3NlcyxcbiAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICByZWY6IGJ1dHRvblJlZlxuICB9KSwgaWNvbk5vZGUsIGtpZHMpO1xuXG4gIGlmIChpc1VuYm9yZGVyZWRCdXR0b25UeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIGJ1dHRvbk5vZGU7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX3dhdmVbXCJkZWZhdWx0XCJdLCBudWxsLCBidXR0b25Ob2RlKTtcbn07XG5cbnZhciBCdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihJbnRlcm5hbEJ1dHRvbik7XG5CdXR0b24uZGlzcGxheU5hbWUgPSAnQnV0dG9uJztcbkJ1dHRvbi5Hcm91cCA9IF9idXR0b25Hcm91cFtcImRlZmF1bHRcIl07XG5CdXR0b24uX19BTlRfQlVUVE9OID0gdHJ1ZTtcbnZhciBfZGVmYXVsdCA9IEJ1dHRvbjtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX3VucmVhY2hhYmxlRXhjZXB0aW9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vX3V0aWwvdW5yZWFjaGFibGVFeGNlcHRpb25cIikpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBfX3Jlc3QgPSB2b2lkIDAgJiYgKHZvaWQgMCkuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcbiAgfVxuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuXG52YXIgQnV0dG9uR3JvdXAgPSBmdW5jdGlvbiBCdXR0b25Hcm91cChwcm9wcykge1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnN1bWVyLCBudWxsLCBmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBfY2xhc3NOYW1lcztcblxuICAgIHZhciBnZXRQcmVmaXhDbHMgPSBfcmVmLmdldFByZWZpeENscyxcbiAgICAgICAgZGlyZWN0aW9uID0gX3JlZi5kaXJlY3Rpb247XG5cbiAgICB2YXIgY3VzdG9taXplUHJlZml4Q2xzID0gcHJvcHMucHJlZml4Q2xzLFxuICAgICAgICBzaXplID0gcHJvcHMuc2l6ZSxcbiAgICAgICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICBvdGhlcnMgPSBfX3Jlc3QocHJvcHMsIFtcInByZWZpeENsc1wiLCBcInNpemVcIiwgXCJjbGFzc05hbWVcIl0pO1xuXG4gICAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygnYnRuLWdyb3VwJywgY3VzdG9taXplUHJlZml4Q2xzKTsgLy8gbGFyZ2UgPT4gbGdcbiAgICAvLyBzbWFsbCA9PiBzbVxuXG4gICAgdmFyIHNpemVDbHMgPSAnJztcblxuICAgIHN3aXRjaCAoc2l6ZSkge1xuICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgICBzaXplQ2xzID0gJ2xnJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3NtYWxsJzpcbiAgICAgICAgc2l6ZUNscyA9ICdzbSc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdtaWRkbGUnOlxuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLndhcm4obmV3IF91bnJlYWNoYWJsZUV4Y2VwdGlvbltcImRlZmF1bHRcIl0oc2l6ZSkpO1xuICAgIH1cblxuICAgIHZhciBjbGFzc2VzID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkocHJlZml4Q2xzLCAoX2NsYXNzTmFtZXMgPSB7fSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KHNpemVDbHMpLCBzaXplQ2xzKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ydGxcIiksIGRpcmVjdGlvbiA9PT0gJ3J0bCcpLCBfY2xhc3NOYW1lcyksIGNsYXNzTmFtZSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgb3RoZXJzLCB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzZXNcbiAgICB9KSk7XG4gIH0pO1xufTtcblxudmFyIF9kZWZhdWx0ID0gQnV0dG9uR3JvdXA7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIikpO1xuXG52YXIgVW5yZWFjaGFibGVFeGNlcHRpb24gPSBmdW5jdGlvbiBVbnJlYWNoYWJsZUV4Y2VwdGlvbih2YWx1ZSkge1xuICAoMCwgX2NsYXNzQ2FsbENoZWNrMltcImRlZmF1bHRcIl0pKHRoaXMsIFVucmVhY2hhYmxlRXhjZXB0aW9uKTtcbiAgcmV0dXJuIG5ldyBFcnJvcihcInVucmVhY2hhYmxlIGNhc2U6IFwiLmNvbmNhdChKU09OLnN0cmluZ2lmeSh2YWx1ZSkpKTtcbn07XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gVW5yZWFjaGFibGVFeGNlcHRpb247IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIikpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIikpO1xuXG52YXIgX2Fzc2VydFRoaXNJbml0aWFsaXplZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiKSk7XG5cbnZhciBfaW5oZXJpdHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiKSk7XG5cbnZhciBfY3JlYXRlU3VwZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVTdXBlclwiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfZHluYW1pY0NTUyA9IHJlcXVpcmUoXCJyYy11dGlsL2xpYi9Eb20vZHluYW1pY0NTU1wiKTtcblxudmFyIF9yZWYyID0gcmVxdWlyZShcInJjLXV0aWwvbGliL3JlZlwiKTtcblxudmFyIF9yYWYgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3JhZlwiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX3JlYWN0Tm9kZSA9IHJlcXVpcmUoXCIuL3JlYWN0Tm9kZVwiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgc3R5bGVGb3JQc2V1ZG87IC8vIFdoZXJlIGVsIGlzIHRoZSBET00gZWxlbWVudCB5b3UnZCBsaWtlIHRvIHRlc3QgZm9yIHZpc2liaWxpdHlcblxuZnVuY3Rpb24gaXNIaWRkZW4oZWxlbWVudCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICd0ZXN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhZWxlbWVudCB8fCBlbGVtZW50Lm9mZnNldFBhcmVudCA9PT0gbnVsbCB8fCBlbGVtZW50LmhpZGRlbjtcbn1cblxuZnVuY3Rpb24gaXNOb3RHcmV5KGNvbG9yKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWVzY2FwZVxuICB2YXIgbWF0Y2ggPSAoY29sb3IgfHwgJycpLm1hdGNoKC9yZ2JhP1xcKChcXGQqKSwgKFxcZCopLCAoXFxkKikoLCBbXFxkLl0qKT9cXCkvKTtcblxuICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0gJiYgbWF0Y2hbMl0gJiYgbWF0Y2hbM10pIHtcbiAgICByZXR1cm4gIShtYXRjaFsxXSA9PT0gbWF0Y2hbMl0gJiYgbWF0Y2hbMl0gPT09IG1hdGNoWzNdKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG52YXIgV2F2ZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICAoMCwgX2luaGVyaXRzMltcImRlZmF1bHRcIl0pKFdhdmUsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSAoMCwgX2NyZWF0ZVN1cGVyMltcImRlZmF1bHRcIl0pKFdhdmUpO1xuXG4gIGZ1bmN0aW9uIFdhdmUoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazJbXCJkZWZhdWx0XCJdKSh0aGlzLCBXYXZlKTtcbiAgICBfdGhpcyA9IF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIF90aGlzLmNvbnRhaW5lclJlZiA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVSZWYoKTtcbiAgICBfdGhpcy5hbmltYXRpb25TdGFydCA9IGZhbHNlO1xuICAgIF90aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuXG4gICAgX3RoaXMub25DbGljayA9IGZ1bmN0aW9uIChub2RlLCB3YXZlQ29sb3IpIHtcbiAgICAgIHZhciBfYSwgX2I7XG5cbiAgICAgIGlmICghbm9kZSB8fCBpc0hpZGRlbihub2RlKSB8fCBub2RlLmNsYXNzTmFtZS5pbmRleE9mKCctbGVhdmUnKSA+PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGluc2VydEV4dHJhTm9kZSA9IF90aGlzLnByb3BzLmluc2VydEV4dHJhTm9kZTtcbiAgICAgIF90aGlzLmV4dHJhTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgICB2YXIgX2Fzc2VydFRoaXNJbml0aWFsaXplID0gKDAsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQyW1wiZGVmYXVsdFwiXSkoX3RoaXMpLFxuICAgICAgICAgIGV4dHJhTm9kZSA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZS5leHRyYU5vZGU7XG5cbiAgICAgIHZhciBnZXRQcmVmaXhDbHMgPSBfdGhpcy5jb250ZXh0LmdldFByZWZpeENscztcbiAgICAgIGV4dHJhTm9kZS5jbGFzc05hbWUgPSBcIlwiLmNvbmNhdChnZXRQcmVmaXhDbHMoJycpLCBcIi1jbGljay1hbmltYXRpbmctbm9kZVwiKTtcblxuICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBfdGhpcy5nZXRBdHRyaWJ1dGVOYW1lKCk7XG5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICd0cnVlJyk7IC8vIE5vdCB3aGl0ZSBvciB0cmFuc3BhcmVudCBvciBncmV5XG5cbiAgICAgIGlmICh3YXZlQ29sb3IgJiYgd2F2ZUNvbG9yICE9PSAnI2ZmZmZmZicgJiYgd2F2ZUNvbG9yICE9PSAncmdiKDI1NSwgMjU1LCAyNTUpJyAmJiBpc05vdEdyZXkod2F2ZUNvbG9yKSAmJiAhL3JnYmFcXCgoPzpcXGQqLCApezN9MFxcKS8udGVzdCh3YXZlQ29sb3IpICYmIC8vIGFueSB0cmFuc3BhcmVudCByZ2JhIGNvbG9yXG4gICAgICB3YXZlQ29sb3IgIT09ICd0cmFuc3BhcmVudCcpIHtcbiAgICAgICAgZXh0cmFOb2RlLnN0eWxlLmJvcmRlckNvbG9yID0gd2F2ZUNvbG9yO1xuICAgICAgICB2YXIgbm9kZVJvb3QgPSAoKF9hID0gbm9kZS5nZXRSb290Tm9kZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwobm9kZSkpIHx8IG5vZGUub3duZXJEb2N1bWVudDtcbiAgICAgICAgdmFyIG5vZGVCb2R5ID0gbm9kZVJvb3QgaW5zdGFuY2VvZiBEb2N1bWVudCA/IG5vZGVSb290LmJvZHkgOiAoX2IgPSBub2RlUm9vdC5maXJzdENoaWxkKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBub2RlUm9vdDtcbiAgICAgICAgc3R5bGVGb3JQc2V1ZG8gPSAoMCwgX2R5bmFtaWNDU1MudXBkYXRlQ1NTKShcIlxcbiAgICAgIFtcIi5jb25jYXQoZ2V0UHJlZml4Q2xzKCcnKSwgXCItY2xpY2stYW5pbWF0aW5nLXdpdGhvdXQtZXh0cmEtbm9kZT0ndHJ1ZSddOjphZnRlciwgLlwiKS5jb25jYXQoZ2V0UHJlZml4Q2xzKCcnKSwgXCItY2xpY2stYW5pbWF0aW5nLW5vZGUge1xcbiAgICAgICAgLS1hbnRkLXdhdmUtc2hhZG93LWNvbG9yOiBcIikuY29uY2F0KHdhdmVDb2xvciwgXCI7XFxuICAgICAgfVwiKSwgJ2FudGQtd2F2ZScsIHtcbiAgICAgICAgICBjc3A6IF90aGlzLmNzcCxcbiAgICAgICAgICBhdHRhY2hUbzogbm9kZUJvZHlcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbnNlcnRFeHRyYU5vZGUpIHtcbiAgICAgICAgbm9kZS5hcHBlbmRDaGlsZChleHRyYU5vZGUpO1xuICAgICAgfVxuXG4gICAgICBbJ3RyYW5zaXRpb24nLCAnYW5pbWF0aW9uJ10uZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJcIi5jb25jYXQobmFtZSwgXCJzdGFydFwiKSwgX3RoaXMub25UcmFuc2l0aW9uU3RhcnQpO1xuICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJcIi5jb25jYXQobmFtZSwgXCJlbmRcIiksIF90aGlzLm9uVHJhbnNpdGlvbkVuZCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX3RoaXMub25UcmFuc2l0aW9uU3RhcnQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKF90aGlzLmRlc3Ryb3llZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBub2RlID0gX3RoaXMuY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmICghZSB8fCBlLnRhcmdldCAhPT0gbm9kZSB8fCBfdGhpcy5hbmltYXRpb25TdGFydCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIF90aGlzLnJlc2V0RWZmZWN0KG5vZGUpO1xuICAgIH07XG5cbiAgICBfdGhpcy5vblRyYW5zaXRpb25FbmQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKCFlIHx8IGUuYW5pbWF0aW9uTmFtZSAhPT0gJ2ZhZGVFZmZlY3QnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgX3RoaXMucmVzZXRFZmZlY3QoZS50YXJnZXQpO1xuICAgIH07XG5cbiAgICBfdGhpcy5iaW5kQW5pbWF0aW9uRXZlbnQgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgaWYgKCFub2RlIHx8ICFub2RlLmdldEF0dHJpYnV0ZSB8fCBub2RlLmdldEF0dHJpYnV0ZSgnZGlzYWJsZWQnKSB8fCBub2RlLmNsYXNzTmFtZS5pbmRleE9mKCdkaXNhYmxlZCcpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgb25DbGljayA9IGZ1bmN0aW9uIG9uQ2xpY2soZSkge1xuICAgICAgICAvLyBGaXggcmFkaW8gYnV0dG9uIGNsaWNrIHR3aWNlXG4gICAgICAgIGlmIChlLnRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnIHx8IGlzSGlkZGVuKGUudGFyZ2V0KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLnJlc2V0RWZmZWN0KG5vZGUpOyAvLyBHZXQgd2F2ZSBjb2xvciBmcm9tIHRhcmdldFxuXG5cbiAgICAgICAgdmFyIHdhdmVDb2xvciA9IGdldENvbXB1dGVkU3R5bGUobm9kZSkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXRvcC1jb2xvcicpIHx8IC8vIEZpcmVmb3ggQ29tcGF0aWJsZVxuICAgICAgICBnZXRDb21wdXRlZFN0eWxlKG5vZGUpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1jb2xvcicpIHx8IGdldENvbXB1dGVkU3R5bGUobm9kZSkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpO1xuICAgICAgICBfdGhpcy5jbGlja1dhdmVUaW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLm9uQ2xpY2sobm9kZSwgd2F2ZUNvbG9yKTtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgICAgX3JhZltcImRlZmF1bHRcIl0uY2FuY2VsKF90aGlzLmFuaW1hdGlvblN0YXJ0SWQpO1xuXG4gICAgICAgIF90aGlzLmFuaW1hdGlvblN0YXJ0ID0gdHJ1ZTsgLy8gUmVuZGVyIHRvIHRyaWdnZXIgdHJhbnNpdGlvbiBldmVudCBjb3N0IDMgZnJhbWVzLiBMZXQncyBkZWxheSAxMCBmcmFtZXMgdG8gcmVzZXQgdGhpcy5cblxuICAgICAgICBfdGhpcy5hbmltYXRpb25TdGFydElkID0gKDAsIF9yYWZbXCJkZWZhdWx0XCJdKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMuYW5pbWF0aW9uU3RhcnQgPSBmYWxzZTtcbiAgICAgICAgfSwgMTApO1xuICAgICAgfTtcblxuICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uQ2xpY2ssIHRydWUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2FuY2VsOiBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgICAgICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIG9uQ2xpY2ssIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBfdGhpcy5yZW5kZXJXYXZlID0gZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciBjc3AgPSBfcmVmLmNzcDtcbiAgICAgIHZhciBjaGlsZHJlbiA9IF90aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgX3RoaXMuY3NwID0gY3NwO1xuICAgICAgaWYgKCEgLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkgcmV0dXJuIGNoaWxkcmVuO1xuICAgICAgdmFyIHJlZiA9IF90aGlzLmNvbnRhaW5lclJlZjtcblxuICAgICAgaWYgKCgwLCBfcmVmMi5zdXBwb3J0UmVmKShjaGlsZHJlbikpIHtcbiAgICAgICAgcmVmID0gKDAsIF9yZWYyLmNvbXBvc2VSZWYpKGNoaWxkcmVuLnJlZiwgX3RoaXMuY29udGFpbmVyUmVmKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgwLCBfcmVhY3ROb2RlLmNsb25lRWxlbWVudCkoY2hpbGRyZW4sIHtcbiAgICAgICAgcmVmOiByZWZcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMltcImRlZmF1bHRcIl0pKFdhdmUsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdmFyIG5vZGUgPSB0aGlzLmNvbnRhaW5lclJlZi5jdXJyZW50O1xuXG4gICAgICBpZiAoIW5vZGUgfHwgbm9kZS5ub2RlVHlwZSAhPT0gMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW5zdGFuY2UgPSB0aGlzLmJpbmRBbmltYXRpb25FdmVudChub2RlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgICB0aGlzLmluc3RhbmNlLmNhbmNlbCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jbGlja1dhdmVUaW1lb3V0SWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2xpY2tXYXZlVGltZW91dElkKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRBdHRyaWJ1dGVOYW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEF0dHJpYnV0ZU5hbWUoKSB7XG4gICAgICB2YXIgZ2V0UHJlZml4Q2xzID0gdGhpcy5jb250ZXh0LmdldFByZWZpeENscztcbiAgICAgIHZhciBpbnNlcnRFeHRyYU5vZGUgPSB0aGlzLnByb3BzLmluc2VydEV4dHJhTm9kZTtcbiAgICAgIHJldHVybiBpbnNlcnRFeHRyYU5vZGUgPyBcIlwiLmNvbmNhdChnZXRQcmVmaXhDbHMoJycpLCBcIi1jbGljay1hbmltYXRpbmdcIikgOiBcIlwiLmNvbmNhdChnZXRQcmVmaXhDbHMoJycpLCBcIi1jbGljay1hbmltYXRpbmctd2l0aG91dC1leHRyYS1ub2RlXCIpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZXNldEVmZmVjdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldEVmZmVjdChub2RlKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgaWYgKCFub2RlIHx8IG5vZGUgPT09IHRoaXMuZXh0cmFOb2RlIHx8ICEobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGluc2VydEV4dHJhTm9kZSA9IHRoaXMucHJvcHMuaW5zZXJ0RXh0cmFOb2RlO1xuICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSB0aGlzLmdldEF0dHJpYnV0ZU5hbWUoKTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICdmYWxzZScpOyAvLyBlZGdlIGhhcyBidWcgb24gYHJlbW92ZUF0dHJpYnV0ZWAgIzE0NDY2XG5cbiAgICAgIGlmIChzdHlsZUZvclBzZXVkbykge1xuICAgICAgICBzdHlsZUZvclBzZXVkby5pbm5lckhUTUwgPSAnJztcbiAgICAgIH1cblxuICAgICAgaWYgKGluc2VydEV4dHJhTm9kZSAmJiB0aGlzLmV4dHJhTm9kZSAmJiBub2RlLmNvbnRhaW5zKHRoaXMuZXh0cmFOb2RlKSkge1xuICAgICAgICBub2RlLnJlbW92ZUNoaWxkKHRoaXMuZXh0cmFOb2RlKTtcbiAgICAgIH1cblxuICAgICAgWyd0cmFuc2l0aW9uJywgJ2FuaW1hdGlvbiddLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKFwiXCIuY29uY2F0KG5hbWUsIFwic3RhcnRcIiksIF90aGlzMi5vblRyYW5zaXRpb25TdGFydCk7XG4gICAgICAgIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIlwiLmNvbmNhdChuYW1lLCBcImVuZFwiKSwgX3RoaXMyLm9uVHJhbnNpdGlvbkVuZCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfY29uZmlnUHJvdmlkZXIuQ29uZmlnQ29uc3VtZXIsIG51bGwsIHRoaXMucmVuZGVyV2F2ZSk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBXYXZlO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IFdhdmU7XG5XYXZlLmNvbnRleHRUeXBlID0gX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnRleHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB3cmFwcGVyUmFmO1xuXG52YXIgX3JhZiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXV0aWwvbGliL3JhZlwiKSk7XG5cbnZhciBpZCA9IDA7XG52YXIgaWRzID0ge307IC8vIFN1cHBvcnQgY2FsbCByYWYgd2l0aCBkZWxheSBzcGVjaWZpZWQgZnJhbWVcblxuZnVuY3Rpb24gd3JhcHBlclJhZihjYWxsYmFjaykge1xuICB2YXIgZGVsYXlGcmFtZXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDE7XG4gIHZhciBteUlkID0gaWQrKztcbiAgdmFyIHJlc3RGcmFtZXMgPSBkZWxheUZyYW1lcztcblxuICBmdW5jdGlvbiBpbnRlcm5hbENhbGxiYWNrKCkge1xuICAgIHJlc3RGcmFtZXMgLT0gMTtcblxuICAgIGlmIChyZXN0RnJhbWVzIDw9IDApIHtcbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgICBkZWxldGUgaWRzW215SWRdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZHNbbXlJZF0gPSAoMCwgX3JhZltcImRlZmF1bHRcIl0pKGludGVybmFsQ2FsbGJhY2spO1xuICAgIH1cbiAgfVxuXG4gIGlkc1tteUlkXSA9ICgwLCBfcmFmW1wiZGVmYXVsdFwiXSkoaW50ZXJuYWxDYWxsYmFjayk7XG4gIHJldHVybiBteUlkO1xufVxuXG53cmFwcGVyUmFmLmNhbmNlbCA9IGZ1bmN0aW9uIGNhbmNlbChwaWQpIHtcbiAgaWYgKHBpZCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgX3JhZltcImRlZmF1bHRcIl0uY2FuY2VsKGlkc1twaWRdKTtcblxuICBkZWxldGUgaWRzW3BpZF07XG59O1xuXG53cmFwcGVyUmFmLmlkcyA9IGlkczsgLy8gZXhwb3J0IHRoaXMgZm9yIHRlc3QgdXNhZ2UiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9yY01vdGlvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLW1vdGlvblwiKSk7XG5cbnZhciBfTG9hZGluZ091dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMvTG9hZGluZ091dGxpbmVkXCIpKTtcblxudmFyIGdldENvbGxhcHNlZFdpZHRoID0gZnVuY3Rpb24gZ2V0Q29sbGFwc2VkV2lkdGgoKSB7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IDAsXG4gICAgb3BhY2l0eTogMCxcbiAgICB0cmFuc2Zvcm06ICdzY2FsZSgwKSdcbiAgfTtcbn07XG5cbnZhciBnZXRSZWFsV2lkdGggPSBmdW5jdGlvbiBnZXRSZWFsV2lkdGgobm9kZSkge1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiBub2RlLnNjcm9sbFdpZHRoLFxuICAgIG9wYWNpdHk6IDEsXG4gICAgdHJhbnNmb3JtOiAnc2NhbGUoMSknXG4gIH07XG59O1xuXG52YXIgTG9hZGluZ0ljb24gPSBmdW5jdGlvbiBMb2FkaW5nSWNvbihfcmVmKSB7XG4gIHZhciBwcmVmaXhDbHMgPSBfcmVmLnByZWZpeENscyxcbiAgICAgIGxvYWRpbmcgPSBfcmVmLmxvYWRpbmcsXG4gICAgICBleGlzdEljb24gPSBfcmVmLmV4aXN0SWNvbjtcbiAgdmFyIHZpc2libGUgPSAhIWxvYWRpbmc7XG5cbiAgaWYgKGV4aXN0SWNvbikge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX3JlYWN0W1wiZGVmYXVsdFwiXS5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbG9hZGluZy1pY29uXCIpXG4gICAgfSwgLyojX19QVVJFX18qL19yZWFjdFtcImRlZmF1bHRcIl0uY3JlYXRlRWxlbWVudChfTG9hZGluZ091dGxpbmVkW1wiZGVmYXVsdFwiXSwgbnVsbCkpO1xuICB9XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fcmVhY3RbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQoX3JjTW90aW9uW1wiZGVmYXVsdFwiXSwge1xuICAgIHZpc2libGU6IHZpc2libGUgLy8gV2UgZG8gbm90IHJlYWxseSB1c2UgdGhpcyBtb3Rpb25OYW1lXG4gICAgLFxuICAgIG1vdGlvbk5hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbG9hZGluZy1pY29uLW1vdGlvblwiKSxcbiAgICByZW1vdmVPbkxlYXZlOiB0cnVlLFxuICAgIG9uQXBwZWFyU3RhcnQ6IGdldENvbGxhcHNlZFdpZHRoLFxuICAgIG9uQXBwZWFyQWN0aXZlOiBnZXRSZWFsV2lkdGgsXG4gICAgb25FbnRlclN0YXJ0OiBnZXRDb2xsYXBzZWRXaWR0aCxcbiAgICBvbkVudGVyQWN0aXZlOiBnZXRSZWFsV2lkdGgsXG4gICAgb25MZWF2ZVN0YXJ0OiBnZXRSZWFsV2lkdGgsXG4gICAgb25MZWF2ZUFjdGl2ZTogZ2V0Q29sbGFwc2VkV2lkdGhcbiAgfSwgZnVuY3Rpb24gKF9yZWYyLCByZWYpIHtcbiAgICB2YXIgY2xhc3NOYW1lID0gX3JlZjIuY2xhc3NOYW1lLFxuICAgICAgICBzdHlsZSA9IF9yZWYyLnN0eWxlO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX3JlYWN0W1wiZGVmYXVsdFwiXS5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbG9hZGluZy1pY29uXCIpLFxuICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgcmVmOiByZWZcbiAgICB9LCAvKiNfX1BVUkVfXyovX3JlYWN0W1wiZGVmYXVsdFwiXS5jcmVhdGVFbGVtZW50KF9Mb2FkaW5nT3V0bGluZWRbXCJkZWZhdWx0XCJdLCB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZVxuICAgIH0pKTtcbiAgfSk7XG59O1xuXG52YXIgX2RlZmF1bHQgPSBMb2FkaW5nSWNvbjtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIpKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCIpKTtcblxudmFyIF9pbmhlcml0czIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCIpKTtcblxudmFyIF9jcmVhdGVTdXBlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZVN1cGVyXCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9yY01lbnUgPSByZXF1aXJlKFwicmMtbWVudVwiKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfb21pdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXV0aWwvbGliL29taXRcIikpO1xuXG52YXIgX01lbnVDb250ZXh0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9NZW51Q29udGV4dFwiKSk7XG5cbnZhciBfcmVhY3ROb2RlID0gcmVxdWlyZShcIi4uL191dGlsL3JlYWN0Tm9kZVwiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgU3ViTWVudSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICAoMCwgX2luaGVyaXRzMltcImRlZmF1bHRcIl0pKFN1Yk1lbnUsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSAoMCwgX2NyZWF0ZVN1cGVyMltcImRlZmF1bHRcIl0pKFN1Yk1lbnUpO1xuXG4gIGZ1bmN0aW9uIFN1Yk1lbnUoKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazJbXCJkZWZhdWx0XCJdKSh0aGlzLCBTdWJNZW51KTtcbiAgICByZXR1cm4gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMltcImRlZmF1bHRcIl0pKFN1Yk1lbnUsIFt7XG4gICAga2V5OiBcInJlbmRlclRpdGxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclRpdGxlKGlubGluZUNvbGxhcHNlZCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBpY29uID0gX3RoaXMkcHJvcHMuaWNvbixcbiAgICAgICAgICB0aXRsZSA9IF90aGlzJHByb3BzLnRpdGxlLFxuICAgICAgICAgIGxldmVsID0gX3RoaXMkcHJvcHMubGV2ZWwsXG4gICAgICAgICAgcm9vdFByZWZpeENscyA9IF90aGlzJHByb3BzLnJvb3RQcmVmaXhDbHM7XG5cbiAgICAgIGlmICghaWNvbikge1xuICAgICAgICByZXR1cm4gaW5saW5lQ29sbGFwc2VkICYmIGxldmVsID09PSAxICYmIHRpdGxlICYmIHR5cGVvZiB0aXRsZSA9PT0gJ3N0cmluZycgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChyb290UHJlZml4Q2xzLCBcIi1pbmxpbmUtY29sbGFwc2VkLW5vaWNvblwiKVxuICAgICAgICB9LCB0aXRsZS5jaGFyQXQoMCkpIDogdGl0bGU7XG4gICAgICB9IC8vIGlubGluZS1jb2xsYXBzZWQubWQgZGVtbyDkvp3otZYgc3BhbiDmnaXpmpDol4/mloflrZcs5pyJIGljb24g5bGe5oCn77yM5YiZ5YaF6YOo5YyF6KO55LiA5LiqIHNwYW5cbiAgICAgIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9wdWxsLzIzNDU2XG5cblxuICAgICAgdmFyIHRpdGxlSXNTcGFuID0gKDAsIF9yZWFjdE5vZGUuaXNWYWxpZEVsZW1lbnQpKHRpdGxlKSAmJiB0aXRsZS50eXBlID09PSAnc3Bhbic7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGljb24sIHRpdGxlSXNTcGFuID8gdGl0bGUgOiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCwgdGl0bGUpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHJvb3RQcmVmaXhDbHMgPSBfdGhpcyRwcm9wczIucm9vdFByZWZpeENscyxcbiAgICAgICAgICBwb3B1cENsYXNzTmFtZSA9IF90aGlzJHByb3BzMi5wb3B1cENsYXNzTmFtZTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfTWVudUNvbnRleHRbXCJkZWZhdWx0XCJdLkNvbnN1bWVyLCBudWxsLCBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICB2YXIgaW5saW5lQ29sbGFwc2VkID0gX3JlZi5pbmxpbmVDb2xsYXBzZWQsXG4gICAgICAgICAgICBhbnRkTWVudVRoZW1lID0gX3JlZi5hbnRkTWVudVRoZW1lO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX3JjTWVudS5TdWJNZW51LCAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sICgwLCBfb21pdFtcImRlZmF1bHRcIl0pKF90aGlzLnByb3BzLCBbJ2ljb24nXSksIHtcbiAgICAgICAgICB0aXRsZTogX3RoaXMucmVuZGVyVGl0bGUoaW5saW5lQ29sbGFwc2VkKSxcbiAgICAgICAgICBwb3B1cENsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkocm9vdFByZWZpeENscywgXCJcIi5jb25jYXQocm9vdFByZWZpeENscywgXCItXCIpLmNvbmNhdChhbnRkTWVudVRoZW1lKSwgcG9wdXBDbGFzc05hbWUpXG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gU3ViTWVudTtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuU3ViTWVudS5jb250ZXh0VHlwZSA9IF9NZW51Q29udGV4dFtcImRlZmF1bHRcIl07IC8vIGZpeCBpc3N1ZTpodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy84NjY2XG5cblN1Yk1lbnUuaXNTdWJNZW51ID0gMTtcbnZhciBfZGVmYXVsdCA9IFN1Yk1lbnU7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF90eXBlb2YgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9leHRlbmRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKSk7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiKSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiKSk7XG5cbnZhciBfaW5oZXJpdHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiKSk7XG5cbnZhciBfY3JlYXRlU3VwZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVTdXBlclwiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfcmNNZW51ID0gcmVxdWlyZShcInJjLW1lbnVcIik7XG5cbnZhciBfdG9BcnJheSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXV0aWwvbGliL0NoaWxkcmVuL3RvQXJyYXlcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9NZW51Q29udGV4dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vTWVudUNvbnRleHRcIikpO1xuXG52YXIgX3Rvb2x0aXAgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi90b29sdGlwXCIpKTtcblxudmFyIF9TaWRlciA9IHJlcXVpcmUoXCIuLi9sYXlvdXQvU2lkZXJcIik7XG5cbnZhciBfcmVhY3ROb2RlID0gcmVxdWlyZShcIi4uL191dGlsL3JlYWN0Tm9kZVwiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgX19yZXN0ID0gdm9pZCAwICYmICh2b2lkIDApLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG4gIH1cblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxudmFyIE1lbnVJdGVtID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gICgwLCBfaW5oZXJpdHMyW1wiZGVmYXVsdFwiXSkoTWVudUl0ZW0sIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSAoMCwgX2NyZWF0ZVN1cGVyMltcImRlZmF1bHRcIl0pKE1lbnVJdGVtKTtcblxuICBmdW5jdGlvbiBNZW51SXRlbSgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMltcImRlZmF1bHRcIl0pKHRoaXMsIE1lbnVJdGVtKTtcbiAgICBfdGhpcyA9IF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXG4gICAgX3RoaXMucmVuZGVySXRlbSA9IGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICB2YXIgc2lkZXJDb2xsYXBzZWQgPSBfcmVmLnNpZGVyQ29sbGFwc2VkO1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgbGV2ZWwgPSBfdGhpcyRwcm9wcy5sZXZlbCxcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICByb290UHJlZml4Q2xzID0gX3RoaXMkcHJvcHMucm9vdFByZWZpeENscztcblxuICAgICAgdmFyIF9hID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgdGl0bGUgPSBfYS50aXRsZSxcbiAgICAgICAgICBpY29uID0gX2EuaWNvbixcbiAgICAgICAgICBkYW5nZXIgPSBfYS5kYW5nZXIsXG4gICAgICAgICAgcmVzdCA9IF9fcmVzdChfYSwgW1widGl0bGVcIiwgXCJpY29uXCIsIFwiZGFuZ2VyXCJdKTtcblxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9NZW51Q29udGV4dFtcImRlZmF1bHRcIl0uQ29uc3VtZXIsIG51bGwsIGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgICB2YXIgX2NsYXNzTmFtZXM7XG5cbiAgICAgICAgdmFyIGlubGluZUNvbGxhcHNlZCA9IF9yZWYyLmlubGluZUNvbGxhcHNlZCxcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9IF9yZWYyLmRpcmVjdGlvbjtcblxuICAgICAgICB2YXIgX2E7XG5cbiAgICAgICAgdmFyIHRvb2x0aXBUaXRsZSA9IHRpdGxlO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdGl0bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgdG9vbHRpcFRpdGxlID0gbGV2ZWwgPT09IDEgPyBjaGlsZHJlbiA6ICcnO1xuICAgICAgICB9IGVsc2UgaWYgKHRpdGxlID09PSBmYWxzZSkge1xuICAgICAgICAgIHRvb2x0aXBUaXRsZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHRvb2x0aXBQcm9wcyA9IHtcbiAgICAgICAgICB0aXRsZTogdG9vbHRpcFRpdGxlXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKCFzaWRlckNvbGxhcHNlZCAmJiAhaW5saW5lQ29sbGFwc2VkKSB7XG4gICAgICAgICAgdG9vbHRpcFByb3BzLnRpdGxlID0gbnVsbDsgLy8gUmVzZXQgYHZpc2libGVgIHRvIGZpeCBjb250cm9sIG1vZGUgdG9vbHRpcCBkaXNwbGF5IG5vdCBjb3JyZWN0XG4gICAgICAgICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8xNjc0MlxuXG4gICAgICAgICAgdG9vbHRpcFByb3BzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9ICgwLCBfdG9BcnJheVtcImRlZmF1bHRcIl0pKGNoaWxkcmVuKS5sZW5ndGg7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfdG9vbHRpcFtcImRlZmF1bHRcIl0sICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7fSwgdG9vbHRpcFByb3BzLCB7XG4gICAgICAgICAgcGxhY2VtZW50OiBkaXJlY3Rpb24gPT09ICdydGwnID8gJ2xlZnQnIDogJ3JpZ2h0JyxcbiAgICAgICAgICBvdmVybGF5Q2xhc3NOYW1lOiBcIlwiLmNvbmNhdChyb290UHJlZml4Q2xzLCBcIi1pbmxpbmUtY29sbGFwc2VkLXRvb2x0aXBcIilcbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yY01lbnUuSXRlbSwgKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCByZXN0LCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKSgoX2NsYXNzTmFtZXMgPSB7fSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocm9vdFByZWZpeENscywgXCItaXRlbS1kYW5nZXJcIiksIGRhbmdlciksICgwLCBfZGVmaW5lUHJvcGVydHkyW1wiZGVmYXVsdFwiXSkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHJvb3RQcmVmaXhDbHMsIFwiLWl0ZW0tb25seS1jaGlsZFwiKSwgKGljb24gPyBjaGlsZHJlbkxlbmd0aCArIDEgOiBjaGlsZHJlbkxlbmd0aCkgPT09IDEpLCBfY2xhc3NOYW1lcyksIGNsYXNzTmFtZSksXG4gICAgICAgICAgdGl0bGU6IHRpdGxlXG4gICAgICAgIH0pLCAoMCwgX3JlYWN0Tm9kZS5jbG9uZUVsZW1lbnQpKGljb24sIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKCgwLCBfcmVhY3ROb2RlLmlzVmFsaWRFbGVtZW50KShpY29uKSA/IChfYSA9IGljb24ucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGFzc05hbWUgOiAnJywgXCJcIi5jb25jYXQocm9vdFByZWZpeENscywgXCItaXRlbS1pY29uXCIpKVxuICAgICAgICB9KSwgX3RoaXMucmVuZGVySXRlbUNoaWxkcmVuKGlubGluZUNvbGxhcHNlZCkpKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMltcImRlZmF1bHRcIl0pKE1lbnVJdGVtLCBbe1xuICAgIGtleTogXCJyZW5kZXJJdGVtQ2hpbGRyZW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVySXRlbUNoaWxkcmVuKGlubGluZUNvbGxhcHNlZCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgaWNvbiA9IF90aGlzJHByb3BzMi5pY29uLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMyLmNoaWxkcmVuLFxuICAgICAgICAgIGxldmVsID0gX3RoaXMkcHJvcHMyLmxldmVsLFxuICAgICAgICAgIHJvb3RQcmVmaXhDbHMgPSBfdGhpcyRwcm9wczIucm9vdFByZWZpeENsczsgLy8gaW5saW5lLWNvbGxhcHNlZC5tZCBkZW1vIOS+nei1liBzcGFuIOadpemakOiXj+aWh+WtlyzmnIkgaWNvbiDlsZ7mgKfvvIzliJnlhoXpg6jljIXoo7nkuIDkuKogc3BhblxuICAgICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL3B1bGwvMjM0NTZcblxuICAgICAgaWYgKCFpY29uIHx8ICgwLCBfcmVhY3ROb2RlLmlzVmFsaWRFbGVtZW50KShjaGlsZHJlbikgJiYgY2hpbGRyZW4udHlwZSA9PT0gJ3NwYW4nKSB7XG4gICAgICAgIGlmIChjaGlsZHJlbiAmJiBpbmxpbmVDb2xsYXBzZWQgJiYgbGV2ZWwgPT09IDEgJiYgdHlwZW9mIGNoaWxkcmVuID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHJvb3RQcmVmaXhDbHMsIFwiLWlubGluZS1jb2xsYXBzZWQtbm9pY29uXCIpXG4gICAgICAgICAgfSwgY2hpbGRyZW4uY2hhckF0KDApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLCBjaGlsZHJlbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX1NpZGVyLlNpZGVyQ29udGV4dC5Db25zdW1lciwgbnVsbCwgdGhpcy5yZW5kZXJJdGVtKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIE1lbnVJdGVtO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IE1lbnVJdGVtO1xuTWVudUl0ZW0uaXNNZW51SXRlbSA9IHRydWU7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5nZXRPdmVyZmxvd09wdGlvbnMgPSBnZXRPdmVyZmxvd09wdGlvbnM7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IGdldFBsYWNlbWVudHM7XG5cbnZhciBfZXh0ZW5kczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIikpO1xuXG52YXIgX3BsYWNlbWVudHMgPSByZXF1aXJlKFwicmMtdG9vbHRpcC9saWIvcGxhY2VtZW50c1wiKTtcblxudmFyIGF1dG9BZGp1c3RPdmVyZmxvd0VuYWJsZWQgPSB7XG4gIGFkanVzdFg6IDEsXG4gIGFkanVzdFk6IDFcbn07XG52YXIgYXV0b0FkanVzdE92ZXJmbG93RGlzYWJsZWQgPSB7XG4gIGFkanVzdFg6IDAsXG4gIGFkanVzdFk6IDBcbn07XG52YXIgdGFyZ2V0T2Zmc2V0ID0gWzAsIDBdO1xuXG5mdW5jdGlvbiBnZXRPdmVyZmxvd09wdGlvbnMoYXV0b0FkanVzdE92ZXJmbG93KSB7XG4gIGlmICh0eXBlb2YgYXV0b0FkanVzdE92ZXJmbG93ID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gYXV0b0FkanVzdE92ZXJmbG93ID8gYXV0b0FkanVzdE92ZXJmbG93RW5hYmxlZCA6IGF1dG9BZGp1c3RPdmVyZmxvd0Rpc2FibGVkO1xuICB9XG5cbiAgcmV0dXJuICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIGF1dG9BZGp1c3RPdmVyZmxvd0Rpc2FibGVkKSwgYXV0b0FkanVzdE92ZXJmbG93KTtcbn1cblxuZnVuY3Rpb24gZ2V0UGxhY2VtZW50cyhjb25maWcpIHtcbiAgdmFyIF9jb25maWckYXJyb3dXaWR0aCA9IGNvbmZpZy5hcnJvd1dpZHRoLFxuICAgICAgYXJyb3dXaWR0aCA9IF9jb25maWckYXJyb3dXaWR0aCA9PT0gdm9pZCAwID8gNSA6IF9jb25maWckYXJyb3dXaWR0aCxcbiAgICAgIF9jb25maWckaG9yaXpvbnRhbEFyciA9IGNvbmZpZy5ob3Jpem9udGFsQXJyb3dTaGlmdCxcbiAgICAgIGhvcml6b250YWxBcnJvd1NoaWZ0ID0gX2NvbmZpZyRob3Jpem9udGFsQXJyID09PSB2b2lkIDAgPyAxNiA6IF9jb25maWckaG9yaXpvbnRhbEFycixcbiAgICAgIF9jb25maWckdmVydGljYWxBcnJvdyA9IGNvbmZpZy52ZXJ0aWNhbEFycm93U2hpZnQsXG4gICAgICB2ZXJ0aWNhbEFycm93U2hpZnQgPSBfY29uZmlnJHZlcnRpY2FsQXJyb3cgPT09IHZvaWQgMCA/IDggOiBfY29uZmlnJHZlcnRpY2FsQXJyb3csXG4gICAgICBhdXRvQWRqdXN0T3ZlcmZsb3cgPSBjb25maWcuYXV0b0FkanVzdE92ZXJmbG93O1xuICB2YXIgcGxhY2VtZW50TWFwID0ge1xuICAgIGxlZnQ6IHtcbiAgICAgIHBvaW50czogWydjcicsICdjbCddLFxuICAgICAgb2Zmc2V0OiBbLTQsIDBdXG4gICAgfSxcbiAgICByaWdodDoge1xuICAgICAgcG9pbnRzOiBbJ2NsJywgJ2NyJ10sXG4gICAgICBvZmZzZXQ6IFs0LCAwXVxuICAgIH0sXG4gICAgdG9wOiB7XG4gICAgICBwb2ludHM6IFsnYmMnLCAndGMnXSxcbiAgICAgIG9mZnNldDogWzAsIC00XVxuICAgIH0sXG4gICAgYm90dG9tOiB7XG4gICAgICBwb2ludHM6IFsndGMnLCAnYmMnXSxcbiAgICAgIG9mZnNldDogWzAsIDRdXG4gICAgfSxcbiAgICB0b3BMZWZ0OiB7XG4gICAgICBwb2ludHM6IFsnYmwnLCAndGMnXSxcbiAgICAgIG9mZnNldDogWy0oaG9yaXpvbnRhbEFycm93U2hpZnQgKyBhcnJvd1dpZHRoKSwgLTRdXG4gICAgfSxcbiAgICBsZWZ0VG9wOiB7XG4gICAgICBwb2ludHM6IFsndHInLCAnY2wnXSxcbiAgICAgIG9mZnNldDogWy00LCAtKHZlcnRpY2FsQXJyb3dTaGlmdCArIGFycm93V2lkdGgpXVxuICAgIH0sXG4gICAgdG9wUmlnaHQ6IHtcbiAgICAgIHBvaW50czogWydicicsICd0YyddLFxuICAgICAgb2Zmc2V0OiBbaG9yaXpvbnRhbEFycm93U2hpZnQgKyBhcnJvd1dpZHRoLCAtNF1cbiAgICB9LFxuICAgIHJpZ2h0VG9wOiB7XG4gICAgICBwb2ludHM6IFsndGwnLCAnY3InXSxcbiAgICAgIG9mZnNldDogWzQsIC0odmVydGljYWxBcnJvd1NoaWZ0ICsgYXJyb3dXaWR0aCldXG4gICAgfSxcbiAgICBib3R0b21SaWdodDoge1xuICAgICAgcG9pbnRzOiBbJ3RyJywgJ2JjJ10sXG4gICAgICBvZmZzZXQ6IFtob3Jpem9udGFsQXJyb3dTaGlmdCArIGFycm93V2lkdGgsIDRdXG4gICAgfSxcbiAgICByaWdodEJvdHRvbToge1xuICAgICAgcG9pbnRzOiBbJ2JsJywgJ2NyJ10sXG4gICAgICBvZmZzZXQ6IFs0LCB2ZXJ0aWNhbEFycm93U2hpZnQgKyBhcnJvd1dpZHRoXVxuICAgIH0sXG4gICAgYm90dG9tTGVmdDoge1xuICAgICAgcG9pbnRzOiBbJ3RsJywgJ2JjJ10sXG4gICAgICBvZmZzZXQ6IFstKGhvcml6b250YWxBcnJvd1NoaWZ0ICsgYXJyb3dXaWR0aCksIDRdXG4gICAgfSxcbiAgICBsZWZ0Qm90dG9tOiB7XG4gICAgICBwb2ludHM6IFsnYnInLCAnY2wnXSxcbiAgICAgIG9mZnNldDogWy00LCB2ZXJ0aWNhbEFycm93U2hpZnQgKyBhcnJvd1dpZHRoXVxuICAgIH1cbiAgfTtcbiAgT2JqZWN0LmtleXMocGxhY2VtZW50TWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBwbGFjZW1lbnRNYXBba2V5XSA9IGNvbmZpZy5hcnJvd1BvaW50QXRDZW50ZXIgPyAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCBwbGFjZW1lbnRNYXBba2V5XSksIHtcbiAgICAgIG92ZXJmbG93OiBnZXRPdmVyZmxvd09wdGlvbnMoYXV0b0FkanVzdE92ZXJmbG93KSxcbiAgICAgIHRhcmdldE9mZnNldDogdGFyZ2V0T2Zmc2V0XG4gICAgfSkgOiAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCBfcGxhY2VtZW50cy5wbGFjZW1lbnRzW2tleV0pLCB7XG4gICAgICBvdmVyZmxvdzogZ2V0T3ZlcmZsb3dPcHRpb25zKGF1dG9BZGp1c3RPdmVyZmxvdylcbiAgICB9KTtcbiAgICBwbGFjZW1lbnRNYXBba2V5XS5pZ25vcmVTaGFrZSA9IHRydWU7XG4gIH0pO1xuICByZXR1cm4gcGxhY2VtZW50TWFwO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5wbGFjZW1lbnRzID0gdm9pZCAwO1xudmFyIGF1dG9BZGp1c3RPdmVyZmxvdyA9IHtcbiAgYWRqdXN0WDogMSxcbiAgYWRqdXN0WTogMVxufTtcbnZhciB0YXJnZXRPZmZzZXQgPSBbMCwgMF07XG52YXIgcGxhY2VtZW50cyA9IHtcbiAgbGVmdDoge1xuICAgIHBvaW50czogWydjcicsICdjbCddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3csXG4gICAgb2Zmc2V0OiBbLTQsIDBdLFxuICAgIHRhcmdldE9mZnNldDogdGFyZ2V0T2Zmc2V0XG4gIH0sXG4gIHJpZ2h0OiB7XG4gICAgcG9pbnRzOiBbJ2NsJywgJ2NyJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvdyxcbiAgICBvZmZzZXQ6IFs0LCAwXSxcbiAgICB0YXJnZXRPZmZzZXQ6IHRhcmdldE9mZnNldFxuICB9LFxuICB0b3A6IHtcbiAgICBwb2ludHM6IFsnYmMnLCAndGMnXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93LFxuICAgIG9mZnNldDogWzAsIC00XSxcbiAgICB0YXJnZXRPZmZzZXQ6IHRhcmdldE9mZnNldFxuICB9LFxuICBib3R0b206IHtcbiAgICBwb2ludHM6IFsndGMnLCAnYmMnXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93LFxuICAgIG9mZnNldDogWzAsIDRdLFxuICAgIHRhcmdldE9mZnNldDogdGFyZ2V0T2Zmc2V0XG4gIH0sXG4gIHRvcExlZnQ6IHtcbiAgICBwb2ludHM6IFsnYmwnLCAndGwnXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93LFxuICAgIG9mZnNldDogWzAsIC00XSxcbiAgICB0YXJnZXRPZmZzZXQ6IHRhcmdldE9mZnNldFxuICB9LFxuICBsZWZ0VG9wOiB7XG4gICAgcG9pbnRzOiBbJ3RyJywgJ3RsJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvdyxcbiAgICBvZmZzZXQ6IFstNCwgMF0sXG4gICAgdGFyZ2V0T2Zmc2V0OiB0YXJnZXRPZmZzZXRcbiAgfSxcbiAgdG9wUmlnaHQ6IHtcbiAgICBwb2ludHM6IFsnYnInLCAndHInXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93LFxuICAgIG9mZnNldDogWzAsIC00XSxcbiAgICB0YXJnZXRPZmZzZXQ6IHRhcmdldE9mZnNldFxuICB9LFxuICByaWdodFRvcDoge1xuICAgIHBvaW50czogWyd0bCcsICd0ciddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3csXG4gICAgb2Zmc2V0OiBbNCwgMF0sXG4gICAgdGFyZ2V0T2Zmc2V0OiB0YXJnZXRPZmZzZXRcbiAgfSxcbiAgYm90dG9tUmlnaHQ6IHtcbiAgICBwb2ludHM6IFsndHInLCAnYnInXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93LFxuICAgIG9mZnNldDogWzAsIDRdLFxuICAgIHRhcmdldE9mZnNldDogdGFyZ2V0T2Zmc2V0XG4gIH0sXG4gIHJpZ2h0Qm90dG9tOiB7XG4gICAgcG9pbnRzOiBbJ2JsJywgJ2JyJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvdyxcbiAgICBvZmZzZXQ6IFs0LCAwXSxcbiAgICB0YXJnZXRPZmZzZXQ6IHRhcmdldE9mZnNldFxuICB9LFxuICBib3R0b21MZWZ0OiB7XG4gICAgcG9pbnRzOiBbJ3RsJywgJ2JsJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvdyxcbiAgICBvZmZzZXQ6IFswLCA0XSxcbiAgICB0YXJnZXRPZmZzZXQ6IHRhcmdldE9mZnNldFxuICB9LFxuICBsZWZ0Qm90dG9tOiB7XG4gICAgcG9pbnRzOiBbJ2JyJywgJ2JsJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvdyxcbiAgICBvZmZzZXQ6IFstNCwgMF0sXG4gICAgdGFyZ2V0T2Zmc2V0OiB0YXJnZXRPZmZzZXRcbiAgfVxufTtcbmV4cG9ydHMucGxhY2VtZW50cyA9IHBsYWNlbWVudHM7XG52YXIgX2RlZmF1bHQgPSBwbGFjZW1lbnRzO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLlByZXNldENvbG9yVHlwZXMgPSBleHBvcnRzLlByZXNldFN0YXR1c0NvbG9yVHlwZXMgPSB2b2lkIDA7XG5cbnZhciBfdHlwZSA9IHJlcXVpcmUoXCIuL3R5cGVcIik7XG5cbnZhciBQcmVzZXRTdGF0dXNDb2xvclR5cGVzID0gKDAsIF90eXBlLnR1cGxlKSgnc3VjY2VzcycsICdwcm9jZXNzaW5nJywgJ2Vycm9yJywgJ2RlZmF1bHQnLCAnd2FybmluZycpOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L3ByZWZlci1kZWZhdWx0LWV4cG9ydFxuXG5leHBvcnRzLlByZXNldFN0YXR1c0NvbG9yVHlwZXMgPSBQcmVzZXRTdGF0dXNDb2xvclR5cGVzO1xudmFyIFByZXNldENvbG9yVHlwZXMgPSAoMCwgX3R5cGUudHVwbGUpKCdwaW5rJywgJ3JlZCcsICd5ZWxsb3cnLCAnb3JhbmdlJywgJ2N5YW4nLCAnZ3JlZW4nLCAnYmx1ZScsICdwdXJwbGUnLCAnZ2Vla2JsdWUnLCAnbWFnZW50YScsICd2b2xjYW5vJywgJ2dvbGQnLCAnbGltZScpO1xuZXhwb3J0cy5QcmVzZXRDb2xvclR5cGVzID0gUHJlc2V0Q29sb3JUeXBlczsiLCIndXNlIHN0cmljdCc7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG4gIH0pO1xuICBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG4gIFxuICB2YXIgX0JhcnNPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZSgnLi9saWIvaWNvbnMvQmFyc091dGxpbmVkJykpO1xuICBcbiAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuICBcbiAgdmFyIF9kZWZhdWx0ID0gX0JhcnNPdXRsaW5lZDtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG4gIG1vZHVsZS5leHBvcnRzID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX0JhcnNPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zLXN2Zy9saWIvYXNuL0JhcnNPdXRsaW5lZFwiKSk7XG5cbnZhciBfQW50ZEljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9jb21wb25lbnRzL0FudGRJY29uXCIpKTtcblxuLy8gR0VORVJBVEUgQlkgLi9zY3JpcHRzL2dlbmVyYXRlLnRzXG4vLyBET04gTk9UIEVESVQgSVQgTUFOVUFMTFlcbnZhciBCYXJzT3V0bGluZWQgPSBmdW5jdGlvbiBCYXJzT3V0bGluZWQocHJvcHMsIHJlZikge1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0FudGRJY29uLmRlZmF1bHQsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgcmVmOiByZWYsXG4gICAgaWNvbjogX0JhcnNPdXRsaW5lZC5kZWZhdWx0XG4gIH0pKTtcbn07XG5cbkJhcnNPdXRsaW5lZC5kaXNwbGF5TmFtZSA9ICdCYXJzT3V0bGluZWQnO1xuXG52YXIgX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihCYXJzT3V0bGluZWQpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcbi8vIFRoaXMgaWNvbiBmaWxlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEJhcnNPdXRsaW5lZCA9IHsgXCJpY29uXCI6IHsgXCJ0YWdcIjogXCJzdmdcIiwgXCJhdHRyc1wiOiB7IFwidmlld0JveFwiOiBcIjAgMCAxMDI0IDEwMjRcIiwgXCJmb2N1c2FibGVcIjogXCJmYWxzZVwiIH0sIFwiY2hpbGRyZW5cIjogW3sgXCJ0YWdcIjogXCJwYXRoXCIsIFwiYXR0cnNcIjogeyBcImRcIjogXCJNOTEyIDE5MkgzMjhjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTg0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDI4NEgzMjhjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTg0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04em0wIDI4NEgzMjhjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNTg0YzQuNCAwIDgtMy42IDgtOHYtNTZjMC00LjQtMy42LTgtOC04ek0xMDQgMjI4YTU2IDU2IDAgMTAxMTIgMCA1NiA1NiAwIDEwLTExMiAwem0wIDI4NGE1NiA1NiAwIDEwMTEyIDAgNTYgNTYgMCAxMC0xMTIgMHptMCAyODRhNTYgNTYgMCAxMDExMiAwIDU2IDU2IDAgMTAtMTEyIDB6XCIgfSB9XSB9LCBcIm5hbWVcIjogXCJiYXJzXCIsIFwidGhlbWVcIjogXCJvdXRsaW5lZFwiIH07XG5leHBvcnRzLmRlZmF1bHQgPSBCYXJzT3V0bGluZWQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBleHBvcnRzLkNvbnRlbnQgPSBleHBvcnRzLkZvb3RlciA9IGV4cG9ydHMuSGVhZGVyID0gZXhwb3J0cy5MYXlvdXRDb250ZXh0ID0gdm9pZCAwO1xuXG52YXIgX3RvQ29uc3VtYWJsZUFycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIikpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIikpO1xuXG52YXIgX3NsaWNlZFRvQXJyYXkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIpKTtcblxudmFyIF9leHRlbmRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG52YXIgX2NvbmZpZ1Byb3ZpZGVyID0gcmVxdWlyZShcIi4uL2NvbmZpZy1wcm92aWRlclwiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgX19yZXN0ID0gdm9pZCAwICYmICh2b2lkIDApLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG4gIH1cblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxudmFyIExheW91dENvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dCh7XG4gIHNpZGVySG9vazoge1xuICAgIGFkZFNpZGVyOiBmdW5jdGlvbiBhZGRTaWRlcigpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgcmVtb3ZlU2lkZXI6IGZ1bmN0aW9uIHJlbW92ZVNpZGVyKCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59KTtcbmV4cG9ydHMuTGF5b3V0Q29udGV4dCA9IExheW91dENvbnRleHQ7XG5cbmZ1bmN0aW9uIGdlbmVyYXRvcihfcmVmKSB7XG4gIHZhciBzdWZmaXhDbHMgPSBfcmVmLnN1ZmZpeENscyxcbiAgICAgIHRhZ05hbWUgPSBfcmVmLnRhZ05hbWUsXG4gICAgICBkaXNwbGF5TmFtZSA9IF9yZWYuZGlzcGxheU5hbWU7XG4gIHJldHVybiBmdW5jdGlvbiAoQmFzaWNDb21wb25lbnQpIHtcbiAgICB2YXIgQWRhcHRlciA9IGZ1bmN0aW9uIEFkYXB0ZXIocHJvcHMpIHtcbiAgICAgIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnRleHQpLFxuICAgICAgICAgIGdldFByZWZpeENscyA9IF9SZWFjdCR1c2VDb250ZXh0LmdldFByZWZpeENscztcblxuICAgICAgdmFyIGN1c3RvbWl6ZVByZWZpeENscyA9IHByb3BzLnByZWZpeENscztcbiAgICAgIHZhciBwcmVmaXhDbHMgPSBnZXRQcmVmaXhDbHMoc3VmZml4Q2xzLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEJhc2ljQ29tcG9uZW50LCAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe1xuICAgICAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgICAgdGFnTmFtZTogdGFnTmFtZVxuICAgICAgfSwgcHJvcHMpKTtcbiAgICB9O1xuXG4gICAgQWRhcHRlci5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xuICAgIHJldHVybiBBZGFwdGVyO1xuICB9O1xufVxuXG52YXIgQmFzaWMgPSBmdW5jdGlvbiBCYXNpYyhwcm9wcykge1xuICB2YXIgcHJlZml4Q2xzID0gcHJvcHMucHJlZml4Q2xzLFxuICAgICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIHRhZ05hbWUgPSBwcm9wcy50YWdOYW1lLFxuICAgICAgb3RoZXJzID0gX19yZXN0KHByb3BzLCBbXCJwcmVmaXhDbHNcIiwgXCJjbGFzc05hbWVcIiwgXCJjaGlsZHJlblwiLCBcInRhZ05hbWVcIl0pO1xuXG4gIHZhciBjbGFzc1N0cmluZyA9ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKHByZWZpeENscywgY2xhc3NOYW1lKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KHRhZ05hbWUsICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7XG4gICAgY2xhc3NOYW1lOiBjbGFzc1N0cmluZ1xuICB9LCBvdGhlcnMpLCBjaGlsZHJlbik7XG59O1xuXG52YXIgQmFzaWNMYXlvdXQgPSBmdW5jdGlvbiBCYXNpY0xheW91dChwcm9wcykge1xuICB2YXIgX2NsYXNzTmFtZXM7XG5cbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0MiA9IFJlYWN0LnVzZUNvbnRleHQoX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnRleHQpLFxuICAgICAgZGlyZWN0aW9uID0gX1JlYWN0JHVzZUNvbnRleHQyLmRpcmVjdGlvbjtcblxuICB2YXIgX1JlYWN0JHVzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUoW10pLFxuICAgICAgX1JlYWN0JHVzZVN0YXRlMiA9ICgwLCBfc2xpY2VkVG9BcnJheTJbXCJkZWZhdWx0XCJdKShfUmVhY3QkdXNlU3RhdGUsIDIpLFxuICAgICAgc2lkZXJzID0gX1JlYWN0JHVzZVN0YXRlMlswXSxcbiAgICAgIHNldFNpZGVycyA9IF9SZWFjdCR1c2VTdGF0ZTJbMV07XG5cbiAgdmFyIHByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICBoYXNTaWRlciA9IHByb3BzLmhhc1NpZGVyLFxuICAgICAgVGFnID0gcHJvcHMudGFnTmFtZSxcbiAgICAgIG90aGVycyA9IF9fcmVzdChwcm9wcywgW1wicHJlZml4Q2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwiY2hpbGRyZW5cIiwgXCJoYXNTaWRlclwiLCBcInRhZ05hbWVcIl0pO1xuXG4gIHZhciBjbGFzc1N0cmluZyA9ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKHByZWZpeENscywgKF9jbGFzc05hbWVzID0ge30sICgwLCBfZGVmaW5lUHJvcGVydHkyW1wiZGVmYXVsdFwiXSkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaGFzLXNpZGVyXCIpLCB0eXBlb2YgaGFzU2lkZXIgPT09ICdib29sZWFuJyA/IGhhc1NpZGVyIDogc2lkZXJzLmxlbmd0aCA+IDApLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXJ0bFwiKSwgZGlyZWN0aW9uID09PSAncnRsJyksIF9jbGFzc05hbWVzKSwgY2xhc3NOYW1lKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheW91dENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZToge1xuICAgICAgc2lkZXJIb29rOiB7XG4gICAgICAgIGFkZFNpZGVyOiBmdW5jdGlvbiBhZGRTaWRlcihpZCkge1xuICAgICAgICAgIHNldFNpZGVycyhmdW5jdGlvbiAocHJldikge1xuICAgICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdCgoMCwgX3RvQ29uc3VtYWJsZUFycmF5MltcImRlZmF1bHRcIl0pKHByZXYpLCBbaWRdKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlU2lkZXI6IGZ1bmN0aW9uIHJlbW92ZVNpZGVyKGlkKSB7XG4gICAgICAgICAgc2V0U2lkZXJzKGZ1bmN0aW9uIChwcmV2KSB7XG4gICAgICAgICAgICByZXR1cm4gcHJldi5maWx0ZXIoZnVuY3Rpb24gKGN1cnJlbnRJZCkge1xuICAgICAgICAgICAgICByZXR1cm4gY3VycmVudElkICE9PSBpZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUYWcsICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7XG4gICAgY2xhc3NOYW1lOiBjbGFzc1N0cmluZ1xuICB9LCBvdGhlcnMpLCBjaGlsZHJlbikpO1xufTtcblxudmFyIExheW91dCA9IGdlbmVyYXRvcih7XG4gIHN1ZmZpeENsczogJ2xheW91dCcsXG4gIHRhZ05hbWU6ICdzZWN0aW9uJyxcbiAgZGlzcGxheU5hbWU6ICdMYXlvdXQnXG59KShCYXNpY0xheW91dCk7XG52YXIgSGVhZGVyID0gZ2VuZXJhdG9yKHtcbiAgc3VmZml4Q2xzOiAnbGF5b3V0LWhlYWRlcicsXG4gIHRhZ05hbWU6ICdoZWFkZXInLFxuICBkaXNwbGF5TmFtZTogJ0hlYWRlcidcbn0pKEJhc2ljKTtcbmV4cG9ydHMuSGVhZGVyID0gSGVhZGVyO1xudmFyIEZvb3RlciA9IGdlbmVyYXRvcih7XG4gIHN1ZmZpeENsczogJ2xheW91dC1mb290ZXInLFxuICB0YWdOYW1lOiAnZm9vdGVyJyxcbiAgZGlzcGxheU5hbWU6ICdGb290ZXInXG59KShCYXNpYyk7XG5leHBvcnRzLkZvb3RlciA9IEZvb3RlcjtcbnZhciBDb250ZW50ID0gZ2VuZXJhdG9yKHtcbiAgc3VmZml4Q2xzOiAnbGF5b3V0LWNvbnRlbnQnLFxuICB0YWdOYW1lOiAnbWFpbicsXG4gIGRpc3BsYXlOYW1lOiAnQ29udGVudCdcbn0pKEJhc2ljKTtcbmV4cG9ydHMuQ29udGVudCA9IENvbnRlbnQ7XG52YXIgX2RlZmF1bHQgPSBMYXlvdXQ7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBpc051bWVyaWMgPSBmdW5jdGlvbiBpc051bWVyaWModmFsdWUpIHtcbiAgcmV0dXJuICFpc05hTihwYXJzZUZsb2F0KHZhbHVlKSkgJiYgaXNGaW5pdGUodmFsdWUpO1xufTtcblxudmFyIF9kZWZhdWx0ID0gaXNOdW1lcmljO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfc2xpY2VkVG9BcnJheTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIikpO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF91c2VNZXJnZWRTdGF0ZTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYy11dGlsL2xpYi9ob29rcy91c2VNZXJnZWRTdGF0ZVwiKSk7XG5cbnZhciBfcmFkaW8gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3JhZGlvXCIpKTtcblxudmFyIF9jb25maWdQcm92aWRlciA9IHJlcXVpcmUoXCIuLi9jb25maWctcHJvdmlkZXJcIik7XG5cbnZhciBfU2l6ZUNvbnRleHQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9jb25maWctcHJvdmlkZXIvU2l6ZUNvbnRleHRcIikpO1xuXG52YXIgX2NvbnRleHQgPSByZXF1aXJlKFwiLi9jb250ZXh0XCIpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBSYWRpb0dyb3VwID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChfY29uZmlnUHJvdmlkZXIuQ29uZmlnQ29udGV4dCksXG4gICAgICBnZXRQcmVmaXhDbHMgPSBfUmVhY3QkdXNlQ29udGV4dC5nZXRQcmVmaXhDbHMsXG4gICAgICBkaXJlY3Rpb24gPSBfUmVhY3QkdXNlQ29udGV4dC5kaXJlY3Rpb247XG5cbiAgdmFyIHNpemUgPSBSZWFjdC51c2VDb250ZXh0KF9TaXplQ29udGV4dFtcImRlZmF1bHRcIl0pO1xuXG4gIHZhciBfdXNlTWVyZ2VkU3RhdGUgPSAoMCwgX3VzZU1lcmdlZFN0YXRlM1tcImRlZmF1bHRcIl0pKHByb3BzLmRlZmF1bHRWYWx1ZSwge1xuICAgIHZhbHVlOiBwcm9wcy52YWx1ZVxuICB9KSxcbiAgICAgIF91c2VNZXJnZWRTdGF0ZTIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyW1wiZGVmYXVsdFwiXSkoX3VzZU1lcmdlZFN0YXRlLCAyKSxcbiAgICAgIHZhbHVlID0gX3VzZU1lcmdlZFN0YXRlMlswXSxcbiAgICAgIHNldFZhbHVlID0gX3VzZU1lcmdlZFN0YXRlMlsxXTtcblxuICB2YXIgb25SYWRpb0NoYW5nZSA9IGZ1bmN0aW9uIG9uUmFkaW9DaGFuZ2UoZXYpIHtcbiAgICB2YXIgbGFzdFZhbHVlID0gdmFsdWU7XG4gICAgdmFyIHZhbCA9IGV2LnRhcmdldC52YWx1ZTtcblxuICAgIGlmICghKCd2YWx1ZScgaW4gcHJvcHMpKSB7XG4gICAgICBzZXRWYWx1ZSh2YWwpO1xuICAgIH1cblxuICAgIHZhciBvbkNoYW5nZSA9IHByb3BzLm9uQ2hhbmdlO1xuXG4gICAgaWYgKG9uQ2hhbmdlICYmIHZhbCAhPT0gbGFzdFZhbHVlKSB7XG4gICAgICBvbkNoYW5nZShldik7XG4gICAgfVxuICB9O1xuXG4gIHZhciByZW5kZXJHcm91cCA9IGZ1bmN0aW9uIHJlbmRlckdyb3VwKCkge1xuICAgIHZhciBfY2xhc3NOYW1lcztcblxuICAgIHZhciBjdXN0b21pemVQcmVmaXhDbHMgPSBwcm9wcy5wcmVmaXhDbHMsXG4gICAgICAgIF9wcm9wcyRjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgIGNsYXNzTmFtZSA9IF9wcm9wcyRjbGFzc05hbWUgPT09IHZvaWQgMCA/ICcnIDogX3Byb3BzJGNsYXNzTmFtZSxcbiAgICAgICAgb3B0aW9ucyA9IHByb3BzLm9wdGlvbnMsXG4gICAgICAgIG9wdGlvblR5cGUgPSBwcm9wcy5vcHRpb25UeXBlLFxuICAgICAgICBfcHJvcHMkYnV0dG9uU3R5bGUgPSBwcm9wcy5idXR0b25TdHlsZSxcbiAgICAgICAgYnV0dG9uU3R5bGUgPSBfcHJvcHMkYnV0dG9uU3R5bGUgPT09IHZvaWQgMCA/ICdvdXRsaW5lJyA6IF9wcm9wcyRidXR0b25TdHlsZSxcbiAgICAgICAgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZCxcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgY3VzdG9taXplU2l6ZSA9IHByb3BzLnNpemUsXG4gICAgICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsXG4gICAgICAgIGlkID0gcHJvcHMuaWQsXG4gICAgICAgIG9uTW91c2VFbnRlciA9IHByb3BzLm9uTW91c2VFbnRlcixcbiAgICAgICAgb25Nb3VzZUxlYXZlID0gcHJvcHMub25Nb3VzZUxlYXZlO1xuICAgIHZhciBwcmVmaXhDbHMgPSBnZXRQcmVmaXhDbHMoJ3JhZGlvJywgY3VzdG9taXplUHJlZml4Q2xzKTtcbiAgICB2YXIgZ3JvdXBQcmVmaXhDbHMgPSBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWdyb3VwXCIpO1xuICAgIHZhciBjaGlsZHJlblRvUmVuZGVyID0gY2hpbGRyZW47IC8vIOWmguaenOWtmOWcqCBvcHRpb25zLCDkvJjlhYjkvb/nlKhcblxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIG9wdGlvbnNQcmVmaXhDbHMgPSBvcHRpb25UeXBlID09PSAnYnV0dG9uJyA/IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItYnV0dG9uXCIpIDogcHJlZml4Q2xzO1xuICAgICAgY2hpbGRyZW5Ub1JlbmRlciA9IG9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgLy8g5q2k5aSE57G75Z6L6Ieq5Yqo5o6o5a+85Li6IHN0cmluZ1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfcmFkaW9bXCJkZWZhdWx0XCJdLCB7XG4gICAgICAgICAgICBrZXk6IG9wdGlvbixcbiAgICAgICAgICAgIHByZWZpeENsczogb3B0aW9uc1ByZWZpeENscyxcbiAgICAgICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgICAgICAgIHZhbHVlOiBvcHRpb24sXG4gICAgICAgICAgICBjaGVja2VkOiB2YWx1ZSA9PT0gb3B0aW9uXG4gICAgICAgICAgfSwgb3B0aW9uKTtcbiAgICAgICAgfSAvLyDmraTlpITnsbvlnovoh6rliqjmjqjlr7zkuLogeyBsYWJlbDogc3RyaW5nIHZhbHVlOiBzdHJpbmcgfVxuXG5cbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yYWRpb1tcImRlZmF1bHRcIl0sIHtcbiAgICAgICAgICBrZXk6IFwicmFkaW8tZ3JvdXAtdmFsdWUtb3B0aW9ucy1cIi5jb25jYXQob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICBwcmVmaXhDbHM6IG9wdGlvbnNQcmVmaXhDbHMsXG4gICAgICAgICAgZGlzYWJsZWQ6IG9wdGlvbi5kaXNhYmxlZCB8fCBkaXNhYmxlZCxcbiAgICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICAgIGNoZWNrZWQ6IHZhbHVlID09PSBvcHRpb24udmFsdWUsXG4gICAgICAgICAgc3R5bGU6IG9wdGlvbi5zdHlsZVxuICAgICAgICB9LCBvcHRpb24ubGFiZWwpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIG1lcmdlZFNpemUgPSBjdXN0b21pemVTaXplIHx8IHNpemU7XG4gICAgdmFyIGNsYXNzU3RyaW5nID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoZ3JvdXBQcmVmaXhDbHMsIFwiXCIuY29uY2F0KGdyb3VwUHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KGJ1dHRvblN0eWxlKSwgKF9jbGFzc05hbWVzID0ge30sICgwLCBfZGVmaW5lUHJvcGVydHkyW1wiZGVmYXVsdFwiXSkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KGdyb3VwUHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KG1lcmdlZFNpemUpLCBtZXJnZWRTaXplKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQoZ3JvdXBQcmVmaXhDbHMsIFwiLXJ0bFwiKSwgZGlyZWN0aW9uID09PSAncnRsJyksIF9jbGFzc05hbWVzKSwgY2xhc3NOYW1lKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc1N0cmluZyxcbiAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICAgIG9uTW91c2VFbnRlcjogb25Nb3VzZUVudGVyLFxuICAgICAgb25Nb3VzZUxlYXZlOiBvbk1vdXNlTGVhdmUsXG4gICAgICBpZDogaWQsXG4gICAgICByZWY6IHJlZlxuICAgIH0sIGNoaWxkcmVuVG9SZW5kZXIpO1xuICB9O1xuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfY29udGV4dC5SYWRpb0dyb3VwQ29udGV4dFByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IHtcbiAgICAgIG9uQ2hhbmdlOiBvblJhZGlvQ2hhbmdlLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkLFxuICAgICAgbmFtZTogcHJvcHMubmFtZVxuICAgIH1cbiAgfSwgcmVuZGVyR3JvdXAoKSk7XG59KTtcblxudmFyIF9kZWZhdWx0ID0gLyojX19QVVJFX18qL1JlYWN0Lm1lbW8oUmFkaW9Hcm91cCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX2V4dGVuZHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9yYWRpbyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vcmFkaW9cIikpO1xuXG52YXIgX2NvbmZpZ1Byb3ZpZGVyID0gcmVxdWlyZShcIi4uL2NvbmZpZy1wcm92aWRlclwiKTtcblxudmFyIF9jb250ZXh0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9jb250ZXh0XCIpKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgX19yZXN0ID0gdm9pZCAwICYmICh2b2lkIDApLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG4gIH1cblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxudmFyIFJhZGlvQnV0dG9uID0gZnVuY3Rpb24gUmFkaW9CdXR0b24ocHJvcHMsIHJlZikge1xuICB2YXIgcmFkaW9Hcm91cENvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KF9jb250ZXh0W1wiZGVmYXVsdFwiXSk7XG5cbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChfY29uZmlnUHJvdmlkZXIuQ29uZmlnQ29udGV4dCksXG4gICAgICBnZXRQcmVmaXhDbHMgPSBfUmVhY3QkdXNlQ29udGV4dC5nZXRQcmVmaXhDbHM7XG5cbiAgdmFyIGN1c3RvbWl6ZVByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgIHJhZGlvUHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcInByZWZpeENsc1wiXSk7XG5cbiAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygncmFkaW8tYnV0dG9uJywgY3VzdG9taXplUHJlZml4Q2xzKTtcblxuICBpZiAocmFkaW9Hcm91cENvbnRleHQpIHtcbiAgICByYWRpb1Byb3BzLmNoZWNrZWQgPSBwcm9wcy52YWx1ZSA9PT0gcmFkaW9Hcm91cENvbnRleHQudmFsdWU7XG4gICAgcmFkaW9Qcm9wcy5kaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkIHx8IHJhZGlvR3JvdXBDb250ZXh0LmRpc2FibGVkO1xuICB9XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yYWRpb1tcImRlZmF1bHRcIl0sICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSh7XG4gICAgcHJlZml4Q2xzOiBwcmVmaXhDbHNcbiAgfSwgcmFkaW9Qcm9wcywge1xuICAgIHR5cGU6IFwicmFkaW9cIixcbiAgICByZWY6IHJlZlxuICB9KSk7XG59O1xuXG52YXIgX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihSYWRpb0J1dHRvbik7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZjMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmdldFNvcnREYXRhID0gZ2V0U29ydERhdGE7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHVzZUZpbHRlclNvcnRlcjtcblxudmFyIF9zbGljZWRUb0FycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiKSk7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBfZXh0ZW5kczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIikpO1xuXG52YXIgX3RvQ29uc3VtYWJsZUFycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIikpO1xuXG52YXIgX3R5cGVvZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG52YXIgX0NhcmV0RG93bk91dGxpbmVkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGFudC1kZXNpZ24vaWNvbnMvQ2FyZXREb3duT3V0bGluZWRcIikpO1xuXG52YXIgX0NhcmV0VXBPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zL0NhcmV0VXBPdXRsaW5lZFwiKSk7XG5cbnZhciBfdG9vbHRpcCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uLy4uL3Rvb2x0aXBcIikpO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiLi4vdXRpbFwiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mMyhvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxudmFyIEFTQ0VORCA9ICdhc2NlbmQnO1xudmFyIERFU0NFTkQgPSAnZGVzY2VuZCc7XG5cbmZ1bmN0aW9uIGdldE11bHRpcGxlUHJpb3JpdHkoY29sdW1uKSB7XG4gIGlmICgoMCwgX3R5cGVvZjJbXCJkZWZhdWx0XCJdKShjb2x1bW4uc29ydGVyKSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGNvbHVtbi5zb3J0ZXIubXVsdGlwbGUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGNvbHVtbi5zb3J0ZXIubXVsdGlwbGU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdldFNvcnRGdW5jdGlvbihzb3J0ZXIpIHtcbiAgaWYgKHR5cGVvZiBzb3J0ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gc29ydGVyO1xuICB9XG5cbiAgaWYgKHNvcnRlciAmJiAoMCwgX3R5cGVvZjJbXCJkZWZhdWx0XCJdKShzb3J0ZXIpID09PSAnb2JqZWN0JyAmJiBzb3J0ZXIuY29tcGFyZSkge1xuICAgIHJldHVybiBzb3J0ZXIuY29tcGFyZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbmV4dFNvcnREaXJlY3Rpb24oc29ydERpcmVjdGlvbnMsIGN1cnJlbnQpIHtcbiAgaWYgKCFjdXJyZW50KSB7XG4gICAgcmV0dXJuIHNvcnREaXJlY3Rpb25zWzBdO1xuICB9XG5cbiAgcmV0dXJuIHNvcnREaXJlY3Rpb25zW3NvcnREaXJlY3Rpb25zLmluZGV4T2YoY3VycmVudCkgKyAxXTtcbn1cblxuZnVuY3Rpb24gY29sbGVjdFNvcnRTdGF0ZXMoY29sdW1ucywgaW5pdCwgcG9zKSB7XG4gIHZhciBzb3J0U3RhdGVzID0gW107XG5cbiAgZnVuY3Rpb24gcHVzaFN0YXRlKGNvbHVtbiwgY29sdW1uUG9zKSB7XG4gICAgc29ydFN0YXRlcy5wdXNoKHtcbiAgICAgIGNvbHVtbjogY29sdW1uLFxuICAgICAga2V5OiAoMCwgX3V0aWwuZ2V0Q29sdW1uS2V5KShjb2x1bW4sIGNvbHVtblBvcyksXG4gICAgICBtdWx0aXBsZVByaW9yaXR5OiBnZXRNdWx0aXBsZVByaW9yaXR5KGNvbHVtbiksXG4gICAgICBzb3J0T3JkZXI6IGNvbHVtbi5zb3J0T3JkZXJcbiAgICB9KTtcbiAgfVxuXG4gIChjb2x1bW5zIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChjb2x1bW4sIGluZGV4KSB7XG4gICAgdmFyIGNvbHVtblBvcyA9ICgwLCBfdXRpbC5nZXRDb2x1bW5Qb3MpKGluZGV4LCBwb3MpO1xuXG4gICAgaWYgKGNvbHVtbi5jaGlsZHJlbikge1xuICAgICAgaWYgKCdzb3J0T3JkZXInIGluIGNvbHVtbikge1xuICAgICAgICAvLyBDb250cm9sbGVkXG4gICAgICAgIHB1c2hTdGF0ZShjb2x1bW4sIGNvbHVtblBvcyk7XG4gICAgICB9XG5cbiAgICAgIHNvcnRTdGF0ZXMgPSBbXS5jb25jYXQoKDAsIF90b0NvbnN1bWFibGVBcnJheTJbXCJkZWZhdWx0XCJdKShzb3J0U3RhdGVzKSwgKDAsIF90b0NvbnN1bWFibGVBcnJheTJbXCJkZWZhdWx0XCJdKShjb2xsZWN0U29ydFN0YXRlcyhjb2x1bW4uY2hpbGRyZW4sIGluaXQsIGNvbHVtblBvcykpKTtcbiAgICB9IGVsc2UgaWYgKGNvbHVtbi5zb3J0ZXIpIHtcbiAgICAgIGlmICgnc29ydE9yZGVyJyBpbiBjb2x1bW4pIHtcbiAgICAgICAgLy8gQ29udHJvbGxlZFxuICAgICAgICBwdXNoU3RhdGUoY29sdW1uLCBjb2x1bW5Qb3MpO1xuICAgICAgfSBlbHNlIGlmIChpbml0ICYmIGNvbHVtbi5kZWZhdWx0U29ydE9yZGVyKSB7XG4gICAgICAgIC8vIERlZmF1bHQgc29ydGVyXG4gICAgICAgIHNvcnRTdGF0ZXMucHVzaCh7XG4gICAgICAgICAgY29sdW1uOiBjb2x1bW4sXG4gICAgICAgICAga2V5OiAoMCwgX3V0aWwuZ2V0Q29sdW1uS2V5KShjb2x1bW4sIGNvbHVtblBvcyksXG4gICAgICAgICAgbXVsdGlwbGVQcmlvcml0eTogZ2V0TXVsdGlwbGVQcmlvcml0eShjb2x1bW4pLFxuICAgICAgICAgIHNvcnRPcmRlcjogY29sdW1uLmRlZmF1bHRTb3J0T3JkZXJcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHNvcnRTdGF0ZXM7XG59XG5cbmZ1bmN0aW9uIGluamVjdFNvcnRlcihwcmVmaXhDbHMsIGNvbHVtbnMsIHNvcnRlclNhdGVzLCB0cmlnZ2VyU29ydGVyLCBkZWZhdWx0U29ydERpcmVjdGlvbnMsIHRhYmxlTG9jYWxlLCB0YWJsZVNob3dTb3J0ZXJUb29sdGlwLCBwb3MpIHtcbiAgcmV0dXJuIChjb2x1bW5zIHx8IFtdKS5tYXAoZnVuY3Rpb24gKGNvbHVtbiwgaW5kZXgpIHtcbiAgICB2YXIgY29sdW1uUG9zID0gKDAsIF91dGlsLmdldENvbHVtblBvcykoaW5kZXgsIHBvcyk7XG4gICAgdmFyIG5ld0NvbHVtbiA9IGNvbHVtbjtcblxuICAgIGlmIChuZXdDb2x1bW4uc29ydGVyKSB7XG4gICAgICB2YXIgc29ydERpcmVjdGlvbnMgPSBuZXdDb2x1bW4uc29ydERpcmVjdGlvbnMgfHwgZGVmYXVsdFNvcnREaXJlY3Rpb25zO1xuICAgICAgdmFyIHNob3dTb3J0ZXJUb29sdGlwID0gbmV3Q29sdW1uLnNob3dTb3J0ZXJUb29sdGlwID09PSB1bmRlZmluZWQgPyB0YWJsZVNob3dTb3J0ZXJUb29sdGlwIDogbmV3Q29sdW1uLnNob3dTb3J0ZXJUb29sdGlwO1xuICAgICAgdmFyIGNvbHVtbktleSA9ICgwLCBfdXRpbC5nZXRDb2x1bW5LZXkpKG5ld0NvbHVtbiwgY29sdW1uUG9zKTtcbiAgICAgIHZhciBzb3J0ZXJTdGF0ZSA9IHNvcnRlclNhdGVzLmZpbmQoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIGtleSA9IF9yZWYua2V5O1xuICAgICAgICByZXR1cm4ga2V5ID09PSBjb2x1bW5LZXk7XG4gICAgICB9KTtcbiAgICAgIHZhciBzb3J0ZXJPcmRlciA9IHNvcnRlclN0YXRlID8gc29ydGVyU3RhdGUuc29ydE9yZGVyIDogbnVsbDtcbiAgICAgIHZhciBuZXh0U29ydE9yZGVyID0gbmV4dFNvcnREaXJlY3Rpb24oc29ydERpcmVjdGlvbnMsIHNvcnRlck9yZGVyKTtcbiAgICAgIHZhciB1cE5vZGUgPSBzb3J0RGlyZWN0aW9ucy5pbmNsdWRlcyhBU0NFTkQpICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9DYXJldFVwT3V0bGluZWRbXCJkZWZhdWx0XCJdLCB7XG4gICAgICAgIGNsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1jb2x1bW4tc29ydGVyLXVwXCIpLCB7XG4gICAgICAgICAgYWN0aXZlOiBzb3J0ZXJPcmRlciA9PT0gQVNDRU5EXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICAgIHZhciBkb3duTm9kZSA9IHNvcnREaXJlY3Rpb25zLmluY2x1ZGVzKERFU0NFTkQpICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9DYXJldERvd25PdXRsaW5lZFtcImRlZmF1bHRcIl0sIHtcbiAgICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNvbHVtbi1zb3J0ZXItZG93blwiKSwge1xuICAgICAgICAgIGFjdGl2ZTogc29ydGVyT3JkZXIgPT09IERFU0NFTkRcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgX3JlZjIgPSB0YWJsZUxvY2FsZSB8fCB7fSxcbiAgICAgICAgICBjYW5jZWxTb3J0ID0gX3JlZjIuY2FuY2VsU29ydCxcbiAgICAgICAgICB0cmlnZ2VyQXNjID0gX3JlZjIudHJpZ2dlckFzYyxcbiAgICAgICAgICB0cmlnZ2VyRGVzYyA9IF9yZWYyLnRyaWdnZXJEZXNjO1xuXG4gICAgICB2YXIgc29ydFRpcCA9IGNhbmNlbFNvcnQ7XG5cbiAgICAgIGlmIChuZXh0U29ydE9yZGVyID09PSBERVNDRU5EKSB7XG4gICAgICAgIHNvcnRUaXAgPSB0cmlnZ2VyRGVzYztcbiAgICAgIH0gZWxzZSBpZiAobmV4dFNvcnRPcmRlciA9PT0gQVNDRU5EKSB7XG4gICAgICAgIHNvcnRUaXAgPSB0cmlnZ2VyQXNjO1xuICAgICAgfVxuXG4gICAgICB2YXIgdG9vbHRpcFByb3BzID0gKDAsIF90eXBlb2YyW1wiZGVmYXVsdFwiXSkoc2hvd1NvcnRlclRvb2x0aXApID09PSAnb2JqZWN0JyA/IHNob3dTb3J0ZXJUb29sdGlwIDoge1xuICAgICAgICB0aXRsZTogc29ydFRpcFxuICAgICAgfTtcbiAgICAgIG5ld0NvbHVtbiA9ICgwLCBfZXh0ZW5kczNbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMzW1wiZGVmYXVsdFwiXSkoe30sIG5ld0NvbHVtbiksIHtcbiAgICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShuZXdDb2x1bW4uY2xhc3NOYW1lLCAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKHt9LCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNvbHVtbi1zb3J0XCIpLCBzb3J0ZXJPcmRlcikpLFxuICAgICAgICB0aXRsZTogZnVuY3Rpb24gdGl0bGUocmVuZGVyUHJvcHMpIHtcbiAgICAgICAgICB2YXIgcmVuZGVyU29ydFRpdGxlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNvbHVtbi1zb3J0ZXJzXCIpXG4gICAgICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsICgwLCBfdXRpbC5yZW5kZXJDb2x1bW5UaXRsZSkoY29sdW1uLnRpdGxlLCByZW5kZXJQcm9wcykpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNvbHVtbi1zb3J0ZXJcIiksICgwLCBfZGVmaW5lUHJvcGVydHkyW1wiZGVmYXVsdFwiXSkoe30sIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY29sdW1uLXNvcnRlci1mdWxsXCIpLCAhISh1cE5vZGUgJiYgZG93bk5vZGUpKSlcbiAgICAgICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNvbHVtbi1zb3J0ZXItaW5uZXJcIilcbiAgICAgICAgICB9LCB1cE5vZGUsIGRvd25Ob2RlKSkpO1xuICAgICAgICAgIHJldHVybiBzaG93U29ydGVyVG9vbHRpcCA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF90b29sdGlwW1wiZGVmYXVsdFwiXSwgdG9vbHRpcFByb3BzLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY29sdW1uLXNvcnRlcnMtd2l0aC10b29sdGlwXCIpXG4gICAgICAgICAgfSwgcmVuZGVyU29ydFRpdGxlKSkgOiByZW5kZXJTb3J0VGl0bGU7XG4gICAgICAgIH0sXG4gICAgICAgIG9uSGVhZGVyQ2VsbDogZnVuY3Rpb24gb25IZWFkZXJDZWxsKGNvbCkge1xuICAgICAgICAgIHZhciBjZWxsID0gY29sdW1uLm9uSGVhZGVyQ2VsbCAmJiBjb2x1bW4ub25IZWFkZXJDZWxsKGNvbCkgfHwge307XG4gICAgICAgICAgdmFyIG9yaWdpbk9uQ2xpY2sgPSBjZWxsLm9uQ2xpY2s7XG5cbiAgICAgICAgICBjZWxsLm9uQ2xpY2sgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHRyaWdnZXJTb3J0ZXIoe1xuICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbixcbiAgICAgICAgICAgICAga2V5OiBjb2x1bW5LZXksXG4gICAgICAgICAgICAgIHNvcnRPcmRlcjogbmV4dFNvcnRPcmRlcixcbiAgICAgICAgICAgICAgbXVsdGlwbGVQcmlvcml0eTogZ2V0TXVsdGlwbGVQcmlvcml0eShjb2x1bW4pXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKG9yaWdpbk9uQ2xpY2spIHtcbiAgICAgICAgICAgICAgb3JpZ2luT25DbGljayhldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNlbGwuY2xhc3NOYW1lID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoY2VsbC5jbGFzc05hbWUsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY29sdW1uLWhhcy1zb3J0ZXJzXCIpKTtcbiAgICAgICAgICByZXR1cm4gY2VsbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCdjaGlsZHJlbicgaW4gbmV3Q29sdW1uKSB7XG4gICAgICBuZXdDb2x1bW4gPSAoMCwgX2V4dGVuZHMzW1wiZGVmYXVsdFwiXSkoKDAsIF9leHRlbmRzM1tcImRlZmF1bHRcIl0pKHt9LCBuZXdDb2x1bW4pLCB7XG4gICAgICAgIGNoaWxkcmVuOiBpbmplY3RTb3J0ZXIocHJlZml4Q2xzLCBuZXdDb2x1bW4uY2hpbGRyZW4sIHNvcnRlclNhdGVzLCB0cmlnZ2VyU29ydGVyLCBkZWZhdWx0U29ydERpcmVjdGlvbnMsIHRhYmxlTG9jYWxlLCB0YWJsZVNob3dTb3J0ZXJUb29sdGlwLCBjb2x1bW5Qb3MpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Q29sdW1uO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc3RhdGVUb0luZm8oc29ydGVyU3RhdGVzKSB7XG4gIHZhciBjb2x1bW4gPSBzb3J0ZXJTdGF0ZXMuY29sdW1uLFxuICAgICAgc29ydE9yZGVyID0gc29ydGVyU3RhdGVzLnNvcnRPcmRlcjtcbiAgcmV0dXJuIHtcbiAgICBjb2x1bW46IGNvbHVtbixcbiAgICBvcmRlcjogc29ydE9yZGVyLFxuICAgIGZpZWxkOiBjb2x1bW4uZGF0YUluZGV4LFxuICAgIGNvbHVtbktleTogY29sdW1uLmtleVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVNvcnRlckluZm8oc29ydGVyU3RhdGVzKSB7XG4gIHZhciBsaXN0ID0gc29ydGVyU3RhdGVzLmZpbHRlcihmdW5jdGlvbiAoX3JlZjMpIHtcbiAgICB2YXIgc29ydE9yZGVyID0gX3JlZjMuc29ydE9yZGVyO1xuICAgIHJldHVybiBzb3J0T3JkZXI7XG4gIH0pLm1hcChzdGF0ZVRvSW5mbyk7IC8vID09PT09PT09PT09IExlZ2FjeSBjb21wYXRpYmxlIHN1cHBvcnQgPT09PT09PT09PT1cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9wdWxsLzE5MjI2XG5cbiAgaWYgKGxpc3QubGVuZ3RoID09PSAwICYmIHNvcnRlclN0YXRlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gKDAsIF9leHRlbmRzM1tcImRlZmF1bHRcIl0pKCgwLCBfZXh0ZW5kczNbXCJkZWZhdWx0XCJdKSh7fSwgc3RhdGVUb0luZm8oc29ydGVyU3RhdGVzW3NvcnRlclN0YXRlcy5sZW5ndGggLSAxXSkpLCB7XG4gICAgICBjb2x1bW46IHVuZGVmaW5lZFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKGxpc3QubGVuZ3RoIDw9IDEpIHtcbiAgICByZXR1cm4gbGlzdFswXSB8fCB7fTtcbiAgfVxuXG4gIHJldHVybiBsaXN0O1xufVxuXG5mdW5jdGlvbiBnZXRTb3J0RGF0YShkYXRhLCBzb3J0U3RhdGVzLCBjaGlsZHJlbkNvbHVtbk5hbWUpIHtcbiAgdmFyIGlubmVyU29ydGVyU3RhdGVzID0gc29ydFN0YXRlcy5zbGljZSgpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYi5tdWx0aXBsZVByaW9yaXR5IC0gYS5tdWx0aXBsZVByaW9yaXR5O1xuICB9KTtcbiAgdmFyIGNsb25lRGF0YSA9IGRhdGEuc2xpY2UoKTtcbiAgdmFyIHJ1bm5pbmdTb3J0ZXJzID0gaW5uZXJTb3J0ZXJTdGF0ZXMuZmlsdGVyKGZ1bmN0aW9uIChfcmVmNCkge1xuICAgIHZhciBzb3J0ZXIgPSBfcmVmNC5jb2x1bW4uc29ydGVyLFxuICAgICAgICBzb3J0T3JkZXIgPSBfcmVmNC5zb3J0T3JkZXI7XG4gICAgcmV0dXJuIGdldFNvcnRGdW5jdGlvbihzb3J0ZXIpICYmIHNvcnRPcmRlcjtcbiAgfSk7IC8vIFNraXAgaWYgbm8gc29ydGVyIG5lZWRlZFxuXG4gIGlmICghcnVubmluZ1NvcnRlcnMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGNsb25lRGF0YTtcbiAgfVxuXG4gIHJldHVybiBjbG9uZURhdGEuc29ydChmdW5jdGlvbiAocmVjb3JkMSwgcmVjb3JkMikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVubmluZ1NvcnRlcnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIHZhciBzb3J0ZXJTdGF0ZSA9IHJ1bm5pbmdTb3J0ZXJzW2ldO1xuICAgICAgdmFyIHNvcnRlciA9IHNvcnRlclN0YXRlLmNvbHVtbi5zb3J0ZXIsXG4gICAgICAgICAgc29ydE9yZGVyID0gc29ydGVyU3RhdGUuc29ydE9yZGVyO1xuICAgICAgdmFyIGNvbXBhcmVGbiA9IGdldFNvcnRGdW5jdGlvbihzb3J0ZXIpO1xuXG4gICAgICBpZiAoY29tcGFyZUZuICYmIHNvcnRPcmRlcikge1xuICAgICAgICB2YXIgY29tcGFyZVJlc3VsdCA9IGNvbXBhcmVGbihyZWNvcmQxLCByZWNvcmQyLCBzb3J0T3JkZXIpO1xuXG4gICAgICAgIGlmIChjb21wYXJlUmVzdWx0ICE9PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHNvcnRPcmRlciA9PT0gQVNDRU5EID8gY29tcGFyZVJlc3VsdCA6IC1jb21wYXJlUmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH0pLm1hcChmdW5jdGlvbiAocmVjb3JkKSB7XG4gICAgdmFyIHN1YlJlY29yZHMgPSByZWNvcmRbY2hpbGRyZW5Db2x1bW5OYW1lXTtcblxuICAgIGlmIChzdWJSZWNvcmRzKSB7XG4gICAgICByZXR1cm4gKDAsIF9leHRlbmRzM1tcImRlZmF1bHRcIl0pKCgwLCBfZXh0ZW5kczNbXCJkZWZhdWx0XCJdKSh7fSwgcmVjb3JkKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKSh7fSwgY2hpbGRyZW5Db2x1bW5OYW1lLCBnZXRTb3J0RGF0YShzdWJSZWNvcmRzLCBzb3J0U3RhdGVzLCBjaGlsZHJlbkNvbHVtbk5hbWUpKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZUZpbHRlclNvcnRlcihfcmVmNSkge1xuICB2YXIgcHJlZml4Q2xzID0gX3JlZjUucHJlZml4Q2xzLFxuICAgICAgbWVyZ2VkQ29sdW1ucyA9IF9yZWY1Lm1lcmdlZENvbHVtbnMsXG4gICAgICBvblNvcnRlckNoYW5nZSA9IF9yZWY1Lm9uU29ydGVyQ2hhbmdlLFxuICAgICAgc29ydERpcmVjdGlvbnMgPSBfcmVmNS5zb3J0RGlyZWN0aW9ucyxcbiAgICAgIHRhYmxlTG9jYWxlID0gX3JlZjUudGFibGVMb2NhbGUsXG4gICAgICBzaG93U29ydGVyVG9vbHRpcCA9IF9yZWY1LnNob3dTb3J0ZXJUb29sdGlwO1xuXG4gIHZhciBfUmVhY3QkdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZShjb2xsZWN0U29ydFN0YXRlcyhtZXJnZWRDb2x1bW5zLCB0cnVlKSksXG4gICAgICBfUmVhY3QkdXNlU3RhdGUyID0gKDAsIF9zbGljZWRUb0FycmF5MltcImRlZmF1bHRcIl0pKF9SZWFjdCR1c2VTdGF0ZSwgMiksXG4gICAgICBzb3J0U3RhdGVzID0gX1JlYWN0JHVzZVN0YXRlMlswXSxcbiAgICAgIHNldFNvcnRTdGF0ZXMgPSBfUmVhY3QkdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBtZXJnZWRTb3J0ZXJTdGF0ZXMgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdmFsaWRhdGUgPSB0cnVlO1xuICAgIHZhciBjb2xsZWN0ZWRTdGF0ZXMgPSBjb2xsZWN0U29ydFN0YXRlcyhtZXJnZWRDb2x1bW5zLCBmYWxzZSk7IC8vIFJldHVybiBpZiBub3QgY29udHJvbGxlZFxuXG4gICAgaWYgKCFjb2xsZWN0ZWRTdGF0ZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gc29ydFN0YXRlcztcbiAgICB9XG5cbiAgICB2YXIgdmFsaWRhdGVTdGF0ZXMgPSBbXTtcblxuICAgIGZ1bmN0aW9uIHBhdGNoU3RhdGVzKHN0YXRlKSB7XG4gICAgICBpZiAodmFsaWRhdGUpIHtcbiAgICAgICAgdmFsaWRhdGVTdGF0ZXMucHVzaChzdGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWxpZGF0ZVN0YXRlcy5wdXNoKCgwLCBfZXh0ZW5kczNbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMzW1wiZGVmYXVsdFwiXSkoe30sIHN0YXRlKSwge1xuICAgICAgICAgIHNvcnRPcmRlcjogbnVsbFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG11bHRpcGxlTW9kZSA9IG51bGw7XG4gICAgY29sbGVjdGVkU3RhdGVzLmZvckVhY2goZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICBpZiAobXVsdGlwbGVNb2RlID09PSBudWxsKSB7XG4gICAgICAgIHBhdGNoU3RhdGVzKHN0YXRlKTtcblxuICAgICAgICBpZiAoc3RhdGUuc29ydE9yZGVyKSB7XG4gICAgICAgICAgaWYgKHN0YXRlLm11bHRpcGxlUHJpb3JpdHkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZSA9IGZhbHNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtdWx0aXBsZU1vZGUgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChtdWx0aXBsZU1vZGUgJiYgc3RhdGUubXVsdGlwbGVQcmlvcml0eSAhPT0gZmFsc2UpIHtcbiAgICAgICAgcGF0Y2hTdGF0ZXMoc3RhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsaWRhdGUgPSBmYWxzZTtcbiAgICAgICAgcGF0Y2hTdGF0ZXMoc3RhdGUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB2YWxpZGF0ZVN0YXRlcztcbiAgfSwgW21lcmdlZENvbHVtbnMsIHNvcnRTdGF0ZXNdKTsgLy8gR2V0IHJlbmRlciBjb2x1bW5zIHRpdGxlIHJlcXVpcmVkIHByb3BzXG5cbiAgdmFyIGNvbHVtblRpdGxlU29ydGVyUHJvcHMgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc29ydENvbHVtbnMgPSBtZXJnZWRTb3J0ZXJTdGF0ZXMubWFwKGZ1bmN0aW9uIChfcmVmNikge1xuICAgICAgdmFyIGNvbHVtbiA9IF9yZWY2LmNvbHVtbixcbiAgICAgICAgICBzb3J0T3JkZXIgPSBfcmVmNi5zb3J0T3JkZXI7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2x1bW46IGNvbHVtbixcbiAgICAgICAgb3JkZXI6IHNvcnRPcmRlclxuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgc29ydENvbHVtbnM6IHNvcnRDb2x1bW5zLFxuICAgICAgLy8gTGVnYWN5XG4gICAgICBzb3J0Q29sdW1uOiBzb3J0Q29sdW1uc1swXSAmJiBzb3J0Q29sdW1uc1swXS5jb2x1bW4sXG4gICAgICBzb3J0T3JkZXI6IHNvcnRDb2x1bW5zWzBdICYmIHNvcnRDb2x1bW5zWzBdLm9yZGVyXG4gICAgfTtcbiAgfSwgW21lcmdlZFNvcnRlclN0YXRlc10pO1xuXG4gIGZ1bmN0aW9uIHRyaWdnZXJTb3J0ZXIoc29ydFN0YXRlKSB7XG4gICAgdmFyIG5ld1NvcnRlclN0YXRlcztcblxuICAgIGlmIChzb3J0U3RhdGUubXVsdGlwbGVQcmlvcml0eSA9PT0gZmFsc2UgfHwgIW1lcmdlZFNvcnRlclN0YXRlcy5sZW5ndGggfHwgbWVyZ2VkU29ydGVyU3RhdGVzWzBdLm11bHRpcGxlUHJpb3JpdHkgPT09IGZhbHNlKSB7XG4gICAgICBuZXdTb3J0ZXJTdGF0ZXMgPSBbc29ydFN0YXRlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3U29ydGVyU3RhdGVzID0gW10uY29uY2F0KCgwLCBfdG9Db25zdW1hYmxlQXJyYXkyW1wiZGVmYXVsdFwiXSkobWVyZ2VkU29ydGVyU3RhdGVzLmZpbHRlcihmdW5jdGlvbiAoX3JlZjcpIHtcbiAgICAgICAgdmFyIGtleSA9IF9yZWY3LmtleTtcbiAgICAgICAgcmV0dXJuIGtleSAhPT0gc29ydFN0YXRlLmtleTtcbiAgICAgIH0pKSwgW3NvcnRTdGF0ZV0pO1xuICAgIH1cblxuICAgIHNldFNvcnRTdGF0ZXMobmV3U29ydGVyU3RhdGVzKTtcbiAgICBvblNvcnRlckNoYW5nZShnZW5lcmF0ZVNvcnRlckluZm8obmV3U29ydGVyU3RhdGVzKSwgbmV3U29ydGVyU3RhdGVzKTtcbiAgfVxuXG4gIHZhciB0cmFuc2Zvcm1Db2x1bW5zID0gZnVuY3Rpb24gdHJhbnNmb3JtQ29sdW1ucyhpbm5lckNvbHVtbnMpIHtcbiAgICByZXR1cm4gaW5qZWN0U29ydGVyKHByZWZpeENscywgaW5uZXJDb2x1bW5zLCBtZXJnZWRTb3J0ZXJTdGF0ZXMsIHRyaWdnZXJTb3J0ZXIsIHNvcnREaXJlY3Rpb25zLCB0YWJsZUxvY2FsZSwgc2hvd1NvcnRlclRvb2x0aXApO1xuICB9O1xuXG4gIHZhciBnZXRTb3J0ZXJzID0gZnVuY3Rpb24gZ2V0U29ydGVycygpIHtcbiAgICByZXR1cm4gZ2VuZXJhdGVTb3J0ZXJJbmZvKG1lcmdlZFNvcnRlclN0YXRlcyk7XG4gIH07XG5cbiAgcmV0dXJuIFt0cmFuc2Zvcm1Db2x1bW5zLCBtZXJnZWRTb3J0ZXJTdGF0ZXMsIGNvbHVtblRpdGxlU29ydGVyUHJvcHMsIGdldFNvcnRlcnNdO1xufSIsIid1c2Ugc3RyaWN0JztcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbiAgfSk7XG4gIGV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbiAgXG4gIHZhciBfQ2FyZXREb3duT3V0bGluZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoJy4vbGliL2ljb25zL0NhcmV0RG93bk91dGxpbmVkJykpO1xuICBcbiAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuICBcbiAgdmFyIF9kZWZhdWx0ID0gX0NhcmV0RG93bk91dGxpbmVkO1xuICBleHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcbiAgbW9kdWxlLmV4cG9ydHMgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlV2lsZGNhcmRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfQ2FyZXREb3duT3V0bGluZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9pY29ucy1zdmcvbGliL2Fzbi9DYXJldERvd25PdXRsaW5lZFwiKSk7XG5cbnZhciBfQW50ZEljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9jb21wb25lbnRzL0FudGRJY29uXCIpKTtcblxuLy8gR0VORVJBVEUgQlkgLi9zY3JpcHRzL2dlbmVyYXRlLnRzXG4vLyBET04gTk9UIEVESVQgSVQgTUFOVUFMTFlcbnZhciBDYXJldERvd25PdXRsaW5lZCA9IGZ1bmN0aW9uIENhcmV0RG93bk91dGxpbmVkKHByb3BzLCByZWYpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9BbnRkSWNvbi5kZWZhdWx0LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywge1xuICAgIHJlZjogcmVmLFxuICAgIGljb246IF9DYXJldERvd25PdXRsaW5lZC5kZWZhdWx0XG4gIH0pKTtcbn07XG5cbkNhcmV0RG93bk91dGxpbmVkLmRpc3BsYXlOYW1lID0gJ0NhcmV0RG93bk91dGxpbmVkJztcblxudmFyIF9kZWZhdWx0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoQ2FyZXREb3duT3V0bGluZWQpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcbi8vIFRoaXMgaWNvbiBmaWxlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIENhcmV0RG93bk91dGxpbmVkID0geyBcImljb25cIjogeyBcInRhZ1wiOiBcInN2Z1wiLCBcImF0dHJzXCI6IHsgXCJ2aWV3Qm94XCI6IFwiMCAwIDEwMjQgMTAyNFwiLCBcImZvY3VzYWJsZVwiOiBcImZhbHNlXCIgfSwgXCJjaGlsZHJlblwiOiBbeyBcInRhZ1wiOiBcInBhdGhcIiwgXCJhdHRyc1wiOiB7IFwiZFwiOiBcIk04NDAuNCAzMDBIMTgzLjZjLTE5LjcgMC0zMC43IDIwLjgtMTguNSAzNWwzMjguNCAzODAuOGM5LjQgMTAuOSAyNy41IDEwLjkgMzcgMEw4NTguOSAzMzVjMTIuMi0xNC4yIDEuMi0zNS0xOC41LTM1elwiIH0gfV0gfSwgXCJuYW1lXCI6IFwiY2FyZXQtZG93blwiLCBcInRoZW1lXCI6IFwib3V0bGluZWRcIiB9O1xuZXhwb3J0cy5kZWZhdWx0ID0gQ2FyZXREb3duT3V0bGluZWQ7XG4iLCIndXNlIHN0cmljdCc7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG4gIH0pO1xuICBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG4gIFxuICB2YXIgX0NhcmV0VXBPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZSgnLi9saWIvaWNvbnMvQ2FyZXRVcE91dGxpbmVkJykpO1xuICBcbiAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuICBcbiAgdmFyIF9kZWZhdWx0ID0gX0NhcmV0VXBPdXRsaW5lZDtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG4gIG1vZHVsZS5leHBvcnRzID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX0NhcmV0VXBPdXRsaW5lZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBhbnQtZGVzaWduL2ljb25zLXN2Zy9saWIvYXNuL0NhcmV0VXBPdXRsaW5lZFwiKSk7XG5cbnZhciBfQW50ZEljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9jb21wb25lbnRzL0FudGRJY29uXCIpKTtcblxuLy8gR0VORVJBVEUgQlkgLi9zY3JpcHRzL2dlbmVyYXRlLnRzXG4vLyBET04gTk9UIEVESVQgSVQgTUFOVUFMTFlcbnZhciBDYXJldFVwT3V0bGluZWQgPSBmdW5jdGlvbiBDYXJldFVwT3V0bGluZWQocHJvcHMsIHJlZikge1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0FudGRJY29uLmRlZmF1bHQsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgcmVmOiByZWYsXG4gICAgaWNvbjogX0NhcmV0VXBPdXRsaW5lZC5kZWZhdWx0XG4gIH0pKTtcbn07XG5cbkNhcmV0VXBPdXRsaW5lZC5kaXNwbGF5TmFtZSA9ICdDYXJldFVwT3V0bGluZWQnO1xuXG52YXIgX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihDYXJldFVwT3V0bGluZWQpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcbi8vIFRoaXMgaWNvbiBmaWxlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIENhcmV0VXBPdXRsaW5lZCA9IHsgXCJpY29uXCI6IHsgXCJ0YWdcIjogXCJzdmdcIiwgXCJhdHRyc1wiOiB7IFwidmlld0JveFwiOiBcIjAgMCAxMDI0IDEwMjRcIiwgXCJmb2N1c2FibGVcIjogXCJmYWxzZVwiIH0sIFwiY2hpbGRyZW5cIjogW3sgXCJ0YWdcIjogXCJwYXRoXCIsIFwiYXR0cnNcIjogeyBcImRcIjogXCJNODU4LjkgNjg5TDUzMC41IDMwOC4yYy05LjQtMTAuOS0yNy41LTEwLjktMzcgMEwxNjUuMSA2ODljLTEyLjIgMTQuMi0xLjIgMzUgMTguNSAzNWg2NTYuOGMxOS43IDAgMzAuNy0yMC44IDE4LjUtMzV6XCIgfSB9XSB9LCBcIm5hbWVcIjogXCJjYXJldC11cFwiLCBcInRoZW1lXCI6IFwib3V0bGluZWRcIiB9O1xuZXhwb3J0cy5kZWZhdWx0ID0gQ2FyZXRVcE91dGxpbmVkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZ2V0RmlsdGVyRGF0YSA9IGdldEZpbHRlckRhdGE7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9zbGljZWRUb0FycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiKSk7XG5cbnZhciBfZXh0ZW5kczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIikpO1xuXG52YXIgX3RvQ29uc3VtYWJsZUFycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIikpO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiLi4vLi4vdXRpbFwiKTtcblxudmFyIF9GaWx0ZXJEcm9wZG93biA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vRmlsdGVyRHJvcGRvd25cIikpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIGNvbGxlY3RGaWx0ZXJTdGF0ZXMoY29sdW1ucywgaW5pdCwgcG9zKSB7XG4gIHZhciBmaWx0ZXJTdGF0ZXMgPSBbXTtcbiAgKGNvbHVtbnMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGNvbHVtbiwgaW5kZXgpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgY29sdW1uUG9zID0gKDAsIF91dGlsLmdldENvbHVtblBvcykoaW5kZXgsIHBvcyk7XG5cbiAgICBpZiAoJ2NoaWxkcmVuJyBpbiBjb2x1bW4pIHtcbiAgICAgIGZpbHRlclN0YXRlcyA9IFtdLmNvbmNhdCgoMCwgX3RvQ29uc3VtYWJsZUFycmF5MltcImRlZmF1bHRcIl0pKGZpbHRlclN0YXRlcyksICgwLCBfdG9Db25zdW1hYmxlQXJyYXkyW1wiZGVmYXVsdFwiXSkoY29sbGVjdEZpbHRlclN0YXRlcyhjb2x1bW4uY2hpbGRyZW4sIGluaXQsIGNvbHVtblBvcykpKTtcbiAgICB9IGVsc2UgaWYgKGNvbHVtbi5maWx0ZXJzIHx8ICdmaWx0ZXJEcm9wZG93bicgaW4gY29sdW1uIHx8ICdvbkZpbHRlcicgaW4gY29sdW1uKSB7XG4gICAgICBpZiAoJ2ZpbHRlcmVkVmFsdWUnIGluIGNvbHVtbikge1xuICAgICAgICAvLyBDb250cm9sbGVkXG4gICAgICAgIHZhciBmaWx0ZXJlZFZhbHVlcyA9IGNvbHVtbi5maWx0ZXJlZFZhbHVlO1xuXG4gICAgICAgIGlmICghKCdmaWx0ZXJEcm9wZG93bicgaW4gY29sdW1uKSkge1xuICAgICAgICAgIGZpbHRlcmVkVmFsdWVzID0gKF9hID0gZmlsdGVyZWRWYWx1ZXMgPT09IG51bGwgfHwgZmlsdGVyZWRWYWx1ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZpbHRlcmVkVmFsdWVzLm1hcChTdHJpbmcpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBmaWx0ZXJlZFZhbHVlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGZpbHRlclN0YXRlcy5wdXNoKHtcbiAgICAgICAgICBjb2x1bW46IGNvbHVtbixcbiAgICAgICAgICBrZXk6ICgwLCBfdXRpbC5nZXRDb2x1bW5LZXkpKGNvbHVtbiwgY29sdW1uUG9zKSxcbiAgICAgICAgICBmaWx0ZXJlZEtleXM6IGZpbHRlcmVkVmFsdWVzLFxuICAgICAgICAgIGZvcmNlRmlsdGVyZWQ6IGNvbHVtbi5maWx0ZXJlZFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFVuY29udHJvbGxlZFxuICAgICAgICBmaWx0ZXJTdGF0ZXMucHVzaCh7XG4gICAgICAgICAgY29sdW1uOiBjb2x1bW4sXG4gICAgICAgICAga2V5OiAoMCwgX3V0aWwuZ2V0Q29sdW1uS2V5KShjb2x1bW4sIGNvbHVtblBvcyksXG4gICAgICAgICAgZmlsdGVyZWRLZXlzOiBpbml0ICYmIGNvbHVtbi5kZWZhdWx0RmlsdGVyZWRWYWx1ZSA/IGNvbHVtbi5kZWZhdWx0RmlsdGVyZWRWYWx1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBmb3JjZUZpbHRlcmVkOiBjb2x1bW4uZmlsdGVyZWRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGZpbHRlclN0YXRlcztcbn1cblxuZnVuY3Rpb24gaW5qZWN0RmlsdGVyKHByZWZpeENscywgZHJvcGRvd25QcmVmaXhDbHMsIGNvbHVtbnMsIGZpbHRlclN0YXRlcywgdHJpZ2dlckZpbHRlciwgZ2V0UG9wdXBDb250YWluZXIsIGxvY2FsZSwgcG9zKSB7XG4gIHJldHVybiBjb2x1bW5zLm1hcChmdW5jdGlvbiAoY29sdW1uLCBpbmRleCkge1xuICAgIHZhciBjb2x1bW5Qb3MgPSAoMCwgX3V0aWwuZ2V0Q29sdW1uUG9zKShpbmRleCwgcG9zKTtcbiAgICB2YXIgX2NvbHVtbiRmaWx0ZXJNdWx0aXBsID0gY29sdW1uLmZpbHRlck11bHRpcGxlLFxuICAgICAgICBmaWx0ZXJNdWx0aXBsZSA9IF9jb2x1bW4kZmlsdGVyTXVsdGlwbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9jb2x1bW4kZmlsdGVyTXVsdGlwbDtcbiAgICB2YXIgbmV3Q29sdW1uID0gY29sdW1uO1xuXG4gICAgaWYgKG5ld0NvbHVtbi5maWx0ZXJzIHx8IG5ld0NvbHVtbi5maWx0ZXJEcm9wZG93bikge1xuICAgICAgdmFyIGNvbHVtbktleSA9ICgwLCBfdXRpbC5nZXRDb2x1bW5LZXkpKG5ld0NvbHVtbiwgY29sdW1uUG9zKTtcbiAgICAgIHZhciBmaWx0ZXJTdGF0ZSA9IGZpbHRlclN0YXRlcy5maW5kKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgIHZhciBrZXkgPSBfcmVmLmtleTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbktleSA9PT0ga2V5O1xuICAgICAgfSk7XG4gICAgICBuZXdDb2x1bW4gPSAoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCBuZXdDb2x1bW4pLCB7XG4gICAgICAgIHRpdGxlOiBmdW5jdGlvbiB0aXRsZShyZW5kZXJQcm9wcykge1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfRmlsdGVyRHJvcGRvd25bXCJkZWZhdWx0XCJdLCB7XG4gICAgICAgICAgICBwcmVmaXhDbHM6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZmlsdGVyXCIpLFxuICAgICAgICAgICAgZHJvcGRvd25QcmVmaXhDbHM6IGRyb3Bkb3duUHJlZml4Q2xzLFxuICAgICAgICAgICAgY29sdW1uOiBuZXdDb2x1bW4sXG4gICAgICAgICAgICBjb2x1bW5LZXk6IGNvbHVtbktleSxcbiAgICAgICAgICAgIGZpbHRlclN0YXRlOiBmaWx0ZXJTdGF0ZSxcbiAgICAgICAgICAgIGZpbHRlck11bHRpcGxlOiBmaWx0ZXJNdWx0aXBsZSxcbiAgICAgICAgICAgIHRyaWdnZXJGaWx0ZXI6IHRyaWdnZXJGaWx0ZXIsXG4gICAgICAgICAgICBsb2NhbGU6IGxvY2FsZSxcbiAgICAgICAgICAgIGdldFBvcHVwQ29udGFpbmVyOiBnZXRQb3B1cENvbnRhaW5lclxuICAgICAgICAgIH0sICgwLCBfdXRpbC5yZW5kZXJDb2x1bW5UaXRsZSkoY29sdW1uLnRpdGxlLCByZW5kZXJQcm9wcykpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoJ2NoaWxkcmVuJyBpbiBuZXdDb2x1bW4pIHtcbiAgICAgIG5ld0NvbHVtbiA9ICgwLCBfZXh0ZW5kczJbXCJkZWZhdWx0XCJdKSgoMCwgX2V4dGVuZHMyW1wiZGVmYXVsdFwiXSkoe30sIG5ld0NvbHVtbiksIHtcbiAgICAgICAgY2hpbGRyZW46IGluamVjdEZpbHRlcihwcmVmaXhDbHMsIGRyb3Bkb3duUHJlZml4Q2xzLCBuZXdDb2x1bW4uY2hpbGRyZW4sIGZpbHRlclN0YXRlcywgdHJpZ2dlckZpbHRlciwgZ2V0UG9wdXBDb250YWluZXIsIGxvY2FsZSwgY29sdW1uUG9zKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGZsYXR0ZW5LZXlzKGZpbHRlcnMpIHtcbiAgdmFyIGtleXMgPSBbXTtcbiAgKGZpbHRlcnMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgdmFyIHZhbHVlID0gX3JlZjIudmFsdWUsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZjIuY2hpbGRyZW47XG4gICAga2V5cy5wdXNoKHZhbHVlKTtcblxuICAgIGlmIChjaGlsZHJlbikge1xuICAgICAga2V5cyA9IFtdLmNvbmNhdCgoMCwgX3RvQ29uc3VtYWJsZUFycmF5MltcImRlZmF1bHRcIl0pKGtleXMpLCAoMCwgX3RvQ29uc3VtYWJsZUFycmF5MltcImRlZmF1bHRcIl0pKGZsYXR0ZW5LZXlzKGNoaWxkcmVuKSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBrZXlzO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUZpbHRlckluZm8oZmlsdGVyU3RhdGVzKSB7XG4gIHZhciBjdXJyZW50RmlsdGVycyA9IHt9O1xuICBmaWx0ZXJTdGF0ZXMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjMpIHtcbiAgICB2YXIga2V5ID0gX3JlZjMua2V5LFxuICAgICAgICBmaWx0ZXJlZEtleXMgPSBfcmVmMy5maWx0ZXJlZEtleXMsXG4gICAgICAgIGNvbHVtbiA9IF9yZWYzLmNvbHVtbjtcbiAgICB2YXIgZmlsdGVycyA9IGNvbHVtbi5maWx0ZXJzLFxuICAgICAgICBmaWx0ZXJEcm9wZG93biA9IGNvbHVtbi5maWx0ZXJEcm9wZG93bjtcblxuICAgIGlmIChmaWx0ZXJEcm9wZG93bikge1xuICAgICAgY3VycmVudEZpbHRlcnNba2V5XSA9IGZpbHRlcmVkS2V5cyB8fCBudWxsO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXJlZEtleXMpKSB7XG4gICAgICB2YXIga2V5cyA9IGZsYXR0ZW5LZXlzKGZpbHRlcnMpO1xuICAgICAgY3VycmVudEZpbHRlcnNba2V5XSA9IGtleXMuZmlsdGVyKGZ1bmN0aW9uIChvcmlnaW5LZXkpIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkS2V5cy5pbmNsdWRlcyhTdHJpbmcob3JpZ2luS2V5KSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudEZpbHRlcnNba2V5XSA9IG51bGw7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGN1cnJlbnRGaWx0ZXJzO1xufVxuXG5mdW5jdGlvbiBnZXRGaWx0ZXJEYXRhKGRhdGEsIGZpbHRlclN0YXRlcykge1xuICByZXR1cm4gZmlsdGVyU3RhdGVzLnJlZHVjZShmdW5jdGlvbiAoY3VycmVudERhdGEsIGZpbHRlclN0YXRlKSB7XG4gICAgdmFyIF9maWx0ZXJTdGF0ZSRjb2x1bW4gPSBmaWx0ZXJTdGF0ZS5jb2x1bW4sXG4gICAgICAgIG9uRmlsdGVyID0gX2ZpbHRlclN0YXRlJGNvbHVtbi5vbkZpbHRlcixcbiAgICAgICAgZmlsdGVycyA9IF9maWx0ZXJTdGF0ZSRjb2x1bW4uZmlsdGVycyxcbiAgICAgICAgZmlsdGVyZWRLZXlzID0gZmlsdGVyU3RhdGUuZmlsdGVyZWRLZXlzO1xuXG4gICAgaWYgKG9uRmlsdGVyICYmIGZpbHRlcmVkS2V5cyAmJiBmaWx0ZXJlZEtleXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gY3VycmVudERhdGEuZmlsdGVyKGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkS2V5cy5zb21lKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICB2YXIga2V5cyA9IGZsYXR0ZW5LZXlzKGZpbHRlcnMpO1xuICAgICAgICAgIHZhciBrZXlJbmRleCA9IGtleXMuZmluZEluZGV4KGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKGspID09PSBTdHJpbmcoa2V5KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YXIgcmVhbEtleSA9IGtleUluZGV4ICE9PSAtMSA/IGtleXNba2V5SW5kZXhdIDoga2V5O1xuICAgICAgICAgIHJldHVybiBvbkZpbHRlcihyZWFsS2V5LCByZWNvcmQpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50RGF0YTtcbiAgfSwgZGF0YSk7XG59XG5cbmZ1bmN0aW9uIHVzZUZpbHRlcihfcmVmNCkge1xuICB2YXIgcHJlZml4Q2xzID0gX3JlZjQucHJlZml4Q2xzLFxuICAgICAgZHJvcGRvd25QcmVmaXhDbHMgPSBfcmVmNC5kcm9wZG93blByZWZpeENscyxcbiAgICAgIG1lcmdlZENvbHVtbnMgPSBfcmVmNC5tZXJnZWRDb2x1bW5zLFxuICAgICAgb25GaWx0ZXJDaGFuZ2UgPSBfcmVmNC5vbkZpbHRlckNoYW5nZSxcbiAgICAgIGdldFBvcHVwQ29udGFpbmVyID0gX3JlZjQuZ2V0UG9wdXBDb250YWluZXIsXG4gICAgICB0YWJsZUxvY2FsZSA9IF9yZWY0LmxvY2FsZTtcblxuICB2YXIgX1JlYWN0JHVzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUoY29sbGVjdEZpbHRlclN0YXRlcyhtZXJnZWRDb2x1bW5zLCB0cnVlKSksXG4gICAgICBfUmVhY3QkdXNlU3RhdGUyID0gKDAsIF9zbGljZWRUb0FycmF5MltcImRlZmF1bHRcIl0pKF9SZWFjdCR1c2VTdGF0ZSwgMiksXG4gICAgICBmaWx0ZXJTdGF0ZXMgPSBfUmVhY3QkdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0RmlsdGVyU3RhdGVzID0gX1JlYWN0JHVzZVN0YXRlMlsxXTtcblxuICB2YXIgbWVyZ2VkRmlsdGVyU3RhdGVzID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvbGxlY3RlZFN0YXRlcyA9IGNvbGxlY3RGaWx0ZXJTdGF0ZXMobWVyZ2VkQ29sdW1ucywgZmFsc2UpOyAvLyBSZXR1cm4gaWYgbm90IGNvbnRyb2xsZWRcblxuICAgIGlmIChjb2xsZWN0ZWRTdGF0ZXMuZXZlcnkoZnVuY3Rpb24gKF9yZWY1KSB7XG4gICAgICB2YXIgZmlsdGVyZWRLZXlzID0gX3JlZjUuZmlsdGVyZWRLZXlzO1xuICAgICAgcmV0dXJuIGZpbHRlcmVkS2V5cyA9PT0gdW5kZWZpbmVkO1xuICAgIH0pKSB7XG4gICAgICByZXR1cm4gZmlsdGVyU3RhdGVzO1xuICAgIH1cblxuICAgIHJldHVybiBjb2xsZWN0ZWRTdGF0ZXM7XG4gIH0sIFttZXJnZWRDb2x1bW5zLCBmaWx0ZXJTdGF0ZXNdKTtcbiAgdmFyIGdldEZpbHRlcnMgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGdlbmVyYXRlRmlsdGVySW5mbyhtZXJnZWRGaWx0ZXJTdGF0ZXMpO1xuICB9LCBbbWVyZ2VkRmlsdGVyU3RhdGVzXSk7XG5cbiAgdmFyIHRyaWdnZXJGaWx0ZXIgPSBmdW5jdGlvbiB0cmlnZ2VyRmlsdGVyKGZpbHRlclN0YXRlKSB7XG4gICAgdmFyIG5ld0ZpbHRlclN0YXRlcyA9IG1lcmdlZEZpbHRlclN0YXRlcy5maWx0ZXIoZnVuY3Rpb24gKF9yZWY2KSB7XG4gICAgICB2YXIga2V5ID0gX3JlZjYua2V5O1xuICAgICAgcmV0dXJuIGtleSAhPT0gZmlsdGVyU3RhdGUua2V5O1xuICAgIH0pO1xuICAgIG5ld0ZpbHRlclN0YXRlcy5wdXNoKGZpbHRlclN0YXRlKTtcbiAgICBzZXRGaWx0ZXJTdGF0ZXMobmV3RmlsdGVyU3RhdGVzKTtcbiAgICBvbkZpbHRlckNoYW5nZShnZW5lcmF0ZUZpbHRlckluZm8obmV3RmlsdGVyU3RhdGVzKSwgbmV3RmlsdGVyU3RhdGVzKTtcbiAgfTtcblxuICB2YXIgdHJhbnNmb3JtQ29sdW1ucyA9IGZ1bmN0aW9uIHRyYW5zZm9ybUNvbHVtbnMoaW5uZXJDb2x1bW5zKSB7XG4gICAgcmV0dXJuIGluamVjdEZpbHRlcihwcmVmaXhDbHMsIGRyb3Bkb3duUHJlZml4Q2xzLCBpbm5lckNvbHVtbnMsIG1lcmdlZEZpbHRlclN0YXRlcywgdHJpZ2dlckZpbHRlciwgZ2V0UG9wdXBDb250YWluZXIsIHRhYmxlTG9jYWxlKTtcbiAgfTtcblxuICByZXR1cm4gW3RyYW5zZm9ybUNvbHVtbnMsIG1lcmdlZEZpbHRlclN0YXRlcywgZ2V0RmlsdGVyc107XG59XG5cbnZhciBfZGVmYXVsdCA9IHVzZUZpbHRlcjtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuXG52YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIikpO1xuXG52YXIgX3NsaWNlZFRvQXJyYXkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfaXNFcXVhbCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImxvZGFzaC9pc0VxdWFsXCIpKTtcblxudmFyIF9GaWx0ZXJGaWxsZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9pY29ucy9GaWx0ZXJGaWxsZWRcIikpO1xuXG52YXIgX2J1dHRvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uLy4uLy4uL2J1dHRvblwiKSk7XG5cbnZhciBfbWVudSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uLy4uLy4uL21lbnVcIikpO1xuXG52YXIgX2NoZWNrYm94ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vLi4vY2hlY2tib3hcIikpO1xuXG52YXIgX3JhZGlvID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vLi4vcmFkaW9cIikpO1xuXG52YXIgX2Ryb3Bkb3duID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vLi4vZHJvcGRvd25cIikpO1xuXG52YXIgX2VtcHR5ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vLi4vZW1wdHlcIikpO1xuXG52YXIgX0ZpbHRlcldyYXBwZXIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL0ZpbHRlcldyYXBwZXJcIikpO1xuXG52YXIgX3VzZVN5bmNTdGF0ZTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi8uLi9fdXRpbC9ob29rcy91c2VTeW5jU3RhdGVcIikpO1xuXG52YXIgX2NvbnRleHQgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29uZmlnLXByb3ZpZGVyL2NvbnRleHRcIik7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxudmFyIFN1Yk1lbnUgPSBfbWVudVtcImRlZmF1bHRcIl0uU3ViTWVudSxcbiAgICBNZW51SXRlbSA9IF9tZW51W1wiZGVmYXVsdFwiXS5JdGVtO1xuXG5mdW5jdGlvbiBoYXNTdWJNZW51KGZpbHRlcnMpIHtcbiAgcmV0dXJuIGZpbHRlcnMuc29tZShmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRmlsdGVySXRlbXMoX3JlZjIpIHtcbiAgdmFyIGZpbHRlcnMgPSBfcmVmMi5maWx0ZXJzLFxuICAgICAgcHJlZml4Q2xzID0gX3JlZjIucHJlZml4Q2xzLFxuICAgICAgZmlsdGVyZWRLZXlzID0gX3JlZjIuZmlsdGVyZWRLZXlzLFxuICAgICAgZmlsdGVyTXVsdGlwbGUgPSBfcmVmMi5maWx0ZXJNdWx0aXBsZSxcbiAgICAgIGxvY2FsZSA9IF9yZWYyLmxvY2FsZTtcblxuICBpZiAoZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAvLyB3cmFwcGVkIHdpdGggPGRpdiAvPiB0byBhdm9pZCByZWFjdCB3YXJuaW5nXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMjU5NzlcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgbWFyZ2luOiAnMTZweCAwJ1xuICAgICAgfVxuICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9lbXB0eVtcImRlZmF1bHRcIl0sIHtcbiAgICAgIGltYWdlOiBfZW1wdHlbXCJkZWZhdWx0XCJdLlBSRVNFTlRFRF9JTUFHRV9TSU1QTEUsXG4gICAgICBkZXNjcmlwdGlvbjogbG9jYWxlLmZpbHRlckVtcHR5VGV4dCxcbiAgICAgIGltYWdlU3R5bGU6IHtcbiAgICAgICAgaGVpZ2h0OiAyNFxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiBmaWx0ZXJzLm1hcChmdW5jdGlvbiAoZmlsdGVyLCBpbmRleCkge1xuICAgIHZhciBrZXkgPSBTdHJpbmcoZmlsdGVyLnZhbHVlKTtcblxuICAgIGlmIChmaWx0ZXIuY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTdWJNZW51LCB7XG4gICAgICAgIGtleToga2V5IHx8IGluZGV4LFxuICAgICAgICB0aXRsZTogZmlsdGVyLnRleHQsXG4gICAgICAgIHBvcHVwQ2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWRyb3Bkb3duLXN1Ym1lbnVcIilcbiAgICAgIH0sIHJlbmRlckZpbHRlckl0ZW1zKHtcbiAgICAgICAgZmlsdGVyczogZmlsdGVyLmNoaWxkcmVuLFxuICAgICAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgICAgZmlsdGVyZWRLZXlzOiBmaWx0ZXJlZEtleXMsXG4gICAgICAgIGZpbHRlck11bHRpcGxlOiBmaWx0ZXJNdWx0aXBsZSxcbiAgICAgICAgbG9jYWxlOiBsb2NhbGVcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICB2YXIgQ29tcG9uZW50ID0gZmlsdGVyTXVsdGlwbGUgPyBfY2hlY2tib3hbXCJkZWZhdWx0XCJdIDogX3JhZGlvW1wiZGVmYXVsdFwiXTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTWVudUl0ZW0sIHtcbiAgICAgIGtleTogZmlsdGVyLnZhbHVlICE9PSB1bmRlZmluZWQgPyBrZXkgOiBpbmRleFxuICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENvbXBvbmVudCwge1xuICAgICAgY2hlY2tlZDogZmlsdGVyZWRLZXlzLmluY2x1ZGVzKGtleSlcbiAgICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIGZpbHRlci50ZXh0KSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBGaWx0ZXJEcm9wZG93bihwcm9wcykge1xuICB2YXIgX2E7XG5cbiAgdmFyIHByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgIGNvbHVtbiA9IHByb3BzLmNvbHVtbixcbiAgICAgIGRyb3Bkb3duUHJlZml4Q2xzID0gcHJvcHMuZHJvcGRvd25QcmVmaXhDbHMsXG4gICAgICBjb2x1bW5LZXkgPSBwcm9wcy5jb2x1bW5LZXksXG4gICAgICBmaWx0ZXJNdWx0aXBsZSA9IHByb3BzLmZpbHRlck11bHRpcGxlLFxuICAgICAgZmlsdGVyU3RhdGUgPSBwcm9wcy5maWx0ZXJTdGF0ZSxcbiAgICAgIHRyaWdnZXJGaWx0ZXIgPSBwcm9wcy50cmlnZ2VyRmlsdGVyLFxuICAgICAgbG9jYWxlID0gcHJvcHMubG9jYWxlLFxuICAgICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIGdldFBvcHVwQ29udGFpbmVyID0gcHJvcHMuZ2V0UG9wdXBDb250YWluZXI7XG4gIHZhciBmaWx0ZXJEcm9wZG93blZpc2libGUgPSBjb2x1bW4uZmlsdGVyRHJvcGRvd25WaXNpYmxlLFxuICAgICAgb25GaWx0ZXJEcm9wZG93blZpc2libGVDaGFuZ2UgPSBjb2x1bW4ub25GaWx0ZXJEcm9wZG93blZpc2libGVDaGFuZ2U7XG5cbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSxcbiAgICAgIF9SZWFjdCR1c2VTdGF0ZTIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyW1wiZGVmYXVsdFwiXSkoX1JlYWN0JHVzZVN0YXRlLCAyKSxcbiAgICAgIHZpc2libGUgPSBfUmVhY3QkdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0VmlzaWJsZSA9IF9SZWFjdCR1c2VTdGF0ZTJbMV07XG5cbiAgdmFyIGZpbHRlcmVkID0gISEoZmlsdGVyU3RhdGUgJiYgKCgoX2EgPSBmaWx0ZXJTdGF0ZS5maWx0ZXJlZEtleXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHx8IGZpbHRlclN0YXRlLmZvcmNlRmlsdGVyZWQpKTtcblxuICB2YXIgdHJpZ2dlclZpc2libGUgPSBmdW5jdGlvbiB0cmlnZ2VyVmlzaWJsZShuZXdWaXNpYmxlKSB7XG4gICAgc2V0VmlzaWJsZShuZXdWaXNpYmxlKTtcbiAgICBvbkZpbHRlckRyb3Bkb3duVmlzaWJsZUNoYW5nZSA9PT0gbnVsbCB8fCBvbkZpbHRlckRyb3Bkb3duVmlzaWJsZUNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaWx0ZXJEcm9wZG93blZpc2libGVDaGFuZ2UobmV3VmlzaWJsZSk7XG4gIH07XG5cbiAgdmFyIG1lcmdlZFZpc2libGUgPSB0eXBlb2YgZmlsdGVyRHJvcGRvd25WaXNpYmxlID09PSAnYm9vbGVhbicgPyBmaWx0ZXJEcm9wZG93blZpc2libGUgOiB2aXNpYmxlOyAvLyA9PT09PT09PT09PT09PT09PT09PT0gU2VsZWN0IEtleXMgPT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIHByb3BGaWx0ZXJlZEtleXMgPSBmaWx0ZXJTdGF0ZSA9PT0gbnVsbCB8fCBmaWx0ZXJTdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmlsdGVyU3RhdGUuZmlsdGVyZWRLZXlzO1xuXG4gIHZhciBfdXNlU3luY1N0YXRlID0gKDAsIF91c2VTeW5jU3RhdGUzW1wiZGVmYXVsdFwiXSkocHJvcEZpbHRlcmVkS2V5cyB8fCBbXSksXG4gICAgICBfdXNlU3luY1N0YXRlMiA9ICgwLCBfc2xpY2VkVG9BcnJheTJbXCJkZWZhdWx0XCJdKShfdXNlU3luY1N0YXRlLCAyKSxcbiAgICAgIGdldEZpbHRlcmVkS2V5c1N5bmMgPSBfdXNlU3luY1N0YXRlMlswXSxcbiAgICAgIHNldEZpbHRlcmVkS2V5c1N5bmMgPSBfdXNlU3luY1N0YXRlMlsxXTtcblxuICB2YXIgb25TZWxlY3RLZXlzID0gZnVuY3Rpb24gb25TZWxlY3RLZXlzKF9yZWYzKSB7XG4gICAgdmFyIHNlbGVjdGVkS2V5cyA9IF9yZWYzLnNlbGVjdGVkS2V5cztcbiAgICBzZXRGaWx0ZXJlZEtleXNTeW5jKHNlbGVjdGVkS2V5cyk7XG4gIH07XG5cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBvblNlbGVjdEtleXMoe1xuICAgICAgc2VsZWN0ZWRLZXlzOiBwcm9wRmlsdGVyZWRLZXlzIHx8IFtdXG4gICAgfSk7XG4gIH0sIFtwcm9wRmlsdGVyZWRLZXlzXSk7IC8vID09PT09PT09PT09PT09PT09PT09PT0gT3BlbiBLZXlzID09PT09PT09PT09PT09PT09PT09PT1cblxuICB2YXIgX1JlYWN0JHVzZVN0YXRlMyA9IFJlYWN0LnVzZVN0YXRlKFtdKSxcbiAgICAgIF9SZWFjdCR1c2VTdGF0ZTQgPSAoMCwgX3NsaWNlZFRvQXJyYXkyW1wiZGVmYXVsdFwiXSkoX1JlYWN0JHVzZVN0YXRlMywgMiksXG4gICAgICBvcGVuS2V5cyA9IF9SZWFjdCR1c2VTdGF0ZTRbMF0sXG4gICAgICBzZXRPcGVuS2V5cyA9IF9SZWFjdCR1c2VTdGF0ZTRbMV07XG5cbiAgdmFyIG9wZW5SZWYgPSBSZWFjdC51c2VSZWYoKTtcblxuICB2YXIgb25PcGVuQ2hhbmdlID0gZnVuY3Rpb24gb25PcGVuQ2hhbmdlKGtleXMpIHtcbiAgICBvcGVuUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBzZXRPcGVuS2V5cyhrZXlzKTtcbiAgICB9KTtcbiAgfTtcblxuICB2YXIgb25NZW51Q2xpY2sgPSBmdW5jdGlvbiBvbk1lbnVDbGljaygpIHtcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KG9wZW5SZWYuY3VycmVudCk7XG4gIH07XG5cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuUmVmLmN1cnJlbnQpO1xuICAgIH07XG4gIH0sIFtdKTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT0gU3VibWl0ID09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBpbnRlcm5hbFRyaWdnZXJGaWx0ZXIgPSBmdW5jdGlvbiBpbnRlcm5hbFRyaWdnZXJGaWx0ZXIoa2V5cykge1xuICAgIHZhciBtZXJnZWRLZXlzID0ga2V5cyAmJiBrZXlzLmxlbmd0aCA/IGtleXMgOiBudWxsO1xuXG4gICAgaWYgKG1lcmdlZEtleXMgPT09IG51bGwgJiYgKCFmaWx0ZXJTdGF0ZSB8fCAhZmlsdGVyU3RhdGUuZmlsdGVyZWRLZXlzKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCgwLCBfaXNFcXVhbFtcImRlZmF1bHRcIl0pKG1lcmdlZEtleXMsIGZpbHRlclN0YXRlID09PSBudWxsIHx8IGZpbHRlclN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmaWx0ZXJTdGF0ZS5maWx0ZXJlZEtleXMpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0cmlnZ2VyRmlsdGVyKHtcbiAgICAgIGNvbHVtbjogY29sdW1uLFxuICAgICAga2V5OiBjb2x1bW5LZXksXG4gICAgICBmaWx0ZXJlZEtleXM6IG1lcmdlZEtleXNcbiAgICB9KTtcbiAgfTtcblxuICB2YXIgb25Db25maXJtID0gZnVuY3Rpb24gb25Db25maXJtKCkge1xuICAgIHRyaWdnZXJWaXNpYmxlKGZhbHNlKTtcbiAgICBpbnRlcm5hbFRyaWdnZXJGaWx0ZXIoZ2V0RmlsdGVyZWRLZXlzU3luYygpKTtcbiAgfTtcblxuICB2YXIgb25SZXNldCA9IGZ1bmN0aW9uIG9uUmVzZXQoKSB7XG4gICAgc2V0RmlsdGVyZWRLZXlzU3luYyhbXSk7XG4gICAgdHJpZ2dlclZpc2libGUoZmFsc2UpO1xuICAgIGludGVybmFsVHJpZ2dlckZpbHRlcihbXSk7XG4gIH07XG5cbiAgdmFyIGRvRmlsdGVyID0gZnVuY3Rpb24gZG9GaWx0ZXIoKSB7XG4gICAgdmFyIF9yZWY0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7XG4gICAgICBjbG9zZURyb3Bkb3duOiB0cnVlXG4gICAgfSxcbiAgICAgICAgY2xvc2VEcm9wZG93biA9IF9yZWY0LmNsb3NlRHJvcGRvd247XG5cbiAgICBpZiAoY2xvc2VEcm9wZG93bikge1xuICAgICAgdHJpZ2dlclZpc2libGUoZmFsc2UpO1xuICAgIH1cblxuICAgIGludGVybmFsVHJpZ2dlckZpbHRlcihnZXRGaWx0ZXJlZEtleXNTeW5jKCkpO1xuICB9O1xuXG4gIHZhciBvblZpc2libGVDaGFuZ2UgPSBmdW5jdGlvbiBvblZpc2libGVDaGFuZ2UobmV3VmlzaWJsZSkge1xuICAgIGlmIChuZXdWaXNpYmxlICYmIHByb3BGaWx0ZXJlZEtleXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gU3luYyBmaWx0ZXJlZEtleXMgb24gYXBwZWFyIGluIGNvbnRyb2xsZWQgbW9kZSAocHJvcEZpbHRlcmVkS2V5cyAhPT0gdW5kZWZpZW5kKVxuICAgICAgc2V0RmlsdGVyZWRLZXlzU3luYyhwcm9wRmlsdGVyZWRLZXlzIHx8IFtdKTtcbiAgICB9XG5cbiAgICB0cmlnZ2VyVmlzaWJsZShuZXdWaXNpYmxlKTsgLy8gRGVmYXVsdCB3aWxsIGZpbHRlciB3aGVuIGNsb3NlZFxuXG4gICAgaWYgKCFuZXdWaXNpYmxlICYmICFjb2x1bW4uZmlsdGVyRHJvcGRvd24pIHtcbiAgICAgIG9uQ29uZmlybSgpO1xuICAgIH1cbiAgfTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09IFN0eWxlID09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbiAgdmFyIGRyb3Bkb3duTWVudUNsYXNzID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKSh7fSwgXCJcIi5jb25jYXQoZHJvcGRvd25QcmVmaXhDbHMsIFwiLW1lbnUtd2l0aG91dC1zdWJtZW51XCIpLCAhaGFzU3ViTWVudShjb2x1bW4uZmlsdGVycyB8fCBbXSkpKTtcbiAgdmFyIGRyb3Bkb3duQ29udGVudDtcblxuICBpZiAodHlwZW9mIGNvbHVtbi5maWx0ZXJEcm9wZG93biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRyb3Bkb3duQ29udGVudCA9IGNvbHVtbi5maWx0ZXJEcm9wZG93bih7XG4gICAgICBwcmVmaXhDbHM6IFwiXCIuY29uY2F0KGRyb3Bkb3duUHJlZml4Q2xzLCBcIi1jdXN0b21cIiksXG4gICAgICBzZXRTZWxlY3RlZEtleXM6IGZ1bmN0aW9uIHNldFNlbGVjdGVkS2V5cyhzZWxlY3RlZEtleXMpIHtcbiAgICAgICAgcmV0dXJuIG9uU2VsZWN0S2V5cyh7XG4gICAgICAgICAgc2VsZWN0ZWRLZXlzOiBzZWxlY3RlZEtleXNcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWRLZXlzOiBnZXRGaWx0ZXJlZEtleXNTeW5jKCksXG4gICAgICBjb25maXJtOiBkb0ZpbHRlcixcbiAgICAgIGNsZWFyRmlsdGVyczogb25SZXNldCxcbiAgICAgIGZpbHRlcnM6IGNvbHVtbi5maWx0ZXJzLFxuICAgICAgdmlzaWJsZTogbWVyZ2VkVmlzaWJsZVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKGNvbHVtbi5maWx0ZXJEcm9wZG93bikge1xuICAgIGRyb3Bkb3duQ29udGVudCA9IGNvbHVtbi5maWx0ZXJEcm9wZG93bjtcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2VsZWN0ZWRLZXlzID0gZ2V0RmlsdGVyZWRLZXlzU3luYygpIHx8IFtdO1xuICAgIGRyb3Bkb3duQ29udGVudCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfbWVudVtcImRlZmF1bHRcIl0sIHtcbiAgICAgIG11bHRpcGxlOiBmaWx0ZXJNdWx0aXBsZSxcbiAgICAgIHByZWZpeENsczogXCJcIi5jb25jYXQoZHJvcGRvd25QcmVmaXhDbHMsIFwiLW1lbnVcIiksXG4gICAgICBjbGFzc05hbWU6IGRyb3Bkb3duTWVudUNsYXNzLFxuICAgICAgb25DbGljazogb25NZW51Q2xpY2ssXG4gICAgICBvblNlbGVjdDogb25TZWxlY3RLZXlzLFxuICAgICAgb25EZXNlbGVjdDogb25TZWxlY3RLZXlzLFxuICAgICAgc2VsZWN0ZWRLZXlzOiBzZWxlY3RlZEtleXMsXG4gICAgICBnZXRQb3B1cENvbnRhaW5lcjogZ2V0UG9wdXBDb250YWluZXIsXG4gICAgICBvcGVuS2V5czogb3BlbktleXMsXG4gICAgICBvbk9wZW5DaGFuZ2U6IG9uT3BlbkNoYW5nZVxuICAgIH0sIHJlbmRlckZpbHRlckl0ZW1zKHtcbiAgICAgIGZpbHRlcnM6IGNvbHVtbi5maWx0ZXJzIHx8IFtdLFxuICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICBmaWx0ZXJlZEtleXM6IGdldEZpbHRlcmVkS2V5c1N5bmMoKSxcbiAgICAgIGZpbHRlck11bHRpcGxlOiBmaWx0ZXJNdWx0aXBsZSxcbiAgICAgIGxvY2FsZTogbG9jYWxlXG4gICAgfSkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZHJvcGRvd24tYnRuc1wiKVxuICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9idXR0b25bXCJkZWZhdWx0XCJdLCB7XG4gICAgICB0eXBlOiBcImxpbmtcIixcbiAgICAgIHNpemU6IFwic21hbGxcIixcbiAgICAgIGRpc2FibGVkOiBzZWxlY3RlZEtleXMubGVuZ3RoID09PSAwLFxuICAgICAgb25DbGljazogb25SZXNldFxuICAgIH0sIGxvY2FsZS5maWx0ZXJSZXNldCksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9idXR0b25bXCJkZWZhdWx0XCJdLCB7XG4gICAgICB0eXBlOiBcInByaW1hcnlcIixcbiAgICAgIHNpemU6IFwic21hbGxcIixcbiAgICAgIG9uQ2xpY2s6IG9uQ29uZmlybVxuICAgIH0sIGxvY2FsZS5maWx0ZXJDb25maXJtKSkpO1xuICB9XG5cbiAgdmFyIG1lbnUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfRmlsdGVyV3JhcHBlcltcImRlZmF1bHRcIl0sIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZHJvcGRvd25cIilcbiAgfSwgZHJvcGRvd25Db250ZW50KTtcbiAgdmFyIGZpbHRlckljb247XG5cbiAgaWYgKHR5cGVvZiBjb2x1bW4uZmlsdGVySWNvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZpbHRlckljb24gPSBjb2x1bW4uZmlsdGVySWNvbihmaWx0ZXJlZCk7XG4gIH0gZWxzZSBpZiAoY29sdW1uLmZpbHRlckljb24pIHtcbiAgICBmaWx0ZXJJY29uID0gY29sdW1uLmZpbHRlckljb247XG4gIH0gZWxzZSB7XG4gICAgZmlsdGVySWNvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9GaWx0ZXJGaWxsZWRbXCJkZWZhdWx0XCJdLCBudWxsKTtcbiAgfVxuXG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoX2NvbnRleHQuQ29uZmlnQ29udGV4dCksXG4gICAgICBkaXJlY3Rpb24gPSBfUmVhY3QkdXNlQ29udGV4dC5kaXJlY3Rpb247XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY29sdW1uXCIpKVxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1jb2x1bW4tdGl0bGVcIilcbiAgfSwgY2hpbGRyZW4pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIGNsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi10cmlnZ2VyLWNvbnRhaW5lclwiKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKSh7fSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi10cmlnZ2VyLWNvbnRhaW5lci1vcGVuXCIpLCBtZXJnZWRWaXNpYmxlKSksXG4gICAgb25DbGljazogZnVuY3Rpb24gb25DbGljayhlKSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2Ryb3Bkb3duW1wiZGVmYXVsdFwiXSwge1xuICAgIG92ZXJsYXk6IG1lbnUsXG4gICAgdHJpZ2dlcjogWydjbGljayddLFxuICAgIHZpc2libGU6IG1lcmdlZFZpc2libGUsXG4gICAgb25WaXNpYmxlQ2hhbmdlOiBvblZpc2libGVDaGFuZ2UsXG4gICAgZ2V0UG9wdXBDb250YWluZXI6IGdldFBvcHVwQ29udGFpbmVyLFxuICAgIHBsYWNlbWVudDogZGlyZWN0aW9uID09PSAncnRsJyA/ICdib3R0b21MZWZ0JyA6ICdib3R0b21SaWdodCdcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICByb2xlOiBcImJ1dHRvblwiLFxuICAgIHRhYkluZGV4OiAtMSxcbiAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdHJpZ2dlclwiKSwge1xuICAgICAgYWN0aXZlOiBmaWx0ZXJlZFxuICAgIH0pXG4gIH0sIGZpbHRlckljb24pKSkpO1xufVxuXG52YXIgX2RlZmF1bHQgPSBGaWx0ZXJEcm9wZG93bjtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwidmFyIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqXG4gKiBQZXJmb3JtcyBhIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlXG4gKiBlcXVpdmFsZW50LlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBzdXBwb3J0cyBjb21wYXJpbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucyxcbiAqIGRhdGUgb2JqZWN0cywgZXJyb3Igb2JqZWN0cywgbWFwcywgbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcyxcbiAqIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZCBhcnJheXMuIGBPYmplY3RgIG9iamVjdHMgYXJlIGNvbXBhcmVkXG4gKiBieSB0aGVpciBvd24sIG5vdCBpbmhlcml0ZWQsIGVudW1lcmFibGUgcHJvcGVydGllcy4gRnVuY3Rpb25zIGFuZCBET01cbiAqIG5vZGVzIGFyZSBjb21wYXJlZCBieSBzdHJpY3QgZXF1YWxpdHksIGkuZS4gYD09PWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uaXNFcXVhbChvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBvYmplY3QgPT09IG90aGVyO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFcXVhbCh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFcXVhbDtcbiIsInZhciBiYXNlSXNFcXVhbERlZXAgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbERlZXAnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCB8fCBvdGhlciA9PSBudWxsIHx8ICghaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNPYmplY3RMaWtlKG90aGVyKSkpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcjtcbiAgfVxuICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLFxuICAgIGVxdWFsQnlUYWcgPSByZXF1aXJlKCcuL19lcXVhbEJ5VGFnJyksXG4gICAgZXF1YWxPYmplY3RzID0gcmVxdWlyZSgnLi9fZXF1YWxPYmplY3RzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbGAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBjb21wYXJpc29ucyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICogcmVmZXJlbmNlcyB0byBiZSBjb21wYXJlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWxEZWVwKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIG9iaklzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSxcbiAgICAgIG9ialRhZyA9IG9iaklzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob2JqZWN0KSxcbiAgICAgIG90aFRhZyA9IG90aElzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob3RoZXIpO1xuXG4gIG9ialRhZyA9IG9ialRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb2JqVGFnO1xuICBvdGhUYWcgPSBvdGhUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG90aFRhZztcblxuICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgb3RoSXNPYmogPSBvdGhUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgaXNTYW1lVGFnID0gb2JqVGFnID09IG90aFRhZztcblxuICBpZiAoaXNTYW1lVGFnICYmIGlzQnVmZmVyKG9iamVjdCkpIHtcbiAgICBpZiAoIWlzQnVmZmVyKG90aGVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBvYmpJc0FyciA9IHRydWU7XG4gICAgb2JqSXNPYmogPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgcmV0dXJuIChvYmpJc0FyciB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KSlcbiAgICAgID8gZXF1YWxBcnJheXMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaylcbiAgICAgIDogZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCBvYmpUYWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICB9XG4gIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICB2YXIgb2JqSXNXcmFwcGVkID0gb2JqSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsICdfX3dyYXBwZWRfXycpLFxuICAgICAgICBvdGhJc1dyYXBwZWQgPSBvdGhJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCAnX193cmFwcGVkX18nKTtcblxuICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICB2YXIgb2JqVW53cmFwcGVkID0gb2JqSXNXcmFwcGVkID8gb2JqZWN0LnZhbHVlKCkgOiBvYmplY3QsXG4gICAgICAgICAgb3RoVW53cmFwcGVkID0gb3RoSXNXcmFwcGVkID8gb3RoZXIudmFsdWUoKSA6IG90aGVyO1xuXG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgcmV0dXJuIGVxdWFsRnVuYyhvYmpVbndyYXBwZWQsIG90aFVud3JhcHBlZCwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgfVxuICBpZiAoIWlzU2FtZVRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICByZXR1cm4gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsRGVlcDtcbiIsInZhciBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBzdGFja0NsZWFyID0gcmVxdWlyZSgnLi9fc3RhY2tDbGVhcicpLFxuICAgIHN0YWNrRGVsZXRlID0gcmVxdWlyZSgnLi9fc3RhY2tEZWxldGUnKSxcbiAgICBzdGFja0dldCA9IHJlcXVpcmUoJy4vX3N0YWNrR2V0JyksXG4gICAgc3RhY2tIYXMgPSByZXF1aXJlKCcuL19zdGFja0hhcycpLFxuICAgIHN0YWNrU2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RhY2sgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gU3RhY2soZW50cmllcykge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlKGVudHJpZXMpO1xuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBTdGFja2AuXG5TdGFjay5wcm90b3R5cGUuY2xlYXIgPSBzdGFja0NsZWFyO1xuU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuU3RhY2sucHJvdG90eXBlLmdldCA9IHN0YWNrR2V0O1xuU3RhY2sucHJvdG90eXBlLmhhcyA9IHN0YWNrSGFzO1xuU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN0YWNrO1xuIiwiLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IFtdO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUNsZWFyO1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2U7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsYXN0SW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICBkYXRhLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgfVxuICAtLXRoaXMuc2l6ZTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlRGVsZXRlO1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIEdldHMgdGhlIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgcmV0dXJuIGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IGRhdGFbaW5kZXhdWzFdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUdldDtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlSGFzO1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgICsrdGhpcy5zaXplO1xuICAgIGRhdGEucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9IGVsc2Uge1xuICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlU2V0O1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tEZWxldGU7XG4iLCIvKipcbiAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tHZXQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrSGFzO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gIH1cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tTZXQ7XG4iLCJ2YXIgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzTWFza2VkID0gcmVxdWlyZSgnLi9faXNNYXNrZWQnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbnZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbih2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yO1xuICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTmF0aXZlO1xuIiwidmFyIGNvcmVKc0RhdGEgPSByZXF1aXJlKCcuL19jb3JlSnNEYXRhJyk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG52YXIgbWFza1NyY0tleSA9IChmdW5jdGlvbigpIHtcbiAgdmFyIHVpZCA9IC9bXi5dKyQvLmV4ZWMoY29yZUpzRGF0YSAmJiBjb3JlSnNEYXRhLmtleXMgJiYgY29yZUpzRGF0YS5rZXlzLklFX1BST1RPIHx8ICcnKTtcbiAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xufSgpKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBpdHMgc291cmNlIG1hc2tlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2tlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc01hc2tlZChmdW5jKSB7XG4gIHJldHVybiAhIW1hc2tTcmNLZXkgJiYgKG1hc2tTcmNLZXkgaW4gZnVuYyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNNYXNrZWQ7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xudmFyIGNvcmVKc0RhdGEgPSByb290WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb3JlSnNEYXRhO1xuIiwiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VmFsdWU7XG4iLCJ2YXIgSGFzaCA9IHJlcXVpcmUoJy4vX0hhc2gnKSxcbiAgICBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVDbGVhcigpIHtcbiAgdGhpcy5zaXplID0gMDtcbiAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAnaGFzaCc6IG5ldyBIYXNoLFxuICAgICdtYXAnOiBuZXcgKE1hcCB8fCBMaXN0Q2FjaGUpLFxuICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlQ2xlYXI7XG4iLCJ2YXIgaGFzaENsZWFyID0gcmVxdWlyZSgnLi9faGFzaENsZWFyJyksXG4gICAgaGFzaERlbGV0ZSA9IHJlcXVpcmUoJy4vX2hhc2hEZWxldGUnKSxcbiAgICBoYXNoR2V0ID0gcmVxdWlyZSgnLi9faGFzaEdldCcpLFxuICAgIGhhc2hIYXMgPSByZXF1aXJlKCcuL19oYXNoSGFzJyksXG4gICAgaGFzaFNldCA9IHJlcXVpcmUoJy4vX2hhc2hTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgaGFzaCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIEhhc2goZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgSGFzaGAuXG5IYXNoLnByb3RvdHlwZS5jbGVhciA9IGhhc2hDbGVhcjtcbkhhc2gucHJvdG90eXBlWydkZWxldGUnXSA9IGhhc2hEZWxldGU7XG5IYXNoLnByb3RvdHlwZS5nZXQgPSBoYXNoR2V0O1xuSGFzaC5wcm90b3R5cGUuaGFzID0gaGFzaEhhcztcbkhhc2gucHJvdG90eXBlLnNldCA9IGhhc2hTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaDtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIEhhc2hcbiAqL1xuZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaENsZWFyO1xuIiwiLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoRGVsZXRlO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogR2V0cyB0aGUgaGFzaCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChuYXRpdmVDcmVhdGUpIHtcbiAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgIHJldHVybiByZXN1bHQgPT09IEhBU0hfVU5ERUZJTkVEID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuICB9XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaEdldDtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBoYXNoIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoSGFzKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHJldHVybiBuYXRpdmVDcmVhdGUgPyAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQpIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hIYXM7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqXG4gKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaGFzaCBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gaGFzaFNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgZGF0YVtrZXldID0gKG5hdGl2ZUNyZWF0ZSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IEhBU0hfVU5ERUZJTkVEIDogdmFsdWU7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hTZXQ7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVEZWxldGU7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXlhYmxlO1xuIiwidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbWFwIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUdldChrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5nZXQoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUdldDtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlSGFzO1xuIiwidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogU2V0cyB0aGUgbWFwIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IGdldE1hcERhdGEodGhpcywga2V5KSxcbiAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSArPSBkYXRhLnNpemUgPT0gc2l6ZSA/IDAgOiAxO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZVNldDtcbiIsInZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyksXG4gICAgc2V0Q2FjaGVBZGQgPSByZXF1aXJlKCcuL19zZXRDYWNoZUFkZCcpLFxuICAgIHNldENhY2hlSGFzID0gcmVxdWlyZSgnLi9fc2V0Q2FjaGVIYXMnKTtcblxuLyoqXG4gKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjYWNoZSBvYmplY3QgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTZXRDYWNoZSh2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMgPT0gbnVsbCA/IDAgOiB2YWx1ZXMubGVuZ3RoO1xuXG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFNldENhY2hlYC5cblNldENhY2hlLnByb3RvdHlwZS5hZGQgPSBTZXRDYWNoZS5wcm90b3R5cGUucHVzaCA9IHNldENhY2hlQWRkO1xuU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldENhY2hlO1xuIiwiLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKipcbiAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGFkZFxuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAYWxpYXMgcHVzaFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgdGhpcy5fX2RhdGFfXy5zZXQodmFsdWUsIEhBU0hfVU5ERUZJTkVEKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVBZGQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVIYXM7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5U29tZTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhY2hlSGFzO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5JyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyksXG4gICAgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLFxuICAgIG1hcFRvQXJyYXkgPSByZXF1aXJlKCcuL19tYXBUb0FycmF5JyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAqIHRoZSBzYW1lIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIHRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgKG9iamVjdC5ieXRlT2Zmc2V0ICE9IG90aGVyLmJ5dGVPZmZzZXQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IG9iamVjdC5idWZmZXI7XG4gICAgICBvdGhlciA9IG90aGVyLmJ1ZmZlcjtcblxuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgIWVxdWFsRnVuYyhuZXcgVWludDhBcnJheShvYmplY3QpLCBuZXcgVWludDhBcnJheShvdGhlcikpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgIC8vIENvZXJjZSBib29sZWFucyB0byBgMWAgb3IgYDBgIGFuZCBkYXRlcyB0byBtaWxsaXNlY29uZHMuXG4gICAgICAvLyBJbnZhbGlkIGRhdGVzIGFyZSBjb2VyY2VkIHRvIGBOYU5gLlxuICAgICAgcmV0dXJuIGVxKCtvYmplY3QsICtvdGhlcik7XG5cbiAgICBjYXNlIGVycm9yVGFnOlxuICAgICAgcmV0dXJuIG9iamVjdC5uYW1lID09IG90aGVyLm5hbWUgJiYgb2JqZWN0Lm1lc3NhZ2UgPT0gb3RoZXIubWVzc2FnZTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgLy8gQ29lcmNlIHJlZ2V4ZXMgdG8gc3RyaW5ncyBhbmQgdHJlYXQgc3RyaW5ncywgcHJpbWl0aXZlcyBhbmQgb2JqZWN0cyxcbiAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTtcblxuICAgIGNhc2UgbWFwVGFnOlxuICAgICAgdmFyIGNvbnZlcnQgPSBtYXBUb0FycmF5O1xuXG4gICAgY2FzZSBzZXRUYWc6XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHO1xuICAgICAgY29udmVydCB8fCAoY29udmVydCA9IHNldFRvQXJyYXkpO1xuXG4gICAgICBpZiAob2JqZWN0LnNpemUgIT0gb3RoZXIuc2l6ZSAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgIH1cbiAgICAgIGJpdG1hc2sgfD0gQ09NUEFSRV9VTk9SREVSRURfRkxBRztcblxuICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICB2YXIgcmVzdWx0ID0gZXF1YWxBcnJheXMoY29udmVydChvYmplY3QpLCBjb252ZXJ0KG90aGVyKSwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgIGlmIChzeW1ib2xWYWx1ZU9mKSB7XG4gICAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mLmNhbGwob2JqZWN0KSA9PSBzeW1ib2xWYWx1ZU9mLmNhbGwob3RoZXIpO1xuICAgICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbEJ5VGFnO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFVpbnQ4QXJyYXkgPSByb290LlVpbnQ4QXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gVWludDhBcnJheTtcbiIsIi8qKlxuICogQ29udmVydHMgYG1hcGAgdG8gaXRzIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAqL1xuZnVuY3Rpb24gbWFwVG9BcnJheShtYXApIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgbWFwLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IFtrZXksIHZhbHVlXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwVG9BcnJheTtcbiIsIi8qKlxuICogQ29udmVydHMgYHNldGAgdG8gYW4gYXJyYXkgb2YgaXRzIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VG9BcnJheTtcbiIsInZhciBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICBvYmpQcm9wcyA9IGdldEFsbEtleXMob2JqZWN0KSxcbiAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICBvdGhMZW5ndGggPSBvdGhQcm9wcy5sZW5ndGg7XG5cbiAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICB2YXIgb2JqU3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChvYmpTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gb2JqU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IG9iamVjdDtcbiAgfVxuICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIG9iamVjdCk7XG5cbiAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICB3aGlsZSAoKytpbmRleCA8IG9iakxlbmd0aCkge1xuICAgIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltrZXldO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIG9ialZhbHVlLCBrZXksIG90aGVyLCBvYmplY3QsIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgOiBjb21wYXJlZFxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gIH1cbiAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgb3RoQ3RvciA9IG90aGVyLmNvbnN0cnVjdG9yO1xuXG4gICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAoJ2NvbnN0cnVjdG9yJyBpbiBvYmplY3QgJiYgJ2NvbnN0cnVjdG9yJyBpbiBvdGhlcikgJiZcbiAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbE9iamVjdHM7XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHMgPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGdldEFsbEtleXMob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXMsIGdldFN5bWJvbHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEFsbEtleXM7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRBbGxLZXlzYCBhbmQgYGdldEFsbEtleXNJbmAgd2hpY2ggdXNlc1xuICogYGtleXNGdW5jYCBhbmQgYHN5bWJvbHNGdW5jYCB0byBnZXQgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3ltYm9sc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5c0Z1bmMsIHN5bWJvbHNGdW5jKSB7XG4gIHZhciByZXN1bHQgPSBrZXlzRnVuYyhvYmplY3QpO1xuICByZXR1cm4gaXNBcnJheShvYmplY3QpID8gcmVzdWx0IDogYXJyYXlQdXNoKHJlc3VsdCwgc3ltYm9sc0Z1bmMob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldEFsbEtleXM7XG4iLCIvKipcbiAqIEFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIGB2YWx1ZXNgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlQdXNoO1xuIiwidmFyIGFycmF5RmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXlGaWx0ZXInKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICovXG52YXIgZ2V0U3ltYm9scyA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgcmV0dXJuIGFycmF5RmlsdGVyKG5hdGl2ZUdldFN5bWJvbHMob2JqZWN0KSwgZnVuY3Rpb24oc3ltYm9sKSB7XG4gICAgcmV0dXJuIHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwob2JqZWN0LCBzeW1ib2wpO1xuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0U3ltYm9scztcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZpbHRlcmAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheUZpbHRlcihhcnJheSwgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXNJbmRleCA9IDAsXG4gICAgICByZXN1bHQgPSBbXTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUZpbHRlcjtcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBlbXB0eSBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgYXJyYXlzID0gXy50aW1lcygyLCBfLnN0dWJBcnJheSk7XG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAqIC8vID0+IFtbXSwgW11dXG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICByZXR1cm4gW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R1YkFycmF5O1xuIiwidmFyIGFycmF5TGlrZUtleXMgPSByZXF1aXJlKCcuL19hcnJheUxpa2VLZXlzJyksXG4gICAgYmFzZUtleXMgPSByZXF1aXJlKCcuL19iYXNlS2V5cycpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5cyhuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLmtleXMoJ2hpJyk7XG4gKiAvLyA9PiBbJzAnLCAnMSddXG4gKi9cbmZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzO1xuIiwidmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICApKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUxpa2VLZXlzO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVGltZXM7XG4iLCJ2YXIgYmFzZUlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9fYmFzZUlzQXJndW1lbnRzJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJndW1lbnRzID0gYmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID8gYmFzZUlzQXJndW1lbnRzIDogZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpICYmXG4gICAgIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcmd1bWVudHM7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0FyZ3VtZW50cztcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgZmFsc2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygyLCBfLnN0dWJGYWxzZSk7XG4gKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICovXG5mdW5jdGlvbiBzdHViRmFsc2UoKSB7XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHViRmFsc2U7XG4iLCIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xudmFyIHJlSXNVaW50ID0gL14oPzowfFsxLTldXFxkKikkLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIGxlbmd0aCA9IGxlbmd0aCA9PSBudWxsID8gTUFYX1NBRkVfSU5URUdFUiA6IGxlbmd0aDtcblxuICByZXR1cm4gISFsZW5ndGggJiZcbiAgICAodHlwZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgKHR5cGUgIT0gJ3N5bWJvbCcgJiYgcmVJc1VpbnQudGVzdCh2YWx1ZSkpKSAmJlxuICAgICAgICAodmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8IGxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNJbmRleDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cbnZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xudHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG50eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG50eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9XG50eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9XG50eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG50eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9XG50eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG50eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW2Jhc2VHZXRUYWcodmFsdWUpXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNUeXBlZEFycmF5O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VVbmFyeTtcbiIsInZhciBmcmVlR2xvYmFsID0gcmVxdWlyZSgnLi9fZnJlZUdsb2JhbCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgcHJvY2Vzc2AgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVQcm9jZXNzID0gbW9kdWxlRXhwb3J0cyAmJiBmcmVlR2xvYmFsLnByb2Nlc3M7XG5cbi8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xudmFyIG5vZGVVdGlsID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgIHZhciB0eXBlcyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlICYmIGZyZWVNb2R1bGUucmVxdWlyZSgndXRpbCcpLnR5cGVzO1xuXG4gICAgaWYgKHR5cGVzKSB7XG4gICAgICByZXR1cm4gdHlwZXM7XG4gICAgfVxuXG4gICAgLy8gTGVnYWN5IGBwcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKWAgZm9yIE5vZGUuanMgPCAxMC5cbiAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5vZGVVdGlsO1xuIiwidmFyIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzID0gcmVxdWlyZSgnLi9fbmF0aXZlS2V5cycpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUtleXM7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQcm90b3R5cGU7XG4iLCJ2YXIgb3ZlckFyZyA9IHJlcXVpcmUoJy4vX292ZXJBcmcnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUtleXM7XG4iLCIvKipcbiAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBmdW5jKHRyYW5zZm9ybShhcmcpKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvdmVyQXJnO1xuIiwidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2U7XG4iLCJ2YXIgRGF0YVZpZXcgPSByZXF1aXJlKCcuL19EYXRhVmlldycpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIFByb21pc2UgPSByZXF1aXJlKCcuL19Qcm9taXNlJyksXG4gICAgU2V0ID0gcmVxdWlyZSgnLi9fU2V0JyksXG4gICAgV2Vha01hcCA9IHJlcXVpcmUoJy4vX1dlYWtNYXAnKSxcbiAgICBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHByb21pc2VUYWcgPSAnW29iamVjdCBQcm9taXNlXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1hcHMsIHNldHMsIGFuZCB3ZWFrbWFwcy4gKi9cbnZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksXG4gICAgbWFwQ3RvclN0cmluZyA9IHRvU291cmNlKE1hcCksXG4gICAgcHJvbWlzZUN0b3JTdHJpbmcgPSB0b1NvdXJjZShQcm9taXNlKSxcbiAgICBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSxcbiAgICB3ZWFrTWFwQ3RvclN0cmluZyA9IHRvU291cmNlKFdlYWtNYXApO1xuXG4vKipcbiAqIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG52YXIgZ2V0VGFnID0gYmFzZUdldFRhZztcblxuLy8gRmFsbGJhY2sgZm9yIGRhdGEgdmlld3MsIG1hcHMsIHNldHMsIGFuZCB3ZWFrIG1hcHMgaW4gSUUgMTEgYW5kIHByb21pc2VzIGluIE5vZGUuanMgPCA2LlxuaWYgKChEYXRhVmlldyAmJiBnZXRUYWcobmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxKSkpICE9IGRhdGFWaWV3VGFnKSB8fFxuICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAoUHJvbWlzZSAmJiBnZXRUYWcoUHJvbWlzZS5yZXNvbHZlKCkpICE9IHByb21pc2VUYWcpIHx8XG4gICAgKFNldCAmJiBnZXRUYWcobmV3IFNldCkgIT0gc2V0VGFnKSB8fFxuICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgZ2V0VGFnID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICB2YXIgcmVzdWx0ID0gYmFzZUdldFRhZyh2YWx1ZSksXG4gICAgICAgIEN0b3IgPSByZXN1bHQgPT0gb2JqZWN0VGFnID8gdmFsdWUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIGN0b3JTdHJpbmcgPSBDdG9yID8gdG9Tb3VyY2UoQ3RvcikgOiAnJztcblxuICAgIGlmIChjdG9yU3RyaW5nKSB7XG4gICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgY2FzZSBkYXRhVmlld0N0b3JTdHJpbmc6IHJldHVybiBkYXRhVmlld1RhZztcbiAgICAgICAgY2FzZSBtYXBDdG9yU3RyaW5nOiByZXR1cm4gbWFwVGFnO1xuICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgY2FzZSBzZXRDdG9yU3RyaW5nOiByZXR1cm4gc2V0VGFnO1xuICAgICAgICBjYXNlIHdlYWtNYXBDdG9yU3RyaW5nOiByZXR1cm4gd2Vha01hcFRhZztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRUYWc7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBQcm9taXNlID0gZ2V0TmF0aXZlKHJvb3QsICdQcm9taXNlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgU2V0ID0gZ2V0TmF0aXZlKHJvb3QsICdTZXQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTZXQ7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFdlYWtNYXAgPSBnZXROYXRpdmUocm9vdCwgJ1dlYWtNYXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBXZWFrTWFwO1xuIiwiJ3VzZSBzdHJpY3QnO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxuICB9KTtcbiAgZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuICBcbiAgdmFyIF9GaWx0ZXJGaWxsZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoJy4vbGliL2ljb25zL0ZpbHRlckZpbGxlZCcpKTtcbiAgXG4gIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cbiAgXG4gIHZhciBfZGVmYXVsdCA9IF9GaWx0ZXJGaWxsZWQ7XG4gIGV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuICBtb2R1bGUuZXhwb3J0cyA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9GaWx0ZXJGaWxsZWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYW50LWRlc2lnbi9pY29ucy1zdmcvbGliL2Fzbi9GaWx0ZXJGaWxsZWRcIikpO1xuXG52YXIgX0FudGRJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vY29tcG9uZW50cy9BbnRkSWNvblwiKSk7XG5cbi8vIEdFTkVSQVRFIEJZIC4vc2NyaXB0cy9nZW5lcmF0ZS50c1xuLy8gRE9OIE5PVCBFRElUIElUIE1BTlVBTExZXG52YXIgRmlsdGVyRmlsbGVkID0gZnVuY3Rpb24gRmlsdGVyRmlsbGVkKHByb3BzLCByZWYpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9BbnRkSWNvbi5kZWZhdWx0LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywge1xuICAgIHJlZjogcmVmLFxuICAgIGljb246IF9GaWx0ZXJGaWxsZWQuZGVmYXVsdFxuICB9KSk7XG59O1xuXG5GaWx0ZXJGaWxsZWQuZGlzcGxheU5hbWUgPSAnRmlsdGVyRmlsbGVkJztcblxudmFyIF9kZWZhdWx0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoRmlsdGVyRmlsbGVkKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBUaGlzIGljb24gZmlsZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBGaWx0ZXJGaWxsZWQgPSB7IFwiaWNvblwiOiB7IFwidGFnXCI6IFwic3ZnXCIsIFwiYXR0cnNcIjogeyBcInZpZXdCb3hcIjogXCI2NCA2NCA4OTYgODk2XCIsIFwiZm9jdXNhYmxlXCI6IFwiZmFsc2VcIiB9LCBcImNoaWxkcmVuXCI6IFt7IFwidGFnXCI6IFwicGF0aFwiLCBcImF0dHJzXCI6IHsgXCJkXCI6IFwiTTM0OSA4MzhjMCAxNy43IDE0LjIgMzIgMzEuOCAzMmgyNjIuNGMxNy42IDAgMzEuOC0xNC4zIDMxLjgtMzJWNjQySDM0OXYxOTZ6bTUzMS4xLTY4NEgxNDMuOWMtMjQuNSAwLTM5LjggMjYuNy0yNy41IDQ4bDIyMS4zIDM3NmgzNDguOGwyMjEuMy0zNzZjMTIuMS0yMS4zLTMuMi00OC0yNy43LTQ4elwiIH0gfV0gfSwgXCJuYW1lXCI6IFwiZmlsdGVyXCIsIFwidGhlbWVcIjogXCJmaWxsZWRcIiB9O1xuZXhwb3J0cy5kZWZhdWx0ID0gRmlsdGVyRmlsbGVkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxudmFyIEZpbHRlckRyb3Bkb3duTWVudVdyYXBwZXIgPSBmdW5jdGlvbiBGaWx0ZXJEcm9wZG93bk1lbnVXcmFwcGVyKHByb3BzKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgY2xhc3NOYW1lOiBwcm9wcy5jbGFzc05hbWUsXG4gICAgb25DbGljazogZnVuY3Rpb24gb25DbGljayhlKSB7XG4gICAgICByZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH0sIHByb3BzLmNoaWxkcmVuKTtcbn07XG5cbnZhciBfZGVmYXVsdCA9IEZpbHRlckRyb3Bkb3duTWVudVdyYXBwZXI7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF90eXBlb2YgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHVzZVN5bmNTdGF0ZTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF91c2VGb3JjZVVwZGF0ZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXNlRm9yY2VVcGRhdGVcIikpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIHVzZVN5bmNTdGF0ZShpbml0aWFsVmFsdWUpIHtcbiAgdmFyIHJlZiA9IFJlYWN0LnVzZVJlZihpbml0aWFsVmFsdWUpO1xuICB2YXIgZm9yY2VVcGRhdGUgPSAoMCwgX3VzZUZvcmNlVXBkYXRlW1wiZGVmYXVsdFwiXSkoKTtcbiAgcmV0dXJuIFtmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHJlZi5jdXJyZW50O1xuICB9LCBmdW5jdGlvbiAobmV3VmFsdWUpIHtcbiAgICByZWYuY3VycmVudCA9IG5ld1ZhbHVlOyAvLyByZS1yZW5kZXJcblxuICAgIGZvcmNlVXBkYXRlKCk7XG4gIH1dO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF90eXBlb2YgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHVzZUZvcmNlVXBkYXRlO1xuXG52YXIgX3NsaWNlZFRvQXJyYXkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIpKTtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiB1c2VGb3JjZVVwZGF0ZSgpIHtcbiAgdmFyIF9SZWFjdCR1c2VSZWR1Y2VyID0gUmVhY3QudXNlUmVkdWNlcihmdW5jdGlvbiAoeCkge1xuICAgIHJldHVybiB4ICsgMTtcbiAgfSwgMCksXG4gICAgICBfUmVhY3QkdXNlUmVkdWNlcjIgPSAoMCwgX3NsaWNlZFRvQXJyYXkyW1wiZGVmYXVsdFwiXSkoX1JlYWN0JHVzZVJlZHVjZXIsIDIpLFxuICAgICAgZm9yY2VVcGRhdGUgPSBfUmVhY3QkdXNlUmVkdWNlcjJbMV07XG5cbiAgcmV0dXJuIGZvcmNlVXBkYXRlO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF90eXBlb2YgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHVzZVRpdGxlQ29sdW1ucztcblxudmFyIF9leHRlbmRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuLi91dGlsXCIpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIGZpbGxUaXRsZShjb2x1bW5zLCBjb2x1bW5UaXRsZVByb3BzKSB7XG4gIHJldHVybiBjb2x1bW5zLm1hcChmdW5jdGlvbiAoY29sdW1uKSB7XG4gICAgdmFyIGNsb25lQ29sdW1uID0gKDAsIF9leHRlbmRzMltcImRlZmF1bHRcIl0pKHt9LCBjb2x1bW4pO1xuICAgIGNsb25lQ29sdW1uLnRpdGxlID0gKDAsIF91dGlsLnJlbmRlckNvbHVtblRpdGxlKShjb2x1bW4udGl0bGUsIGNvbHVtblRpdGxlUHJvcHMpO1xuXG4gICAgaWYgKCdjaGlsZHJlbicgaW4gY2xvbmVDb2x1bW4pIHtcbiAgICAgIGNsb25lQ29sdW1uLmNoaWxkcmVuID0gZmlsbFRpdGxlKGNsb25lQ29sdW1uLmNoaWxkcmVuLCBjb2x1bW5UaXRsZVByb3BzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xvbmVDb2x1bW47XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VUaXRsZUNvbHVtbnMoY29sdW1uVGl0bGVQcm9wcykge1xuICB2YXIgZmlsbGVkQ29sdW1ucyA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChjb2x1bW5zKSB7XG4gICAgcmV0dXJuIGZpbGxUaXRsZShjb2x1bW5zLCBjb2x1bW5UaXRsZVByb3BzKTtcbiAgfSwgW2NvbHVtblRpdGxlUHJvcHNdKTtcbiAgcmV0dXJuIFtmaWxsZWRDb2x1bW5zXTtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKSk7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIHJlbmRlckV4cGFuZEljb24obG9jYWxlKSB7XG4gIHJldHVybiBmdW5jdGlvbiBleHBhbmRJY29uKF9yZWYpIHtcbiAgICB2YXIgX2NsYXNzTmFtZXM7XG5cbiAgICB2YXIgcHJlZml4Q2xzID0gX3JlZi5wcmVmaXhDbHMsXG4gICAgICAgIG9uRXhwYW5kID0gX3JlZi5vbkV4cGFuZCxcbiAgICAgICAgcmVjb3JkID0gX3JlZi5yZWNvcmQsXG4gICAgICAgIGV4cGFuZGVkID0gX3JlZi5leHBhbmRlZCxcbiAgICAgICAgZXhwYW5kYWJsZSA9IF9yZWYuZXhwYW5kYWJsZTtcbiAgICB2YXIgaWNvblByZWZpeCA9IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcm93LWV4cGFuZC1pY29uXCIpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCB7XG4gICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgb25DbGljazogZnVuY3Rpb24gb25DbGljayhlKSB7XG4gICAgICAgIG9uRXhwYW5kKHJlY29yZCwgZSk7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9LFxuICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShpY29uUHJlZml4LCAoX2NsYXNzTmFtZXMgPSB7fSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQoaWNvblByZWZpeCwgXCItc3BhY2VkXCIpLCAhZXhwYW5kYWJsZSksICgwLCBfZGVmaW5lUHJvcGVydHkyW1wiZGVmYXVsdFwiXSkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KGljb25QcmVmaXgsIFwiLWV4cGFuZGVkXCIpLCBleHBhbmRhYmxlICYmIGV4cGFuZGVkKSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTJbXCJkZWZhdWx0XCJdKShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQoaWNvblByZWZpeCwgXCItY29sbGFwc2VkXCIpLCBleHBhbmRhYmxlICYmICFleHBhbmRlZCksIF9jbGFzc05hbWVzKSksXG4gICAgICBcImFyaWEtbGFiZWxcIjogZXhwYW5kZWQgPyBsb2NhbGUuY29sbGFwc2UgOiBsb2NhbGUuZXhwYW5kXG4gICAgfSk7XG4gIH07XG59XG5cbnZhciBfZGVmYXVsdCA9IHJlbmRlckV4cGFuZEljb247XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcblxudmFyIF90eXBlb2YgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHNjcm9sbFRvO1xuXG52YXIgX3JhZiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLXV0aWwvbGliL3JhZlwiKSk7XG5cbnZhciBfZ2V0U2Nyb2xsID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4vZ2V0U2Nyb2xsXCIpKTtcblxudmFyIF9lYXNpbmdzID0gcmVxdWlyZShcIi4vZWFzaW5nc1wiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpOyByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7IH0pKG5vZGVJbnRlcm9wKTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7IGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBzY3JvbGxUbyh5KSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgdmFyIF9vcHRpb25zJGdldENvbnRhaW5lciA9IG9wdGlvbnMuZ2V0Q29udGFpbmVyLFxuICAgICAgZ2V0Q29udGFpbmVyID0gX29wdGlvbnMkZ2V0Q29udGFpbmVyID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfSA6IF9vcHRpb25zJGdldENvbnRhaW5lcixcbiAgICAgIGNhbGxiYWNrID0gb3B0aW9ucy5jYWxsYmFjayxcbiAgICAgIF9vcHRpb25zJGR1cmF0aW9uID0gb3B0aW9ucy5kdXJhdGlvbixcbiAgICAgIGR1cmF0aW9uID0gX29wdGlvbnMkZHVyYXRpb24gPT09IHZvaWQgMCA/IDQ1MCA6IF9vcHRpb25zJGR1cmF0aW9uO1xuICB2YXIgY29udGFpbmVyID0gZ2V0Q29udGFpbmVyKCk7XG4gIHZhciBzY3JvbGxUb3AgPSAoMCwgX2dldFNjcm9sbFtcImRlZmF1bHRcIl0pKGNvbnRhaW5lciwgdHJ1ZSk7XG4gIHZhciBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gIHZhciBmcmFtZUZ1bmMgPSBmdW5jdGlvbiBmcmFtZUZ1bmMoKSB7XG4gICAgdmFyIHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgdmFyIHRpbWUgPSB0aW1lc3RhbXAgLSBzdGFydFRpbWU7XG4gICAgdmFyIG5leHRTY3JvbGxUb3AgPSAoMCwgX2Vhc2luZ3MuZWFzZUluT3V0Q3ViaWMpKHRpbWUgPiBkdXJhdGlvbiA/IGR1cmF0aW9uIDogdGltZSwgc2Nyb2xsVG9wLCB5LCBkdXJhdGlvbik7XG5cbiAgICBpZiAoKDAsIF9nZXRTY3JvbGwuaXNXaW5kb3cpKGNvbnRhaW5lcikpIHtcbiAgICAgIGNvbnRhaW5lci5zY3JvbGxUbyh3aW5kb3cucGFnZVhPZmZzZXQsIG5leHRTY3JvbGxUb3ApO1xuICAgIH0gZWxzZSBpZiAoY29udGFpbmVyIGluc3RhbmNlb2YgSFRNTERvY3VtZW50IHx8IGNvbnRhaW5lci5jb25zdHJ1Y3Rvci5uYW1lID09PSAnSFRNTERvY3VtZW50Jykge1xuICAgICAgY29udGFpbmVyLmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPSBuZXh0U2Nyb2xsVG9wO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gbmV4dFNjcm9sbFRvcDtcbiAgICB9XG5cbiAgICBpZiAodGltZSA8IGR1cmF0aW9uKSB7XG4gICAgICAoMCwgX3JhZltcImRlZmF1bHRcIl0pKGZyYW1lRnVuYyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgfVxuICB9O1xuXG4gICgwLCBfcmFmW1wiZGVmYXVsdFwiXSkoZnJhbWVGdW5jKTtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuaXNXaW5kb3cgPSBpc1dpbmRvdztcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gZ2V0U2Nyb2xsO1xuXG5mdW5jdGlvbiBpc1dpbmRvdyhvYmopIHtcbiAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiBvYmogIT09IHVuZGVmaW5lZCAmJiBvYmogPT09IG9iai53aW5kb3c7XG59XG5cbmZ1bmN0aW9uIGdldFNjcm9sbCh0YXJnZXQsIHRvcCkge1xuICB2YXIgX2E7XG5cbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICB2YXIgbWV0aG9kID0gdG9wID8gJ3Njcm9sbFRvcCcgOiAnc2Nyb2xsTGVmdCc7XG4gIHZhciByZXN1bHQgPSAwO1xuXG4gIGlmIChpc1dpbmRvdyh0YXJnZXQpKSB7XG4gICAgcmVzdWx0ID0gdGFyZ2V0W3RvcCA/ICdwYWdlWU9mZnNldCcgOiAncGFnZVhPZmZzZXQnXTtcbiAgfSBlbHNlIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBEb2N1bWVudCkge1xuICAgIHJlc3VsdCA9IHRhcmdldC5kb2N1bWVudEVsZW1lbnRbbWV0aG9kXTtcbiAgfSBlbHNlIGlmICh0YXJnZXQpIHtcbiAgICByZXN1bHQgPSB0YXJnZXRbbWV0aG9kXTtcbiAgfVxuXG4gIGlmICh0YXJnZXQgJiYgIWlzV2luZG93KHRhcmdldCkgJiYgdHlwZW9mIHJlc3VsdCAhPT0gJ251bWJlcicpIHtcbiAgICByZXN1bHQgPSAoX2EgPSAodGFyZ2V0Lm93bmVyRG9jdW1lbnQgfHwgdGFyZ2V0KS5kb2N1bWVudEVsZW1lbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVttZXRob2RdO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZWFzZUluT3V0Q3ViaWMgPSBlYXNlSW5PdXRDdWJpYztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9wcmVmZXItZGVmYXVsdC1leHBvcnRcbmZ1bmN0aW9uIGVhc2VJbk91dEN1YmljKHQsIGIsIGMsIGQpIHtcbiAgdmFyIGNjID0gYyAtIGI7XG4gIHQgLz0gZCAvIDI7XG5cbiAgaWYgKHQgPCAxKSB7XG4gICAgcmV0dXJuIGNjIC8gMiAqIHQgKiB0ICogdCArIGI7XG4gIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJldHVybi1hc3NpZ25cblxuXG4gIHJldHVybiBjYyAvIDIgKiAoKHQgLT0gMikgKiB0ICogdCArIDIpICsgYjtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9kZWZhdWx0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vZGVmYXVsdFwiKSk7XG5cbnZhciBfZGVmYXVsdCA9IF9kZWZhdWx0MltcImRlZmF1bHRcIl07XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cbi8qKiBUaGlzIGlzIGEgc3ludGFjdGljIHN1Z2FyIGZvciBgY29sdW1uc2AgcHJvcC4gU28gSE9DIHdpbGwgbm90IHdvcmsgb24gdGhpcy4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuZnVuY3Rpb24gQ29sdW1uKF8pIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbnZhciBfZGVmYXVsdCA9IENvbHVtbjtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuLyoqIFRoaXMgaXMgYSBzeW50YWN0aWMgc3VnYXIgZm9yIGBjb2x1bW5zYCBwcm9wLiBTbyBIT0Mgd2lsbCBub3Qgd29yayBvbiB0aGlzLiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5mdW5jdGlvbiBDb2x1bW5Hcm91cChfKSB7XG4gIHJldHVybiBudWxsO1xufVxuXG52YXIgX2RlZmF1bHQgPSBDb2x1bW5Hcm91cDtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9jb25maWdQcm92aWRlciA9IHJlcXVpcmUoXCIuLi9jb25maWctcHJvdmlkZXJcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG52YXIgR3JvdXAgPSBmdW5jdGlvbiBHcm91cChwcm9wcykge1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnN1bWVyLCBudWxsLCBmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBfY2xhc3NOYW1lcztcblxuICAgIHZhciBnZXRQcmVmaXhDbHMgPSBfcmVmLmdldFByZWZpeENscztcbiAgICB2YXIgY3VzdG9taXplUHJlZml4Q2xzID0gcHJvcHMucHJlZml4Q2xzLFxuICAgICAgICBfcHJvcHMkY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICBjbGFzc05hbWUgPSBfcHJvcHMkY2xhc3NOYW1lID09PSB2b2lkIDAgPyAnJyA6IF9wcm9wcyRjbGFzc05hbWU7XG4gICAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygnaW5wdXQtZ3JvdXAnLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICAgIHZhciBjbHMgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShwcmVmaXhDbHMsIChfY2xhc3NOYW1lcyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbGdcIiksIHByb3BzLnNpemUgPT09ICdsYXJnZScpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc21cIiksIHByb3BzLnNpemUgPT09ICdzbWFsbCcpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY29tcGFjdFwiKSwgcHJvcHMuY29tcGFjdCksIF9jbGFzc05hbWVzKSwgY2xhc3NOYW1lKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgIGNsYXNzTmFtZTogY2xzLFxuICAgICAgc3R5bGU6IHByb3BzLnN0eWxlLFxuICAgICAgb25Nb3VzZUVudGVyOiBwcm9wcy5vbk1vdXNlRW50ZXIsXG4gICAgICBvbk1vdXNlTGVhdmU6IHByb3BzLm9uTW91c2VMZWF2ZSxcbiAgICAgIG9uRm9jdXM6IHByb3BzLm9uRm9jdXMsXG4gICAgICBvbkJsdXI6IHByb3BzLm9uQmx1clxuICAgIH0sIHByb3BzLmNoaWxkcmVuKTtcbiAgfSk7XG59O1xuXG52YXIgX2RlZmF1bHQgPSBHcm91cDtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfaXNNb2JpbGUgPSByZXF1aXJlKFwiaXMtbW9iaWxlXCIpO1xuXG52YXIgX0lucHV0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9JbnB1dFwiKSk7XG5cbnZhciBfaWNvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2ljb25cIikpO1xuXG52YXIgX2J1dHRvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2J1dHRvblwiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG52YXIgX19yZXN0ID0gdm9pZCAwICYmICh2b2lkIDApLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG4gIH1cblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxudmFyIFNlYXJjaCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoU2VhcmNoLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFNlYXJjaCk7XG5cbiAgZnVuY3Rpb24gU2VhcmNoKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTZWFyY2gpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIF90aGlzLnNhdmVJbnB1dCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBfdGhpcy5pbnB1dCA9IG5vZGU7XG4gICAgfTtcblxuICAgIF90aGlzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIG9uQ2hhbmdlID0gX3RoaXMkcHJvcHMub25DaGFuZ2UsXG4gICAgICAgICAgb25TZWFyY2ggPSBfdGhpcyRwcm9wcy5vblNlYXJjaDtcblxuICAgICAgaWYgKGUgJiYgZS50YXJnZXQgJiYgZS50eXBlID09PSAnY2xpY2snICYmIG9uU2VhcmNoKSB7XG4gICAgICAgIG9uU2VhcmNoKGUudGFyZ2V0LnZhbHVlLCBlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgIG9uQ2hhbmdlKGUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5vblNlYXJjaCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgb25TZWFyY2ggPSBfdGhpcyRwcm9wczIub25TZWFyY2gsXG4gICAgICAgICAgbG9hZGluZyA9IF90aGlzJHByb3BzMi5sb2FkaW5nLFxuICAgICAgICAgIGRpc2FibGVkID0gX3RoaXMkcHJvcHMyLmRpc2FibGVkO1xuXG4gICAgICBpZiAobG9hZGluZyB8fCBkaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChvblNlYXJjaCkge1xuICAgICAgICBvblNlYXJjaChfdGhpcy5pbnB1dC5pbnB1dC52YWx1ZSwgZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghKDAsIF9pc01vYmlsZS5pc01vYmlsZSkoe1xuICAgICAgICB0YWJsZXQ6IHRydWVcbiAgICAgIH0pKSB7XG4gICAgICAgIF90aGlzLmlucHV0LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLnJlbmRlckxvYWRpbmcgPSBmdW5jdGlvbiAocHJlZml4Q2xzKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgZW50ZXJCdXR0b24gPSBfdGhpcyRwcm9wczMuZW50ZXJCdXR0b24sXG4gICAgICAgICAgc2l6ZSA9IF90aGlzJHByb3BzMy5zaXplO1xuXG4gICAgICBpZiAoZW50ZXJCdXR0b24pIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9idXR0b25bXCJkZWZhdWx0XCJdLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWJ1dHRvblwiKSxcbiAgICAgICAgICB0eXBlOiBcInByaW1hcnlcIixcbiAgICAgICAgICBzaXplOiBzaXplLFxuICAgICAgICAgIGtleTogXCJlbnRlckJ1dHRvblwiXG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9pY29uW1wiZGVmYXVsdFwiXSwge1xuICAgICAgICAgIHR5cGU6IFwibG9hZGluZ1wiXG4gICAgICAgIH0pKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9pY29uW1wiZGVmYXVsdFwiXSwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaWNvblwiKSxcbiAgICAgICAgdHlwZTogXCJsb2FkaW5nXCIsXG4gICAgICAgIGtleTogXCJsb2FkaW5nSWNvblwiXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX3RoaXMucmVuZGVyU3VmZml4ID0gZnVuY3Rpb24gKHByZWZpeENscykge1xuICAgICAgdmFyIF90aGlzJHByb3BzNCA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIHN1ZmZpeCA9IF90aGlzJHByb3BzNC5zdWZmaXgsXG4gICAgICAgICAgZW50ZXJCdXR0b24gPSBfdGhpcyRwcm9wczQuZW50ZXJCdXR0b24sXG4gICAgICAgICAgbG9hZGluZyA9IF90aGlzJHByb3BzNC5sb2FkaW5nO1xuXG4gICAgICBpZiAobG9hZGluZyAmJiAhZW50ZXJCdXR0b24pIHtcbiAgICAgICAgcmV0dXJuIFtzdWZmaXgsIF90aGlzLnJlbmRlckxvYWRpbmcocHJlZml4Q2xzKV07XG4gICAgICB9XG5cbiAgICAgIGlmIChlbnRlckJ1dHRvbikgcmV0dXJuIHN1ZmZpeDtcbiAgICAgIHZhciBpY29uID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2ljb25bXCJkZWZhdWx0XCJdLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pY29uXCIpLFxuICAgICAgICB0eXBlOiBcInNlYXJjaFwiLFxuICAgICAgICBrZXk6IFwic2VhcmNoSWNvblwiLFxuICAgICAgICBvbkNsaWNrOiBfdGhpcy5vblNlYXJjaFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChzdWZmaXgpIHtcbiAgICAgICAgcmV0dXJuIFsvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoc3VmZml4KSA/IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoc3VmZml4LCB7XG4gICAgICAgICAga2V5OiAnc3VmZml4J1xuICAgICAgICB9KSA6IG51bGwsIGljb25dO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaWNvbjtcbiAgICB9O1xuXG4gICAgX3RoaXMucmVuZGVyQWRkb25BZnRlciA9IGZ1bmN0aW9uIChwcmVmaXhDbHMpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczUgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBlbnRlckJ1dHRvbiA9IF90aGlzJHByb3BzNS5lbnRlckJ1dHRvbixcbiAgICAgICAgICBzaXplID0gX3RoaXMkcHJvcHM1LnNpemUsXG4gICAgICAgICAgZGlzYWJsZWQgPSBfdGhpcyRwcm9wczUuZGlzYWJsZWQsXG4gICAgICAgICAgYWRkb25BZnRlciA9IF90aGlzJHByb3BzNS5hZGRvbkFmdGVyLFxuICAgICAgICAgIGxvYWRpbmcgPSBfdGhpcyRwcm9wczUubG9hZGluZztcbiAgICAgIHZhciBidG5DbGFzc05hbWUgPSBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWJ1dHRvblwiKTtcblxuICAgICAgaWYgKGxvYWRpbmcgJiYgZW50ZXJCdXR0b24pIHtcbiAgICAgICAgcmV0dXJuIFtfdGhpcy5yZW5kZXJMb2FkaW5nKHByZWZpeENscyksIGFkZG9uQWZ0ZXJdO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWVudGVyQnV0dG9uKSByZXR1cm4gYWRkb25BZnRlcjtcbiAgICAgIHZhciBidXR0b247XG4gICAgICB2YXIgZW50ZXJCdXR0b25Bc0VsZW1lbnQgPSBlbnRlckJ1dHRvbjtcbiAgICAgIHZhciBpc0FudGRCdXR0b24gPSBlbnRlckJ1dHRvbkFzRWxlbWVudC50eXBlICYmIGVudGVyQnV0dG9uQXNFbGVtZW50LnR5cGUuX19BTlRfQlVUVE9OID09PSB0cnVlO1xuXG4gICAgICBpZiAoaXNBbnRkQnV0dG9uIHx8IGVudGVyQnV0dG9uQXNFbGVtZW50LnR5cGUgPT09ICdidXR0b24nKSB7XG4gICAgICAgIGJ1dHRvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoZW50ZXJCdXR0b25Bc0VsZW1lbnQsIF9leHRlbmRzKHtcbiAgICAgICAgICBvbkNsaWNrOiBfdGhpcy5vblNlYXJjaCxcbiAgICAgICAgICBrZXk6ICdlbnRlckJ1dHRvbidcbiAgICAgICAgfSwgaXNBbnRkQnV0dG9uID8ge1xuICAgICAgICAgIGNsYXNzTmFtZTogYnRuQ2xhc3NOYW1lLFxuICAgICAgICAgIHNpemU6IHNpemVcbiAgICAgICAgfSA6IHt9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBidXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfYnV0dG9uW1wiZGVmYXVsdFwiXSwge1xuICAgICAgICAgIGNsYXNzTmFtZTogYnRuQ2xhc3NOYW1lLFxuICAgICAgICAgIHR5cGU6IFwicHJpbWFyeVwiLFxuICAgICAgICAgIHNpemU6IHNpemUsXG4gICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICAgIGtleTogXCJlbnRlckJ1dHRvblwiLFxuICAgICAgICAgIG9uQ2xpY2s6IF90aGlzLm9uU2VhcmNoXG4gICAgICAgIH0sIGVudGVyQnV0dG9uID09PSB0cnVlID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2ljb25bXCJkZWZhdWx0XCJdLCB7XG4gICAgICAgICAgdHlwZTogXCJzZWFyY2hcIlxuICAgICAgICB9KSA6IGVudGVyQnV0dG9uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFkZG9uQWZ0ZXIpIHtcbiAgICAgICAgcmV0dXJuIFtidXR0b24sIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChhZGRvbkFmdGVyKSA/IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoYWRkb25BZnRlciwge1xuICAgICAgICAgIGtleTogJ2FkZG9uQWZ0ZXInXG4gICAgICAgIH0pIDogbnVsbF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBidXR0b247XG4gICAgfTtcblxuICAgIF90aGlzLnJlbmRlclNlYXJjaCA9IGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICB2YXIgZ2V0UHJlZml4Q2xzID0gX3JlZi5nZXRQcmVmaXhDbHM7XG5cbiAgICAgIHZhciBfYSA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIGN1c3RvbWl6ZVByZWZpeENscyA9IF9hLnByZWZpeENscyxcbiAgICAgICAgICBjdXN0b21pemVJbnB1dFByZWZpeENscyA9IF9hLmlucHV0UHJlZml4Q2xzLFxuICAgICAgICAgIHNpemUgPSBfYS5zaXplLFxuICAgICAgICAgIGVudGVyQnV0dG9uID0gX2EuZW50ZXJCdXR0b24sXG4gICAgICAgICAgY2xhc3NOYW1lID0gX2EuY2xhc3NOYW1lLFxuICAgICAgICAgIHJlc3RQcm9wcyA9IF9fcmVzdChfYSwgW1wicHJlZml4Q2xzXCIsIFwiaW5wdXRQcmVmaXhDbHNcIiwgXCJzaXplXCIsIFwiZW50ZXJCdXR0b25cIiwgXCJjbGFzc05hbWVcIl0pO1xuXG4gICAgICBkZWxldGUgcmVzdFByb3BzLm9uU2VhcmNoO1xuICAgICAgZGVsZXRlIHJlc3RQcm9wcy5sb2FkaW5nO1xuICAgICAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygnaW5wdXQtc2VhcmNoJywgY3VzdG9taXplUHJlZml4Q2xzKTtcbiAgICAgIHZhciBpbnB1dFByZWZpeENscyA9IGdldFByZWZpeENscygnaW5wdXQnLCBjdXN0b21pemVJbnB1dFByZWZpeENscyk7XG4gICAgICB2YXIgaW5wdXRDbGFzc05hbWU7XG5cbiAgICAgIGlmIChlbnRlckJ1dHRvbikge1xuICAgICAgICB2YXIgX2NsYXNzTmFtZXM7XG5cbiAgICAgICAgaW5wdXRDbGFzc05hbWUgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShwcmVmaXhDbHMsIGNsYXNzTmFtZSwgKF9jbGFzc05hbWVzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1lbnRlci1idXR0b25cIiksICEhZW50ZXJCdXR0b24pLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItXCIpLmNvbmNhdChzaXplKSwgISFzaXplKSwgX2NsYXNzTmFtZXMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlucHV0Q2xhc3NOYW1lID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkocHJlZml4Q2xzLCBjbGFzc05hbWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0lucHV0W1wiZGVmYXVsdFwiXSwgX2V4dGVuZHMoe1xuICAgICAgICBvblByZXNzRW50ZXI6IF90aGlzLm9uU2VhcmNoXG4gICAgICB9LCByZXN0UHJvcHMsIHtcbiAgICAgICAgc2l6ZTogc2l6ZSxcbiAgICAgICAgcHJlZml4Q2xzOiBpbnB1dFByZWZpeENscyxcbiAgICAgICAgYWRkb25BZnRlcjogX3RoaXMucmVuZGVyQWRkb25BZnRlcihwcmVmaXhDbHMpLFxuICAgICAgICBzdWZmaXg6IF90aGlzLnJlbmRlclN1ZmZpeChwcmVmaXhDbHMpLFxuICAgICAgICBvbkNoYW5nZTogX3RoaXMub25DaGFuZ2UsXG4gICAgICAgIHJlZjogX3RoaXMuc2F2ZUlucHV0LFxuICAgICAgICBjbGFzc05hbWU6IGlucHV0Q2xhc3NOYW1lXG4gICAgICB9KSk7XG4gICAgfTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhTZWFyY2gsIFt7XG4gICAga2V5OiBcImZvY3VzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvY3VzKCkge1xuICAgICAgdGhpcy5pbnB1dC5mb2N1cygpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJibHVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJsdXIoKSB7XG4gICAgICB0aGlzLmlucHV0LmJsdXIoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfY29uZmlnUHJvdmlkZXIuQ29uZmlnQ29uc3VtZXIsIG51bGwsIHRoaXMucmVuZGVyU2VhcmNoKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2VhcmNoO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IFNlYXJjaDtcblNlYXJjaC5kZWZhdWx0UHJvcHMgPSB7XG4gIGVudGVyQnV0dG9uOiBmYWxzZVxufTsiLCIndXNlIHN0cmljdCdcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gaXNNb2JpbGVcclxubW9kdWxlLmV4cG9ydHMuaXNNb2JpbGUgPSBpc01vYmlsZVxyXG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gaXNNb2JpbGVcclxuXHJcbnZhciBtb2JpbGVSRSA9IC8oYW5kcm9pZHxiYlxcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXFwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllc1s0Nl0wfHN5bWJpYW58dHJlb3x1cFxcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2lcclxuXHJcbnZhciB0YWJsZXRSRSA9IC8oYW5kcm9pZHxiYlxcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXFwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllc1s0Nl0wfHN5bWJpYW58dHJlb3x1cFxcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vfGFuZHJvaWR8aXBhZHxwbGF5Ym9va3xzaWxrL2lcclxuXHJcbmZ1bmN0aW9uIGlzTW9iaWxlIChvcHRzKSB7XHJcbiAgaWYgKCFvcHRzKSBvcHRzID0ge31cclxuICB2YXIgdWEgPSBvcHRzLnVhXHJcbiAgaWYgKCF1YSAmJiB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJykgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50XHJcbiAgaWYgKHVhICYmIHVhLmhlYWRlcnMgJiYgdHlwZW9mIHVhLmhlYWRlcnNbJ3VzZXItYWdlbnQnXSA9PT0gJ3N0cmluZycpIHtcclxuICAgIHVhID0gdWEuaGVhZGVyc1sndXNlci1hZ2VudCddXHJcbiAgfVxyXG4gIGlmICh0eXBlb2YgdWEgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2VcclxuXHJcbiAgdmFyIHJlc3VsdCA9IG9wdHMudGFibGV0ID8gdGFibGV0UkUudGVzdCh1YSkgOiBtb2JpbGVSRS50ZXN0KHVhKVxyXG5cclxuICBpZiAoXHJcbiAgICAhcmVzdWx0ICYmXHJcbiAgICBvcHRzLnRhYmxldCAmJlxyXG4gICAgb3B0cy5mZWF0dXJlRGV0ZWN0ICYmXHJcbiAgICBuYXZpZ2F0b3IgJiZcclxuICAgIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDEgJiZcclxuICAgIHVhLmluZGV4T2YoJ01hY2ludG9zaCcpICE9PSAtMSAmJlxyXG4gICAgdWEuaW5kZXhPZignU2FmYXJpJykgIT09IC0xXHJcbiAgKSB7XHJcbiAgICByZXN1bHQgPSB0cnVlXHJcbiAgfVxyXG5cclxuICByZXR1cm4gcmVzdWx0XHJcbn1cclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIFByb3BUeXBlcyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfcmVhY3RMaWZlY3ljbGVzQ29tcGF0ID0gcmVxdWlyZShcInJlYWN0LWxpZmVjeWNsZXMtY29tcGF0XCIpO1xuXG52YXIgX29taXQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJvbWl0LmpzXCIpKTtcblxudmFyIF9pY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vaWNvblwiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX3dhdmUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9fdXRpbC93YXZlXCIpKTtcblxudmFyIF90eXBlID0gcmVxdWlyZShcIi4uL191dGlsL3R5cGVcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbnZhciBfX3Jlc3QgPSB2b2lkIDAgJiYgKHZvaWQgMCkuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcbiAgfVxuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvYnV0dG9uLWhhcy10eXBlICovXG5cblxudmFyIHJ4VHdvQ05DaGFyID0gL15bXFx1NGUwMC1cXHU5ZmE1XXsyfSQvO1xudmFyIGlzVHdvQ05DaGFyID0gcnhUd29DTkNoYXIudGVzdC5iaW5kKHJ4VHdvQ05DaGFyKTtcblxuZnVuY3Rpb24gaXNTdHJpbmcoc3RyKSB7XG4gIHJldHVybiB0eXBlb2Ygc3RyID09PSAnc3RyaW5nJztcbn0gLy8gSW5zZXJ0IG9uZSBzcGFjZSBiZXR3ZWVuIHR3byBjaGluZXNlIGNoYXJhY3RlcnMgYXV0b21hdGljYWxseS5cblxuXG5mdW5jdGlvbiBpbnNlcnRTcGFjZShjaGlsZCwgbmVlZEluc2VydGVkKSB7XG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpZiBpcyB1bmRlZmluZWQgb3IgbnVsbC5cbiAgaWYgKGNoaWxkID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgU1BBQ0UgPSBuZWVkSW5zZXJ0ZWQgPyAnICcgOiAnJzsgLy8gc3RyaWN0TnVsbENoZWNrcyBvb3BzLlxuXG4gIGlmICh0eXBlb2YgY2hpbGQgIT09ICdzdHJpbmcnICYmIHR5cGVvZiBjaGlsZCAhPT0gJ251bWJlcicgJiYgaXNTdHJpbmcoY2hpbGQudHlwZSkgJiYgaXNUd29DTkNoYXIoY2hpbGQucHJvcHMuY2hpbGRyZW4pKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHt9LCBjaGlsZC5wcm9wcy5jaGlsZHJlbi5zcGxpdCgnJykuam9pbihTUEFDRSkpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoaXNUd29DTkNoYXIoY2hpbGQpKSB7XG4gICAgICBjaGlsZCA9IGNoaWxkLnNwbGl0KCcnKS5qb2luKFNQQUNFKTtcbiAgICB9XG5cbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIGNoaWxkKTtcbiAgfVxuXG4gIHJldHVybiBjaGlsZDtcbn1cblxuZnVuY3Rpb24gc3BhY2VDaGlsZHJlbihjaGlsZHJlbiwgbmVlZEluc2VydGVkKSB7XG4gIHZhciBpc1ByZXZDaGlsZFB1cmUgPSBmYWxzZTtcbiAgdmFyIGNoaWxkTGlzdCA9IFtdO1xuICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICB2YXIgdHlwZSA9IF90eXBlb2YoY2hpbGQpO1xuXG4gICAgdmFyIGlzQ3VycmVudENoaWxkUHVyZSA9IHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGUgPT09ICdudW1iZXInO1xuXG4gICAgaWYgKGlzUHJldkNoaWxkUHVyZSAmJiBpc0N1cnJlbnRDaGlsZFB1cmUpIHtcbiAgICAgIHZhciBsYXN0SW5kZXggPSBjaGlsZExpc3QubGVuZ3RoIC0gMTtcbiAgICAgIHZhciBsYXN0Q2hpbGQgPSBjaGlsZExpc3RbbGFzdEluZGV4XTtcbiAgICAgIGNoaWxkTGlzdFtsYXN0SW5kZXhdID0gXCJcIi5jb25jYXQobGFzdENoaWxkKS5jb25jYXQoY2hpbGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGlsZExpc3QucHVzaChjaGlsZCk7XG4gICAgfVxuXG4gICAgaXNQcmV2Q2hpbGRQdXJlID0gaXNDdXJyZW50Q2hpbGRQdXJlO1xuICB9KTsgLy8gUGFzcyB0byBSZWFjdC5DaGlsZHJlbi5tYXAgdG8gYXV0byBmaWxsIGtleVxuXG4gIHJldHVybiBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRMaXN0LCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICByZXR1cm4gaW5zZXJ0U3BhY2UoY2hpbGQsIG5lZWRJbnNlcnRlZCk7XG4gIH0pO1xufVxuXG52YXIgQnV0dG9uVHlwZXMgPSAoMCwgX3R5cGUudHVwbGUpKCdkZWZhdWx0JywgJ3ByaW1hcnknLCAnZ2hvc3QnLCAnZGFzaGVkJywgJ2RhbmdlcicsICdsaW5rJyk7XG52YXIgQnV0dG9uU2hhcGVzID0gKDAsIF90eXBlLnR1cGxlKSgnY2lyY2xlJywgJ2NpcmNsZS1vdXRsaW5lJywgJ3JvdW5kJyk7XG52YXIgQnV0dG9uU2l6ZXMgPSAoMCwgX3R5cGUudHVwbGUpKCdsYXJnZScsICdkZWZhdWx0JywgJ3NtYWxsJyk7XG52YXIgQnV0dG9uSFRNTFR5cGVzID0gKDAsIF90eXBlLnR1cGxlKSgnc3VibWl0JywgJ2J1dHRvbicsICdyZXNldCcpO1xuXG52YXIgQnV0dG9uID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhCdXR0b24sIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoQnV0dG9uKTtcblxuICBmdW5jdGlvbiBCdXR0b24ocHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQnV0dG9uKTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcHJvcHMpO1xuXG4gICAgX3RoaXMuc2F2ZUJ1dHRvblJlZiA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBfdGhpcy5idXR0b25Ob2RlID0gbm9kZTtcbiAgICB9O1xuXG4gICAgX3RoaXMuaGFuZGxlQ2xpY2sgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIGxvYWRpbmcgPSBfdGhpcy5zdGF0ZS5sb2FkaW5nO1xuICAgICAgdmFyIG9uQ2xpY2sgPSBfdGhpcy5wcm9wcy5vbkNsaWNrO1xuXG4gICAgICBpZiAobG9hZGluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICAgIG9uQ2xpY2soZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLnJlbmRlckJ1dHRvbiA9IGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICB2YXIgX2NsYXNzTmFtZXM7XG5cbiAgICAgIHZhciBnZXRQcmVmaXhDbHMgPSBfcmVmLmdldFByZWZpeENscyxcbiAgICAgICAgICBhdXRvSW5zZXJ0U3BhY2VJbkJ1dHRvbiA9IF9yZWYuYXV0b0luc2VydFNwYWNlSW5CdXR0b247XG5cbiAgICAgIHZhciBfYSA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIGN1c3RvbWl6ZVByZWZpeENscyA9IF9hLnByZWZpeENscyxcbiAgICAgICAgICB0eXBlID0gX2EudHlwZSxcbiAgICAgICAgICBzaGFwZSA9IF9hLnNoYXBlLFxuICAgICAgICAgIHNpemUgPSBfYS5zaXplLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF9hLmNsYXNzTmFtZSxcbiAgICAgICAgICBjaGlsZHJlbiA9IF9hLmNoaWxkcmVuLFxuICAgICAgICAgIGljb24gPSBfYS5pY29uLFxuICAgICAgICAgIGdob3N0ID0gX2EuZ2hvc3QsXG4gICAgICAgICAgYmxvY2sgPSBfYS5ibG9jayxcbiAgICAgICAgICByZXN0ID0gX19yZXN0KF9hLCBbXCJwcmVmaXhDbHNcIiwgXCJ0eXBlXCIsIFwic2hhcGVcIiwgXCJzaXplXCIsIFwiY2xhc3NOYW1lXCIsIFwiY2hpbGRyZW5cIiwgXCJpY29uXCIsIFwiZ2hvc3RcIiwgXCJibG9ja1wiXSk7XG5cbiAgICAgIHZhciBfdGhpcyRzdGF0ZSA9IF90aGlzLnN0YXRlLFxuICAgICAgICAgIGxvYWRpbmcgPSBfdGhpcyRzdGF0ZS5sb2FkaW5nLFxuICAgICAgICAgIGhhc1R3b0NOQ2hhciA9IF90aGlzJHN0YXRlLmhhc1R3b0NOQ2hhcjtcbiAgICAgIHZhciBwcmVmaXhDbHMgPSBnZXRQcmVmaXhDbHMoJ2J0bicsIGN1c3RvbWl6ZVByZWZpeENscyk7XG4gICAgICB2YXIgYXV0b0luc2VydFNwYWNlID0gYXV0b0luc2VydFNwYWNlSW5CdXR0b24gIT09IGZhbHNlOyAvLyBsYXJnZSA9PiBsZ1xuICAgICAgLy8gc21hbGwgPT4gc21cblxuICAgICAgdmFyIHNpemVDbHMgPSAnJztcblxuICAgICAgc3dpdGNoIChzaXplKSB7XG4gICAgICAgIGNhc2UgJ2xhcmdlJzpcbiAgICAgICAgICBzaXplQ2xzID0gJ2xnJztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzbWFsbCc6XG4gICAgICAgICAgc2l6ZUNscyA9ICdzbSc7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgdmFyIGljb25UeXBlID0gbG9hZGluZyA/ICdsb2FkaW5nJyA6IGljb247XG4gICAgICB2YXIgY2xhc3NlcyA9ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKHByZWZpeENscywgY2xhc3NOYW1lLCAoX2NsYXNzTmFtZXMgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLVwiKS5jb25jYXQodHlwZSksIHR5cGUpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItXCIpLmNvbmNhdChzaGFwZSksIHNoYXBlKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLVwiKS5jb25jYXQoc2l6ZUNscyksIHNpemVDbHMpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaWNvbi1vbmx5XCIpLCAhY2hpbGRyZW4gJiYgY2hpbGRyZW4gIT09IDAgJiYgaWNvblR5cGUpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbG9hZGluZ1wiKSwgISFsb2FkaW5nKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWJhY2tncm91bmQtZ2hvc3RcIiksIGdob3N0KSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXR3by1jaGluZXNlLWNoYXJzXCIpLCBoYXNUd29DTkNoYXIgJiYgYXV0b0luc2VydFNwYWNlKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWJsb2NrXCIpLCBibG9jayksIF9jbGFzc05hbWVzKSk7XG4gICAgICB2YXIgaWNvbk5vZGUgPSBpY29uVHlwZSA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9pY29uW1wiZGVmYXVsdFwiXSwge1xuICAgICAgICB0eXBlOiBpY29uVHlwZVxuICAgICAgfSkgOiBudWxsO1xuICAgICAgdmFyIGtpZHMgPSBjaGlsZHJlbiB8fCBjaGlsZHJlbiA9PT0gMCA/IHNwYWNlQ2hpbGRyZW4oY2hpbGRyZW4sIF90aGlzLmlzTmVlZEluc2VydGVkKCkgJiYgYXV0b0luc2VydFNwYWNlKSA6IG51bGw7XG4gICAgICB2YXIgbGlua0J1dHRvblJlc3RQcm9wcyA9ICgwLCBfb21pdFtcImRlZmF1bHRcIl0pKHJlc3QsIFsnaHRtbFR5cGUnLCAnbG9hZGluZyddKTtcblxuICAgICAgaWYgKGxpbmtCdXR0b25SZXN0UHJvcHMuaHJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgX2V4dGVuZHMoe30sIGxpbmtCdXR0b25SZXN0UHJvcHMsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMsXG4gICAgICAgICAgb25DbGljazogX3RoaXMuaGFuZGxlQ2xpY2ssXG4gICAgICAgICAgcmVmOiBfdGhpcy5zYXZlQnV0dG9uUmVmXG4gICAgICAgIH0pLCBpY29uTm9kZSwga2lkcyk7XG4gICAgICB9IC8vIFJlYWN0IGRvZXMgbm90IHJlY29nbml6ZSB0aGUgYGh0bWxUeXBlYCBwcm9wIG9uIGEgRE9NIGVsZW1lbnQuIEhlcmUgd2UgcGljayBpdCBvdXQgb2YgYHJlc3RgLlxuXG5cbiAgICAgIHZhciBfYiA9IHJlc3QsXG4gICAgICAgICAgaHRtbFR5cGUgPSBfYi5odG1sVHlwZSxcbiAgICAgICAgICBvdGhlclByb3BzID0gX19yZXN0KF9iLCBbXCJodG1sVHlwZVwiXSk7XG5cbiAgICAgIHZhciBidXR0b25Ob2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwgX2V4dGVuZHMoe30sICgwLCBfb21pdFtcImRlZmF1bHRcIl0pKG90aGVyUHJvcHMsIFsnbG9hZGluZyddKSwge1xuICAgICAgICB0eXBlOiBodG1sVHlwZSxcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLFxuICAgICAgICBvbkNsaWNrOiBfdGhpcy5oYW5kbGVDbGljayxcbiAgICAgICAgcmVmOiBfdGhpcy5zYXZlQnV0dG9uUmVmXG4gICAgICB9KSwgaWNvbk5vZGUsIGtpZHMpO1xuXG4gICAgICBpZiAodHlwZSA9PT0gJ2xpbmsnKSB7XG4gICAgICAgIHJldHVybiBidXR0b25Ob2RlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX3dhdmVbXCJkZWZhdWx0XCJdLCBudWxsLCBidXR0b25Ob2RlKTtcbiAgICB9O1xuXG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICBsb2FkaW5nOiBwcm9wcy5sb2FkaW5nLFxuICAgICAgaGFzVHdvQ05DaGFyOiBmYWxzZVxuICAgIH07XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEJ1dHRvbiwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB0aGlzLmZpeFR3b0NOQ2hhcigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuZml4VHdvQ05DaGFyKCk7XG5cbiAgICAgIGlmIChwcmV2UHJvcHMubG9hZGluZyAmJiB0eXBlb2YgcHJldlByb3BzLmxvYWRpbmcgIT09ICdib29sZWFuJykge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5kZWxheVRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgICB2YXIgbG9hZGluZyA9IHRoaXMucHJvcHMubG9hZGluZztcblxuICAgICAgaWYgKGxvYWRpbmcgJiYgdHlwZW9mIGxvYWRpbmcgIT09ICdib29sZWFuJyAmJiBsb2FkaW5nLmRlbGF5KSB7XG4gICAgICAgIHRoaXMuZGVsYXlUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBsb2FkaW5nOiBsb2FkaW5nXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sIGxvYWRpbmcuZGVsYXkpO1xuICAgICAgfSBlbHNlIGlmIChwcmV2UHJvcHMubG9hZGluZyAhPT0gbG9hZGluZykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tZGlkLXVwZGF0ZS1zZXQtc3RhdGVcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgbG9hZGluZzogbG9hZGluZ1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5kZWxheVRpbWVvdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXlUaW1lb3V0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZml4VHdvQ05DaGFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZpeFR3b0NOQ2hhcigpIHtcbiAgICAgIC8vIEZpeCBmb3IgSE9DIHVzYWdlIGxpa2UgPEZvcm1hdE1lc3NhZ2UgLz5cbiAgICAgIGlmICghdGhpcy5idXR0b25Ob2RlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGJ1dHRvblRleHQgPSB0aGlzLmJ1dHRvbk5vZGUudGV4dENvbnRlbnQ7XG5cbiAgICAgIGlmICh0aGlzLmlzTmVlZEluc2VydGVkKCkgJiYgaXNUd29DTkNoYXIoYnV0dG9uVGV4dCkpIHtcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLmhhc1R3b0NOQ2hhcikge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgaGFzVHdvQ05DaGFyOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5oYXNUd29DTkNoYXIpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaGFzVHdvQ05DaGFyOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNOZWVkSW5zZXJ0ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNOZWVkSW5zZXJ0ZWQoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGljb24gPSBfdGhpcyRwcm9wcy5pY29uLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMuY2hpbGRyZW4sXG4gICAgICAgICAgdHlwZSA9IF90aGlzJHByb3BzLnR5cGU7XG4gICAgICByZXR1cm4gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pID09PSAxICYmICFpY29uICYmIHR5cGUgIT09ICdsaW5rJztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfY29uZmlnUHJvdmlkZXIuQ29uZmlnQ29uc3VtZXIsIG51bGwsIHRoaXMucmVuZGVyQnV0dG9uKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQnV0dG9uO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5CdXR0b24uX19BTlRfQlVUVE9OID0gdHJ1ZTtcbkJ1dHRvbi5kZWZhdWx0UHJvcHMgPSB7XG4gIGxvYWRpbmc6IGZhbHNlLFxuICBnaG9zdDogZmFsc2UsXG4gIGJsb2NrOiBmYWxzZSxcbiAgaHRtbFR5cGU6ICdidXR0b24nXG59O1xuQnV0dG9uLnByb3BUeXBlcyA9IHtcbiAgdHlwZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2hhcGU6IFByb3BUeXBlcy5vbmVPZihCdXR0b25TaGFwZXMpLFxuICBzaXplOiBQcm9wVHlwZXMub25lT2YoQnV0dG9uU2l6ZXMpLFxuICBodG1sVHlwZTogUHJvcFR5cGVzLm9uZU9mKEJ1dHRvbkhUTUxUeXBlcyksXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBsb2FkaW5nOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYm9vbCwgUHJvcFR5cGVzLm9iamVjdF0pLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGljb246IFByb3BUeXBlcy5zdHJpbmcsXG4gIGJsb2NrOiBQcm9wVHlwZXMuYm9vbCxcbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG4oMCwgX3JlYWN0TGlmZWN5Y2xlc0NvbXBhdC5wb2x5ZmlsbCkoQnV0dG9uKTtcbnZhciBfZGVmYXVsdCA9IEJ1dHRvbjtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9yZWFjdERvbSA9IHJlcXVpcmUoXCJyZWFjdC1kb21cIik7XG5cbnZhciBfRXZlbnQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjc3MtYW5pbWF0aW9uL2xpYi9FdmVudFwiKSk7XG5cbnZhciBfcmFmID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9yYWZcIikpO1xuXG52YXIgX2NvbmZpZ1Byb3ZpZGVyID0gcmVxdWlyZShcIi4uL2NvbmZpZy1wcm92aWRlclwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxudmFyIHN0eWxlRm9yUGVzdWRvOyAvLyBXaGVyZSBlbCBpcyB0aGUgRE9NIGVsZW1lbnQgeW91J2QgbGlrZSB0byB0ZXN0IGZvciB2aXNpYmlsaXR5XG5cbmZ1bmN0aW9uIGlzSGlkZGVuKGVsZW1lbnQpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIWVsZW1lbnQgfHwgZWxlbWVudC5vZmZzZXRQYXJlbnQgPT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzTm90R3JleShjb2xvcikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbiAgdmFyIG1hdGNoID0gKGNvbG9yIHx8ICcnKS5tYXRjaCgvcmdiYT9cXCgoXFxkKiksIChcXGQqKSwgKFxcZCopKCwgW1xcLlxcZF0qKT9cXCkvKTtcblxuICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0gJiYgbWF0Y2hbMl0gJiYgbWF0Y2hbM10pIHtcbiAgICByZXR1cm4gIShtYXRjaFsxXSA9PT0gbWF0Y2hbMl0gJiYgbWF0Y2hbMl0gPT09IG1hdGNoWzNdKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG52YXIgV2F2ZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoV2F2ZSwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihXYXZlKTtcblxuICBmdW5jdGlvbiBXYXZlKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXYXZlKTtcblxuICAgIF90aGlzID0gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgX3RoaXMuYW5pbWF0aW9uU3RhcnQgPSBmYWxzZTtcbiAgICBfdGhpcy5kZXN0cm95ID0gZmFsc2U7XG5cbiAgICBfdGhpcy5vbkNsaWNrID0gZnVuY3Rpb24gKG5vZGUsIHdhdmVDb2xvcikge1xuICAgICAgaWYgKCFub2RlIHx8IGlzSGlkZGVuKG5vZGUpIHx8IG5vZGUuY2xhc3NOYW1lLmluZGV4T2YoJy1sZWF2ZScpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgaW5zZXJ0RXh0cmFOb2RlID0gX3RoaXMucHJvcHMuaW5zZXJ0RXh0cmFOb2RlO1xuICAgICAgX3RoaXMuZXh0cmFOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgICAgIHZhciBfYXNzZXJ0VGhpc0luaXRpYWxpemUgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSxcbiAgICAgICAgICBleHRyYU5vZGUgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemUuZXh0cmFOb2RlO1xuXG4gICAgICBleHRyYU5vZGUuY2xhc3NOYW1lID0gJ2FudC1jbGljay1hbmltYXRpbmctbm9kZSc7XG5cbiAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gX3RoaXMuZ2V0QXR0cmlidXRlTmFtZSgpO1xuXG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCAndHJ1ZScpOyAvLyBOb3Qgd2hpdGUgb3IgdHJhbnNwYXJudCBvciBncmV5XG5cbiAgICAgIHN0eWxlRm9yUGVzdWRvID0gc3R5bGVGb3JQZXN1ZG8gfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcblxuICAgICAgaWYgKHdhdmVDb2xvciAmJiB3YXZlQ29sb3IgIT09ICcjZmZmZmZmJyAmJiB3YXZlQ29sb3IgIT09ICdyZ2IoMjU1LCAyNTUsIDI1NSknICYmIGlzTm90R3JleSh3YXZlQ29sb3IpICYmICEvcmdiYVxcKFxcZCosIFxcZCosIFxcZCosIDBcXCkvLnRlc3Qod2F2ZUNvbG9yKSAmJiAvLyBhbnkgdHJhbnNwYXJlbnQgcmdiYSBjb2xvclxuICAgICAgd2F2ZUNvbG9yICE9PSAndHJhbnNwYXJlbnQnKSB7XG4gICAgICAgIC8vIEFkZCBub25jZSBpZiBDU1AgZXhpc3RcbiAgICAgICAgaWYgKF90aGlzLmNzcCAmJiBfdGhpcy5jc3Aubm9uY2UpIHtcbiAgICAgICAgICBzdHlsZUZvclBlc3Vkby5ub25jZSA9IF90aGlzLmNzcC5ub25jZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV4dHJhTm9kZS5zdHlsZS5ib3JkZXJDb2xvciA9IHdhdmVDb2xvcjtcbiAgICAgICAgc3R5bGVGb3JQZXN1ZG8uaW5uZXJIVE1MID0gXCJcXG4gICAgICBbYW50LWNsaWNrLWFuaW1hdGluZy13aXRob3V0LWV4dHJhLW5vZGU9J3RydWUnXTo6YWZ0ZXIsIC5hbnQtY2xpY2stYW5pbWF0aW5nLW5vZGUge1xcbiAgICAgICAgLS1hbnRkLXdhdmUtc2hhZG93LWNvbG9yOiBcIi5jb25jYXQod2F2ZUNvbG9yLCBcIjtcXG4gICAgICB9XCIpO1xuXG4gICAgICAgIGlmICghZG9jdW1lbnQuYm9keS5jb250YWlucyhzdHlsZUZvclBlc3VkbykpIHtcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHN0eWxlRm9yUGVzdWRvKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaW5zZXJ0RXh0cmFOb2RlKSB7XG4gICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoZXh0cmFOb2RlKTtcbiAgICAgIH1cblxuICAgICAgX0V2ZW50W1wiZGVmYXVsdFwiXS5hZGRTdGFydEV2ZW50TGlzdGVuZXIobm9kZSwgX3RoaXMub25UcmFuc2l0aW9uU3RhcnQpO1xuXG4gICAgICBfRXZlbnRbXCJkZWZhdWx0XCJdLmFkZEVuZEV2ZW50TGlzdGVuZXIobm9kZSwgX3RoaXMub25UcmFuc2l0aW9uRW5kKTtcbiAgICB9O1xuXG4gICAgX3RoaXMub25UcmFuc2l0aW9uU3RhcnQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKF90aGlzLmRlc3Ryb3kpIHJldHVybjtcbiAgICAgIHZhciBub2RlID0gKDAsIF9yZWFjdERvbS5maW5kRE9NTm9kZSkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuXG4gICAgICBpZiAoIWUgfHwgZS50YXJnZXQgIT09IG5vZGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIV90aGlzLmFuaW1hdGlvblN0YXJ0KSB7XG4gICAgICAgIF90aGlzLnJlc2V0RWZmZWN0KG5vZGUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5vblRyYW5zaXRpb25FbmQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKCFlIHx8IGUuYW5pbWF0aW9uTmFtZSAhPT0gJ2ZhZGVFZmZlY3QnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgX3RoaXMucmVzZXRFZmZlY3QoZS50YXJnZXQpO1xuICAgIH07XG5cbiAgICBfdGhpcy5iaW5kQW5pbWF0aW9uRXZlbnQgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgaWYgKCFub2RlIHx8ICFub2RlLmdldEF0dHJpYnV0ZSB8fCBub2RlLmdldEF0dHJpYnV0ZSgnZGlzYWJsZWQnKSB8fCBub2RlLmNsYXNzTmFtZS5pbmRleE9mKCdkaXNhYmxlZCcpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgb25DbGljayA9IGZ1bmN0aW9uIG9uQ2xpY2soZSkge1xuICAgICAgICAvLyBGaXggcmFkaW8gYnV0dG9uIGNsaWNrIHR3aWNlXG4gICAgICAgIGlmIChlLnRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnIHx8IGlzSGlkZGVuKGUudGFyZ2V0KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLnJlc2V0RWZmZWN0KG5vZGUpOyAvLyBHZXQgd2F2ZSBjb2xvciBmcm9tIHRhcmdldFxuXG5cbiAgICAgICAgdmFyIHdhdmVDb2xvciA9IGdldENvbXB1dGVkU3R5bGUobm9kZSkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXRvcC1jb2xvcicpIHx8IC8vIEZpcmVmb3ggQ29tcGF0aWJsZVxuICAgICAgICBnZXRDb21wdXRlZFN0eWxlKG5vZGUpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1jb2xvcicpIHx8IGdldENvbXB1dGVkU3R5bGUobm9kZSkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpO1xuICAgICAgICBfdGhpcy5jbGlja1dhdmVUaW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLm9uQ2xpY2sobm9kZSwgd2F2ZUNvbG9yKTtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgICAgX3JhZltcImRlZmF1bHRcIl0uY2FuY2VsKF90aGlzLmFuaW1hdGlvblN0YXJ0SWQpO1xuXG4gICAgICAgIF90aGlzLmFuaW1hdGlvblN0YXJ0ID0gdHJ1ZTsgLy8gUmVuZGVyIHRvIHRyaWdnZXIgdHJhbnNpdGlvbiBldmVudCBjb3N0IDMgZnJhbWVzLiBMZXQncyBkZWxheSAxMCBmcmFtZXMgdG8gcmVzZXQgdGhpcy5cblxuICAgICAgICBfdGhpcy5hbmltYXRpb25TdGFydElkID0gKDAsIF9yYWZbXCJkZWZhdWx0XCJdKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMuYW5pbWF0aW9uU3RhcnQgPSBmYWxzZTtcbiAgICAgICAgfSwgMTApO1xuICAgICAgfTtcblxuICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uQ2xpY2ssIHRydWUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2FuY2VsOiBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgICAgICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIG9uQ2xpY2ssIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBfdGhpcy5yZW5kZXJXYXZlID0gZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciBjc3AgPSBfcmVmLmNzcDtcbiAgICAgIHZhciBjaGlsZHJlbiA9IF90aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgX3RoaXMuY3NwID0gY3NwO1xuICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgIH07XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2F2ZSwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB2YXIgbm9kZSA9ICgwLCBfcmVhY3REb20uZmluZERPTU5vZGUpKHRoaXMpO1xuXG4gICAgICBpZiAoIW5vZGUgfHwgbm9kZS5ub2RlVHlwZSAhPT0gMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW5zdGFuY2UgPSB0aGlzLmJpbmRBbmltYXRpb25FdmVudChub2RlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgICB0aGlzLmluc3RhbmNlLmNhbmNlbCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jbGlja1dhdmVUaW1lb3V0SWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2xpY2tXYXZlVGltZW91dElkKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kZXN0cm95ID0gdHJ1ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0QXR0cmlidXRlTmFtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRBdHRyaWJ1dGVOYW1lKCkge1xuICAgICAgdmFyIGluc2VydEV4dHJhTm9kZSA9IHRoaXMucHJvcHMuaW5zZXJ0RXh0cmFOb2RlO1xuICAgICAgcmV0dXJuIGluc2VydEV4dHJhTm9kZSA/ICdhbnQtY2xpY2stYW5pbWF0aW5nJyA6ICdhbnQtY2xpY2stYW5pbWF0aW5nLXdpdGhvdXQtZXh0cmEtbm9kZSc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlc2V0RWZmZWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2V0RWZmZWN0KG5vZGUpIHtcbiAgICAgIGlmICghbm9kZSB8fCBub2RlID09PSB0aGlzLmV4dHJhTm9kZSB8fCAhKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBpbnNlcnRFeHRyYU5vZGUgPSB0aGlzLnByb3BzLmluc2VydEV4dHJhTm9kZTtcbiAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gdGhpcy5nZXRBdHRyaWJ1dGVOYW1lKCk7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCAnZmFsc2UnKTsgLy8gZWRnZSBoYXMgYnVnIG9uIGByZW1vdmVBdHRyaWJ1dGVgICMxNDQ2NlxuXG4gICAgICBpZiAoc3R5bGVGb3JQZXN1ZG8pIHtcbiAgICAgICAgc3R5bGVGb3JQZXN1ZG8uaW5uZXJIVE1MID0gJyc7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbnNlcnRFeHRyYU5vZGUgJiYgdGhpcy5leHRyYU5vZGUgJiYgbm9kZS5jb250YWlucyh0aGlzLmV4dHJhTm9kZSkpIHtcbiAgICAgICAgbm9kZS5yZW1vdmVDaGlsZCh0aGlzLmV4dHJhTm9kZSk7XG4gICAgICB9XG5cbiAgICAgIF9FdmVudFtcImRlZmF1bHRcIl0ucmVtb3ZlU3RhcnRFdmVudExpc3RlbmVyKG5vZGUsIHRoaXMub25UcmFuc2l0aW9uU3RhcnQpO1xuXG4gICAgICBfRXZlbnRbXCJkZWZhdWx0XCJdLnJlbW92ZUVuZEV2ZW50TGlzdGVuZXIobm9kZSwgdGhpcy5vblRyYW5zaXRpb25FbmQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jb25maWdQcm92aWRlci5Db25maWdDb25zdW1lciwgbnVsbCwgdGhpcy5yZW5kZXJXYXZlKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gV2F2ZTtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBXYXZlOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbnZhciBTVEFSVF9FVkVOVF9OQU1FX01BUCA9IHtcbiAgdHJhbnNpdGlvbnN0YXJ0OiB7XG4gICAgdHJhbnNpdGlvbjogJ3RyYW5zaXRpb25zdGFydCcsXG4gICAgV2Via2l0VHJhbnNpdGlvbjogJ3dlYmtpdFRyYW5zaXRpb25TdGFydCcsXG4gICAgTW96VHJhbnNpdGlvbjogJ21velRyYW5zaXRpb25TdGFydCcsXG4gICAgT1RyYW5zaXRpb246ICdvVHJhbnNpdGlvblN0YXJ0JyxcbiAgICBtc1RyYW5zaXRpb246ICdNU1RyYW5zaXRpb25TdGFydCdcbiAgfSxcblxuICBhbmltYXRpb25zdGFydDoge1xuICAgIGFuaW1hdGlvbjogJ2FuaW1hdGlvbnN0YXJ0JyxcbiAgICBXZWJraXRBbmltYXRpb246ICd3ZWJraXRBbmltYXRpb25TdGFydCcsXG4gICAgTW96QW5pbWF0aW9uOiAnbW96QW5pbWF0aW9uU3RhcnQnLFxuICAgIE9BbmltYXRpb246ICdvQW5pbWF0aW9uU3RhcnQnLFxuICAgIG1zQW5pbWF0aW9uOiAnTVNBbmltYXRpb25TdGFydCdcbiAgfVxufTtcblxudmFyIEVORF9FVkVOVF9OQU1FX01BUCA9IHtcbiAgdHJhbnNpdGlvbmVuZDoge1xuICAgIHRyYW5zaXRpb246ICd0cmFuc2l0aW9uZW5kJyxcbiAgICBXZWJraXRUcmFuc2l0aW9uOiAnd2Via2l0VHJhbnNpdGlvbkVuZCcsXG4gICAgTW96VHJhbnNpdGlvbjogJ21velRyYW5zaXRpb25FbmQnLFxuICAgIE9UcmFuc2l0aW9uOiAnb1RyYW5zaXRpb25FbmQnLFxuICAgIG1zVHJhbnNpdGlvbjogJ01TVHJhbnNpdGlvbkVuZCdcbiAgfSxcblxuICBhbmltYXRpb25lbmQ6IHtcbiAgICBhbmltYXRpb246ICdhbmltYXRpb25lbmQnLFxuICAgIFdlYmtpdEFuaW1hdGlvbjogJ3dlYmtpdEFuaW1hdGlvbkVuZCcsXG4gICAgTW96QW5pbWF0aW9uOiAnbW96QW5pbWF0aW9uRW5kJyxcbiAgICBPQW5pbWF0aW9uOiAnb0FuaW1hdGlvbkVuZCcsXG4gICAgbXNBbmltYXRpb246ICdNU0FuaW1hdGlvbkVuZCdcbiAgfVxufTtcblxudmFyIHN0YXJ0RXZlbnRzID0gW107XG52YXIgZW5kRXZlbnRzID0gW107XG5cbmZ1bmN0aW9uIGRldGVjdEV2ZW50cygpIHtcbiAgdmFyIHRlc3RFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICB2YXIgc3R5bGUgPSB0ZXN0RWwuc3R5bGU7XG5cbiAgaWYgKCEoJ0FuaW1hdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7XG4gICAgZGVsZXRlIFNUQVJUX0VWRU5UX05BTUVfTUFQLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbjtcbiAgICBkZWxldGUgRU5EX0VWRU5UX05BTUVfTUFQLmFuaW1hdGlvbmVuZC5hbmltYXRpb247XG4gIH1cblxuICBpZiAoISgnVHJhbnNpdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7XG4gICAgZGVsZXRlIFNUQVJUX0VWRU5UX05BTUVfTUFQLnRyYW5zaXRpb25zdGFydC50cmFuc2l0aW9uO1xuICAgIGRlbGV0ZSBFTkRfRVZFTlRfTkFNRV9NQVAudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gcHJvY2VzcyhFVkVOVF9OQU1FX01BUCwgZXZlbnRzKSB7XG4gICAgZm9yICh2YXIgYmFzZUV2ZW50TmFtZSBpbiBFVkVOVF9OQU1FX01BUCkge1xuICAgICAgaWYgKEVWRU5UX05BTUVfTUFQLmhhc093blByb3BlcnR5KGJhc2VFdmVudE5hbWUpKSB7XG4gICAgICAgIHZhciBiYXNlRXZlbnRzID0gRVZFTlRfTkFNRV9NQVBbYmFzZUV2ZW50TmFtZV07XG4gICAgICAgIGZvciAodmFyIHN0eWxlTmFtZSBpbiBiYXNlRXZlbnRzKSB7XG4gICAgICAgICAgaWYgKHN0eWxlTmFtZSBpbiBzdHlsZSkge1xuICAgICAgICAgICAgZXZlbnRzLnB1c2goYmFzZUV2ZW50c1tzdHlsZU5hbWVdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3MoU1RBUlRfRVZFTlRfTkFNRV9NQVAsIHN0YXJ0RXZlbnRzKTtcbiAgcHJvY2VzcyhFTkRfRVZFTlRfTkFNRV9NQVAsIGVuZEV2ZW50cyk7XG59XG5cbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gIGRldGVjdEV2ZW50cygpO1xufVxuXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TmFtZSwgZXZlbnRMaXN0ZW5lcikge1xuICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBldmVudExpc3RlbmVyLCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnROYW1lLCBldmVudExpc3RlbmVyKSB7XG4gIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGV2ZW50TGlzdGVuZXIsIGZhbHNlKTtcbn1cblxudmFyIFRyYW5zaXRpb25FdmVudHMgPSB7XG4gIC8vIFN0YXJ0IGV2ZW50c1xuICBzdGFydEV2ZW50czogc3RhcnRFdmVudHMsXG5cbiAgYWRkU3RhcnRFdmVudExpc3RlbmVyOiBmdW5jdGlvbiBhZGRTdGFydEV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnRMaXN0ZW5lcikge1xuICAgIGlmIChzdGFydEV2ZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGV2ZW50TGlzdGVuZXIsIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdGFydEV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzdGFydEV2ZW50KSB7XG4gICAgICBhZGRFdmVudExpc3RlbmVyKG5vZGUsIHN0YXJ0RXZlbnQsIGV2ZW50TGlzdGVuZXIpO1xuICAgIH0pO1xuICB9LFxuICByZW1vdmVTdGFydEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uIHJlbW92ZVN0YXJ0RXZlbnRMaXN0ZW5lcihub2RlLCBldmVudExpc3RlbmVyKSB7XG4gICAgaWYgKHN0YXJ0RXZlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdGFydEV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzdGFydEV2ZW50KSB7XG4gICAgICByZW1vdmVFdmVudExpc3RlbmVyKG5vZGUsIHN0YXJ0RXZlbnQsIGV2ZW50TGlzdGVuZXIpO1xuICAgIH0pO1xuICB9LFxuXG5cbiAgLy8gRW5kIGV2ZW50c1xuICBlbmRFdmVudHM6IGVuZEV2ZW50cyxcblxuICBhZGRFbmRFdmVudExpc3RlbmVyOiBmdW5jdGlvbiBhZGRFbmRFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TGlzdGVuZXIpIHtcbiAgICBpZiAoZW5kRXZlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoZXZlbnRMaXN0ZW5lciwgMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVuZEV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbmRFdmVudCkge1xuICAgICAgYWRkRXZlbnRMaXN0ZW5lcihub2RlLCBlbmRFdmVudCwgZXZlbnRMaXN0ZW5lcik7XG4gICAgfSk7XG4gIH0sXG4gIHJlbW92ZUVuZEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uIHJlbW92ZUVuZEV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnRMaXN0ZW5lcikge1xuICAgIGlmIChlbmRFdmVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVuZEV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbmRFdmVudCkge1xuICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlLCBlbmRFdmVudCwgZXZlbnRMaXN0ZW5lcik7XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFRyYW5zaXRpb25FdmVudHM7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuMlxuKGZ1bmN0aW9uKCkge1xuICB2YXIgZ2V0TmFub1NlY29uZHMsIGhydGltZSwgbG9hZFRpbWUsIG1vZHVsZUxvYWRUaW1lLCBub2RlTG9hZFRpbWUsIHVwVGltZTtcblxuICBpZiAoKHR5cGVvZiBwZXJmb3JtYW5jZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwZXJmb3JtYW5jZSAhPT0gbnVsbCkgJiYgcGVyZm9ybWFuY2Uubm93KSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICB9O1xuICB9IGVsc2UgaWYgKCh0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwcm9jZXNzICE9PSBudWxsKSAmJiBwcm9jZXNzLmhydGltZSkge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gKGdldE5hbm9TZWNvbmRzKCkgLSBub2RlTG9hZFRpbWUpIC8gMWU2O1xuICAgIH07XG4gICAgaHJ0aW1lID0gcHJvY2Vzcy5ocnRpbWU7XG4gICAgZ2V0TmFub1NlY29uZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBocjtcbiAgICAgIGhyID0gaHJ0aW1lKCk7XG4gICAgICByZXR1cm4gaHJbMF0gKiAxZTkgKyBoclsxXTtcbiAgICB9O1xuICAgIG1vZHVsZUxvYWRUaW1lID0gZ2V0TmFub1NlY29uZHMoKTtcbiAgICB1cFRpbWUgPSBwcm9jZXNzLnVwdGltZSgpICogMWU5O1xuICAgIG5vZGVMb2FkVGltZSA9IG1vZHVsZUxvYWRUaW1lIC0gdXBUaW1lO1xuICB9IGVsc2UgaWYgKERhdGUubm93KSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBEYXRlLm5vdygpIC0gbG9hZFRpbWU7XG4gICAgfTtcbiAgICBsb2FkVGltZSA9IERhdGUubm93KCk7XG4gIH0gZWxzZSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIGxvYWRUaW1lO1xuICAgIH07XG4gICAgbG9hZFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgfVxuXG59KS5jYWxsKHRoaXMpO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wZXJmb3JtYW5jZS1ub3cuanMubWFwXG4iLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG52YXIgX2NvbmZpZ1Byb3ZpZGVyID0gcmVxdWlyZShcIi4uL2NvbmZpZy1wcm92aWRlclwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbnZhciBfX3Jlc3QgPSB2b2lkIDAgJiYgKHZvaWQgMCkuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcbiAgfVxuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuXG52YXIgQnV0dG9uR3JvdXAgPSBmdW5jdGlvbiBCdXR0b25Hcm91cChwcm9wcykge1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnN1bWVyLCBudWxsLCBmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBnZXRQcmVmaXhDbHMgPSBfcmVmLmdldFByZWZpeENscztcblxuICAgIHZhciBjdXN0b21pemVQcmVmaXhDbHMgPSBwcm9wcy5wcmVmaXhDbHMsXG4gICAgICAgIHNpemUgPSBwcm9wcy5zaXplLFxuICAgICAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgIG90aGVycyA9IF9fcmVzdChwcm9wcywgW1wicHJlZml4Q2xzXCIsIFwic2l6ZVwiLCBcImNsYXNzTmFtZVwiXSk7XG5cbiAgICB2YXIgcHJlZml4Q2xzID0gZ2V0UHJlZml4Q2xzKCdidG4tZ3JvdXAnLCBjdXN0b21pemVQcmVmaXhDbHMpOyAvLyBsYXJnZSA9PiBsZ1xuICAgIC8vIHNtYWxsID0+IHNtXG5cbiAgICB2YXIgc2l6ZUNscyA9ICcnO1xuXG4gICAgc3dpdGNoIChzaXplKSB7XG4gICAgICBjYXNlICdsYXJnZSc6XG4gICAgICAgIHNpemVDbHMgPSAnbGcnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgICBzaXplQ2xzID0gJ3NtJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBjbGFzc2VzID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkocHJlZml4Q2xzLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItXCIpLmNvbmNhdChzaXplQ2xzKSwgc2l6ZUNscyksIGNsYXNzTmFtZSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBvdGhlcnMsIHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3Nlc1xuICAgIH0pKTtcbiAgfSk7XG59O1xuXG52YXIgX2RlZmF1bHQgPSBCdXR0b25Hcm91cDtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9yZWFjdExpZmVjeWNsZXNDb21wYXQgPSByZXF1aXJlKFwicmVhY3QtbGlmZWN5Y2xlcy1jb21wYXRcIik7XG5cbnZhciBfQ2xlYXJhYmxlTGFiZWxlZElucHV0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9DbGVhcmFibGVMYWJlbGVkSW5wdXRcIikpO1xuXG52YXIgX1Jlc2l6YWJsZVRleHRBcmVhID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9SZXNpemFibGVUZXh0QXJlYVwiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX0lucHV0ID0gcmVxdWlyZShcIi4vSW5wdXRcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbnZhciBUZXh0QXJlYSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoVGV4dEFyZWEsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoVGV4dEFyZWEpO1xuXG4gIGZ1bmN0aW9uIFRleHRBcmVhKHByb3BzKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRleHRBcmVhKTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcHJvcHMpO1xuXG4gICAgX3RoaXMuc2F2ZVRleHRBcmVhID0gZnVuY3Rpb24gKHJlc2l6YWJsZVRleHRBcmVhKSB7XG4gICAgICBfdGhpcy5yZXNpemFibGVUZXh0QXJlYSA9IHJlc2l6YWJsZVRleHRBcmVhO1xuICAgIH07XG5cbiAgICBfdGhpcy5zYXZlQ2xlYXJhYmxlSW5wdXQgPSBmdW5jdGlvbiAoY2xlYXJhYmxlSW5wdXQpIHtcbiAgICAgIF90aGlzLmNsZWFyYWJsZUlucHV0ID0gY2xlYXJhYmxlSW5wdXQ7XG4gICAgfTtcblxuICAgIF90aGlzLmhhbmRsZUNoYW5nZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBfdGhpcy5zZXRWYWx1ZShlLnRhcmdldC52YWx1ZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpcy5yZXNpemFibGVUZXh0QXJlYS5yZXNpemVUZXh0YXJlYSgpO1xuICAgICAgfSk7XG5cbiAgICAgICgwLCBfSW5wdXQucmVzb2x2ZU9uQ2hhbmdlKShfdGhpcy5yZXNpemFibGVUZXh0QXJlYS50ZXh0QXJlYSwgZSwgX3RoaXMucHJvcHMub25DaGFuZ2UpO1xuICAgIH07XG5cbiAgICBfdGhpcy5oYW5kbGVLZXlEb3duID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIG9uUHJlc3NFbnRlciA9IF90aGlzJHByb3BzLm9uUHJlc3NFbnRlcixcbiAgICAgICAgICBvbktleURvd24gPSBfdGhpcyRwcm9wcy5vbktleURvd247XG5cbiAgICAgIGlmIChlLmtleUNvZGUgPT09IDEzICYmIG9uUHJlc3NFbnRlcikge1xuICAgICAgICBvblByZXNzRW50ZXIoZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvbktleURvd24pIHtcbiAgICAgICAgb25LZXlEb3duKGUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5oYW5kbGVSZXNldCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBfdGhpcy5zZXRWYWx1ZSgnJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpcy5yZXNpemFibGVUZXh0QXJlYS5yZW5kZXJUZXh0QXJlYSgpO1xuXG4gICAgICAgIF90aGlzLmZvY3VzKCk7XG4gICAgICB9KTtcblxuICAgICAgKDAsIF9JbnB1dC5yZXNvbHZlT25DaGFuZ2UpKF90aGlzLnJlc2l6YWJsZVRleHRBcmVhLnRleHRBcmVhLCBlLCBfdGhpcy5wcm9wcy5vbkNoYW5nZSk7XG4gICAgfTtcblxuICAgIF90aGlzLnJlbmRlclRleHRBcmVhID0gZnVuY3Rpb24gKHByZWZpeENscykge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9SZXNpemFibGVUZXh0QXJlYVtcImRlZmF1bHRcIl0sIF9leHRlbmRzKHt9LCBfdGhpcy5wcm9wcywge1xuICAgICAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgICAgb25LZXlEb3duOiBfdGhpcy5oYW5kbGVLZXlEb3duLFxuICAgICAgICBvbkNoYW5nZTogX3RoaXMuaGFuZGxlQ2hhbmdlLFxuICAgICAgICByZWY6IF90aGlzLnNhdmVUZXh0QXJlYVxuICAgICAgfSkpO1xuICAgIH07XG5cbiAgICBfdGhpcy5yZW5kZXJDb21wb25lbnQgPSBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgdmFyIGdldFByZWZpeENscyA9IF9yZWYuZ2V0UHJlZml4Q2xzO1xuICAgICAgdmFyIHZhbHVlID0gX3RoaXMuc3RhdGUudmFsdWU7XG4gICAgICB2YXIgY3VzdG9taXplUHJlZml4Q2xzID0gX3RoaXMucHJvcHMucHJlZml4Q2xzO1xuICAgICAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygnaW5wdXQnLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9DbGVhcmFibGVMYWJlbGVkSW5wdXRbXCJkZWZhdWx0XCJdLCBfZXh0ZW5kcyh7fSwgX3RoaXMucHJvcHMsIHtcbiAgICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICAgIGlucHV0VHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHZhbHVlOiAoMCwgX0lucHV0LmZpeENvbnRyb2xsZWRWYWx1ZSkodmFsdWUpLFxuICAgICAgICBlbGVtZW50OiBfdGhpcy5yZW5kZXJUZXh0QXJlYShwcmVmaXhDbHMpLFxuICAgICAgICBoYW5kbGVSZXNldDogX3RoaXMuaGFuZGxlUmVzZXQsXG4gICAgICAgIHJlZjogX3RoaXMuc2F2ZUNsZWFyYWJsZUlucHV0XG4gICAgICB9KSk7XG4gICAgfTtcblxuICAgIHZhciB2YWx1ZSA9IHR5cGVvZiBwcm9wcy52YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgPyBwcm9wcy5kZWZhdWx0VmFsdWUgOiBwcm9wcy52YWx1ZTtcbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHZhbHVlOiB2YWx1ZVxuICAgIH07XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRleHRBcmVhLCBbe1xuICAgIGtleTogXCJzZXRWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRWYWx1ZSh2YWx1ZSwgY2FsbGJhY2spIHtcbiAgICAgIGlmICghKCd2YWx1ZScgaW4gdGhpcy5wcm9wcykpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgIH0sIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9jdXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXMoKSB7XG4gICAgICB0aGlzLnJlc2l6YWJsZVRleHRBcmVhLnRleHRBcmVhLmZvY3VzKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImJsdXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYmx1cigpIHtcbiAgICAgIHRoaXMucmVzaXphYmxlVGV4dEFyZWEudGV4dEFyZWEuYmx1cigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jb25maWdQcm92aWRlci5Db25maWdDb25zdW1lciwgbnVsbCwgdGhpcy5yZW5kZXJDb21wb25lbnQpO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzKSB7XG4gICAgICBpZiAoJ3ZhbHVlJyBpbiBuZXh0UHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2YWx1ZTogbmV4dFByb3BzLnZhbHVlXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUZXh0QXJlYTtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuKDAsIF9yZWFjdExpZmVjeWNsZXNDb21wYXQucG9seWZpbGwpKFRleHRBcmVhKTtcbnZhciBfZGVmYXVsdCA9IFRleHRBcmVhO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX3JlYWN0TGlmZWN5Y2xlc0NvbXBhdCA9IHJlcXVpcmUoXCJyZWFjdC1saWZlY3ljbGVzLWNvbXBhdFwiKTtcblxudmFyIF9yY1Jlc2l6ZU9ic2VydmVyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtcmVzaXplLW9ic2VydmVyXCIpKTtcblxudmFyIF9vbWl0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwib21pdC5qc1wiKSk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG52YXIgX2NhbGN1bGF0ZU5vZGVIZWlnaHQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2NhbGN1bGF0ZU5vZGVIZWlnaHRcIikpO1xuXG52YXIgX3JhZiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL191dGlsL3JhZlwiKSk7XG5cbnZhciBfd2FybmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL191dGlsL3dhcm5pbmdcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG52YXIgUmVzaXphYmxlVGV4dEFyZWEgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFJlc2l6YWJsZVRleHRBcmVhLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFJlc2l6YWJsZVRleHRBcmVhKTtcblxuICBmdW5jdGlvbiBSZXNpemFibGVUZXh0QXJlYShwcm9wcykge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZXNpemFibGVUZXh0QXJlYSk7XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKTtcblxuICAgIF90aGlzLnNhdmVUZXh0QXJlYSA9IGZ1bmN0aW9uICh0ZXh0QXJlYSkge1xuICAgICAgX3RoaXMudGV4dEFyZWEgPSB0ZXh0QXJlYTtcbiAgICB9O1xuXG4gICAgX3RoaXMucmVzaXplT25OZXh0RnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBfcmFmW1wiZGVmYXVsdFwiXS5jYW5jZWwoX3RoaXMubmV4dEZyYW1lQWN0aW9uSWQpO1xuXG4gICAgICBfdGhpcy5uZXh0RnJhbWVBY3Rpb25JZCA9ICgwLCBfcmFmW1wiZGVmYXVsdFwiXSkoX3RoaXMucmVzaXplVGV4dGFyZWEpO1xuICAgIH07XG5cbiAgICBfdGhpcy5yZXNpemVUZXh0YXJlYSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBhdXRvU2l6ZSA9IF90aGlzLnByb3BzLmF1dG9TaXplIHx8IF90aGlzLnByb3BzLmF1dG9zaXplO1xuXG4gICAgICBpZiAoIWF1dG9TaXplIHx8ICFfdGhpcy50ZXh0QXJlYSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBtaW5Sb3dzID0gYXV0b1NpemUubWluUm93cyxcbiAgICAgICAgICBtYXhSb3dzID0gYXV0b1NpemUubWF4Um93cztcbiAgICAgIHZhciB0ZXh0YXJlYVN0eWxlcyA9ICgwLCBfY2FsY3VsYXRlTm9kZUhlaWdodFtcImRlZmF1bHRcIl0pKF90aGlzLnRleHRBcmVhLCBmYWxzZSwgbWluUm93cywgbWF4Um93cyk7XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgdGV4dGFyZWFTdHlsZXM6IHRleHRhcmVhU3R5bGVzLFxuICAgICAgICByZXNpemluZzogdHJ1ZVxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBfcmFmW1wiZGVmYXVsdFwiXS5jYW5jZWwoX3RoaXMucmVzaXplRnJhbWVJZCk7XG5cbiAgICAgICAgX3RoaXMucmVzaXplRnJhbWVJZCA9ICgwLCBfcmFmW1wiZGVmYXVsdFwiXSkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHJlc2l6aW5nOiBmYWxzZVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgX3RoaXMuZml4RmlyZWZveEF1dG9TY3JvbGwoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX3RoaXMucmVuZGVyVGV4dEFyZWEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBwcmVmaXhDbHMgPSBfdGhpcyRwcm9wcy5wcmVmaXhDbHMsXG4gICAgICAgICAgYXV0b1NpemUgPSBfdGhpcyRwcm9wcy5hdXRvU2l6ZSxcbiAgICAgICAgICBhdXRvc2l6ZSA9IF90aGlzJHByb3BzLmF1dG9zaXplLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICBkaXNhYmxlZCA9IF90aGlzJHByb3BzLmRpc2FibGVkO1xuICAgICAgdmFyIF90aGlzJHN0YXRlID0gX3RoaXMuc3RhdGUsXG4gICAgICAgICAgdGV4dGFyZWFTdHlsZXMgPSBfdGhpcyRzdGF0ZS50ZXh0YXJlYVN0eWxlcyxcbiAgICAgICAgICByZXNpemluZyA9IF90aGlzJHN0YXRlLnJlc2l6aW5nO1xuICAgICAgKDAsIF93YXJuaW5nW1wiZGVmYXVsdFwiXSkoYXV0b3NpemUgPT09IHVuZGVmaW5lZCwgJ0lucHV0LlRleHRBcmVhJywgJ2F1dG9zaXplIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgYXV0b1NpemUgaW5zdGVhZC4nKTtcbiAgICAgIHZhciBvdGhlclByb3BzID0gKDAsIF9vbWl0W1wiZGVmYXVsdFwiXSkoX3RoaXMucHJvcHMsIFsncHJlZml4Q2xzJywgJ29uUHJlc3NFbnRlcicsICdhdXRvU2l6ZScsICdhdXRvc2l6ZScsICdkZWZhdWx0VmFsdWUnLCAnYWxsb3dDbGVhciddKTtcbiAgICAgIHZhciBjbHMgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShwcmVmaXhDbHMsIGNsYXNzTmFtZSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWRpc2FibGVkXCIpLCBkaXNhYmxlZCkpOyAvLyBGaXggaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvNjc3NlxuICAgICAgLy8gTWFrZSBzdXJlIGl0IGNvdWxkIGJlIHJlc2V0IHdoZW4gdXNpbmcgZm9ybS5nZXRGaWVsZERlY29yYXRvclxuXG4gICAgICBpZiAoJ3ZhbHVlJyBpbiBvdGhlclByb3BzKSB7XG4gICAgICAgIG90aGVyUHJvcHMudmFsdWUgPSBvdGhlclByb3BzLnZhbHVlIHx8ICcnO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3R5bGUgPSBfZXh0ZW5kcyhfZXh0ZW5kcyhfZXh0ZW5kcyh7fSwgX3RoaXMucHJvcHMuc3R5bGUpLCB0ZXh0YXJlYVN0eWxlcyksIHJlc2l6aW5nID8ge1xuICAgICAgICBvdmVyZmxvd1g6ICdoaWRkZW4nLFxuICAgICAgICBvdmVyZmxvd1k6ICdoaWRkZW4nXG4gICAgICB9IDogbnVsbCk7XG5cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfcmNSZXNpemVPYnNlcnZlcltcImRlZmF1bHRcIl0sIHtcbiAgICAgICAgb25SZXNpemU6IF90aGlzLnJlc2l6ZU9uTmV4dEZyYW1lLFxuICAgICAgICBkaXNhYmxlZDogIShhdXRvU2l6ZSB8fCBhdXRvc2l6ZSlcbiAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidGV4dGFyZWFcIiwgX2V4dGVuZHMoe30sIG90aGVyUHJvcHMsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbHMsXG4gICAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICAgICAgcmVmOiBfdGhpcy5zYXZlVGV4dEFyZWFcbiAgICAgIH0pKSk7XG4gICAgfTtcblxuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgdGV4dGFyZWFTdHlsZXM6IHt9LFxuICAgICAgcmVzaXppbmc6IGZhbHNlXG4gICAgfTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVzaXphYmxlVGV4dEFyZWEsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5yZXNpemVUZXh0YXJlYSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgLy8gUmUtcmVuZGVyIHdpdGggdGhlIG5ldyBjb250ZW50IHRoZW4gcmVjYWxjdWxhdGUgdGhlIGhlaWdodCBhcyByZXF1aXJlZC5cbiAgICAgIGlmIChwcmV2UHJvcHMudmFsdWUgIT09IHRoaXMucHJvcHMudmFsdWUpIHtcbiAgICAgICAgdGhpcy5yZXNpemVUZXh0YXJlYSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIF9yYWZbXCJkZWZhdWx0XCJdLmNhbmNlbCh0aGlzLm5leHRGcmFtZUFjdGlvbklkKTtcblxuICAgICAgX3JhZltcImRlZmF1bHRcIl0uY2FuY2VsKHRoaXMucmVzaXplRnJhbWVJZCk7XG4gICAgfSAvLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8yMTg3MFxuXG4gIH0sIHtcbiAgICBrZXk6IFwiZml4RmlyZWZveEF1dG9TY3JvbGxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZml4RmlyZWZveEF1dG9TY3JvbGwoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy50ZXh0QXJlYSkge1xuICAgICAgICAgIHZhciBjdXJyZW50U3RhcnQgPSB0aGlzLnRleHRBcmVhLnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICAgIHZhciBjdXJyZW50RW5kID0gdGhpcy50ZXh0QXJlYS5zZWxlY3Rpb25FbmQ7XG4gICAgICAgICAgdGhpcy50ZXh0QXJlYS5zZXRTZWxlY3Rpb25SYW5nZShjdXJyZW50U3RhcnQsIGN1cnJlbnRFbmQpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7Ly8gRml4IGVycm9yIGluIENocm9tZTpcbiAgICAgICAgLy8gRmFpbGVkIHRvIHJlYWQgdGhlICdzZWxlY3Rpb25TdGFydCcgcHJvcGVydHkgZnJvbSAnSFRNTElucHV0RWxlbWVudCdcbiAgICAgICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3EvMjExNzc0ODkvMzA0MDYwNVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyVGV4dEFyZWEoKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVzaXphYmxlVGV4dEFyZWE7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cbigwLCBfcmVhY3RMaWZlY3ljbGVzQ29tcGF0LnBvbHlmaWxsKShSZXNpemFibGVUZXh0QXJlYSk7XG52YXIgX2RlZmF1bHQgPSBSZXNpemFibGVUZXh0QXJlYTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG52YXIgX19pbXBvcnRTdGFyID0gdGhpcyAmJiB0aGlzLl9faW1wb3J0U3RhciB8fCBmdW5jdGlvbiAobW9kKSB7XG4gIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkge1xuICAgIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XG4gIH1cbiAgcmVzdWx0W1wiZGVmYXVsdFwiXSA9IG1vZDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbnZhciBfX2ltcG9ydERlZmF1bHQgPSB0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0IHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgcmV0dXJuIG1vZCAmJiBtb2QuX19lc01vZHVsZSA/IG1vZCA6IHtcbiAgICBcImRlZmF1bHRcIjogbW9kXG4gIH07XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgUmVhY3QgPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIGZpbmRET01Ob2RlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcInJjLXV0aWwvbGliL0RvbS9maW5kRE9NTm9kZVwiKSk7XG5cbnZhciB0b0FycmF5XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcInJjLXV0aWwvbGliL0NoaWxkcmVuL3RvQXJyYXlcIikpO1xuXG52YXIgd2FybmluZ18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJyYy11dGlsL2xpYi93YXJuaW5nXCIpKTtcblxudmFyIHJlZl8xID0gcmVxdWlyZShcInJjLXV0aWwvbGliL3JlZlwiKTtcblxudmFyIHJlc2l6ZV9vYnNlcnZlcl9wb2x5ZmlsbF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJyZXNpemUtb2JzZXJ2ZXItcG9seWZpbGxcIikpO1xuXG52YXIgdXRpbF8xID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxudmFyIElOVEVSTkFMX1BSRUZJWF9LRVkgPSAncmMtb2JzZXJ2ZXIta2V5JzsgLy8gU3RpbGwgbmVlZCB0byBiZSBjb21wYXRpYmxlIHdpdGggUmVhY3QgMTUsIHdlIHVzZSBjbGFzcyBjb21wb25lbnQgaGVyZVxuXG52YXIgUmVhY3RSZXNpemVPYnNlcnZlciA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoUmVhY3RSZXNpemVPYnNlcnZlciwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gUmVhY3RSZXNpemVPYnNlcnZlcigpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVhY3RSZXNpemVPYnNlcnZlcik7XG5cbiAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihSZWFjdFJlc2l6ZU9ic2VydmVyKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgICBfdGhpcy5yZXNpemVPYnNlcnZlciA9IG51bGw7XG4gICAgX3RoaXMuY2hpbGROb2RlID0gbnVsbDtcbiAgICBfdGhpcy5jdXJyZW50RWxlbWVudCA9IG51bGw7XG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG5cbiAgICBfdGhpcy5vblJlc2l6ZSA9IGZ1bmN0aW9uIChlbnRyaWVzKSB7XG4gICAgICB2YXIgb25SZXNpemUgPSBfdGhpcy5wcm9wcy5vblJlc2l6ZTtcbiAgICAgIHZhciB0YXJnZXQgPSBlbnRyaWVzWzBdLnRhcmdldDtcblxuICAgICAgdmFyIF90YXJnZXQkZ2V0Qm91bmRpbmdDbCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgICB3aWR0aCA9IF90YXJnZXQkZ2V0Qm91bmRpbmdDbC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfdGFyZ2V0JGdldEJvdW5kaW5nQ2wuaGVpZ2h0O1xuICAgICAgLyoqXG4gICAgICAgKiBSZXNpemUgb2JzZXJ2ZXIgdHJpZ2dlciB3aGVuIGNvbnRlbnQgc2l6ZSBjaGFuZ2VkLlxuICAgICAgICogSW4gbW9zdCBjYXNlIHdlIGp1c3QgY2FyZSBhYm91dCBlbGVtZW50IHNpemUsXG4gICAgICAgKiBsZXQncyB1c2UgYGJvdW5kYXJ5YCBpbnN0ZWFkIG9mIGBjb250ZW50UmVjdGAgaGVyZSB0byBhdm9pZCBzaGFraW5nLlxuICAgICAgICovXG5cblxuICAgICAgdmFyIGZpeGVkV2lkdGggPSBNYXRoLmZsb29yKHdpZHRoKTtcbiAgICAgIHZhciBmaXhlZEhlaWdodCA9IE1hdGguZmxvb3IoaGVpZ2h0KTtcblxuICAgICAgaWYgKF90aGlzLnN0YXRlLndpZHRoICE9PSBmaXhlZFdpZHRoIHx8IF90aGlzLnN0YXRlLmhlaWdodCAhPT0gZml4ZWRIZWlnaHQpIHtcbiAgICAgICAgdmFyIHNpemUgPSB7XG4gICAgICAgICAgd2lkdGg6IGZpeGVkV2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBmaXhlZEhlaWdodFxuICAgICAgICB9O1xuXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHNpemUpO1xuXG4gICAgICAgIGlmIChvblJlc2l6ZSkge1xuICAgICAgICAgIG9uUmVzaXplKHNpemUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLnNldENoaWxkTm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBfdGhpcy5jaGlsZE5vZGUgPSBub2RlO1xuICAgIH07XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVhY3RSZXNpemVPYnNlcnZlciwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB0aGlzLm9uQ29tcG9uZW50VXBkYXRlZCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgdGhpcy5vbkNvbXBvbmVudFVwZGF0ZWQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICB0aGlzLmRlc3Ryb3lPYnNlcnZlcigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJvbkNvbXBvbmVudFVwZGF0ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25Db21wb25lbnRVcGRhdGVkKCkge1xuICAgICAgdmFyIGRpc2FibGVkID0gdGhpcy5wcm9wcy5kaXNhYmxlZDsgLy8gVW5yZWdpc3RlciBpZiBkaXNhYmxlZFxuXG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95T2JzZXJ2ZXIoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBVbnJlZ2lzdGVyIGlmIGVsZW1lbnQgY2hhbmdlZFxuXG5cbiAgICAgIHZhciBlbGVtZW50ID0gZmluZERPTU5vZGVfMS5kZWZhdWx0KHRoaXMuY2hpbGROb2RlIHx8IHRoaXMpO1xuICAgICAgdmFyIGVsZW1lbnRDaGFuZ2VkID0gZWxlbWVudCAhPT0gdGhpcy5jdXJyZW50RWxlbWVudDtcblxuICAgICAgaWYgKGVsZW1lbnRDaGFuZ2VkKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveU9ic2VydmVyKCk7XG4gICAgICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMucmVzaXplT2JzZXJ2ZXIgJiYgZWxlbWVudCkge1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IHJlc2l6ZV9vYnNlcnZlcl9wb2x5ZmlsbF8xLmRlZmF1bHQodGhpcy5vblJlc2l6ZSk7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveU9ic2VydmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3lPYnNlcnZlcigpIHtcbiAgICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgICB2YXIgY2hpbGROb2RlcyA9IHRvQXJyYXlfMS5kZWZhdWx0KGNoaWxkcmVuKTtcblxuICAgICAgaWYgKGNoaWxkTm9kZXMubGVuZ3RoID4gMSkge1xuICAgICAgICB3YXJuaW5nXzEuZGVmYXVsdChmYWxzZSwgJ0ZpbmQgbW9yZSB0aGFuIG9uZSBjaGlsZCBub2RlIHdpdGggYGNoaWxkcmVuYCBpbiBSZXNpemVPYnNlcnZlci4gV2lsbCBvbmx5IG9ic2VydmUgZmlyc3Qgb25lLicpO1xuICAgICAgfSBlbHNlIGlmIChjaGlsZE5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB3YXJuaW5nXzEuZGVmYXVsdChmYWxzZSwgJ2BjaGlsZHJlbmAgb2YgUmVzaXplT2JzZXJ2ZXIgaXMgZW1wdHkuIE5vdGhpbmcgaXMgaW4gb2JzZXJ2ZS4nKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciBjaGlsZE5vZGUgPSBjaGlsZE5vZGVzWzBdO1xuXG4gICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGROb2RlKSAmJiB1dGlsXzEuc3VwcG9ydFJlZihjaGlsZE5vZGUpKSB7XG4gICAgICAgIHZhciByZWYgPSBjaGlsZE5vZGUucmVmO1xuICAgICAgICBjaGlsZE5vZGVzWzBdID0gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkTm9kZSwge1xuICAgICAgICAgIHJlZjogcmVmXzEuY29tcG9zZVJlZihyZWYsIHRoaXMuc2V0Q2hpbGROb2RlKVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoaWxkTm9kZXMubGVuZ3RoID09PSAxID8gY2hpbGROb2Rlc1swXSA6IGNoaWxkTm9kZXMubWFwKGZ1bmN0aW9uIChub2RlLCBpbmRleCkge1xuICAgICAgICBpZiAoIVJlYWN0LmlzVmFsaWRFbGVtZW50KG5vZGUpIHx8ICdrZXknIGluIG5vZGUgJiYgbm9kZS5rZXkgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQobm9kZSwge1xuICAgICAgICAgIGtleTogXCJcIi5jb25jYXQoSU5URVJOQUxfUFJFRklYX0tFWSwgXCItXCIpLmNvbmNhdChpbmRleClcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVhY3RSZXNpemVPYnNlcnZlcjtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuUmVhY3RSZXNpemVPYnNlcnZlci5kaXNwbGF5TmFtZSA9ICdSZXNpemVPYnNlcnZlcic7XG5leHBvcnRzLmRlZmF1bHQgPSBSZWFjdFJlc2l6ZU9ic2VydmVyOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gZmluZERPTU5vZGU7XG5cbnZhciBfcmVhY3REb20gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdC1kb21cIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIFJldHVybiBpZiBhIG5vZGUgaXMgYSBET00gbm9kZS4gRWxzZSB3aWxsIHJldHVybiBieSBgZmluZERPTU5vZGVgXG4gKi9cbmZ1bmN0aW9uIGZpbmRET01Ob2RlKG5vZGUpIHtcbiAgaWYgKG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIF9yZWFjdERvbS5kZWZhdWx0LmZpbmRET01Ob2RlKG5vZGUpO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdG9BcnJheTtcblxudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9yZWFjdElzID0gcmVxdWlyZShcInJlYWN0LWlzXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiB0b0FycmF5KGNoaWxkcmVuKSB7XG4gIHZhciByZXQgPSBbXTtcblxuICBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICBpZiAoY2hpbGQgPT09IHVuZGVmaW5lZCB8fCBjaGlsZCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkKSkge1xuICAgICAgcmV0ID0gcmV0LmNvbmNhdCh0b0FycmF5KGNoaWxkKSk7XG4gICAgfSBlbHNlIGlmICgoMCwgX3JlYWN0SXMuaXNGcmFnbWVudCkoY2hpbGQpICYmIGNoaWxkLnByb3BzKSB7XG4gICAgICByZXQgPSByZXQuY29uY2F0KHRvQXJyYXkoY2hpbGQucHJvcHMuY2hpbGRyZW4pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0LnB1c2goY2hpbGQpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJldDtcbn0iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKiBAbGljZW5zZSBSZWFjdCB2MTYuMTMuMVxuICogcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7dmFyIGI9XCJmdW5jdGlvblwiPT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcixjPWI/U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIik6NjAxMDMsZD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIik6NjAxMDYsZT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKTo2MDEwNyxmPWI/U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpOjYwMTA4LGc9Yj9TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIik6NjAxMTQsaD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKTo2MDEwOSxrPWI/U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIik6NjAxMTAsbD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5hc3luY19tb2RlXCIpOjYwMTExLG09Yj9TeW1ib2wuZm9yKFwicmVhY3QuY29uY3VycmVudF9tb2RlXCIpOjYwMTExLG49Yj9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIscD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxxPWI/XG5TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKTo2MDEyMCxyPWI/U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIik6NjAxMTUsdD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpOjYwMTE2LHY9Yj9TeW1ib2wuZm9yKFwicmVhY3QuYmxvY2tcIik6NjAxMjEsdz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mdW5kYW1lbnRhbFwiKTo2MDExNyx4PWI/U3ltYm9sLmZvcihcInJlYWN0LnJlc3BvbmRlclwiKTo2MDExOCx5PWI/U3ltYm9sLmZvcihcInJlYWN0LnNjb3BlXCIpOjYwMTE5O1xuZnVuY3Rpb24geihhKXtpZihcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hKXt2YXIgdT1hLiQkdHlwZW9mO3N3aXRjaCh1KXtjYXNlIGM6c3dpdGNoKGE9YS50eXBlLGEpe2Nhc2UgbDpjYXNlIG06Y2FzZSBlOmNhc2UgZzpjYXNlIGY6Y2FzZSBwOnJldHVybiBhO2RlZmF1bHQ6c3dpdGNoKGE9YSYmYS4kJHR5cGVvZixhKXtjYXNlIGs6Y2FzZSBuOmNhc2UgdDpjYXNlIHI6Y2FzZSBoOnJldHVybiBhO2RlZmF1bHQ6cmV0dXJuIHV9fWNhc2UgZDpyZXR1cm4gdX19fWZ1bmN0aW9uIEEoYSl7cmV0dXJuIHooYSk9PT1tfWV4cG9ydHMuQXN5bmNNb2RlPWw7ZXhwb3J0cy5Db25jdXJyZW50TW9kZT1tO2V4cG9ydHMuQ29udGV4dENvbnN1bWVyPWs7ZXhwb3J0cy5Db250ZXh0UHJvdmlkZXI9aDtleHBvcnRzLkVsZW1lbnQ9YztleHBvcnRzLkZvcndhcmRSZWY9bjtleHBvcnRzLkZyYWdtZW50PWU7ZXhwb3J0cy5MYXp5PXQ7ZXhwb3J0cy5NZW1vPXI7ZXhwb3J0cy5Qb3J0YWw9ZDtcbmV4cG9ydHMuUHJvZmlsZXI9ZztleHBvcnRzLlN0cmljdE1vZGU9ZjtleHBvcnRzLlN1c3BlbnNlPXA7ZXhwb3J0cy5pc0FzeW5jTW9kZT1mdW5jdGlvbihhKXtyZXR1cm4gQShhKXx8eihhKT09PWx9O2V4cG9ydHMuaXNDb25jdXJyZW50TW9kZT1BO2V4cG9ydHMuaXNDb250ZXh0Q29uc3VtZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1rfTtleHBvcnRzLmlzQ29udGV4dFByb3ZpZGVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09aH07ZXhwb3J0cy5pc0VsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PWN9O2V4cG9ydHMuaXNGb3J3YXJkUmVmPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09bn07ZXhwb3J0cy5pc0ZyYWdtZW50PWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09ZX07ZXhwb3J0cy5pc0xhenk9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT10fTtcbmV4cG9ydHMuaXNNZW1vPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09cn07ZXhwb3J0cy5pc1BvcnRhbD1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWR9O2V4cG9ydHMuaXNQcm9maWxlcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWd9O2V4cG9ydHMuaXNTdHJpY3RNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09Zn07ZXhwb3J0cy5pc1N1c3BlbnNlPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09cH07XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50VHlwZT1mdW5jdGlvbihhKXtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGF8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhfHxhPT09ZXx8YT09PW18fGE9PT1nfHxhPT09Znx8YT09PXB8fGE9PT1xfHxcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiYoYS4kJHR5cGVvZj09PXR8fGEuJCR0eXBlb2Y9PT1yfHxhLiQkdHlwZW9mPT09aHx8YS4kJHR5cGVvZj09PWt8fGEuJCR0eXBlb2Y9PT1ufHxhLiQkdHlwZW9mPT09d3x8YS4kJHR5cGVvZj09PXh8fGEuJCR0eXBlb2Y9PT15fHxhLiQkdHlwZW9mPT09dil9O2V4cG9ydHMudHlwZU9mPXo7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZmlsbFJlZiA9IGZpbGxSZWY7XG5leHBvcnRzLmNvbXBvc2VSZWYgPSBjb21wb3NlUmVmO1xuZXhwb3J0cy5zdXBwb3J0UmVmID0gc3VwcG9ydFJlZjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBmaWxsUmVmKHJlZiwgbm9kZSkge1xuICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJlZihub2RlKTtcbiAgfSBlbHNlIGlmIChfdHlwZW9mKHJlZikgPT09ICdvYmplY3QnICYmIHJlZiAmJiAnY3VycmVudCcgaW4gcmVmKSB7XG4gICAgcmVmLmN1cnJlbnQgPSBub2RlO1xuICB9XG59XG4vKipcbiAqIE1lcmdlIHJlZnMgaW50byBvbmUgcmVmIGZ1bmN0aW9uIHRvIHN1cHBvcnQgcmVmIHBhc3NpbmcuXG4gKi9cblxuXG5mdW5jdGlvbiBjb21wb3NlUmVmKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgcmVmcyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICByZWZzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmVmcy5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgIGZpbGxSZWYocmVmLCBub2RlKTtcbiAgICB9KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3VwcG9ydFJlZihub2RlT3JDb21wb25lbnQpIHtcbiAgLy8gRnVuY3Rpb24gY29tcG9uZW50IG5vZGVcbiAgaWYgKG5vZGVPckNvbXBvbmVudC50eXBlICYmIG5vZGVPckNvbXBvbmVudC50eXBlLnByb3RvdHlwZSAmJiAhbm9kZU9yQ29tcG9uZW50LnR5cGUucHJvdG90eXBlLnJlbmRlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyBDbGFzcyBjb21wb25lbnRcblxuXG4gIGlmICh0eXBlb2Ygbm9kZU9yQ29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIG5vZGVPckNvbXBvbmVudC5wcm90b3R5cGUgJiYgIW5vZGVPckNvbXBvbmVudC5wcm90b3R5cGUucmVuZGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4vKiBlc2xpbnQtZW5hYmxlICovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbmZ1bmN0aW9uIHN1cHBvcnRSZWYobm9kZSkge1xuICAvLyBGdW5jdGlvbiBjb21wb25lbnRcbiAgaWYgKG5vZGUudHlwZSAmJiBub2RlLnR5cGUucHJvdG90eXBlICYmICFub2RlLnR5cGUucHJvdG90eXBlLnJlbmRlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnRzLnN1cHBvcnRSZWYgPSBzdXBwb3J0UmVmOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5jYWxjdWxhdGVOb2RlU3R5bGluZyA9IGNhbGN1bGF0ZU5vZGVTdHlsaW5nO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBjYWxjdWxhdGVOb2RlSGVpZ2h0O1xuLy8gVGhhbmtzIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmRyZXlwb3BwL3JlYWN0LXRleHRhcmVhLWF1dG9zaXplL1xuXG4vKipcbiAqIGNhbGN1bGF0ZU5vZGVIZWlnaHQodWlUZXh0Tm9kZSwgdXNlQ2FjaGUgPSBmYWxzZSlcbiAqL1xudmFyIEhJRERFTl9URVhUQVJFQV9TVFlMRSA9IFwiXFxuICBtaW4taGVpZ2h0OjAgIWltcG9ydGFudDtcXG4gIG1heC1oZWlnaHQ6bm9uZSAhaW1wb3J0YW50O1xcbiAgaGVpZ2h0OjAgIWltcG9ydGFudDtcXG4gIHZpc2liaWxpdHk6aGlkZGVuICFpbXBvcnRhbnQ7XFxuICBvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudDtcXG4gIHBvc2l0aW9uOmFic29sdXRlICFpbXBvcnRhbnQ7XFxuICB6LWluZGV4Oi0xMDAwICFpbXBvcnRhbnQ7XFxuICB0b3A6MCAhaW1wb3J0YW50O1xcbiAgcmlnaHQ6MCAhaW1wb3J0YW50XFxuXCI7XG52YXIgU0laSU5HX1NUWUxFID0gWydsZXR0ZXItc3BhY2luZycsICdsaW5lLWhlaWdodCcsICdwYWRkaW5nLXRvcCcsICdwYWRkaW5nLWJvdHRvbScsICdmb250LWZhbWlseScsICdmb250LXdlaWdodCcsICdmb250LXNpemUnLCAnZm9udC12YXJpYW50JywgJ3RleHQtcmVuZGVyaW5nJywgJ3RleHQtdHJhbnNmb3JtJywgJ3dpZHRoJywgJ3RleHQtaW5kZW50JywgJ3BhZGRpbmctbGVmdCcsICdwYWRkaW5nLXJpZ2h0JywgJ2JvcmRlci13aWR0aCcsICdib3gtc2l6aW5nJ107XG52YXIgY29tcHV0ZWRTdHlsZUNhY2hlID0ge307XG52YXIgaGlkZGVuVGV4dGFyZWE7XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZU5vZGVTdHlsaW5nKG5vZGUpIHtcbiAgdmFyIHVzZUNhY2hlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTtcbiAgdmFyIG5vZGVSZWYgPSBub2RlLmdldEF0dHJpYnV0ZSgnaWQnKSB8fCBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1yZWFjdGlkJykgfHwgbm9kZS5nZXRBdHRyaWJ1dGUoJ25hbWUnKTtcblxuICBpZiAodXNlQ2FjaGUgJiYgY29tcHV0ZWRTdHlsZUNhY2hlW25vZGVSZWZdKSB7XG4gICAgcmV0dXJuIGNvbXB1dGVkU3R5bGVDYWNoZVtub2RlUmVmXTtcbiAgfVxuXG4gIHZhciBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuICB2YXIgYm94U2l6aW5nID0gc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm94LXNpemluZycpIHx8IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy1tb3otYm94LXNpemluZycpIHx8IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtYm94LXNpemluZycpO1xuICB2YXIgcGFkZGluZ1NpemUgPSBwYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctYm90dG9tJykpICsgcGFyc2VGbG9hdChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXRvcCcpKTtcbiAgdmFyIGJvcmRlclNpemUgPSBwYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1ib3R0b20td2lkdGgnKSkgKyBwYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci10b3Atd2lkdGgnKSk7XG4gIHZhciBzaXppbmdTdHlsZSA9IFNJWklOR19TVFlMRS5tYXAoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQobmFtZSwgXCI6XCIpLmNvbmNhdChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpKTtcbiAgfSkuam9pbignOycpO1xuICB2YXIgbm9kZUluZm8gPSB7XG4gICAgc2l6aW5nU3R5bGU6IHNpemluZ1N0eWxlLFxuICAgIHBhZGRpbmdTaXplOiBwYWRkaW5nU2l6ZSxcbiAgICBib3JkZXJTaXplOiBib3JkZXJTaXplLFxuICAgIGJveFNpemluZzogYm94U2l6aW5nXG4gIH07XG5cbiAgaWYgKHVzZUNhY2hlICYmIG5vZGVSZWYpIHtcbiAgICBjb21wdXRlZFN0eWxlQ2FjaGVbbm9kZVJlZl0gPSBub2RlSW5mbztcbiAgfVxuXG4gIHJldHVybiBub2RlSW5mbztcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlTm9kZUhlaWdodCh1aVRleHROb2RlKSB7XG4gIHZhciB1c2VDYWNoZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogZmFsc2U7XG4gIHZhciBtaW5Sb3dzID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBudWxsO1xuICB2YXIgbWF4Um93cyA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogbnVsbDtcblxuICBpZiAoIWhpZGRlblRleHRhcmVhKSB7XG4gICAgaGlkZGVuVGV4dGFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaGlkZGVuVGV4dGFyZWEpO1xuICB9IC8vIEZpeCB3cmFwPVwib2ZmXCIgaXNzdWVcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvNjU3N1xuXG5cbiAgaWYgKHVpVGV4dE5vZGUuZ2V0QXR0cmlidXRlKCd3cmFwJykpIHtcbiAgICBoaWRkZW5UZXh0YXJlYS5zZXRBdHRyaWJ1dGUoJ3dyYXAnLCB1aVRleHROb2RlLmdldEF0dHJpYnV0ZSgnd3JhcCcpKTtcbiAgfSBlbHNlIHtcbiAgICBoaWRkZW5UZXh0YXJlYS5yZW1vdmVBdHRyaWJ1dGUoJ3dyYXAnKTtcbiAgfSAvLyBDb3B5IGFsbCBDU1MgcHJvcGVydGllcyB0aGF0IGhhdmUgYW4gaW1wYWN0IG9uIHRoZSBoZWlnaHQgb2YgdGhlIGNvbnRlbnQgaW5cbiAgLy8gdGhlIHRleHRib3hcblxuXG4gIHZhciBfY2FsY3VsYXRlTm9kZVN0eWxpbmcgPSBjYWxjdWxhdGVOb2RlU3R5bGluZyh1aVRleHROb2RlLCB1c2VDYWNoZSksXG4gICAgICBwYWRkaW5nU2l6ZSA9IF9jYWxjdWxhdGVOb2RlU3R5bGluZy5wYWRkaW5nU2l6ZSxcbiAgICAgIGJvcmRlclNpemUgPSBfY2FsY3VsYXRlTm9kZVN0eWxpbmcuYm9yZGVyU2l6ZSxcbiAgICAgIGJveFNpemluZyA9IF9jYWxjdWxhdGVOb2RlU3R5bGluZy5ib3hTaXppbmcsXG4gICAgICBzaXppbmdTdHlsZSA9IF9jYWxjdWxhdGVOb2RlU3R5bGluZy5zaXppbmdTdHlsZTsgLy8gTmVlZCB0byBoYXZlIHRoZSBvdmVyZmxvdyBhdHRyaWJ1dGUgdG8gaGlkZSB0aGUgc2Nyb2xsYmFyIG90aGVyd2lzZVxuICAvLyB0ZXh0LWxpbmVzIHdpbGwgbm90IGNhbGN1bGF0ZWQgcHJvcGVybHkgYXMgdGhlIHNoYWRvdyB3aWxsIHRlY2huaWNhbGx5IGJlXG4gIC8vIG5hcnJvd2VyIGZvciBjb250ZW50XG5cblxuICBoaWRkZW5UZXh0YXJlYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgXCJcIi5jb25jYXQoc2l6aW5nU3R5bGUsIFwiO1wiKS5jb25jYXQoSElEREVOX1RFWFRBUkVBX1NUWUxFKSk7XG4gIGhpZGRlblRleHRhcmVhLnZhbHVlID0gdWlUZXh0Tm9kZS52YWx1ZSB8fCB1aVRleHROb2RlLnBsYWNlaG9sZGVyIHx8ICcnO1xuICB2YXIgbWluSGVpZ2h0ID0gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVI7XG4gIHZhciBtYXhIZWlnaHQgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgdmFyIGhlaWdodCA9IGhpZGRlblRleHRhcmVhLnNjcm9sbEhlaWdodDtcbiAgdmFyIG92ZXJmbG93WTtcblxuICBpZiAoYm94U2l6aW5nID09PSAnYm9yZGVyLWJveCcpIHtcbiAgICAvLyBib3JkZXItYm94OiBhZGQgYm9yZGVyLCBzaW5jZSBoZWlnaHQgPSBjb250ZW50ICsgcGFkZGluZyArIGJvcmRlclxuICAgIGhlaWdodCArPSBib3JkZXJTaXplO1xuICB9IGVsc2UgaWYgKGJveFNpemluZyA9PT0gJ2NvbnRlbnQtYm94Jykge1xuICAgIC8vIHJlbW92ZSBwYWRkaW5nLCBzaW5jZSBoZWlnaHQgPSBjb250ZW50XG4gICAgaGVpZ2h0IC09IHBhZGRpbmdTaXplO1xuICB9XG5cbiAgaWYgKG1pblJvd3MgIT09IG51bGwgfHwgbWF4Um93cyAhPT0gbnVsbCkge1xuICAgIC8vIG1lYXN1cmUgaGVpZ2h0IG9mIGEgdGV4dGFyZWEgd2l0aCBhIHNpbmdsZSByb3dcbiAgICBoaWRkZW5UZXh0YXJlYS52YWx1ZSA9ICcgJztcbiAgICB2YXIgc2luZ2xlUm93SGVpZ2h0ID0gaGlkZGVuVGV4dGFyZWEuc2Nyb2xsSGVpZ2h0IC0gcGFkZGluZ1NpemU7XG5cbiAgICBpZiAobWluUm93cyAhPT0gbnVsbCkge1xuICAgICAgbWluSGVpZ2h0ID0gc2luZ2xlUm93SGVpZ2h0ICogbWluUm93cztcblxuICAgICAgaWYgKGJveFNpemluZyA9PT0gJ2JvcmRlci1ib3gnKSB7XG4gICAgICAgIG1pbkhlaWdodCA9IG1pbkhlaWdodCArIHBhZGRpbmdTaXplICsgYm9yZGVyU2l6ZTtcbiAgICAgIH1cblxuICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgobWluSGVpZ2h0LCBoZWlnaHQpO1xuICAgIH1cblxuICAgIGlmIChtYXhSb3dzICE9PSBudWxsKSB7XG4gICAgICBtYXhIZWlnaHQgPSBzaW5nbGVSb3dIZWlnaHQgKiBtYXhSb3dzO1xuXG4gICAgICBpZiAoYm94U2l6aW5nID09PSAnYm9yZGVyLWJveCcpIHtcbiAgICAgICAgbWF4SGVpZ2h0ID0gbWF4SGVpZ2h0ICsgcGFkZGluZ1NpemUgKyBib3JkZXJTaXplO1xuICAgICAgfVxuXG4gICAgICBvdmVyZmxvd1kgPSBoZWlnaHQgPiBtYXhIZWlnaHQgPyAnJyA6ICdoaWRkZW4nO1xuICAgICAgaGVpZ2h0ID0gTWF0aC5taW4obWF4SGVpZ2h0LCBoZWlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgbWluSGVpZ2h0OiBtaW5IZWlnaHQsXG4gICAgbWF4SGVpZ2h0OiBtYXhIZWlnaHQsXG4gICAgb3ZlcmZsb3dZOiBvdmVyZmxvd1lcbiAgfTtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9vbWl0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwib21pdC5qc1wiKSk7XG5cbnZhciBfSW5wdXQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL0lucHV0XCIpKTtcblxudmFyIF9pY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vaWNvblwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbnZhciBfX3Jlc3QgPSB2b2lkIDAgJiYgKHZvaWQgMCkuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcbiAgfVxuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuXG52YXIgQWN0aW9uTWFwID0ge1xuICBjbGljazogJ29uQ2xpY2snLFxuICBob3ZlcjogJ29uTW91c2VPdmVyJ1xufTtcblxudmFyIFBhc3N3b3JkID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhQYXNzd29yZCwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihQYXNzd29yZCk7XG5cbiAgZnVuY3Rpb24gUGFzc3dvcmQoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBhc3N3b3JkKTtcblxuICAgIF90aGlzID0gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICB2aXNpYmxlOiBmYWxzZVxuICAgIH07XG5cbiAgICBfdGhpcy5vblZpc2libGVDaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgZGlzYWJsZWQgPSBfdGhpcy5wcm9wcy5kaXNhYmxlZDtcblxuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuc2V0U3RhdGUoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIHZpc2libGUgPSBfcmVmLnZpc2libGU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdmlzaWJsZTogIXZpc2libGVcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfdGhpcy5zYXZlSW5wdXQgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgICAgIGlmIChpbnN0YW5jZSAmJiBpbnN0YW5jZS5pbnB1dCkge1xuICAgICAgICBfdGhpcy5pbnB1dCA9IGluc3RhbmNlLmlucHV0O1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUGFzc3dvcmQsIFt7XG4gICAga2V5OiBcImdldEljb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SWNvbigpIHtcbiAgICAgIHZhciBfaWNvblByb3BzO1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHByZWZpeENscyA9IF90aGlzJHByb3BzLnByZWZpeENscyxcbiAgICAgICAgICBhY3Rpb24gPSBfdGhpcyRwcm9wcy5hY3Rpb247XG4gICAgICB2YXIgaWNvblRyaWdnZXIgPSBBY3Rpb25NYXBbYWN0aW9uXSB8fCAnJztcbiAgICAgIHZhciBpY29uUHJvcHMgPSAoX2ljb25Qcm9wcyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2ljb25Qcm9wcywgaWNvblRyaWdnZXIsIHRoaXMub25WaXNpYmxlQ2hhbmdlKSwgX2RlZmluZVByb3BlcnR5KF9pY29uUHJvcHMsIFwiY2xhc3NOYW1lXCIsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaWNvblwiKSksIF9kZWZpbmVQcm9wZXJ0eShfaWNvblByb3BzLCBcInR5cGVcIiwgdGhpcy5zdGF0ZS52aXNpYmxlID8gJ2V5ZScgOiAnZXllLWludmlzaWJsZScpLCBfZGVmaW5lUHJvcGVydHkoX2ljb25Qcm9wcywgXCJrZXlcIiwgJ3Bhc3N3b3JkSWNvbicpLCBfZGVmaW5lUHJvcGVydHkoX2ljb25Qcm9wcywgXCJvbk1vdXNlRG93blwiLCBmdW5jdGlvbiBvbk1vdXNlRG93bihlKSB7XG4gICAgICAgIC8vIFByZXZlbnQgZm9jdXNlZCBzdGF0ZSBsb3N0XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzE1MTczXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH0pLCBfaWNvblByb3BzKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfaWNvbltcImRlZmF1bHRcIl0sIGljb25Qcm9wcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZvY3VzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvY3VzKCkge1xuICAgICAgdGhpcy5pbnB1dC5mb2N1cygpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJibHVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJsdXIoKSB7XG4gICAgICB0aGlzLmlucHV0LmJsdXIoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2VsZWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNlbGVjdCgpIHtcbiAgICAgIHRoaXMuaW5wdXQuc2VsZWN0KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX2EgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF9hLmNsYXNzTmFtZSxcbiAgICAgICAgICBwcmVmaXhDbHMgPSBfYS5wcmVmaXhDbHMsXG4gICAgICAgICAgaW5wdXRQcmVmaXhDbHMgPSBfYS5pbnB1dFByZWZpeENscyxcbiAgICAgICAgICBzaXplID0gX2Euc2l6ZSxcbiAgICAgICAgICB2aXNpYmlsaXR5VG9nZ2xlID0gX2EudmlzaWJpbGl0eVRvZ2dsZSxcbiAgICAgICAgICByZXN0UHJvcHMgPSBfX3Jlc3QoX2EsIFtcImNsYXNzTmFtZVwiLCBcInByZWZpeENsc1wiLCBcImlucHV0UHJlZml4Q2xzXCIsIFwic2l6ZVwiLCBcInZpc2liaWxpdHlUb2dnbGVcIl0pO1xuXG4gICAgICB2YXIgc3VmZml4SWNvbiA9IHZpc2liaWxpdHlUb2dnbGUgJiYgdGhpcy5nZXRJY29uKCk7XG4gICAgICB2YXIgaW5wdXRDbGFzc05hbWUgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShwcmVmaXhDbHMsIGNsYXNzTmFtZSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLVwiKS5jb25jYXQoc2l6ZSksICEhc2l6ZSkpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9JbnB1dFtcImRlZmF1bHRcIl0sIF9leHRlbmRzKHt9LCAoMCwgX29taXRbXCJkZWZhdWx0XCJdKShyZXN0UHJvcHMsIFsnc3VmZml4J10pLCB7XG4gICAgICAgIHR5cGU6IHRoaXMuc3RhdGUudmlzaWJsZSA/ICd0ZXh0JyA6ICdwYXNzd29yZCcsXG4gICAgICAgIHNpemU6IHNpemUsXG4gICAgICAgIGNsYXNzTmFtZTogaW5wdXRDbGFzc05hbWUsXG4gICAgICAgIHByZWZpeENsczogaW5wdXRQcmVmaXhDbHMsXG4gICAgICAgIHN1ZmZpeDogc3VmZml4SWNvbixcbiAgICAgICAgcmVmOiB0aGlzLnNhdmVJbnB1dFxuICAgICAgfSkpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBQYXNzd29yZDtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBQYXNzd29yZDtcblBhc3N3b3JkLmRlZmF1bHRQcm9wcyA9IHtcbiAgaW5wdXRQcmVmaXhDbHM6ICdhbnQtaW5wdXQnLFxuICBwcmVmaXhDbHM6ICdhbnQtaW5wdXQtcGFzc3dvcmQnLFxuICBhY3Rpb246ICdjbGljaycsXG4gIHZpc2liaWxpdHlUb2dnbGU6IHRydWVcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgTm9Gb3VuZCA9IGZ1bmN0aW9uIE5vRm91bmQoKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7XG4gICAgd2lkdGg6IFwiMjUyXCIsXG4gICAgaGVpZ2h0OiBcIjI5NFwiXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGVmc1wiLCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTAgLjM4N2gyNTEuNzcydjI1MS43NzJIMHpcIlxuICB9KSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCB7XG4gICAgZmlsbDogXCJub25lXCIsXG4gICAgZmlsbFJ1bGU6IFwiZXZlbm9kZFwiXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCB7XG4gICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgwIC4wMTIpXCJcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJtYXNrXCIsIHtcbiAgICBmaWxsOiBcIiNmZmZcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0wIDEyNy4zMnYtMi4wOTVDMCA1Ni4yNzkgNTUuODkyLjM4NyAxMjQuODM4LjM4N2gyLjA5NmM2OC45NDYgMCAxMjQuODM4IDU1Ljg5MiAxMjQuODM4IDEyNC44Mzh2Mi4wOTZjMCA2OC45NDYtNTUuODkyIDEyNC44MzgtMTI0LjgzOCAxMjQuODM4aC0yLjA5NkM1NS44OTIgMjUyLjE2IDAgMTk2LjI2NyAwIDEyNy4zMjFcIixcbiAgICBmaWxsOiBcIiNFNEVCRjdcIixcbiAgICBtYXNrOiBcInVybCgjYilcIlxuICB9KSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMzkuNzU1IDEzMC44NGE4LjI3NiA4LjI3NiAwIDEgMS0xNi40NjgtMS42NiA4LjI3NiA4LjI3NiAwIDAgMSAxNi40NjggMS42NlwiLFxuICAgIGZpbGw6IFwiI0ZGRlwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTM2Ljk3NSAxMzQuMjk3bDEwLjQ4MiA1Ljk0M000OC4zNzMgMTQ2LjUwOGwtMTIuNjQ4IDEwLjc4OFwiLFxuICAgIHN0cm9rZTogXCIjRkZGXCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMlwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTM5Ljg3NSAxNTkuMzUyYTUuNjY3IDUuNjY3IDAgMSAxLTExLjI3Ny0xLjEzNiA1LjY2NyA1LjY2NyAwIDAgMSAxMS4yNzcgMS4xMzZNNTcuNTg4IDE0My4yNDdhNS43MDggNS43MDggMCAxIDEtMTEuMzU4LTEuMTQ1IDUuNzA4IDUuNzA4IDAgMCAxIDExLjM1OCAxLjE0NU05OS4wMTggMjYuODc1bDI5LjgyLS4wMTRhNC41ODcgNC41ODcgMCAxIDAtLjAwMy05LjE3NWwtMjkuODIuMDEzYTQuNTg3IDQuNTg3IDAgMSAwIC4wMDMgOS4xNzZNMTEwLjQyNCA0NS4yMTFsMjkuODItLjAxM2E0LjU4OCA0LjU4OCAwIDAgMC0uMDA0LTkuMTc1bC0yOS44Mi4wMTNhNC41ODcgNC41ODcgMCAxIDAgLjAwNCA5LjE3NVwiLFxuICAgIGZpbGw6IFwiI0ZGRlwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTExMi43OTggMjYuODYxdi0uMDAybDE1Ljc4NC0uMDA2YTQuNTg4IDQuNTg4IDAgMSAwIC4wMDMgOS4xNzVsLTE1Ljc4My4wMDd2LS4wMDJhNC41ODYgNC41ODYgMCAwIDAtLjAwNC05LjE3Mk0xODQuNTIzIDEzNS42NjhjLS41NTMgNS40ODUtNS40NDcgOS40ODMtMTAuOTMxIDguOTMtNS40ODUtLjU1My05LjQ4My01LjQ0OC04LjkzLTEwLjkzMi41NTItNS40ODUgNS40NDctOS40ODMgMTAuOTMyLTguOTMgNS40ODUuNTUzIDkuNDgzIDUuNDQ3IDguOTMgMTAuOTMyXCIsXG4gICAgZmlsbDogXCIjRkZGXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTc5LjI2IDE0MS43NWwxMi42NCA3LjE2N00xOTMuMDA2IDE1Ni40NzdsLTE1LjI1NSAxMy4wMTFcIixcbiAgICBzdHJva2U6IFwiI0ZGRlwiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjJcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xODQuNjY4IDE3MC4wNTdhNi44MzUgNi44MzUgMCAxIDEtMTMuNi0xLjM3MiA2LjgzNSA2LjgzNSAwIDAgMSAxMy42IDEuMzcyTTIwMy4zNCAxNTMuMzI1YTYuODg1IDYuODg1IDAgMSAxLTEzLjctMS4zODIgNi44ODUgNi44ODUgMCAwIDEgMTMuNyAxLjM4MlwiLFxuICAgIGZpbGw6IFwiI0ZGRlwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE1MS45MzEgMTkyLjMyNGEyLjIyMiAyLjIyMiAwIDEgMS00LjQ0NCAwIDIuMjIyIDIuMjIyIDAgMCAxIDQuNDQ0IDB6TTIyNS4yNyAxMTYuMDU2YTIuMjIyIDIuMjIyIDAgMSAxLTQuNDQ1IDAgMi4yMjIgMi4yMjIgMCAwIDEgNC40NDQgMHpNMjE2LjM4IDE1MS4wOGEyLjIyMyAyLjIyMyAwIDEgMS00LjQ0Ni0uMDAxIDIuMjIzIDIuMjIzIDAgMCAxIDQuNDQ2IDB6TTE3Ni45MTcgMTA3LjYzNmEyLjIyMyAyLjIyMyAwIDEgMS00LjQ0NSAwIDIuMjIzIDIuMjIzIDAgMCAxIDQuNDQ1IDB6TTE5NS4yOTEgOTIuMTY1YTIuMjIzIDIuMjIzIDAgMSAxLTQuNDQ1IDAgMi4yMjMgMi4yMjMgMCAwIDEgNC40NDUgMHpNMjAyLjA1OCAxODAuNzExYTIuMjIzIDIuMjIzIDAgMSAxLTQuNDQ2IDAgMi4yMjMgMi4yMjMgMCAwIDEgNC40NDYgMHpcIixcbiAgICBzdHJva2U6IFwiI0ZGRlwiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjJcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBzdHJva2U6IFwiI0ZGRlwiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjJcIixcbiAgICBkOiBcIk0yMTQuNDA0IDE1My4zMDJsLTEuOTEyIDIwLjE4NC0xMC45MjggNS45OU0xNzMuNjYxIDE3NC43OTJsLTYuMzU2IDkuODE0aC0xMS4zNmwtNC41MDggNi40ODRNMTc0Ljk0MSAxMjUuMTY4di0xNS44MDRNMjIwLjgyNCAxMTcuMjVsLTEyLjg0IDcuOTAxLTE1LjMxLTcuOTAyVjk0LjM5XCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTY2LjU4OCA2NS45MzZoLTMuOTUxYTQuNzU2IDQuNzU2IDAgMCAxLTQuNzQzLTQuNzQyIDQuNzU2IDQuNzU2IDAgMCAxIDQuNzQzLTQuNzQzaDMuOTUxYTQuNzU2IDQuNzU2IDAgMCAxIDQuNzQzIDQuNzQzIDQuNzU2IDQuNzU2IDAgMCAxLTQuNzQzIDQuNzQyXCIsXG4gICAgZmlsbDogXCIjRkZGXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTc0LjgyMyAzMC4wM2MwLTE2LjI4MSAxMy4xOTgtMjkuNDggMjkuNDgtMjkuNDggMTYuMjggMCAyOS40OCAxMy4xOTkgMjkuNDggMjkuNDggMCAxNi4yOC0xMy4yIDI5LjQ4LTI5LjQ4IDI5LjQ4LTE2LjI4MiAwLTI5LjQ4LTEzLjItMjkuNDgtMjkuNDhcIixcbiAgICBmaWxsOiBcIiMxODkwRkZcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0yMDUuOTUyIDM4LjM4N2MuNS41Ljc4NSAxLjE0Mi43ODUgMS45MjhzLS4yODYgMS40NjUtLjc4NSAxLjk2NGMtLjU3Mi41LTEuMjE0Ljc1LTIgLjc1LS43ODUgMC0xLjQyOS0uMjg1LTEuOTI5LS43ODUtLjU3Mi0uNS0uODItMS4xNDMtLjgyLTEuOTI5cy4yNDgtMS40MjguODItMS45MjhjLjUtLjUgMS4xNDQtLjc1IDEuOTMtLjc1Ljc4NSAwIDEuNDYyLjI1IDEuOTk5Ljc1bTQuMjg1LTE5LjQ2M2MxLjQyOCAxLjI0OSAyLjE0MyAyLjk2MyAyLjE0MyA1LjE0MiAwIDEuNzEyLS40MjcgMy4xMy0xLjIxOSA0LjI1LS4wNjcuMDk2LS4xMzcuMTgtLjIxOC4yNjUtLjQxNi40MjktMS40MSAxLjM0Ni0yLjk1NiAyLjY5OWE1LjA3IDUuMDcgMCAwIDAtMS40MjggMS43NSA1LjIwNyA1LjIwNyAwIDAgMC0uNTM2IDIuMzU3di41aC00LjEwN3YtLjVjMC0xLjM1Ny4yMTUtMi41MzYuNzE0LTMuNS40NjQtLjk2NCAxLjg1Ny0yLjQ2NCA0LjE3OC00LjUzNmwuNDMtLjVjLjY0My0uNzg1Ljk2NC0xLjY0My45NjQtMi41MzUgMC0xLjE4LS4zNTgtMi4xMDgtMS0yLjc4NS0uNjc4LS42OC0xLjY0My0xLjAwMS0yLjg1OC0xLjAwMS0xLjUzNiAwLTIuNjQyLjQ2NC0zLjM1NyAxLjQzLS4zNy41LS42MjEgMS4xMzUtLjc2IDEuOTA0YTEuOTk5IDEuOTk5IDAgMCAxLTEuOTcxIDEuNjNoLS4wMDRjLTEuMjc3IDAtMi4yNTctMS4xODMtMS45OC0yLjQzLjMzNy0xLjUxOCAxLjAyLTIuNzggMi4wNzMtMy43ODQgMS41MzYtMS41IDMuNjA3LTIuMjUgNi4yNS0yLjI1IDIuMzIgMCA0LjIxNC42MDcgNS42NDIgMS44OTRcIixcbiAgICBmaWxsOiBcIiNGRkZcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk01Mi4wNCA3Ni4xMzFzMjEuODEgNS4zNiAyNy4zMDcgMTUuOTQ1YzUuNTc1IDEwLjc0LTYuMzUyIDkuMjYtMTUuNzMgNC45MzUtMTAuODYtNS4wMDgtMjQuNy0xMS44MjItMTEuNTc3LTIwLjg4XCIsXG4gICAgZmlsbDogXCIjRkZCNTk0XCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNOTAuNDgzIDY3LjUwNGwtLjQ0OSAyLjg5M2MtLjc1My40OS00Ljc0OC0yLjY2My00Ljc0OC0yLjY2M2wtMS42NDUuNzQ4LTEuMzQ2LTUuNjg0czYuODE1LTQuNTg5IDguOTE3LTUuMDE4YzIuNDUyLS41MDEgOS44ODQuOTQgMTAuNyAyLjI3OCAwIDAgMS4zMi40ODYtMi4yMjcuNjktMy41NDguMjAzLTUuMDQzLjQ0Ny02Ljc5IDMuMTMyLTEuNzQ3IDIuNjg2LTIuNDEyIDMuNjI0LTIuNDEyIDMuNjI0XCIsXG4gICAgZmlsbDogXCIjRkZDNkEwXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTI4LjA1NSAxMTEuMzY3Yy0yLjYyNy03LjcyNC02LjE1LTEzLjE4LTguOTE3LTE1LjQ3OC0zLjUtMi45MDYtOS4zNC0yLjIyNS0xMS4zNjYtNC4xODctMS4yNy0xLjIzMS0zLjIxNS0xLjE5Ny0zLjIxNS0xLjE5N3MtMTQuOTgtMy4xNTgtMTYuODI4LTMuNDc5Yy0yLjM3LS40MS0yLjEyNC0uNzE0LTYuMDU0LTEuNDA1LTEuNTctMS45MDctMi45MTctMS4xMjItMi45MTctMS4xMjJsLTcuMTEtMS4zODNjLS44NTMtMS40NzItMi40MjMtMS4wMjMtMi40MjMtMS4wMjNsLTIuNDY4LS44OTdjLTEuNjQ1IDkuOTc2LTcuNzQgMTMuNzk2LTcuNzQgMTMuNzk2IDEuNzk1IDEuMTIyIDE1LjcwMyA4LjMgMTUuNzAzIDguM2w1LjEwNyAzNy4xMXMtMy4zMjEgNS42OTQgMS4zNDYgOS4xMDljMCAwIDE5Ljg4My0zLjc0MyAzNC45MjEtLjMyOSAwIDAgMy4wNDctMi41NDYuOTcyLTguODA2LjUyMy0zLjAxIDEuMzk0LTguMjYzIDEuNzM2LTExLjYyMi4zODUuNzcyIDIuMDE5IDEuOTE4IDMuMTQgMy40NzcgMCAwIDkuNDA3LTcuMzY1IDExLjA1Mi0xNC4wMTItLjgzMi0uNzIzLTEuNTk4LTEuNTg1LTIuMjY3LTIuNDUzLS41NjctLjczNi0uMzU4LTIuMDU2LS43NjUtMi43MTctLjY2OS0xLjA4NC0xLjgwNC0xLjM3OC0xLjkwNy0xLjY4MlwiLFxuICAgIGZpbGw6IFwiI0ZGRlwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwMS4wOSAyODkuOTk4czQuMjk1IDIuMDQxIDcuMzU0IDEuMDIxYzIuODIxLS45NCA0LjUzLjY2OCA3LjA4IDEuMTc4IDIuNTUuNTEgNi44NzQgMS4xIDExLjY4Ni0xLjI2LS4xMDMtNS41MS02Ljg4OS0zLjk4LTExLjk2LTYuNzEzLTIuNTYzLTEuMzgtMy43ODQtNC43MjItMy41OTgtOC43OTloLTkuNDAycy0xLjM5MiAxMC41Mi0xLjE2IDE0LjU3M1wiLFxuICAgIGZpbGw6IFwiI0NCRDFEMVwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwMS4wNjcgMjg5LjgyNnMyLjQyOCAxLjI3MSA2Ljc1OS42NTNjMy4wNTgtLjQzNyAzLjcxMi40ODEgNy40MjMgMS4wMzEgMy43MTIuNTUgMTAuNzI0LS4wNjkgMTEuODIzLS44OTQuNDEzIDEuMS0uMzQzIDIuMDYzLS4zNDMgMi4wNjNzLTEuNTEyLjYwMy00LjgxMi44MjRjLTIuMDMuMTM2LTUuOC4yOTEtNy42MDctLjUwMy0xLjc4Ny0xLjM3NS01LjI0Ny0xLjkwMy01LjcyOC0uMjQxLTMuOTE4Ljk1LTcuMzU1LS4yODYtNy4zNTUtLjI4NmwtLjE2LTIuNjQ3elwiLFxuICAgIGZpbGw6IFwiIzJCMDg0OVwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwOC4zNDEgMjc2LjA0NGgzLjA5NHMtLjEwMyA2LjcwMiA0LjUzNiA4LjU1OGMtNC42NC42MTgtOC41NTgtMi4zMDMtNy42My04LjU1OFwiLFxuICAgIGZpbGw6IFwiI0E0QUFCQVwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTU3LjU0MiAyNzIuNDAxcy0yLjEwNyA3LjQxNi00LjQ4NSAxMi4zMDZjLTEuNzk4IDMuNjk1LTQuMjI1IDcuNDkyIDUuNDY1IDcuNDkyIDYuNjQ4IDAgOC45NTMtLjQ4IDcuNDIzLTYuNTk5LTEuNTMtNi4xMi4yNjYtMTMuMTk5LjI2Ni0xMy4xOTloLTguNjY5elwiLFxuICAgIGZpbGw6IFwiI0NCRDFEMVwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTUxLjQ3NiAyODkuNzkzczIuMDk3IDEuMTY5IDYuNjMzIDEuMTY5YzYuMDgzIDAgOC4yNDktMS42NSA4LjI0OS0xLjY1cy42MDIgMS4xMTQtLjYxOSAyLjE2NWMtLjk5My44NTUtMy41OTcgMS41OTEtNy4zOSAxLjU0Ni00LjE0NS0uMDQ4LTUuODMyLS41NjYtNi43MzYtMS4xNjgtLjgyNS0uNTUtLjY4Ny0xLjU4LS4xMzctMi4wNjJcIixcbiAgICBmaWxsOiBcIiMyQjA4NDlcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk01OC40MTkgMjc0LjMwNHMuMDMzIDEuNTE5LS4zMTQgMi45M2MtLjM0OSAxLjQyLTEuMDc4IDMuMTA0LTEuMTMgNC4xMzktLjA1OCAxLjE1MSA0LjUzNyAxLjU4IDUuMTU1LjAzNC42Mi0xLjU0NyAxLjI5NC02LjQyNyAxLjkxMy03LjI1Mi42MTktLjgyNS00LjkwMy0yLjExOS01LjYyNC4xNVwiLFxuICAgIGZpbGw6IFwiI0E0QUFCQVwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTk5LjY2IDI3OC41MTRsMTMuMzc4LjA5MnMxLjI5OC01NC41MiAxLjg1My02NC40MDNjLjU1NC05Ljg4MiAzLjc3Ni00My4zNjQgMS4wMDItNjMuMTI4bC0xMi41NDctLjY0NC0yMi44NDkuNzhzLS40MzQgMy45NjYtMS4xOTUgOS45NzZjLS4wNjMuNDk2LS42ODIuODQzLS43NDkgMS4zNjUtLjA3NS41ODUuNDIzIDEuMzU0LjMyIDEuOTY2LTIuMzY0IDE0LjA4LTYuMzc3IDMzLjEwNC04Ljc0NCA0Ni42NzctLjExNi42NjYtMS4yMzQgMS4wMDktMS40NTggMi42OTEtLjA0LjMwMi4yMTEgMS41MjUuMTEyIDEuNzk1LTYuODczIDE4Ljc0NC0xMC45NDkgNDcuODQyLTE0LjI3NyA2MS44ODVsMTQuNjA3LS4wMTRzMi4xOTctOC41NyA0LjAzLTE2Ljk3YzIuODExLTEyLjg4NiAyMy4xMTEtODUuMDEgMjMuMTExLTg1LjAxbDMuMDE2LS41MjEgMS4wNDMgNDYuMzVzLS4yMjQgMS4yMzQuMzM3IDIuMDJjLjU2Ljc4NS0uNTYgMS4xMjMtLjM5MiAyLjI0NGwuMzkyIDEuNzk0cy0uNDQ5IDcuMTc4LS44OTggMTEuODljLS40NDggNC43MS0uMDkyIDM5LjE2NS0uMDkyIDM5LjE2NVwiLFxuICAgIGZpbGw6IFwiIzdCQjJGOVwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTc2LjA4NSAyMjEuNjI2YzEuMTUzLjA5NCA0LjAzOC0yLjAxOSA2Ljk1NS00LjkzNU0xMDYuMzYgMjI1LjE0MnMyLjc3NC0xLjExIDYuMTAzLTMuODgzXCIsXG4gICAgc3Ryb2tlOiBcIiM2NDhCRDhcIixcbiAgICBzdHJva2VXaWR0aDogXCIxLjA1MVwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwNy4yNzUgMjIyLjFzMi43NzMtMS4xMSA2LjEwMi0zLjg4NFwiLFxuICAgIHN0cm9rZTogXCIjNjQ4QkQ4XCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNNzQuNzQgMjI0Ljc2N3MyLjYyMi0uNTkxIDYuNTA1LTMuMzY1TTg2LjAzIDE1MS42MzRjLS4yNyAzLjEwNi4zIDguNTI1LTQuMzM2IDkuMTIzTTEwMy42MjUgMTQ5Ljg4cy4xMSAxNC4wMTItMS4yOTMgMTUuMDY1Yy0yLjIxOSAxLjY2NC0yLjk5IDEuOTQ0LTIuOTkgMS45NDRNOTkuNzkgMTUwLjQzOHMuMDM1IDEyLjg4LTEuMTk2IDI0LjM3N005My42NzMgMTc1LjkxMXM3LjIxMi0xLjY2NCA5LjQzMS0xLjY2NE03NC4zMSAyMDUuODYxYTIxMi4wMTMgMjEyLjAxMyAwIDAgMS0uOTc5IDQuNTZzLTEuNDU4IDEuODMyLTEuMDA5IDMuNzc2Yy40NDkgMS45NDQtLjk0NyAyLjA0NS00Ljk4NSAxNS4zNTUtMS42OTYgNS41OS00LjQ5IDE4LjU5MS02LjM0OCAyNy41OTdsLS4yMzEgMS4xMk03NS42ODkgMTk3LjgwN2EzMjAuOTM0IDMyMC45MzQgMCAwIDEtLjg4MiA0Ljc1NE04Mi41OTEgMTUyLjIzM0w4MS4zOTUgMTYyLjdzLTEuMDk3LjE1LS41IDIuMjQ0Yy4xMTMgMS4zNDYtMi42NzQgMTUuNzc1LTUuMTggMzAuNDNNNTYuMTIgMjc0LjQxOGgxMy4zMVwiLFxuICAgIHN0cm9rZTogXCIjNjQ4QkQ4XCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4wNTFcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xMTYuMjQxIDE0OC4yMnMtMTcuMDQ3LTMuMTA0LTM1Ljg5My4yYy4xNTggMi41MTQtLjAwMyA0LjE1LS4wMDMgNC4xNXMxNC42ODctMi44MTggMzUuNjctLjMxMmMuMjUyLTIuMzU1LjIyNi00LjAzOC4yMjYtNC4wMzhcIixcbiAgICBmaWxsOiBcIiMxOTIwNjRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xMDYuMzIyIDE1MS4xNjVsLjAwMy00LjkxMWEuODEuODEgMCAwIDAtLjc3OC0uODE1Yy0yLjQ0LS4wOTEtNS4wNjYtLjEwOC03LjgzNi0uMDE0YS44MTguODE4IDAgMCAwLS43ODkuODE1bC0uMDAzIDQuOTA2YS44MS44MSAwIDAgMCAuODMxLjgxM2MyLjM4NS0uMDYgNC45NzMtLjA2NCA3LjczLjAxN2EuODE1LjgxNSAwIDAgMCAuODQyLS44MVwiLFxuICAgIGZpbGw6IFwiI0ZGRlwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwNS4yMDcgMTUwLjIzM2wuMDAyLTMuMDc2YS42NDIuNjQyIDAgMCAwLS42MTktLjY0NiA5NC4zMjEgOTQuMzIxIDAgMCAwLTUuODY2LS4wMS42NS42NSAwIDAgMC0uNjMuNjQ3djMuMDcyYS42NC42NCAwIDAgMCAuNjU0LjY0NCAxMjEuMTIgMTIxLjEyIDAgMCAxIDUuNzk0LjAxMWMuMzYyLjAxLjY2NS0uMjguNjY1LS42NDJcIixcbiAgICBmaWxsOiBcIiMxOTIwNjRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xMDAuMjYzIDI3NS40MTVoMTIuMzM4TTEwMS40MzYgMjcwLjUzYy4wMDYgMy4zODcuMDQyIDUuNzkuMTExIDYuNTA2TTEwMS40NTEgMjY0LjU0OGE5MTUuNzUgOTE1Ljc1IDAgMCAwLS4wMTUgNC4zMzdNMTAwLjk4NiAxNzQuOTY1bC44OTggNDQuNjQycy42NzMgMS41Ny0uMjI1IDIuNjkyYy0uODk3IDEuMTIyIDIuNDY4LjY3My44OTggMi4yNDMtMS41NyAxLjU3Ljg5NyAxLjEyMiAwIDMuMzY1LS41OTYgMS40ODktLjk5NCAyMS4xLTEuMDk2IDM1LjE0NlwiLFxuICAgIHN0cm9rZTogXCIjNjQ4QkQ4XCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4wNTFcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk00Ni44NzYgODMuNDI3cy0uNTE2IDYuMDQ1IDcuMjIzIDUuNTUyYzExLjItLjcxMiA5LjIxOC05LjM0NSAzMS41NC0yMS42NTUtLjc4Ni0yLjcwOC0yLjQ0Ny00Ljc0NC0yLjQ0Ny00Ljc0NHMtMTEuMDY4IDMuMTEtMjIuNTg0IDguMDQ2Yy02Ljc2NiAyLjktMTMuMzk1IDYuMzUyLTEzLjczMiAxMi44MDFNMTA0LjQ2IDkxLjA1N2wuOTQxLTUuMzcyLTguODg0LTExLjQzLTUuMDM3IDUuMzcyLTEuNzQgNy44MzRhLjMyMS4zMjEgMCAwIDAgLjEwOC4zMmMuOTY1LjggNi41IDUuMDEzIDE0LjM0NyAzLjU0NGEuMzMyLjMzMiAwIDAgMCAuMjY0LS4yNjhcIixcbiAgICBmaWxsOiBcIiNGRkM2QTBcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk05My45NDIgNzkuMzg3cy00LjUzMy0yLjg1My0yLjQzMi02Ljg1NWMxLjYyMy0zLjA5IDQuNTEzIDEuMTMzIDQuNTEzIDEuMTMzcy41Mi0zLjY0MiAzLjEyMS0zLjY0MmMuNTItMS4wNCAxLjU2MS00LjE2MiAxLjU2MS00LjE2MnMxMS40NDUgMi42MDEgMTMuNTI2IDMuMTIxYzAgNS4yMDMtMi4zMDQgMTkuNDI0LTcuODQgMTkuODYxLTguODkyLjcwMy0xMi40NDktOS40NTYtMTIuNDQ5LTkuNDU2XCIsXG4gICAgZmlsbDogXCIjRkZDNkEwXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTEzLjg3NCA3My40NDZjMi42MDEtMi4wODEgMy40Ny05LjcyMiAzLjQ3LTkuNzIycy0yLjQ3OS0uNDktNi42NC0yLjA1Yy00LjY4My0yLjA4MS0xMi43OTgtNC43NDctMTcuNDguOTc2LTkuNjY4IDMuMjIzLTIuMDUgMTkuODIzLTIuMDUgMTkuODIzbDIuNzEzLTMuMDIxcy0zLjkzNS0zLjI4Ny0yLjA4LTYuMjQzYzIuMTctMy40NjIgMy45MiAxLjA3MyAzLjkyIDEuMDczcy42MzctMi4zODcgMy41ODEtMy4zNDJjLjM1NS0uNzEgMS4wMzYtMi42NzQgMS40MzItMy44NWExLjA3MyAxLjA3MyAwIDAgMSAxLjI2My0uNzA0YzIuNC41NTggOC42NzcgMi4wMTkgMTEuMzU2IDIuNjYyLjUyMi4xMjUuODcxLjYxNS44MiAxLjE1bC0uMzA1IDMuMjQ4elwiLFxuICAgIGZpbGw6IFwiIzUyMDAzOFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwNC45NzcgNzYuMDY0Yy0uMTAzLjYxLS41ODIgMS4wMzgtMS4wNy45NTYtLjQ4OS0uMDgzLS44MDEtLjY0NC0uNjk4LTEuMjU0LjEwMy0uNjEuNTgyLTEuMDM4IDEuMDctLjk1Ni40ODguMDgyLjguNjQ0LjY5OCAxLjI1NE0xMTIuMTMyIDc3LjY5NGMtLjEwMy42MS0uNTgyIDEuMDM4LTEuMDcuOTU2LS40ODgtLjA4My0uOC0uNjQ0LS42OTgtMS4yNTQuMTAzLS42MS41ODItMS4wMzggMS4wNy0uOTU2LjQ4OC4wODIuOC42NDMuNjk4IDEuMjU0XCIsXG4gICAgZmlsbDogXCIjNTUyOTUwXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgc3Ryb2tlOiBcIiNEQjgzNkVcIixcbiAgICBzdHJva2VXaWR0aDogXCIxLjExOFwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiLFxuICAgIGQ6IFwiTTExMC4xMyA3NC44NGwtLjg5NiAxLjYxLS4yOTggNC4zNTdoLTIuMjI4XCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTEwLjg0NiA3NC40ODFzMS43OS0uNzE2IDIuNTA2LjUzN1wiLFxuICAgIHN0cm9rZTogXCIjNUMyNTUyXCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4xMThcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk05Mi4zODYgNzQuMjgycy40NzctMS4xMTQgMS4xMTMtLjcxNmMuNjM3LjM5OCAxLjI3NCAxLjQzMy41NTggMS45OS0uNzE3LjU1Ni4xNTkgMS42Ny4xNTkgMS42N1wiLFxuICAgIHN0cm9rZTogXCIjREI4MzZFXCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4xMThcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xMDMuMjg3IDcyLjkzczEuODMgMS4xMTMgNC4xMzcuOTU0XCIsXG4gICAgc3Ryb2tlOiBcIiM1QzI1NTJcIixcbiAgICBzdHJva2VXaWR0aDogXCIxLjExOFwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwMy42ODUgODEuNzYyczIuMjI3IDEuMTkzIDQuMzc2IDEuMTkzTTEwNC42NCA4NC4zMDhzLjk1NC4zOTggMS41MTEuMzE4TTk0LjY5MyA4MS4yMDVzMi4zMDggNy40IDEwLjQyNCA3LjYzOVwiLFxuICAgIHN0cm9rZTogXCIjREI4MzZFXCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4xMThcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk04MS40NSA4OS4zODRzLjQ1IDUuNjQ3LTQuOTM1IDEyLjc4N002OSA4Mi42NTRzLS43MjYgOS4yODItOC4yMDQgMTQuMjA2XCIsXG4gICAgc3Ryb2tlOiBcIiNFNEVCRjdcIixcbiAgICBzdHJva2VXaWR0aDogXCIxLjEwMVwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEyOS40MDUgMTIyLjg2NXMtNS4yNzIgNy40MDMtOS40MjIgMTAuNzY4XCIsXG4gICAgc3Ryb2tlOiBcIiNFNEVCRjdcIixcbiAgICBzdHJva2VXaWR0aDogXCIxLjA1MVwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTExOS4zMDYgMTA3LjMyOXMuNDUyIDQuMzY2LTIuMTI3IDMyLjA2MlwiLFxuICAgIHN0cm9rZTogXCIjRTRFQkY3XCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4xMDFcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xNTAuMDI4IDE1MS4yMzJoLTQ5LjgzN2ExLjAxIDEuMDEgMCAwIDEtMS4wMS0xLjAxdi0zMS42ODhjMC0uNTU3LjQ1Mi0xLjAxIDEuMDEtMS4wMWg0OS44MzdjLjU1OCAwIDEuMDEuNDUzIDEuMDEgMS4wMXYzMS42ODhhMS4wMSAxLjAxIDAgMCAxLTEuMDEgMS4wMVwiLFxuICAgIGZpbGw6IFwiI0YyRDdBRFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE1MC4yOSAxNTEuMjMyaC0xOS44NjN2LTMzLjcwN2gyMC43ODR2MzIuNzg2YS45Mi45MiAwIDAgMS0uOTIuOTJcIixcbiAgICBmaWxsOiBcIiNGNEQxOURcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xMjMuNTU0IDEyNy44OTZIOTIuOTE3YS41MTguNTE4IDAgMCAxLS40MjUtLjgxNmw2LjM4LTkuMTEzYy4xOTMtLjI3Ny41MS0uNDQyLjg1LS40NDJoMzEuMDkybC03LjI2IDEwLjM3MXpcIixcbiAgICBmaWxsOiBcIiNGMkQ3QURcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBmaWxsOiBcIiNDQzlCNkVcIixcbiAgICBkOiBcIk0xMjMuNjg5IDEyOC40NDdIOTkuMjV2LS41MTloMjQuMTY5bDcuMTgzLTEwLjI2LjQyNC4yOTh6XCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTU4LjI5OCAxMjcuODk2aC0xOC42NjlhMi4wNzMgMi4wNzMgMCAwIDEtMS42NTktLjgzbC03LjE1Ni05LjU0MWgxOS45NjVjLjQ5IDAgLjk1LjIzIDEuMjQ0LjYyMmw2LjY5IDguOTJhLjUxOS41MTkgMCAwIDEtLjQxNS44M1wiLFxuICAgIGZpbGw6IFwiI0Y0RDE5RFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGZpbGw6IFwiI0NDOUI2RVwiLFxuICAgIGQ6IFwiTTE1Ny44NDcgMTI4LjQ3OWgtMTkuMzg0bC03Ljg1Ny0xMC40NzUuNDE1LS4zMSA3LjcgMTAuMjY2aDE5LjEyNnpNMTMwLjU1NCAxNTAuNjg1bC0uMDMyLTguMTc3LjUxOS0uMDAyLjAzMiA4LjE3N3pcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBmaWxsOiBcIiNDQzlCNkVcIixcbiAgICBkOiBcIk0xMzAuNTExIDEzOS43ODNsLS4wOC0yMS40MTQuNTE5LS4wMDIuMDggMjEuNDE0ek0xMTEuODc2IDE0MC45MzJsLS40OTgtLjE0MyAxLjQ3OS01LjE2Ny40OTguMTQzek0xMDguNDM3IDE0MS4wNmwtMi42NzktMi45MzUgMi42NjUtMy40MzQuNDEuMzE4LTIuMzk3IDMuMDg5IDIuMzg0IDIuNjEyek0xMTYuNjA3IDE0MS4wNmwtLjM4My0uMzUgMi4zODMtMi42MTItMi4zOTctMy4wODkuNDEtLjMxOCAyLjY2NSAzLjQzNHpcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xNTQuMzE2IDEzMS44OTJsLTMuMTE0LTEuOTYuMDM4IDMuNTE0LTEuMDQzLjA5MmMtMS42ODIuMTE1LTMuNjM0LjIzLTQuNzg5LjIzLTEuOTAyIDAtMi42OTMgMi4yNTggMi4yMyAyLjY0OGwtMi42NDUtLjU5NnMtMi4xNjggMS4zMTcuNTA0IDIuM2MwIDAtMS41OCAxLjIxNy41NjEgMi41OC0uNTg0IDMuNTA0IDUuMjQ3IDQuMDU4IDcuMTIyIDMuNTkgMS44NzYtLjQ3IDQuMjMzLTIuMzU5IDQuNDg3LTUuMTYuMjgtMy4wODUtLjg5LTUuNDMyLTMuMzUtNy4yMzhcIixcbiAgICBmaWxsOiBcIiNGRkM2QTBcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xNTMuNjg2IDEzMy41NzdzLTYuNTIyLjQ3LTguMzYuMzcyYy0xLjgzNi0uMDk4LTEuOTA0IDIuMTkgMi4zNTkgMi4yNjQgMy43MzkuMTUgNS40NTEtLjA0NCA1LjQ1MS0uMDQ0XCIsXG4gICAgc3Ryb2tlOiBcIiNEQjgzNkVcIixcbiAgICBzdHJva2VXaWR0aDogXCIxLjA1MVwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE0NS4xNiAxMzUuODc3Yy0xLjg1IDEuMzQ2LjU2MSAyLjM1NS41NjEgMi4zNTVzMy40NzguODk4IDYuNzMuNjE3XCIsXG4gICAgc3Ryb2tlOiBcIiNEQjgzNkVcIixcbiAgICBzdHJva2VXaWR0aDogXCIxLjA1MVwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE1MS44OSAxNDEuNzFzLTYuMjguMTExLTYuNzMtMi4xMzJjLS4yMjMtMS4zNDYuNDUtMS40MDIuNDUtMS40MDJNMTQ2LjExNCAxNDAuODY4cy0xLjEwMyAzLjE2IDUuNDQgMy41MzNNMTUxLjIwMiAxMjkuOTMydjMuNDc3TTUyLjgzOCA4OS4yODZjMy41MzMtLjMzNyA4LjQyMy0xLjI0OCAxMy41ODItNy43NTRcIixcbiAgICBzdHJva2U6IFwiI0RCODM2RVwiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjEuMDUxXCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTY4LjU2NyAyNDguMzE4YTYuNjQ3IDYuNjQ3IDAgMCAxLTYuNjQ3LTYuNjQ3di02Ni40NjZhNi42NDcgNi42NDcgMCAxIDEgMTMuMjk0IDB2NjYuNDY2YTYuNjQ3IDYuNjQ3IDAgMCAxLTYuNjQ3IDYuNjQ3XCIsXG4gICAgZmlsbDogXCIjNUJBMDJFXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTc2LjU0MyAyNDcuNjUzYTYuNjQ3IDYuNjQ3IDAgMCAxLTYuNjQ2LTYuNjQ3di0zMy4yMzJhNi42NDcgNi42NDcgMCAxIDEgMTMuMjkzIDB2MzMuMjMyYTYuNjQ3IDYuNjQ3IDAgMCAxLTYuNjQ3IDYuNjQ3XCIsXG4gICAgZmlsbDogXCIjOTJDMTEwXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTg2LjQ0MyAyOTMuNjEzSDE1OC45MmEzLjE4NyAzLjE4NyAwIDAgMS0zLjE4Ny0zLjE4N3YtNDYuMTM0YTMuMTg3IDMuMTg3IDAgMCAxIDMuMTg3LTMuMTg3aDI3LjUyNGEzLjE4NyAzLjE4NyAwIDAgMSAzLjE4NyAzLjE4N3Y0Ni4xMzRhMy4xODcgMy4xODcgMCAwIDEtMy4xODcgMy4xODdcIixcbiAgICBmaWxsOiBcIiNGMkQ3QURcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk04OC45NzkgODkuNDhzNy43NzYgNS4zODQgMTYuNiAyLjg0MlwiLFxuICAgIHN0cm9rZTogXCIjRTRFQkY3XCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4xMDFcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSkpO1xufTtcblxudmFyIF9kZWZhdWx0ID0gTm9Gb3VuZDtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgU2VydmVyRXJyb3IgPSBmdW5jdGlvbiBTZXJ2ZXJFcnJvcigpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHtcbiAgICB3aWR0aDogXCIyNTRcIixcbiAgICBoZWlnaHQ6IFwiMjk0XCJcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkZWZzXCIsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMCAuMzM1aDI1My40OXYyNTMuNDlIMHpcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0wIDI5My42NjVoMjUzLjQ5Vi40MDFIMHpcIlxuICB9KSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCB7XG4gICAgZmlsbDogXCJub25lXCIsXG4gICAgZmlsbFJ1bGU6IFwiZXZlbm9kZFwiXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCB7XG4gICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgwIC4wNjcpXCJcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJtYXNrXCIsIHtcbiAgICBmaWxsOiBcIiNmZmZcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0wIDEyOC4xMzR2LTIuMTFDMCA1Ni42MDggNTYuMjczLjMzNCAxMjUuNjkuMzM0aDIuMTFjNjkuNDE2IDAgMTI1LjY5IDU2LjI3NCAxMjUuNjkgMTI1LjY5djIuMTFjMCA2OS40MTctNTYuMjc0IDEyNS42OS0xMjUuNjkgMTI1LjY5aC0yLjExQzU2LjI3MyAyNTMuODI0IDAgMTk3LjU1MSAwIDEyOC4xMzRcIixcbiAgICBmaWxsOiBcIiNFNEVCRjdcIixcbiAgICBtYXNrOiBcInVybCgjYilcIlxuICB9KSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMzkuOTg5IDEzMi4xMDhhOC4zMzIgOC4zMzIgMCAxIDEtMTYuNTgxLTEuNjcxIDguMzMyIDguMzMyIDAgMCAxIDE2LjU4IDEuNjcxXCIsXG4gICAgZmlsbDogXCIjRkZGXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMzcuMTkgMTM1LjU5bDEwLjU1MyA1Ljk4M000OC42NjUgMTQ3Ljg4NGwtMTIuNzM0IDEwLjg2MVwiLFxuICAgIHN0cm9rZTogXCIjRkZGXCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMlwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTQwLjExIDE2MC44MTZhNS43MDYgNS43MDYgMCAxIDEtMTEuMzU0LTEuMTQ1IDUuNzA2IDUuNzA2IDAgMCAxIDExLjM1NCAxLjE0NU01Ny45NDMgMTQ0LjZhNS43NDcgNS43NDcgMCAxIDEtMTEuNDM2LTEuMTUyIDUuNzQ3IDUuNzQ3IDAgMCAxIDExLjQzNiAxLjE1M005OS42NTYgMjcuNDM0bDMwLjAyNC0uMDEzYTQuNjE5IDQuNjE5IDAgMSAwLS4wMDQtOS4yMzhsLTMwLjAyNC4wMTNhNC42MiA0LjYyIDAgMCAwIC4wMDQgOS4yMzhNMTExLjE0IDQ1Ljg5NmwzMC4wMjMtLjAxM2E0LjYyIDQuNjIgMCAxIDAtLjAwNC05LjIzOGwtMzAuMDI0LjAxM2E0LjYxOSA0LjYxOSAwIDEgMCAuMDA0IDkuMjM4XCIsXG4gICAgZmlsbDogXCIjRkZGXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTEzLjUzIDI3LjQyMXYtLjAwMmwxNS44OS0uMDA3YTQuNjE5IDQuNjE5IDAgMSAwIC4wMDUgOS4yMzhsLTE1Ljg5Mi4wMDd2LS4wMDJhNC42MTggNC42MTggMCAwIDAtLjAwNC05LjIzNE0xNTAuMTY3IDcwLjA5MWgtMy45NzlhNC43ODkgNC43ODkgMCAwIDEtNC43NzQtNC43NzUgNC43ODggNC43ODggMCAwIDEgNC43NzQtNC43NzRoMy45NzlhNC43ODkgNC43ODkgMCAwIDEgNC43NzUgNC43NzQgNC43ODkgNC43ODkgMCAwIDEtNC43NzUgNC43NzVcIixcbiAgICBmaWxsOiBcIiNGRkZcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xNzEuNjg3IDMwLjIzNGMwLTE2LjM5MiAxMy4yODktMjkuNjggMjkuNjgxLTI5LjY4IDE2LjM5MiAwIDI5LjY4IDEzLjI4OCAyOS42OCAyOS42OCAwIDE2LjM5My0xMy4yODggMjkuNjgxLTI5LjY4IDI5LjY4MXMtMjkuNjgtMTMuMjg4LTI5LjY4LTI5LjY4XCIsXG4gICAgZmlsbDogXCIjRkY2MDNCXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMjAzLjU1NyAxOS40MzVsLS42NzYgMTUuMDM1YTEuNTE0IDEuNTE0IDAgMCAxLTMuMDI2IDBsLS42NzUtMTUuMDM1YTIuMTkgMi4xOSAwIDEgMSA0LjM3NyAwbS0uMjY0IDE5LjM3OGMuNTEzLjQ3Ny43NyAxLjEuNzcgMS44N3MtLjI1NyAxLjM5My0uNzcgMS45MDdjLS41NS40NzYtMS4yMS43MzMtMS45NDMuNzMzYTIuNTQ1IDIuNTQ1IDAgMCAxLTEuODctLjc3Yy0uNTUtLjUxNC0uODA2LTEuMTM2LS44MDYtMS44NyAwLS43Ny4yNTYtMS4zOTMuODA2LTEuODcuNTEzLS41MTMgMS4xMzctLjczMyAxLjg3LS43MzMuNzcgMCAxLjQzLjIyIDEuOTQzLjczM1wiLFxuICAgIGZpbGw6IFwiI0ZGRlwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTExOS4zIDEzMy4yNzVjNC40MjYtLjU5OCAzLjYxMi0xLjIwNCA0LjA3OS00Ljc3OC42NzUtNS4xOC0zLjEwOC0xNi45MzUtOC4yNjItMjUuMTE4LTEuMDg4LTEwLjcyLTEyLjU5OC0xMS4yNC0xMi41OTgtMTEuMjRzNC4zMTIgNC44OTUgNC4xOTYgMTYuMTk5YzEuMzk4IDUuMjQzLjgwNCAxNC40NS44MDQgMTQuNDVzNS4yNTUgMTEuMzY5IDExLjc4IDEwLjQ4N1wiLFxuICAgIGZpbGw6IFwiI0ZGQjU5NFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwMC45NDQgOTEuNjFzMS40NjMtLjU4MyAzLjIxMS41ODJjOC4wOCAxLjM5OCAxMC4zNjggNi43MDYgMTEuMyAxMS4zNjggMS44NjQgMS4yODIgMS44NjQgMi4zMyAxLjg2NCAzLjQ5Ni4zNjUuNzc3IDEuNTE1IDMuMDMgMS41MTUgMy4wM3MtNy4yMjUgMS43NDgtMTAuOTU0IDYuNzU4Yy0xLjM5OS02LjQxLTYuOTM2LTI1LjIzNS02LjkzNi0yNS4yMzVcIixcbiAgICBmaWxsOiBcIiNGRkZcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk05NC4wMDggOTAuNWwxLjAxOS01LjgxNS05LjIzLTExLjg3NC01LjIzMyA1LjU4MS0yLjU5MyA5Ljg2M3M4LjM5IDUuMTI4IDE2LjAzNyAyLjI0NlwiLFxuICAgIGZpbGw6IFwiI0ZGQjU5NFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTgyLjkzMSA3OC4yMTZzLTQuNTU3LTIuODY4LTIuNDQ1LTYuODkyYzEuNjMyLTMuMTA3IDQuNTM3IDEuMTM5IDQuNTM3IDEuMTM5cy41MjQtMy42NjIgMy4xMzktMy42NjJjLjUyMy0xLjA0NiAxLjU2OS00LjE4NCAxLjU2OS00LjE4NHMxMS41MDcgMi42MTUgMTMuNiAzLjEzOGMtLjAwMSA1LjIzLTIuMzE3IDE5LjUyOS03Ljg4NCAxOS45NjktOC45NC43MDYtMTIuNTE2LTkuNTA4LTEyLjUxNi05LjUwOFwiLFxuICAgIGZpbGw6IFwiI0ZGQzZBMFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwMi45NzEgNzIuMjQzYzIuNjE2LTIuMDkzIDMuNDg5LTkuNzc1IDMuNDg5LTkuNzc1cy0yLjQ5Mi0uNDkyLTYuNjc2LTIuMDYyYy00LjcwOC0yLjA5Mi0xMi44NjctNC43NzEtMTcuNTc1Ljk4Mi05LjU0IDQuNDEtMi4wNjIgMTkuOTMtMi4wNjIgMTkuOTNsMi43MjktMy4wMzdzLTMuOTU2LTMuMzA0LTIuMDkyLTYuMjc3YzIuMTgzLTMuNDggMy45NDMgMS4wOCAzLjk0MyAxLjA4cy42NC0yLjQgMy42LTMuMzZjLjM1Ni0uNzE0IDEuMDQtMi42OSAxLjQ0LTMuODcyYTEuMDggMS4wOCAwIDAgMSAxLjI3LS43MDdjMi40MS41NiA4LjcyMyAyLjAzIDExLjQxNyAyLjY3Ni41MjQuMTI2Ljg3Ni42MTkuODI1IDEuMTU2bC0uMzA4IDMuMjY2elwiLFxuICAgIGZpbGw6IFwiIzUyMDAzOFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwMS4yMiA3Ni41MTRjLS4xMDQuNjEzLS41ODUgMS4wNDQtMS4wNzYuOTYtLjQ5LS4wODItLjgwNS0uNjQ2LS43MDItMS4yNi4xMDQtLjYxMy41ODUtMS4wNDQgMS4wNzYtLjk2MS40OTEuMDgzLjgwNS42NDcuNzAyIDEuMjZNOTQuMjYgNzUuMDc0Yy0uMTA0LjYxMy0uNTg1IDEuMDQ0LTEuMDc2Ljk2LS40OS0uMDgyLS44MDUtLjY0Ni0uNzAyLTEuMjYuMTA0LS42MTMuNTg1LTEuMDQ0IDEuMDc2LS45Ni40OTEuMDgyLjgwNS42NDYuNzAyIDEuMjZcIixcbiAgICBmaWxsOiBcIiM1NTI5NTBcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBzdHJva2U6IFwiI0RCODM2RVwiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjEuMDYzXCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCIsXG4gICAgZDogXCJNOTkuMjA2IDczLjY0NGwtLjkgMS42Mi0uMyA0LjM4aC0yLjI0XCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNOTkuOTI2IDczLjI4NHMxLjgtLjcyIDIuNTIuNTRcIixcbiAgICBzdHJva2U6IFwiIzVDMjU1MlwiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjEuMTE3XCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNODEuMzY3IDczLjA4NHMuNDgtMS4xMiAxLjEyLS43MmMuNjQuNCAxLjI4IDEuNDQuNTYgMnMuMTYgMS42OC4xNiAxLjY4XCIsXG4gICAgc3Ryb2tlOiBcIiNEQjgzNkVcIixcbiAgICBzdHJva2VXaWR0aDogXCIxLjExN1wiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTkyLjMyNiA3MS43MjRzMS44NCAxLjEyIDQuMTYuOTZcIixcbiAgICBzdHJva2U6IFwiIzVDMjU1MlwiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjEuMTE3XCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNOTIuNzI2IDgwLjYwNHMyLjI0IDEuMiA0LjQgMS4yTTkzLjY4NiA4My4xNjRzLjk2LjQgMS41Mi4zMk04My42ODcgODAuMDQ0czEuNzg2IDYuNTQ3IDkuMjYyIDcuOTU0XCIsXG4gICAgc3Ryb2tlOiBcIiNEQjgzNkVcIixcbiAgICBzdHJva2VXaWR0aDogXCIxLjA2M1wiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTk1LjU0OCA5MS42NjNzLTEuMDY4IDIuODIxLTguMjk4IDIuMTA1Yy03LjIzLS43MTctMTAuMjktNS4wNDQtMTAuMjktNS4wNDRcIixcbiAgICBzdHJva2U6IFwiI0U0RUJGN1wiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjEuMTM2XCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNNzguMTI2IDg3LjQ3OHM2LjUyNiA0Ljk3MiAxNi40NyAyLjQ4NmMwIDAgOS41NzcgMS4wMiAxMS41MzYgNS4zMjIgNS4zNiAxMS43Ny41NDMgMzYuODM1IDAgMzkuOTYyIDMuNDk2IDQuMDU1LS40NjYgOC40ODMtLjQ2NiA4LjQ4My0xNS42MjQtMy41NDgtMzUuODEtLjYtMzUuODEtLjYtNC44NDktMy41NDYtMS4yMjMtOS4wNDQtMS4yMjMtOS4wNDRMNjIuMzggMTEwLjMyYy0yLjQ4NS0xNS4yMjcuODMzLTE5LjgwMyAzLjU0OS0yMC43NDMgMy4wMy0xLjA0OSA4LjA0LTEuMjgyIDguMDQtMS4yODIuNDk2LS4wNTggMS4wOC0uMDc2IDEuMzctLjIzMyAyLjM2LTEuMjgyIDIuNzg3LS41ODMgMi43ODctLjU4M1wiLFxuICAgIGZpbGw6IFwiI0ZGRlwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTY1LjgyOCA4OS44MXMtNi44NzUuNDY1LTcuNTkgOC4xNTZjLS40NjYgOC44NTcgMy4wMyAxMC45NTQgMy4wMyAxMC45NTRzNi4wNzUgMjIuMTAyIDE2Ljc5NiAyMi45NTdjOC4zOS0yLjE3NiA0Ljc1OC02LjcwMiA0LjY2MS0xMS40Mi0uMjMzLTExLjMwNC03LjEwOC0xNi44OTctNy4xMDgtMTYuODk3cy00LjIxMi0xMy43NS05Ljc4OS0xMy43NVwiLFxuICAgIGZpbGw6IFwiI0ZGQzZBMFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTcxLjcxNiAxMjQuMjI1cy44NTUgMTEuMjY0IDkuODI4IDYuNDg2YzQuNzY1LTIuNTM2IDcuNTgxLTEzLjgyOCA5Ljc4OS0yMi41NjggMS40NTYtNS43NjggMi41OC0xMi4xOTcgMi41OC0xMi4xOTdsLTQuOTczLTEuNzA5cy0yLjQwOCA1LjUxNi03Ljc2OSAxMi4yNzVjLTQuMzM1IDUuNDY3LTkuMTQ0IDExLjExLTkuNDU1IDE3LjcxM1wiLFxuICAgIGZpbGw6IFwiI0ZGQzZBMFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwOC40NjMgMTA1LjE5MXMxLjc0NyAyLjcyNC0yLjMzMSAzMC41MzVjMi4zNzYgMi4yMTYgMS4wNTMgNi4wMTItLjIzMyA3LjUxXCIsXG4gICAgc3Ryb2tlOiBcIiNFNEVCRjdcIixcbiAgICBzdHJva2VXaWR0aDogXCIxLjA4NVwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEyMy4yNjIgMTMxLjUyN3MtLjQyNyAyLjczMi0xMS43NyAxLjk4MWMtMTUuMTg3LTEuMDA2LTI1LjMyNi0zLjI1LTI1LjMyNi0zLjI1bC45MzMtNS44cy43MjMuMjE1IDkuNzEtLjA2OGMxMS44ODctLjM3MyAxOC43MTQtNi4wNyAyNC45NjQtMS4wMjIgNC4wMzkgMy4yNjMgMS40ODkgOC4xNiAxLjQ4OSA4LjE2XCIsXG4gICAgZmlsbDogXCIjRkZDNkEwXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNNzAuMjQgOTAuOTc0cy01LjU5My00LjczOS0xMS4wNTQgMi42OGMtMy4zMTggNy4yMjMuNTE3IDE1LjI4NCAyLjY2NCAxOS41NzgtLjMxIDMuNzI5IDIuMzMgNC4zMTEgMi4zMyA0LjMxMXMuMTA4Ljg5NSAxLjUxNiAyLjY4YzQuMDc4LTcuMDMgNi43Mi05LjE2NiAxMy43MTEtMTIuNTQ2LS4zMjgtLjY1Ni0xLjg3Ny0zLjI2NS0xLjgyNS0zLjc2Ny4xNzUtMS42OS0xLjI4Mi0yLjYyMy0xLjI4Mi0yLjYyM3MtLjI4Ni0uMTU2LTEuMTY1LTIuNzM4Yy0uNzg4LTIuMzEzLTIuMDM2LTUuMTc3LTQuODk1LTcuNTc1XCIsXG4gICAgZmlsbDogXCIjRkZGXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNOTAuMjMyIDI4OC4wMjdzNC44NTUgMi4zMDggOC4zMTMgMS4xNTVjMy4xODgtMS4wNjMgNS4xMi43NTUgOC4wMDIgMS4zMzEgMi44ODEuNTc3IDcuNzY5IDEuMjQzIDEzLjIwNy0xLjQyNC0uMTE3LTYuMjI4LTcuNzg2LTQuNDk5LTEzLjUxOC03LjU4OC0yLjg5NS0xLjU2LTQuMjc2LTUuMzM2LTQuMDY2LTkuOTQ0SDkxLjU0NHMtMS41NzMgMTEuODktMS4zMTIgMTYuNDdcIixcbiAgICBmaWxsOiBcIiNDQkQxRDFcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk05MC4yMDcgMjg3LjgzM3MyLjc0NSAxLjQzNyA3LjYzOS43MzhjMy40NTYtLjQ5NCAzLjIyMy42NiA3LjQxOCAxLjI4MiA0LjE5NS42MjEgMTMuMDkyLS4xOTQgMTQuMzM0LTEuMTI2LjQ2NiAxLjI0Mi0uMzg4IDIuMzMtLjM4OCAyLjMzcy0xLjcwOS42ODItNS40MzguOTMyYy0yLjI5NS4xNTQtOC4wOTguMjc2LTEwLjE0LS42MjEtMi4wMi0xLjU1NC00Ljg5NC0xLjUxNS02LjA2LS4yMzQtNC40MjcgMS4wNzUtNy4xODQtLjMxLTcuMTg0LS4zMWwtLjE4MS0yLjk5MXpcIixcbiAgICBmaWxsOiBcIiMyQjA4NDlcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk05OC40MjkgMjcyLjI1N2gzLjQ5NnMtLjExNyA3LjU3NCA1LjEyNyA5LjY3MWMtNS4yNDQuNy05LjY3Mi0yLjYwMi04LjYyMy05LjY3MVwiLFxuICAgIGZpbGw6IFwiI0E0QUFCQVwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTQ0LjQyNSAyNzIuMDQ2cy0yLjIwOCA3Ljc3NC00LjcwMiAxMi44OTljLTEuODg0IDMuODc0LTQuNDI4IDcuODU0IDUuNzI5IDcuODU0IDYuOTcgMCA5LjM4NS0uNTAzIDcuNzgyLTYuOTE3LTEuNjA0LTYuNDE1LjI3OS0xMy44MzYuMjc5LTEzLjgzNmgtOS4wODh6XCIsXG4gICAgZmlsbDogXCIjQ0JEMUQxXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMzguMDY2IDI5MC4yNzdzMi4xOTggMS4yMjUgNi45NTQgMS4yMjVjNi4zNzYgMCA4LjY0Ni0xLjczIDguNjQ2LTEuNzNzLjYzIDEuMTY4LS42NDkgMi4yN2MtMS4wNC44OTctMy43NyAxLjY2OC03Ljc0NSAxLjYyMS00LjM0Ny0uMDUtNi4xMTUtLjU5My03LjA2Mi0xLjIyNC0uODY0LS41NzctLjcyLTEuNjU3LS4xNDQtMi4xNjJcIixcbiAgICBmaWxsOiBcIiMyQjA4NDlcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk00NS4zNDQgMjc0LjA0MXMuMDM1IDEuNTkyLS4zMjkgMy4wN2MtLjM2NSAxLjQ5LTEuMTMgMy4yNTUtMS4xODQgNC4zNC0uMDYxIDEuMjA2IDQuNzU1IDEuNjU3IDUuNDAzLjAzNi42NS0xLjYyMiAxLjM1Ny02LjczNyAyLjAwNi03LjYwMi42NDgtLjg2NS01LjE0LTIuMjIyLTUuODk2LjE1NlwiLFxuICAgIGZpbGw6IFwiI0E0QUFCQVwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTg5LjQ3NiAyNzcuNTdsMTMuODk5LjA5NXMxLjM0OS01Ni42NDMgMS45MjUtNjYuOTA5Yy41NzYtMTAuMjY3IDMuOTIzLTQ1LjA1MiAxLjA0Mi02NS41ODVsLTEzLjAzNy0uNjY5LTIzLjczNy44MXMtLjQ1MiA0LjEyLTEuMjQzIDEwLjM2NWMtLjA2NS41MTUtLjcwOC44NzQtLjc3NyAxLjQxNy0uMDc4LjYwOC40MzkgMS40MDcuMzMyIDIuMDQ0LTIuNDU1IDE0LjYyNy01Ljc5NyAzMi43MzYtOC4yNTYgNDYuODM3LS4xMjEuNjkzLTEuMjgyIDEuMDQ4LTEuNTE1IDIuNzk2LS4wNDIuMzE0LjIyIDEuNTg0LjExNiAxLjg2NS03LjE0IDE5LjQ3My0xMi4yMDIgNTIuNjAxLTE1LjY2IDY3LjE5bDE1LjE3Ni0uMDE1czIuMjgyLTEwLjE0NSA0LjE4NS0xOC44NzFjMi45MjItMTMuMzg5IDI0LjAxMi04OC4zMiAyNC4wMTItODguMzJsMy4xMzMtLjk1NC0uMTU4IDQ4LjU2OHMtLjIzMyAxLjI4Mi4zNSAyLjA5OGMuNTgzLjgxNS0uNTgxIDEuMTY3LS40MDggMi4zMzFsLjQwOCAxLjg2NHMtLjQ2NiA3LjQ1OC0uOTMyIDEyLjM1MmMtLjQ2NyA0Ljg5NSAxLjE0NSA0MC42OSAxLjE0NSA0MC42OVwiLFxuICAgIGZpbGw6IFwiIzdCQjJGOVwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTY0LjU3IDIxOC44ODFjMS4xOTcuMDk5IDQuMTk1LTIuMDk3IDcuMjI1LTUuMTI3TTk2LjAyNCAyMjIuNTM0czIuODgxLTEuMTUyIDYuMzQtNC4wMzRcIixcbiAgICBzdHJva2U6IFwiIzY0OEJEOFwiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjEuMDg1XCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNOTYuOTczIDIxOS4zNzNzMi44ODItMS4xNTMgNi4zNC00LjAzNFwiLFxuICAgIHN0cm9rZTogXCIjNjQ4QkQ4XCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4wMzJcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk02My4xNzIgMjIyLjE0NHMyLjcyNC0uNjE0IDYuNzU5LTMuNDk2TTc0LjkwMyAxNDYuMTY2Yy0uMjgxIDMuMjI2LjMxIDguODU2LTQuNTA2IDkuNDc4TTkzLjE4MiAxNDQuMzQ0cy4xMTUgMTQuNTU3LTEuMzQ0IDE1LjY1Yy0yLjMwNSAxLjczLTMuMTA3IDIuMDItMy4xMDcgMi4wMk04OS4xOTcgMTQ0LjkyM3MuMjY5IDEzLjE0NC0xLjAxIDI1LjA4OE04My41MjUgMTcwLjcxczYuODEtMS4wNTEgOS4xMTYtMS4wNTFNNDYuMDI2IDI3MC4wNDVsLS44OTIgNC41MzhNNDYuOTM3IDI2My4yODlsLS44MTUgNC4xNTdNNjIuNzI1IDIwMi41MDNjLS4zMyAxLjYxOC0uMTAyIDEuOTA0LS40NDkgMy40MzggMCAwLTIuNzU2IDEuOTAzLTIuMjkgMy45MjMuNDY2IDIuMDItLjMxIDMuNDI0LTQuNTA1IDE3LjI1Mi0xLjc2MiA1LjgwNy00LjIzMyAxOC45MjItNi4xNjUgMjguMjc4LS4wMy4xNDQtLjUyMSAyLjY0Ni0xLjE0IDUuOE02NC4xNTggMTk0LjEzNmMtLjI5NSAxLjY1OC0uNiAzLjMxLS45MTcgNC45MzhNNzEuMzMgMTQ2Ljc4N2wtMS4yNDQgMTAuODc3cy0xLjE0LjE1NS0uNTE5IDIuMzNjLjExNyAxLjM5OS0yLjc3OCAxNi4zOS01LjM4MiAzMS42MTVNNDQuMjQyIDI3My43MjdINTguMDdcIixcbiAgICBzdHJva2U6IFwiIzY0OEJEOFwiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjEuMDg1XCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTA2LjE4IDE0Mi4xMTdjLTMuMDI4LS40ODktMTguODI1LTIuNzQ0LTM2LjIxOS4yYS42MjUuNjI1IDAgMCAwLS41MTguNjQ0Yy4wNjMgMS4zMDcuMDQ0IDIuMzQzLjAxNSAyLjk5NWEuNjE3LjYxNyAwIDAgMCAuNzE2LjYzNmMzLjMwMy0uNTM0IDE3LjAzNy0yLjQxMiAzNS42NjQtLjI2Ni4zNDcuMDQuNjYtLjIxNC42OTItLjU2LjEyNC0xLjM0Ny4xNi0yLjQyNS4xNy0zLjAyOWEuNjE2LjYxNiAwIDAgMC0uNTItLjYyXCIsXG4gICAgZmlsbDogXCIjMTkyMDY0XCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNOTYuMzk4IDE0NS4yNjRsLjAwMy01LjEwMmEuODQzLjg0MyAwIDAgMC0uODA5LS44NDcgMTE0LjEwNCAxMTQuMTA0IDAgMCAwLTguMTQxLS4wMTQuODUuODUgMCAwIDAtLjgyLjg0N2wtLjAwMyA1LjA5N2MwIC40NzYuMzg4Ljg1Ny44NjQuODQ1IDIuNDc4LS4wNjQgNS4xNjYtLjA2NyA4LjAzLjAxN2EuODQ4Ljg0OCAwIDAgMCAuODc2LS44NDNcIixcbiAgICBmaWxsOiBcIiNGRkZcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk05NS4yMzkgMTQ0LjI5NmwuMDAyLTMuMTk1YS42NjcuNjY3IDAgMCAwLS42NDMtLjY3MmMtMS45LS4wNjEtMy45NDEtLjA3My02LjA5NC0uMDFhLjY3NS42NzUgMCAwIDAtLjY1NC42NzJsLS4wMDIgMy4xOTJjMCAuMzc2LjMwNS42NzcuNjguNjY5IDEuODU5LS4wNDIgMy44NzQtLjA0MyA2LjAyLjAxMi4zNzYuMDEuNjktLjI5MS42OTEtLjY2OFwiLFxuICAgIGZpbGw6IFwiIzE5MjA2NFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTkwLjEwMiAyNzMuNTIyaDEyLjgxOU05MS4yMTYgMjY5Ljc2MWMuMDA2IDMuNTE5LS4wNzIgNS41NSAwIDYuMjkyTTkwLjkyMyAyNjMuNDc0Yy0uMDA5IDEuNTk5LS4wMTYgMi41NTgtLjAxNiA0LjUwNU05MC40NCAxNzAuNDA0bC45MzIgNDYuMzhzLjcgMS42MzEtLjIzMyAyLjc5NmMtLjkzMiAxLjE2NiAyLjU2NC43LjkzMiAyLjMzLTEuNjMgMS42MzMuOTMzIDEuMTY2IDAgMy40OTctLjYxOCAxLjU0Ni0xLjAzMSAyMS45MjEtMS4xMzggMzYuNTEzXCIsXG4gICAgc3Ryb2tlOiBcIiM2NDhCRDhcIixcbiAgICBzdHJva2VXaWR0aDogXCIxLjA4NVwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTczLjczNiA5OC42NjVsMi4yMTQgNC4zMTJzMi4wOTguODE2IDEuODY1IDIuNjhsLjgxNiAyLjIxNE02NC4yOTcgMTE2LjYxMWMuMjMzLS45MzIgMi4xNzYtNy4xNDcgMTIuNTg1LTEwLjQ4OE03Ny41OTggOTAuMDQyczcuNjkxIDYuMTM3IDE2LjU0NyAyLjcyXCIsXG4gICAgc3Ryb2tlOiBcIiNFNEVCRjdcIixcbiAgICBzdHJva2VXaWR0aDogXCIxLjA4NVwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTkxLjk3NCA4Ni45NTRzNS40NzYtLjgxNiA3LjU3NC00LjU0NWMxLjI5Ny0uMzQ1LjcyIDIuMjEyLS4zMyAzLjY3MS0uNy45NzEtMS4wMSAxLjU1NC0xLjAxIDEuNTU0cy4xOTQuMzEuMTU1LjgxNmMtLjA1My42OTctLjE3NS42NTMtLjI3MiAxLjA0OC0uMDgxLjMzNS4xMDguNjU3IDAgMS4wNDktLjA0Ni4xNy0uMTk4LjUtLjM4Mi44NzgtLjEyLjI0OS0uMDcyLjY4Ny0uMi45NDgtLjIzMS40NjktMS41NjIgMS44Ny0yLjYyMiAyLjg1NS0zLjgyNiAzLjU1NC01LjAxOCAxLjY0NC02LjAwMS0uNDA4LS44OTQtMS44NjUtLjY2MS01LjEyNy0uODc0LTYuODc1LS4zNS0yLjkxNC0yLjYyMi0zLjAzLTEuOTIzLTQuNDI5LjM0My0uNjg1IDIuODcuNjkgMy4yNjMgMS43NDguNzU3IDIuMDQgMi45NTIgMS44MDcgMi42MjIgMS42OVwiLFxuICAgIGZpbGw6IFwiI0ZGQzZBMFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTk5LjggODIuNDI5Yy0uNDY1LjA3Ny0uMzUuMjcyLS45NyAxLjI0My0uNjIyLjk3MS00LjgxNyAyLjkzMi02LjM5IDMuMjI0LTIuNTg5LjQ4LTIuMjc4LTEuNTYtNC4yNTQtMi44NTUtMS42OS0xLjEwNy0zLjU2Mi0uNjM4LTEuMzk4IDEuMzk4Ljk5LjkzMi45MzIgMS4xMDcgMS4zOTggMy4yMDUuMzM1IDEuNTA2LS42NCAzLjY3LjcgNS41OTNcIixcbiAgICBzdHJva2U6IFwiI0RCODM2RVwiLFxuICAgIHN0cm9rZVdpZHRoOiBcIi43NzRcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk03OS41NDMgMTA4LjY3M2MtMi4xIDIuOTI2LTQuMjY2IDYuMTc1LTUuNTU3IDguNzYyXCIsXG4gICAgc3Ryb2tlOiBcIiNFNTk3ODhcIixcbiAgICBzdHJva2VXaWR0aDogXCIuNzc0XCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNODcuNzIgMTI0Ljc2OHMtMi4wOTgtMS45NDItNS4xMjctMi43MTljLTMuMDMtLjc3Ny0zLjU3NC0uMTU1LTUuNTE2LjA3OC0xLjk0Mi4yMzMtMy44ODUtLjkzMi0zLjY1Mi43LjIzMyAxLjYzIDUuMDUgMS4wMSA1LjIwNiAyLjA5Ny4xNTUgMS4wODctNi4zNyAyLjc5Ni04LjMxMyAyLjE3NS0uNzc3Ljc3Ny40NjYgMS44NjQgMi4wMiAyLjE3NS4yMzMgMS41NTQgMi4yNTMgMS41NTQgMi4yNTMgMS41NTRzLjY5OSAxLjAxIDIuNjQxIDEuMDg4YzIuNDg2IDEuMzIgOC45MzQtLjcgMTAuOTU0LTEuNTU0IDIuMDItLjg1NS0uNDY2LTUuNTk0LS40NjYtNS41OTRcIixcbiAgICBmaWxsOiBcIiNGRkM2QTBcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk03My40MjUgMTIyLjgyNnMuNjYgMS4xMjcgMy4xNjcgMS40MThjMi4zMTUuMjcgMi41NjMuNTgzIDIuNTYzLjU4M3MtMi41NDUgMi44OTQtOS4wNyAyLjI3Mk03Mi40MTYgMTI5LjI3NHMzLjgyNi4wOTcgNC45MzMtLjcxOE03NC45OCAxMzAuNzVzMS45NjEuMTM2IDMuMzYtLjUwNU03Ny4yMzIgMTMxLjkxNnMxLjc0OC4wMTkgMi45MTQtLjUwNU03My4zMjggMTIyLjMyMXMtLjU5NS0xLjAzMiAxLjI2Mi0uNDI3YzEuNjcxLjU0NCAyLjgzMy4wNTUgNS4xMjguMTU1IDEuMzg5LjA2MSAzLjA2Ny0uMjk3IDMuOTgyLjE1IDEuNjA2Ljc4NCAzLjYzMiAyLjE4MSAzLjYzMiAyLjE4MXMxMC41MjYgMS4yMDQgMTkuMDMzLTEuMTI3TTc4Ljg2NCAxMDguMTA0cy04LjM5IDIuNzU4LTEzLjE2OCAxMi4xMlwiLFxuICAgIHN0cm9rZTogXCIjRTU5Nzg4XCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiLjc3NFwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwOS4yNzggMTEyLjUzM3MzLjM4LTMuNjEzIDcuNTc1LTQuNjYyXCIsXG4gICAgc3Ryb2tlOiBcIiNFNEVCRjdcIixcbiAgICBzdHJva2VXaWR0aDogXCIxLjA4NVwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwNy4zNzUgMTIzLjAwNnM5LjY5Ny0yLjc0NSAxMS40NDUtLjg4XCIsXG4gICAgc3Ryb2tlOiBcIiNFNTk3ODhcIixcbiAgICBzdHJva2VXaWR0aDogXCIuNzc0XCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTk0LjYwNSA4My42NTZsMy45NzEtMy44ODZNMTg3LjE2NiA5MC45MzNsMy43MzYtMy42NTVNMTkxLjc1MiA4NC4yMDdsLTQuNDYyLTQuNTZNMTk4LjQ1MyA5MS4wNTdsLTQuMTMzLTQuMjI1TTEyOS4yNTYgMTYzLjA3NGwzLjcxOC0zLjcxOE0xMjIuMjkxIDE3MC4wMzlsMy40OTgtMy40OThNMTI2LjU2MSAxNjMuNjI2bC00LjI3LTQuMjdNMTMyLjk3NSAxNzAuMDM5bC0zLjk1NS0zLjk1NVwiLFxuICAgIHN0cm9rZTogXCIjQkZDREREXCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMlwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE5MC4xNTYgMjExLjc3OWgtMS42MDRhNC4wMjMgNC4wMjMgMCAwIDEtNC4wMTEtNC4wMTFWMTc1LjY4YTQuMDIzIDQuMDIzIDAgMCAxIDQuMDEtNC4wMWgxLjYwNWE0LjAyMyA0LjAyMyAwIDAgMSA0LjAxMSA0LjAxdjMyLjA4OGE0LjAyMyA0LjAyMyAwIDAgMS00LjAxIDQuMDFcIixcbiAgICBmaWxsOiBcIiNBM0I0QzZcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0yMzcuODI0IDIxMi45NzdhNC44MTMgNC44MTMgMCAwIDEtNC44MTMgNC44MTNoLTg2LjYzNmE0LjgxMyA0LjgxMyAwIDAgMSAwLTkuNjI2aDg2LjYzNmE0LjgxMyA0LjgxMyAwIDAgMSA0LjgxMyA0LjgxM1wiLFxuICAgIGZpbGw6IFwiI0EzQjRDNlwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcIm1hc2tcIiwge1xuICAgIGZpbGw6IFwiI2ZmZlwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGZpbGw6IFwiI0EzQjRDNlwiLFxuICAgIG1hc2s6IFwidXJsKCNkKVwiLFxuICAgIGQ6IFwiTTE1NC4wOTggMTkwLjA5Nmg3MC41MTN2LTg0LjYxN2gtNzAuNTEzelwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTIyNC45MjggMTkwLjA5NkgxNTMuNzhhMy4yMTkgMy4yMTkgMCAwIDEtMy4yMDgtMy4yMDlWMTY3LjkyYTMuMjE5IDMuMjE5IDAgMCAxIDMuMjA4LTMuMjFoNzEuMTQ4YTMuMjE5IDMuMjE5IDAgMCAxIDMuMjA5IDMuMjF2MTguOTY3YTMuMjE5IDMuMjE5IDAgMCAxLTMuMjEgMy4yMDlNMjI0LjkyOCAxMzAuODMySDE1My43OGEzLjIxOCAzLjIxOCAwIDAgMS0zLjIwOC0zLjIwOHYtMTguOTY4YTMuMjE5IDMuMjE5IDAgMCAxIDMuMjA4LTMuMjA5aDcxLjE0OGEzLjIxOSAzLjIxOSAwIDAgMSAzLjIwOSAzLjIxdjE4Ljk2N2EzLjIxOCAzLjIxOCAwIDAgMS0zLjIxIDMuMjA4XCIsXG4gICAgZmlsbDogXCIjQkZDREREXCIsXG4gICAgbWFzazogXCJ1cmwoI2QpXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTU5LjU2MyAxMjAuNTQ2YTIuNDA3IDIuNDA3IDAgMSAxIDAtNC44MTMgMi40MDcgMi40MDcgMCAwIDEgMCA0LjgxM00xNjYuOTggMTIwLjU0NmEyLjQwNyAyLjQwNyAwIDEgMSAwLTQuODEzIDIuNDA3IDIuNDA3IDAgMCAxIDAgNC44MTNNMTc0LjM5NyAxMjAuNTQ2YTIuNDA3IDIuNDA3IDAgMSAxIDAtNC44MTMgMi40MDcgMi40MDcgMCAwIDEgMCA0LjgxM00yMjIuNTM5IDEyMC41NDZoLTIyLjQ2MWEuODAyLjgwMiAwIDAgMS0uODAyLS44MDJ2LTMuMjA4YzAtLjQ0My4zNTktLjgwMy44MDItLjgwM2gyMi40NmMuNDQ0IDAgLjgwMy4zNi44MDMuODAzdjMuMjA4YzAgLjQ0My0uMzYuODAyLS44MDIuODAyXCIsXG4gICAgZmlsbDogXCIjRkZGXCIsXG4gICAgbWFzazogXCJ1cmwoI2QpXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMjI0LjkyOCAxNjAuNDY0SDE1My43OGEzLjIxOCAzLjIxOCAwIDAgMS0zLjIwOC0zLjIwOXYtMTguOTY3YTMuMjE5IDMuMjE5IDAgMCAxIDMuMjA4LTMuMjA5aDcxLjE0OGEzLjIxOSAzLjIxOSAwIDAgMSAzLjIwOSAzLjIwOXYxOC45NjdhMy4yMTggMy4yMTggMCAwIDEtMy4yMSAzLjIwOVwiLFxuICAgIGZpbGw6IFwiI0JGQ0RERFwiLFxuICAgIG1hc2s6IFwidXJsKCNkKVwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE3My40NTUgMTMwLjgzMmg0OS4zMDFNMTY0Ljk4NCAxMzAuODMyaDYuMDg5TTE1NS45NTIgMTMwLjgzMmg2Ljc1TTE3My44MzcgMTYwLjYxM2g0OS4zTTE2NS4zNjUgMTYwLjYxM2g2LjA4OU0xNTUuNTcgMTYwLjYxM2g2Ljc1MVwiLFxuICAgIHN0cm9rZTogXCIjN0M5MEE1XCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4xMjRcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIixcbiAgICBtYXNrOiBcInVybCgjZClcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xNTkuNTYzIDE1MS4wMzhhMi40MDcgMi40MDcgMCAxIDEgMC00LjgxNCAyLjQwNyAyLjQwNyAwIDAgMSAwIDQuODE0TTE2Ni45OCAxNTEuMDM4YTIuNDA3IDIuNDA3IDAgMSAxIDAtNC44MTQgMi40MDcgMi40MDcgMCAwIDEgMCA0LjgxNE0xNzQuMzk3IDE1MS4wMzhhMi40MDcgMi40MDcgMCAxIDEgLjAwMS00LjgxNCAyLjQwNyAyLjQwNyAwIDAgMSAwIDQuODE0TTIyMi41MzkgMTUxLjAzOGgtMjIuNDYxYS44MDIuODAyIDAgMCAxLS44MDItLjgwMnYtMy4yMDljMC0uNDQzLjM1OS0uODAyLjgwMi0uODAyaDIyLjQ2Yy40NDQgMCAuODAzLjM2LjgwMy44MDJ2My4yMDljMCAuNDQzLS4zNi44MDItLjgwMi44MDJNMTU5LjU2MyAxNzkuOTg3YTIuNDA3IDIuNDA3IDAgMSAxIDAtNC44MTMgMi40MDcgMi40MDcgMCAwIDEgMCA0LjgxM00xNjYuOTggMTc5Ljk4N2EyLjQwNyAyLjQwNyAwIDEgMSAwLTQuODEzIDIuNDA3IDIuNDA3IDAgMCAxIDAgNC44MTNNMTc0LjM5NyAxNzkuOTg3YTIuNDA3IDIuNDA3IDAgMSAxIDAtNC44MTMgMi40MDcgMi40MDcgMCAwIDEgMCA0LjgxM00yMjIuNTM5IDE3OS45ODdoLTIyLjQ2MWEuODAyLjgwMiAwIDAgMS0uODAyLS44MDJ2LTMuMjA5YzAtLjQ0My4zNTktLjgwMi44MDItLjgwMmgyMi40NmMuNDQ0IDAgLjgwMy4zNi44MDMuODAydjMuMjA5YzAgLjQ0My0uMzYuODAyLS44MDIuODAyXCIsXG4gICAgZmlsbDogXCIjRkZGXCIsXG4gICAgbWFzazogXCJ1cmwoI2QpXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMjAzLjA0IDIyMS4xMDhoLTI3LjM3MmEyLjQxMyAyLjQxMyAwIDAgMS0yLjQwNi0yLjQwN3YtMTEuNDQ4YTIuNDE0IDIuNDE0IDAgMCAxIDIuNDA2LTIuNDA3aDI3LjM3MmEyLjQxNCAyLjQxNCAwIDAgMSAyLjQwNyAyLjQwN1YyMTguN2EyLjQxMyAyLjQxMyAwIDAgMS0yLjQwNyAyLjQwN1wiLFxuICAgIGZpbGw6IFwiI0JGQ0RERFwiLFxuICAgIG1hc2s6IFwidXJsKCNkKVwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE3Ny4yNTkgMjA3LjIxN3YxMS41Mk0yMDEuMDUgMjA3LjIxN3YxMS41MlwiLFxuICAgIHN0cm9rZTogXCIjQTNCNEM2XCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4xMjRcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIixcbiAgICBtYXNrOiBcInVybCgjZClcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xNjIuODczIDI2Ny44OTRhOS40MjIgOS40MjIgMCAwIDEtOS40MjItOS40MjJ2LTE0LjgyYTkuNDIzIDkuNDIzIDAgMCAxIDE4Ljg0NSAwdjE0LjgyYTkuNDIzIDkuNDIzIDAgMCAxLTkuNDIzIDkuNDIyXCIsXG4gICAgZmlsbDogXCIjNUJBMDJFXCIsXG4gICAgbWFzazogXCJ1cmwoI2QpXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTcxLjIyIDI2Ny44M2E5LjQyMiA5LjQyMiAwIDAgMS05LjQyMi05LjQyM3YtMy40MzhhOS40MjMgOS40MjMgMCAwIDEgMTguODQ1IDB2My40MzhhOS40MjMgOS40MjMgMCAwIDEtOS40MjIgOS40MjNcIixcbiAgICBmaWxsOiBcIiM5MkMxMTBcIixcbiAgICBtYXNrOiBcInVybCgjZClcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xODEuMzEgMjkzLjY2NmgtMjcuNzEyYTMuMjA5IDMuMjA5IDAgMCAxLTMuMjA5LTMuMjFWMjY5Ljc5YTMuMjA5IDMuMjA5IDAgMCAxIDMuMjA5LTMuMjFoMjcuNzExYTMuMjA5IDMuMjA5IDAgMCAxIDMuMjA5IDMuMjF2MjAuNjY4YTMuMjA5IDMuMjA5IDAgMCAxLTMuMjA5IDMuMjA5XCIsXG4gICAgZmlsbDogXCIjRjJEN0FEXCIsXG4gICAgbWFzazogXCJ1cmwoI2QpXCJcbiAgfSkpKTtcbn07XG5cbnZhciBfZGVmYXVsdCA9IFNlcnZlckVycm9yO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBVbmF1dGhvcml6ZWQgPSBmdW5jdGlvbiBVbmF1dGhvcml6ZWQoKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7XG4gICAgd2lkdGg6IFwiMjUxXCIsXG4gICAgaGVpZ2h0OiBcIjI5NFwiXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCB7XG4gICAgZmlsbDogXCJub25lXCIsXG4gICAgZmlsbFJ1bGU6IFwiZXZlbm9kZFwiXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMCAxMjkuMDIzdi0yLjA4NEMwIDU4LjM2NCA1NS41OTEgMi43NzQgMTI0LjE2NSAyLjc3NGgyLjA4NWM2OC41NzQgMCAxMjQuMTY1IDU1LjU5IDEyNC4xNjUgMTI0LjE2NXYyLjA4NGMwIDY4LjU3NS01NS41OSAxMjQuMTY2LTEyNC4xNjUgMTI0LjE2NmgtMi4wODVDNTUuNTkxIDI1My4xODkgMCAxOTcuNTk4IDAgMTI5LjAyM1wiLFxuICAgIGZpbGw6IFwiI0U0RUJGN1wiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTQxLjQxNyAxMzIuOTJhOC4yMzEgOC4yMzEgMCAxIDEtMTYuMzgtMS42NSA4LjIzMSA4LjIzMSAwIDAgMSAxNi4zOCAxLjY1XCIsXG4gICAgZmlsbDogXCIjRkZGXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMzguNjUyIDEzNi4zNmwxMC40MjUgNS45MU00OS45ODkgMTQ4LjUwNWwtMTIuNTggMTAuNzNcIixcbiAgICBzdHJva2U6IFwiI0ZGRlwiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjJcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk00MS41MzYgMTYxLjI4YTUuNjM2IDUuNjM2IDAgMSAxLTExLjIxNi0xLjEzIDUuNjM2IDUuNjM2IDAgMCAxIDExLjIxNiAxLjEzTTU5LjE1NCAxNDUuMjYxYTUuNjc3IDUuNjc3IDAgMSAxLTExLjI5Ny0xLjEzOCA1LjY3NyA1LjY3NyAwIDAgMSAxMS4yOTcgMS4xMzhNMTAwLjM2IDI5LjUxNmwyOS42Ni0uMDEzYTQuNTYyIDQuNTYyIDAgMSAwLS4wMDQtOS4xMjZsLTI5LjY2LjAxM2E0LjU2MyA0LjU2MyAwIDAgMCAuMDA1IDkuMTI2TTExMS43MDUgNDcuNzU0bDI5LjY1OS0uMDEzYTQuNTYzIDQuNTYzIDAgMSAwLS4wMDQtOS4xMjZsLTI5LjY2LjAxM2E0LjU2MyA0LjU2MyAwIDEgMCAuMDA1IDkuMTI2XCIsXG4gICAgZmlsbDogXCIjRkZGXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTE0LjA2NiAyOS41MDNWMjkuNWwxNS42OTgtLjAwN2E0LjU2MyA0LjU2MyAwIDEgMCAuMDA0IDkuMTI2bC0xNS42OTguMDA3di0uMDAyYTQuNTYyIDQuNTYyIDAgMCAwLS4wMDQtOS4xMjJNMTg1LjQwNSAxMzcuNzIzYy0uNTUgNS40NTUtNS40MTggOS40MzItMTAuODczIDguODgyLTUuNDU2LS41NS05LjQzMi01LjQxOC04Ljg4Mi0xMC44NzMuNTUtNS40NTUgNS40MTgtOS40MzIgMTAuODczLTguODgyIDUuNDU1LjU1IDkuNDMyIDUuNDE4IDguODgyIDEwLjg3M1wiLFxuICAgIGZpbGw6IFwiI0ZGRlwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE4MC4xNyAxNDMuNzcybDEyLjU3MiA3LjEyOU0xOTMuODQxIDE1OC40MkwxNzguNjcgMTcxLjM2XCIsXG4gICAgc3Ryb2tlOiBcIiNGRkZcIixcbiAgICBzdHJva2VXaWR0aDogXCIyXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTg1LjU1IDE3MS45MjZhNi43OTggNi43OTggMCAxIDEtMTMuNTI4LTEuMzYzIDYuNzk4IDYuNzk4IDAgMCAxIDEzLjUyNyAxLjM2M00yMDQuMTIgMTU1LjI4NWE2Ljg0OCA2Ljg0OCAwIDEgMS0xMy42MjctMS4zNzUgNi44NDggNi44NDggMCAwIDEgMTMuNjI2IDEuMzc1XCIsXG4gICAgZmlsbDogXCIjRkZGXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTUyLjk4OCAxOTQuMDc0YTIuMjEgMi4yMSAwIDEgMS00LjQyIDAgMi4yMSAyLjIxIDAgMCAxIDQuNDIgMHpNMjI1LjkzMSAxMTguMjE3YTIuMjEgMi4yMSAwIDEgMS00LjQyMSAwIDIuMjEgMi4yMSAwIDAgMSA0LjQyMSAwek0yMTcuMDkgMTUzLjA1MWEyLjIxIDIuMjEgMCAxIDEtNC40MjEgMCAyLjIxIDIuMjEgMCAwIDEgNC40MiAwek0xNzcuODQgMTA5Ljg0MmEyLjIxIDIuMjEgMCAxIDEtNC40MjIgMCAyLjIxIDIuMjEgMCAwIDEgNC40MjEgMHpNMTk2LjExNCA5NC40NTRhMi4yMSAyLjIxIDAgMSAxLTQuNDIxIDAgMi4yMSAyLjIxIDAgMCAxIDQuNDIxIDB6TTIwMi44NDQgMTgyLjUyM2EyLjIxIDIuMjEgMCAxIDEtNC40MiAwIDIuMjEgMi4yMSAwIDAgMSA0LjQyIDB6XCIsXG4gICAgc3Ryb2tlOiBcIiNGRkZcIixcbiAgICBzdHJva2VXaWR0aDogXCIyXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgc3Ryb2tlOiBcIiNGRkZcIixcbiAgICBzdHJva2VXaWR0aDogXCIyXCIsXG4gICAgZDogXCJNMjE1LjEyNSAxNTUuMjYybC0xLjkwMiAyMC4wNzUtMTAuODcgNS45NThNMTc0LjYwMSAxNzYuNjM2bC02LjMyMiA5Ljc2MUgxNTYuOThsLTQuNDg0IDYuNDQ5TTE3NS44NzQgMTI3LjI4VjExMS41Nk0yMjEuNTEgMTE5LjQwNGwtMTIuNzcgNy44NTktMTUuMjI4LTcuODZWOTYuNjY4XCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTgwLjY4IDI5LjMyQzE4MC42OCAxMy4xMjggMTkzLjgwNiAwIDIxMCAwYzE2LjE5MyAwIDI5LjMyIDEzLjEyNyAyOS4zMiAyOS4zMiAwIDE2LjE5NC0xMy4xMjcgMjkuMzIyLTI5LjMyIDI5LjMyMi0xNi4xOTMgMC0yOS4zMi0xMy4xMjgtMjkuMzItMjkuMzIxXCIsXG4gICAgZmlsbDogXCIjQTI2RUY0XCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMjIxLjQ1IDQxLjcwNmwtMjEuNTYzLS4xMjVhMS43NDQgMS43NDQgMCAwIDEtMS43MzQtMS43NTRsLjA3MS0xMi4yM2ExLjc0NCAxLjc0NCAwIDAgMSAxLjc1NC0xLjczNGwyMS41NjIuMTI1Yy45NjQuMDA2IDEuNzQuNzkxIDEuNzM1IDEuNzU1bC0uMDcxIDEyLjIyOWExLjc0NCAxLjc0NCAwIDAgMS0xLjc1NCAxLjczNFwiLFxuICAgIGZpbGw6IFwiI0ZGRlwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTIxNS4xMDYgMjkuMTkyYy0uMDE1IDIuNTc3LTIuMDQ5IDQuNjU0LTQuNTQzIDQuNjQtMi40OTQtLjAxNC00LjUwNC0yLjExNS00LjQ4OS00LjY5M2wuMDQtNi45MjVjLjAxNi0yLjU3NyAyLjA1LTQuNjU0IDQuNTQzLTQuNjQgMi40OTQuMDE1IDQuNTA0IDIuMTE2IDQuNDkgNC42OTNsLS4wNCA2LjkyNXptLTQuNTMtMTQuMDc0YTYuODc3IDYuODc3IDAgMCAwLTYuOTE2IDYuODM3bC0uMDQzIDcuMzY4YTYuODc3IDYuODc3IDAgMCAwIDEzLjc1NC4wOGwuMDQyLTcuMzY4YTYuODc4IDYuODc4IDAgMCAwLTYuODM3LTYuOTE3ek0xNjcuNTY2IDY4LjM2N2gtMy45M2E0LjczIDQuNzMgMCAwIDEtNC43MTctNC43MTcgNC43MyA0LjczIDAgMCAxIDQuNzE3LTQuNzE3aDMuOTNhNC43MyA0LjczIDAgMCAxIDQuNzE3IDQuNzE3IDQuNzMgNC43MyAwIDAgMS00LjcxNyA0LjcxN1wiLFxuICAgIGZpbGw6IFwiI0ZGRlwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE2OC4yMTQgMjQ4LjgzOGE2LjYxMSA2LjYxMSAwIDAgMS02LjYxLTYuNjExdi02Ni4xMDhhNi42MTEgNi42MTEgMCAwIDEgMTMuMjIxIDB2NjYuMTA4YTYuNjExIDYuNjExIDAgMCAxLTYuNjEgNi42MVwiLFxuICAgIGZpbGw6IFwiIzVCQTAyRVwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE3Ni4xNDcgMjQ4LjE3NmE2LjYxMSA2LjYxMSAwIDAgMS02LjYxLTYuNjF2LTMzLjA1NGE2LjYxMSA2LjYxMSAwIDEgMSAxMy4yMjEgMHYzMy4wNTNhNi42MTEgNi42MTEgMCAwIDEtNi42MSA2LjYxMVwiLFxuICAgIGZpbGw6IFwiIzkyQzExMFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE4NS45OTQgMjkzLjg5aC0yNy4zNzZhMy4xNyAzLjE3IDAgMCAxLTMuMTctMy4xN3YtNDUuODg3YTMuMTcgMy4xNyAwIDAgMSAzLjE3LTMuMTdoMjcuMzc2YTMuMTcgMy4xNyAwIDAgMSAzLjE3IDMuMTd2NDUuODg2YTMuMTcgMy4xNyAwIDAgMS0zLjE3IDMuMTdcIixcbiAgICBmaWxsOiBcIiNGMkQ3QURcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk04MS45NzIgMTQ3LjY3M3M2LjM3Ny0uOTI3IDE3LjU2Ni0xLjI4YzExLjcyOS0uMzcxIDE3LjU3IDEuMDg2IDE3LjU3IDEuMDg2czMuNjk3LTMuODU1Ljk2OC04LjQyNGMxLjI3OC0xMi4wNzcgNS45ODItMzIuODI3LjMzNS00OC4yNzMtMS4xMTYtMS4zMzktMy43NDMtMS41MTItNy41MzYtLjYyLTEuMzM3LjMxNS03LjE0Ny0uMTQ5LTcuOTgzLS4xbC0xNS4zMTEtLjM0N3MtMy40ODctLjE3LTguMDM1LS41MDhjLTEuNTEyLS4xMTMtNC4yMjctMS42ODMtNS40NTgtLjMzOC0uNDA2LjQ0My0yLjQyNSA1LjY2OS0xLjk3IDE2LjA3N2w4LjYzNSAzNS42NDJzLTMuMTQxIDMuNjEgMS4yMTkgNy4wODVcIixcbiAgICBmaWxsOiBcIiNGRkZcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk03NS43NjggNzMuMzI1bC0uOS02LjM5NyAxMS45ODItNi41MnM3LjMwMi0uMTE4IDguMDM4IDEuMjA1Yy43MzcgMS4zMjQtNS42MTYuOTkzLTUuNjE2Ljk5M3MtMS44MzYgMS4zODgtMi42MTUgMi41Yy0xLjY1NCAyLjM2My0uOTg2IDYuNDcxLTguMzE4IDUuOTg2LTEuNzA4LjI4NC0yLjU3IDIuMjMzLTIuNTcgMi4yMzNcIixcbiAgICBmaWxsOiBcIiNGRkM2QTBcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk01Mi40NCA3Ny42NzJzMTQuMjE3IDkuNDA2IDI0Ljk3MyAxNC40NDRjMS4wNjEuNDk3LTIuMDk0IDE2LjE4My0xMS44OTIgMTEuODExLTcuNDM2LTMuMzE4LTIwLjE2Mi04LjQ0LTIxLjQ4Mi0xNC40OTYtLjcxLTMuMjU4IDIuNTQzLTcuNjQzIDguNDAxLTExLjc2TTE0MS44NjIgODAuMTEzcy02LjY5MyAyLjk5OS0xMy44NDQgNi44NzZjLTMuODk0IDIuMTEtMTAuMTM3IDQuNzA0LTEyLjMzIDcuOTg4LTYuMjI0IDkuMzE0IDMuNTM2IDExLjIyIDEyLjk0NyA3LjUwMyA2LjcxLTIuNjUxIDI4Ljk5OS0xMi4xMjcgMTMuMjI3LTIyLjM2N1wiLFxuICAgIGZpbGw6IFwiI0ZGQjU5NFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTc2LjE2NiA2Ni4zNmwzLjA2IDMuODgxcy0yLjc4MyAyLjY3LTYuMzEgNS43NDdjLTcuMTAzIDYuMTk1LTEyLjgwMyAxNC4yOTYtMTUuOTk1IDE2LjQ0LTMuOTY2IDIuNjYyLTkuNzU0IDMuMzE0LTEyLjE3Ny0uMTE4LTMuNTUzLTUuMDMyLjQ2NC0xNC42MjggMzEuNDIyLTI1Ljk1XCIsXG4gICAgZmlsbDogXCIjRkZDNkEwXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNNjQuNjc0IDg1LjExNnMtMi4zNCA4LjQxMy04LjkxMiAxNC40NDdjLjY1Mi41NDggMTguNTg2IDEwLjUxIDIyLjE0NCAxMC4wNTYgNS4yMzgtLjY2OSA2LjQxNy0xOC45NjggMS4xNDUtMjAuNTMxLS43MDItLjIwOC01LjkwMS0xLjI4Ni04Ljg1My0yLjE2Ny0uODctLjI2LTEuNjExLTEuNzEtMy41NDUtLjkzNmwtMS45OC0uODY5ek0xMjguMzYyIDg1LjgyNnM1LjMxOCAxLjk1NiA3LjMyNSAxMy43MzRjLS41NDYuMjc0LTE3LjU1IDEyLjM1LTIxLjgyOSA3LjgwNS02LjUzNC02Ljk0LS43NjYtMTcuMzkzIDQuMjc1LTE4LjYxIDQuNjQ2LTEuMTIxIDUuMDMtMS4zNyAxMC4yMy0yLjkyOVwiLFxuICAgIGZpbGw6IFwiI0ZGRlwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTc4LjE4IDk0LjY1NnMuOTExIDcuNDEtNC45MTQgMTMuMDc4XCIsXG4gICAgc3Ryb2tlOiBcIiNFNEVCRjdcIixcbiAgICBzdHJva2VXaWR0aDogXCIxLjA1MVwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTg3LjM5NyA5NC42OHMzLjEyNCAyLjU3MiAxMC4yNjMgMi41NzJjNy4xNCAwIDkuMDc0LTMuNDM3IDkuMDc0LTMuNDM3XCIsXG4gICAgc3Ryb2tlOiBcIiNFNEVCRjdcIixcbiAgICBzdHJva2VXaWR0aDogXCIuOTMyXCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTE3LjE4NCA2OC42MzlsLTYuNzgxLTYuMTc3cy01LjM1NS00LjMxNC05LjIyMy0uODkzYy0zLjg2NyAzLjQyMiA0LjQ2MyAyLjA4MyA1LjY1MyA0LjE2NSAxLjE5IDIuMDgyLjg0OCAxLjE0My0yLjA4My40NDYtNS42MDMtMS4zMzEtMi4wODIuODkzIDIuOTc1IDUuMzU1IDIuMDkxIDEuODQ1IDYuOTkyLjk1NSA2Ljk5Mi45NTVsMi40NjctMy44NTF6XCIsXG4gICAgZmlsbDogXCIjRkZDNkEwXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTA1LjI4MiA5MS4zMTVsLS4yOTctMTAuOTM3LTE1LjkxOC0uMDI3LS41MyAxMC40NWMtLjAyNi40MDMuMTcuNzg4LjUxNS45OTkgMi4wNDkgMS4yNTEgOS4zODcgNS4wOTMgMTUuNzk5LjQyNC4yODctLjIxLjQ0My0uNTU0LjQzMS0uOTFcIixcbiAgICBmaWxsOiBcIiNGRkI1OTRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xMDcuNTczIDc0LjI0Yy44MTctMS4xNDcuOTgyLTkuMTE4IDEuMDE1LTExLjkyOGExLjA0NiAxLjA0NiAwIDAgMC0uOTY1LTEuMDU1bC00LjYyLS4zNjVjLTcuNzEtMS4wNDQtMTcuMDcxLjYyNC0xOC4yNTMgNi4zNDYtNS40ODIgNS44MTMtLjQyMSAxMy4yNDQtLjQyMSAxMy4yNDRzMS45NjMgMy41NjYgNC4zMDUgNi43OTFjLjc1NiAxLjA0MS4zOTgtMy43MzEgMy4wNC01LjkyOSA1LjUyNC00LjU5NCAxNS44OTktNy4xMDMgMTUuODk5LTcuMTAzXCIsXG4gICAgZmlsbDogXCIjNUMyNTUyXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNODguNDI2IDgzLjIwNnMyLjY4NSA2LjIwMiAxMS42MDIgNi41MjJjNy44Mi4yOCA4Ljk3My03LjAwOCA3LjQzNC0xNy41MDVsLS45MDktNS40ODNjLTYuMTE4LTIuODk3LTE1LjQ3OC41NC0xNS40NzguNTRzLS41NzYgMi4wNDQtLjE5IDUuNTA0Yy0yLjI3NiAyLjA2Ni0xLjgyNCA1LjYxOC0xLjgyNCA1LjYxOHMtLjkwNS0xLjkyMi0xLjk4LTIuMzIxYy0uODYtLjMyLTEuODk3LjA4OS0yLjMyMiAxLjk4LTEuMDQgNC42MzIgMy42NjcgNS4xNDUgMy42NjcgNS4xNDVcIixcbiAgICBmaWxsOiBcIiNGRkM2QTBcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBzdHJva2U6IFwiI0RCODM2RVwiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjEuMTQ1XCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCIsXG4gICAgZDogXCJNMTAwLjg0MyA3Ny4wOTlsMS43MDEtLjkyOC0xLjAxNS00LjMyNC42NzQtMS40MDZcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xMDUuNTQ2IDc0LjA5MmMtLjAyMi43MTMtLjQ1MiAxLjI3OS0uOTYgMS4yNjMtLjUxLS4wMTYtLjkwNC0uNjA3LS44ODItMS4zMi4wMjEtLjcxMy40NTItMS4yNzguOTYtMS4yNjMuNTEuMDE2LjkwNC42MDcuODgyIDEuMzJNOTcuNTkyIDc0LjM0OWMtLjAyMi43MTMtLjQ1MiAxLjI3OC0uOTYxIDEuMjYzLS41MDktLjAxNi0uOTA0LS42MDctLjg4Mi0xLjMyLjAyMi0uNzEzLjQ1Mi0xLjI3OS45NjEtMS4yNjMuNTEuMDE2LjkwNC42MDYuODgyIDEuMzJcIixcbiAgICBmaWxsOiBcIiM1NTI5NTBcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk05MS4xMzIgODYuNzg2czUuMjY5IDQuOTU3IDEyLjY3OSAyLjMyN1wiLFxuICAgIHN0cm9rZTogXCIjREI4MzZFXCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4xNDVcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk05OS43NzYgODEuOTAzcy0zLjU5Mi4yMzItMS40NC0yLjc5YzEuNTktMS40OTYgNC44OTctLjQ2IDQuODk3LS40NnMxLjE1NiAzLjkwNi0zLjQ1NyAzLjI1XCIsXG4gICAgZmlsbDogXCIjREI4MzZFXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTAyLjg4IDcwLjZzMi40ODMuODQgMy40MDIuNzE1TTkzLjg4MyA3MS45NzVzMi40OTItMS4xNDQgNC43NzgtMS4wNzNcIixcbiAgICBzdHJva2U6IFwiIzVDMjU1MlwiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjEuNTI2XCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNODYuMzIgNzcuMzc0cy45NjEuODc5IDEuNDU4IDIuMTA2Yy0uMzc3LjQ4LTEuMDMzIDEuMTUyLS4yMzYgMS44MDlNOTkuMzM3IDgzLjcxOXMxLjkxMS4xNTEgMi41MDktLjI1NFwiLFxuICAgIHN0cm9rZTogXCIjREI4MzZFXCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4xNDVcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk04Ny43ODIgMTE1LjgyMWwxNS43My0zLjAxMk0xMDAuMTY1IDExNS44MjFsMTAuMDQtMi4wMDhcIixcbiAgICBzdHJva2U6IFwiI0U0RUJGN1wiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjEuMDUxXCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNNjYuNTA4IDg2Ljc2M3MtMS41OTggOC44My02LjY5NyAxNC4wNzhcIixcbiAgICBzdHJva2U6IFwiI0U0RUJGN1wiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjEuMTE0XCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTI4LjMxIDg3LjkzNHMzLjAxMyA0LjEyMSA0LjA2IDExLjc4NVwiLFxuICAgIHN0cm9rZTogXCIjRTRFQkY3XCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4wNTFcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk02NC4wOSA4NC44MTZzLTYuMDMgOS45MTItMTMuNjA3IDkuOTAzXCIsXG4gICAgc3Ryb2tlOiBcIiNEQjgzNkVcIixcbiAgICBzdHJva2VXaWR0aDogXCIuNzk1XCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTEyLjM2NiA2NS45MDlsLS4xNDIgNS4zMnM1Ljk5MyA0LjQ3MiAxMS45NDUgOS4yMDJjNC40ODIgMy41NjIgOC44ODggNy40NTUgMTAuOTg1IDguNjYyIDQuODA0IDIuNzY2IDguOSAzLjM1NSAxMS4wNzYgMS44MDggNC4wNzEtMi44OTQgNC4zNzMtOS44NzgtOC4xMzYtMTUuMjYzLTQuMjcxLTEuODM4LTE2LjE0NC02LjM2LTI1LjcyOC05LjczXCIsXG4gICAgZmlsbDogXCIjRkZDNkEwXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTMwLjUzMiA4NS40ODhzNC41ODggNS43NTcgMTEuNjE5IDYuMjE0XCIsXG4gICAgc3Ryb2tlOiBcIiNEQjgzNkVcIixcbiAgICBzdHJva2VXaWR0aDogXCIuNzVcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xMjEuNzA4IDEwNS43M3MtLjM5MyA4LjU2NC0xLjM0IDEzLjYxMlwiLFxuICAgIHN0cm9rZTogXCIjRTRFQkY3XCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4wNTFcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xMTUuNzg0IDE2MS41MTJzLTMuNTctMS40ODgtMi42NzgtNy4xNFwiLFxuICAgIHN0cm9rZTogXCIjNjQ4QkQ4XCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4wNTFcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xMDEuNTIgMjkwLjI0NnM0LjMyNiAyLjA1NyA3LjQwOCAxLjAzYzIuODQyLS45NDggNC41NjQuNjczIDcuMTMyIDEuMTg2IDIuNTcuNTE0IDYuOTI1IDEuMTA4IDExLjc3Mi0xLjI2OS0uMTA0LTUuNTUxLTYuOTM5LTQuMDEtMTIuMDQ4LTYuNzYzLTIuNTgyLTEuMzktMy44MTItNC43NTctMy42MjUtOC44NjNoLTkuNDcxcy0xLjQwMiAxMC41OTYtMS4xNjkgMTQuNjhcIixcbiAgICBmaWxsOiBcIiNDQkQxRDFcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xMDEuNDk2IDI5MC4wNzNzMi40NDcgMS4yODEgNi44MDkuNjU4YzMuMDgxLS40NCAzLjc0LjQ4NSA3LjQ3OSAxLjAzOSAzLjczOS41NTQgMTAuODAyLS4wNyAxMS45MS0uOS40MTUgMS4xMDgtLjM0NyAyLjA3Ny0uMzQ3IDIuMDc3cy0xLjUyMy42MDgtNC44NDcuODMxYy0yLjA0NS4xMzctNS44NDMuMjkzLTcuNjYzLS41MDctMS44LTEuMzg1LTUuMjg2LTEuOTE3LTUuNzctLjI0My0zLjk0Ny45NTgtNy40MS0uMjg4LTcuNDEtLjI4OGwtLjE2LTIuNjY3elwiLFxuICAgIGZpbGw6IFwiIzJCMDg0OVwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwOC44MjQgMjc2LjE5aDMuMTE2cy0uMTAzIDYuNzUxIDQuNTcgOC42MmMtNC42NzMuNjI0LTguNjItMi4zMi03LjY4Ni04LjYyXCIsXG4gICAgZmlsbDogXCIjQTRBQUJBXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNNTcuNjUgMjcyLjUycy0yLjEyMiA3LjQ3LTQuNTE4IDEyLjM5NmMtMS44MTEgMy43MjQtNC4yNTUgNy41NDggNS41MDUgNy41NDggNi42OTggMCA5LjAyLS40ODMgNy40NzktNi42NDgtMS41NDEtNi4xNjQuMjY4LTEzLjI5Ni4yNjgtMTMuMjk2SDU3LjY1elwiLFxuICAgIGZpbGw6IFwiI0NCRDFEMVwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTUxLjU0IDI5MC4wNHMyLjExMSAxLjE3OCA2LjY4MiAxLjE3OGM2LjEyOCAwIDguMzEtMS42NjIgOC4zMS0xLjY2MnMuNjA1IDEuMTIyLS42MjQgMi4xOGMtMSAuODYyLTMuNjI0IDEuNjAzLTcuNDQ0IDEuNTU5LTQuMTc3LS4wNDktNS44NzYtLjU3LTYuNzg2LTEuMTc3LS44MzEtLjU1NC0uNjkyLTEuNTkzLS4xMzgtMi4wNzhcIixcbiAgICBmaWxsOiBcIiMyQjA4NDlcIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk01OC41MzMgMjc0LjQzOHMuMDM0IDEuNTI5LS4zMTUgMi45NWMtLjM1MiAxLjQzMS0xLjA4NyAzLjEyNy0xLjEzOSA0LjE3LS4wNTggMS4xNiA0LjU3IDEuNTkyIDUuMTk0LjAzNS42MjMtMS41NTkgMS4zMDMtNi40NzUgMS45MjctNy4zMDYuNjIyLS44MzEtNC45NC0yLjEzNS01LjY2Ny4xNVwiLFxuICAgIGZpbGw6IFwiI0E0QUFCQVwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwMC44ODUgMjc3LjAxNWwxMy4zMDYuMDkyczEuMjkxLTU0LjIyOCAxLjg0My02NC4wNTZjLjU1Mi05LjgyOCAzLjc1Ni00My4xMy45OTctNjIuNzg4bC0xMi40OC0uNjQtMjIuNzI1Ljc3NnMtLjQzMyAzLjk0NC0xLjE5IDkuOTIxYy0uMDYyLjQ5My0uNjc3LjgzOC0uNzQ0IDEuMzU4LS4wNzUuNTgyLjQyIDEuMzQ3LjMxOCAxLjk1Ni0yLjM1IDE0LjAwMy02LjM0MyAzMi45MjYtOC42OTcgNDYuNDI1LS4xMTYuNjYzLTEuMjI3IDEuMDA0LTEuNDUgMi42NzctLjA0LjMuMjEgMS41MTYuMTEyIDEuNzg1LTYuODM2IDE4LjY0My0xMC44OSA0Ny41ODQtMTQuMiA2MS41NTFsMTQuNTI4LS4wMTRzMi4xODUtOC41MjQgNC4wMDgtMTYuODc4YzIuNzk2LTEyLjgxNyAyMi45ODctODQuNTUzIDIyLjk4Ny04NC41NTNsMy0uNTE3IDEuMDM3IDQ2LjFzLS4yMjMgMS4yMjguMzM0IDIuMDA4Yy41NTguNzgyLS41NTYgMS4xMTctLjM5IDIuMjMzbC4zOSAxLjc4NHMtLjQ0NiA3LjE0LS44OTIgMTEuODI2Yy0uNDQ2IDQuNjg1LS4wOTIgMzguOTU0LS4wOTIgMzguOTU0XCIsXG4gICAgZmlsbDogXCIjN0JCMkY5XCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNNzcuNDM4IDIyMC40MzRjMS4xNDYuMDk0IDQuMDE2LTIuMDA4IDYuOTE2LTQuOTFNMTA3LjU1IDIyMy45MzFzMi43NTgtMS4xMDMgNi4wNjktMy44NjJcIixcbiAgICBzdHJva2U6IFwiIzY0OEJEOFwiLFxuICAgIHN0cm9rZVdpZHRoOiBcIjEuMDUxXCIsXG4gICAgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLFxuICAgIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTA4LjQ1OSAyMjAuOTA1czIuNzU5LTEuMTA0IDYuMDctMy44NjNcIixcbiAgICBzdHJva2U6IFwiIzY0OEJEOFwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTc2LjA5OSAyMjMuNTU3czIuNjA4LS41ODcgNi40Ny0zLjM0Nk04Ny4zMyAxNTAuODJjLS4yNyAzLjA4OC4yOTcgOC40NzgtNC4zMTUgOS4wNzNNMTA0LjgyOSAxNDkuMDc1cy4xMSAxMy45MzYtMS4yODYgMTQuOTgzYy0yLjIwNyAxLjY1NS0yLjk3NSAxLjkzNC0yLjk3NSAxLjkzNE0xMDEuMDE0IDE0OS42M3MuMDM1IDEyLjgxLTEuMTkgMjQuMjQ1TTk0LjkzIDE3NC45NjVzNy4xNzQtMS42NTUgOS4zOC0xLjY1NU03NS42NzEgMjA0Ljc1NGMtLjMxNiAxLjU1LS42NCAzLjA2Ny0uOTczIDQuNTM1IDAgMC0xLjQ1IDEuODIyLTEuMDAzIDMuNzU2LjQ0NiAxLjkzNC0uOTQzIDIuMDM0LTQuOTYgMTUuMjczLTEuNjg2IDUuNTU5LTQuNDY0IDE4LjQ5LTYuMzEzIDI3LjQ0Ny0uMDc4LjM4LTQuMDE4IDE4LjA2LTQuMDkzIDE4LjQyM003Ny4wNDMgMTk2Ljc0M2EzMTMuMjY5IDMxMy4yNjkgMCAwIDEtLjg3NyA0LjcyOU04My45MDggMTUxLjQxNGwtMS4xOSAxMC40MTNzLTEuMDkxLjE0OC0uNDk2IDIuMjNjLjExMSAxLjM0LTIuNjYgMTUuNjkyLTUuMTUzIDMwLjI2N001Ny41OCAyNzIuOTRoMTMuMjM4XCIsXG4gICAgc3Ryb2tlOiBcIiM2NDhCRDhcIixcbiAgICBzdHJva2VXaWR0aDogXCIxLjA1MVwiLFxuICAgIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIixcbiAgICBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTExNy4zNzcgMTQ3LjQyM3MtMTYuOTU1LTMuMDg3LTM1LjcuMTk5Yy4xNTcgMi41MDEtLjAwMiA0LjEyOC0uMDAyIDQuMTI4czE0LjYwNy0yLjgwMiAzNS40NzYtLjMxYy4yNTEtMi4zNDIuMjI2LTQuMDE3LjIyNi00LjAxN1wiLFxuICAgIGZpbGw6IFwiIzE5MjA2NFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTEwNy41MTEgMTUwLjM1M2wuMDA0LTQuODg1YS44MDcuODA3IDAgMCAwLS43NzQtLjgxYy0yLjQyOC0uMDkyLTUuMDQtLjEwOC03Ljc5NS0uMDE0YS44MTQuODE0IDAgMCAwLS43ODQuODFsLS4wMDMgNC44OGMwIC40NTYuMzcxLjgyLjgyNy44MDhhMTQwLjc2IDE0MC43NiAwIDAgMSA3LjY4OC4wMTcuODEuODEgMCAwIDAgLjgzNy0uODA2XCIsXG4gICAgZmlsbDogXCIjRkZGXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTA2LjQwMiAxNDkuNDI2bC4wMDItMy4wNmEuNjQuNjQgMCAwIDAtLjYxNi0uNjQzIDk0LjEzNSA5NC4xMzUgMCAwIDAtNS44MzQtLjAwOS42NDcuNjQ3IDAgMCAwLS42MjYuNjQzbC0uMDAxIDMuMDU2YzAgLjM2LjI5MS42NDguNjUxLjY0IDEuNzgtLjA0IDMuNzA4LS4wNDEgNS43NjIuMDEyLjM2LjAwOS42NjItLjI3OS42NjItLjY0XCIsXG4gICAgZmlsbDogXCIjMTkyMDY0XCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTAxLjQ4NSAyNzMuOTMzaDEyLjI3Mk0xMDIuNjUyIDI2OS4wNzVjLjAwNiAzLjM2OC4wNCA1Ljc1OS4xMSA2LjQ3TTEwMi42NjcgMjYzLjEyNWMtLjAwOSAxLjUzLS4wMTUgMi45OC0uMDE2IDQuMzEzTTEwMi4yMDQgMTc0LjAyNGwuODkzIDQ0LjQwMnMuNjY5IDEuNTYxLS4yMjQgMi42NzdjLS44OTIgMS4xMTYgMi40NTUuNjcuODkzIDIuMjMxLTEuNTYyIDEuNTYyLjg5MyAxLjExNiAwIDMuMzQ3LS41OTIgMS40OC0uOTg4IDIwLjk4Ny0xLjA5IDM0Ljk1NlwiLFxuICAgIHN0cm9rZTogXCIjNjQ4QkQ4XCIsXG4gICAgc3Ryb2tlV2lkdGg6IFwiMS4wNTFcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxuICB9KSkpO1xufTtcblxudmFyIF9kZWZhdWx0ID0gVW5hdXRob3JpemVkO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUHJvcFR5cGVzID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInByb3AtdHlwZXNcIikpO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9vbWl0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwib21pdC5qc1wiKSk7XG5cbnZhciBfaWNvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2ljb25cIikpO1xuXG52YXIgX2NvbmZpZ1Byb3ZpZGVyID0gcmVxdWlyZShcIi4uL2NvbmZpZy1wcm92aWRlclwiKTtcblxudmFyIF90eXBlID0gcmVxdWlyZShcIi4uL191dGlsL3R5cGVcIik7XG5cbnZhciBfTGluZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vTGluZVwiKSk7XG5cbnZhciBfQ2lyY2xlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9DaXJjbGVcIikpO1xuXG52YXIgX3V0aWxzID0gcmVxdWlyZShcIi4vdXRpbHNcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbnZhciBfX3Jlc3QgPSB2b2lkIDAgJiYgKHZvaWQgMCkuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcbiAgfVxuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuXG52YXIgUHJvZ3Jlc3NUeXBlcyA9ICgwLCBfdHlwZS50dXBsZSkoJ2xpbmUnLCAnY2lyY2xlJywgJ2Rhc2hib2FyZCcpO1xudmFyIFByb2dyZXNzU3RhdHVzZXMgPSAoMCwgX3R5cGUudHVwbGUpKCdub3JtYWwnLCAnZXhjZXB0aW9uJywgJ2FjdGl2ZScsICdzdWNjZXNzJyk7XG5cbnZhciBQcm9ncmVzcyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoUHJvZ3Jlc3MsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoUHJvZ3Jlc3MpO1xuXG4gIGZ1bmN0aW9uIFByb2dyZXNzKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQcm9ncmVzcyk7XG5cbiAgICBfdGhpcyA9IF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXG4gICAgX3RoaXMucmVuZGVyUHJvZ3Jlc3MgPSBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgdmFyIF9jbGFzc05hbWVzO1xuXG4gICAgICB2YXIgZ2V0UHJlZml4Q2xzID0gX3JlZi5nZXRQcmVmaXhDbHM7XG5cbiAgICAgIHZhciBfYXNzZXJ0VGhpc0luaXRpYWxpemUgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSxcbiAgICAgICAgICBwcm9wcyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZS5wcm9wcztcblxuICAgICAgdmFyIGN1c3RvbWl6ZVByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgICAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgc2l6ZSA9IHByb3BzLnNpemUsXG4gICAgICAgICAgdHlwZSA9IHByb3BzLnR5cGUsXG4gICAgICAgICAgc2hvd0luZm8gPSBwcm9wcy5zaG93SW5mbyxcbiAgICAgICAgICByZXN0UHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcInByZWZpeENsc1wiLCBcImNsYXNzTmFtZVwiLCBcInNpemVcIiwgXCJ0eXBlXCIsIFwic2hvd0luZm9cIl0pO1xuXG4gICAgICB2YXIgcHJlZml4Q2xzID0gZ2V0UHJlZml4Q2xzKCdwcm9ncmVzcycsIGN1c3RvbWl6ZVByZWZpeENscyk7XG5cbiAgICAgIHZhciBwcm9ncmVzc1N0YXR1cyA9IF90aGlzLmdldFByb2dyZXNzU3RhdHVzKCk7XG5cbiAgICAgIHZhciBwcm9ncmVzc0luZm8gPSBfdGhpcy5yZW5kZXJQcm9jZXNzSW5mbyhwcmVmaXhDbHMsIHByb2dyZXNzU3RhdHVzKTtcblxuICAgICAgdmFyIHByb2dyZXNzOyAvLyBSZW5kZXIgcHJvZ3Jlc3Mgc2hhcGVcblxuICAgICAgaWYgKHR5cGUgPT09ICdsaW5lJykge1xuICAgICAgICBwcm9ncmVzcyA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9MaW5lW1wiZGVmYXVsdFwiXSwgX2V4dGVuZHMoe30sIF90aGlzLnByb3BzLCB7XG4gICAgICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHNcbiAgICAgICAgfSksIHByb2dyZXNzSW5mbyk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjaXJjbGUnIHx8IHR5cGUgPT09ICdkYXNoYm9hcmQnKSB7XG4gICAgICAgIHByb2dyZXNzID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0NpcmNsZVtcImRlZmF1bHRcIl0sIF9leHRlbmRzKHt9LCBfdGhpcy5wcm9wcywge1xuICAgICAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgICAgIHByb2dyZXNzU3RhdHVzOiBwcm9ncmVzc1N0YXR1c1xuICAgICAgICB9KSwgcHJvZ3Jlc3NJbmZvKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGNsYXNzU3RyaW5nID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkocHJlZml4Q2xzLCAoX2NsYXNzTmFtZXMgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLVwiKS5jb25jYXQodHlwZSA9PT0gJ2Rhc2hib2FyZCcgJiYgJ2NpcmNsZScgfHwgdHlwZSksIHRydWUpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc3RhdHVzLVwiKS5jb25jYXQocHJvZ3Jlc3NTdGF0dXMpLCB0cnVlKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXNob3ctaW5mb1wiKSwgc2hvd0luZm8pLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItXCIpLmNvbmNhdChzaXplKSwgc2l6ZSksIF9jbGFzc05hbWVzKSwgY2xhc3NOYW1lKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgKDAsIF9vbWl0W1wiZGVmYXVsdFwiXSkocmVzdFByb3BzLCBbJ3N0YXR1cycsICdmb3JtYXQnLCAndHJhaWxDb2xvcicsICdzdWNjZXNzUGVyY2VudCcsICdzdHJva2VXaWR0aCcsICd3aWR0aCcsICdnYXBEZWdyZWUnLCAnZ2FwUG9zaXRpb24nLCAnc3Ryb2tlQ29sb3InLCAnc3Ryb2tlTGluZWNhcCcsICdwZXJjZW50J10pLCB7XG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3NTdHJpbmdcbiAgICAgIH0pLCBwcm9ncmVzcyk7XG4gICAgfTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhQcm9ncmVzcywgW3tcbiAgICBrZXk6IFwiZ2V0UGVyY2VudE51bWJlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQZXJjZW50TnVtYmVyKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBzdWNjZXNzUGVyY2VudCA9IF90aGlzJHByb3BzLnN1Y2Nlc3NQZXJjZW50LFxuICAgICAgICAgIF90aGlzJHByb3BzJHBlcmNlbnQgPSBfdGhpcyRwcm9wcy5wZXJjZW50LFxuICAgICAgICAgIHBlcmNlbnQgPSBfdGhpcyRwcm9wcyRwZXJjZW50ID09PSB2b2lkIDAgPyAwIDogX3RoaXMkcHJvcHMkcGVyY2VudDtcbiAgICAgIHJldHVybiBwYXJzZUludChzdWNjZXNzUGVyY2VudCAhPT0gdW5kZWZpbmVkID8gc3VjY2Vzc1BlcmNlbnQudG9TdHJpbmcoKSA6IHBlcmNlbnQudG9TdHJpbmcoKSwgMTApO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRQcm9ncmVzc1N0YXR1c1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQcm9ncmVzc1N0YXR1cygpIHtcbiAgICAgIHZhciBzdGF0dXMgPSB0aGlzLnByb3BzLnN0YXR1cztcblxuICAgICAgaWYgKFByb2dyZXNzU3RhdHVzZXMuaW5kZXhPZihzdGF0dXMpIDwgMCAmJiB0aGlzLmdldFBlcmNlbnROdW1iZXIoKSA+PSAxMDApIHtcbiAgICAgICAgcmV0dXJuICdzdWNjZXNzJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN0YXR1cyB8fCAnbm9ybWFsJztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyUHJvY2Vzc0luZm9cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyUHJvY2Vzc0luZm8ocHJlZml4Q2xzLCBwcm9ncmVzc1N0YXR1cykge1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgc2hvd0luZm8gPSBfdGhpcyRwcm9wczIuc2hvd0luZm8sXG4gICAgICAgICAgZm9ybWF0ID0gX3RoaXMkcHJvcHMyLmZvcm1hdCxcbiAgICAgICAgICB0eXBlID0gX3RoaXMkcHJvcHMyLnR5cGUsXG4gICAgICAgICAgcGVyY2VudCA9IF90aGlzJHByb3BzMi5wZXJjZW50LFxuICAgICAgICAgIHN1Y2Nlc3NQZXJjZW50ID0gX3RoaXMkcHJvcHMyLnN1Y2Nlc3NQZXJjZW50O1xuICAgICAgaWYgKCFzaG93SW5mbykgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgdGV4dDtcblxuICAgICAgdmFyIHRleHRGb3JtYXR0ZXIgPSBmb3JtYXQgfHwgZnVuY3Rpb24gKHBlcmNlbnROdW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHBlcmNlbnROdW1iZXIsIFwiJVwiKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBpY29uVHlwZSA9IHR5cGUgPT09ICdjaXJjbGUnIHx8IHR5cGUgPT09ICdkYXNoYm9hcmQnID8gJycgOiAnLWNpcmNsZSc7XG5cbiAgICAgIGlmIChmb3JtYXQgfHwgcHJvZ3Jlc3NTdGF0dXMgIT09ICdleGNlcHRpb24nICYmIHByb2dyZXNzU3RhdHVzICE9PSAnc3VjY2VzcycpIHtcbiAgICAgICAgdGV4dCA9IHRleHRGb3JtYXR0ZXIoKDAsIF91dGlscy52YWxpZFByb2dyZXNzKShwZXJjZW50KSwgKDAsIF91dGlscy52YWxpZFByb2dyZXNzKShzdWNjZXNzUGVyY2VudCkpO1xuICAgICAgfSBlbHNlIGlmIChwcm9ncmVzc1N0YXR1cyA9PT0gJ2V4Y2VwdGlvbicpIHtcbiAgICAgICAgdGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9pY29uW1wiZGVmYXVsdFwiXSwge1xuICAgICAgICAgIHR5cGU6IFwiY2xvc2VcIi5jb25jYXQoaWNvblR5cGUpLFxuICAgICAgICAgIHRoZW1lOiB0eXBlID09PSAnbGluZScgPyAnZmlsbGVkJyA6ICdvdXRsaW5lZCdcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHByb2dyZXNzU3RhdHVzID09PSAnc3VjY2VzcycpIHtcbiAgICAgICAgdGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9pY29uW1wiZGVmYXVsdFwiXSwge1xuICAgICAgICAgIHR5cGU6IFwiY2hlY2tcIi5jb25jYXQoaWNvblR5cGUpLFxuICAgICAgICAgIHRoZW1lOiB0eXBlID09PSAnbGluZScgPyAnZmlsbGVkJyA6ICdvdXRsaW5lZCdcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdGV4dFwiKSxcbiAgICAgICAgdGl0bGU6IHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyA/IHRleHQgOiB1bmRlZmluZWRcbiAgICAgIH0sIHRleHQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jb25maWdQcm92aWRlci5Db25maWdDb25zdW1lciwgbnVsbCwgdGhpcy5yZW5kZXJQcm9ncmVzcyk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFByb2dyZXNzO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IFByb2dyZXNzO1xuUHJvZ3Jlc3MuZGVmYXVsdFByb3BzID0ge1xuICB0eXBlOiAnbGluZScsXG4gIHBlcmNlbnQ6IDAsXG4gIHNob3dJbmZvOiB0cnVlLFxuICB0cmFpbENvbG9yOiAnI2YzZjNmMycsXG4gIHNpemU6ICdkZWZhdWx0JyxcbiAgZ2FwRGVncmVlOiAwLFxuICBzdHJva2VMaW5lY2FwOiAncm91bmQnXG59O1xuUHJvZ3Jlc3MucHJvcFR5cGVzID0ge1xuICBzdGF0dXM6IFByb3BUeXBlcy5vbmVPZihQcm9ncmVzc1N0YXR1c2VzKSxcbiAgdHlwZTogUHJvcFR5cGVzLm9uZU9mKFByb2dyZXNzVHlwZXMpLFxuICBzaG93SW5mbzogUHJvcFR5cGVzLmJvb2wsXG4gIHBlcmNlbnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLFxuICBzdHJva2VXaWR0aDogUHJvcFR5cGVzLm51bWJlcixcbiAgc3Ryb2tlTGluZWNhcDogUHJvcFR5cGVzLm9uZU9mKFsncm91bmQnLCAnc3F1YXJlJ10pLFxuICBzdHJva2VDb2xvcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICB0cmFpbENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBmb3JtYXQ6IFByb3BUeXBlcy5mdW5jLFxuICBnYXBEZWdyZWU6IFByb3BUeXBlcy5udW1iZXJcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gZXhwb3J0cy5oYW5kbGVHcmFkaWVudCA9IGV4cG9ydHMuc29ydEdyYWRpZW50ID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX3V0aWxzID0gcmVxdWlyZShcIi4vdXRpbHNcIik7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8ICEoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChhcnIpKSkgcmV0dXJuOyB2YXIgX2FyciA9IFtdOyB2YXIgX24gPSB0cnVlOyB2YXIgX2QgPSBmYWxzZTsgdmFyIF9lID0gdW5kZWZpbmVkOyB0cnkgeyBmb3IgKHZhciBfaSA9IGFycltTeW1ib2wuaXRlcmF0b3JdKCksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpOyB9IGZpbmFsbHkgeyBpZiAoX2QpIHRocm93IF9lOyB9IH0gcmV0dXJuIF9hcnI7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5cbnZhciBfX3Jlc3QgPSB2b2lkIDAgJiYgKHZvaWQgMCkuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcbiAgfVxuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuXG4vKipcbiAqIHtcbiAqICAgJzAlJzogJyNhZmMxNjMnLFxuICogICAnNzUlJzogJyMwMDk5MDAnLFxuICogICAnNTAlJzogJ2dyZWVuJywgICAgID09PT0+ICAgICAnI2FmYzE2MyAwJSwgIzY2RkYwMCAyNSUsICMwMENDMDAgNTAlLCAjMDA5OTAwIDc1JSwgI2ZmZmZmZiAxMDAlJ1xuICogICAnMjUlJzogJyM2NkZGMDAnLFxuICogICAnMTAwJSc6ICcjZmZmZmZmJ1xuICogfVxuICovXG52YXIgc29ydEdyYWRpZW50ID0gZnVuY3Rpb24gc29ydEdyYWRpZW50KGdyYWRpZW50cykge1xuICB2YXIgdGVtcEFyciA9IFtdOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcblxuICBmb3IgKHZhciBfaSA9IDAsIF9PYmplY3QkZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGdyYWRpZW50cyk7IF9pIDwgX09iamVjdCRlbnRyaWVzLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBfT2JqZWN0JGVudHJpZXMkX2kgPSBfc2xpY2VkVG9BcnJheShfT2JqZWN0JGVudHJpZXNbX2ldLCAyKSxcbiAgICAgICAga2V5ID0gX09iamVjdCRlbnRyaWVzJF9pWzBdLFxuICAgICAgICB2YWx1ZSA9IF9PYmplY3QkZW50cmllcyRfaVsxXTtcblxuICAgIHZhciBmb3JtYXRLZXkgPSBwYXJzZUZsb2F0KGtleS5yZXBsYWNlKC8lL2csICcnKSk7XG5cbiAgICBpZiAoaXNOYU4oZm9ybWF0S2V5KSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHRlbXBBcnIucHVzaCh7XG4gICAgICBrZXk6IGZvcm1hdEtleSxcbiAgICAgIHZhbHVlOiB2YWx1ZVxuICAgIH0pO1xuICB9XG5cbiAgdGVtcEFyciA9IHRlbXBBcnIuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBhLmtleSAtIGIua2V5O1xuICB9KTtcbiAgcmV0dXJuIHRlbXBBcnIubWFwKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIGtleSA9IF9yZWYua2V5LFxuICAgICAgICB2YWx1ZSA9IF9yZWYudmFsdWU7XG4gICAgcmV0dXJuIFwiXCIuY29uY2F0KHZhbHVlLCBcIiBcIikuY29uY2F0KGtleSwgXCIlXCIpO1xuICB9KS5qb2luKCcsICcpO1xufTtcbi8qKlxuICoge1xuICogICAnMCUnOiAnI2FmYzE2MycsXG4gKiAgICcyNSUnOiAnIzY2RkYwMCcsXG4gKiAgICc1MCUnOiAnIzAwQ0MwMCcsICAgICA9PT09PiAgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjYWZjMTYzIDAlLCAjNjZGRjAwIDI1JSxcbiAqICAgJzc1JSc6ICcjMDA5OTAwJywgICAgICAgICAgICAgICMwMENDMDAgNTAlLCAjMDA5OTAwIDc1JSwgI2ZmZmZmZiAxMDAlKVxuICogICAnMTAwJSc6ICcjZmZmZmZmJ1xuICogfVxuICpcbiAqIFRoZW4gdGhpcyBtYW4gY2FtZSB0byByZWFsaXplIHRoZSB0cnV0aDpcbiAqIEJlc2lkZXMgc2l4IHBlbmNlLCB0aGVyZSBpcyB0aGUgbW9vbi5cbiAqIEJlc2lkZXMgYnJlYWQgYW5kIGJ1dHRlciwgdGhlcmUgaXMgdGhlIGJ1Zy5cbiAqIEFuZC4uLlxuICogQmVzaWRlcyB3b21lbiwgdGhlcmUgaXMgdGhlIGNvZGUuXG4gKi9cblxuXG5leHBvcnRzLnNvcnRHcmFkaWVudCA9IHNvcnRHcmFkaWVudDtcblxudmFyIGhhbmRsZUdyYWRpZW50ID0gZnVuY3Rpb24gaGFuZGxlR3JhZGllbnQoc3Ryb2tlQ29sb3IpIHtcbiAgdmFyIF9zdHJva2VDb2xvciRmcm9tID0gc3Ryb2tlQ29sb3IuZnJvbSxcbiAgICAgIGZyb20gPSBfc3Ryb2tlQ29sb3IkZnJvbSA9PT0gdm9pZCAwID8gJyMxODkwZmYnIDogX3N0cm9rZUNvbG9yJGZyb20sXG4gICAgICBfc3Ryb2tlQ29sb3IkdG8gPSBzdHJva2VDb2xvci50byxcbiAgICAgIHRvID0gX3N0cm9rZUNvbG9yJHRvID09PSB2b2lkIDAgPyAnIzE4OTBmZicgOiBfc3Ryb2tlQ29sb3IkdG8sXG4gICAgICBfc3Ryb2tlQ29sb3IkZGlyZWN0aW8gPSBzdHJva2VDb2xvci5kaXJlY3Rpb24sXG4gICAgICBkaXJlY3Rpb24gPSBfc3Ryb2tlQ29sb3IkZGlyZWN0aW8gPT09IHZvaWQgMCA/ICd0byByaWdodCcgOiBfc3Ryb2tlQ29sb3IkZGlyZWN0aW8sXG4gICAgICByZXN0ID0gX19yZXN0KHN0cm9rZUNvbG9yLCBbXCJmcm9tXCIsIFwidG9cIiwgXCJkaXJlY3Rpb25cIl0pO1xuXG4gIGlmIChPYmplY3Qua2V5cyhyZXN0KS5sZW5ndGggIT09IDApIHtcbiAgICB2YXIgc29ydGVkR3JhZGllbnRzID0gc29ydEdyYWRpZW50KHJlc3QpO1xuICAgIHJldHVybiB7XG4gICAgICBiYWNrZ3JvdW5kSW1hZ2U6IFwibGluZWFyLWdyYWRpZW50KFwiLmNvbmNhdChkaXJlY3Rpb24sIFwiLCBcIikuY29uY2F0KHNvcnRlZEdyYWRpZW50cywgXCIpXCIpXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYmFja2dyb3VuZEltYWdlOiBcImxpbmVhci1ncmFkaWVudChcIi5jb25jYXQoZGlyZWN0aW9uLCBcIiwgXCIpLmNvbmNhdChmcm9tLCBcIiwgXCIpLmNvbmNhdCh0bywgXCIpXCIpXG4gIH07XG59O1xuXG5leHBvcnRzLmhhbmRsZUdyYWRpZW50ID0gaGFuZGxlR3JhZGllbnQ7XG5cbnZhciBMaW5lID0gZnVuY3Rpb24gTGluZShwcm9wcykge1xuICB2YXIgcHJlZml4Q2xzID0gcHJvcHMucHJlZml4Q2xzLFxuICAgICAgcGVyY2VudCA9IHByb3BzLnBlcmNlbnQsXG4gICAgICBzdWNjZXNzUGVyY2VudCA9IHByb3BzLnN1Y2Nlc3NQZXJjZW50LFxuICAgICAgc3Ryb2tlV2lkdGggPSBwcm9wcy5zdHJva2VXaWR0aCxcbiAgICAgIHNpemUgPSBwcm9wcy5zaXplLFxuICAgICAgc3Ryb2tlQ29sb3IgPSBwcm9wcy5zdHJva2VDb2xvcixcbiAgICAgIHN0cm9rZUxpbmVjYXAgPSBwcm9wcy5zdHJva2VMaW5lY2FwLFxuICAgICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcbiAgdmFyIGJhY2tncm91bmRQcm9wcztcblxuICBpZiAoc3Ryb2tlQ29sb3IgJiYgdHlwZW9mIHN0cm9rZUNvbG9yICE9PSAnc3RyaW5nJykge1xuICAgIGJhY2tncm91bmRQcm9wcyA9IGhhbmRsZUdyYWRpZW50KHN0cm9rZUNvbG9yKTtcbiAgfSBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kUHJvcHMgPSB7XG4gICAgICBiYWNrZ3JvdW5kOiBzdHJva2VDb2xvclxuICAgIH07XG4gIH1cblxuICB2YXIgcGVyY2VudFN0eWxlID0gX2V4dGVuZHMoe1xuICAgIHdpZHRoOiBcIlwiLmNvbmNhdCgoMCwgX3V0aWxzLnZhbGlkUHJvZ3Jlc3MpKHBlcmNlbnQpLCBcIiVcIiksXG4gICAgaGVpZ2h0OiBzdHJva2VXaWR0aCB8fCAoc2l6ZSA9PT0gJ3NtYWxsJyA/IDYgOiA4KSxcbiAgICBib3JkZXJSYWRpdXM6IHN0cm9rZUxpbmVjYXAgPT09ICdzcXVhcmUnID8gMCA6ICcnXG4gIH0sIGJhY2tncm91bmRQcm9wcyk7XG5cbiAgdmFyIHN1Y2Nlc3NQZXJjZW50U3R5bGUgPSB7XG4gICAgd2lkdGg6IFwiXCIuY29uY2F0KCgwLCBfdXRpbHMudmFsaWRQcm9ncmVzcykoc3VjY2Vzc1BlcmNlbnQpLCBcIiVcIiksXG4gICAgaGVpZ2h0OiBzdHJva2VXaWR0aCB8fCAoc2l6ZSA9PT0gJ3NtYWxsJyA/IDYgOiA4KSxcbiAgICBib3JkZXJSYWRpdXM6IHN0cm9rZUxpbmVjYXAgPT09ICdzcXVhcmUnID8gMCA6ICcnXG4gIH07XG4gIHZhciBzdWNjZXNzU2VnbWVudCA9IHN1Y2Nlc3NQZXJjZW50ICE9PSB1bmRlZmluZWQgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXN1Y2Nlc3MtYmdcIiksXG4gICAgc3R5bGU6IHN1Y2Nlc3NQZXJjZW50U3R5bGVcbiAgfSkgOiBudWxsO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1vdXRlclwiKVxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWlubmVyXCIpXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItYmdcIiksXG4gICAgc3R5bGU6IHBlcmNlbnRTdHlsZVxuICB9KSwgc3VjY2Vzc1NlZ21lbnQpKSwgY2hpbGRyZW4pO1xufTtcblxudmFyIF9kZWZhdWx0ID0gTGluZTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX3JjUHJvZ3Jlc3MgPSByZXF1aXJlKFwicmMtcHJvZ3Jlc3NcIik7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG52YXIgX3V0aWxzID0gcmVxdWlyZShcIi4vdXRpbHNcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG52YXIgc3RhdHVzQ29sb3JNYXAgPSB7XG4gIG5vcm1hbDogJyMxMDhlZTknLFxuICBleGNlcHRpb246ICcjZmY1NTAwJyxcbiAgc3VjY2VzczogJyM4N2QwNjgnXG59O1xuXG5mdW5jdGlvbiBnZXRQZXJjZW50YWdlKF9yZWYpIHtcbiAgdmFyIHBlcmNlbnQgPSBfcmVmLnBlcmNlbnQsXG4gICAgICBzdWNjZXNzUGVyY2VudCA9IF9yZWYuc3VjY2Vzc1BlcmNlbnQ7XG4gIHZhciBwdGcgPSAoMCwgX3V0aWxzLnZhbGlkUHJvZ3Jlc3MpKHBlcmNlbnQpO1xuXG4gIGlmICghc3VjY2Vzc1BlcmNlbnQpIHtcbiAgICByZXR1cm4gcHRnO1xuICB9XG5cbiAgdmFyIHN1Y2Nlc3NQdGcgPSAoMCwgX3V0aWxzLnZhbGlkUHJvZ3Jlc3MpKHN1Y2Nlc3NQZXJjZW50KTtcbiAgcmV0dXJuIFtzdWNjZXNzUGVyY2VudCwgKDAsIF91dGlscy52YWxpZFByb2dyZXNzKShwdGcgLSBzdWNjZXNzUHRnKV07XG59XG5cbmZ1bmN0aW9uIGdldFN0cm9rZUNvbG9yKF9yZWYyKSB7XG4gIHZhciBwcm9ncmVzc1N0YXR1cyA9IF9yZWYyLnByb2dyZXNzU3RhdHVzLFxuICAgICAgc3VjY2Vzc1BlcmNlbnQgPSBfcmVmMi5zdWNjZXNzUGVyY2VudCxcbiAgICAgIHN0cm9rZUNvbG9yID0gX3JlZjIuc3Ryb2tlQ29sb3I7XG4gIHZhciBjb2xvciA9IHN0cm9rZUNvbG9yIHx8IHN0YXR1c0NvbG9yTWFwW3Byb2dyZXNzU3RhdHVzXTtcblxuICBpZiAoIXN1Y2Nlc3NQZXJjZW50KSB7XG4gICAgcmV0dXJuIGNvbG9yO1xuICB9XG5cbiAgcmV0dXJuIFtzdGF0dXNDb2xvck1hcC5zdWNjZXNzLCBjb2xvcl07XG59XG5cbnZhciBDaXJjbGUgPSBmdW5jdGlvbiBDaXJjbGUocHJvcHMpIHtcbiAgdmFyIHByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgICBzdHJva2VXaWR0aCA9IHByb3BzLnN0cm9rZVdpZHRoLFxuICAgICAgdHJhaWxDb2xvciA9IHByb3BzLnRyYWlsQ29sb3IsXG4gICAgICBzdHJva2VMaW5lY2FwID0gcHJvcHMuc3Ryb2tlTGluZWNhcCxcbiAgICAgIGdhcFBvc2l0aW9uID0gcHJvcHMuZ2FwUG9zaXRpb24sXG4gICAgICBnYXBEZWdyZWUgPSBwcm9wcy5nYXBEZWdyZWUsXG4gICAgICB0eXBlID0gcHJvcHMudHlwZSxcbiAgICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG4gIHZhciBjaXJjbGVTaXplID0gd2lkdGggfHwgMTIwO1xuICB2YXIgY2lyY2xlU3R5bGUgPSB7XG4gICAgd2lkdGg6IGNpcmNsZVNpemUsXG4gICAgaGVpZ2h0OiBjaXJjbGVTaXplLFxuICAgIGZvbnRTaXplOiBjaXJjbGVTaXplICogMC4xNSArIDZcbiAgfTtcbiAgdmFyIGNpcmNsZVdpZHRoID0gc3Ryb2tlV2lkdGggfHwgNjtcbiAgdmFyIGdhcFBvcyA9IGdhcFBvc2l0aW9uIHx8IHR5cGUgPT09ICdkYXNoYm9hcmQnICYmICdib3R0b20nIHx8ICd0b3AnO1xuICB2YXIgZ2FwRGVnID0gZ2FwRGVncmVlIHx8ICh0eXBlID09PSAnZGFzaGJvYXJkJyA/IDc1IDogdW5kZWZpbmVkKTtcbiAgdmFyIHN0cm9rZUNvbG9yID0gZ2V0U3Ryb2tlQ29sb3IocHJvcHMpO1xuICB2YXIgaXNHcmFkaWVudCA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzdHJva2VDb2xvcikgPT09ICdbb2JqZWN0IE9iamVjdF0nO1xuICB2YXIgd3JhcHBlckNsYXNzTmFtZSA9ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaW5uZXJcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1jaXJjbGUtZ3JhZGllbnRcIiksIGlzR3JhZGllbnQpKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICBjbGFzc05hbWU6IHdyYXBwZXJDbGFzc05hbWUsXG4gICAgc3R5bGU6IGNpcmNsZVN0eWxlXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yY1Byb2dyZXNzLkNpcmNsZSwge1xuICAgIHBlcmNlbnQ6IGdldFBlcmNlbnRhZ2UocHJvcHMpLFxuICAgIHN0cm9rZVdpZHRoOiBjaXJjbGVXaWR0aCxcbiAgICB0cmFpbFdpZHRoOiBjaXJjbGVXaWR0aCxcbiAgICBzdHJva2VDb2xvcjogc3Ryb2tlQ29sb3IsXG4gICAgc3Ryb2tlTGluZWNhcDogc3Ryb2tlTGluZWNhcCxcbiAgICB0cmFpbENvbG9yOiB0cmFpbENvbG9yLFxuICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgIGdhcERlZ3JlZTogZ2FwRGVnLFxuICAgIGdhcFBvc2l0aW9uOiBnYXBQb3NcbiAgfSksIGNoaWxkcmVuKTtcbn07XG5cbnZhciBfZGVmYXVsdCA9IENpcmNsZTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IGV4cG9ydHMucmVzcG9uc2l2ZU1hcCA9IGV4cG9ydHMucmVzcG9uc2l2ZUFycmF5ID0gdm9pZCAwO1xuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG4vLyBtYXRjaE1lZGlhIHBvbHlmaWxsIGZvclxuLy8gaHR0cHM6Ly9naXRodWIuY29tL1dpY2t5TmlsbGlhbXMvZW5xdWlyZS5qcy9pc3N1ZXMvODJcbnZhciBlbnF1aXJlOyAvLyBUT0RPOiBXaWxsIGJlIHJlbW92ZWQgaW4gYW50ZCA0LjAgYmVjYXVzZSB3ZSB3aWxsIG5vIGxvbmdlciBzdXBwb3J0IGllOVxuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgdmFyIG1hdGNoTWVkaWFQb2x5ZmlsbCA9IGZ1bmN0aW9uIG1hdGNoTWVkaWFQb2x5ZmlsbChtZWRpYVF1ZXJ5KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lZGlhOiBtZWRpYVF1ZXJ5LFxuICAgICAgbWF0Y2hlczogZmFsc2UsXG4gICAgICBhZGRMaXN0ZW5lcjogZnVuY3Rpb24gYWRkTGlzdGVuZXIoKSB7fSxcbiAgICAgIHJlbW92ZUxpc3RlbmVyOiBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcigpIHt9XG4gICAgfTtcbiAgfTsgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8xODc3NFxuXG5cbiAgaWYgKCF3aW5kb3cubWF0Y2hNZWRpYSkgd2luZG93Lm1hdGNoTWVkaWEgPSBtYXRjaE1lZGlhUG9seWZpbGw7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBnbG9iYWwtcmVxdWlyZVxuXG4gIGVucXVpcmUgPSByZXF1aXJlKCdlbnF1aXJlLmpzJyk7XG59XG5cbnZhciByZXNwb25zaXZlQXJyYXkgPSBbJ3h4bCcsICd4bCcsICdsZycsICdtZCcsICdzbScsICd4cyddO1xuZXhwb3J0cy5yZXNwb25zaXZlQXJyYXkgPSByZXNwb25zaXZlQXJyYXk7XG52YXIgcmVzcG9uc2l2ZU1hcCA9IHtcbiAgeHM6ICcobWF4LXdpZHRoOiA1NzVweCknLFxuICBzbTogJyhtaW4td2lkdGg6IDU3NnB4KScsXG4gIG1kOiAnKG1pbi13aWR0aDogNzY4cHgpJyxcbiAgbGc6ICcobWluLXdpZHRoOiA5OTJweCknLFxuICB4bDogJyhtaW4td2lkdGg6IDEyMDBweCknLFxuICB4eGw6ICcobWluLXdpZHRoOiAxNjAwcHgpJ1xufTtcbmV4cG9ydHMucmVzcG9uc2l2ZU1hcCA9IHJlc3BvbnNpdmVNYXA7XG52YXIgc3Vic2NyaWJlcnMgPSBbXTtcbnZhciBzdWJVaWQgPSAtMTtcbnZhciBzY3JlZW5zID0ge307XG52YXIgcmVzcG9uc2l2ZU9ic2VydmUgPSB7XG4gIGRpc3BhdGNoOiBmdW5jdGlvbiBkaXNwYXRjaChwb2ludE1hcCkge1xuICAgIHNjcmVlbnMgPSBwb2ludE1hcDtcblxuICAgIGlmIChzdWJzY3JpYmVycy5sZW5ndGggPCAxKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3Vic2NyaWJlcnMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgaXRlbS5mdW5jKHNjcmVlbnMpO1xuICAgIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNjcmliZShmdW5jKSB7XG4gICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5yZWdpc3RlcigpO1xuICAgIH1cblxuICAgIHZhciB0b2tlbiA9ICgrK3N1YlVpZCkudG9TdHJpbmcoKTtcbiAgICBzdWJzY3JpYmVycy5wdXNoKHtcbiAgICAgIHRva2VuOiB0b2tlbixcbiAgICAgIGZ1bmM6IGZ1bmNcbiAgICB9KTtcbiAgICBmdW5jKHNjcmVlbnMpO1xuICAgIHJldHVybiB0b2tlbjtcbiAgfSxcbiAgdW5zdWJzY3JpYmU6IGZ1bmN0aW9uIHVuc3Vic2NyaWJlKHRva2VuKSB7XG4gICAgc3Vic2NyaWJlcnMgPSBzdWJzY3JpYmVycy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBpdGVtLnRva2VuICE9PSB0b2tlbjtcbiAgICB9KTtcblxuICAgIGlmIChzdWJzY3JpYmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMudW5yZWdpc3RlcigpO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlcjogZnVuY3Rpb24gdW5yZWdpc3RlcigpIHtcbiAgICBPYmplY3Qua2V5cyhyZXNwb25zaXZlTWFwKS5tYXAoZnVuY3Rpb24gKHNjcmVlbikge1xuICAgICAgcmV0dXJuIGVucXVpcmUudW5yZWdpc3RlcihyZXNwb25zaXZlTWFwW3NjcmVlbl0pO1xuICAgIH0pO1xuICB9LFxuICByZWdpc3RlcjogZnVuY3Rpb24gcmVnaXN0ZXIoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIE9iamVjdC5rZXlzKHJlc3BvbnNpdmVNYXApLm1hcChmdW5jdGlvbiAoc2NyZWVuKSB7XG4gICAgICByZXR1cm4gZW5xdWlyZS5yZWdpc3RlcihyZXNwb25zaXZlTWFwW3NjcmVlbl0sIHtcbiAgICAgICAgbWF0Y2g6IGZ1bmN0aW9uIG1hdGNoKCkge1xuICAgICAgICAgIHZhciBwb2ludE1hcCA9IF9leHRlbmRzKF9leHRlbmRzKHt9LCBzY3JlZW5zKSwgX2RlZmluZVByb3BlcnR5KHt9LCBzY3JlZW4sIHRydWUpKTtcblxuICAgICAgICAgIF90aGlzLmRpc3BhdGNoKHBvaW50TWFwKTtcbiAgICAgICAgfSxcbiAgICAgICAgdW5tYXRjaDogZnVuY3Rpb24gdW5tYXRjaCgpIHtcbiAgICAgICAgICB2YXIgcG9pbnRNYXAgPSBfZXh0ZW5kcyhfZXh0ZW5kcyh7fSwgc2NyZWVucyksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgc2NyZWVuLCBmYWxzZSkpO1xuXG4gICAgICAgICAgX3RoaXMuZGlzcGF0Y2gocG9pbnRNYXApO1xuICAgICAgICB9LFxuICAgICAgICAvLyBLZWVwIGEgZW1wdHkgZGVzdG9yeSB0byBhdm9pZCB0cmlnZ2VyaW5nIHVubWF0Y2ggd2hlbiB1bnJlZ2lzdGVyXG4gICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7fVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn07XG52YXIgX2RlZmF1bHQgPSByZXNwb25zaXZlT2JzZXJ2ZTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwidmFyIE1lZGlhUXVlcnlEaXNwYXRjaCA9IHJlcXVpcmUoJy4vTWVkaWFRdWVyeURpc3BhdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBNZWRpYVF1ZXJ5RGlzcGF0Y2goKTtcbiIsInZhciBNZWRpYVF1ZXJ5ID0gcmVxdWlyZSgnLi9NZWRpYVF1ZXJ5Jyk7XG52YXIgVXRpbCA9IHJlcXVpcmUoJy4vVXRpbCcpO1xudmFyIGVhY2ggPSBVdGlsLmVhY2g7XG52YXIgaXNGdW5jdGlvbiA9IFV0aWwuaXNGdW5jdGlvbjtcbnZhciBpc0FycmF5ID0gVXRpbC5pc0FycmF5O1xuXG4vKipcbiAqIEFsbG93cyBmb3IgcmVnaXN0cmF0aW9uIG9mIHF1ZXJ5IGhhbmRsZXJzLlxuICogTWFuYWdlcyB0aGUgcXVlcnkgaGFuZGxlcidzIHN0YXRlIGFuZCBpcyByZXNwb25zaWJsZSBmb3Igd2lyaW5nIHVwIGJyb3dzZXIgZXZlbnRzXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uIE1lZGlhUXVlcnlEaXNwYXRjaCAoKSB7XG4gICAgaWYoIXdpbmRvdy5tYXRjaE1lZGlhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbWF0Y2hNZWRpYSBub3QgcHJlc2VudCwgbGVnYWN5IGJyb3dzZXJzIHJlcXVpcmUgYSBwb2x5ZmlsbCcpO1xuICAgIH1cblxuICAgIHRoaXMucXVlcmllcyA9IHt9O1xuICAgIHRoaXMuYnJvd3NlcklzSW5jYXBhYmxlID0gIXdpbmRvdy5tYXRjaE1lZGlhKCdvbmx5IGFsbCcpLm1hdGNoZXM7XG59XG5cbk1lZGlhUXVlcnlEaXNwYXRjaC5wcm90b3R5cGUgPSB7XG5cbiAgICBjb25zdHJ1Y3RvciA6IE1lZGlhUXVlcnlEaXNwYXRjaCxcblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBhIGhhbmRsZXIgZm9yIHRoZSBnaXZlbiBtZWRpYSBxdWVyeVxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHEgdGhlIG1lZGlhIHF1ZXJ5XG4gICAgICogQHBhcmFtIHtvYmplY3QgfHwgQXJyYXkgfHwgRnVuY3Rpb259IG9wdGlvbnMgZWl0aGVyIGEgc2luZ2xlIHF1ZXJ5IGhhbmRsZXIgb2JqZWN0LCBhIGZ1bmN0aW9uLCBvciBhbiBhcnJheSBvZiBxdWVyeSBoYW5kbGVyc1xuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMubWF0Y2ggZmlyZWQgd2hlbiBxdWVyeSBtYXRjaGVkXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gW29wdGlvbnMudW5tYXRjaF0gZmlyZWQgd2hlbiBhIHF1ZXJ5IGlzIG5vIGxvbmdlciBtYXRjaGVkXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gW29wdGlvbnMuc2V0dXBdIGZpcmVkIHdoZW4gaGFuZGxlciBmaXJzdCB0cmlnZ2VyZWRcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmRlZmVyU2V0dXA9ZmFsc2VdIHdoZXRoZXIgc2V0dXAgc2hvdWxkIGJlIHJ1biBpbW1lZGlhdGVseSBvciBkZWZlcnJlZCB1bnRpbCBxdWVyeSBpcyBmaXJzdCBtYXRjaGVkXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbc2hvdWxkRGVncmFkZT1mYWxzZV0gd2hldGhlciB0aGlzIHBhcnRpY3VsYXIgbWVkaWEgcXVlcnkgc2hvdWxkIGFsd2F5cyBydW4gb24gaW5jYXBhYmxlIGJyb3dzZXJzXG4gICAgICovXG4gICAgcmVnaXN0ZXIgOiBmdW5jdGlvbihxLCBvcHRpb25zLCBzaG91bGREZWdyYWRlKSB7XG4gICAgICAgIHZhciBxdWVyaWVzICAgICAgICAgPSB0aGlzLnF1ZXJpZXMsXG4gICAgICAgICAgICBpc1VuY29uZGl0aW9uYWwgPSBzaG91bGREZWdyYWRlICYmIHRoaXMuYnJvd3NlcklzSW5jYXBhYmxlO1xuXG4gICAgICAgIGlmKCFxdWVyaWVzW3FdKSB7XG4gICAgICAgICAgICBxdWVyaWVzW3FdID0gbmV3IE1lZGlhUXVlcnkocSwgaXNVbmNvbmRpdGlvbmFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vbm9ybWFsaXNlIHRvIG9iamVjdCBpbiBhbiBhcnJheVxuICAgICAgICBpZihpc0Z1bmN0aW9uKG9wdGlvbnMpKSB7XG4gICAgICAgICAgICBvcHRpb25zID0geyBtYXRjaCA6IG9wdGlvbnMgfTtcbiAgICAgICAgfVxuICAgICAgICBpZighaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgICAgb3B0aW9ucyA9IFtvcHRpb25zXTtcbiAgICAgICAgfVxuICAgICAgICBlYWNoKG9wdGlvbnMsIGZ1bmN0aW9uKGhhbmRsZXIpIHtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlciA9IHsgbWF0Y2ggOiBoYW5kbGVyIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBxdWVyaWVzW3FdLmFkZEhhbmRsZXIoaGFuZGxlcik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiB1bnJlZ2lzdGVycyBhIHF1ZXJ5IGFuZCBhbGwgaXQncyBoYW5kbGVycywgb3IgYSBzcGVjaWZpYyBoYW5kbGVyIGZvciBhIHF1ZXJ5XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcSB0aGUgbWVkaWEgcXVlcnkgdG8gdGFyZ2V0XG4gICAgICogQHBhcmFtIHtvYmplY3QgfHwgZnVuY3Rpb259IFtoYW5kbGVyXSBzcGVjaWZpYyBoYW5kbGVyIHRvIHVucmVnaXN0ZXJcbiAgICAgKi9cbiAgICB1bnJlZ2lzdGVyIDogZnVuY3Rpb24ocSwgaGFuZGxlcikge1xuICAgICAgICB2YXIgcXVlcnkgPSB0aGlzLnF1ZXJpZXNbcV07XG5cbiAgICAgICAgaWYocXVlcnkpIHtcbiAgICAgICAgICAgIGlmKGhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICBxdWVyeS5yZW1vdmVIYW5kbGVyKGhhbmRsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcXVlcnkuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5xdWVyaWVzW3FdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBNZWRpYVF1ZXJ5RGlzcGF0Y2g7XG4iLCJ2YXIgUXVlcnlIYW5kbGVyID0gcmVxdWlyZSgnLi9RdWVyeUhhbmRsZXInKTtcbnZhciBlYWNoID0gcmVxdWlyZSgnLi9VdGlsJykuZWFjaDtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIG1lZGlhIHF1ZXJ5LCBtYW5hZ2VzIGl0J3Mgc3RhdGUgYW5kIHJlZ2lzdGVyZWQgaGFuZGxlcnMgZm9yIHRoaXMgcXVlcnlcbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBxdWVyeSB0aGUgbWVkaWEgcXVlcnkgc3RyaW5nXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1VuY29uZGl0aW9uYWw9ZmFsc2VdIHdoZXRoZXIgdGhlIG1lZGlhIHF1ZXJ5IHNob3VsZCBydW4gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBjb25kaXRpb25zIGFyZSBtZXQuIFByaW1hcmlseSBmb3IgaGVscGluZyBvbGRlciBicm93c2VycyBkZWFsIHdpdGggbW9iaWxlLWZpcnN0IGRlc2lnblxuICovXG5mdW5jdGlvbiBNZWRpYVF1ZXJ5KHF1ZXJ5LCBpc1VuY29uZGl0aW9uYWwpIHtcbiAgICB0aGlzLnF1ZXJ5ID0gcXVlcnk7XG4gICAgdGhpcy5pc1VuY29uZGl0aW9uYWwgPSBpc1VuY29uZGl0aW9uYWw7XG4gICAgdGhpcy5oYW5kbGVycyA9IFtdO1xuICAgIHRoaXMubXFsID0gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMubGlzdGVuZXIgPSBmdW5jdGlvbihtcWwpIHtcbiAgICAgICAgLy8gQ2hyb21lIHBhc3NlcyBhbiBNZWRpYVF1ZXJ5TGlzdEV2ZW50IG9iamVjdCwgd2hpbGUgb3RoZXIgYnJvd3NlcnMgcGFzcyBNZWRpYVF1ZXJ5TGlzdCBkaXJlY3RseVxuICAgICAgICBzZWxmLm1xbCA9IG1xbC5jdXJyZW50VGFyZ2V0IHx8IG1xbDtcbiAgICAgICAgc2VsZi5hc3Nlc3MoKTtcbiAgICB9O1xuICAgIHRoaXMubXFsLmFkZExpc3RlbmVyKHRoaXMubGlzdGVuZXIpO1xufVxuXG5NZWRpYVF1ZXJ5LnByb3RvdHlwZSA9IHtcblxuICAgIGNvbnN0dWN0b3IgOiBNZWRpYVF1ZXJ5LFxuXG4gICAgLyoqXG4gICAgICogYWRkIGEgaGFuZGxlciBmb3IgdGhpcyBxdWVyeSwgdHJpZ2dlcmluZyBpZiBhbHJlYWR5IGFjdGl2ZVxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGhhbmRsZXJcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBoYW5kbGVyLm1hdGNoIGNhbGxiYWNrIGZvciB3aGVuIHF1ZXJ5IGlzIGFjdGl2YXRlZFxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtoYW5kbGVyLnVubWF0Y2hdIGNhbGxiYWNrIGZvciB3aGVuIHF1ZXJ5IGlzIGRlYWN0aXZhdGVkXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gW2hhbmRsZXIuc2V0dXBdIGNhbGxiYWNrIGZvciBpbW1lZGlhdGUgZXhlY3V0aW9uIHdoZW4gYSBxdWVyeSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWRcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtoYW5kbGVyLmRlZmVyU2V0dXA9ZmFsc2VdIHNob3VsZCB0aGUgc2V0dXAgY2FsbGJhY2sgYmUgZGVmZXJyZWQgdW50aWwgdGhlIGZpcnN0IHRpbWUgdGhlIGhhbmRsZXIgaXMgbWF0Y2hlZD9cbiAgICAgKi9cbiAgICBhZGRIYW5kbGVyIDogZnVuY3Rpb24oaGFuZGxlcikge1xuICAgICAgICB2YXIgcWggPSBuZXcgUXVlcnlIYW5kbGVyKGhhbmRsZXIpO1xuICAgICAgICB0aGlzLmhhbmRsZXJzLnB1c2gocWgpO1xuXG4gICAgICAgIHRoaXMubWF0Y2hlcygpICYmIHFoLm9uKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHJlbW92ZXMgdGhlIGdpdmVuIGhhbmRsZXIgZnJvbSB0aGUgY29sbGVjdGlvbiwgYW5kIGNhbGxzIGl0J3MgZGVzdHJveSBtZXRob2RzXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdCB8fCBmdW5jdGlvbn0gaGFuZGxlciB0aGUgaGFuZGxlciB0byByZW1vdmVcbiAgICAgKi9cbiAgICByZW1vdmVIYW5kbGVyIDogZnVuY3Rpb24oaGFuZGxlcikge1xuICAgICAgICB2YXIgaGFuZGxlcnMgPSB0aGlzLmhhbmRsZXJzO1xuICAgICAgICBlYWNoKGhhbmRsZXJzLCBmdW5jdGlvbihoLCBpKSB7XG4gICAgICAgICAgICBpZihoLmVxdWFscyhoYW5kbGVyKSkge1xuICAgICAgICAgICAgICAgIGguZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiAhaGFuZGxlcnMuc3BsaWNlKGksMSk7IC8vcmVtb3ZlIGZyb20gYXJyYXkgYW5kIGV4aXQgZWFjaCBlYXJseVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIG1lZGlhIHF1ZXJ5IHNob3VsZCBiZSBjb25zaWRlcmVkIGEgbWF0Y2hcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59IHRydWUgaWYgbWVkaWEgcXVlcnkgY2FuIGJlIGNvbnNpZGVyZWQgYSBtYXRjaCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgICovXG4gICAgbWF0Y2hlcyA6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tcWwubWF0Y2hlcyB8fCB0aGlzLmlzVW5jb25kaXRpb25hbDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ2xlYXJzIGFsbCBoYW5kbGVycyBhbmQgdW5iaW5kcyBldmVudHNcbiAgICAgKi9cbiAgICBjbGVhciA6IGZ1bmN0aW9uKCkge1xuICAgICAgICBlYWNoKHRoaXMuaGFuZGxlcnMsIGZ1bmN0aW9uKGhhbmRsZXIpIHtcbiAgICAgICAgICAgIGhhbmRsZXIuZGVzdHJveSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tcWwucmVtb3ZlTGlzdGVuZXIodGhpcy5saXN0ZW5lcik7XG4gICAgICAgIHRoaXMuaGFuZGxlcnMubGVuZ3RoID0gMDsgLy9jbGVhciBhcnJheVxuICAgIH0sXG5cbiAgICAvKlxuICAgICAgICAqIEFzc2Vzc2VzIHRoZSBxdWVyeSwgdHVybmluZyBvbiBhbGwgaGFuZGxlcnMgaWYgaXQgbWF0Y2hlcywgdHVybmluZyB0aGVtIG9mZiBpZiBpdCBkb2Vzbid0IG1hdGNoXG4gICAgICAgICovXG4gICAgYXNzZXNzIDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhY3Rpb24gPSB0aGlzLm1hdGNoZXMoKSA/ICdvbicgOiAnb2ZmJztcblxuICAgICAgICBlYWNoKHRoaXMuaGFuZGxlcnMsIGZ1bmN0aW9uKGhhbmRsZXIpIHtcbiAgICAgICAgICAgIGhhbmRsZXJbYWN0aW9uXSgpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1lZGlhUXVlcnk7XG4iLCIvKipcbiAqIERlbGVnYXRlIHRvIGhhbmRsZSBhIG1lZGlhIHF1ZXJ5IGJlaW5nIG1hdGNoZWQgYW5kIHVubWF0Y2hlZC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5tYXRjaCBjYWxsYmFjayBmb3Igd2hlbiB0aGUgbWVkaWEgcXVlcnkgaXMgbWF0Y2hlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW29wdGlvbnMudW5tYXRjaF0gY2FsbGJhY2sgZm9yIHdoZW4gdGhlIG1lZGlhIHF1ZXJ5IGlzIHVubWF0Y2hlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW29wdGlvbnMuc2V0dXBdIG9uZS10aW1lIGNhbGxiYWNrIHRyaWdnZXJlZCB0aGUgZmlyc3QgdGltZSBhIHF1ZXJ5IGlzIG1hdGNoZWRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuZGVmZXJTZXR1cD1mYWxzZV0gc2hvdWxkIHRoZSBzZXR1cCBjYWxsYmFjayBiZSBydW4gaW1tZWRpYXRlbHksIHJhdGhlciB0aGFuIGZpcnN0IHRpbWUgcXVlcnkgaXMgbWF0Y2hlZD9cbiAqIEBjb25zdHJ1Y3RvclxuICovXG5mdW5jdGlvbiBRdWVyeUhhbmRsZXIob3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgIW9wdGlvbnMuZGVmZXJTZXR1cCAmJiB0aGlzLnNldHVwKCk7XG59XG5cblF1ZXJ5SGFuZGxlci5wcm90b3R5cGUgPSB7XG5cbiAgICBjb25zdHJ1Y3RvciA6IFF1ZXJ5SGFuZGxlcixcblxuICAgIC8qKlxuICAgICAqIGNvb3JkaW5hdGVzIHNldHVwIG9mIHRoZSBoYW5kbGVyXG4gICAgICpcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKi9cbiAgICBzZXR1cCA6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZih0aGlzLm9wdGlvbnMuc2V0dXApIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zZXR1cCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdGlhbGlzZWQgPSB0cnVlO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBjb29yZGluYXRlcyBzZXR1cCBhbmQgdHJpZ2dlcmluZyBvZiB0aGUgaGFuZGxlclxuICAgICAqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgb24gOiBmdW5jdGlvbigpIHtcbiAgICAgICAgIXRoaXMuaW5pdGlhbGlzZWQgJiYgdGhpcy5zZXR1cCgpO1xuICAgICAgICB0aGlzLm9wdGlvbnMubWF0Y2ggJiYgdGhpcy5vcHRpb25zLm1hdGNoKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGNvb3JkaW5hdGVzIHRoZSB1bm1hdGNoIGV2ZW50IGZvciB0aGUgaGFuZGxlclxuICAgICAqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgb2ZmIDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy51bm1hdGNoICYmIHRoaXMub3B0aW9ucy51bm1hdGNoKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGNhbGxlZCB3aGVuIGEgaGFuZGxlciBpcyB0byBiZSBkZXN0cm95ZWQuXG4gICAgICogZGVsZWdhdGVzIHRvIHRoZSBkZXN0cm95IG9yIHVubWF0Y2ggY2FsbGJhY2tzLCBkZXBlbmRpbmcgb24gYXZhaWxhYmlsaXR5LlxuICAgICAqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgZGVzdHJveSA6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZGVzdHJveSA/IHRoaXMub3B0aW9ucy5kZXN0cm95KCkgOiB0aGlzLm9mZigpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBkZXRlcm1pbmVzIGVxdWFsaXR5IGJ5IHJlZmVyZW5jZS5cbiAgICAgKiBpZiBvYmplY3QgaXMgc3VwcGxpZWQgY29tcGFyZSBvcHRpb25zLCBpZiBmdW5jdGlvbiwgY29tcGFyZSBtYXRjaCBjYWxsYmFja1xuICAgICAqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtvYmplY3QgfHwgZnVuY3Rpb259IFt0YXJnZXRdIHRoZSB0YXJnZXQgZm9yIGNvbXBhcmlzb25cbiAgICAgKi9cbiAgICBlcXVhbHMgOiBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucyA9PT0gdGFyZ2V0IHx8IHRoaXMub3B0aW9ucy5tYXRjaCA9PT0gdGFyZ2V0O1xuICAgIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBRdWVyeUhhbmRsZXI7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGFkZEV2ZW50TGlzdGVuZXJXcmFwO1xuXG52YXIgX2FkZERvbUV2ZW50TGlzdGVuZXIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJhZGQtZG9tLWV2ZW50LWxpc3RlbmVyXCIpKTtcblxudmFyIF9yZWFjdERvbSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0LWRvbVwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXJXcmFwKHRhcmdldCwgZXZlbnRUeXBlLCBjYiwgb3B0aW9uKSB7XG4gIC8qIGVzbGludCBjYW1lbGNhc2U6IDIgKi9cbiAgdmFyIGNhbGxiYWNrID0gX3JlYWN0RG9tLmRlZmF1bHQudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMgPyBmdW5jdGlvbiBydW4oZSkge1xuICAgIF9yZWFjdERvbS5kZWZhdWx0LnVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzKGNiLCBlKTtcbiAgfSA6IGNiO1xuICByZXR1cm4gKDAsIF9hZGREb21FdmVudExpc3RlbmVyLmRlZmF1bHQpKHRhcmdldCwgZXZlbnRUeXBlLCBjYWxsYmFjaywgb3B0aW9uKTtcbn0iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1snZGVmYXVsdCddID0gYWRkRXZlbnRMaXN0ZW5lcjtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgX0V2ZW50T2JqZWN0ID0gcmVxdWlyZSgnLi9FdmVudE9iamVjdCcpO1xuXG52YXIgX0V2ZW50T2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0V2ZW50T2JqZWN0KTtcblxuZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcih0YXJnZXQsIGV2ZW50VHlwZSwgY2FsbGJhY2ssIG9wdGlvbikge1xuICBmdW5jdGlvbiB3cmFwQ2FsbGJhY2soZSkge1xuICAgIHZhciBuZSA9IG5ldyBfRXZlbnRPYmplY3QyWydkZWZhdWx0J10oZSk7XG4gICAgY2FsbGJhY2suY2FsbCh0YXJnZXQsIG5lKTtcbiAgfVxuXG4gIGlmICh0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgIHZhciBfcmV0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB1c2VDYXB0dXJlID0gZmFsc2U7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgdXNlQ2FwdHVyZSA9IG9wdGlvbi5jYXB0dXJlIHx8IGZhbHNlO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdXNlQ2FwdHVyZSA9IG9wdGlvbjtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCB3cmFwQ2FsbGJhY2ssIG9wdGlvbiB8fCBmYWxzZSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHY6IHtcbiAgICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgICAgICAgIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgd3JhcENhbGxiYWNrLCB1c2VDYXB0dXJlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSkoKTtcblxuICAgIGlmICh0eXBlb2YgX3JldCA9PT0gJ29iamVjdCcpIHJldHVybiBfcmV0LnY7XG4gIH0gZWxzZSBpZiAodGFyZ2V0LmF0dGFjaEV2ZW50KSB7XG4gICAgdGFyZ2V0LmF0dGFjaEV2ZW50KCdvbicgKyBldmVudFR5cGUsIHdyYXBDYWxsYmFjayk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgICB0YXJnZXQuZGV0YWNoRXZlbnQoJ29uJyArIGV2ZW50VHlwZSwgd3JhcENhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQGlnbm9yZVxuICogZXZlbnQgb2JqZWN0IGZvciBkb21cbiAqIEBhdXRob3IgeWltaW5naGVAZ21haWwuY29tXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgX0V2ZW50QmFzZU9iamVjdCA9IHJlcXVpcmUoJy4vRXZlbnRCYXNlT2JqZWN0Jyk7XG5cbnZhciBfRXZlbnRCYXNlT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0V2ZW50QmFzZU9iamVjdCk7XG5cbnZhciBfb2JqZWN0QXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgX29iamVjdEFzc2lnbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9vYmplY3RBc3NpZ24pO1xuXG52YXIgVFJVRSA9IHRydWU7XG52YXIgRkFMU0UgPSBmYWxzZTtcbnZhciBjb21tb25Qcm9wcyA9IFsnYWx0S2V5JywgJ2J1YmJsZXMnLCAnY2FuY2VsYWJsZScsICdjdHJsS2V5JywgJ2N1cnJlbnRUYXJnZXQnLCAnZXZlbnRQaGFzZScsICdtZXRhS2V5JywgJ3NoaWZ0S2V5JywgJ3RhcmdldCcsICd0aW1lU3RhbXAnLCAndmlldycsICd0eXBlJ107XG5cbmZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKHcpIHtcbiAgcmV0dXJuIHcgPT09IG51bGwgfHwgdyA9PT0gdW5kZWZpbmVkO1xufVxuXG52YXIgZXZlbnROb3JtYWxpemVycyA9IFt7XG4gIHJlZzogL15rZXkvLFxuICBwcm9wczogWydjaGFyJywgJ2NoYXJDb2RlJywgJ2tleScsICdrZXlDb2RlJywgJ3doaWNoJ10sXG4gIGZpeDogZnVuY3Rpb24gZml4KGV2ZW50LCBuYXRpdmVFdmVudCkge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChldmVudC53aGljaCkpIHtcbiAgICAgIGV2ZW50LndoaWNoID0gIWlzTnVsbE9yVW5kZWZpbmVkKG5hdGl2ZUV2ZW50LmNoYXJDb2RlKSA/IG5hdGl2ZUV2ZW50LmNoYXJDb2RlIDogbmF0aXZlRXZlbnQua2V5Q29kZTtcbiAgICB9XG5cbiAgICAvLyBhZGQgbWV0YUtleSB0byBub24tTWFjIGJyb3dzZXJzICh1c2UgY3RybCBmb3IgUEMgJ3MgYW5kIE1ldGEgZm9yIE1hY3MpXG4gICAgaWYgKGV2ZW50Lm1ldGFLZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXZlbnQubWV0YUtleSA9IGV2ZW50LmN0cmxLZXk7XG4gICAgfVxuICB9XG59LCB7XG4gIHJlZzogL150b3VjaC8sXG4gIHByb3BzOiBbJ3RvdWNoZXMnLCAnY2hhbmdlZFRvdWNoZXMnLCAndGFyZ2V0VG91Y2hlcyddXG59LCB7XG4gIHJlZzogL15oYXNoY2hhbmdlJC8sXG4gIHByb3BzOiBbJ25ld1VSTCcsICdvbGRVUkwnXVxufSwge1xuICByZWc6IC9eZ2VzdHVyZWNoYW5nZSQvaSxcbiAgcHJvcHM6IFsncm90YXRpb24nLCAnc2NhbGUnXVxufSwge1xuICByZWc6IC9eKG1vdXNld2hlZWx8RE9NTW91c2VTY3JvbGwpJC8sXG4gIHByb3BzOiBbXSxcbiAgZml4OiBmdW5jdGlvbiBmaXgoZXZlbnQsIG5hdGl2ZUV2ZW50KSB7XG4gICAgdmFyIGRlbHRhWCA9IHVuZGVmaW5lZDtcbiAgICB2YXIgZGVsdGFZID0gdW5kZWZpbmVkO1xuICAgIHZhciBkZWx0YSA9IHVuZGVmaW5lZDtcbiAgICB2YXIgd2hlZWxEZWx0YSA9IG5hdGl2ZUV2ZW50LndoZWVsRGVsdGE7XG4gICAgdmFyIGF4aXMgPSBuYXRpdmVFdmVudC5heGlzO1xuICAgIHZhciB3aGVlbERlbHRhWSA9IG5hdGl2ZUV2ZW50LndoZWVsRGVsdGFZO1xuICAgIHZhciB3aGVlbERlbHRhWCA9IG5hdGl2ZUV2ZW50LndoZWVsRGVsdGFYO1xuICAgIHZhciBkZXRhaWwgPSBuYXRpdmVFdmVudC5kZXRhaWw7XG5cbiAgICAvLyBpZS93ZWJraXRcbiAgICBpZiAod2hlZWxEZWx0YSkge1xuICAgICAgZGVsdGEgPSB3aGVlbERlbHRhIC8gMTIwO1xuICAgIH1cblxuICAgIC8vIGdlY2tvXG4gICAgaWYgKGRldGFpbCkge1xuICAgICAgLy8gcHJlc3MgY29udHJvbCBlLmRldGFpbCA9PSAxIGVsc2UgZS5kZXRhaWwgPT0gM1xuICAgICAgZGVsdGEgPSAwIC0gKGRldGFpbCAlIDMgPT09IDAgPyBkZXRhaWwgLyAzIDogZGV0YWlsKTtcbiAgICB9XG5cbiAgICAvLyBHZWNrb1xuICAgIGlmIChheGlzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChheGlzID09PSBldmVudC5IT1JJWk9OVEFMX0FYSVMpIHtcbiAgICAgICAgZGVsdGFZID0gMDtcbiAgICAgICAgZGVsdGFYID0gMCAtIGRlbHRhO1xuICAgICAgfSBlbHNlIGlmIChheGlzID09PSBldmVudC5WRVJUSUNBTF9BWElTKSB7XG4gICAgICAgIGRlbHRhWCA9IDA7XG4gICAgICAgIGRlbHRhWSA9IGRlbHRhO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdlYmtpdFxuICAgIGlmICh3aGVlbERlbHRhWSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWx0YVkgPSB3aGVlbERlbHRhWSAvIDEyMDtcbiAgICB9XG4gICAgaWYgKHdoZWVsRGVsdGFYICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlbHRhWCA9IC0xICogd2hlZWxEZWx0YVggLyAxMjA7XG4gICAgfVxuXG4gICAgLy8g6buY6K6kIGRlbHRhWSAoaWUpXG4gICAgaWYgKCFkZWx0YVggJiYgIWRlbHRhWSkge1xuICAgICAgZGVsdGFZID0gZGVsdGE7XG4gICAgfVxuXG4gICAgaWYgKGRlbHRhWCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvKipcbiAgICAgICAqIGRlbHRhWCBvZiBtb3VzZXdoZWVsIGV2ZW50XG4gICAgICAgKiBAcHJvcGVydHkgZGVsdGFYXG4gICAgICAgKiBAbWVtYmVyIEV2ZW50LkRvbUV2ZW50Lk9iamVjdFxuICAgICAgICovXG4gICAgICBldmVudC5kZWx0YVggPSBkZWx0YVg7XG4gICAgfVxuXG4gICAgaWYgKGRlbHRhWSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvKipcbiAgICAgICAqIGRlbHRhWSBvZiBtb3VzZXdoZWVsIGV2ZW50XG4gICAgICAgKiBAcHJvcGVydHkgZGVsdGFZXG4gICAgICAgKiBAbWVtYmVyIEV2ZW50LkRvbUV2ZW50Lk9iamVjdFxuICAgICAgICovXG4gICAgICBldmVudC5kZWx0YVkgPSBkZWx0YVk7XG4gICAgfVxuXG4gICAgaWYgKGRlbHRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8qKlxuICAgICAgICogZGVsdGEgb2YgbW91c2V3aGVlbCBldmVudFxuICAgICAgICogQHByb3BlcnR5IGRlbHRhXG4gICAgICAgKiBAbWVtYmVyIEV2ZW50LkRvbUV2ZW50Lk9iamVjdFxuICAgICAgICovXG4gICAgICBldmVudC5kZWx0YSA9IGRlbHRhO1xuICAgIH1cbiAgfVxufSwge1xuICByZWc6IC9ebW91c2V8Y29udGV4dG1lbnV8Y2xpY2t8bXNwb2ludGVyfCheRE9NTW91c2VTY3JvbGwkKS9pLFxuICBwcm9wczogWydidXR0b25zJywgJ2NsaWVudFgnLCAnY2xpZW50WScsICdidXR0b24nLCAnb2Zmc2V0WCcsICdyZWxhdGVkVGFyZ2V0JywgJ3doaWNoJywgJ2Zyb21FbGVtZW50JywgJ3RvRWxlbWVudCcsICdvZmZzZXRZJywgJ3BhZ2VYJywgJ3BhZ2VZJywgJ3NjcmVlblgnLCAnc2NyZWVuWSddLFxuICBmaXg6IGZ1bmN0aW9uIGZpeChldmVudCwgbmF0aXZlRXZlbnQpIHtcbiAgICB2YXIgZXZlbnREb2MgPSB1bmRlZmluZWQ7XG4gICAgdmFyIGRvYyA9IHVuZGVmaW5lZDtcbiAgICB2YXIgYm9keSA9IHVuZGVmaW5lZDtcbiAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgIHZhciBidXR0b24gPSBuYXRpdmVFdmVudC5idXR0b247XG5cbiAgICAvLyBDYWxjdWxhdGUgcGFnZVgvWSBpZiBtaXNzaW5nIGFuZCBjbGllbnRYL1kgYXZhaWxhYmxlXG4gICAgaWYgKHRhcmdldCAmJiBpc051bGxPclVuZGVmaW5lZChldmVudC5wYWdlWCkgJiYgIWlzTnVsbE9yVW5kZWZpbmVkKG5hdGl2ZUV2ZW50LmNsaWVudFgpKSB7XG4gICAgICBldmVudERvYyA9IHRhcmdldC5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50O1xuICAgICAgZG9jID0gZXZlbnREb2MuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgYm9keSA9IGV2ZW50RG9jLmJvZHk7XG4gICAgICBldmVudC5wYWdlWCA9IG5hdGl2ZUV2ZW50LmNsaWVudFggKyAoZG9jICYmIGRvYy5zY3JvbGxMZWZ0IHx8IGJvZHkgJiYgYm9keS5zY3JvbGxMZWZ0IHx8IDApIC0gKGRvYyAmJiBkb2MuY2xpZW50TGVmdCB8fCBib2R5ICYmIGJvZHkuY2xpZW50TGVmdCB8fCAwKTtcbiAgICAgIGV2ZW50LnBhZ2VZID0gbmF0aXZlRXZlbnQuY2xpZW50WSArIChkb2MgJiYgZG9jLnNjcm9sbFRvcCB8fCBib2R5ICYmIGJvZHkuc2Nyb2xsVG9wIHx8IDApIC0gKGRvYyAmJiBkb2MuY2xpZW50VG9wIHx8IGJvZHkgJiYgYm9keS5jbGllbnRUb3AgfHwgMCk7XG4gICAgfVxuXG4gICAgLy8gd2hpY2ggZm9yIGNsaWNrOiAxID09PSBsZWZ0OyAyID09PSBtaWRkbGU7IDMgPT09IHJpZ2h0XG4gICAgLy8gZG8gbm90IHVzZSBidXR0b25cbiAgICBpZiAoIWV2ZW50LndoaWNoICYmIGJ1dHRvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoYnV0dG9uICYgMSkge1xuICAgICAgICBldmVudC53aGljaCA9IDE7XG4gICAgICB9IGVsc2UgaWYgKGJ1dHRvbiAmIDIpIHtcbiAgICAgICAgZXZlbnQud2hpY2ggPSAzO1xuICAgICAgfSBlbHNlIGlmIChidXR0b24gJiA0KSB7XG4gICAgICAgIGV2ZW50LndoaWNoID0gMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV2ZW50LndoaWNoID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhZGQgcmVsYXRlZFRhcmdldCwgaWYgbmVjZXNzYXJ5XG4gICAgaWYgKCFldmVudC5yZWxhdGVkVGFyZ2V0ICYmIGV2ZW50LmZyb21FbGVtZW50KSB7XG4gICAgICBldmVudC5yZWxhdGVkVGFyZ2V0ID0gZXZlbnQuZnJvbUVsZW1lbnQgPT09IHRhcmdldCA/IGV2ZW50LnRvRWxlbWVudCA6IGV2ZW50LmZyb21FbGVtZW50O1xuICAgIH1cblxuICAgIHJldHVybiBldmVudDtcbiAgfVxufV07XG5cbmZ1bmN0aW9uIHJldFRydWUoKSB7XG4gIHJldHVybiBUUlVFO1xufVxuXG5mdW5jdGlvbiByZXRGYWxzZSgpIHtcbiAgcmV0dXJuIEZBTFNFO1xufVxuXG5mdW5jdGlvbiBEb21FdmVudE9iamVjdChuYXRpdmVFdmVudCkge1xuICB2YXIgdHlwZSA9IG5hdGl2ZUV2ZW50LnR5cGU7XG5cbiAgdmFyIGlzTmF0aXZlID0gdHlwZW9mIG5hdGl2ZUV2ZW50LnN0b3BQcm9wYWdhdGlvbiA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgbmF0aXZlRXZlbnQuY2FuY2VsQnViYmxlID09PSAnYm9vbGVhbic7XG5cbiAgX0V2ZW50QmFzZU9iamVjdDJbJ2RlZmF1bHQnXS5jYWxsKHRoaXMpO1xuXG4gIHRoaXMubmF0aXZlRXZlbnQgPSBuYXRpdmVFdmVudDtcblxuICAvLyBpbiBjYXNlIGRvbSBldmVudCBoYXMgYmVlbiBtYXJrIGFzIGRlZmF1bHQgcHJldmVudGVkIGJ5IGxvd2VyIGRvbSBub2RlXG4gIHZhciBpc0RlZmF1bHRQcmV2ZW50ZWQgPSByZXRGYWxzZTtcbiAgaWYgKCdkZWZhdWx0UHJldmVudGVkJyBpbiBuYXRpdmVFdmVudCkge1xuICAgIGlzRGVmYXVsdFByZXZlbnRlZCA9IG5hdGl2ZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgPyByZXRUcnVlIDogcmV0RmFsc2U7XG4gIH0gZWxzZSBpZiAoJ2dldFByZXZlbnREZWZhdWx0JyBpbiBuYXRpdmVFdmVudCkge1xuICAgIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5MTE1MVxuICAgIGlzRGVmYXVsdFByZXZlbnRlZCA9IG5hdGl2ZUV2ZW50LmdldFByZXZlbnREZWZhdWx0KCkgPyByZXRUcnVlIDogcmV0RmFsc2U7XG4gIH0gZWxzZSBpZiAoJ3JldHVyblZhbHVlJyBpbiBuYXRpdmVFdmVudCkge1xuICAgIGlzRGVmYXVsdFByZXZlbnRlZCA9IG5hdGl2ZUV2ZW50LnJldHVyblZhbHVlID09PSBGQUxTRSA/IHJldFRydWUgOiByZXRGYWxzZTtcbiAgfVxuXG4gIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gaXNEZWZhdWx0UHJldmVudGVkO1xuXG4gIHZhciBmaXhGbnMgPSBbXTtcbiAgdmFyIGZpeEZuID0gdW5kZWZpbmVkO1xuICB2YXIgbCA9IHVuZGVmaW5lZDtcbiAgdmFyIHByb3AgPSB1bmRlZmluZWQ7XG4gIHZhciBwcm9wcyA9IGNvbW1vblByb3BzLmNvbmNhdCgpO1xuXG4gIGV2ZW50Tm9ybWFsaXplcnMuZm9yRWFjaChmdW5jdGlvbiAobm9ybWFsaXplcikge1xuICAgIGlmICh0eXBlLm1hdGNoKG5vcm1hbGl6ZXIucmVnKSkge1xuICAgICAgcHJvcHMgPSBwcm9wcy5jb25jYXQobm9ybWFsaXplci5wcm9wcyk7XG4gICAgICBpZiAobm9ybWFsaXplci5maXgpIHtcbiAgICAgICAgZml4Rm5zLnB1c2gobm9ybWFsaXplci5maXgpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgbCA9IHByb3BzLmxlbmd0aDtcblxuICAvLyBjbG9uZSBwcm9wZXJ0aWVzIG9mIHRoZSBvcmlnaW5hbCBldmVudCBvYmplY3RcbiAgd2hpbGUgKGwpIHtcbiAgICBwcm9wID0gcHJvcHNbLS1sXTtcbiAgICB0aGlzW3Byb3BdID0gbmF0aXZlRXZlbnRbcHJvcF07XG4gIH1cblxuICAvLyBmaXggdGFyZ2V0IHByb3BlcnR5LCBpZiBuZWNlc3NhcnlcbiAgaWYgKCF0aGlzLnRhcmdldCAmJiBpc05hdGl2ZSkge1xuICAgIHRoaXMudGFyZ2V0ID0gbmF0aXZlRXZlbnQuc3JjRWxlbWVudCB8fCBkb2N1bWVudDsgLy8gc3JjRWxlbWVudCBtaWdodCBub3QgYmUgZGVmaW5lZCBlaXRoZXJcbiAgfVxuXG4gIC8vIGNoZWNrIGlmIHRhcmdldCBpcyBhIHRleHQgbm9kZSAoc2FmYXJpKVxuICBpZiAodGhpcy50YXJnZXQgJiYgdGhpcy50YXJnZXQubm9kZVR5cGUgPT09IDMpIHtcbiAgICB0aGlzLnRhcmdldCA9IHRoaXMudGFyZ2V0LnBhcmVudE5vZGU7XG4gIH1cblxuICBsID0gZml4Rm5zLmxlbmd0aDtcblxuICB3aGlsZSAobCkge1xuICAgIGZpeEZuID0gZml4Rm5zWy0tbF07XG4gICAgZml4Rm4odGhpcywgbmF0aXZlRXZlbnQpO1xuICB9XG5cbiAgdGhpcy50aW1lU3RhbXAgPSBuYXRpdmVFdmVudC50aW1lU3RhbXAgfHwgRGF0ZS5ub3coKTtcbn1cblxudmFyIEV2ZW50QmFzZU9iamVjdFByb3RvID0gX0V2ZW50QmFzZU9iamVjdDJbJ2RlZmF1bHQnXS5wcm90b3R5cGU7XG5cbigwLCBfb2JqZWN0QXNzaWduMlsnZGVmYXVsdCddKShEb21FdmVudE9iamVjdC5wcm90b3R5cGUsIEV2ZW50QmFzZU9iamVjdFByb3RvLCB7XG4gIGNvbnN0cnVjdG9yOiBEb21FdmVudE9iamVjdCxcblxuICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24gcHJldmVudERlZmF1bHQoKSB7XG4gICAgdmFyIGUgPSB0aGlzLm5hdGl2ZUV2ZW50O1xuXG4gICAgLy8gaWYgcHJldmVudERlZmF1bHQgZXhpc3RzIHJ1biBpdCBvbiB0aGUgb3JpZ2luYWwgZXZlbnRcbiAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBvdGhlcndpc2Ugc2V0IHRoZSByZXR1cm5WYWx1ZSBwcm9wZXJ0eSBvZiB0aGUgb3JpZ2luYWwgZXZlbnQgdG8gRkFMU0UgKElFKVxuICAgICAgZS5yZXR1cm5WYWx1ZSA9IEZBTFNFO1xuICAgIH1cblxuICAgIEV2ZW50QmFzZU9iamVjdFByb3RvLnByZXZlbnREZWZhdWx0LmNhbGwodGhpcyk7XG4gIH0sXG5cbiAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbiBzdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgdmFyIGUgPSB0aGlzLm5hdGl2ZUV2ZW50O1xuXG4gICAgLy8gaWYgc3RvcFByb3BhZ2F0aW9uIGV4aXN0cyBydW4gaXQgb24gdGhlIG9yaWdpbmFsIGV2ZW50XG4gICAgaWYgKGUuc3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBvdGhlcndpc2Ugc2V0IHRoZSBjYW5jZWxCdWJibGUgcHJvcGVydHkgb2YgdGhlIG9yaWdpbmFsIGV2ZW50IHRvIFRSVUUgKElFKVxuICAgICAgZS5jYW5jZWxCdWJibGUgPSBUUlVFO1xuICAgIH1cblxuICAgIEV2ZW50QmFzZU9iamVjdFByb3RvLnN0b3BQcm9wYWdhdGlvbi5jYWxsKHRoaXMpO1xuICB9XG59KTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gRG9tRXZlbnRPYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIEBpZ25vcmVcbiAqIGJhc2UgZXZlbnQgb2JqZWN0IGZvciBjdXN0b20gYW5kIGRvbSBldmVudC5cbiAqIEBhdXRob3IgeWltaW5naGVAZ21haWwuY29tXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5mdW5jdGlvbiByZXR1cm5GYWxzZSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiByZXR1cm5UcnVlKCkge1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gRXZlbnRCYXNlT2JqZWN0KCkge1xuICB0aGlzLnRpbWVTdGFtcCA9IERhdGUubm93KCk7XG4gIHRoaXMudGFyZ2V0ID0gdW5kZWZpbmVkO1xuICB0aGlzLmN1cnJlbnRUYXJnZXQgPSB1bmRlZmluZWQ7XG59XG5cbkV2ZW50QmFzZU9iamVjdC5wcm90b3R5cGUgPSB7XG4gIGlzRXZlbnRPYmplY3Q6IDEsXG5cbiAgY29uc3RydWN0b3I6IEV2ZW50QmFzZU9iamVjdCxcblxuICBpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLFxuXG4gIGlzUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSxcblxuICBpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG5cbiAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uIHByZXZlbnREZWZhdWx0KCkge1xuICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuVHJ1ZTtcbiAgfSxcblxuICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uIHN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcbiAgfSxcblxuICBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpIHtcbiAgICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcbiAgICAvLyBmaXhlZCAxLjJcbiAgICAvLyBjYWxsIHN0b3BQcm9wYWdhdGlvbiBpbXBsaWNpdGx5XG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfSxcblxuICBoYWx0OiBmdW5jdGlvbiBoYWx0KGltbWVkaWF0ZSkge1xuICAgIGlmIChpbW1lZGlhdGUpIHtcbiAgICAgIHRoaXMuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMucHJldmVudERlZmF1bHQoKTtcbiAgfVxufTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBFdmVudEJhc2VPYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdOyIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IGNvbmZpcm07XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBSZWFjdERPTSA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdC1kb21cIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9pY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vaWNvblwiKSk7XG5cbnZhciBfTW9kYWwgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwiLi9Nb2RhbFwiKSk7XG5cbnZhciBfQWN0aW9uQnV0dG9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9BY3Rpb25CdXR0b25cIikpO1xuXG52YXIgX2xvY2FsZSA9IHJlcXVpcmUoXCIuL2xvY2FsZVwiKTtcblxudmFyIF93YXJuaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vX3V0aWwvd2FybmluZ1wiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG52YXIgSVNfUkVBQ1RfMTYgPSAhIVJlYWN0RE9NLmNyZWF0ZVBvcnRhbDtcblxudmFyIENvbmZpcm1EaWFsb2cgPSBmdW5jdGlvbiBDb25maXJtRGlhbG9nKHByb3BzKSB7XG4gIHZhciBvbkNhbmNlbCA9IHByb3BzLm9uQ2FuY2VsLFxuICAgICAgb25PayA9IHByb3BzLm9uT2ssXG4gICAgICBjbG9zZSA9IHByb3BzLmNsb3NlLFxuICAgICAgekluZGV4ID0gcHJvcHMuekluZGV4LFxuICAgICAgYWZ0ZXJDbG9zZSA9IHByb3BzLmFmdGVyQ2xvc2UsXG4gICAgICB2aXNpYmxlID0gcHJvcHMudmlzaWJsZSxcbiAgICAgIGtleWJvYXJkID0gcHJvcHMua2V5Ym9hcmQsXG4gICAgICBjZW50ZXJlZCA9IHByb3BzLmNlbnRlcmVkLFxuICAgICAgZ2V0Q29udGFpbmVyID0gcHJvcHMuZ2V0Q29udGFpbmVyLFxuICAgICAgbWFza1N0eWxlID0gcHJvcHMubWFza1N0eWxlLFxuICAgICAgb2tCdXR0b25Qcm9wcyA9IHByb3BzLm9rQnV0dG9uUHJvcHMsXG4gICAgICBjYW5jZWxCdXR0b25Qcm9wcyA9IHByb3BzLmNhbmNlbEJ1dHRvblByb3BzLFxuICAgICAgX3Byb3BzJGljb25UeXBlID0gcHJvcHMuaWNvblR5cGUsXG4gICAgICBpY29uVHlwZSA9IF9wcm9wcyRpY29uVHlwZSA9PT0gdm9pZCAwID8gJ3F1ZXN0aW9uLWNpcmNsZScgOiBfcHJvcHMkaWNvblR5cGU7XG4gICgwLCBfd2FybmluZ1tcImRlZmF1bHRcIl0pKCEoJ2ljb25UeXBlJyBpbiBwcm9wcyksICdNb2RhbCcsIFwiVGhlIHByb3BlcnR5ICdpY29uVHlwZScgaXMgZGVwcmVjYXRlZC4gVXNlIHRoZSBwcm9wZXJ0eSAnaWNvbicgaW5zdGVhZC5cIik7IC8vIOaUr+aMgeS8oOWFpXsgaWNvbjogbnVsbCB95p2l6ZqQ6JePYE1vZGFsLmNvbmZpcm1g6buY6K6k55qESWNvblxuXG4gIHZhciBpY29uID0gcHJvcHMuaWNvbiA9PT0gdW5kZWZpbmVkID8gaWNvblR5cGUgOiBwcm9wcy5pY29uO1xuICB2YXIgb2tUeXBlID0gcHJvcHMub2tUeXBlIHx8ICdwcmltYXJ5JztcbiAgdmFyIHByZWZpeENscyA9IHByb3BzLnByZWZpeENscyB8fCAnYW50LW1vZGFsJztcbiAgdmFyIGNvbnRlbnRQcmVmaXhDbHMgPSBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWNvbmZpcm1cIik7IC8vIOm7mOiupOS4uiB0cnVl77yM5L+d5oyB5ZCR5LiL5YW85a65XG5cbiAgdmFyIG9rQ2FuY2VsID0gJ29rQ2FuY2VsJyBpbiBwcm9wcyA/IHByb3BzLm9rQ2FuY2VsIDogdHJ1ZTtcbiAgdmFyIHdpZHRoID0gcHJvcHMud2lkdGggfHwgNDE2O1xuICB2YXIgc3R5bGUgPSBwcm9wcy5zdHlsZSB8fCB7fTtcbiAgdmFyIG1hc2sgPSBwcm9wcy5tYXNrID09PSB1bmRlZmluZWQgPyB0cnVlIDogcHJvcHMubWFzazsgLy8g6buY6K6k5Li6IGZhbHNl77yM5L+d5oyB5pen54mI6buY6K6k6KGM5Li6XG5cbiAgdmFyIG1hc2tDbG9zYWJsZSA9IHByb3BzLm1hc2tDbG9zYWJsZSA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBwcm9wcy5tYXNrQ2xvc2FibGU7XG4gIHZhciBydW50aW1lTG9jYWxlID0gKDAsIF9sb2NhbGUuZ2V0Q29uZmlybUxvY2FsZSkoKTtcbiAgdmFyIG9rVGV4dCA9IHByb3BzLm9rVGV4dCB8fCAob2tDYW5jZWwgPyBydW50aW1lTG9jYWxlLm9rVGV4dCA6IHJ1bnRpbWVMb2NhbGUuanVzdE9rVGV4dCk7XG4gIHZhciBjYW5jZWxUZXh0ID0gcHJvcHMuY2FuY2VsVGV4dCB8fCBydW50aW1lTG9jYWxlLmNhbmNlbFRleHQ7XG4gIHZhciBhdXRvRm9jdXNCdXR0b24gPSBwcm9wcy5hdXRvRm9jdXNCdXR0b24gPT09IG51bGwgPyBmYWxzZSA6IHByb3BzLmF1dG9Gb2N1c0J1dHRvbiB8fCAnb2snO1xuICB2YXIgdHJhbnNpdGlvbk5hbWUgPSBwcm9wcy50cmFuc2l0aW9uTmFtZSB8fCAnem9vbSc7XG4gIHZhciBtYXNrVHJhbnNpdGlvbk5hbWUgPSBwcm9wcy5tYXNrVHJhbnNpdGlvbk5hbWUgfHwgJ2ZhZGUnO1xuICB2YXIgY2xhc3NTdHJpbmcgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShjb250ZW50UHJlZml4Q2xzLCBcIlwiLmNvbmNhdChjb250ZW50UHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KHByb3BzLnR5cGUpLCBwcm9wcy5jbGFzc05hbWUpO1xuICB2YXIgY2FuY2VsQnV0dG9uID0gb2tDYW5jZWwgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX0FjdGlvbkJ1dHRvbltcImRlZmF1bHRcIl0sIHtcbiAgICBhY3Rpb25Gbjogb25DYW5jZWwsXG4gICAgY2xvc2VNb2RhbDogY2xvc2UsXG4gICAgYXV0b0ZvY3VzOiBhdXRvRm9jdXNCdXR0b24gPT09ICdjYW5jZWwnLFxuICAgIGJ1dHRvblByb3BzOiBjYW5jZWxCdXR0b25Qcm9wc1xuICB9LCBjYW5jZWxUZXh0KTtcbiAgdmFyIGljb25Ob2RlID0gdHlwZW9mIGljb24gPT09ICdzdHJpbmcnID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2ljb25bXCJkZWZhdWx0XCJdLCB7XG4gICAgdHlwZTogaWNvblxuICB9KSA6IGljb247XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfTW9kYWxbXCJkZWZhdWx0XCJdLCB7XG4gICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgY2xhc3NOYW1lOiBjbGFzc1N0cmluZyxcbiAgICB3cmFwQ2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KGNvbnRlbnRQcmVmaXhDbHMsIFwiLWNlbnRlcmVkXCIpLCAhIXByb3BzLmNlbnRlcmVkKSksXG4gICAgb25DYW5jZWw6IGZ1bmN0aW9uIG9uQ2FuY2VsKCkge1xuICAgICAgcmV0dXJuIGNsb3NlKHtcbiAgICAgICAgdHJpZ2dlckNhbmNlbDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICB2aXNpYmxlOiB2aXNpYmxlLFxuICAgIHRpdGxlOiBcIlwiLFxuICAgIHRyYW5zaXRpb25OYW1lOiB0cmFuc2l0aW9uTmFtZSxcbiAgICBmb290ZXI6IFwiXCIsXG4gICAgbWFza1RyYW5zaXRpb25OYW1lOiBtYXNrVHJhbnNpdGlvbk5hbWUsXG4gICAgbWFzazogbWFzayxcbiAgICBtYXNrQ2xvc2FibGU6IG1hc2tDbG9zYWJsZSxcbiAgICBtYXNrU3R5bGU6IG1hc2tTdHlsZSxcbiAgICBzdHlsZTogc3R5bGUsXG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIHpJbmRleDogekluZGV4LFxuICAgIGFmdGVyQ2xvc2U6IGFmdGVyQ2xvc2UsXG4gICAga2V5Ym9hcmQ6IGtleWJvYXJkLFxuICAgIGNlbnRlcmVkOiBjZW50ZXJlZCxcbiAgICBnZXRDb250YWluZXI6IGdldENvbnRhaW5lclxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChjb250ZW50UHJlZml4Q2xzLCBcIi1ib2R5LXdyYXBwZXJcIilcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQoY29udGVudFByZWZpeENscywgXCItYm9keVwiKVxuICB9LCBpY29uTm9kZSwgcHJvcHMudGl0bGUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQoY29udGVudFByZWZpeENscywgXCItdGl0bGVcIilcbiAgfSwgcHJvcHMudGl0bGUpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChjb250ZW50UHJlZml4Q2xzLCBcIi1jb250ZW50XCIpXG4gIH0sIHByb3BzLmNvbnRlbnQpKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQoY29udGVudFByZWZpeENscywgXCItYnRuc1wiKVxuICB9LCBjYW5jZWxCdXR0b24sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9BY3Rpb25CdXR0b25bXCJkZWZhdWx0XCJdLCB7XG4gICAgdHlwZTogb2tUeXBlLFxuICAgIGFjdGlvbkZuOiBvbk9rLFxuICAgIGNsb3NlTW9kYWw6IGNsb3NlLFxuICAgIGF1dG9Gb2N1czogYXV0b0ZvY3VzQnV0dG9uID09PSAnb2snLFxuICAgIGJ1dHRvblByb3BzOiBva0J1dHRvblByb3BzXG4gIH0sIG9rVGV4dCkpKSk7XG59O1xuXG5mdW5jdGlvbiBjb25maXJtKGNvbmZpZykge1xuICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG5cbiAgdmFyIGN1cnJlbnRDb25maWcgPSBfZXh0ZW5kcyhfZXh0ZW5kcyh7fSwgY29uZmlnKSwge1xuICAgIGNsb3NlOiBjbG9zZSxcbiAgICB2aXNpYmxlOiB0cnVlXG4gIH0pO1xuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgdmFyIHVubW91bnRSZXN1bHQgPSBSZWFjdERPTS51bm1vdW50Q29tcG9uZW50QXROb2RlKGRpdik7XG5cbiAgICBpZiAodW5tb3VudFJlc3VsdCAmJiBkaXYucGFyZW50Tm9kZSkge1xuICAgICAgZGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZGl2KTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgdmFyIHRyaWdnZXJDYW5jZWwgPSBhcmdzLnNvbWUoZnVuY3Rpb24gKHBhcmFtKSB7XG4gICAgICByZXR1cm4gcGFyYW0gJiYgcGFyYW0udHJpZ2dlckNhbmNlbDtcbiAgICB9KTtcblxuICAgIGlmIChjb25maWcub25DYW5jZWwgJiYgdHJpZ2dlckNhbmNlbCkge1xuICAgICAgY29uZmlnLm9uQ2FuY2VsLmFwcGx5KGNvbmZpZywgYXJncyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfTW9kYWwuZGVzdHJveUZucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGZuID0gX01vZGFsLmRlc3Ryb3lGbnNbaV07IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuXG4gICAgICBpZiAoZm4gPT09IGNsb3NlKSB7XG4gICAgICAgIF9Nb2RhbC5kZXN0cm95Rm5zLnNwbGljZShpLCAxKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW5kZXIocHJvcHMpIHtcbiAgICBSZWFjdERPTS5yZW5kZXIoIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENvbmZpcm1EaWFsb2csIHByb3BzKSwgZGl2KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIGN1cnJlbnRDb25maWcgPSBfZXh0ZW5kcyhfZXh0ZW5kcyh7fSwgY3VycmVudENvbmZpZyksIHtcbiAgICAgIHZpc2libGU6IGZhbHNlLFxuICAgICAgYWZ0ZXJDbG9zZTogZGVzdHJveS5iaW5kLmFwcGx5KGRlc3Ryb3ksIFt0aGlzXS5jb25jYXQoYXJncykpXG4gICAgfSk7XG5cbiAgICBpZiAoSVNfUkVBQ1RfMTYpIHtcbiAgICAgIHJlbmRlcihjdXJyZW50Q29uZmlnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVzdHJveS5hcHBseSh2b2lkIDAsIGFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZShuZXdDb25maWcpIHtcbiAgICBjdXJyZW50Q29uZmlnID0gX2V4dGVuZHMoX2V4dGVuZHMoe30sIGN1cnJlbnRDb25maWcpLCBuZXdDb25maWcpO1xuICAgIHJlbmRlcihjdXJyZW50Q29uZmlnKTtcbiAgfVxuXG4gIHJlbmRlcihjdXJyZW50Q29uZmlnKTtcblxuICBfTW9kYWwuZGVzdHJveUZucy5wdXNoKGNsb3NlKTtcblxuICByZXR1cm4ge1xuICAgIGRlc3Ryb3k6IGNsb3NlLFxuICAgIHVwZGF0ZTogdXBkYXRlXG4gIH07XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIFJlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIFJlYWN0RE9NID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0LWRvbVwiKSk7XG5cbnZhciBfYnV0dG9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vYnV0dG9uXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxudmFyIEFjdGlvbkJ1dHRvbiA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQWN0aW9uQnV0dG9uLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEFjdGlvbkJ1dHRvbik7XG5cbiAgZnVuY3Rpb24gQWN0aW9uQnV0dG9uKHByb3BzKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFjdGlvbkJ1dHRvbik7XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKTtcblxuICAgIF90aGlzLm9uQ2xpY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBhY3Rpb25GbiA9IF90aGlzJHByb3BzLmFjdGlvbkZuLFxuICAgICAgICAgIGNsb3NlTW9kYWwgPSBfdGhpcyRwcm9wcy5jbG9zZU1vZGFsO1xuXG4gICAgICBpZiAoYWN0aW9uRm4pIHtcbiAgICAgICAgdmFyIHJldDtcblxuICAgICAgICBpZiAoYWN0aW9uRm4ubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0ID0gYWN0aW9uRm4oY2xvc2VNb2RhbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0ID0gYWN0aW9uRm4oKTtcblxuICAgICAgICAgIGlmICghcmV0KSB7XG4gICAgICAgICAgICBjbG9zZU1vZGFsKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJldCAmJiByZXQudGhlbikge1xuICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGxvYWRpbmc6IHRydWVcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vIEl0J3MgdW5uZWNlc3NhcnkgdG8gc2V0IGxvYWRpbmc9ZmFsc2UsIGZvciB0aGUgTW9kYWwgd2lsbCBiZSB1bm1vdW50ZWQgYWZ0ZXIgY2xvc2UuXG4gICAgICAgICAgICAvLyB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XG4gICAgICAgICAgICBjbG9zZU1vZGFsLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgICAgICAgICB9LCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgLy8gRW1pdCBlcnJvciB3aGVuIGNhdGNoIHByb21pc2UgcmVqZWN0XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTsgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy82MTgzXG5cbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbG9zZU1vZGFsKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgbG9hZGluZzogZmFsc2VcbiAgICB9O1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhBY3Rpb25CdXR0b24sIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgIHZhciAkdGhpcyA9IFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpO1xuICAgICAgICB0aGlzLnRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiAkdGhpcy5mb2N1cygpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SWQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgdHlwZSA9IF90aGlzJHByb3BzMi50eXBlLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMyLmNoaWxkcmVuLFxuICAgICAgICAgIGJ1dHRvblByb3BzID0gX3RoaXMkcHJvcHMyLmJ1dHRvblByb3BzO1xuICAgICAgdmFyIGxvYWRpbmcgPSB0aGlzLnN0YXRlLmxvYWRpbmc7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2J1dHRvbltcImRlZmF1bHRcIl0sIF9leHRlbmRzKHtcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgb25DbGljazogdGhpcy5vbkNsaWNrLFxuICAgICAgICBsb2FkaW5nOiBsb2FkaW5nXG4gICAgICB9LCBidXR0b25Qcm9wcyksIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQWN0aW9uQnV0dG9uO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IEFjdGlvbkJ1dHRvbjsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgUmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgUHJvcFR5cGVzID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInByb3AtdHlwZXNcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9jcmVhdGVET01Gb3JtID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtZm9ybS9saWIvY3JlYXRlRE9NRm9ybVwiKSk7XG5cbnZhciBfY3JlYXRlRm9ybUZpZWxkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmMtZm9ybS9saWIvY3JlYXRlRm9ybUZpZWxkXCIpKTtcblxudmFyIF9vbWl0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwib21pdC5qc1wiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG52YXIgX3R5cGUgPSByZXF1aXJlKFwiLi4vX3V0aWwvdHlwZVwiKTtcblxudmFyIF93YXJuaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vX3V0aWwvd2FybmluZ1wiKSk7XG5cbnZhciBfRm9ybUl0ZW0gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL0Zvcm1JdGVtXCIpKTtcblxudmFyIF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi9jb25zdGFudHNcIik7XG5cbnZhciBfY29udGV4dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vY29udGV4dFwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbnZhciBGb3JtTGF5b3V0cyA9ICgwLCBfdHlwZS50dXBsZSkoJ2hvcml6b250YWwnLCAnaW5saW5lJywgJ3ZlcnRpY2FsJyk7XG5cbnZhciBGb3JtID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhGb3JtLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEZvcm0pO1xuXG4gIGZ1bmN0aW9uIEZvcm0ocHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRm9ybSk7XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKTtcblxuICAgIF90aGlzLnJlbmRlckZvcm0gPSBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgdmFyIF9jbGFzc05hbWVzO1xuXG4gICAgICB2YXIgZ2V0UHJlZml4Q2xzID0gX3JlZi5nZXRQcmVmaXhDbHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBjdXN0b21pemVQcmVmaXhDbHMgPSBfdGhpcyRwcm9wcy5wcmVmaXhDbHMsXG4gICAgICAgICAgaGlkZVJlcXVpcmVkTWFyayA9IF90aGlzJHByb3BzLmhpZGVSZXF1aXJlZE1hcmssXG4gICAgICAgICAgX3RoaXMkcHJvcHMkY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzJGNsYXNzTmFtZSA9PT0gdm9pZCAwID8gJycgOiBfdGhpcyRwcm9wcyRjbGFzc05hbWUsXG4gICAgICAgICAgbGF5b3V0ID0gX3RoaXMkcHJvcHMubGF5b3V0O1xuICAgICAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygnZm9ybScsIGN1c3RvbWl6ZVByZWZpeENscyk7XG4gICAgICB2YXIgZm9ybUNsYXNzTmFtZSA9ICgwLCBfY2xhc3NuYW1lc1tcImRlZmF1bHRcIl0pKHByZWZpeENscywgKF9jbGFzc05hbWVzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ob3Jpem9udGFsXCIpLCBsYXlvdXQgPT09ICdob3Jpem9udGFsJyksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi12ZXJ0aWNhbFwiKSwgbGF5b3V0ID09PSAndmVydGljYWwnKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWlubGluZVwiKSwgbGF5b3V0ID09PSAnaW5saW5lJyksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1oaWRlLXJlcXVpcmVkLW1hcmtcIiksIGhpZGVSZXF1aXJlZE1hcmspLCBfY2xhc3NOYW1lcyksIGNsYXNzTmFtZSk7XG4gICAgICB2YXIgZm9ybVByb3BzID0gKDAsIF9vbWl0W1wiZGVmYXVsdFwiXSkoX3RoaXMucHJvcHMsIFsncHJlZml4Q2xzJywgJ2NsYXNzTmFtZScsICdsYXlvdXQnLCAnZm9ybScsICdoaWRlUmVxdWlyZWRNYXJrJywgJ3dyYXBwZXJDb2wnLCAnbGFiZWxBbGlnbicsICdsYWJlbENvbCcsICdjb2xvbiddKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImZvcm1cIiwgX2V4dGVuZHMoe30sIGZvcm1Qcm9wcywge1xuICAgICAgICBjbGFzc05hbWU6IGZvcm1DbGFzc05hbWVcbiAgICAgIH0pKTtcbiAgICB9O1xuXG4gICAgKDAsIF93YXJuaW5nW1wiZGVmYXVsdFwiXSkoIXByb3BzLmZvcm0sICdGb3JtJywgJ0l0IGlzIHVubmVjZXNzYXJ5IHRvIHBhc3MgYGZvcm1gIHRvIGBGb3JtYCBhZnRlciBhbnRkQDEuNy4wLicpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhGb3JtLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgd3JhcHBlckNvbCA9IF90aGlzJHByb3BzMi53cmFwcGVyQ29sLFxuICAgICAgICAgIGxhYmVsQWxpZ24gPSBfdGhpcyRwcm9wczIubGFiZWxBbGlnbixcbiAgICAgICAgICBsYWJlbENvbCA9IF90aGlzJHByb3BzMi5sYWJlbENvbCxcbiAgICAgICAgICBsYXlvdXQgPSBfdGhpcyRwcm9wczIubGF5b3V0LFxuICAgICAgICAgIGNvbG9uID0gX3RoaXMkcHJvcHMyLmNvbG9uO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jb250ZXh0W1wiZGVmYXVsdFwiXS5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIHdyYXBwZXJDb2w6IHdyYXBwZXJDb2wsXG4gICAgICAgICAgbGFiZWxBbGlnbjogbGFiZWxBbGlnbixcbiAgICAgICAgICBsYWJlbENvbDogbGFiZWxDb2wsXG4gICAgICAgICAgdmVydGljYWw6IGxheW91dCA9PT0gJ3ZlcnRpY2FsJyxcbiAgICAgICAgICBjb2xvbjogY29sb25cbiAgICAgICAgfVxuICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnN1bWVyLCBudWxsLCB0aGlzLnJlbmRlckZvcm0pKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRm9ybTtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBGb3JtO1xuRm9ybS5kZWZhdWx0UHJvcHMgPSB7XG4gIGNvbG9uOiB0cnVlLFxuICBsYXlvdXQ6ICdob3Jpem9udGFsJyxcbiAgaGlkZVJlcXVpcmVkTWFyazogZmFsc2UsXG4gIG9uU3VibWl0OiBmdW5jdGlvbiBvblN1Ym1pdChlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG59O1xuRm9ybS5wcm9wVHlwZXMgPSB7XG4gIHByZWZpeENsczogUHJvcFR5cGVzLnN0cmluZyxcbiAgbGF5b3V0OiBQcm9wVHlwZXMub25lT2YoRm9ybUxheW91dHMpLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLmFueSxcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLFxuICBoaWRlUmVxdWlyZWRNYXJrOiBQcm9wVHlwZXMuYm9vbCxcbiAgY29sb246IFByb3BUeXBlcy5ib29sXG59O1xuRm9ybS5JdGVtID0gX0Zvcm1JdGVtW1wiZGVmYXVsdFwiXTtcbkZvcm0uY3JlYXRlRm9ybUZpZWxkID0gX2NyZWF0ZUZvcm1GaWVsZFtcImRlZmF1bHRcIl07XG5cbkZvcm0uY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKCkge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gIHJldHVybiAoMCwgX2NyZWF0ZURPTUZvcm1bXCJkZWZhdWx0XCJdKShfZXh0ZW5kcyhfZXh0ZW5kcyh7XG4gICAgZmllbGROYW1lUHJvcDogJ2lkJ1xuICB9LCBvcHRpb25zKSwge1xuICAgIGZpZWxkTWV0YVByb3A6IF9jb25zdGFudHMuRklFTERfTUVUQV9QUk9QLFxuICAgIGZpZWxkRGF0YVByb3A6IF9jb25zdGFudHMuRklFTERfREFUQV9QUk9QXG4gIH0pKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2V4dGVuZHMyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnKTtcblxudmFyIF9leHRlbmRzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4dGVuZHMyKTtcblxudmFyIF9yZWFjdERvbSA9IHJlcXVpcmUoJ3JlYWN0LWRvbScpO1xuXG52YXIgX3JlYWN0RG9tMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0RG9tKTtcblxudmFyIF9kb21TY3JvbGxJbnRvVmlldyA9IHJlcXVpcmUoJ2RvbS1zY3JvbGwtaW50by12aWV3Jyk7XG5cbnZhciBfZG9tU2Nyb2xsSW50b1ZpZXcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZG9tU2Nyb2xsSW50b1ZpZXcpO1xuXG52YXIgX2hhcyA9IHJlcXVpcmUoJ2xvZGFzaC9oYXMnKTtcblxudmFyIF9oYXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFzKTtcblxudmFyIF9jcmVhdGVCYXNlRm9ybSA9IHJlcXVpcmUoJy4vY3JlYXRlQmFzZUZvcm0nKTtcblxudmFyIF9jcmVhdGVCYXNlRm9ybTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVCYXNlRm9ybSk7XG5cbnZhciBfY3JlYXRlRm9ybSA9IHJlcXVpcmUoJy4vY3JlYXRlRm9ybScpO1xuXG52YXIgX3V0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGNvbXB1dGVkU3R5bGUoZWwsIHByb3ApIHtcbiAgdmFyIGdldENvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZTtcbiAgdmFyIHN0eWxlID1cbiAgLy8gSWYgd2UgaGF2ZSBnZXRDb21wdXRlZFN0eWxlXG4gIGdldENvbXB1dGVkU3R5bGUgP1xuICAvLyBRdWVyeSBpdFxuICAvLyBUT0RPOiBGcm9tIENTUy1RdWVyeSBub3Rlcywgd2UgbWlnaHQgbmVlZCAobm9kZSwgbnVsbCkgZm9yIEZGXG4gIGdldENvbXB1dGVkU3R5bGUoZWwpIDpcblxuICAvLyBPdGhlcndpc2UsIHdlIGFyZSBpbiBJRSBhbmQgdXNlIGN1cnJlbnRTdHlsZVxuICBlbC5jdXJyZW50U3R5bGU7XG4gIGlmIChzdHlsZSkge1xuICAgIHJldHVybiBzdHlsZVtcbiAgICAvLyBTd2l0Y2ggdG8gY2FtZWxDYXNlIGZvciBDU1NPTVxuICAgIC8vIERFVjogR3JhYmJlZCBmcm9tIGpRdWVyeVxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L2Jsb2IvMS45LXN0YWJsZS9zcmMvY3NzLmpzI0wxOTEtTDE5NFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L2Jsb2IvMS45LXN0YWJsZS9zcmMvY29yZS5qcyNMNTkzLUw1OTdcbiAgICBwcm9wLnJlcGxhY2UoLy0oXFx3KS9naSwgZnVuY3Rpb24gKHdvcmQsIGxldHRlcikge1xuICAgICAgcmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpO1xuICAgIH0pXTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRTY3JvbGxhYmxlQ29udGFpbmVyKG4pIHtcbiAgdmFyIG5vZGUgPSBuO1xuICB2YXIgbm9kZU5hbWUgPSB2b2lkIDA7XG4gIC8qIGVzbGludCBuby1jb25kLWFzc2lnbjowICovXG4gIHdoaWxlICgobm9kZU5hbWUgPSBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpICE9PSAnYm9keScpIHtcbiAgICB2YXIgb3ZlcmZsb3dZID0gY29tcHV0ZWRTdHlsZShub2RlLCAnb3ZlcmZsb3dZJyk7XG4gICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM2OTAwNDA3LzMwNDA2MDVcbiAgICBpZiAobm9kZSAhPT0gbiAmJiAob3ZlcmZsb3dZID09PSAnYXV0bycgfHwgb3ZlcmZsb3dZID09PSAnc2Nyb2xsJykgJiYgbm9kZS5zY3JvbGxIZWlnaHQgPiBub2RlLmNsaWVudEhlaWdodCkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gIH1cbiAgcmV0dXJuIG5vZGVOYW1lID09PSAnYm9keScgPyBub2RlLm93bmVyRG9jdW1lbnQgOiBub2RlO1xufVxuXG52YXIgbWl4aW4gPSB7XG4gIGdldEZvcm06IGZ1bmN0aW9uIGdldEZvcm0oKSB7XG4gICAgcmV0dXJuICgwLCBfZXh0ZW5kczNbJ2RlZmF1bHQnXSkoe30sIF9jcmVhdGVGb3JtLm1peGluLmdldEZvcm0uY2FsbCh0aGlzKSwge1xuICAgICAgdmFsaWRhdGVGaWVsZHNBbmRTY3JvbGw6IHRoaXMudmFsaWRhdGVGaWVsZHNBbmRTY3JvbGxcbiAgICB9KTtcbiAgfSxcbiAgdmFsaWRhdGVGaWVsZHNBbmRTY3JvbGw6IGZ1bmN0aW9uIHZhbGlkYXRlRmllbGRzQW5kU2Nyb2xsKG5zLCBvcHQsIGNiKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfZ2V0UGFyYW1zID0gKDAsIF91dGlscy5nZXRQYXJhbXMpKG5zLCBvcHQsIGNiKSxcbiAgICAgICAgbmFtZXMgPSBfZ2V0UGFyYW1zLm5hbWVzLFxuICAgICAgICBjYWxsYmFjayA9IF9nZXRQYXJhbXMuY2FsbGJhY2ssXG4gICAgICAgIG9wdGlvbnMgPSBfZ2V0UGFyYW1zLm9wdGlvbnM7XG5cbiAgICB2YXIgbmV3Q2IgPSBmdW5jdGlvbiBuZXdDYihlcnJvciwgdmFsdWVzKSB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdmFyIHZhbGlkTmFtZXMgPSBfdGhpcy5maWVsZHNTdG9yZS5nZXRWYWxpZEZpZWxkc05hbWUoKTtcbiAgICAgICAgdmFyIGZpcnN0Tm9kZSA9IHZvaWQgMDtcbiAgICAgICAgdmFyIGZpcnN0VG9wID0gdm9pZCAwO1xuXG4gICAgICAgIHZhbGlkTmFtZXMuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgIGlmICgoMCwgX2hhczJbJ2RlZmF1bHQnXSkoZXJyb3IsIG5hbWUpKSB7XG4gICAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBfdGhpcy5nZXRGaWVsZEluc3RhbmNlKG5hbWUpO1xuICAgICAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgICAgIHZhciBub2RlID0gX3JlYWN0RG9tMlsnZGVmYXVsdCddLmZpbmRET01Ob2RlKGluc3RhbmNlKTtcbiAgICAgICAgICAgICAgdmFyIHRvcCA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICAgICAgICAgICAgICBpZiAobm9kZS50eXBlICE9PSAnaGlkZGVuJyAmJiAoZmlyc3RUb3AgPT09IHVuZGVmaW5lZCB8fCBmaXJzdFRvcCA+IHRvcCkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdFRvcCA9IHRvcDtcbiAgICAgICAgICAgICAgICBmaXJzdE5vZGUgPSBub2RlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoZmlyc3ROb2RlKSB7XG4gICAgICAgICAgdmFyIGMgPSBvcHRpb25zLmNvbnRhaW5lciB8fCBnZXRTY3JvbGxhYmxlQ29udGFpbmVyKGZpcnN0Tm9kZSk7XG4gICAgICAgICAgKDAsIF9kb21TY3JvbGxJbnRvVmlldzJbJ2RlZmF1bHQnXSkoZmlyc3ROb2RlLCBjLCAoMCwgX2V4dGVuZHMzWydkZWZhdWx0J10pKHtcbiAgICAgICAgICAgIG9ubHlTY3JvbGxJZk5lZWRlZDogdHJ1ZVxuICAgICAgICAgIH0sIG9wdGlvbnMuc2Nyb2xsKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYWxsYmFjayhlcnJvciwgdmFsdWVzKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVGaWVsZHMobmFtZXMsIG9wdGlvbnMsIG5ld0NiKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gY3JlYXRlRE9NRm9ybShvcHRpb24pIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlQmFzZUZvcm0yWydkZWZhdWx0J10pKCgwLCBfZXh0ZW5kczNbJ2RlZmF1bHQnXSkoe30sIG9wdGlvbiksIFttaXhpbl0pO1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBjcmVhdGVET01Gb3JtO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZG9tLXNjcm9sbC1pbnRvLXZpZXcnKTsiLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbmZ1bmN0aW9uIHNjcm9sbEludG9WaWV3KGVsZW0sIGNvbnRhaW5lciwgY29uZmlnKSB7XG4gIGNvbmZpZyA9IGNvbmZpZyB8fCB7fTtcbiAgLy8gZG9jdW1lbnQg5b2S5LiA5YyW5YiwIHdpbmRvd1xuICBpZiAoY29udGFpbmVyLm5vZGVUeXBlID09PSA5KSB7XG4gICAgY29udGFpbmVyID0gdXRpbC5nZXRXaW5kb3coY29udGFpbmVyKTtcbiAgfVxuXG4gIHZhciBhbGxvd0hvcml6b250YWxTY3JvbGwgPSBjb25maWcuYWxsb3dIb3Jpem9udGFsU2Nyb2xsO1xuICB2YXIgb25seVNjcm9sbElmTmVlZGVkID0gY29uZmlnLm9ubHlTY3JvbGxJZk5lZWRlZDtcbiAgdmFyIGFsaWduV2l0aFRvcCA9IGNvbmZpZy5hbGlnbldpdGhUb3A7XG4gIHZhciBhbGlnbldpdGhMZWZ0ID0gY29uZmlnLmFsaWduV2l0aExlZnQ7XG4gIHZhciBvZmZzZXRUb3AgPSBjb25maWcub2Zmc2V0VG9wIHx8IDA7XG4gIHZhciBvZmZzZXRMZWZ0ID0gY29uZmlnLm9mZnNldExlZnQgfHwgMDtcbiAgdmFyIG9mZnNldEJvdHRvbSA9IGNvbmZpZy5vZmZzZXRCb3R0b20gfHwgMDtcbiAgdmFyIG9mZnNldFJpZ2h0ID0gY29uZmlnLm9mZnNldFJpZ2h0IHx8IDA7XG5cbiAgYWxsb3dIb3Jpem9udGFsU2Nyb2xsID0gYWxsb3dIb3Jpem9udGFsU2Nyb2xsID09PSB1bmRlZmluZWQgPyB0cnVlIDogYWxsb3dIb3Jpem9udGFsU2Nyb2xsO1xuXG4gIHZhciBpc1dpbiA9IHV0aWwuaXNXaW5kb3coY29udGFpbmVyKTtcbiAgdmFyIGVsZW1PZmZzZXQgPSB1dGlsLm9mZnNldChlbGVtKTtcbiAgdmFyIGVoID0gdXRpbC5vdXRlckhlaWdodChlbGVtKTtcbiAgdmFyIGV3ID0gdXRpbC5vdXRlcldpZHRoKGVsZW0pO1xuICB2YXIgY29udGFpbmVyT2Zmc2V0ID0gdW5kZWZpbmVkO1xuICB2YXIgY2ggPSB1bmRlZmluZWQ7XG4gIHZhciBjdyA9IHVuZGVmaW5lZDtcbiAgdmFyIGNvbnRhaW5lclNjcm9sbCA9IHVuZGVmaW5lZDtcbiAgdmFyIGRpZmZUb3AgPSB1bmRlZmluZWQ7XG4gIHZhciBkaWZmQm90dG9tID0gdW5kZWZpbmVkO1xuICB2YXIgd2luID0gdW5kZWZpbmVkO1xuICB2YXIgd2luU2Nyb2xsID0gdW5kZWZpbmVkO1xuICB2YXIgd3cgPSB1bmRlZmluZWQ7XG4gIHZhciB3aCA9IHVuZGVmaW5lZDtcblxuICBpZiAoaXNXaW4pIHtcbiAgICB3aW4gPSBjb250YWluZXI7XG4gICAgd2ggPSB1dGlsLmhlaWdodCh3aW4pO1xuICAgIHd3ID0gdXRpbC53aWR0aCh3aW4pO1xuICAgIHdpblNjcm9sbCA9IHtcbiAgICAgIGxlZnQ6IHV0aWwuc2Nyb2xsTGVmdCh3aW4pLFxuICAgICAgdG9wOiB1dGlsLnNjcm9sbFRvcCh3aW4pXG4gICAgfTtcbiAgICAvLyBlbGVtIOebuOWvuSBjb250YWluZXIg5Y+v6KeG6KeG56qX55qE6Led56a7XG4gICAgZGlmZlRvcCA9IHtcbiAgICAgIGxlZnQ6IGVsZW1PZmZzZXQubGVmdCAtIHdpblNjcm9sbC5sZWZ0IC0gb2Zmc2V0TGVmdCxcbiAgICAgIHRvcDogZWxlbU9mZnNldC50b3AgLSB3aW5TY3JvbGwudG9wIC0gb2Zmc2V0VG9wXG4gICAgfTtcbiAgICBkaWZmQm90dG9tID0ge1xuICAgICAgbGVmdDogZWxlbU9mZnNldC5sZWZ0ICsgZXcgLSAod2luU2Nyb2xsLmxlZnQgKyB3dykgKyBvZmZzZXRSaWdodCxcbiAgICAgIHRvcDogZWxlbU9mZnNldC50b3AgKyBlaCAtICh3aW5TY3JvbGwudG9wICsgd2gpICsgb2Zmc2V0Qm90dG9tXG4gICAgfTtcbiAgICBjb250YWluZXJTY3JvbGwgPSB3aW5TY3JvbGw7XG4gIH0gZWxzZSB7XG4gICAgY29udGFpbmVyT2Zmc2V0ID0gdXRpbC5vZmZzZXQoY29udGFpbmVyKTtcbiAgICBjaCA9IGNvbnRhaW5lci5jbGllbnRIZWlnaHQ7XG4gICAgY3cgPSBjb250YWluZXIuY2xpZW50V2lkdGg7XG4gICAgY29udGFpbmVyU2Nyb2xsID0ge1xuICAgICAgbGVmdDogY29udGFpbmVyLnNjcm9sbExlZnQsXG4gICAgICB0b3A6IGNvbnRhaW5lci5zY3JvbGxUb3BcbiAgICB9O1xuICAgIC8vIGVsZW0g55u45a+5IGNvbnRhaW5lciDlj6/op4bop4bnqpfnmoTot53nprtcbiAgICAvLyDms6jmhI/ovrnmoYYsIG9mZnNldCDmmK/ovrnmoYbliLDmoLnoioLngrlcbiAgICBkaWZmVG9wID0ge1xuICAgICAgbGVmdDogZWxlbU9mZnNldC5sZWZ0IC0gKGNvbnRhaW5lck9mZnNldC5sZWZ0ICsgKHBhcnNlRmxvYXQodXRpbC5jc3MoY29udGFpbmVyLCAnYm9yZGVyTGVmdFdpZHRoJykpIHx8IDApKSAtIG9mZnNldExlZnQsXG4gICAgICB0b3A6IGVsZW1PZmZzZXQudG9wIC0gKGNvbnRhaW5lck9mZnNldC50b3AgKyAocGFyc2VGbG9hdCh1dGlsLmNzcyhjb250YWluZXIsICdib3JkZXJUb3BXaWR0aCcpKSB8fCAwKSkgLSBvZmZzZXRUb3BcbiAgICB9O1xuICAgIGRpZmZCb3R0b20gPSB7XG4gICAgICBsZWZ0OiBlbGVtT2Zmc2V0LmxlZnQgKyBldyAtIChjb250YWluZXJPZmZzZXQubGVmdCArIGN3ICsgKHBhcnNlRmxvYXQodXRpbC5jc3MoY29udGFpbmVyLCAnYm9yZGVyUmlnaHRXaWR0aCcpKSB8fCAwKSkgKyBvZmZzZXRSaWdodCxcbiAgICAgIHRvcDogZWxlbU9mZnNldC50b3AgKyBlaCAtIChjb250YWluZXJPZmZzZXQudG9wICsgY2ggKyAocGFyc2VGbG9hdCh1dGlsLmNzcyhjb250YWluZXIsICdib3JkZXJCb3R0b21XaWR0aCcpKSB8fCAwKSkgKyBvZmZzZXRCb3R0b21cbiAgICB9O1xuICB9XG5cbiAgaWYgKGRpZmZUb3AudG9wIDwgMCB8fCBkaWZmQm90dG9tLnRvcCA+IDApIHtcbiAgICAvLyDlvLrliLblkJHkuIpcbiAgICBpZiAoYWxpZ25XaXRoVG9wID09PSB0cnVlKSB7XG4gICAgICB1dGlsLnNjcm9sbFRvcChjb250YWluZXIsIGNvbnRhaW5lclNjcm9sbC50b3AgKyBkaWZmVG9wLnRvcCk7XG4gICAgfSBlbHNlIGlmIChhbGlnbldpdGhUb3AgPT09IGZhbHNlKSB7XG4gICAgICB1dGlsLnNjcm9sbFRvcChjb250YWluZXIsIGNvbnRhaW5lclNjcm9sbC50b3AgKyBkaWZmQm90dG9tLnRvcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOiHquWKqOiwg+aVtFxuICAgICAgaWYgKGRpZmZUb3AudG9wIDwgMCkge1xuICAgICAgICB1dGlsLnNjcm9sbFRvcChjb250YWluZXIsIGNvbnRhaW5lclNjcm9sbC50b3AgKyBkaWZmVG9wLnRvcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1dGlsLnNjcm9sbFRvcChjb250YWluZXIsIGNvbnRhaW5lclNjcm9sbC50b3AgKyBkaWZmQm90dG9tLnRvcCk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICghb25seVNjcm9sbElmTmVlZGVkKSB7XG4gICAgICBhbGlnbldpdGhUb3AgPSBhbGlnbldpdGhUb3AgPT09IHVuZGVmaW5lZCA/IHRydWUgOiAhIWFsaWduV2l0aFRvcDtcbiAgICAgIGlmIChhbGlnbldpdGhUb3ApIHtcbiAgICAgICAgdXRpbC5zY3JvbGxUb3AoY29udGFpbmVyLCBjb250YWluZXJTY3JvbGwudG9wICsgZGlmZlRvcC50b3ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXRpbC5zY3JvbGxUb3AoY29udGFpbmVyLCBjb250YWluZXJTY3JvbGwudG9wICsgZGlmZkJvdHRvbS50b3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChhbGxvd0hvcml6b250YWxTY3JvbGwpIHtcbiAgICBpZiAoZGlmZlRvcC5sZWZ0IDwgMCB8fCBkaWZmQm90dG9tLmxlZnQgPiAwKSB7XG4gICAgICAvLyDlvLrliLblkJHkuIpcbiAgICAgIGlmIChhbGlnbldpdGhMZWZ0ID09PSB0cnVlKSB7XG4gICAgICAgIHV0aWwuc2Nyb2xsTGVmdChjb250YWluZXIsIGNvbnRhaW5lclNjcm9sbC5sZWZ0ICsgZGlmZlRvcC5sZWZ0KTtcbiAgICAgIH0gZWxzZSBpZiAoYWxpZ25XaXRoTGVmdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgdXRpbC5zY3JvbGxMZWZ0KGNvbnRhaW5lciwgY29udGFpbmVyU2Nyb2xsLmxlZnQgKyBkaWZmQm90dG9tLmxlZnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8g6Ieq5Yqo6LCD5pW0XG4gICAgICAgIGlmIChkaWZmVG9wLmxlZnQgPCAwKSB7XG4gICAgICAgICAgdXRpbC5zY3JvbGxMZWZ0KGNvbnRhaW5lciwgY29udGFpbmVyU2Nyb2xsLmxlZnQgKyBkaWZmVG9wLmxlZnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHV0aWwuc2Nyb2xsTGVmdChjb250YWluZXIsIGNvbnRhaW5lclNjcm9sbC5sZWZ0ICsgZGlmZkJvdHRvbS5sZWZ0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9ubHlTY3JvbGxJZk5lZWRlZCkge1xuICAgICAgICBhbGlnbldpdGhMZWZ0ID0gYWxpZ25XaXRoTGVmdCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6ICEhYWxpZ25XaXRoTGVmdDtcbiAgICAgICAgaWYgKGFsaWduV2l0aExlZnQpIHtcbiAgICAgICAgICB1dGlsLnNjcm9sbExlZnQoY29udGFpbmVyLCBjb250YWluZXJTY3JvbGwubGVmdCArIGRpZmZUb3AubGVmdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXRpbC5zY3JvbGxMZWZ0KGNvbnRhaW5lciwgY29udGFpbmVyU2Nyb2xsLmxlZnQgKyBkaWZmQm90dG9tLmxlZnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2Nyb2xsSW50b1ZpZXc7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxudmFyIFJFX05VTSA9IC9bXFwtK10/KD86XFxkKlxcLnwpXFxkKyg/OltlRV1bXFwtK10/XFxkK3wpLy5zb3VyY2U7XG5cbmZ1bmN0aW9uIGdldENsaWVudFBvc2l0aW9uKGVsZW0pIHtcbiAgdmFyIGJveCA9IHVuZGVmaW5lZDtcbiAgdmFyIHggPSB1bmRlZmluZWQ7XG4gIHZhciB5ID0gdW5kZWZpbmVkO1xuICB2YXIgZG9jID0gZWxlbS5vd25lckRvY3VtZW50O1xuICB2YXIgYm9keSA9IGRvYy5ib2R5O1xuICB2YXIgZG9jRWxlbSA9IGRvYyAmJiBkb2MuZG9jdW1lbnRFbGVtZW50O1xuICAvLyDmoLnmja4gR0JTIOacgOaWsOaVsOaNru+8jEEtR3JhZGUgQnJvd3NlcnMg6YO95bey5pSv5oyBIGdldEJvdW5kaW5nQ2xpZW50UmVjdCDmlrnms5XvvIzkuI3nlKjlho3ogIPomZHkvKDnu5/nmoTlrp7njrDmlrnlvI9cbiAgYm94ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAvLyDms6jvvJpqUXVlcnkg6L+Y6ICD6JmR5YeP5Y67IGRvY0VsZW0uY2xpZW50TGVmdC9jbGllbnRUb3BcbiAgLy8g5L2G5rWL6K+V5Y+R546w77yM6L+Z5qC35Y+N6ICM5Lya5a+86Ie05b2TIGh0bWwg5ZKMIGJvZHkg5pyJ6L656LedL+i+ueahhuagt+W8j+aXtu+8jOiOt+WPlueahOWAvOS4jeato+ehrlxuICAvLyDmraTlpJbvvIxpZTYg5Lya5b+955WlIGh0bWwg55qEIG1hcmdpbiDlgLzvvIzlubjov5DlnLDmmK/msqHmnInosIHkvJrljrvorr7nva4gaHRtbCDnmoQgbWFyZ2luXG5cbiAgeCA9IGJveC5sZWZ0O1xuICB5ID0gYm94LnRvcDtcblxuICAvLyBJbiBJRSwgbW9zdCBvZiB0aGUgdGltZSwgMiBleHRyYSBwaXhlbHMgYXJlIGFkZGVkIHRvIHRoZSB0b3AgYW5kIGxlZnRcbiAgLy8gZHVlIHRvIHRoZSBpbXBsaWNpdCAyLXBpeGVsIGluc2V0IGJvcmRlci4gIEluIElFNi83IHF1aXJrcyBtb2RlIGFuZFxuICAvLyBJRTYgc3RhbmRhcmRzIG1vZGUsIHRoaXMgYm9yZGVyIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgdGhlXG4gIC8vIGRvY3VtZW50IGVsZW1lbnQncyBib3JkZXIgdG8gemVybyAtLSB0aHVzLCB3ZSBjYW5ub3QgcmVseSBvbiB0aGVcbiAgLy8gb2Zmc2V0IGFsd2F5cyBiZWluZyAyIHBpeGVscy5cblxuICAvLyBJbiBxdWlya3MgbW9kZSwgdGhlIG9mZnNldCBjYW4gYmUgZGV0ZXJtaW5lZCBieSBxdWVyeWluZyB0aGUgYm9keSdzXG4gIC8vIGNsaWVudExlZnQvY2xpZW50VG9wLCBidXQgaW4gc3RhbmRhcmRzIG1vZGUsIGl0IGlzIGZvdW5kIGJ5IHF1ZXJ5aW5nXG4gIC8vIHRoZSBkb2N1bWVudCBlbGVtZW50J3MgY2xpZW50TGVmdC9jbGllbnRUb3AuICBTaW5jZSB3ZSBhbHJlYWR5IGNhbGxlZFxuICAvLyBnZXRDbGllbnRCb3VuZGluZ1JlY3Qgd2UgaGF2ZSBhbHJlYWR5IGZvcmNlZCBhIHJlZmxvdywgc28gaXQgaXMgbm90XG4gIC8vIHRvbyBleHBlbnNpdmUganVzdCB0byBxdWVyeSB0aGVtIGFsbC5cblxuICAvLyBpZSDkuIvlupTor6Xlh4/ljrvnqpflj6PnmoTovrnmoYblkKfvvIzmr5Xnq5/pu5jorqQgYWJzb2x1dGUg6YO95piv55u45a+556qX5Y+j5a6a5L2N55qEXG4gIC8vIOeql+WPo+i+ueahhuagh+WHhuaYr+iuviBkb2N1bWVudEVsZW1lbnQgLHF1aXJrcyDml7borr7nva4gYm9keVxuICAvLyDmnIDlpb3npoHmraLlnKggYm9keSDlkowgaHRtbCDkuIrovrnmoYYg77yM5L2GIGllIDwgOSBodG1sIOm7mOiupOaciSAycHgg77yM5YeP5Y67XG4gIC8vIOS9huaYr+mdniBpZSDkuI3lj6/og73orr7nva7nqpflj6PovrnmoYbvvIxib2R5IGh0bWwg5Lmf5LiN5piv56qX5Y+jICxpZSDlj6/ku6XpgJrov4cgaHRtbCxib2R5IOiuvue9rlxuICAvLyDmoIflh4YgaWUg5LiLIGRvY0VsZW0uY2xpZW50VG9wIOWwseaYryBib3JkZXItdG9wXG4gIC8vIGllNyBodG1sIOWNs+eql+WPo+i+ueahhuaUueWPmOS4jeS6huOAguawuOi/nOS4uiAyXG4gIC8vIOS9huagh+WHhiBmaXJlZm94L2Nocm9tZS9pZTkg5LiLIGRvY0VsZW0uY2xpZW50VG9wIOaYr+eql+WPo+i+ueahhu+8jOWNs+S9v+iuvuS6hiBib3JkZXItdG9wIOS5n+S4uiAwXG5cbiAgeCAtPSBkb2NFbGVtLmNsaWVudExlZnQgfHwgYm9keS5jbGllbnRMZWZ0IHx8IDA7XG4gIHkgLT0gZG9jRWxlbS5jbGllbnRUb3AgfHwgYm9keS5jbGllbnRUb3AgfHwgMDtcblxuICByZXR1cm4ge1xuICAgIGxlZnQ6IHgsXG4gICAgdG9wOiB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFNjcm9sbCh3LCB0b3ApIHtcbiAgdmFyIHJldCA9IHdbJ3BhZ2UnICsgKHRvcCA/ICdZJyA6ICdYJykgKyAnT2Zmc2V0J107XG4gIHZhciBtZXRob2QgPSAnc2Nyb2xsJyArICh0b3AgPyAnVG9wJyA6ICdMZWZ0Jyk7XG4gIGlmICh0eXBlb2YgcmV0ICE9PSAnbnVtYmVyJykge1xuICAgIHZhciBkID0gdy5kb2N1bWVudDtcbiAgICAvLyBpZTYsNyw4IHN0YW5kYXJkIG1vZGVcbiAgICByZXQgPSBkLmRvY3VtZW50RWxlbWVudFttZXRob2RdO1xuICAgIGlmICh0eXBlb2YgcmV0ICE9PSAnbnVtYmVyJykge1xuICAgICAgLy8gcXVpcmtzIG1vZGVcbiAgICAgIHJldCA9IGQuYm9keVttZXRob2RdO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBnZXRTY3JvbGxMZWZ0KHcpIHtcbiAgcmV0dXJuIGdldFNjcm9sbCh3KTtcbn1cblxuZnVuY3Rpb24gZ2V0U2Nyb2xsVG9wKHcpIHtcbiAgcmV0dXJuIGdldFNjcm9sbCh3LCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gZ2V0T2Zmc2V0KGVsKSB7XG4gIHZhciBwb3MgPSBnZXRDbGllbnRQb3NpdGlvbihlbCk7XG4gIHZhciBkb2MgPSBlbC5vd25lckRvY3VtZW50O1xuICB2YXIgdyA9IGRvYy5kZWZhdWx0VmlldyB8fCBkb2MucGFyZW50V2luZG93O1xuICBwb3MubGVmdCArPSBnZXRTY3JvbGxMZWZ0KHcpO1xuICBwb3MudG9wICs9IGdldFNjcm9sbFRvcCh3KTtcbiAgcmV0dXJuIHBvcztcbn1cbmZ1bmN0aW9uIF9nZXRDb21wdXRlZFN0eWxlKGVsZW0sIG5hbWUsIGNvbXB1dGVkU3R5bGVfKSB7XG4gIHZhciB2YWwgPSAnJztcbiAgdmFyIGQgPSBlbGVtLm93bmVyRG9jdW1lbnQ7XG4gIHZhciBjb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZV8gfHwgZC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW0sIG51bGwpO1xuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9raXNzeXRlYW0va2lzc3kvaXNzdWVzLzYxXG4gIGlmIChjb21wdXRlZFN0eWxlKSB7XG4gICAgdmFsID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpIHx8IGNvbXB1dGVkU3R5bGVbbmFtZV07XG4gIH1cblxuICByZXR1cm4gdmFsO1xufVxuXG52YXIgX1JFX05VTV9OT19QWCA9IG5ldyBSZWdFeHAoJ14oJyArIFJFX05VTSArICcpKD8hcHgpW2EteiVdKyQnLCAnaScpO1xudmFyIFJFX1BPUyA9IC9eKHRvcHxyaWdodHxib3R0b218bGVmdCkkLztcbnZhciBDVVJSRU5UX1NUWUxFID0gJ2N1cnJlbnRTdHlsZSc7XG52YXIgUlVOVElNRV9TVFlMRSA9ICdydW50aW1lU3R5bGUnO1xudmFyIExFRlQgPSAnbGVmdCc7XG52YXIgUFggPSAncHgnO1xuXG5mdW5jdGlvbiBfZ2V0Q29tcHV0ZWRTdHlsZUlFKGVsZW0sIG5hbWUpIHtcbiAgLy8gY3VycmVudFN0eWxlIG1heWJlIG51bGxcbiAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNTM1MjMxLmFzcHhcbiAgdmFyIHJldCA9IGVsZW1bQ1VSUkVOVF9TVFlMRV0gJiYgZWxlbVtDVVJSRU5UX1NUWUxFXVtuYW1lXTtcblxuICAvLyDlvZMgd2lkdGgvaGVpZ2h0IOiuvue9ruS4uueZvuWIhuavlOaXtu+8jOmAmui/hyBwaXhlbExlZnQg5pa55byP6L2s5o2i55qEIHdpZHRoL2hlaWdodCDlgLxcbiAgLy8g5LiA5byA5aeL5bCx5aSE55CG5LqGISBDVVNUT01fU1RZTEUuaGVpZ2h0LENVU1RPTV9TVFlMRS53aWR0aCAsY3NzSG9vayDop6PlhrNAMjAxMS0wOC0xOVxuICAvLyDlnKggaWUg5LiL5LiN5a+577yM6ZyA6KaB55u05o6l55SoIG9mZnNldCDmlrnlvI9cbiAgLy8gYm9yZGVyV2lkdGgg562J5YC85Lmf5pyJ6Zeu6aKY77yM5L2G6ICD6JmR5YiwIGJvcmRlcldpZHRoIOiuvuS4uueZvuWIhuavlOeahOamgueOh+W+iOWwj++8jOi/memHjOWwseS4jeiAg+iZkeS6hlxuXG4gIC8vIEZyb20gdGhlIGF3ZXNvbWUgaGFjayBieSBEZWFuIEVkd2FyZHNcbiAgLy8gaHR0cDovL2VyaWsuZWFlLm5ldC9hcmNoaXZlcy8yMDA3LzA3LzI3LzE4LjU0LjE1LyNjb21tZW50LTEwMjI5MVxuICAvLyBJZiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGEgcmVndWxhciBwaXhlbCBudW1iZXJcbiAgLy8gYnV0IGEgbnVtYmVyIHRoYXQgaGFzIGEgd2VpcmQgZW5kaW5nLCB3ZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8gcGl4ZWxzXG4gIC8vIGV4Y2x1ZGUgbGVmdCByaWdodCBmb3IgcmVsYXRpdml0eVxuICBpZiAoX1JFX05VTV9OT19QWC50ZXN0KHJldCkgJiYgIVJFX1BPUy50ZXN0KG5hbWUpKSB7XG4gICAgLy8gUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHZhbHVlc1xuICAgIHZhciBzdHlsZSA9IGVsZW0uc3R5bGU7XG4gICAgdmFyIGxlZnQgPSBzdHlsZVtMRUZUXTtcbiAgICB2YXIgcnNMZWZ0ID0gZWxlbVtSVU5USU1FX1NUWUxFXVtMRUZUXTtcblxuICAgIC8vIHByZXZlbnQgZmxhc2hpbmcgb2YgY29udGVudFxuICAgIGVsZW1bUlVOVElNRV9TVFlMRV1bTEVGVF0gPSBlbGVtW0NVUlJFTlRfU1RZTEVdW0xFRlRdO1xuXG4gICAgLy8gUHV0IGluIHRoZSBuZXcgdmFsdWVzIHRvIGdldCBhIGNvbXB1dGVkIHZhbHVlIG91dFxuICAgIHN0eWxlW0xFRlRdID0gbmFtZSA9PT0gJ2ZvbnRTaXplJyA/ICcxZW0nIDogcmV0IHx8IDA7XG4gICAgcmV0ID0gc3R5bGUucGl4ZWxMZWZ0ICsgUFg7XG5cbiAgICAvLyBSZXZlcnQgdGhlIGNoYW5nZWQgdmFsdWVzXG4gICAgc3R5bGVbTEVGVF0gPSBsZWZ0O1xuXG4gICAgZWxlbVtSVU5USU1FX1NUWUxFXVtMRUZUXSA9IHJzTGVmdDtcbiAgfVxuICByZXR1cm4gcmV0ID09PSAnJyA/ICdhdXRvJyA6IHJldDtcbn1cblxudmFyIGdldENvbXB1dGVkU3R5bGVYID0gdW5kZWZpbmVkO1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIGdldENvbXB1dGVkU3R5bGVYID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUgPyBfZ2V0Q29tcHV0ZWRTdHlsZSA6IF9nZXRDb21wdXRlZFN0eWxlSUU7XG59XG5cbmZ1bmN0aW9uIGVhY2goYXJyLCBmbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGZuKGFycltpXSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNCb3JkZXJCb3hGbihlbGVtKSB7XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlWChlbGVtLCAnYm94U2l6aW5nJykgPT09ICdib3JkZXItYm94Jztcbn1cblxudmFyIEJPWF9NT0RFTFMgPSBbJ21hcmdpbicsICdib3JkZXInLCAncGFkZGluZyddO1xudmFyIENPTlRFTlRfSU5ERVggPSAtMTtcbnZhciBQQURESU5HX0lOREVYID0gMjtcbnZhciBCT1JERVJfSU5ERVggPSAxO1xudmFyIE1BUkdJTl9JTkRFWCA9IDA7XG5cbmZ1bmN0aW9uIHN3YXAoZWxlbSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIG9sZCA9IHt9O1xuICB2YXIgc3R5bGUgPSBlbGVtLnN0eWxlO1xuICB2YXIgbmFtZSA9IHVuZGVmaW5lZDtcblxuICAvLyBSZW1lbWJlciB0aGUgb2xkIHZhbHVlcywgYW5kIGluc2VydCB0aGUgbmV3IG9uZXNcbiAgZm9yIChuYW1lIGluIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgb2xkW25hbWVdID0gc3R5bGVbbmFtZV07XG4gICAgICBzdHlsZVtuYW1lXSA9IG9wdGlvbnNbbmFtZV07XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2suY2FsbChlbGVtKTtcblxuICAvLyBSZXZlcnQgdGhlIG9sZCB2YWx1ZXNcbiAgZm9yIChuYW1lIGluIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgc3R5bGVbbmFtZV0gPSBvbGRbbmFtZV07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFBCTVdpZHRoKGVsZW0sIHByb3BzLCB3aGljaCkge1xuICB2YXIgdmFsdWUgPSAwO1xuICB2YXIgcHJvcCA9IHVuZGVmaW5lZDtcbiAgdmFyIGogPSB1bmRlZmluZWQ7XG4gIHZhciBpID0gdW5kZWZpbmVkO1xuICBmb3IgKGogPSAwOyBqIDwgcHJvcHMubGVuZ3RoOyBqKyspIHtcbiAgICBwcm9wID0gcHJvcHNbal07XG4gICAgaWYgKHByb3ApIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB3aGljaC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY3NzUHJvcCA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHByb3AgPT09ICdib3JkZXInKSB7XG4gICAgICAgICAgY3NzUHJvcCA9IHByb3AgKyB3aGljaFtpXSArICdXaWR0aCc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3NzUHJvcCA9IHByb3AgKyB3aGljaFtpXTtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZSArPSBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGVYKGVsZW0sIGNzc1Byb3ApKSB8fCAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogQSBjcnVkZSB3YXkgb2YgZGV0ZXJtaW5pbmcgaWYgYW4gb2JqZWN0IGlzIGEgd2luZG93XG4gKiBAbWVtYmVyIHV0aWxcbiAqL1xuZnVuY3Rpb24gaXNXaW5kb3cob2JqKSB7XG4gIC8vIG11c3QgdXNlID09IGZvciBpZThcbiAgLyogZXNsaW50IGVxZXFlcTowICovXG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT0gb2JqLndpbmRvdztcbn1cblxudmFyIGRvbVV0aWxzID0ge307XG5cbmVhY2goWydXaWR0aCcsICdIZWlnaHQnXSwgZnVuY3Rpb24gKG5hbWUpIHtcbiAgZG9tVXRpbHNbJ2RvYycgKyBuYW1lXSA9IGZ1bmN0aW9uIChyZWZXaW4pIHtcbiAgICB2YXIgZCA9IHJlZldpbi5kb2N1bWVudDtcbiAgICByZXR1cm4gTWF0aC5tYXgoXG4gICAgLy8gZmlyZWZveCBjaHJvbWUgZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodDwgYm9keS5zY3JvbGxIZWlnaHRcbiAgICAvLyBpZSBzdGFuZGFyZCBtb2RlIDogZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodD4gYm9keS5zY3JvbGxIZWlnaHRcbiAgICBkLmRvY3VtZW50RWxlbWVudFsnc2Nyb2xsJyArIG5hbWVdLFxuICAgIC8vIHF1aXJrcyA6IGRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQg5pyA5aSn562J5LqO5Y+v6KeG56qX5Y+j5aSa5LiA54K577yfXG4gICAgZC5ib2R5WydzY3JvbGwnICsgbmFtZV0sIGRvbVV0aWxzWyd2aWV3cG9ydCcgKyBuYW1lXShkKSk7XG4gIH07XG5cbiAgZG9tVXRpbHNbJ3ZpZXdwb3J0JyArIG5hbWVdID0gZnVuY3Rpb24gKHdpbikge1xuICAgIC8vIHBjIGJyb3dzZXIgaW5jbHVkZXMgc2Nyb2xsYmFyIGluIHdpbmRvdy5pbm5lcldpZHRoXG4gICAgdmFyIHByb3AgPSAnY2xpZW50JyArIG5hbWU7XG4gICAgdmFyIGRvYyA9IHdpbi5kb2N1bWVudDtcbiAgICB2YXIgYm9keSA9IGRvYy5ib2R5O1xuICAgIHZhciBkb2N1bWVudEVsZW1lbnQgPSBkb2MuZG9jdW1lbnRFbGVtZW50O1xuICAgIHZhciBkb2N1bWVudEVsZW1lbnRQcm9wID0gZG9jdW1lbnRFbGVtZW50W3Byb3BdO1xuICAgIC8vIOagh+WHhuaooeW8j+WPliBkb2N1bWVudEVsZW1lbnRcbiAgICAvLyBiYWNrY29tcGF0IOWPliBib2R5XG4gICAgcmV0dXJuIGRvYy5jb21wYXRNb2RlID09PSAnQ1NTMUNvbXBhdCcgJiYgZG9jdW1lbnRFbGVtZW50UHJvcCB8fCBib2R5ICYmIGJvZHlbcHJvcF0gfHwgZG9jdW1lbnRFbGVtZW50UHJvcDtcbiAgfTtcbn0pO1xuXG4vKlxuIOW+l+WIsOWFg+e0oOeahOWkp+Wwj+S/oeaBr1xuIEBwYXJhbSBlbGVtXG4gQHBhcmFtIG5hbWVcbiBAcGFyYW0ge1N0cmluZ30gW2V4dHJhXSAgJ3BhZGRpbmcnIDogKGNzcyB3aWR0aCkgKyBwYWRkaW5nXG4gJ2JvcmRlcicgOiAoY3NzIHdpZHRoKSArIHBhZGRpbmcgKyBib3JkZXJcbiAnbWFyZ2luJyA6IChjc3Mgd2lkdGgpICsgcGFkZGluZyArIGJvcmRlciArIG1hcmdpblxuICovXG5mdW5jdGlvbiBnZXRXSChlbGVtLCBuYW1lLCBleHRyYSkge1xuICBpZiAoaXNXaW5kb3coZWxlbSkpIHtcbiAgICByZXR1cm4gbmFtZSA9PT0gJ3dpZHRoJyA/IGRvbVV0aWxzLnZpZXdwb3J0V2lkdGgoZWxlbSkgOiBkb21VdGlscy52aWV3cG9ydEhlaWdodChlbGVtKTtcbiAgfSBlbHNlIGlmIChlbGVtLm5vZGVUeXBlID09PSA5KSB7XG4gICAgcmV0dXJuIG5hbWUgPT09ICd3aWR0aCcgPyBkb21VdGlscy5kb2NXaWR0aChlbGVtKSA6IGRvbVV0aWxzLmRvY0hlaWdodChlbGVtKTtcbiAgfVxuICB2YXIgd2hpY2ggPSBuYW1lID09PSAnd2lkdGgnID8gWydMZWZ0JywgJ1JpZ2h0J10gOiBbJ1RvcCcsICdCb3R0b20nXTtcbiAgdmFyIGJvcmRlckJveFZhbHVlID0gbmFtZSA9PT0gJ3dpZHRoJyA/IGVsZW0ub2Zmc2V0V2lkdGggOiBlbGVtLm9mZnNldEhlaWdodDtcbiAgdmFyIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlWChlbGVtKTtcbiAgdmFyIGlzQm9yZGVyQm94ID0gaXNCb3JkZXJCb3hGbihlbGVtLCBjb21wdXRlZFN0eWxlKTtcbiAgdmFyIGNzc0JveFZhbHVlID0gMDtcbiAgaWYgKGJvcmRlckJveFZhbHVlID09IG51bGwgfHwgYm9yZGVyQm94VmFsdWUgPD0gMCkge1xuICAgIGJvcmRlckJveFZhbHVlID0gdW5kZWZpbmVkO1xuICAgIC8vIEZhbGwgYmFjayB0byBjb21wdXRlZCB0aGVuIHVuIGNvbXB1dGVkIGNzcyBpZiBuZWNlc3NhcnlcbiAgICBjc3NCb3hWYWx1ZSA9IGdldENvbXB1dGVkU3R5bGVYKGVsZW0sIG5hbWUpO1xuICAgIGlmIChjc3NCb3hWYWx1ZSA9PSBudWxsIHx8IE51bWJlcihjc3NCb3hWYWx1ZSkgPCAwKSB7XG4gICAgICBjc3NCb3hWYWx1ZSA9IGVsZW0uc3R5bGVbbmFtZV0gfHwgMDtcbiAgICB9XG4gICAgLy8gTm9ybWFsaXplICcnLCBhdXRvLCBhbmQgcHJlcGFyZSBmb3IgZXh0cmFcbiAgICBjc3NCb3hWYWx1ZSA9IHBhcnNlRmxvYXQoY3NzQm94VmFsdWUpIHx8IDA7XG4gIH1cbiAgaWYgKGV4dHJhID09PSB1bmRlZmluZWQpIHtcbiAgICBleHRyYSA9IGlzQm9yZGVyQm94ID8gQk9SREVSX0lOREVYIDogQ09OVEVOVF9JTkRFWDtcbiAgfVxuICB2YXIgYm9yZGVyQm94VmFsdWVPcklzQm9yZGVyQm94ID0gYm9yZGVyQm94VmFsdWUgIT09IHVuZGVmaW5lZCB8fCBpc0JvcmRlckJveDtcbiAgdmFyIHZhbCA9IGJvcmRlckJveFZhbHVlIHx8IGNzc0JveFZhbHVlO1xuICBpZiAoZXh0cmEgPT09IENPTlRFTlRfSU5ERVgpIHtcbiAgICBpZiAoYm9yZGVyQm94VmFsdWVPcklzQm9yZGVyQm94KSB7XG4gICAgICByZXR1cm4gdmFsIC0gZ2V0UEJNV2lkdGgoZWxlbSwgWydib3JkZXInLCAncGFkZGluZyddLCB3aGljaCwgY29tcHV0ZWRTdHlsZSk7XG4gICAgfVxuICAgIHJldHVybiBjc3NCb3hWYWx1ZTtcbiAgfVxuICBpZiAoYm9yZGVyQm94VmFsdWVPcklzQm9yZGVyQm94KSB7XG4gICAgdmFyIHBhZGRpbmcgPSBleHRyYSA9PT0gUEFERElOR19JTkRFWCA/IC1nZXRQQk1XaWR0aChlbGVtLCBbJ2JvcmRlciddLCB3aGljaCwgY29tcHV0ZWRTdHlsZSkgOiBnZXRQQk1XaWR0aChlbGVtLCBbJ21hcmdpbiddLCB3aGljaCwgY29tcHV0ZWRTdHlsZSk7XG4gICAgcmV0dXJuIHZhbCArIChleHRyYSA9PT0gQk9SREVSX0lOREVYID8gMCA6IHBhZGRpbmcpO1xuICB9XG4gIHJldHVybiBjc3NCb3hWYWx1ZSArIGdldFBCTVdpZHRoKGVsZW0sIEJPWF9NT0RFTFMuc2xpY2UoZXh0cmEpLCB3aGljaCwgY29tcHV0ZWRTdHlsZSk7XG59XG5cbnZhciBjc3NTaG93ID0ge1xuICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gIGRpc3BsYXk6ICdibG9jaydcbn07XG5cbi8vIGZpeCAjMTE5IDogaHR0cHM6Ly9naXRodWIuY29tL2tpc3N5dGVhbS9raXNzeS9pc3N1ZXMvMTE5XG5mdW5jdGlvbiBnZXRXSElnbm9yZURpc3BsYXkoZWxlbSkge1xuICB2YXIgdmFsID0gdW5kZWZpbmVkO1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgLy8gaW4gY2FzZSBlbGVtIGlzIHdpbmRvd1xuICAvLyBlbGVtLm9mZnNldFdpZHRoID09PSB1bmRlZmluZWRcbiAgaWYgKGVsZW0ub2Zmc2V0V2lkdGggIT09IDApIHtcbiAgICB2YWwgPSBnZXRXSC5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIHN3YXAoZWxlbSwgY3NzU2hvdywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFsID0gZ2V0V0guYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gdmFsO1xufVxuXG5mdW5jdGlvbiBjc3MoZWwsIG5hbWUsIHYpIHtcbiAgdmFyIHZhbHVlID0gdjtcbiAgaWYgKCh0eXBlb2YgbmFtZSA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YobmFtZSkpID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAodmFyIGkgaW4gbmFtZSkge1xuICAgICAgaWYgKG5hbWUuaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgICAgY3NzKGVsLCBpLCBuYW1lW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICB2YWx1ZSArPSAncHgnO1xuICAgIH1cbiAgICBlbC5zdHlsZVtuYW1lXSA9IHZhbHVlO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGVYKGVsLCBuYW1lKTtcbn1cblxuZWFjaChbJ3dpZHRoJywgJ2hlaWdodCddLCBmdW5jdGlvbiAobmFtZSkge1xuICB2YXIgZmlyc3QgPSBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKTtcbiAgZG9tVXRpbHNbJ291dGVyJyArIGZpcnN0XSA9IGZ1bmN0aW9uIChlbCwgaW5jbHVkZU1hcmdpbikge1xuICAgIHJldHVybiBlbCAmJiBnZXRXSElnbm9yZURpc3BsYXkoZWwsIG5hbWUsIGluY2x1ZGVNYXJnaW4gPyBNQVJHSU5fSU5ERVggOiBCT1JERVJfSU5ERVgpO1xuICB9O1xuICB2YXIgd2hpY2ggPSBuYW1lID09PSAnd2lkdGgnID8gWydMZWZ0JywgJ1JpZ2h0J10gOiBbJ1RvcCcsICdCb3R0b20nXTtcblxuICBkb21VdGlsc1tuYW1lXSA9IGZ1bmN0aW9uIChlbGVtLCB2YWwpIHtcbiAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChlbGVtKSB7XG4gICAgICAgIHZhciBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZVgoZWxlbSk7XG4gICAgICAgIHZhciBpc0JvcmRlckJveCA9IGlzQm9yZGVyQm94Rm4oZWxlbSk7XG4gICAgICAgIGlmIChpc0JvcmRlckJveCkge1xuICAgICAgICAgIHZhbCArPSBnZXRQQk1XaWR0aChlbGVtLCBbJ3BhZGRpbmcnLCAnYm9yZGVyJ10sIHdoaWNoLCBjb21wdXRlZFN0eWxlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3NzKGVsZW0sIG5hbWUsIHZhbCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gZWxlbSAmJiBnZXRXSElnbm9yZURpc3BsYXkoZWxlbSwgbmFtZSwgQ09OVEVOVF9JTkRFWCk7XG4gIH07XG59KTtcblxuLy8g6K6+572uIGVsZW0g55u45a+5IGVsZW0ub3duZXJEb2N1bWVudCDnmoTlnZDmoIdcbmZ1bmN0aW9uIHNldE9mZnNldChlbGVtLCBvZmZzZXQpIHtcbiAgLy8gc2V0IHBvc2l0aW9uIGZpcnN0LCBpbi1jYXNlIHRvcC9sZWZ0IGFyZSBzZXQgZXZlbiBvbiBzdGF0aWMgZWxlbVxuICBpZiAoY3NzKGVsZW0sICdwb3NpdGlvbicpID09PSAnc3RhdGljJykge1xuICAgIGVsZW0uc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICB9XG5cbiAgdmFyIG9sZCA9IGdldE9mZnNldChlbGVtKTtcbiAgdmFyIHJldCA9IHt9O1xuICB2YXIgY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgdmFyIGtleSA9IHVuZGVmaW5lZDtcblxuICBmb3IgKGtleSBpbiBvZmZzZXQpIHtcbiAgICBpZiAob2Zmc2V0Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGN1cnJlbnQgPSBwYXJzZUZsb2F0KGNzcyhlbGVtLCBrZXkpKSB8fCAwO1xuICAgICAgcmV0W2tleV0gPSBjdXJyZW50ICsgb2Zmc2V0W2tleV0gLSBvbGRba2V5XTtcbiAgICB9XG4gIH1cbiAgY3NzKGVsZW0sIHJldCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHMoe1xuICBnZXRXaW5kb3c6IGZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gICAgdmFyIGRvYyA9IG5vZGUub3duZXJEb2N1bWVudCB8fCBub2RlO1xuICAgIHJldHVybiBkb2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdpbmRvdztcbiAgfSxcbiAgb2Zmc2V0OiBmdW5jdGlvbiBvZmZzZXQoZWwsIHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHNldE9mZnNldChlbCwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ2V0T2Zmc2V0KGVsKTtcbiAgICB9XG4gIH0sXG5cbiAgaXNXaW5kb3c6IGlzV2luZG93LFxuICBlYWNoOiBlYWNoLFxuICBjc3M6IGNzcyxcbiAgY2xvbmU6IGZ1bmN0aW9uIGNsb25lKG9iaikge1xuICAgIHZhciByZXQgPSB7fTtcbiAgICBmb3IgKHZhciBpIGluIG9iaikge1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShpKSkge1xuICAgICAgICByZXRbaV0gPSBvYmpbaV07XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBvdmVyZmxvdyA9IG9iai5vdmVyZmxvdztcbiAgICBpZiAob3ZlcmZsb3cpIHtcbiAgICAgIGZvciAodmFyIGkgaW4gb2JqKSB7XG4gICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgICAgICByZXQub3ZlcmZsb3dbaV0gPSBvYmoub3ZlcmZsb3dbaV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcbiAgc2Nyb2xsTGVmdDogZnVuY3Rpb24gc2Nyb2xsTGVmdCh3LCB2KSB7XG4gICAgaWYgKGlzV2luZG93KHcpKSB7XG4gICAgICBpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBnZXRTY3JvbGxMZWZ0KHcpO1xuICAgICAgfVxuICAgICAgd2luZG93LnNjcm9sbFRvKHYsIGdldFNjcm9sbFRvcCh3KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHcuc2Nyb2xsTGVmdDtcbiAgICAgIH1cbiAgICAgIHcuc2Nyb2xsTGVmdCA9IHY7XG4gICAgfVxuICB9LFxuICBzY3JvbGxUb3A6IGZ1bmN0aW9uIHNjcm9sbFRvcCh3LCB2KSB7XG4gICAgaWYgKGlzV2luZG93KHcpKSB7XG4gICAgICBpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBnZXRTY3JvbGxUb3Aodyk7XG4gICAgICB9XG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oZ2V0U2Nyb2xsTGVmdCh3KSwgdik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHcuc2Nyb2xsVG9wO1xuICAgICAgfVxuICAgICAgdy5zY3JvbGxUb3AgPSB2O1xuICAgIH1cbiAgfSxcblxuICB2aWV3cG9ydFdpZHRoOiAwLFxuICB2aWV3cG9ydEhlaWdodDogMFxufSwgZG9tVXRpbHMpOyIsInZhciBiYXNlSGFzID0gcmVxdWlyZSgnLi9fYmFzZUhhcycpLFxuICAgIGhhc1BhdGggPSByZXF1aXJlKCcuL19oYXNQYXRoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogeyAnYic6IDIgfSB9O1xuICogdmFyIG90aGVyID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICpcbiAqIF8uaGFzKG9iamVjdCwgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhcyhvYmplY3QsICdhLmInKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhcyhvYmplY3QsIFsnYScsICdiJ10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG90aGVyLCAnYScpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaGFzKG9iamVjdCwgcGF0aCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhcztcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSGFzKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSGFzO1xuIiwidmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBleGlzdHMgb24gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBmYWxzZTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgaWYgKCEocmVzdWx0ID0gb2JqZWN0ICE9IG51bGwgJiYgaGFzRnVuYyhvYmplY3QsIGtleSkpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgb2JqZWN0ID0gb2JqZWN0W2tleV07XG4gIH1cbiAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiYgaXNJbmRleChrZXksIGxlbmd0aCkgJiZcbiAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc1BhdGg7XG4iLCJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVJc0RlZXBQcm9wID0gL1xcLnxcXFsoPzpbXltcXF1dKnwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKj9cXDEpXFxdLyxcbiAgICByZUlzUGxhaW5Qcm9wID0gL15cXHcqJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lIGFuZCBub3QgYSBwcm9wZXJ0eSBwYXRoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXkodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIGlmICh0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicgfHxcbiAgICAgIHZhbHVlID09IG51bGwgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIHJlSXNQbGFpblByb3AudGVzdCh2YWx1ZSkgfHwgIXJlSXNEZWVwUHJvcC50ZXN0KHZhbHVlKSB8fFxuICAgIChvYmplY3QgIT0gbnVsbCAmJiB2YWx1ZSBpbiBPYmplY3Qob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXk7XG4iLCIvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgdmFyIGlzT3duID0gaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLFxuICAgICAgdGFnID0gdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXG4gIHRyeSB7XG4gICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdW5kZWZpbmVkO1xuICAgIHZhciB1bm1hc2tlZCA9IHRydWU7XG4gIH0gY2F0Y2ggKGUpIHt9XG5cbiAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICBpZiAodW5tYXNrZWQpIHtcbiAgICBpZiAoaXNPd24pIHtcbiAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHRhZztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRSYXdUYWc7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvYmplY3RUb1N0cmluZztcbiIsInZhciBtZW1vaXplQ2FwcGVkID0gcmVxdWlyZSgnLi9fbWVtb2l6ZUNhcHBlZCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVQcm9wTmFtZSA9IC9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xudmFyIHN0cmluZ1RvUGF0aCA9IG1lbW9pemVDYXBwZWQoZnVuY3Rpb24oc3RyaW5nKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKHN0cmluZy5jaGFyQ29kZUF0KDApID09PSA0NiAvKiAuICovKSB7XG4gICAgcmVzdWx0LnB1c2goJycpO1xuICB9XG4gIHN0cmluZy5yZXBsYWNlKHJlUHJvcE5hbWUsIGZ1bmN0aW9uKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcbiAgICByZXN1bHQucHVzaChxdW90ZSA/IHN1YlN0cmluZy5yZXBsYWNlKHJlRXNjYXBlQ2hhciwgJyQxJykgOiAobnVtYmVyIHx8IG1hdGNoKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5nVG9QYXRoO1xuIiwidmFyIG1lbW9pemUgPSByZXF1aXJlKCcuL21lbW9pemUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIG1heGltdW0gbWVtb2l6ZSBjYWNoZSBzaXplLiAqL1xudmFyIE1BWF9NRU1PSVpFX1NJWkUgPSA1MDA7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1lbW9pemVgIHdoaWNoIGNsZWFycyB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24nc1xuICogY2FjaGUgd2hlbiBpdCBleGNlZWRzIGBNQVhfTUVNT0laRV9TSVpFYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1lbW9pemVDYXBwZWQoZnVuYykge1xuICB2YXIgcmVzdWx0ID0gbWVtb2l6ZShmdW5jLCBmdW5jdGlvbihrZXkpIHtcbiAgICBpZiAoY2FjaGUuc2l6ZSA9PT0gTUFYX01FTU9JWkVfU0laRSkge1xuICAgICAgY2FjaGUuY2xlYXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbiAgfSk7XG5cbiAgdmFyIGNhY2hlID0gcmVzdWx0LmNhY2hlO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1lbW9pemVDYXBwZWQ7XG4iLCJ2YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gKiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgYXJndW1lbnRcbiAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAqIGNvbnN0cnVjdG9yIHdpdGggb25lIHdob3NlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhlXG4gKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVzb2x2ZXJdIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSBjYWNoZSBrZXkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAqXG4gKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogdmFsdWVzKG90aGVyKTtcbiAqIC8vID0+IFszLCA0XVxuICpcbiAqIG9iamVjdC5hID0gMjtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogLy8gTW9kaWZ5IHRoZSByZXN1bHQgY2FjaGUuXG4gKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICogXy5tZW1vaXplLkNhY2hlID0gV2Vha01hcDtcbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgIT0gbnVsbCAmJiB0eXBlb2YgcmVzb2x2ZXIgIT0gJ2Z1bmN0aW9uJykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgdmFyIG1lbW9pemVkID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICBjYWNoZSA9IG1lbW9pemVkLmNhY2hlO1xuXG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gIHJldHVybiBtZW1vaXplZDtcbn1cblxuLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG5tZW1vaXplLkNhY2hlID0gTWFwQ2FjaGU7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZTtcbiIsInZhciBtYXBDYWNoZUNsZWFyID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVDbGVhcicpLFxuICAgIG1hcENhY2hlRGVsZXRlID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVEZWxldGUnKSxcbiAgICBtYXBDYWNoZUdldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlR2V0JyksXG4gICAgbWFwQ2FjaGVIYXMgPSByZXF1aXJlKCcuL19tYXBDYWNoZUhhcycpLFxuICAgIG1hcENhY2hlU2V0ID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbk1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG5NYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG5NYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG5NYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG5NYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTWFwQ2FjaGU7XG4iLCJ2YXIgSGFzaCA9IHJlcXVpcmUoJy4vX0hhc2gnKSxcbiAgICBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVDbGVhcigpIHtcbiAgdGhpcy5zaXplID0gMDtcbiAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAnaGFzaCc6IG5ldyBIYXNoLFxuICAgICdtYXAnOiBuZXcgKE1hcCB8fCBMaXN0Q2FjaGUpLFxuICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlQ2xlYXI7XG4iLCJ2YXIgaGFzaENsZWFyID0gcmVxdWlyZSgnLi9faGFzaENsZWFyJyksXG4gICAgaGFzaERlbGV0ZSA9IHJlcXVpcmUoJy4vX2hhc2hEZWxldGUnKSxcbiAgICBoYXNoR2V0ID0gcmVxdWlyZSgnLi9faGFzaEdldCcpLFxuICAgIGhhc2hIYXMgPSByZXF1aXJlKCcuL19oYXNoSGFzJyksXG4gICAgaGFzaFNldCA9IHJlcXVpcmUoJy4vX2hhc2hTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgaGFzaCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIEhhc2goZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgSGFzaGAuXG5IYXNoLnByb3RvdHlwZS5jbGVhciA9IGhhc2hDbGVhcjtcbkhhc2gucHJvdG90eXBlWydkZWxldGUnXSA9IGhhc2hEZWxldGU7XG5IYXNoLnByb3RvdHlwZS5nZXQgPSBoYXNoR2V0O1xuSGFzaC5wcm90b3R5cGUuaGFzID0gaGFzaEhhcztcbkhhc2gucHJvdG90eXBlLnNldCA9IGhhc2hTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaDtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIEhhc2hcbiAqL1xuZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaENsZWFyO1xuIiwidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc01hc2tlZCA9IHJlcXVpcmUoJy4vX2lzTWFza2VkJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuXG4vKipcbiAqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGBcbiAqIFtzeW50YXggY2hhcmFjdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcGF0dGVybnMpLlxuICovXG52YXIgcmVSZWdFeHBDaGFyID0gL1tcXFxcXiQuKis/KClbXFxde318XS9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSkuICovXG52YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBpZiBhIG1ldGhvZCBpcyBuYXRpdmUuICovXG52YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgK1xuICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZywgJyQxLio/JykgKyAnJCdcbik7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYXRpdmVgIHdpdGhvdXQgYmFkIHNoaW0gY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpIHx8IGlzTWFza2VkKHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcGF0dGVybiA9IGlzRnVuY3Rpb24odmFsdWUpID8gcmVJc05hdGl2ZSA6IHJlSXNIb3N0Q3RvcjtcbiAgcmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc05hdGl2ZTtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRnVuY3Rpb247XG4iLCJ2YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hc2tlZDtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcmVKc0RhdGE7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzb3VyY2UgY29kZS5cbiAqL1xuZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICBpZiAoZnVuYyAhPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9Tb3VyY2U7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRWYWx1ZTtcbiIsIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaERlbGV0ZTtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpID8gZGF0YVtrZXldIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hHZXQ7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoSGFzO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoU2V0O1xuIiwidmFyIGxpc3RDYWNoZUNsZWFyID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlQ2xlYXInKSxcbiAgICBsaXN0Q2FjaGVEZWxldGUgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVEZWxldGUnKSxcbiAgICBsaXN0Q2FjaGVHZXQgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVHZXQnKSxcbiAgICBsaXN0Q2FjaGVIYXMgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVIYXMnKSxcbiAgICBsaXN0Q2FjaGVTZXQgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbkxpc3RDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBsaXN0Q2FjaGVDbGVhcjtcbkxpc3RDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbGlzdENhY2hlRGVsZXRlO1xuTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmhhcyA9IGxpc3RDYWNoZUhhcztcbkxpc3RDYWNoZS5wcm90b3R5cGUuc2V0ID0gbGlzdENhY2hlU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExpc3RDYWNoZTtcbiIsIi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVDbGVhcjtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgLS10aGlzLnNpemU7XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZURlbGV0ZTtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVHZXQ7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUhhcztcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICArK3RoaXMuc2l6ZTtcbiAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZVNldDtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdNYXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBNYXA7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVEZWxldGU7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXlhYmxlO1xuIiwidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbWFwIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUdldChrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5nZXQoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUdldDtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlSGFzO1xuIiwidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogU2V0cyB0aGUgbWFwIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IGdldE1hcERhdGEodGhpcywga2V5KSxcbiAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSArPSBkYXRhLnNpemUgPT0gc2l6ZSA/IDAgOiAxO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZVNldDtcbiIsInZhciBiYXNlVG9TdHJpbmcgPSByZXF1aXJlKCcuL19iYXNlVG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgZm9yIGBudWxsYFxuICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvU3RyaW5nKG51bGwpO1xuICogLy8gPT4gJydcbiAqXG4gKiBfLnRvU3RyaW5nKC0wKTtcbiAqIC8vID0+ICctMCdcbiAqXG4gKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAnMSwyLDMnXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiBiYXNlVG9TdHJpbmcodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvU3RyaW5nO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xUb1N0cmluZyA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udG9TdHJpbmcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9TdHJpbmdgIHdoaWNoIGRvZXNuJ3QgY29udmVydCBudWxsaXNoXG4gKiB2YWx1ZXMgdG8gZW1wdHkgc3RyaW5ncy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKSB7XG4gIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgY29udmVydCB2YWx1ZXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIGJhc2VUb1N0cmluZykgKyAnJztcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRvU3RyaW5nO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TWFwKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheU1hcDtcbiIsInZhciBiYXNlSXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL19iYXNlSXNBcmd1bWVudHMnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcmd1bWVudHMgPSBiYXNlSXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPyBiYXNlSXNBcmd1bWVudHMgOiBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FyZ3VtZW50cztcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzQXJndW1lbnRzO1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTGVuZ3RoKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTGVuZ3RoO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZnJvbSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL2FycmF5L2Zyb21cIik7XG5cbnZhciBfZnJvbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9mcm9tKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgYXJyMltpXSA9IGFycltpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJyMjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKDAsIF9mcm9tMi5kZWZhdWx0KShhcnIpO1xuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9hcnJheS9mcm9tXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5hcnJheS5mcm9tJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5BcnJheS5mcm9tO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuL19pdGVyLWNhbGwnKTtcbnZhciBpc0FycmF5SXRlciA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgZ2V0SXRlckZuID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbiAoaXRlcikgeyBBcnJheS5mcm9tKGl0ZXIpOyB9KSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjIuMSBBcnJheS5mcm9tKGFycmF5TGlrZSwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQpXG4gIGZyb206IGZ1bmN0aW9uIGZyb20oYXJyYXlMaWtlIC8qICwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQgKi8pIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KGFycmF5TGlrZSk7XG4gICAgdmFyIEMgPSB0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nID8gdGhpcyA6IEFycmF5O1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgbWFwZm4gPSBhTGVuID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgaXRlckZuID0gZ2V0SXRlckZuKE8pO1xuICAgIHZhciBsZW5ndGgsIHJlc3VsdCwgc3RlcCwgaXRlcmF0b3I7XG4gICAgaWYgKG1hcHBpbmcpIG1hcGZuID0gY3R4KG1hcGZuLCBhTGVuID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCwgMik7XG4gICAgLy8gaWYgb2JqZWN0IGlzbid0IGl0ZXJhYmxlIG9yIGl0J3MgYXJyYXkgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yIC0gdXNlIHNpbXBsZSBjYXNlXG4gICAgaWYgKGl0ZXJGbiAhPSB1bmRlZmluZWQgJiYgIShDID09IEFycmF5ICYmIGlzQXJyYXlJdGVyKGl0ZXJGbikpKSB7XG4gICAgICBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoTyksIHJlc3VsdCA9IG5ldyBDKCk7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTsgaW5kZXgrKykge1xuICAgICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCBtYXBwaW5nID8gY2FsbChpdGVyYXRvciwgbWFwZm4sIFtzdGVwLnZhbHVlLCBpbmRleF0sIHRydWUpIDogc3RlcC52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICAgIGZvciAocmVzdWx0ID0gbmV3IEMobGVuZ3RoKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsIi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3JcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcykge1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuIiwiLy8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICE9PSB1bmRlZmluZWQgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b1tJVEVSQVRPUl0gPT09IGl0KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBpbmRleCwgdmFsdWUpIHtcbiAgaWYgKGluZGV4IGluIG9iamVjdCkgJGRlZmluZVByb3BlcnR5LmYob2JqZWN0LCBpbmRleCwgY3JlYXRlRGVzYygwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtpbmRleF0gPSB2YWx1ZTtcbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ICE9IHVuZGVmaW5lZCkgcmV0dXJuIGl0W0lURVJBVE9SXVxuICAgIHx8IGl0WydAQGl0ZXJhdG9yJ11cbiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xufTtcbiIsIi8vIGdldHRpbmcgdGFnIGZyb20gMTkuMS4zLjYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIEFSRyA9IGNvZihmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTywgVCwgQjtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKFQgPSB0cnlHZXQoTyA9IE9iamVjdChpdCksIFRBRykpID09ICdzdHJpbmcnID8gVFxuICAgIC8vIGJ1aWx0aW5UYWcgY2FzZVxuICAgIDogQVJHID8gY29mKE8pXG4gICAgLy8gRVMzIGFyZ3VtZW50cyBmYWxsYmFja1xuICAgIDogKEIgPSBjb2YoTykpID09ICdPYmplY3QnICYmIHR5cGVvZiBPLmNhbGxlZSA9PSAnZnVuY3Rpb24nID8gJ0FyZ3VtZW50cycgOiBCO1xufTtcbiIsInZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uICgpIHsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBza2lwQ2xvc2luZykge1xuICBpZiAoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNhZmUgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gWzddO1xuICAgIHZhciBpdGVyID0gYXJyW0lURVJBVE9SXSgpO1xuICAgIGl0ZXIubmV4dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgZG9uZTogc2FmZSA9IHRydWUgfTsgfTtcbiAgICBhcnJbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcjsgfTtcbiAgICBleGVjKGFycik7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG52YXIgZmFjdG9yeSA9IHJlcXVpcmUoJy4vZmFjdG9yeScpO1xuXG5pZiAodHlwZW9mIFJlYWN0ID09PSAndW5kZWZpbmVkJykge1xuICB0aHJvdyBFcnJvcihcbiAgICAnY3JlYXRlLXJlYWN0LWNsYXNzIGNvdWxkIG5vdCBmaW5kIHRoZSBSZWFjdCBvYmplY3QuIElmIHlvdSBhcmUgdXNpbmcgc2NyaXB0IHRhZ3MsICcgK1xuICAgICAgJ21ha2Ugc3VyZSB0aGF0IFJlYWN0IGlzIGJlaW5nIGxvYWRlZCBiZWZvcmUgY3JlYXRlLXJlYWN0LWNsYXNzLidcbiAgKTtcbn1cblxuLy8gSGFjayB0byBncmFiIE5vb3BVcGRhdGVRdWV1ZSBmcm9tIGlzb21vcnBoaWMgUmVhY3RcbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IG5ldyBSZWFjdC5Db21wb25lbnQoKS51cGRhdGVyO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoXG4gIFJlYWN0LkNvbXBvbmVudCxcbiAgUmVhY3QuaXNWYWxpZEVsZW1lbnQsXG4gIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlXG4pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlPYmplY3QnKTtcbnZhciBfaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xufVxuXG52YXIgTUlYSU5TX0tFWSA9ICdtaXhpbnMnO1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gYWxsb3cgdGhlIGNyZWF0aW9uIG9mIGFub255bW91cyBmdW5jdGlvbnMgd2hpY2ggZG8gbm90XG4vLyBoYXZlIC5uYW1lIHNldCB0byB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgYmVpbmcgYXNzaWduZWQgdG8uXG5mdW5jdGlvbiBpZGVudGl0eShmbikge1xuICByZXR1cm4gZm47XG59XG5cbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcztcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge1xuICAgIHByb3A6ICdwcm9wJyxcbiAgICBjb250ZXh0OiAnY29udGV4dCcsXG4gICAgY2hpbGRDb250ZXh0OiAnY2hpbGQgY29udGV4dCdcbiAgfTtcbn0gZWxzZSB7XG4gIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge307XG59XG5cbmZ1bmN0aW9uIGZhY3RvcnkoUmVhY3RDb21wb25lbnQsIGlzVmFsaWRFbGVtZW50LCBSZWFjdE5vb3BVcGRhdGVRdWV1ZSkge1xuICAvKipcbiAgICogUG9saWNpZXMgdGhhdCBkZXNjcmliZSBtZXRob2RzIGluIGBSZWFjdENsYXNzSW50ZXJmYWNlYC5cbiAgICovXG5cbiAgdmFyIGluamVjdGVkTWl4aW5zID0gW107XG5cbiAgLyoqXG4gICAqIENvbXBvc2l0ZSBjb21wb25lbnRzIGFyZSBoaWdoZXItbGV2ZWwgY29tcG9uZW50cyB0aGF0IGNvbXBvc2Ugb3RoZXIgY29tcG9zaXRlXG4gICAqIG9yIGhvc3QgY29tcG9uZW50cy5cbiAgICpcbiAgICogVG8gY3JlYXRlIGEgbmV3IHR5cGUgb2YgYFJlYWN0Q2xhc3NgLCBwYXNzIGEgc3BlY2lmaWNhdGlvbiBvZlxuICAgKiB5b3VyIG5ldyBjbGFzcyB0byBgUmVhY3QuY3JlYXRlQ2xhc3NgLiBUaGUgb25seSByZXF1aXJlbWVudCBvZiB5b3VyIGNsYXNzXG4gICAqIHNwZWNpZmljYXRpb24gaXMgdGhhdCB5b3UgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLlxuICAgKlxuICAgKiAgIHZhciBNeUNvbXBvbmVudCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7XG4gICAqICAgICAgIHJldHVybiA8ZGl2PkhlbGxvIFdvcmxkPC9kaXY+O1xuICAgKiAgICAgfVxuICAgKiAgIH0pO1xuICAgKlxuICAgKiBUaGUgY2xhc3Mgc3BlY2lmaWNhdGlvbiBzdXBwb3J0cyBhIHNwZWNpZmljIHByb3RvY29sIG9mIG1ldGhvZHMgdGhhdCBoYXZlXG4gICAqIHNwZWNpYWwgbWVhbmluZyAoZS5nLiBgcmVuZGVyYCkuIFNlZSBgUmVhY3RDbGFzc0ludGVyZmFjZWAgZm9yXG4gICAqIG1vcmUgdGhlIGNvbXByZWhlbnNpdmUgcHJvdG9jb2wuIEFueSBvdGhlciBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIGluIHRoZVxuICAgKiBjbGFzcyBzcGVjaWZpY2F0aW9uIHdpbGwgYmUgYXZhaWxhYmxlIG9uIHRoZSBwcm90b3R5cGUuXG4gICAqXG4gICAqIEBpbnRlcmZhY2UgUmVhY3RDbGFzc0ludGVyZmFjZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHZhciBSZWFjdENsYXNzSW50ZXJmYWNlID0ge1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIE1peGluIG9iamVjdHMgdG8gaW5jbHVkZSB3aGVuIGRlZmluaW5nIHlvdXIgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHR5cGUge2FycmF5fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIG1peGluczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgdGhhdCBzaG91bGQgYmUgZGVmaW5lZCBvblxuICAgICAqIHRoZSBjb21wb25lbnQncyBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIGl0cyBwcm90b3R5cGUgKHN0YXRpYyBtZXRob2RzKS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgc3RhdGljczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIERlZmluaXRpb24gb2YgcHJvcCB0eXBlcyBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIHByb3BUeXBlczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbnRleHRUeXBlczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyB0aGlzIGNvbXBvbmVudCBzZXRzIGZvciBpdHMgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNoaWxkQ29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLy8gPT09PSBEZWZpbml0aW9uIG1ldGhvZHMgPT09PVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgbW91bnRlZC4gVmFsdWVzIGluIHRoZSBtYXBwaW5nIHdpbGwgYmUgc2V0IG9uXG4gICAgICogYHRoaXMucHJvcHNgIGlmIHRoYXQgcHJvcCBpcyBub3Qgc3BlY2lmaWVkIChpLmUuIHVzaW5nIGFuIGBpbmAgY2hlY2spLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgaXMgaW52b2tlZCBiZWZvcmUgYGdldEluaXRpYWxTdGF0ZWAgYW5kIHRoZXJlZm9yZSBjYW5ub3QgcmVseVxuICAgICAqIG9uIGB0aGlzLnN0YXRlYCBvciB1c2UgYHRoaXMuc2V0U3RhdGVgLlxuICAgICAqXG4gICAgICogQHJldHVybiB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdldERlZmF1bHRQcm9wczogJ0RFRklORV9NQU5ZX01FUkdFRCcsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIG9uY2UgYmVmb3JlIHRoZSBjb21wb25lbnQgaXMgbW91bnRlZC4gVGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIHVzZWRcbiAgICAgKiBhcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBgdGhpcy5zdGF0ZWAuXG4gICAgICpcbiAgICAgKiAgIGdldEluaXRpYWxTdGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICogICAgIHJldHVybiB7XG4gICAgICogICAgICAgaXNPbjogZmFsc2UsXG4gICAgICogICAgICAgZm9vQmF6OiBuZXcgQmF6Rm9vKClcbiAgICAgKiAgICAgfVxuICAgICAqICAgfVxuICAgICAqXG4gICAgICogQHJldHVybiB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdldEluaXRpYWxTdGF0ZTogJ0RFRklORV9NQU5ZX01FUkdFRCcsXG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgZ2V0Q2hpbGRDb250ZXh0OiAnREVGSU5FX01BTllfTUVSR0VEJyxcblxuICAgIC8qKlxuICAgICAqIFVzZXMgcHJvcHMgZnJvbSBgdGhpcy5wcm9wc2AgYW5kIHN0YXRlIGZyb20gYHRoaXMuc3RhdGVgIHRvIHJlbmRlciB0aGVcbiAgICAgKiBzdHJ1Y3R1cmUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIE5vIGd1YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgd2hlbiBvciBob3cgb2Z0ZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgc29cbiAgICAgKiBpdCBtdXN0IG5vdCBoYXZlIHNpZGUgZWZmZWN0cy5cbiAgICAgKlxuICAgICAqICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgdmFyIG5hbWUgPSB0aGlzLnByb3BzLm5hbWU7XG4gICAgICogICAgIHJldHVybiA8ZGl2PkhlbGxvLCB7bmFtZX0hPC9kaXY+O1xuICAgICAqICAgfVxuICAgICAqXG4gICAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9XG4gICAgICogQHJlcXVpcmVkXG4gICAgICovXG4gICAgcmVuZGVyOiAnREVGSU5FX09OQ0UnLFxuXG4gICAgLy8gPT09PSBEZWxlZ2F0ZSBtZXRob2RzID09PT1cblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxseSBjcmVhdGVkIGFuZCBhYm91dCB0byBiZSBtb3VudGVkLlxuICAgICAqIFRoaXMgbWF5IGhhdmUgc2lkZSBlZmZlY3RzLCBidXQgYW55IGV4dGVybmFsIHN1YnNjcmlwdGlvbnMgb3IgZGF0YSBjcmVhdGVkXG4gICAgICogYnkgdGhpcyBtZXRob2QgbXVzdCBiZSBjbGVhbmVkIHVwIGluIGBjb21wb25lbnRXaWxsVW5tb3VudGAuXG4gICAgICpcbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21wb25lbnRXaWxsTW91bnQ6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBtb3VudGVkIGFuZCBoYXMgYSBET00gcmVwcmVzZW50YXRpb24uXG4gICAgICogSG93ZXZlciwgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIERPTSBub2RlIGlzIGluIHRoZSBkb2N1bWVudC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25lbnQgaGFzXG4gICAgICogYmVlbiBtb3VudGVkIChpbml0aWFsaXplZCBhbmQgcmVuZGVyZWQpIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQuXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50RGlkTW91bnQ6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIGJlZm9yZSB0aGUgY29tcG9uZW50IHJlY2VpdmVzIG5ldyBwcm9wcy5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHJlYWN0IHRvIGEgcHJvcCB0cmFuc2l0aW9uIGJ5IHVwZGF0aW5nIHRoZVxuICAgICAqIHN0YXRlIHVzaW5nIGB0aGlzLnNldFN0YXRlYC4gQ3VycmVudCBwcm9wcyBhcmUgYWNjZXNzZWQgdmlhIGB0aGlzLnByb3BzYC5cbiAgICAgKlxuICAgICAqICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogZnVuY3Rpb24obmV4dFByb3BzLCBuZXh0Q29udGV4dCkge1xuICAgICAqICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgKiAgICAgICBsaWtlc0luY3JlYXNpbmc6IG5leHRQcm9wcy5saWtlQ291bnQgPiB0aGlzLnByb3BzLmxpa2VDb3VudFxuICAgICAqICAgICB9KTtcbiAgICAgKiAgIH1cbiAgICAgKlxuICAgICAqIE5PVEU6IFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgYGNvbXBvbmVudFdpbGxSZWNlaXZlU3RhdGVgLiBBbiBpbmNvbWluZyBwcm9wXG4gICAgICogdHJhbnNpdGlvbiBtYXkgY2F1c2UgYSBzdGF0ZSBjaGFuZ2UsIGJ1dCB0aGUgb3Bwb3NpdGUgaXMgbm90IHRydWUuIElmIHlvdVxuICAgICAqIG5lZWQgaXQsIHlvdSBhcmUgcHJvYmFibHkgbG9va2luZyBmb3IgYGNvbXBvbmVudFdpbGxVcGRhdGVgLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoaWxlIGRlY2lkaW5nIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2ZcbiAgICAgKiByZWNlaXZpbmcgbmV3IHByb3BzLCBzdGF0ZSBhbmQvb3IgY29udGV4dC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIGByZXR1cm4gZmFsc2VgIHdoZW4geW91J3JlIGNlcnRhaW4gdGhhdCB0aGVcbiAgICAgKiB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgcHJvcHMvc3RhdGUvY29udGV4dCB3aWxsIG5vdCByZXF1aXJlIGEgY29tcG9uZW50XG4gICAgICogdXBkYXRlLlxuICAgICAqXG4gICAgICogICBzaG91bGRDb21wb25lbnRVcGRhdGU6IGZ1bmN0aW9uKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCkge1xuICAgICAqICAgICByZXR1cm4gIWVxdWFsKG5leHRQcm9wcywgdGhpcy5wcm9wcykgfHxcbiAgICAgKiAgICAgICAhZXF1YWwobmV4dFN0YXRlLCB0aGlzLnN0YXRlKSB8fFxuICAgICAqICAgICAgICFlcXVhbChuZXh0Q29udGV4dCwgdGhpcy5jb250ZXh0KTtcbiAgICAgKiAgIH1cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZVxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHRcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZS5cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBzaG91bGRDb21wb25lbnRVcGRhdGU6ICdERUZJTkVfT05DRScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byB1cGRhdGUgZHVlIHRvIGEgdHJhbnNpdGlvbiBmcm9tXG4gICAgICogYHRoaXMucHJvcHNgLCBgdGhpcy5zdGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRgIHRvIGBuZXh0UHJvcHNgLCBgbmV4dFN0YXRlYFxuICAgICAqIGFuZCBgbmV4dENvbnRleHRgLlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcGVyZm9ybSBwcmVwYXJhdGlvbiBiZWZvcmUgYW4gdXBkYXRlIG9jY3Vycy5cbiAgICAgKlxuICAgICAqIE5PVEU6IFlvdSAqKmNhbm5vdCoqIHVzZSBgdGhpcy5zZXRTdGF0ZSgpYCBpbiB0aGlzIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZVxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHRcbiAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50V2lsbFVwZGF0ZTogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50J3MgRE9NIHJlcHJlc2VudGF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBvcGVyYXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhc1xuICAgICAqIGJlZW4gdXBkYXRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBwcmV2UHJvcHNcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZTdGF0ZVxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gcHJldkNvbnRleHRcbiAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50LlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudERpZFVwZGF0ZTogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGFib3V0IHRvIGJlIHJlbW92ZWQgZnJvbSBpdHMgcGFyZW50IGFuZCBoYXZlXG4gICAgICogaXRzIERPTSByZXByZXNlbnRhdGlvbiBkZXN0cm95ZWQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBkZWFsbG9jYXRlIGFueSBleHRlcm5hbCByZXNvdXJjZXMuXG4gICAgICpcbiAgICAgKiBOT1RFOiBUaGVyZSBpcyBubyBgY29tcG9uZW50RGlkVW5tb3VudGAgc2luY2UgeW91ciBjb21wb25lbnQgd2lsbCBoYXZlIGJlZW5cbiAgICAgKiBkZXN0cm95ZWQgYnkgdGhhdCBwb2ludC5cbiAgICAgKlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50OiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZW1lbnQgZm9yIChkZXByZWNhdGVkKSBgY29tcG9uZW50V2lsbE1vdW50YC5cbiAgICAgKlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIFVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQ6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlbWVudCBmb3IgKGRlcHJlY2F0ZWQpIGBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzYC5cbiAgICAgKlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZW1lbnQgZm9yIChkZXByZWNhdGVkKSBgY29tcG9uZW50V2lsbFVwZGF0ZWAuXG4gICAgICpcbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBVTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZTogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8vID09PT0gQWR2YW5jZWQgbWV0aG9kcyA9PT09XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBjb21wb25lbnQncyBjdXJyZW50bHkgbW91bnRlZCBET00gcmVwcmVzZW50YXRpb24uXG4gICAgICpcbiAgICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVudHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS5cbiAgICAgKiBTb3BoaXN0aWNhdGVkIGNsaWVudHMgbWF5IHdpc2ggdG8gb3ZlcnJpZGUgdGhpcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKiBAb3ZlcnJpZGFibGVcbiAgICAgKi9cbiAgICB1cGRhdGVDb21wb25lbnQ6ICdPVkVSUklERV9CQVNFJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBTaW1pbGFyIHRvIFJlYWN0Q2xhc3NJbnRlcmZhY2UgYnV0IGZvciBzdGF0aWMgbWV0aG9kcy5cbiAgICovXG4gIHZhciBSZWFjdENsYXNzU3RhdGljSW50ZXJmYWNlID0ge1xuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYWZ0ZXIgYSBjb21wb25lbnQgaXMgaW5zdGFudGlhdGVkIGFuZCB3aGVuIGl0XG4gICAgICogcmVjZWl2ZXMgbmV3IHByb3BzLiBSZXR1cm4gYW4gb2JqZWN0IHRvIHVwZGF0ZSBzdGF0ZSBpbiByZXNwb25zZSB0b1xuICAgICAqIHByb3AgY2hhbmdlcy4gUmV0dXJuIG51bGwgdG8gaW5kaWNhdGUgbm8gY2hhbmdlIHRvIHN0YXRlLlxuICAgICAqXG4gICAgICogSWYgYW4gb2JqZWN0IGlzIHJldHVybmVkLCBpdHMga2V5cyB3aWxsIGJlIG1lcmdlZCBpbnRvIHRoZSBleGlzdGluZyBzdGF0ZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge29iamVjdCB8fCBudWxsfVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczogJ0RFRklORV9NQU5ZX01FUkdFRCdcbiAgfTtcblxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIGNsYXNzIHNwZWNpZmljYXRpb24ga2V5cyB0byBzcGVjaWFsIHByb2Nlc3NpbmcgZnVuY3Rpb25zLlxuICAgKlxuICAgKiBBbHRob3VnaCB0aGVzZSBhcmUgZGVjbGFyZWQgbGlrZSBpbnN0YW5jZSBwcm9wZXJ0aWVzIGluIHRoZSBzcGVjaWZpY2F0aW9uXG4gICAqIHdoZW4gZGVmaW5pbmcgY2xhc3NlcyB1c2luZyBgUmVhY3QuY3JlYXRlQ2xhc3NgLCB0aGV5IGFyZSBhY3R1YWxseSBzdGF0aWNcbiAgICogYW5kIGFyZSBhY2Nlc3NpYmxlIG9uIHRoZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIHRoZSBwcm90b3R5cGUuIERlc3BpdGVcbiAgICogYmVpbmcgc3RhdGljLCB0aGV5IG11c3QgYmUgZGVmaW5lZCBvdXRzaWRlIG9mIHRoZSBcInN0YXRpY3NcIiBrZXkgdW5kZXJcbiAgICogd2hpY2ggYWxsIG90aGVyIHN0YXRpYyBtZXRob2RzIGFyZSBkZWZpbmVkLlxuICAgKi9cbiAgdmFyIFJFU0VSVkVEX1NQRUNfS0VZUyA9IHtcbiAgICBkaXNwbGF5TmFtZTogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGRpc3BsYXlOYW1lKSB7XG4gICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xuICAgIH0sXG4gICAgbWl4aW5zOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgbWl4aW5zKSB7XG4gICAgICBpZiAobWl4aW5zKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWl4aW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIG1peGluc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGNoaWxkQ29udGV4dFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgY2hpbGRDb250ZXh0VHlwZXMpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgY2hpbGRDb250ZXh0VHlwZXMsICdjaGlsZENvbnRleHQnKTtcbiAgICAgIH1cbiAgICAgIENvbnN0cnVjdG9yLmNoaWxkQ29udGV4dFR5cGVzID0gX2Fzc2lnbihcbiAgICAgICAge30sXG4gICAgICAgIENvbnN0cnVjdG9yLmNoaWxkQ29udGV4dFR5cGVzLFxuICAgICAgICBjaGlsZENvbnRleHRUeXBlc1xuICAgICAgKTtcbiAgICB9LFxuICAgIGNvbnRleHRUeXBlczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGNvbnRleHRUeXBlcykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjb250ZXh0VHlwZXMsICdjb250ZXh0Jyk7XG4gICAgICB9XG4gICAgICBDb25zdHJ1Y3Rvci5jb250ZXh0VHlwZXMgPSBfYXNzaWduKFxuICAgICAgICB7fSxcbiAgICAgICAgQ29uc3RydWN0b3IuY29udGV4dFR5cGVzLFxuICAgICAgICBjb250ZXh0VHlwZXNcbiAgICAgICk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBTcGVjaWFsIGNhc2UgZ2V0RGVmYXVsdFByb3BzIHdoaWNoIHNob3VsZCBtb3ZlIGludG8gc3RhdGljcyBidXQgcmVxdWlyZXNcbiAgICAgKiBhdXRvbWF0aWMgbWVyZ2luZy5cbiAgICAgKi9cbiAgICBnZXREZWZhdWx0UHJvcHM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBnZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24oXG4gICAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzLFxuICAgICAgICAgIGdldERlZmF1bHRQcm9wc1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gZ2V0RGVmYXVsdFByb3BzO1xuICAgICAgfVxuICAgIH0sXG4gICAgcHJvcFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIHByb3BUeXBlcywgJ3Byb3AnKTtcbiAgICAgIH1cbiAgICAgIENvbnN0cnVjdG9yLnByb3BUeXBlcyA9IF9hc3NpZ24oe30sIENvbnN0cnVjdG9yLnByb3BUeXBlcywgcHJvcFR5cGVzKTtcbiAgICB9LFxuICAgIHN0YXRpY3M6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBzdGF0aWNzKSB7XG4gICAgICBtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3RhdGljcyk7XG4gICAgfSxcbiAgICBhdXRvYmluZDogZnVuY3Rpb24oKSB7fVxuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgdHlwZURlZiwgbG9jYXRpb24pIHtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiB0eXBlRGVmKSB7XG4gICAgICBpZiAodHlwZURlZi5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgLy8gdXNlIGEgd2FybmluZyBpbnN0ZWFkIG9mIGFuIF9pbnZhcmlhbnQgc28gY29tcG9uZW50c1xuICAgICAgICAvLyBkb24ndCBzaG93IHVwIGluIHByb2QgYnV0IG9ubHkgaW4gX19ERVZfX1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICB0eXBlb2YgdHlwZURlZltwcm9wTmFtZV0gPT09ICdmdW5jdGlvbicsXG4gICAgICAgICAgICAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICtcbiAgICAgICAgICAgICAgJ1JlYWN0LlByb3BUeXBlcy4nLFxuICAgICAgICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q2xhc3MnLFxuICAgICAgICAgICAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLFxuICAgICAgICAgICAgcHJvcE5hbWVcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVNZXRob2RPdmVycmlkZShpc0FscmVhZHlEZWZpbmVkLCBuYW1lKSB7XG4gICAgdmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpXG4gICAgICA/IFJlYWN0Q2xhc3NJbnRlcmZhY2VbbmFtZV1cbiAgICAgIDogbnVsbDtcblxuICAgIC8vIERpc2FsbG93IG92ZXJyaWRpbmcgb2YgYmFzZSBjbGFzcyBtZXRob2RzIHVubGVzcyBleHBsaWNpdGx5IGFsbG93ZWQuXG4gICAgaWYgKFJlYWN0Q2xhc3NNaXhpbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgX2ludmFyaWFudChcbiAgICAgICAgc3BlY1BvbGljeSA9PT0gJ09WRVJSSURFX0JBU0UnLFxuICAgICAgICAnUmVhY3RDbGFzc0ludGVyZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRvIG92ZXJyaWRlICcgK1xuICAgICAgICAgICdgJXNgIGZyb20geW91ciBjbGFzcyBzcGVjaWZpY2F0aW9uLiBFbnN1cmUgdGhhdCB5b3VyIG1ldGhvZCBuYW1lcyAnICtcbiAgICAgICAgICAnZG8gbm90IG92ZXJsYXAgd2l0aCBSZWFjdCBtZXRob2RzLicsXG4gICAgICAgIG5hbWVcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRGlzYWxsb3cgZGVmaW5pbmcgbWV0aG9kcyBtb3JlIHRoYW4gb25jZSB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2VkLlxuICAgIGlmIChpc0FscmVhZHlEZWZpbmVkKSB7XG4gICAgICBfaW52YXJpYW50KFxuICAgICAgICBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknIHx8IHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuICAgICAgICAnUmVhY3RDbGFzc0ludGVyZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSAnICtcbiAgICAgICAgICAnYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUgZHVlICcgK1xuICAgICAgICAgICd0byBhIG1peGluLicsXG4gICAgICAgIG5hbWVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1peGluIGhlbHBlciB3aGljaCBoYW5kbGVzIHBvbGljeSB2YWxpZGF0aW9uIGFuZCByZXNlcnZlZFxuICAgKiBzcGVjaWZpY2F0aW9uIGtleXMgd2hlbiBidWlsZGluZyBSZWFjdCBjbGFzc2VzLlxuICAgKi9cbiAgZnVuY3Rpb24gbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHNwZWMpIHtcbiAgICBpZiAoIXNwZWMpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhciB0eXBlb2ZTcGVjID0gdHlwZW9mIHNwZWM7XG4gICAgICAgIHZhciBpc01peGluVmFsaWQgPSB0eXBlb2ZTcGVjID09PSAnb2JqZWN0JyAmJiBzcGVjICE9PSBudWxsO1xuXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgIGlzTWl4aW5WYWxpZCxcbiAgICAgICAgICAgIFwiJXM6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIGluY2x1ZGUgYSBtaXhpbiB0aGF0IGlzIGVpdGhlciBudWxsIFwiICtcbiAgICAgICAgICAgICAgJ29yIG5vdCBhbiBvYmplY3QuIENoZWNrIHRoZSBtaXhpbnMgaW5jbHVkZWQgYnkgdGhlIGNvbXBvbmVudCwgJyArXG4gICAgICAgICAgICAgICdhcyB3ZWxsIGFzIGFueSBtaXhpbnMgdGhleSBpbmNsdWRlIHRoZW1zZWx2ZXMuICcgK1xuICAgICAgICAgICAgICAnRXhwZWN0ZWQgb2JqZWN0IGJ1dCBnb3QgJXMuJyxcbiAgICAgICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENsYXNzJyxcbiAgICAgICAgICAgIHNwZWMgPT09IG51bGwgPyBudWxsIDogdHlwZW9mU3BlY1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIF9pbnZhcmlhbnQoXG4gICAgICB0eXBlb2Ygc3BlYyAhPT0gJ2Z1bmN0aW9uJyxcbiAgICAgIFwiUmVhY3RDbGFzczogWW91J3JlIGF0dGVtcHRpbmcgdG8gXCIgK1xuICAgICAgICAndXNlIGEgY29tcG9uZW50IGNsYXNzIG9yIGZ1bmN0aW9uIGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgJyArXG4gICAgICAgICdyZWd1bGFyIG9iamVjdC4nXG4gICAgKTtcbiAgICBfaW52YXJpYW50KFxuICAgICAgIWlzVmFsaWRFbGVtZW50KHNwZWMpLFxuICAgICAgXCJSZWFjdENsYXNzOiBZb3UncmUgYXR0ZW1wdGluZyB0byBcIiArXG4gICAgICAgICd1c2UgYSBjb21wb25lbnQgYXMgYSBtaXhpbi4gSW5zdGVhZCwganVzdCB1c2UgYSByZWd1bGFyIG9iamVjdC4nXG4gICAgKTtcblxuICAgIHZhciBwcm90byA9IENvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgICB2YXIgYXV0b0JpbmRQYWlycyA9IHByb3RvLl9fcmVhY3RBdXRvQmluZFBhaXJzO1xuXG4gICAgLy8gQnkgaGFuZGxpbmcgbWl4aW5zIGJlZm9yZSBhbnkgb3RoZXIgcHJvcGVydGllcywgd2UgZW5zdXJlIHRoZSBzYW1lXG4gICAgLy8gY2hhaW5pbmcgb3JkZXIgaXMgYXBwbGllZCB0byBtZXRob2RzIHdpdGggREVGSU5FX01BTlkgcG9saWN5LCB3aGV0aGVyXG4gICAgLy8gbWl4aW5zIGFyZSBsaXN0ZWQgYmVmb3JlIG9yIGFmdGVyIHRoZXNlIG1ldGhvZHMgaW4gdGhlIHNwZWMuXG4gICAgaWYgKHNwZWMuaGFzT3duUHJvcGVydHkoTUlYSU5TX0tFWSkpIHtcbiAgICAgIFJFU0VSVkVEX1NQRUNfS0VZUy5taXhpbnMoQ29uc3RydWN0b3IsIHNwZWMubWl4aW5zKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBuYW1lIGluIHNwZWMpIHtcbiAgICAgIGlmICghc3BlYy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWUgPT09IE1JWElOU19LRVkpIHtcbiAgICAgICAgLy8gV2UgaGF2ZSBhbHJlYWR5IGhhbmRsZWQgbWl4aW5zIGluIGEgc3BlY2lhbCBjYXNlIGFib3ZlLlxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHByb3BlcnR5ID0gc3BlY1tuYW1lXTtcbiAgICAgIHZhciBpc0FscmVhZHlEZWZpbmVkID0gcHJvdG8uaGFzT3duUHJvcGVydHkobmFtZSk7XG4gICAgICB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5hbWUpO1xuXG4gICAgICBpZiAoUkVTRVJWRURfU1BFQ19LRVlTLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIFJFU0VSVkVEX1NQRUNfS0VZU1tuYW1lXShDb25zdHJ1Y3RvciwgcHJvcGVydHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2V0dXAgbWV0aG9kcyBvbiBwcm90b3R5cGU6XG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbWVtYmVyIG1ldGhvZHMgc2hvdWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGJvdW5kOlxuICAgICAgICAvLyAxLiBFeHBlY3RlZCBSZWFjdENsYXNzIG1ldGhvZHMgKGluIHRoZSBcImludGVyZmFjZVwiKS5cbiAgICAgICAgLy8gMi4gT3ZlcnJpZGRlbiBtZXRob2RzICh0aGF0IHdlcmUgbWl4ZWQgaW4pLlxuICAgICAgICB2YXIgaXNSZWFjdENsYXNzTWV0aG9kID0gUmVhY3RDbGFzc0ludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShuYW1lKTtcbiAgICAgICAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgcHJvcGVydHkgPT09ICdmdW5jdGlvbic7XG4gICAgICAgIHZhciBzaG91bGRBdXRvQmluZCA9XG4gICAgICAgICAgaXNGdW5jdGlvbiAmJlxuICAgICAgICAgICFpc1JlYWN0Q2xhc3NNZXRob2QgJiZcbiAgICAgICAgICAhaXNBbHJlYWR5RGVmaW5lZCAmJlxuICAgICAgICAgIHNwZWMuYXV0b2JpbmQgIT09IGZhbHNlO1xuXG4gICAgICAgIGlmIChzaG91bGRBdXRvQmluZCkge1xuICAgICAgICAgIGF1dG9CaW5kUGFpcnMucHVzaChuYW1lLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgcHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaXNBbHJlYWR5RGVmaW5lZCkge1xuICAgICAgICAgICAgdmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlW25hbWVdO1xuXG4gICAgICAgICAgICAvLyBUaGVzZSBjYXNlcyBzaG91bGQgYWxyZWFkeSBiZSBjYXVnaHQgYnkgdmFsaWRhdGVNZXRob2RPdmVycmlkZS5cbiAgICAgICAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgICAgICAgIGlzUmVhY3RDbGFzc01ldGhvZCAmJlxuICAgICAgICAgICAgICAgIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJyB8fFxuICAgICAgICAgICAgICAgICAgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJyksXG4gICAgICAgICAgICAgICdSZWFjdENsYXNzOiBVbmV4cGVjdGVkIHNwZWMgcG9saWN5ICVzIGZvciBrZXkgJXMgJyArXG4gICAgICAgICAgICAgICAgJ3doZW4gbWl4aW5nIGluIGNvbXBvbmVudCBzcGVjcy4nLFxuICAgICAgICAgICAgICBzcGVjUG9saWN5LFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBGb3IgbWV0aG9kcyB3aGljaCBhcmUgZGVmaW5lZCBtb3JlIHRoYW4gb25jZSwgY2FsbCB0aGUgZXhpc3RpbmdcbiAgICAgICAgICAgIC8vIG1ldGhvZHMgYmVmb3JlIGNhbGxpbmcgdGhlIG5ldyBwcm9wZXJ0eSwgbWVyZ2luZyBpZiBhcHByb3ByaWF0ZS5cbiAgICAgICAgICAgIGlmIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJykge1xuICAgICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKHByb3RvW25hbWVdLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScpIHtcbiAgICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVDaGFpbmVkRnVuY3Rpb24ocHJvdG9bbmFtZV0sIHByb3BlcnR5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgIC8vIEFkZCB2ZXJib3NlIGRpc3BsYXlOYW1lIHRvIHRoZSBmdW5jdGlvbiwgd2hpY2ggaGVscHMgd2hlbiBsb29raW5nXG4gICAgICAgICAgICAgIC8vIGF0IHByb2ZpbGluZyB0b29scy5cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJyAmJiBzcGVjLmRpc3BsYXlOYW1lKSB7XG4gICAgICAgICAgICAgICAgcHJvdG9bbmFtZV0uZGlzcGxheU5hbWUgPSBzcGVjLmRpc3BsYXlOYW1lICsgJ18nICsgbmFtZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNzKSB7XG4gICAgaWYgKCFzdGF0aWNzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yICh2YXIgbmFtZSBpbiBzdGF0aWNzKSB7XG4gICAgICB2YXIgcHJvcGVydHkgPSBzdGF0aWNzW25hbWVdO1xuICAgICAgaWYgKCFzdGF0aWNzLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgaXNSZXNlcnZlZCA9IG5hbWUgaW4gUkVTRVJWRURfU1BFQ19LRVlTO1xuICAgICAgX2ludmFyaWFudChcbiAgICAgICAgIWlzUmVzZXJ2ZWQsXG4gICAgICAgICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lIGEgcmVzZXJ2ZWQgJyArXG4gICAgICAgICAgJ3Byb3BlcnR5LCBgJXNgLCB0aGF0IHNob3VsZG5cXCd0IGJlIG9uIHRoZSBcInN0YXRpY3NcIiBrZXkuIERlZmluZSBpdCAnICtcbiAgICAgICAgICAnYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgaW5zdGVhZDsgaXQgd2lsbCBzdGlsbCBiZSBhY2Nlc3NpYmxlIG9uIHRoZSAnICtcbiAgICAgICAgICAnY29uc3RydWN0b3IuJyxcbiAgICAgICAgbmFtZVxuICAgICAgKTtcblxuICAgICAgdmFyIGlzQWxyZWFkeURlZmluZWQgPSBuYW1lIGluIENvbnN0cnVjdG9yO1xuICAgICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcbiAgICAgICAgdmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzU3RhdGljSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpXG4gICAgICAgICAgPyBSZWFjdENsYXNzU3RhdGljSW50ZXJmYWNlW25hbWVdXG4gICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgICAgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcsXG4gICAgICAgICAgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgJyArXG4gICAgICAgICAgICAnYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUgJyArXG4gICAgICAgICAgICAnZHVlIHRvIGEgbWl4aW4uJyxcbiAgICAgICAgICBuYW1lXG4gICAgICAgICk7XG5cbiAgICAgICAgQ29uc3RydWN0b3JbbmFtZV0gPSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihDb25zdHJ1Y3RvcltuYW1lXSwgcHJvcGVydHkpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgQ29uc3RydWN0b3JbbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgdHdvIG9iamVjdHMsIGJ1dCB0aHJvdyBpZiBib3RoIGNvbnRhaW4gdGhlIHNhbWUga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gb25lIFRoZSBmaXJzdCBvYmplY3QsIHdoaWNoIGlzIG11dGF0ZWQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB0d28gVGhlIHNlY29uZCBvYmplY3RcbiAgICogQHJldHVybiB7b2JqZWN0fSBvbmUgYWZ0ZXIgaXQgaGFzIGJlZW4gbXV0YXRlZCB0byBjb250YWluIGV2ZXJ5dGhpbmcgaW4gdHdvLlxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhvbmUsIHR3bykge1xuICAgIF9pbnZhcmlhbnQoXG4gICAgICBvbmUgJiYgdHdvICYmIHR5cGVvZiBvbmUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB0d28gPT09ICdvYmplY3QnLFxuICAgICAgJ21lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoKTogQ2Fubm90IG1lcmdlIG5vbi1vYmplY3RzLidcbiAgICApO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHR3bykge1xuICAgICAgaWYgKHR3by5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgICAgb25lW2tleV0gPT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiAnICtcbiAgICAgICAgICAgICdUcmllZCB0byBtZXJnZSB0d28gb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGtleTogYCVzYC4gVGhpcyBjb25mbGljdCAnICtcbiAgICAgICAgICAgICdtYXkgYmUgZHVlIHRvIGEgbWl4aW47IGluIHBhcnRpY3VsYXIsIHRoaXMgbWF5IGJlIGNhdXNlZCBieSB0d28gJyArXG4gICAgICAgICAgICAnZ2V0SW5pdGlhbFN0YXRlKCkgb3IgZ2V0RGVmYXVsdFByb3BzKCkgbWV0aG9kcyByZXR1cm5pbmcgb2JqZWN0cyAnICtcbiAgICAgICAgICAgICd3aXRoIGNsYXNoaW5nIGtleXMuJyxcbiAgICAgICAgICBrZXlcbiAgICAgICAgKTtcbiAgICAgICAgb25lW2tleV0gPSB0d29ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIG1lcmdlcyB0aGVpciByZXR1cm4gdmFsdWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC5cbiAgICogQHJldHVybiB7ZnVuY3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0aW9ucy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKG9uZSwgdHdvKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZFJlc3VsdCgpIHtcbiAgICAgIHZhciBhID0gb25lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB2YXIgYiA9IHR3by5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgaWYgKGEgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gYjtcbiAgICAgIH0gZWxzZSBpZiAoYiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuICAgICAgdmFyIGMgPSB7fTtcbiAgICAgIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYSk7XG4gICAgICBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKGMsIGIpO1xuICAgICAgcmV0dXJuIGM7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIGlnbm9yZXMgdGhlaXIgcmV0dXJuIHZhbGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC5cbiAgICogQHJldHVybiB7ZnVuY3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0aW9ucy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoYWluZWRGdW5jdGlvbihvbmUsIHR3bykge1xuICAgIHJldHVybiBmdW5jdGlvbiBjaGFpbmVkRnVuY3Rpb24oKSB7XG4gICAgICBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIHR3by5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYSBtZXRob2QgdG8gdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudCBDb21wb25lbnQgd2hvc2UgbWV0aG9kIGlzIGdvaW5nIHRvIGJlIGJvdW5kLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtZXRob2QgTWV0aG9kIHRvIGJlIGJvdW5kLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGJvdW5kIG1ldGhvZC5cbiAgICovXG4gIGZ1bmN0aW9uIGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25lbnQsIG1ldGhvZCkge1xuICAgIHZhciBib3VuZE1ldGhvZCA9IG1ldGhvZC5iaW5kKGNvbXBvbmVudCk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZENvbnRleHQgPSBjb21wb25lbnQ7XG4gICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG4gICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBudWxsO1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQuY29uc3RydWN0b3IuZGlzcGxheU5hbWU7XG4gICAgICB2YXIgX2JpbmQgPSBib3VuZE1ldGhvZC5iaW5kO1xuICAgICAgYm91bmRNZXRob2QuYmluZCA9IGZ1bmN0aW9uKG5ld1RoaXMpIHtcbiAgICAgICAgZm9yIChcbiAgICAgICAgICB2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLFxuICAgICAgICAgICAgX2tleSA9IDE7XG4gICAgICAgICAgX2tleSA8IF9sZW47XG4gICAgICAgICAgX2tleSsrXG4gICAgICAgICkge1xuICAgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlciBpcyB0cnlpbmcgdG8gYmluZCgpIGFuIGF1dG9ib3VuZCBtZXRob2Q7IHdlIGVmZmVjdGl2ZWx5IHdpbGxcbiAgICAgICAgLy8gaWdub3JlIHRoZSB2YWx1ZSBvZiBcInRoaXNcIiB0aGF0IHRoZSB1c2VyIGlzIHRyeWluZyB0byB1c2UsIHNvXG4gICAgICAgIC8vIGxldCdzIHdhcm4uXG4gICAgICAgIGlmIChuZXdUaGlzICE9PSBjb21wb25lbnQgJiYgbmV3VGhpcyAhPT0gbnVsbCkge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgJ2JpbmQoKTogUmVhY3QgY29tcG9uZW50IG1ldGhvZHMgbWF5IG9ubHkgYmUgYm91bmQgdG8gdGhlICcgK1xuICAgICAgICAgICAgICAgICdjb21wb25lbnQgaW5zdGFuY2UuIFNlZSAlcycsXG4gICAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFhcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgJ2JpbmQoKTogWW91IGFyZSBiaW5kaW5nIGEgY29tcG9uZW50IG1ldGhvZCB0byB0aGUgY29tcG9uZW50LiAnICtcbiAgICAgICAgICAgICAgICAnUmVhY3QgZG9lcyB0aGlzIGZvciB5b3UgYXV0b21hdGljYWxseSBpbiBhIGhpZ2gtcGVyZm9ybWFuY2UgJyArXG4gICAgICAgICAgICAgICAgJ3dheSwgc28geW91IGNhbiBzYWZlbHkgcmVtb3ZlIHRoaXMgY2FsbC4gU2VlICVzJyxcbiAgICAgICAgICAgICAgY29tcG9uZW50TmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGJvdW5kTWV0aG9kO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZWJvdW5kTWV0aG9kID0gX2JpbmQuYXBwbHkoYm91bmRNZXRob2QsIGFyZ3VtZW50cyk7XG4gICAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDtcbiAgICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG4gICAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQXJndW1lbnRzID0gYXJncztcbiAgICAgICAgcmV0dXJuIHJlYm91bmRNZXRob2Q7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gYm91bmRNZXRob2Q7XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYWxsIGF1dG8tYm91bmQgbWV0aG9kcyBpbiBhIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudCBDb21wb25lbnQgd2hvc2UgbWV0aG9kIGlzIGdvaW5nIHRvIGJlIGJvdW5kLlxuICAgKi9cbiAgZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kcyhjb21wb25lbnQpIHtcbiAgICB2YXIgcGFpcnMgPSBjb21wb25lbnQuX19yZWFjdEF1dG9CaW5kUGFpcnM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgdmFyIGF1dG9CaW5kS2V5ID0gcGFpcnNbaV07XG4gICAgICB2YXIgbWV0aG9kID0gcGFpcnNbaSArIDFdO1xuICAgICAgY29tcG9uZW50W2F1dG9CaW5kS2V5XSA9IGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25lbnQsIG1ldGhvZCk7XG4gICAgfVxuICB9XG5cbiAgdmFyIElzTW91bnRlZFByZU1peGluID0ge1xuICAgIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuX19pc01vdW50ZWQgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICB2YXIgSXNNb3VudGVkUG9zdE1peGluID0ge1xuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50OiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuX19pc01vdW50ZWQgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEFkZCBtb3JlIHRvIHRoZSBSZWFjdENsYXNzIGJhc2UgY2xhc3MuIFRoZXNlIGFyZSBhbGwgbGVnYWN5IGZlYXR1cmVzIGFuZFxuICAgKiB0aGVyZWZvcmUgbm90IGFscmVhZHkgcGFydCBvZiB0aGUgbW9kZXJuIFJlYWN0Q29tcG9uZW50LlxuICAgKi9cbiAgdmFyIFJlYWN0Q2xhc3NNaXhpbiA9IHtcbiAgICAvKipcbiAgICAgKiBUT0RPOiBUaGlzIHdpbGwgYmUgZGVwcmVjYXRlZCBiZWNhdXNlIHN0YXRlIHNob3VsZCBhbHdheXMga2VlcCBhIGNvbnNpc3RlbnRcbiAgICAgKiB0eXBlIHNpZ25hdHVyZSBhbmQgdGhlIG9ubHkgdXNlIGNhc2UgZm9yIHRoaXMsIGlzIHRvIGF2b2lkIHRoYXQuXG4gICAgICovXG4gICAgcmVwbGFjZVN0YXRlOiBmdW5jdGlvbihuZXdTdGF0ZSwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRlKHRoaXMsIG5ld1N0YXRlLCBjYWxsYmFjayk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQGZpbmFsXG4gICAgICovXG4gICAgaXNNb3VudGVkOiBmdW5jdGlvbigpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgdGhpcy5fX2RpZFdhcm5Jc01vdW50ZWQsXG4gICAgICAgICAgJyVzOiBpc01vdW50ZWQgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgbWFrZSBzdXJlIHRvIGNsZWFuIHVwICcgK1xuICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbnMgYW5kIHBlbmRpbmcgcmVxdWVzdHMgaW4gY29tcG9uZW50V2lsbFVubW91bnQgdG8gJyArXG4gICAgICAgICAgICAncHJldmVudCBtZW1vcnkgbGVha3MuJyxcbiAgICAgICAgICAodGhpcy5jb25zdHJ1Y3RvciAmJiB0aGlzLmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lKSB8fFxuICAgICAgICAgICAgdGhpcy5uYW1lIHx8XG4gICAgICAgICAgICAnQ29tcG9uZW50J1xuICAgICAgICApO1xuICAgICAgICB0aGlzLl9fZGlkV2FybklzTW91bnRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gISF0aGlzLl9faXNNb3VudGVkO1xuICAgIH1cbiAgfTtcblxuICB2YXIgUmVhY3RDbGFzc0NvbXBvbmVudCA9IGZ1bmN0aW9uKCkge307XG4gIF9hc3NpZ24oXG4gICAgUmVhY3RDbGFzc0NvbXBvbmVudC5wcm90b3R5cGUsXG4gICAgUmVhY3RDb21wb25lbnQucHJvdG90eXBlLFxuICAgIFJlYWN0Q2xhc3NNaXhpblxuICApO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBjbGFzcyBnaXZlbiBhIGNsYXNzIHNwZWNpZmljYXRpb24uXG4gICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jcmVhdGVjbGFzc1xuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gc3BlYyBDbGFzcyBzcGVjaWZpY2F0aW9uICh3aGljaCBtdXN0IGRlZmluZSBgcmVuZGVyYCkuXG4gICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBDb21wb25lbnQgY29uc3RydWN0b3IgZnVuY3Rpb24uXG4gICAqIEBwdWJsaWNcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZUNsYXNzKHNwZWMpIHtcbiAgICAvLyBUbyBrZWVwIG91ciB3YXJuaW5ncyBtb3JlIHVuZGVyc3RhbmRhYmxlLCB3ZSdsbCB1c2UgYSBsaXR0bGUgaGFjayBoZXJlIHRvXG4gICAgLy8gZW5zdXJlIHRoYXQgQ29uc3RydWN0b3IubmFtZSAhPT0gJ0NvbnN0cnVjdG9yJy4gVGhpcyBtYWtlcyBzdXJlIHdlIGRvbid0XG4gICAgLy8gdW5uZWNlc3NhcmlseSBpZGVudGlmeSBhIGNsYXNzIHdpdGhvdXQgZGlzcGxheU5hbWUgYXMgJ0NvbnN0cnVjdG9yJy5cbiAgICB2YXIgQ29uc3RydWN0b3IgPSBpZGVudGl0eShmdW5jdGlvbihwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xuICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBnZXRzIG92ZXJyaWRkZW4gYnkgbW9ja3MuIFRoZSBhcmd1bWVudCBpcyB1c2VkXG4gICAgICAvLyBieSBtb2NrcyB0byBhc3NlcnQgb24gd2hhdCBnZXRzIG1vdW50ZWQuXG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgdGhpcyBpbnN0YW5jZW9mIENvbnN0cnVjdG9yLFxuICAgICAgICAgICdTb21ldGhpbmcgaXMgY2FsbGluZyBhIFJlYWN0IGNvbXBvbmVudCBkaXJlY3RseS4gVXNlIGEgZmFjdG9yeSBvciAnICtcbiAgICAgICAgICAgICdKU1ggaW5zdGVhZC4gU2VlOiBodHRwczovL2ZiLm1lL3JlYWN0LWxlZ2FjeWZhY3RvcnknXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdpcmUgdXAgYXV0by1iaW5kaW5nXG4gICAgICBpZiAodGhpcy5fX3JlYWN0QXV0b0JpbmRQYWlycy5sZW5ndGgpIHtcbiAgICAgICAgYmluZEF1dG9CaW5kTWV0aG9kcyh0aGlzKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xuICAgICAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcblxuICAgICAgdGhpcy5zdGF0ZSA9IG51bGw7XG5cbiAgICAgIC8vIFJlYWN0Q2xhc3NlcyBkb2Vzbid0IGhhdmUgY29uc3RydWN0b3JzLiBJbnN0ZWFkLCB0aGV5IHVzZSB0aGVcbiAgICAgIC8vIGdldEluaXRpYWxTdGF0ZSBhbmQgY29tcG9uZW50V2lsbE1vdW50IG1ldGhvZHMgZm9yIGluaXRpYWxpemF0aW9uLlxuXG4gICAgICB2YXIgaW5pdGlhbFN0YXRlID0gdGhpcy5nZXRJbml0aWFsU3RhdGUgPyB0aGlzLmdldEluaXRpYWxTdGF0ZSgpIDogbnVsbDtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJldHVybmluZyBudWxsLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgaW5pdGlhbFN0YXRlID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICB0aGlzLmdldEluaXRpYWxTdGF0ZS5faXNNb2NrRnVuY3Rpb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBiYWQgcHJhY3RpY2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmRcbiAgICAgICAgICAvLyBkZXByZWNhdGluZyB0aGlzIGNvbnZlbmllbmNlLlxuICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgIHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGluaXRpYWxTdGF0ZSksXG4gICAgICAgICclcy5nZXRJbml0aWFsU3RhdGUoKTogbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwnLFxuICAgICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnXG4gICAgICApO1xuXG4gICAgICB0aGlzLnN0YXRlID0gaW5pdGlhbFN0YXRlO1xuICAgIH0pO1xuICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IG5ldyBSZWFjdENsYXNzQ29tcG9uZW50KCk7XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I7XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJzID0gW107XG5cbiAgICBpbmplY3RlZE1peGlucy5mb3JFYWNoKG1peFNwZWNJbnRvQ29tcG9uZW50LmJpbmQobnVsbCwgQ29uc3RydWN0b3IpKTtcblxuICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBJc01vdW50ZWRQcmVNaXhpbik7XG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHNwZWMpO1xuICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBJc01vdW50ZWRQb3N0TWl4aW4pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdFByb3BzIHByb3BlcnR5IGFmdGVyIGFsbCBtaXhpbnMgaGF2ZSBiZWVuIG1lcmdlZC5cbiAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICBDb25zdHJ1Y3Rvci5kZWZhdWx0UHJvcHMgPSBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMoKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gVGhpcyBpcyBhIHRhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlc2UgbWV0aG9kIG5hbWVzIGlzIG9rLFxuICAgICAgLy8gc2luY2UgaXQncyB1c2VkIHdpdGggY3JlYXRlQ2xhc3MuIElmIGl0J3Mgbm90LCB0aGVuIGl0J3MgbGlrZWx5IGFcbiAgICAgIC8vIG1pc3Rha2Ugc28gd2UnbGwgd2FybiB5b3UgdG8gdXNlIHRoZSBzdGF0aWMgcHJvcGVydHksIHByb3BlcnR5XG4gICAgICAvLyBpbml0aWFsaXplciBvciBjb25zdHJ1Y3RvciByZXNwZWN0aXZlbHkuXG4gICAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKENvbnN0cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFsU3RhdGUpIHtcbiAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZS5pc1JlYWN0Q2xhc3NBcHByb3ZlZCA9IHt9O1xuICAgICAgfVxuICAgIH1cblxuICAgIF9pbnZhcmlhbnQoXG4gICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUucmVuZGVyLFxuICAgICAgJ2NyZWF0ZUNsYXNzKC4uLik6IENsYXNzIHNwZWNpZmljYXRpb24gbXVzdCBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2QuJ1xuICAgICk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybmluZyhcbiAgICAgICAgIUNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25lbnRTaG91bGRVcGRhdGUsXG4gICAgICAgICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgK1xuICAgICAgICAgICdjb21wb25lbnRTaG91bGRVcGRhdGUoKS4gRGlkIHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpPyAnICtcbiAgICAgICAgICAnVGhlIG5hbWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzICcgK1xuICAgICAgICAgICdleHBlY3RlZCB0byByZXR1cm4gYSB2YWx1ZS4nLFxuICAgICAgICBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCdcbiAgICAgICk7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICAhQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMsXG4gICAgICAgICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgK1xuICAgICAgICAgICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JyxcbiAgICAgICAgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnXG4gICAgICApO1xuICAgICAgd2FybmluZyhcbiAgICAgICAgIUNvbnN0cnVjdG9yLnByb3RvdHlwZS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyxcbiAgICAgICAgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMoKS4gJyArXG4gICAgICAgICAgJ0RpZCB5b3UgbWVhbiBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpPycsXG4gICAgICAgIHNwZWMuZGlzcGxheU5hbWUgfHwgJ0EgY29tcG9uZW50J1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBSZWR1Y2UgdGltZSBzcGVudCBkb2luZyBsb29rdXBzIGJ5IHNldHRpbmcgdGhlc2Ugb24gdGhlIHByb3RvdHlwZS5cbiAgICBmb3IgKHZhciBtZXRob2ROYW1lIGluIFJlYWN0Q2xhc3NJbnRlcmZhY2UpIHtcbiAgICAgIGlmICghQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZUNsYXNzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3Rvcnk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlbXB0eU9iamVjdCA9IHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBPYmplY3QuZnJlZXplKGVtcHR5T2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlbXB0eU9iamVjdDsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3aGljaCB5b3VyIHByb2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLlxuICpcbiAqIFByb3ZpZGUgc3ByaW50Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzXG4gKiB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdlcmVcbiAqIGV4cGVjdGluZy5cbiAqXG4gKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBzdHJpcHBlZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFudFxuICogd2lsbCByZW1haW4gdG8gZW5zdXJlIGxvZ2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLlxuICovXG5cbnZhciB2YWxpZGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCkge307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhbGlkYXRlRm9ybWF0ID0gZnVuY3Rpb24gdmFsaWRhdGVGb3JtYXQoZm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCByZXF1aXJlcyBhbiBlcnJvciBtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBpbnZhcmlhbnQoY29uZGl0aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgdmFsaWRhdGVGb3JtYXQoZm9ybWF0KTtcblxuICBpZiAoIWNvbmRpdGlvbikge1xuICAgIHZhciBlcnJvcjtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKCdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCAnICsgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBhcmdzID0gW2EsIGIsIGMsIGQsIGUsIGZdO1xuICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuICAgICAgfSkpO1xuICAgICAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB9XG5cbiAgICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnZhcmlhbnQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciB1bnNhZmVMaWZlY3ljbGVzUG9seWZpbGwgPSBmdW5jdGlvbiB1bnNhZmVMaWZlY3ljbGVzUG9seWZpbGwoQ29tcG9uZW50KSB7XG4gIHZhciBwcm90b3R5cGUgPSBDb21wb25lbnQucHJvdG90eXBlO1xuXG4gIGlmICghcHJvdG90eXBlIHx8ICFwcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2FuIG9ubHkgcG9seWZpbGwgY2xhc3MgY29tcG9uZW50cycpO1xuICB9IC8vIG9ubHkgaGFuZGxlIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHNcblxuXG4gIGlmICh0eXBlb2YgcHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQ29tcG9uZW50O1xuICB9IC8vIEluIFJlYWN0IDE2LjksIFJlYWN0LlByb2ZpbGVyIHdhcyBpbnRyb2R1Y2VkIHRvZ2V0aGVyIHdpdGggVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHNcbiAgLy8gaHR0cHM6Ly9yZWFjdGpzLm9yZy9ibG9nLzIwMTkvMDgvMDgvcmVhY3QtdjE2LjkuMC5odG1sI3BlcmZvcm1hbmNlLW1lYXN1cmVtZW50cy13aXRoLXJlYWN0cHJvZmlsZXJcblxuXG4gIGlmICghX3JlYWN0LmRlZmF1bHQuUHJvZmlsZXIpIHtcbiAgICByZXR1cm4gQ29tcG9uZW50O1xuICB9IC8vIEhlcmUgcG9seWZpbGwgZ2V0IHN0YXJ0ZWRcblxuXG4gIHByb3RvdHlwZS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyA9IHByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzO1xuICBkZWxldGUgcHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM7XG4gIHJldHVybiBDb21wb25lbnQ7XG59O1xuXG52YXIgX2RlZmF1bHQgPSB1bnNhZmVMaWZlY3ljbGVzUG9seWZpbGw7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxudmFyIF91dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbnZhciBfdmFsaWRhdG9yID0gcmVxdWlyZSgnLi92YWxpZGF0b3IvJyk7XG5cbnZhciBfdmFsaWRhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3ZhbGlkYXRvcik7XG5cbnZhciBfbWVzc2FnZXMyID0gcmVxdWlyZSgnLi9tZXNzYWdlcycpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbi8qKlxuICogIEVuY2Fwc3VsYXRlcyBhIHZhbGlkYXRpb24gc2NoZW1hLlxuICpcbiAqICBAcGFyYW0gZGVzY3JpcHRvciBBbiBvYmplY3QgZGVjbGFyaW5nIHZhbGlkYXRpb24gcnVsZXNcbiAqICBmb3IgdGhpcyBzY2hlbWEuXG4gKi9cbmZ1bmN0aW9uIFNjaGVtYShkZXNjcmlwdG9yKSB7XG4gIHRoaXMucnVsZXMgPSBudWxsO1xuICB0aGlzLl9tZXNzYWdlcyA9IF9tZXNzYWdlczIubWVzc2FnZXM7XG4gIHRoaXMuZGVmaW5lKGRlc2NyaXB0b3IpO1xufVxuXG5TY2hlbWEucHJvdG90eXBlID0ge1xuICBtZXNzYWdlczogZnVuY3Rpb24gbWVzc2FnZXMoX21lc3NhZ2VzKSB7XG4gICAgaWYgKF9tZXNzYWdlcykge1xuICAgICAgdGhpcy5fbWVzc2FnZXMgPSAoMCwgX3V0aWwuZGVlcE1lcmdlKSgoMCwgX21lc3NhZ2VzMi5uZXdNZXNzYWdlcykoKSwgX21lc3NhZ2VzKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VzO1xuICB9LFxuICBkZWZpbmU6IGZ1bmN0aW9uIGRlZmluZShydWxlcykge1xuICAgIGlmICghcnVsZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNvbmZpZ3VyZSBhIHNjaGVtYSB3aXRoIG5vIHJ1bGVzJyk7XG4gICAgfVxuICAgIGlmICgodHlwZW9mIHJ1bGVzID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihydWxlcykpICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHJ1bGVzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdWxlcyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICB0aGlzLnJ1bGVzID0ge307XG4gICAgdmFyIHogPSB2b2lkIDA7XG4gICAgdmFyIGl0ZW0gPSB2b2lkIDA7XG4gICAgZm9yICh6IGluIHJ1bGVzKSB7XG4gICAgICBpZiAocnVsZXMuaGFzT3duUHJvcGVydHkoeikpIHtcbiAgICAgICAgaXRlbSA9IHJ1bGVzW3pdO1xuICAgICAgICB0aGlzLnJ1bGVzW3pdID0gQXJyYXkuaXNBcnJheShpdGVtKSA/IGl0ZW0gOiBbaXRlbV07XG4gICAgICB9XG4gICAgfVxuICB9LFxuICB2YWxpZGF0ZTogZnVuY3Rpb24gdmFsaWRhdGUoc291cmNlXykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgbyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gICAgdmFyIG9jID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBmdW5jdGlvbiAoKSB7fTtcblxuICAgIHZhciBzb3VyY2UgPSBzb3VyY2VfO1xuICAgIHZhciBvcHRpb25zID0gbztcbiAgICB2YXIgY2FsbGJhY2sgPSBvYztcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnJ1bGVzIHx8IE9iamVjdC5rZXlzKHRoaXMucnVsZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcGxldGUocmVzdWx0cykge1xuICAgICAgdmFyIGkgPSB2b2lkIDA7XG4gICAgICB2YXIgZXJyb3JzID0gW107XG4gICAgICB2YXIgZmllbGRzID0ge307XG5cbiAgICAgIGZ1bmN0aW9uIGFkZChlKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7XG4gICAgICAgICAgdmFyIF9lcnJvcnM7XG5cbiAgICAgICAgICBlcnJvcnMgPSAoX2Vycm9ycyA9IGVycm9ycykuY29uY2F0LmFwcGx5KF9lcnJvcnMsIGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVycm9ycy5wdXNoKGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGFkZChyZXN1bHRzW2ldKTtcbiAgICAgIH1cbiAgICAgIGlmICghZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICBlcnJvcnMgPSBudWxsO1xuICAgICAgICBmaWVsZHMgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmllbGRzID0gKDAsIF91dGlsLmNvbnZlcnRGaWVsZHNFcnJvcikoZXJyb3JzKTtcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKGVycm9ycywgZmllbGRzKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5tZXNzYWdlcykge1xuICAgICAgdmFyIG1lc3NhZ2VzID0gdGhpcy5tZXNzYWdlcygpO1xuICAgICAgaWYgKG1lc3NhZ2VzID09PSBfbWVzc2FnZXMyLm1lc3NhZ2VzKSB7XG4gICAgICAgIG1lc3NhZ2VzID0gKDAsIF9tZXNzYWdlczIubmV3TWVzc2FnZXMpKCk7XG4gICAgICB9XG4gICAgICAoMCwgX3V0aWwuZGVlcE1lcmdlKShtZXNzYWdlcywgb3B0aW9ucy5tZXNzYWdlcyk7XG4gICAgICBvcHRpb25zLm1lc3NhZ2VzID0gbWVzc2FnZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMubWVzc2FnZXMgPSB0aGlzLm1lc3NhZ2VzKCk7XG4gICAgfVxuICAgIHZhciBhcnIgPSB2b2lkIDA7XG4gICAgdmFyIHZhbHVlID0gdm9pZCAwO1xuICAgIHZhciBzZXJpZXMgPSB7fTtcbiAgICB2YXIga2V5cyA9IG9wdGlvbnMua2V5cyB8fCBPYmplY3Qua2V5cyh0aGlzLnJ1bGVzKTtcbiAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKHopIHtcbiAgICAgIGFyciA9IF90aGlzLnJ1bGVzW3pdO1xuICAgICAgdmFsdWUgPSBzb3VyY2Vbel07XG4gICAgICBhcnIuZm9yRWFjaChmdW5jdGlvbiAocikge1xuICAgICAgICB2YXIgcnVsZSA9IHI7XG4gICAgICAgIGlmICh0eXBlb2YgcnVsZS50cmFuc2Zvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBpZiAoc291cmNlID09PSBzb3VyY2VfKSB7XG4gICAgICAgICAgICBzb3VyY2UgPSBfZXh0ZW5kcyh7fSwgc291cmNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFsdWUgPSBzb3VyY2Vbel0gPSBydWxlLnRyYW5zZm9ybSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBydWxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcnVsZSA9IHtcbiAgICAgICAgICAgIHZhbGlkYXRvcjogcnVsZVxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcnVsZSA9IF9leHRlbmRzKHt9LCBydWxlKTtcbiAgICAgICAgfVxuICAgICAgICBydWxlLnZhbGlkYXRvciA9IF90aGlzLmdldFZhbGlkYXRpb25NZXRob2QocnVsZSk7XG4gICAgICAgIHJ1bGUuZmllbGQgPSB6O1xuICAgICAgICBydWxlLmZ1bGxGaWVsZCA9IHJ1bGUuZnVsbEZpZWxkIHx8IHo7XG4gICAgICAgIHJ1bGUudHlwZSA9IF90aGlzLmdldFR5cGUocnVsZSk7XG4gICAgICAgIGlmICghcnVsZS52YWxpZGF0b3IpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2VyaWVzW3pdID0gc2VyaWVzW3pdIHx8IFtdO1xuICAgICAgICBzZXJpZXNbel0ucHVzaCh7XG4gICAgICAgICAgcnVsZTogcnVsZSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgZmllbGQ6IHpcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB2YXIgZXJyb3JGaWVsZHMgPSB7fTtcbiAgICByZXR1cm4gKDAsIF91dGlsLmFzeW5jTWFwKShzZXJpZXMsIG9wdGlvbnMsIGZ1bmN0aW9uIChkYXRhLCBkb0l0KSB7XG4gICAgICB2YXIgcnVsZSA9IGRhdGEucnVsZTtcbiAgICAgIHZhciBkZWVwID0gKHJ1bGUudHlwZSA9PT0gJ29iamVjdCcgfHwgcnVsZS50eXBlID09PSAnYXJyYXknKSAmJiAoX3R5cGVvZihydWxlLmZpZWxkcykgPT09ICdvYmplY3QnIHx8IF90eXBlb2YocnVsZS5kZWZhdWx0RmllbGQpID09PSAnb2JqZWN0Jyk7XG4gICAgICBkZWVwID0gZGVlcCAmJiAocnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBkYXRhLnZhbHVlKTtcbiAgICAgIHJ1bGUuZmllbGQgPSBkYXRhLmZpZWxkO1xuXG4gICAgICBmdW5jdGlvbiBhZGRGdWxsZmllbGQoa2V5LCBzY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBzY2hlbWEsIHtcbiAgICAgICAgICBmdWxsRmllbGQ6IHJ1bGUuZnVsbEZpZWxkICsgJy4nICsga2V5XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjYigpIHtcbiAgICAgICAgdmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IFtdO1xuXG4gICAgICAgIHZhciBlcnJvcnMgPSBlO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXJyb3JzKSkge1xuICAgICAgICAgIGVycm9ycyA9IFtlcnJvcnNdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghb3B0aW9ucy5zdXBwcmVzc1dhcm5pbmcgJiYgZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgIFNjaGVtYS53YXJuaW5nKCdhc3luYy12YWxpZGF0b3I6JywgZXJyb3JzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCAmJiBydWxlLm1lc3NhZ2UpIHtcbiAgICAgICAgICBlcnJvcnMgPSBbXS5jb25jYXQocnVsZS5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVycm9ycyA9IGVycm9ycy5tYXAoKDAsIF91dGlsLmNvbXBsZW1lbnRFcnJvcikocnVsZSkpO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmZpcnN0ICYmIGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICBlcnJvckZpZWxkc1tydWxlLmZpZWxkXSA9IDE7XG4gICAgICAgICAgcmV0dXJuIGRvSXQoZXJyb3JzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWRlZXApIHtcbiAgICAgICAgICBkb0l0KGVycm9ycyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gaWYgcnVsZSBpcyByZXF1aXJlZCBidXQgdGhlIHRhcmdldCBvYmplY3RcbiAgICAgICAgICAvLyBkb2VzIG5vdCBleGlzdCBmYWlsIGF0IHRoZSBydWxlIGxldmVsIGFuZCBkb24ndFxuICAgICAgICAgIC8vIGdvIGRlZXBlclxuICAgICAgICAgIGlmIChydWxlLnJlcXVpcmVkICYmICFkYXRhLnZhbHVlKSB7XG4gICAgICAgICAgICBpZiAocnVsZS5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgIGVycm9ycyA9IFtdLmNvbmNhdChydWxlLm1lc3NhZ2UpLm1hcCgoMCwgX3V0aWwuY29tcGxlbWVudEVycm9yKShydWxlKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZXJyb3IpIHtcbiAgICAgICAgICAgICAgZXJyb3JzID0gW29wdGlvbnMuZXJyb3IocnVsZSwgKDAsIF91dGlsLmZvcm1hdCkob3B0aW9ucy5tZXNzYWdlcy5yZXF1aXJlZCwgcnVsZS5maWVsZCkpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGVycm9ycyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRvSXQoZXJyb3JzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgZmllbGRzU2NoZW1hID0ge307XG4gICAgICAgICAgaWYgKHJ1bGUuZGVmYXVsdEZpZWxkKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIGRhdGEudmFsdWUpIHtcbiAgICAgICAgICAgICAgaWYgKGRhdGEudmFsdWUuaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICAgICAgICBmaWVsZHNTY2hlbWFba10gPSBydWxlLmRlZmF1bHRGaWVsZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBmaWVsZHNTY2hlbWEgPSBfZXh0ZW5kcyh7fSwgZmllbGRzU2NoZW1hLCBkYXRhLnJ1bGUuZmllbGRzKTtcbiAgICAgICAgICBmb3IgKHZhciBmIGluIGZpZWxkc1NjaGVtYSkge1xuICAgICAgICAgICAgaWYgKGZpZWxkc1NjaGVtYS5oYXNPd25Qcm9wZXJ0eShmKSkge1xuICAgICAgICAgICAgICB2YXIgZmllbGRTY2hlbWEgPSBBcnJheS5pc0FycmF5KGZpZWxkc1NjaGVtYVtmXSkgPyBmaWVsZHNTY2hlbWFbZl0gOiBbZmllbGRzU2NoZW1hW2ZdXTtcbiAgICAgICAgICAgICAgZmllbGRzU2NoZW1hW2ZdID0gZmllbGRTY2hlbWEubWFwKGFkZEZ1bGxmaWVsZC5iaW5kKG51bGwsIGYpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIHNjaGVtYSA9IG5ldyBTY2hlbWEoZmllbGRzU2NoZW1hKTtcbiAgICAgICAgICBzY2hlbWEubWVzc2FnZXMob3B0aW9ucy5tZXNzYWdlcyk7XG4gICAgICAgICAgaWYgKGRhdGEucnVsZS5vcHRpb25zKSB7XG4gICAgICAgICAgICBkYXRhLnJ1bGUub3B0aW9ucy5tZXNzYWdlcyA9IG9wdGlvbnMubWVzc2FnZXM7XG4gICAgICAgICAgICBkYXRhLnJ1bGUub3B0aW9ucy5lcnJvciA9IG9wdGlvbnMuZXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNjaGVtYS52YWxpZGF0ZShkYXRhLnZhbHVlLCBkYXRhLnJ1bGUub3B0aW9ucyB8fCBvcHRpb25zLCBmdW5jdGlvbiAoZXJycykge1xuICAgICAgICAgICAgdmFyIGZpbmFsRXJyb3JzID0gW107XG4gICAgICAgICAgICBpZiAoZXJyb3JzICYmIGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgZmluYWxFcnJvcnMucHVzaC5hcHBseShmaW5hbEVycm9ycywgZXJyb3JzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJzICYmIGVycnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGZpbmFsRXJyb3JzLnB1c2guYXBwbHkoZmluYWxFcnJvcnMsIGVycnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZG9JdChmaW5hbEVycm9ycy5sZW5ndGggPyBmaW5hbEVycm9ycyA6IG51bGwpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciByZXMgPSB2b2lkIDA7XG4gICAgICBpZiAocnVsZS5hc3luY1ZhbGlkYXRvcikge1xuICAgICAgICByZXMgPSBydWxlLmFzeW5jVmFsaWRhdG9yKHJ1bGUsIGRhdGEudmFsdWUsIGNiLCBkYXRhLnNvdXJjZSwgb3B0aW9ucyk7XG4gICAgICB9IGVsc2UgaWYgKHJ1bGUudmFsaWRhdG9yKSB7XG4gICAgICAgIHJlcyA9IHJ1bGUudmFsaWRhdG9yKHJ1bGUsIGRhdGEudmFsdWUsIGNiLCBkYXRhLnNvdXJjZSwgb3B0aW9ucyk7XG4gICAgICAgIGlmIChyZXMgPT09IHRydWUpIHtcbiAgICAgICAgICBjYigpO1xuICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBjYihydWxlLm1lc3NhZ2UgfHwgcnVsZS5maWVsZCArICcgZmFpbHMnKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgIGNiKHJlcyk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBjYihyZXMubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyZXMgJiYgcmVzLnRoZW4pIHtcbiAgICAgICAgcmVzLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBjYigpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIHJldHVybiBjYihlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSwgZnVuY3Rpb24gKHJlc3VsdHMpIHtcbiAgICAgIGNvbXBsZXRlKHJlc3VsdHMpO1xuICAgIH0pO1xuICB9LFxuICBnZXRUeXBlOiBmdW5jdGlvbiBnZXRUeXBlKHJ1bGUpIHtcbiAgICBpZiAocnVsZS50eXBlID09PSB1bmRlZmluZWQgJiYgcnVsZS5wYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICBydWxlLnR5cGUgPSAncGF0dGVybic7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcnVsZS52YWxpZGF0b3IgIT09ICdmdW5jdGlvbicgJiYgcnVsZS50eXBlICYmICFfdmFsaWRhdG9yMlsnZGVmYXVsdCddLmhhc093blByb3BlcnR5KHJ1bGUudHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigoMCwgX3V0aWwuZm9ybWF0KSgnVW5rbm93biBydWxlIHR5cGUgJXMnLCBydWxlLnR5cGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJ1bGUudHlwZSB8fCAnc3RyaW5nJztcbiAgfSxcbiAgZ2V0VmFsaWRhdGlvbk1ldGhvZDogZnVuY3Rpb24gZ2V0VmFsaWRhdGlvbk1ldGhvZChydWxlKSB7XG4gICAgaWYgKHR5cGVvZiBydWxlLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHJ1bGUudmFsaWRhdG9yO1xuICAgIH1cbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHJ1bGUpO1xuICAgIHZhciBtZXNzYWdlSW5kZXggPSBrZXlzLmluZGV4T2YoJ21lc3NhZ2UnKTtcbiAgICBpZiAobWVzc2FnZUluZGV4ICE9PSAtMSkge1xuICAgICAga2V5cy5zcGxpY2UobWVzc2FnZUluZGV4LCAxKTtcbiAgICB9XG4gICAgaWYgKGtleXMubGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09ICdyZXF1aXJlZCcpIHtcbiAgICAgIHJldHVybiBfdmFsaWRhdG9yMlsnZGVmYXVsdCddLnJlcXVpcmVkO1xuICAgIH1cbiAgICByZXR1cm4gX3ZhbGlkYXRvcjJbJ2RlZmF1bHQnXVt0aGlzLmdldFR5cGUocnVsZSldIHx8IGZhbHNlO1xuICB9XG59O1xuXG5TY2hlbWEucmVnaXN0ZXIgPSBmdW5jdGlvbiByZWdpc3Rlcih0eXBlLCB2YWxpZGF0b3IpIHtcbiAgaWYgKHR5cGVvZiB2YWxpZGF0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCByZWdpc3RlciBhIHZhbGlkYXRvciBieSB0eXBlLCB2YWxpZGF0b3IgaXMgbm90IGEgZnVuY3Rpb24nKTtcbiAgfVxuICBfdmFsaWRhdG9yMlsnZGVmYXVsdCddW3R5cGVdID0gdmFsaWRhdG9yO1xufTtcblxuU2NoZW1hLndhcm5pbmcgPSBfdXRpbC53YXJuaW5nO1xuXG5TY2hlbWEubWVzc2FnZXMgPSBfbWVzc2FnZXMyLm1lc3NhZ2VzO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBTY2hlbWE7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3N0cmluZyA9IHJlcXVpcmUoJy4vc3RyaW5nJyk7XG5cbnZhciBfc3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0cmluZyk7XG5cbnZhciBfbWV0aG9kID0gcmVxdWlyZSgnLi9tZXRob2QnKTtcblxudmFyIF9tZXRob2QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbWV0aG9kKTtcblxudmFyIF9udW1iZXIgPSByZXF1aXJlKCcuL251bWJlcicpO1xuXG52YXIgX251bWJlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9udW1iZXIpO1xuXG52YXIgX2Jvb2xlYW4gPSByZXF1aXJlKCcuL2Jvb2xlYW4nKTtcblxudmFyIF9ib29sZWFuMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Jvb2xlYW4pO1xuXG52YXIgX3JlZ2V4cCA9IHJlcXVpcmUoJy4vcmVnZXhwJyk7XG5cbnZhciBfcmVnZXhwMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlZ2V4cCk7XG5cbnZhciBfaW50ZWdlciA9IHJlcXVpcmUoJy4vaW50ZWdlcicpO1xuXG52YXIgX2ludGVnZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW50ZWdlcik7XG5cbnZhciBfZmxvYXQgPSByZXF1aXJlKCcuL2Zsb2F0Jyk7XG5cbnZhciBfZmxvYXQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZmxvYXQpO1xuXG52YXIgX2FycmF5ID0gcmVxdWlyZSgnLi9hcnJheScpO1xuXG52YXIgX2FycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FycmF5KTtcblxudmFyIF9vYmplY3QgPSByZXF1aXJlKCcuL29iamVjdCcpO1xuXG52YXIgX29iamVjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9vYmplY3QpO1xuXG52YXIgX2VudW0gPSByZXF1aXJlKCcuL2VudW0nKTtcblxudmFyIF9lbnVtMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2VudW0pO1xuXG52YXIgX3BhdHRlcm4gPSByZXF1aXJlKCcuL3BhdHRlcm4nKTtcblxudmFyIF9wYXR0ZXJuMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3BhdHRlcm4pO1xuXG52YXIgX2RhdGUgPSByZXF1aXJlKCcuL2RhdGUnKTtcblxudmFyIF9kYXRlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RhdGUpO1xuXG52YXIgX3JlcXVpcmVkID0gcmVxdWlyZSgnLi9yZXF1aXJlZCcpO1xuXG52YXIgX3JlcXVpcmVkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlcXVpcmVkKTtcblxudmFyIF90eXBlID0gcmVxdWlyZSgnLi90eXBlJyk7XG5cbnZhciBfdHlwZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSB7XG4gIHN0cmluZzogX3N0cmluZzJbJ2RlZmF1bHQnXSxcbiAgbWV0aG9kOiBfbWV0aG9kMlsnZGVmYXVsdCddLFxuICBudW1iZXI6IF9udW1iZXIyWydkZWZhdWx0J10sXG4gIGJvb2xlYW46IF9ib29sZWFuMlsnZGVmYXVsdCddLFxuICByZWdleHA6IF9yZWdleHAyWydkZWZhdWx0J10sXG4gIGludGVnZXI6IF9pbnRlZ2VyMlsnZGVmYXVsdCddLFxuICBmbG9hdDogX2Zsb2F0MlsnZGVmYXVsdCddLFxuICBhcnJheTogX2FycmF5MlsnZGVmYXVsdCddLFxuICBvYmplY3Q6IF9vYmplY3QyWydkZWZhdWx0J10sXG4gICdlbnVtJzogX2VudW0yWydkZWZhdWx0J10sXG4gIHBhdHRlcm46IF9wYXR0ZXJuMlsnZGVmYXVsdCddLFxuICBkYXRlOiBfZGF0ZTJbJ2RlZmF1bHQnXSxcbiAgdXJsOiBfdHlwZTJbJ2RlZmF1bHQnXSxcbiAgaGV4OiBfdHlwZTJbJ2RlZmF1bHQnXSxcbiAgZW1haWw6IF90eXBlMlsnZGVmYXVsdCddLFxuICByZXF1aXJlZDogX3JlcXVpcmVkMlsnZGVmYXVsdCddXG59OyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9ydWxlID0gcmVxdWlyZSgnLi4vcnVsZS8nKTtcblxudmFyIF9ydWxlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3J1bGUpO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKCcuLi91dGlsJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuLyoqXG4gKiAgUGVyZm9ybXMgdmFsaWRhdGlvbiBmb3Igc3RyaW5nIHR5cGVzLlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuZnVuY3Rpb24gc3RyaW5nKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmICgoMCwgX3V0aWwuaXNFbXB0eVZhbHVlKSh2YWx1ZSwgJ3N0cmluZycpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG4gICAgX3J1bGUyWydkZWZhdWx0J10ucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zLCAnc3RyaW5nJyk7XG4gICAgaWYgKCEoMCwgX3V0aWwuaXNFbXB0eVZhbHVlKSh2YWx1ZSwgJ3N0cmluZycpKSB7XG4gICAgICBfcnVsZTJbJ2RlZmF1bHQnXS50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICBfcnVsZTJbJ2RlZmF1bHQnXS5yYW5nZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgX3J1bGUyWydkZWZhdWx0J10ucGF0dGVybihydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgaWYgKHJ1bGUud2hpdGVzcGFjZSA9PT0gdHJ1ZSkge1xuICAgICAgICBfcnVsZTJbJ2RlZmF1bHQnXS53aGl0ZXNwYWNlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IHN0cmluZzsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoJy4uL3V0aWwnKTtcblxudmFyIHV0aWwgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfdXRpbCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gZWxzZSB7IHZhciBuZXdPYmogPSB7fTsgaWYgKG9iaiAhPSBudWxsKSB7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSBuZXdPYmpbJ2RlZmF1bHQnXSA9IG9iajsgcmV0dXJuIG5ld09iajsgfSB9XG5cbi8qKlxuICogIFJ1bGUgZm9yIHZhbGlkYXRpbmcgd2hpdGVzcGFjZS5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gZXJyb3JzIEFuIGFycmF5IG9mIGVycm9ycyB0aGF0IHRoaXMgcnVsZSBtYXkgYWRkXG4gKiAgdmFsaWRhdGlvbiBlcnJvcnMgdG8uXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuZnVuY3Rpb24gd2hpdGVzcGFjZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpIHtcbiAgaWYgKC9eXFxzKyQvLnRlc3QodmFsdWUpIHx8IHZhbHVlID09PSAnJykge1xuICAgIGVycm9ycy5wdXNoKHV0aWwuZm9ybWF0KG9wdGlvbnMubWVzc2FnZXMud2hpdGVzcGFjZSwgcnVsZS5mdWxsRmllbGQpKTtcbiAgfVxufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSB3aGl0ZXNwYWNlOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKCcuLi91dGlsJyk7XG5cbnZhciB1dGlsID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX3V0aWwpO1xuXG52YXIgX3JlcXVpcmVkID0gcmVxdWlyZSgnLi9yZXF1aXJlZCcpO1xuXG52YXIgX3JlcXVpcmVkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlcXVpcmVkKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3T2JqID0ge307IGlmIChvYmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gbmV3T2JqWydkZWZhdWx0J10gPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxuXG4vKiBlc2xpbnQgbWF4LWxlbjowICovXG5cbnZhciBwYXR0ZXJuID0ge1xuICAvLyBodHRwOi8vZW1haWxyZWdleC5jb20vXG4gIGVtYWlsOiAvXigoW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31dKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLyxcbiAgdXJsOiBuZXcgUmVnRXhwKCdeKD8hbWFpbHRvOikoPzooPzpodHRwfGh0dHBzfGZ0cCk6Ly98Ly8pKD86XFxcXFMrKD86OlxcXFxTKik/QCk/KD86KD86KD86WzEtOV1cXFxcZD98MVxcXFxkXFxcXGR8MlswMV1cXFxcZHwyMlswLTNdKSg/OlxcXFwuKD86MT9cXFxcZHsxLDJ9fDJbMC00XVxcXFxkfDI1WzAtNV0pKXsyfSg/OlxcXFwuKD86WzAtOV1cXFxcZD98MVxcXFxkXFxcXGR8MlswLTRdXFxcXGR8MjVbMC00XSkpfCg/Oig/OlthLXpcXFxcdTAwYTEtXFxcXHVmZmZmMC05XSstPykqW2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldKykoPzpcXFxcLig/OlthLXpcXFxcdTAwYTEtXFxcXHVmZmZmMC05XSstPykqW2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldKykqKD86XFxcXC4oPzpbYS16XFxcXHUwMGExLVxcXFx1ZmZmZl17Mix9KSkpfGxvY2FsaG9zdCkoPzo6XFxcXGR7Miw1fSk/KD86KC98XFxcXD98IylbXlxcXFxzXSopPyQnLCAnaScpLFxuICBoZXg6IC9eIz8oW2EtZjAtOV17Nn18W2EtZjAtOV17M30pJC9pXG59O1xuXG52YXIgdHlwZXMgPSB7XG4gIGludGVnZXI6IGZ1bmN0aW9uIGludGVnZXIodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZXMubnVtYmVyKHZhbHVlKSAmJiBwYXJzZUludCh2YWx1ZSwgMTApID09PSB2YWx1ZTtcbiAgfSxcbiAgZmxvYXQ6IGZ1bmN0aW9uIGZsb2F0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVzLm51bWJlcih2YWx1ZSkgJiYgIXR5cGVzLmludGVnZXIodmFsdWUpO1xuICB9LFxuICBhcnJheTogZnVuY3Rpb24gYXJyYXkodmFsdWUpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIH0sXG4gIHJlZ2V4cDogZnVuY3Rpb24gcmVnZXhwKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAhIW5ldyBSZWdFeHAodmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0sXG4gIGRhdGU6IGZ1bmN0aW9uIGRhdGUodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLmdldFRpbWUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbHVlLmdldE1vbnRoID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2YWx1ZS5nZXRZZWFyID09PSAnZnVuY3Rpb24nO1xuICB9LFxuICBudW1iZXI6IGZ1bmN0aW9uIG51bWJlcih2YWx1ZSkge1xuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcic7XG4gIH0sXG4gIG9iamVjdDogZnVuY3Rpb24gb2JqZWN0KHZhbHVlKSB7XG4gICAgcmV0dXJuICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKHZhbHVlKSkgPT09ICdvYmplY3QnICYmICF0eXBlcy5hcnJheSh2YWx1ZSk7XG4gIH0sXG4gIG1ldGhvZDogZnVuY3Rpb24gbWV0aG9kKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgfSxcbiAgZW1haWw6IGZ1bmN0aW9uIGVtYWlsKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgISF2YWx1ZS5tYXRjaChwYXR0ZXJuLmVtYWlsKSAmJiB2YWx1ZS5sZW5ndGggPCAyNTU7XG4gIH0sXG4gIHVybDogZnVuY3Rpb24gdXJsKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgISF2YWx1ZS5tYXRjaChwYXR0ZXJuLnVybCk7XG4gIH0sXG4gIGhleDogZnVuY3Rpb24gaGV4KHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgISF2YWx1ZS5tYXRjaChwYXR0ZXJuLmhleCk7XG4gIH1cbn07XG5cbi8qKlxuICogIFJ1bGUgZm9yIHZhbGlkYXRpbmcgdGhlIHR5cGUgb2YgYSB2YWx1ZS5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gZXJyb3JzIEFuIGFycmF5IG9mIGVycm9ycyB0aGF0IHRoaXMgcnVsZSBtYXkgYWRkXG4gKiAgdmFsaWRhdGlvbiBlcnJvcnMgdG8uXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuZnVuY3Rpb24gdHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpIHtcbiAgaWYgKHJ1bGUucmVxdWlyZWQgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICgwLCBfcmVxdWlyZWQyWydkZWZhdWx0J10pKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBjdXN0b20gPSBbJ2ludGVnZXInLCAnZmxvYXQnLCAnYXJyYXknLCAncmVnZXhwJywgJ29iamVjdCcsICdtZXRob2QnLCAnZW1haWwnLCAnbnVtYmVyJywgJ2RhdGUnLCAndXJsJywgJ2hleCddO1xuICB2YXIgcnVsZVR5cGUgPSBydWxlLnR5cGU7XG4gIGlmIChjdXN0b20uaW5kZXhPZihydWxlVHlwZSkgPiAtMSkge1xuICAgIGlmICghdHlwZXNbcnVsZVR5cGVdKHZhbHVlKSkge1xuICAgICAgZXJyb3JzLnB1c2godXRpbC5mb3JtYXQob3B0aW9ucy5tZXNzYWdlcy50eXBlc1tydWxlVHlwZV0sIHJ1bGUuZnVsbEZpZWxkLCBydWxlLnR5cGUpKTtcbiAgICB9XG4gICAgLy8gc3RyYWlnaHQgdHlwZW9mIGNoZWNrXG4gIH0gZWxzZSBpZiAocnVsZVR5cGUgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YodmFsdWUpKSAhPT0gcnVsZS50eXBlKSB7XG4gICAgZXJyb3JzLnB1c2godXRpbC5mb3JtYXQob3B0aW9ucy5tZXNzYWdlcy50eXBlc1tydWxlVHlwZV0sIHJ1bGUuZnVsbEZpZWxkLCBydWxlLnR5cGUpKTtcbiAgfVxufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSB0eXBlOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF91dGlsID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuXG52YXIgdXRpbCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF91dGlsKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBlbHNlIHsgdmFyIG5ld09iaiA9IHt9OyBpZiAob2JqICE9IG51bGwpIHsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IG5ld09ialsnZGVmYXVsdCddID0gb2JqOyByZXR1cm4gbmV3T2JqOyB9IH1cblxuLyoqXG4gKiAgUnVsZSBmb3IgdmFsaWRhdGluZyBtaW5pbXVtIGFuZCBtYXhpbXVtIGFsbG93ZWQgdmFsdWVzLlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBlcnJvcnMgQW4gYXJyYXkgb2YgZXJyb3JzIHRoYXQgdGhpcyBydWxlIG1heSBhZGRcbiAqICB2YWxpZGF0aW9uIGVycm9ycyB0by5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5mdW5jdGlvbiByYW5nZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpIHtcbiAgdmFyIGxlbiA9IHR5cGVvZiBydWxlLmxlbiA9PT0gJ251bWJlcic7XG4gIHZhciBtaW4gPSB0eXBlb2YgcnVsZS5taW4gPT09ICdudW1iZXInO1xuICB2YXIgbWF4ID0gdHlwZW9mIHJ1bGUubWF4ID09PSAnbnVtYmVyJztcbiAgLy8g5q2j5YiZ5Yy56YWN56CB54K56IyD5Zu05LuOVSswMTAwMDDkuIDnm7TliLBVKzEwRkZGRueahOaWh+Wtl++8iOihpeWFheW5s+mdolN1cHBsZW1lbnRhcnkgUGxhbmXvvIlcbiAgdmFyIHNwUmVnZXhwID0gL1tcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl0vZztcbiAgdmFyIHZhbCA9IHZhbHVlO1xuICB2YXIga2V5ID0gbnVsbDtcbiAgdmFyIG51bSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcic7XG4gIHZhciBzdHIgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xuICB2YXIgYXJyID0gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIGlmIChudW0pIHtcbiAgICBrZXkgPSAnbnVtYmVyJztcbiAgfSBlbHNlIGlmIChzdHIpIHtcbiAgICBrZXkgPSAnc3RyaW5nJztcbiAgfSBlbHNlIGlmIChhcnIpIHtcbiAgICBrZXkgPSAnYXJyYXknO1xuICB9XG4gIC8vIGlmIHRoZSB2YWx1ZSBpcyBub3Qgb2YgYSBzdXBwb3J0ZWQgdHlwZSBmb3IgcmFuZ2UgdmFsaWRhdGlvblxuICAvLyB0aGUgdmFsaWRhdGlvbiBydWxlIHJ1bGUgc2hvdWxkIHVzZSB0aGVcbiAgLy8gdHlwZSBwcm9wZXJ0eSB0byBhbHNvIHRlc3QgZm9yIGEgcGFydGljdWxhciB0eXBlXG4gIGlmICgha2V5KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChhcnIpIHtcbiAgICB2YWwgPSB2YWx1ZS5sZW5ndGg7XG4gIH1cbiAgaWYgKHN0cikge1xuICAgIC8vIOWkhOeQhueggeeCueWkp+S6jlUrMDEwMDAw55qE5paH5a2XbGVuZ3Ro5bGe5oCn5LiN5YeG56Gu55qEYnVn77yM5aaCXCLwoK638KCut/CgrrdcIi5sZW5naHQgIT09IDNcbiAgICB2YWwgPSB2YWx1ZS5yZXBsYWNlKHNwUmVnZXhwLCAnXycpLmxlbmd0aDtcbiAgfVxuICBpZiAobGVuKSB7XG4gICAgaWYgKHZhbCAhPT0gcnVsZS5sZW4pIHtcbiAgICAgIGVycm9ycy5wdXNoKHV0aWwuZm9ybWF0KG9wdGlvbnMubWVzc2FnZXNba2V5XS5sZW4sIHJ1bGUuZnVsbEZpZWxkLCBydWxlLmxlbikpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChtaW4gJiYgIW1heCAmJiB2YWwgPCBydWxlLm1pbikge1xuICAgIGVycm9ycy5wdXNoKHV0aWwuZm9ybWF0KG9wdGlvbnMubWVzc2FnZXNba2V5XS5taW4sIHJ1bGUuZnVsbEZpZWxkLCBydWxlLm1pbikpO1xuICB9IGVsc2UgaWYgKG1heCAmJiAhbWluICYmIHZhbCA+IHJ1bGUubWF4KSB7XG4gICAgZXJyb3JzLnB1c2godXRpbC5mb3JtYXQob3B0aW9ucy5tZXNzYWdlc1trZXldLm1heCwgcnVsZS5mdWxsRmllbGQsIHJ1bGUubWF4KSk7XG4gIH0gZWxzZSBpZiAobWluICYmIG1heCAmJiAodmFsIDwgcnVsZS5taW4gfHwgdmFsID4gcnVsZS5tYXgpKSB7XG4gICAgZXJyb3JzLnB1c2godXRpbC5mb3JtYXQob3B0aW9ucy5tZXNzYWdlc1trZXldLnJhbmdlLCBydWxlLmZ1bGxGaWVsZCwgcnVsZS5taW4sIHJ1bGUubWF4KSk7XG4gIH1cbn1cblxuZXhwb3J0c1snZGVmYXVsdCddID0gcmFuZ2U7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKCcuLi91dGlsJyk7XG5cbnZhciB1dGlsID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX3V0aWwpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3T2JqID0ge307IGlmIChvYmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gbmV3T2JqWydkZWZhdWx0J10gPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxuXG52YXIgRU5VTSA9ICdlbnVtJztcblxuLyoqXG4gKiAgUnVsZSBmb3IgdmFsaWRhdGluZyBhIHZhbHVlIGV4aXN0cyBpbiBhbiBlbnVtZXJhYmxlIGxpc3QuXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIGVycm9ycyBBbiBhcnJheSBvZiBlcnJvcnMgdGhhdCB0aGlzIHJ1bGUgbWF5IGFkZFxuICogIHZhbGlkYXRpb24gZXJyb3JzIHRvLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cbmZ1bmN0aW9uIGVudW1lcmFibGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKSB7XG4gIHJ1bGVbRU5VTV0gPSBBcnJheS5pc0FycmF5KHJ1bGVbRU5VTV0pID8gcnVsZVtFTlVNXSA6IFtdO1xuICBpZiAocnVsZVtFTlVNXS5pbmRleE9mKHZhbHVlKSA9PT0gLTEpIHtcbiAgICBlcnJvcnMucHVzaCh1dGlsLmZvcm1hdChvcHRpb25zLm1lc3NhZ2VzW0VOVU1dLCBydWxlLmZ1bGxGaWVsZCwgcnVsZVtFTlVNXS5qb2luKCcsICcpKSk7XG4gIH1cbn1cblxuZXhwb3J0c1snZGVmYXVsdCddID0gZW51bWVyYWJsZTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoJy4uL3V0aWwnKTtcblxudmFyIHV0aWwgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfdXRpbCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gZWxzZSB7IHZhciBuZXdPYmogPSB7fTsgaWYgKG9iaiAhPSBudWxsKSB7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSBuZXdPYmpbJ2RlZmF1bHQnXSA9IG9iajsgcmV0dXJuIG5ld09iajsgfSB9XG5cbi8qKlxuICogIFJ1bGUgZm9yIHZhbGlkYXRpbmcgYSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gZXJyb3JzIEFuIGFycmF5IG9mIGVycm9ycyB0aGF0IHRoaXMgcnVsZSBtYXkgYWRkXG4gKiAgdmFsaWRhdGlvbiBlcnJvcnMgdG8uXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuZnVuY3Rpb24gcGF0dGVybihydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpIHtcbiAgaWYgKHJ1bGUucGF0dGVybikge1xuICAgIGlmIChydWxlLnBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIC8vIGlmIGEgUmVnRXhwIGluc3RhbmNlIGlzIHBhc3NlZCwgcmVzZXQgYGxhc3RJbmRleGAgaW4gY2FzZSBpdHMgYGdsb2JhbGBcbiAgICAgIC8vIGZsYWcgaXMgYWNjaWRlbnRhbGx5IHNldCB0byBgdHJ1ZWAsIHdoaWNoIGluIGEgdmFsaWRhdGlvbiBzY2VuYXJpb1xuICAgICAgLy8gaXMgbm90IG5lY2Vzc2FyeSBhbmQgdGhlIHJlc3VsdCBtaWdodCBiZSBtaXNsZWFkaW5nXG4gICAgICBydWxlLnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgICAgIGlmICghcnVsZS5wYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKHV0aWwuZm9ybWF0KG9wdGlvbnMubWVzc2FnZXMucGF0dGVybi5taXNtYXRjaCwgcnVsZS5mdWxsRmllbGQsIHZhbHVlLCBydWxlLnBhdHRlcm4pKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBydWxlLnBhdHRlcm4gPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgX3BhdHRlcm4gPSBuZXcgUmVnRXhwKHJ1bGUucGF0dGVybik7XG4gICAgICBpZiAoIV9wYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKHV0aWwuZm9ybWF0KG9wdGlvbnMubWVzc2FnZXMucGF0dGVybi5taXNtYXRjaCwgcnVsZS5mdWxsRmllbGQsIHZhbHVlLCBydWxlLnBhdHRlcm4pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0c1snZGVmYXVsdCddID0gcGF0dGVybjsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfcnVsZSA9IHJlcXVpcmUoJy4uL3J1bGUvJyk7XG5cbnZhciBfcnVsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9ydWxlKTtcblxudmFyIF91dGlsID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbi8qKlxuICogIFZhbGlkYXRlcyBhIGZ1bmN0aW9uLlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuZnVuY3Rpb24gbWV0aG9kKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmICgoMCwgX3V0aWwuaXNFbXB0eVZhbHVlKSh2YWx1ZSkgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cbiAgICBfcnVsZTJbJ2RlZmF1bHQnXS5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBfcnVsZTJbJ2RlZmF1bHQnXS50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IG1ldGhvZDsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfcnVsZSA9IHJlcXVpcmUoJy4uL3J1bGUvJyk7XG5cbnZhciBfcnVsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9ydWxlKTtcblxudmFyIF91dGlsID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbi8qKlxuICogIFZhbGlkYXRlcyBhIG51bWJlci5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cbmZ1bmN0aW9uIG51bWJlcihydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICB2YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKCgwLCBfdXRpbC5pc0VtcHR5VmFsdWUpKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuICAgIF9ydWxlMlsnZGVmYXVsdCddLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIF9ydWxlMlsnZGVmYXVsdCddLnR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICAgIF9ydWxlMlsnZGVmYXVsdCddLnJhbmdlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IG51bWJlcjsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoJy4uL3V0aWwnKTtcblxudmFyIF9ydWxlID0gcmVxdWlyZSgnLi4vcnVsZS8nKTtcblxudmFyIF9ydWxlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3J1bGUpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbi8qKlxuICogIFZhbGlkYXRlcyBhIGJvb2xlYW4uXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5mdW5jdGlvbiBib29sZWFuKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmICgoMCwgX3V0aWwuaXNFbXB0eVZhbHVlKSh2YWx1ZSkgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cbiAgICBfcnVsZTJbJ2RlZmF1bHQnXS5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBfcnVsZTJbJ2RlZmF1bHQnXS50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGJvb2xlYW47IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3J1bGUgPSByZXF1aXJlKCcuLi9ydWxlLycpO1xuXG52YXIgX3J1bGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcnVsZSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoJy4uL3V0aWwnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG4vKipcbiAqICBWYWxpZGF0ZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0eXBlLlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuZnVuY3Rpb24gcmVnZXhwKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmICgoMCwgX3V0aWwuaXNFbXB0eVZhbHVlKSh2YWx1ZSkgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cbiAgICBfcnVsZTJbJ2RlZmF1bHQnXS5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIGlmICghKDAsIF91dGlsLmlzRW1wdHlWYWx1ZSkodmFsdWUpKSB7XG4gICAgICBfcnVsZTJbJ2RlZmF1bHQnXS50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IHJlZ2V4cDsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfcnVsZSA9IHJlcXVpcmUoJy4uL3J1bGUvJyk7XG5cbnZhciBfcnVsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9ydWxlKTtcblxudmFyIF91dGlsID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbi8qKlxuICogIFZhbGlkYXRlcyBhIG51bWJlciBpcyBhbiBpbnRlZ2VyLlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuZnVuY3Rpb24gaW50ZWdlcihydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoKDAsIF91dGlsLmlzRW1wdHlWYWx1ZSkodmFsdWUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG4gICAgX3J1bGUyWydkZWZhdWx0J10ucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgX3J1bGUyWydkZWZhdWx0J10udHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgX3J1bGUyWydkZWZhdWx0J10ucmFuZ2UocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn1cblxuZXhwb3J0c1snZGVmYXVsdCddID0gaW50ZWdlcjsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfcnVsZSA9IHJlcXVpcmUoJy4uL3J1bGUvJyk7XG5cbnZhciBfcnVsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9ydWxlKTtcblxudmFyIF91dGlsID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbi8qKlxuICogIFZhbGlkYXRlcyBhIG51bWJlciBpcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlci5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cbmZ1bmN0aW9uIGZsb2F0Rm4ocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKCgwLCBfdXRpbC5pc0VtcHR5VmFsdWUpKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuICAgIF9ydWxlMlsnZGVmYXVsdCddLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIF9ydWxlMlsnZGVmYXVsdCddLnR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICAgIF9ydWxlMlsnZGVmYXVsdCddLnJhbmdlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZsb2F0Rm47IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3J1bGUgPSByZXF1aXJlKCcuLi9ydWxlLycpO1xuXG52YXIgX3J1bGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcnVsZSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoJy4uL3V0aWwnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG4vKipcbiAqICBWYWxpZGF0ZXMgYW4gYXJyYXkuXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5mdW5jdGlvbiBhcnJheShydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoKDAsIF91dGlsLmlzRW1wdHlWYWx1ZSkodmFsdWUsICdhcnJheScpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG4gICAgX3J1bGUyWydkZWZhdWx0J10ucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zLCAnYXJyYXknKTtcbiAgICBpZiAoISgwLCBfdXRpbC5pc0VtcHR5VmFsdWUpKHZhbHVlLCAnYXJyYXknKSkge1xuICAgICAgX3J1bGUyWydkZWZhdWx0J10udHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgX3J1bGUyWydkZWZhdWx0J10ucmFuZ2UocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn1cblxuZXhwb3J0c1snZGVmYXVsdCddID0gYXJyYXk7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3J1bGUgPSByZXF1aXJlKCcuLi9ydWxlLycpO1xuXG52YXIgX3J1bGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcnVsZSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoJy4uL3V0aWwnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG4vKipcbiAqICBWYWxpZGF0ZXMgYW4gb2JqZWN0LlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0KHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmICgoMCwgX3V0aWwuaXNFbXB0eVZhbHVlKSh2YWx1ZSkgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cbiAgICBfcnVsZTJbJ2RlZmF1bHQnXS5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBfcnVsZTJbJ2RlZmF1bHQnXS50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IG9iamVjdDsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfcnVsZSA9IHJlcXVpcmUoJy4uL3J1bGUvJyk7XG5cbnZhciBfcnVsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9ydWxlKTtcblxudmFyIF91dGlsID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBFTlVNID0gJ2VudW0nO1xuXG4vKipcbiAqICBWYWxpZGF0ZXMgYW4gZW51bWVyYWJsZSBsaXN0LlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuZnVuY3Rpb24gZW51bWVyYWJsZShydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoKDAsIF91dGlsLmlzRW1wdHlWYWx1ZSkodmFsdWUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG4gICAgX3J1bGUyWydkZWZhdWx0J10ucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIF9ydWxlMlsnZGVmYXVsdCddW0VOVU1dKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGVudW1lcmFibGU7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3J1bGUgPSByZXF1aXJlKCcuLi9ydWxlLycpO1xuXG52YXIgX3J1bGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcnVsZSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoJy4uL3V0aWwnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG4vKipcbiAqICBWYWxpZGF0ZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi5cbiAqXG4gKiAgUGVyZm9ybXMgdmFsaWRhdGlvbiB3aGVuIGEgcnVsZSBvbmx5IGNvbnRhaW5zXG4gKiAgYSBwYXR0ZXJuIHByb3BlcnR5IGJ1dCBpcyBub3QgZGVjbGFyZWQgYXMgYSBzdHJpbmcgdHlwZS5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cbmZ1bmN0aW9uIHBhdHRlcm4ocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKCgwLCBfdXRpbC5pc0VtcHR5VmFsdWUpKHZhbHVlLCAnc3RyaW5nJykgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cbiAgICBfcnVsZTJbJ2RlZmF1bHQnXS5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIGlmICghKDAsIF91dGlsLmlzRW1wdHlWYWx1ZSkodmFsdWUsICdzdHJpbmcnKSkge1xuICAgICAgX3J1bGUyWydkZWZhdWx0J10ucGF0dGVybihydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuICBjYWxsYmFjayhlcnJvcnMpO1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBwYXR0ZXJuOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9ydWxlID0gcmVxdWlyZSgnLi4vcnVsZS8nKTtcblxudmFyIF9ydWxlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3J1bGUpO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKCcuLi91dGlsJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gZGF0ZShydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICAvLyBjb25zb2xlLmxvZygnaW50ZWdlciBydWxlIGNhbGxlZCAlaicsIHJ1bGUpO1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuICAvLyBjb25zb2xlLmxvZygndmFsaWRhdGUgb24gJXMgdmFsdWUnLCB2YWx1ZSk7XG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmICgoMCwgX3V0aWwuaXNFbXB0eVZhbHVlKSh2YWx1ZSkgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cbiAgICBfcnVsZTJbJ2RlZmF1bHQnXS5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIGlmICghKDAsIF91dGlsLmlzRW1wdHlWYWx1ZSkodmFsdWUpKSB7XG4gICAgICB2YXIgZGF0ZU9iamVjdCA9IHZvaWQgMDtcblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgZGF0ZU9iamVjdCA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGVPYmplY3QgPSB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgX3J1bGUyWydkZWZhdWx0J10udHlwZShydWxlLCBkYXRlT2JqZWN0LCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICBpZiAoZGF0ZU9iamVjdCkge1xuICAgICAgICBfcnVsZTJbJ2RlZmF1bHQnXS5yYW5nZShydWxlLCBkYXRlT2JqZWN0LmdldFRpbWUoKSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYWxsYmFjayhlcnJvcnMpO1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBkYXRlOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG52YXIgX3J1bGUgPSByZXF1aXJlKCcuLi9ydWxlLycpO1xuXG52YXIgX3J1bGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcnVsZSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gcmVxdWlyZWQocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdHlwZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gJ2FycmF5JyA6IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YodmFsdWUpO1xuICBfcnVsZTJbJ2RlZmF1bHQnXS5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMsIHR5cGUpO1xuICBjYWxsYmFjayhlcnJvcnMpO1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSByZXF1aXJlZDsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfcnVsZSA9IHJlcXVpcmUoJy4uL3J1bGUvJyk7XG5cbnZhciBfcnVsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9ydWxlKTtcblxudmFyIF91dGlsID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIHR5cGUocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIHJ1bGVUeXBlID0gcnVsZS50eXBlO1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoKDAsIF91dGlsLmlzRW1wdHlWYWx1ZSkodmFsdWUsIHJ1bGVUeXBlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuICAgIF9ydWxlMlsnZGVmYXVsdCddLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucywgcnVsZVR5cGUpO1xuICAgIGlmICghKDAsIF91dGlsLmlzRW1wdHlWYWx1ZSkodmFsdWUsIHJ1bGVUeXBlKSkge1xuICAgICAgX3J1bGUyWydkZWZhdWx0J10udHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuICBjYWxsYmFjayhlcnJvcnMpO1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSB0eXBlOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMubmV3TWVzc2FnZXMgPSBuZXdNZXNzYWdlcztcbmZ1bmN0aW9uIG5ld01lc3NhZ2VzKCkge1xuICByZXR1cm4ge1xuICAgICdkZWZhdWx0JzogJ1ZhbGlkYXRpb24gZXJyb3Igb24gZmllbGQgJXMnLFxuICAgIHJlcXVpcmVkOiAnJXMgaXMgcmVxdWlyZWQnLFxuICAgICdlbnVtJzogJyVzIG11c3QgYmUgb25lIG9mICVzJyxcbiAgICB3aGl0ZXNwYWNlOiAnJXMgY2Fubm90IGJlIGVtcHR5JyxcbiAgICBkYXRlOiB7XG4gICAgICBmb3JtYXQ6ICclcyBkYXRlICVzIGlzIGludmFsaWQgZm9yIGZvcm1hdCAlcycsXG4gICAgICBwYXJzZTogJyVzIGRhdGUgY291bGQgbm90IGJlIHBhcnNlZCwgJXMgaXMgaW52YWxpZCAnLFxuICAgICAgaW52YWxpZDogJyVzIGRhdGUgJXMgaXMgaW52YWxpZCdcbiAgICB9LFxuICAgIHR5cGVzOiB7XG4gICAgICBzdHJpbmc6ICclcyBpcyBub3QgYSAlcycsXG4gICAgICBtZXRob2Q6ICclcyBpcyBub3QgYSAlcyAoZnVuY3Rpb24pJyxcbiAgICAgIGFycmF5OiAnJXMgaXMgbm90IGFuICVzJyxcbiAgICAgIG9iamVjdDogJyVzIGlzIG5vdCBhbiAlcycsXG4gICAgICBudW1iZXI6ICclcyBpcyBub3QgYSAlcycsXG4gICAgICBkYXRlOiAnJXMgaXMgbm90IGEgJXMnLFxuICAgICAgYm9vbGVhbjogJyVzIGlzIG5vdCBhICVzJyxcbiAgICAgIGludGVnZXI6ICclcyBpcyBub3QgYW4gJXMnLFxuICAgICAgZmxvYXQ6ICclcyBpcyBub3QgYSAlcycsXG4gICAgICByZWdleHA6ICclcyBpcyBub3QgYSB2YWxpZCAlcycsXG4gICAgICBlbWFpbDogJyVzIGlzIG5vdCBhIHZhbGlkICVzJyxcbiAgICAgIHVybDogJyVzIGlzIG5vdCBhIHZhbGlkICVzJyxcbiAgICAgIGhleDogJyVzIGlzIG5vdCBhIHZhbGlkICVzJ1xuICAgIH0sXG4gICAgc3RyaW5nOiB7XG4gICAgICBsZW46ICclcyBtdXN0IGJlIGV4YWN0bHkgJXMgY2hhcmFjdGVycycsXG4gICAgICBtaW46ICclcyBtdXN0IGJlIGF0IGxlYXN0ICVzIGNoYXJhY3RlcnMnLFxuICAgICAgbWF4OiAnJXMgY2Fubm90IGJlIGxvbmdlciB0aGFuICVzIGNoYXJhY3RlcnMnLFxuICAgICAgcmFuZ2U6ICclcyBtdXN0IGJlIGJldHdlZW4gJXMgYW5kICVzIGNoYXJhY3RlcnMnXG4gICAgfSxcbiAgICBudW1iZXI6IHtcbiAgICAgIGxlbjogJyVzIG11c3QgZXF1YWwgJXMnLFxuICAgICAgbWluOiAnJXMgY2Fubm90IGJlIGxlc3MgdGhhbiAlcycsXG4gICAgICBtYXg6ICclcyBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuICVzJyxcbiAgICAgIHJhbmdlOiAnJXMgbXVzdCBiZSBiZXR3ZWVuICVzIGFuZCAlcydcbiAgICB9LFxuICAgIGFycmF5OiB7XG4gICAgICBsZW46ICclcyBtdXN0IGJlIGV4YWN0bHkgJXMgaW4gbGVuZ3RoJyxcbiAgICAgIG1pbjogJyVzIGNhbm5vdCBiZSBsZXNzIHRoYW4gJXMgaW4gbGVuZ3RoJyxcbiAgICAgIG1heDogJyVzIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gJXMgaW4gbGVuZ3RoJyxcbiAgICAgIHJhbmdlOiAnJXMgbXVzdCBiZSBiZXR3ZWVuICVzIGFuZCAlcyBpbiBsZW5ndGgnXG4gICAgfSxcbiAgICBwYXR0ZXJuOiB7XG4gICAgICBtaXNtYXRjaDogJyVzIHZhbHVlICVzIGRvZXMgbm90IG1hdGNoIHBhdHRlcm4gJXMnXG4gICAgfSxcbiAgICBjbG9uZTogZnVuY3Rpb24gY2xvbmUoKSB7XG4gICAgICB2YXIgY2xvbmVkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzKSk7XG4gICAgICBjbG9uZWQuY2xvbmUgPSB0aGlzLmNsb25lO1xuICAgICAgcmV0dXJuIGNsb25lZDtcbiAgICB9XG4gIH07XG59XG5cbnZhciBtZXNzYWdlcyA9IGV4cG9ydHMubWVzc2FnZXMgPSBuZXdNZXNzYWdlcygpOyIsInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpO1xuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzXG4gKiBgdW5kZWZpbmVkYCwgdGhlIGBkZWZhdWx0VmFsdWVgIGlzIHJldHVybmVkIGluIGl0cyBwbGFjZS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuNy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHBhcmFtIHsqfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgcmV0dXJuZWQgZm9yIGB1bmRlZmluZWRgIHJlc29sdmVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAqXG4gKiBfLmdldChvYmplY3QsICdhWzBdLmIuYycpO1xuICogLy8gPT4gM1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgWydhJywgJzAnLCAnYicsICdjJ10pO1xuICogLy8gPT4gM1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgJ2EuYi5jJywgJ2RlZmF1bHQnKTtcbiAqIC8vID0+ICdkZWZhdWx0J1xuICovXG5mdW5jdGlvbiBnZXQob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpIHtcbiAgdmFyIHJlc3VsdCA9IG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBkZWZhdWx0VmFsdWUgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0O1xuIiwidmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZ2V0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZmF1bHQgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0KG9iamVjdCwgcGF0aCkge1xuICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAwLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG5cbiAgd2hpbGUgKG9iamVjdCAhPSBudWxsICYmIGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgb2JqZWN0ID0gb2JqZWN0W3RvS2V5KHBhdGhbaW5kZXgrK10pXTtcbiAgfVxuICByZXR1cm4gKGluZGV4ICYmIGluZGV4ID09IGxlbmd0aCkgPyBvYmplY3QgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldDtcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNldGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxLFxuICAgICAgbmVzdGVkID0gb2JqZWN0O1xuXG4gIHdoaWxlIChuZXN0ZWQgIT0gbnVsbCAmJiArK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHRvS2V5KHBhdGhbaW5kZXhdKSxcbiAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmIChpbmRleCAhPSBsYXN0SW5kZXgpIHtcbiAgICAgIHZhciBvYmpWYWx1ZSA9IG5lc3RlZFtrZXldO1xuICAgICAgbmV3VmFsdWUgPSBjdXN0b21pemVyID8gY3VzdG9taXplcihvYmpWYWx1ZSwga2V5LCBuZXN0ZWQpIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBpc09iamVjdChvYmpWYWx1ZSlcbiAgICAgICAgICA/IG9ialZhbHVlXG4gICAgICAgICAgOiAoaXNJbmRleChwYXRoW2luZGV4ICsgMV0pID8gW10gOiB7fSk7XG4gICAgICB9XG4gICAgfVxuICAgIGFzc2lnblZhbHVlKG5lc3RlZCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgbmVzdGVkID0gbmVzdGVkW2tleV07XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU2V0O1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldO1xuICBpZiAoIShoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBlcShvYmpWYWx1ZSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnblZhbHVlO1xuIiwidmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNzaWduVmFsdWVgIGFuZCBgYXNzaWduTWVyZ2VWYWx1ZWAgd2l0aG91dFxuICogdmFsdWUgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSA9PSAnX19wcm90b19fJyAmJiBkZWZpbmVQcm9wZXJ0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICdlbnVtZXJhYmxlJzogdHJ1ZSxcbiAgICAgICd2YWx1ZSc6IHZhbHVlLFxuICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduVmFsdWU7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZVByb3BlcnR5O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eScpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5Mik7XG5cbnZhciBfZXh0ZW5kczIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcycpO1xuXG52YXIgX2V4dGVuZHMzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXh0ZW5kczIpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjaycpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gY3JlYXRlRmllbGRzU3RvcmU7XG5cbnZhciBfc2V0ID0gcmVxdWlyZSgnbG9kYXNoL3NldCcpO1xuXG52YXIgX3NldDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXQpO1xuXG52YXIgX2NyZWF0ZUZvcm1GaWVsZCA9IHJlcXVpcmUoJy4vY3JlYXRlRm9ybUZpZWxkJyk7XG5cbnZhciBfY3JlYXRlRm9ybUZpZWxkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUZvcm1GaWVsZCk7XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gcGFydE9mKGEsIGIpIHtcbiAgcmV0dXJuIGIuaW5kZXhPZihhKSA9PT0gMCAmJiBbJy4nLCAnWyddLmluZGV4T2YoYlthLmxlbmd0aF0pICE9PSAtMTtcbn1cblxuZnVuY3Rpb24gaW50ZXJuYWxGbGF0dGVuRmllbGRzKGZpZWxkcykge1xuICByZXR1cm4gKDAsIF91dGlscy5mbGF0dGVuRmllbGRzKShmaWVsZHMsIGZ1bmN0aW9uIChfLCBub2RlKSB7XG4gICAgcmV0dXJuICgwLCBfY3JlYXRlRm9ybUZpZWxkLmlzRm9ybUZpZWxkKShub2RlKTtcbiAgfSwgJ1lvdSBtdXN0IHdyYXAgZmllbGQgZGF0YSB3aXRoIGBjcmVhdGVGb3JtRmllbGRgLicpO1xufVxuXG52YXIgRmllbGRzU3RvcmUgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEZpZWxkc1N0b3JlKGZpZWxkcykge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szWydkZWZhdWx0J10pKHRoaXMsIEZpZWxkc1N0b3JlKTtcblxuICAgIF9pbml0aWFsaXNlUHJvcHMuY2FsbCh0aGlzKTtcblxuICAgIHRoaXMuZmllbGRzID0gaW50ZXJuYWxGbGF0dGVuRmllbGRzKGZpZWxkcyk7XG4gICAgdGhpcy5maWVsZHNNZXRhID0ge307XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzM1snZGVmYXVsdCddKShGaWVsZHNTdG9yZSwgW3tcbiAgICBrZXk6ICd1cGRhdGVGaWVsZHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVGaWVsZHMoZmllbGRzKSB7XG4gICAgICB0aGlzLmZpZWxkcyA9IGludGVybmFsRmxhdHRlbkZpZWxkcyhmaWVsZHMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2ZsYXR0ZW5SZWdpc3RlcmVkRmllbGRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmxhdHRlblJlZ2lzdGVyZWRGaWVsZHMoZmllbGRzKSB7XG4gICAgICB2YXIgdmFsaWRGaWVsZHNOYW1lID0gdGhpcy5nZXRBbGxGaWVsZHNOYW1lKCk7XG4gICAgICByZXR1cm4gKDAsIF91dGlscy5mbGF0dGVuRmllbGRzKShmaWVsZHMsIGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgICAgIHJldHVybiB2YWxpZEZpZWxkc05hbWUuaW5kZXhPZihwYXRoKSA+PSAwO1xuICAgICAgfSwgJ1lvdSBjYW5ub3Qgc2V0IGEgZm9ybSBmaWVsZCBiZWZvcmUgcmVuZGVyaW5nIGEgZmllbGQgYXNzb2NpYXRlZCB3aXRoIHRoZSB2YWx1ZS4nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdzZXRGaWVsZHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRGaWVsZHMoZmllbGRzKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgZmllbGRzTWV0YSA9IHRoaXMuZmllbGRzTWV0YTtcbiAgICAgIHZhciBub3dGaWVsZHMgPSAoMCwgX2V4dGVuZHMzWydkZWZhdWx0J10pKHt9LCB0aGlzLmZpZWxkcywgZmllbGRzKTtcbiAgICAgIHZhciBub3dWYWx1ZXMgPSB7fTtcbiAgICAgIE9iamVjdC5rZXlzKGZpZWxkc01ldGEpLmZvckVhY2goZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgbm93VmFsdWVzW2ZdID0gX3RoaXMuZ2V0VmFsdWVGcm9tRmllbGRzKGYsIG5vd0ZpZWxkcyk7XG4gICAgICB9KTtcbiAgICAgIE9iamVjdC5rZXlzKG5vd1ZhbHVlcykuZm9yRWFjaChmdW5jdGlvbiAoZikge1xuICAgICAgICB2YXIgdmFsdWUgPSBub3dWYWx1ZXNbZl07XG4gICAgICAgIHZhciBmaWVsZE1ldGEgPSBfdGhpcy5nZXRGaWVsZE1ldGEoZik7XG4gICAgICAgIGlmIChmaWVsZE1ldGEgJiYgZmllbGRNZXRhLm5vcm1hbGl6ZSkge1xuICAgICAgICAgIHZhciBub3dWYWx1ZSA9IGZpZWxkTWV0YS5ub3JtYWxpemUodmFsdWUsIF90aGlzLmdldFZhbHVlRnJvbUZpZWxkcyhmLCBfdGhpcy5maWVsZHMpLCBub3dWYWx1ZXMpO1xuICAgICAgICAgIGlmIChub3dWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIG5vd0ZpZWxkc1tmXSA9ICgwLCBfZXh0ZW5kczNbJ2RlZmF1bHQnXSkoe30sIG5vd0ZpZWxkc1tmXSwge1xuICAgICAgICAgICAgICB2YWx1ZTogbm93VmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmZpZWxkcyA9IG5vd0ZpZWxkcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZXNldEZpZWxkcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2V0RmllbGRzKG5zKSB7XG4gICAgICB2YXIgZmllbGRzID0gdGhpcy5maWVsZHM7XG5cbiAgICAgIHZhciBuYW1lcyA9IG5zID8gdGhpcy5nZXRWYWxpZEZpZWxkc0Z1bGxOYW1lKG5zKSA6IHRoaXMuZ2V0QWxsRmllbGRzTmFtZSgpO1xuICAgICAgcmV0dXJuIG5hbWVzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBuYW1lKSB7XG4gICAgICAgIHZhciBmaWVsZCA9IGZpZWxkc1tuYW1lXTtcbiAgICAgICAgaWYgKGZpZWxkICYmICd2YWx1ZScgaW4gZmllbGQpIHtcbiAgICAgICAgICBhY2NbbmFtZV0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NldEZpZWxkTWV0YScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEZpZWxkTWV0YShuYW1lLCBtZXRhKSB7XG4gICAgICB0aGlzLmZpZWxkc01ldGFbbmFtZV0gPSBtZXRhO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NldEZpZWxkc0FzRGlydHknLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRGaWVsZHNBc0RpcnR5KCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZmllbGRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHZhciBmaWVsZCA9IF90aGlzMi5maWVsZHNbbmFtZV07XG4gICAgICAgIHZhciBmaWVsZE1ldGEgPSBfdGhpczIuZmllbGRzTWV0YVtuYW1lXTtcbiAgICAgICAgaWYgKGZpZWxkICYmIGZpZWxkTWV0YSAmJiAoMCwgX3V0aWxzLmhhc1J1bGVzKShmaWVsZE1ldGEudmFsaWRhdGUpKSB7XG4gICAgICAgICAgX3RoaXMyLmZpZWxkc1tuYW1lXSA9ICgwLCBfZXh0ZW5kczNbJ2RlZmF1bHQnXSkoe30sIGZpZWxkLCB7XG4gICAgICAgICAgICBkaXJ0eTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRGaWVsZE1ldGEnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGaWVsZE1ldGEobmFtZSkge1xuICAgICAgdGhpcy5maWVsZHNNZXRhW25hbWVdID0gdGhpcy5maWVsZHNNZXRhW25hbWVdIHx8IHt9O1xuICAgICAgcmV0dXJuIHRoaXMuZmllbGRzTWV0YVtuYW1lXTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRWYWx1ZUZyb21GaWVsZHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRWYWx1ZUZyb21GaWVsZHMobmFtZSwgZmllbGRzKSB7XG4gICAgICB2YXIgZmllbGQgPSBmaWVsZHNbbmFtZV07XG4gICAgICBpZiAoZmllbGQgJiYgJ3ZhbHVlJyBpbiBmaWVsZCkge1xuICAgICAgICByZXR1cm4gZmllbGQudmFsdWU7XG4gICAgICB9XG4gICAgICB2YXIgZmllbGRNZXRhID0gdGhpcy5nZXRGaWVsZE1ldGEobmFtZSk7XG4gICAgICByZXR1cm4gZmllbGRNZXRhICYmIGZpZWxkTWV0YS5pbml0aWFsVmFsdWU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0VmFsaWRGaWVsZHNOYW1lJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VmFsaWRGaWVsZHNOYW1lKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBmaWVsZHNNZXRhID0gdGhpcy5maWVsZHNNZXRhO1xuXG4gICAgICByZXR1cm4gZmllbGRzTWV0YSA/IE9iamVjdC5rZXlzKGZpZWxkc01ldGEpLmZpbHRlcihmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gIV90aGlzMy5nZXRGaWVsZE1ldGEobmFtZSkuaGlkZGVuO1xuICAgICAgfSkgOiBbXTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRBbGxGaWVsZHNOYW1lJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QWxsRmllbGRzTmFtZSgpIHtcbiAgICAgIHZhciBmaWVsZHNNZXRhID0gdGhpcy5maWVsZHNNZXRhO1xuXG4gICAgICByZXR1cm4gZmllbGRzTWV0YSA/IE9iamVjdC5rZXlzKGZpZWxkc01ldGEpIDogW107XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0VmFsaWRGaWVsZHNGdWxsTmFtZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZhbGlkRmllbGRzRnVsbE5hbWUobWF5YmVQYXJ0aWFsTmFtZSkge1xuICAgICAgdmFyIG1heWJlUGFydGlhbE5hbWVzID0gQXJyYXkuaXNBcnJheShtYXliZVBhcnRpYWxOYW1lKSA/IG1heWJlUGFydGlhbE5hbWUgOiBbbWF5YmVQYXJ0aWFsTmFtZV07XG4gICAgICByZXR1cm4gdGhpcy5nZXRWYWxpZEZpZWxkc05hbWUoKS5maWx0ZXIoZnVuY3Rpb24gKGZ1bGxOYW1lKSB7XG4gICAgICAgIHJldHVybiBtYXliZVBhcnRpYWxOYW1lcy5zb21lKGZ1bmN0aW9uIChwYXJ0aWFsTmFtZSkge1xuICAgICAgICAgIHJldHVybiBmdWxsTmFtZSA9PT0gcGFydGlhbE5hbWUgfHwgKDAsIF91dGlscy5zdGFydHNXaXRoKShmdWxsTmFtZSwgcGFydGlhbE5hbWUpICYmIFsnLicsICdbJ10uaW5kZXhPZihmdWxsTmFtZVtwYXJ0aWFsTmFtZS5sZW5ndGhdKSA+PSAwO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldEZpZWxkVmFsdWVQcm9wVmFsdWUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGaWVsZFZhbHVlUHJvcFZhbHVlKGZpZWxkTWV0YSkge1xuICAgICAgdmFyIG5hbWUgPSBmaWVsZE1ldGEubmFtZSxcbiAgICAgICAgICBnZXRWYWx1ZVByb3BzID0gZmllbGRNZXRhLmdldFZhbHVlUHJvcHMsXG4gICAgICAgICAgdmFsdWVQcm9wTmFtZSA9IGZpZWxkTWV0YS52YWx1ZVByb3BOYW1lO1xuXG4gICAgICB2YXIgZmllbGQgPSB0aGlzLmdldEZpZWxkKG5hbWUpO1xuICAgICAgdmFyIGZpZWxkVmFsdWUgPSAndmFsdWUnIGluIGZpZWxkID8gZmllbGQudmFsdWUgOiBmaWVsZE1ldGEuaW5pdGlhbFZhbHVlO1xuICAgICAgaWYgKGdldFZhbHVlUHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIGdldFZhbHVlUHJvcHMoZmllbGRWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKDAsIF9kZWZpbmVQcm9wZXJ0eTNbJ2RlZmF1bHQnXSkoe30sIHZhbHVlUHJvcE5hbWUsIGZpZWxkVmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldEZpZWxkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RmllbGQobmFtZSkge1xuICAgICAgcmV0dXJuICgwLCBfZXh0ZW5kczNbJ2RlZmF1bHQnXSkoe30sIHRoaXMuZmllbGRzW25hbWVdLCB7XG4gICAgICAgIG5hbWU6IG5hbWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldE5vdENvbGxlY3RlZEZpZWxkcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldE5vdENvbGxlY3RlZEZpZWxkcygpIHtcbiAgICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgICB2YXIgZmllbGRzTmFtZSA9IHRoaXMuZ2V0VmFsaWRGaWVsZHNOYW1lKCk7XG4gICAgICByZXR1cm4gZmllbGRzTmFtZS5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuICFfdGhpczQuZmllbGRzW25hbWVdO1xuICAgICAgfSkubWFwKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICBkaXJ0eTogZmFsc2UsXG4gICAgICAgICAgdmFsdWU6IF90aGlzNC5nZXRGaWVsZE1ldGEobmFtZSkuaW5pdGlhbFZhbHVlXG4gICAgICAgIH07XG4gICAgICB9KS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgZmllbGQpIHtcbiAgICAgICAgcmV0dXJuICgwLCBfc2V0MlsnZGVmYXVsdCddKShhY2MsIGZpZWxkLm5hbWUsICgwLCBfY3JlYXRlRm9ybUZpZWxkMlsnZGVmYXVsdCddKShmaWVsZCkpO1xuICAgICAgfSwge30pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldE5lc3RlZEFsbEZpZWxkcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldE5lc3RlZEFsbEZpZWxkcygpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5maWVsZHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBuYW1lKSB7XG4gICAgICAgIHJldHVybiAoMCwgX3NldDJbJ2RlZmF1bHQnXSkoYWNjLCBuYW1lLCAoMCwgX2NyZWF0ZUZvcm1GaWVsZDJbJ2RlZmF1bHQnXSkoX3RoaXM1LmZpZWxkc1tuYW1lXSkpO1xuICAgICAgfSwgdGhpcy5nZXROb3RDb2xsZWN0ZWRGaWVsZHMoKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0RmllbGRNZW1iZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGaWVsZE1lbWJlcihuYW1lLCBtZW1iZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkKG5hbWUpW21lbWJlcl07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0TmVzdGVkRmllbGRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TmVzdGVkRmllbGRzKG5hbWVzLCBnZXR0ZXIpIHtcbiAgICAgIHZhciBmaWVsZHMgPSBuYW1lcyB8fCB0aGlzLmdldFZhbGlkRmllbGRzTmFtZSgpO1xuICAgICAgcmV0dXJuIGZpZWxkcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgZikge1xuICAgICAgICByZXR1cm4gKDAsIF9zZXQyWydkZWZhdWx0J10pKGFjYywgZiwgZ2V0dGVyKGYpKTtcbiAgICAgIH0sIHt9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXROZXN0ZWRGaWVsZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldE5lc3RlZEZpZWxkKG5hbWUsIGdldHRlcikge1xuICAgICAgdmFyIGZ1bGxOYW1lcyA9IHRoaXMuZ2V0VmFsaWRGaWVsZHNGdWxsTmFtZShuYW1lKTtcbiAgICAgIGlmIChmdWxsTmFtZXMubGVuZ3RoID09PSAwIHx8IC8vIE5vdCByZWdpc3RlcmVkXG4gICAgICBmdWxsTmFtZXMubGVuZ3RoID09PSAxICYmIGZ1bGxOYW1lc1swXSA9PT0gbmFtZSAvLyBOYW1lIGFscmVhZHkgaXMgZnVsbCBuYW1lLlxuICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGdldHRlcihuYW1lKTtcbiAgICAgICAgfVxuICAgICAgdmFyIGlzQXJyYXlWYWx1ZSA9IGZ1bGxOYW1lc1swXVtuYW1lLmxlbmd0aF0gPT09ICdbJztcbiAgICAgIHZhciBzdWZmaXhOYW1lU3RhcnRJbmRleCA9IGlzQXJyYXlWYWx1ZSA/IG5hbWUubGVuZ3RoIDogbmFtZS5sZW5ndGggKyAxO1xuICAgICAgcmV0dXJuIGZ1bGxOYW1lcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgZnVsbE5hbWUpIHtcbiAgICAgICAgcmV0dXJuICgwLCBfc2V0MlsnZGVmYXVsdCddKShhY2MsIGZ1bGxOYW1lLnNsaWNlKHN1ZmZpeE5hbWVTdGFydEluZGV4KSwgZ2V0dGVyKGZ1bGxOYW1lKSk7XG4gICAgICB9LCBpc0FycmF5VmFsdWUgPyBbXSA6IHt9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdpc1ZhbGlkTmVzdGVkRmllbGROYW1lJyxcblxuXG4gICAgLy8gQHByaXZhdGVcbiAgICAvLyBCRzogYGFgIGFuZCBgYS5iYCBjYW5ub3QgYmUgdXNlIGluIHRoZSBzYW1lIGZvcm1cbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNWYWxpZE5lc3RlZEZpZWxkTmFtZShuYW1lKSB7XG4gICAgICB2YXIgbmFtZXMgPSB0aGlzLmdldEFsbEZpZWxkc05hbWUoKTtcbiAgICAgIHJldHVybiBuYW1lcy5ldmVyeShmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gIXBhcnRPZihuLCBuYW1lKSAmJiAhcGFydE9mKG5hbWUsIG4pO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnY2xlYXJGaWVsZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyRmllbGQobmFtZSkge1xuICAgICAgZGVsZXRlIHRoaXMuZmllbGRzW25hbWVdO1xuICAgICAgZGVsZXRlIHRoaXMuZmllbGRzTWV0YVtuYW1lXTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEZpZWxkc1N0b3JlO1xufSgpO1xuXG52YXIgX2luaXRpYWxpc2VQcm9wcyA9IGZ1bmN0aW9uIF9pbml0aWFsaXNlUHJvcHMoKSB7XG4gIHZhciBfdGhpczYgPSB0aGlzO1xuXG4gIHRoaXMuc2V0RmllbGRzSW5pdGlhbFZhbHVlID0gZnVuY3Rpb24gKGluaXRpYWxWYWx1ZXMpIHtcbiAgICB2YXIgZmxhdHRlbmVkSW5pdGlhbFZhbHVlcyA9IF90aGlzNi5mbGF0dGVuUmVnaXN0ZXJlZEZpZWxkcyhpbml0aWFsVmFsdWVzKTtcbiAgICB2YXIgZmllbGRzTWV0YSA9IF90aGlzNi5maWVsZHNNZXRhO1xuICAgIE9iamVjdC5rZXlzKGZsYXR0ZW5lZEluaXRpYWxWYWx1ZXMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIGlmIChmaWVsZHNNZXRhW25hbWVdKSB7XG4gICAgICAgIF90aGlzNi5zZXRGaWVsZE1ldGEobmFtZSwgKDAsIF9leHRlbmRzM1snZGVmYXVsdCddKSh7fSwgX3RoaXM2LmdldEZpZWxkTWV0YShuYW1lKSwge1xuICAgICAgICAgIGluaXRpYWxWYWx1ZTogZmxhdHRlbmVkSW5pdGlhbFZhbHVlc1tuYW1lXVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgdGhpcy5nZXRBbGxWYWx1ZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGZpZWxkc01ldGEgPSBfdGhpczYuZmllbGRzTWV0YSxcbiAgICAgICAgZmllbGRzID0gX3RoaXM2LmZpZWxkcztcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhmaWVsZHNNZXRhKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgbmFtZSkge1xuICAgICAgcmV0dXJuICgwLCBfc2V0MlsnZGVmYXVsdCddKShhY2MsIG5hbWUsIF90aGlzNi5nZXRWYWx1ZUZyb21GaWVsZHMobmFtZSwgZmllbGRzKSk7XG4gICAgfSwge30pO1xuICB9O1xuXG4gIHRoaXMuZ2V0RmllbGRzVmFsdWUgPSBmdW5jdGlvbiAobmFtZXMpIHtcbiAgICByZXR1cm4gX3RoaXM2LmdldE5lc3RlZEZpZWxkcyhuYW1lcywgX3RoaXM2LmdldEZpZWxkVmFsdWUpO1xuICB9O1xuXG4gIHRoaXMuZ2V0RmllbGRWYWx1ZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIGZpZWxkcyA9IF90aGlzNi5maWVsZHM7XG5cbiAgICByZXR1cm4gX3RoaXM2LmdldE5lc3RlZEZpZWxkKG5hbWUsIGZ1bmN0aW9uIChmdWxsTmFtZSkge1xuICAgICAgcmV0dXJuIF90aGlzNi5nZXRWYWx1ZUZyb21GaWVsZHMoZnVsbE5hbWUsIGZpZWxkcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgdGhpcy5nZXRGaWVsZHNFcnJvciA9IGZ1bmN0aW9uIChuYW1lcykge1xuICAgIHJldHVybiBfdGhpczYuZ2V0TmVzdGVkRmllbGRzKG5hbWVzLCBfdGhpczYuZ2V0RmllbGRFcnJvcik7XG4gIH07XG5cbiAgdGhpcy5nZXRGaWVsZEVycm9yID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gX3RoaXM2LmdldE5lc3RlZEZpZWxkKG5hbWUsIGZ1bmN0aW9uIChmdWxsTmFtZSkge1xuICAgICAgcmV0dXJuICgwLCBfdXRpbHMuZ2V0RXJyb3JTdHJzKShfdGhpczYuZ2V0RmllbGRNZW1iZXIoZnVsbE5hbWUsICdlcnJvcnMnKSk7XG4gICAgfSk7XG4gIH07XG5cbiAgdGhpcy5pc0ZpZWxkVmFsaWRhdGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIF90aGlzNi5nZXRGaWVsZE1lbWJlcihuYW1lLCAndmFsaWRhdGluZycpO1xuICB9O1xuXG4gIHRoaXMuaXNGaWVsZHNWYWxpZGF0aW5nID0gZnVuY3Rpb24gKG5zKSB7XG4gICAgdmFyIG5hbWVzID0gbnMgfHwgX3RoaXM2LmdldFZhbGlkRmllbGRzTmFtZSgpO1xuICAgIHJldHVybiBuYW1lcy5zb21lKGZ1bmN0aW9uIChuKSB7XG4gICAgICByZXR1cm4gX3RoaXM2LmlzRmllbGRWYWxpZGF0aW5nKG4pO1xuICAgIH0pO1xuICB9O1xuXG4gIHRoaXMuaXNGaWVsZFRvdWNoZWQgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHJldHVybiBfdGhpczYuZ2V0RmllbGRNZW1iZXIobmFtZSwgJ3RvdWNoZWQnKTtcbiAgfTtcblxuICB0aGlzLmlzRmllbGRzVG91Y2hlZCA9IGZ1bmN0aW9uIChucykge1xuICAgIHZhciBuYW1lcyA9IG5zIHx8IF90aGlzNi5nZXRWYWxpZEZpZWxkc05hbWUoKTtcbiAgICByZXR1cm4gbmFtZXMuc29tZShmdW5jdGlvbiAobikge1xuICAgICAgcmV0dXJuIF90aGlzNi5pc0ZpZWxkVG91Y2hlZChuKTtcbiAgICB9KTtcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUZpZWxkc1N0b3JlKGZpZWxkcykge1xuICByZXR1cm4gbmV3IEZpZWxkc1N0b3JlKGZpZWxkcyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbnZhciByZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSwgWWFob28hIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xudmFyIFJFQUNUX1NUQVRJQ1MgPSB7XG4gIGNoaWxkQ29udGV4dFR5cGVzOiB0cnVlLFxuICBjb250ZXh0VHlwZTogdHJ1ZSxcbiAgY29udGV4dFR5cGVzOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBnZXREZWZhdWx0UHJvcHM6IHRydWUsXG4gIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjogdHJ1ZSxcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOiB0cnVlLFxuICBtaXhpbnM6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZSxcbiAgdHlwZTogdHJ1ZVxufTtcbnZhciBLTk9XTl9TVEFUSUNTID0ge1xuICBuYW1lOiB0cnVlLFxuICBsZW5ndGg6IHRydWUsXG4gIHByb3RvdHlwZTogdHJ1ZSxcbiAgY2FsbGVyOiB0cnVlLFxuICBjYWxsZWU6IHRydWUsXG4gIGFyZ3VtZW50czogdHJ1ZSxcbiAgYXJpdHk6IHRydWVcbn07XG52YXIgRk9SV0FSRF9SRUZfU1RBVElDUyA9IHtcbiAgJyQkdHlwZW9mJzogdHJ1ZSxcbiAgcmVuZGVyOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWVcbn07XG52YXIgTUVNT19TVEFUSUNTID0ge1xuICAnJCR0eXBlb2YnOiB0cnVlLFxuICBjb21wYXJlOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWUsXG4gIHR5cGU6IHRydWVcbn07XG52YXIgVFlQRV9TVEFUSUNTID0ge307XG5UWVBFX1NUQVRJQ1NbcmVhY3RJcy5Gb3J3YXJkUmVmXSA9IEZPUldBUkRfUkVGX1NUQVRJQ1M7XG5UWVBFX1NUQVRJQ1NbcmVhY3RJcy5NZW1vXSA9IE1FTU9fU1RBVElDUztcblxuZnVuY3Rpb24gZ2V0U3RhdGljcyhjb21wb25lbnQpIHtcbiAgLy8gUmVhY3QgdjE2LjExIGFuZCBiZWxvd1xuICBpZiAocmVhY3RJcy5pc01lbW8oY29tcG9uZW50KSkge1xuICAgIHJldHVybiBNRU1PX1NUQVRJQ1M7XG4gIH0gLy8gUmVhY3QgdjE2LjEyIGFuZCBhYm92ZVxuXG5cbiAgcmV0dXJuIFRZUEVfU1RBVElDU1tjb21wb25lbnRbJyQkdHlwZW9mJ11dIHx8IFJFQUNUX1NUQVRJQ1M7XG59XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xudmFyIG9iamVjdFByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGU7XG5mdW5jdGlvbiBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIHNvdXJjZUNvbXBvbmVudCwgYmxhY2tsaXN0KSB7XG4gIGlmICh0eXBlb2Ygc291cmNlQ29tcG9uZW50ICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGRvbid0IGhvaXN0IG92ZXIgc3RyaW5nIChodG1sKSBjb21wb25lbnRzXG4gICAgaWYgKG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgdmFyIGluaGVyaXRlZENvbXBvbmVudCA9IGdldFByb3RvdHlwZU9mKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICAgIGlmIChpbmhlcml0ZWRDb21wb25lbnQgJiYgaW5oZXJpdGVkQ29tcG9uZW50ICE9PSBvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgICAgaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBpbmhlcml0ZWRDb21wb25lbnQsIGJsYWNrbGlzdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICBpZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgICBrZXlzID0ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZUNvbXBvbmVudCkpO1xuICAgIH1cblxuICAgIHZhciB0YXJnZXRTdGF0aWNzID0gZ2V0U3RhdGljcyh0YXJnZXRDb21wb25lbnQpO1xuICAgIHZhciBzb3VyY2VTdGF0aWNzID0gZ2V0U3RhdGljcyhzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKCFLTk9XTl9TVEFUSUNTW2tleV0gJiYgIShibGFja2xpc3QgJiYgYmxhY2tsaXN0W2tleV0pICYmICEoc291cmNlU3RhdGljcyAmJiBzb3VyY2VTdGF0aWNzW2tleV0pICYmICEodGFyZ2V0U3RhdGljcyAmJiB0YXJnZXRTdGF0aWNzW2tleV0pKSB7XG4gICAgICAgIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZUNvbXBvbmVudCwga2V5KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIEF2b2lkIGZhaWx1cmVzIGZyb20gcmVhZC1vbmx5IHByb3BlcnRpZXNcbiAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXRDb21wb25lbnQsIGtleSwgZGVzY3JpcHRvcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldENvbXBvbmVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBob2lzdE5vblJlYWN0U3RhdGljcztcbiIsIi8qKiBAbGljZW5zZSBSZWFjdCB2MTYuOC42XG4gKiByZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cyxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtcbnZhciBiPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsYz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLGQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LGU9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcsZj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCxnPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LGg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDksaz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLGw9Yj9TeW1ib2wuZm9yKFwicmVhY3QuYXN5bmNfbW9kZVwiKTo2MDExMSxtPWI/U3ltYm9sLmZvcihcInJlYWN0LmNvbmN1cnJlbnRfbW9kZVwiKTo2MDExMSxuPWI/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLHA9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIik6NjAxMTMscT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOlxuNjAxMTUscj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpOjYwMTE2O2Z1bmN0aW9uIHQoYSl7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSl7dmFyIHU9YS4kJHR5cGVvZjtzd2l0Y2godSl7Y2FzZSBjOnN3aXRjaChhPWEudHlwZSxhKXtjYXNlIGw6Y2FzZSBtOmNhc2UgZTpjYXNlIGc6Y2FzZSBmOmNhc2UgcDpyZXR1cm4gYTtkZWZhdWx0OnN3aXRjaChhPWEmJmEuJCR0eXBlb2YsYSl7Y2FzZSBrOmNhc2UgbjpjYXNlIGg6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdX19Y2FzZSByOmNhc2UgcTpjYXNlIGQ6cmV0dXJuIHV9fX1mdW5jdGlvbiB2KGEpe3JldHVybiB0KGEpPT09bX1leHBvcnRzLnR5cGVPZj10O2V4cG9ydHMuQXN5bmNNb2RlPWw7ZXhwb3J0cy5Db25jdXJyZW50TW9kZT1tO2V4cG9ydHMuQ29udGV4dENvbnN1bWVyPWs7ZXhwb3J0cy5Db250ZXh0UHJvdmlkZXI9aDtleHBvcnRzLkVsZW1lbnQ9YztleHBvcnRzLkZvcndhcmRSZWY9bjtcbmV4cG9ydHMuRnJhZ21lbnQ9ZTtleHBvcnRzLkxhenk9cjtleHBvcnRzLk1lbW89cTtleHBvcnRzLlBvcnRhbD1kO2V4cG9ydHMuUHJvZmlsZXI9ZztleHBvcnRzLlN0cmljdE1vZGU9ZjtleHBvcnRzLlN1c3BlbnNlPXA7ZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgYXx8YT09PWV8fGE9PT1tfHxhPT09Z3x8YT09PWZ8fGE9PT1wfHxcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiYoYS4kJHR5cGVvZj09PXJ8fGEuJCR0eXBlb2Y9PT1xfHxhLiQkdHlwZW9mPT09aHx8YS4kJHR5cGVvZj09PWt8fGEuJCR0eXBlb2Y9PT1uKX07ZXhwb3J0cy5pc0FzeW5jTW9kZT1mdW5jdGlvbihhKXtyZXR1cm4gdihhKXx8dChhKT09PWx9O2V4cG9ydHMuaXNDb25jdXJyZW50TW9kZT12O2V4cG9ydHMuaXNDb250ZXh0Q29uc3VtZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHQoYSk9PT1rfTtcbmV4cG9ydHMuaXNDb250ZXh0UHJvdmlkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHQoYSk9PT1ofTtleHBvcnRzLmlzRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09Y307ZXhwb3J0cy5pc0ZvcndhcmRSZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIHQoYSk9PT1ufTtleHBvcnRzLmlzRnJhZ21lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHQoYSk9PT1lfTtleHBvcnRzLmlzTGF6eT1mdW5jdGlvbihhKXtyZXR1cm4gdChhKT09PXJ9O2V4cG9ydHMuaXNNZW1vPWZ1bmN0aW9uKGEpe3JldHVybiB0KGEpPT09cX07ZXhwb3J0cy5pc1BvcnRhbD1mdW5jdGlvbihhKXtyZXR1cm4gdChhKT09PWR9O2V4cG9ydHMuaXNQcm9maWxlcj1mdW5jdGlvbihhKXtyZXR1cm4gdChhKT09PWd9O2V4cG9ydHMuaXNTdHJpY3RNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiB0KGEpPT09Zn07XG5leHBvcnRzLmlzU3VzcGVuc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHQoYSk9PT1wfTtcbiIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMubWl4aW4gPSB1bmRlZmluZWQ7XG5cbnZhciBfY3JlYXRlQmFzZUZvcm0gPSByZXF1aXJlKCcuL2NyZWF0ZUJhc2VGb3JtJyk7XG5cbnZhciBfY3JlYXRlQmFzZUZvcm0yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQmFzZUZvcm0pO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBtaXhpbiA9IGV4cG9ydHMubWl4aW4gPSB7XG4gIGdldEZvcm06IGZ1bmN0aW9uIGdldEZvcm0oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldEZpZWxkc1ZhbHVlOiB0aGlzLmZpZWxkc1N0b3JlLmdldEZpZWxkc1ZhbHVlLFxuICAgICAgZ2V0RmllbGRWYWx1ZTogdGhpcy5maWVsZHNTdG9yZS5nZXRGaWVsZFZhbHVlLFxuICAgICAgZ2V0RmllbGRJbnN0YW5jZTogdGhpcy5nZXRGaWVsZEluc3RhbmNlLFxuICAgICAgc2V0RmllbGRzVmFsdWU6IHRoaXMuc2V0RmllbGRzVmFsdWUsXG4gICAgICBzZXRGaWVsZHM6IHRoaXMuc2V0RmllbGRzLFxuICAgICAgc2V0RmllbGRzSW5pdGlhbFZhbHVlOiB0aGlzLmZpZWxkc1N0b3JlLnNldEZpZWxkc0luaXRpYWxWYWx1ZSxcbiAgICAgIGdldEZpZWxkRGVjb3JhdG9yOiB0aGlzLmdldEZpZWxkRGVjb3JhdG9yLFxuICAgICAgZ2V0RmllbGRQcm9wczogdGhpcy5nZXRGaWVsZFByb3BzLFxuICAgICAgZ2V0RmllbGRzRXJyb3I6IHRoaXMuZmllbGRzU3RvcmUuZ2V0RmllbGRzRXJyb3IsXG4gICAgICBnZXRGaWVsZEVycm9yOiB0aGlzLmZpZWxkc1N0b3JlLmdldEZpZWxkRXJyb3IsXG4gICAgICBpc0ZpZWxkVmFsaWRhdGluZzogdGhpcy5maWVsZHNTdG9yZS5pc0ZpZWxkVmFsaWRhdGluZyxcbiAgICAgIGlzRmllbGRzVmFsaWRhdGluZzogdGhpcy5maWVsZHNTdG9yZS5pc0ZpZWxkc1ZhbGlkYXRpbmcsXG4gICAgICBpc0ZpZWxkc1RvdWNoZWQ6IHRoaXMuZmllbGRzU3RvcmUuaXNGaWVsZHNUb3VjaGVkLFxuICAgICAgaXNGaWVsZFRvdWNoZWQ6IHRoaXMuZmllbGRzU3RvcmUuaXNGaWVsZFRvdWNoZWQsXG4gICAgICBpc1N1Ym1pdHRpbmc6IHRoaXMuaXNTdWJtaXR0aW5nLFxuICAgICAgc3VibWl0OiB0aGlzLnN1Ym1pdCxcbiAgICAgIHZhbGlkYXRlRmllbGRzOiB0aGlzLnZhbGlkYXRlRmllbGRzLFxuICAgICAgcmVzZXRGaWVsZHM6IHRoaXMucmVzZXRGaWVsZHNcbiAgICB9O1xuICB9XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVGb3JtKG9wdGlvbnMpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlQmFzZUZvcm0yWydkZWZhdWx0J10pKG9wdGlvbnMsIFttaXhpbl0pO1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBjcmVhdGVGb3JtOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfcmNDb2xsYXBzZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLWNvbGxhcHNlXCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfQ29sbGFwc2VQYW5lbCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vQ29sbGFwc2VQYW5lbFwiKSk7XG5cbnZhciBfaWNvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2ljb25cIikpO1xuXG52YXIgX2NvbmZpZ1Byb3ZpZGVyID0gcmVxdWlyZShcIi4uL2NvbmZpZy1wcm92aWRlclwiKTtcblxudmFyIF9vcGVuQW5pbWF0aW9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vX3V0aWwvb3BlbkFuaW1hdGlvblwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbnZhciBDb2xsYXBzZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQ29sbGFwc2UsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoQ29sbGFwc2UpO1xuXG4gIGZ1bmN0aW9uIENvbGxhcHNlKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb2xsYXBzZSk7XG5cbiAgICBfdGhpcyA9IF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXG4gICAgX3RoaXMucmVuZGVyRXhwYW5kSWNvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwYW5lbFByb3BzID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgICAgIHZhciBwcmVmaXhDbHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICAgIHZhciBleHBhbmRJY29uID0gX3RoaXMucHJvcHMuZXhwYW5kSWNvbjtcbiAgICAgIHZhciBpY29uID0gZXhwYW5kSWNvbiA/IGV4cGFuZEljb24ocGFuZWxQcm9wcykgOiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfaWNvbltcImRlZmF1bHRcIl0sIHtcbiAgICAgICAgdHlwZTogXCJyaWdodFwiLFxuICAgICAgICByb3RhdGU6IHBhbmVsUHJvcHMuaXNBY3RpdmUgPyA5MCA6IHVuZGVmaW5lZFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGljb24pID8gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChpY29uLCB7XG4gICAgICAgIGNsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoaWNvbi5wcm9wcy5jbGFzc05hbWUsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItYXJyb3dcIikpXG4gICAgICB9KSA6IGljb247XG4gICAgfTtcblxuICAgIF90aGlzLnJlbmRlckNvbGxhcHNlID0gZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciBfY2xhc3NOYW1lcztcblxuICAgICAgdmFyIGdldFByZWZpeENscyA9IF9yZWYuZ2V0UHJlZml4Q2xzO1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgY3VzdG9taXplUHJlZml4Q2xzID0gX3RoaXMkcHJvcHMucHJlZml4Q2xzLFxuICAgICAgICAgIF90aGlzJHByb3BzJGNsYXNzTmFtZSA9IF90aGlzJHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wcyRjbGFzc05hbWUgPT09IHZvaWQgMCA/ICcnIDogX3RoaXMkcHJvcHMkY2xhc3NOYW1lLFxuICAgICAgICAgIGJvcmRlcmVkID0gX3RoaXMkcHJvcHMuYm9yZGVyZWQsXG4gICAgICAgICAgZXhwYW5kSWNvblBvc2l0aW9uID0gX3RoaXMkcHJvcHMuZXhwYW5kSWNvblBvc2l0aW9uO1xuICAgICAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygnY29sbGFwc2UnLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICAgICAgdmFyIGNvbGxhcHNlQ2xhc3NOYW1lID0gKDAsIF9jbGFzc25hbWVzW1wiZGVmYXVsdFwiXSkoKF9jbGFzc05hbWVzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ib3JkZXJsZXNzXCIpLCAhYm9yZGVyZWQpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaWNvbi1wb3NpdGlvbi1cIikuY29uY2F0KGV4cGFuZEljb25Qb3NpdGlvbiksIHRydWUpLCBfY2xhc3NOYW1lcyksIGNsYXNzTmFtZSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX3JjQ29sbGFwc2VbXCJkZWZhdWx0XCJdLCBfZXh0ZW5kcyh7fSwgX3RoaXMucHJvcHMsIHtcbiAgICAgICAgZXhwYW5kSWNvbjogZnVuY3Rpb24gZXhwYW5kSWNvbihwYW5lbFByb3BzKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLnJlbmRlckV4cGFuZEljb24ocGFuZWxQcm9wcywgcHJlZml4Q2xzKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICAgIGNsYXNzTmFtZTogY29sbGFwc2VDbGFzc05hbWVcbiAgICAgIH0pKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENvbGxhcHNlLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9jb25maWdQcm92aWRlci5Db25maWdDb25zdW1lciwgbnVsbCwgdGhpcy5yZW5kZXJDb2xsYXBzZSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENvbGxhcHNlO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IENvbGxhcHNlO1xuQ29sbGFwc2UuUGFuZWwgPSBfQ29sbGFwc2VQYW5lbFtcImRlZmF1bHRcIl07XG5Db2xsYXBzZS5kZWZhdWx0UHJvcHMgPSB7XG4gIGJvcmRlcmVkOiB0cnVlLFxuICBvcGVuQW5pbWF0aW9uOiBfZXh0ZW5kcyhfZXh0ZW5kcyh7fSwgX29wZW5BbmltYXRpb25bXCJkZWZhdWx0XCJdKSwge1xuICAgIGFwcGVhcjogZnVuY3Rpb24gYXBwZWFyKCkge31cbiAgfSksXG4gIGV4cGFuZEljb25Qb3NpdGlvbjogJ2xlZnQnXG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBSZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfcmNDb2xsYXBzZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJjLWNvbGxhcHNlXCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfY29uZmlnUHJvdmlkZXIgPSByZXF1aXJlKFwiLi4vY29uZmlnLXByb3ZpZGVyXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG52YXIgQ29sbGFwc2VQYW5lbCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQ29sbGFwc2VQYW5lbCwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihDb2xsYXBzZVBhbmVsKTtcblxuICBmdW5jdGlvbiBDb2xsYXBzZVBhbmVsKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb2xsYXBzZVBhbmVsKTtcblxuICAgIF90aGlzID0gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgICBfdGhpcy5yZW5kZXJDb2xsYXBzZVBhbmVsID0gZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciBnZXRQcmVmaXhDbHMgPSBfcmVmLmdldFByZWZpeENscztcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIGN1c3RvbWl6ZVByZWZpeENscyA9IF90aGlzJHByb3BzLnByZWZpeENscyxcbiAgICAgICAgICBfdGhpcyRwcm9wcyRjbGFzc05hbWUgPSBfdGhpcyRwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMkY2xhc3NOYW1lID09PSB2b2lkIDAgPyAnJyA6IF90aGlzJHByb3BzJGNsYXNzTmFtZSxcbiAgICAgICAgICBfdGhpcyRwcm9wcyRzaG93QXJyb3cgPSBfdGhpcyRwcm9wcy5zaG93QXJyb3csXG4gICAgICAgICAgc2hvd0Fycm93ID0gX3RoaXMkcHJvcHMkc2hvd0Fycm93ID09PSB2b2lkIDAgPyB0cnVlIDogX3RoaXMkcHJvcHMkc2hvd0Fycm93O1xuICAgICAgdmFyIHByZWZpeENscyA9IGdldFByZWZpeENscygnY29sbGFwc2UnLCBjdXN0b21pemVQcmVmaXhDbHMpO1xuICAgICAgdmFyIGNvbGxhcHNlUGFuZWxDbGFzc05hbWUgPSAoMCwgX2NsYXNzbmFtZXNbXCJkZWZhdWx0XCJdKShfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbm8tYXJyb3dcIiksICFzaG93QXJyb3cpLCBjbGFzc05hbWUpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9yY0NvbGxhcHNlW1wiZGVmYXVsdFwiXS5QYW5lbCwgX2V4dGVuZHMoe30sIF90aGlzLnByb3BzLCB7XG4gICAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgICBjbGFzc05hbWU6IGNvbGxhcHNlUGFuZWxDbGFzc05hbWVcbiAgICAgIH0pKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENvbGxhcHNlUGFuZWwsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX2NvbmZpZ1Byb3ZpZGVyLkNvbmZpZ0NvbnN1bWVyLCBudWxsLCB0aGlzLnJlbmRlckNvbGxhcHNlUGFuZWwpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDb2xsYXBzZVBhbmVsO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IENvbGxhcHNlUGFuZWw7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9jc3NBbmltYXRpb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjc3MtYW5pbWF0aW9uXCIpKTtcblxudmFyIF9yYWYgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyYWZcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuLyoqXG4gKiBEZXByZWNhdGVkLiBXZSBzaG91bGQgcmVwbGFjZSB0aGUgYW5pbWF0aW9uIHdpdGggcHVyZSByZWFjdCBtb3Rpb24gaW5zdGVhZCBvZiBtb2RpZnkgc3R5bGUgZGlyZWN0bHkuXG4gKiBJZiB5b3UgYXJlIGNyZWF0aW5nIG5ldyBjb21wb25lbnQgd2l0aCBhbmltYXRpb24sIHBsZWFzZSB1c2UgYC4vbW90aW9uYC5cbiAqL1xuZnVuY3Rpb24gYW5pbWF0ZShub2RlLCBzaG93LCBkb25lKSB7XG4gIHZhciBoZWlnaHQ7XG4gIHZhciByZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZDtcbiAgcmV0dXJuICgwLCBfY3NzQW5pbWF0aW9uW1wiZGVmYXVsdFwiXSkobm9kZSwgJ2FudC1tb3Rpb24tY29sbGFwc2UtbGVnYWN5Jywge1xuICAgIHN0YXJ0OiBmdW5jdGlvbiBzdGFydCgpIHtcbiAgICAgIGlmICghc2hvdykge1xuICAgICAgICBub2RlLnN0eWxlLmhlaWdodCA9IFwiXCIuY29uY2F0KG5vZGUub2Zmc2V0SGVpZ2h0LCBcInB4XCIpO1xuICAgICAgICBub2RlLnN0eWxlLm9wYWNpdHkgPSAnMSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoZWlnaHQgPSBub2RlLm9mZnNldEhlaWdodDtcbiAgICAgICAgbm9kZS5zdHlsZS5oZWlnaHQgPSAnMHB4JztcbiAgICAgICAgbm9kZS5zdHlsZS5vcGFjaXR5ID0gJzAnO1xuICAgICAgfVxuICAgIH0sXG4gICAgYWN0aXZlOiBmdW5jdGlvbiBhY3RpdmUoKSB7XG4gICAgICBpZiAocmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQpIHtcbiAgICAgICAgX3JhZltcImRlZmF1bHRcIl0uY2FuY2VsKHJlcXVlc3RBbmltYXRpb25GcmFtZUlkKTtcbiAgICAgIH1cblxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQgPSAoMCwgX3JhZltcImRlZmF1bHRcIl0pKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbm9kZS5zdHlsZS5oZWlnaHQgPSBcIlwiLmNvbmNhdChzaG93ID8gaGVpZ2h0IDogMCwgXCJweFwiKTtcbiAgICAgICAgbm9kZS5zdHlsZS5vcGFjaXR5ID0gc2hvdyA/ICcxJyA6ICcwJztcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZW5kOiBmdW5jdGlvbiBlbmQoKSB7XG4gICAgICBpZiAocmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQpIHtcbiAgICAgICAgX3JhZltcImRlZmF1bHRcIl0uY2FuY2VsKHJlcXVlc3RBbmltYXRpb25GcmFtZUlkKTtcbiAgICAgIH1cblxuICAgICAgbm9kZS5zdHlsZS5oZWlnaHQgPSAnJztcbiAgICAgIG5vZGUuc3R5bGUub3BhY2l0eSA9ICcnO1xuICAgICAgZG9uZSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbnZhciBhbmltYXRpb24gPSB7XG4gIGVudGVyOiBmdW5jdGlvbiBlbnRlcihub2RlLCBkb25lKSB7XG4gICAgcmV0dXJuIGFuaW1hdGUobm9kZSwgdHJ1ZSwgZG9uZSk7XG4gIH0sXG4gIGxlYXZlOiBmdW5jdGlvbiBsZWF2ZShub2RlLCBkb25lKSB7XG4gICAgcmV0dXJuIGFuaW1hdGUobm9kZSwgZmFsc2UsIGRvbmUpO1xuICB9LFxuICBhcHBlYXI6IGZ1bmN0aW9uIGFwcGVhcihub2RlLCBkb25lKSB7XG4gICAgcmV0dXJuIGFuaW1hdGUobm9kZSwgdHJ1ZSwgZG9uZSk7XG4gIH1cbn07XG52YXIgX2RlZmF1bHQgPSBhbmltYXRpb247XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsImltcG9ydCAkJG9ic2VydmFibGUgZnJvbSAnc3ltYm9sLW9ic2VydmFibGUnO1xuXG4vKipcbiAqIFRoZXNlIGFyZSBwcml2YXRlIGFjdGlvbiB0eXBlcyByZXNlcnZlZCBieSBSZWR1eC5cbiAqIEZvciBhbnkgdW5rbm93biBhY3Rpb25zLCB5b3UgbXVzdCByZXR1cm4gdGhlIGN1cnJlbnQgc3RhdGUuXG4gKiBJZiB0aGUgY3VycmVudCBzdGF0ZSBpcyB1bmRlZmluZWQsIHlvdSBtdXN0IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZS5cbiAqIERvIG5vdCByZWZlcmVuY2UgdGhlc2UgYWN0aW9uIHR5cGVzIGRpcmVjdGx5IGluIHlvdXIgY29kZS5cbiAqL1xudmFyIHJhbmRvbVN0cmluZyA9IGZ1bmN0aW9uIHJhbmRvbVN0cmluZygpIHtcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg3KS5zcGxpdCgnJykuam9pbignLicpO1xufTtcblxudmFyIEFjdGlvblR5cGVzID0ge1xuICBJTklUOiBcIkBAcmVkdXgvSU5JVFwiICsgcmFuZG9tU3RyaW5nKCksXG4gIFJFUExBQ0U6IFwiQEByZWR1eC9SRVBMQUNFXCIgKyByYW5kb21TdHJpbmcoKSxcbiAgUFJPQkVfVU5LTk9XTl9BQ1RJT046IGZ1bmN0aW9uIFBST0JFX1VOS05PV05fQUNUSU9OKCkge1xuICAgIHJldHVybiBcIkBAcmVkdXgvUFJPQkVfVU5LTk9XTl9BQ1RJT05cIiArIHJhbmRvbVN0cmluZygpO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7YW55fSBvYmogVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIGFyZ3VtZW50IGFwcGVhcnMgdG8gYmUgYSBwbGFpbiBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG4gIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgdmFyIHByb3RvID0gb2JqO1xuXG4gIHdoaWxlIChPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pICE9PSBudWxsKSB7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopID09PSBwcm90bztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgUmVkdXggc3RvcmUgdGhhdCBob2xkcyB0aGUgc3RhdGUgdHJlZS5cbiAqIFRoZSBvbmx5IHdheSB0byBjaGFuZ2UgdGhlIGRhdGEgaW4gdGhlIHN0b3JlIGlzIHRvIGNhbGwgYGRpc3BhdGNoKClgIG9uIGl0LlxuICpcbiAqIFRoZXJlIHNob3VsZCBvbmx5IGJlIGEgc2luZ2xlIHN0b3JlIGluIHlvdXIgYXBwLiBUbyBzcGVjaWZ5IGhvdyBkaWZmZXJlbnRcbiAqIHBhcnRzIG9mIHRoZSBzdGF0ZSB0cmVlIHJlc3BvbmQgdG8gYWN0aW9ucywgeW91IG1heSBjb21iaW5lIHNldmVyYWwgcmVkdWNlcnNcbiAqIGludG8gYSBzaW5nbGUgcmVkdWNlciBmdW5jdGlvbiBieSB1c2luZyBgY29tYmluZVJlZHVjZXJzYC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWR1Y2VyIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXh0IHN0YXRlIHRyZWUsIGdpdmVuXG4gKiB0aGUgY3VycmVudCBzdGF0ZSB0cmVlIGFuZCB0aGUgYWN0aW9uIHRvIGhhbmRsZS5cbiAqXG4gKiBAcGFyYW0ge2FueX0gW3ByZWxvYWRlZFN0YXRlXSBUaGUgaW5pdGlhbCBzdGF0ZS4gWW91IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRcbiAqIHRvIGh5ZHJhdGUgdGhlIHN0YXRlIGZyb20gdGhlIHNlcnZlciBpbiB1bml2ZXJzYWwgYXBwcywgb3IgdG8gcmVzdG9yZSBhXG4gKiBwcmV2aW91c2x5IHNlcmlhbGl6ZWQgdXNlciBzZXNzaW9uLlxuICogSWYgeW91IHVzZSBgY29tYmluZVJlZHVjZXJzYCB0byBwcm9kdWNlIHRoZSByb290IHJlZHVjZXIgZnVuY3Rpb24sIHRoaXMgbXVzdCBiZVxuICogYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgc2hhcGUgYXMgYGNvbWJpbmVSZWR1Y2Vyc2Aga2V5cy5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZW5oYW5jZXJdIFRoZSBzdG9yZSBlbmhhbmNlci4gWW91IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRcbiAqIHRvIGVuaGFuY2UgdGhlIHN0b3JlIHdpdGggdGhpcmQtcGFydHkgY2FwYWJpbGl0aWVzIHN1Y2ggYXMgbWlkZGxld2FyZSxcbiAqIHRpbWUgdHJhdmVsLCBwZXJzaXN0ZW5jZSwgZXRjLiBUaGUgb25seSBzdG9yZSBlbmhhbmNlciB0aGF0IHNoaXBzIHdpdGggUmVkdXhcbiAqIGlzIGBhcHBseU1pZGRsZXdhcmUoKWAuXG4gKlxuICogQHJldHVybnMge1N0b3JlfSBBIFJlZHV4IHN0b3JlIHRoYXQgbGV0cyB5b3UgcmVhZCB0aGUgc3RhdGUsIGRpc3BhdGNoIGFjdGlvbnNcbiAqIGFuZCBzdWJzY3JpYmUgdG8gY2hhbmdlcy5cbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVTdG9yZShyZWR1Y2VyLCBwcmVsb2FkZWRTdGF0ZSwgZW5oYW5jZXIpIHtcbiAgdmFyIF9yZWYyO1xuXG4gIGlmICh0eXBlb2YgcHJlbG9hZGVkU3RhdGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGVuaGFuY2VyID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBlbmhhbmNlciA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgYXJndW1lbnRzWzNdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJdCBsb29rcyBsaWtlIHlvdSBhcmUgcGFzc2luZyBzZXZlcmFsIHN0b3JlIGVuaGFuY2VycyB0byAnICsgJ2NyZWF0ZVN0b3JlKCkuIFRoaXMgaXMgbm90IHN1cHBvcnRlZC4gSW5zdGVhZCwgY29tcG9zZSB0aGVtICcgKyAndG9nZXRoZXIgdG8gYSBzaW5nbGUgZnVuY3Rpb24uJyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHByZWxvYWRlZFN0YXRlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBlbmhhbmNlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBlbmhhbmNlciA9IHByZWxvYWRlZFN0YXRlO1xuICAgIHByZWxvYWRlZFN0YXRlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBlbmhhbmNlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZiAodHlwZW9mIGVuaGFuY2VyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHRoZSBlbmhhbmNlciB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIHJldHVybiBlbmhhbmNlcihjcmVhdGVTdG9yZSkocmVkdWNlciwgcHJlbG9hZGVkU3RhdGUpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiByZWR1Y2VyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB0aGUgcmVkdWNlciB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgdmFyIGN1cnJlbnRSZWR1Y2VyID0gcmVkdWNlcjtcbiAgdmFyIGN1cnJlbnRTdGF0ZSA9IHByZWxvYWRlZFN0YXRlO1xuICB2YXIgY3VycmVudExpc3RlbmVycyA9IFtdO1xuICB2YXIgbmV4dExpc3RlbmVycyA9IGN1cnJlbnRMaXN0ZW5lcnM7XG4gIHZhciBpc0Rpc3BhdGNoaW5nID0gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGlzIG1ha2VzIGEgc2hhbGxvdyBjb3B5IG9mIGN1cnJlbnRMaXN0ZW5lcnMgc28gd2UgY2FuIHVzZVxuICAgKiBuZXh0TGlzdGVuZXJzIGFzIGEgdGVtcG9yYXJ5IGxpc3Qgd2hpbGUgZGlzcGF0Y2hpbmcuXG4gICAqXG4gICAqIFRoaXMgcHJldmVudHMgYW55IGJ1Z3MgYXJvdW5kIGNvbnN1bWVycyBjYWxsaW5nXG4gICAqIHN1YnNjcmliZS91bnN1YnNjcmliZSBpbiB0aGUgbWlkZGxlIG9mIGEgZGlzcGF0Y2guXG4gICAqL1xuXG4gIGZ1bmN0aW9uIGVuc3VyZUNhbk11dGF0ZU5leHRMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKG5leHRMaXN0ZW5lcnMgPT09IGN1cnJlbnRMaXN0ZW5lcnMpIHtcbiAgICAgIG5leHRMaXN0ZW5lcnMgPSBjdXJyZW50TGlzdGVuZXJzLnNsaWNlKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZWFkcyB0aGUgc3RhdGUgdHJlZSBtYW5hZ2VkIGJ5IHRoZSBzdG9yZS5cbiAgICpcbiAgICogQHJldHVybnMge2FueX0gVGhlIGN1cnJlbnQgc3RhdGUgdHJlZSBvZiB5b3VyIGFwcGxpY2F0aW9uLlxuICAgKi9cblxuXG4gIGZ1bmN0aW9uIGdldFN0YXRlKCkge1xuICAgIGlmIChpc0Rpc3BhdGNoaW5nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtYXkgbm90IGNhbGwgc3RvcmUuZ2V0U3RhdGUoKSB3aGlsZSB0aGUgcmVkdWNlciBpcyBleGVjdXRpbmcuICcgKyAnVGhlIHJlZHVjZXIgaGFzIGFscmVhZHkgcmVjZWl2ZWQgdGhlIHN0YXRlIGFzIGFuIGFyZ3VtZW50LiAnICsgJ1Bhc3MgaXQgZG93biBmcm9tIHRoZSB0b3AgcmVkdWNlciBpbnN0ZWFkIG9mIHJlYWRpbmcgaXQgZnJvbSB0aGUgc3RvcmUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1cnJlbnRTdGF0ZTtcbiAgfVxuICAvKipcbiAgICogQWRkcyBhIGNoYW5nZSBsaXN0ZW5lci4gSXQgd2lsbCBiZSBjYWxsZWQgYW55IHRpbWUgYW4gYWN0aW9uIGlzIGRpc3BhdGNoZWQsXG4gICAqIGFuZCBzb21lIHBhcnQgb2YgdGhlIHN0YXRlIHRyZWUgbWF5IHBvdGVudGlhbGx5IGhhdmUgY2hhbmdlZC4gWW91IG1heSB0aGVuXG4gICAqIGNhbGwgYGdldFN0YXRlKClgIHRvIHJlYWQgdGhlIGN1cnJlbnQgc3RhdGUgdHJlZSBpbnNpZGUgdGhlIGNhbGxiYWNrLlxuICAgKlxuICAgKiBZb3UgbWF5IGNhbGwgYGRpc3BhdGNoKClgIGZyb20gYSBjaGFuZ2UgbGlzdGVuZXIsIHdpdGggdGhlIGZvbGxvd2luZ1xuICAgKiBjYXZlYXRzOlxuICAgKlxuICAgKiAxLiBUaGUgc3Vic2NyaXB0aW9ucyBhcmUgc25hcHNob3R0ZWQganVzdCBiZWZvcmUgZXZlcnkgYGRpc3BhdGNoKClgIGNhbGwuXG4gICAqIElmIHlvdSBzdWJzY3JpYmUgb3IgdW5zdWJzY3JpYmUgd2hpbGUgdGhlIGxpc3RlbmVycyBhcmUgYmVpbmcgaW52b2tlZCwgdGhpc1xuICAgKiB3aWxsIG5vdCBoYXZlIGFueSBlZmZlY3Qgb24gdGhlIGBkaXNwYXRjaCgpYCB0aGF0IGlzIGN1cnJlbnRseSBpbiBwcm9ncmVzcy5cbiAgICogSG93ZXZlciwgdGhlIG5leHQgYGRpc3BhdGNoKClgIGNhbGwsIHdoZXRoZXIgbmVzdGVkIG9yIG5vdCwgd2lsbCB1c2UgYSBtb3JlXG4gICAqIHJlY2VudCBzbmFwc2hvdCBvZiB0aGUgc3Vic2NyaXB0aW9uIGxpc3QuXG4gICAqXG4gICAqIDIuIFRoZSBsaXN0ZW5lciBzaG91bGQgbm90IGV4cGVjdCB0byBzZWUgYWxsIHN0YXRlIGNoYW5nZXMsIGFzIHRoZSBzdGF0ZVxuICAgKiBtaWdodCBoYXZlIGJlZW4gdXBkYXRlZCBtdWx0aXBsZSB0aW1lcyBkdXJpbmcgYSBuZXN0ZWQgYGRpc3BhdGNoKClgIGJlZm9yZVxuICAgKiB0aGUgbGlzdGVuZXIgaXMgY2FsbGVkLiBJdCBpcywgaG93ZXZlciwgZ3VhcmFudGVlZCB0aGF0IGFsbCBzdWJzY3JpYmVyc1xuICAgKiByZWdpc3RlcmVkIGJlZm9yZSB0aGUgYGRpc3BhdGNoKClgIHN0YXJ0ZWQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgbGF0ZXN0XG4gICAqIHN0YXRlIGJ5IHRoZSB0aW1lIGl0IGV4aXRzLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBsaXN0ZW5lciBBIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgb24gZXZlcnkgZGlzcGF0Y2guXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBmdW5jdGlvbiB0byByZW1vdmUgdGhpcyBjaGFuZ2UgbGlzdGVuZXIuXG4gICAqL1xuXG5cbiAgZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB0aGUgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9XG5cbiAgICBpZiAoaXNEaXNwYXRjaGluZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbWF5IG5vdCBjYWxsIHN0b3JlLnN1YnNjcmliZSgpIHdoaWxlIHRoZSByZWR1Y2VyIGlzIGV4ZWN1dGluZy4gJyArICdJZiB5b3Ugd291bGQgbGlrZSB0byBiZSBub3RpZmllZCBhZnRlciB0aGUgc3RvcmUgaGFzIGJlZW4gdXBkYXRlZCwgc3Vic2NyaWJlIGZyb20gYSAnICsgJ2NvbXBvbmVudCBhbmQgaW52b2tlIHN0b3JlLmdldFN0YXRlKCkgaW4gdGhlIGNhbGxiYWNrIHRvIGFjY2VzcyB0aGUgbGF0ZXN0IHN0YXRlLiAnICsgJ1NlZSBodHRwczovL3JlZHV4LmpzLm9yZy9hcGktcmVmZXJlbmNlL3N0b3JlI3N1YnNjcmliZWxpc3RlbmVyIGZvciBtb3JlIGRldGFpbHMuJyk7XG4gICAgfVxuXG4gICAgdmFyIGlzU3Vic2NyaWJlZCA9IHRydWU7XG4gICAgZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3RlbmVycygpO1xuICAgIG5leHRMaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgICAgaWYgKCFpc1N1YnNjcmliZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNEaXNwYXRjaGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtYXkgbm90IHVuc3Vic2NyaWJlIGZyb20gYSBzdG9yZSBsaXN0ZW5lciB3aGlsZSB0aGUgcmVkdWNlciBpcyBleGVjdXRpbmcuICcgKyAnU2VlIGh0dHBzOi8vcmVkdXguanMub3JnL2FwaS1yZWZlcmVuY2Uvc3RvcmUjc3Vic2NyaWJlbGlzdGVuZXIgZm9yIG1vcmUgZGV0YWlscy4nKTtcbiAgICAgIH1cblxuICAgICAgaXNTdWJzY3JpYmVkID0gZmFsc2U7XG4gICAgICBlbnN1cmVDYW5NdXRhdGVOZXh0TGlzdGVuZXJzKCk7XG4gICAgICB2YXIgaW5kZXggPSBuZXh0TGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuICAgICAgbmV4dExpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgY3VycmVudExpc3RlbmVycyA9IG51bGw7XG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogRGlzcGF0Y2hlcyBhbiBhY3Rpb24uIEl0IGlzIHRoZSBvbmx5IHdheSB0byB0cmlnZ2VyIGEgc3RhdGUgY2hhbmdlLlxuICAgKlxuICAgKiBUaGUgYHJlZHVjZXJgIGZ1bmN0aW9uLCB1c2VkIHRvIGNyZWF0ZSB0aGUgc3RvcmUsIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlXG4gICAqIGN1cnJlbnQgc3RhdGUgdHJlZSBhbmQgdGhlIGdpdmVuIGBhY3Rpb25gLiBJdHMgcmV0dXJuIHZhbHVlIHdpbGxcbiAgICogYmUgY29uc2lkZXJlZCB0aGUgKipuZXh0Kiogc3RhdGUgb2YgdGhlIHRyZWUsIGFuZCB0aGUgY2hhbmdlIGxpc3RlbmVyc1xuICAgKiB3aWxsIGJlIG5vdGlmaWVkLlxuICAgKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRzIHBsYWluIG9iamVjdCBhY3Rpb25zLiBJZiB5b3Ugd2FudCB0b1xuICAgKiBkaXNwYXRjaCBhIFByb21pc2UsIGFuIE9ic2VydmFibGUsIGEgdGh1bmssIG9yIHNvbWV0aGluZyBlbHNlLCB5b3UgbmVlZCB0b1xuICAgKiB3cmFwIHlvdXIgc3RvcmUgY3JlYXRpbmcgZnVuY3Rpb24gaW50byB0aGUgY29ycmVzcG9uZGluZyBtaWRkbGV3YXJlLiBGb3JcbiAgICogZXhhbXBsZSwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYHJlZHV4LXRodW5rYCBwYWNrYWdlLiBFdmVuIHRoZVxuICAgKiBtaWRkbGV3YXJlIHdpbGwgZXZlbnR1YWxseSBkaXNwYXRjaCBwbGFpbiBvYmplY3QgYWN0aW9ucyB1c2luZyB0aGlzIG1ldGhvZC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbiBBIHBsYWluIG9iamVjdCByZXByZXNlbnRpbmcg4oCcd2hhdCBjaGFuZ2Vk4oCdLiBJdCBpc1xuICAgKiBhIGdvb2QgaWRlYSB0byBrZWVwIGFjdGlvbnMgc2VyaWFsaXphYmxlIHNvIHlvdSBjYW4gcmVjb3JkIGFuZCByZXBsYXkgdXNlclxuICAgKiBzZXNzaW9ucywgb3IgdXNlIHRoZSB0aW1lIHRyYXZlbGxpbmcgYHJlZHV4LWRldnRvb2xzYC4gQW4gYWN0aW9uIG11c3QgaGF2ZVxuICAgKiBhIGB0eXBlYCBwcm9wZXJ0eSB3aGljaCBtYXkgbm90IGJlIGB1bmRlZmluZWRgLiBJdCBpcyBhIGdvb2QgaWRlYSB0byB1c2VcbiAgICogc3RyaW5nIGNvbnN0YW50cyBmb3IgYWN0aW9uIHR5cGVzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBGb3IgY29udmVuaWVuY2UsIHRoZSBzYW1lIGFjdGlvbiBvYmplY3QgeW91IGRpc3BhdGNoZWQuXG4gICAqXG4gICAqIE5vdGUgdGhhdCwgaWYgeW91IHVzZSBhIGN1c3RvbSBtaWRkbGV3YXJlLCBpdCBtYXkgd3JhcCBgZGlzcGF0Y2goKWAgdG9cbiAgICogcmV0dXJuIHNvbWV0aGluZyBlbHNlIChmb3IgZXhhbXBsZSwgYSBQcm9taXNlIHlvdSBjYW4gYXdhaXQpLlxuICAgKi9cblxuXG4gIGZ1bmN0aW9uIGRpc3BhdGNoKGFjdGlvbikge1xuICAgIGlmICghaXNQbGFpbk9iamVjdChhY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjdGlvbnMgbXVzdCBiZSBwbGFpbiBvYmplY3RzLiAnICsgJ1VzZSBjdXN0b20gbWlkZGxld2FyZSBmb3IgYXN5bmMgYWN0aW9ucy4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGFjdGlvbi50eXBlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY3Rpb25zIG1heSBub3QgaGF2ZSBhbiB1bmRlZmluZWQgXCJ0eXBlXCIgcHJvcGVydHkuICcgKyAnSGF2ZSB5b3UgbWlzc3BlbGxlZCBhIGNvbnN0YW50PycpO1xuICAgIH1cblxuICAgIGlmIChpc0Rpc3BhdGNoaW5nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZHVjZXJzIG1heSBub3QgZGlzcGF0Y2ggYWN0aW9ucy4nKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgaXNEaXNwYXRjaGluZyA9IHRydWU7XG4gICAgICBjdXJyZW50U3RhdGUgPSBjdXJyZW50UmVkdWNlcihjdXJyZW50U3RhdGUsIGFjdGlvbik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlzRGlzcGF0Y2hpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgbGlzdGVuZXJzID0gY3VycmVudExpc3RlbmVycyA9IG5leHRMaXN0ZW5lcnM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGxpc3RlbmVyID0gbGlzdGVuZXJzW2ldO1xuICAgICAgbGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWN0aW9uO1xuICB9XG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgcmVkdWNlciBjdXJyZW50bHkgdXNlZCBieSB0aGUgc3RvcmUgdG8gY2FsY3VsYXRlIHRoZSBzdGF0ZS5cbiAgICpcbiAgICogWW91IG1pZ2h0IG5lZWQgdGhpcyBpZiB5b3VyIGFwcCBpbXBsZW1lbnRzIGNvZGUgc3BsaXR0aW5nIGFuZCB5b3Ugd2FudCB0b1xuICAgKiBsb2FkIHNvbWUgb2YgdGhlIHJlZHVjZXJzIGR5bmFtaWNhbGx5LiBZb3UgbWlnaHQgYWxzbyBuZWVkIHRoaXMgaWYgeW91XG4gICAqIGltcGxlbWVudCBhIGhvdCByZWxvYWRpbmcgbWVjaGFuaXNtIGZvciBSZWR1eC5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gbmV4dFJlZHVjZXIgVGhlIHJlZHVjZXIgZm9yIHRoZSBzdG9yZSB0byB1c2UgaW5zdGVhZC5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuXG5cbiAgZnVuY3Rpb24gcmVwbGFjZVJlZHVjZXIobmV4dFJlZHVjZXIpIHtcbiAgICBpZiAodHlwZW9mIG5leHRSZWR1Y2VyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHRoZSBuZXh0UmVkdWNlciB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIGN1cnJlbnRSZWR1Y2VyID0gbmV4dFJlZHVjZXI7IC8vIFRoaXMgYWN0aW9uIGhhcyBhIHNpbWlsaWFyIGVmZmVjdCB0byBBY3Rpb25UeXBlcy5JTklULlxuICAgIC8vIEFueSByZWR1Y2VycyB0aGF0IGV4aXN0ZWQgaW4gYm90aCB0aGUgbmV3IGFuZCBvbGQgcm9vdFJlZHVjZXJcbiAgICAvLyB3aWxsIHJlY2VpdmUgdGhlIHByZXZpb3VzIHN0YXRlLiBUaGlzIGVmZmVjdGl2ZWx5IHBvcHVsYXRlc1xuICAgIC8vIHRoZSBuZXcgc3RhdGUgdHJlZSB3aXRoIGFueSByZWxldmFudCBkYXRhIGZyb20gdGhlIG9sZCBvbmUuXG5cbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRVBMQUNFXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEludGVyb3BlcmFiaWxpdHkgcG9pbnQgZm9yIG9ic2VydmFibGUvcmVhY3RpdmUgbGlicmFyaWVzLlxuICAgKiBAcmV0dXJucyB7b2JzZXJ2YWJsZX0gQSBtaW5pbWFsIG9ic2VydmFibGUgb2Ygc3RhdGUgY2hhbmdlcy5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgb2JzZXJ2YWJsZSBwcm9wb3NhbDpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JzZXJ2YWJsZVxuICAgKi9cblxuXG4gIGZ1bmN0aW9uIG9ic2VydmFibGUoKSB7XG4gICAgdmFyIF9yZWY7XG5cbiAgICB2YXIgb3V0ZXJTdWJzY3JpYmUgPSBzdWJzY3JpYmU7XG4gICAgcmV0dXJuIF9yZWYgPSB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBtaW5pbWFsIG9ic2VydmFibGUgc3Vic2NyaXB0aW9uIG1ldGhvZC5cbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYnNlcnZlciBBbnkgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgYXMgYW4gb2JzZXJ2ZXIuXG4gICAgICAgKiBUaGUgb2JzZXJ2ZXIgb2JqZWN0IHNob3VsZCBoYXZlIGEgYG5leHRgIG1ldGhvZC5cbiAgICAgICAqIEByZXR1cm5zIHtzdWJzY3JpcHRpb259IEFuIG9iamVjdCB3aXRoIGFuIGB1bnN1YnNjcmliZWAgbWV0aG9kIHRoYXQgY2FuXG4gICAgICAgKiBiZSB1c2VkIHRvIHVuc3Vic2NyaWJlIHRoZSBvYnNlcnZhYmxlIGZyb20gdGhlIHN0b3JlLCBhbmQgcHJldmVudCBmdXJ0aGVyXG4gICAgICAgKiBlbWlzc2lvbiBvZiB2YWx1ZXMgZnJvbSB0aGUgb2JzZXJ2YWJsZS5cbiAgICAgICAqL1xuICAgICAgc3Vic2NyaWJlOiBmdW5jdGlvbiBzdWJzY3JpYmUob2JzZXJ2ZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvYnNlcnZlciAhPT0gJ29iamVjdCcgfHwgb2JzZXJ2ZXIgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCB0aGUgb2JzZXJ2ZXIgdG8gYmUgYW4gb2JqZWN0LicpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gb2JzZXJ2ZVN0YXRlKCkge1xuICAgICAgICAgIGlmIChvYnNlcnZlci5uZXh0KSB7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KGdldFN0YXRlKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG9ic2VydmVTdGF0ZSgpO1xuICAgICAgICB2YXIgdW5zdWJzY3JpYmUgPSBvdXRlclN1YnNjcmliZShvYnNlcnZlU3RhdGUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHVuc3Vic2NyaWJlOiB1bnN1YnNjcmliZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sIF9yZWZbJCRvYnNlcnZhYmxlXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIF9yZWY7XG4gIH0gLy8gV2hlbiBhIHN0b3JlIGlzIGNyZWF0ZWQsIGFuIFwiSU5JVFwiIGFjdGlvbiBpcyBkaXNwYXRjaGVkIHNvIHRoYXQgZXZlcnlcbiAgLy8gcmVkdWNlciByZXR1cm5zIHRoZWlyIGluaXRpYWwgc3RhdGUuIFRoaXMgZWZmZWN0aXZlbHkgcG9wdWxhdGVzXG4gIC8vIHRoZSBpbml0aWFsIHN0YXRlIHRyZWUuXG5cblxuICBkaXNwYXRjaCh7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuSU5JVFxuICB9KTtcbiAgcmV0dXJuIF9yZWYyID0ge1xuICAgIGRpc3BhdGNoOiBkaXNwYXRjaCxcbiAgICBzdWJzY3JpYmU6IHN1YnNjcmliZSxcbiAgICBnZXRTdGF0ZTogZ2V0U3RhdGUsXG4gICAgcmVwbGFjZVJlZHVjZXI6IHJlcGxhY2VSZWR1Y2VyXG4gIH0sIF9yZWYyWyQkb2JzZXJ2YWJsZV0gPSBvYnNlcnZhYmxlLCBfcmVmMjtcbn1cblxuLyoqXG4gKiBQcmludHMgYSB3YXJuaW5nIGluIHRoZSBjb25zb2xlIGlmIGl0IGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBUaGUgd2FybmluZyBtZXNzYWdlLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHdhcm5pbmcobWVzc2FnZSkge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4gIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICB9XG4gIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqL1xuXG5cbiAgdHJ5IHtcbiAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IGlmIHlvdSBlbmFibGVcbiAgICAvLyBcImJyZWFrIG9uIGFsbCBleGNlcHRpb25zXCIgaW4geW91ciBjb25zb2xlLFxuICAgIC8vIGl0IHdvdWxkIHBhdXNlIHRoZSBleGVjdXRpb24gYXQgdGhpcyBsaW5lLlxuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfSBjYXRjaCAoZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuXG59XG5cbmZ1bmN0aW9uIGdldFVuZGVmaW5lZFN0YXRlRXJyb3JNZXNzYWdlKGtleSwgYWN0aW9uKSB7XG4gIHZhciBhY3Rpb25UeXBlID0gYWN0aW9uICYmIGFjdGlvbi50eXBlO1xuICB2YXIgYWN0aW9uRGVzY3JpcHRpb24gPSBhY3Rpb25UeXBlICYmIFwiYWN0aW9uIFxcXCJcIiArIFN0cmluZyhhY3Rpb25UeXBlKSArIFwiXFxcIlwiIHx8ICdhbiBhY3Rpb24nO1xuICByZXR1cm4gXCJHaXZlbiBcIiArIGFjdGlvbkRlc2NyaXB0aW9uICsgXCIsIHJlZHVjZXIgXFxcIlwiICsga2V5ICsgXCJcXFwiIHJldHVybmVkIHVuZGVmaW5lZC4gXCIgKyBcIlRvIGlnbm9yZSBhbiBhY3Rpb24sIHlvdSBtdXN0IGV4cGxpY2l0bHkgcmV0dXJuIHRoZSBwcmV2aW91cyBzdGF0ZS4gXCIgKyBcIklmIHlvdSB3YW50IHRoaXMgcmVkdWNlciB0byBob2xkIG5vIHZhbHVlLCB5b3UgY2FuIHJldHVybiBudWxsIGluc3RlYWQgb2YgdW5kZWZpbmVkLlwiO1xufVxuXG5mdW5jdGlvbiBnZXRVbmV4cGVjdGVkU3RhdGVTaGFwZVdhcm5pbmdNZXNzYWdlKGlucHV0U3RhdGUsIHJlZHVjZXJzLCBhY3Rpb24sIHVuZXhwZWN0ZWRLZXlDYWNoZSkge1xuICB2YXIgcmVkdWNlcktleXMgPSBPYmplY3Qua2V5cyhyZWR1Y2Vycyk7XG4gIHZhciBhcmd1bWVudE5hbWUgPSBhY3Rpb24gJiYgYWN0aW9uLnR5cGUgPT09IEFjdGlvblR5cGVzLklOSVQgPyAncHJlbG9hZGVkU3RhdGUgYXJndW1lbnQgcGFzc2VkIHRvIGNyZWF0ZVN0b3JlJyA6ICdwcmV2aW91cyBzdGF0ZSByZWNlaXZlZCBieSB0aGUgcmVkdWNlcic7XG5cbiAgaWYgKHJlZHVjZXJLZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnU3RvcmUgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIHJlZHVjZXIuIE1ha2Ugc3VyZSB0aGUgYXJndW1lbnQgcGFzc2VkICcgKyAndG8gY29tYmluZVJlZHVjZXJzIGlzIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIHJlZHVjZXJzLic7XG4gIH1cblxuICBpZiAoIWlzUGxhaW5PYmplY3QoaW5wdXRTdGF0ZSkpIHtcbiAgICByZXR1cm4gXCJUaGUgXCIgKyBhcmd1bWVudE5hbWUgKyBcIiBoYXMgdW5leHBlY3RlZCB0eXBlIG9mIFxcXCJcIiArIHt9LnRvU3RyaW5nLmNhbGwoaW5wdXRTdGF0ZSkubWF0Y2goL1xccyhbYS16fEEtWl0rKS8pWzFdICsgXCJcXFwiLiBFeHBlY3RlZCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIFwiICsgKFwia2V5czogXFxcIlwiICsgcmVkdWNlcktleXMuam9pbignXCIsIFwiJykgKyBcIlxcXCJcIik7XG4gIH1cblxuICB2YXIgdW5leHBlY3RlZEtleXMgPSBPYmplY3Qua2V5cyhpbnB1dFN0YXRlKS5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiAhcmVkdWNlcnMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhdW5leHBlY3RlZEtleUNhY2hlW2tleV07XG4gIH0pO1xuICB1bmV4cGVjdGVkS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB1bmV4cGVjdGVkS2V5Q2FjaGVba2V5XSA9IHRydWU7XG4gIH0pO1xuICBpZiAoYWN0aW9uICYmIGFjdGlvbi50eXBlID09PSBBY3Rpb25UeXBlcy5SRVBMQUNFKSByZXR1cm47XG5cbiAgaWYgKHVuZXhwZWN0ZWRLZXlzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gXCJVbmV4cGVjdGVkIFwiICsgKHVuZXhwZWN0ZWRLZXlzLmxlbmd0aCA+IDEgPyAna2V5cycgOiAna2V5JykgKyBcIiBcIiArIChcIlxcXCJcIiArIHVuZXhwZWN0ZWRLZXlzLmpvaW4oJ1wiLCBcIicpICsgXCJcXFwiIGZvdW5kIGluIFwiICsgYXJndW1lbnROYW1lICsgXCIuIFwiKSArIFwiRXhwZWN0ZWQgdG8gZmluZCBvbmUgb2YgdGhlIGtub3duIHJlZHVjZXIga2V5cyBpbnN0ZWFkOiBcIiArIChcIlxcXCJcIiArIHJlZHVjZXJLZXlzLmpvaW4oJ1wiLCBcIicpICsgXCJcXFwiLiBVbmV4cGVjdGVkIGtleXMgd2lsbCBiZSBpZ25vcmVkLlwiKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRSZWR1Y2VyU2hhcGUocmVkdWNlcnMpIHtcbiAgT2JqZWN0LmtleXMocmVkdWNlcnMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciByZWR1Y2VyID0gcmVkdWNlcnNba2V5XTtcbiAgICB2YXIgaW5pdGlhbFN0YXRlID0gcmVkdWNlcih1bmRlZmluZWQsIHtcbiAgICAgIHR5cGU6IEFjdGlvblR5cGVzLklOSVRcbiAgICB9KTtcblxuICAgIGlmICh0eXBlb2YgaW5pdGlhbFN0YXRlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVkdWNlciBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgcmV0dXJuZWQgdW5kZWZpbmVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4gXCIgKyBcIklmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlIHJlZHVjZXIgaXMgdW5kZWZpbmVkLCB5b3UgbXVzdCBcIiArIFwiZXhwbGljaXRseSByZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSBcIiArIFwibm90IGJlIHVuZGVmaW5lZC4gSWYgeW91IGRvbid0IHdhbnQgdG8gc2V0IGEgdmFsdWUgZm9yIHRoaXMgcmVkdWNlciwgXCIgKyBcInlvdSBjYW4gdXNlIG51bGwgaW5zdGVhZCBvZiB1bmRlZmluZWQuXCIpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcmVkdWNlcih1bmRlZmluZWQsIHtcbiAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlBST0JFX1VOS05PV05fQUNUSU9OKClcbiAgICB9KSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlZHVjZXIgXFxcIlwiICsga2V5ICsgXCJcXFwiIHJldHVybmVkIHVuZGVmaW5lZCB3aGVuIHByb2JlZCB3aXRoIGEgcmFuZG9tIHR5cGUuIFwiICsgKFwiRG9uJ3QgdHJ5IHRvIGhhbmRsZSBcIiArIEFjdGlvblR5cGVzLklOSVQgKyBcIiBvciBvdGhlciBhY3Rpb25zIGluIFxcXCJyZWR1eC8qXFxcIiBcIikgKyBcIm5hbWVzcGFjZS4gVGhleSBhcmUgY29uc2lkZXJlZCBwcml2YXRlLiBJbnN0ZWFkLCB5b3UgbXVzdCByZXR1cm4gdGhlIFwiICsgXCJjdXJyZW50IHN0YXRlIGZvciBhbnkgdW5rbm93biBhY3Rpb25zLCB1bmxlc3MgaXQgaXMgdW5kZWZpbmVkLCBcIiArIFwiaW4gd2hpY2ggY2FzZSB5b3UgbXVzdCByZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUsIHJlZ2FyZGxlc3Mgb2YgdGhlIFwiICsgXCJhY3Rpb24gdHlwZS4gVGhlIGluaXRpYWwgc3RhdGUgbWF5IG5vdCBiZSB1bmRlZmluZWQsIGJ1dCBjYW4gYmUgbnVsbC5cIik7XG4gICAgfVxuICB9KTtcbn1cbi8qKlxuICogVHVybnMgYW4gb2JqZWN0IHdob3NlIHZhbHVlcyBhcmUgZGlmZmVyZW50IHJlZHVjZXIgZnVuY3Rpb25zLCBpbnRvIGEgc2luZ2xlXG4gKiByZWR1Y2VyIGZ1bmN0aW9uLiBJdCB3aWxsIGNhbGwgZXZlcnkgY2hpbGQgcmVkdWNlciwgYW5kIGdhdGhlciB0aGVpciByZXN1bHRzXG4gKiBpbnRvIGEgc2luZ2xlIHN0YXRlIG9iamVjdCwgd2hvc2Uga2V5cyBjb3JyZXNwb25kIHRvIHRoZSBrZXlzIG9mIHRoZSBwYXNzZWRcbiAqIHJlZHVjZXIgZnVuY3Rpb25zLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSByZWR1Y2VycyBBbiBvYmplY3Qgd2hvc2UgdmFsdWVzIGNvcnJlc3BvbmQgdG8gZGlmZmVyZW50XG4gKiByZWR1Y2VyIGZ1bmN0aW9ucyB0aGF0IG5lZWQgdG8gYmUgY29tYmluZWQgaW50byBvbmUuIE9uZSBoYW5keSB3YXkgdG8gb2J0YWluXG4gKiBpdCBpcyB0byB1c2UgRVM2IGBpbXBvcnQgKiBhcyByZWR1Y2Vyc2Agc3ludGF4LiBUaGUgcmVkdWNlcnMgbWF5IG5ldmVyIHJldHVyblxuICogdW5kZWZpbmVkIGZvciBhbnkgYWN0aW9uLiBJbnN0ZWFkLCB0aGV5IHNob3VsZCByZXR1cm4gdGhlaXIgaW5pdGlhbCBzdGF0ZVxuICogaWYgdGhlIHN0YXRlIHBhc3NlZCB0byB0aGVtIHdhcyB1bmRlZmluZWQsIGFuZCB0aGUgY3VycmVudCBzdGF0ZSBmb3IgYW55XG4gKiB1bnJlY29nbml6ZWQgYWN0aW9uLlxuICpcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSByZWR1Y2VyIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBldmVyeSByZWR1Y2VyIGluc2lkZSB0aGVcbiAqIHBhc3NlZCBvYmplY3QsIGFuZCBidWlsZHMgYSBzdGF0ZSBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzaGFwZS5cbiAqL1xuXG5cbmZ1bmN0aW9uIGNvbWJpbmVSZWR1Y2VycyhyZWR1Y2Vycykge1xuICB2YXIgcmVkdWNlcktleXMgPSBPYmplY3Qua2V5cyhyZWR1Y2Vycyk7XG4gIHZhciBmaW5hbFJlZHVjZXJzID0ge307XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWR1Y2VyS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSByZWR1Y2VyS2V5c1tpXTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAodHlwZW9mIHJlZHVjZXJzW2tleV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHdhcm5pbmcoXCJObyByZWR1Y2VyIHByb3ZpZGVkIGZvciBrZXkgXFxcIlwiICsga2V5ICsgXCJcXFwiXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcmVkdWNlcnNba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZmluYWxSZWR1Y2Vyc1trZXldID0gcmVkdWNlcnNba2V5XTtcbiAgICB9XG4gIH1cblxuICB2YXIgZmluYWxSZWR1Y2VyS2V5cyA9IE9iamVjdC5rZXlzKGZpbmFsUmVkdWNlcnMpOyAvLyBUaGlzIGlzIHVzZWQgdG8gbWFrZSBzdXJlIHdlIGRvbid0IHdhcm4gYWJvdXQgdGhlIHNhbWVcbiAgLy8ga2V5cyBtdWx0aXBsZSB0aW1lcy5cblxuICB2YXIgdW5leHBlY3RlZEtleUNhY2hlO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdW5leHBlY3RlZEtleUNhY2hlID0ge307XG4gIH1cblxuICB2YXIgc2hhcGVBc3NlcnRpb25FcnJvcjtcblxuICB0cnkge1xuICAgIGFzc2VydFJlZHVjZXJTaGFwZShmaW5hbFJlZHVjZXJzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHNoYXBlQXNzZXJ0aW9uRXJyb3IgPSBlO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbWJpbmF0aW9uKHN0YXRlLCBhY3Rpb24pIHtcbiAgICBpZiAoc3RhdGUgPT09IHZvaWQgMCkge1xuICAgICAgc3RhdGUgPSB7fTtcbiAgICB9XG5cbiAgICBpZiAoc2hhcGVBc3NlcnRpb25FcnJvcikge1xuICAgICAgdGhyb3cgc2hhcGVBc3NlcnRpb25FcnJvcjtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIHdhcm5pbmdNZXNzYWdlID0gZ2V0VW5leHBlY3RlZFN0YXRlU2hhcGVXYXJuaW5nTWVzc2FnZShzdGF0ZSwgZmluYWxSZWR1Y2VycywgYWN0aW9uLCB1bmV4cGVjdGVkS2V5Q2FjaGUpO1xuXG4gICAgICBpZiAod2FybmluZ01lc3NhZ2UpIHtcbiAgICAgICAgd2FybmluZyh3YXJuaW5nTWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGhhc0NoYW5nZWQgPSBmYWxzZTtcbiAgICB2YXIgbmV4dFN0YXRlID0ge307XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgZmluYWxSZWR1Y2VyS2V5cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfa2V5ID0gZmluYWxSZWR1Y2VyS2V5c1tfaV07XG4gICAgICB2YXIgcmVkdWNlciA9IGZpbmFsUmVkdWNlcnNbX2tleV07XG4gICAgICB2YXIgcHJldmlvdXNTdGF0ZUZvcktleSA9IHN0YXRlW19rZXldO1xuICAgICAgdmFyIG5leHRTdGF0ZUZvcktleSA9IHJlZHVjZXIocHJldmlvdXNTdGF0ZUZvcktleSwgYWN0aW9uKTtcblxuICAgICAgaWYgKHR5cGVvZiBuZXh0U3RhdGVGb3JLZXkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHZhciBlcnJvck1lc3NhZ2UgPSBnZXRVbmRlZmluZWRTdGF0ZUVycm9yTWVzc2FnZShfa2V5LCBhY3Rpb24pO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICAgIH1cblxuICAgICAgbmV4dFN0YXRlW19rZXldID0gbmV4dFN0YXRlRm9yS2V5O1xuICAgICAgaGFzQ2hhbmdlZCA9IGhhc0NoYW5nZWQgfHwgbmV4dFN0YXRlRm9yS2V5ICE9PSBwcmV2aW91c1N0YXRlRm9yS2V5O1xuICAgIH1cblxuICAgIGhhc0NoYW5nZWQgPSBoYXNDaGFuZ2VkIHx8IGZpbmFsUmVkdWNlcktleXMubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhzdGF0ZSkubGVuZ3RoO1xuICAgIHJldHVybiBoYXNDaGFuZ2VkID8gbmV4dFN0YXRlIDogc3RhdGU7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3IsIGRpc3BhdGNoKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoKGFjdGlvbkNyZWF0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gIH07XG59XG4vKipcbiAqIFR1cm5zIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIGFjdGlvbiBjcmVhdG9ycywgaW50byBhbiBvYmplY3Qgd2l0aCB0aGVcbiAqIHNhbWUga2V5cywgYnV0IHdpdGggZXZlcnkgZnVuY3Rpb24gd3JhcHBlZCBpbnRvIGEgYGRpc3BhdGNoYCBjYWxsIHNvIHRoZXlcbiAqIG1heSBiZSBpbnZva2VkIGRpcmVjdGx5LiBUaGlzIGlzIGp1c3QgYSBjb252ZW5pZW5jZSBtZXRob2QsIGFzIHlvdSBjYW4gY2FsbFxuICogYHN0b3JlLmRpc3BhdGNoKE15QWN0aW9uQ3JlYXRvcnMuZG9Tb21ldGhpbmcoKSlgIHlvdXJzZWxmIGp1c3QgZmluZS5cbiAqXG4gKiBGb3IgY29udmVuaWVuY2UsIHlvdSBjYW4gYWxzbyBwYXNzIGFuIGFjdGlvbiBjcmVhdG9yIGFzIHRoZSBmaXJzdCBhcmd1bWVudCxcbiAqIGFuZCBnZXQgYSBkaXNwYXRjaCB3cmFwcGVkIGZ1bmN0aW9uIGluIHJldHVybi5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufE9iamVjdH0gYWN0aW9uQ3JlYXRvcnMgQW4gb2JqZWN0IHdob3NlIHZhbHVlcyBhcmUgYWN0aW9uXG4gKiBjcmVhdG9yIGZ1bmN0aW9ucy4gT25lIGhhbmR5IHdheSB0byBvYnRhaW4gaXQgaXMgdG8gdXNlIEVTNiBgaW1wb3J0ICogYXNgXG4gKiBzeW50YXguIFlvdSBtYXkgYWxzbyBwYXNzIGEgc2luZ2xlIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGRpc3BhdGNoIFRoZSBgZGlzcGF0Y2hgIGZ1bmN0aW9uIGF2YWlsYWJsZSBvbiB5b3VyIFJlZHV4XG4gKiBzdG9yZS5cbiAqXG4gKiBAcmV0dXJucyB7RnVuY3Rpb258T2JqZWN0fSBUaGUgb2JqZWN0IG1pbWlja2luZyB0aGUgb3JpZ2luYWwgb2JqZWN0LCBidXQgd2l0aFxuICogZXZlcnkgYWN0aW9uIGNyZWF0b3Igd3JhcHBlZCBpbnRvIHRoZSBgZGlzcGF0Y2hgIGNhbGwuIElmIHlvdSBwYXNzZWQgYVxuICogZnVuY3Rpb24gYXMgYGFjdGlvbkNyZWF0b3JzYCwgdGhlIHJldHVybiB2YWx1ZSB3aWxsIGFsc28gYmUgYSBzaW5nbGVcbiAqIGZ1bmN0aW9uLlxuICovXG5cblxuZnVuY3Rpb24gYmluZEFjdGlvbkNyZWF0b3JzKGFjdGlvbkNyZWF0b3JzLCBkaXNwYXRjaCkge1xuICBpZiAodHlwZW9mIGFjdGlvbkNyZWF0b3JzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3JzLCBkaXNwYXRjaCk7XG4gIH1cblxuICBpZiAodHlwZW9mIGFjdGlvbkNyZWF0b3JzICE9PSAnb2JqZWN0JyB8fCBhY3Rpb25DcmVhdG9ycyA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImJpbmRBY3Rpb25DcmVhdG9ycyBleHBlY3RlZCBhbiBvYmplY3Qgb3IgYSBmdW5jdGlvbiwgaW5zdGVhZCByZWNlaXZlZCBcIiArIChhY3Rpb25DcmVhdG9ycyA9PT0gbnVsbCA/ICdudWxsJyA6IHR5cGVvZiBhY3Rpb25DcmVhdG9ycykgKyBcIi4gXCIgKyBcIkRpZCB5b3Ugd3JpdGUgXFxcImltcG9ydCBBY3Rpb25DcmVhdG9ycyBmcm9tXFxcIiBpbnN0ZWFkIG9mIFxcXCJpbXBvcnQgKiBhcyBBY3Rpb25DcmVhdG9ycyBmcm9tXFxcIj9cIik7XG4gIH1cblxuICB2YXIgYm91bmRBY3Rpb25DcmVhdG9ycyA9IHt9O1xuXG4gIGZvciAodmFyIGtleSBpbiBhY3Rpb25DcmVhdG9ycykge1xuICAgIHZhciBhY3Rpb25DcmVhdG9yID0gYWN0aW9uQ3JlYXRvcnNba2V5XTtcblxuICAgIGlmICh0eXBlb2YgYWN0aW9uQ3JlYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYm91bmRBY3Rpb25DcmVhdG9yc1trZXldID0gYmluZEFjdGlvbkNyZWF0b3IoYWN0aW9uQ3JlYXRvciwgZGlzcGF0Y2gpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBib3VuZEFjdGlvbkNyZWF0b3JzO1xufVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcblxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIGtleXMucHVzaC5hcHBseShrZXlzLCBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkpO1xuICB9XG5cbiAgaWYgKGVudW1lcmFibGVPbmx5KSBrZXlzID0ga2V5cy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlO1xuICB9KTtcbiAgcmV0dXJuIGtleXM7XG59XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQyKHRhcmdldCkge1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9O1xuXG4gICAgaWYgKGkgJSAyKSB7XG4gICAgICBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbi8qKlxuICogQ29tcG9zZXMgc2luZ2xlLWFyZ3VtZW50IGZ1bmN0aW9ucyBmcm9tIHJpZ2h0IHRvIGxlZnQuIFRoZSByaWdodG1vc3RcbiAqIGZ1bmN0aW9uIGNhbiB0YWtlIG11bHRpcGxlIGFyZ3VtZW50cyBhcyBpdCBwcm92aWRlcyB0aGUgc2lnbmF0dXJlIGZvclxuICogdGhlIHJlc3VsdGluZyBjb21wb3NpdGUgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHsuLi5GdW5jdGlvbn0gZnVuY3MgVGhlIGZ1bmN0aW9ucyB0byBjb21wb3NlLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBBIGZ1bmN0aW9uIG9idGFpbmVkIGJ5IGNvbXBvc2luZyB0aGUgYXJndW1lbnQgZnVuY3Rpb25zXG4gKiBmcm9tIHJpZ2h0IHRvIGxlZnQuIEZvciBleGFtcGxlLCBjb21wb3NlKGYsIGcsIGgpIGlzIGlkZW50aWNhbCB0byBkb2luZ1xuICogKC4uLmFyZ3MpID0+IGYoZyhoKC4uLmFyZ3MpKSkuXG4gKi9cbmZ1bmN0aW9uIGNvbXBvc2UoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBmdW5jcyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBmdW5jc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIGlmIChmdW5jcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgICAgcmV0dXJuIGFyZztcbiAgICB9O1xuICB9XG5cbiAgaWYgKGZ1bmNzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBmdW5jc1swXTtcbiAgfVxuXG4gIHJldHVybiBmdW5jcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGEoYi5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cykpO1xuICAgIH07XG4gIH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzdG9yZSBlbmhhbmNlciB0aGF0IGFwcGxpZXMgbWlkZGxld2FyZSB0byB0aGUgZGlzcGF0Y2ggbWV0aG9kXG4gKiBvZiB0aGUgUmVkdXggc3RvcmUuIFRoaXMgaXMgaGFuZHkgZm9yIGEgdmFyaWV0eSBvZiB0YXNrcywgc3VjaCBhcyBleHByZXNzaW5nXG4gKiBhc3luY2hyb25vdXMgYWN0aW9ucyBpbiBhIGNvbmNpc2UgbWFubmVyLCBvciBsb2dnaW5nIGV2ZXJ5IGFjdGlvbiBwYXlsb2FkLlxuICpcbiAqIFNlZSBgcmVkdXgtdGh1bmtgIHBhY2thZ2UgYXMgYW4gZXhhbXBsZSBvZiB0aGUgUmVkdXggbWlkZGxld2FyZS5cbiAqXG4gKiBCZWNhdXNlIG1pZGRsZXdhcmUgaXMgcG90ZW50aWFsbHkgYXN5bmNocm9ub3VzLCB0aGlzIHNob3VsZCBiZSB0aGUgZmlyc3RcbiAqIHN0b3JlIGVuaGFuY2VyIGluIHRoZSBjb21wb3NpdGlvbiBjaGFpbi5cbiAqXG4gKiBOb3RlIHRoYXQgZWFjaCBtaWRkbGV3YXJlIHdpbGwgYmUgZ2l2ZW4gdGhlIGBkaXNwYXRjaGAgYW5kIGBnZXRTdGF0ZWAgZnVuY3Rpb25zXG4gKiBhcyBuYW1lZCBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIHsuLi5GdW5jdGlvbn0gbWlkZGxld2FyZXMgVGhlIG1pZGRsZXdhcmUgY2hhaW4gdG8gYmUgYXBwbGllZC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBzdG9yZSBlbmhhbmNlciBhcHBseWluZyB0aGUgbWlkZGxld2FyZS5cbiAqL1xuXG5mdW5jdGlvbiBhcHBseU1pZGRsZXdhcmUoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBtaWRkbGV3YXJlcyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBtaWRkbGV3YXJlc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoY3JlYXRlU3RvcmUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHN0b3JlID0gY3JlYXRlU3RvcmUuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuXG4gICAgICB2YXIgX2Rpc3BhdGNoID0gZnVuY3Rpb24gZGlzcGF0Y2goKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGlzcGF0Y2hpbmcgd2hpbGUgY29uc3RydWN0aW5nIHlvdXIgbWlkZGxld2FyZSBpcyBub3QgYWxsb3dlZC4gJyArICdPdGhlciBtaWRkbGV3YXJlIHdvdWxkIG5vdCBiZSBhcHBsaWVkIHRvIHRoaXMgZGlzcGF0Y2guJyk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgbWlkZGxld2FyZUFQSSA9IHtcbiAgICAgICAgZ2V0U3RhdGU6IHN0b3JlLmdldFN0YXRlLFxuICAgICAgICBkaXNwYXRjaDogZnVuY3Rpb24gZGlzcGF0Y2goKSB7XG4gICAgICAgICAgcmV0dXJuIF9kaXNwYXRjaC5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB2YXIgY2hhaW4gPSBtaWRkbGV3YXJlcy5tYXAoZnVuY3Rpb24gKG1pZGRsZXdhcmUpIHtcbiAgICAgICAgcmV0dXJuIG1pZGRsZXdhcmUobWlkZGxld2FyZUFQSSk7XG4gICAgICB9KTtcbiAgICAgIF9kaXNwYXRjaCA9IGNvbXBvc2UuYXBwbHkodm9pZCAwLCBjaGFpbikoc3RvcmUuZGlzcGF0Y2gpO1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQyKHt9LCBzdG9yZSwge1xuICAgICAgICBkaXNwYXRjaDogX2Rpc3BhdGNoXG4gICAgICB9KTtcbiAgICB9O1xuICB9O1xufVxuXG4vKlxuICogVGhpcyBpcyBhIGR1bW15IGZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSBmdW5jdGlvbiBuYW1lIGhhcyBiZWVuIGFsdGVyZWQgYnkgbWluaWZpY2F0aW9uLlxuICogSWYgdGhlIGZ1bmN0aW9uIGhhcyBiZWVuIG1pbmlmaWVkIGFuZCBOT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLCB3YXJuIHRoZSB1c2VyLlxuICovXG5cbmZ1bmN0aW9uIGlzQ3J1c2hlZCgpIHt9XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHR5cGVvZiBpc0NydXNoZWQubmFtZSA9PT0gJ3N0cmluZycgJiYgaXNDcnVzaGVkLm5hbWUgIT09ICdpc0NydXNoZWQnKSB7XG4gIHdhcm5pbmcoJ1lvdSBhcmUgY3VycmVudGx5IHVzaW5nIG1pbmlmaWVkIGNvZGUgb3V0c2lkZSBvZiBOT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIuICcgKyAnVGhpcyBtZWFucyB0aGF0IHlvdSBhcmUgcnVubmluZyBhIHNsb3dlciBkZXZlbG9wbWVudCBidWlsZCBvZiBSZWR1eC4gJyArICdZb3UgY2FuIHVzZSBsb29zZS1lbnZpZnkgKGh0dHBzOi8vZ2l0aHViLmNvbS96ZXJ0b3NoL2xvb3NlLWVudmlmeSkgZm9yIGJyb3dzZXJpZnkgJyArICdvciBzZXR0aW5nIG1vZGUgdG8gcHJvZHVjdGlvbiBpbiB3ZWJwYWNrIChodHRwczovL3dlYnBhY2suanMub3JnL2NvbmNlcHRzL21vZGUvKSAnICsgJ3RvIGVuc3VyZSB5b3UgaGF2ZSB0aGUgY29ycmVjdCBjb2RlIGZvciB5b3VyIHByb2R1Y3Rpb24gYnVpbGQuJyk7XG59XG5cbmV4cG9ydCB7IEFjdGlvblR5cGVzIGFzIF9fRE9fTk9UX1VTRV9fQWN0aW9uVHlwZXMsIGFwcGx5TWlkZGxld2FyZSwgYmluZEFjdGlvbkNyZWF0b3JzLCBjb21iaW5lUmVkdWNlcnMsIGNvbXBvc2UsIGNyZWF0ZVN0b3JlIH07XG4iLCJmdW5jdGlvbiBjcmVhdGVUaHVua01pZGRsZXdhcmUoZXh0cmFBcmd1bWVudCkge1xuICByZXR1cm4gZnVuY3Rpb24gKF9yZWYpIHtcbiAgICB2YXIgZGlzcGF0Y2ggPSBfcmVmLmRpc3BhdGNoLFxuICAgICAgICBnZXRTdGF0ZSA9IF9yZWYuZ2V0U3RhdGU7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChuZXh0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGFjdGlvbikge1xuICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiBhY3Rpb24oZGlzcGF0Y2gsIGdldFN0YXRlLCBleHRyYUFyZ3VtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGFjdGlvbik7XG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG5cbnZhciB0aHVuayA9IGNyZWF0ZVRodW5rTWlkZGxld2FyZSgpO1xudGh1bmsud2l0aEV4dHJhQXJndW1lbnQgPSBjcmVhdGVUaHVua01pZGRsZXdhcmU7XG5cbmV4cG9ydCBkZWZhdWx0IHRodW5rOyIsIi8qIVxuICogaXMtcGxhaW4tb2JqZWN0IDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9pcy1wbGFpbi1vYmplY3Q+XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LTIwMTcsIEpvbiBTY2hsaW5rZXJ0LlxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cbmltcG9ydCBpc09iamVjdCBmcm9tICdpc29iamVjdCc7XG5cbmZ1bmN0aW9uIGlzT2JqZWN0T2JqZWN0KG8pIHtcbiAgcmV0dXJuIGlzT2JqZWN0KG8pID09PSB0cnVlXG4gICAgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pID09PSAnW29iamVjdCBPYmplY3RdJztcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvKSB7XG4gIHZhciBjdG9yLHByb3Q7XG5cbiAgaWYgKGlzT2JqZWN0T2JqZWN0KG8pID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIElmIGhhcyBtb2RpZmllZCBjb25zdHJ1Y3RvclxuICBjdG9yID0gby5jb25zdHJ1Y3RvcjtcbiAgaWYgKHR5cGVvZiBjdG9yICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gZmFsc2U7XG5cbiAgLy8gSWYgaGFzIG1vZGlmaWVkIHByb3RvdHlwZVxuICBwcm90ID0gY3Rvci5wcm90b3R5cGU7XG4gIGlmIChpc09iamVjdE9iamVjdChwcm90KSA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcblxuICAvLyBJZiBjb25zdHJ1Y3RvciBkb2VzIG5vdCBoYXZlIGFuIE9iamVjdC1zcGVjaWZpYyBtZXRob2RcbiAgaWYgKHByb3QuaGFzT3duUHJvcGVydHkoJ2lzUHJvdG90eXBlT2YnKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBNb3N0IGxpa2VseSBhIHBsYWluIE9iamVjdFxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCIvKiFcbiAqIGlzb2JqZWN0IDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9pc29iamVjdD5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNywgSm9uIFNjaGxpbmtlcnQuXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNPYmplY3QodmFsKSB7XG4gIHJldHVybiB2YWwgIT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiBBcnJheS5pc0FycmF5KHZhbCkgPT09IGZhbHNlO1xufTtcbiIsImltcG9ydCB7IGlzRHJhZnQsIG9yaWdpbmFsLCBjcmVhdGVEcmFmdCwgZmluaXNoRHJhZnQsIHNldEF1dG9GcmVlemUgfSBmcm9tICdpbW1lci1wZWFzeSc7XG5pbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlUmVmLCB1c2VSZWR1Y2VyLCB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjb21wb3NlLCBjcmVhdGVTdG9yZSBhcyBjcmVhdGVTdG9yZSQxLCBhcHBseU1pZGRsZXdhcmUgfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgcmVkdXhUaHVuayBmcm9tICdyZWR1eC10aHVuayc7XG5pbXBvcnQgbWVtb2l6ZXJpZmljIGZyb20gJ21lbW9pemVyaWZpYyc7XG5pbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICdpcy1wbGFpbi1vYmplY3QnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2RlYm91bmNlJztcblxudmFyIFN0b3JlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcblxuLy8gVG8gZ2V0IGFyb3VuZCBpdCwgd2UgY2FuIGNvbmRpdGlvbmFsbHkgdXNlRWZmZWN0IG9uIHRoZSBzZXJ2ZXIgKG5vLW9wKSBhbmRcbi8vIHVzZUxheW91dEVmZmVjdCBpbiB0aGUgYnJvd3Nlci4gV2UgbmVlZCB1c2VMYXlvdXRFZmZlY3QgdG8gZW5zdXJlIHRoZSBzdG9yZVxuLy8gc3Vic2NyaXB0aW9uIGNhbGxiYWNrIGFsd2F5cyBoYXMgdGhlIHNlbGVjdG9yIGZyb20gdGhlIGxhdGVzdCByZW5kZXIgY29tbWl0XG4vLyBhdmFpbGFibGUsIG90aGVyd2lzZSBhIHN0b3JlIHVwZGF0ZSBtYXkgaGFwcGVuIGJldHdlZW4gcmVuZGVyIGFuZCB0aGUgZWZmZWN0LFxuLy8gd2hpY2ggbWF5IGNhdXNlIG1pc3NlZCB1cGRhdGVzOyB3ZSBhbHNvIG11c3QgZW5zdXJlIHRoZSBzdG9yZSBzdWJzY3JpcHRpb25cbi8vIGlzIGNyZWF0ZWQgc3luY2hyb25vdXNseSwgb3RoZXJ3aXNlIGEgc3RvcmUgdXBkYXRlIG1heSBvY2N1ciBiZWZvcmUgdGhlXG4vLyBzdWJzY3JpcHRpb24gaXMgY3JlYXRlZCBhbmQgYW4gaW5jb25zaXN0ZW50IHN0YXRlIG1heSBiZSBvYnNlcnZlZFxuXG52YXIgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gdXNlTGF5b3V0RWZmZWN0IDogdXNlRWZmZWN0O1xuZnVuY3Rpb24gY3JlYXRlU3RvcmVTdGF0ZUhvb2soQ29udGV4dCkge1xuICByZXR1cm4gZnVuY3Rpb24gdXNlU3RvcmVTdGF0ZShtYXBTdGF0ZSwgZXF1YWxpdHlGbikge1xuICAgIHZhciBzdG9yZSA9IHVzZUNvbnRleHQoQ29udGV4dCk7XG4gICAgdmFyIG1hcFN0YXRlUmVmID0gdXNlUmVmKG1hcFN0YXRlKTtcbiAgICB2YXIgc3RhdGVSZWYgPSB1c2VSZWYoKTtcbiAgICB2YXIgbW91bnRlZFJlZiA9IHVzZVJlZih0cnVlKTtcbiAgICB2YXIgc3Vic2NyaXB0aW9uTWFwU3RhdGVFcnJvciA9IHVzZVJlZigpO1xuXG4gICAgdmFyIF91c2VSZWR1Y2VyID0gdXNlUmVkdWNlcihmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIHMgKyAxO1xuICAgIH0sIDApLFxuICAgICAgICBmb3JjZVJlbmRlciA9IF91c2VSZWR1Y2VyWzFdO1xuXG4gICAgaWYgKHN1YnNjcmlwdGlvbk1hcFN0YXRlRXJyb3IuY3VycmVudCB8fCBtYXBTdGF0ZVJlZi5jdXJyZW50ICE9PSBtYXBTdGF0ZSB8fCBzdGF0ZVJlZi5jdXJyZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0YXRlUmVmLmN1cnJlbnQgPSBtYXBTdGF0ZShzdG9yZS5nZXRTdGF0ZSgpKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICB2YXIgZXJyb3JNZXNzYWdlID0gXCJBbiBlcnJvciBvY2N1cnJlZCB0cnlpbmcgdG8gbWFwIHN0YXRlIGluIGEgdXNlU3RvcmVTdGF0ZSBob29rOiBcIiArIGVyci5tZXNzYWdlICsgXCIuXCI7XG5cbiAgICAgICAgICBpZiAoc3Vic2NyaXB0aW9uTWFwU3RhdGVFcnJvci5jdXJyZW50KSB7XG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UgKz0gXCJcXG5UaGlzIGVycm9yIG1heSBiZSByZWxhdGVkIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3I6XFxuXCIgKyBzdWJzY3JpcHRpb25NYXBTdGF0ZUVycm9yLmN1cnJlbnQuc3RhY2sgKyBcIlxcblxcbk9yaWdpbmFsIHN0YWNrIHRyYWNlOlwiO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgc3Vic2NyaXB0aW9uTWFwU3RhdGVFcnJvci5jdXJyZW50IHx8IGVycjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgIG1hcFN0YXRlUmVmLmN1cnJlbnQgPSBtYXBTdGF0ZTtcbiAgICAgIHN1YnNjcmlwdGlvbk1hcFN0YXRlRXJyb3IuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBjaGVja01hcFN0YXRlID0gZnVuY3Rpb24gY2hlY2tNYXBTdGF0ZSgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB2YXIgbmV3U3RhdGUgPSBtYXBTdGF0ZVJlZi5jdXJyZW50KHN0b3JlLmdldFN0YXRlKCkpO1xuICAgICAgICAgIHZhciBpc1N0YXRlRXF1YWwgPSB0eXBlb2YgZXF1YWxpdHlGbiA9PT0gJ2Z1bmN0aW9uJyA/IGVxdWFsaXR5Rm4oc3RhdGVSZWYuY3VycmVudCwgbmV3U3RhdGUpIDogc3RhdGVSZWYuY3VycmVudCA9PT0gbmV3U3RhdGU7XG5cbiAgICAgICAgICBpZiAoaXNTdGF0ZUVxdWFsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3RhdGVSZWYuY3VycmVudCA9IG5ld1N0YXRlO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZHV4anMvcmVhY3QtcmVkdXgvaXNzdWVzLzExNzlcbiAgICAgICAgICAvLyBUaGVyZSBpcyBhIHBvc3NpYmlsaXR5IG1hcFN0YXRlIHdpbGwgZmFpbCBkdWUgdG8gc3RhbGUgc3RhdGUgb3JcbiAgICAgICAgICAvLyBwcm9wcywgdGhlcmVmb3JlIHdlIHdpbGwganVzdCB0cmFjayB0aGUgZXJyb3IgYW5kIGZvcmNlIG91clxuICAgICAgICAgIC8vIGNvbXBvbmVudCB0byB1cGRhdGUuIEl0IHNob3VsZCB0aGVuIHJlY2VpdmUgdGhlIHVwZGF0ZWQgc3RhdGVcbiAgICAgICAgICBzdWJzY3JpcHRpb25NYXBTdGF0ZUVycm9yLmN1cnJlbnQgPSBlcnI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW91bnRlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgZm9yY2VSZW5kZXIoe30pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB2YXIgdW5zdWJzY3JpYmUgPSBzdG9yZS5zdWJzY3JpYmUoY2hlY2tNYXBTdGF0ZSk7XG4gICAgICBjaGVja01hcFN0YXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICBtb3VudGVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgIH07XG4gICAgfSwgW10pO1xuICAgIHJldHVybiBzdGF0ZVJlZi5jdXJyZW50O1xuICB9O1xufVxudmFyIHVzZVN0b3JlU3RhdGUgPSBjcmVhdGVTdG9yZVN0YXRlSG9vayhTdG9yZUNvbnRleHQpO1xuZnVuY3Rpb24gY3JlYXRlU3RvcmVBY3Rpb25zSG9vayhDb250ZXh0KSB7XG4gIHJldHVybiBmdW5jdGlvbiB1c2VTdG9yZUFjdGlvbnMobWFwQWN0aW9ucykge1xuICAgIHZhciBzdG9yZSA9IHVzZUNvbnRleHQoQ29udGV4dCk7XG4gICAgcmV0dXJuIG1hcEFjdGlvbnMoc3RvcmUuZ2V0QWN0aW9ucygpKTtcbiAgfTtcbn1cbnZhciB1c2VTdG9yZUFjdGlvbnMgPSBjcmVhdGVTdG9yZUFjdGlvbnNIb29rKFN0b3JlQ29udGV4dCk7XG5mdW5jdGlvbiBjcmVhdGVTdG9yZURpc3BhdGNoSG9vayhDb250ZXh0KSB7XG4gIHJldHVybiBmdW5jdGlvbiB1c2VTdG9yZURpc3BhdGNoKCkge1xuICAgIHZhciBzdG9yZSA9IHVzZUNvbnRleHQoQ29udGV4dCk7XG4gICAgcmV0dXJuIHN0b3JlLmRpc3BhdGNoO1xuICB9O1xufVxudmFyIHVzZVN0b3JlRGlzcGF0Y2ggPSBjcmVhdGVTdG9yZURpc3BhdGNoSG9vayhTdG9yZUNvbnRleHQpO1xuZnVuY3Rpb24gdXNlU3RvcmUoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KFN0b3JlQ29udGV4dCk7XG59XG5mdW5jdGlvbiBjcmVhdGVTdG9yZVJlaHlkcmF0ZWRIb29rKENvbnRleHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVzZVN0b3JlUmVoeWRyYXRlZCgpIHtcbiAgICB2YXIgc3RvcmUgPSB1c2VDb250ZXh0KENvbnRleHQpO1xuXG4gICAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKGZhbHNlKSxcbiAgICAgICAgcmVoeWRyYXRlZCA9IF91c2VTdGF0ZVswXSxcbiAgICAgICAgc2V0UmVoeWRyYXRlZCA9IF91c2VTdGF0ZVsxXTtcblxuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICBzdG9yZS5wZXJzaXN0LnJlc29sdmVSZWh5ZHJhdGlvbigpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gc2V0UmVoeWRyYXRlZCh0cnVlKTtcbiAgICAgIH0pO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gcmVoeWRyYXRlZDtcbiAgfTtcbn1cbnZhciB1c2VTdG9yZVJlaHlkcmF0ZWQgPSBjcmVhdGVTdG9yZVJlaHlkcmF0ZWRIb29rKFN0b3JlQ29udGV4dCk7XG5mdW5jdGlvbiBjcmVhdGVUeXBlZEhvb2tzKCkge1xuICByZXR1cm4ge1xuICAgIHVzZVN0b3JlQWN0aW9uczogdXNlU3RvcmVBY3Rpb25zLFxuICAgIHVzZVN0b3JlRGlzcGF0Y2g6IHVzZVN0b3JlRGlzcGF0Y2gsXG4gICAgdXNlU3RvcmVTdGF0ZTogdXNlU3RvcmVTdGF0ZSxcbiAgICB1c2VTdG9yZVJlaHlkcmF0ZWQ6IHVzZVN0b3JlUmVoeWRyYXRlZCxcbiAgICB1c2VTdG9yZTogdXNlU3RvcmVcbiAgfTtcbn1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcblxuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxudmFyIGFjdGlvblN5bWJvbCA9ICdhJztcbnZhciBhY3Rpb25PblN5bWJvbCA9ICdhTyc7XG52YXIgY29tcHV0ZWRTeW1ib2wgPSAnYyc7XG52YXIgcGVyc2lzdFN5bWJvbCA9ICdwJztcbnZhciByZWR1Y2VyU3ltYm9sID0gJ3InO1xudmFyIHRodW5rT25TeW1ib2wgPSAndE8nO1xudmFyIHRodW5rU3ltYm9sID0gJ3QnO1xuXG52YXIgZGVidWcgPSBmdW5jdGlvbiBkZWJ1ZyhzdGF0ZSkge1xuICBpZiAoaXNEcmFmdChzdGF0ZSkpIHtcbiAgICByZXR1cm4gb3JpZ2luYWwoc3RhdGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufTtcbnZhciBtZW1vID0gZnVuY3Rpb24gbWVtbyhmbiwgY2FjaGVTaXplKSB7XG4gIHJldHVybiBtZW1vaXplcmlmaWMoY2FjaGVTaXplKShmbik7XG59O1xudmFyIGFjdGlvbk9uID0gZnVuY3Rpb24gYWN0aW9uT24odGFyZ2V0UmVzb2x2ZXIsIGZuKSB7XG4gIGZuW2FjdGlvbk9uU3ltYm9sXSA9IHtcbiAgICB0YXJnZXRSZXNvbHZlcjogdGFyZ2V0UmVzb2x2ZXJcbiAgfTtcbiAgcmV0dXJuIGZuO1xufTtcbnZhciBhY3Rpb24gPSBmdW5jdGlvbiBhY3Rpb24oZm4pIHtcbiAgZm5bYWN0aW9uU3ltYm9sXSA9IHt9O1xuICByZXR1cm4gZm47XG59O1xudmFyIGRlZmF1bHRTdGF0ZVJlc29sdmVycyA9IFtmdW5jdGlvbiAoc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlO1xufV07XG52YXIgY29tcHV0ZWQgPSBmdW5jdGlvbiBjb21wdXRlZChmbk9yU3RhdGVSZXNvbHZlcnMsIGZuKSB7XG4gIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICBmbltjb21wdXRlZFN5bWJvbF0gPSB7XG4gICAgICBzdGF0ZVJlc29sdmVyczogZm5PclN0YXRlUmVzb2x2ZXJzXG4gICAgfTtcbiAgICByZXR1cm4gZm47XG4gIH1cblxuICBmbk9yU3RhdGVSZXNvbHZlcnNbY29tcHV0ZWRTeW1ib2xdID0ge1xuICAgIHN0YXRlUmVzb2x2ZXJzOiBkZWZhdWx0U3RhdGVSZXNvbHZlcnNcbiAgfTtcbiAgcmV0dXJuIGZuT3JTdGF0ZVJlc29sdmVycztcbn07XG52YXIgcGVyc2lzdCA9IGZ1bmN0aW9uIHBlcnNpc3QobW9kZWwsIGNvbmZpZykge1xuICB2YXIgX2V4dGVuZHMyO1xuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgbW9kZWwsIChfZXh0ZW5kczIgPSB7fSwgX2V4dGVuZHMyW3BlcnNpc3RTeW1ib2xdID0gY29uZmlnLCBfZXh0ZW5kczIpKTtcbn07XG52YXIgdGh1bmtPbiA9IGZ1bmN0aW9uIHRodW5rT24odGFyZ2V0UmVzb2x2ZXIsIGZuKSB7XG4gIGZuW3RodW5rT25TeW1ib2xdID0ge1xuICAgIHRhcmdldFJlc29sdmVyOiB0YXJnZXRSZXNvbHZlclxuICB9O1xuICByZXR1cm4gZm47XG59O1xudmFyIHRodW5rID0gZnVuY3Rpb24gdGh1bmsoZm4pIHtcbiAgZm5bdGh1bmtTeW1ib2xdID0ge307XG4gIHJldHVybiBmbjtcbn07XG52YXIgcmVkdWNlciA9IGZ1bmN0aW9uIHJlZHVjZXIoZm4pIHtcbiAgZm5bcmVkdWNlclN5bWJvbF0gPSB7fTtcbiAgcmV0dXJuIGZuO1xufTtcblxudmFyIGRlZXBDbG9uZVN0YXRlV2l0aG91dENvbXB1dGVkID0gZnVuY3Rpb24gZGVlcENsb25lU3RhdGVXaXRob3V0Q29tcHV0ZWQoc291cmNlKSB7XG4gIHZhciByZWN1cnNpdmVDbG9uZSA9IGZ1bmN0aW9uIHJlY3Vyc2l2ZUNsb25lKGN1cnJlbnQpIHtcbiAgICB2YXIgbmV4dCA9IE9iamVjdC5rZXlzKGN1cnJlbnQpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBrZXkpIHtcbiAgICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGN1cnJlbnQsIGtleSkuZ2V0ID09IG51bGwpIHtcbiAgICAgICAgYWNjW2tleV0gPSBjdXJyZW50W2tleV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICAgIE9iamVjdC5rZXlzKG5leHQpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgaWYgKGlzUGxhaW5PYmplY3QobmV4dFtrZXldKSkge1xuICAgICAgICBuZXh0W2tleV0gPSByZWN1cnNpdmVDbG9uZShuZXh0W2tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBuZXh0O1xuICB9O1xuXG4gIHJldHVybiByZWN1cnNpdmVDbG9uZShzb3VyY2UpO1xufTtcbnZhciBpc1Byb21pc2UgPSBmdW5jdGlvbiBpc1Byb21pc2UoeCkge1xuICByZXR1cm4geCAhPSBudWxsICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgeC50aGVuID09PSAnZnVuY3Rpb24nO1xufTtcbmZ1bmN0aW9uIGdldChwYXRoLCB0YXJnZXQpIHtcbiAgcmV0dXJuIHBhdGgucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGN1cikge1xuICAgIHJldHVybiBpc1BsYWluT2JqZWN0KGFjYykgPyBhY2NbY3VyXSA6IHVuZGVmaW5lZDtcbiAgfSwgdGFyZ2V0KTtcbn1cbmZ1bmN0aW9uIG5ld2lmeShjdXJyZW50UGF0aCwgY3VycmVudFN0YXRlLCBmaW5hbFZhbHVlKSB7XG4gIGlmIChjdXJyZW50UGF0aC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmluYWxWYWx1ZTtcbiAgfVxuXG4gIHZhciBuZXdTdGF0ZSA9IF9leHRlbmRzKHt9LCBjdXJyZW50U3RhdGUpO1xuXG4gIHZhciBrZXkgPSBjdXJyZW50UGF0aFswXTtcblxuICBpZiAoY3VycmVudFBhdGgubGVuZ3RoID09PSAxKSB7XG4gICAgbmV3U3RhdGVba2V5XSA9IGZpbmFsVmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgbmV3U3RhdGVba2V5XSA9IG5ld2lmeShjdXJyZW50UGF0aC5zbGljZSgxKSwgbmV3U3RhdGVba2V5XSwgZmluYWxWYWx1ZSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59XG52YXIgc2V0ID0gZnVuY3Rpb24gc2V0KHBhdGgsIHRhcmdldCwgdmFsdWUpIHtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIE9iamVjdC5rZXlzKHRhcmdldCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGRlbGV0ZSB0YXJnZXRba2V5XTtcbiAgICAgIH0pO1xuICAgICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB0YXJnZXRba2V5XSA9IHZhbHVlW2tleV07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBwYXRoLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBjdXIsIGlkeCkge1xuICAgIGlmIChpZHggKyAxID09PSBwYXRoLmxlbmd0aCkge1xuICAgICAgYWNjW2N1cl0gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWNjW2N1cl0gPSBhY2NbY3VyXSB8fCB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjW2N1cl07XG4gIH0sIHRhcmdldCk7XG59O1xuZnVuY3Rpb24gY3JlYXRlU2ltcGxlUHJvZHVjZShkaXNhYmxlSW1tZXIpIHtcbiAgaWYgKGRpc2FibGVJbW1lciA9PT0gdm9pZCAwKSB7XG4gICAgZGlzYWJsZUltbWVyID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gc2ltcGxlUHJvZHVjZShwYXRoLCBzdGF0ZSwgZm4pIHtcbiAgICBpZiAoZGlzYWJsZUltbWVyKSB7XG4gICAgICB2YXIgX2N1cnJlbnQgPSBnZXQocGF0aCwgc3RhdGUpO1xuXG4gICAgICB2YXIgbmV4dCA9IGZuKF9jdXJyZW50KTtcblxuICAgICAgaWYgKF9jdXJyZW50ICE9PSBuZXh0KSB7XG4gICAgICAgIHJldHVybiBuZXdpZnkocGF0aCwgc3RhdGUsIG5leHQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuXG4gICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICB2YXIgX2RyYWZ0ID0gY3JlYXRlRHJhZnQoc3RhdGUpO1xuXG4gICAgICB2YXIgX3Jlc3VsdCA9IGZuKF9kcmFmdCk7XG5cbiAgICAgIGlmIChfcmVzdWx0KSB7XG4gICAgICAgIHJldHVybiBpc0RyYWZ0KF9yZXN1bHQpID8gZmluaXNoRHJhZnQoX3Jlc3VsdCkgOiBfcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmluaXNoRHJhZnQoX2RyYWZ0KTtcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50UGF0aCA9IHBhdGguc2xpY2UoMCwgcGF0aC5sZW5ndGggLSAxKTtcbiAgICB2YXIgZHJhZnQgPSBjcmVhdGVEcmFmdChzdGF0ZSk7XG4gICAgdmFyIHBhcmVudCA9IGdldChwYXJlbnRQYXRoLCBzdGF0ZSk7XG4gICAgdmFyIGN1cnJlbnQgPSBnZXQocGF0aCwgZHJhZnQpO1xuICAgIHZhciByZXN1bHQgPSBmbihjdXJyZW50KTtcblxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHBhcmVudFtwYXRoW3BhdGgubGVuZ3RoIC0gMV1dID0gcmVzdWx0O1xuICAgIH1cblxuICAgIHJldHVybiBmaW5pc2hEcmFmdChkcmFmdCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVJlZHVjZXIoZGlzYWJsZUltbWVyLCBhY3Rpb25SZWR1Y2Vyc0RpY3QsIGN1c3RvbVJlZHVjZXJzLCBjb21wdXRlZFByb3BlcnRpZXMpIHtcbiAgdmFyIHNpbXBsZVByb2R1Y2UgPSBjcmVhdGVTaW1wbGVQcm9kdWNlKGRpc2FibGVJbW1lcik7XG5cbiAgdmFyIHJ1bkFjdGlvblJlZHVjZXJBdFBhdGggPSBmdW5jdGlvbiBydW5BY3Rpb25SZWR1Y2VyQXRQYXRoKHN0YXRlLCBhY3Rpb24sIGFjdGlvblJlZHVjZXIsIHBhdGgpIHtcbiAgICByZXR1cm4gc2ltcGxlUHJvZHVjZShwYXRoLCBzdGF0ZSwgZnVuY3Rpb24gKGRyYWZ0KSB7XG4gICAgICByZXR1cm4gYWN0aW9uUmVkdWNlcihkcmFmdCwgYWN0aW9uLnBheWxvYWQpO1xuICAgIH0pO1xuICB9O1xuXG4gIHZhciByZWR1Y2VyRm9yQWN0aW9ucyA9IGZ1bmN0aW9uIHJlZHVjZXJGb3JBY3Rpb25zKHN0YXRlLCBhY3Rpb24pIHtcbiAgICB2YXIgYWN0aW9uUmVkdWNlciA9IGFjdGlvblJlZHVjZXJzRGljdFthY3Rpb24udHlwZV07XG5cbiAgICBpZiAoYWN0aW9uUmVkdWNlcikge1xuICAgICAgdmFyIGFjdGlvbk1ldGEgPSBhY3Rpb25SZWR1Y2VyW2FjdGlvblN5bWJvbF0gfHwgYWN0aW9uUmVkdWNlclthY3Rpb25PblN5bWJvbF07XG4gICAgICByZXR1cm4gcnVuQWN0aW9uUmVkdWNlckF0UGF0aChzdGF0ZSwgYWN0aW9uLCBhY3Rpb25SZWR1Y2VyLCBhY3Rpb25NZXRhLnBhcmVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9O1xuXG4gIHZhciByZWR1Y2VyRm9yQ3VzdG9tUmVkdWNlcnMgPSBmdW5jdGlvbiByZWR1Y2VyRm9yQ3VzdG9tUmVkdWNlcnMoc3RhdGUsIGFjdGlvbikge1xuICAgIHJldHVybiBjdXN0b21SZWR1Y2Vycy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgX3JlZikge1xuICAgICAgdmFyIHBhcmVudFBhdGggPSBfcmVmLnBhcmVudFBhdGgsXG4gICAgICAgICAga2V5ID0gX3JlZi5rZXksXG4gICAgICAgICAgcmVkID0gX3JlZi5yZWR1Y2VyO1xuICAgICAgcmV0dXJuIHNpbXBsZVByb2R1Y2UocGFyZW50UGF0aCwgYWNjLCBmdW5jdGlvbiAoZHJhZnQpIHtcbiAgICAgICAgZHJhZnRba2V5XSA9IHJlZChkcmFmdFtrZXldLCBhY3Rpb24pO1xuICAgICAgICByZXR1cm4gZHJhZnQ7XG4gICAgICB9KTtcbiAgICB9LCBzdGF0ZSk7XG4gIH07XG5cbiAgdmFyIHJvb3RSZWR1Y2VyID0gZnVuY3Rpb24gcm9vdFJlZHVjZXIoc3RhdGUsIGFjdGlvbikge1xuICAgIHZhciBzdGF0ZUFmdGVyQWN0aW9ucyA9IHJlZHVjZXJGb3JBY3Rpb25zKHN0YXRlLCBhY3Rpb24pO1xuICAgIHZhciBuZXh0ID0gY3VzdG9tUmVkdWNlcnMubGVuZ3RoID4gMCA/IHJlZHVjZXJGb3JDdXN0b21SZWR1Y2VycyhzdGF0ZUFmdGVyQWN0aW9ucywgYWN0aW9uKSA6IHN0YXRlQWZ0ZXJBY3Rpb25zO1xuXG4gICAgaWYgKHN0YXRlICE9PSBuZXh0KSB7XG4gICAgICBjb21wdXRlZFByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgICAgdmFyIHBhcmVudFBhdGggPSBfcmVmMi5wYXJlbnRQYXRoLFxuICAgICAgICAgICAgYmluZENvbXB1dGVkUHJvcGVydHkgPSBfcmVmMi5iaW5kQ29tcHV0ZWRQcm9wZXJ0eTtcbiAgICAgICAgYmluZENvbXB1dGVkUHJvcGVydHkoZ2V0KHBhcmVudFBhdGgsIG5leHQpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXh0O1xuICB9O1xuXG4gIHJldHVybiByb290UmVkdWNlcjtcbn1cblxudmFyIG5vb3BTdG9yYWdlID0ge1xuICBnZXRJdGVtOiBmdW5jdGlvbiBnZXRJdGVtKCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sXG4gIHNldEl0ZW06IGZ1bmN0aW9uIHNldEl0ZW0oKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSxcbiAgcmVtb3ZlSXRlbTogZnVuY3Rpb24gcmVtb3ZlSXRlbSgpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59O1xudmFyIGxvY2FsU3RvcmFnZSA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cubG9jYWxTdG9yYWdlICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5sb2NhbFN0b3JhZ2UgOiBub29wU3RvcmFnZTtcbnZhciBzZXNzaW9uU3RvcmFnZSA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnNlc3Npb25TdG9yYWdlIDogbm9vcFN0b3JhZ2U7XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0b3JhZ2VXcmFwcGVyKHN0b3JhZ2UsIHRyYW5zZm9ybWVycykge1xuICBpZiAoc3RvcmFnZSA9PT0gdm9pZCAwKSB7XG4gICAgc3RvcmFnZSA9IHNlc3Npb25TdG9yYWdlO1xuICB9XG5cbiAgaWYgKHRyYW5zZm9ybWVycyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhbnNmb3JtZXJzID0gW107XG4gIH1cblxuICBpZiAodHlwZW9mIHN0b3JhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHN0b3JhZ2UgPT09ICdsb2NhbFN0b3JhZ2UnKSB7XG4gICAgICBzdG9yYWdlID0gbG9jYWxTdG9yYWdlO1xuICAgIH0gZWxzZSBpZiAoc3RvcmFnZSA9PT0gJ3Nlc3Npb25TdG9yYWdlJykge1xuICAgICAgc3RvcmFnZSA9IHNlc3Npb25TdG9yYWdlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiSW52YWxpZCBzdG9yYWdlIHByb3ZpZGVyIHNwZWNpZmllZCBmb3IgRWFzeSBQZWFzeSBwZXJzaXN0OiBcIiArIHN0b3JhZ2UgKyBcIlxcblZhbGlkIHZhbHVlcyBpbmNsdWRlIFxcXCJsb2NhbFN0b3JhZ2VcXFwiLCBcXFwic2Vzc2lvblN0b3JhZ2VcXFwiIG9yIGEgY3VzdG9tIHN0b3JhZ2UgZW5naW5lLlwiKTtcbiAgICAgIH1cblxuICAgICAgc3RvcmFnZSA9IG5vb3BTdG9yYWdlO1xuICAgIH1cbiAgfVxuXG4gIHZhciBvdXRUcmFuc2Zvcm1lcnMgPSB0cmFuc2Zvcm1lcnMucmV2ZXJzZSgpO1xuXG4gIHZhciBzZXJpYWxpemUgPSBmdW5jdGlvbiBzZXJpYWxpemUoZGF0YSwga2V5KSB7XG4gICAgdmFyIHNpbXBsZUtleSA9IGtleS5zdWJzdHIoa2V5LmluZGV4T2YoJ0AnKSArIDEpO1xuICAgIHZhciB0cmFuc2Zvcm1lZCA9IHRyYW5zZm9ybWVycy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgY3VyKSB7XG4gICAgICByZXR1cm4gY3VyLmluKGFjYywgc2ltcGxlS2V5KTtcbiAgICB9LCBkYXRhKTtcbiAgICByZXR1cm4gc3RvcmFnZSA9PT0gbG9jYWxTdG9yYWdlIHx8IHN0b3JhZ2UgPT09IHNlc3Npb25TdG9yYWdlID8gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgZGF0YTogdHJhbnNmb3JtZWRcbiAgICB9KSA6IHRyYW5zZm9ybWVkO1xuICB9O1xuXG4gIHZhciBkZXNlcmlhbGl6ZSA9IGZ1bmN0aW9uIGRlc2VyaWFsaXplKGRhdGEsIGtleSkge1xuICAgIHZhciBzaW1wbGVLZXkgPSBrZXkuc3Vic3RyKGtleS5pbmRleE9mKCdAJykgKyAxKTtcbiAgICB2YXIgcmVzdWx0ID0gc3RvcmFnZSA9PT0gbG9jYWxTdG9yYWdlIHx8IHN0b3JhZ2UgPT09IHNlc3Npb25TdG9yYWdlID8gSlNPTi5wYXJzZShkYXRhKS5kYXRhIDogZGF0YTtcbiAgICByZXR1cm4gb3V0VHJhbnNmb3JtZXJzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBjdXIpIHtcbiAgICAgIHJldHVybiBjdXIub3V0KGFjYywgc2ltcGxlS2V5KTtcbiAgICB9LCByZXN1bHQpO1xuICB9O1xuXG4gIHZhciBpc0FzeW5jID0gaXNQcm9taXNlKHN0b3JhZ2UuZ2V0SXRlbSgnXycpKTtcbiAgcmV0dXJuIHtcbiAgICBpc0FzeW5jOiBpc0FzeW5jLFxuICAgIGdldEl0ZW06IGZ1bmN0aW9uIGdldEl0ZW0oa2V5KSB7XG4gICAgICBpZiAoaXNBc3luYykge1xuICAgICAgICByZXR1cm4gc3RvcmFnZS5nZXRJdGVtKGtleSkudGhlbihmdW5jdGlvbiAod3JhcHBlZCkge1xuICAgICAgICAgIHJldHVybiB3cmFwcGVkICE9IG51bGwgPyBkZXNlcmlhbGl6ZSh3cmFwcGVkLCBrZXkpIDogdW5kZWZpbmVkO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIHdyYXBwZWQgPSBzdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgIHJldHVybiB3cmFwcGVkICE9IG51bGwgPyBkZXNlcmlhbGl6ZSh3cmFwcGVkLCBrZXkpIDogdW5kZWZpbmVkO1xuICAgIH0sXG4gICAgc2V0SXRlbTogZnVuY3Rpb24gc2V0SXRlbShrZXksIGRhdGEpIHtcbiAgICAgIHJldHVybiBzdG9yYWdlLnNldEl0ZW0oa2V5LCBzZXJpYWxpemUoZGF0YSwga2V5KSk7XG4gICAgfSxcbiAgICByZW1vdmVJdGVtOiBmdW5jdGlvbiByZW1vdmVJdGVtKGtleSkge1xuICAgICAgcmV0dXJuIHN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFBlcnNpc3RDb25maWcocGF0aCwgcGVyc2lzdERlZmluaXRpb24pIHtcbiAgaWYgKHBlcnNpc3REZWZpbml0aW9uID09PSB2b2lkIDApIHtcbiAgICBwZXJzaXN0RGVmaW5pdGlvbiA9IHt9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYXRoOiBwYXRoLFxuICAgIGNvbmZpZzoge1xuICAgICAgYmxhY2tsaXN0OiBwZXJzaXN0RGVmaW5pdGlvbi5ibGFja2xpc3QgfHwgW10sXG4gICAgICBtZXJnZVN0cmF0ZWd5OiBwZXJzaXN0RGVmaW5pdGlvbi5tZXJnZVN0cmF0ZWd5IHx8ICdtZXJnZScsXG4gICAgICBzdG9yYWdlOiBjcmVhdGVTdG9yYWdlV3JhcHBlcihwZXJzaXN0RGVmaW5pdGlvbi5zdG9yYWdlLCBwZXJzaXN0RGVmaW5pdGlvbi50cmFuc2Zvcm1lcnMpLFxuICAgICAgd2hpdGVsaXN0OiBwZXJzaXN0RGVmaW5pdGlvbi53aGl0ZWxpc3QgfHwgW11cbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVQZXJzaXN0VGFyZ2V0cyh0YXJnZXQsIHdoaXRlbGlzdCwgYmxhY2tsaXN0KSB7XG4gIHZhciB0YXJnZXRzID0gT2JqZWN0LmtleXModGFyZ2V0KTtcblxuICBpZiAod2hpdGVsaXN0Lmxlbmd0aCA+IDApIHtcbiAgICB0YXJnZXRzID0gdGFyZ2V0cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgY3VyKSB7XG4gICAgICBpZiAod2hpdGVsaXN0LmZpbmRJbmRleChmdW5jdGlvbiAoeCkge1xuICAgICAgICByZXR1cm4geCA9PT0gY3VyO1xuICAgICAgfSkgIT09IC0xKSB7XG4gICAgICAgIHJldHVybiBbXS5jb25jYXQoYWNjLCBbY3VyXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgaWYgKGJsYWNrbGlzdC5sZW5ndGggPiAwKSB7XG4gICAgdGFyZ2V0cyA9IHRhcmdldHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGN1cikge1xuICAgICAgaWYgKGJsYWNrbGlzdC5maW5kSW5kZXgoZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuIHggPT09IGN1cjtcbiAgICAgIH0pICE9PSAtMSkge1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gW10uY29uY2F0KGFjYywgW2N1cl0pO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXRzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQZXJzaXN0b3IocGVyc2lzdEtleSwgcmVmZXJlbmNlcykge1xuICByZXR1cm4gZGVib3VuY2UoZnVuY3Rpb24gKCkge1xuICAgIHJlZmVyZW5jZXMuaW50ZXJuYWxzLnBlcnNpc3RlbmNlQ29uZmlnLmZvckVhY2goZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciBwYXRoID0gX3JlZi5wYXRoLFxuICAgICAgICAgIGNvbmZpZyA9IF9yZWYuY29uZmlnO1xuICAgICAgdmFyIHN0b3JhZ2UgPSBjb25maWcuc3RvcmFnZSxcbiAgICAgICAgICB3aGl0ZWxpc3QgPSBjb25maWcud2hpdGVsaXN0LFxuICAgICAgICAgIGJsYWNrbGlzdCA9IGNvbmZpZy5ibGFja2xpc3Q7XG4gICAgICB2YXIgc3RhdGUgPSByZWZlcmVuY2VzLmdldFN0YXRlKCk7XG4gICAgICB2YXIgcGVyc2lzdFJvb3QgPSBkZWVwQ2xvbmVTdGF0ZVdpdGhvdXRDb21wdXRlZChnZXQocGF0aCwgc3RhdGUpKTtcbiAgICAgIHZhciB0YXJnZXRzID0gcmVzb2x2ZVBlcnNpc3RUYXJnZXRzKHBlcnNpc3RSb290LCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7XG4gICAgICB0YXJnZXRzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdGFyZ2V0UGF0aCA9IFtdLmNvbmNhdChwYXRoLCBba2V5XSk7XG4gICAgICAgIHN0b3JhZ2Uuc2V0SXRlbShwZXJzaXN0S2V5KHRhcmdldFBhdGgpLCBnZXQodGFyZ2V0UGF0aCwgc3RhdGUpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LCAxMDAwKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVBlcnNpc3RNaWRkbGV3YXJlKHBlcnNpc3RvciwgcmVmZXJlbmNlcykge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAobmV4dCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhY3Rpb24pIHtcbiAgICAgICAgdmFyIHN0YXRlID0gbmV4dChhY3Rpb24pO1xuXG4gICAgICAgIGlmIChhY3Rpb24gJiYgYWN0aW9uLnR5cGUgIT09ICdAYWN0aW9uLmVQUlMnICYmIHJlZmVyZW5jZXMuaW50ZXJuYWxzLnBlcnNpc3RlbmNlQ29uZmlnLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwZXJzaXN0b3Ioc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlUGVyc2lzdGVuY2VDbGVhcmVyKHBlcnNpc3RLZXksIHJlZmVyZW5jZXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgcmVmZXJlbmNlcy5pbnRlcm5hbHMucGVyc2lzdGVuY2VDb25maWcuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgICAgdmFyIHBhdGggPSBfcmVmMi5wYXRoLFxuICAgICAgICAgICAgY29uZmlnID0gX3JlZjIuY29uZmlnO1xuICAgICAgICB2YXIgc3RvcmFnZSA9IGNvbmZpZy5zdG9yYWdlLFxuICAgICAgICAgICAgd2hpdGVsaXN0ID0gY29uZmlnLndoaXRlbGlzdCxcbiAgICAgICAgICAgIGJsYWNrbGlzdCA9IGNvbmZpZy5ibGFja2xpc3Q7XG4gICAgICAgIHZhciBwZXJzaXN0Um9vdCA9IGdldChwYXRoLCByZWZlcmVuY2VzLmdldFN0YXRlKCkpO1xuICAgICAgICB2YXIgdGFyZ2V0cyA9IHJlc29sdmVQZXJzaXN0VGFyZ2V0cyhwZXJzaXN0Um9vdCwgd2hpdGVsaXN0LCBibGFja2xpc3QpO1xuXG4gICAgICAgIGlmICh0YXJnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBQcm9taXNlLmFsbCh0YXJnZXRzLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0UGF0aCA9IFtdLmNvbmNhdChwYXRoLCBba2V5XSk7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmFnZS5yZW1vdmVJdGVtKHBlcnNpc3RLZXkodGFyZ2V0UGF0aCkpO1xuICAgICAgICAgIH0pKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuZnVuY3Rpb24gcmVoeWRyYXRlU3RhdGVGcm9tUGVyc2lzdElmTmVlZGVkKHBlcnNpc3RLZXksIHJlcGxhY2VTdGF0ZSwgcmVmZXJlbmNlcykge1xuICAvLyBJZiB3ZSBoYXZlIGFueSBwZXJzaXN0IGNvbmZpZ3Mgd2Ugd2lsbCBhdHRlbXAgdG8gcGVyZm9ybSBhIHN0YXRlIHJlaHlkcmF0aW9uXG4gIHZhciByZXNvbHZlUmVoeWRyYXRpb24gPSBQcm9taXNlLnJlc29sdmUoKTtcblxuICBpZiAocmVmZXJlbmNlcy5pbnRlcm5hbHMucGVyc2lzdGVuY2VDb25maWcubGVuZ3RoID4gMCkge1xuICAgIHJlZmVyZW5jZXMuaW50ZXJuYWxzLnBlcnNpc3RlbmNlQ29uZmlnLmZvckVhY2goZnVuY3Rpb24gKHBlcnNpc3RJbnN0YW5jZSkge1xuICAgICAgdmFyIHBhdGggPSBwZXJzaXN0SW5zdGFuY2UucGF0aCxcbiAgICAgICAgICBjb25maWcgPSBwZXJzaXN0SW5zdGFuY2UuY29uZmlnO1xuICAgICAgdmFyIGJsYWNrbGlzdCA9IGNvbmZpZy5ibGFja2xpc3QsXG4gICAgICAgICAgbWVyZ2VTdHJhdGVneSA9IGNvbmZpZy5tZXJnZVN0cmF0ZWd5LFxuICAgICAgICAgIHN0b3JhZ2UgPSBjb25maWcuc3RvcmFnZSxcbiAgICAgICAgICB3aGl0ZWxpc3QgPSBjb25maWcud2hpdGVsaXN0O1xuICAgICAgdmFyIHN0YXRlID0gcmVmZXJlbmNlcy5pbnRlcm5hbHMuZGVmYXVsdFN0YXRlO1xuICAgICAgdmFyIHBlcnNpc3RSb290ID0gZGVlcENsb25lU3RhdGVXaXRob3V0Q29tcHV0ZWQoZ2V0KHBhdGgsIHN0YXRlKSk7XG4gICAgICB2YXIgdGFyZ2V0cyA9IHJlc29sdmVQZXJzaXN0VGFyZ2V0cyhwZXJzaXN0Um9vdCwgd2hpdGVsaXN0LCBibGFja2xpc3QpO1xuXG4gICAgICB2YXIgYXBwbHlSZWh5ZHJhdGlvblN0cmF0ZWd5ID0gZnVuY3Rpb24gYXBwbHlSZWh5ZHJhdGlvblN0cmF0ZWd5KG9yaWdpbmFsU3RhdGUsIHJlaHlkcmF0ZWRTdGF0ZSkge1xuICAgICAgICBpZiAobWVyZ2VTdHJhdGVneSA9PT0gJ292ZXJ3cml0ZScpIHtcbiAgICAgICAgICBzZXQocGF0aCwgb3JpZ2luYWxTdGF0ZSwgcmVoeWRyYXRlZFN0YXRlKTtcbiAgICAgICAgfSBlbHNlIGlmIChtZXJnZVN0cmF0ZWd5ID09PSAnbWVyZ2UnKSB7XG4gICAgICAgICAgdmFyIHRhcmdldCA9IGdldChwYXRoLCBvcmlnaW5hbFN0YXRlKTtcbiAgICAgICAgICBPYmplY3Qua2V5cyhyZWh5ZHJhdGVkU3RhdGUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSByZWh5ZHJhdGVkU3RhdGVba2V5XTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChtZXJnZVN0cmF0ZWd5ID09PSAnbWVyZ2VEZWVwJykge1xuICAgICAgICAgIHZhciBfdGFyZ2V0ID0gZ2V0KHBhdGgsIG9yaWdpbmFsU3RhdGUpO1xuXG4gICAgICAgICAgdmFyIHNldEF0ID0gZnVuY3Rpb24gc2V0QXQoY3VycmVudFRhcmdldCwgY3VycmVudE5leHQpIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGN1cnJlbnROZXh0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgdmFyIGRhdGEgPSBjdXJyZW50TmV4dFtrZXldO1xuXG4gICAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KGN1cnJlbnRUYXJnZXRba2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXRba2V5XSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNldEF0KGN1cnJlbnRUYXJnZXRba2V5XSwgZGF0YSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFRhcmdldFtrZXldID0gZGF0YTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHNldEF0KF90YXJnZXQsIHJlaHlkcmF0ZWRTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmIChzdG9yYWdlLmlzQXN5bmMpIHtcbiAgICAgICAgdmFyIGFzeW5jU3RhdGVSZXNvbHZlcnMgPSB0YXJnZXRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBrZXkpIHtcbiAgICAgICAgICB2YXIgdGFyZ2V0UGF0aCA9IFtdLmNvbmNhdChwYXRoLCBba2V5XSk7XG4gICAgICAgICAgdmFyIGRhdGFQcm9taXNlID0gc3RvcmFnZS5nZXRJdGVtKHBlcnNpc3RLZXkodGFyZ2V0UGF0aCkpO1xuXG4gICAgICAgICAgaWYgKGlzUHJvbWlzZShkYXRhUHJvbWlzZSkpIHtcbiAgICAgICAgICAgIGFjYy5wdXNoKHtcbiAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgIGRhdGFQcm9taXNlOiBkYXRhUHJvbWlzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwgW10pO1xuXG4gICAgICAgIGlmIChhc3luY1N0YXRlUmVzb2x2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXNvbHZlUmVoeWRyYXRpb24gPSBQcm9taXNlLmFsbChhc3luY1N0YXRlUmVzb2x2ZXJzLm1hcChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgcmV0dXJuIHguZGF0YVByb21pc2U7XG4gICAgICAgICAgfSkpLnRoZW4oZnVuY3Rpb24gKHJlc29sdmVkRGF0YSkge1xuICAgICAgICAgICAgdmFyIG5leHQgPSByZXNvbHZlZERhdGEucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGN1ciwgaWR4KSB7XG4gICAgICAgICAgICAgIHZhciBrZXkgPSBhc3luY1N0YXRlUmVzb2x2ZXJzW2lkeF0ua2V5O1xuXG4gICAgICAgICAgICAgIGlmIChjdXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGFjY1trZXldID0gY3VyO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKG5leHQpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFwcGx5UmVoeWRyYXRpb25TdHJhdGVneShzdGF0ZSwgbmV4dCk7XG4gICAgICAgICAgICByZXBsYWNlU3RhdGUoc3RhdGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgbmV4dCA9IHRhcmdldHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgICAgICAgIHZhciB0YXJnZXRQYXRoID0gW10uY29uY2F0KHBhdGgsIFtrZXldKTtcbiAgICAgICAgICB2YXIgZGF0YSA9IHN0b3JhZ2UuZ2V0SXRlbShwZXJzaXN0S2V5KHRhcmdldFBhdGgpKTtcblxuICAgICAgICAgIGlmIChkYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gZGF0YTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSk7XG4gICAgICAgIGFwcGx5UmVoeWRyYXRpb25TdHJhdGVneShzdGF0ZSwgbmV4dCk7XG4gICAgICAgIHJlcGxhY2VTdGF0ZShzdGF0ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZVJlaHlkcmF0aW9uO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBY3Rpb25DcmVhdG9yKGFjdGlvbkRlZmluaXRpb24sIG1ldGEsIHJlZmVyZW5jZXMpIHtcbiAgdmFyIHByZWZpeCA9IGFjdGlvbkRlZmluaXRpb25bYWN0aW9uU3ltYm9sXSA/ICdAYWN0aW9uJyA6ICdAYWN0aW9uT24nO1xuICB2YXIgdHlwZSA9IHByZWZpeCArIFwiLlwiICsgbWV0YS5wYXRoLmpvaW4oJy4nKTtcbiAgdmFyIGFjdGlvbk1ldGEgPSBhY3Rpb25EZWZpbml0aW9uW2FjdGlvblN5bWJvbF0gfHwgYWN0aW9uRGVmaW5pdGlvblthY3Rpb25PblN5bWJvbF07XG4gIGFjdGlvbk1ldGEuYWN0aW9uTmFtZSA9IG1ldGEua2V5O1xuICBhY3Rpb25NZXRhLnR5cGUgPSB0eXBlO1xuICBhY3Rpb25NZXRhLnBhcmVudCA9IG1ldGEucGFyZW50O1xuICBhY3Rpb25NZXRhLnBhdGggPSBtZXRhLnBhdGg7XG5cbiAgdmFyIGFjdGlvbkNyZWF0b3IgPSBmdW5jdGlvbiBhY3Rpb25DcmVhdG9yKHBheWxvYWQpIHtcbiAgICB2YXIgYWN0aW9uID0ge1xuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIHBheWxvYWQ6IHBheWxvYWRcbiAgICB9O1xuXG4gICAgaWYgKGFjdGlvbkRlZmluaXRpb25bYWN0aW9uT25TeW1ib2xdICYmIGFjdGlvbk1ldGEucmVzb2x2ZWRUYXJnZXRzKSB7XG4gICAgICBwYXlsb2FkLnJlc29sdmVkVGFyZ2V0cyA9IFtdLmNvbmNhdChhY3Rpb25NZXRhLnJlc29sdmVkVGFyZ2V0cyk7XG4gICAgfVxuXG4gICAgdmFyIHJlc3VsdCA9IHJlZmVyZW5jZXMuZGlzcGF0Y2goYWN0aW9uKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIGFjdGlvbkNyZWF0b3IudHlwZSA9IHR5cGU7XG4gIHJldHVybiBhY3Rpb25DcmVhdG9yO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVUaHVua0hhbmRsZXIodGh1bmtEZWZpbml0aW9uLCBtZXRhLCByZWZlcmVuY2VzLCBpbmplY3Rpb25zLCBhY3Rpb25DcmVhdG9ycykge1xuICB2YXIgdGh1bmtNZXRhID0gdGh1bmtEZWZpbml0aW9uW3RodW5rU3ltYm9sXSB8fCB0aHVua0RlZmluaXRpb25bdGh1bmtPblN5bWJvbF07XG4gIHJldHVybiBmdW5jdGlvbiAocGF5bG9hZCkge1xuICAgIHZhciBoZWxwZXJzID0ge1xuICAgICAgZGlzcGF0Y2g6IHJlZmVyZW5jZXMuZGlzcGF0Y2gsXG4gICAgICBnZXRTdGF0ZTogZnVuY3Rpb24gZ2V0U3RhdGUoKSB7XG4gICAgICAgIHJldHVybiBnZXQobWV0YS5wYXJlbnQsIHJlZmVyZW5jZXMuZ2V0U3RhdGUoKSk7XG4gICAgICB9LFxuICAgICAgZ2V0U3RvcmVBY3Rpb25zOiBmdW5jdGlvbiBnZXRTdG9yZUFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiBhY3Rpb25DcmVhdG9ycztcbiAgICAgIH0sXG4gICAgICBnZXRTdG9yZVN0YXRlOiByZWZlcmVuY2VzLmdldFN0YXRlLFxuICAgICAgaW5qZWN0aW9uczogaW5qZWN0aW9ucyxcbiAgICAgIG1ldGE6IG1ldGFcbiAgICB9O1xuXG4gICAgaWYgKHRodW5rRGVmaW5pdGlvblt0aHVua09uU3ltYm9sXSAmJiB0aHVua01ldGEucmVzb2x2ZWRUYXJnZXRzKSB7XG4gICAgICBwYXlsb2FkLnJlc29sdmVkVGFyZ2V0cyA9IFtdLmNvbmNhdCh0aHVua01ldGEucmVzb2x2ZWRUYXJnZXRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGh1bmtEZWZpbml0aW9uKGdldChtZXRhLnBhcmVudCwgYWN0aW9uQ3JlYXRvcnMpLCBwYXlsb2FkLCBoZWxwZXJzKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVRodW5rQWN0aW9uc0NyZWF0b3IodGh1bmtEZWZpbml0aW9uLCBtZXRhLCByZWZlcmVuY2VzLCB0aHVua0hhbmRsZXIpIHtcbiAgdmFyIHByZWZpeCA9IHRodW5rRGVmaW5pdGlvblt0aHVua1N5bWJvbF0gPyAnQHRodW5rJyA6ICdAdGh1bmtPbic7XG4gIHZhciB0eXBlID0gcHJlZml4ICsgXCIuXCIgKyBtZXRhLnBhdGguam9pbignLicpO1xuICB2YXIgc3RhcnRUeXBlID0gdHlwZSArIFwiKHN0YXJ0KVwiO1xuICB2YXIgc3VjY2Vzc1R5cGUgPSB0eXBlICsgXCIoc3VjY2VzcylcIjtcbiAgdmFyIGZhaWxUeXBlID0gdHlwZSArIFwiKGZhaWwpXCI7XG4gIHZhciB0aHVua01ldGEgPSB0aHVua0RlZmluaXRpb25bdGh1bmtTeW1ib2xdIHx8IHRodW5rRGVmaW5pdGlvblt0aHVua09uU3ltYm9sXTtcbiAgdGh1bmtNZXRhLnR5cGUgPSB0eXBlO1xuICB0aHVua01ldGEuYWN0aW9uTmFtZSA9IG1ldGEua2V5O1xuICB0aHVua01ldGEucGFyZW50ID0gbWV0YS5wYXJlbnQ7XG4gIHRodW5rTWV0YS5wYXRoID0gbWV0YS5wYXRoO1xuXG4gIHZhciBhY3Rpb25DcmVhdG9yID0gZnVuY3Rpb24gYWN0aW9uQ3JlYXRvcihwYXlsb2FkKSB7XG4gICAgdmFyIGRpc3BhdGNoRXJyb3IgPSBmdW5jdGlvbiBkaXNwYXRjaEVycm9yKGVycikge1xuICAgICAgcmVmZXJlbmNlcy5kaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IGZhaWxUeXBlLFxuICAgICAgICBwYXlsb2FkOiBwYXlsb2FkLFxuICAgICAgICBlcnJvcjogZXJyXG4gICAgICB9KTtcbiAgICAgIHJlZmVyZW5jZXMuZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBwYXlsb2FkOiBwYXlsb2FkLFxuICAgICAgICBlcnJvcjogZXJyXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdmFyIGRpc3BhdGNoU3VjY2VzcyA9IGZ1bmN0aW9uIGRpc3BhdGNoU3VjY2VzcyhyZXN1bHQpIHtcbiAgICAgIHJlZmVyZW5jZXMuZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiBzdWNjZXNzVHlwZSxcbiAgICAgICAgcGF5bG9hZDogcGF5bG9hZCxcbiAgICAgICAgcmVzdWx0OiByZXN1bHRcbiAgICAgIH0pO1xuICAgICAgcmVmZXJlbmNlcy5kaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIHBheWxvYWQ6IHBheWxvYWQsXG4gICAgICAgIHJlc3VsdDogcmVzdWx0XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmVmZXJlbmNlcy5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiBzdGFydFR5cGUsXG4gICAgICBwYXlsb2FkOiBwYXlsb2FkXG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgdmFyIHJlc3VsdCA9IHJlZmVyZW5jZXMuZGlzcGF0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGh1bmtIYW5kbGVyKHBheWxvYWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChpc1Byb21pc2UocmVzdWx0KSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oZnVuY3Rpb24gKHJlc29sdmVkKSB7XG4gICAgICAgICAgZGlzcGF0Y2hTdWNjZXNzKHJlc29sdmVkKTtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZWQ7XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICBkaXNwYXRjaEVycm9yKGVycik7XG4gICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2hTdWNjZXNzKHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZGlzcGF0Y2hFcnJvcihlcnIpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfTtcblxuICBhY3Rpb25DcmVhdG9yLnR5cGUgPSB0eXBlO1xuICBhY3Rpb25DcmVhdG9yLnN0YXJ0VHlwZSA9IHN0YXJ0VHlwZTtcbiAgYWN0aW9uQ3JlYXRvci5zdWNjZXNzVHlwZSA9IHN1Y2Nlc3NUeXBlO1xuICBhY3Rpb25DcmVhdG9yLmZhaWxUeXBlID0gZmFpbFR5cGU7XG4gIHJldHVybiBhY3Rpb25DcmVhdG9yO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMaXN0ZW5lck1pZGRsZXdhcmUocmVmZXJlbmNlcykge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAobmV4dCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhY3Rpb24pIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5leHQoYWN0aW9uKTtcblxuICAgICAgICBpZiAoYWN0aW9uICYmIHJlZmVyZW5jZXMuaW50ZXJuYWxzLmxpc3RlbmVyQWN0aW9uTWFwW2FjdGlvbi50eXBlXSAmJiByZWZlcmVuY2VzLmludGVybmFscy5saXN0ZW5lckFjdGlvbk1hcFthY3Rpb24udHlwZV0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHZhciBzb3VyY2VBY3Rpb24gPSByZWZlcmVuY2VzLmludGVybmFscy5hY3Rpb25DcmVhdG9yRGljdFthY3Rpb24udHlwZV07XG4gICAgICAgICAgcmVmZXJlbmNlcy5pbnRlcm5hbHMubGlzdGVuZXJBY3Rpb25NYXBbYWN0aW9uLnR5cGVdLmZvckVhY2goZnVuY3Rpb24gKGFjdGlvbkNyZWF0b3IpIHtcbiAgICAgICAgICAgIGFjdGlvbkNyZWF0b3Ioe1xuICAgICAgICAgICAgICB0eXBlOiBzb3VyY2VBY3Rpb24gPyBzb3VyY2VBY3Rpb24udHlwZSA6IGFjdGlvbi50eXBlLFxuICAgICAgICAgICAgICBwYXlsb2FkOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICAgICAgZXJyb3I6IGFjdGlvbi5lcnJvcixcbiAgICAgICAgICAgICAgcmVzdWx0OiBhY3Rpb24ucmVzdWx0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG5mdW5jdGlvbiBiaW5kTGlzdGVuZXJEZWZpbml0aW9ucyhsaXN0ZW5lckRlZmluaXRpb25zLCBhY3Rpb25DcmVhdG9ycywgYWN0aW9uQ3JlYXRvckRpY3QsIGxpc3RlbmVyQWN0aW9uTWFwKSB7XG4gIGxpc3RlbmVyRGVmaW5pdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXJBY3Rpb25PclRodW5rKSB7XG4gICAgdmFyIGxpc3RlbmVyTWV0YSA9IGxpc3RlbmVyQWN0aW9uT3JUaHVua1thY3Rpb25PblN5bWJvbF0gfHwgbGlzdGVuZXJBY3Rpb25PclRodW5rW3RodW5rT25TeW1ib2xdO1xuICAgIHZhciB0YXJnZXRzID0gbGlzdGVuZXJNZXRhLnRhcmdldFJlc29sdmVyKGdldChsaXN0ZW5lck1ldGEucGFyZW50LCBhY3Rpb25DcmVhdG9ycyksIGFjdGlvbkNyZWF0b3JzKTtcbiAgICB2YXIgdGFyZ2V0VHlwZXMgPSAoQXJyYXkuaXNBcnJheSh0YXJnZXRzKSA/IHRhcmdldHMgOiBbdGFyZ2V0c10pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCB0YXJnZXQpIHtcbiAgICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnZnVuY3Rpb24nICYmIHRhcmdldC50eXBlICYmIGFjdGlvbkNyZWF0b3JEaWN0W3RhcmdldC50eXBlXSkge1xuICAgICAgICBhY2MucHVzaCh0YXJnZXQudHlwZSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGFjYy5wdXNoKHRhcmdldCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pO1xuICAgIGxpc3RlbmVyTWV0YS5yZXNvbHZlZFRhcmdldHMgPSB0YXJnZXRUeXBlcztcbiAgICB0YXJnZXRUeXBlcy5mb3JFYWNoKGZ1bmN0aW9uICh0YXJnZXRUeXBlKSB7XG4gICAgICB2YXIgbGlzdGVuZXJSZWcgPSBsaXN0ZW5lckFjdGlvbk1hcFt0YXJnZXRUeXBlXSB8fCBbXTtcbiAgICAgIGxpc3RlbmVyUmVnLnB1c2goYWN0aW9uQ3JlYXRvckRpY3RbbGlzdGVuZXJNZXRhLnR5cGVdKTtcbiAgICAgIGxpc3RlbmVyQWN0aW9uTWFwW3RhcmdldFR5cGVdID0gbGlzdGVuZXJSZWc7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wdXRlZFByb3BlcnR5QmluZGVyKHBhcmVudFBhdGgsIGtleSwgZGVmaW5pdGlvbiwgY29tcHV0ZWRTdGF0ZSwgcmVmZXJlbmNlcykge1xuICB2YXIgY29tcHV0ZWRNZXRhID0gZGVmaW5pdGlvbltjb21wdXRlZFN5bWJvbF07XG4gIHZhciBtZW1vaXNlZFJlc3VsdEZuID0gbWVtb2l6ZXJpZmljKDEpKGRlZmluaXRpb24pO1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlQ29tcHV0ZWRQcm9wZXJ0eShvKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGtleSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0JDEoKSB7XG4gICAgICAgIHZhciBzdG9yZVN0YXRlO1xuXG4gICAgICAgIGlmIChjb21wdXRlZFN0YXRlLmlzSW5SZWR1Y2VyKSB7XG4gICAgICAgICAgc3RvcmVTdGF0ZSA9IGNvbXB1dGVkU3RhdGUuY3VycmVudFN0YXRlO1xuICAgICAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZXMuZ2V0U3RhdGUgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHN0b3JlU3RhdGUgPSByZWZlcmVuY2VzLmdldFN0YXRlKCk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdJbnZhbGlkIGFjY2VzcyBhdHRlbXB0IHRvIGEgY29tcHV0ZWQgcHJvcGVydHknKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RhdGUgPSBnZXQocGFyZW50UGF0aCwgc3RvcmVTdGF0ZSk7XG5cbiAgICAgICAgdmFyIGlucHV0cyA9IGNvbXB1dGVkTWV0YS5zdGF0ZVJlc29sdmVycy5tYXAoZnVuY3Rpb24gKHJlc29sdmVyKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmVyKHN0YXRlLCBzdG9yZVN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBtZW1vaXNlZFJlc3VsdEZuLmFwcGx5KHZvaWQgMCwgaW5wdXRzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvbXB1dGVkUHJvcGVydGllc01pZGRsZXdhcmUocmVmZXJlbmNlcykge1xuICByZXR1cm4gZnVuY3Rpb24gKHN0b3JlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChuZXh0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGFjdGlvbikge1xuICAgICAgICByZWZlcmVuY2VzLmludGVybmFscy5jb21wdXRlZFN0YXRlLmN1cnJlbnRTdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIHJlZmVyZW5jZXMuaW50ZXJuYWxzLmNvbXB1dGVkU3RhdGUuaXNJblJlZHVjZXIgPSB0cnVlO1xuICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuXG5mdW5jdGlvbiBleHRyYWN0RGF0YUZyb21Nb2RlbChtb2RlbCwgaW5pdGlhbFN0YXRlLCBpbmplY3Rpb25zLCByZWZlcmVuY2VzKSB7XG4gIHZhciBkZWZhdWx0U3RhdGUgPSBpbml0aWFsU3RhdGU7XG4gIHZhciBhY3Rpb25DcmVhdG9yRGljdCA9IHt9O1xuICB2YXIgYWN0aW9uQ3JlYXRvcnMgPSB7fTtcbiAgdmFyIGFjdGlvblJlZHVjZXJzRGljdCA9IHt9O1xuICB2YXIgYWN0aW9uVGh1bmtzID0ge307XG4gIHZhciBjb21wdXRlZFByb3BlcnRpZXMgPSBbXTtcbiAgdmFyIGN1c3RvbVJlZHVjZXJzID0gW107XG4gIHZhciBsaXN0ZW5lckFjdGlvbkNyZWF0b3JzID0ge307XG4gIHZhciBsaXN0ZW5lckFjdGlvbk1hcCA9IHt9O1xuICB2YXIgbGlzdGVuZXJEZWZpbml0aW9ucyA9IFtdO1xuICB2YXIgcGVyc2lzdGVuY2VDb25maWcgPSBbXTtcbiAgdmFyIGNvbXB1dGVkU3RhdGUgPSB7XG4gICAgaXNJblJlZHVjZXI6IGZhbHNlLFxuICAgIGN1cnJlbnRTdGF0ZTogZGVmYXVsdFN0YXRlXG4gIH07XG5cbiAgdmFyIHJlY3Vyc2l2ZUV4dHJhY3RGcm9tTW9kZWwgPSBmdW5jdGlvbiByZWN1cnNpdmVFeHRyYWN0RnJvbU1vZGVsKGN1cnJlbnQsIHBhcmVudFBhdGgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY3VycmVudCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgdmFsdWUgPSBjdXJyZW50W2tleV07XG4gICAgICB2YXIgcGF0aCA9IFtdLmNvbmNhdChwYXJlbnRQYXRoLCBba2V5XSk7XG4gICAgICB2YXIgbWV0YSA9IHtcbiAgICAgICAgcGFyZW50OiBwYXJlbnRQYXRoLFxuICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICBrZXk6IGtleVxuICAgICAgfTtcblxuICAgICAgdmFyIGhhbmRsZVZhbHVlQXNTdGF0ZSA9IGZ1bmN0aW9uIGhhbmRsZVZhbHVlQXNTdGF0ZSgpIHtcbiAgICAgICAgdmFyIGluaXRpYWxQYXJlbnRSZWYgPSBnZXQocGFyZW50UGF0aCwgaW5pdGlhbFN0YXRlKTtcblxuICAgICAgICBpZiAoaW5pdGlhbFBhcmVudFJlZiAmJiBrZXkgaW4gaW5pdGlhbFBhcmVudFJlZikge1xuICAgICAgICAgIHNldChwYXRoLCBkZWZhdWx0U3RhdGUsIGluaXRpYWxQYXJlbnRSZWZba2V5XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0KHBhdGgsIGRlZmF1bHRTdGF0ZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAoa2V5ID09PSBwZXJzaXN0U3ltYm9sKSB7XG4gICAgICAgIHBlcnNpc3RlbmNlQ29uZmlnLnB1c2goZXh0cmFjdFBlcnNpc3RDb25maWcocGFyZW50UGF0aCwgdmFsdWUpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGlmICh2YWx1ZVthY3Rpb25TeW1ib2xdIHx8IHZhbHVlW2FjdGlvbk9uU3ltYm9sXSkge1xuICAgICAgICAgIHZhciBhY3Rpb25SZWR1Y2VyID0gdmFsdWU7XG4gICAgICAgICAgdmFyIGFjdGlvbkNyZWF0b3IgPSBjcmVhdGVBY3Rpb25DcmVhdG9yKHZhbHVlLCBtZXRhLCByZWZlcmVuY2VzKTtcbiAgICAgICAgICBhY3Rpb25DcmVhdG9yRGljdFthY3Rpb25DcmVhdG9yLnR5cGVdID0gYWN0aW9uQ3JlYXRvcjtcbiAgICAgICAgICBhY3Rpb25SZWR1Y2Vyc0RpY3RbYWN0aW9uQ3JlYXRvci50eXBlXSA9IGFjdGlvblJlZHVjZXI7XG5cbiAgICAgICAgICBpZiAobWV0YS5rZXkgIT09ICdlUFJTJykge1xuICAgICAgICAgICAgaWYgKHZhbHVlW2FjdGlvbk9uU3ltYm9sXSkge1xuICAgICAgICAgICAgICBsaXN0ZW5lckRlZmluaXRpb25zLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICBzZXQocGF0aCwgbGlzdGVuZXJBY3Rpb25DcmVhdG9ycywgYWN0aW9uQ3JlYXRvcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzZXQocGF0aCwgYWN0aW9uQ3JlYXRvcnMsIGFjdGlvbkNyZWF0b3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZVt0aHVua1N5bWJvbF0gfHwgdmFsdWVbdGh1bmtPblN5bWJvbF0pIHtcbiAgICAgICAgICB2YXIgdGh1bmtIYW5kbGVyID0gY3JlYXRlVGh1bmtIYW5kbGVyKHZhbHVlLCBtZXRhLCByZWZlcmVuY2VzLCBpbmplY3Rpb25zLCBhY3Rpb25DcmVhdG9ycyk7XG5cbiAgICAgICAgICB2YXIgX2FjdGlvbkNyZWF0b3IgPSBjcmVhdGVUaHVua0FjdGlvbnNDcmVhdG9yKHZhbHVlLCBtZXRhLCByZWZlcmVuY2VzLCB0aHVua0hhbmRsZXIpO1xuXG4gICAgICAgICAgc2V0KHBhdGgsIGFjdGlvblRodW5rcywgdGh1bmtIYW5kbGVyKTtcbiAgICAgICAgICBhY3Rpb25DcmVhdG9yRGljdFtfYWN0aW9uQ3JlYXRvci50eXBlXSA9IF9hY3Rpb25DcmVhdG9yO1xuXG4gICAgICAgICAgaWYgKHZhbHVlW3RodW5rT25TeW1ib2xdKSB7XG4gICAgICAgICAgICBsaXN0ZW5lckRlZmluaXRpb25zLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgc2V0KHBhdGgsIGxpc3RlbmVyQWN0aW9uQ3JlYXRvcnMsIF9hY3Rpb25DcmVhdG9yKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0KHBhdGgsIGFjdGlvbkNyZWF0b3JzLCBfYWN0aW9uQ3JlYXRvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlW2NvbXB1dGVkU3ltYm9sXSkge1xuICAgICAgICAgIHZhciBwYXJlbnQgPSBnZXQocGFyZW50UGF0aCwgZGVmYXVsdFN0YXRlKTtcbiAgICAgICAgICB2YXIgYmluZENvbXB1dGVkUHJvcGVydHkgPSBjcmVhdGVDb21wdXRlZFByb3BlcnR5QmluZGVyKHBhcmVudFBhdGgsIGtleSwgdmFsdWUsIGNvbXB1dGVkU3RhdGUsIHJlZmVyZW5jZXMpO1xuICAgICAgICAgIGJpbmRDb21wdXRlZFByb3BlcnR5KHBhcmVudCk7XG4gICAgICAgICAgY29tcHV0ZWRQcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICBwYXJlbnRQYXRoOiBwYXJlbnRQYXRoLFxuICAgICAgICAgICAgYmluZENvbXB1dGVkUHJvcGVydHk6IGJpbmRDb21wdXRlZFByb3BlcnR5XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWVbcmVkdWNlclN5bWJvbF0pIHtcbiAgICAgICAgICBjdXN0b21SZWR1Y2Vycy5wdXNoKHtcbiAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgcGFyZW50UGF0aDogcGFyZW50UGF0aCxcbiAgICAgICAgICAgIHJlZHVjZXI6IHZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGFuZGxlVmFsdWVBc1N0YXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgdmFyIGV4aXN0aW5nID0gZ2V0KHBhdGgsIGRlZmF1bHRTdGF0ZSk7XG5cbiAgICAgICAgaWYgKGV4aXN0aW5nID09IG51bGwpIHtcbiAgICAgICAgICBzZXQocGF0aCwgZGVmYXVsdFN0YXRlLCB7fSk7XG4gICAgICAgIH1cblxuICAgICAgICByZWN1cnNpdmVFeHRyYWN0RnJvbU1vZGVsKHZhbHVlLCBwYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhbmRsZVZhbHVlQXNTdGF0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIHJlY3Vyc2l2ZUV4dHJhY3RGcm9tTW9kZWwobW9kZWwsIFtdKTtcbiAgYmluZExpc3RlbmVyRGVmaW5pdGlvbnMobGlzdGVuZXJEZWZpbml0aW9ucywgYWN0aW9uQ3JlYXRvcnMsIGFjdGlvbkNyZWF0b3JEaWN0LCBsaXN0ZW5lckFjdGlvbk1hcCk7XG4gIHJldHVybiB7XG4gICAgYWN0aW9uQ3JlYXRvckRpY3Q6IGFjdGlvbkNyZWF0b3JEaWN0LFxuICAgIGFjdGlvbkNyZWF0b3JzOiBhY3Rpb25DcmVhdG9ycyxcbiAgICBhY3Rpb25SZWR1Y2Vyc0RpY3Q6IGFjdGlvblJlZHVjZXJzRGljdCxcbiAgICBjb21wdXRlZFByb3BlcnRpZXM6IGNvbXB1dGVkUHJvcGVydGllcyxcbiAgICBjdXN0b21SZWR1Y2VyczogY3VzdG9tUmVkdWNlcnMsXG4gICAgY29tcHV0ZWRTdGF0ZTogY29tcHV0ZWRTdGF0ZSxcbiAgICBkZWZhdWx0U3RhdGU6IGRlZmF1bHRTdGF0ZSxcbiAgICBsaXN0ZW5lckFjdGlvbkNyZWF0b3JzOiBsaXN0ZW5lckFjdGlvbkNyZWF0b3JzLFxuICAgIGxpc3RlbmVyQWN0aW9uTWFwOiBsaXN0ZW5lckFjdGlvbk1hcCxcbiAgICBwZXJzaXN0ZW5jZUNvbmZpZzogcGVyc2lzdGVuY2VDb25maWdcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU3RvcmVJbnRlcm5hbHMoX3JlZikge1xuICB2YXIgZGlzYWJsZUltbWVyID0gX3JlZi5kaXNhYmxlSW1tZXIsXG4gICAgICBpbml0aWFsU3RhdGUgPSBfcmVmLmluaXRpYWxTdGF0ZSxcbiAgICAgIGluamVjdGlvbnMgPSBfcmVmLmluamVjdGlvbnMsXG4gICAgICBtb2RlbCA9IF9yZWYubW9kZWwsXG4gICAgICByZWR1Y2VyRW5oYW5jZXIgPSBfcmVmLnJlZHVjZXJFbmhhbmNlcixcbiAgICAgIHJlZmVyZW5jZXMgPSBfcmVmLnJlZmVyZW5jZXM7XG5cbiAgdmFyIF9leHRyYWN0RGF0YUZyb21Nb2RlbCA9IGV4dHJhY3REYXRhRnJvbU1vZGVsKG1vZGVsLCBpbml0aWFsU3RhdGUsIGluamVjdGlvbnMsIHJlZmVyZW5jZXMpLFxuICAgICAgYWN0aW9uQ3JlYXRvckRpY3QgPSBfZXh0cmFjdERhdGFGcm9tTW9kZWwuYWN0aW9uQ3JlYXRvckRpY3QsXG4gICAgICBhY3Rpb25DcmVhdG9ycyA9IF9leHRyYWN0RGF0YUZyb21Nb2RlbC5hY3Rpb25DcmVhdG9ycyxcbiAgICAgIGFjdGlvblJlZHVjZXJzRGljdCA9IF9leHRyYWN0RGF0YUZyb21Nb2RlbC5hY3Rpb25SZWR1Y2Vyc0RpY3QsXG4gICAgICBjb21wdXRlZFN0YXRlID0gX2V4dHJhY3REYXRhRnJvbU1vZGVsLmNvbXB1dGVkU3RhdGUsXG4gICAgICBjb21wdXRlZFByb3BlcnRpZXMgPSBfZXh0cmFjdERhdGFGcm9tTW9kZWwuY29tcHV0ZWRQcm9wZXJ0aWVzLFxuICAgICAgY3VzdG9tUmVkdWNlcnMgPSBfZXh0cmFjdERhdGFGcm9tTW9kZWwuY3VzdG9tUmVkdWNlcnMsXG4gICAgICBkZWZhdWx0U3RhdGUgPSBfZXh0cmFjdERhdGFGcm9tTW9kZWwuZGVmYXVsdFN0YXRlLFxuICAgICAgbGlzdGVuZXJBY3Rpb25DcmVhdG9ycyA9IF9leHRyYWN0RGF0YUZyb21Nb2RlbC5saXN0ZW5lckFjdGlvbkNyZWF0b3JzLFxuICAgICAgbGlzdGVuZXJBY3Rpb25NYXAgPSBfZXh0cmFjdERhdGFGcm9tTW9kZWwubGlzdGVuZXJBY3Rpb25NYXAsXG4gICAgICBwZXJzaXN0ZW5jZUNvbmZpZyA9IF9leHRyYWN0RGF0YUZyb21Nb2RlbC5wZXJzaXN0ZW5jZUNvbmZpZztcblxuICB2YXIgcm9vdFJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKGRpc2FibGVJbW1lciwgYWN0aW9uUmVkdWNlcnNEaWN0LCBjdXN0b21SZWR1Y2VycywgY29tcHV0ZWRQcm9wZXJ0aWVzKTtcbiAgcmV0dXJuIHtcbiAgICBhY3Rpb25DcmVhdG9yRGljdDogYWN0aW9uQ3JlYXRvckRpY3QsXG4gICAgYWN0aW9uQ3JlYXRvcnM6IGFjdGlvbkNyZWF0b3JzLFxuICAgIGNvbXB1dGVkUHJvcGVydGllczogY29tcHV0ZWRQcm9wZXJ0aWVzLFxuICAgIGNvbXB1dGVkU3RhdGU6IGNvbXB1dGVkU3RhdGUsXG4gICAgZGVmYXVsdFN0YXRlOiBkZWZhdWx0U3RhdGUsXG4gICAgbGlzdGVuZXJBY3Rpb25DcmVhdG9yczogbGlzdGVuZXJBY3Rpb25DcmVhdG9ycyxcbiAgICBsaXN0ZW5lckFjdGlvbk1hcDogbGlzdGVuZXJBY3Rpb25NYXAsXG4gICAgcGVyc2lzdGVuY2VDb25maWc6IHBlcnNpc3RlbmNlQ29uZmlnLFxuICAgIHJlZHVjZXI6IHJlZHVjZXJFbmhhbmNlcihyb290UmVkdWNlcilcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU3RvcmUobW9kZWwsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBtb2RlbENsb25lID0gZGVlcENsb25lU3RhdGVXaXRob3V0Q29tcHV0ZWQobW9kZWwpO1xuICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgY29tcG9zZSQxID0gX29wdGlvbnMuY29tcG9zZSxcbiAgICAgIF9vcHRpb25zJGRldlRvb2xzID0gX29wdGlvbnMuZGV2VG9vbHMsXG4gICAgICBkZXZUb29scyA9IF9vcHRpb25zJGRldlRvb2xzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkZGV2VG9vbHMsXG4gICAgICBfb3B0aW9ucyRkaXNhYmxlSW1tZXIgPSBfb3B0aW9ucy5kaXNhYmxlSW1tZXIsXG4gICAgICBkaXNhYmxlSW1tZXIgPSBfb3B0aW9ucyRkaXNhYmxlSW1tZXIgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkZGlzYWJsZUltbWVyLFxuICAgICAgX29wdGlvbnMkZW5oYW5jZXJzID0gX29wdGlvbnMuZW5oYW5jZXJzLFxuICAgICAgZW5oYW5jZXJzID0gX29wdGlvbnMkZW5oYW5jZXJzID09PSB2b2lkIDAgPyBbXSA6IF9vcHRpb25zJGVuaGFuY2VycyxcbiAgICAgIF9vcHRpb25zJGluaXRpYWxTdGF0ZSA9IF9vcHRpb25zLmluaXRpYWxTdGF0ZSxcbiAgICAgIGluaXRpYWxTdGF0ZSA9IF9vcHRpb25zJGluaXRpYWxTdGF0ZSA9PT0gdm9pZCAwID8ge30gOiBfb3B0aW9ucyRpbml0aWFsU3RhdGUsXG4gICAgICBpbmplY3Rpb25zID0gX29wdGlvbnMuaW5qZWN0aW9ucyxcbiAgICAgIF9vcHRpb25zJG1pZGRsZXdhcmUgPSBfb3B0aW9ucy5taWRkbGV3YXJlLFxuICAgICAgbWlkZGxld2FyZSA9IF9vcHRpb25zJG1pZGRsZXdhcmUgPT09IHZvaWQgMCA/IFtdIDogX29wdGlvbnMkbWlkZGxld2FyZSxcbiAgICAgIF9vcHRpb25zJG1vY2tBY3Rpb25zID0gX29wdGlvbnMubW9ja0FjdGlvbnMsXG4gICAgICBtb2NrQWN0aW9ucyA9IF9vcHRpb25zJG1vY2tBY3Rpb25zID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJG1vY2tBY3Rpb25zLFxuICAgICAgX29wdGlvbnMkbmFtZSA9IF9vcHRpb25zLm5hbWUsXG4gICAgICBzdG9yZU5hbWUgPSBfb3B0aW9ucyRuYW1lID09PSB2b2lkIDAgPyBcIkVhc3lQZWFzeVN0b3JlXCIgOiBfb3B0aW9ucyRuYW1lLFxuICAgICAgX29wdGlvbnMkcmVkdWNlckVuaGFuID0gX29wdGlvbnMucmVkdWNlckVuaGFuY2VyLFxuICAgICAgcmVkdWNlckVuaGFuY2VyID0gX29wdGlvbnMkcmVkdWNlckVuaGFuID09PSB2b2lkIDAgPyBmdW5jdGlvbiAocm9vdFJlZHVjZXIpIHtcbiAgICByZXR1cm4gcm9vdFJlZHVjZXI7XG4gIH0gOiBfb3B0aW9ucyRyZWR1Y2VyRW5oYW47XG5cbiAgdmFyIGJpbmRSZXBsYWNlU3RhdGUgPSBmdW5jdGlvbiBiaW5kUmVwbGFjZVN0YXRlKG1vZGVsRGVmKSB7XG4gICAgcmV0dXJuIF9leHRlbmRzKHt9LCBtb2RlbERlZiwge1xuICAgICAgZVBSUzogYWN0aW9uKGZ1bmN0aW9uIChfLCBwYXlsb2FkKSB7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICB9KTtcbiAgfTtcblxuICB2YXIgcmVmZXJlbmNlcyA9IHt9O1xuICB2YXIgbW9kZWxEZWZpbml0aW9uID0gYmluZFJlcGxhY2VTdGF0ZShtb2RlbENsb25lKTtcbiAgdmFyIG1vY2tlZEFjdGlvbnMgPSBbXTtcblxuICB2YXIgcGVyc2lzdEtleSA9IGZ1bmN0aW9uIHBlcnNpc3RLZXkodGFyZ2V0UGF0aCkge1xuICAgIHJldHVybiBcIltcIiArIHN0b3JlTmFtZSArIFwiXUBcIiArIHRhcmdldFBhdGguam9pbignLicpO1xuICB9O1xuXG4gIHZhciBwZXJzaXN0b3IgPSBjcmVhdGVQZXJzaXN0b3IocGVyc2lzdEtleSwgcmVmZXJlbmNlcyk7XG4gIHZhciBwZXJzaXN0TWlkZGxld2FyZSA9IGNyZWF0ZVBlcnNpc3RNaWRkbGV3YXJlKHBlcnNpc3RvciwgcmVmZXJlbmNlcyk7XG4gIHZhciBjbGVhclBlcnNpc3RhbmNlID0gY3JlYXRlUGVyc2lzdGVuY2VDbGVhcmVyKHBlcnNpc3RLZXksIHJlZmVyZW5jZXMpO1xuXG4gIHZhciByZXBsYWNlU3RhdGUgPSBmdW5jdGlvbiByZXBsYWNlU3RhdGUobmV4dFN0YXRlKSB7XG4gICAgcmV0dXJuIHJlZmVyZW5jZXMuaW50ZXJuYWxzLmFjdGlvbkNyZWF0b3JEaWN0WydAYWN0aW9uLmVQUlMnXShuZXh0U3RhdGUpO1xuICB9O1xuXG4gIHZhciBiaW5kU3RvcmVJbnRlcm5hbHMgPSBmdW5jdGlvbiBiaW5kU3RvcmVJbnRlcm5hbHMoc3RhdGUpIHtcbiAgICBpZiAoc3RhdGUgPT09IHZvaWQgMCkge1xuICAgICAgc3RhdGUgPSB7fTtcbiAgICB9XG5cbiAgICByZWZlcmVuY2VzLmludGVybmFscyA9IGNyZWF0ZVN0b3JlSW50ZXJuYWxzKHtcbiAgICAgIGRpc2FibGVJbW1lcjogZGlzYWJsZUltbWVyLFxuICAgICAgaW5pdGlhbFN0YXRlOiBzdGF0ZSxcbiAgICAgIGluamVjdGlvbnM6IGluamVjdGlvbnMsXG4gICAgICBtb2RlbDogbW9kZWxEZWZpbml0aW9uLFxuICAgICAgcmVkdWNlckVuaGFuY2VyOiByZWR1Y2VyRW5oYW5jZXIsXG4gICAgICByZWZlcmVuY2VzOiByZWZlcmVuY2VzXG4gICAgfSk7XG4gIH07XG5cbiAgdmFyIG1vY2tBY3Rpb25zTWlkZGxld2FyZSA9IGZ1bmN0aW9uIG1vY2tBY3Rpb25zTWlkZGxld2FyZSgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhY3Rpb24pIHtcbiAgICAgICAgaWYgKGFjdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgbW9ja2VkQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuXG4gIHZhciBjb21wb3NlRW5oYW5jZXJzID0gY29tcG9zZSQxIHx8IChkZXZUb29scyAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fQ09NUE9TRV9fID8gd2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX0NPTVBPU0VfXyh7XG4gICAgbmFtZTogc3RvcmVOYW1lXG4gIH0pIDogY29tcG9zZSk7XG4gIGJpbmRTdG9yZUludGVybmFscyhpbml0aWFsU3RhdGUpO1xuICB2YXIgZWFzeVBlYXN5TWlkZGxld2FyZSA9IFtjcmVhdGVDb21wdXRlZFByb3BlcnRpZXNNaWRkbGV3YXJlKHJlZmVyZW5jZXMpLCByZWR1eFRodW5rXS5jb25jYXQobWlkZGxld2FyZSwgW2NyZWF0ZUxpc3RlbmVyTWlkZGxld2FyZShyZWZlcmVuY2VzKSwgcGVyc2lzdE1pZGRsZXdhcmVdKTtcblxuICBpZiAobW9ja0FjdGlvbnMpIHtcbiAgICBlYXN5UGVhc3lNaWRkbGV3YXJlLnB1c2gobW9ja0FjdGlvbnNNaWRkbGV3YXJlKTtcbiAgfVxuXG4gIHZhciBzdG9yZSA9IGNyZWF0ZVN0b3JlJDEocmVmZXJlbmNlcy5pbnRlcm5hbHMucmVkdWNlciwgcmVmZXJlbmNlcy5pbnRlcm5hbHMuZGVmYXVsdFN0YXRlLCBjb21wb3NlRW5oYW5jZXJzLmFwcGx5KHZvaWQgMCwgW2FwcGx5TWlkZGxld2FyZS5hcHBseSh2b2lkIDAsIGVhc3lQZWFzeU1pZGRsZXdhcmUpXS5jb25jYXQoZW5oYW5jZXJzKSkpO1xuICBzdG9yZS5zdWJzY3JpYmUoZnVuY3Rpb24gKCkge1xuICAgIHJlZmVyZW5jZXMuaW50ZXJuYWxzLmNvbXB1dGVkU3RhdGUuaXNJblJlZHVjZXIgPSBmYWxzZTtcbiAgfSk7XG4gIHJlZmVyZW5jZXMuZGlzcGF0Y2ggPSBzdG9yZS5kaXNwYXRjaDtcbiAgcmVmZXJlbmNlcy5nZXRTdGF0ZSA9IHN0b3JlLmdldFN0YXRlO1xuXG4gIHZhciBiaW5kQWN0aW9uQ3JlYXRvcnMgPSBmdW5jdGlvbiBiaW5kQWN0aW9uQ3JlYXRvcnMoKSB7XG4gICAgT2JqZWN0LmtleXMoc3RvcmUuZGlzcGF0Y2gpLmZvckVhY2goZnVuY3Rpb24gKGFjdGlvbnNLZXkpIHtcbiAgICAgIGRlbGV0ZSBzdG9yZS5kaXNwYXRjaFthY3Rpb25zS2V5XTtcbiAgICB9KTtcbiAgICBPYmplY3Qua2V5cyhyZWZlcmVuY2VzLmludGVybmFscy5hY3Rpb25DcmVhdG9ycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBzdG9yZS5kaXNwYXRjaFtrZXldID0gcmVmZXJlbmNlcy5pbnRlcm5hbHMuYWN0aW9uQ3JlYXRvcnNba2V5XTtcbiAgICB9KTtcbiAgfTtcblxuICBiaW5kQWN0aW9uQ3JlYXRvcnMoKTtcblxuICB2YXIgcmViaW5kU3RvcmUgPSBmdW5jdGlvbiByZWJpbmRTdG9yZShyZW1vdmVLZXkpIHtcbiAgICB2YXIgY3VycmVudFN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcblxuICAgIGlmIChyZW1vdmVLZXkpIHtcbiAgICAgIGRlbGV0ZSBjdXJyZW50U3RhdGVbcmVtb3ZlS2V5XTtcbiAgICB9XG5cbiAgICBiaW5kU3RvcmVJbnRlcm5hbHMoY3VycmVudFN0YXRlKTtcbiAgICBzdG9yZS5yZXBsYWNlUmVkdWNlcihyZWZlcmVuY2VzLmludGVybmFscy5yZWR1Y2VyKTtcbiAgICByZXBsYWNlU3RhdGUocmVmZXJlbmNlcy5pbnRlcm5hbHMuZGVmYXVsdFN0YXRlKTtcbiAgICBiaW5kQWN0aW9uQ3JlYXRvcnMoKTtcbiAgfTtcblxuICB2YXIgX3Jlc29sdmVSZWh5ZHJhdGlvbiA9IHJlaHlkcmF0ZVN0YXRlRnJvbVBlcnNpc3RJZk5lZWRlZChwZXJzaXN0S2V5LCByZXBsYWNlU3RhdGUsIHJlZmVyZW5jZXMpO1xuXG4gIHJldHVybiBPYmplY3QuYXNzaWduKHN0b3JlLCB7XG4gICAgYWRkTW9kZWw6IGZ1bmN0aW9uIGFkZE1vZGVsKGtleSwgbW9kZWxGb3JLZXkpIHtcbiAgICAgIGlmIChtb2RlbERlZmluaXRpb25ba2V5XSAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybihcImVhc3ktcGVhc3k6IFRoZSBzdG9yZSBtb2RlbCBhbHJlYWR5IGNvbnRhaW5zIGEgbW9kZWwgZGVmaW5pdGlvbiBmb3IgXFxcIlwiICsga2V5ICsgXCJcXFwiXCIpO1xuICAgICAgICBzdG9yZS5yZW1vdmVNb2RlbChrZXkpO1xuICAgICAgfVxuXG4gICAgICBtb2RlbERlZmluaXRpb25ba2V5XSA9IG1vZGVsRm9yS2V5O1xuICAgICAgcmViaW5kU3RvcmUoKTtcbiAgICB9LFxuICAgIGNsZWFyTW9ja2VkQWN0aW9uczogZnVuY3Rpb24gY2xlYXJNb2NrZWRBY3Rpb25zKCkge1xuICAgICAgbW9ja2VkQWN0aW9ucyA9IFtdO1xuICAgIH0sXG4gICAgZ2V0QWN0aW9uczogZnVuY3Rpb24gZ2V0QWN0aW9ucygpIHtcbiAgICAgIHJldHVybiByZWZlcmVuY2VzLmludGVybmFscy5hY3Rpb25DcmVhdG9ycztcbiAgICB9LFxuICAgIGdldExpc3RlbmVyczogZnVuY3Rpb24gZ2V0TGlzdGVuZXJzKCkge1xuICAgICAgcmV0dXJuIHJlZmVyZW5jZXMuaW50ZXJuYWxzLmxpc3RlbmVyQWN0aW9uQ3JlYXRvcnM7XG4gICAgfSxcbiAgICBnZXRNb2NrZWRBY3Rpb25zOiBmdW5jdGlvbiBnZXRNb2NrZWRBY3Rpb25zKCkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdChtb2NrZWRBY3Rpb25zKTtcbiAgICB9LFxuICAgIHBlcnNpc3Q6IHtcbiAgICAgIGNsZWFyOiBjbGVhclBlcnNpc3RhbmNlLFxuICAgICAgZmx1c2g6IGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgICAgICByZXR1cm4gcGVyc2lzdG9yLmZsdXNoKCk7XG4gICAgICB9LFxuICAgICAgcmVzb2x2ZVJlaHlkcmF0aW9uOiBmdW5jdGlvbiByZXNvbHZlUmVoeWRyYXRpb24oKSB7XG4gICAgICAgIHJldHVybiBfcmVzb2x2ZVJlaHlkcmF0aW9uO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVjb25maWd1cmU6IGZ1bmN0aW9uIHJlY29uZmlndXJlKG5ld01vZGVsKSB7XG4gICAgICBtb2RlbERlZmluaXRpb24gPSBiaW5kUmVwbGFjZVN0YXRlKG5ld01vZGVsKTtcbiAgICAgIHJlYmluZFN0b3JlKCk7XG4gICAgfSxcbiAgICByZW1vdmVNb2RlbDogZnVuY3Rpb24gcmVtb3ZlTW9kZWwoa2V5KSB7XG4gICAgICBpZiAoIW1vZGVsRGVmaW5pdGlvbltrZXldKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJlYXN5LXBlYXN5OiBUaGUgc3RvcmUgbW9kZWwgZG9lcyBub3QgY29udGFpbiBhIG1vZGVsIGRlZmluaXRpb24gZm9yIFxcXCJcIiArIGtleSArIFwiXFxcIlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIG1vZGVsRGVmaW5pdGlvbltrZXldO1xuICAgICAgcmViaW5kU3RvcmUoa2V5KTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9wcm9wLXR5cGVzICovXG5mdW5jdGlvbiBjcmVhdGVDb250ZXh0U3RvcmUobW9kZWwsIGNvbmZpZykge1xuICB2YXIgU3RvcmVDb250ZXh0ID0gY3JlYXRlQ29udGV4dCgpO1xuXG4gIGZ1bmN0aW9uIFByb3ZpZGVyKF9yZWYpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuLFxuICAgICAgICBpbml0aWFsRGF0YSA9IF9yZWYuaW5pdGlhbERhdGE7XG4gICAgdmFyIHN0b3JlID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gY3JlYXRlU3RvcmUodHlwZW9mIG1vZGVsID09PSAnZnVuY3Rpb24nID8gbW9kZWwoaW5pdGlhbERhdGEpIDogbW9kZWwsIGNvbmZpZyk7XG4gICAgfSwgW10pO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFN0b3JlQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgdmFsdWU6IHN0b3JlXG4gICAgfSwgY2hpbGRyZW4pO1xuICB9XG5cbiAgZnVuY3Rpb24gdXNlU3RvcmUoKSB7XG4gICAgcmV0dXJuIHVzZUNvbnRleHQoU3RvcmVDb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgUHJvdmlkZXI6IFByb3ZpZGVyLFxuICAgIHVzZVN0b3JlOiB1c2VTdG9yZSxcbiAgICB1c2VTdG9yZVN0YXRlOiBjcmVhdGVTdG9yZVN0YXRlSG9vayhTdG9yZUNvbnRleHQpLFxuICAgIHVzZVN0b3JlQWN0aW9uczogY3JlYXRlU3RvcmVBY3Rpb25zSG9vayhTdG9yZUNvbnRleHQpLFxuICAgIHVzZVN0b3JlRGlzcGF0Y2g6IGNyZWF0ZVN0b3JlRGlzcGF0Y2hIb29rKFN0b3JlQ29udGV4dCksXG4gICAgdXNlU3RvcmVSZWh5ZHJhdGVkOiBjcmVhdGVTdG9yZVJlaHlkcmF0ZWRIb29rKFN0b3JlQ29udGV4dClcbiAgfTtcbn1cblxuLyoqXG4gKiBTb21lIGdvb2QgcmVmZXJlbmNlcyBvbiB0aGUgdG9waWMgb2YgcmVpbml0aWFsaXNhdGlvbjpcbiAqIC0gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xNDgzMFxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudFN0b3JlKG1vZGVsLCBjb25maWcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVzZUxvY2FsU3RvcmUoaW5pdGlhbERhdGEpIHtcbiAgICB2YXIgc3RvcmUgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBjcmVhdGVTdG9yZSh0eXBlb2YgbW9kZWwgPT09ICdmdW5jdGlvbicgPyBtb2RlbChpbml0aWFsRGF0YSkgOiBtb2RlbCwgY29uZmlnKTtcbiAgICB9LCBbXSk7XG4gICAgdmFyIHByZXZpb3VzU3RhdGVSZWYgPSB1c2VSZWYoc3RvcmUuZ2V0U3RhdGUoKSk7XG5cbiAgICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHN0b3JlLmdldFN0YXRlKCk7XG4gICAgfSksXG4gICAgICAgIGN1cnJlbnRTdGF0ZSA9IF91c2VTdGF0ZVswXSxcbiAgICAgICAgc2V0Q3VycmVudFN0YXRlID0gX3VzZVN0YXRlWzFdO1xuXG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBzdG9yZS5zdWJzY3JpYmUoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbmV4dFN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcblxuICAgICAgICBpZiAocHJldmlvdXNTdGF0ZVJlZi5jdXJyZW50ICE9PSBuZXh0U3RhdGUpIHtcbiAgICAgICAgICBwcmV2aW91c1N0YXRlUmVmLmN1cnJlbnQgPSBuZXh0U3RhdGU7XG4gICAgICAgICAgc2V0Q3VycmVudFN0YXRlKG5leHRTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sIFtzdG9yZV0pO1xuICAgIHJldHVybiBbY3VycmVudFN0YXRlLCBzdG9yZS5nZXRBY3Rpb25zKCldO1xuICB9O1xufVxuXG4vKipcbiAqIFRoaXMgZmlsZSBoYXMgYmVlbiBjb3BpZWQgZnJvbSByZWR1eC1wZXJzaXN0LlxuICogVGhlIGludGVudGlvbiBiZWluZyB0byBzdXBwb3J0IGFzIG11Y2ggb2YgdGhlIHJlZHV4LXBlcnNpc3QgQVBJIGFzIHBvc3NpYmxlLlxuICovXG5mdW5jdGlvbiBjcmVhdGVUcmFuc2Zvcm0oaW5ib3VuZCwgb3V0Ym91bmQsIGNvbmZpZykge1xuICBpZiAoY29uZmlnID09PSB2b2lkIDApIHtcbiAgICBjb25maWcgPSB7fTtcbiAgfVxuXG4gIHZhciB3aGl0ZWxpc3QgPSBjb25maWcud2hpdGVsaXN0IHx8IG51bGw7XG4gIHZhciBibGFja2xpc3QgPSBjb25maWcuYmxhY2tsaXN0IHx8IG51bGw7XG5cbiAgZnVuY3Rpb24gd2hpdGVsaXN0QmxhY2tsaXN0Q2hlY2soa2V5KSB7XG4gICAgaWYgKHdoaXRlbGlzdCAmJiB3aGl0ZWxpc3QuaW5kZXhPZihrZXkpID09PSAtMSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKGJsYWNrbGlzdCAmJiBibGFja2xpc3QuaW5kZXhPZihrZXkpICE9PSAtMSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBpbjogZnVuY3Rpb24gX2luKGRhdGEsIGtleSwgZnVsbFN0YXRlKSB7XG4gICAgICByZXR1cm4gIXdoaXRlbGlzdEJsYWNrbGlzdENoZWNrKGtleSkgJiYgaW5ib3VuZCA/IGluYm91bmQoZGF0YSwga2V5LCBmdWxsU3RhdGUpIDogZGF0YTtcbiAgICB9LFxuICAgIG91dDogZnVuY3Rpb24gb3V0KGRhdGEsIGtleSwgZnVsbFN0YXRlKSB7XG4gICAgICByZXR1cm4gIXdoaXRlbGlzdEJsYWNrbGlzdENoZWNrKGtleSkgJiYgb3V0Ym91bmQgPyBvdXRib3VuZChkYXRhLCBrZXksIGZ1bGxTdGF0ZSkgOiBkYXRhO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gU3RvcmVQcm92aWRlcihfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgICBzdG9yZSA9IF9yZWYuc3RvcmU7XG4gIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFN0b3JlQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBzdG9yZVxuICB9LCBjaGlsZHJlbik7XG59XG5cbi8qKlxuICogVGhlIGF1dG8gZnJlZXplIGZlYXR1cmUgb2YgaW1tZXIgZG9lc24ndCBzZWVtIHRvIHdvcmsgaW4gb3VyIHRlc3RpbmcuIFdlIGhhdmVcbiAqIGV4cGxpY2l0bHkgZGlzYWJsZWQgaXQgdG8gYXZvaWQgcGVyZiBpc3N1ZXMuXG4gKi9cblxuc2V0QXV0b0ZyZWV6ZShmYWxzZSk7XG5cbmV4cG9ydCB7IFN0b3JlUHJvdmlkZXIsIGFjdGlvbiwgYWN0aW9uT24sIGNvbXB1dGVkLCBjcmVhdGVDb21wb25lbnRTdG9yZSwgY3JlYXRlQ29udGV4dFN0b3JlLCBjcmVhdGVTdG9yZSwgY3JlYXRlVHJhbnNmb3JtLCBjcmVhdGVUeXBlZEhvb2tzLCBkZWJ1ZywgbWVtbywgcGVyc2lzdCwgcmVkdWNlciwgdGh1bmssIHRodW5rT24sIHVzZVN0b3JlLCB1c2VTdG9yZUFjdGlvbnMsIHVzZVN0b3JlRGlzcGF0Y2gsIHVzZVN0b3JlUmVoeWRyYXRlZCwgdXNlU3RvcmVTdGF0ZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZWFzeS1wZWFzeS5lc20uanMubWFwXG4iLCIvKipcbiAqIFRlc3RzIHdoZXRoZXIgb3Igbm90IGFuIG9iamVjdCBpcyBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWwgVGhlIG9iamVjdCB0byB0ZXN0LlxuICogQHJldHVybiB7Qm9vbGVhbn0gYHRydWVgIGlmIGB2YWxgIGlzIGFuIGFycmF5LCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqIEBleGFtcGxlXG4gKlxuICogICAgICBfaXNBcnJheShbXSk7IC8vPT4gdHJ1ZVxuICogICAgICBfaXNBcnJheShudWxsKTsgLy89PiBmYWxzZVxuICogICAgICBfaXNBcnJheSh7fSk7IC8vPT4gZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBfaXNBcnJheSh2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPSBudWxsICYmIHZhbC5sZW5ndGggPj0gMCAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2lzVHJhbnNmb3JtZXIob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiB0eXBlb2Ygb2JqWydAQHRyYW5zZHVjZXIvc3RlcCddID09PSAnZnVuY3Rpb24nO1xufSIsImltcG9ydCBfaXNBcnJheSBmcm9tIFwiLi9faXNBcnJheS5qc1wiO1xuaW1wb3J0IF9pc1RyYW5zZm9ybWVyIGZyb20gXCIuL19pc1RyYW5zZm9ybWVyLmpzXCI7XG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGRpc3BhdGNoZXMgd2l0aCBkaWZmZXJlbnQgc3RyYXRlZ2llcyBiYXNlZCBvbiB0aGVcbiAqIG9iamVjdCBpbiBsaXN0IHBvc2l0aW9uIChsYXN0IGFyZ3VtZW50KS4gSWYgaXQgaXMgYW4gYXJyYXksIGV4ZWN1dGVzIFtmbl0uXG4gKiBPdGhlcndpc2UsIGlmIGl0IGhhcyBhIGZ1bmN0aW9uIHdpdGggb25lIG9mIHRoZSBnaXZlbiBtZXRob2QgbmFtZXMsIGl0IHdpbGxcbiAqIGV4ZWN1dGUgdGhhdCBmdW5jdGlvbiAoZnVuY3RvciBjYXNlKS4gT3RoZXJ3aXNlLCBpZiBpdCBpcyBhIHRyYW5zZm9ybWVyLFxuICogdXNlcyB0cmFuc2R1Y2VyIFt4Zl0gdG8gcmV0dXJuIGEgbmV3IHRyYW5zZm9ybWVyICh0cmFuc2R1Y2VyIGNhc2UpLlxuICogT3RoZXJ3aXNlLCBpdCB3aWxsIGRlZmF1bHQgdG8gZXhlY3V0aW5nIFtmbl0uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IG1ldGhvZE5hbWVzIHByb3BlcnRpZXMgdG8gY2hlY2sgZm9yIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB4ZiB0cmFuc2R1Y2VyIHRvIGluaXRpYWxpemUgaWYgb2JqZWN0IGlzIHRyYW5zZm9ybWVyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBkZWZhdWx0IHJhbWRhIGltcGxlbWVudGF0aW9uXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gQSBmdW5jdGlvbiB0aGF0IGRpc3BhdGNoZXMgb24gb2JqZWN0IGluIGxpc3QgcG9zaXRpb25cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZGlzcGF0Y2hhYmxlKG1ldGhvZE5hbWVzLCB4ZiwgZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZuKCk7XG4gICAgfVxuXG4gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICAgIHZhciBvYmogPSBhcmdzLnBvcCgpO1xuXG4gICAgaWYgKCFfaXNBcnJheShvYmopKSB7XG4gICAgICB2YXIgaWR4ID0gMDtcblxuICAgICAgd2hpbGUgKGlkeCA8IG1ldGhvZE5hbWVzLmxlbmd0aCkge1xuICAgICAgICBpZiAodHlwZW9mIG9ialttZXRob2ROYW1lc1tpZHhdXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiBvYmpbbWV0aG9kTmFtZXNbaWR4XV0uYXBwbHkob2JqLCBhcmdzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlkeCArPSAxO1xuICAgICAgfVxuXG4gICAgICBpZiAoX2lzVHJhbnNmb3JtZXIob2JqKSkge1xuICAgICAgICB2YXIgdHJhbnNkdWNlciA9IHhmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgICAgICByZXR1cm4gdHJhbnNkdWNlcihvYmopO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pc1N0cmluZyh4KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeCkgPT09ICdbb2JqZWN0IFN0cmluZ10nO1xufSIsImltcG9ydCBfY3VycnkxIGZyb20gXCIuL19jdXJyeTEuanNcIjtcbmltcG9ydCBfaXNBcnJheSBmcm9tIFwiLi9faXNBcnJheS5qc1wiO1xuaW1wb3J0IF9pc1N0cmluZyBmcm9tIFwiLi9faXNTdHJpbmcuanNcIjtcbi8qKlxuICogVGVzdHMgd2hldGhlciBvciBub3QgYW4gb2JqZWN0IGlzIHNpbWlsYXIgdG8gYW4gYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYXRlZ29yeSBUeXBlXG4gKiBAY2F0ZWdvcnkgTGlzdFxuICogQHNpZyAqIC0+IEJvb2xlYW5cbiAqIEBwYXJhbSB7Kn0geCBUaGUgb2JqZWN0IHRvIHRlc3QuXG4gKiBAcmV0dXJuIHtCb29sZWFufSBgdHJ1ZWAgaWYgYHhgIGhhcyBhIG51bWVyaWMgbGVuZ3RoIHByb3BlcnR5IGFuZCBleHRyZW1lIGluZGljZXMgZGVmaW5lZDsgYGZhbHNlYCBvdGhlcndpc2UuXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgICAgX2lzQXJyYXlMaWtlKFtdKTsgLy89PiB0cnVlXG4gKiAgICAgIF9pc0FycmF5TGlrZSh0cnVlKTsgLy89PiBmYWxzZVxuICogICAgICBfaXNBcnJheUxpa2Uoe30pOyAvLz0+IGZhbHNlXG4gKiAgICAgIF9pc0FycmF5TGlrZSh7bGVuZ3RoOiAxMH0pOyAvLz0+IGZhbHNlXG4gKiAgICAgIF9pc0FycmF5TGlrZSh7MDogJ3plcm8nLCA5OiAnbmluZScsIGxlbmd0aDogMTB9KTsgLy89PiB0cnVlXG4gKi9cblxudmFyIF9pc0FycmF5TGlrZSA9XG4vKiNfX1BVUkVfXyovXG5fY3VycnkxKGZ1bmN0aW9uIGlzQXJyYXlMaWtlKHgpIHtcbiAgaWYgKF9pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoIXgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIHggIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKF9pc1N0cmluZyh4KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh4Lm5vZGVUeXBlID09PSAxKSB7XG4gICAgcmV0dXJuICEheC5sZW5ndGg7XG4gIH1cblxuICBpZiAoeC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh4Lmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4geC5oYXNPd25Qcm9wZXJ0eSgwKSAmJiB4Lmhhc093blByb3BlcnR5KHgubGVuZ3RoIC0gMSk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgX2lzQXJyYXlMaWtlOyIsInZhciBYV3JhcCA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFhXcmFwKGZuKSB7XG4gICAgdGhpcy5mID0gZm47XG4gIH1cblxuICBYV3JhcC5wcm90b3R5cGVbJ0BAdHJhbnNkdWNlci9pbml0J10gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbml0IG5vdCBpbXBsZW1lbnRlZCBvbiBYV3JhcCcpO1xuICB9O1xuXG4gIFhXcmFwLnByb3RvdHlwZVsnQEB0cmFuc2R1Y2VyL3Jlc3VsdCddID0gZnVuY3Rpb24gKGFjYykge1xuICAgIHJldHVybiBhY2M7XG4gIH07XG5cbiAgWFdyYXAucHJvdG90eXBlWydAQHRyYW5zZHVjZXIvc3RlcCddID0gZnVuY3Rpb24gKGFjYywgeCkge1xuICAgIHJldHVybiB0aGlzLmYoYWNjLCB4KTtcbiAgfTtcblxuICByZXR1cm4gWFdyYXA7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF94d3JhcChmbikge1xuICByZXR1cm4gbmV3IFhXcmFwKGZuKTtcbn0iLCJpbXBvcnQgX2FyaXR5IGZyb20gXCIuL2ludGVybmFsL19hcml0eS5qc1wiO1xuaW1wb3J0IF9jdXJyeTIgZnJvbSBcIi4vaW50ZXJuYWwvX2N1cnJ5Mi5qc1wiO1xuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpcyBib3VuZCB0byBhIGNvbnRleHQuXG4gKiBOb3RlOiBgUi5iaW5kYCBkb2VzIG5vdCBwcm92aWRlIHRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50LWJpbmRpbmcgY2FwYWJpbGl0aWVzIG9mXG4gKiBbRnVuY3Rpb24ucHJvdG90eXBlLmJpbmRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0Z1bmN0aW9uL2JpbmQpLlxuICpcbiAqIEBmdW5jXG4gKiBAbWVtYmVyT2YgUlxuICogQHNpbmNlIHYwLjYuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAc2lnICgqIC0+ICopIC0+IHsqfSAtPiAoKiAtPiAqKVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIGJpbmQgdG8gY29udGV4dFxuICogQHBhcmFtIHtPYmplY3R9IHRoaXNPYmogVGhlIGNvbnRleHQgdG8gYmluZCBgZm5gIHRvXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gQSBmdW5jdGlvbiB0aGF0IHdpbGwgZXhlY3V0ZSBpbiB0aGUgY29udGV4dCBvZiBgdGhpc09iamAuXG4gKiBAc2VlIFIucGFydGlhbFxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIGNvbnN0IGxvZyA9IFIuYmluZChjb25zb2xlLmxvZywgY29uc29sZSk7XG4gKiAgICAgIFIucGlwZShSLmFzc29jKCdhJywgMiksIFIudGFwKGxvZyksIFIuYXNzb2MoJ2EnLCAzKSkoe2E6IDF9KTsgLy89PiB7YTogM31cbiAqICAgICAgLy8gbG9ncyB7YTogMn1cbiAqIEBzeW1iIFIuYmluZChmLCBvKShhLCBiKSA9IGYuY2FsbChvLCBhLCBiKVxuICovXG5cbnZhciBiaW5kID1cbi8qI19fUFVSRV9fKi9cbl9jdXJyeTIoZnVuY3Rpb24gYmluZChmbiwgdGhpc09iaikge1xuICByZXR1cm4gX2FyaXR5KGZuLmxlbmd0aCwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGlzT2JqLCBhcmd1bWVudHMpO1xuICB9KTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBiaW5kOyIsImltcG9ydCBfaXNBcnJheUxpa2UgZnJvbSBcIi4vX2lzQXJyYXlMaWtlLmpzXCI7XG5pbXBvcnQgX3h3cmFwIGZyb20gXCIuL194d3JhcC5qc1wiO1xuaW1wb3J0IGJpbmQgZnJvbSBcIi4uL2JpbmQuanNcIjtcblxuZnVuY3Rpb24gX2FycmF5UmVkdWNlKHhmLCBhY2MsIGxpc3QpIHtcbiAgdmFyIGlkeCA9IDA7XG4gIHZhciBsZW4gPSBsaXN0Lmxlbmd0aDtcblxuICB3aGlsZSAoaWR4IDwgbGVuKSB7XG4gICAgYWNjID0geGZbJ0BAdHJhbnNkdWNlci9zdGVwJ10oYWNjLCBsaXN0W2lkeF0pO1xuXG4gICAgaWYgKGFjYyAmJiBhY2NbJ0BAdHJhbnNkdWNlci9yZWR1Y2VkJ10pIHtcbiAgICAgIGFjYyA9IGFjY1snQEB0cmFuc2R1Y2VyL3ZhbHVlJ107XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZHggKz0gMTtcbiAgfVxuXG4gIHJldHVybiB4ZlsnQEB0cmFuc2R1Y2VyL3Jlc3VsdCddKGFjYyk7XG59XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVJlZHVjZSh4ZiwgYWNjLCBpdGVyKSB7XG4gIHZhciBzdGVwID0gaXRlci5uZXh0KCk7XG5cbiAgd2hpbGUgKCFzdGVwLmRvbmUpIHtcbiAgICBhY2MgPSB4ZlsnQEB0cmFuc2R1Y2VyL3N0ZXAnXShhY2MsIHN0ZXAudmFsdWUpO1xuXG4gICAgaWYgKGFjYyAmJiBhY2NbJ0BAdHJhbnNkdWNlci9yZWR1Y2VkJ10pIHtcbiAgICAgIGFjYyA9IGFjY1snQEB0cmFuc2R1Y2VyL3ZhbHVlJ107XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBzdGVwID0gaXRlci5uZXh0KCk7XG4gIH1cblxuICByZXR1cm4geGZbJ0BAdHJhbnNkdWNlci9yZXN1bHQnXShhY2MpO1xufVxuXG5mdW5jdGlvbiBfbWV0aG9kUmVkdWNlKHhmLCBhY2MsIG9iaiwgbWV0aG9kTmFtZSkge1xuICByZXR1cm4geGZbJ0BAdHJhbnNkdWNlci9yZXN1bHQnXShvYmpbbWV0aG9kTmFtZV0oYmluZCh4ZlsnQEB0cmFuc2R1Y2VyL3N0ZXAnXSwgeGYpLCBhY2MpKTtcbn1cblxudmFyIHN5bUl0ZXJhdG9yID0gdHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgPyBTeW1ib2wuaXRlcmF0b3IgOiAnQEBpdGVyYXRvcic7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfcmVkdWNlKGZuLCBhY2MsIGxpc3QpIHtcbiAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZuID0gX3h3cmFwKGZuKTtcbiAgfVxuXG4gIGlmIChfaXNBcnJheUxpa2UobGlzdCkpIHtcbiAgICByZXR1cm4gX2FycmF5UmVkdWNlKGZuLCBhY2MsIGxpc3QpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBsaXN0WydmYW50YXN5LWxhbmQvcmVkdWNlJ10gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gX21ldGhvZFJlZHVjZShmbiwgYWNjLCBsaXN0LCAnZmFudGFzeS1sYW5kL3JlZHVjZScpO1xuICB9XG5cbiAgaWYgKGxpc3Rbc3ltSXRlcmF0b3JdICE9IG51bGwpIHtcbiAgICByZXR1cm4gX2l0ZXJhYmxlUmVkdWNlKGZuLCBhY2MsIGxpc3Rbc3ltSXRlcmF0b3JdKCkpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBsaXN0Lm5leHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gX2l0ZXJhYmxlUmVkdWNlKGZuLCBhY2MsIGxpc3QpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBsaXN0LnJlZHVjZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBfbWV0aG9kUmVkdWNlKGZuLCBhY2MsIGxpc3QsICdyZWR1Y2UnKTtcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlZHVjZTogbGlzdCBtdXN0IGJlIGFycmF5IG9yIGl0ZXJhYmxlJyk7XG59IiwiZXhwb3J0IGRlZmF1bHQge1xuICBpbml0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMueGZbJ0BAdHJhbnNkdWNlci9pbml0J10oKTtcbiAgfSxcbiAgcmVzdWx0OiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgcmV0dXJuIHRoaXMueGZbJ0BAdHJhbnNkdWNlci9yZXN1bHQnXShyZXN1bHQpO1xuICB9XG59OyIsImltcG9ydCBfY3VycnkyIGZyb20gXCIuL19jdXJyeTIuanNcIjtcbmltcG9ydCBfeGZCYXNlIGZyb20gXCIuL194ZkJhc2UuanNcIjtcblxudmFyIFhGaWx0ZXIgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBYRmlsdGVyKGYsIHhmKSB7XG4gICAgdGhpcy54ZiA9IHhmO1xuICAgIHRoaXMuZiA9IGY7XG4gIH1cblxuICBYRmlsdGVyLnByb3RvdHlwZVsnQEB0cmFuc2R1Y2VyL2luaXQnXSA9IF94ZkJhc2UuaW5pdDtcbiAgWEZpbHRlci5wcm90b3R5cGVbJ0BAdHJhbnNkdWNlci9yZXN1bHQnXSA9IF94ZkJhc2UucmVzdWx0O1xuXG4gIFhGaWx0ZXIucHJvdG90eXBlWydAQHRyYW5zZHVjZXIvc3RlcCddID0gZnVuY3Rpb24gKHJlc3VsdCwgaW5wdXQpIHtcbiAgICByZXR1cm4gdGhpcy5mKGlucHV0KSA/IHRoaXMueGZbJ0BAdHJhbnNkdWNlci9zdGVwJ10ocmVzdWx0LCBpbnB1dCkgOiByZXN1bHQ7XG4gIH07XG5cbiAgcmV0dXJuIFhGaWx0ZXI7XG59KCk7XG5cbnZhciBfeGZpbHRlciA9XG4vKiNfX1BVUkVfXyovXG5fY3VycnkyKGZ1bmN0aW9uIF94ZmlsdGVyKGYsIHhmKSB7XG4gIHJldHVybiBuZXcgWEZpbHRlcihmLCB4Zik7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgX3hmaWx0ZXI7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2hhcyhwcm9wLCBvYmopIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufSIsImltcG9ydCBfaGFzIGZyb20gXCIuL19oYXMuanNcIjtcbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbnZhciBfaXNBcmd1bWVudHMgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChhcmd1bWVudHMpID09PSAnW29iamVjdCBBcmd1bWVudHNdJyA/IGZ1bmN0aW9uIF9pc0FyZ3VtZW50cyh4KSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoeCkgPT09ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuICB9IDogZnVuY3Rpb24gX2lzQXJndW1lbnRzKHgpIHtcbiAgICByZXR1cm4gX2hhcygnY2FsbGVlJywgeCk7XG4gIH07XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IF9pc0FyZ3VtZW50czsiLCJpbXBvcnQgX2N1cnJ5MSBmcm9tIFwiLi9pbnRlcm5hbC9fY3VycnkxLmpzXCI7XG5pbXBvcnQgX2hhcyBmcm9tIFwiLi9pbnRlcm5hbC9faGFzLmpzXCI7XG5pbXBvcnQgX2lzQXJndW1lbnRzIGZyb20gXCIuL2ludGVybmFsL19pc0FyZ3VtZW50cy5qc1wiOyAvLyBjb3ZlciBJRSA8IDkga2V5cyBpc3N1ZXNcblxudmFyIGhhc0VudW1CdWcgPSAhXG4vKiNfX1BVUkVfXyovXG57XG4gIHRvU3RyaW5nOiBudWxsXG59LnByb3BlcnR5SXNFbnVtZXJhYmxlKCd0b1N0cmluZycpO1xudmFyIG5vbkVudW1lcmFibGVQcm9wcyA9IFsnY29uc3RydWN0b3InLCAndmFsdWVPZicsICdpc1Byb3RvdHlwZU9mJywgJ3RvU3RyaW5nJywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJ2hhc093blByb3BlcnR5JywgJ3RvTG9jYWxlU3RyaW5nJ107IC8vIFNhZmFyaSBidWdcblxudmFyIGhhc0FyZ3NFbnVtQnVnID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIHJldHVybiBhcmd1bWVudHMucHJvcGVydHlJc0VudW1lcmFibGUoJ2xlbmd0aCcpO1xufSgpO1xuXG52YXIgY29udGFpbnMgPSBmdW5jdGlvbiBjb250YWlucyhsaXN0LCBpdGVtKSB7XG4gIHZhciBpZHggPSAwO1xuXG4gIHdoaWxlIChpZHggPCBsaXN0Lmxlbmd0aCkge1xuICAgIGlmIChsaXN0W2lkeF0gPT09IGl0ZW0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlkeCArPSAxO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcbi8qKlxuICogUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgYWxsIHRoZSBlbnVtZXJhYmxlIG93biBwcm9wZXJ0aWVzIG9mXG4gKiB0aGUgc3VwcGxpZWQgb2JqZWN0LlxuICogTm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgb3V0cHV0IGFycmF5IGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIGNvbnNpc3RlbnRcbiAqIGFjcm9zcyBkaWZmZXJlbnQgSlMgcGxhdGZvcm1zLlxuICpcbiAqIEBmdW5jXG4gKiBAbWVtYmVyT2YgUlxuICogQHNpbmNlIHYwLjEuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHNpZyB7azogdn0gLT4gW2tdXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqIFRoZSBvYmplY3QgdG8gZXh0cmFjdCBwcm9wZXJ0aWVzIGZyb21cbiAqIEByZXR1cm4ge0FycmF5fSBBbiBhcnJheSBvZiB0aGUgb2JqZWN0J3Mgb3duIHByb3BlcnRpZXMuXG4gKiBAc2VlIFIua2V5c0luLCBSLnZhbHVlc1xuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIFIua2V5cyh7YTogMSwgYjogMiwgYzogM30pOyAvLz0+IFsnYScsICdiJywgJ2MnXVxuICovXG5cblxudmFyIGtleXMgPSB0eXBlb2YgT2JqZWN0LmtleXMgPT09ICdmdW5jdGlvbicgJiYgIWhhc0FyZ3NFbnVtQnVnID9cbi8qI19fUFVSRV9fKi9cbl9jdXJyeTEoZnVuY3Rpb24ga2V5cyhvYmopIHtcbiAgcmV0dXJuIE9iamVjdChvYmopICE9PSBvYmogPyBbXSA6IE9iamVjdC5rZXlzKG9iaik7XG59KSA6XG4vKiNfX1BVUkVfXyovXG5fY3VycnkxKGZ1bmN0aW9uIGtleXMob2JqKSB7XG4gIGlmIChPYmplY3Qob2JqKSAhPT0gb2JqKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdmFyIHByb3AsIG5JZHg7XG4gIHZhciBrcyA9IFtdO1xuXG4gIHZhciBjaGVja0FyZ3NMZW5ndGggPSBoYXNBcmdzRW51bUJ1ZyAmJiBfaXNBcmd1bWVudHMob2JqKTtcblxuICBmb3IgKHByb3AgaW4gb2JqKSB7XG4gICAgaWYgKF9oYXMocHJvcCwgb2JqKSAmJiAoIWNoZWNrQXJnc0xlbmd0aCB8fCBwcm9wICE9PSAnbGVuZ3RoJykpIHtcbiAgICAgIGtzW2tzLmxlbmd0aF0gPSBwcm9wO1xuICAgIH1cbiAgfVxuXG4gIGlmIChoYXNFbnVtQnVnKSB7XG4gICAgbklkeCA9IG5vbkVudW1lcmFibGVQcm9wcy5sZW5ndGggLSAxO1xuXG4gICAgd2hpbGUgKG5JZHggPj0gMCkge1xuICAgICAgcHJvcCA9IG5vbkVudW1lcmFibGVQcm9wc1tuSWR4XTtcblxuICAgICAgaWYgKF9oYXMocHJvcCwgb2JqKSAmJiAhY29udGFpbnMoa3MsIHByb3ApKSB7XG4gICAgICAgIGtzW2tzLmxlbmd0aF0gPSBwcm9wO1xuICAgICAgfVxuXG4gICAgICBuSWR4IC09IDE7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGtzO1xufSk7XG5leHBvcnQgZGVmYXVsdCBrZXlzOyIsImltcG9ydCBfY3VycnkyIGZyb20gXCIuL2ludGVybmFsL19jdXJyeTIuanNcIjtcbmltcG9ydCBfZGlzcGF0Y2hhYmxlIGZyb20gXCIuL2ludGVybmFsL19kaXNwYXRjaGFibGUuanNcIjtcbmltcG9ydCBfZmlsdGVyIGZyb20gXCIuL2ludGVybmFsL19maWx0ZXIuanNcIjtcbmltcG9ydCBfaXNPYmplY3QgZnJvbSBcIi4vaW50ZXJuYWwvX2lzT2JqZWN0LmpzXCI7XG5pbXBvcnQgX3JlZHVjZSBmcm9tIFwiLi9pbnRlcm5hbC9fcmVkdWNlLmpzXCI7XG5pbXBvcnQgX3hmaWx0ZXIgZnJvbSBcIi4vaW50ZXJuYWwvX3hmaWx0ZXIuanNcIjtcbmltcG9ydCBrZXlzIGZyb20gXCIuL2tleXMuanNcIjtcbi8qKlxuICogVGFrZXMgYSBwcmVkaWNhdGUgYW5kIGEgYEZpbHRlcmFibGVgLCBhbmQgcmV0dXJucyBhIG5ldyBmaWx0ZXJhYmxlIG9mIHRoZVxuICogc2FtZSB0eXBlIGNvbnRhaW5pbmcgdGhlIG1lbWJlcnMgb2YgdGhlIGdpdmVuIGZpbHRlcmFibGUgd2hpY2ggc2F0aXNmeSB0aGVcbiAqIGdpdmVuIHByZWRpY2F0ZS4gRmlsdGVyYWJsZSBvYmplY3RzIGluY2x1ZGUgcGxhaW4gb2JqZWN0cyBvciBhbnkgb2JqZWN0XG4gKiB0aGF0IGhhcyBhIGZpbHRlciBtZXRob2Qgc3VjaCBhcyBgQXJyYXlgLlxuICpcbiAqIERpc3BhdGNoZXMgdG8gdGhlIGBmaWx0ZXJgIG1ldGhvZCBvZiB0aGUgc2Vjb25kIGFyZ3VtZW50LCBpZiBwcmVzZW50LlxuICpcbiAqIEFjdHMgYXMgYSB0cmFuc2R1Y2VyIGlmIGEgdHJhbnNmb3JtZXIgaXMgZ2l2ZW4gaW4gbGlzdCBwb3NpdGlvbi5cbiAqXG4gKiBAZnVuY1xuICogQG1lbWJlck9mIFJcbiAqIEBzaW5jZSB2MC4xLjBcbiAqIEBjYXRlZ29yeSBMaXN0XG4gKiBAc2lnIEZpbHRlcmFibGUgZiA9PiAoYSAtPiBCb29sZWFuKSAtPiBmIGEgLT4gZiBhXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkXG4gKiBAcGFyYW0ge0FycmF5fSBmaWx0ZXJhYmxlXG4gKiBAcmV0dXJuIHtBcnJheX0gRmlsdGVyYWJsZVxuICogQHNlZSBSLnJlamVjdCwgUi50cmFuc2R1Y2UsIFIuYWRkSW5kZXhcbiAqIEBleGFtcGxlXG4gKlxuICogICAgICBjb25zdCBpc0V2ZW4gPSBuID0+IG4gJSAyID09PSAwO1xuICpcbiAqICAgICAgUi5maWx0ZXIoaXNFdmVuLCBbMSwgMiwgMywgNF0pOyAvLz0+IFsyLCA0XVxuICpcbiAqICAgICAgUi5maWx0ZXIoaXNFdmVuLCB7YTogMSwgYjogMiwgYzogMywgZDogNH0pOyAvLz0+IHtiOiAyLCBkOiA0fVxuICovXG5cbnZhciBmaWx0ZXIgPVxuLyojX19QVVJFX18qL1xuX2N1cnJ5Mihcbi8qI19fUFVSRV9fKi9cbl9kaXNwYXRjaGFibGUoWydmaWx0ZXInXSwgX3hmaWx0ZXIsIGZ1bmN0aW9uIChwcmVkLCBmaWx0ZXJhYmxlKSB7XG4gIHJldHVybiBfaXNPYmplY3QoZmlsdGVyYWJsZSkgPyBfcmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgIGlmIChwcmVkKGZpbHRlcmFibGVba2V5XSkpIHtcbiAgICAgIGFjY1trZXldID0gZmlsdGVyYWJsZVtrZXldO1xuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9LCBrZXlzKGZpbHRlcmFibGUpKSA6IC8vIGVsc2VcbiAgX2ZpbHRlcihwcmVkLCBmaWx0ZXJhYmxlKTtcbn0pKTtcblxuZXhwb3J0IGRlZmF1bHQgZmlsdGVyOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pc09iamVjdCh4KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeCkgPT09ICdbb2JqZWN0IE9iamVjdF0nO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9maWx0ZXIoZm4sIGxpc3QpIHtcbiAgdmFyIGlkeCA9IDA7XG4gIHZhciBsZW4gPSBsaXN0Lmxlbmd0aDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlIChpZHggPCBsZW4pIHtcbiAgICBpZiAoZm4obGlzdFtpZHhdKSkge1xuICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gbGlzdFtpZHhdO1xuICAgIH1cblxuICAgIGlkeCArPSAxO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn0iLCJpbXBvcnQgeyBjdXJyeU4sIGZpbHRlciB9IGZyb20gJ3JhbWRhJztcblxuZXhwb3J0IGNvbnN0IHNlYXJjaEZpbHRlciA9IGN1cnJ5TiggMiwgKCBwaHJhc2UsIGl0ZW0gKSA9PiB7XG5cdHJldHVybiBwaHJhc2UgPT09ICcnIHx8XG5cdCAgICAgICB0eXBlb2YgaXRlbS5uYW1lID09PSAnc3RyaW5nJyAmJiBpdGVtLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyggcGhyYXNlLnRvTG93ZXJDYXNlKCkgKTtcbn0gKTtcblxuZXhwb3J0IGNvbnN0IHNlYXJjaCA9ICggc2VhcmNoLCBpdGVtcyApID0+IGZpbHRlcihcblx0c2VhcmNoRmlsdGVyKCBzZWFyY2ggKSxcblx0aXRlbXMsXG4pO1xuIiwiLyoqXG4gKiBEZXRlcm1pbmUgaWYgdGhlIHBhc3NlZCBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IG5cbiAqIEBjYXRlZ29yeSBUeXBlXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5leHBvcnQgZGVmYXVsdCBOdW1iZXIuaXNJbnRlZ2VyIHx8IGZ1bmN0aW9uIF9pc0ludGVnZXIobikge1xuICByZXR1cm4gbiA8PCAwID09PSBuO1xufTsiLCJpbXBvcnQgX2N1cnJ5MiBmcm9tIFwiLi9pbnRlcm5hbC9fY3VycnkyLmpzXCI7XG5pbXBvcnQgX2lzU3RyaW5nIGZyb20gXCIuL2ludGVybmFsL19pc1N0cmluZy5qc1wiO1xuLyoqXG4gKiBSZXR1cm5zIHRoZSBudGggZWxlbWVudCBvZiB0aGUgZ2l2ZW4gbGlzdCBvciBzdHJpbmcuIElmIG4gaXMgbmVnYXRpdmUgdGhlXG4gKiBlbGVtZW50IGF0IGluZGV4IGxlbmd0aCArIG4gaXMgcmV0dXJuZWQuXG4gKlxuICogQGZ1bmNcbiAqIEBtZW1iZXJPZiBSXG4gKiBAc2luY2UgdjAuMS4wXG4gKiBAY2F0ZWdvcnkgTGlzdFxuICogQHNpZyBOdW1iZXIgLT4gW2FdIC0+IGEgfCBVbmRlZmluZWRcbiAqIEBzaWcgTnVtYmVyIC0+IFN0cmluZyAtPiBTdHJpbmdcbiAqIEBwYXJhbSB7TnVtYmVyfSBvZmZzZXRcbiAqIEBwYXJhbSB7Kn0gbGlzdFxuICogQHJldHVybiB7Kn1cbiAqIEBleGFtcGxlXG4gKlxuICogICAgICBjb25zdCBsaXN0ID0gWydmb28nLCAnYmFyJywgJ2JheicsICdxdXV4J107XG4gKiAgICAgIFIubnRoKDEsIGxpc3QpOyAvLz0+ICdiYXInXG4gKiAgICAgIFIubnRoKC0xLCBsaXN0KTsgLy89PiAncXV1eCdcbiAqICAgICAgUi5udGgoLTk5LCBsaXN0KTsgLy89PiB1bmRlZmluZWRcbiAqXG4gKiAgICAgIFIubnRoKDIsICdhYmMnKTsgLy89PiAnYydcbiAqICAgICAgUi5udGgoMywgJ2FiYycpOyAvLz0+ICcnXG4gKiBAc3ltYiBSLm50aCgtMSwgW2EsIGIsIGNdKSA9IGNcbiAqIEBzeW1iIFIubnRoKDAsIFthLCBiLCBjXSkgPSBhXG4gKiBAc3ltYiBSLm50aCgxLCBbYSwgYiwgY10pID0gYlxuICovXG5cbnZhciBudGggPVxuLyojX19QVVJFX18qL1xuX2N1cnJ5MihmdW5jdGlvbiBudGgob2Zmc2V0LCBsaXN0KSB7XG4gIHZhciBpZHggPSBvZmZzZXQgPCAwID8gbGlzdC5sZW5ndGggKyBvZmZzZXQgOiBvZmZzZXQ7XG4gIHJldHVybiBfaXNTdHJpbmcobGlzdCkgPyBsaXN0LmNoYXJBdChpZHgpIDogbGlzdFtpZHhdO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IG50aDsiLCJpbXBvcnQgX2N1cnJ5MiBmcm9tIFwiLi9pbnRlcm5hbC9fY3VycnkyLmpzXCI7XG5pbXBvcnQgX2lzSW50ZWdlciBmcm9tIFwiLi9pbnRlcm5hbC9faXNJbnRlZ2VyLmpzXCI7XG5pbXBvcnQgbnRoIGZyb20gXCIuL250aC5qc1wiO1xuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIHZhbHVlcyBhdCBnaXZlbiBwYXRocyBvZiBhbiBvYmplY3QuXG4gKlxuICogQGZ1bmNcbiAqIEBtZW1iZXJPZiBSXG4gKiBAc2luY2UgdjAuMjcuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHR5cGVkZWZuIElkeCA9IFtTdHJpbmcgfCBJbnRdXG4gKiBAc2lnIFtJZHhdIC0+IHthfSAtPiBbYSB8IFVuZGVmaW5lZF1cbiAqIEBwYXJhbSB7QXJyYXl9IHBhdGhzQXJyYXkgVGhlIGFycmF5IG9mIHBhdGhzIHRvIGJlIGZldGNoZWQuXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqIFRoZSBvYmplY3QgdG8gcmV0cmlldmUgdGhlIG5lc3RlZCBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcmV0dXJuIHtBcnJheX0gQSBsaXN0IGNvbnNpc3Rpbmcgb2YgdmFsdWVzIGF0IHBhdGhzIHNwZWNpZmllZCBieSBcInBhdGhzQXJyYXlcIi5cbiAqIEBzZWUgUi5wYXRoXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgICAgUi5wYXRocyhbWydhJywgJ2InXSwgWydwJywgMCwgJ3EnXV0sIHthOiB7YjogMn0sIHA6IFt7cTogM31dfSk7IC8vPT4gWzIsIDNdXG4gKiAgICAgIFIucGF0aHMoW1snYScsICdiJ10sIFsncCcsICdyJ11dLCB7YToge2I6IDJ9LCBwOiBbe3E6IDN9XX0pOyAvLz0+IFsyLCB1bmRlZmluZWRdXG4gKi9cblxudmFyIHBhdGhzID1cbi8qI19fUFVSRV9fKi9cbl9jdXJyeTIoZnVuY3Rpb24gcGF0aHMocGF0aHNBcnJheSwgb2JqKSB7XG4gIHJldHVybiBwYXRoc0FycmF5Lm1hcChmdW5jdGlvbiAocGF0aHMpIHtcbiAgICB2YXIgdmFsID0gb2JqO1xuICAgIHZhciBpZHggPSAwO1xuICAgIHZhciBwO1xuXG4gICAgd2hpbGUgKGlkeCA8IHBhdGhzLmxlbmd0aCkge1xuICAgICAgaWYgKHZhbCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcCA9IHBhdGhzW2lkeF07XG4gICAgICB2YWwgPSBfaXNJbnRlZ2VyKHApID8gbnRoKHAsIHZhbCkgOiB2YWxbcF07XG4gICAgICBpZHggKz0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsO1xuICB9KTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBwYXRoczsiLCJpbXBvcnQgX2N1cnJ5MiBmcm9tIFwiLi9pbnRlcm5hbC9fY3VycnkyLmpzXCI7XG5pbXBvcnQgcGF0aHMgZnJvbSBcIi4vcGF0aHMuanNcIjtcbi8qKlxuICogUmV0cmlldmUgdGhlIHZhbHVlIGF0IGEgZ2l2ZW4gcGF0aC5cbiAqXG4gKiBAZnVuY1xuICogQG1lbWJlck9mIFJcbiAqIEBzaW5jZSB2MC4yLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEB0eXBlZGVmbiBJZHggPSBTdHJpbmcgfCBJbnRcbiAqIEBzaWcgW0lkeF0gLT4ge2F9IC0+IGEgfCBVbmRlZmluZWRcbiAqIEBwYXJhbSB7QXJyYXl9IHBhdGggVGhlIHBhdGggdG8gdXNlLlxuICogQHBhcmFtIHtPYmplY3R9IG9iaiBUaGUgb2JqZWN0IHRvIHJldHJpZXZlIHRoZSBuZXN0ZWQgcHJvcGVydHkgZnJvbS5cbiAqIEByZXR1cm4geyp9IFRoZSBkYXRhIGF0IGBwYXRoYC5cbiAqIEBzZWUgUi5wcm9wLCBSLm50aFxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIFIucGF0aChbJ2EnLCAnYiddLCB7YToge2I6IDJ9fSk7IC8vPT4gMlxuICogICAgICBSLnBhdGgoWydhJywgJ2InXSwge2M6IHtiOiAyfX0pOyAvLz0+IHVuZGVmaW5lZFxuICogICAgICBSLnBhdGgoWydhJywgJ2InLCAwXSwge2E6IHtiOiBbMSwgMiwgM119fSk7IC8vPT4gMVxuICogICAgICBSLnBhdGgoWydhJywgJ2InLCAtMl0sIHthOiB7YjogWzEsIDIsIDNdfX0pOyAvLz0+IDJcbiAqL1xuXG52YXIgcGF0aCA9XG4vKiNfX1BVUkVfXyovXG5fY3VycnkyKGZ1bmN0aW9uIHBhdGgocGF0aEFyLCBvYmopIHtcbiAgcmV0dXJuIHBhdGhzKFtwYXRoQXJdLCBvYmopWzBdO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHBhdGg7IiwiaW1wb3J0IF9jdXJyeTIgZnJvbSBcIi4vaW50ZXJuYWwvX2N1cnJ5Mi5qc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIi4vcGF0aC5qc1wiO1xuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB3aGVuIHN1cHBsaWVkIGFuIG9iamVjdCByZXR1cm5zIHRoZSBpbmRpY2F0ZWRcbiAqIHByb3BlcnR5IG9mIHRoYXQgb2JqZWN0LCBpZiBpdCBleGlzdHMuXG4gKlxuICogQGZ1bmNcbiAqIEBtZW1iZXJPZiBSXG4gKiBAc2luY2UgdjAuMS4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAdHlwZWRlZm4gSWR4ID0gU3RyaW5nIHwgSW50XG4gKiBAc2lnIElkeCAtPiB7czogYX0gLT4gYSB8IFVuZGVmaW5lZFxuICogQHBhcmFtIHtTdHJpbmd8TnVtYmVyfSBwIFRoZSBwcm9wZXJ0eSBuYW1lIG9yIGFycmF5IGluZGV4XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqIFRoZSBvYmplY3QgdG8gcXVlcnlcbiAqIEByZXR1cm4geyp9IFRoZSB2YWx1ZSBhdCBgb2JqLnBgLlxuICogQHNlZSBSLnBhdGgsIFIubnRoXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgICAgUi5wcm9wKCd4Jywge3g6IDEwMH0pOyAvLz0+IDEwMFxuICogICAgICBSLnByb3AoJ3gnLCB7fSk7IC8vPT4gdW5kZWZpbmVkXG4gKiAgICAgIFIucHJvcCgwLCBbMTAwXSk7IC8vPT4gMTAwXG4gKiAgICAgIFIuY29tcG9zZShSLmluYywgUi5wcm9wKCd4JykpKHsgeDogMyB9KSAvLz0+IDRcbiAqL1xuXG52YXIgcHJvcCA9XG4vKiNfX1BVUkVfXyovXG5fY3VycnkyKGZ1bmN0aW9uIHByb3AocCwgb2JqKSB7XG4gIHJldHVybiBwYXRoKFtwXSwgb2JqKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBwcm9wOyIsImltcG9ydCBfY3VycnkxIGZyb20gXCIuL19jdXJyeTEuanNcIjtcbmltcG9ydCBfY3VycnkyIGZyb20gXCIuL19jdXJyeTIuanNcIjtcbmltcG9ydCBfaXNQbGFjZWhvbGRlciBmcm9tIFwiLi9faXNQbGFjZWhvbGRlci5qc1wiO1xuLyoqXG4gKiBPcHRpbWl6ZWQgaW50ZXJuYWwgdGhyZWUtYXJpdHkgY3VycnkgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIGN1cnJ5LlxuICogQHJldHVybiB7RnVuY3Rpb259IFRoZSBjdXJyaWVkIGZ1bmN0aW9uLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jdXJyeTMoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYzKGEsIGIsIGMpIHtcbiAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgcmV0dXJuIGYzO1xuXG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiBfaXNQbGFjZWhvbGRlcihhKSA/IGYzIDogX2N1cnJ5MihmdW5jdGlvbiAoX2IsIF9jKSB7XG4gICAgICAgICAgcmV0dXJuIGZuKGEsIF9iLCBfYyk7XG4gICAgICAgIH0pO1xuXG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBfaXNQbGFjZWhvbGRlcihhKSAmJiBfaXNQbGFjZWhvbGRlcihiKSA/IGYzIDogX2lzUGxhY2Vob2xkZXIoYSkgPyBfY3VycnkyKGZ1bmN0aW9uIChfYSwgX2MpIHtcbiAgICAgICAgICByZXR1cm4gZm4oX2EsIGIsIF9jKTtcbiAgICAgICAgfSkgOiBfaXNQbGFjZWhvbGRlcihiKSA/IF9jdXJyeTIoZnVuY3Rpb24gKF9iLCBfYykge1xuICAgICAgICAgIHJldHVybiBmbihhLCBfYiwgX2MpO1xuICAgICAgICB9KSA6IF9jdXJyeTEoZnVuY3Rpb24gKF9jKSB7XG4gICAgICAgICAgcmV0dXJuIGZuKGEsIGIsIF9jKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBfaXNQbGFjZWhvbGRlcihhKSAmJiBfaXNQbGFjZWhvbGRlcihiKSAmJiBfaXNQbGFjZWhvbGRlcihjKSA/IGYzIDogX2lzUGxhY2Vob2xkZXIoYSkgJiYgX2lzUGxhY2Vob2xkZXIoYikgPyBfY3VycnkyKGZ1bmN0aW9uIChfYSwgX2IpIHtcbiAgICAgICAgICByZXR1cm4gZm4oX2EsIF9iLCBjKTtcbiAgICAgICAgfSkgOiBfaXNQbGFjZWhvbGRlcihhKSAmJiBfaXNQbGFjZWhvbGRlcihjKSA/IF9jdXJyeTIoZnVuY3Rpb24gKF9hLCBfYykge1xuICAgICAgICAgIHJldHVybiBmbihfYSwgYiwgX2MpO1xuICAgICAgICB9KSA6IF9pc1BsYWNlaG9sZGVyKGIpICYmIF9pc1BsYWNlaG9sZGVyKGMpID8gX2N1cnJ5MihmdW5jdGlvbiAoX2IsIF9jKSB7XG4gICAgICAgICAgcmV0dXJuIGZuKGEsIF9iLCBfYyk7XG4gICAgICAgIH0pIDogX2lzUGxhY2Vob2xkZXIoYSkgPyBfY3VycnkxKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgIHJldHVybiBmbihfYSwgYiwgYyk7XG4gICAgICAgIH0pIDogX2lzUGxhY2Vob2xkZXIoYikgPyBfY3VycnkxKGZ1bmN0aW9uIChfYikge1xuICAgICAgICAgIHJldHVybiBmbihhLCBfYiwgYyk7XG4gICAgICAgIH0pIDogX2lzUGxhY2Vob2xkZXIoYykgPyBfY3VycnkxKGZ1bmN0aW9uIChfYykge1xuICAgICAgICAgIHJldHVybiBmbihhLCBiLCBfYyk7XG4gICAgICAgIH0pIDogZm4oYSwgYiwgYyk7XG4gICAgfVxuICB9O1xufSIsImltcG9ydCBfY3VycnkzIGZyb20gXCIuL2ludGVybmFsL19jdXJyeTMuanNcIjtcbmltcG9ydCBjdXJyeU4gZnJvbSBcIi4vY3VycnlOLmpzXCI7XG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgcHJvY2VzcyBlaXRoZXIgdGhlIGBvblRydWVgIG9yIHRoZSBgb25GYWxzZWBcbiAqIGZ1bmN0aW9uIGRlcGVuZGluZyB1cG9uIHRoZSByZXN1bHQgb2YgdGhlIGBjb25kaXRpb25gIHByZWRpY2F0ZS5cbiAqXG4gKiBAZnVuY1xuICogQG1lbWJlck9mIFJcbiAqIEBzaW5jZSB2MC44LjBcbiAqIEBjYXRlZ29yeSBMb2dpY1xuICogQHNpZyAoKi4uLiAtPiBCb29sZWFuKSAtPiAoKi4uLiAtPiAqKSAtPiAoKi4uLiAtPiAqKSAtPiAoKi4uLiAtPiAqKVxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29uZGl0aW9uIEEgcHJlZGljYXRlIGZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvblRydWUgQSBmdW5jdGlvbiB0byBpbnZva2Ugd2hlbiB0aGUgYGNvbmRpdGlvbmAgZXZhbHVhdGVzIHRvIGEgdHJ1dGh5IHZhbHVlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb25GYWxzZSBBIGZ1bmN0aW9uIHRvIGludm9rZSB3aGVuIHRoZSBgY29uZGl0aW9uYCBldmFsdWF0ZXMgdG8gYSBmYWxzeSB2YWx1ZS5cbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBBIG5ldyBmdW5jdGlvbiB0aGF0IHdpbGwgcHJvY2VzcyBlaXRoZXIgdGhlIGBvblRydWVgIG9yIHRoZSBgb25GYWxzZWBcbiAqICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkZXBlbmRpbmcgdXBvbiB0aGUgcmVzdWx0IG9mIHRoZSBgY29uZGl0aW9uYCBwcmVkaWNhdGUuXG4gKiBAc2VlIFIudW5sZXNzLCBSLndoZW4sIFIuY29uZFxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIGNvbnN0IGluY0NvdW50ID0gUi5pZkVsc2UoXG4gKiAgICAgICAgUi5oYXMoJ2NvdW50JyksXG4gKiAgICAgICAgUi5vdmVyKFIubGVuc1Byb3AoJ2NvdW50JyksIFIuaW5jKSxcbiAqICAgICAgICBSLmFzc29jKCdjb3VudCcsIDEpXG4gKiAgICAgICk7XG4gKiAgICAgIGluY0NvdW50KHt9KTsgICAgICAgICAgIC8vPT4geyBjb3VudDogMSB9XG4gKiAgICAgIGluY0NvdW50KHsgY291bnQ6IDEgfSk7IC8vPT4geyBjb3VudDogMiB9XG4gKi9cblxudmFyIGlmRWxzZSA9XG4vKiNfX1BVUkVfXyovXG5fY3VycnkzKGZ1bmN0aW9uIGlmRWxzZShjb25kaXRpb24sIG9uVHJ1ZSwgb25GYWxzZSkge1xuICByZXR1cm4gY3VycnlOKE1hdGgubWF4KGNvbmRpdGlvbi5sZW5ndGgsIG9uVHJ1ZS5sZW5ndGgsIG9uRmFsc2UubGVuZ3RoKSwgZnVuY3Rpb24gX2lmRWxzZSgpIHtcbiAgICByZXR1cm4gY29uZGl0aW9uLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgPyBvblRydWUuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IG9uRmFsc2UuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfSk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgaWZFbHNlOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9waXBlKGYsIGcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZy5jYWxsKHRoaXMsIGYuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gIH07XG59IiwiaW1wb3J0IF9jdXJyeTMgZnJvbSBcIi4vaW50ZXJuYWwvX2N1cnJ5My5qc1wiO1xuaW1wb3J0IF9yZWR1Y2UgZnJvbSBcIi4vaW50ZXJuYWwvX3JlZHVjZS5qc1wiO1xuLyoqXG4gKiBSZXR1cm5zIGEgc2luZ2xlIGl0ZW0gYnkgaXRlcmF0aW5nIHRocm91Z2ggdGhlIGxpc3QsIHN1Y2Nlc3NpdmVseSBjYWxsaW5nXG4gKiB0aGUgaXRlcmF0b3IgZnVuY3Rpb24gYW5kIHBhc3NpbmcgaXQgYW4gYWNjdW11bGF0b3IgdmFsdWUgYW5kIHRoZSBjdXJyZW50XG4gKiB2YWx1ZSBmcm9tIHRoZSBhcnJheSwgYW5kIHRoZW4gcGFzc2luZyB0aGUgcmVzdWx0IHRvIHRoZSBuZXh0IGNhbGwuXG4gKlxuICogVGhlIGl0ZXJhdG9yIGZ1bmN0aW9uIHJlY2VpdmVzIHR3byB2YWx1ZXM6ICooYWNjLCB2YWx1ZSkqLiBJdCBtYXkgdXNlXG4gKiBbYFIucmVkdWNlZGBdKCNyZWR1Y2VkKSB0byBzaG9ydGN1dCB0aGUgaXRlcmF0aW9uLlxuICpcbiAqIFRoZSBhcmd1bWVudHMnIG9yZGVyIG9mIFtgcmVkdWNlUmlnaHRgXSgjcmVkdWNlUmlnaHQpJ3MgaXRlcmF0b3IgZnVuY3Rpb25cbiAqIGlzICoodmFsdWUsIGFjYykqLlxuICpcbiAqIE5vdGU6IGBSLnJlZHVjZWAgZG9lcyBub3Qgc2tpcCBkZWxldGVkIG9yIHVuYXNzaWduZWQgaW5kaWNlcyAoc3BhcnNlXG4gKiBhcnJheXMpLCB1bmxpa2UgdGhlIG5hdGl2ZSBgQXJyYXkucHJvdG90eXBlLnJlZHVjZWAgbWV0aG9kLiBGb3IgbW9yZSBkZXRhaWxzXG4gKiBvbiB0aGlzIGJlaGF2aW9yLCBzZWU6XG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9BcnJheS9yZWR1Y2UjRGVzY3JpcHRpb25cbiAqXG4gKiBEaXNwYXRjaGVzIHRvIHRoZSBgcmVkdWNlYCBtZXRob2Qgb2YgdGhlIHRoaXJkIGFyZ3VtZW50LCBpZiBwcmVzZW50LiBXaGVuXG4gKiBkb2luZyBzbywgaXQgaXMgdXAgdG8gdGhlIHVzZXIgdG8gaGFuZGxlIHRoZSBbYFIucmVkdWNlZGBdKCNyZWR1Y2VkKVxuICogc2hvcnRjdXRpbmcsIGFzIHRoaXMgaXMgbm90IGltcGxlbWVudGVkIGJ5IGByZWR1Y2VgLlxuICpcbiAqIEBmdW5jXG4gKiBAbWVtYmVyT2YgUlxuICogQHNpbmNlIHYwLjEuMFxuICogQGNhdGVnb3J5IExpc3RcbiAqIEBzaWcgKChhLCBiKSAtPiBhKSAtPiBhIC0+IFtiXSAtPiBhXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgaXRlcmF0b3IgZnVuY3Rpb24uIFJlY2VpdmVzIHR3byB2YWx1ZXMsIHRoZSBhY2N1bXVsYXRvciBhbmQgdGhlXG4gKiAgICAgICAgY3VycmVudCBlbGVtZW50IGZyb20gdGhlIGFycmF5LlxuICogQHBhcmFtIHsqfSBhY2MgVGhlIGFjY3VtdWxhdG9yIHZhbHVlLlxuICogQHBhcmFtIHtBcnJheX0gbGlzdCBUaGUgbGlzdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcmV0dXJuIHsqfSBUaGUgZmluYWwsIGFjY3VtdWxhdGVkIHZhbHVlLlxuICogQHNlZSBSLnJlZHVjZWQsIFIuYWRkSW5kZXgsIFIucmVkdWNlUmlnaHRcbiAqIEBleGFtcGxlXG4gKlxuICogICAgICBSLnJlZHVjZShSLnN1YnRyYWN0LCAwLCBbMSwgMiwgMywgNF0pIC8vID0+ICgoKCgwIC0gMSkgLSAyKSAtIDMpIC0gNCkgPSAtMTBcbiAqICAgICAgLy8gICAgICAgICAgLSAgICAgICAgICAgICAgIC0xMFxuICogICAgICAvLyAgICAgICAgIC8gXFwgICAgICAgICAgICAgIC8gXFxcbiAqICAgICAgLy8gICAgICAgIC0gICA0ICAgICAgICAgICAtNiAgIDRcbiAqICAgICAgLy8gICAgICAgLyBcXCAgICAgICAgICAgICAgLyBcXFxuICogICAgICAvLyAgICAgIC0gICAzICAgPT0+ICAgICAtMyAgIDNcbiAqICAgICAgLy8gICAgIC8gXFwgICAgICAgICAgICAgIC8gXFxcbiAqICAgICAgLy8gICAgLSAgIDIgICAgICAgICAgIC0xICAgMlxuICogICAgICAvLyAgIC8gXFwgICAgICAgICAgICAgIC8gXFxcbiAqICAgICAgLy8gIDAgICAxICAgICAgICAgICAgMCAgIDFcbiAqXG4gKiBAc3ltYiBSLnJlZHVjZShmLCBhLCBbYiwgYywgZF0pID0gZihmKGYoYSwgYiksIGMpLCBkKVxuICovXG5cbnZhciByZWR1Y2UgPVxuLyojX19QVVJFX18qL1xuX2N1cnJ5MyhfcmVkdWNlKTtcblxuZXhwb3J0IGRlZmF1bHQgcmVkdWNlOyIsImltcG9ydCBfaXNBcnJheSBmcm9tIFwiLi9faXNBcnJheS5qc1wiO1xuLyoqXG4gKiBUaGlzIGNoZWNrcyB3aGV0aGVyIGEgZnVuY3Rpb24gaGFzIGEgW21ldGhvZG5hbWVdIGZ1bmN0aW9uLiBJZiBpdCBpc24ndCBhblxuICogYXJyYXkgaXQgd2lsbCBleGVjdXRlIHRoYXQgZnVuY3Rpb24gb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0byB0aGUgcmFtZGFcbiAqIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiByYW1kYSBpbXBsZW10YXRpb25cbiAqIEBwYXJhbSB7U3RyaW5nfSBtZXRob2RuYW1lIHByb3BlcnR5IHRvIGNoZWNrIGZvciBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvblxuICogQHJldHVybiB7T2JqZWN0fSBXaGF0ZXZlciB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBtZXRob2QgaXMuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2NoZWNrRm9yTWV0aG9kKG1ldGhvZG5hbWUsIGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZm4oKTtcbiAgICB9XG5cbiAgICB2YXIgb2JqID0gYXJndW1lbnRzW2xlbmd0aCAtIDFdO1xuICAgIHJldHVybiBfaXNBcnJheShvYmopIHx8IHR5cGVvZiBvYmpbbWV0aG9kbmFtZV0gIT09ICdmdW5jdGlvbicgPyBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogb2JqW21ldGhvZG5hbWVdLmFwcGx5KG9iaiwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwLCBsZW5ndGggLSAxKSk7XG4gIH07XG59IiwiaW1wb3J0IF9jaGVja0Zvck1ldGhvZCBmcm9tIFwiLi9pbnRlcm5hbC9fY2hlY2tGb3JNZXRob2QuanNcIjtcbmltcG9ydCBfY3VycnkzIGZyb20gXCIuL2ludGVybmFsL19jdXJyeTMuanNcIjtcbi8qKlxuICogUmV0dXJucyB0aGUgZWxlbWVudHMgb2YgdGhlIGdpdmVuIGxpc3Qgb3Igc3RyaW5nIChvciBvYmplY3Qgd2l0aCBhIGBzbGljZWBcbiAqIG1ldGhvZCkgZnJvbSBgZnJvbUluZGV4YCAoaW5jbHVzaXZlKSB0byBgdG9JbmRleGAgKGV4Y2x1c2l2ZSkuXG4gKlxuICogRGlzcGF0Y2hlcyB0byB0aGUgYHNsaWNlYCBtZXRob2Qgb2YgdGhlIHRoaXJkIGFyZ3VtZW50LCBpZiBwcmVzZW50LlxuICpcbiAqIEBmdW5jXG4gKiBAbWVtYmVyT2YgUlxuICogQHNpbmNlIHYwLjEuNFxuICogQGNhdGVnb3J5IExpc3RcbiAqIEBzaWcgTnVtYmVyIC0+IE51bWJlciAtPiBbYV0gLT4gW2FdXG4gKiBAc2lnIE51bWJlciAtPiBOdW1iZXIgLT4gU3RyaW5nIC0+IFN0cmluZ1xuICogQHBhcmFtIHtOdW1iZXJ9IGZyb21JbmRleCBUaGUgc3RhcnQgaW5kZXggKGluY2x1c2l2ZSkuXG4gKiBAcGFyYW0ge051bWJlcn0gdG9JbmRleCBUaGUgZW5kIGluZGV4IChleGNsdXNpdmUpLlxuICogQHBhcmFtIHsqfSBsaXN0XG4gKiBAcmV0dXJuIHsqfVxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIFIuc2xpY2UoMSwgMywgWydhJywgJ2InLCAnYycsICdkJ10pOyAgICAgICAgLy89PiBbJ2InLCAnYyddXG4gKiAgICAgIFIuc2xpY2UoMSwgSW5maW5pdHksIFsnYScsICdiJywgJ2MnLCAnZCddKTsgLy89PiBbJ2InLCAnYycsICdkJ11cbiAqICAgICAgUi5zbGljZSgwLCAtMSwgWydhJywgJ2InLCAnYycsICdkJ10pOyAgICAgICAvLz0+IFsnYScsICdiJywgJ2MnXVxuICogICAgICBSLnNsaWNlKC0zLCAtMSwgWydhJywgJ2InLCAnYycsICdkJ10pOyAgICAgIC8vPT4gWydiJywgJ2MnXVxuICogICAgICBSLnNsaWNlKDAsIDMsICdyYW1kYScpOyAgICAgICAgICAgICAgICAgICAgIC8vPT4gJ3JhbSdcbiAqL1xuXG52YXIgc2xpY2UgPVxuLyojX19QVVJFX18qL1xuX2N1cnJ5Myhcbi8qI19fUFVSRV9fKi9cbl9jaGVja0Zvck1ldGhvZCgnc2xpY2UnLCBmdW5jdGlvbiBzbGljZShmcm9tSW5kZXgsIHRvSW5kZXgsIGxpc3QpIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGxpc3QsIGZyb21JbmRleCwgdG9JbmRleCk7XG59KSk7XG5cbmV4cG9ydCBkZWZhdWx0IHNsaWNlOyIsImltcG9ydCBfY2hlY2tGb3JNZXRob2QgZnJvbSBcIi4vaW50ZXJuYWwvX2NoZWNrRm9yTWV0aG9kLmpzXCI7XG5pbXBvcnQgX2N1cnJ5MSBmcm9tIFwiLi9pbnRlcm5hbC9fY3VycnkxLmpzXCI7XG5pbXBvcnQgc2xpY2UgZnJvbSBcIi4vc2xpY2UuanNcIjtcbi8qKlxuICogUmV0dXJucyBhbGwgYnV0IHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBnaXZlbiBsaXN0IG9yIHN0cmluZyAob3Igb2JqZWN0XG4gKiB3aXRoIGEgYHRhaWxgIG1ldGhvZCkuXG4gKlxuICogRGlzcGF0Y2hlcyB0byB0aGUgYHNsaWNlYCBtZXRob2Qgb2YgdGhlIGZpcnN0IGFyZ3VtZW50LCBpZiBwcmVzZW50LlxuICpcbiAqIEBmdW5jXG4gKiBAbWVtYmVyT2YgUlxuICogQHNpbmNlIHYwLjEuMFxuICogQGNhdGVnb3J5IExpc3RcbiAqIEBzaWcgW2FdIC0+IFthXVxuICogQHNpZyBTdHJpbmcgLT4gU3RyaW5nXG4gKiBAcGFyYW0geyp9IGxpc3RcbiAqIEByZXR1cm4geyp9XG4gKiBAc2VlIFIuaGVhZCwgUi5pbml0LCBSLmxhc3RcbiAqIEBleGFtcGxlXG4gKlxuICogICAgICBSLnRhaWwoWzEsIDIsIDNdKTsgIC8vPT4gWzIsIDNdXG4gKiAgICAgIFIudGFpbChbMSwgMl0pOyAgICAgLy89PiBbMl1cbiAqICAgICAgUi50YWlsKFsxXSk7ICAgICAgICAvLz0+IFtdXG4gKiAgICAgIFIudGFpbChbXSk7ICAgICAgICAgLy89PiBbXVxuICpcbiAqICAgICAgUi50YWlsKCdhYmMnKTsgIC8vPT4gJ2JjJ1xuICogICAgICBSLnRhaWwoJ2FiJyk7ICAgLy89PiAnYidcbiAqICAgICAgUi50YWlsKCdhJyk7ICAgIC8vPT4gJydcbiAqICAgICAgUi50YWlsKCcnKTsgICAgIC8vPT4gJydcbiAqL1xuXG52YXIgdGFpbCA9XG4vKiNfX1BVUkVfXyovXG5fY3VycnkxKFxuLyojX19QVVJFX18qL1xuX2NoZWNrRm9yTWV0aG9kKCd0YWlsJyxcbi8qI19fUFVSRV9fKi9cbnNsaWNlKDEsIEluZmluaXR5KSkpO1xuXG5leHBvcnQgZGVmYXVsdCB0YWlsOyIsImltcG9ydCBfYXJpdHkgZnJvbSBcIi4vaW50ZXJuYWwvX2FyaXR5LmpzXCI7XG5pbXBvcnQgX3BpcGUgZnJvbSBcIi4vaW50ZXJuYWwvX3BpcGUuanNcIjtcbmltcG9ydCByZWR1Y2UgZnJvbSBcIi4vcmVkdWNlLmpzXCI7XG5pbXBvcnQgdGFpbCBmcm9tIFwiLi90YWlsLmpzXCI7XG4vKipcbiAqIFBlcmZvcm1zIGxlZnQtdG8tcmlnaHQgZnVuY3Rpb24gY29tcG9zaXRpb24uIFRoZSBmaXJzdCBhcmd1bWVudCBtYXkgaGF2ZVxuICogYW55IGFyaXR5OyB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyBtdXN0IGJlIHVuYXJ5LlxuICpcbiAqIEluIHNvbWUgbGlicmFyaWVzIHRoaXMgZnVuY3Rpb24gaXMgbmFtZWQgYHNlcXVlbmNlYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhlIHJlc3VsdCBvZiBwaXBlIGlzIG5vdCBhdXRvbWF0aWNhbGx5IGN1cnJpZWQuXG4gKlxuICogQGZ1bmNcbiAqIEBtZW1iZXJPZiBSXG4gKiBAc2luY2UgdjAuMS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBzaWcgKCgoYSwgYiwgLi4uLCBuKSAtPiBvKSwgKG8gLT4gcCksIC4uLiwgKHggLT4geSksICh5IC0+IHopKSAtPiAoKGEsIGIsIC4uLiwgbikgLT4geilcbiAqIEBwYXJhbSB7Li4uRnVuY3Rpb259IGZ1bmN0aW9uc1xuICogQHJldHVybiB7RnVuY3Rpb259XG4gKiBAc2VlIFIuY29tcG9zZVxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIGNvbnN0IGYgPSBSLnBpcGUoTWF0aC5wb3csIFIubmVnYXRlLCBSLmluYyk7XG4gKlxuICogICAgICBmKDMsIDQpOyAvLyAtKDNeNCkgKyAxXG4gKiBAc3ltYiBSLnBpcGUoZiwgZywgaCkoYSwgYikgPSBoKGcoZihhLCBiKSkpXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGlwZSgpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3BpcGUgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Jyk7XG4gIH1cblxuICByZXR1cm4gX2FyaXR5KGFyZ3VtZW50c1swXS5sZW5ndGgsIHJlZHVjZShfcGlwZSwgYXJndW1lbnRzWzBdLCB0YWlsKGFyZ3VtZW50cykpKTtcbn0iLCJpbXBvcnQgX2N1cnJ5MiBmcm9tIFwiLi9pbnRlcm5hbC9fY3VycnkyLmpzXCI7XG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgYSBzaW5nbGUga2V5OnZhbHVlIHBhaXIuXG4gKlxuICogQGZ1bmNcbiAqIEBtZW1iZXJPZiBSXG4gKiBAc2luY2UgdjAuMTguMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHNpZyBTdHJpbmcgLT4gYSAtPiB7U3RyaW5nOmF9XG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5XG4gKiBAcGFyYW0geyp9IHZhbFxuICogQHJldHVybiB7T2JqZWN0fVxuICogQHNlZSBSLnBhaXJcbiAqIEBleGFtcGxlXG4gKlxuICogICAgICBjb25zdCBtYXRjaFBocmFzZXMgPSBSLmNvbXBvc2UoXG4gKiAgICAgICAgUi5vYmpPZignbXVzdCcpLFxuICogICAgICAgIFIubWFwKFIub2JqT2YoJ21hdGNoX3BocmFzZScpKVxuICogICAgICApO1xuICogICAgICBtYXRjaFBocmFzZXMoWydmb28nLCAnYmFyJywgJ2JheiddKTsgLy89PiB7bXVzdDogW3ttYXRjaF9waHJhc2U6ICdmb28nfSwge21hdGNoX3BocmFzZTogJ2Jhcid9LCB7bWF0Y2hfcGhyYXNlOiAnYmF6J31dfVxuICovXG5cbnZhciBvYmpPZiA9XG4vKiNfX1BVUkVfXyovXG5fY3VycnkyKGZ1bmN0aW9uIG9iak9mKGtleSwgdmFsKSB7XG4gIHZhciBvYmogPSB7fTtcbiAgb2JqW2tleV0gPSB2YWw7XG4gIHJldHVybiBvYmo7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgb2JqT2Y7IiwiaW1wb3J0IF9jdXJyeTEgZnJvbSBcIi4vaW50ZXJuYWwvX2N1cnJ5MS5qc1wiO1xuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBhbHdheXMgcmV0dXJucyB0aGUgZ2l2ZW4gdmFsdWUuIE5vdGUgdGhhdCBmb3JcbiAqIG5vbi1wcmltaXRpdmVzIHRoZSB2YWx1ZSByZXR1cm5lZCBpcyBhIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgdmFsdWUuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBpcyBrbm93biBhcyBgY29uc3RgLCBgY29uc3RhbnRgLCBvciBgS2AgKGZvciBLIGNvbWJpbmF0b3IpIGluXG4gKiBvdGhlciBsYW5ndWFnZXMgYW5kIGxpYnJhcmllcy5cbiAqXG4gKiBAZnVuY1xuICogQG1lbWJlck9mIFJcbiAqIEBzaW5jZSB2MC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHNpZyBhIC0+ICgqIC0+IGEpXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gd3JhcCBpbiBhIGZ1bmN0aW9uXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gQSBGdW5jdGlvbiA6OiAqIC0+IHZhbC5cbiAqIEBleGFtcGxlXG4gKlxuICogICAgICBjb25zdCB0ID0gUi5hbHdheXMoJ1RlZScpO1xuICogICAgICB0KCk7IC8vPT4gJ1RlZSdcbiAqL1xuXG52YXIgYWx3YXlzID1cbi8qI19fUFVSRV9fKi9cbl9jdXJyeTEoZnVuY3Rpb24gYWx3YXlzKHZhbCkge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB2YWw7XG4gIH07XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgYWx3YXlzOyIsImltcG9ydCBfY3VycnkzIGZyb20gXCIuL2ludGVybmFsL19jdXJyeTMuanNcIjsgLy8gYElkZW50aXR5YCBpcyBhIGZ1bmN0b3IgdGhhdCBob2xkcyBhIHNpbmdsZSB2YWx1ZSwgd2hlcmUgYG1hcGAgc2ltcGx5XG4vLyB0cmFuc2Zvcm1zIHRoZSBoZWxkIHZhbHVlIHdpdGggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uLlxuXG52YXIgSWRlbnRpdHkgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4ge1xuICAgIHZhbHVlOiB4LFxuICAgIG1hcDogZnVuY3Rpb24gKGYpIHtcbiAgICAgIHJldHVybiBJZGVudGl0eShmKHgpKTtcbiAgICB9XG4gIH07XG59O1xuLyoqXG4gKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgXCJzZXR0aW5nXCIgdGhlIHBvcnRpb24gb2YgdGhlIGdpdmVuIGRhdGEgc3RydWN0dXJlXG4gKiBmb2N1c2VkIGJ5IHRoZSBnaXZlbiBsZW5zIHRvIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgdGhlIGdpdmVuIGZ1bmN0aW9uIHRvXG4gKiB0aGUgZm9jdXNlZCB2YWx1ZS5cbiAqXG4gKiBAZnVuY1xuICogQG1lbWJlck9mIFJcbiAqIEBzaW5jZSB2MC4xNi4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAdHlwZWRlZm4gTGVucyBzIGEgPSBGdW5jdG9yIGYgPT4gKGEgLT4gZiBhKSAtPiBzIC0+IGYgc1xuICogQHNpZyBMZW5zIHMgYSAtPiAoYSAtPiBhKSAtPiBzIC0+IHNcbiAqIEBwYXJhbSB7TGVuc30gbGVuc1xuICogQHBhcmFtIHsqfSB2XG4gKiBAcGFyYW0geyp9IHhcbiAqIEByZXR1cm4geyp9XG4gKiBAc2VlIFIucHJvcCwgUi5sZW5zSW5kZXgsIFIubGVuc1Byb3BcbiAqIEBleGFtcGxlXG4gKlxuICogICAgICBjb25zdCBoZWFkTGVucyA9IFIubGVuc0luZGV4KDApO1xuICpcbiAqICAgICAgUi5vdmVyKGhlYWRMZW5zLCBSLnRvVXBwZXIsIFsnZm9vJywgJ2JhcicsICdiYXonXSk7IC8vPT4gWydGT08nLCAnYmFyJywgJ2JheiddXG4gKi9cblxuXG52YXIgb3ZlciA9XG4vKiNfX1BVUkVfXyovXG5fY3VycnkzKGZ1bmN0aW9uIG92ZXIobGVucywgZiwgeCkge1xuICAvLyBUaGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGdldHRlciBmdW5jdGlvbiBpcyBmaXJzdCB0cmFuc2Zvcm1lZCB3aXRoIGBmYCxcbiAgLy8gdGhlbiBzZXQgYXMgdGhlIHZhbHVlIG9mIGFuIGBJZGVudGl0eWAuIFRoaXMgaXMgdGhlbiBtYXBwZWQgb3ZlciB3aXRoIHRoZVxuICAvLyBzZXR0ZXIgZnVuY3Rpb24gb2YgdGhlIGxlbnMuXG4gIHJldHVybiBsZW5zKGZ1bmN0aW9uICh5KSB7XG4gICAgcmV0dXJuIElkZW50aXR5KGYoeSkpO1xuICB9KSh4KS52YWx1ZTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBvdmVyOyIsImltcG9ydCBfY3VycnkzIGZyb20gXCIuL2ludGVybmFsL19jdXJyeTMuanNcIjtcbmltcG9ydCBhbHdheXMgZnJvbSBcIi4vYWx3YXlzLmpzXCI7XG5pbXBvcnQgb3ZlciBmcm9tIFwiLi9vdmVyLmpzXCI7XG4vKipcbiAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBcInNldHRpbmdcIiB0aGUgcG9ydGlvbiBvZiB0aGUgZ2l2ZW4gZGF0YSBzdHJ1Y3R1cmVcbiAqIGZvY3VzZWQgYnkgdGhlIGdpdmVuIGxlbnMgdG8gdGhlIGdpdmVuIHZhbHVlLlxuICpcbiAqIEBmdW5jXG4gKiBAbWVtYmVyT2YgUlxuICogQHNpbmNlIHYwLjE2LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEB0eXBlZGVmbiBMZW5zIHMgYSA9IEZ1bmN0b3IgZiA9PiAoYSAtPiBmIGEpIC0+IHMgLT4gZiBzXG4gKiBAc2lnIExlbnMgcyBhIC0+IGEgLT4gcyAtPiBzXG4gKiBAcGFyYW0ge0xlbnN9IGxlbnNcbiAqIEBwYXJhbSB7Kn0gdlxuICogQHBhcmFtIHsqfSB4XG4gKiBAcmV0dXJuIHsqfVxuICogQHNlZSBSLnByb3AsIFIubGVuc0luZGV4LCBSLmxlbnNQcm9wXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgICAgY29uc3QgeExlbnMgPSBSLmxlbnNQcm9wKCd4Jyk7XG4gKlxuICogICAgICBSLnNldCh4TGVucywgNCwge3g6IDEsIHk6IDJ9KTsgIC8vPT4ge3g6IDQsIHk6IDJ9XG4gKiAgICAgIFIuc2V0KHhMZW5zLCA4LCB7eDogMSwgeTogMn0pOyAgLy89PiB7eDogOCwgeTogMn1cbiAqL1xuXG52YXIgc2V0ID1cbi8qI19fUFVSRV9fKi9cbl9jdXJyeTMoZnVuY3Rpb24gc2V0KGxlbnMsIHYsIHgpIHtcbiAgcmV0dXJuIG92ZXIobGVucywgYWx3YXlzKHYpLCB4KTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBzZXQ7IiwiaW1wb3J0IF9jdXJyeTMgZnJvbSBcIi4vaW50ZXJuYWwvX2N1cnJ5My5qc1wiO1xuLyoqXG4gKiBNYWtlcyBhIHNoYWxsb3cgY2xvbmUgb2YgYW4gb2JqZWN0LCBzZXR0aW5nIG9yIG92ZXJyaWRpbmcgdGhlIHNwZWNpZmllZFxuICogcHJvcGVydHkgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuIE5vdGUgdGhhdCB0aGlzIGNvcGllcyBhbmQgZmxhdHRlbnMgcHJvdG90eXBlXG4gKiBwcm9wZXJ0aWVzIG9udG8gdGhlIG5ldyBvYmplY3QgYXMgd2VsbC4gQWxsIG5vbi1wcmltaXRpdmUgcHJvcGVydGllcyBhcmVcbiAqIGNvcGllZCBieSByZWZlcmVuY2UuXG4gKlxuICogQGZ1bmNcbiAqIEBtZW1iZXJPZiBSXG4gKiBAc2luY2UgdjAuOC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAc2lnIFN0cmluZyAtPiBhIC0+IHtrOiB2fSAtPiB7azogdn1cbiAqIEBwYXJhbSB7U3RyaW5nfSBwcm9wIFRoZSBwcm9wZXJ0eSBuYW1lIHRvIHNldFxuICogQHBhcmFtIHsqfSB2YWwgVGhlIG5ldyB2YWx1ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iaiBUaGUgb2JqZWN0IHRvIGNsb25lXG4gKiBAcmV0dXJuIHtPYmplY3R9IEEgbmV3IG9iamVjdCBlcXVpdmFsZW50IHRvIHRoZSBvcmlnaW5hbCBleGNlcHQgZm9yIHRoZSBjaGFuZ2VkIHByb3BlcnR5LlxuICogQHNlZSBSLmRpc3NvYywgUi5waWNrXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgICAgUi5hc3NvYygnYycsIDMsIHthOiAxLCBiOiAyfSk7IC8vPT4ge2E6IDEsIGI6IDIsIGM6IDN9XG4gKi9cblxudmFyIGFzc29jID1cbi8qI19fUFVSRV9fKi9cbl9jdXJyeTMoZnVuY3Rpb24gYXNzb2MocHJvcCwgdmFsLCBvYmopIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gb2JqKSB7XG4gICAgcmVzdWx0W3BdID0gb2JqW3BdO1xuICB9XG5cbiAgcmVzdWx0W3Byb3BdID0gdmFsO1xuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGFzc29jOyIsImltcG9ydCBfY3VycnkyIGZyb20gXCIuL19jdXJyeTIuanNcIjtcbmltcG9ydCBfeGZCYXNlIGZyb20gXCIuL194ZkJhc2UuanNcIjtcblxudmFyIFhNYXAgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBYTWFwKGYsIHhmKSB7XG4gICAgdGhpcy54ZiA9IHhmO1xuICAgIHRoaXMuZiA9IGY7XG4gIH1cblxuICBYTWFwLnByb3RvdHlwZVsnQEB0cmFuc2R1Y2VyL2luaXQnXSA9IF94ZkJhc2UuaW5pdDtcbiAgWE1hcC5wcm90b3R5cGVbJ0BAdHJhbnNkdWNlci9yZXN1bHQnXSA9IF94ZkJhc2UucmVzdWx0O1xuXG4gIFhNYXAucHJvdG90eXBlWydAQHRyYW5zZHVjZXIvc3RlcCddID0gZnVuY3Rpb24gKHJlc3VsdCwgaW5wdXQpIHtcbiAgICByZXR1cm4gdGhpcy54ZlsnQEB0cmFuc2R1Y2VyL3N0ZXAnXShyZXN1bHQsIHRoaXMuZihpbnB1dCkpO1xuICB9O1xuXG4gIHJldHVybiBYTWFwO1xufSgpO1xuXG52YXIgX3htYXAgPVxuLyojX19QVVJFX18qL1xuX2N1cnJ5MihmdW5jdGlvbiBfeG1hcChmLCB4Zikge1xuICByZXR1cm4gbmV3IFhNYXAoZiwgeGYpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IF94bWFwOyIsInZhciBfcGF0aCwgX2RlZnM7XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5mdW5jdGlvbiBTdmdTdWNjZXNzKHByb3BzKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gICAgd2lkdGg6IDMwLFxuICAgIGhlaWdodDogMzAsXG4gICAgZmlsbDogXCJub25lXCIsXG4gICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICB9LCBwcm9wcyksIF9wYXRoIHx8IChfcGF0aCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTUgMEM2Ljc3OCAwIDAgNi43NzggMCAxNWMwIDguMjIyIDYuNzc4IDE1IDE1IDE1IDguMjIyIDAgMTUtNi43MjIgMTUtMTUgMC04LjI3OC02LjcyMi0xNS0xNS0xNXptMCAyNy4zMzNDOC4yMjIgMjcuMzMzIDIuNjY3IDIxLjc3OCAyLjY2NyAxNSAyLjY2NyA4LjIyMiA4LjIyMiAyLjY2NyAxNSAyLjY2N2M2Ljc3OCAwIDEyLjMzMyA1LjU1NSAxMi4zMzMgMTIuMzMzIDAgNi43NzgtNS42MSAxMi4zMzMtMTIuMzMzIDEyLjMzM3pNMjIuNzIyIDEybC04LjU1NSA4LjU1NmMtLjY2Ny42NjYtMS43MjMuNjY2LTIuMzM0IDBsLTQuMzg5LTQuNWMtLjY2Ni0uNjY3LS41NTUtMS43MjMuMTEyLTIuMzM0YTEuNzY1IDEuNzY1IDAgMDEyLjI3NyAwbDMuMzM0IDMuMzM0IDcuMzg5LTcuNWMuNjY2LS42NjcgMS43MjItLjY2NyAyLjMzMy4xMS4zODkuNzIzLjM4OSAxLjY2Ny0uMTY3IDIuMzM0elwiLFxuICAgIGZpbGw6IFwidXJsKCNzdWNjZXNzX3N2Z19fcGFpbnQwX2xpbmVhcilcIlxuICB9KSksIF9kZWZzIHx8IChfZGVmcyA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGVmc1wiLCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpbmVhckdyYWRpZW50XCIsIHtcbiAgICBpZDogXCJzdWNjZXNzX3N2Z19fcGFpbnQwX2xpbmVhclwiLFxuICAgIHgxOiAwLFxuICAgIHkxOiAxNSxcbiAgICB4MjogMzAsXG4gICAgeTI6IDE1LFxuICAgIGdyYWRpZW50VW5pdHM6IFwidXNlclNwYWNlT25Vc2VcIlxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN0b3BcIiwge1xuICAgIHN0b3BDb2xvcjogXCIjMjc4MkFEXCJcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3RvcFwiLCB7XG4gICAgb2Zmc2V0OiAxLFxuICAgIHN0b3BDb2xvcjogXCIjMjdBRDk1XCJcbiAgfSkpKSkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBTdmdTdWNjZXNzOyIsImltcG9ydCBfY3VycnkyIGZyb20gXCIuL2ludGVybmFsL19jdXJyeTIuanNcIjtcbmltcG9ydCBfZGlzcGF0Y2hhYmxlIGZyb20gXCIuL2ludGVybmFsL19kaXNwYXRjaGFibGUuanNcIjtcbmltcG9ydCBfbWFwIGZyb20gXCIuL2ludGVybmFsL19tYXAuanNcIjtcbmltcG9ydCBfcmVkdWNlIGZyb20gXCIuL2ludGVybmFsL19yZWR1Y2UuanNcIjtcbmltcG9ydCBfeG1hcCBmcm9tIFwiLi9pbnRlcm5hbC9feG1hcC5qc1wiO1xuaW1wb3J0IGN1cnJ5TiBmcm9tIFwiLi9jdXJyeU4uanNcIjtcbmltcG9ydCBrZXlzIGZyb20gXCIuL2tleXMuanNcIjtcbi8qKlxuICogVGFrZXMgYSBmdW5jdGlvbiBhbmRcbiAqIGEgW2Z1bmN0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9mYW50YXN5bGFuZC9mYW50YXN5LWxhbmQjZnVuY3RvciksXG4gKiBhcHBsaWVzIHRoZSBmdW5jdGlvbiB0byBlYWNoIG9mIHRoZSBmdW5jdG9yJ3MgdmFsdWVzLCBhbmQgcmV0dXJuc1xuICogYSBmdW5jdG9yIG9mIHRoZSBzYW1lIHNoYXBlLlxuICpcbiAqIFJhbWRhIHByb3ZpZGVzIHN1aXRhYmxlIGBtYXBgIGltcGxlbWVudGF0aW9ucyBmb3IgYEFycmF5YCBhbmQgYE9iamVjdGAsXG4gKiBzbyB0aGlzIGZ1bmN0aW9uIG1heSBiZSBhcHBsaWVkIHRvIGBbMSwgMiwgM11gIG9yIGB7eDogMSwgeTogMiwgejogM31gLlxuICpcbiAqIERpc3BhdGNoZXMgdG8gdGhlIGBtYXBgIG1ldGhvZCBvZiB0aGUgc2Vjb25kIGFyZ3VtZW50LCBpZiBwcmVzZW50LlxuICpcbiAqIEFjdHMgYXMgYSB0cmFuc2R1Y2VyIGlmIGEgdHJhbnNmb3JtZXIgaXMgZ2l2ZW4gaW4gbGlzdCBwb3NpdGlvbi5cbiAqXG4gKiBBbHNvIHRyZWF0cyBmdW5jdGlvbnMgYXMgZnVuY3RvcnMgYW5kIHdpbGwgY29tcG9zZSB0aGVtIHRvZ2V0aGVyLlxuICpcbiAqIEBmdW5jXG4gKiBAbWVtYmVyT2YgUlxuICogQHNpbmNlIHYwLjEuMFxuICogQGNhdGVnb3J5IExpc3RcbiAqIEBzaWcgRnVuY3RvciBmID0+IChhIC0+IGIpIC0+IGYgYSAtPiBmIGJcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgb24gZXZlcnkgZWxlbWVudCBvZiB0aGUgaW5wdXQgYGxpc3RgLlxuICogQHBhcmFtIHtBcnJheX0gbGlzdCBUaGUgbGlzdCB0byBiZSBpdGVyYXRlZCBvdmVyLlxuICogQHJldHVybiB7QXJyYXl9IFRoZSBuZXcgbGlzdC5cbiAqIEBzZWUgUi50cmFuc2R1Y2UsIFIuYWRkSW5kZXhcbiAqIEBleGFtcGxlXG4gKlxuICogICAgICBjb25zdCBkb3VibGUgPSB4ID0+IHggKiAyO1xuICpcbiAqICAgICAgUi5tYXAoZG91YmxlLCBbMSwgMiwgM10pOyAvLz0+IFsyLCA0LCA2XVxuICpcbiAqICAgICAgUi5tYXAoZG91YmxlLCB7eDogMSwgeTogMiwgejogM30pOyAvLz0+IHt4OiAyLCB5OiA0LCB6OiA2fVxuICogQHN5bWIgUi5tYXAoZiwgW2EsIGJdKSA9IFtmKGEpLCBmKGIpXVxuICogQHN5bWIgUi5tYXAoZiwgeyB4OiBhLCB5OiBiIH0pID0geyB4OiBmKGEpLCB5OiBmKGIpIH1cbiAqIEBzeW1iIFIubWFwKGYsIGZ1bmN0b3JfbykgPSBmdW5jdG9yX28ubWFwKGYpXG4gKi9cblxudmFyIG1hcCA9XG4vKiNfX1BVUkVfXyovXG5fY3VycnkyKFxuLyojX19QVVJFX18qL1xuX2Rpc3BhdGNoYWJsZShbJ2ZhbnRhc3ktbGFuZC9tYXAnLCAnbWFwJ10sIF94bWFwLCBmdW5jdGlvbiBtYXAoZm4sIGZ1bmN0b3IpIHtcbiAgc3dpdGNoIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZnVuY3RvcikpIHtcbiAgICBjYXNlICdbb2JqZWN0IEZ1bmN0aW9uXSc6XG4gICAgICByZXR1cm4gY3VycnlOKGZ1bmN0b3IubGVuZ3RoLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmbi5jYWxsKHRoaXMsIGZ1bmN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gICAgICB9KTtcblxuICAgIGNhc2UgJ1tvYmplY3QgT2JqZWN0XSc6XG4gICAgICByZXR1cm4gX3JlZHVjZShmdW5jdGlvbiAoYWNjLCBrZXkpIHtcbiAgICAgICAgYWNjW2tleV0gPSBmbihmdW5jdG9yW2tleV0pO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30sIGtleXMoZnVuY3RvcikpO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBfbWFwKGZuLCBmdW5jdG9yKTtcbiAgfVxufSkpO1xuXG5leHBvcnQgZGVmYXVsdCBtYXA7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX21hcChmbiwgZnVuY3Rvcikge1xuICB2YXIgaWR4ID0gMDtcbiAgdmFyIGxlbiA9IGZ1bmN0b3IubGVuZ3RoO1xuICB2YXIgcmVzdWx0ID0gQXJyYXkobGVuKTtcblxuICB3aGlsZSAoaWR4IDwgbGVuKSB7XG4gICAgcmVzdWx0W2lkeF0gPSBmbihmdW5jdG9yW2lkeF0pO1xuICAgIGlkeCArPSAxO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn0iLCJpbXBvcnQgX2N1cnJ5MiBmcm9tIFwiLi9pbnRlcm5hbC9fY3VycnkyLmpzXCI7XG5pbXBvcnQgbWFwIGZyb20gXCIuL21hcC5qc1wiO1xuLyoqXG4gKiBSZXR1cm5zIGEgbGVucyBmb3IgdGhlIGdpdmVuIGdldHRlciBhbmQgc2V0dGVyIGZ1bmN0aW9ucy4gVGhlIGdldHRlciBcImdldHNcIlxuICogdGhlIHZhbHVlIG9mIHRoZSBmb2N1czsgdGhlIHNldHRlciBcInNldHNcIiB0aGUgdmFsdWUgb2YgdGhlIGZvY3VzLiBUaGUgc2V0dGVyXG4gKiBzaG91bGQgbm90IG11dGF0ZSB0aGUgZGF0YSBzdHJ1Y3R1cmUuXG4gKlxuICogQGZ1bmNcbiAqIEBtZW1iZXJPZiBSXG4gKiBAc2luY2UgdjAuOC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAdHlwZWRlZm4gTGVucyBzIGEgPSBGdW5jdG9yIGYgPT4gKGEgLT4gZiBhKSAtPiBzIC0+IGYgc1xuICogQHNpZyAocyAtPiBhKSAtPiAoKGEsIHMpIC0+IHMpIC0+IExlbnMgcyBhXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBnZXR0ZXJcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlclxuICogQHJldHVybiB7TGVuc31cbiAqIEBzZWUgUi52aWV3LCBSLnNldCwgUi5vdmVyLCBSLmxlbnNJbmRleCwgUi5sZW5zUHJvcFxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIGNvbnN0IHhMZW5zID0gUi5sZW5zKFIucHJvcCgneCcpLCBSLmFzc29jKCd4JykpO1xuICpcbiAqICAgICAgUi52aWV3KHhMZW5zLCB7eDogMSwgeTogMn0pOyAgICAgICAgICAgIC8vPT4gMVxuICogICAgICBSLnNldCh4TGVucywgNCwge3g6IDEsIHk6IDJ9KTsgICAgICAgICAgLy89PiB7eDogNCwgeTogMn1cbiAqICAgICAgUi5vdmVyKHhMZW5zLCBSLm5lZ2F0ZSwge3g6IDEsIHk6IDJ9KTsgIC8vPT4ge3g6IC0xLCB5OiAyfVxuICovXG5cbnZhciBsZW5zID1cbi8qI19fUFVSRV9fKi9cbl9jdXJyeTIoZnVuY3Rpb24gbGVucyhnZXR0ZXIsIHNldHRlcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHRvRnVuY3RvckZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgIHJldHVybiBtYXAoZnVuY3Rpb24gKGZvY3VzKSB7XG4gICAgICAgIHJldHVybiBzZXR0ZXIoZm9jdXMsIHRhcmdldCk7XG4gICAgICB9LCB0b0Z1bmN0b3JGbihnZXR0ZXIodGFyZ2V0KSkpO1xuICAgIH07XG4gIH07XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgbGVuczsiLCJpbXBvcnQgX2N1cnJ5MSBmcm9tIFwiLi9pbnRlcm5hbC9fY3VycnkxLmpzXCI7XG5pbXBvcnQgYXNzb2MgZnJvbSBcIi4vYXNzb2MuanNcIjtcbmltcG9ydCBsZW5zIGZyb20gXCIuL2xlbnMuanNcIjtcbmltcG9ydCBwcm9wIGZyb20gXCIuL3Byb3AuanNcIjtcbi8qKlxuICogUmV0dXJucyBhIGxlbnMgd2hvc2UgZm9jdXMgaXMgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eS5cbiAqXG4gKiBAZnVuY1xuICogQG1lbWJlck9mIFJcbiAqIEBzaW5jZSB2MC4xNC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAdHlwZWRlZm4gTGVucyBzIGEgPSBGdW5jdG9yIGYgPT4gKGEgLT4gZiBhKSAtPiBzIC0+IGYgc1xuICogQHNpZyBTdHJpbmcgLT4gTGVucyBzIGFcbiAqIEBwYXJhbSB7U3RyaW5nfSBrXG4gKiBAcmV0dXJuIHtMZW5zfVxuICogQHNlZSBSLnZpZXcsIFIuc2V0LCBSLm92ZXJcbiAqIEBleGFtcGxlXG4gKlxuICogICAgICBjb25zdCB4TGVucyA9IFIubGVuc1Byb3AoJ3gnKTtcbiAqXG4gKiAgICAgIFIudmlldyh4TGVucywge3g6IDEsIHk6IDJ9KTsgICAgICAgICAgICAvLz0+IDFcbiAqICAgICAgUi5zZXQoeExlbnMsIDQsIHt4OiAxLCB5OiAyfSk7ICAgICAgICAgIC8vPT4ge3g6IDQsIHk6IDJ9XG4gKiAgICAgIFIub3Zlcih4TGVucywgUi5uZWdhdGUsIHt4OiAxLCB5OiAyfSk7ICAvLz0+IHt4OiAtMSwgeTogMn1cbiAqL1xuXG52YXIgbGVuc1Byb3AgPVxuLyojX19QVVJFX18qL1xuX2N1cnJ5MShmdW5jdGlvbiBsZW5zUHJvcChrKSB7XG4gIHJldHVybiBsZW5zKHByb3AoayksIGFzc29jKGspKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBsZW5zUHJvcDsiLCJpbXBvcnQgeyBidWlsZFBheWxvYWQgfSBmcm9tICd3cG1sLWNvbW1vbi1qcy1zb3VyY2Uvc3JjL0FqYXgnO1xuaW1wb3J0IHsgYWN0aW9uLCB0aHVuayB9IGZyb20gJ2Vhc3ktcGVhc3knO1xuaW1wb3J0IHsgaWZFbHNlLCBwYXRoLCBwaXBlLCBwcm9wLCBvYmpPZiwgc2V0LCBsZW5zUHJvcCB9IGZyb20gJ3JhbWRhJztcblxuZXhwb3J0IGNvbnN0IG1ha2VQYXlsb2FkID0gKCBlbmRwb2ludCwgZG9tYWlucyApID0+IGJ1aWxkUGF5bG9hZChcblx0ZW5kcG9pbnQubm9uY2UsXG5cdGVuZHBvaW50LmVuZHBvaW50LFxuXHR7IGRvbWFpbnM6IGRvbWFpbnMgfSxcbik7XG5cbmV4cG9ydCBkZWZhdWx0ICggZW5kcG9pbnRzICkgPT4ge1xuXHRyZXR1cm4ge1xuXHRcdGluUHJvZ3Jlc3M6IGZhbHNlLFxuXHRcdGNvbXBsZXRlZDogZmFsc2UsXG5cdFx0cmVtb3ZlZFBlcmNlbnQ6IDAsXG5cdFx0ZXJyb3I6ICcnLFxuXG5cdFx0c2VsZWN0ZWREb21haW5zOiBbXSxcblx0XHRzZXRTZWxlY3RlZERvbWFpbnM6IGFjdGlvbiggKCBzdGF0ZSwgc2VsZWN0ZWREb21haW5zICkgPT4ge1xuXHRcdFx0c3RhdGUuc2VsZWN0ZWREb21haW5zID0gc2VsZWN0ZWREb21haW5zO1xuXHRcdH0gKSxcblxuXHRcdGNsZWFyOiBhY3Rpb24oICggc3RhdGUgKSA9PiB7XG5cdFx0XHRzdGF0ZS5pblByb2dyZXNzID0gZmFsc2U7XG5cdFx0XHRzdGF0ZS5jb21wbGV0ZWQgPSBmYWxzZTtcblx0XHRcdHN0YXRlLnJlbW92ZWRQZXJjZW50ID0gMDtcblx0XHR9ICksXG5cblx0XHRjb21wbGV0ZTogYWN0aW9uKCAoIHN0YXRlICkgPT4ge1xuXHRcdFx0c3RhdGUuY29tcGxldGVkID0gdHJ1ZTtcblx0XHR9ICksXG5cblx0XHRzZXRJblByb2dyZXNzOiBhY3Rpb24oICggc3RhdGUsIGluUHJvZ3Jlc3MgKSA9PiB7XG5cdFx0XHRzdGF0ZS5pblByb2dyZXNzID0gaW5Qcm9ncmVzcztcblx0XHR9ICksXG5cblx0XHRzZXRSZW1vdmVkUGVyY2VudDogYWN0aW9uKCAoIHN0YXRlLCB7IHJlbW92ZWRTdHJpbmdzLCB0b3RhbFN0cmluZ3MgfSApID0+IHtcblx0XHRcdGlmICggdG90YWxTdHJpbmdzICE9PSAwICkge1xuXHRcdFx0XHRzdGF0ZS5yZW1vdmVkUGVyY2VudCA9IE1hdGguY2VpbCggMTAwICogKFxuXHRcdFx0XHRcdHJlbW92ZWRTdHJpbmdzIC8gdG90YWxTdHJpbmdzXG5cdFx0XHRcdCkgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN0YXRlLnJlbW92ZWRQZXJjZW50ID0gMDtcblx0XHRcdH1cblx0XHR9ICksXG5cblx0XHRvbkVycm9yOiBhY3Rpb24oICggc3RhdGUsIHJlc3BvbnNlICkgPT4ge1xuXHRcdFx0c3RhdGUuZXJyb3IgPSBwcm9wKCAnZGF0YScsIHJlc3BvbnNlICk7XG5cdFx0XHRzdGF0ZS5pblByb2dyZXNzID0gZmFsc2U7XG5cdFx0fSApLFxuXG5cdFx0cmVtb3ZlU3RyaW5nc0JhdGNoOiB0aHVuayggKCBhY3Rpb25zLCB7IGFqYXgsIHRvdGFsU3RyaW5ncywgcmVtb3ZlZFN0cmluZ3MgPSAwIH0sIHsgZ2V0U3RhdGUgfSApID0+IHtcblx0XHRcdGNvbnN0IG9uU3VjY2VzcyA9ICggcmVtb3ZlZEluQmF0Y2ggKSA9PiB7XG5cdFx0XHRcdHJlbW92ZWRTdHJpbmdzICs9IHJlbW92ZWRJbkJhdGNoO1xuXG5cdFx0XHRcdGlmICggdG90YWxTdHJpbmdzID4gcmVtb3ZlZFN0cmluZ3MgJiYgcmVtb3ZlZEluQmF0Y2ggKSB7XG5cdFx0XHRcdFx0YWN0aW9ucy5yZW1vdmVTdHJpbmdzQmF0Y2goIHsgYWpheCwgdG90YWxTdHJpbmdzLCByZW1vdmVkU3RyaW5ncyB9ICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YWN0aW9ucy5jb21wbGV0ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0XHRhY3Rpb25zLnNldFJlbW92ZWRQZXJjZW50KCB7IHJlbW92ZWRTdHJpbmdzLCB0b3RhbFN0cmluZ3MgfSApO1xuXHRcdFx0YWpheC5kb0ZldGNoKCBtYWtlUGF5bG9hZCggZW5kcG9pbnRzLnJlbW92ZVN0cmluZ3NGcm9tRG9tYWlucywgZ2V0U3RhdGUoKS5zZWxlY3RlZERvbWFpbnMgKSApLlxuXHRcdFx0ICAgICB0aGVuKCBwcm9wKCAnZGF0YScgKSApLlxuXHRcdFx0ICAgICB0aGVuKCBpZkVsc2UoIHByb3AoICdzdWNjZXNzJyApLCBwaXBlKCBwYXRoKCBbXG5cdFx0XHRcdCAgICAgJ2RhdGEnLFxuXHRcdFx0XHQgICAgICdyZW1vdmVkX3N0cmluZ3MnLFxuXHRcdFx0ICAgICBdICksIG9uU3VjY2VzcyApLCBhY3Rpb25zLm9uRXJyb3IgKSApO1xuXHRcdH0gKSxcblxuXHRcdG9uUmVtb3ZlOiB0aHVuayggYXN5bmMgKCBhY3Rpb25zLCB7IGFqYXggfSwgeyBnZXRTdGF0ZSB9ICkgPT4ge1xuXHRcdFx0YWN0aW9ucy5zZXRJblByb2dyZXNzKCB0cnVlICk7XG5cblx0XHRcdGFqYXguZG9GZXRjaCggbWFrZVBheWxvYWQoIGVuZHBvaW50cy5pbml0U3RyaW5nc1JlbW92aW5nLCBnZXRTdGF0ZSgpLnNlbGVjdGVkRG9tYWlucyApICkuXG5cdFx0XHQgICAgIHRoZW4oIHByb3AoICdkYXRhJyApICkuXG5cdFx0XHQgICAgIHRoZW4oIGlmRWxzZShcblx0XHRcdFx0ICAgICBwcm9wKCAnc3VjY2VzcycgKSxcblx0XHRcdFx0ICAgICBwaXBlKFxuXHRcdFx0XHRcdCAgICAgcGF0aCggWydkYXRhJywgJ3RvdGFsX3N0cmluZ3MnXSApLFxuXHRcdFx0XHRcdCAgICAgb2JqT2YoICd0b3RhbFN0cmluZ3MnICksXG5cdFx0XHRcdFx0ICAgICBzZXQoIGxlbnNQcm9wKCAnYWpheCcgKSwgYWpheCApLFxuXHRcdFx0XHRcdCAgICAgYWN0aW9ucy5yZW1vdmVTdHJpbmdzQmF0Y2gsXG5cdFx0XHRcdCAgICAgKSxcblx0XHRcdFx0ICAgICBhY3Rpb25zLm9uRXJyb3IsXG5cdFx0XHQgICAgICkgKTtcblxuXHRcdH0gKSxcblx0fTtcbn07XG4iLCJpbXBvcnQgeyBjcmVhdGVTdG9yZSwgYWN0aW9uLCBjb21wdXRlZCB9IGZyb20gJ2Vhc3ktcGVhc3knO1xuaW1wb3J0IHsgc2VhcmNoIH0gZnJvbSAnLi9maWx0ZXJzJztcbmltcG9ydCByZW1vdmVTdHJpbmdzIGZyb20gJy4vbW9kZWxzL1JlbW92ZVN0cmluZ3MnO1xuXG5leHBvcnQgY29uc3Qgc3RvcmUgPSAoIHN0cmluZ0RvbWFpbnMsIGVuZHBvaW50cyApID0+IGNyZWF0ZVN0b3JlKCB7XG5cdHN0cmluZ0RvbWFpbnMsXG5cdGVuZHBvaW50cyxcblx0cmVtb3ZlU3RyaW5nczogcmVtb3ZlU3RyaW5ncyggZW5kcG9pbnRzICksXG5cblx0ZmlsdGVyZWREb21haW5zOiBjb21wdXRlZCggc3RhdGUgPT4gc2VhcmNoKCBzdGF0ZS5zZWFyY2gsIHN0YXRlLnN0cmluZ0RvbWFpbnMgKSApLFxuXG5cdHNlYXJjaDogJycsXG5cdHNldFNlYXJjaDogYWN0aW9uKCAoIHN0YXRlLCBzZWFyY2ggKSA9PiB7XG5cdFx0c3RhdGUuc2VhcmNoID0gc2VhcmNoO1xuXHR9ICksXG5cblx0aXNNb2RhbE9wZW46IGZhbHNlLFxuXHRzaG93TW9kYWw6IGFjdGlvbiggKCBzdGF0ZSwgaXNPcGVuICkgPT4ge1xuXHRcdHN0YXRlLmlzTW9kYWxPcGVuID0gaXNPcGVuO1xuXHR9ICksXG59ICk7XG4iLCIvKiBnbG9iYWxzIHdwICovXG5cbmltcG9ydCB7c3ByaW50ZiBhcyBzcHJpbnRmRnJvbU5vZGV9IGZyb20gJ3NwcmludGYtanMnO1xuXG5leHBvcnQgY29uc3QgX18gPSAodGV4dCwgZG9tYWluKSA9PiB7XG5cdHJldHVybiB0eXBlb2Ygd3AgIT09ICd1bmRlZmluZWQnICYmIHdwLmkxOG4gPyB3cC5pMThuLl9fKHRleHQsIGRvbWFpbikgOiB0ZXh0O1xufTtcbmV4cG9ydCBjb25zdCBfeCA9ICh0ZXh0LCBjb250ZXh0LCBkb21haW4pID0+IHtcblx0cmV0dXJuIHR5cGVvZiB3cCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3AuaTE4biA/IHdwLmkxOG4uX3godGV4dCwgY29udGV4dCwgZG9tYWluKSA6IHRleHQ7XG59O1xuZXhwb3J0IGNvbnN0IF9uID0gKHNpbmdsZSwgcGx1cmFsLCBudW1iZXIsIGRvbWFpbikgPT4ge1xuXHRyZXR1cm4gdHlwZW9mIHdwICE9PSAndW5kZWZpbmVkJyAmJiB3cC5pMThuID8gd3AuaTE4bi5fbihzaW5nbGUsIHBsdXJhbCwgbnVtYmVyLCBkb21haW4pIDogc2luZ2xlO1xufTtcbmV4cG9ydCBjb25zdCBfbnggPSAoc2luZ2xlLCBwbHVyYWwsIG51bWJlciwgY29udGV4dCwgZG9tYWluKSA9PiB7XG5cdHJldHVybiB0eXBlb2Ygd3AgIT09ICd1bmRlZmluZWQnICYmIHdwLmkxOG4gPyB3cC5pMThuLl9ueChzaW5nbGUsIHBsdXJhbCwgbnVtYmVyLCBjb250ZXh0LCBkb21haW4pIDogc2luZ2xlO1xufTtcbmV4cG9ydCBjb25zdCBzcHJpbnRmID0gKC4uLmFyZ3MpID0+IHtcblx0cmV0dXJuIHR5cGVvZiB3cCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3AuaTE4biA/IHdwLmkxOG4uc3ByaW50ZiguLi5hcmdzKSA6IHNwcmludGZGcm9tTm9kZSguLi5hcmdzKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEFsZXJ0IGZyb20gJ2FudGQvbGliL2FsZXJ0JztcbmltcG9ydCAnYW50ZC9saWIvYWxlcnQvc3R5bGUvaW5kZXguY3NzJztcbmltcG9ydCB7IHVzZVN0b3JlU3RhdGUgfSBmcm9tICdlYXN5LXBlYXN5JztcbmltcG9ydCB7IHBhdGggfSBmcm9tICdyYW1kYSc7XG5cbmV4cG9ydCBkZWZhdWx0ICgpID0+IHtcblx0Y29uc3QgZXJyb3JNZXNzYWdlID0gdXNlU3RvcmVTdGF0ZSggcGF0aCggWydyZW1vdmVTdHJpbmdzJywgJ2Vycm9yJ10gKSApO1xuXG5cdHJldHVybiAoXG5cdFx0ZXJyb3JNZXNzYWdlICYmIDxBbGVydCBtZXNzYWdlPXtlcnJvck1lc3NhZ2V9IHR5cGU9XCJlcnJvclwiIHNob3dJY29uLz5cblx0KTtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgVGFibGUgZnJvbSBcImFudGQvbGliL3RhYmxlXCI7XG5pbXBvcnQgJ2FudGQvbGliL3RhYmxlL3N0eWxlL2luZGV4LmNzcyc7XG5pbXBvcnQgJy4vYW50LXRhYmxlLmNzcyc7XG5cbmV4cG9ydCBkZWZhdWx0IFRhYmxlO1xuIiwiaW1wb3J0IF9jdXJyeTEgZnJvbSBcIi4vaW50ZXJuYWwvX2N1cnJ5MS5qc1wiO1xuaW1wb3J0IGtleXMgZnJvbSBcIi4va2V5cy5qc1wiO1xuLyoqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIGVudW1lcmFibGUgb3duIHByb3BlcnRpZXMgb2YgdGhlIHN1cHBsaWVkIG9iamVjdC5cbiAqIE5vdGUgdGhhdCB0aGUgb3JkZXIgb2YgdGhlIG91dHB1dCBhcnJheSBpcyBub3QgZ3VhcmFudGVlZCBhY3Jvc3MgZGlmZmVyZW50XG4gKiBKUyBwbGF0Zm9ybXMuXG4gKlxuICogQGZ1bmNcbiAqIEBtZW1iZXJPZiBSXG4gKiBAc2luY2UgdjAuMS4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAc2lnIHtrOiB2fSAtPiBbdl1cbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBleHRyYWN0IHZhbHVlcyBmcm9tXG4gKiBAcmV0dXJuIHtBcnJheX0gQW4gYXJyYXkgb2YgdGhlIHZhbHVlcyBvZiB0aGUgb2JqZWN0J3Mgb3duIHByb3BlcnRpZXMuXG4gKiBAc2VlIFIudmFsdWVzSW4sIFIua2V5c1xuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIFIudmFsdWVzKHthOiAxLCBiOiAyLCBjOiAzfSk7IC8vPT4gWzEsIDIsIDNdXG4gKi9cblxudmFyIHZhbHVlcyA9XG4vKiNfX1BVUkVfXyovXG5fY3VycnkxKGZ1bmN0aW9uIHZhbHVlcyhvYmopIHtcbiAgdmFyIHByb3BzID0ga2V5cyhvYmopO1xuICB2YXIgbGVuID0gcHJvcHMubGVuZ3RoO1xuICB2YXIgdmFscyA9IFtdO1xuICB2YXIgaWR4ID0gMDtcblxuICB3aGlsZSAoaWR4IDwgbGVuKSB7XG4gICAgdmFsc1tpZHhdID0gb2JqW3Byb3BzW2lkeF1dO1xuICAgIGlkeCArPSAxO1xuICB9XG5cbiAgcmV0dXJuIHZhbHM7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdmFsdWVzOyIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVGFibGUgZnJvbSAnd3BtbC1jb21tb24tanMtc291cmNlL3NyYy9jb21wb25lbnRzL2FudC9UYWJsZSc7XG5pbXBvcnQgJ2FudGQvbGliL3RhYmxlL3N0eWxlL2luZGV4LmNzcyc7XG5pbXBvcnQgeyBwcm9wLCB2YWx1ZXMsIG1hcCwgcGF0aCB9IGZyb20gJ3JhbWRhJztcbmltcG9ydCB7IHVzZVN0b3JlQWN0aW9ucywgdXNlU3RvcmVTdGF0ZSB9IGZyb20gJ2Vhc3ktcGVhc3knO1xuaW1wb3J0IHsgX18gfSBmcm9tICd3cG1sLWNvbW1vbi1qcy1zb3VyY2Uvc3JjL2kxOG4nO1xuXG5leHBvcnQgZGVmYXVsdCAoKSA9PiB7XG5cdGNvbnN0IHN0cmluZ0RvbWFpbnMgPSB1c2VTdG9yZVN0YXRlKCBwcm9wKCAnZmlsdGVyZWREb21haW5zJyApICk7XG5cdGNvbnN0IHNldFNlbGVjdGVkRG9tYWlucyA9IHVzZVN0b3JlQWN0aW9ucyggcGF0aCggWydyZW1vdmVTdHJpbmdzJywgJ3NldFNlbGVjdGVkRG9tYWlucyddICkgKTtcblxuXHRjb25zdCBjb2x1bW5zID0gW1xuXHRcdHtcblx0XHRcdHRpdGxlOiBfXyggJ0RvbWFpbicsICd3cG1sLXN0cmluZy10cmFuc2xhdGlvbicgKSxcblx0XHRcdGRhdGFJbmRleDogJ25hbWUnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0dGl0bGU6IF9fKCAnU3RyaW5ncyBjb3VudCcsICd3cG1sLXN0cmluZy10cmFuc2xhdGlvbicgKSxcblx0XHRcdGRhdGFJbmRleDogJ3RvdGFsX3N0cmluZ3NfY291bnQnLFxuXHRcdFx0d2lkdGg6ICcyMCUnLFxuXHRcdFx0YWxpZ246ICdyaWdodCcsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogX18oICdUcmFuc2xhdGVkIHN0cmluZ3MnLCAnd3BtbC1zdHJpbmctdHJhbnNsYXRpb24nICksXG5cdFx0XHRkYXRhSW5kZXg6ICd0cmFuc2xhdGVkX3N0cmluZ3NfY291bnQnLFxuXHRcdFx0d2lkdGg6ICcyMCUnLFxuXHRcdFx0YWxpZ246ICdyaWdodCcsXG5cdFx0fSxcblx0XTtcblxuXHRjb25zdCByb3dTZWxlY3Rpb24gPSB7XG5cdFx0b25DaGFuZ2U6ICggc2VsZWN0ZWRSb3dLZXlzLCBzZWxlY3RlZFJvd3MgKSA9PiBzZXRTZWxlY3RlZERvbWFpbnMoIG1hcCggcHJvcCggJ25hbWUnICksIHNlbGVjdGVkUm93cyApICksXG5cdH07XG5cblx0cmV0dXJuIDxUYWJsZVxuXHRcdGJvcmRlcmVkPXt0cnVlfVxuXHRcdHBhZ2luYXRpb249e2ZhbHNlfVxuXHRcdHJvd1NlbGVjdGlvbj17cm93U2VsZWN0aW9ufVxuXHRcdHNpemU9eydtaWRkbGUnfVxuXHRcdGNvbHVtbnM9e2NvbHVtbnN9XG5cdFx0cm93S2V5PVwibmFtZVwiXG5cdFx0c2Nyb2xsPXt7IHk6IDIwMCB9fVxuXHRcdGRhdGFTb3VyY2U9e3ZhbHVlcyggc3RyaW5nRG9tYWlucyApfVxuXHQvPjtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IElucHV0IGZyb20gJ2FudGQvbGliL2lucHV0JztcbmltcG9ydCAnYW50ZC9saWIvaW5wdXQvc3R5bGUvaW5kZXguY3NzJztcbmltcG9ydCB7IHVzZVN0b3JlQWN0aW9ucyB9IGZyb20gJ2Vhc3ktcGVhc3knO1xuaW1wb3J0IHsgcHJvcCB9IGZyb20gJ3JhbWRhJztcblxuXG5leHBvcnQgZGVmYXVsdCAoIHsgcGxhY2Vob2xkZXIgfSApID0+IHtcblx0Y29uc3Qgc2V0U2VhcmNoID0gdXNlU3RvcmVBY3Rpb25zKCBwcm9wKCAnc2V0U2VhcmNoJyApICk7XG5cblx0Y29uc3Qgb25TZWFyY2ggPSAoIHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSApID0+IHtcblx0XHRzZXRTZWFyY2goIHZhbHVlICk7XG5cdH07XG5cblx0cmV0dXJuIDxJbnB1dCBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9IG9uQ2hhbmdlPXtvblNlYXJjaH0vPjtcbn07IiwidmFyIF9wYXRoO1xuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuZnVuY3Rpb24gU3ZnTW9kYWxDbG9zZUljb24ocHJvcHMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIF9leHRlbmRzKHtcbiAgICB3aWR0aDogMTQsXG4gICAgaGVpZ2h0OiAxNCxcbiAgICBmaWxsOiBcIm5vbmVcIixcbiAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gIH0sIHByb3BzKSwgX3BhdGggfHwgKF9wYXRoID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xMS43NzggMTMuNzQzbDEuOTY1LTEuOTY1YS44NzEuODcxIDAgMDAwLTEuMjM1TDEwLjIgN2wzLjU0My0zLjU0M2EuODcxLjg3MSAwIDAwMC0xLjIzNUwxMS43NzguMjU3YS44NzEuODcxIDAgMDAtMS4yMzUgMEw3IDMuOCAzLjQ1Ny4yNTdhLjg3MS44NzEgMCAwMC0xLjIzNSAwTC4yNTcgMi4yMjJhLjg3MS44NzEgMCAwMDAgMS4yMzVMMy44IDcgLjI1NyAxMC41NDNhLjg3MS44NzEgMCAwMDAgMS4yMzVsMS45NjUgMS45NjVhLjg3MS44NzEgMCAwMDEuMjM1IDBMNyAxMC4ybDMuNTQzIDMuNTQzYS44NzguODc4IDAgMDAxLjIzNSAwelwiLFxuICAgIGZpbGw6IFwiIzU1NVwiXG4gIH0pKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFN2Z01vZGFsQ2xvc2VJY29uOyIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVzdWx0IGZyb20gJ2FudGQvbGliL3Jlc3VsdCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ2FudGQvbGliL2J1dHRvbic7XG5pbXBvcnQgSWNvbiBmcm9tICdhbnRkL2xpYi9pY29uJztcbmltcG9ydCAnYW50ZC9saWIvcmVzdWx0L3N0eWxlL2luZGV4LmNzcyc7XG5pbXBvcnQgeyB1c2VTdG9yZUFjdGlvbnMgfSBmcm9tICdlYXN5LXBlYXN5JztcbmltcG9ydCB7IHBhdGgsIHByb3AgfSBmcm9tICdyYW1kYSc7XG5pbXBvcnQgeyBfXyB9IGZyb20gJ3dwbWwtY29tbW9uLWpzLXNvdXJjZS9zcmMvaTE4bic7XG5pbXBvcnQgU3VjY2Vzc0ljb24gZnJvbSAnLi4vLi4vLi4vaW1nL3N1Y2Nlc3Muc3ZnJztcblxuZXhwb3J0IGRlZmF1bHQgKCkgPT4ge1xuXG5cdGNvbnN0IHNob3dNb2RhbCA9IHVzZVN0b3JlQWN0aW9ucyggcHJvcCggJ3Nob3dNb2RhbCcgKSApO1xuXHRjb25zdCBjbGVhclJlbW92ZVByb2dyZXNzID0gdXNlU3RvcmVBY3Rpb25zKCBwYXRoKCBbJ3JlbW92ZVN0cmluZ3MnLCAnY2xlYXInXSApICk7XG5cdGNvbnN0IHNldFNlYXJjaCA9IHVzZVN0b3JlQWN0aW9ucyggcHJvcCggJ3NldFNlYXJjaCcgKSApO1xuXG5cdGNvbnN0IGZpbmlzaCA9ICgpID0+IHtcblx0XHRzZXRTZWFyY2goICcnICk7XG5cdFx0Y2xlYXJSZW1vdmVQcm9ncmVzcygpO1xuXHRcdHNob3dNb2RhbCggZmFsc2UgKTtcblx0XHRsb2NhdGlvbi5yZWxvYWQoKTtcblx0fTtcblxuXHRjb25zdCBzdWNjZXNzTWVzc2FnZSA9ICgpID0+IHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PHA+XG5cdFx0XHRcdHtfXyggJ1RvIGFkZCBzdHJpbmdzIGJhY2sgdG8gdGhlIFN0cmluZyBUcmFuc2xhdGlvbiB0YWJsZSwgeW91IG1heSBuZWVkIHRvIHJlc2NhbiB0cmFuc2xhdGlvbiBmaWxlcyBvciByZWdpc3RlciBzdHJpbmdzIGFzIHRyYW5zbGF0YWJsZS4nLCAnd3BtbC1zdHJpbmctdHJhbnNsYXRpb24nICl9XG5cdFx0XHRcdDxiciAvPlxuXHRcdFx0XHR7X18oICdSZWFkIG1vcmUgYWJvdXQgJywgJ3dwbWwtc3RyaW5nLXRyYW5zbGF0aW9uJyApfVxuXHRcdFx0XHQ8YSBjbGFzc05hbWU9XCJ3cG1sLWV4dGVybmFsLWxpbmtcIiBocmVmPVwiaHR0cHM6Ly93cG1sLm9yZy9kb2N1bWVudGF0aW9uL2dldHRpbmctc3RhcnRlZC1ndWlkZS9zdHJpbmctdHJhbnNsYXRpb24vZmluZGluZy1zdHJpbmdzLXRoYXQtZG9udC1hcHBlYXItb24tdGhlLXN0cmluZy10cmFuc2xhdGlvbi1wYWdlLz91dG1fc291cmNlPXBsdWdpbiZ1dG1fbWVkaXVtPWd1aSZ1dG1fY2FtcGFpZ249d3BtbHN0XCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG5cdFx0XHRcdFx0e19fKCAnc2Nhbm5pbmcgeW91ciBzaXRlIGZvciBzdHJpbmdzIGFuZCByZWdpc3RlcmluZyB0aGVtIGFzIHRyYW5zbGF0YWJsZS4nLCAnd3BtbC1zdHJpbmctdHJhbnNsYXRpb24nICl9XG5cdFx0XHRcdDwvYT5cblx0XHRcdDwvcD5cblx0XHQpO1xuXHR9O1xuXG5cdHJldHVybiAoXG5cdFx0PFJlc3VsdCBzdGF0dXM9XCJzdWNjZXNzXCJcblx0XHQgICAgICAgIGljb249ezxJY29uIGNvbXBvbmVudD17U3VjY2Vzc0ljb259IC8+fVxuXHRcdCAgICAgICAgdGl0bGU9e19fKCAnU3VjY2Vzc2Z1bGx5IHJlbW92ZWQgc3RyaW5ncycsICd3cG1sLXN0cmluZy10cmFuc2xhdGlvbicgKX1cblx0XHQgICAgICAgIHN1YlRpdGxlPXtzdWNjZXNzTWVzc2FnZSgpfVxuXHRcdCAgICAgICAgZXh0cmE9e1tcblx0XHRcdCAgICAgICAgPEJ1dHRvbiBrZXk9XCJjbG9zZVwiIGNsYXNzTmFtZT1cImJ1dHRvbi1wcmltYXJ5XCIgb25DbGljaz17ZmluaXNofT5cblx0XHRcdFx0ICAgICAgICB7X18oICdPSywgR3JlYXQnLCAnd3BtbC1zdHJpbmctdHJhbnNsYXRpb24nICl9XG5cdFx0XHQgICAgICAgIDwvQnV0dG9uPixcblx0XHQgICAgICAgIF19XG5cdFx0Lz5cblx0KTtcbn07XG5cblxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9ncmVzcyBmcm9tICdhbnRkL2xpYi9wcm9ncmVzcyc7XG5pbXBvcnQgUm93IGZyb20gJ2FudGQvbGliL3Jvdyc7XG5pbXBvcnQgQ29sIGZyb20gJ2FudGQvbGliL2NvbCc7XG5pbXBvcnQgJ2FudGQvbGliL3Byb2dyZXNzL3N0eWxlL2luZGV4LmNzcyc7XG5pbXBvcnQgJ2FudGQvbGliL2dyaWQvc3R5bGUvaW5kZXguY3NzJztcbmltcG9ydCB7IHVzZVN0b3JlU3RhdGUgfSBmcm9tICdlYXN5LXBlYXN5JztcbmltcG9ydCB7IHByb3AgfSBmcm9tICdyYW1kYSc7XG5pbXBvcnQgeyBfXyB9IGZyb20gJ3dwbWwtY29tbW9uLWpzLXNvdXJjZS9zcmMvaTE4bic7XG5pbXBvcnQgQ2xlYW51cFN1Y2Nlc3MgZnJvbSAnLi9DbGVhbnVwU3VjY2Vzcyc7XG5cbmV4cG9ydCBkZWZhdWx0ICgpID0+IHtcblx0Y29uc3QgeyBpblByb2dyZXNzLCByZW1vdmVkUGVyY2VudCwgY29tcGxldGVkIH0gPSB1c2VTdG9yZVN0YXRlKCBwcm9wKCAncmVtb3ZlU3RyaW5ncycgKSApO1xuXG5cdGNvbnN0IGdldENvbnRlbnQgPSAoKSA9PiB7XG5cdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRyZXR1cm4gPENsZWFudXBTdWNjZXNzLz47XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0PGgyPntfXyggJ1JlbW92aW5nIHN0cmluZ3MgZnJvbSBTdHJpbmcgVHJhbnNsYXRpb24gdGFibGUnLCAnd3BtbC1zdHJpbmctdHJhbnNsYXRpb24nICl9PC9oMj5cblx0XHRcdFx0XHQ8UHJvZ3Jlc3Mgc3Ryb2tlQ29sb3I9XCIjMDA3M2FhXCIgdHlwZT1cImNpcmNsZVwiIHBlcmNlbnQ9e3JlbW92ZWRQZXJjZW50fSBzdGF0dXM9XCJhY3RpdmVcIi8+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cblx0cmV0dXJuIGluUHJvZ3Jlc3MgJiYgKFxuXHRcdDxkaXYgY2xhc3NOYW1lPVwic3RyaW5ncy1jbGVhbnVwLW1vZGFsX19wcm9ncmVzcy1vdmVybGF5XCI+XG5cdFx0XHQ8Um93IHR5cGU9XCJmbGV4XCIganVzdGlmeT1cImNlbnRlclwiIGFsaWduPVwibWlkZGxlXCI+XG5cdFx0XHRcdDxDb2wgc3Bhbj17MjR9PntnZXRDb250ZW50KCl9PC9Db2w+XG5cdFx0XHQ8L1Jvdz5cblx0XHQ8L2Rpdj5cblx0KTtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IE1vZGFsIGZyb20gJ2FudGQvbGliL21vZGFsJztcbmltcG9ydCBCdXR0b24gZnJvbSAnYW50ZC9saWIvYnV0dG9uJztcbmltcG9ydCBGb3JtIGZyb20gJ2FudGQvbGliL2Zvcm0nO1xuaW1wb3J0IEZvcm1JdGVtIGZyb20gJ2FudGQvbGliL2Zvcm0vRm9ybUl0ZW0nO1xuaW1wb3J0ICdhbnRkL2xpYi9mb3JtL3N0eWxlL2luZGV4LmNzcyc7XG5pbXBvcnQgJ2FudGQvbGliL21vZGFsL3N0eWxlL2luZGV4LmNzcyc7XG5pbXBvcnQgJ2FudGQvbGliL3BhZ2luYXRpb24vc3R5bGUvaW5kZXguY3NzJztcbmltcG9ydCB7IHVzZVN0b3JlU3RhdGUsIHVzZVN0b3JlQWN0aW9ucyB9IGZyb20gJ2Vhc3ktcGVhc3knO1xuaW1wb3J0IHsgcHJvcCwgcGF0aCB9IGZyb20gJ3JhbWRhJztcbmltcG9ydCB7IGNyZWF0ZUFqYXggfSBmcm9tICd3cG1sLWNvbW1vbi1qcy1zb3VyY2Uvc3JjL0FqYXgnO1xuaW1wb3J0IEVycm9yTWVzc2FnZSBmcm9tICcuL0Vycm9yTWVzc2FnZSc7XG5pbXBvcnQgQ2xlYW51cFRhYmxlIGZyb20gJy4vQ2xlYW51cFRhYmxlJztcbmltcG9ydCBTZWFyY2ggZnJvbSAnLi9TZWFyY2gnO1xuaW1wb3J0IENsZWFudXBQcm9ncmVzcyBmcm9tICcuL0NsZWFudXBQcm9ncmVzcyc7XG5pbXBvcnQgeyBfXyB9IGZyb20gJ3dwbWwtY29tbW9uLWpzLXNvdXJjZS9zcmMvaTE4bic7XG5pbXBvcnQgTW9kYWxDbG9zZUljb24gZnJvbSAnLi4vLi4vLi4vaW1nL01vZGFsQ2xvc2VJY29uLnN2Zyc7XG5cbmV4cG9ydCBkZWZhdWx0ICgpID0+IHtcblx0Y29uc3QgaXNNb2RhbE9wZW4gPSB1c2VTdG9yZVN0YXRlKCBwcm9wKCAnaXNNb2RhbE9wZW4nICkgKTtcblx0Y29uc3Qgc2hvd01vZGFsID0gdXNlU3RvcmVBY3Rpb25zKCBwcm9wKCAnc2hvd01vZGFsJyApICk7XG5cblx0Y29uc3Qgc2V0U2VhcmNoID0gdXNlU3RvcmVBY3Rpb25zKCBwcm9wKCAnc2V0U2VhcmNoJyApICk7XG5cblx0Y29uc3QgcmVtb3ZlSW5Qcm9ncmVzcyA9IHVzZVN0b3JlU3RhdGUoIHBhdGgoIFsncmVtb3ZlU3RyaW5ncycsICdpblByb2dyZXNzJ10gKSApO1xuXHRjb25zdCBvblJlbW92ZSA9IHVzZVN0b3JlQWN0aW9ucyggcGF0aCggWydyZW1vdmVTdHJpbmdzJywgJ29uUmVtb3ZlJ10gKSApO1xuXG5cdGNvbnN0IGFqYXggPSBjcmVhdGVBamF4KCk7XG5cblx0Y29uc3Qgb25DYW5jZWwgPSAoKSA9PiB7XG5cdFx0aWYgKCAhIHJlbW92ZUluUHJvZ3Jlc3MgKSB7XG5cdFx0XHRzaG93TW9kYWwoIGZhbHNlICk7XG5cdFx0XHRzZXRTZWFyY2goICcnICk7XG5cdFx0fVxuXHR9O1xuXG5cdHJldHVybiA8TW9kYWxcblx0XHR0aXRsZT17X18oICdSZW1vdmUgc3RyaW5ncyBieSBkb21haW4nLCAnd3BtbC1zdHJpbmctdHJhbnNsYXRpb24nICl9XG5cdFx0ZGVzdHJveU9uQ2xvc2U9e3RydWV9XG5cdFx0dmlzaWJsZT17aXNNb2RhbE9wZW59XG5cdFx0c3R5bGU9e3sgdG9wOiAnNDBweCcgfX1cblx0XHRvbkNhbmNlbD17b25DYW5jZWx9XG5cdFx0Y2xhc3NOYW1lPXsnd3BtbC13aXphcmRfX21vZGFsIHN0cmluZ3MtY2xlYW51cC1tb2RhbCd9XG5cdFx0Y2xvc2VJY29uPXs8TW9kYWxDbG9zZUljb24gLz59XG5cdFx0d2lkdGg9XCI3MCVcIlxuXHRcdGZvb3Rlcj17W1xuXHRcdFx0PEVycm9yTWVzc2FnZSBrZXk9XCJlcnJvclwiLz4sXG5cdFx0XHQ8QnV0dG9uIHN0eWxlPXt7IGZsb2F0OiAnbGVmdCcgfX0ga2V5PVwiYmFja1wiIGRpc2FibGVkPXtyZW1vdmVJblByb2dyZXNzfVxuXHRcdFx0ICAgICAgICBvbkNsaWNrPXtvbkNhbmNlbH1cblx0XHRcdCAgICAgICAgY2xhc3NOYW1lPVwiYnV0dG9uLXNlY29uZGFyeVwiPlxuXHRcdFx0XHR7X18oICdDYW5jZWwnLCAnd3BtbC1zdHJpbmctdHJhbnNsYXRpb24nICl9XG5cdFx0XHQ8L0J1dHRvbj4sXG5cdFx0XHQ8QnV0dG9uIGtleT1cInNhdmVcIiBkaXNhYmxlZD17cmVtb3ZlSW5Qcm9ncmVzc30gb25DbGljaz17KCkgPT4gb25SZW1vdmUoIHsgYWpheCB9ICl9XG5cdFx0XHQgICAgICAgIGNsYXNzTmFtZT1cImJ1dHRvbi1wcmltYXJ5XCI+XG5cdFx0XHRcdHtfXyggJ1JlbW92ZScsICd3cG1sLXN0cmluZy10cmFuc2xhdGlvbicgKX1cblx0XHRcdDwvQnV0dG9uPixcblx0XHRdfVxuXHQ+XG5cdFx0PENsZWFudXBQcm9ncmVzcyBrZXk9XCJwcm9ncmVzc1wiLz5cblx0XHQ8cD5cblx0XHRcdHtfXyggJ1RoZSBTdHJpbmcgVHJhbnNsYXRpb24gdGFibGUgY3VycmVudGx5IGNvbnRhaW5zIHN0cmluZ3MgZnJvbSB0aGUgZG9tYWlucyBsaXN0ZWQgYmVsb3cuIElmIHlvdSBkbyBub3QgcGxhbiB0byB0cmFuc2xhdGUgc3RyaW5ncyBmcm9tIGEgcGFydGljdWxhciBkb21haW4sIHNlbGVjdCBpdCBiZWxvdyB0byByZW1vdmUgaXRzIHVudHJhbnNsYXRlZCBzdHJpbmdzIGZyb20gdGhlIFN0cmluZyBUcmFuc2xhdGlvbiB0YWJsZS4gQW55IHN0cmluZ3MgdGhhdCBhbHJlYWR5IGhhdmUgdHJhbnNsYXRpb25zIHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlLicsICd3cG1sLXN0cmluZy10cmFuc2xhdGlvbicgKX1cblx0XHQ8L3A+XG5cdFx0PGRpdiBjbGFzc05hbWU9XCJhbnQtdGFibGUtd3BtbC1hY3Rpb25zXCI+XG5cdFx0XHQ8Rm9ybSBsYXlvdXQ9XCJpbmxpbmVcIj5cblx0XHRcdFx0PEZvcm1JdGVtPlxuXHRcdFx0XHRcdDxTZWFyY2ggcGxhY2Vob2xkZXI9e19fKCAnU2VhcmNoJywgJ3dwbWwtc3RyaW5nLXRyYW5zbGF0aW9uJyApfS8+XG5cdFx0XHRcdDwvRm9ybUl0ZW0+XG5cdFx0XHQ8L0Zvcm0+XG5cdFx0PC9kaXY+XG5cdFx0PENsZWFudXBUYWJsZS8+XG5cdDwvTW9kYWw+O1xufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ2FudGQvbGliL2J1dHRvbic7XG5pbXBvcnQgeyB1c2VTdG9yZUFjdGlvbnMgfSBmcm9tICdlYXN5LXBlYXN5JztcbmltcG9ydCB7IHByb3AgfSBmcm9tICdyYW1kYSc7XG5pbXBvcnQgeyBfXyB9IGZyb20gJ3dwbWwtY29tbW9uLWpzLXNvdXJjZS9zcmMvaTE4bic7XG5cbmV4cG9ydCBkZWZhdWx0ICgpID0+IHtcblx0Y29uc3Qgc2hvd01vZGFsID0gdXNlU3RvcmVBY3Rpb25zKCBwcm9wKCAnc2hvd01vZGFsJyApICk7XG5cblx0cmV0dXJuIChcblx0XHQ8QnV0dG9uIG9uQ2xpY2s9e2UgPT4gc2hvd01vZGFsKCB0cnVlICl9IGNsYXNzTmFtZT1cImJ1dHRvbi1zZWNvbmRhcnlcIj5cblx0XHRcdHtfXyggJ1JlbW92ZSBzdHJpbmdzJywgJ3dwbWwtc3RyaW5nLXRyYW5zbGF0aW9uJyApfVxuXHRcdDwvQnV0dG9uPlxuXHQpO1xufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VTdG9yZVN0YXRlIH0gZnJvbSAnZWFzeS1wZWFzeSc7XG5pbXBvcnQgeyBwcm9wIH0gZnJvbSAncmFtZGEnO1xuaW1wb3J0IENvbGxhcHNlIGZyb20gJ2FudGQvbGliL2NvbGxhcHNlJztcbmltcG9ydCAnYW50ZC9saWIvY29sbGFwc2Uvc3R5bGUvaW5kZXguY3NzJztcbmltcG9ydCB7IF9fIH0gZnJvbSAnd3BtbC1jb21tb24tanMtc291cmNlL3NyYy9pMThuJztcbmltcG9ydCBDbGVhbnVwTW9kYWwgZnJvbSAnLi9jb21wb25lbnRzL0NsZWFudXBNb2RhbCc7XG5pbXBvcnQgQ2xlYW51cEJ1dHRvbiBmcm9tICcuL2NvbXBvbmVudHMvQ2xlYW51cEJ1dHRvbic7XG5pbXBvcnQgJy4uLy4uL3Njc3Mvc3RyaW5ncy1jbGVhbnVwL3N0eWxlcy5zY3NzJztcblxuZXhwb3J0IGNvbnN0IEFwcCA9ICgpID0+IHtcblx0Y29uc3QgaXNNb2RhbE9wZW4gPSB1c2VTdG9yZVN0YXRlKCBwcm9wKCAnaXNNb2RhbE9wZW4nICkgKTtcblxuXHRyZXR1cm4gKFxuXHRcdDxDb2xsYXBzZSBkZWZhdWx0QWN0aXZlS2V5PXtbJzEnXX0gZ2hvc3Q+XG5cdFx0XHQ8Q29sbGFwc2UuUGFuZWwga2V5PVwiMVwiIGhlYWRlcj17X18oICdSZW1vdmUgc3RyaW5ncyBieSBkb21haW4nLCAnd3BtbC1zdHJpbmctdHJhbnNsYXRpb24nICl9PlxuXHRcdFx0XHQ8cD5cblx0XHRcdFx0XHR7X18oICdDbGVhbiB1cCB0aGUgU3RyaW5nIFRyYW5zbGF0aW9uIHRhYmxlIGJ5IHJlbW92aW5nIHVudHJhbnNsYXRlZCBzdHJpbmdzIGJ5IGRvbWFpbi4nLCAnd3BtbC1zdHJpbmctdHJhbnNsYXRpb24nICl9XG5cdFx0XHRcdDwvcD5cblx0XHRcdFx0PENsZWFudXBCdXR0b24vPlxuXHRcdFx0XHR7aXNNb2RhbE9wZW4gJiYgPENsZWFudXBNb2RhbC8+fVxuXHRcdFx0PC9Db2xsYXBzZS5QYW5lbD5cblx0XHQ8L0NvbGxhcHNlPlxuXHQpO1xufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IFN0b3JlUHJvdmlkZXIgfSBmcm9tICdlYXN5LXBlYXN5JztcbmltcG9ydCB7IHN0b3JlIH0gZnJvbSAnLi9zdG9yZSc7XG5pbXBvcnQgeyBBcHAgfSBmcm9tICcuL0FwcCc7XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoICdET01Db250ZW50TG9hZGVkJywgKCkgPT4ge1xuXHRSZWFjdERPTS5yZW5kZXIoXG5cdFx0PFN0b3JlUHJvdmlkZXIgc3RvcmU9e3N0b3JlKHdwbWxfc3RyaW5nc19jbGVhbnVwX3VpLmRvbWFpbnMsIHdwbWxfc3RyaW5nc19jbGVhbnVwX3VpLmVuZHBvaW50cyl9PlxuXHRcdFx0PEFwcCAvPlxuXHRcdDwvU3RvcmVQcm92aWRlcj4sXG5cdFx0ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICdkYXNoYm9hcmRfd3BtbF9jbGVhbnVwX3N0cmluZ3MnICksXG5cdCk7XG59ICk7XG5cbiIsImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG52YXIgYXR0cmlidXRlcyA9IFwiYWNjZXB0IGFjY2VwdENoYXJzZXQgYWNjZXNzS2V5IGFjdGlvbiBhbGxvd0Z1bGxTY3JlZW4gYWxsb3dUcmFuc3BhcmVuY3lcXG4gICAgYWx0IGFzeW5jIGF1dG9Db21wbGV0ZSBhdXRvRm9jdXMgYXV0b1BsYXkgY2FwdHVyZSBjZWxsUGFkZGluZyBjZWxsU3BhY2luZyBjaGFsbGVuZ2VcXG4gICAgY2hhclNldCBjaGVja2VkIGNsYXNzSUQgY2xhc3NOYW1lIGNvbFNwYW4gY29scyBjb250ZW50IGNvbnRlbnRFZGl0YWJsZSBjb250ZXh0TWVudVxcbiAgICBjb250cm9scyBjb29yZHMgY3Jvc3NPcmlnaW4gZGF0YSBkYXRlVGltZSBkZWZhdWx0IGRlZmVyIGRpciBkaXNhYmxlZCBkb3dubG9hZCBkcmFnZ2FibGVcXG4gICAgZW5jVHlwZSBmb3JtIGZvcm1BY3Rpb24gZm9ybUVuY1R5cGUgZm9ybU1ldGhvZCBmb3JtTm9WYWxpZGF0ZSBmb3JtVGFyZ2V0IGZyYW1lQm9yZGVyXFxuICAgIGhlYWRlcnMgaGVpZ2h0IGhpZGRlbiBoaWdoIGhyZWYgaHJlZkxhbmcgaHRtbEZvciBodHRwRXF1aXYgaWNvbiBpZCBpbnB1dE1vZGUgaW50ZWdyaXR5XFxuICAgIGlzIGtleVBhcmFtcyBrZXlUeXBlIGtpbmQgbGFiZWwgbGFuZyBsaXN0IGxvb3AgbG93IG1hbmlmZXN0IG1hcmdpbkhlaWdodCBtYXJnaW5XaWR0aCBtYXggbWF4TGVuZ3RoIG1lZGlhXFxuICAgIG1lZGlhR3JvdXAgbWV0aG9kIG1pbiBtaW5MZW5ndGggbXVsdGlwbGUgbXV0ZWQgbmFtZSBub1ZhbGlkYXRlIG5vbmNlIG9wZW5cXG4gICAgb3B0aW11bSBwYXR0ZXJuIHBsYWNlaG9sZGVyIHBvc3RlciBwcmVsb2FkIHJhZGlvR3JvdXAgcmVhZE9ubHkgcmVsIHJlcXVpcmVkXFxuICAgIHJldmVyc2VkIHJvbGUgcm93U3BhbiByb3dzIHNhbmRib3ggc2NvcGUgc2NvcGVkIHNjcm9sbGluZyBzZWFtbGVzcyBzZWxlY3RlZFxcbiAgICBzaGFwZSBzaXplIHNpemVzIHNwYW4gc3BlbGxDaGVjayBzcmMgc3JjRG9jIHNyY0xhbmcgc3JjU2V0IHN0YXJ0IHN0ZXAgc3R5bGVcXG4gICAgc3VtbWFyeSB0YWJJbmRleCB0YXJnZXQgdGl0bGUgdHlwZSB1c2VNYXAgdmFsdWUgd2lkdGggd21vZGUgd3JhcFwiO1xudmFyIGV2ZW50c05hbWUgPSBcIm9uQ29weSBvbkN1dCBvblBhc3RlIG9uQ29tcG9zaXRpb25FbmQgb25Db21wb3NpdGlvblN0YXJ0IG9uQ29tcG9zaXRpb25VcGRhdGUgb25LZXlEb3duXFxuICAgIG9uS2V5UHJlc3Mgb25LZXlVcCBvbkZvY3VzIG9uQmx1ciBvbkNoYW5nZSBvbklucHV0IG9uU3VibWl0IG9uQ2xpY2sgb25Db250ZXh0TWVudSBvbkRvdWJsZUNsaWNrXFxuICAgIG9uRHJhZyBvbkRyYWdFbmQgb25EcmFnRW50ZXIgb25EcmFnRXhpdCBvbkRyYWdMZWF2ZSBvbkRyYWdPdmVyIG9uRHJhZ1N0YXJ0IG9uRHJvcCBvbk1vdXNlRG93blxcbiAgICBvbk1vdXNlRW50ZXIgb25Nb3VzZUxlYXZlIG9uTW91c2VNb3ZlIG9uTW91c2VPdXQgb25Nb3VzZU92ZXIgb25Nb3VzZVVwIG9uU2VsZWN0IG9uVG91Y2hDYW5jZWxcXG4gICAgb25Ub3VjaEVuZCBvblRvdWNoTW92ZSBvblRvdWNoU3RhcnQgb25TY3JvbGwgb25XaGVlbCBvbkFib3J0IG9uQ2FuUGxheSBvbkNhblBsYXlUaHJvdWdoXFxuICAgIG9uRHVyYXRpb25DaGFuZ2Ugb25FbXB0aWVkIG9uRW5jcnlwdGVkIG9uRW5kZWQgb25FcnJvciBvbkxvYWRlZERhdGEgb25Mb2FkZWRNZXRhZGF0YVxcbiAgICBvbkxvYWRTdGFydCBvblBhdXNlIG9uUGxheSBvblBsYXlpbmcgb25Qcm9ncmVzcyBvblJhdGVDaGFuZ2Ugb25TZWVrZWQgb25TZWVraW5nIG9uU3RhbGxlZCBvblN1c3BlbmQgb25UaW1lVXBkYXRlIG9uVm9sdW1lQ2hhbmdlIG9uV2FpdGluZyBvbkxvYWQgb25FcnJvclwiO1xudmFyIHByb3BMaXN0ID0gXCJcIi5jb25jYXQoYXR0cmlidXRlcywgXCIgXCIpLmNvbmNhdChldmVudHNOYW1lKS5zcGxpdCgvW1xcc1xcbl0rLyk7XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4gKi9cblxudmFyIGFyaWFQcmVmaXggPSAnYXJpYS0nO1xudmFyIGRhdGFQcmVmaXggPSAnZGF0YS0nO1xuXG5mdW5jdGlvbiBtYXRjaChrZXksIHByZWZpeCkge1xuICByZXR1cm4ga2V5LmluZGV4T2YocHJlZml4KSA9PT0gMDtcbn1cbi8qKlxuICogUGlja2VyIHByb3BzIGZyb20gZXhpc3QgcHJvcHMgd2l0aCBmaWx0ZXJcbiAqIEBwYXJhbSBwcm9wcyBQYXNzZWQgcHJvcHNcbiAqIEBwYXJhbSBhcmlhT25seSBib29sZWFuIHwgeyBhcmlhPzogYm9vbGVhbjsgZGF0YT86IGJvb2xlYW47IGF0dHI/OiBib29sZWFuOyB9IGZpbHRlciBjb25maWdcbiAqL1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBpY2tBdHRycyhwcm9wcykge1xuICB2YXIgYXJpYU9ubHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuICB2YXIgbWVyZ2VkQ29uZmlnO1xuXG4gIGlmIChhcmlhT25seSA9PT0gZmFsc2UpIHtcbiAgICBtZXJnZWRDb25maWcgPSB7XG4gICAgICBhcmlhOiB0cnVlLFxuICAgICAgZGF0YTogdHJ1ZSxcbiAgICAgIGF0dHI6IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKGFyaWFPbmx5ID09PSB0cnVlKSB7XG4gICAgbWVyZ2VkQ29uZmlnID0ge1xuICAgICAgYXJpYTogdHJ1ZVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgbWVyZ2VkQ29uZmlnID0gX29iamVjdFNwcmVhZCh7fSwgYXJpYU9ubHkpO1xuICB9XG5cbiAgdmFyIGF0dHJzID0ge307XG4gIE9iamVjdC5rZXlzKHByb3BzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoIC8vIEFyaWFcbiAgICBtZXJnZWRDb25maWcuYXJpYSAmJiAoa2V5ID09PSAncm9sZScgfHwgbWF0Y2goa2V5LCBhcmlhUHJlZml4KSkgfHwgLy8gRGF0YVxuICAgIG1lcmdlZENvbmZpZy5kYXRhICYmIG1hdGNoKGtleSwgZGF0YVByZWZpeCkgfHwgLy8gQXR0clxuICAgIG1lcmdlZENvbmZpZy5hdHRyICYmIHByb3BMaXN0LmluY2x1ZGVzKGtleSkpIHtcbiAgICAgIGF0dHJzW2tleV0gPSBwcm9wc1trZXldO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBhdHRycztcbn0iLCJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlc2l6ZU9ic2VydmVyIGZyb20gJ3JjLXJlc2l6ZS1vYnNlcnZlcic7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbi8qKlxuICogRmlsbCBjb21wb25lbnQgdG8gcHJvdmlkZWQgdGhlIHNjcm9sbCBjb250ZW50IHJlYWwgaGVpZ2h0LlxuICovXG5cbnZhciBGaWxsZXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAoX3JlZiwgcmVmKSB7XG4gIHZhciBoZWlnaHQgPSBfcmVmLmhlaWdodCxcbiAgICAgIG9mZnNldCA9IF9yZWYub2Zmc2V0LFxuICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuLFxuICAgICAgcHJlZml4Q2xzID0gX3JlZi5wcmVmaXhDbHMsXG4gICAgICBvbklubmVyUmVzaXplID0gX3JlZi5vbklubmVyUmVzaXplO1xuICB2YXIgb3V0ZXJTdHlsZSA9IHt9O1xuICB2YXIgaW5uZXJTdHlsZSA9IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbidcbiAgfTtcblxuICBpZiAob2Zmc2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBvdXRlclN0eWxlID0ge1xuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ1xuICAgIH07XG4gICAgaW5uZXJTdHlsZSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaW5uZXJTdHlsZSksIHt9LCB7XG4gICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWShcIi5jb25jYXQob2Zmc2V0LCBcInB4KVwiKSxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgbGVmdDogMCxcbiAgICAgIHJpZ2h0OiAwLFxuICAgICAgdG9wOiAwXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIHN0eWxlOiBvdXRlclN0eWxlXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlc2l6ZU9ic2VydmVyLCB7XG4gICAgb25SZXNpemU6IGZ1bmN0aW9uIG9uUmVzaXplKF9yZWYyKSB7XG4gICAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gX3JlZjIub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICBpZiAob2Zmc2V0SGVpZ2h0ICYmIG9uSW5uZXJSZXNpemUpIHtcbiAgICAgICAgb25Jbm5lclJlc2l6ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIHN0eWxlOiBpbm5lclN0eWxlLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaG9sZGVyLWlubmVyXCIpLCBwcmVmaXhDbHMpKSxcbiAgICByZWY6IHJlZlxuICB9LCBjaGlsZHJlbikpKTtcbn0pO1xuRmlsbGVyLmRpc3BsYXlOYW1lID0gJ0ZpbGxlcic7XG5leHBvcnQgZGVmYXVsdCBGaWxsZXI7IiwidmFyIHJhZiA9IGZ1bmN0aW9uIHJhZihjYWxsYmFjaykge1xuICByZXR1cm4gK3NldFRpbWVvdXQoY2FsbGJhY2ssIDE2KTtcbn07XG5cbnZhciBjYWYgPSBmdW5jdGlvbiBjYWYobnVtKSB7XG4gIHJldHVybiBjbGVhclRpbWVvdXQobnVtKTtcbn07XG5cbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAncmVxdWVzdEFuaW1hdGlvbkZyYW1lJyBpbiB3aW5kb3cpIHtcbiAgcmFmID0gZnVuY3Rpb24gcmFmKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2spO1xuICB9O1xuXG4gIGNhZiA9IGZ1bmN0aW9uIGNhZihoYW5kbGUpIHtcbiAgICByZXR1cm4gd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGhhbmRsZSk7XG4gIH07XG59XG5cbnZhciByYWZVVUlEID0gMDtcbnZhciByYWZJZHMgPSBuZXcgTWFwKCk7XG5cbmZ1bmN0aW9uIGNsZWFudXAoaWQpIHtcbiAgcmFmSWRzLmRlbGV0ZShpZCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdyYXBwZXJSYWYoY2FsbGJhY2spIHtcbiAgdmFyIHRpbWVzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAxO1xuICByYWZVVUlEICs9IDE7XG4gIHZhciBpZCA9IHJhZlVVSUQ7XG5cbiAgZnVuY3Rpb24gY2FsbFJlZihsZWZ0VGltZXMpIHtcbiAgICBpZiAobGVmdFRpbWVzID09PSAwKSB7XG4gICAgICAvLyBDbGVhbiB1cFxuICAgICAgY2xlYW51cChpZCk7IC8vIFRyaWdnZXJcblxuICAgICAgY2FsbGJhY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTmV4dCByYWZcbiAgICAgIHZhciByZWFsSWQgPSByYWYoZnVuY3Rpb24gKCkge1xuICAgICAgICBjYWxsUmVmKGxlZnRUaW1lcyAtIDEpO1xuICAgICAgfSk7IC8vIEJpbmQgcmVhbCByYWYgaWRcblxuICAgICAgcmFmSWRzLnNldChpZCwgcmVhbElkKTtcbiAgICB9XG4gIH1cblxuICBjYWxsUmVmKHRpbWVzKTtcbiAgcmV0dXJuIGlkO1xufVxuXG53cmFwcGVyUmFmLmNhbmNlbCA9IGZ1bmN0aW9uIChpZCkge1xuICB2YXIgcmVhbElkID0gcmFmSWRzLmdldChpZCk7XG4gIGNsZWFudXAocmVhbElkKTtcbiAgcmV0dXJuIGNhZihyZWFsSWQpO1xufTsiLCJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHJhZiBmcm9tIFwicmMtdXRpbC9lcy9yYWZcIjtcbnZhciBNSU5fU0laRSA9IDIwO1xuXG5mdW5jdGlvbiBnZXRQYWdlWShlKSB7XG4gIHJldHVybiAndG91Y2hlcycgaW4gZSA/IGUudG91Y2hlc1swXS5wYWdlWSA6IGUucGFnZVk7XG59XG5cbnZhciBTY3JvbGxCYXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFNjcm9sbEJhciwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihTY3JvbGxCYXIpO1xuXG4gIGZ1bmN0aW9uIFNjcm9sbEJhcigpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2Nyb2xsQmFyKTtcblxuICAgIF90aGlzID0gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgX3RoaXMubW92ZVJhZiA9IG51bGw7XG4gICAgX3RoaXMuc2Nyb2xsYmFyUmVmID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZVJlZigpO1xuICAgIF90aGlzLnRodW1iUmVmID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZVJlZigpO1xuICAgIF90aGlzLnZpc2libGVUaW1lb3V0ID0gbnVsbDtcbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGRyYWdnaW5nOiBmYWxzZSxcbiAgICAgIHBhZ2VZOiBudWxsLFxuICAgICAgc3RhcnRUb3A6IG51bGwsXG4gICAgICB2aXNpYmxlOiBmYWxzZVxuICAgIH07XG5cbiAgICBfdGhpcy5kZWxheUhpZGRlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNsZWFyVGltZW91dChfdGhpcy52aXNpYmxlVGltZW91dCk7XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgfSk7XG5cbiAgICAgIF90aGlzLnZpc2libGVUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH0sIDIwMDApO1xuICAgIH07XG5cbiAgICBfdGhpcy5vblNjcm9sbGJhclRvdWNoU3RhcnQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH07XG5cbiAgICBfdGhpcy5vbkNvbnRhaW5lck1vdXNlRG93biA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH07IC8vID09PT09PT09PT09PT09PT09PT09PT09IENsZWFuID09PT09PT09PT09PT09PT09PT09PT09XG5cblxuICAgIF90aGlzLnBhdGNoRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIF90aGlzLm9uTW91c2VNb3ZlKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgX3RoaXMub25Nb3VzZVVwKTtcblxuICAgICAgX3RoaXMudGh1bWJSZWYuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBfdGhpcy5vbk1vdXNlTW92ZSk7XG5cbiAgICAgIF90aGlzLnRodW1iUmVmLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBfdGhpcy5vbk1vdXNlVXApO1xuICAgIH07XG5cbiAgICBfdGhpcy5yZW1vdmVFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgX3RoaXMub25Nb3VzZU1vdmUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBfdGhpcy5vbk1vdXNlVXApO1xuXG4gICAgICBfdGhpcy5zY3JvbGxiYXJSZWYuY3VycmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgX3RoaXMub25TY3JvbGxiYXJUb3VjaFN0YXJ0KTtcblxuICAgICAgX3RoaXMudGh1bWJSZWYuY3VycmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgX3RoaXMub25Nb3VzZURvd24pO1xuXG4gICAgICBfdGhpcy50aHVtYlJlZi5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIF90aGlzLm9uTW91c2VNb3ZlKTtcblxuICAgICAgX3RoaXMudGh1bWJSZWYuY3VycmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIF90aGlzLm9uTW91c2VVcCk7XG5cbiAgICAgIHJhZi5jYW5jZWwoX3RoaXMubW92ZVJhZik7XG4gICAgfTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT0gVGh1bWIgPT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gICAgX3RoaXMub25Nb3VzZURvd24gPSBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIG9uU3RhcnRNb3ZlID0gX3RoaXMucHJvcHMub25TdGFydE1vdmU7XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZHJhZ2dpbmc6IHRydWUsXG4gICAgICAgIHBhZ2VZOiBnZXRQYWdlWShlKSxcbiAgICAgICAgc3RhcnRUb3A6IF90aGlzLmdldFRvcCgpXG4gICAgICB9KTtcblxuICAgICAgb25TdGFydE1vdmUoKTtcblxuICAgICAgX3RoaXMucGF0Y2hFdmVudHMoKTtcblxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuXG4gICAgX3RoaXMub25Nb3VzZU1vdmUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIF90aGlzJHN0YXRlID0gX3RoaXMuc3RhdGUsXG4gICAgICAgICAgZHJhZ2dpbmcgPSBfdGhpcyRzdGF0ZS5kcmFnZ2luZyxcbiAgICAgICAgICBwYWdlWSA9IF90aGlzJHN0YXRlLnBhZ2VZLFxuICAgICAgICAgIHN0YXJ0VG9wID0gX3RoaXMkc3RhdGUuc3RhcnRUb3A7XG4gICAgICB2YXIgb25TY3JvbGwgPSBfdGhpcy5wcm9wcy5vblNjcm9sbDtcbiAgICAgIHJhZi5jYW5jZWwoX3RoaXMubW92ZVJhZik7XG5cbiAgICAgIGlmIChkcmFnZ2luZykge1xuICAgICAgICB2YXIgb2Zmc2V0WSA9IGdldFBhZ2VZKGUpIC0gcGFnZVk7XG4gICAgICAgIHZhciBuZXdUb3AgPSBzdGFydFRvcCArIG9mZnNldFk7XG5cbiAgICAgICAgdmFyIGVuYWJsZVNjcm9sbFJhbmdlID0gX3RoaXMuZ2V0RW5hYmxlU2Nyb2xsUmFuZ2UoKTtcblxuICAgICAgICB2YXIgZW5hYmxlSGVpZ2h0UmFuZ2UgPSBfdGhpcy5nZXRFbmFibGVIZWlnaHRSYW5nZSgpO1xuXG4gICAgICAgIHZhciBwdGcgPSBlbmFibGVIZWlnaHRSYW5nZSA/IG5ld1RvcCAvIGVuYWJsZUhlaWdodFJhbmdlIDogMDtcbiAgICAgICAgdmFyIG5ld1Njcm9sbFRvcCA9IE1hdGguY2VpbChwdGcgKiBlbmFibGVTY3JvbGxSYW5nZSk7XG4gICAgICAgIF90aGlzLm1vdmVSYWYgPSByYWYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIG9uU2Nyb2xsKG5ld1Njcm9sbFRvcCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5vbk1vdXNlVXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgb25TdG9wTW92ZSA9IF90aGlzLnByb3BzLm9uU3RvcE1vdmU7XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZHJhZ2dpbmc6IGZhbHNlXG4gICAgICB9KTtcblxuICAgICAgb25TdG9wTW92ZSgpO1xuXG4gICAgICBfdGhpcy5yZW1vdmVFdmVudHMoKTtcbiAgICB9OyAvLyA9PT09PT09PT09PT09PT09PT09PT0gQ2FsY3VsYXRlID09PT09PT09PT09PT09PT09PT09PVxuXG5cbiAgICBfdGhpcy5nZXRTcGluSGVpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHMuaGVpZ2h0LFxuICAgICAgICAgIGNvdW50ID0gX3RoaXMkcHJvcHMuY291bnQ7XG4gICAgICB2YXIgYmFzZUhlaWdodCA9IGhlaWdodCAvIGNvdW50ICogMTA7XG4gICAgICBiYXNlSGVpZ2h0ID0gTWF0aC5tYXgoYmFzZUhlaWdodCwgTUlOX1NJWkUpO1xuICAgICAgYmFzZUhlaWdodCA9IE1hdGgubWluKGJhc2VIZWlnaHQsIGhlaWdodCAvIDIpO1xuICAgICAgcmV0dXJuIE1hdGguZmxvb3IoYmFzZUhlaWdodCk7XG4gICAgfTtcblxuICAgIF90aGlzLmdldEVuYWJsZVNjcm9sbFJhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIHNjcm9sbEhlaWdodCA9IF90aGlzJHByb3BzMi5zY3JvbGxIZWlnaHQsXG4gICAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHMyLmhlaWdodDtcbiAgICAgIHJldHVybiBzY3JvbGxIZWlnaHQgLSBoZWlnaHQgfHwgMDtcbiAgICB9O1xuXG4gICAgX3RoaXMuZ2V0RW5hYmxlSGVpZ2h0UmFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgaGVpZ2h0ID0gX3RoaXMucHJvcHMuaGVpZ2h0O1xuXG4gICAgICB2YXIgc3BpbkhlaWdodCA9IF90aGlzLmdldFNwaW5IZWlnaHQoKTtcblxuICAgICAgcmV0dXJuIGhlaWdodCAtIHNwaW5IZWlnaHQgfHwgMDtcbiAgICB9O1xuXG4gICAgX3RoaXMuZ2V0VG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHNjcm9sbFRvcCA9IF90aGlzLnByb3BzLnNjcm9sbFRvcDtcblxuICAgICAgdmFyIGVuYWJsZVNjcm9sbFJhbmdlID0gX3RoaXMuZ2V0RW5hYmxlU2Nyb2xsUmFuZ2UoKTtcblxuICAgICAgdmFyIGVuYWJsZUhlaWdodFJhbmdlID0gX3RoaXMuZ2V0RW5hYmxlSGVpZ2h0UmFuZ2UoKTtcblxuICAgICAgaWYgKHNjcm9sbFRvcCA9PT0gMCB8fCBlbmFibGVTY3JvbGxSYW5nZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgdmFyIHB0ZyA9IHNjcm9sbFRvcCAvIGVuYWJsZVNjcm9sbFJhbmdlO1xuICAgICAgcmV0dXJuIHB0ZyAqIGVuYWJsZUhlaWdodFJhbmdlO1xuICAgIH07IC8vIE5vdCBzaG93IHNjcm9sbGJhciB3aGVuIGhlaWdodCBpcyBsYXJnZSB0aGFuZSBzY3JvbGxIZWlnaHRcblxuXG4gICAgX3RoaXMuZ2V0VmlzaWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2aXNpYmxlID0gX3RoaXMuc3RhdGUudmlzaWJsZTtcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczMuaGVpZ2h0LFxuICAgICAgICAgIHNjcm9sbEhlaWdodCA9IF90aGlzJHByb3BzMy5zY3JvbGxIZWlnaHQ7XG5cbiAgICAgIGlmIChoZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZpc2libGU7XG4gICAgfTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhTY3JvbGxCYXIsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5zY3JvbGxiYXJSZWYuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5vblNjcm9sbGJhclRvdWNoU3RhcnQpO1xuICAgICAgdGhpcy50aHVtYlJlZi5jdXJyZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLm9uTW91c2VEb3duKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkVXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICAgIGlmIChwcmV2UHJvcHMuc2Nyb2xsVG9wICE9PSB0aGlzLnByb3BzLnNjcm9sbFRvcCkge1xuICAgICAgICB0aGlzLmRlbGF5SGlkZGVuKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdGhpcy5yZW1vdmVFdmVudHMoKTtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnZpc2libGVUaW1lb3V0KTtcbiAgICB9IC8vID09PT09PT09PT09PT09PT09PT09PT0gUmVuZGVyID09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIGRyYWdnaW5nID0gdGhpcy5zdGF0ZS5kcmFnZ2luZztcbiAgICAgIHZhciBwcmVmaXhDbHMgPSB0aGlzLnByb3BzLnByZWZpeENscztcbiAgICAgIHZhciBzcGluSGVpZ2h0ID0gdGhpcy5nZXRTcGluSGVpZ2h0KCk7XG4gICAgICB2YXIgdG9wID0gdGhpcy5nZXRUb3AoKTtcbiAgICAgIHZhciB2aXNpYmxlID0gdGhpcy5nZXRWaXNpYmxlKCk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICByZWY6IHRoaXMuc2Nyb2xsYmFyUmVmLFxuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc2Nyb2xsYmFyXCIpLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIHdpZHRoOiA4LFxuICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgZGlzcGxheTogdmlzaWJsZSA/IG51bGwgOiAnbm9uZSdcbiAgICAgICAgfSxcbiAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25Db250YWluZXJNb3VzZURvd24sXG4gICAgICAgIG9uTW91c2VNb3ZlOiB0aGlzLmRlbGF5SGlkZGVuXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIHJlZjogdGhpcy50aHVtYlJlZixcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc2Nyb2xsYmFyLXRodW1iXCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc2Nyb2xsYmFyLXRodW1iLW1vdmluZ1wiKSwgZHJhZ2dpbmcpKSxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIGhlaWdodDogc3BpbkhlaWdodCxcbiAgICAgICAgICB0b3A6IHRvcCxcbiAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgIGJhY2tncm91bmQ6ICdyZ2JhKDAsIDAsIDAsIDAuNSknLFxuICAgICAgICAgIGJvcmRlclJhZGl1czogOTksXG4gICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgdXNlclNlbGVjdDogJ25vbmUnXG4gICAgICAgIH0sXG4gICAgICAgIG9uTW91c2VEb3duOiB0aGlzLm9uTW91c2VEb3duXG4gICAgICB9KSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFNjcm9sbEJhcjtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuZXhwb3J0IHsgU2Nyb2xsQmFyIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZnVuY3Rpb24gSXRlbShfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgICBzZXRSZWYgPSBfcmVmLnNldFJlZjtcbiAgdmFyIHJlZkZ1bmMgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAobm9kZSkge1xuICAgIHNldFJlZihub2RlKTtcbiAgfSwgW10pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgIHJlZjogcmVmRnVuY1xuICB9KTtcbn0iLCJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbi8vIEZpcmVmb3ggaGFzIGxvdyBwZXJmb3JtYW5jZSBvZiBtYXAuXG52YXIgQ2FjaGVNYXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBDYWNoZU1hcCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2FjaGVNYXApO1xuXG4gICAgdGhpcy5tYXBzID0ge307XG4gICAgdGhpcy5tYXBzLnByb3RvdHlwZSA9IG51bGw7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQ2FjaGVNYXAsIFt7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdGhpcy5tYXBzW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLm1hcHNba2V5XTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ2FjaGVNYXA7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IENhY2hlTWFwOyIsImZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8ICEoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChhcnIpKSkgcmV0dXJuOyB2YXIgX2FyciA9IFtdOyB2YXIgX24gPSB0cnVlOyB2YXIgX2QgPSBmYWxzZTsgdmFyIF9lID0gdW5kZWZpbmVkOyB0cnkgeyBmb3IgKHZhciBfaSA9IGFycltTeW1ib2wuaXRlcmF0b3JdKCksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpOyB9IGZpbmFsbHkgeyBpZiAoX2QpIHRocm93IF9lOyB9IH0gcmV0dXJuIF9hcnI7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBmaW5kRE9NTm9kZSBmcm9tIFwicmMtdXRpbC9lcy9Eb20vZmluZERPTU5vZGVcIjtcbmltcG9ydCBDYWNoZU1hcCBmcm9tICcuLi91dGlscy9DYWNoZU1hcCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VIZWlnaHRzKGdldEtleSwgb25JdGVtQWRkLCBvbkl0ZW1SZW1vdmUpIHtcbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZSA9IFJlYWN0LnVzZVN0YXRlKDApLFxuICAgICAgX1JlYWN0JHVzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF9SZWFjdCR1c2VTdGF0ZSwgMiksXG4gICAgICB1cGRhdGVkTWFyayA9IF9SZWFjdCR1c2VTdGF0ZTJbMF0sXG4gICAgICBzZXRVcGRhdGVkTWFyayA9IF9SZWFjdCR1c2VTdGF0ZTJbMV07XG5cbiAgdmFyIGluc3RhbmNlUmVmID0gdXNlUmVmKG5ldyBNYXAoKSk7XG4gIHZhciBoZWlnaHRzUmVmID0gdXNlUmVmKG5ldyBDYWNoZU1hcCgpKTtcbiAgdmFyIGhlaWdodFVwZGF0ZUlkUmVmID0gdXNlUmVmKDApO1xuXG4gIGZ1bmN0aW9uIGNvbGxlY3RIZWlnaHQoKSB7XG4gICAgaGVpZ2h0VXBkYXRlSWRSZWYuY3VycmVudCArPSAxO1xuICAgIHZhciBjdXJyZW50SWQgPSBoZWlnaHRVcGRhdGVJZFJlZi5jdXJyZW50O1xuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgLy8gT25seSBjb2xsZWN0IHdoZW4gaXQncyBsYXRlc3QgY2FsbFxuICAgICAgaWYgKGN1cnJlbnRJZCAhPT0gaGVpZ2h0VXBkYXRlSWRSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgICAgaW5zdGFuY2VSZWYuY3VycmVudC5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50LCBrZXkpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5vZmZzZXRQYXJlbnQpIHtcbiAgICAgICAgICB2YXIgaHRtbEVsZW1lbnQgPSBmaW5kRE9NTm9kZShlbGVtZW50KTtcbiAgICAgICAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gaHRtbEVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgaWYgKGhlaWdodHNSZWYuY3VycmVudC5nZXQoa2V5KSAhPT0gb2Zmc2V0SGVpZ2h0KSB7XG4gICAgICAgICAgICBoZWlnaHRzUmVmLmN1cnJlbnQuc2V0KGtleSwgaHRtbEVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pOyAvLyBBbHdheXMgdHJpZ2dlciB1cGRhdGUgbWFyayB0byB0ZWxsIHBhcmVudCB0aGF0IHNob3VsZCByZS1jYWxjdWxhdGUgaGVpZ2h0cyB3aGVuIHJlc2l6ZWRcblxuICAgICAgc2V0VXBkYXRlZE1hcmsoZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgcmV0dXJuIGMgKyAxO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRJbnN0YW5jZVJlZihpdGVtLCBpbnN0YW5jZSkge1xuICAgIHZhciBrZXkgPSBnZXRLZXkoaXRlbSk7XG4gICAgdmFyIG9yaWdpbiA9IGluc3RhbmNlUmVmLmN1cnJlbnQuZ2V0KGtleSk7XG5cbiAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgIGluc3RhbmNlUmVmLmN1cnJlbnQuc2V0KGtleSwgaW5zdGFuY2UpO1xuICAgICAgY29sbGVjdEhlaWdodCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnN0YW5jZVJlZi5jdXJyZW50LmRlbGV0ZShrZXkpO1xuICAgIH0gLy8gSW5zdGFuY2UgY2hhbmdlZFxuXG5cbiAgICBpZiAoIW9yaWdpbiAhPT0gIWluc3RhbmNlKSB7XG4gICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgb25JdGVtQWRkID09PSBudWxsIHx8IG9uSXRlbUFkZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25JdGVtQWRkKGl0ZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25JdGVtUmVtb3ZlID09PSBudWxsIHx8IG9uSXRlbVJlbW92ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25JdGVtUmVtb3ZlKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbc2V0SW5zdGFuY2VSZWYsIGNvbGxlY3RIZWlnaHQsIGhlaWdodHNSZWYuY3VycmVudCwgdXBkYXRlZE1hcmtdO1xufSIsImltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuLyoqXG4gKiBSZXR1cm4gaWYgYSBub2RlIGlzIGEgRE9NIG5vZGUuIEVsc2Ugd2lsbCByZXR1cm4gYnkgYGZpbmRET01Ob2RlYFxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZpbmRET01Ob2RlKG5vZGUpIHtcbiAgaWYgKG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIFJlYWN0RE9NLmZpbmRET01Ob2RlKG5vZGUpO1xufSIsImZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCByYWYgZnJvbSBcInJjLXV0aWwvZXMvcmFmXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VTY3JvbGxUbyhjb250YWluZXJSZWYsIGRhdGEsIGhlaWdodHMsIGl0ZW1IZWlnaHQsIGdldEtleSwgY29sbGVjdEhlaWdodCwgc3luY1Njcm9sbFRvcCwgdHJpZ2dlckZsYXNoKSB7XG4gIHZhciBzY3JvbGxSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICAvLyBXaGVuIG5vdCBhcmd1bWVudCBwcm92aWRlZCwgd2UgdGhpbmsgZGV2IG1heSB3YW50IHRvIHNob3cgdGhlIHNjcm9sbGJhclxuICAgIGlmIChhcmcgPT09IG51bGwgfHwgYXJnID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRyaWdnZXJGbGFzaCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gTm9ybWFsIHNjcm9sbCBsb2dpY1xuXG5cbiAgICByYWYuY2FuY2VsKHNjcm9sbFJlZi5jdXJyZW50KTtcblxuICAgIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgICAgc3luY1Njcm9sbFRvcChhcmcpO1xuICAgIH0gZWxzZSBpZiAoYXJnICYmIF90eXBlb2YoYXJnKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHZhciBpbmRleDtcbiAgICAgIHZhciBhbGlnbiA9IGFyZy5hbGlnbjtcblxuICAgICAgaWYgKCdpbmRleCcgaW4gYXJnKSB7XG4gICAgICAgIGluZGV4ID0gYXJnLmluZGV4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5kZXggPSBkYXRhLmZpbmRJbmRleChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIHJldHVybiBnZXRLZXkoaXRlbSkgPT09IGFyZy5rZXk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB2YXIgX2FyZyRvZmZzZXQgPSBhcmcub2Zmc2V0LFxuICAgICAgICAgIG9mZnNldCA9IF9hcmckb2Zmc2V0ID09PSB2b2lkIDAgPyAwIDogX2FyZyRvZmZzZXQ7IC8vIFdlIHdpbGwgcmV0cnkgMyB0aW1lcyBpbiBjYXNlIGR5bmFtaWMgaGVpZ2h0IHNoYWtpbmdcblxuICAgICAgdmFyIHN5bmNTY3JvbGwgPSBmdW5jdGlvbiBzeW5jU2Nyb2xsKHRpbWVzLCB0YXJnZXRBbGlnbikge1xuICAgICAgICBpZiAodGltZXMgPCAwIHx8ICFjb250YWluZXJSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgICAgICB2YXIgaGVpZ2h0ID0gY29udGFpbmVyUmVmLmN1cnJlbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICB2YXIgbmVlZENvbGxlY3RIZWlnaHQgPSBmYWxzZTtcbiAgICAgICAgdmFyIG5ld1RhcmdldEFsaWduID0gdGFyZ2V0QWxpZ247IC8vIEdvIHRvIG5leHQgZnJhbWUgaWYgaGVpZ2h0IG5vdCBleGlzdFxuXG4gICAgICAgIGlmIChoZWlnaHQpIHtcbiAgICAgICAgICB2YXIgbWVyZ2VkQWxpZ24gPSB0YXJnZXRBbGlnbiB8fCBhbGlnbjsgLy8gR2V0IHRvcCAmIGJvdHRvbVxuXG4gICAgICAgICAgdmFyIHN0YWNrVG9wID0gMDtcbiAgICAgICAgICB2YXIgaXRlbVRvcCA9IDA7XG4gICAgICAgICAgdmFyIGl0ZW1Cb3R0b20gPSAwO1xuICAgICAgICAgIHZhciBtYXhMZW4gPSBNYXRoLm1pbihkYXRhLmxlbmd0aCwgaW5kZXgpO1xuXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gbWF4TGVuOyBpICs9IDEpIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBnZXRLZXkoZGF0YVtpXSk7XG4gICAgICAgICAgICBpdGVtVG9wID0gc3RhY2tUb3A7XG4gICAgICAgICAgICB2YXIgY2FjaGVIZWlnaHQgPSBoZWlnaHRzLmdldChrZXkpO1xuICAgICAgICAgICAgaXRlbUJvdHRvbSA9IGl0ZW1Ub3AgKyAoY2FjaGVIZWlnaHQgPT09IHVuZGVmaW5lZCA/IGl0ZW1IZWlnaHQgOiBjYWNoZUhlaWdodCk7XG4gICAgICAgICAgICBzdGFja1RvcCA9IGl0ZW1Cb3R0b207XG5cbiAgICAgICAgICAgIGlmIChpID09PSBpbmRleCAmJiBjYWNoZUhlaWdodCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIG5lZWRDb2xsZWN0SGVpZ2h0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IC8vIFNjcm9sbCB0b1xuXG5cbiAgICAgICAgICB2YXIgdGFyZ2V0VG9wID0gbnVsbDtcblxuICAgICAgICAgIHN3aXRjaCAobWVyZ2VkQWxpZ24pIHtcbiAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgIHRhcmdldFRvcCA9IGl0ZW1Ub3AgLSBvZmZzZXQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgICB0YXJnZXRUb3AgPSBpdGVtQm90dG9tIC0gaGVpZ2h0ICsgb2Zmc2V0O1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhciBzY3JvbGxUb3AgPSBjb250YWluZXJSZWYuY3VycmVudC5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgICAgdmFyIHNjcm9sbEJvdHRvbSA9IHNjcm9sbFRvcCArIGhlaWdodDtcblxuICAgICAgICAgICAgICAgIGlmIChpdGVtVG9wIDwgc2Nyb2xsVG9wKSB7XG4gICAgICAgICAgICAgICAgICBuZXdUYXJnZXRBbGlnbiA9ICd0b3AnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbUJvdHRvbSA+IHNjcm9sbEJvdHRvbSkge1xuICAgICAgICAgICAgICAgICAgbmV3VGFyZ2V0QWxpZ24gPSAnYm90dG9tJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGFyZ2V0VG9wICE9PSBudWxsICYmIHRhcmdldFRvcCAhPT0gY29udGFpbmVyUmVmLmN1cnJlbnQuc2Nyb2xsVG9wKSB7XG4gICAgICAgICAgICBzeW5jU2Nyb2xsVG9wKHRhcmdldFRvcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIFdlIHdpbGwgcmV0cnkgc2luY2UgZWxlbWVudCBtYXkgbm90IHN5bmMgaGVpZ2h0IGFzIGl0IGRlc2NyaWJlZFxuXG5cbiAgICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQgPSByYWYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChuZWVkQ29sbGVjdEhlaWdodCkge1xuICAgICAgICAgICAgY29sbGVjdEhlaWdodCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHN5bmNTY3JvbGwodGltZXMgLSAxLCBuZXdUYXJnZXRBbGlnbik7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgc3luY1Njcm9sbCgzKTtcbiAgICB9XG4gIH07XG59IiwiZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwidW5kZWZpbmVkXCIgfHwgIShTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGFycikpKSByZXR1cm47IHZhciBfYXJyID0gW107IHZhciBfbiA9IHRydWU7IHZhciBfZCA9IGZhbHNlOyB2YXIgX2UgPSB1bmRlZmluZWQ7IHRyeSB7IGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHsgX2Fyci5wdXNoKF9zLnZhbHVlKTsgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrOyB9IH0gY2F0Y2ggKGVycikgeyBfZCA9IHRydWU7IF9lID0gZXJyOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7IH0gZmluYWxseSB7IGlmIChfZCkgdGhyb3cgX2U7IH0gfSByZXR1cm4gX2FycjsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZmluZExpc3REaWZmSW5kZXggfSBmcm9tICcuLi91dGlscy9hbGdvcml0aG1VdGlsJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZURpZmZJdGVtKGRhdGEsIGdldEtleSwgb25EaWZmKSB7XG4gIHZhciBfUmVhY3QkdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZShkYXRhKSxcbiAgICAgIF9SZWFjdCR1c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfUmVhY3QkdXNlU3RhdGUsIDIpLFxuICAgICAgcHJldkRhdGEgPSBfUmVhY3QkdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0UHJldkRhdGEgPSBfUmVhY3QkdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBfUmVhY3QkdXNlU3RhdGUzID0gUmVhY3QudXNlU3RhdGUobnVsbCksXG4gICAgICBfUmVhY3QkdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX1JlYWN0JHVzZVN0YXRlMywgMiksXG4gICAgICBkaWZmSXRlbSA9IF9SZWFjdCR1c2VTdGF0ZTRbMF0sXG4gICAgICBzZXREaWZmSXRlbSA9IF9SZWFjdCR1c2VTdGF0ZTRbMV07XG5cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZGlmZiA9IGZpbmRMaXN0RGlmZkluZGV4KHByZXZEYXRhIHx8IFtdLCBkYXRhIHx8IFtdLCBnZXRLZXkpO1xuXG4gICAgaWYgKChkaWZmID09PSBudWxsIHx8IGRpZmYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRpZmYuaW5kZXgpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9uRGlmZiA9PT0gbnVsbCB8fCBvbkRpZmYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRGlmZihkaWZmLmluZGV4KTtcbiAgICAgIHNldERpZmZJdGVtKGRhdGFbZGlmZi5pbmRleF0pO1xuICAgIH1cblxuICAgIHNldFByZXZEYXRhKGRhdGEpO1xuICB9LCBbZGF0YV0pO1xuICByZXR1cm4gW2RpZmZJdGVtXTtcbn0iLCIvKipcbiAqIEdldCBpbmRleCB3aXRoIHNwZWNpZmljIHN0YXJ0IGluZGV4IG9uZSBieSBvbmUuIGUuZy5cbiAqIG1pbjogMywgbWF4OiA5LCBzdGFydDogNlxuICpcbiAqIFJldHVybiBpbmRleCBpczpcbiAqIFswXTogNlxuICogWzFdOiA3XG4gKiBbMl06IDVcbiAqIFszXTogOFxuICogWzRdOiA0XG4gKiBbNV06IDlcbiAqIFs2XTogM1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5kZXhCeVN0YXJ0TG9jKG1pbiwgbWF4LCBzdGFydCwgaW5kZXgpIHtcbiAgdmFyIGJlZm9yZUNvdW50ID0gc3RhcnQgLSBtaW47XG4gIHZhciBhZnRlckNvdW50ID0gbWF4IC0gc3RhcnQ7XG4gIHZhciBiYWxhbmNlQ291bnQgPSBNYXRoLm1pbihiZWZvcmVDb3VudCwgYWZ0ZXJDb3VudCkgKiAyOyAvLyBCYWxhbmNlXG5cbiAgaWYgKGluZGV4IDw9IGJhbGFuY2VDb3VudCkge1xuICAgIHZhciBzdGVwSW5kZXggPSBNYXRoLmZsb29yKGluZGV4IC8gMik7XG5cbiAgICBpZiAoaW5kZXggJSAyKSB7XG4gICAgICByZXR1cm4gc3RhcnQgKyBzdGVwSW5kZXggKyAxO1xuICAgIH1cblxuICAgIHJldHVybiBzdGFydCAtIHN0ZXBJbmRleDtcbiAgfSAvLyBPbmUgaXMgb3V0IG9mIHJhbmdlXG5cblxuICBpZiAoYmVmb3JlQ291bnQgPiBhZnRlckNvdW50KSB7XG4gICAgcmV0dXJuIHN0YXJ0IC0gKGluZGV4IC0gYWZ0ZXJDb3VudCk7XG4gIH1cblxuICByZXR1cm4gc3RhcnQgKyAoaW5kZXggLSBiZWZvcmVDb3VudCk7XG59XG4vKipcbiAqIFdlIGFzc3VtZSB0aGF0IDIgbGlzdCBoYXMgb25seSAxIGl0ZW0gZGlmZiBhbmQgb3RoZXJzIGtlZXBpbmcgdGhlIG9yZGVyLlxuICogU28gd2UgY2FuIHVzZSBkaWNob3RvbXkgYWxnb3JpdGhtIHRvIGZpbmQgY2hhbmdlZCBvbmUuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRMaXN0RGlmZkluZGV4KG9yaWdpbkxpc3QsIHRhcmdldExpc3QsIGdldEtleSkge1xuICB2YXIgb3JpZ2luTGVuID0gb3JpZ2luTGlzdC5sZW5ndGg7XG4gIHZhciB0YXJnZXRMZW4gPSB0YXJnZXRMaXN0Lmxlbmd0aDtcbiAgdmFyIHNob3J0TGlzdDtcbiAgdmFyIGxvbmdMaXN0O1xuXG4gIGlmIChvcmlnaW5MZW4gPT09IDAgJiYgdGFyZ2V0TGVuID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAob3JpZ2luTGVuIDwgdGFyZ2V0TGVuKSB7XG4gICAgc2hvcnRMaXN0ID0gb3JpZ2luTGlzdDtcbiAgICBsb25nTGlzdCA9IHRhcmdldExpc3Q7XG4gIH0gZWxzZSB7XG4gICAgc2hvcnRMaXN0ID0gdGFyZ2V0TGlzdDtcbiAgICBsb25nTGlzdCA9IG9yaWdpbkxpc3Q7XG4gIH1cblxuICB2YXIgbm90RXhpc3RLZXkgPSB7XG4gICAgX19FTVBUWV9JVEVNX186IHRydWVcbiAgfTtcblxuICBmdW5jdGlvbiBnZXRJdGVtS2V5KGl0ZW0pIHtcbiAgICBpZiAoaXRlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZ2V0S2V5KGl0ZW0pO1xuICAgIH1cblxuICAgIHJldHVybiBub3RFeGlzdEtleTtcbiAgfSAvLyBMb29wIHRvIGZpbmQgZGlmZiBvbmVcblxuXG4gIHZhciBkaWZmSW5kZXggPSBudWxsO1xuICB2YXIgbXVsdGlwbGUgPSBNYXRoLmFicyhvcmlnaW5MZW4gLSB0YXJnZXRMZW4pICE9PSAxO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbG9uZ0xpc3QubGVuZ3RoOyBpICs9IDEpIHtcbiAgICB2YXIgc2hvcnRLZXkgPSBnZXRJdGVtS2V5KHNob3J0TGlzdFtpXSk7XG4gICAgdmFyIGxvbmdLZXkgPSBnZXRJdGVtS2V5KGxvbmdMaXN0W2ldKTtcblxuICAgIGlmIChzaG9ydEtleSAhPT0gbG9uZ0tleSkge1xuICAgICAgZGlmZkluZGV4ID0gaTtcbiAgICAgIG11bHRpcGxlID0gbXVsdGlwbGUgfHwgc2hvcnRLZXkgIT09IGdldEl0ZW1LZXkobG9uZ0xpc3RbaSArIDFdKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkaWZmSW5kZXggPT09IG51bGwgPyBudWxsIDoge1xuICAgIGluZGV4OiBkaWZmSW5kZXgsXG4gICAgbXVsdGlwbGU6IG11bHRpcGxlXG4gIH07XG59IiwiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG52YXIgaXNGRiA9ICh0eXBlb2YgbmF2aWdhdG9yID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2YobmF2aWdhdG9yKSkgPT09ICdvYmplY3QnICYmIC9GaXJlZm94L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbmV4cG9ydCBkZWZhdWx0IGlzRkY7IiwiaW1wb3J0IHsgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChpc1Njcm9sbEF0VG9wLCBpc1Njcm9sbEF0Qm90dG9tKSB7XG4gIC8vIERvIGxvY2sgZm9yIGEgd2hlZWwgd2hlbiBzY3JvbGxpbmdcbiAgdmFyIGxvY2tSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICB2YXIgbG9ja1RpbWVvdXRSZWYgPSB1c2VSZWYobnVsbCk7XG5cbiAgZnVuY3Rpb24gbG9ja1Njcm9sbCgpIHtcbiAgICBjbGVhclRpbWVvdXQobG9ja1RpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgbG9ja1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICBsb2NrVGltZW91dFJlZi5jdXJyZW50ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBsb2NrUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9LCA1MCk7XG4gIH0gLy8gUGFzcyB0byByZWYgc2luY2UgZ2xvYmFsIGFkZCBpcyBpbiBjbG9zdXJlXG5cblxuICB2YXIgc2Nyb2xsUGluZ1JlZiA9IHVzZVJlZih7XG4gICAgdG9wOiBpc1Njcm9sbEF0VG9wLFxuICAgIGJvdHRvbTogaXNTY3JvbGxBdEJvdHRvbVxuICB9KTtcbiAgc2Nyb2xsUGluZ1JlZi5jdXJyZW50LnRvcCA9IGlzU2Nyb2xsQXRUb3A7XG4gIHNjcm9sbFBpbmdSZWYuY3VycmVudC5ib3R0b20gPSBpc1Njcm9sbEF0Qm90dG9tO1xuICByZXR1cm4gZnVuY3Rpb24gKGRlbHRhWSkge1xuICAgIHZhciBzbW9vdGhPZmZzZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuICAgIHZhciBvcmlnaW5TY3JvbGwgPSAvLyBQYXNzIG9yaWdpbiB3aGVlbCB3aGVuIG9uIHRoZSB0b3BcbiAgICBkZWx0YVkgPCAwICYmIHNjcm9sbFBpbmdSZWYuY3VycmVudC50b3AgfHwgLy8gUGFzcyBvcmlnaW4gd2hlZWwgd2hlbiBvbiB0aGUgYm90dG9tXG4gICAgZGVsdGFZID4gMCAmJiBzY3JvbGxQaW5nUmVmLmN1cnJlbnQuYm90dG9tO1xuXG4gICAgaWYgKHNtb290aE9mZnNldCAmJiBvcmlnaW5TY3JvbGwpIHtcbiAgICAgIC8vIE5vIG5lZWQgbG9jayBhbnltb3JlIHdoZW4gaXQncyBzbW9vdGggb2Zmc2V0IGZyb20gdG91Y2hNb3ZlIGludGVydmFsXG4gICAgICBjbGVhclRpbWVvdXQobG9ja1RpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICBsb2NrUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKCFvcmlnaW5TY3JvbGwgfHwgbG9ja1JlZi5jdXJyZW50KSB7XG4gICAgICBsb2NrU2Nyb2xsKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICFsb2NrUmVmLmN1cnJlbnQgJiYgb3JpZ2luU2Nyb2xsO1xuICB9O1xufSk7IiwiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8ICEoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChhcnIpKSkgcmV0dXJuOyB2YXIgX2FyciA9IFtdOyB2YXIgX24gPSB0cnVlOyB2YXIgX2QgPSBmYWxzZTsgdmFyIF9lID0gdW5kZWZpbmVkOyB0cnkgeyBmb3IgKHZhciBfaSA9IGFycltTeW1ib2wuaXRlcmF0b3JdKCksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpOyB9IGZpbmFsbHkgeyBpZiAoX2QpIHRocm93IF9lOyB9IH0gcmV0dXJuIF9hcnI7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBGaWxsZXIgZnJvbSAnLi9GaWxsZXInO1xuaW1wb3J0IFNjcm9sbEJhciBmcm9tICcuL1Njcm9sbEJhcic7XG5pbXBvcnQgdXNlQ2hpbGRyZW4gZnJvbSAnLi9ob29rcy91c2VDaGlsZHJlbic7XG5pbXBvcnQgdXNlSGVpZ2h0cyBmcm9tICcuL2hvb2tzL3VzZUhlaWdodHMnO1xuaW1wb3J0IHVzZVNjcm9sbFRvIGZyb20gJy4vaG9va3MvdXNlU2Nyb2xsVG8nO1xuaW1wb3J0IHVzZURpZmZJdGVtIGZyb20gJy4vaG9va3MvdXNlRGlmZkl0ZW0nO1xuaW1wb3J0IHVzZUZyYW1lV2hlZWwgZnJvbSAnLi9ob29rcy91c2VGcmFtZVdoZWVsJztcbmltcG9ydCB1c2VNb2JpbGVUb3VjaE1vdmUgZnJvbSAnLi9ob29rcy91c2VNb2JpbGVUb3VjaE1vdmUnO1xuaW1wb3J0IHVzZU9yaWdpblNjcm9sbCBmcm9tICcuL2hvb2tzL3VzZU9yaWdpblNjcm9sbCc7XG52YXIgRU1QVFlfREFUQSA9IFtdO1xudmFyIFNjcm9sbFN0eWxlID0ge1xuICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgb3ZlcmZsb3dBbmNob3I6ICdub25lJ1xufTtcbmV4cG9ydCBmdW5jdGlvbiBSYXdMaXN0KHByb3BzLCByZWYpIHtcbiAgdmFyIF9wcm9wcyRwcmVmaXhDbHMgPSBwcm9wcy5wcmVmaXhDbHMsXG4gICAgICBwcmVmaXhDbHMgPSBfcHJvcHMkcHJlZml4Q2xzID09PSB2b2lkIDAgPyAncmMtdmlydHVhbC1saXN0JyA6IF9wcm9wcyRwcmVmaXhDbHMsXG4gICAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICBoZWlnaHQgPSBwcm9wcy5oZWlnaHQsXG4gICAgICBpdGVtSGVpZ2h0ID0gcHJvcHMuaXRlbUhlaWdodCxcbiAgICAgIF9wcm9wcyRmdWxsSGVpZ2h0ID0gcHJvcHMuZnVsbEhlaWdodCxcbiAgICAgIGZ1bGxIZWlnaHQgPSBfcHJvcHMkZnVsbEhlaWdodCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9wcm9wcyRmdWxsSGVpZ2h0LFxuICAgICAgc3R5bGUgPSBwcm9wcy5zdHlsZSxcbiAgICAgIGRhdGEgPSBwcm9wcy5kYXRhLFxuICAgICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIGl0ZW1LZXkgPSBwcm9wcy5pdGVtS2V5LFxuICAgICAgdmlydHVhbCA9IHByb3BzLnZpcnR1YWwsXG4gICAgICBfcHJvcHMkY29tcG9uZW50ID0gcHJvcHMuY29tcG9uZW50LFxuICAgICAgQ29tcG9uZW50ID0gX3Byb3BzJGNvbXBvbmVudCA9PT0gdm9pZCAwID8gJ2RpdicgOiBfcHJvcHMkY29tcG9uZW50LFxuICAgICAgb25TY3JvbGwgPSBwcm9wcy5vblNjcm9sbCxcbiAgICAgIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgW1wicHJlZml4Q2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwiaGVpZ2h0XCIsIFwiaXRlbUhlaWdodFwiLCBcImZ1bGxIZWlnaHRcIiwgXCJzdHlsZVwiLCBcImRhdGFcIiwgXCJjaGlsZHJlblwiLCBcIml0ZW1LZXlcIiwgXCJ2aXJ0dWFsXCIsIFwiY29tcG9uZW50XCIsIFwib25TY3JvbGxcIl0pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gTUlTQyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gIHZhciB1c2VWaXJ0dWFsID0gISEodmlydHVhbCAhPT0gZmFsc2UgJiYgaGVpZ2h0ICYmIGl0ZW1IZWlnaHQpO1xuICB2YXIgaW5WaXJ0dWFsID0gdXNlVmlydHVhbCAmJiBkYXRhICYmIGl0ZW1IZWlnaHQgKiBkYXRhLmxlbmd0aCA+IGhlaWdodDtcblxuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoMCksXG4gICAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICAgIHNjcm9sbFRvcCA9IF91c2VTdGF0ZTJbMF0sXG4gICAgICBzZXRTY3JvbGxUb3AgPSBfdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBfdXNlU3RhdGUzID0gdXNlU3RhdGUoZmFsc2UpLFxuICAgICAgX3VzZVN0YXRlNCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTMsIDIpLFxuICAgICAgc2Nyb2xsTW92aW5nID0gX3VzZVN0YXRlNFswXSxcbiAgICAgIHNldFNjcm9sbE1vdmluZyA9IF91c2VTdGF0ZTRbMV07XG5cbiAgdmFyIG1lcmdlZENsYXNzTmFtZSA9IGNsYXNzTmFtZXMocHJlZml4Q2xzLCBjbGFzc05hbWUpO1xuICB2YXIgbWVyZ2VkRGF0YSA9IGRhdGEgfHwgRU1QVFlfREFUQTtcbiAgdmFyIGNvbXBvbmVudFJlZiA9IHVzZVJlZigpO1xuICB2YXIgZmlsbGVySW5uZXJSZWYgPSB1c2VSZWYoKTtcbiAgdmFyIHNjcm9sbEJhclJlZiA9IHVzZVJlZigpOyAvLyBIYWNrIG9uIHNjcm9sbGJhciB0byBlbmFibGUgZmxhc2ggY2FsbFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEl0ZW0gS2V5ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICB2YXIgZ2V0S2V5ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW1LZXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBpdGVtS2V5KGl0ZW0pO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtID09PSBudWxsIHx8IGl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGl0ZW1baXRlbUtleV07XG4gIH0sIFtpdGVtS2V5XSk7XG4gIHZhciBzaGFyZWRDb25maWcgPSB7XG4gICAgZ2V0S2V5OiBnZXRLZXlcbiAgfTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gU2Nyb2xsID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgZnVuY3Rpb24gc3luY1Njcm9sbFRvcChuZXdUb3ApIHtcbiAgICBzZXRTY3JvbGxUb3AoZnVuY3Rpb24gKG9yaWdpbikge1xuICAgICAgdmFyIHZhbHVlO1xuXG4gICAgICBpZiAodHlwZW9mIG5ld1RvcCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YWx1ZSA9IG5ld1RvcChvcmlnaW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSBuZXdUb3A7XG4gICAgICB9XG5cbiAgICAgIHZhciBhbGlnbmVkVG9wID0ga2VlcEluUmFuZ2UodmFsdWUpO1xuICAgICAgY29tcG9uZW50UmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gYWxpZ25lZFRvcDtcbiAgICAgIHJldHVybiBhbGlnbmVkVG9wO1xuICAgIH0pO1xuICB9IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IExlZ2FjeSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQdXQgcmVmIGhlcmUgc2luY2UgdGhlIHJhbmdlIGlzIGdlbmVyYXRlIGJ5IGZvbGxvd1xuXG5cbiAgdmFyIHJhbmdlUmVmID0gdXNlUmVmKHtcbiAgICBzdGFydDogMCxcbiAgICBlbmQ6IG1lcmdlZERhdGEubGVuZ3RoXG4gIH0pO1xuICB2YXIgZGlmZkl0ZW1SZWYgPSB1c2VSZWYoKTtcblxuICB2YXIgX3VzZURpZmZJdGVtID0gdXNlRGlmZkl0ZW0obWVyZ2VkRGF0YSwgZ2V0S2V5KSxcbiAgICAgIF91c2VEaWZmSXRlbTIgPSBfc2xpY2VkVG9BcnJheShfdXNlRGlmZkl0ZW0sIDEpLFxuICAgICAgZGlmZkl0ZW0gPSBfdXNlRGlmZkl0ZW0yWzBdO1xuXG4gIGRpZmZJdGVtUmVmLmN1cnJlbnQgPSBkaWZmSXRlbTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gSGVpZ2h0ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIF91c2VIZWlnaHRzID0gdXNlSGVpZ2h0cyhnZXRLZXksIG51bGwsIG51bGwpLFxuICAgICAgX3VzZUhlaWdodHMyID0gX3NsaWNlZFRvQXJyYXkoX3VzZUhlaWdodHMsIDQpLFxuICAgICAgc2V0SW5zdGFuY2VSZWYgPSBfdXNlSGVpZ2h0czJbMF0sXG4gICAgICBjb2xsZWN0SGVpZ2h0ID0gX3VzZUhlaWdodHMyWzFdLFxuICAgICAgaGVpZ2h0cyA9IF91c2VIZWlnaHRzMlsyXSxcbiAgICAgIGhlaWdodFVwZGF0ZWRNYXJrID0gX3VzZUhlaWdodHMyWzNdOyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PSBWaXNpYmxlIENhbGN1bGF0aW9uID09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gIHZhciBfUmVhY3QkdXNlTWVtbyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIGlmICghdXNlVmlydHVhbCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2Nyb2xsSGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICBlbmQ6IG1lcmdlZERhdGEubGVuZ3RoIC0gMSxcbiAgICAgICAgb2Zmc2V0OiB1bmRlZmluZWRcbiAgICAgIH07XG4gICAgfSAvLyBBbHdheXMgdXNlIHZpcnR1YWwgc2Nyb2xsIGJhciBpbiBhdm9pZCBzaGFraW5nXG5cblxuICAgIGlmICghaW5WaXJ0dWFsKSB7XG4gICAgICB2YXIgX2ZpbGxlcklubmVyUmVmJGN1cnJlO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzY3JvbGxIZWlnaHQ6ICgoX2ZpbGxlcklubmVyUmVmJGN1cnJlID0gZmlsbGVySW5uZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2ZpbGxlcklubmVyUmVmJGN1cnJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZmlsbGVySW5uZXJSZWYkY3VycmUub2Zmc2V0SGVpZ2h0KSB8fCAwLFxuICAgICAgICBzdGFydDogMCxcbiAgICAgICAgZW5kOiBtZXJnZWREYXRhLmxlbmd0aCAtIDEsXG4gICAgICAgIG9mZnNldDogdW5kZWZpbmVkXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBpdGVtVG9wID0gMDtcbiAgICB2YXIgc3RhcnRJbmRleDtcbiAgICB2YXIgc3RhcnRPZmZzZXQ7XG4gICAgdmFyIGVuZEluZGV4O1xuICAgIHZhciBkYXRhTGVuID0gbWVyZ2VkRGF0YS5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGFMZW47IGkgKz0gMSkge1xuICAgICAgdmFyIGl0ZW0gPSBtZXJnZWREYXRhW2ldO1xuICAgICAgdmFyIGtleSA9IGdldEtleShpdGVtKTtcbiAgICAgIHZhciBjYWNoZUhlaWdodCA9IGhlaWdodHMuZ2V0KGtleSk7XG4gICAgICB2YXIgY3VycmVudEl0ZW1Cb3R0b20gPSBpdGVtVG9wICsgKGNhY2hlSGVpZ2h0ID09PSB1bmRlZmluZWQgPyBpdGVtSGVpZ2h0IDogY2FjaGVIZWlnaHQpOyAvLyBDaGVjayBpdGVtIHRvcCBpbiB0aGUgcmFuZ2VcblxuICAgICAgaWYgKGN1cnJlbnRJdGVtQm90dG9tID49IHNjcm9sbFRvcCAmJiBzdGFydEluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc3RhcnRJbmRleCA9IGk7XG4gICAgICAgIHN0YXJ0T2Zmc2V0ID0gaXRlbVRvcDtcbiAgICAgIH0gLy8gQ2hlY2sgaXRlbSBib3R0b20gaW4gdGhlIHJhbmdlLiBXZSB3aWxsIHJlbmRlciBhZGRpdGlvbmFsIG9uZSBpdGVtIGZvciBtb3Rpb24gdXNhZ2VcblxuXG4gICAgICBpZiAoY3VycmVudEl0ZW1Cb3R0b20gPiBzY3JvbGxUb3AgKyBoZWlnaHQgJiYgZW5kSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBlbmRJbmRleCA9IGk7XG4gICAgICB9XG5cbiAgICAgIGl0ZW1Ub3AgPSBjdXJyZW50SXRlbUJvdHRvbTtcbiAgICB9IC8vIEZhbGxiYWNrIHRvIG5vcm1hbCBpZiBub3QgbWF0Y2guIFRoaXMgY29kZSBzaG91bGQgbmV2ZXIgcmVhY2hcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cblxuICAgIGlmIChzdGFydEluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHN0YXJ0SW5kZXggPSAwO1xuICAgICAgc3RhcnRPZmZzZXQgPSAwO1xuICAgIH1cblxuICAgIGlmIChlbmRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlbmRJbmRleCA9IG1lcmdlZERhdGEubGVuZ3RoIC0gMTtcbiAgICB9IC8vIEdpdmUgY2FjaGUgdG8gaW1wcm92ZSBzY3JvbGwgZXhwZXJpZW5jZVxuXG5cbiAgICBlbmRJbmRleCA9IE1hdGgubWluKGVuZEluZGV4ICsgMSwgbWVyZ2VkRGF0YS5sZW5ndGgpO1xuICAgIHJldHVybiB7XG4gICAgICBzY3JvbGxIZWlnaHQ6IGl0ZW1Ub3AsXG4gICAgICBzdGFydDogc3RhcnRJbmRleCxcbiAgICAgIGVuZDogZW5kSW5kZXgsXG4gICAgICBvZmZzZXQ6IHN0YXJ0T2Zmc2V0XG4gICAgfTtcbiAgfSwgW2luVmlydHVhbCwgdXNlVmlydHVhbCwgc2Nyb2xsVG9wLCBtZXJnZWREYXRhLCBoZWlnaHRVcGRhdGVkTWFyaywgaGVpZ2h0XSksXG4gICAgICBzY3JvbGxIZWlnaHQgPSBfUmVhY3QkdXNlTWVtby5zY3JvbGxIZWlnaHQsXG4gICAgICBzdGFydCA9IF9SZWFjdCR1c2VNZW1vLnN0YXJ0LFxuICAgICAgZW5kID0gX1JlYWN0JHVzZU1lbW8uZW5kLFxuICAgICAgb2Zmc2V0ID0gX1JlYWN0JHVzZU1lbW8ub2Zmc2V0O1xuXG4gIHJhbmdlUmVmLmN1cnJlbnQuc3RhcnQgPSBzdGFydDtcbiAgcmFuZ2VSZWYuY3VycmVudC5lbmQgPSBlbmQ7IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gSW4gUmFuZ2UgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBtYXhTY3JvbGxIZWlnaHQgPSBzY3JvbGxIZWlnaHQgLSBoZWlnaHQ7XG4gIHZhciBtYXhTY3JvbGxIZWlnaHRSZWYgPSB1c2VSZWYobWF4U2Nyb2xsSGVpZ2h0KTtcbiAgbWF4U2Nyb2xsSGVpZ2h0UmVmLmN1cnJlbnQgPSBtYXhTY3JvbGxIZWlnaHQ7XG5cbiAgZnVuY3Rpb24ga2VlcEluUmFuZ2UobmV3U2Nyb2xsVG9wKSB7XG4gICAgdmFyIG5ld1RvcCA9IG5ld1Njcm9sbFRvcDtcblxuICAgIGlmICghTnVtYmVyLmlzTmFOKG1heFNjcm9sbEhlaWdodFJlZi5jdXJyZW50KSkge1xuICAgICAgbmV3VG9wID0gTWF0aC5taW4obmV3VG9wLCBtYXhTY3JvbGxIZWlnaHRSZWYuY3VycmVudCk7XG4gICAgfVxuXG4gICAgbmV3VG9wID0gTWF0aC5tYXgobmV3VG9wLCAwKTtcbiAgICByZXR1cm4gbmV3VG9wO1xuICB9XG5cbiAgdmFyIGlzU2Nyb2xsQXRUb3AgPSBzY3JvbGxUb3AgPD0gMDtcbiAgdmFyIGlzU2Nyb2xsQXRCb3R0b20gPSBzY3JvbGxUb3AgPj0gbWF4U2Nyb2xsSGVpZ2h0O1xuICB2YXIgb3JpZ2luU2Nyb2xsID0gdXNlT3JpZ2luU2Nyb2xsKGlzU2Nyb2xsQXRUb3AsIGlzU2Nyb2xsQXRCb3R0b20pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBTY3JvbGwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBmdW5jdGlvbiBvblNjcm9sbEJhcihuZXdTY3JvbGxUb3ApIHtcbiAgICB2YXIgbmV3VG9wID0gbmV3U2Nyb2xsVG9wO1xuICAgIHN5bmNTY3JvbGxUb3AobmV3VG9wKTtcbiAgfSAvLyBXaGVuIGRhdGEgc2l6ZSByZWR1Y2UuIEl0IG1heSB0cmlnZ2VyIG5hdGl2ZSBzY3JvbGwgZXZlbnQgYmFjayB0byBmaXQgc2Nyb2xsIHBvc2l0aW9uXG5cblxuICBmdW5jdGlvbiBvbkZhbGxiYWNrU2Nyb2xsKGUpIHtcbiAgICB2YXIgbmV3U2Nyb2xsVG9wID0gZS5jdXJyZW50VGFyZ2V0LnNjcm9sbFRvcDtcblxuICAgIGlmIChuZXdTY3JvbGxUb3AgIT09IHNjcm9sbFRvcCkge1xuICAgICAgc3luY1Njcm9sbFRvcChuZXdTY3JvbGxUb3ApO1xuICAgIH0gLy8gVHJpZ2dlciBvcmlnaW4gb25TY3JvbGxcblxuXG4gICAgb25TY3JvbGwgPT09IG51bGwgfHwgb25TY3JvbGwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2Nyb2xsKGUpO1xuICB9IC8vIFNpbmNlIHRoaXMgYWRkZWQgaW4gZ2xvYmFsLHNob3VsZCB1c2UgcmVmIHRvIGtlZXAgdXBkYXRlXG5cblxuICB2YXIgX3VzZUZyYW1lV2hlZWwgPSB1c2VGcmFtZVdoZWVsKHVzZVZpcnR1YWwsIGlzU2Nyb2xsQXRUb3AsIGlzU2Nyb2xsQXRCb3R0b20sIGZ1bmN0aW9uIChvZmZzZXRZKSB7XG4gICAgc3luY1Njcm9sbFRvcChmdW5jdGlvbiAodG9wKSB7XG4gICAgICB2YXIgbmV3VG9wID0gdG9wICsgb2Zmc2V0WTtcbiAgICAgIHJldHVybiBuZXdUb3A7XG4gICAgfSk7XG4gIH0pLFxuICAgICAgX3VzZUZyYW1lV2hlZWwyID0gX3NsaWNlZFRvQXJyYXkoX3VzZUZyYW1lV2hlZWwsIDIpLFxuICAgICAgb25SYXdXaGVlbCA9IF91c2VGcmFtZVdoZWVsMlswXSxcbiAgICAgIG9uRmlyZUZveFNjcm9sbCA9IF91c2VGcmFtZVdoZWVsMlsxXTsgLy8gTW9iaWxlIHRvdWNoIG1vdmVcblxuXG4gIHVzZU1vYmlsZVRvdWNoTW92ZSh1c2VWaXJ0dWFsLCBjb21wb25lbnRSZWYsIGZ1bmN0aW9uIChkZWx0YVksIHNtb290aE9mZnNldCkge1xuICAgIGlmIChvcmlnaW5TY3JvbGwoZGVsdGFZLCBzbW9vdGhPZmZzZXQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgb25SYXdXaGVlbCh7XG4gICAgICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24gcHJldmVudERlZmF1bHQoKSB7fSxcbiAgICAgIGRlbHRhWTogZGVsdGFZXG4gICAgfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xuICBSZWFjdC51c2VMYXlvdXRFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIC8vIEZpcmVmb3ggb25seVxuICAgIGZ1bmN0aW9uIG9uTW96TW91c2VQaXhlbFNjcm9sbChlKSB7XG4gICAgICBpZiAodXNlVmlydHVhbCkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29tcG9uZW50UmVmLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvblJhd1doZWVsKTtcbiAgICBjb21wb25lbnRSZWYuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKCdET01Nb3VzZVNjcm9sbCcsIG9uRmlyZUZveFNjcm9sbCk7XG4gICAgY29tcG9uZW50UmVmLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcignTW96TW91c2VQaXhlbFNjcm9sbCcsIG9uTW96TW91c2VQaXhlbFNjcm9sbCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbXBvbmVudFJlZi5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25SYXdXaGVlbCk7XG4gICAgICBjb21wb25lbnRSZWYuY3VycmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdET01Nb3VzZVNjcm9sbCcsIG9uRmlyZUZveFNjcm9sbCk7XG4gICAgICBjb21wb25lbnRSZWYuY3VycmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdNb3pNb3VzZVBpeGVsU2Nyb2xsJywgb25Nb3pNb3VzZVBpeGVsU2Nyb2xsKTtcbiAgICB9O1xuICB9LCBbdXNlVmlydHVhbF0pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gUmVmID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICB2YXIgc2Nyb2xsVG8gPSB1c2VTY3JvbGxUbyhjb21wb25lbnRSZWYsIG1lcmdlZERhdGEsIGhlaWdodHMsIGl0ZW1IZWlnaHQsIGdldEtleSwgY29sbGVjdEhlaWdodCwgc3luY1Njcm9sbFRvcCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBfc2Nyb2xsQmFyUmVmJGN1cnJlbnQ7XG5cbiAgICAoX3Njcm9sbEJhclJlZiRjdXJyZW50ID0gc2Nyb2xsQmFyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9zY3JvbGxCYXJSZWYkY3VycmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3Njcm9sbEJhclJlZiRjdXJyZW50LmRlbGF5SGlkZGVuKCk7XG4gIH0pO1xuICBSZWFjdC51c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzY3JvbGxUbzogc2Nyb2xsVG9cbiAgICB9O1xuICB9KTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gUmVuZGVyID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIGxpc3RDaGlsZHJlbiA9IHVzZUNoaWxkcmVuKG1lcmdlZERhdGEsIHN0YXJ0LCBlbmQsIHNldEluc3RhbmNlUmVmLCBjaGlsZHJlbiwgc2hhcmVkQ29uZmlnKTtcbiAgdmFyIGNvbXBvbmVudFN0eWxlID0gbnVsbDtcblxuICBpZiAoaGVpZ2h0KSB7XG4gICAgY29tcG9uZW50U3R5bGUgPSBfb2JqZWN0U3ByZWFkKF9kZWZpbmVQcm9wZXJ0eSh7fSwgZnVsbEhlaWdodCA/ICdoZWlnaHQnIDogJ21heEhlaWdodCcsIGhlaWdodCksIFNjcm9sbFN0eWxlKTtcblxuICAgIGlmICh1c2VWaXJ0dWFsKSB7XG4gICAgICBjb21wb25lbnRTdHlsZS5vdmVyZmxvd1kgPSAnaGlkZGVuJztcblxuICAgICAgaWYgKHNjcm9sbE1vdmluZykge1xuICAgICAgICBjb21wb25lbnRTdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBzdHlsZTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBzdHlsZSksIHt9LCB7XG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJ1xuICAgIH0pLFxuICAgIGNsYXNzTmFtZTogbWVyZ2VkQ2xhc3NOYW1lXG4gIH0sIHJlc3RQcm9wcyksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENvbXBvbmVudCwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ob2xkZXJcIiksXG4gICAgc3R5bGU6IGNvbXBvbmVudFN0eWxlLFxuICAgIHJlZjogY29tcG9uZW50UmVmLFxuICAgIG9uU2Nyb2xsOiBvbkZhbGxiYWNrU2Nyb2xsXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZpbGxlciwge1xuICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgIGhlaWdodDogc2Nyb2xsSGVpZ2h0LFxuICAgIG9mZnNldDogb2Zmc2V0LFxuICAgIG9uSW5uZXJSZXNpemU6IGNvbGxlY3RIZWlnaHQsXG4gICAgcmVmOiBmaWxsZXJJbm5lclJlZlxuICB9LCBsaXN0Q2hpbGRyZW4pKSwgdXNlVmlydHVhbCAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTY3JvbGxCYXIsIHtcbiAgICByZWY6IHNjcm9sbEJhclJlZixcbiAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICBzY3JvbGxUb3A6IHNjcm9sbFRvcCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICBzY3JvbGxIZWlnaHQ6IHNjcm9sbEhlaWdodCxcbiAgICBjb3VudDogbWVyZ2VkRGF0YS5sZW5ndGgsXG4gICAgb25TY3JvbGw6IG9uU2Nyb2xsQmFyLFxuICAgIG9uU3RhcnRNb3ZlOiBmdW5jdGlvbiBvblN0YXJ0TW92ZSgpIHtcbiAgICAgIHNldFNjcm9sbE1vdmluZyh0cnVlKTtcbiAgICB9LFxuICAgIG9uU3RvcE1vdmU6IGZ1bmN0aW9uIG9uU3RvcE1vdmUoKSB7XG4gICAgICBzZXRTY3JvbGxNb3ZpbmcoZmFsc2UpO1xuICAgIH1cbiAgfSkpO1xufVxudmFyIExpc3QgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihSYXdMaXN0KTtcbkxpc3QuZGlzcGxheU5hbWUgPSAnTGlzdCc7XG5leHBvcnQgZGVmYXVsdCBMaXN0OyIsImltcG9ydCB7IHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCByYWYgZnJvbSBcInJjLXV0aWwvZXMvcmFmXCI7XG5pbXBvcnQgaXNGRiBmcm9tICcuLi91dGlscy9pc0ZpcmVmb3gnO1xuaW1wb3J0IHVzZU9yaWdpblNjcm9sbCBmcm9tICcuL3VzZU9yaWdpblNjcm9sbCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VGcmFtZVdoZWVsKGluVmlydHVhbCwgaXNTY3JvbGxBdFRvcCwgaXNTY3JvbGxBdEJvdHRvbSwgb25XaGVlbERlbHRhKSB7XG4gIHZhciBvZmZzZXRSZWYgPSB1c2VSZWYoMCk7XG4gIHZhciBuZXh0RnJhbWVSZWYgPSB1c2VSZWYobnVsbCk7IC8vIEZpcmVmb3ggcGF0Y2hcblxuICB2YXIgd2hlZWxWYWx1ZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgdmFyIGlzTW91c2VTY3JvbGxSZWYgPSB1c2VSZWYoZmFsc2UpOyAvLyBTY3JvbGwgc3RhdHVzIHN5bmNcblxuICB2YXIgb3JpZ2luU2Nyb2xsID0gdXNlT3JpZ2luU2Nyb2xsKGlzU2Nyb2xsQXRUb3AsIGlzU2Nyb2xsQXRCb3R0b20pO1xuXG4gIGZ1bmN0aW9uIG9uV2hlZWwoZXZlbnQpIHtcbiAgICBpZiAoIWluVmlydHVhbCkgcmV0dXJuO1xuICAgIHJhZi5jYW5jZWwobmV4dEZyYW1lUmVmLmN1cnJlbnQpO1xuICAgIHZhciBkZWx0YVkgPSBldmVudC5kZWx0YVk7XG4gICAgb2Zmc2V0UmVmLmN1cnJlbnQgKz0gZGVsdGFZO1xuICAgIHdoZWVsVmFsdWVSZWYuY3VycmVudCA9IGRlbHRhWTsgLy8gRG8gbm90aGluZyB3aGVuIHNjcm9sbCBhdCB0aGUgZWRnZSwgU2tpcCBjaGVjayB3aGVuIGlzIGluIHNjcm9sbFxuXG4gICAgaWYgKG9yaWdpblNjcm9sbChkZWx0YVkpKSByZXR1cm47IC8vIFByb3h5IG9mIHNjcm9sbCBldmVudHNcblxuICAgIGlmICghaXNGRikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBuZXh0RnJhbWVSZWYuY3VycmVudCA9IHJhZihmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBQYXRjaCBhIG11bHRpcGxlIGZvciBGaXJlZm94IHRvIGZpeCB3aGVlbCBudW1iZXIgdG9vIHNtYWxsXG4gICAgICAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzI2MzcyI2lzc3VlY29tbWVudC02Nzk0NjAyNjZcbiAgICAgIHZhciBwYXRjaE11bHRpcGxlID0gaXNNb3VzZVNjcm9sbFJlZi5jdXJyZW50ID8gMTAgOiAxO1xuICAgICAgb25XaGVlbERlbHRhKG9mZnNldFJlZi5jdXJyZW50ICogcGF0Y2hNdWx0aXBsZSk7XG4gICAgICBvZmZzZXRSZWYuY3VycmVudCA9IDA7XG4gICAgfSk7XG4gIH0gLy8gQSBwYXRjaCBmb3IgZmlyZWZveFxuXG5cbiAgZnVuY3Rpb24gb25GaXJlRm94U2Nyb2xsKGV2ZW50KSB7XG4gICAgaWYgKCFpblZpcnR1YWwpIHJldHVybjtcbiAgICBpc01vdXNlU2Nyb2xsUmVmLmN1cnJlbnQgPSBldmVudC5kZXRhaWwgPT09IHdoZWVsVmFsdWVSZWYuY3VycmVudDtcbiAgfVxuXG4gIHJldHVybiBbb25XaGVlbCwgb25GaXJlRm94U2Nyb2xsXTtcbn0iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG52YXIgU01PT1RIX1BURyA9IDE0IC8gMTU7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VNb2JpbGVUb3VjaE1vdmUoaW5WaXJ0dWFsLCBsaXN0UmVmLCBjYWxsYmFjaykge1xuICB2YXIgdG91Y2hlZFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gIHZhciB0b3VjaFlSZWYgPSB1c2VSZWYoMCk7XG4gIHZhciBlbGVtZW50UmVmID0gdXNlUmVmKG51bGwpOyAvLyBTbW9vdGggc2Nyb2xsXG5cbiAgdmFyIGludGVydmFsUmVmID0gdXNlUmVmKG51bGwpO1xuICB2YXIgY2xlYW5VcEV2ZW50cztcblxuICB2YXIgb25Ub3VjaE1vdmUgPSBmdW5jdGlvbiBvblRvdWNoTW92ZShlKSB7XG4gICAgaWYgKHRvdWNoZWRSZWYuY3VycmVudCkge1xuICAgICAgdmFyIGN1cnJlbnRZID0gTWF0aC5jZWlsKGUudG91Y2hlc1swXS5wYWdlWSk7XG4gICAgICB2YXIgb2Zmc2V0WSA9IHRvdWNoWVJlZi5jdXJyZW50IC0gY3VycmVudFk7XG4gICAgICB0b3VjaFlSZWYuY3VycmVudCA9IGN1cnJlbnRZO1xuXG4gICAgICBpZiAoY2FsbGJhY2sob2Zmc2V0WSkpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfSAvLyBTbW9vdGggaW50ZXJ2YWxcblxuXG4gICAgICBjbGVhckludGVydmFsKGludGVydmFsUmVmLmN1cnJlbnQpO1xuICAgICAgaW50ZXJ2YWxSZWYuY3VycmVudCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb2Zmc2V0WSAqPSBTTU9PVEhfUFRHO1xuXG4gICAgICAgIGlmICghY2FsbGJhY2sob2Zmc2V0WSwgdHJ1ZSkgfHwgTWF0aC5hYnMob2Zmc2V0WSkgPD0gMC4xKSB7XG4gICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbFJlZi5jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgfSwgMTYpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgb25Ub3VjaEVuZCA9IGZ1bmN0aW9uIG9uVG91Y2hFbmQoKSB7XG4gICAgdG91Y2hlZFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgY2xlYW5VcEV2ZW50cygpO1xuICB9O1xuXG4gIHZhciBvblRvdWNoU3RhcnQgPSBmdW5jdGlvbiBvblRvdWNoU3RhcnQoZSkge1xuICAgIGNsZWFuVXBFdmVudHMoKTtcblxuICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID09PSAxICYmICF0b3VjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIHRvdWNoZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB0b3VjaFlSZWYuY3VycmVudCA9IE1hdGguY2VpbChlLnRvdWNoZXNbMF0ucGFnZVkpO1xuICAgICAgZWxlbWVudFJlZi5jdXJyZW50ID0gZS50YXJnZXQ7XG4gICAgICBlbGVtZW50UmVmLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgb25Ub3VjaE1vdmUpO1xuICAgICAgZWxlbWVudFJlZi5jdXJyZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgb25Ub3VjaEVuZCk7XG4gICAgfVxuICB9O1xuXG4gIGNsZWFuVXBFdmVudHMgPSBmdW5jdGlvbiBjbGVhblVwRXZlbnRzKCkge1xuICAgIGlmIChlbGVtZW50UmVmLmN1cnJlbnQpIHtcbiAgICAgIGVsZW1lbnRSZWYuY3VycmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBvblRvdWNoTW92ZSk7XG4gICAgICBlbGVtZW50UmVmLmN1cnJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBvblRvdWNoRW5kKTtcbiAgICB9XG4gIH07XG5cbiAgUmVhY3QudXNlTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoaW5WaXJ0dWFsKSB7XG4gICAgICBsaXN0UmVmLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIG9uVG91Y2hTdGFydCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxpc3RSZWYuY3VycmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0KTtcbiAgICAgIGNsZWFuVXBFdmVudHMoKTtcbiAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxSZWYuY3VycmVudCk7XG4gICAgfTtcbiAgfSwgW2luVmlydHVhbF0pO1xufSIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEl0ZW0gfSBmcm9tICcuLi9JdGVtJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUNoaWxkcmVuKGxpc3QsIHN0YXJ0SW5kZXgsIGVuZEluZGV4LCBzZXROb2RlUmVmLCByZW5kZXJGdW5jLCBfcmVmKSB7XG4gIHZhciBnZXRLZXkgPSBfcmVmLmdldEtleTtcbiAgcmV0dXJuIGxpc3Quc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXggKyAxKS5tYXAoZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG4gICAgdmFyIGVsZUluZGV4ID0gc3RhcnRJbmRleCArIGluZGV4O1xuICAgIHZhciBub2RlID0gcmVuZGVyRnVuYyhpdGVtLCBlbGVJbmRleCwgey8vIHN0eWxlOiBzdGF0dXMgPT09ICdNRUFTVVJFX1NUQVJUJyA/IHsgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSA6IHt9LFxuICAgIH0pO1xuICAgIHZhciBrZXkgPSBnZXRLZXkoaXRlbSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEl0ZW0sIHtcbiAgICAgIGtleToga2V5LFxuICAgICAgc2V0UmVmOiBmdW5jdGlvbiBzZXRSZWYoZWxlKSB7XG4gICAgICAgIHJldHVybiBzZXROb2RlUmVmKGl0ZW0sIGVsZSk7XG4gICAgICB9XG4gICAgfSwgbm9kZSk7XG4gIH0pO1xufSIsImltcG9ydCBMaXN0IGZyb20gJy4vTGlzdCc7XG5leHBvcnQgZGVmYXVsdCBMaXN0OyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuXG52YXIgVHJhbnNCdG4gPSBmdW5jdGlvbiBUcmFuc0J0bihfcmVmKSB7XG4gIHZhciBjbGFzc05hbWUgPSBfcmVmLmNsYXNzTmFtZSxcbiAgICAgIGN1c3RvbWl6ZUljb24gPSBfcmVmLmN1c3RvbWl6ZUljb24sXG4gICAgICBjdXN0b21pemVJY29uUHJvcHMgPSBfcmVmLmN1c3RvbWl6ZUljb25Qcm9wcyxcbiAgICAgIF9vbk1vdXNlRG93biA9IF9yZWYub25Nb3VzZURvd24sXG4gICAgICBvbkNsaWNrID0gX3JlZi5vbkNsaWNrLFxuICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICB2YXIgaWNvbjtcblxuICBpZiAodHlwZW9mIGN1c3RvbWl6ZUljb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICBpY29uID0gY3VzdG9taXplSWNvbihjdXN0b21pemVJY29uUHJvcHMpO1xuICB9IGVsc2Uge1xuICAgIGljb24gPSBjdXN0b21pemVJY29uO1xuICB9XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgb25Nb3VzZURvd246IGZ1bmN0aW9uIG9uTW91c2VEb3duKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBpZiAoX29uTW91c2VEb3duKSB7XG4gICAgICAgIF9vbk1vdXNlRG93bihldmVudCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzdHlsZToge1xuICAgICAgdXNlclNlbGVjdDogJ25vbmUnLFxuICAgICAgV2Via2l0VXNlclNlbGVjdDogJ25vbmUnXG4gICAgfSxcbiAgICB1bnNlbGVjdGFibGU6IFwib25cIixcbiAgICBvbkNsaWNrOiBvbkNsaWNrLFxuICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZVxuICB9LCBpY29uICE9PSB1bmRlZmluZWQgPyBpY29uIDogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLnNwbGl0KC9cXHMrLykubWFwKGZ1bmN0aW9uIChjbHMpIHtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdChjbHMsIFwiLWljb25cIik7XG4gICAgfSkpXG4gIH0sIGNoaWxkcmVuKSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUcmFuc0J0bjsiLCJpbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgS2V5Q29kZSBmcm9tIFwicmMtdXRpbC9lcy9LZXlDb2RlXCI7XG5pbXBvcnQgcGlja0F0dHJzIGZyb20gXCJyYy11dGlsL2VzL3BpY2tBdHRyc1wiO1xuaW1wb3J0IHVzZU1lbW8gZnJvbSBcInJjLXV0aWwvZXMvaG9va3MvdXNlTWVtb1wiO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgTGlzdCBmcm9tICdyYy12aXJ0dWFsLWxpc3QnO1xuaW1wb3J0IFRyYW5zQnRuIGZyb20gJy4vVHJhbnNCdG4nO1xuLyoqXG4gKiBVc2luZyB2aXJ0dWFsIGxpc3Qgb2Ygb3B0aW9uIGRpc3BsYXkuXG4gKiBXaWxsIGZhbGxiYWNrIHRvIGRvbSBpZiB1c2UgY3VzdG9taXplIHJlbmRlci5cbiAqL1xuXG52YXIgT3B0aW9uTGlzdCA9IGZ1bmN0aW9uIE9wdGlvbkxpc3QoX3JlZiwgcmVmKSB7XG4gIHZhciBwcmVmaXhDbHMgPSBfcmVmLnByZWZpeENscyxcbiAgICAgIGlkID0gX3JlZi5pZCxcbiAgICAgIGZsYXR0ZW5PcHRpb25zID0gX3JlZi5mbGF0dGVuT3B0aW9ucyxcbiAgICAgIGNoaWxkcmVuQXNEYXRhID0gX3JlZi5jaGlsZHJlbkFzRGF0YSxcbiAgICAgIHZhbHVlcyA9IF9yZWYudmFsdWVzLFxuICAgICAgc2VhcmNoVmFsdWUgPSBfcmVmLnNlYXJjaFZhbHVlLFxuICAgICAgbXVsdGlwbGUgPSBfcmVmLm11bHRpcGxlLFxuICAgICAgZGVmYXVsdEFjdGl2ZUZpcnN0T3B0aW9uID0gX3JlZi5kZWZhdWx0QWN0aXZlRmlyc3RPcHRpb24sXG4gICAgICBoZWlnaHQgPSBfcmVmLmhlaWdodCxcbiAgICAgIGl0ZW1IZWlnaHQgPSBfcmVmLml0ZW1IZWlnaHQsXG4gICAgICBub3RGb3VuZENvbnRlbnQgPSBfcmVmLm5vdEZvdW5kQ29udGVudCxcbiAgICAgIG9wZW4gPSBfcmVmLm9wZW4sXG4gICAgICBtZW51SXRlbVNlbGVjdGVkSWNvbiA9IF9yZWYubWVudUl0ZW1TZWxlY3RlZEljb24sXG4gICAgICB2aXJ0dWFsID0gX3JlZi52aXJ0dWFsLFxuICAgICAgb25TZWxlY3QgPSBfcmVmLm9uU2VsZWN0LFxuICAgICAgb25Ub2dnbGVPcGVuID0gX3JlZi5vblRvZ2dsZU9wZW4sXG4gICAgICBvbkFjdGl2ZVZhbHVlID0gX3JlZi5vbkFjdGl2ZVZhbHVlLFxuICAgICAgb25TY3JvbGwgPSBfcmVmLm9uU2Nyb2xsLFxuICAgICAgb25Nb3VzZUVudGVyID0gX3JlZi5vbk1vdXNlRW50ZXI7XG4gIHZhciBpdGVtUHJlZml4Q2xzID0gXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pdGVtXCIpO1xuICB2YXIgbWVtb0ZsYXR0ZW5PcHRpb25zID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZsYXR0ZW5PcHRpb25zO1xuICB9LCBbb3BlbiwgZmxhdHRlbk9wdGlvbnNdLCBmdW5jdGlvbiAocHJldiwgbmV4dCkge1xuICAgIHJldHVybiBuZXh0WzBdICYmIHByZXZbMV0gIT09IG5leHRbMV07XG4gIH0pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gTGlzdCA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICB2YXIgbGlzdFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcblxuICB2YXIgb25MaXN0TW91c2VEb3duID0gZnVuY3Rpb24gb25MaXN0TW91c2VEb3duKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICB2YXIgc2Nyb2xsSW50b1ZpZXcgPSBmdW5jdGlvbiBzY3JvbGxJbnRvVmlldyhpbmRleCkge1xuICAgIGlmIChsaXN0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGxpc3RSZWYuY3VycmVudC5zY3JvbGxUbyh7XG4gICAgICAgIGluZGV4OiBpbmRleFxuICAgICAgfSk7XG4gICAgfVxuICB9OyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PSBBY3RpdmUgPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gIHZhciBnZXRFbmFibGVkQWN0aXZlSW5kZXggPSBmdW5jdGlvbiBnZXRFbmFibGVkQWN0aXZlSW5kZXgoaW5kZXgpIHtcbiAgICB2YXIgb2Zmc2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAxO1xuICAgIHZhciBsZW4gPSBtZW1vRmxhdHRlbk9wdGlvbnMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgdmFyIGN1cnJlbnQgPSAoaW5kZXggKyBpICogb2Zmc2V0ICsgbGVuKSAlIGxlbjtcbiAgICAgIHZhciBfbWVtb0ZsYXR0ZW5PcHRpb25zJGMgPSBtZW1vRmxhdHRlbk9wdGlvbnNbY3VycmVudF0sXG4gICAgICAgICAgZ3JvdXAgPSBfbWVtb0ZsYXR0ZW5PcHRpb25zJGMuZ3JvdXAsXG4gICAgICAgICAgZGF0YSA9IF9tZW1vRmxhdHRlbk9wdGlvbnMkYy5kYXRhO1xuXG4gICAgICBpZiAoIWdyb3VwICYmICFkYXRhLmRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAtMTtcbiAgfTtcblxuICB2YXIgX1JlYWN0JHVzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBnZXRFbmFibGVkQWN0aXZlSW5kZXgoMCk7XG4gIH0pLFxuICAgICAgX1JlYWN0JHVzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF9SZWFjdCR1c2VTdGF0ZSwgMiksXG4gICAgICBhY3RpdmVJbmRleCA9IF9SZWFjdCR1c2VTdGF0ZTJbMF0sXG4gICAgICBzZXRBY3RpdmVJbmRleCA9IF9SZWFjdCR1c2VTdGF0ZTJbMV07XG5cbiAgdmFyIHNldEFjdGl2ZSA9IGZ1bmN0aW9uIHNldEFjdGl2ZShpbmRleCkge1xuICAgIHZhciBmcm9tS2V5Ym9hcmQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuICAgIHNldEFjdGl2ZUluZGV4KGluZGV4KTtcbiAgICB2YXIgaW5mbyA9IHtcbiAgICAgIHNvdXJjZTogZnJvbUtleWJvYXJkID8gJ2tleWJvYXJkJyA6ICdtb3VzZSdcbiAgICB9OyAvLyBUcmlnZ2VyIGFjdGl2ZSBldmVudFxuXG4gICAgdmFyIGZsYXR0ZW5JdGVtID0gbWVtb0ZsYXR0ZW5PcHRpb25zW2luZGV4XTtcblxuICAgIGlmICghZmxhdHRlbkl0ZW0pIHtcbiAgICAgIG9uQWN0aXZlVmFsdWUobnVsbCwgLTEsIGluZm8pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG9uQWN0aXZlVmFsdWUoZmxhdHRlbkl0ZW0uZGF0YS52YWx1ZSwgaW5kZXgsIGluZm8pO1xuICB9OyAvLyBBdXRvIGFjdGl2ZSBmaXJzdCBpdGVtIHdoZW4gbGlzdCBsZW5ndGggb3Igc2VhcmNoVmFsdWUgY2hhbmdlZFxuXG5cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBzZXRBY3RpdmUoZGVmYXVsdEFjdGl2ZUZpcnN0T3B0aW9uICE9PSBmYWxzZSA/IGdldEVuYWJsZWRBY3RpdmVJbmRleCgwKSA6IC0xKTtcbiAgfSwgW21lbW9GbGF0dGVuT3B0aW9ucy5sZW5ndGgsIHNlYXJjaFZhbHVlXSk7IC8vIEF1dG8gc2Nyb2xsIHRvIGl0ZW0gcG9zaXRpb24gaW4gc2luZ2xlIG1vZGVcblxuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIC8qKlxuICAgICAqIFJlYWN0IHdpbGwgc2tpcCBgb25DaGFuZ2VgIHdoZW4gY29tcG9uZW50IHVwZGF0ZS5cbiAgICAgKiBgc2V0QWN0aXZlYCBmdW5jdGlvbiB3aWxsIGNhbGwgcm9vdCBhY2Nlc3NpYmlsaXR5IHN0YXRlIHVwZGF0ZSB3aGljaCBtYWtlcyByZS1yZW5kZXIuXG4gICAgICogU28gd2UgbmVlZCB0byBkZWxheSB0byBsZXQgSW5wdXQgY29tcG9uZW50IHRyaWdnZXIgb25DaGFuZ2UgZmlyc3QuXG4gICAgICovXG4gICAgdmFyIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFtdWx0aXBsZSAmJiBvcGVuICYmIHZhbHVlcy5zaXplID09PSAxKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IEFycmF5LmZyb20odmFsdWVzKVswXTtcbiAgICAgICAgdmFyIGluZGV4ID0gbWVtb0ZsYXR0ZW5PcHRpb25zLmZpbmRJbmRleChmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgICAgICB2YXIgZGF0YSA9IF9yZWYyLmRhdGE7XG4gICAgICAgICAgcmV0dXJuIGRhdGEudmFsdWUgPT09IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgc2V0QWN0aXZlKGluZGV4KTtcbiAgICAgICAgc2Nyb2xsSW50b1ZpZXcoaW5kZXgpO1xuICAgICAgfVxuICAgIH0pOyAvLyBGb3JjZSB0cmlnZ2VyIHNjcm9sbGJhciB2aXNpYmxlIHdoZW4gb3BlblxuXG4gICAgaWYgKG9wZW4pIHtcbiAgICAgIHZhciBfbGlzdFJlZiRjdXJyZW50O1xuXG4gICAgICAoX2xpc3RSZWYkY3VycmVudCA9IGxpc3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2xpc3RSZWYkY3VycmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2xpc3RSZWYkY3VycmVudC5zY3JvbGxUbyh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgfTtcbiAgfSwgW29wZW5dKTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT0gVmFsdWVzID09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIG9uU2VsZWN0VmFsdWUgPSBmdW5jdGlvbiBvblNlbGVjdFZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9uU2VsZWN0KHZhbHVlLCB7XG4gICAgICAgIHNlbGVjdGVkOiAhdmFsdWVzLmhhcyh2YWx1ZSlcbiAgICAgIH0pO1xuICAgIH0gLy8gU2luZ2xlIG1vZGUgc2hvdWxkIGFsd2F5cyBjbG9zZSBieSBzZWxlY3RcblxuXG4gICAgaWYgKCFtdWx0aXBsZSkge1xuICAgICAgb25Ub2dnbGVPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH07IC8vID09PT09PT09PT09PT09PT09PT09PT09PT0gS2V5Ym9hcmQgPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbiAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZXZlbnQpIHtcbiAgICAgICAgdmFyIHdoaWNoID0gZXZlbnQud2hpY2g7XG5cbiAgICAgICAgc3dpdGNoICh3aGljaCkge1xuICAgICAgICAgIC8vID4+PiBBcnJvdyBrZXlzXG4gICAgICAgICAgY2FzZSBLZXlDb2RlLlVQOlxuICAgICAgICAgIGNhc2UgS2V5Q29kZS5ET1dOOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gMDtcblxuICAgICAgICAgICAgICBpZiAod2hpY2ggPT09IEtleUNvZGUuVVApIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtMTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCA9PT0gS2V5Q29kZS5ET1dOKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gMTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChvZmZzZXQgIT09IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dEFjdGl2ZUluZGV4ID0gZ2V0RW5hYmxlZEFjdGl2ZUluZGV4KGFjdGl2ZUluZGV4ICsgb2Zmc2V0LCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgIHNjcm9sbEludG9WaWV3KG5leHRBY3RpdmVJbmRleCk7XG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlKG5leHRBY3RpdmVJbmRleCwgdHJ1ZSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAvLyA+Pj4gU2VsZWN0XG5cbiAgICAgICAgICBjYXNlIEtleUNvZGUuRU5URVI6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC8vIHZhbHVlXG4gICAgICAgICAgICAgIHZhciBpdGVtID0gbWVtb0ZsYXR0ZW5PcHRpb25zW2FjdGl2ZUluZGV4XTtcblxuICAgICAgICAgICAgICBpZiAoaXRlbSAmJiAhaXRlbS5kYXRhLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgb25TZWxlY3RWYWx1ZShpdGVtLmRhdGEudmFsdWUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG9uU2VsZWN0VmFsdWUodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIC8vID4+PiBDbG9zZVxuXG4gICAgICAgICAgY2FzZSBLZXlDb2RlLkVTQzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgb25Ub2dnbGVPcGVuKGZhbHNlKTtcblxuICAgICAgICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvbktleVVwOiBmdW5jdGlvbiBvbktleVVwKCkge30sXG4gICAgICBzY3JvbGxUbzogZnVuY3Rpb24gc2Nyb2xsVG8oaW5kZXgpIHtcbiAgICAgICAgc2Nyb2xsSW50b1ZpZXcoaW5kZXgpO1xuICAgICAgfVxuICAgIH07XG4gIH0pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PSBSZW5kZXIgPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBpZiAobWVtb0ZsYXR0ZW5PcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICByb2xlOiBcImxpc3Rib3hcIixcbiAgICAgIGlkOiBcIlwiLmNvbmNhdChpZCwgXCJfbGlzdFwiKSxcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQoaXRlbVByZWZpeENscywgXCItZW1wdHlcIiksXG4gICAgICBvbk1vdXNlRG93bjogb25MaXN0TW91c2VEb3duXG4gICAgfSwgbm90Rm91bmRDb250ZW50KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbmRlckl0ZW0oaW5kZXgpIHtcbiAgICB2YXIgaXRlbSA9IG1lbW9GbGF0dGVuT3B0aW9uc1tpbmRleF07XG4gICAgaWYgKCFpdGVtKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgaXRlbURhdGEgPSBpdGVtLmRhdGEgfHwge307XG4gICAgdmFyIHZhbHVlID0gaXRlbURhdGEudmFsdWUsXG4gICAgICAgIGxhYmVsID0gaXRlbURhdGEubGFiZWwsXG4gICAgICAgIGNoaWxkcmVuID0gaXRlbURhdGEuY2hpbGRyZW47XG4gICAgdmFyIGF0dHJzID0gcGlja0F0dHJzKGl0ZW1EYXRhLCB0cnVlKTtcbiAgICB2YXIgbWVyZ2VkTGFiZWwgPSBjaGlsZHJlbkFzRGF0YSA/IGNoaWxkcmVuIDogbGFiZWw7XG4gICAgcmV0dXJuIGl0ZW0gPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgICBcImFyaWEtbGFiZWxcIjogdHlwZW9mIG1lcmdlZExhYmVsID09PSAnc3RyaW5nJyA/IG1lcmdlZExhYmVsIDogbnVsbFxuICAgIH0sIGF0dHJzLCB7XG4gICAgICBrZXk6IGluZGV4LFxuICAgICAgcm9sZTogXCJvcHRpb25cIixcbiAgICAgIGlkOiBcIlwiLmNvbmNhdChpZCwgXCJfbGlzdF9cIikuY29uY2F0KGluZGV4KSxcbiAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiB2YWx1ZXMuaGFzKHZhbHVlKVxuICAgIH0pLCB2YWx1ZSkgOiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgcm9sZTogXCJsaXN0Ym94XCIsXG4gICAgaWQ6IFwiXCIuY29uY2F0KGlkLCBcIl9saXN0XCIpLFxuICAgIHN0eWxlOiB7XG4gICAgICBoZWlnaHQ6IDAsXG4gICAgICB3aWR0aDogMCxcbiAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ1xuICAgIH1cbiAgfSwgcmVuZGVySXRlbShhY3RpdmVJbmRleCAtIDEpLCByZW5kZXJJdGVtKGFjdGl2ZUluZGV4KSwgcmVuZGVySXRlbShhY3RpdmVJbmRleCArIDEpKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGlzdCwge1xuICAgIGl0ZW1LZXk6IFwia2V5XCIsXG4gICAgcmVmOiBsaXN0UmVmLFxuICAgIGRhdGE6IG1lbW9GbGF0dGVuT3B0aW9ucyxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICBpdGVtSGVpZ2h0OiBpdGVtSGVpZ2h0LFxuICAgIGZ1bGxIZWlnaHQ6IGZhbHNlLFxuICAgIG9uTW91c2VEb3duOiBvbkxpc3RNb3VzZURvd24sXG4gICAgb25TY3JvbGw6IG9uU2Nyb2xsLFxuICAgIHZpcnR1YWw6IHZpcnR1YWwsXG4gICAgb25Nb3VzZUVudGVyOiBvbk1vdXNlRW50ZXJcbiAgfSwgZnVuY3Rpb24gKF9yZWYzLCBpdGVtSW5kZXgpIHtcbiAgICB2YXIgX2NsYXNzTmFtZXM7XG5cbiAgICB2YXIgZ3JvdXAgPSBfcmVmMy5ncm91cCxcbiAgICAgICAgZ3JvdXBPcHRpb24gPSBfcmVmMy5ncm91cE9wdGlvbixcbiAgICAgICAgZGF0YSA9IF9yZWYzLmRhdGE7XG4gICAgdmFyIGxhYmVsID0gZGF0YS5sYWJlbCxcbiAgICAgICAga2V5ID0gZGF0YS5rZXk7IC8vIEdyb3VwXG5cbiAgICBpZiAoZ3JvdXApIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhpdGVtUHJlZml4Q2xzLCBcIlwiLmNvbmNhdChpdGVtUHJlZml4Q2xzLCBcIi1ncm91cFwiKSlcbiAgICAgIH0sIGxhYmVsICE9PSB1bmRlZmluZWQgPyBsYWJlbCA6IGtleSk7XG4gICAgfVxuXG4gICAgdmFyIGRpc2FibGVkID0gZGF0YS5kaXNhYmxlZCxcbiAgICAgICAgdmFsdWUgPSBkYXRhLnZhbHVlLFxuICAgICAgICB0aXRsZSA9IGRhdGEudGl0bGUsXG4gICAgICAgIGNoaWxkcmVuID0gZGF0YS5jaGlsZHJlbixcbiAgICAgICAgc3R5bGUgPSBkYXRhLnN0eWxlLFxuICAgICAgICBjbGFzc05hbWUgPSBkYXRhLmNsYXNzTmFtZSxcbiAgICAgICAgb3RoZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhkYXRhLCBbXCJkaXNhYmxlZFwiLCBcInZhbHVlXCIsIFwidGl0bGVcIiwgXCJjaGlsZHJlblwiLCBcInN0eWxlXCIsIFwiY2xhc3NOYW1lXCJdKTsgLy8gT3B0aW9uXG5cblxuICAgIHZhciBzZWxlY3RlZCA9IHZhbHVlcy5oYXModmFsdWUpO1xuICAgIHZhciBvcHRpb25QcmVmaXhDbHMgPSBcIlwiLmNvbmNhdChpdGVtUHJlZml4Q2xzLCBcIi1vcHRpb25cIik7XG4gICAgdmFyIG9wdGlvbkNsYXNzTmFtZSA9IGNsYXNzTmFtZXMoaXRlbVByZWZpeENscywgb3B0aW9uUHJlZml4Q2xzLCBjbGFzc05hbWUsIChfY2xhc3NOYW1lcyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KG9wdGlvblByZWZpeENscywgXCItZ3JvdXBlZFwiKSwgZ3JvdXBPcHRpb24pLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KG9wdGlvblByZWZpeENscywgXCItYWN0aXZlXCIpLCBhY3RpdmVJbmRleCA9PT0gaXRlbUluZGV4ICYmICFkaXNhYmxlZCksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lcywgXCJcIi5jb25jYXQob3B0aW9uUHJlZml4Q2xzLCBcIi1kaXNhYmxlZFwiKSwgZGlzYWJsZWQpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMsIFwiXCIuY29uY2F0KG9wdGlvblByZWZpeENscywgXCItc2VsZWN0ZWRcIiksIHNlbGVjdGVkKSwgX2NsYXNzTmFtZXMpKTtcbiAgICB2YXIgbWVyZ2VkTGFiZWwgPSBjaGlsZHJlbkFzRGF0YSA/IGNoaWxkcmVuIDogbGFiZWw7XG4gICAgdmFyIGljb25WaXNpYmxlID0gIW1lbnVJdGVtU2VsZWN0ZWRJY29uIHx8IHR5cGVvZiBtZW51SXRlbVNlbGVjdGVkSWNvbiA9PT0gJ2Z1bmN0aW9uJyB8fCBzZWxlY3RlZDtcbiAgICB2YXIgY29udGVudCA9IG1lcmdlZExhYmVsIHx8IHZhbHVlOyAvLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8yNjcxN1xuXG4gICAgdmFyIG9wdGlvblRpdGxlID0gdHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBjb250ZW50ID09PSAnbnVtYmVyJyA/IGNvbnRlbnQudG9TdHJpbmcoKSA6IHVuZGVmaW5lZDtcblxuICAgIGlmICh0aXRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvcHRpb25UaXRsZSA9IHRpdGxlO1xuICAgIH1cblxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgb3RoZXJQcm9wcywge1xuICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkLFxuICAgICAgY2xhc3NOYW1lOiBvcHRpb25DbGFzc05hbWUsXG4gICAgICB0aXRsZTogb3B0aW9uVGl0bGUsXG4gICAgICBvbk1vdXNlTW92ZTogZnVuY3Rpb24gb25Nb3VzZU1vdmUoKSB7XG4gICAgICAgIGlmIChhY3RpdmVJbmRleCA9PT0gaXRlbUluZGV4IHx8IGRpc2FibGVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0QWN0aXZlKGl0ZW1JbmRleCk7XG4gICAgICB9LFxuICAgICAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHtcbiAgICAgICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICAgIG9uU2VsZWN0VmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc3R5bGU6IHN0eWxlXG4gICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQob3B0aW9uUHJlZml4Q2xzLCBcIi1jb250ZW50XCIpXG4gICAgfSwgY29udGVudCksIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChtZW51SXRlbVNlbGVjdGVkSWNvbikgfHwgc2VsZWN0ZWQsIGljb25WaXNpYmxlICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zQnRuLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KGl0ZW1QcmVmaXhDbHMsIFwiLW9wdGlvbi1zdGF0ZVwiKSxcbiAgICAgIGN1c3RvbWl6ZUljb246IG1lbnVJdGVtU2VsZWN0ZWRJY29uLFxuICAgICAgY3VzdG9taXplSWNvblByb3BzOiB7XG4gICAgICAgIGlzU2VsZWN0ZWQ6IHNlbGVjdGVkXG4gICAgICB9XG4gICAgfSwgc2VsZWN0ZWQgPyAn4pyTJyA6IG51bGwpKTtcbiAgfSkpO1xufTtcblxudmFyIFJlZk9wdGlvbkxpc3QgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihPcHRpb25MaXN0KTtcblJlZk9wdGlvbkxpc3QuZGlzcGxheU5hbWUgPSAnT3B0aW9uTGlzdCc7XG5leHBvcnQgZGVmYXVsdCBSZWZPcHRpb25MaXN0OyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU1lbW8oZ2V0VmFsdWUsIGNvbmRpdGlvbiwgc2hvdWxkVXBkYXRlKSB7XG4gIHZhciBjYWNoZVJlZiA9IFJlYWN0LnVzZVJlZih7fSk7XG5cbiAgaWYgKCEoJ3ZhbHVlJyBpbiBjYWNoZVJlZi5jdXJyZW50KSB8fCBzaG91bGRVcGRhdGUoY2FjaGVSZWYuY3VycmVudC5jb25kaXRpb24sIGNvbmRpdGlvbikpIHtcbiAgICBjYWNoZVJlZi5jdXJyZW50LnZhbHVlID0gZ2V0VmFsdWUoKTtcbiAgICBjYWNoZVJlZi5jdXJyZW50LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgfVxuXG4gIHJldHVybiBjYWNoZVJlZi5jdXJyZW50LnZhbHVlO1xufSIsIi8qKiBUaGlzIGlzIGEgcGxhY2Vob2xkZXIsIG5vdCByZWFsIHJlbmRlciBpbiBkb20gKi9cbnZhciBPcHRpb24gPSBmdW5jdGlvbiBPcHRpb24oKSB7XG4gIHJldHVybiBudWxsO1xufTtcblxuT3B0aW9uLmlzU2VsZWN0T3B0aW9uID0gdHJ1ZTtcbmV4cG9ydCBkZWZhdWx0IE9wdGlvbjsiLCIvKiogVGhpcyBpcyBhIHBsYWNlaG9sZGVyLCBub3QgcmVhbCByZW5kZXIgaW4gZG9tICovXG52YXIgT3B0R3JvdXAgPSBmdW5jdGlvbiBPcHRHcm91cCgpIHtcbiAgcmV0dXJuIG51bGw7XG59O1xuXG5PcHRHcm91cC5pc1NlbGVjdE9wdEdyb3VwID0gdHJ1ZTtcbmV4cG9ydCBkZWZhdWx0IE9wdEdyb3VwOyIsImltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHRvQXJyYXkgZnJvbSBcInJjLXV0aWwvZXMvQ2hpbGRyZW4vdG9BcnJheVwiO1xuXG5mdW5jdGlvbiBjb252ZXJ0Tm9kZVRvT3B0aW9uKG5vZGUpIHtcbiAgdmFyIGtleSA9IG5vZGUua2V5LFxuICAgICAgX25vZGUkcHJvcHMgPSBub2RlLnByb3BzLFxuICAgICAgY2hpbGRyZW4gPSBfbm9kZSRwcm9wcy5jaGlsZHJlbixcbiAgICAgIHZhbHVlID0gX25vZGUkcHJvcHMudmFsdWUsXG4gICAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX25vZGUkcHJvcHMsIFtcImNoaWxkcmVuXCIsIFwidmFsdWVcIl0pO1xuXG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBrZXk6IGtleSxcbiAgICB2YWx1ZTogdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoga2V5LFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9LCByZXN0UHJvcHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENoaWxkcmVuVG9EYXRhKG5vZGVzKSB7XG4gIHZhciBvcHRpb25Pbmx5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTtcbiAgcmV0dXJuIHRvQXJyYXkobm9kZXMpLm1hcChmdW5jdGlvbiAobm9kZSwgaW5kZXgpIHtcbiAgICBpZiAoISAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQobm9kZSkgfHwgIW5vZGUudHlwZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIGlzU2VsZWN0T3B0R3JvdXAgPSBub2RlLnR5cGUuaXNTZWxlY3RPcHRHcm91cCxcbiAgICAgICAga2V5ID0gbm9kZS5rZXksXG4gICAgICAgIF9ub2RlJHByb3BzMiA9IG5vZGUucHJvcHMsXG4gICAgICAgIGNoaWxkcmVuID0gX25vZGUkcHJvcHMyLmNoaWxkcmVuLFxuICAgICAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX25vZGUkcHJvcHMyLCBbXCJjaGlsZHJlblwiXSk7XG5cbiAgICBpZiAob3B0aW9uT25seSB8fCAhaXNTZWxlY3RPcHRHcm91cCkge1xuICAgICAgcmV0dXJuIGNvbnZlcnROb2RlVG9PcHRpb24obm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICBrZXk6IFwiX19SQ19TRUxFQ1RfR1JQX19cIi5jb25jYXQoa2V5ID09PSBudWxsID8gaW5kZXggOiBrZXksIFwiX19cIiksXG4gICAgICBsYWJlbDoga2V5XG4gICAgfSwgcmVzdFByb3BzKSwge30sIHtcbiAgICAgIG9wdGlvbnM6IGNvbnZlcnRDaGlsZHJlblRvRGF0YShjaGlsZHJlbilcbiAgICB9KTtcbiAgfSkuZmlsdGVyKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0pO1xufSIsImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5XCI7XG5leHBvcnQgZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IFt2YWx1ZV0gOiBbXTtcbn1cbi8qKlxuICogQ29udmVydCBvdXRlciBwcm9wcyB2YWx1ZSBpbnRvIGludGVybmFsIHZhbHVlXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRvSW5uZXJWYWx1ZSh2YWx1ZSwgX3JlZikge1xuICB2YXIgbGFiZWxJblZhbHVlID0gX3JlZi5sYWJlbEluVmFsdWUsXG4gICAgICBjb21ib2JveCA9IF9yZWYuY29tYm9ib3g7XG4gIHZhciB2YWx1ZU1hcCA9IG5ldyBNYXAoKTtcblxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycgJiYgY29tYm9ib3gpIHtcbiAgICByZXR1cm4gW1tdLCB2YWx1ZU1hcF07XG4gIH1cblxuICB2YXIgdmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gIHZhciByYXdWYWx1ZXMgPSB2YWx1ZXM7XG5cbiAgaWYgKGxhYmVsSW5WYWx1ZSkge1xuICAgIHJhd1ZhbHVlcyA9IHZhbHVlcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBpdGVtICE9PSBudWxsO1xuICAgIH0pLm1hcChmdW5jdGlvbiAoaXRlbVZhbHVlKSB7XG4gICAgICB2YXIga2V5ID0gaXRlbVZhbHVlLmtleSxcbiAgICAgICAgICB2YWwgPSBpdGVtVmFsdWUudmFsdWU7XG4gICAgICB2YXIgZmluYWxWYWwgPSB2YWwgIT09IHVuZGVmaW5lZCA/IHZhbCA6IGtleTtcbiAgICAgIHZhbHVlTWFwLnNldChmaW5hbFZhbCwgaXRlbVZhbHVlKTtcbiAgICAgIHJldHVybiBmaW5hbFZhbDtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBbcmF3VmFsdWVzLCB2YWx1ZU1hcF07XG59XG4vKipcbiAqIENvbnZlcnQgaW50ZXJuYWwgdmFsdWUgaW50byBvdXQgZXZlbnQgdmFsdWVcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdG9PdXRlclZhbHVlcyh2YWx1ZUxpc3QsIF9yZWYyKSB7XG4gIHZhciBvcHRpb25MYWJlbFByb3AgPSBfcmVmMi5vcHRpb25MYWJlbFByb3AsXG4gICAgICBsYWJlbEluVmFsdWUgPSBfcmVmMi5sYWJlbEluVmFsdWUsXG4gICAgICBwcmV2VmFsdWVNYXAgPSBfcmVmMi5wcmV2VmFsdWVNYXAsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIGdldExhYmVsZWRWYWx1ZSA9IF9yZWYyLmdldExhYmVsZWRWYWx1ZTtcbiAgdmFyIHZhbHVlcyA9IHZhbHVlTGlzdDtcblxuICBpZiAobGFiZWxJblZhbHVlKSB7XG4gICAgdmFsdWVzID0gdmFsdWVzLm1hcChmdW5jdGlvbiAodmFsKSB7XG4gICAgICByZXR1cm4gZ2V0TGFiZWxlZFZhbHVlKHZhbCwge1xuICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICBwcmV2VmFsdWVNYXA6IHByZXZWYWx1ZU1hcCxcbiAgICAgICAgbGFiZWxJblZhbHVlOiBsYWJlbEluVmFsdWUsXG4gICAgICAgIG9wdGlvbkxhYmVsUHJvcDogb3B0aW9uTGFiZWxQcm9wXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZXM7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTGFzdEVuYWJsZWRWYWx1ZShtZWFzdXJlVmFsdWVzLCB2YWx1ZXMpIHtcbiAgdmFyIG5ld1ZhbHVlcyA9IF90b0NvbnN1bWFibGVBcnJheSh2YWx1ZXMpO1xuXG4gIHZhciByZW1vdmVJbmRleDtcblxuICBmb3IgKHJlbW92ZUluZGV4ID0gbWVhc3VyZVZhbHVlcy5sZW5ndGggLSAxOyByZW1vdmVJbmRleCA+PSAwOyByZW1vdmVJbmRleCAtPSAxKSB7XG4gICAgaWYgKCFtZWFzdXJlVmFsdWVzW3JlbW92ZUluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdmFyIHJlbW92ZWRWYWx1ZSA9IG51bGw7XG5cbiAgaWYgKHJlbW92ZUluZGV4ICE9PSAtMSkge1xuICAgIHJlbW92ZWRWYWx1ZSA9IG5ld1ZhbHVlc1tyZW1vdmVJbmRleF07XG4gICAgbmV3VmFsdWVzLnNwbGljZShyZW1vdmVJbmRleCwgMSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHZhbHVlczogbmV3VmFsdWVzLFxuICAgIHJlbW92ZWRWYWx1ZTogcmVtb3ZlZFZhbHVlXG4gIH07XG59XG5leHBvcnQgdmFyIGlzQ2xpZW50ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4vKiogSXMgY2xpZW50IHNpZGUgYW5kIG5vdCBqc2RvbSAqL1xuXG5leHBvcnQgdmFyIGlzQnJvd3NlckNsaWVudCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdCcgJiYgaXNDbGllbnQ7XG52YXIgdXVpZCA9IDA7XG4vKiogR2V0IHVuaXF1ZSBpZCBmb3IgYWNjZXNzaWJpbGl0eSB1c2FnZSAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VVVJRCgpIHtcbiAgdmFyIHJldElkOyAvLyBUZXN0IG5ldmVyIHJlYWNoXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5cbiAgaWYgKGlzQnJvd3NlckNsaWVudCkge1xuICAgIHJldElkID0gdXVpZDtcbiAgICB1dWlkICs9IDE7XG4gIH0gZWxzZSB7XG4gICAgcmV0SWQgPSAnVEVTVF9PUl9TU1InO1xuICB9XG5cbiAgcmV0dXJuIHJldElkO1xufSIsImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX3RvQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQXJyYXlcIjtcbmltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5XCI7XG5pbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSBcInJjLXV0aWwvZXMvd2FybmluZ1wiO1xuaW1wb3J0IHsgdG9BcnJheSB9IGZyb20gJy4vY29tbW9uVXRpbCc7XG5cbmZ1bmN0aW9uIGdldEtleShkYXRhLCBpbmRleCkge1xuICB2YXIga2V5ID0gZGF0YS5rZXk7XG4gIHZhciB2YWx1ZTtcblxuICBpZiAoJ3ZhbHVlJyBpbiBkYXRhKSB7XG4gICAgdmFsdWUgPSBkYXRhLnZhbHVlO1xuICB9XG5cbiAgaWYgKGtleSAhPT0gbnVsbCAmJiBrZXkgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBrZXk7XG4gIH1cblxuICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBcInJjLWluZGV4LWtleS1cIi5jb25jYXQoaW5kZXgpO1xufVxuLyoqXG4gKiBGbGF0IG9wdGlvbnMgaW50byBmbGF0dGVuIGxpc3QuXG4gKiBXZSB1c2UgYG9wdGlvbk9ubHlgIGhlcmUgaXMgYWltIHRvIGF2b2lkIHVzZXIgdXNlIG5lc3RlZCBvcHRpb24gZ3JvdXAuXG4gKiBIZXJlIGlzIHNpbXBseSBzZXQgYGtleWAgdG8gdGhlIGluZGV4IGlmIG5vdCBwcm92aWRlZC5cbiAqL1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuT3B0aW9ucyhvcHRpb25zKSB7XG4gIHZhciBmbGF0dGVuTGlzdCA9IFtdO1xuXG4gIGZ1bmN0aW9uIGRpZyhsaXN0LCBpc0dyb3VwT3B0aW9uKSB7XG4gICAgbGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBpZiAoaXNHcm91cE9wdGlvbiB8fCAhKCdvcHRpb25zJyBpbiBkYXRhKSkge1xuICAgICAgICAvLyBPcHRpb25cbiAgICAgICAgZmxhdHRlbkxpc3QucHVzaCh7XG4gICAgICAgICAga2V5OiBnZXRLZXkoZGF0YSwgZmxhdHRlbkxpc3QubGVuZ3RoKSxcbiAgICAgICAgICBncm91cE9wdGlvbjogaXNHcm91cE9wdGlvbixcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3B0aW9uIEdyb3VwXG4gICAgICAgIGZsYXR0ZW5MaXN0LnB1c2goe1xuICAgICAgICAgIGtleTogZ2V0S2V5KGRhdGEsIGZsYXR0ZW5MaXN0Lmxlbmd0aCksXG4gICAgICAgICAgZ3JvdXA6IHRydWUsXG4gICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9KTtcbiAgICAgICAgZGlnKGRhdGEub3B0aW9ucywgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBkaWcob3B0aW9ucywgZmFsc2UpO1xuICByZXR1cm4gZmxhdHRlbkxpc3Q7XG59XG4vKipcbiAqIEluamVjdCBgcHJvcHNgIGludG8gYG9wdGlvbmAgZm9yIGxlZ2FjeSB1c2FnZVxuICovXG5cbmZ1bmN0aW9uIGluamVjdFByb3BzV2l0aE9wdGlvbihvcHRpb24pIHtcbiAgdmFyIG5ld09wdGlvbiA9IF9vYmplY3RTcHJlYWQoe30sIG9wdGlvbik7XG5cbiAgaWYgKCEoJ3Byb3BzJyBpbiBuZXdPcHRpb24pKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09wdGlvbiwgJ3Byb3BzJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHdhcm5pbmcoZmFsc2UsICdSZXR1cm4gdHlwZSBpcyBvcHRpb24gaW5zdGVhZCBvZiBPcHRpb24gaW5zdGFuY2UuIFBsZWFzZSByZWFkIHZhbHVlIGRpcmVjdGx5IGluc3RlYWQgb2YgcmVhZGluZyBmcm9tIGBwcm9wc2AuJyk7XG4gICAgICAgIHJldHVybiBuZXdPcHRpb247XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3T3B0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZFZhbHVlT3B0aW9uKHZhbHVlcywgb3B0aW9ucykge1xuICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDoge30sXG4gICAgICBfcmVmJHByZXZWYWx1ZU9wdGlvbnMgPSBfcmVmLnByZXZWYWx1ZU9wdGlvbnMsXG4gICAgICBwcmV2VmFsdWVPcHRpb25zID0gX3JlZiRwcmV2VmFsdWVPcHRpb25zID09PSB2b2lkIDAgPyBbXSA6IF9yZWYkcHJldlZhbHVlT3B0aW9ucztcblxuICB2YXIgb3B0aW9uTWFwID0gbmV3IE1hcCgpO1xuICBvcHRpb25zLmZvckVhY2goZnVuY3Rpb24gKGZsYXR0ZW5JdGVtKSB7XG4gICAgaWYgKCFmbGF0dGVuSXRlbS5ncm91cCkge1xuICAgICAgdmFyIGRhdGEgPSBmbGF0dGVuSXRlbS5kYXRhOyAvLyBDaGVjayBpZiBtYXRjaFxuXG4gICAgICBvcHRpb25NYXAuc2V0KGRhdGEudmFsdWUsIGRhdGEpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB2YWx1ZXMubWFwKGZ1bmN0aW9uICh2YWwpIHtcbiAgICB2YXIgb3B0aW9uID0gb3B0aW9uTWFwLmdldCh2YWwpOyAvLyBGYWxsYmFjayB0byB0cnkgdG8gZmluZCBwcmV2IG9wdGlvbnNcblxuICAgIGlmICghb3B0aW9uKSB7XG4gICAgICBvcHRpb24gPSBfb2JqZWN0U3ByZWFkKHt9LCBwcmV2VmFsdWVPcHRpb25zLmZpbmQoZnVuY3Rpb24gKG9wdCkge1xuICAgICAgICByZXR1cm4gb3B0Ll9JTlRFUk5BTF9PUFRJT05fVkFMVUVfID09PSB2YWw7XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluamVjdFByb3BzV2l0aE9wdGlvbihvcHRpb24pO1xuICB9KTtcbn1cbmV4cG9ydCB2YXIgZ2V0TGFiZWxlZFZhbHVlID0gZnVuY3Rpb24gZ2V0TGFiZWxlZFZhbHVlKHZhbHVlLCBfcmVmMikge1xuICB2YXIgb3B0aW9ucyA9IF9yZWYyLm9wdGlvbnMsXG4gICAgICBwcmV2VmFsdWVNYXAgPSBfcmVmMi5wcmV2VmFsdWVNYXAsXG4gICAgICBsYWJlbEluVmFsdWUgPSBfcmVmMi5sYWJlbEluVmFsdWUsXG4gICAgICBvcHRpb25MYWJlbFByb3AgPSBfcmVmMi5vcHRpb25MYWJlbFByb3A7XG4gIHZhciBpdGVtID0gZmluZFZhbHVlT3B0aW9uKFt2YWx1ZV0sIG9wdGlvbnMpWzBdO1xuICB2YXIgcmVzdWx0ID0ge1xuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xuICB2YXIgcHJldlZhbEl0ZW0gPSBsYWJlbEluVmFsdWUgPyBwcmV2VmFsdWVNYXAuZ2V0KHZhbHVlKSA6IHVuZGVmaW5lZDtcblxuICBpZiAocHJldlZhbEl0ZW0gJiYgX3R5cGVvZihwcmV2VmFsSXRlbSkgPT09ICdvYmplY3QnICYmICdsYWJlbCcgaW4gcHJldlZhbEl0ZW0pIHtcbiAgICByZXN1bHQubGFiZWwgPSBwcmV2VmFsSXRlbS5sYWJlbDtcblxuICAgIGlmIChpdGVtICYmIHR5cGVvZiBwcmV2VmFsSXRlbS5sYWJlbCA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIGl0ZW1bb3B0aW9uTGFiZWxQcm9wXSA9PT0gJ3N0cmluZycgJiYgcHJldlZhbEl0ZW0ubGFiZWwudHJpbSgpICE9PSBpdGVtW29wdGlvbkxhYmVsUHJvcF0udHJpbSgpKSB7XG4gICAgICB3YXJuaW5nKGZhbHNlLCAnYGxhYmVsYCBvZiBgdmFsdWVgIGlzIG5vdCBzYW1lIGFzIGBsYWJlbGAgaW4gU2VsZWN0IG9wdGlvbnMuJyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGl0ZW0gJiYgb3B0aW9uTGFiZWxQcm9wIGluIGl0ZW0pIHtcbiAgICByZXN1bHQubGFiZWwgPSBpdGVtW29wdGlvbkxhYmVsUHJvcF07XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0LmxhYmVsID0gdmFsdWU7XG4gICAgcmVzdWx0LmlzQ2FjaGVhYmxlID0gdHJ1ZTtcbiAgfSAvLyBVc2VkIGZvciBtb3Rpb24gY29udHJvbFxuXG5cbiAgcmVzdWx0LmtleSA9IHJlc3VsdC52YWx1ZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmZ1bmN0aW9uIHRvUmF3U3RyaW5nKGNvbnRlbnQpIHtcbiAgcmV0dXJuIHRvQXJyYXkoY29udGVudCkuam9pbignJyk7XG59XG4vKiogRmlsdGVyIHNpbmdsZSBvcHRpb24gaWYgbWF0Y2ggdGhlIHNlYXJjaCB0ZXh0ICovXG5cblxuZnVuY3Rpb24gZ2V0RmlsdGVyRnVuY3Rpb24ob3B0aW9uRmlsdGVyUHJvcCkge1xuICByZXR1cm4gZnVuY3Rpb24gKHNlYXJjaFZhbHVlLCBvcHRpb24pIHtcbiAgICB2YXIgbG93ZXJTZWFyY2hUZXh0ID0gc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKTsgLy8gR3JvdXAgbGFiZWwgc2VhcmNoXG5cbiAgICBpZiAoJ29wdGlvbnMnIGluIG9wdGlvbikge1xuICAgICAgcmV0dXJuIHRvUmF3U3RyaW5nKG9wdGlvbi5sYWJlbCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlclNlYXJjaFRleHQpO1xuICAgIH0gLy8gT3B0aW9uIHZhbHVlIHNlYXJjaFxuXG5cbiAgICB2YXIgcmF3VmFsdWUgPSBvcHRpb25bb3B0aW9uRmlsdGVyUHJvcF07XG4gICAgdmFyIHZhbHVlID0gdG9SYXdTdHJpbmcocmF3VmFsdWUpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHZhbHVlLmluY2x1ZGVzKGxvd2VyU2VhcmNoVGV4dCk7XG4gIH07XG59XG4vKiogRmlsdGVyIG9wdGlvbnMgYW5kIHJldHVybiBhIG5ldyBvcHRpb25zIGJ5IHRoZSBzZWFyY2ggdGV4dCAqL1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJPcHRpb25zKHNlYXJjaFZhbHVlLCBvcHRpb25zLCBfcmVmMykge1xuICB2YXIgb3B0aW9uRmlsdGVyUHJvcCA9IF9yZWYzLm9wdGlvbkZpbHRlclByb3AsXG4gICAgICBmaWx0ZXJPcHRpb24gPSBfcmVmMy5maWx0ZXJPcHRpb247XG4gIHZhciBmaWx0ZXJlZE9wdGlvbnMgPSBbXTtcbiAgdmFyIGZpbHRlckZ1bmM7XG5cbiAgaWYgKGZpbHRlck9wdGlvbiA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gX3RvQ29uc3VtYWJsZUFycmF5KG9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBmaWx0ZXJPcHRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICBmaWx0ZXJGdW5jID0gZmlsdGVyT3B0aW9uO1xuICB9IGVsc2Uge1xuICAgIGZpbHRlckZ1bmMgPSBnZXRGaWx0ZXJGdW5jdGlvbihvcHRpb25GaWx0ZXJQcm9wKTtcbiAgfVxuXG4gIG9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgIC8vIEdyb3VwIHNob3VsZCBjaGVjayBjaGlsZCBvcHRpb25zXG4gICAgaWYgKCdvcHRpb25zJyBpbiBpdGVtKSB7XG4gICAgICAvLyBDaGVjayBncm91cCBmaXJzdFxuICAgICAgdmFyIG1hdGNoR3JvdXAgPSBmaWx0ZXJGdW5jKHNlYXJjaFZhbHVlLCBpdGVtKTtcblxuICAgICAgaWYgKG1hdGNoR3JvdXApIHtcbiAgICAgICAgZmlsdGVyZWRPcHRpb25zLnB1c2goaXRlbSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDaGVjayBvcHRpb25cbiAgICAgICAgdmFyIHN1Yk9wdGlvbnMgPSBpdGVtLm9wdGlvbnMuZmlsdGVyKGZ1bmN0aW9uIChzdWJJdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIGZpbHRlckZ1bmMoc2VhcmNoVmFsdWUsIHN1Ykl0ZW0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoc3ViT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICBmaWx0ZXJlZE9wdGlvbnMucHVzaChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGl0ZW0pLCB7fSwge1xuICAgICAgICAgICAgb3B0aW9uczogc3ViT3B0aW9uc1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGZpbHRlckZ1bmMoc2VhcmNoVmFsdWUsIGluamVjdFByb3BzV2l0aE9wdGlvbihpdGVtKSkpIHtcbiAgICAgIGZpbHRlcmVkT3B0aW9ucy5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBmaWx0ZXJlZE9wdGlvbnM7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VwYXJhdGVkQ29udGVudCh0ZXh0LCB0b2tlbnMpIHtcbiAgaWYgKCF0b2tlbnMgfHwgIXRva2Vucy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBtYXRjaCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHNlcGFyYXRlKHN0ciwgX3JlZjQpIHtcbiAgICB2YXIgX3JlZjUgPSBfdG9BcnJheShfcmVmNCksXG4gICAgICAgIHRva2VuID0gX3JlZjVbMF0sXG4gICAgICAgIHJlc3RUb2tlbnMgPSBfcmVmNS5zbGljZSgxKTtcblxuICAgIGlmICghdG9rZW4pIHtcbiAgICAgIHJldHVybiBbc3RyXTtcbiAgICB9XG5cbiAgICB2YXIgbGlzdCA9IHN0ci5zcGxpdCh0b2tlbik7XG4gICAgbWF0Y2ggPSBtYXRjaCB8fCBsaXN0Lmxlbmd0aCA+IDE7XG4gICAgcmV0dXJuIGxpc3QucmVkdWNlKGZ1bmN0aW9uIChwcmV2TGlzdCwgdW5pdFN0cikge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocHJldkxpc3QpLCBfdG9Db25zdW1hYmxlQXJyYXkoc2VwYXJhdGUodW5pdFN0ciwgcmVzdFRva2VucykpKTtcbiAgICB9LCBbXSkuZmlsdGVyKGZ1bmN0aW9uICh1bml0KSB7XG4gICAgICByZXR1cm4gdW5pdDtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBsaXN0ID0gc2VwYXJhdGUodGV4dCwgdG9rZW5zKTtcbiAgcmV0dXJuIG1hdGNoID8gbGlzdCA6IG51bGw7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWYWx1ZURpc2FibGVkKHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciBvcHRpb24gPSBmaW5kVmFsdWVPcHRpb24oW3ZhbHVlXSwgb3B0aW9ucylbMF07XG4gIHJldHVybiBvcHRpb24uZGlzYWJsZWQ7XG59XG4vKipcbiAqIGB0YWdzYCBtb2RlIHNob3VsZCBmaWxsIHVuLWxpc3QgaXRlbSBpbnRvIHRoZSBvcHRpb24gbGlzdFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxsT3B0aW9uc1dpdGhNaXNzaW5nVmFsdWUob3B0aW9ucywgdmFsdWUsIG9wdGlvbkxhYmVsUHJvcCwgbGFiZWxJblZhbHVlKSB7XG4gIHZhciB2YWx1ZXMgPSB0b0FycmF5KHZhbHVlKS5zbGljZSgpLnNvcnQoKTtcblxuICB2YXIgY2xvbmVPcHRpb25zID0gX3RvQ29uc3VtYWJsZUFycmF5KG9wdGlvbnMpOyAvLyBDb252ZXJ0IG9wdGlvbnMgdmFsdWUgdG8gc2V0XG5cblxuICB2YXIgb3B0aW9uVmFsdWVzID0gbmV3IFNldCgpO1xuICBvcHRpb25zLmZvckVhY2goZnVuY3Rpb24gKG9wdCkge1xuICAgIGlmIChvcHQub3B0aW9ucykge1xuICAgICAgb3B0Lm9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoc3ViT3B0KSB7XG4gICAgICAgIG9wdGlvblZhbHVlcy5hZGQoc3ViT3B0LnZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25WYWx1ZXMuYWRkKG9wdC52YWx1ZSk7XG4gICAgfVxuICB9KTsgLy8gRmlsbCBtaXNzaW5nIHZhbHVlXG5cbiAgdmFsdWVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2YXIgdmFsID0gbGFiZWxJblZhbHVlID8gaXRlbS52YWx1ZSA6IGl0ZW07XG5cbiAgICBpZiAoIW9wdGlvblZhbHVlcy5oYXModmFsKSkge1xuICAgICAgdmFyIF9yZWY2O1xuXG4gICAgICBjbG9uZU9wdGlvbnMucHVzaChsYWJlbEluVmFsdWUgPyAoX3JlZjYgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9yZWY2LCBvcHRpb25MYWJlbFByb3AsIGl0ZW0ubGFiZWwpLCBfZGVmaW5lUHJvcGVydHkoX3JlZjYsIFwidmFsdWVcIiwgdmFsKSwgX3JlZjYpIDoge1xuICAgICAgICB2YWx1ZTogdmFsXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY2xvbmVPcHRpb25zO1xufSIsImltcG9ydCBhcnJheVdpdGhIb2xlcyBmcm9tIFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiO1xuaW1wb3J0IGl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi9pdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IG5vbkl0ZXJhYmxlUmVzdCBmcm9tIFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF90b0FycmF5KGFycikge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBpdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufSIsImltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRTdGF0ZVZhbHVlLCBvcHRpb24pIHtcbiAgdmFyIF9yZWYgPSBvcHRpb24gfHwge30sXG4gICAgICBkZWZhdWx0VmFsdWUgPSBfcmVmLmRlZmF1bHRWYWx1ZSxcbiAgICAgIHZhbHVlID0gX3JlZi52YWx1ZSxcbiAgICAgIG9uQ2hhbmdlID0gX3JlZi5vbkNoYW5nZSxcbiAgICAgIHBvc3RTdGF0ZSA9IF9yZWYucG9zdFN0YXRlO1xuXG4gIHZhciBfUmVhY3QkdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZShmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnZnVuY3Rpb24nID8gZGVmYXVsdFZhbHVlKCkgOiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVvZiBkZWZhdWx0U3RhdGVWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGRlZmF1bHRTdGF0ZVZhbHVlKCkgOiBkZWZhdWx0U3RhdGVWYWx1ZTtcbiAgfSksXG4gICAgICBfUmVhY3QkdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX1JlYWN0JHVzZVN0YXRlLCAyKSxcbiAgICAgIGlubmVyVmFsdWUgPSBfUmVhY3QkdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0SW5uZXJWYWx1ZSA9IF9SZWFjdCR1c2VTdGF0ZTJbMV07XG5cbiAgdmFyIG1lcmdlZFZhbHVlID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogaW5uZXJWYWx1ZTtcblxuICBpZiAocG9zdFN0YXRlKSB7XG4gICAgbWVyZ2VkVmFsdWUgPSBwb3N0U3RhdGUobWVyZ2VkVmFsdWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJpZ2dlckNoYW5nZShuZXdWYWx1ZSkge1xuICAgIHNldElubmVyVmFsdWUobmV3VmFsdWUpO1xuXG4gICAgaWYgKG1lcmdlZFZhbHVlICE9PSBuZXdWYWx1ZSAmJiBvbkNoYW5nZSkge1xuICAgICAgb25DaGFuZ2UobmV3VmFsdWUsIG1lcmdlZFZhbHVlKTtcbiAgICB9XG4gIH0gLy8gRWZmZWN0IG9mIHJlc2V0IHZhbHVlIHRvIGB1bmRlZmluZWRgXG5cblxuICB2YXIgZmlyc3RSZW5kZXJSZWYgPSBSZWFjdC51c2VSZWYodHJ1ZSk7XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGZpcnN0UmVuZGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGZpcnN0UmVuZGVyUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgc2V0SW5uZXJWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9LCBbdmFsdWVdKTtcbiAgcmV0dXJuIFttZXJnZWRWYWx1ZSwgdHJpZ2dlckNoYW5nZV07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcblxuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikge1xuICBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHtcbiAgICBhcnIyW2ldID0gYXJyW2ldO1xuICB9XG5cbiAgcmV0dXJuIGFycjI7XG59IiwiaW1wb3J0IGFycmF5V2l0aEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aEhvbGVzLmpzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5TGltaXQgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIjtcbmltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IG5vbkl0ZXJhYmxlUmVzdCBmcm9tIFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHtcbiAgdmFyIF9pID0gYXJyICYmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGFycltTeW1ib2wuaXRlcmF0b3JdIHx8IGFycltcIkBAaXRlcmF0b3JcIl0pO1xuXG4gIGlmIChfaSA9PSBudWxsKSByZXR1cm47XG4gIHZhciBfYXJyID0gW107XG4gIHZhciBfbiA9IHRydWU7XG4gIHZhciBfZCA9IGZhbHNlO1xuXG4gIHZhciBfcywgX2U7XG5cbiAgdHJ5IHtcbiAgICBmb3IgKF9pID0gX2kuY2FsbChhcnIpOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7XG4gICAgICBfYXJyLnB1c2goX3MudmFsdWUpO1xuXG4gICAgICBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBfZCA9IHRydWU7XG4gICAgX2UgPSBlcnI7XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKF9kKSB0aHJvdyBfZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gX2Fycjtcbn0iLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59IiwiaW1wb3J0IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpO1xuICB2YXIga2V5LCBpO1xuXG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTtcbiAgICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlO1xuICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0gc291cmNlS2V5c1tpXTtcbiAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSBpbiBvYmopIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufSIsImltcG9ydCBkZWZpbmVQcm9wZXJ0eSBmcm9tIFwiLi9kZWZpbmVQcm9wZXJ0eS5qc1wiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpO1xuXG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7XG5cbiAgICBpZiAoZW51bWVyYWJsZU9ubHkpIHtcbiAgICAgIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpO1xuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9vYmplY3RTcHJlYWQyKHRhcmdldCkge1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9O1xuXG4gICAgaWYgKGkgJSAyKSB7XG4gICAgICBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFJlc2l6ZU9ic2VydmVyIGZyb20gJ3JjLXJlc2l6ZS1vYnNlcnZlcic7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBJdGVtKHByb3BzKSB7XG4gIHZhciBwcmVmaXhDbHMgPSBwcm9wcy5wcmVmaXhDbHMsXG4gICAgICBpdGVtID0gcHJvcHMuaXRlbSxcbiAgICAgIHJlbmRlckl0ZW0gPSBwcm9wcy5yZW5kZXJJdGVtLFxuICAgICAgcmVzcG9uc2l2ZSA9IHByb3BzLnJlc3BvbnNpdmUsXG4gICAgICByZWdpc3RlclNpemUgPSBwcm9wcy5yZWdpc3RlclNpemUsXG4gICAgICBpdGVtS2V5ID0gcHJvcHMuaXRlbUtleSxcbiAgICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsXG4gICAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgZGlzcGxheSA9IHByb3BzLmRpc3BsYXksXG4gICAgICBvcmRlciA9IHByb3BzLm9yZGVyLFxuICAgICAgQ29tcG9uZW50ID0gcHJvcHMuY29tcG9uZW50LFxuICAgICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBbXCJwcmVmaXhDbHNcIiwgXCJpdGVtXCIsIFwicmVuZGVySXRlbVwiLCBcInJlc3BvbnNpdmVcIiwgXCJyZWdpc3RlclNpemVcIiwgXCJpdGVtS2V5XCIsIFwiY2xhc3NOYW1lXCIsIFwic3R5bGVcIiwgXCJjaGlsZHJlblwiLCBcImRpc3BsYXlcIiwgXCJvcmRlclwiLCBcImNvbXBvbmVudFwiXSk7XG5cbiAgdmFyIG1lcmdlZEhpZGRlbiA9IHJlc3BvbnNpdmUgJiYgIWRpc3BsYXk7IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEVmZmVjdCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGZ1bmN0aW9uIGludGVybmFsUmVnaXN0ZXJTaXplKHdpZHRoKSB7XG4gICAgcmVnaXN0ZXJTaXplKGl0ZW1LZXksIHdpZHRoKTtcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGludGVybmFsUmVnaXN0ZXJTaXplKG51bGwpO1xuICAgIH07XG4gIH0sIFtdKTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gUmVuZGVyID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIGNoaWxkTm9kZSA9IGl0ZW0gIT09IHVuZGVmaW5lZCA/IHJlbmRlckl0ZW0oaXRlbSkgOiBjaGlsZHJlbjtcbiAgdmFyIGl0ZW1Ob2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50LCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKHByZWZpeENscywgY2xhc3NOYW1lKSxcbiAgICBzdHlsZTogX29iamVjdFNwcmVhZCh7XG4gICAgICBvcGFjaXR5OiBtZXJnZWRIaWRkZW4gPyAwLjIgOiAxLFxuICAgICAgaGVpZ2h0OiBtZXJnZWRIaWRkZW4gPyAwIDogdW5kZWZpbmVkLFxuICAgICAgb3ZlcmZsb3dZOiBtZXJnZWRIaWRkZW4gPyAnaGlkZGVuJyA6IHVuZGVmaW5lZCxcbiAgICAgIG9yZGVyOiByZXNwb25zaXZlID8gb3JkZXIgOiB1bmRlZmluZWQsXG4gICAgICBwb2ludGVyRXZlbnRzOiBtZXJnZWRIaWRkZW4gPyAnbm9uZScgOiB1bmRlZmluZWRcbiAgICB9LCBzdHlsZSlcbiAgfSwgcmVzdFByb3BzKSwgY2hpbGROb2RlKTtcblxuICBpZiAocmVzcG9uc2l2ZSkge1xuICAgIGl0ZW1Ob2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVzaXplT2JzZXJ2ZXIsIHtcbiAgICAgIG9uUmVzaXplOiBmdW5jdGlvbiBvblJlc2l6ZShfcmVmKSB7XG4gICAgICAgIHZhciBvZmZzZXRXaWR0aCA9IF9yZWYub2Zmc2V0V2lkdGg7XG4gICAgICAgIGludGVybmFsUmVnaXN0ZXJTaXplKG9mZnNldFdpZHRoKTtcbiAgICAgIH1cbiAgICB9LCBpdGVtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gaXRlbU5vZGU7XG59IiwidmFyIHJhZiA9IGZ1bmN0aW9uIHJhZihjYWxsYmFjaykge1xuICByZXR1cm4gK3NldFRpbWVvdXQoY2FsbGJhY2ssIDE2KTtcbn07XG5cbnZhciBjYWYgPSBmdW5jdGlvbiBjYWYobnVtKSB7XG4gIHJldHVybiBjbGVhclRpbWVvdXQobnVtKTtcbn07XG5cbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAncmVxdWVzdEFuaW1hdGlvbkZyYW1lJyBpbiB3aW5kb3cpIHtcbiAgcmFmID0gZnVuY3Rpb24gcmFmKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2spO1xuICB9O1xuXG4gIGNhZiA9IGZ1bmN0aW9uIGNhZihoYW5kbGUpIHtcbiAgICByZXR1cm4gd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGhhbmRsZSk7XG4gIH07XG59XG5cbnZhciByYWZVVUlEID0gMDtcbnZhciByYWZJZHMgPSBuZXcgTWFwKCk7XG5cbmZ1bmN0aW9uIGNsZWFudXAoaWQpIHtcbiAgcmFmSWRzLmRlbGV0ZShpZCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdyYXBwZXJSYWYoY2FsbGJhY2spIHtcbiAgdmFyIHRpbWVzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAxO1xuICByYWZVVUlEICs9IDE7XG4gIHZhciBpZCA9IHJhZlVVSUQ7XG5cbiAgZnVuY3Rpb24gY2FsbFJlZihsZWZ0VGltZXMpIHtcbiAgICBpZiAobGVmdFRpbWVzID09PSAwKSB7XG4gICAgICAvLyBDbGVhbiB1cFxuICAgICAgY2xlYW51cChpZCk7IC8vIFRyaWdnZXJcblxuICAgICAgY2FsbGJhY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTmV4dCByYWZcbiAgICAgIHZhciByZWFsSWQgPSByYWYoZnVuY3Rpb24gKCkge1xuICAgICAgICBjYWxsUmVmKGxlZnRUaW1lcyAtIDEpO1xuICAgICAgfSk7IC8vIEJpbmQgcmVhbCByYWYgaWRcblxuICAgICAgcmFmSWRzLnNldChpZCwgcmVhbElkKTtcbiAgICB9XG4gIH1cblxuICBjYWxsUmVmKHRpbWVzKTtcbiAgcmV0dXJuIGlkO1xufVxuXG53cmFwcGVyUmFmLmNhbmNlbCA9IGZ1bmN0aW9uIChpZCkge1xuICB2YXIgcmVhbElkID0gcmFmSWRzLmdldChpZCk7XG4gIGNsZWFudXAocmVhbElkKTtcbiAgcmV0dXJuIGNhZihyZWFsSWQpO1xufTsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheVwiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VNZW1vLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFJlc2l6ZU9ic2VydmVyIGZyb20gJ3JjLXJlc2l6ZS1vYnNlcnZlcic7XG5pbXBvcnQgSXRlbSBmcm9tICcuL0l0ZW0nO1xuaW1wb3J0IHsgdXNlQmF0Y2hGcmFtZVN0YXRlIH0gZnJvbSAnLi9ob29rcy91c2VCYXRjaEZyYW1lU3RhdGUnO1xudmFyIFJFU1BPTlNJVkUgPSAncmVzcG9uc2l2ZSc7XG5cbmZ1bmN0aW9uIGRlZmF1bHRSZW5kZXJSZXN0KG9taXR0ZWRJdGVtcykge1xuICByZXR1cm4gXCIrIFwiLmNvbmNhdChvbWl0dGVkSXRlbXMubGVuZ3RoLCBcIiAuLi5cIik7XG59XG5cbmZ1bmN0aW9uIE92ZXJmbG93KHByb3BzLCByZWYpIHtcbiAgdmFyIF9wcm9wcyRwcmVmaXhDbHMgPSBwcm9wcy5wcmVmaXhDbHMsXG4gICAgICBwcmVmaXhDbHMgPSBfcHJvcHMkcHJlZml4Q2xzID09PSB2b2lkIDAgPyAncmMtb3ZlcmZsb3cnIDogX3Byb3BzJHByZWZpeENscyxcbiAgICAgIF9wcm9wcyRkYXRhID0gcHJvcHMuZGF0YSxcbiAgICAgIGRhdGEgPSBfcHJvcHMkZGF0YSA9PT0gdm9pZCAwID8gW10gOiBfcHJvcHMkZGF0YSxcbiAgICAgIHJlbmRlckl0ZW0gPSBwcm9wcy5yZW5kZXJJdGVtLFxuICAgICAgaXRlbUtleSA9IHByb3BzLml0ZW1LZXksXG4gICAgICBfcHJvcHMkaXRlbVdpZHRoID0gcHJvcHMuaXRlbVdpZHRoLFxuICAgICAgaXRlbVdpZHRoID0gX3Byb3BzJGl0ZW1XaWR0aCA9PT0gdm9pZCAwID8gMTAgOiBfcHJvcHMkaXRlbVdpZHRoLFxuICAgICAgc3R5bGUgPSBwcm9wcy5zdHlsZSxcbiAgICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIG1heENvdW50ID0gcHJvcHMubWF4Q291bnQsXG4gICAgICBfcHJvcHMkcmVuZGVyUmVzdCA9IHByb3BzLnJlbmRlclJlc3QsXG4gICAgICByZW5kZXJSZXN0ID0gX3Byb3BzJHJlbmRlclJlc3QgPT09IHZvaWQgMCA/IGRlZmF1bHRSZW5kZXJSZXN0IDogX3Byb3BzJHJlbmRlclJlc3QsXG4gICAgICByZW5kZXJJdGVtUHJvcHMgPSBwcm9wcy5yZW5kZXJJdGVtUHJvcHMsXG4gICAgICBzdWZmaXggPSBwcm9wcy5zdWZmaXgsXG4gICAgICBfcHJvcHMkY29tcG9uZW50ID0gcHJvcHMuY29tcG9uZW50LFxuICAgICAgQ29tcG9uZW50ID0gX3Byb3BzJGNvbXBvbmVudCA9PT0gdm9pZCAwID8gJ2RpdicgOiBfcHJvcHMkY29tcG9uZW50LFxuICAgICAgX3Byb3BzJGl0ZW1Db21wb25lbnQgPSBwcm9wcy5pdGVtQ29tcG9uZW50LFxuICAgICAgaXRlbUNvbXBvbmVudCA9IF9wcm9wcyRpdGVtQ29tcG9uZW50ID09PSB2b2lkIDAgPyAnZGl2JyA6IF9wcm9wcyRpdGVtQ29tcG9uZW50LFxuICAgICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBbXCJwcmVmaXhDbHNcIiwgXCJkYXRhXCIsIFwicmVuZGVySXRlbVwiLCBcIml0ZW1LZXlcIiwgXCJpdGVtV2lkdGhcIiwgXCJzdHlsZVwiLCBcImNsYXNzTmFtZVwiLCBcIm1heENvdW50XCIsIFwicmVuZGVyUmVzdFwiLCBcInJlbmRlckl0ZW1Qcm9wc1wiLCBcInN1ZmZpeFwiLCBcImNvbXBvbmVudFwiLCBcIml0ZW1Db21wb25lbnRcIl0pO1xuXG4gIHZhciBjcmVhdGVVc2VTdGF0ZSA9IHVzZUJhdGNoRnJhbWVTdGF0ZSgpO1xuXG4gIHZhciBfY3JlYXRlVXNlU3RhdGUgPSBjcmVhdGVVc2VTdGF0ZSgwKSxcbiAgICAgIF9jcmVhdGVVc2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfY3JlYXRlVXNlU3RhdGUsIDIpLFxuICAgICAgY29udGFpbmVyV2lkdGggPSBfY3JlYXRlVXNlU3RhdGUyWzBdLFxuICAgICAgc2V0Q29udGFpbmVyV2lkdGggPSBfY3JlYXRlVXNlU3RhdGUyWzFdO1xuXG4gIHZhciBfY3JlYXRlVXNlU3RhdGUzID0gY3JlYXRlVXNlU3RhdGUobmV3IE1hcCgpKSxcbiAgICAgIF9jcmVhdGVVc2VTdGF0ZTQgPSBfc2xpY2VkVG9BcnJheShfY3JlYXRlVXNlU3RhdGUzLCAyKSxcbiAgICAgIGl0ZW1XaWR0aHMgPSBfY3JlYXRlVXNlU3RhdGU0WzBdLFxuICAgICAgc2V0SXRlbVdpZHRocyA9IF9jcmVhdGVVc2VTdGF0ZTRbMV07XG5cbiAgdmFyIF9jcmVhdGVVc2VTdGF0ZTUgPSBjcmVhdGVVc2VTdGF0ZSgwKSxcbiAgICAgIF9jcmVhdGVVc2VTdGF0ZTYgPSBfc2xpY2VkVG9BcnJheShfY3JlYXRlVXNlU3RhdGU1LCAyKSxcbiAgICAgIHByZXZSZXN0V2lkdGggPSBfY3JlYXRlVXNlU3RhdGU2WzBdLFxuICAgICAgc2V0UHJldlJlc3RXaWR0aCA9IF9jcmVhdGVVc2VTdGF0ZTZbMV07XG5cbiAgdmFyIF9jcmVhdGVVc2VTdGF0ZTcgPSBjcmVhdGVVc2VTdGF0ZSgwKSxcbiAgICAgIF9jcmVhdGVVc2VTdGF0ZTggPSBfc2xpY2VkVG9BcnJheShfY3JlYXRlVXNlU3RhdGU3LCAyKSxcbiAgICAgIHJlc3RXaWR0aCA9IF9jcmVhdGVVc2VTdGF0ZThbMF0sXG4gICAgICBzZXRSZXN0V2lkdGggPSBfY3JlYXRlVXNlU3RhdGU4WzFdO1xuXG4gIHZhciBfY3JlYXRlVXNlU3RhdGU5ID0gY3JlYXRlVXNlU3RhdGUoMCksXG4gICAgICBfY3JlYXRlVXNlU3RhdGUxMCA9IF9zbGljZWRUb0FycmF5KF9jcmVhdGVVc2VTdGF0ZTksIDIpLFxuICAgICAgc3VmZml4V2lkdGggPSBfY3JlYXRlVXNlU3RhdGUxMFswXSxcbiAgICAgIHNldFN1ZmZpeFdpZHRoID0gX2NyZWF0ZVVzZVN0YXRlMTBbMV07XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKG51bGwpLFxuICAgICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgICBzdWZmaXhGaXhlZFN0YXJ0ID0gX3VzZVN0YXRlMlswXSxcbiAgICAgIHNldFN1ZmZpeEZpeGVkU3RhcnQgPSBfdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBfdXNlU3RhdGUzID0gdXNlU3RhdGUoMCksXG4gICAgICBfdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMywgMiksXG4gICAgICBkaXNwbGF5Q291bnQgPSBfdXNlU3RhdGU0WzBdLFxuICAgICAgc2V0RGlzcGxheUNvdW50ID0gX3VzZVN0YXRlNFsxXTtcblxuICB2YXIgX3VzZVN0YXRlNSA9IHVzZVN0YXRlKGZhbHNlKSxcbiAgICAgIF91c2VTdGF0ZTYgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU1LCAyKSxcbiAgICAgIHJlc3RSZWFkeSA9IF91c2VTdGF0ZTZbMF0sXG4gICAgICBzZXRSZXN0UmVhZHkgPSBfdXNlU3RhdGU2WzFdO1xuXG4gIHZhciBpdGVtUHJlZml4Q2xzID0gXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pdGVtXCIpOyAvLyBBbHdheXMgdXNlIHRoZSBtYXggd2lkdGggdG8gYXZvaWQgYmxpbmtcblxuICB2YXIgbWVyZ2VkUmVzdFdpZHRoID0gTWF0aC5tYXgocHJldlJlc3RXaWR0aCwgcmVzdFdpZHRoKTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IERhdGEgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIGlzUmVzcG9uc2l2ZSA9IGRhdGEubGVuZ3RoICYmIG1heENvdW50ID09PSBSRVNQT05TSVZFO1xuICAvKipcbiAgICogV2hlbiBpcyBgcmVzcG9uc2l2ZWAsIHdlIHdpbGwgYWx3YXlzIHJlbmRlciByZXN0IG5vZGUgdG8gZ2V0IHRoZSByZWFsIHdpZHRoIG9mIGl0IGZvciBjYWxjdWxhdGlvblxuICAgKi9cblxuICB2YXIgc2hvd1Jlc3QgPSBpc1Jlc3BvbnNpdmUgfHwgdHlwZW9mIG1heENvdW50ID09PSAnbnVtYmVyJyAmJiBkYXRhLmxlbmd0aCA+IG1heENvdW50O1xuICB2YXIgbWVyZ2VkRGF0YSA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBpdGVtcyA9IGRhdGE7XG5cbiAgICBpZiAoaXNSZXNwb25zaXZlKSB7XG4gICAgICBpdGVtcyA9IGRhdGEuc2xpY2UoMCwgTWF0aC5taW4oZGF0YS5sZW5ndGgsIGNvbnRhaW5lcldpZHRoIC8gaXRlbVdpZHRoKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbWF4Q291bnQgPT09ICdudW1iZXInKSB7XG4gICAgICBpdGVtcyA9IGRhdGEuc2xpY2UoMCwgbWF4Q291bnQpO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtcztcbiAgfSwgW2RhdGEsIGl0ZW1XaWR0aCwgY29udGFpbmVyV2lkdGgsIG1heENvdW50LCBpc1Jlc3BvbnNpdmVdKTtcbiAgdmFyIG9taXR0ZWRJdGVtcyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIGlmIChpc1Jlc3BvbnNpdmUpIHtcbiAgICAgIHJldHVybiBkYXRhLnNsaWNlKGRpc3BsYXlDb3VudCArIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhLnNsaWNlKG1lcmdlZERhdGEubGVuZ3RoKTtcbiAgfSwgW2RhdGEsIG1lcmdlZERhdGEsIGlzUmVzcG9uc2l2ZSwgZGlzcGxheUNvdW50XSk7IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBJdGVtID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBnZXRLZXkgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICB2YXIgX3JlZjtcblxuICAgIGlmICh0eXBlb2YgaXRlbUtleSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGl0ZW1LZXkoaXRlbSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChfcmVmID0gaXRlbUtleSAmJiAoaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpdGVtW2l0ZW1LZXldKSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IGluZGV4O1xuICB9LCBbaXRlbUtleV0pO1xuICB2YXIgbWVyZ2VkUmVuZGVySXRlbSA9IHVzZUNhbGxiYWNrKHJlbmRlckl0ZW0gfHwgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbTtcbiAgfSwgW3JlbmRlckl0ZW1dKTtcblxuICBmdW5jdGlvbiB1cGRhdGVEaXNwbGF5Q291bnQoY291bnQsIG5vdFJlYWR5KSB7XG4gICAgc2V0RGlzcGxheUNvdW50KGNvdW50KTtcblxuICAgIGlmICghbm90UmVhZHkpIHtcbiAgICAgIHNldFJlc3RSZWFkeShjb3VudCA8IGRhdGEubGVuZ3RoIC0gMSk7XG4gICAgfVxuICB9IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBTaXplID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbiAgZnVuY3Rpb24gb25PdmVyZmxvd1Jlc2l6ZShfLCBlbGVtZW50KSB7XG4gICAgc2V0Q29udGFpbmVyV2lkdGgoZWxlbWVudC5jbGllbnRXaWR0aCk7XG4gIH1cblxuICBmdW5jdGlvbiByZWdpc3RlclNpemUoa2V5LCB3aWR0aCkge1xuICAgIHNldEl0ZW1XaWR0aHMoZnVuY3Rpb24gKG9yaWdpbikge1xuICAgICAgdmFyIGNsb25lID0gbmV3IE1hcChvcmlnaW4pO1xuXG4gICAgICBpZiAod2lkdGggPT09IG51bGwpIHtcbiAgICAgICAgY2xvbmUuZGVsZXRlKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbG9uZS5zZXQoa2V5LCB3aWR0aCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjbG9uZTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlZ2lzdGVyT3ZlcmZsb3dTaXplKF8sIHdpZHRoKSB7XG4gICAgc2V0UmVzdFdpZHRoKHdpZHRoKTtcbiAgICBzZXRQcmV2UmVzdFdpZHRoKHJlc3RXaWR0aCk7XG4gIH1cblxuICBmdW5jdGlvbiByZWdpc3RlclN1ZmZpeFNpemUoXywgd2lkdGgpIHtcbiAgICBzZXRTdWZmaXhXaWR0aCh3aWR0aCk7XG4gIH0gLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRWZmZWN0ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuICBmdW5jdGlvbiBnZXRJdGVtV2lkdGgoaW5kZXgpIHtcbiAgICByZXR1cm4gaXRlbVdpZHRocy5nZXQoZ2V0S2V5KG1lcmdlZERhdGFbaW5kZXhdLCBpbmRleCkpO1xuICB9XG5cbiAgUmVhY3QudXNlTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoY29udGFpbmVyV2lkdGggJiYgbWVyZ2VkUmVzdFdpZHRoICYmIG1lcmdlZERhdGEpIHtcbiAgICAgIHZhciB0b3RhbFdpZHRoID0gc3VmZml4V2lkdGg7XG4gICAgICB2YXIgbGVuID0gbWVyZ2VkRGF0YS5sZW5ndGg7XG4gICAgICB2YXIgbGFzdEluZGV4ID0gbGVuIC0gMTsgLy8gV2hlbiBkYXRhIGNvdW50IGNoYW5nZSB0byAwLCByZXNldCB0aGlzIHNpbmNlIG5vdCBsb29wIHdpbGwgcmVhY2hcblxuICAgICAgaWYgKCFsZW4pIHtcbiAgICAgICAgdXBkYXRlRGlzcGxheUNvdW50KDApO1xuICAgICAgICBzZXRTdWZmaXhGaXhlZFN0YXJ0KG51bGwpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRJdGVtV2lkdGggPSBnZXRJdGVtV2lkdGgoaSk7IC8vIEJyZWFrIHNpbmNlIGRhdGEgbm90IHJlYWR5XG5cbiAgICAgICAgaWYgKGN1cnJlbnRJdGVtV2lkdGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHVwZGF0ZURpc3BsYXlDb3VudChpIC0gMSwgdHJ1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gLy8gRmluZCBiZXN0IG1hdGNoXG5cblxuICAgICAgICB0b3RhbFdpZHRoICs9IGN1cnJlbnRJdGVtV2lkdGg7XG5cbiAgICAgICAgaWYgKGkgPT09IGxhc3RJbmRleCAtIDEgJiYgdG90YWxXaWR0aCArIGdldEl0ZW1XaWR0aChsYXN0SW5kZXgpIDw9IGNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgLy8gQWRkaXRpb25hbCBjaGVjayBpZiBtYXRjaCB0aGUgZW5kXG4gICAgICAgICAgdXBkYXRlRGlzcGxheUNvdW50KGxhc3RJbmRleCk7XG4gICAgICAgICAgc2V0U3VmZml4Rml4ZWRTdGFydChudWxsKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIGlmICh0b3RhbFdpZHRoICsgbWVyZ2VkUmVzdFdpZHRoID4gY29udGFpbmVyV2lkdGgpIHtcbiAgICAgICAgICAvLyBDYW4gbm90IGhvbGQgYWxsIHRoZSBjb250ZW50IHRvIHNob3cgcmVzdFxuICAgICAgICAgIHVwZGF0ZURpc3BsYXlDb3VudChpIC0gMSk7XG4gICAgICAgICAgc2V0U3VmZml4Rml4ZWRTdGFydCh0b3RhbFdpZHRoIC0gY3VycmVudEl0ZW1XaWR0aCAtIHN1ZmZpeFdpZHRoICsgcmVzdFdpZHRoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIGlmIChpID09PSBsYXN0SW5kZXgpIHtcbiAgICAgICAgICAvLyBSZWFjaCB0aGUgZW5kXG4gICAgICAgICAgdXBkYXRlRGlzcGxheUNvdW50KGxhc3RJbmRleCk7XG4gICAgICAgICAgc2V0U3VmZml4Rml4ZWRTdGFydCh0b3RhbFdpZHRoIC0gc3VmZml4V2lkdGgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzdWZmaXggJiYgZ2V0SXRlbVdpZHRoKDApICsgc3VmZml4V2lkdGggPiBjb250YWluZXJXaWR0aCkge1xuICAgICAgICBzZXRTdWZmaXhGaXhlZFN0YXJ0KG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2NvbnRhaW5lcldpZHRoLCBpdGVtV2lkdGhzLCByZXN0V2lkdGgsIHN1ZmZpeFdpZHRoLCBnZXRLZXksIG1lcmdlZERhdGFdKTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gUmVuZGVyID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIGRpc3BsYXlSZXN0ID0gcmVzdFJlYWR5ICYmICEhb21pdHRlZEl0ZW1zLmxlbmd0aDtcbiAgdmFyIHN1ZmZpeFN0eWxlID0ge307XG5cbiAgaWYgKHN1ZmZpeEZpeGVkU3RhcnQgIT09IG51bGwgJiYgaXNSZXNwb25zaXZlKSB7XG4gICAgc3VmZml4U3R5bGUgPSB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGxlZnQ6IHN1ZmZpeEZpeGVkU3RhcnQsXG4gICAgICB0b3A6IDBcbiAgICB9O1xuICB9XG5cbiAgdmFyIGl0ZW1TaGFyZWRQcm9wcyA9IHtcbiAgICBwcmVmaXhDbHM6IGl0ZW1QcmVmaXhDbHMsXG4gICAgcmVzcG9uc2l2ZTogaXNSZXNwb25zaXZlLFxuICAgIGNvbXBvbmVudDogaXRlbUNvbXBvbmVudFxuICB9O1xuICB2YXIgb3ZlcmZsb3dOb2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50LCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKHByZWZpeENscywgY2xhc3NOYW1lKSxcbiAgICBzdHlsZTogc3R5bGUsXG4gICAgcmVmOiByZWZcbiAgfSwgcmVzdFByb3BzKSwgbWVyZ2VkRGF0YS5tYXAoZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG4gICAgdmFyIGtleSA9IGdldEtleShpdGVtLCBpbmRleCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEl0ZW0sIF9leHRlbmRzKHt9LCBpdGVtU2hhcmVkUHJvcHMsIHtcbiAgICAgIG9yZGVyOiBpbmRleCxcbiAgICAgIGtleToga2V5LFxuICAgICAgaXRlbTogaXRlbSxcbiAgICAgIHJlbmRlckl0ZW06IG1lcmdlZFJlbmRlckl0ZW0sXG4gICAgICBpdGVtS2V5OiBrZXksXG4gICAgICByZWdpc3RlclNpemU6IHJlZ2lzdGVyU2l6ZSxcbiAgICAgIGRpc3BsYXk6IGluZGV4IDw9IGRpc3BsYXlDb3VudFxuICAgIH0sIHJlbmRlckl0ZW1Qcm9wcyA9PT0gbnVsbCB8fCByZW5kZXJJdGVtUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlbmRlckl0ZW1Qcm9wcyhpdGVtKSkpO1xuICB9KSwgc2hvd1Jlc3QgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJdGVtLCBfZXh0ZW5kcyh7fSwgaXRlbVNoYXJlZFByb3BzLCB7XG4gICAgLy8gV2hlbiBub3Qgc2hvdywgb3JkZXIgc2hvdWxkIGJlIHRoZSBsYXN0XG4gICAgb3JkZXI6IGRpc3BsYXlSZXN0ID8gZGlzcGxheUNvdW50IDogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChpdGVtUHJlZml4Q2xzLCBcIi1yZXN0XCIpLFxuICAgIHJlZ2lzdGVyU2l6ZTogcmVnaXN0ZXJPdmVyZmxvd1NpemUsXG4gICAgZGlzcGxheTogZGlzcGxheVJlc3RcbiAgfSksIHR5cGVvZiByZW5kZXJSZXN0ID09PSAnZnVuY3Rpb24nID8gcmVuZGVyUmVzdChvbWl0dGVkSXRlbXMpIDogcmVuZGVyUmVzdCkgOiBudWxsLCBzdWZmaXggJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSXRlbSwgX2V4dGVuZHMoe30sIGl0ZW1TaGFyZWRQcm9wcywge1xuICAgIG9yZGVyOiBkaXNwbGF5Q291bnQsXG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChpdGVtUHJlZml4Q2xzLCBcIi1zdWZmaXhcIiksXG4gICAgcmVnaXN0ZXJTaXplOiByZWdpc3RlclN1ZmZpeFNpemUsXG4gICAgZGlzcGxheTogdHJ1ZSxcbiAgICBzdHlsZTogc3VmZml4U3R5bGVcbiAgfSksIHN1ZmZpeCkpO1xuXG4gIGlmIChpc1Jlc3BvbnNpdmUpIHtcbiAgICBvdmVyZmxvd05vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZXNpemVPYnNlcnZlciwge1xuICAgICAgb25SZXNpemU6IG9uT3ZlcmZsb3dSZXNpemVcbiAgICB9LCBvdmVyZmxvd05vZGUpO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93Tm9kZTtcbn1cblxudmFyIEZvcndhcmRPdmVyZmxvdyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKE92ZXJmbG93KTtcbkZvcndhcmRPdmVyZmxvdy5kaXNwbGF5TmFtZSA9ICdPdmVyZmxvdyc7IC8vIENvbnZlcnQgdG8gZ2VuZXJpYyB0eXBlXG5cbmV4cG9ydCBkZWZhdWx0IEZvcndhcmRPdmVyZmxvdzsiLCJpbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCB7IHVzZVJlZiwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCByYWYgZnJvbSBcInJjLXV0aWwvZXMvcmFmXCI7XG4vKipcbiAqIFN0YXRlIGdlbmVyYXRlLiBSZXR1cm4gYSBgc2V0U3RhdGVgIGJ1dCBpdCB3aWxsIGZsdXNoIGFsbCBzdGF0ZSB3aXRoIG9uZSByZW5kZXIgdG8gc2F2ZSBwZXJmLlxuICogVGhpcyBpcyBub3QgYSByZWFsaXphdGlvbiBvZiBgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXNgLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VCYXRjaEZyYW1lU3RhdGUoKSB7XG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZSh7fSksXG4gICAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICAgIGZvcmNlVXBkYXRlID0gX3VzZVN0YXRlMlsxXTtcblxuICB2YXIgc3RhdGVzUmVmID0gdXNlUmVmKFtdKTtcbiAgdmFyIGRlc3Ryb3lSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICB2YXIgd2Fsa2luZ0luZGV4ID0gMDtcbiAgdmFyIGJlZm9yZUZyYW1lSWQgPSAwO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBkZXN0cm95UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICBmdW5jdGlvbiBjcmVhdGVTdGF0ZShkZWZhdWx0VmFsdWUpIHtcbiAgICB2YXIgbXlJbmRleCA9IHdhbGtpbmdJbmRleDtcbiAgICB3YWxraW5nSW5kZXggKz0gMTsgLy8gRmlsbCB2YWx1ZSBpZiBub3QgZXhpc3QgeWV0XG5cbiAgICBpZiAoc3RhdGVzUmVmLmN1cnJlbnQubGVuZ3RoIDwgbXlJbmRleCArIDEpIHtcbiAgICAgIHN0YXRlc1JlZi5jdXJyZW50W215SW5kZXhdID0gZGVmYXVsdFZhbHVlO1xuICAgIH0gLy8gUmV0dXJuIGZpbGxlZCBhcyBgc2V0U3RhdGVgXG5cblxuICAgIHZhciB2YWx1ZSA9IHN0YXRlc1JlZi5jdXJyZW50W215SW5kZXhdO1xuXG4gICAgZnVuY3Rpb24gc2V0VmFsdWUodmFsKSB7XG4gICAgICBzdGF0ZXNSZWYuY3VycmVudFtteUluZGV4XSA9IHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicgPyB2YWwoc3RhdGVzUmVmLmN1cnJlbnRbbXlJbmRleF0pIDogdmFsO1xuICAgICAgcmFmLmNhbmNlbChiZWZvcmVGcmFtZUlkKTsgLy8gRmx1c2ggd2l0aCBiYXRjaFxuXG4gICAgICBiZWZvcmVGcmFtZUlkID0gcmFmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFkZXN0cm95UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBmb3JjZVVwZGF0ZSh7fSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBbdmFsdWUsIHNldFZhbHVlXTtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVTdGF0ZTtcbn0iLCJpbXBvcnQgT3ZlcmZsb3cgZnJvbSAnLi9PdmVyZmxvdyc7XG5leHBvcnQgZGVmYXVsdCBPdmVyZmxvdzsiLCJpbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBjb21wb3NlUmVmIH0gZnJvbSBcInJjLXV0aWwvZXMvcmVmXCI7XG5cbnZhciBJbnB1dCA9IGZ1bmN0aW9uIElucHV0KF9yZWYsIHJlZikge1xuICB2YXIgX2lucHV0Tm9kZTIsIF9pbnB1dE5vZGUyJHByb3BzO1xuXG4gIHZhciBwcmVmaXhDbHMgPSBfcmVmLnByZWZpeENscyxcbiAgICAgIGlkID0gX3JlZi5pZCxcbiAgICAgIGlucHV0RWxlbWVudCA9IF9yZWYuaW5wdXRFbGVtZW50LFxuICAgICAgZGlzYWJsZWQgPSBfcmVmLmRpc2FibGVkLFxuICAgICAgdGFiSW5kZXggPSBfcmVmLnRhYkluZGV4LFxuICAgICAgYXV0b0ZvY3VzID0gX3JlZi5hdXRvRm9jdXMsXG4gICAgICBhdXRvQ29tcGxldGUgPSBfcmVmLmF1dG9Db21wbGV0ZSxcbiAgICAgIGVkaXRhYmxlID0gX3JlZi5lZGl0YWJsZSxcbiAgICAgIGFjY2Vzc2liaWxpdHlJbmRleCA9IF9yZWYuYWNjZXNzaWJpbGl0eUluZGV4LFxuICAgICAgdmFsdWUgPSBfcmVmLnZhbHVlLFxuICAgICAgbWF4TGVuZ3RoID0gX3JlZi5tYXhMZW5ndGgsXG4gICAgICBfb25LZXlEb3duID0gX3JlZi5vbktleURvd24sXG4gICAgICBfb25Nb3VzZURvd24gPSBfcmVmLm9uTW91c2VEb3duLFxuICAgICAgX29uQ2hhbmdlID0gX3JlZi5vbkNoYW5nZSxcbiAgICAgIG9uUGFzdGUgPSBfcmVmLm9uUGFzdGUsXG4gICAgICBfb25Db21wb3NpdGlvblN0YXJ0ID0gX3JlZi5vbkNvbXBvc2l0aW9uU3RhcnQsXG4gICAgICBfb25Db21wb3NpdGlvbkVuZCA9IF9yZWYub25Db21wb3NpdGlvbkVuZCxcbiAgICAgIG9wZW4gPSBfcmVmLm9wZW4sXG4gICAgICBhdHRycyA9IF9yZWYuYXR0cnM7XG4gIHZhciBpbnB1dE5vZGUgPSBpbnB1dEVsZW1lbnQgfHwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCBudWxsKTtcbiAgdmFyIF9pbnB1dE5vZGUgPSBpbnB1dE5vZGUsXG4gICAgICBvcmlnaW5SZWYgPSBfaW5wdXROb2RlLnJlZixcbiAgICAgIF9pbnB1dE5vZGUkcHJvcHMgPSBfaW5wdXROb2RlLnByb3BzLFxuICAgICAgb25PcmlnaW5LZXlEb3duID0gX2lucHV0Tm9kZSRwcm9wcy5vbktleURvd24sXG4gICAgICBvbk9yaWdpbkNoYW5nZSA9IF9pbnB1dE5vZGUkcHJvcHMub25DaGFuZ2UsXG4gICAgICBvbk9yaWdpbk1vdXNlRG93biA9IF9pbnB1dE5vZGUkcHJvcHMub25Nb3VzZURvd24sXG4gICAgICBvbk9yaWdpbkNvbXBvc2l0aW9uU3RhcnQgPSBfaW5wdXROb2RlJHByb3BzLm9uQ29tcG9zaXRpb25TdGFydCxcbiAgICAgIG9uT3JpZ2luQ29tcG9zaXRpb25FbmQgPSBfaW5wdXROb2RlJHByb3BzLm9uQ29tcG9zaXRpb25FbmQsXG4gICAgICBzdHlsZSA9IF9pbnB1dE5vZGUkcHJvcHMuc3R5bGU7XG4gIGlucHV0Tm9kZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoaW5wdXROb2RlLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgIGlkOiBpZCxcbiAgICByZWY6IGNvbXBvc2VSZWYocmVmLCBvcmlnaW5SZWYpLFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICB0YWJJbmRleDogdGFiSW5kZXgsXG4gICAgYXV0b0NvbXBsZXRlOiBhdXRvQ29tcGxldGUgfHwgJ29mZicsXG4gICAgdHlwZTogJ3NlYXJjaCcsXG4gICAgYXV0b0ZvY3VzOiBhdXRvRm9jdXMsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc2VsZWN0aW9uLXNlYXJjaC1pbnB1dFwiKSwgKF9pbnB1dE5vZGUyID0gaW5wdXROb2RlKSA9PT0gbnVsbCB8fCBfaW5wdXROb2RlMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9pbnB1dE5vZGUyJHByb3BzID0gX2lucHV0Tm9kZTIucHJvcHMpID09PSBudWxsIHx8IF9pbnB1dE5vZGUyJHByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaW5wdXROb2RlMiRwcm9wcy5jbGFzc05hbWUpLFxuICAgIHN0eWxlOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHN0eWxlKSwge30sIHtcbiAgICAgIG9wYWNpdHk6IGVkaXRhYmxlID8gbnVsbCA6IDBcbiAgICB9KSxcbiAgICByb2xlOiAnY29tYm9ib3gnLFxuICAgICdhcmlhLWV4cGFuZGVkJzogb3BlbixcbiAgICAnYXJpYS1oYXNwb3B1cCc6ICdsaXN0Ym94JyxcbiAgICAnYXJpYS1vd25zJzogXCJcIi5jb25jYXQoaWQsIFwiX2xpc3RcIiksXG4gICAgJ2FyaWEtYXV0b2NvbXBsZXRlJzogJ2xpc3QnLFxuICAgICdhcmlhLWNvbnRyb2xzJzogXCJcIi5jb25jYXQoaWQsIFwiX2xpc3RcIiksXG4gICAgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc6IFwiXCIuY29uY2F0KGlkLCBcIl9saXN0X1wiKS5jb25jYXQoYWNjZXNzaWJpbGl0eUluZGV4KVxuICB9LCBhdHRycyksIHt9LCB7XG4gICAgdmFsdWU6IGVkaXRhYmxlID8gdmFsdWUgOiAnJyxcbiAgICBtYXhMZW5ndGg6IG1heExlbmd0aCxcbiAgICByZWFkT25seTogIWVkaXRhYmxlLFxuICAgIHVuc2VsZWN0YWJsZTogIWVkaXRhYmxlID8gJ29uJyA6IG51bGwsXG4gICAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZXZlbnQpIHtcbiAgICAgIF9vbktleURvd24oZXZlbnQpO1xuXG4gICAgICBpZiAob25PcmlnaW5LZXlEb3duKSB7XG4gICAgICAgIG9uT3JpZ2luS2V5RG93bihldmVudCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbk1vdXNlRG93bjogZnVuY3Rpb24gb25Nb3VzZURvd24oZXZlbnQpIHtcbiAgICAgIF9vbk1vdXNlRG93bihldmVudCk7XG5cbiAgICAgIGlmIChvbk9yaWdpbk1vdXNlRG93bikge1xuICAgICAgICBvbk9yaWdpbk1vdXNlRG93bihldmVudCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoZXZlbnQpIHtcbiAgICAgIF9vbkNoYW5nZShldmVudCk7XG5cbiAgICAgIGlmIChvbk9yaWdpbkNoYW5nZSkge1xuICAgICAgICBvbk9yaWdpbkNoYW5nZShldmVudCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbkNvbXBvc2l0aW9uU3RhcnQ6IGZ1bmN0aW9uIG9uQ29tcG9zaXRpb25TdGFydChldmVudCkge1xuICAgICAgX29uQ29tcG9zaXRpb25TdGFydChldmVudCk7XG5cbiAgICAgIGlmIChvbk9yaWdpbkNvbXBvc2l0aW9uU3RhcnQpIHtcbiAgICAgICAgb25PcmlnaW5Db21wb3NpdGlvblN0YXJ0KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uQ29tcG9zaXRpb25FbmQ6IGZ1bmN0aW9uIG9uQ29tcG9zaXRpb25FbmQoZXZlbnQpIHtcbiAgICAgIF9vbkNvbXBvc2l0aW9uRW5kKGV2ZW50KTtcblxuICAgICAgaWYgKG9uT3JpZ2luQ29tcG9zaXRpb25FbmQpIHtcbiAgICAgICAgb25PcmlnaW5Db21wb3NpdGlvbkVuZChldmVudCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvblBhc3RlOiBvblBhc3RlXG4gIH0pKTtcbiAgcmV0dXJuIGlucHV0Tm9kZTtcbn07XG5cbnZhciBSZWZJbnB1dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKElucHV0KTtcblJlZklucHV0LmRpc3BsYXlOYW1lID0gJ0lucHV0JztcbmV4cG9ydCBkZWZhdWx0IFJlZklucHV0OyIsIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzICovXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpc0Jyb3dzZXJDbGllbnQgfSBmcm9tICcuLi91dGlscy9jb21tb25VdGlsJztcbi8qKlxuICogV3JhcCBgUmVhY3QudXNlTGF5b3V0RWZmZWN0YCB3aGljaCB3aWxsIG5vdCB0aHJvdyB3YXJuaW5nIG1lc3NhZ2UgaW4gdGVzdCBlbnZcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VMYXlvdXRFZmZlY3QoZWZmZWN0LCBkZXBzKSB7XG4gIC8vIE5ldmVyIGhhcHBlbiBpbiB0ZXN0IGVudlxuICBpZiAoaXNCcm93c2VyQ2xpZW50KSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBSZWFjdC51c2VMYXlvdXRFZmZlY3QoZWZmZWN0LCBkZXBzKTtcbiAgfSBlbHNlIHtcbiAgICBSZWFjdC51c2VFZmZlY3QoZWZmZWN0LCBkZXBzKTtcbiAgfVxufVxuLyogZXNsaW50LWVuYWJsZSAqLyIsImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgcGlja0F0dHJzIGZyb20gXCJyYy11dGlsL2VzL3BpY2tBdHRyc1wiO1xuaW1wb3J0IE92ZXJmbG93IGZyb20gJ3JjLW92ZXJmbG93JztcbmltcG9ydCBUcmFuc0J0biBmcm9tICcuLi9UcmFuc0J0bic7XG5pbXBvcnQgSW5wdXQgZnJvbSAnLi9JbnB1dCc7XG5pbXBvcnQgdXNlTGF5b3V0RWZmZWN0IGZyb20gJy4uL2hvb2tzL3VzZUxheW91dEVmZmVjdCc7XG5cbnZhciBvblByZXZlbnRNb3VzZURvd24gPSBmdW5jdGlvbiBvblByZXZlbnRNb3VzZURvd24oZXZlbnQpIHtcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG59O1xuXG52YXIgU2VsZWN0U2VsZWN0b3IgPSBmdW5jdGlvbiBTZWxlY3RTZWxlY3Rvcihwcm9wcykge1xuICB2YXIgaWQgPSBwcm9wcy5pZCxcbiAgICAgIHByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgIHZhbHVlcyA9IHByb3BzLnZhbHVlcyxcbiAgICAgIG9wZW4gPSBwcm9wcy5vcGVuLFxuICAgICAgc2VhcmNoVmFsdWUgPSBwcm9wcy5zZWFyY2hWYWx1ZSxcbiAgICAgIGlucHV0UmVmID0gcHJvcHMuaW5wdXRSZWYsXG4gICAgICBwbGFjZWhvbGRlciA9IHByb3BzLnBsYWNlaG9sZGVyLFxuICAgICAgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZCxcbiAgICAgIG1vZGUgPSBwcm9wcy5tb2RlLFxuICAgICAgc2hvd1NlYXJjaCA9IHByb3BzLnNob3dTZWFyY2gsXG4gICAgICBhdXRvRm9jdXMgPSBwcm9wcy5hdXRvRm9jdXMsXG4gICAgICBhdXRvQ29tcGxldGUgPSBwcm9wcy5hdXRvQ29tcGxldGUsXG4gICAgICBhY2Nlc3NpYmlsaXR5SW5kZXggPSBwcm9wcy5hY2Nlc3NpYmlsaXR5SW5kZXgsXG4gICAgICB0YWJJbmRleCA9IHByb3BzLnRhYkluZGV4LFxuICAgICAgcmVtb3ZlSWNvbiA9IHByb3BzLnJlbW92ZUljb24sXG4gICAgICBtYXhUYWdDb3VudCA9IHByb3BzLm1heFRhZ0NvdW50LFxuICAgICAgbWF4VGFnVGV4dExlbmd0aCA9IHByb3BzLm1heFRhZ1RleHRMZW5ndGgsXG4gICAgICBfcHJvcHMkbWF4VGFnUGxhY2Vob2wgPSBwcm9wcy5tYXhUYWdQbGFjZWhvbGRlcixcbiAgICAgIG1heFRhZ1BsYWNlaG9sZGVyID0gX3Byb3BzJG1heFRhZ1BsYWNlaG9sID09PSB2b2lkIDAgPyBmdW5jdGlvbiAob21pdHRlZFZhbHVlcykge1xuICAgIHJldHVybiBcIisgXCIuY29uY2F0KG9taXR0ZWRWYWx1ZXMubGVuZ3RoLCBcIiAuLi5cIik7XG4gIH0gOiBfcHJvcHMkbWF4VGFnUGxhY2Vob2wsXG4gICAgICB0YWdSZW5kZXIgPSBwcm9wcy50YWdSZW5kZXIsXG4gICAgICBvblRvZ2dsZU9wZW4gPSBwcm9wcy5vblRvZ2dsZU9wZW4sXG4gICAgICBvblNlbGVjdCA9IHByb3BzLm9uU2VsZWN0LFxuICAgICAgb25JbnB1dENoYW5nZSA9IHByb3BzLm9uSW5wdXRDaGFuZ2UsXG4gICAgICBvbklucHV0UGFzdGUgPSBwcm9wcy5vbklucHV0UGFzdGUsXG4gICAgICBvbklucHV0S2V5RG93biA9IHByb3BzLm9uSW5wdXRLZXlEb3duLFxuICAgICAgb25JbnB1dE1vdXNlRG93biA9IHByb3BzLm9uSW5wdXRNb3VzZURvd24sXG4gICAgICBvbklucHV0Q29tcG9zaXRpb25TdGFydCA9IHByb3BzLm9uSW5wdXRDb21wb3NpdGlvblN0YXJ0LFxuICAgICAgb25JbnB1dENvbXBvc2l0aW9uRW5kID0gcHJvcHMub25JbnB1dENvbXBvc2l0aW9uRW5kO1xuICB2YXIgbWVhc3VyZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcblxuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoMCksXG4gICAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICAgIGlucHV0V2lkdGggPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0SW5wdXRXaWR0aCA9IF91c2VTdGF0ZTJbMV07XG5cbiAgdmFyIF91c2VTdGF0ZTMgPSB1c2VTdGF0ZShmYWxzZSksXG4gICAgICBfdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMywgMiksXG4gICAgICBmb2N1c2VkID0gX3VzZVN0YXRlNFswXSxcbiAgICAgIHNldEZvY3VzZWQgPSBfdXNlU3RhdGU0WzFdO1xuXG4gIHZhciBzZWxlY3Rpb25QcmVmaXhDbHMgPSBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXNlbGVjdGlvblwiKTsgLy8gPT09PT09PT09PT09PT09PT09PT09IFNlYXJjaCA9PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIGlucHV0VmFsdWUgPSBvcGVuIHx8IG1vZGUgPT09ICd0YWdzJyA/IHNlYXJjaFZhbHVlIDogJyc7XG4gIHZhciBpbnB1dEVkaXRhYmxlID0gbW9kZSA9PT0gJ3RhZ3MnIHx8IHNob3dTZWFyY2ggJiYgKG9wZW4gfHwgZm9jdXNlZCk7IC8vIFdlIG1lYXN1cmUgd2lkdGggYW5kIHNldCB0byB0aGUgaW5wdXQgaW1tZWRpYXRlbHlcblxuICB1c2VMYXlvdXRFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHNldElucHV0V2lkdGgobWVhc3VyZVJlZi5jdXJyZW50LnNjcm9sbFdpZHRoKTtcbiAgfSwgW2lucHV0VmFsdWVdKTsgLy8gPT09PT09PT09PT09PT09PT09PT09IFJlbmRlciA9PT09PT09PT09PT09PT09PT09PT09XG4gIC8vID4+PiBSZW5kZXIgU2VsZWN0b3IgTm9kZS4gSW5jbHVkZXMgSXRlbSAmIFJlc3RcblxuICBmdW5jdGlvbiBkZWZhdWx0UmVuZGVyU2VsZWN0b3IoY29udGVudCwgaXRlbURpc2FibGVkLCBjbG9zYWJsZSwgb25DbG9zZSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKFwiXCIuY29uY2F0KHNlbGVjdGlvblByZWZpeENscywgXCItaXRlbVwiKSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChzZWxlY3Rpb25QcmVmaXhDbHMsIFwiLWl0ZW0tZGlzYWJsZWRcIiksIGl0ZW1EaXNhYmxlZCkpXG4gICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQoc2VsZWN0aW9uUHJlZml4Q2xzLCBcIi1pdGVtLWNvbnRlbnRcIilcbiAgICB9LCBjb250ZW50KSwgY2xvc2FibGUgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNCdG4sIHtcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQoc2VsZWN0aW9uUHJlZml4Q2xzLCBcIi1pdGVtLXJlbW92ZVwiKSxcbiAgICAgIG9uTW91c2VEb3duOiBvblByZXZlbnRNb3VzZURvd24sXG4gICAgICBvbkNsaWNrOiBvbkNsb3NlLFxuICAgICAgY3VzdG9taXplSWNvbjogcmVtb3ZlSWNvblxuICAgIH0sIFwiXFx4RDdcIikpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3VzdG9taXplUmVuZGVyU2VsZWN0b3IodmFsdWUsIGNvbnRlbnQsIGl0ZW1EaXNhYmxlZCwgY2xvc2FibGUsIG9uQ2xvc2UpIHtcbiAgICB2YXIgb25Nb3VzZURvd24gPSBmdW5jdGlvbiBvbk1vdXNlRG93bihlKSB7XG4gICAgICBvblByZXZlbnRNb3VzZURvd24oZSk7XG4gICAgICBvblRvZ2dsZU9wZW4oIW9wZW4pO1xuICAgIH07XG5cbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgIG9uTW91c2VEb3duOiBvbk1vdXNlRG93blxuICAgIH0sIHRhZ1JlbmRlcih7XG4gICAgICBsYWJlbDogY29udGVudCxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGRpc2FibGVkOiBpdGVtRGlzYWJsZWQsXG4gICAgICBjbG9zYWJsZTogY2xvc2FibGUsXG4gICAgICBvbkNsb3NlOiBvbkNsb3NlXG4gICAgfSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVuZGVySXRlbShfcmVmKSB7XG4gICAgdmFyIGl0ZW1EaXNhYmxlZCA9IF9yZWYuZGlzYWJsZWQsXG4gICAgICAgIGxhYmVsID0gX3JlZi5sYWJlbCxcbiAgICAgICAgdmFsdWUgPSBfcmVmLnZhbHVlO1xuICAgIHZhciBjbG9zYWJsZSA9ICFkaXNhYmxlZCAmJiAhaXRlbURpc2FibGVkO1xuICAgIHZhciBkaXNwbGF5TGFiZWwgPSBsYWJlbDtcblxuICAgIGlmICh0eXBlb2YgbWF4VGFnVGV4dExlbmd0aCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGlmICh0eXBlb2YgbGFiZWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBsYWJlbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgdmFyIHN0ckxhYmVsID0gU3RyaW5nKGRpc3BsYXlMYWJlbCk7XG5cbiAgICAgICAgaWYgKHN0ckxhYmVsLmxlbmd0aCA+IG1heFRhZ1RleHRMZW5ndGgpIHtcbiAgICAgICAgICBkaXNwbGF5TGFiZWwgPSBcIlwiLmNvbmNhdChzdHJMYWJlbC5zbGljZSgwLCBtYXhUYWdUZXh0TGVuZ3RoKSwgXCIuLi5cIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgb25DbG9zZSA9IGZ1bmN0aW9uIG9uQ2xvc2UoZXZlbnQpIHtcbiAgICAgIGlmIChldmVudCkgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBvblNlbGVjdCh2YWx1ZSwge1xuICAgICAgICBzZWxlY3RlZDogZmFsc2VcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZXR1cm4gdHlwZW9mIHRhZ1JlbmRlciA9PT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZVJlbmRlclNlbGVjdG9yKHZhbHVlLCBkaXNwbGF5TGFiZWwsIGl0ZW1EaXNhYmxlZCwgY2xvc2FibGUsIG9uQ2xvc2UpIDogZGVmYXVsdFJlbmRlclNlbGVjdG9yKGRpc3BsYXlMYWJlbCwgaXRlbURpc2FibGVkLCBjbG9zYWJsZSwgb25DbG9zZSk7XG4gIH1cblxuICBmdW5jdGlvbiByZW5kZXJSZXN0KG9taXR0ZWRWYWx1ZXMpIHtcbiAgICB2YXIgY29udGVudCA9IHR5cGVvZiBtYXhUYWdQbGFjZWhvbGRlciA9PT0gJ2Z1bmN0aW9uJyA/IG1heFRhZ1BsYWNlaG9sZGVyKG9taXR0ZWRWYWx1ZXMpIDogbWF4VGFnUGxhY2Vob2xkZXI7XG4gICAgcmV0dXJuIGRlZmF1bHRSZW5kZXJTZWxlY3Rvcihjb250ZW50LCBmYWxzZSk7XG4gIH0gLy8gPj4+IElucHV0IE5vZGVcblxuXG4gIHZhciBpbnB1dE5vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChzZWxlY3Rpb25QcmVmaXhDbHMsIFwiLXNlYXJjaFwiKSxcbiAgICBzdHlsZToge1xuICAgICAgd2lkdGg6IGlucHV0V2lkdGhcbiAgICB9LFxuICAgIG9uRm9jdXM6IGZ1bmN0aW9uIG9uRm9jdXMoKSB7XG4gICAgICBzZXRGb2N1c2VkKHRydWUpO1xuICAgIH0sXG4gICAgb25CbHVyOiBmdW5jdGlvbiBvbkJsdXIoKSB7XG4gICAgICBzZXRGb2N1c2VkKGZhbHNlKTtcbiAgICB9XG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KElucHV0LCB7XG4gICAgcmVmOiBpbnB1dFJlZixcbiAgICBvcGVuOiBvcGVuLFxuICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgIGlkOiBpZCxcbiAgICBpbnB1dEVsZW1lbnQ6IG51bGwsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgIGF1dG9Gb2N1czogYXV0b0ZvY3VzLFxuICAgIGF1dG9Db21wbGV0ZTogYXV0b0NvbXBsZXRlLFxuICAgIGVkaXRhYmxlOiBpbnB1dEVkaXRhYmxlLFxuICAgIGFjY2Vzc2liaWxpdHlJbmRleDogYWNjZXNzaWJpbGl0eUluZGV4LFxuICAgIHZhbHVlOiBpbnB1dFZhbHVlLFxuICAgIG9uS2V5RG93bjogb25JbnB1dEtleURvd24sXG4gICAgb25Nb3VzZURvd246IG9uSW5wdXRNb3VzZURvd24sXG4gICAgb25DaGFuZ2U6IG9uSW5wdXRDaGFuZ2UsXG4gICAgb25QYXN0ZTogb25JbnB1dFBhc3RlLFxuICAgIG9uQ29tcG9zaXRpb25TdGFydDogb25JbnB1dENvbXBvc2l0aW9uU3RhcnQsXG4gICAgb25Db21wb3NpdGlvbkVuZDogb25JbnB1dENvbXBvc2l0aW9uRW5kLFxuICAgIHRhYkluZGV4OiB0YWJJbmRleCxcbiAgICBhdHRyczogcGlja0F0dHJzKHByb3BzLCB0cnVlKVxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICByZWY6IG1lYXN1cmVSZWYsXG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChzZWxlY3Rpb25QcmVmaXhDbHMsIFwiLXNlYXJjaC1taXJyb3JcIiksXG4gICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlXG4gIH0sIGlucHV0VmFsdWUsIFwiXFx4QTBcIikpOyAvLyA+Pj4gU2VsZWN0aW9uc1xuXG4gIHZhciBzZWxlY3Rpb25Ob2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoT3ZlcmZsb3csIHtcbiAgICBwcmVmaXhDbHM6IFwiXCIuY29uY2F0KHNlbGVjdGlvblByZWZpeENscywgXCItb3ZlcmZsb3dcIiksXG4gICAgZGF0YTogdmFsdWVzLFxuICAgIHJlbmRlckl0ZW06IHJlbmRlckl0ZW0sXG4gICAgcmVuZGVyUmVzdDogcmVuZGVyUmVzdCxcbiAgICBzdWZmaXg6IGlucHV0Tm9kZSxcbiAgICBpdGVtS2V5OiBcImtleVwiLFxuICAgIG1heENvdW50OiBtYXhUYWdDb3VudFxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBzZWxlY3Rpb25Ob2RlLCAhdmFsdWVzLmxlbmd0aCAmJiAhaW5wdXRWYWx1ZSAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQoc2VsZWN0aW9uUHJlZml4Q2xzLCBcIi1wbGFjZWhvbGRlclwiKVxuICB9LCBwbGFjZWhvbGRlcikpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VsZWN0U2VsZWN0b3I7IiwiaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgcGlja0F0dHJzIGZyb20gXCJyYy11dGlsL2VzL3BpY2tBdHRyc1wiO1xuaW1wb3J0IElucHV0IGZyb20gJy4vSW5wdXQnO1xuXG52YXIgU2luZ2xlU2VsZWN0b3IgPSBmdW5jdGlvbiBTaW5nbGVTZWxlY3Rvcihwcm9wcykge1xuICB2YXIgaW5wdXRFbGVtZW50ID0gcHJvcHMuaW5wdXRFbGVtZW50LFxuICAgICAgcHJlZml4Q2xzID0gcHJvcHMucHJlZml4Q2xzLFxuICAgICAgaWQgPSBwcm9wcy5pZCxcbiAgICAgIGlucHV0UmVmID0gcHJvcHMuaW5wdXRSZWYsXG4gICAgICBkaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkLFxuICAgICAgYXV0b0ZvY3VzID0gcHJvcHMuYXV0b0ZvY3VzLFxuICAgICAgYXV0b0NvbXBsZXRlID0gcHJvcHMuYXV0b0NvbXBsZXRlLFxuICAgICAgYWNjZXNzaWJpbGl0eUluZGV4ID0gcHJvcHMuYWNjZXNzaWJpbGl0eUluZGV4LFxuICAgICAgbW9kZSA9IHByb3BzLm1vZGUsXG4gICAgICBvcGVuID0gcHJvcHMub3BlbixcbiAgICAgIHZhbHVlcyA9IHByb3BzLnZhbHVlcyxcbiAgICAgIHBsYWNlaG9sZGVyID0gcHJvcHMucGxhY2Vob2xkZXIsXG4gICAgICB0YWJJbmRleCA9IHByb3BzLnRhYkluZGV4LFxuICAgICAgc2hvd1NlYXJjaCA9IHByb3BzLnNob3dTZWFyY2gsXG4gICAgICBzZWFyY2hWYWx1ZSA9IHByb3BzLnNlYXJjaFZhbHVlLFxuICAgICAgYWN0aXZlVmFsdWUgPSBwcm9wcy5hY3RpdmVWYWx1ZSxcbiAgICAgIG1heExlbmd0aCA9IHByb3BzLm1heExlbmd0aCxcbiAgICAgIG9uSW5wdXRLZXlEb3duID0gcHJvcHMub25JbnB1dEtleURvd24sXG4gICAgICBvbklucHV0TW91c2VEb3duID0gcHJvcHMub25JbnB1dE1vdXNlRG93bixcbiAgICAgIG9uSW5wdXRDaGFuZ2UgPSBwcm9wcy5vbklucHV0Q2hhbmdlLFxuICAgICAgb25JbnB1dFBhc3RlID0gcHJvcHMub25JbnB1dFBhc3RlLFxuICAgICAgb25JbnB1dENvbXBvc2l0aW9uU3RhcnQgPSBwcm9wcy5vbklucHV0Q29tcG9zaXRpb25TdGFydCxcbiAgICAgIG9uSW5wdXRDb21wb3NpdGlvbkVuZCA9IHByb3BzLm9uSW5wdXRDb21wb3NpdGlvbkVuZDtcblxuICB2YXIgX1JlYWN0JHVzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLFxuICAgICAgX1JlYWN0JHVzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF9SZWFjdCR1c2VTdGF0ZSwgMiksXG4gICAgICBpbnB1dENoYW5nZWQgPSBfUmVhY3QkdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0SW5wdXRDaGFuZ2VkID0gX1JlYWN0JHVzZVN0YXRlMlsxXTtcblxuICB2YXIgY29tYm9ib3ggPSBtb2RlID09PSAnY29tYm9ib3gnO1xuICB2YXIgaW5wdXRFZGl0YWJsZSA9IGNvbWJvYm94IHx8IHNob3dTZWFyY2g7XG4gIHZhciBpdGVtID0gdmFsdWVzWzBdO1xuICB2YXIgaW5wdXRWYWx1ZSA9IHNlYXJjaFZhbHVlIHx8ICcnO1xuXG4gIGlmIChjb21ib2JveCAmJiBhY3RpdmVWYWx1ZSAmJiAhaW5wdXRDaGFuZ2VkKSB7XG4gICAgaW5wdXRWYWx1ZSA9IGFjdGl2ZVZhbHVlO1xuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoY29tYm9ib3gpIHtcbiAgICAgIHNldElucHV0Q2hhbmdlZChmYWxzZSk7XG4gICAgfVxuICB9LCBbY29tYm9ib3gsIGFjdGl2ZVZhbHVlXSk7IC8vIE5vdCBzaG93IHRleHQgd2hlbiBjbG9zZWQgZXhwZWN0IGNvbWJvYm94IG1vZGVcblxuICB2YXIgaGFzVGV4dElucHV0ID0gbW9kZSAhPT0gJ2NvbWJvYm94JyAmJiAhb3BlbiA/IGZhbHNlIDogISFpbnB1dFZhbHVlO1xuICB2YXIgdGl0bGUgPSBpdGVtICYmICh0eXBlb2YgaXRlbS5sYWJlbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGl0ZW0ubGFiZWwgPT09ICdudW1iZXInKSA/IGl0ZW0ubGFiZWwudG9TdHJpbmcoKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zZWxlY3Rpb24tc2VhcmNoXCIpXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KElucHV0LCB7XG4gICAgcmVmOiBpbnB1dFJlZixcbiAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICBpZDogaWQsXG4gICAgb3Blbjogb3BlbixcbiAgICBpbnB1dEVsZW1lbnQ6IGlucHV0RWxlbWVudCxcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgYXV0b0ZvY3VzOiBhdXRvRm9jdXMsXG4gICAgYXV0b0NvbXBsZXRlOiBhdXRvQ29tcGxldGUsXG4gICAgZWRpdGFibGU6IGlucHV0RWRpdGFibGUsXG4gICAgYWNjZXNzaWJpbGl0eUluZGV4OiBhY2Nlc3NpYmlsaXR5SW5kZXgsXG4gICAgdmFsdWU6IGlucHV0VmFsdWUsXG4gICAgb25LZXlEb3duOiBvbklucHV0S2V5RG93bixcbiAgICBvbk1vdXNlRG93bjogb25JbnB1dE1vdXNlRG93bixcbiAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoZSkge1xuICAgICAgc2V0SW5wdXRDaGFuZ2VkKHRydWUpO1xuICAgICAgb25JbnB1dENoYW5nZShlKTtcbiAgICB9LFxuICAgIG9uUGFzdGU6IG9uSW5wdXRQYXN0ZSxcbiAgICBvbkNvbXBvc2l0aW9uU3RhcnQ6IG9uSW5wdXRDb21wb3NpdGlvblN0YXJ0LFxuICAgIG9uQ29tcG9zaXRpb25FbmQ6IG9uSW5wdXRDb21wb3NpdGlvbkVuZCxcbiAgICB0YWJJbmRleDogdGFiSW5kZXgsXG4gICAgYXR0cnM6IHBpY2tBdHRycyhwcm9wcywgdHJ1ZSksXG4gICAgbWF4TGVuZ3RoOiBjb21ib2JveCA/IG1heExlbmd0aCA6IHVuZGVmaW5lZFxuICB9KSksICFjb21ib2JveCAmJiBpdGVtICYmICFoYXNUZXh0SW5wdXQgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc2VsZWN0aW9uLWl0ZW1cIiksXG4gICAgdGl0bGU6IHRpdGxlXG4gIH0sIGl0ZW0ubGFiZWwpLCAhaXRlbSAmJiAhaGFzVGV4dElucHV0ICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXNlbGVjdGlvbi1wbGFjZWhvbGRlclwiKVxuICB9LCBwbGFjZWhvbGRlcikpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2luZ2xlU2VsZWN0b3I7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBMb2NrZXIgcmV0dXJuIGNhY2hlZCBtYXJrLlxuICogSWYgc2V0IHRvIGB0cnVlYCwgd2lsbCByZXR1cm4gYHRydWVgIGluIGEgc2hvcnQgdGltZSBldmVuIGlmIHNldCBgZmFsc2VgLlxuICogSWYgc2V0IHRvIGBmYWxzZWAgYW5kIHRoZW4gc2V0IHRvIGB0cnVlYCwgd2lsbCBjaGFuZ2UgdG8gYHRydWVgLlxuICogQW5kIGFmdGVyIHRpbWUgZHVyYXRpb24sIGl0IHdpbGwgYmFjayB0byBgbnVsbGAgYXV0b21hdGljYWxseS5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VMb2NrKCkge1xuICB2YXIgZHVyYXRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IDI1MDtcbiAgdmFyIGxvY2tSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIHZhciB0aW1lb3V0UmVmID0gUmVhY3QudXNlUmVmKG51bGwpOyAvLyBDbGVhbiB1cFxuXG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZW91dFJlZi5jdXJyZW50KTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgZnVuY3Rpb24gZG9Mb2NrKGxvY2tlZCkge1xuICAgIGlmIChsb2NrZWQgfHwgbG9ja1JlZi5jdXJyZW50ID09PSBudWxsKSB7XG4gICAgICBsb2NrUmVmLmN1cnJlbnQgPSBsb2NrZWQ7XG4gICAgfVxuXG4gICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgIHRpbWVvdXRSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGxvY2tSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfSwgZHVyYXRpb24pO1xuICB9XG5cbiAgcmV0dXJuIFtmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGxvY2tSZWYuY3VycmVudDtcbiAgfSwgZG9Mb2NrXTtcbn0iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheVwiO1xuXG4vKipcbiAqIEN1cnNvciBydWxlOlxuICogMS4gT25seSBgc2hvd1NlYXJjaGAgZW5hYmxlZFxuICogMi4gT25seSBgb3BlbmAgaXMgYHRydWVgXG4gKiAzLiBXaGVuIHR5cGluZywgc2V0IGBvcGVuYCB0byBgdHJ1ZWAgd2hpY2ggaGl0IHJ1bGUgb2YgMlxuICpcbiAqIEFjY2Vzc2liaWxpdHk6XG4gKiAtIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS1wcmFjdGljZXMvZXhhbXBsZXMvY29tYm9ib3gvYXJpYTEuMXBhdHRlcm4vbGlzdGJveC1jb21iby5odG1sXG4gKi9cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBLZXlDb2RlIGZyb20gXCJyYy11dGlsL2VzL0tleUNvZGVcIjtcbmltcG9ydCBNdWx0aXBsZVNlbGVjdG9yIGZyb20gJy4vTXVsdGlwbGVTZWxlY3Rvcic7XG5pbXBvcnQgU2luZ2xlU2VsZWN0b3IgZnJvbSAnLi9TaW5nbGVTZWxlY3Rvcic7XG5pbXBvcnQgdXNlTG9jayBmcm9tICcuLi9ob29rcy91c2VMb2NrJztcblxudmFyIFNlbGVjdG9yID0gZnVuY3Rpb24gU2VsZWN0b3IocHJvcHMsIHJlZikge1xuICB2YXIgaW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIHZhciBjb21wb3NpdGlvblN0YXR1c1JlZiA9IHVzZVJlZihmYWxzZSk7XG4gIHZhciBwcmVmaXhDbHMgPSBwcm9wcy5wcmVmaXhDbHMsXG4gICAgICBtdWx0aXBsZSA9IHByb3BzLm11bHRpcGxlLFxuICAgICAgb3BlbiA9IHByb3BzLm9wZW4sXG4gICAgICBtb2RlID0gcHJvcHMubW9kZSxcbiAgICAgIHNob3dTZWFyY2ggPSBwcm9wcy5zaG93U2VhcmNoLFxuICAgICAgdG9rZW5XaXRoRW50ZXIgPSBwcm9wcy50b2tlbldpdGhFbnRlcixcbiAgICAgIG9uU2VhcmNoID0gcHJvcHMub25TZWFyY2gsXG4gICAgICBvblNlYXJjaFN1Ym1pdCA9IHByb3BzLm9uU2VhcmNoU3VibWl0LFxuICAgICAgb25Ub2dnbGVPcGVuID0gcHJvcHMub25Ub2dnbGVPcGVuLFxuICAgICAgb25JbnB1dEtleURvd24gPSBwcm9wcy5vbklucHV0S2V5RG93bixcbiAgICAgIGRvbVJlZiA9IHByb3BzLmRvbVJlZjsgLy8gPT09PT09PT09PT09PT09PT09PT09PT0gUmVmID09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9jdXM6IGZ1bmN0aW9uIGZvY3VzKCkge1xuICAgICAgICBpbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgICB9LFxuICAgICAgYmx1cjogZnVuY3Rpb24gYmx1cigpIHtcbiAgICAgICAgaW5wdXRSZWYuY3VycmVudC5ibHVyKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7IC8vID09PT09PT09PT09PT09PT09PT09PT0gSW5wdXQgPT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBfdXNlTG9jayA9IHVzZUxvY2soMCksXG4gICAgICBfdXNlTG9jazIgPSBfc2xpY2VkVG9BcnJheShfdXNlTG9jaywgMiksXG4gICAgICBnZXRJbnB1dE1vdXNlRG93biA9IF91c2VMb2NrMlswXSxcbiAgICAgIHNldElucHV0TW91c2VEb3duID0gX3VzZUxvY2syWzFdO1xuXG4gIHZhciBvbkludGVybmFsSW5wdXRLZXlEb3duID0gZnVuY3Rpb24gb25JbnRlcm5hbElucHV0S2V5RG93bihldmVudCkge1xuICAgIHZhciB3aGljaCA9IGV2ZW50LndoaWNoO1xuXG4gICAgaWYgKHdoaWNoID09PSBLZXlDb2RlLlVQIHx8IHdoaWNoID09PSBLZXlDb2RlLkRPV04pIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgaWYgKG9uSW5wdXRLZXlEb3duKSB7XG4gICAgICBvbklucHV0S2V5RG93bihldmVudCk7XG4gICAgfVxuXG4gICAgaWYgKHdoaWNoID09PSBLZXlDb2RlLkVOVEVSICYmIG1vZGUgPT09ICd0YWdzJyAmJiAhY29tcG9zaXRpb25TdGF0dXNSZWYuY3VycmVudCAmJiAhb3Blbikge1xuICAgICAgLy8gV2hlbiBtZW51IGlzbid0IG9wZW4sIE9wdGlvbkxpc3Qgd29uJ3QgdHJpZ2dlciBhIHZhbHVlIGNoYW5nZVxuICAgICAgLy8gU28gd2hlbiBlbnRlciBpcyBwcmVzc2VkLCB0aGUgdGFnJ3MgaW5wdXQgdmFsdWUgc2hvdWxkIGJlIGVtaXR0ZWQgaGVyZSB0byBsZXQgc2VsZWN0b3Iga25vd1xuICAgICAgb25TZWFyY2hTdWJtaXQoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoIVtLZXlDb2RlLlNISUZULCBLZXlDb2RlLlRBQiwgS2V5Q29kZS5CQUNLU1BBQ0UsIEtleUNvZGUuRVNDXS5pbmNsdWRlcyh3aGljaCkpIHtcbiAgICAgIG9uVG9nZ2xlT3Blbih0cnVlKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiBXZSBjYW4gbm90IHVzZSBgZmluZERPTU5vZGVgIHNpbmUgaXQgd2lsbCBnZXQgd2FybmluZyxcbiAgICogaGF2ZSB0byB1c2UgdGltZXIgdG8gY2hlY2sgaWYgaXMgaW5wdXQgZWxlbWVudC5cbiAgICovXG5cblxuICB2YXIgb25JbnRlcm5hbElucHV0TW91c2VEb3duID0gZnVuY3Rpb24gb25JbnRlcm5hbElucHV0TW91c2VEb3duKCkge1xuICAgIHNldElucHV0TW91c2VEb3duKHRydWUpO1xuICB9OyAvLyBXaGVuIHBhc3RlIGNvbWUsIGlnbm9yZSBuZXh0IG9uQ2hhbmdlXG5cblxuICB2YXIgcGFzdGVkVGV4dFJlZiA9IHVzZVJlZihudWxsKTtcblxuICB2YXIgdHJpZ2dlck9uU2VhcmNoID0gZnVuY3Rpb24gdHJpZ2dlck9uU2VhcmNoKHZhbHVlKSB7XG4gICAgaWYgKG9uU2VhcmNoKHZhbHVlLCB0cnVlLCBjb21wb3NpdGlvblN0YXR1c1JlZi5jdXJyZW50KSAhPT0gZmFsc2UpIHtcbiAgICAgIG9uVG9nZ2xlT3Blbih0cnVlKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIG9uSW5wdXRDb21wb3NpdGlvblN0YXJ0ID0gZnVuY3Rpb24gb25JbnB1dENvbXBvc2l0aW9uU3RhcnQoKSB7XG4gICAgY29tcG9zaXRpb25TdGF0dXNSZWYuY3VycmVudCA9IHRydWU7XG4gIH07XG5cbiAgdmFyIG9uSW5wdXRDb21wb3NpdGlvbkVuZCA9IGZ1bmN0aW9uIG9uSW5wdXRDb21wb3NpdGlvbkVuZChlKSB7XG4gICAgY29tcG9zaXRpb25TdGF0dXNSZWYuY3VycmVudCA9IGZhbHNlOyAvLyBUcmlnZ2VyIHNlYXJjaCBhZ2FpbiB0byBzdXBwb3J0IGB0b2tlblNlcGFyYXRvcnNgIHdpdGggdHlwZXdyaXRpbmdcblxuICAgIGlmIChtb2RlICE9PSAnY29tYm9ib3gnKSB7XG4gICAgICB0cmlnZ2VyT25TZWFyY2goZS50YXJnZXQudmFsdWUpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgb25JbnB1dENoYW5nZSA9IGZ1bmN0aW9uIG9uSW5wdXRDaGFuZ2UoZXZlbnQpIHtcbiAgICB2YXIgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7IC8vIFBhc3RlZCB0ZXh0IHNob3VsZCByZXBsYWNlIGJhY2sgdG8gb3JpZ2luIGNvbnRlbnRcblxuICAgIGlmICh0b2tlbldpdGhFbnRlciAmJiBwYXN0ZWRUZXh0UmVmLmN1cnJlbnQgJiYgL1tcXHJcXG5dLy50ZXN0KHBhc3RlZFRleHRSZWYuY3VycmVudCkpIHtcbiAgICAgIC8vIENSTEYgd2lsbCBiZSB0cmVhdGVkIGFzIGEgc2luZ2xlIHNwYWNlIGZvciBpbnB1dCBlbGVtZW50XG4gICAgICB2YXIgcmVwbGFjZWRUZXh0ID0gcGFzdGVkVGV4dFJlZi5jdXJyZW50LnJlcGxhY2UoL1tcXHJcXG5dKyQvLCAnJykucmVwbGFjZSgvXFxyXFxuL2csICcgJykucmVwbGFjZSgvW1xcclxcbl0vZywgJyAnKTtcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZXBsYWNlZFRleHQsIHBhc3RlZFRleHRSZWYuY3VycmVudCk7XG4gICAgfVxuXG4gICAgcGFzdGVkVGV4dFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB0cmlnZ2VyT25TZWFyY2godmFsdWUpO1xuICB9O1xuXG4gIHZhciBvbklucHV0UGFzdGUgPSBmdW5jdGlvbiBvbklucHV0UGFzdGUoZSkge1xuICAgIHZhciBjbGlwYm9hcmREYXRhID0gZS5jbGlwYm9hcmREYXRhO1xuICAgIHZhciB2YWx1ZSA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dCcpO1xuICAgIHBhc3RlZFRleHRSZWYuY3VycmVudCA9IHZhbHVlO1xuICB9O1xuXG4gIHZhciBvbkNsaWNrID0gZnVuY3Rpb24gb25DbGljayhfcmVmKSB7XG4gICAgdmFyIHRhcmdldCA9IF9yZWYudGFyZ2V0O1xuXG4gICAgaWYgKHRhcmdldCAhPT0gaW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgLy8gU2hvdWxkIGZvY3VzIGlucHV0IGlmIGNsaWNrIHRoZSBzZWxlY3RvclxuICAgICAgdmFyIGlzSUUgPSBkb2N1bWVudC5ib2R5LnN0eWxlLm1zVG91Y2hBY3Rpb24gIT09IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGlzSUUpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaW5wdXRSZWYuY3VycmVudC5mb2N1cygpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlucHV0UmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIG9uTW91c2VEb3duID0gZnVuY3Rpb24gb25Nb3VzZURvd24oZXZlbnQpIHtcbiAgICB2YXIgaW5wdXRNb3VzZURvd24gPSBnZXRJbnB1dE1vdXNlRG93bigpO1xuXG4gICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gaW5wdXRSZWYuY3VycmVudCAmJiAhaW5wdXRNb3VzZURvd24pIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgIT09ICdjb21ib2JveCcgJiYgKCFzaG93U2VhcmNoIHx8ICFpbnB1dE1vdXNlRG93bikgfHwgIW9wZW4pIHtcbiAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgIG9uU2VhcmNoKCcnLCB0cnVlLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIG9uVG9nZ2xlT3BlbigpO1xuICAgIH1cbiAgfTsgLy8gPT09PT09PT09PT09PT09PT0gSW5uZXIgU2VsZWN0b3IgPT09PT09PT09PT09PT09PT09XG5cblxuICB2YXIgc2hhcmVkUHJvcHMgPSB7XG4gICAgaW5wdXRSZWY6IGlucHV0UmVmLFxuICAgIG9uSW5wdXRLZXlEb3duOiBvbkludGVybmFsSW5wdXRLZXlEb3duLFxuICAgIG9uSW5wdXRNb3VzZURvd246IG9uSW50ZXJuYWxJbnB1dE1vdXNlRG93bixcbiAgICBvbklucHV0Q2hhbmdlOiBvbklucHV0Q2hhbmdlLFxuICAgIG9uSW5wdXRQYXN0ZTogb25JbnB1dFBhc3RlLFxuICAgIG9uSW5wdXRDb21wb3NpdGlvblN0YXJ0OiBvbklucHV0Q29tcG9zaXRpb25TdGFydCxcbiAgICBvbklucHV0Q29tcG9zaXRpb25FbmQ6IG9uSW5wdXRDb21wb3NpdGlvbkVuZFxuICB9O1xuICB2YXIgc2VsZWN0Tm9kZSA9IG11bHRpcGxlID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTXVsdGlwbGVTZWxlY3RvciwgX2V4dGVuZHMoe30sIHByb3BzLCBzaGFyZWRQcm9wcykpIDogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2luZ2xlU2VsZWN0b3IsIF9leHRlbmRzKHt9LCBwcm9wcywgc2hhcmVkUHJvcHMpKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICByZWY6IGRvbVJlZixcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc2VsZWN0b3JcIiksXG4gICAgb25DbGljazogb25DbGljayxcbiAgICBvbk1vdXNlRG93bjogb25Nb3VzZURvd25cbiAgfSwgc2VsZWN0Tm9kZSk7XG59O1xuXG52YXIgRm9yd2FyZFNlbGVjdG9yID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoU2VsZWN0b3IpO1xuRm9yd2FyZFNlbGVjdG9yLmRpc3BsYXlOYW1lID0gJ1NlbGVjdG9yJztcbmV4cG9ydCBkZWZhdWx0IEZvcndhcmRTZWxlY3RvcjsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBUcmlnZ2VyIGZyb20gJ3JjLXRyaWdnZXInO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbnZhciBnZXRCdWlsdEluUGxhY2VtZW50cyA9IGZ1bmN0aW9uIGdldEJ1aWx0SW5QbGFjZW1lbnRzKGRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aCkge1xuICAvLyBFbmFibGUgaG9yaXpvbnRhbCBvdmVyZmxvdyBhdXRvLWFkanVzdG1lbnQgd2hlbiBhIGN1c3RvbSBkcm9wZG93biB3aWR0aCBpcyBwcm92aWRlZFxuICB2YXIgYWRqdXN0WCA9IHR5cGVvZiBkcm9wZG93bk1hdGNoU2VsZWN0V2lkdGggIT09ICdudW1iZXInID8gMCA6IDE7XG4gIHJldHVybiB7XG4gICAgYm90dG9tTGVmdDoge1xuICAgICAgcG9pbnRzOiBbJ3RsJywgJ2JsJ10sXG4gICAgICBvZmZzZXQ6IFswLCA0XSxcbiAgICAgIG92ZXJmbG93OiB7XG4gICAgICAgIGFkanVzdFg6IGFkanVzdFgsXG4gICAgICAgIGFkanVzdFk6IDFcbiAgICAgIH1cbiAgICB9LFxuICAgIGJvdHRvbVJpZ2h0OiB7XG4gICAgICBwb2ludHM6IFsndHInLCAnYnInXSxcbiAgICAgIG9mZnNldDogWzAsIDRdLFxuICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgYWRqdXN0WDogYWRqdXN0WCxcbiAgICAgICAgYWRqdXN0WTogMVxuICAgICAgfVxuICAgIH0sXG4gICAgdG9wTGVmdDoge1xuICAgICAgcG9pbnRzOiBbJ2JsJywgJ3RsJ10sXG4gICAgICBvZmZzZXQ6IFswLCAtNF0sXG4gICAgICBvdmVyZmxvdzoge1xuICAgICAgICBhZGp1c3RYOiBhZGp1c3RYLFxuICAgICAgICBhZGp1c3RZOiAxXG4gICAgICB9XG4gICAgfSxcbiAgICB0b3BSaWdodDoge1xuICAgICAgcG9pbnRzOiBbJ2JyJywgJ3RyJ10sXG4gICAgICBvZmZzZXQ6IFswLCAtNF0sXG4gICAgICBvdmVyZmxvdzoge1xuICAgICAgICBhZGp1c3RYOiBhZGp1c3RYLFxuICAgICAgICBhZGp1c3RZOiAxXG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxudmFyIFNlbGVjdFRyaWdnZXIgPSBmdW5jdGlvbiBTZWxlY3RUcmlnZ2VyKHByb3BzLCByZWYpIHtcbiAgdmFyIHByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgIGRpc2FibGVkID0gcHJvcHMuZGlzYWJsZWQsXG4gICAgICB2aXNpYmxlID0gcHJvcHMudmlzaWJsZSxcbiAgICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICBwb3B1cEVsZW1lbnQgPSBwcm9wcy5wb3B1cEVsZW1lbnQsXG4gICAgICBjb250YWluZXJXaWR0aCA9IHByb3BzLmNvbnRhaW5lcldpZHRoLFxuICAgICAgYW5pbWF0aW9uID0gcHJvcHMuYW5pbWF0aW9uLFxuICAgICAgdHJhbnNpdGlvbk5hbWUgPSBwcm9wcy50cmFuc2l0aW9uTmFtZSxcbiAgICAgIGRyb3Bkb3duU3R5bGUgPSBwcm9wcy5kcm9wZG93blN0eWxlLFxuICAgICAgZHJvcGRvd25DbGFzc05hbWUgPSBwcm9wcy5kcm9wZG93bkNsYXNzTmFtZSxcbiAgICAgIF9wcm9wcyRkaXJlY3Rpb24gPSBwcm9wcy5kaXJlY3Rpb24sXG4gICAgICBkaXJlY3Rpb24gPSBfcHJvcHMkZGlyZWN0aW9uID09PSB2b2lkIDAgPyAnbHRyJyA6IF9wcm9wcyRkaXJlY3Rpb24sXG4gICAgICBfcHJvcHMkZHJvcGRvd25NYXRjaFMgPSBwcm9wcy5kcm9wZG93bk1hdGNoU2VsZWN0V2lkdGgsXG4gICAgICBkcm9wZG93bk1hdGNoU2VsZWN0V2lkdGggPSBfcHJvcHMkZHJvcGRvd25NYXRjaFMgPT09IHZvaWQgMCA/IHRydWUgOiBfcHJvcHMkZHJvcGRvd25NYXRjaFMsXG4gICAgICBkcm9wZG93blJlbmRlciA9IHByb3BzLmRyb3Bkb3duUmVuZGVyLFxuICAgICAgZHJvcGRvd25BbGlnbiA9IHByb3BzLmRyb3Bkb3duQWxpZ24sXG4gICAgICBnZXRQb3B1cENvbnRhaW5lciA9IHByb3BzLmdldFBvcHVwQ29udGFpbmVyLFxuICAgICAgZW1wdHkgPSBwcm9wcy5lbXB0eSxcbiAgICAgIGdldFRyaWdnZXJET01Ob2RlID0gcHJvcHMuZ2V0VHJpZ2dlckRPTU5vZGUsXG4gICAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIFtcInByZWZpeENsc1wiLCBcImRpc2FibGVkXCIsIFwidmlzaWJsZVwiLCBcImNoaWxkcmVuXCIsIFwicG9wdXBFbGVtZW50XCIsIFwiY29udGFpbmVyV2lkdGhcIiwgXCJhbmltYXRpb25cIiwgXCJ0cmFuc2l0aW9uTmFtZVwiLCBcImRyb3Bkb3duU3R5bGVcIiwgXCJkcm9wZG93bkNsYXNzTmFtZVwiLCBcImRpcmVjdGlvblwiLCBcImRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aFwiLCBcImRyb3Bkb3duUmVuZGVyXCIsIFwiZHJvcGRvd25BbGlnblwiLCBcImdldFBvcHVwQ29udGFpbmVyXCIsIFwiZW1wdHlcIiwgXCJnZXRUcmlnZ2VyRE9NTm9kZVwiXSk7XG5cbiAgdmFyIGRyb3Bkb3duUHJlZml4Q2xzID0gXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1kcm9wZG93blwiKTtcbiAgdmFyIHBvcHVwTm9kZSA9IHBvcHVwRWxlbWVudDtcblxuICBpZiAoZHJvcGRvd25SZW5kZXIpIHtcbiAgICBwb3B1cE5vZGUgPSBkcm9wZG93blJlbmRlcihwb3B1cEVsZW1lbnQpO1xuICB9XG5cbiAgdmFyIGJ1aWx0SW5QbGFjZW1lbnRzID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGdldEJ1aWx0SW5QbGFjZW1lbnRzKGRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aCk7XG4gIH0sIFtkcm9wZG93bk1hdGNoU2VsZWN0V2lkdGhdKTsgLy8gPT09PT09PT09PT09PT09PT09PT09IE1vdGlvbiA9PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIG1lcmdlZFRyYW5zaXRpb25OYW1lID0gYW5pbWF0aW9uID8gXCJcIi5jb25jYXQoZHJvcGRvd25QcmVmaXhDbHMsIFwiLVwiKS5jb25jYXQoYW5pbWF0aW9uKSA6IHRyYW5zaXRpb25OYW1lOyAvLyA9PT09PT09PT09PT09PT09PT09PT09PSBSZWYgPT09PT09PT09PT09PT09PT09PT09PT1cblxuICB2YXIgcG9wdXBSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldFBvcHVwRWxlbWVudDogZnVuY3Rpb24gZ2V0UG9wdXBFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gcG9wdXBSZWYuY3VycmVudDtcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcblxuICB2YXIgcG9wdXBTdHlsZSA9IF9vYmplY3RTcHJlYWQoe1xuICAgIG1pbldpZHRoOiBjb250YWluZXJXaWR0aFxuICB9LCBkcm9wZG93blN0eWxlKTtcblxuICBpZiAodHlwZW9mIGRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aCA9PT0gJ251bWJlcicpIHtcbiAgICBwb3B1cFN0eWxlLndpZHRoID0gZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoO1xuICB9IGVsc2UgaWYgKGRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aCkge1xuICAgIHBvcHVwU3R5bGUud2lkdGggPSBjb250YWluZXJXaWR0aDtcbiAgfVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUcmlnZ2VyLCBfZXh0ZW5kcyh7fSwgcmVzdFByb3BzLCB7XG4gICAgc2hvd0FjdGlvbjogW10sXG4gICAgaGlkZUFjdGlvbjogW10sXG4gICAgcG9wdXBQbGFjZW1lbnQ6IGRpcmVjdGlvbiA9PT0gJ3J0bCcgPyAnYm90dG9tUmlnaHQnIDogJ2JvdHRvbUxlZnQnLFxuICAgIGJ1aWx0aW5QbGFjZW1lbnRzOiBidWlsdEluUGxhY2VtZW50cyxcbiAgICBwcmVmaXhDbHM6IGRyb3Bkb3duUHJlZml4Q2xzLFxuICAgIHBvcHVwVHJhbnNpdGlvbk5hbWU6IG1lcmdlZFRyYW5zaXRpb25OYW1lLFxuICAgIHBvcHVwOiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICByZWY6IHBvcHVwUmVmXG4gICAgfSwgcG9wdXBOb2RlKSxcbiAgICBwb3B1cEFsaWduOiBkcm9wZG93bkFsaWduLFxuICAgIHBvcHVwVmlzaWJsZTogdmlzaWJsZSxcbiAgICBnZXRQb3B1cENvbnRhaW5lcjogZ2V0UG9wdXBDb250YWluZXIsXG4gICAgcG9wdXBDbGFzc05hbWU6IGNsYXNzTmFtZXMoZHJvcGRvd25DbGFzc05hbWUsIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQoZHJvcGRvd25QcmVmaXhDbHMsIFwiLWVtcHR5XCIpLCBlbXB0eSkpLFxuICAgIHBvcHVwU3R5bGU6IHBvcHVwU3R5bGUsXG4gICAgZ2V0VHJpZ2dlckRPTU5vZGU6IGdldFRyaWdnZXJET01Ob2RlXG4gIH0pLCBjaGlsZHJlbik7XG59O1xuXG52YXIgUmVmU2VsZWN0VHJpZ2dlciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKFNlbGVjdFRyaWdnZXIpO1xuUmVmU2VsZWN0VHJpZ2dlci5kaXNwbGF5TmFtZSA9ICdTZWxlY3RUcmlnZ2VyJztcbmV4cG9ydCBkZWZhdWx0IFJlZlNlbGVjdFRyaWdnZXI7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDJcIjtcbmltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5XCI7XG5pbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCI7XG5cbi8qKlxuICogVG8gbWF0Y2ggYWNjZXNzaWJpbGl0eSByZXF1aXJlbWVudCwgd2UgYWx3YXlzIHByb3ZpZGUgYW4gaW5wdXQgaW4gdGhlIGNvbXBvbmVudC5cbiAqIE90aGVyIGVsZW1lbnQgd2lsbCBub3Qgc2V0IGB0YWJJbmRleGAgdG8gYXZvaWQgYG9uQmx1cmAgc2VxdWVuY2UgcHJvYmxlbS5cbiAqIEZvciBmb2N1c2VkIHNlbGVjdCwgd2Ugc2V0IGBhcmlhLWxpdmU9XCJwb2xpdGVcImAgdG8gdXBkYXRlIHRoZSBhY2Nlc3NpYmlsaXR5IGNvbnRlbnQuXG4gKlxuICogcmVmOlxuICogLSBrZXlib2FyZDogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQWNjZXNzaWJpbGl0eS9BUklBL1JvbGVzL2xpc3Rib3hfcm9sZSNLZXlib2FyZF9pbnRlcmFjdGlvbnNcbiAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEtleUNvZGUgZnJvbSBcInJjLXV0aWwvZXMvS2V5Q29kZVwiO1xuaW1wb3J0IGlzTW9iaWxlIGZyb20gXCJyYy11dGlsL2VzL2lzTW9iaWxlXCI7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB1c2VNZXJnZWRTdGF0ZSBmcm9tIFwicmMtdXRpbC9lcy9ob29rcy91c2VNZXJnZWRTdGF0ZVwiO1xuaW1wb3J0IFNlbGVjdG9yIGZyb20gJy4vU2VsZWN0b3InO1xuaW1wb3J0IFNlbGVjdFRyaWdnZXIgZnJvbSAnLi9TZWxlY3RUcmlnZ2VyJztcbmltcG9ydCB7IElOVEVSTkFMX1BST1BTX01BUksgfSBmcm9tICcuL2ludGVyZmFjZS9nZW5lcmF0b3InO1xuaW1wb3J0IHsgdG9Jbm5lclZhbHVlLCB0b091dGVyVmFsdWVzLCByZW1vdmVMYXN0RW5hYmxlZFZhbHVlLCBnZXRVVUlEIH0gZnJvbSAnLi91dGlscy9jb21tb25VdGlsJztcbmltcG9ydCBUcmFuc0J0biBmcm9tICcuL1RyYW5zQnRuJztcbmltcG9ydCB1c2VMb2NrIGZyb20gJy4vaG9va3MvdXNlTG9jayc7XG5pbXBvcnQgdXNlRGVsYXlSZXNldCBmcm9tICcuL2hvb2tzL3VzZURlbGF5UmVzZXQnO1xuaW1wb3J0IHVzZUxheW91dEVmZmVjdCBmcm9tICcuL2hvb2tzL3VzZUxheW91dEVmZmVjdCc7XG5pbXBvcnQgeyBnZXRTZXBhcmF0ZWRDb250ZW50IH0gZnJvbSAnLi91dGlscy92YWx1ZVV0aWwnO1xuaW1wb3J0IHVzZVNlbGVjdFRyaWdnZXJDb250cm9sIGZyb20gJy4vaG9va3MvdXNlU2VsZWN0VHJpZ2dlckNvbnRyb2wnO1xuaW1wb3J0IHVzZUNhY2hlRGlzcGxheVZhbHVlIGZyb20gJy4vaG9va3MvdXNlQ2FjaGVEaXNwbGF5VmFsdWUnO1xuaW1wb3J0IHVzZUNhY2hlT3B0aW9ucyBmcm9tICcuL2hvb2tzL3VzZUNhY2hlT3B0aW9ucyc7XG52YXIgREVGQVVMVF9PTUlUX1BST1BTID0gWydyZW1vdmVJY29uJywgJ3BsYWNlaG9sZGVyJywgJ2F1dG9Gb2N1cycsICdtYXhUYWdDb3VudCcsICdtYXhUYWdUZXh0TGVuZ3RoJywgJ21heFRhZ1BsYWNlaG9sZGVyJywgJ2Nob2ljZVRyYW5zaXRpb25OYW1lJywgJ29uSW5wdXRLZXlEb3duJywgJ3RhYkluZGV4J107XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgaW4gaW50ZXJuYWwgdXNhZ2UuXG4gKiBEbyBub3QgdXNlIGl0IGluIHlvdXIgcHJvZCBlbnYgc2luY2Ugd2UgbWF5IHJlZmFjdG9yIHRoaXMuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2VuZXJhdGVTZWxlY3Rvcihjb25maWcpIHtcbiAgdmFyIGRlZmF1bHRQcmVmaXhDbHMgPSBjb25maWcucHJlZml4Q2xzLFxuICAgICAgT3B0aW9uTGlzdCA9IGNvbmZpZy5jb21wb25lbnRzLm9wdGlvbkxpc3QsXG4gICAgICBjb252ZXJ0Q2hpbGRyZW5Ub0RhdGEgPSBjb25maWcuY29udmVydENoaWxkcmVuVG9EYXRhLFxuICAgICAgZmxhdHRlbk9wdGlvbnMgPSBjb25maWcuZmxhdHRlbk9wdGlvbnMsXG4gICAgICBnZXRMYWJlbGVkVmFsdWUgPSBjb25maWcuZ2V0TGFiZWxlZFZhbHVlLFxuICAgICAgZmlsdGVyT3B0aW9ucyA9IGNvbmZpZy5maWx0ZXJPcHRpb25zLFxuICAgICAgaXNWYWx1ZURpc2FibGVkID0gY29uZmlnLmlzVmFsdWVEaXNhYmxlZCxcbiAgICAgIGZpbmRWYWx1ZU9wdGlvbiA9IGNvbmZpZy5maW5kVmFsdWVPcHRpb24sXG4gICAgICB3YXJuaW5nUHJvcHMgPSBjb25maWcud2FybmluZ1Byb3BzLFxuICAgICAgZmlsbE9wdGlvbnNXaXRoTWlzc2luZ1ZhbHVlID0gY29uZmlnLmZpbGxPcHRpb25zV2l0aE1pc3NpbmdWYWx1ZSxcbiAgICAgIG9taXRET01Qcm9wcyA9IGNvbmZpZy5vbWl0RE9NUHJvcHM7IC8vIFVzZSByYXcgZGVmaW5lIHNpbmNlIGBSZWFjdC5GQ2Agbm90IHN1cHBvcnQgZ2VuZXJpY1xuXG4gIGZ1bmN0aW9uIFNlbGVjdChwcm9wcywgcmVmKSB7XG4gICAgdmFyIF9jbGFzc05hbWVzMjtcblxuICAgIHZhciBfcHJvcHMkcHJlZml4Q2xzID0gcHJvcHMucHJlZml4Q2xzLFxuICAgICAgICBwcmVmaXhDbHMgPSBfcHJvcHMkcHJlZml4Q2xzID09PSB2b2lkIDAgPyBkZWZhdWx0UHJlZml4Q2xzIDogX3Byb3BzJHByZWZpeENscyxcbiAgICAgICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICBpZCA9IHByb3BzLmlkLFxuICAgICAgICBvcGVuID0gcHJvcHMub3BlbixcbiAgICAgICAgZGVmYXVsdE9wZW4gPSBwcm9wcy5kZWZhdWx0T3BlbixcbiAgICAgICAgb3B0aW9ucyA9IHByb3BzLm9wdGlvbnMsXG4gICAgICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICAgIG1vZGUgPSBwcm9wcy5tb2RlLFxuICAgICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlLFxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWUsXG4gICAgICAgIGxhYmVsSW5WYWx1ZSA9IHByb3BzLmxhYmVsSW5WYWx1ZSxcbiAgICAgICAgc2hvd1NlYXJjaCA9IHByb3BzLnNob3dTZWFyY2gsXG4gICAgICAgIGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgICAgICBzZWFyY2hWYWx1ZSA9IHByb3BzLnNlYXJjaFZhbHVlLFxuICAgICAgICBmaWx0ZXJPcHRpb24gPSBwcm9wcy5maWx0ZXJPcHRpb24sXG4gICAgICAgIGZpbHRlclNvcnQgPSBwcm9wcy5maWx0ZXJTb3J0LFxuICAgICAgICBfcHJvcHMkb3B0aW9uRmlsdGVyUHIgPSBwcm9wcy5vcHRpb25GaWx0ZXJQcm9wLFxuICAgICAgICBvcHRpb25GaWx0ZXJQcm9wID0gX3Byb3BzJG9wdGlvbkZpbHRlclByID09PSB2b2lkIDAgPyAndmFsdWUnIDogX3Byb3BzJG9wdGlvbkZpbHRlclByLFxuICAgICAgICBfcHJvcHMkYXV0b0NsZWFyU2VhcmMgPSBwcm9wcy5hdXRvQ2xlYXJTZWFyY2hWYWx1ZSxcbiAgICAgICAgYXV0b0NsZWFyU2VhcmNoVmFsdWUgPSBfcHJvcHMkYXV0b0NsZWFyU2VhcmMgPT09IHZvaWQgMCA/IHRydWUgOiBfcHJvcHMkYXV0b0NsZWFyU2VhcmMsXG4gICAgICAgIG9uU2VhcmNoID0gcHJvcHMub25TZWFyY2gsXG4gICAgICAgIGFsbG93Q2xlYXIgPSBwcm9wcy5hbGxvd0NsZWFyLFxuICAgICAgICBjbGVhckljb24gPSBwcm9wcy5jbGVhckljb24sXG4gICAgICAgIHNob3dBcnJvdyA9IHByb3BzLnNob3dBcnJvdyxcbiAgICAgICAgaW5wdXRJY29uID0gcHJvcHMuaW5wdXRJY29uLFxuICAgICAgICBtZW51SXRlbVNlbGVjdGVkSWNvbiA9IHByb3BzLm1lbnVJdGVtU2VsZWN0ZWRJY29uLFxuICAgICAgICBkaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkLFxuICAgICAgICBsb2FkaW5nID0gcHJvcHMubG9hZGluZyxcbiAgICAgICAgZGVmYXVsdEFjdGl2ZUZpcnN0T3B0aW9uID0gcHJvcHMuZGVmYXVsdEFjdGl2ZUZpcnN0T3B0aW9uLFxuICAgICAgICBfcHJvcHMkbm90Rm91bmRDb250ZW4gPSBwcm9wcy5ub3RGb3VuZENvbnRlbnQsXG4gICAgICAgIG5vdEZvdW5kQ29udGVudCA9IF9wcm9wcyRub3RGb3VuZENvbnRlbiA9PT0gdm9pZCAwID8gJ05vdCBGb3VuZCcgOiBfcHJvcHMkbm90Rm91bmRDb250ZW4sXG4gICAgICAgIG9wdGlvbkxhYmVsUHJvcCA9IHByb3BzLm9wdGlvbkxhYmVsUHJvcCxcbiAgICAgICAgYmFja2ZpbGwgPSBwcm9wcy5iYWNrZmlsbCxcbiAgICAgICAgdGFiSW5kZXggPSBwcm9wcy50YWJJbmRleCxcbiAgICAgICAgZ2V0SW5wdXRFbGVtZW50ID0gcHJvcHMuZ2V0SW5wdXRFbGVtZW50LFxuICAgICAgICBnZXRQb3B1cENvbnRhaW5lciA9IHByb3BzLmdldFBvcHVwQ29udGFpbmVyLFxuICAgICAgICBfcHJvcHMkbGlzdEhlaWdodCA9IHByb3BzLmxpc3RIZWlnaHQsXG4gICAgICAgIGxpc3RIZWlnaHQgPSBfcHJvcHMkbGlzdEhlaWdodCA9PT0gdm9pZCAwID8gMjAwIDogX3Byb3BzJGxpc3RIZWlnaHQsXG4gICAgICAgIF9wcm9wcyRsaXN0SXRlbUhlaWdodCA9IHByb3BzLmxpc3RJdGVtSGVpZ2h0LFxuICAgICAgICBsaXN0SXRlbUhlaWdodCA9IF9wcm9wcyRsaXN0SXRlbUhlaWdodCA9PT0gdm9pZCAwID8gMjAgOiBfcHJvcHMkbGlzdEl0ZW1IZWlnaHQsXG4gICAgICAgIGFuaW1hdGlvbiA9IHByb3BzLmFuaW1hdGlvbixcbiAgICAgICAgdHJhbnNpdGlvbk5hbWUgPSBwcm9wcy50cmFuc2l0aW9uTmFtZSxcbiAgICAgICAgdmlydHVhbCA9IHByb3BzLnZpcnR1YWwsXG4gICAgICAgIGRyb3Bkb3duU3R5bGUgPSBwcm9wcy5kcm9wZG93blN0eWxlLFxuICAgICAgICBkcm9wZG93bkNsYXNzTmFtZSA9IHByb3BzLmRyb3Bkb3duQ2xhc3NOYW1lLFxuICAgICAgICBkcm9wZG93bk1hdGNoU2VsZWN0V2lkdGggPSBwcm9wcy5kcm9wZG93bk1hdGNoU2VsZWN0V2lkdGgsXG4gICAgICAgIGRyb3Bkb3duUmVuZGVyID0gcHJvcHMuZHJvcGRvd25SZW5kZXIsXG4gICAgICAgIGRyb3Bkb3duQWxpZ24gPSBwcm9wcy5kcm9wZG93bkFsaWduLFxuICAgICAgICBfcHJvcHMkc2hvd0FjdGlvbiA9IHByb3BzLnNob3dBY3Rpb24sXG4gICAgICAgIHNob3dBY3Rpb24gPSBfcHJvcHMkc2hvd0FjdGlvbiA9PT0gdm9pZCAwID8gW10gOiBfcHJvcHMkc2hvd0FjdGlvbixcbiAgICAgICAgZGlyZWN0aW9uID0gcHJvcHMuZGlyZWN0aW9uLFxuICAgICAgICB0b2tlblNlcGFyYXRvcnMgPSBwcm9wcy50b2tlblNlcGFyYXRvcnMsXG4gICAgICAgIHRhZ1JlbmRlciA9IHByb3BzLnRhZ1JlbmRlcixcbiAgICAgICAgb25Qb3B1cFNjcm9sbCA9IHByb3BzLm9uUG9wdXBTY3JvbGwsXG4gICAgICAgIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlID0gcHJvcHMub25Ecm9wZG93blZpc2libGVDaGFuZ2UsXG4gICAgICAgIG9uRm9jdXMgPSBwcm9wcy5vbkZvY3VzLFxuICAgICAgICBvbkJsdXIgPSBwcm9wcy5vbkJsdXIsXG4gICAgICAgIG9uS2V5VXAgPSBwcm9wcy5vbktleVVwLFxuICAgICAgICBvbktleURvd24gPSBwcm9wcy5vbktleURvd24sXG4gICAgICAgIG9uTW91c2VEb3duID0gcHJvcHMub25Nb3VzZURvd24sXG4gICAgICAgIG9uQ2hhbmdlID0gcHJvcHMub25DaGFuZ2UsXG4gICAgICAgIG9uU2VsZWN0ID0gcHJvcHMub25TZWxlY3QsXG4gICAgICAgIG9uRGVzZWxlY3QgPSBwcm9wcy5vbkRlc2VsZWN0LFxuICAgICAgICBvbkNsZWFyID0gcHJvcHMub25DbGVhcixcbiAgICAgICAgX3Byb3BzJGludGVybmFsUHJvcHMgPSBwcm9wcy5pbnRlcm5hbFByb3BzLFxuICAgICAgICBpbnRlcm5hbFByb3BzID0gX3Byb3BzJGludGVybmFsUHJvcHMgPT09IHZvaWQgMCA/IHt9IDogX3Byb3BzJGludGVybmFsUHJvcHMsXG4gICAgICAgIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgW1wicHJlZml4Q2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwiaWRcIiwgXCJvcGVuXCIsIFwiZGVmYXVsdE9wZW5cIiwgXCJvcHRpb25zXCIsIFwiY2hpbGRyZW5cIiwgXCJtb2RlXCIsIFwidmFsdWVcIiwgXCJkZWZhdWx0VmFsdWVcIiwgXCJsYWJlbEluVmFsdWVcIiwgXCJzaG93U2VhcmNoXCIsIFwiaW5wdXRWYWx1ZVwiLCBcInNlYXJjaFZhbHVlXCIsIFwiZmlsdGVyT3B0aW9uXCIsIFwiZmlsdGVyU29ydFwiLCBcIm9wdGlvbkZpbHRlclByb3BcIiwgXCJhdXRvQ2xlYXJTZWFyY2hWYWx1ZVwiLCBcIm9uU2VhcmNoXCIsIFwiYWxsb3dDbGVhclwiLCBcImNsZWFySWNvblwiLCBcInNob3dBcnJvd1wiLCBcImlucHV0SWNvblwiLCBcIm1lbnVJdGVtU2VsZWN0ZWRJY29uXCIsIFwiZGlzYWJsZWRcIiwgXCJsb2FkaW5nXCIsIFwiZGVmYXVsdEFjdGl2ZUZpcnN0T3B0aW9uXCIsIFwibm90Rm91bmRDb250ZW50XCIsIFwib3B0aW9uTGFiZWxQcm9wXCIsIFwiYmFja2ZpbGxcIiwgXCJ0YWJJbmRleFwiLCBcImdldElucHV0RWxlbWVudFwiLCBcImdldFBvcHVwQ29udGFpbmVyXCIsIFwibGlzdEhlaWdodFwiLCBcImxpc3RJdGVtSGVpZ2h0XCIsIFwiYW5pbWF0aW9uXCIsIFwidHJhbnNpdGlvbk5hbWVcIiwgXCJ2aXJ0dWFsXCIsIFwiZHJvcGRvd25TdHlsZVwiLCBcImRyb3Bkb3duQ2xhc3NOYW1lXCIsIFwiZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoXCIsIFwiZHJvcGRvd25SZW5kZXJcIiwgXCJkcm9wZG93bkFsaWduXCIsIFwic2hvd0FjdGlvblwiLCBcImRpcmVjdGlvblwiLCBcInRva2VuU2VwYXJhdG9yc1wiLCBcInRhZ1JlbmRlclwiLCBcIm9uUG9wdXBTY3JvbGxcIiwgXCJvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZVwiLCBcIm9uRm9jdXNcIiwgXCJvbkJsdXJcIiwgXCJvbktleVVwXCIsIFwib25LZXlEb3duXCIsIFwib25Nb3VzZURvd25cIiwgXCJvbkNoYW5nZVwiLCBcIm9uU2VsZWN0XCIsIFwib25EZXNlbGVjdFwiLCBcIm9uQ2xlYXJcIiwgXCJpbnRlcm5hbFByb3BzXCJdKTtcblxuICAgIHZhciB1c2VJbnRlcm5hbFByb3BzID0gaW50ZXJuYWxQcm9wcy5tYXJrID09PSBJTlRFUk5BTF9QUk9QU19NQVJLO1xuICAgIHZhciBkb21Qcm9wcyA9IG9taXRET01Qcm9wcyA/IG9taXRET01Qcm9wcyhyZXN0UHJvcHMpIDogcmVzdFByb3BzO1xuICAgIERFRkFVTFRfT01JVF9QUk9QUy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICBkZWxldGUgZG9tUHJvcHNbcHJvcF07XG4gICAgfSk7XG4gICAgdmFyIGNvbnRhaW5lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICB2YXIgdHJpZ2dlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICB2YXIgc2VsZWN0b3JSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgdmFyIGxpc3RSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgdmFyIHRva2VuV2l0aEVudGVyID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gKHRva2VuU2VwYXJhdG9ycyB8fCBbXSkuc29tZShmdW5jdGlvbiAodG9rZW5TZXBhcmF0b3IpIHtcbiAgICAgICAgcmV0dXJuIFsnXFxuJywgJ1xcclxcbiddLmluY2x1ZGVzKHRva2VuU2VwYXJhdG9yKTtcbiAgICAgIH0pO1xuICAgIH0sIFt0b2tlblNlcGFyYXRvcnNdKTtcbiAgICAvKiogVXNlZCBmb3IgY29tcG9uZW50IGZvY3VzZWQgbWFuYWdlbWVudCAqL1xuXG4gICAgdmFyIF91c2VEZWxheVJlc2V0ID0gdXNlRGVsYXlSZXNldCgpLFxuICAgICAgICBfdXNlRGVsYXlSZXNldDIgPSBfc2xpY2VkVG9BcnJheShfdXNlRGVsYXlSZXNldCwgMyksXG4gICAgICAgIG1vY2tGb2N1c2VkID0gX3VzZURlbGF5UmVzZXQyWzBdLFxuICAgICAgICBzZXRNb2NrRm9jdXNlZCA9IF91c2VEZWxheVJlc2V0MlsxXSxcbiAgICAgICAgY2FuY2VsU2V0TW9ja0ZvY3VzZWQgPSBfdXNlRGVsYXlSZXNldDJbMl07IC8vIElubmVyIGlkIGZvciBhY2Nlc3NpYmlsaXR5IHVzYWdlLiBPbmx5IHdvcmsgaW4gY2xpZW50IHNpZGVcblxuXG4gICAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKCksXG4gICAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgICBpbm5lcklkID0gX3VzZVN0YXRlMlswXSxcbiAgICAgICAgc2V0SW5uZXJJZCA9IF91c2VTdGF0ZTJbMV07XG5cbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgc2V0SW5uZXJJZChcInJjX3NlbGVjdF9cIi5jb25jYXQoZ2V0VVVJRCgpKSk7XG4gICAgfSwgW10pO1xuICAgIHZhciBtZXJnZWRJZCA9IGlkIHx8IGlubmVySWQ7IC8vIG9wdGlvbkxhYmVsUHJvcFxuXG4gICAgdmFyIG1lcmdlZE9wdGlvbkxhYmVsUHJvcCA9IG9wdGlvbkxhYmVsUHJvcDtcblxuICAgIGlmIChtZXJnZWRPcHRpb25MYWJlbFByb3AgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbWVyZ2VkT3B0aW9uTGFiZWxQcm9wID0gb3B0aW9ucyA/ICdsYWJlbCcgOiAnY2hpbGRyZW4nO1xuICAgIH0gLy8gbGFiZWxJblZhbHVlXG5cblxuICAgIHZhciBtZXJnZWRMYWJlbEluVmFsdWUgPSBtb2RlID09PSAnY29tYm9ib3gnID8gZmFsc2UgOiBsYWJlbEluVmFsdWU7XG4gICAgdmFyIGlzTXVsdGlwbGUgPSBtb2RlID09PSAndGFncycgfHwgbW9kZSA9PT0gJ211bHRpcGxlJztcbiAgICB2YXIgbWVyZ2VkU2hvd1NlYXJjaCA9IHNob3dTZWFyY2ggIT09IHVuZGVmaW5lZCA/IHNob3dTZWFyY2ggOiBpc011bHRpcGxlIHx8IG1vZGUgPT09ICdjb21ib2JveCc7IC8vID09PT09PT09PT09PT09PT09PT09PT09PSBNb2JpbGUgPT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICB2YXIgX3VzZVN0YXRlMyA9IHVzZVN0YXRlKGZhbHNlKSxcbiAgICAgICAgX3VzZVN0YXRlNCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTMsIDIpLFxuICAgICAgICBtb2JpbGUgPSBfdXNlU3RhdGU0WzBdLFxuICAgICAgICBzZXRNb2JpbGUgPSBfdXNlU3RhdGU0WzFdO1xuXG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIE9ubHkgdXBkYXRlIG9uIHRoZSBjbGllbnQgc2lkZVxuICAgICAgc2V0TW9iaWxlKGlzTW9iaWxlKCkpO1xuICAgIH0sIFtdKTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFJlZiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICB2YXIgc2VsZWN0b3JEb21SZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfc2VsZWN0b3JSZWYkY3VycmVudCwgX3NlbGVjdG9yUmVmJGN1cnJlbnQyLCBfbGlzdFJlZiRjdXJyZW50O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmb2N1czogKF9zZWxlY3RvclJlZiRjdXJyZW50ID0gc2VsZWN0b3JSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX3NlbGVjdG9yUmVmJGN1cnJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zZWxlY3RvclJlZiRjdXJyZW50LmZvY3VzLFxuICAgICAgICBibHVyOiAoX3NlbGVjdG9yUmVmJGN1cnJlbnQyID0gc2VsZWN0b3JSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX3NlbGVjdG9yUmVmJGN1cnJlbnQyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfc2VsZWN0b3JSZWYkY3VycmVudDIuYmx1cixcbiAgICAgICAgc2Nyb2xsVG86IChfbGlzdFJlZiRjdXJyZW50ID0gbGlzdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfbGlzdFJlZiRjdXJyZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbGlzdFJlZiRjdXJyZW50LnNjcm9sbFRvXG4gICAgICB9O1xuICAgIH0pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBWYWx1ZSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIHZhciBfdXNlTWVyZ2VkU3RhdGUgPSB1c2VNZXJnZWRTdGF0ZShkZWZhdWx0VmFsdWUsIHtcbiAgICAgIHZhbHVlOiB2YWx1ZVxuICAgIH0pLFxuICAgICAgICBfdXNlTWVyZ2VkU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZU1lcmdlZFN0YXRlLCAyKSxcbiAgICAgICAgbWVyZ2VkVmFsdWUgPSBfdXNlTWVyZ2VkU3RhdGUyWzBdLFxuICAgICAgICBzZXRNZXJnZWRWYWx1ZSA9IF91c2VNZXJnZWRTdGF0ZTJbMV07XG4gICAgLyoqIFVuaXF1ZSByYXcgdmFsdWVzICovXG5cblxuICAgIHZhciBfdXNlTWVtbyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRvSW5uZXJWYWx1ZShtZXJnZWRWYWx1ZSwge1xuICAgICAgICBsYWJlbEluVmFsdWU6IG1lcmdlZExhYmVsSW5WYWx1ZSxcbiAgICAgICAgY29tYm9ib3g6IG1vZGUgPT09ICdjb21ib2JveCdcbiAgICAgIH0pO1xuICAgIH0sIFttZXJnZWRWYWx1ZSwgbWVyZ2VkTGFiZWxJblZhbHVlXSksXG4gICAgICAgIF91c2VNZW1vMiA9IF9zbGljZWRUb0FycmF5KF91c2VNZW1vLCAyKSxcbiAgICAgICAgbWVyZ2VkUmF3VmFsdWUgPSBfdXNlTWVtbzJbMF0sXG4gICAgICAgIG1lcmdlZFZhbHVlTWFwID0gX3VzZU1lbW8yWzFdO1xuICAgIC8qKiBXZSBjYWNoZSBhIHNldCBvZiByYXcgdmFsdWVzIHRvIHNwZWVkIHVwIGNoZWNrICovXG5cblxuICAgIHZhciByYXdWYWx1ZXMgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBuZXcgU2V0KG1lcmdlZFJhd1ZhbHVlKTtcbiAgICB9LCBbbWVyZ2VkUmF3VmFsdWVdKTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gT3B0aW9uID09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gU2V0IGJ5IG9wdGlvbiBsaXN0IGFjdGl2ZSwgaXQgd2lsbCBtZXJnZSBpbnRvIHNlYXJjaCBpbnB1dCB3aGVuIG1vZGUgaXMgYGNvbWJvYm94YFxuXG4gICAgdmFyIF91c2VTdGF0ZTUgPSB1c2VTdGF0ZShudWxsKSxcbiAgICAgICAgX3VzZVN0YXRlNiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTUsIDIpLFxuICAgICAgICBhY3RpdmVWYWx1ZSA9IF91c2VTdGF0ZTZbMF0sXG4gICAgICAgIHNldEFjdGl2ZVZhbHVlID0gX3VzZVN0YXRlNlsxXTtcblxuICAgIHZhciBfdXNlU3RhdGU3ID0gdXNlU3RhdGUoJycpLFxuICAgICAgICBfdXNlU3RhdGU4ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlNywgMiksXG4gICAgICAgIGlubmVyU2VhcmNoVmFsdWUgPSBfdXNlU3RhdGU4WzBdLFxuICAgICAgICBzZXRJbm5lclNlYXJjaFZhbHVlID0gX3VzZVN0YXRlOFsxXTtcblxuICAgIHZhciBtZXJnZWRTZWFyY2hWYWx1ZSA9IGlubmVyU2VhcmNoVmFsdWU7XG5cbiAgICBpZiAobW9kZSA9PT0gJ2NvbWJvYm94JyAmJiBtZXJnZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtZXJnZWRTZWFyY2hWYWx1ZSA9IG1lcmdlZFZhbHVlO1xuICAgIH0gZWxzZSBpZiAoc2VhcmNoVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbWVyZ2VkU2VhcmNoVmFsdWUgPSBzZWFyY2hWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKGlucHV0VmFsdWUpIHtcbiAgICAgIG1lcmdlZFNlYXJjaFZhbHVlID0gaW5wdXRWYWx1ZTtcbiAgICB9XG5cbiAgICB2YXIgbWVyZ2VkT3B0aW9ucyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgICBpZiAobmV3T3B0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBjb252ZXJ0Q2hpbGRyZW5Ub0RhdGEoY2hpbGRyZW4pO1xuICAgICAgfVxuICAgICAgLyoqXG4gICAgICAgKiBgdGFnc2Agc2hvdWxkIGZpbGwgdW4tbGlzdCBpdGVtLlxuICAgICAgICogVGhpcyBpcyBub3QgY29vbCBoZXJlIHNpbmNlIFRyZWVTZWxlY3QgZG8gbm90IG5lZWQgdGhpc1xuICAgICAgICovXG5cblxuICAgICAgaWYgKG1vZGUgPT09ICd0YWdzJyAmJiBmaWxsT3B0aW9uc1dpdGhNaXNzaW5nVmFsdWUpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IGZpbGxPcHRpb25zV2l0aE1pc3NpbmdWYWx1ZShuZXdPcHRpb25zLCBtZXJnZWRWYWx1ZSwgbWVyZ2VkT3B0aW9uTGFiZWxQcm9wLCBsYWJlbEluVmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3T3B0aW9ucyB8fCBbXTtcbiAgICB9LCBbb3B0aW9ucywgY2hpbGRyZW4sIG1vZGUsIG1lcmdlZFZhbHVlXSk7XG4gICAgdmFyIG1lcmdlZEZsYXR0ZW5PcHRpb25zID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmxhdHRlbk9wdGlvbnMobWVyZ2VkT3B0aW9ucywgcHJvcHMpO1xuICAgIH0sIFttZXJnZWRPcHRpb25zXSk7XG4gICAgdmFyIGdldFZhbHVlT3B0aW9uID0gdXNlQ2FjaGVPcHRpb25zKG1lcmdlZEZsYXR0ZW5PcHRpb25zKTsgLy8gRGlzcGxheSBvcHRpb25zIGZvciBPcHRpb25MaXN0XG5cbiAgICB2YXIgZGlzcGxheU9wdGlvbnMgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghbWVyZ2VkU2VhcmNoVmFsdWUgfHwgIW1lcmdlZFNob3dTZWFyY2gpIHtcbiAgICAgICAgcmV0dXJuIF90b0NvbnN1bWFibGVBcnJheShtZXJnZWRPcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZpbHRlcmVkT3B0aW9ucyA9IGZpbHRlck9wdGlvbnMobWVyZ2VkU2VhcmNoVmFsdWUsIG1lcmdlZE9wdGlvbnMsIHtcbiAgICAgICAgb3B0aW9uRmlsdGVyUHJvcDogb3B0aW9uRmlsdGVyUHJvcCxcbiAgICAgICAgZmlsdGVyT3B0aW9uOiBtb2RlID09PSAnY29tYm9ib3gnICYmIGZpbHRlck9wdGlvbiA9PT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IDogZmlsdGVyT3B0aW9uXG4gICAgICB9KTtcblxuICAgICAgaWYgKG1vZGUgPT09ICd0YWdzJyAmJiBmaWx0ZXJlZE9wdGlvbnMuZXZlcnkoZnVuY3Rpb24gKG9wdCkge1xuICAgICAgICByZXR1cm4gb3B0W29wdGlvbkZpbHRlclByb3BdICE9PSBtZXJnZWRTZWFyY2hWYWx1ZTtcbiAgICAgIH0pKSB7XG4gICAgICAgIGZpbHRlcmVkT3B0aW9ucy51bnNoaWZ0KHtcbiAgICAgICAgICB2YWx1ZTogbWVyZ2VkU2VhcmNoVmFsdWUsXG4gICAgICAgICAgbGFiZWw6IG1lcmdlZFNlYXJjaFZhbHVlLFxuICAgICAgICAgIGtleTogJ19fUkNfU0VMRUNUX1RBR19QTEFDRUhPTERFUl9fJ1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZpbHRlclNvcnQgJiYgQXJyYXkuaXNBcnJheShmaWx0ZXJlZE9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybiBfdG9Db25zdW1hYmxlQXJyYXkoZmlsdGVyZWRPcHRpb25zKS5zb3J0KGZpbHRlclNvcnQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmlsdGVyZWRPcHRpb25zO1xuICAgIH0sIFttZXJnZWRPcHRpb25zLCBtZXJnZWRTZWFyY2hWYWx1ZSwgbW9kZSwgbWVyZ2VkU2hvd1NlYXJjaCwgZmlsdGVyU29ydF0pO1xuICAgIHZhciBkaXNwbGF5RmxhdHRlbk9wdGlvbnMgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmbGF0dGVuT3B0aW9ucyhkaXNwbGF5T3B0aW9ucywgcHJvcHMpO1xuICAgIH0sIFtkaXNwbGF5T3B0aW9uc10pO1xuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAobGlzdFJlZi5jdXJyZW50ICYmIGxpc3RSZWYuY3VycmVudC5zY3JvbGxUbykge1xuICAgICAgICBsaXN0UmVmLmN1cnJlbnQuc2Nyb2xsVG8oMCk7XG4gICAgICB9XG4gICAgfSwgW21lcmdlZFNlYXJjaFZhbHVlXSk7IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gU2VsZWN0b3IgPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgdmFyIGRpc3BsYXlWYWx1ZXMgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0bXBWYWx1ZXMgPSBtZXJnZWRSYXdWYWx1ZS5tYXAoZnVuY3Rpb24gKHZhbCkge1xuICAgICAgICB2YXIgdmFsdWVPcHRpb25zID0gZ2V0VmFsdWVPcHRpb24oW3ZhbF0pO1xuICAgICAgICB2YXIgZGlzcGxheVZhbHVlID0gZ2V0TGFiZWxlZFZhbHVlKHZhbCwge1xuICAgICAgICAgIG9wdGlvbnM6IHZhbHVlT3B0aW9ucyxcbiAgICAgICAgICBwcmV2VmFsdWVNYXA6IG1lcmdlZFZhbHVlTWFwLFxuICAgICAgICAgIGxhYmVsSW5WYWx1ZTogbWVyZ2VkTGFiZWxJblZhbHVlLFxuICAgICAgICAgIG9wdGlvbkxhYmVsUHJvcDogbWVyZ2VkT3B0aW9uTGFiZWxQcm9wXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkaXNwbGF5VmFsdWUpLCB7fSwge1xuICAgICAgICAgIGRpc2FibGVkOiBpc1ZhbHVlRGlzYWJsZWQodmFsLCB2YWx1ZU9wdGlvbnMpXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghbW9kZSAmJiB0bXBWYWx1ZXMubGVuZ3RoID09PSAxICYmIHRtcFZhbHVlc1swXS52YWx1ZSA9PT0gbnVsbCAmJiB0bXBWYWx1ZXNbMF0ubGFiZWwgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdG1wVmFsdWVzO1xuICAgIH0sIFttZXJnZWRWYWx1ZSwgbWVyZ2VkT3B0aW9ucywgbW9kZV0pOyAvLyBQb2x5ZmlsbCB3aXRoIGNhY2hlIGxhYmVsXG5cbiAgICBkaXNwbGF5VmFsdWVzID0gdXNlQ2FjaGVEaXNwbGF5VmFsdWUoZGlzcGxheVZhbHVlcyk7XG5cbiAgICB2YXIgdHJpZ2dlclNlbGVjdCA9IGZ1bmN0aW9uIHRyaWdnZXJTZWxlY3QobmV3VmFsdWUsIGlzU2VsZWN0LCBzb3VyY2UpIHtcbiAgICAgIHZhciBuZXdWYWx1ZU9wdGlvbiA9IGdldFZhbHVlT3B0aW9uKFtuZXdWYWx1ZV0pO1xuICAgICAgdmFyIG91dE9wdGlvbiA9IGZpbmRWYWx1ZU9wdGlvbihbbmV3VmFsdWVdLCBuZXdWYWx1ZU9wdGlvbilbMF07XG5cbiAgICAgIGlmICghaW50ZXJuYWxQcm9wcy5za2lwVHJpZ2dlclNlbGVjdCkge1xuICAgICAgICAvLyBTa2lwIHRyaWdnZXIgYG9uU2VsZWN0YCBvciBgb25EZXNlbGVjdGAgaWYgY29uZmlndXJlZFxuICAgICAgICB2YXIgc2VsZWN0VmFsdWUgPSBtZXJnZWRMYWJlbEluVmFsdWUgPyBnZXRMYWJlbGVkVmFsdWUobmV3VmFsdWUsIHtcbiAgICAgICAgICBvcHRpb25zOiBuZXdWYWx1ZU9wdGlvbixcbiAgICAgICAgICBwcmV2VmFsdWVNYXA6IG1lcmdlZFZhbHVlTWFwLFxuICAgICAgICAgIGxhYmVsSW5WYWx1ZTogbWVyZ2VkTGFiZWxJblZhbHVlLFxuICAgICAgICAgIG9wdGlvbkxhYmVsUHJvcDogbWVyZ2VkT3B0aW9uTGFiZWxQcm9wXG4gICAgICAgIH0pIDogbmV3VmFsdWU7XG5cbiAgICAgICAgaWYgKGlzU2VsZWN0ICYmIG9uU2VsZWN0KSB7XG4gICAgICAgICAgb25TZWxlY3Qoc2VsZWN0VmFsdWUsIG91dE9wdGlvbik7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzU2VsZWN0ICYmIG9uRGVzZWxlY3QpIHtcbiAgICAgICAgICBvbkRlc2VsZWN0KHNlbGVjdFZhbHVlLCBvdXRPcHRpb24pO1xuICAgICAgICB9XG4gICAgICB9IC8vIFRyaWdnZXIgaW50ZXJuYWwgZXZlbnRcblxuXG4gICAgICBpZiAodXNlSW50ZXJuYWxQcm9wcykge1xuICAgICAgICBpZiAoaXNTZWxlY3QgJiYgaW50ZXJuYWxQcm9wcy5vblJhd1NlbGVjdCkge1xuICAgICAgICAgIGludGVybmFsUHJvcHMub25SYXdTZWxlY3QobmV3VmFsdWUsIG91dE9wdGlvbiwgc291cmNlKTtcbiAgICAgICAgfSBlbHNlIGlmICghaXNTZWxlY3QgJiYgaW50ZXJuYWxQcm9wcy5vblJhd0Rlc2VsZWN0KSB7XG4gICAgICAgICAgaW50ZXJuYWxQcm9wcy5vblJhd0Rlc2VsZWN0KG5ld1ZhbHVlLCBvdXRPcHRpb24sIHNvdXJjZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9OyAvLyBXZSBuZWVkIGNhY2hlIG9wdGlvbnMgaGVyZSBpbiBjYXNlIHVzZXIgdXBkYXRlIHRoZSBvcHRpb24gbGlzdFxuXG5cbiAgICB2YXIgX3VzZVN0YXRlOSA9IHVzZVN0YXRlKFtdKSxcbiAgICAgICAgX3VzZVN0YXRlMTAgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU5LCAyKSxcbiAgICAgICAgcHJldlZhbHVlT3B0aW9ucyA9IF91c2VTdGF0ZTEwWzBdLFxuICAgICAgICBzZXRQcmV2VmFsdWVPcHRpb25zID0gX3VzZVN0YXRlMTBbMV07XG5cbiAgICB2YXIgdHJpZ2dlckNoYW5nZSA9IGZ1bmN0aW9uIHRyaWdnZXJDaGFuZ2UobmV3UmF3VmFsdWVzKSB7XG4gICAgICBpZiAodXNlSW50ZXJuYWxQcm9wcyAmJiBpbnRlcm5hbFByb3BzLnNraXBUcmlnZ2VyQ2hhbmdlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIG5ld1Jhd1ZhbHVlc09wdGlvbnMgPSBnZXRWYWx1ZU9wdGlvbihuZXdSYXdWYWx1ZXMpO1xuICAgICAgdmFyIG91dFZhbHVlcyA9IHRvT3V0ZXJWYWx1ZXMoQXJyYXkuZnJvbShuZXdSYXdWYWx1ZXMpLCB7XG4gICAgICAgIGxhYmVsSW5WYWx1ZTogbWVyZ2VkTGFiZWxJblZhbHVlLFxuICAgICAgICBvcHRpb25zOiBuZXdSYXdWYWx1ZXNPcHRpb25zLFxuICAgICAgICBnZXRMYWJlbGVkVmFsdWU6IGdldExhYmVsZWRWYWx1ZSxcbiAgICAgICAgcHJldlZhbHVlTWFwOiBtZXJnZWRWYWx1ZU1hcCxcbiAgICAgICAgb3B0aW9uTGFiZWxQcm9wOiBtZXJnZWRPcHRpb25MYWJlbFByb3BcbiAgICAgIH0pO1xuICAgICAgdmFyIG91dFZhbHVlID0gaXNNdWx0aXBsZSA/IG91dFZhbHVlcyA6IG91dFZhbHVlc1swXTsgLy8gU2tpcCB0cmlnZ2VyIGlmIHByZXYgJiBjdXJyZW50IHZhbHVlIGlzIGJvdGggZW1wdHlcblxuICAgICAgaWYgKG9uQ2hhbmdlICYmIChtZXJnZWRSYXdWYWx1ZS5sZW5ndGggIT09IDAgfHwgb3V0VmFsdWVzLmxlbmd0aCAhPT0gMCkpIHtcbiAgICAgICAgdmFyIG91dE9wdGlvbnMgPSBmaW5kVmFsdWVPcHRpb24obmV3UmF3VmFsdWVzLCBuZXdSYXdWYWx1ZXNPcHRpb25zLCB7XG4gICAgICAgICAgcHJldlZhbHVlT3B0aW9uczogcHJldlZhbHVlT3B0aW9uc1xuICAgICAgICB9KTsgLy8gV2Ugd2lsbCBjYWNoZSBvcHRpb24gaW4gY2FzZSBpdCByZW1vdmVkIGJ5IGFqYXhcblxuICAgICAgICBzZXRQcmV2VmFsdWVPcHRpb25zKG91dE9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24sIGluZGV4KSB7XG4gICAgICAgICAgdmFyIGNsb25lID0gX29iamVjdFNwcmVhZCh7fSwgb3B0aW9uKTtcblxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjbG9uZSwgJ19JTlRFUk5BTF9PUFRJT05fVkFMVUVfJywge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXdSYXdWYWx1ZXNbaW5kZXhdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBjbG9uZTtcbiAgICAgICAgfSkpO1xuICAgICAgICBvbkNoYW5nZShvdXRWYWx1ZSwgaXNNdWx0aXBsZSA/IG91dE9wdGlvbnMgOiBvdXRPcHRpb25zWzBdKTtcbiAgICAgIH1cblxuICAgICAgc2V0TWVyZ2VkVmFsdWUob3V0VmFsdWUpO1xuICAgIH07XG5cbiAgICB2YXIgb25JbnRlcm5hbFNlbGVjdCA9IGZ1bmN0aW9uIG9uSW50ZXJuYWxTZWxlY3QobmV3VmFsdWUsIF9yZWYpIHtcbiAgICAgIHZhciBzZWxlY3RlZCA9IF9yZWYuc2VsZWN0ZWQsXG4gICAgICAgICAgc291cmNlID0gX3JlZi5zb3VyY2U7XG5cbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBuZXdSYXdWYWx1ZTtcblxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgICAgbmV3UmF3VmFsdWUgPSBuZXcgU2V0KG1lcmdlZFJhd1ZhbHVlKTtcblxuICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICBuZXdSYXdWYWx1ZS5hZGQobmV3VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1Jhd1ZhbHVlLmRlbGV0ZShuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1Jhd1ZhbHVlID0gbmV3IFNldCgpO1xuICAgICAgICBuZXdSYXdWYWx1ZS5hZGQobmV3VmFsdWUpO1xuICAgICAgfSAvLyBNdWx0aXBsZSBhbHdheXMgdHJpZ2dlciBjaGFuZ2UgYW5kIHNpbmdsZSBzaG91bGQgY2hhbmdlIGlmIHZhbHVlIGNoYW5nZWRcblxuXG4gICAgICBpZiAoaXNNdWx0aXBsZSB8fCAhaXNNdWx0aXBsZSAmJiBBcnJheS5mcm9tKG1lcmdlZFJhd1ZhbHVlKVswXSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgdHJpZ2dlckNoYW5nZShBcnJheS5mcm9tKG5ld1Jhd1ZhbHVlKSk7XG4gICAgICB9IC8vIFRyaWdnZXIgYG9uU2VsZWN0YC4gU2luZ2xlIG1vZGUgYWx3YXlzIHRyaWdnZXIgc2VsZWN0XG5cblxuICAgICAgdHJpZ2dlclNlbGVjdChuZXdWYWx1ZSwgIWlzTXVsdGlwbGUgfHwgc2VsZWN0ZWQsIHNvdXJjZSk7IC8vIENsZWFuIHNlYXJjaCB2YWx1ZSBpZiBzaW5nbGUgb3IgY29uZmlndXJlZFxuXG4gICAgICBpZiAobW9kZSA9PT0gJ2NvbWJvYm94Jykge1xuICAgICAgICBzZXRJbm5lclNlYXJjaFZhbHVlKFN0cmluZyhuZXdWYWx1ZSkpO1xuICAgICAgICBzZXRBY3RpdmVWYWx1ZSgnJyk7XG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlIHx8IGF1dG9DbGVhclNlYXJjaFZhbHVlKSB7XG4gICAgICAgIHNldElubmVyU2VhcmNoVmFsdWUoJycpO1xuICAgICAgICBzZXRBY3RpdmVWYWx1ZSgnJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBvbkludGVybmFsT3B0aW9uU2VsZWN0ID0gZnVuY3Rpb24gb25JbnRlcm5hbE9wdGlvblNlbGVjdChuZXdWYWx1ZSwgaW5mbykge1xuICAgICAgb25JbnRlcm5hbFNlbGVjdChuZXdWYWx1ZSwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBpbmZvKSwge30sIHtcbiAgICAgICAgc291cmNlOiAnb3B0aW9uJ1xuICAgICAgfSkpO1xuICAgIH07XG5cbiAgICB2YXIgb25JbnRlcm5hbFNlbGVjdGlvblNlbGVjdCA9IGZ1bmN0aW9uIG9uSW50ZXJuYWxTZWxlY3Rpb25TZWxlY3QobmV3VmFsdWUsIGluZm8pIHtcbiAgICAgIG9uSW50ZXJuYWxTZWxlY3QobmV3VmFsdWUsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaW5mbyksIHt9LCB7XG4gICAgICAgIHNvdXJjZTogJ3NlbGVjdGlvbidcbiAgICAgIH0pKTtcbiAgICB9OyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBJbnB1dCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBPbmx5IHdvcmtzIGluIGBjb21ib2JveGBcblxuXG4gICAgdmFyIGN1c3RvbWl6ZUlucHV0RWxlbWVudCA9IG1vZGUgPT09ICdjb21ib2JveCcgJiYgZ2V0SW5wdXRFbGVtZW50ICYmIGdldElucHV0RWxlbWVudCgpIHx8IG51bGw7IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBPcGVuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgdmFyIF91c2VNZXJnZWRTdGF0ZTMgPSB1c2VNZXJnZWRTdGF0ZSh1bmRlZmluZWQsIHtcbiAgICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdE9wZW4sXG4gICAgICB2YWx1ZTogb3BlblxuICAgIH0pLFxuICAgICAgICBfdXNlTWVyZ2VkU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZU1lcmdlZFN0YXRlMywgMiksXG4gICAgICAgIGlubmVyT3BlbiA9IF91c2VNZXJnZWRTdGF0ZTRbMF0sXG4gICAgICAgIHNldElubmVyT3BlbiA9IF91c2VNZXJnZWRTdGF0ZTRbMV07XG5cbiAgICB2YXIgbWVyZ2VkT3BlbiA9IGlubmVyT3BlbjsgLy8gTm90IHRyaWdnZXIgYG9wZW5gIGluIGBjb21ib2JveGAgd2hlbiBgbm90Rm91bmRDb250ZW50YCBpcyBlbXB0eVxuXG4gICAgdmFyIGVtcHR5TGlzdENvbnRlbnQgPSAhbm90Rm91bmRDb250ZW50ICYmICFkaXNwbGF5T3B0aW9ucy5sZW5ndGg7XG5cbiAgICBpZiAoZGlzYWJsZWQgfHwgZW1wdHlMaXN0Q29udGVudCAmJiBtZXJnZWRPcGVuICYmIG1vZGUgPT09ICdjb21ib2JveCcpIHtcbiAgICAgIG1lcmdlZE9wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgdHJpZ2dlck9wZW4gPSBlbXB0eUxpc3RDb250ZW50ID8gZmFsc2UgOiBtZXJnZWRPcGVuO1xuXG4gICAgdmFyIG9uVG9nZ2xlT3BlbiA9IGZ1bmN0aW9uIG9uVG9nZ2xlT3BlbihuZXdPcGVuKSB7XG4gICAgICB2YXIgbmV4dE9wZW4gPSBuZXdPcGVuICE9PSB1bmRlZmluZWQgPyBuZXdPcGVuIDogIW1lcmdlZE9wZW47XG5cbiAgICAgIGlmIChpbm5lck9wZW4gIT09IG5leHRPcGVuICYmICFkaXNhYmxlZCkge1xuICAgICAgICBzZXRJbm5lck9wZW4obmV4dE9wZW4pO1xuXG4gICAgICAgIGlmIChvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSkge1xuICAgICAgICAgIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlKG5leHRPcGVuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB1c2VTZWxlY3RUcmlnZ2VyQ29udHJvbChbY29udGFpbmVyUmVmLmN1cnJlbnQsIHRyaWdnZXJSZWYuY3VycmVudCAmJiB0cmlnZ2VyUmVmLmN1cnJlbnQuZ2V0UG9wdXBFbGVtZW50KCldLCB0cmlnZ2VyT3Blbiwgb25Ub2dnbGVPcGVuKTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gU2VhcmNoID09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICB2YXIgdHJpZ2dlclNlYXJjaCA9IGZ1bmN0aW9uIHRyaWdnZXJTZWFyY2goc2VhcmNoVGV4dCwgZnJvbVR5cGluZywgaXNDb21wb3NpdGluZykge1xuICAgICAgdmFyIHJldCA9IHRydWU7XG4gICAgICB2YXIgbmV3U2VhcmNoVGV4dCA9IHNlYXJjaFRleHQ7XG4gICAgICBzZXRBY3RpdmVWYWx1ZShudWxsKTsgLy8gQ2hlY2sgaWYgbWF0Y2ggdGhlIGB0b2tlblNlcGFyYXRvcnNgXG5cbiAgICAgIHZhciBwYXRjaExhYmVscyA9IGlzQ29tcG9zaXRpbmcgPyBudWxsIDogZ2V0U2VwYXJhdGVkQ29udGVudChzZWFyY2hUZXh0LCB0b2tlblNlcGFyYXRvcnMpO1xuICAgICAgdmFyIHBhdGNoUmF3VmFsdWVzID0gcGF0Y2hMYWJlbHM7XG5cbiAgICAgIGlmIChtb2RlID09PSAnY29tYm9ib3gnKSB7XG4gICAgICAgIC8vIE9ubHkgdHlwaW5nIHdpbGwgdHJpZ2dlciBvbkNoYW5nZVxuICAgICAgICBpZiAoZnJvbVR5cGluZykge1xuICAgICAgICAgIHRyaWdnZXJDaGFuZ2UoW25ld1NlYXJjaFRleHRdKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwYXRjaExhYmVscykge1xuICAgICAgICBuZXdTZWFyY2hUZXh0ID0gJyc7XG5cbiAgICAgICAgaWYgKG1vZGUgIT09ICd0YWdzJykge1xuICAgICAgICAgIHBhdGNoUmF3VmFsdWVzID0gcGF0Y2hMYWJlbHMubWFwKGZ1bmN0aW9uIChsYWJlbCkge1xuICAgICAgICAgICAgdmFyIGl0ZW0gPSBtZXJnZWRGbGF0dGVuT3B0aW9ucy5maW5kKGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgICAgICAgICB2YXIgZGF0YSA9IF9yZWYyLmRhdGE7XG4gICAgICAgICAgICAgIHJldHVybiBkYXRhW21lcmdlZE9wdGlvbkxhYmVsUHJvcF0gPT09IGxhYmVsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbSA/IGl0ZW0uZGF0YS52YWx1ZSA6IG51bGw7XG4gICAgICAgICAgfSkuZmlsdGVyKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWwgIT09IG51bGw7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbmV3UmF3VmFsdWVzID0gQXJyYXkuZnJvbShuZXcgU2V0KFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkobWVyZ2VkUmF3VmFsdWUpLCBfdG9Db25zdW1hYmxlQXJyYXkocGF0Y2hSYXdWYWx1ZXMpKSkpO1xuICAgICAgICB0cmlnZ2VyQ2hhbmdlKG5ld1Jhd1ZhbHVlcyk7XG4gICAgICAgIG5ld1Jhd1ZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uIChuZXdSYXdWYWx1ZSkge1xuICAgICAgICAgIHRyaWdnZXJTZWxlY3QobmV3UmF3VmFsdWUsIHRydWUsICdpbnB1dCcpO1xuICAgICAgICB9KTsgLy8gU2hvdWxkIGNsb3NlIHdoZW4gcGFzdGUgZmluaXNoXG5cbiAgICAgICAgb25Ub2dnbGVPcGVuKGZhbHNlKTsgLy8gVGVsbCBTZWxlY3RvciB0aGF0IGJyZWFrIG5leHQgYWN0aW9uc1xuXG4gICAgICAgIHJldCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBzZXRJbm5lclNlYXJjaFZhbHVlKG5ld1NlYXJjaFRleHQpO1xuXG4gICAgICBpZiAob25TZWFyY2ggJiYgbWVyZ2VkU2VhcmNoVmFsdWUgIT09IG5ld1NlYXJjaFRleHQpIHtcbiAgICAgICAgb25TZWFyY2gobmV3U2VhcmNoVGV4dCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfTsgLy8gT25seSB0cmlnZ2VyZWQgd2hlbiBtZW51IGlzIGNsb3NlZCAmIG1vZGUgaXMgdGFnc1xuICAgIC8vIElmIG1lbnUgaXMgb3BlbiwgT3B0aW9uTGlzdCB3aWxsIHRha2UgY2hhcmdlXG4gICAgLy8gSWYgbW9kZSBpc24ndCB0YWdzLCBwcmVzcyBlbnRlciBpcyBub3QgbWVhbmluZ2Z1bCB3aGVuIHlvdSBjYW4ndCBzZWUgYW55IG9wdGlvblxuXG5cbiAgICB2YXIgb25TZWFyY2hTdWJtaXQgPSBmdW5jdGlvbiBvblNlYXJjaFN1Ym1pdChzZWFyY2hUZXh0KSB7XG4gICAgICAvLyBwcmV2ZW50IGVtcHR5IHRhZ3MgZnJvbSBhcHBlYXJpbmcgd2hlbiB5b3UgY2xpY2sgdGhlIEVudGVyIGJ1dHRvblxuICAgICAgaWYgKCFzZWFyY2hUZXh0IHx8ICFzZWFyY2hUZXh0LnRyaW0oKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBuZXdSYXdWYWx1ZXMgPSBBcnJheS5mcm9tKG5ldyBTZXQoW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShtZXJnZWRSYXdWYWx1ZSksIFtzZWFyY2hUZXh0XSkpKTtcbiAgICAgIHRyaWdnZXJDaGFuZ2UobmV3UmF3VmFsdWVzKTtcbiAgICAgIG5ld1Jhd1ZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uIChuZXdSYXdWYWx1ZSkge1xuICAgICAgICB0cmlnZ2VyU2VsZWN0KG5ld1Jhd1ZhbHVlLCB0cnVlLCAnaW5wdXQnKTtcbiAgICAgIH0pO1xuICAgICAgc2V0SW5uZXJTZWFyY2hWYWx1ZSgnJyk7XG4gICAgfTsgLy8gQ2xvc2UgZHJvcGRvd24gd2hlbiBkaXNhYmxlZCBjaGFuZ2VcblxuXG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChpbm5lck9wZW4gJiYgISFkaXNhYmxlZCkge1xuICAgICAgICBzZXRJbm5lck9wZW4oZmFsc2UpO1xuICAgICAgfVxuICAgIH0sIFtkaXNhYmxlZF0pOyAvLyBDbG9zZSB3aWxsIGNsZWFuIHVwIHNpbmdsZSBtb2RlIHNlYXJjaCB0ZXh0XG5cbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFtZXJnZWRPcGVuICYmICFpc011bHRpcGxlICYmIG1vZGUgIT09ICdjb21ib2JveCcpIHtcbiAgICAgICAgdHJpZ2dlclNlYXJjaCgnJywgZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LCBbbWVyZ2VkT3Blbl0pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IEtleWJvYXJkID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC8qKlxuICAgICAqIFdlIHJlY29yZCBpbnB1dCB2YWx1ZSBoZXJlIHRvIGNoZWNrIGlmIGNhbiBwcmVzcyB0byBjbGVhbiB1cCBieSBiYWNrc3BhY2VcbiAgICAgKiAtIG51bGw6IEtleSBpcyBub3QgZG93biwgdGhpcyBpcyByZXNldCBieSBrZXkgdXBcbiAgICAgKiAtIHRydWU6IFNlYXJjaCB0ZXh0IGlzIGVtcHR5IHdoZW4gZmlyc3QgdGltZSBiYWNrc3BhY2UgZG93blxuICAgICAqIC0gZmFsc2U6IFNlYXJjaCB0ZXh0IGlzIG5vdCBlbXB0eSB3aGVuIGZpcnN0IHRpbWUgYmFja3NwYWNlIGRvd25cbiAgICAgKi9cblxuICAgIHZhciBfdXNlTG9jayA9IHVzZUxvY2soKSxcbiAgICAgICAgX3VzZUxvY2syID0gX3NsaWNlZFRvQXJyYXkoX3VzZUxvY2ssIDIpLFxuICAgICAgICBnZXRDbGVhckxvY2sgPSBfdXNlTG9jazJbMF0sXG4gICAgICAgIHNldENsZWFyTG9jayA9IF91c2VMb2NrMlsxXTsgLy8gS2V5RG93blxuXG5cbiAgICB2YXIgb25JbnRlcm5hbEtleURvd24gPSBmdW5jdGlvbiBvbkludGVybmFsS2V5RG93bihldmVudCkge1xuICAgICAgdmFyIGNsZWFyTG9jayA9IGdldENsZWFyTG9jaygpO1xuICAgICAgdmFyIHdoaWNoID0gZXZlbnQud2hpY2g7XG5cbiAgICAgIGlmICh3aGljaCA9PT0gS2V5Q29kZS5FTlRFUikge1xuICAgICAgICAvLyBEbyBub3Qgc3VibWl0IGZvcm0gd2hlbiB0eXBlIGluIHRoZSBpbnB1dFxuICAgICAgICBpZiAobW9kZSAhPT0gJ2NvbWJvYm94Jykge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gLy8gV2Ugb25seSBtYW5hZ2Ugb3BlbiBzdGF0ZSBoZXJlLCBjbG9zZSBsb2dpYyBzaG91bGQgaGFuZGxlIGJ5IGxpc3QgY29tcG9uZW50XG5cblxuICAgICAgICBpZiAoIW1lcmdlZE9wZW4pIHtcbiAgICAgICAgICBvblRvZ2dsZU9wZW4odHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2V0Q2xlYXJMb2NrKCEhbWVyZ2VkU2VhcmNoVmFsdWUpOyAvLyBSZW1vdmUgdmFsdWUgYnkgYGJhY2tzcGFjZWBcblxuICAgICAgaWYgKHdoaWNoID09PSBLZXlDb2RlLkJBQ0tTUEFDRSAmJiAhY2xlYXJMb2NrICYmIGlzTXVsdGlwbGUgJiYgIW1lcmdlZFNlYXJjaFZhbHVlICYmIG1lcmdlZFJhd1ZhbHVlLmxlbmd0aCkge1xuICAgICAgICB2YXIgcmVtb3ZlSW5mbyA9IHJlbW92ZUxhc3RFbmFibGVkVmFsdWUoZGlzcGxheVZhbHVlcywgbWVyZ2VkUmF3VmFsdWUpO1xuXG4gICAgICAgIGlmIChyZW1vdmVJbmZvLnJlbW92ZWRWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHRyaWdnZXJDaGFuZ2UocmVtb3ZlSW5mby52YWx1ZXMpO1xuICAgICAgICAgIHRyaWdnZXJTZWxlY3QocmVtb3ZlSW5mby5yZW1vdmVkVmFsdWUsIGZhbHNlLCAnaW5wdXQnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgcmVzdCA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIHJlc3RbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVyZ2VkT3BlbiAmJiBsaXN0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgdmFyIF9saXN0UmVmJGN1cnJlbnQyO1xuXG4gICAgICAgIChfbGlzdFJlZiRjdXJyZW50MiA9IGxpc3RSZWYuY3VycmVudCkub25LZXlEb3duLmFwcGx5KF9saXN0UmVmJGN1cnJlbnQyLCBbZXZlbnRdLmNvbmNhdChyZXN0KSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvbktleURvd24pIHtcbiAgICAgICAgb25LZXlEb3duLmFwcGx5KHZvaWQgMCwgW2V2ZW50XS5jb25jYXQocmVzdCkpO1xuICAgICAgfVxuICAgIH07IC8vIEtleVVwXG5cblxuICAgIHZhciBvbkludGVybmFsS2V5VXAgPSBmdW5jdGlvbiBvbkludGVybmFsS2V5VXAoZXZlbnQpIHtcbiAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgcmVzdCA9IG5ldyBBcnJheShfbGVuMiA+IDEgPyBfbGVuMiAtIDEgOiAwKSwgX2tleTIgPSAxOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgIHJlc3RbX2tleTIgLSAxXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXJnZWRPcGVuICYmIGxpc3RSZWYuY3VycmVudCkge1xuICAgICAgICB2YXIgX2xpc3RSZWYkY3VycmVudDM7XG5cbiAgICAgICAgKF9saXN0UmVmJGN1cnJlbnQzID0gbGlzdFJlZi5jdXJyZW50KS5vbktleVVwLmFwcGx5KF9saXN0UmVmJGN1cnJlbnQzLCBbZXZlbnRdLmNvbmNhdChyZXN0KSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvbktleVVwKSB7XG4gICAgICAgIG9uS2V5VXAuYXBwbHkodm9pZCAwLCBbZXZlbnRdLmNvbmNhdChyZXN0KSk7XG4gICAgICB9XG4gICAgfTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT0gRm9jdXMgLyBCbHVyID09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAvKiogUmVjb3JkIHJlYWwgZm9jdXMgc3RhdHVzICovXG5cblxuICAgIHZhciBmb2N1c1JlZiA9IHVzZVJlZihmYWxzZSk7XG5cbiAgICB2YXIgb25Db250YWluZXJGb2N1cyA9IGZ1bmN0aW9uIG9uQ29udGFpbmVyRm9jdXMoKSB7XG4gICAgICBzZXRNb2NrRm9jdXNlZCh0cnVlKTtcblxuICAgICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICBpZiAob25Gb2N1cyAmJiAhZm9jdXNSZWYuY3VycmVudCkge1xuICAgICAgICAgIG9uRm9jdXMuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICAgICAgICB9IC8vIGBzaG93QWN0aW9uYCBzaG91bGQgaGFuZGxlIGBmb2N1c2AgaWYgc2V0XG5cblxuICAgICAgICBpZiAoc2hvd0FjdGlvbi5pbmNsdWRlcygnZm9jdXMnKSkge1xuICAgICAgICAgIG9uVG9nZ2xlT3Blbih0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb2N1c1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIG9uQ29udGFpbmVyQmx1ciA9IGZ1bmN0aW9uIG9uQ29udGFpbmVyQmx1cigpIHtcbiAgICAgIHNldE1vY2tGb2N1c2VkKGZhbHNlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvY3VzUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgb25Ub2dnbGVPcGVuKGZhbHNlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVyZ2VkU2VhcmNoVmFsdWUpIHtcbiAgICAgICAgLy8gYHRhZ3NgIG1vZGUgc2hvdWxkIG1vdmUgYHNlYXJjaFZhbHVlYCBpbnRvIHZhbHVlc1xuICAgICAgICBpZiAobW9kZSA9PT0gJ3RhZ3MnKSB7XG4gICAgICAgICAgdHJpZ2dlclNlYXJjaCgnJywgZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgICB0cmlnZ2VyQ2hhbmdlKEFycmF5LmZyb20obmV3IFNldChbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KG1lcmdlZFJhd1ZhbHVlKSwgW21lcmdlZFNlYXJjaFZhbHVlXSkpKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgIC8vIGBtdWx0aXBsZWAgbW9kZSBvbmx5IGNsZWFuIHRoZSBzZWFyY2ggdmFsdWUgYnV0IG5vdCB0cmlnZ2VyIGV2ZW50XG4gICAgICAgICAgc2V0SW5uZXJTZWFyY2hWYWx1ZSgnJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG9uQmx1cikge1xuICAgICAgICBvbkJsdXIuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgYWN0aXZlVGltZW91dElkcyA9IFtdO1xuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICBhY3RpdmVUaW1lb3V0SWRzLmZvckVhY2goZnVuY3Rpb24gKHRpbWVvdXRJZCkge1xuICAgICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGl2ZVRpbWVvdXRJZHMuc3BsaWNlKDAsIGFjdGl2ZVRpbWVvdXRJZHMubGVuZ3RoKTtcbiAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgdmFyIG9uSW50ZXJuYWxNb3VzZURvd24gPSBmdW5jdGlvbiBvbkludGVybmFsTW91c2VEb3duKGV2ZW50KSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgdmFyIHBvcHVwRWxlbWVudCA9IHRyaWdnZXJSZWYuY3VycmVudCAmJiB0cmlnZ2VyUmVmLmN1cnJlbnQuZ2V0UG9wdXBFbGVtZW50KCk7IC8vIFdlIHNob3VsZCBnaXZlIGZvY3VzIGJhY2sgdG8gc2VsZWN0b3IgaWYgY2xpY2tlZCBpdGVtIGlzIG5vdCBmb2N1c2FibGVcblxuICAgICAgaWYgKHBvcHVwRWxlbWVudCAmJiBwb3B1cEVsZW1lbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICB2YXIgdGltZW91dElkID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIGluZGV4ID0gYWN0aXZlVGltZW91dElkcy5pbmRleE9mKHRpbWVvdXRJZCk7XG5cbiAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBhY3RpdmVUaW1lb3V0SWRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FuY2VsU2V0TW9ja0ZvY3VzZWQoKTtcblxuICAgICAgICAgIGlmICghbW9iaWxlICYmICFwb3B1cEVsZW1lbnQuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHZhciBfc2VsZWN0b3JSZWYkY3VycmVudDM7XG5cbiAgICAgICAgICAgIChfc2VsZWN0b3JSZWYkY3VycmVudDMgPSBzZWxlY3RvclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfc2VsZWN0b3JSZWYkY3VycmVudDMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zZWxlY3RvclJlZiRjdXJyZW50My5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGl2ZVRpbWVvdXRJZHMucHVzaCh0aW1lb3V0SWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAob25Nb3VzZURvd24pIHtcbiAgICAgICAgZm9yICh2YXIgX2xlbjMgPSBhcmd1bWVudHMubGVuZ3RoLCByZXN0QXJncyA9IG5ldyBBcnJheShfbGVuMyA+IDEgPyBfbGVuMyAtIDEgOiAwKSwgX2tleTMgPSAxOyBfa2V5MyA8IF9sZW4zOyBfa2V5MysrKSB7XG4gICAgICAgICAgcmVzdEFyZ3NbX2tleTMgLSAxXSA9IGFyZ3VtZW50c1tfa2V5M107XG4gICAgICAgIH1cblxuICAgICAgICBvbk1vdXNlRG93bi5hcHBseSh2b2lkIDAsIFtldmVudF0uY29uY2F0KHJlc3RBcmdzKSk7XG4gICAgICB9XG4gICAgfTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PSBBY2Nlc3NpYmlsaXR5ID09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuICAgIHZhciBfdXNlU3RhdGUxMSA9IHVzZVN0YXRlKDApLFxuICAgICAgICBfdXNlU3RhdGUxMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTExLCAyKSxcbiAgICAgICAgYWNjZXNzaWJpbGl0eUluZGV4ID0gX3VzZVN0YXRlMTJbMF0sXG4gICAgICAgIHNldEFjY2Vzc2liaWxpdHlJbmRleCA9IF91c2VTdGF0ZTEyWzFdO1xuXG4gICAgdmFyIG1lcmdlZERlZmF1bHRBY3RpdmVGaXJzdE9wdGlvbiA9IGRlZmF1bHRBY3RpdmVGaXJzdE9wdGlvbiAhPT0gdW5kZWZpbmVkID8gZGVmYXVsdEFjdGl2ZUZpcnN0T3B0aW9uIDogbW9kZSAhPT0gJ2NvbWJvYm94JztcblxuICAgIHZhciBvbkFjdGl2ZVZhbHVlID0gZnVuY3Rpb24gb25BY3RpdmVWYWx1ZShhY3RpdmUsIGluZGV4KSB7XG4gICAgICB2YXIgX3JlZjMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9LFxuICAgICAgICAgIF9yZWYzJHNvdXJjZSA9IF9yZWYzLnNvdXJjZSxcbiAgICAgICAgICBzb3VyY2UgPSBfcmVmMyRzb3VyY2UgPT09IHZvaWQgMCA/ICdrZXlib2FyZCcgOiBfcmVmMyRzb3VyY2U7XG5cbiAgICAgIHNldEFjY2Vzc2liaWxpdHlJbmRleChpbmRleCk7XG5cbiAgICAgIGlmIChiYWNrZmlsbCAmJiBtb2RlID09PSAnY29tYm9ib3gnICYmIGFjdGl2ZSAhPT0gbnVsbCAmJiBzb3VyY2UgPT09ICdrZXlib2FyZCcpIHtcbiAgICAgICAgc2V0QWN0aXZlVmFsdWUoU3RyaW5nKGFjdGl2ZSkpO1xuICAgICAgfVxuICAgIH07IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFBvcHVwID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbiAgICB2YXIgX3VzZVN0YXRlMTMgPSB1c2VTdGF0ZShudWxsKSxcbiAgICAgICAgX3VzZVN0YXRlMTQgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUxMywgMiksXG4gICAgICAgIGNvbnRhaW5lcldpZHRoID0gX3VzZVN0YXRlMTRbMF0sXG4gICAgICAgIHNldENvbnRhaW5lcldpZHRoID0gX3VzZVN0YXRlMTRbMV07XG5cbiAgICB2YXIgX3VzZVN0YXRlMTUgPSB1c2VTdGF0ZSh7fSksXG4gICAgICAgIF91c2VTdGF0ZTE2ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMTUsIDIpLFxuICAgICAgICBmb3JjZVVwZGF0ZSA9IF91c2VTdGF0ZTE2WzFdOyAvLyBXZSBuZWVkIGZvcmNlIHVwZGF0ZSBoZXJlIHNpbmNlIHBvcHVwIGRvbSBpcyByZW5kZXIgYXN5bmNcblxuXG4gICAgZnVuY3Rpb24gb25Qb3B1cE1vdXNlRW50ZXIoKSB7XG4gICAgICBmb3JjZVVwZGF0ZSh7fSk7XG4gICAgfVxuXG4gICAgdXNlTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICh0cmlnZ2VyT3Blbikge1xuICAgICAgICB2YXIgbmV3V2lkdGggPSBNYXRoLmNlaWwoY29udGFpbmVyUmVmLmN1cnJlbnQub2Zmc2V0V2lkdGgpO1xuXG4gICAgICAgIGlmIChjb250YWluZXJXaWR0aCAhPT0gbmV3V2lkdGgpIHtcbiAgICAgICAgICBzZXRDb250YWluZXJXaWR0aChuZXdXaWR0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbdHJpZ2dlck9wZW5dKTtcbiAgICB2YXIgcG9wdXBOb2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoT3B0aW9uTGlzdCwge1xuICAgICAgcmVmOiBsaXN0UmVmLFxuICAgICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICBpZDogbWVyZ2VkSWQsXG4gICAgICBvcGVuOiBtZXJnZWRPcGVuLFxuICAgICAgY2hpbGRyZW5Bc0RhdGE6ICFvcHRpb25zLFxuICAgICAgb3B0aW9uczogZGlzcGxheU9wdGlvbnMsXG4gICAgICBmbGF0dGVuT3B0aW9uczogZGlzcGxheUZsYXR0ZW5PcHRpb25zLFxuICAgICAgbXVsdGlwbGU6IGlzTXVsdGlwbGUsXG4gICAgICB2YWx1ZXM6IHJhd1ZhbHVlcyxcbiAgICAgIGhlaWdodDogbGlzdEhlaWdodCxcbiAgICAgIGl0ZW1IZWlnaHQ6IGxpc3RJdGVtSGVpZ2h0LFxuICAgICAgb25TZWxlY3Q6IG9uSW50ZXJuYWxPcHRpb25TZWxlY3QsXG4gICAgICBvblRvZ2dsZU9wZW46IG9uVG9nZ2xlT3BlbixcbiAgICAgIG9uQWN0aXZlVmFsdWU6IG9uQWN0aXZlVmFsdWUsXG4gICAgICBkZWZhdWx0QWN0aXZlRmlyc3RPcHRpb246IG1lcmdlZERlZmF1bHRBY3RpdmVGaXJzdE9wdGlvbixcbiAgICAgIG5vdEZvdW5kQ29udGVudDogbm90Rm91bmRDb250ZW50LFxuICAgICAgb25TY3JvbGw6IG9uUG9wdXBTY3JvbGwsXG4gICAgICBzZWFyY2hWYWx1ZTogbWVyZ2VkU2VhcmNoVmFsdWUsXG4gICAgICBtZW51SXRlbVNlbGVjdGVkSWNvbjogbWVudUl0ZW1TZWxlY3RlZEljb24sXG4gICAgICB2aXJ0dWFsOiB2aXJ0dWFsICE9PSBmYWxzZSAmJiBkcm9wZG93bk1hdGNoU2VsZWN0V2lkdGggIT09IGZhbHNlLFxuICAgICAgb25Nb3VzZUVudGVyOiBvblBvcHVwTW91c2VFbnRlclxuICAgIH0pOyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBDbGVhciA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIHZhciBjbGVhck5vZGU7XG5cbiAgICB2YXIgb25DbGVhck1vdXNlRG93biA9IGZ1bmN0aW9uIG9uQ2xlYXJNb3VzZURvd24oKSB7XG4gICAgICAvLyBUcmlnZ2VyIGludGVybmFsIGBvbkNsZWFyYCBldmVudFxuICAgICAgaWYgKHVzZUludGVybmFsUHJvcHMgJiYgaW50ZXJuYWxQcm9wcy5vbkNsZWFyKSB7XG4gICAgICAgIGludGVybmFsUHJvcHMub25DbGVhcigpO1xuICAgICAgfVxuXG4gICAgICBpZiAob25DbGVhcikge1xuICAgICAgICBvbkNsZWFyKCk7XG4gICAgICB9XG5cbiAgICAgIHRyaWdnZXJDaGFuZ2UoW10pO1xuICAgICAgdHJpZ2dlclNlYXJjaCgnJywgZmFsc2UsIGZhbHNlKTtcbiAgICB9O1xuXG4gICAgaWYgKCFkaXNhYmxlZCAmJiBhbGxvd0NsZWFyICYmIChtZXJnZWRSYXdWYWx1ZS5sZW5ndGggfHwgbWVyZ2VkU2VhcmNoVmFsdWUpKSB7XG4gICAgICBjbGVhck5vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUcmFuc0J0biwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY2xlYXJcIiksXG4gICAgICAgIG9uTW91c2VEb3duOiBvbkNsZWFyTW91c2VEb3duLFxuICAgICAgICBjdXN0b21pemVJY29uOiBjbGVhckljb25cbiAgICAgIH0sIFwiXFx4RDdcIik7XG4gICAgfSAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBBcnJvdyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gICAgdmFyIG1lcmdlZFNob3dBcnJvdyA9IHNob3dBcnJvdyAhPT0gdW5kZWZpbmVkID8gc2hvd0Fycm93IDogbG9hZGluZyB8fCAhaXNNdWx0aXBsZSAmJiBtb2RlICE9PSAnY29tYm9ib3gnO1xuICAgIHZhciBhcnJvd05vZGU7XG5cbiAgICBpZiAobWVyZ2VkU2hvd0Fycm93KSB7XG4gICAgICBhcnJvd05vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUcmFuc0J0biwge1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1hcnJvd1wiKSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWFycm93LWxvYWRpbmdcIiksIGxvYWRpbmcpKSxcbiAgICAgICAgY3VzdG9taXplSWNvbjogaW5wdXRJY29uLFxuICAgICAgICBjdXN0b21pemVJY29uUHJvcHM6IHtcbiAgICAgICAgICBsb2FkaW5nOiBsb2FkaW5nLFxuICAgICAgICAgIHNlYXJjaFZhbHVlOiBtZXJnZWRTZWFyY2hWYWx1ZSxcbiAgICAgICAgICBvcGVuOiBtZXJnZWRPcGVuLFxuICAgICAgICAgIGZvY3VzZWQ6IG1vY2tGb2N1c2VkLFxuICAgICAgICAgIHNob3dTZWFyY2g6IG1lcmdlZFNob3dTZWFyY2hcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IFdhcm5pbmcgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybmluZ1Byb3BzKSB7XG4gICAgICB3YXJuaW5nUHJvcHMocHJvcHMpO1xuICAgIH0gLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gUmVuZGVyID09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuICAgIHZhciBtZXJnZWRDbGFzc05hbWUgPSBjbGFzc05hbWVzKHByZWZpeENscywgY2xhc3NOYW1lLCAoX2NsYXNzTmFtZXMyID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lczIsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZm9jdXNlZFwiKSwgbW9ja0ZvY3VzZWQpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMyLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLW11bHRpcGxlXCIpLCBpc011bHRpcGxlKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzMiwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zaW5nbGVcIiksICFpc011bHRpcGxlKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzMiwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1hbGxvdy1jbGVhclwiKSwgYWxsb3dDbGVhciksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NOYW1lczIsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc2hvdy1hcnJvd1wiKSwgbWVyZ2VkU2hvd0Fycm93KSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzMiwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1kaXNhYmxlZFwiKSwgZGlzYWJsZWQpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMyLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWxvYWRpbmdcIiksIGxvYWRpbmcpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMyLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLW9wZW5cIiksIG1lcmdlZE9wZW4pLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzTmFtZXMyLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWN1c3RvbWl6ZS1pbnB1dFwiKSwgY3VzdG9taXplSW5wdXRFbGVtZW50KSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzMiwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zaG93LXNlYXJjaFwiKSwgbWVyZ2VkU2hvd1NlYXJjaCksIF9jbGFzc05hbWVzMikpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgICBjbGFzc05hbWU6IG1lcmdlZENsYXNzTmFtZVxuICAgIH0sIGRvbVByb3BzLCB7XG4gICAgICByZWY6IGNvbnRhaW5lclJlZixcbiAgICAgIG9uTW91c2VEb3duOiBvbkludGVybmFsTW91c2VEb3duLFxuICAgICAgb25LZXlEb3duOiBvbkludGVybmFsS2V5RG93bixcbiAgICAgIG9uS2V5VXA6IG9uSW50ZXJuYWxLZXlVcCxcbiAgICAgIG9uRm9jdXM6IG9uQ29udGFpbmVyRm9jdXMsXG4gICAgICBvbkJsdXI6IG9uQ29udGFpbmVyQmx1clxuICAgIH0pLCBtb2NrRm9jdXNlZCAmJiAhbWVyZ2VkT3BlbiAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIG9wYWNpdHk6IDBcbiAgICAgIH0sXG4gICAgICBcImFyaWEtbGl2ZVwiOiBcInBvbGl0ZVwiXG4gICAgfSwgXCJcIi5jb25jYXQobWVyZ2VkUmF3VmFsdWUuam9pbignLCAnKSkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTZWxlY3RUcmlnZ2VyLCB7XG4gICAgICByZWY6IHRyaWdnZXJSZWYsXG4gICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgIHZpc2libGU6IHRyaWdnZXJPcGVuLFxuICAgICAgcG9wdXBFbGVtZW50OiBwb3B1cE5vZGUsXG4gICAgICBjb250YWluZXJXaWR0aDogY29udGFpbmVyV2lkdGgsXG4gICAgICBhbmltYXRpb246IGFuaW1hdGlvbixcbiAgICAgIHRyYW5zaXRpb25OYW1lOiB0cmFuc2l0aW9uTmFtZSxcbiAgICAgIGRyb3Bkb3duU3R5bGU6IGRyb3Bkb3duU3R5bGUsXG4gICAgICBkcm9wZG93bkNsYXNzTmFtZTogZHJvcGRvd25DbGFzc05hbWUsXG4gICAgICBkaXJlY3Rpb246IGRpcmVjdGlvbixcbiAgICAgIGRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aDogZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoLFxuICAgICAgZHJvcGRvd25SZW5kZXI6IGRyb3Bkb3duUmVuZGVyLFxuICAgICAgZHJvcGRvd25BbGlnbjogZHJvcGRvd25BbGlnbixcbiAgICAgIGdldFBvcHVwQ29udGFpbmVyOiBnZXRQb3B1cENvbnRhaW5lcixcbiAgICAgIGVtcHR5OiAhbWVyZ2VkT3B0aW9ucy5sZW5ndGgsXG4gICAgICBnZXRUcmlnZ2VyRE9NTm9kZTogZnVuY3Rpb24gZ2V0VHJpZ2dlckRPTU5vZGUoKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RvckRvbVJlZi5jdXJyZW50O1xuICAgICAgfVxuICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFNlbGVjdG9yLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgIGRvbVJlZjogc2VsZWN0b3JEb21SZWYsXG4gICAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgIGlucHV0RWxlbWVudDogY3VzdG9taXplSW5wdXRFbGVtZW50LFxuICAgICAgcmVmOiBzZWxlY3RvclJlZixcbiAgICAgIGlkOiBtZXJnZWRJZCxcbiAgICAgIHNob3dTZWFyY2g6IG1lcmdlZFNob3dTZWFyY2gsXG4gICAgICBtb2RlOiBtb2RlLFxuICAgICAgYWNjZXNzaWJpbGl0eUluZGV4OiBhY2Nlc3NpYmlsaXR5SW5kZXgsXG4gICAgICBtdWx0aXBsZTogaXNNdWx0aXBsZSxcbiAgICAgIHRhZ1JlbmRlcjogdGFnUmVuZGVyLFxuICAgICAgdmFsdWVzOiBkaXNwbGF5VmFsdWVzLFxuICAgICAgb3BlbjogbWVyZ2VkT3BlbixcbiAgICAgIG9uVG9nZ2xlT3Blbjogb25Ub2dnbGVPcGVuLFxuICAgICAgc2VhcmNoVmFsdWU6IG1lcmdlZFNlYXJjaFZhbHVlLFxuICAgICAgYWN0aXZlVmFsdWU6IGFjdGl2ZVZhbHVlLFxuICAgICAgb25TZWFyY2g6IHRyaWdnZXJTZWFyY2gsXG4gICAgICBvblNlYXJjaFN1Ym1pdDogb25TZWFyY2hTdWJtaXQsXG4gICAgICBvblNlbGVjdDogb25JbnRlcm5hbFNlbGVjdGlvblNlbGVjdCxcbiAgICAgIHRva2VuV2l0aEVudGVyOiB0b2tlbldpdGhFbnRlclxuICAgIH0pKSksIGFycm93Tm9kZSwgY2xlYXJOb2RlKTtcbiAgfVxuXG4gIHZhciBSZWZTZWxlY3QgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihTZWxlY3QpO1xuICByZXR1cm4gUmVmU2VsZWN0O1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB3YXJuaW5nLCB7IG5vdGVPbmNlIH0gZnJvbSBcInJjLXV0aWwvZXMvd2FybmluZ1wiO1xuaW1wb3J0IHRvTm9kZUFycmF5IGZyb20gXCJyYy11dGlsL2VzL0NoaWxkcmVuL3RvQXJyYXlcIjtcbmltcG9ydCB7IGNvbnZlcnRDaGlsZHJlblRvRGF0YSB9IGZyb20gJy4vbGVnYWN5VXRpbCc7XG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnLi9jb21tb25VdGlsJztcblxuZnVuY3Rpb24gd2FybmluZ1Byb3BzKHByb3BzKSB7XG4gIHZhciBtb2RlID0gcHJvcHMubW9kZSxcbiAgICAgIG9wdGlvbnMgPSBwcm9wcy5vcHRpb25zLFxuICAgICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIGJhY2tmaWxsID0gcHJvcHMuYmFja2ZpbGwsXG4gICAgICBhbGxvd0NsZWFyID0gcHJvcHMuYWxsb3dDbGVhcixcbiAgICAgIHBsYWNlaG9sZGVyID0gcHJvcHMucGxhY2Vob2xkZXIsXG4gICAgICBnZXRJbnB1dEVsZW1lbnQgPSBwcm9wcy5nZXRJbnB1dEVsZW1lbnQsXG4gICAgICBzaG93U2VhcmNoID0gcHJvcHMuc2hvd1NlYXJjaCxcbiAgICAgIG9uU2VhcmNoID0gcHJvcHMub25TZWFyY2gsXG4gICAgICBkZWZhdWx0T3BlbiA9IHByb3BzLmRlZmF1bHRPcGVuLFxuICAgICAgYXV0b0ZvY3VzID0gcHJvcHMuYXV0b0ZvY3VzLFxuICAgICAgbGFiZWxJblZhbHVlID0gcHJvcHMubGFiZWxJblZhbHVlLFxuICAgICAgdmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICAgIGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgICAgb3B0aW9uTGFiZWxQcm9wID0gcHJvcHMub3B0aW9uTGFiZWxQcm9wO1xuICB2YXIgbXVsdGlwbGUgPSBtb2RlID09PSAnbXVsdGlwbGUnIHx8IG1vZGUgPT09ICd0YWdzJztcbiAgdmFyIG1lcmdlZFNob3dTZWFyY2ggPSBzaG93U2VhcmNoICE9PSB1bmRlZmluZWQgPyBzaG93U2VhcmNoIDogbXVsdGlwbGUgfHwgbW9kZSA9PT0gJ2NvbWJvYm94JztcbiAgdmFyIG1lcmdlZE9wdGlvbnMgPSBvcHRpb25zIHx8IGNvbnZlcnRDaGlsZHJlblRvRGF0YShjaGlsZHJlbik7IC8vIGB0YWdzYCBzaG91bGQgbm90IHNldCBvcHRpb24gYXMgZGlzYWJsZWRcblxuICB3YXJuaW5nKG1vZGUgIT09ICd0YWdzJyB8fCBtZXJnZWRPcHRpb25zLmV2ZXJ5KGZ1bmN0aW9uIChvcHQpIHtcbiAgICByZXR1cm4gIW9wdC5kaXNhYmxlZDtcbiAgfSksICdQbGVhc2UgYXZvaWQgc2V0dGluZyBvcHRpb24gdG8gZGlzYWJsZWQgaW4gdGFncyBtb2RlIHNpbmNlIHVzZXIgY2FuIGFsd2F5cyB0eXBlIHRleHQgYXMgdGFnLicpOyAvLyBgY29tYm9ib3hgICYgYHRhZ3NgIHNob3VsZCBvcHRpb24gYmUgYHN0cmluZ2AgdHlwZVxuXG4gIGlmIChtb2RlID09PSAndGFncycgfHwgbW9kZSA9PT0gJ2NvbWJvYm94Jykge1xuICAgIHZhciBoYXNOdW1iZXJWYWx1ZSA9IG1lcmdlZE9wdGlvbnMuc29tZShmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgaWYgKGl0ZW0ub3B0aW9ucykge1xuICAgICAgICByZXR1cm4gaXRlbS5vcHRpb25zLnNvbWUoZnVuY3Rpb24gKG9wdCkge1xuICAgICAgICAgIHJldHVybiB0eXBlb2YgKCd2YWx1ZScgaW4gb3B0ID8gb3B0LnZhbHVlIDogb3B0LmtleSkgPT09ICdudW1iZXInO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHR5cGVvZiAoJ3ZhbHVlJyBpbiBpdGVtID8gaXRlbS52YWx1ZSA6IGl0ZW0ua2V5KSA9PT0gJ251bWJlcic7XG4gICAgfSk7XG4gICAgd2FybmluZyghaGFzTnVtYmVyVmFsdWUsICdgdmFsdWVgIG9mIE9wdGlvbiBzaG91bGQgbm90IHVzZSBudW1iZXIgdHlwZSB3aGVuIGBtb2RlYCBpcyBgdGFnc2Agb3IgYGNvbWJvYm94YC4nKTtcbiAgfSAvLyBgY29tYm9ib3hgIHNob3VsZCBub3QgdXNlIGBvcHRpb25MYWJlbFByb3BgXG5cblxuICB3YXJuaW5nKG1vZGUgIT09ICdjb21ib2JveCcgfHwgIW9wdGlvbkxhYmVsUHJvcCwgJ2Bjb21ib2JveGAgbW9kZSBub3Qgc3VwcG9ydCBgb3B0aW9uTGFiZWxQcm9wYC4gUGxlYXNlIHNldCBgdmFsdWVgIG9uIE9wdGlvbiBkaXJlY3RseS4nKTsgLy8gT25seSBgY29tYm9ib3hgIHN1cHBvcnQgYGJhY2tmaWxsYFxuXG4gIHdhcm5pbmcobW9kZSA9PT0gJ2NvbWJvYm94JyB8fCAhYmFja2ZpbGwsICdgYmFja2ZpbGxgIG9ubHkgd29ya3Mgd2l0aCBgY29tYm9ib3hgIG1vZGUuJyk7IC8vIE9ubHkgYGNvbWJvYm94YCBzdXBwb3J0IGBnZXRJbnB1dEVsZW1lbnRgXG5cbiAgd2FybmluZyhtb2RlID09PSAnY29tYm9ib3gnIHx8ICFnZXRJbnB1dEVsZW1lbnQsICdgZ2V0SW5wdXRFbGVtZW50YCBvbmx5IHdvcmsgd2l0aCBgY29tYm9ib3hgIG1vZGUuJyk7IC8vIEN1c3RvbWl6ZSBgZ2V0SW5wdXRFbGVtZW50YCBzaG91bGQgbm90IHVzZSBgYWxsb3dDbGVhcmAgJiBgcGxhY2Vob2xkZXJgXG5cbiAgbm90ZU9uY2UobW9kZSAhPT0gJ2NvbWJvYm94JyB8fCAhZ2V0SW5wdXRFbGVtZW50IHx8ICFhbGxvd0NsZWFyIHx8ICFwbGFjZWhvbGRlciwgJ0N1c3RvbWl6ZSBgZ2V0SW5wdXRFbGVtZW50YCBzaG91bGQgY3VzdG9taXplIGNsZWFyIGFuZCBwbGFjZWhvbGRlciBsb2dpYyBpbnN0ZWFkIG9mIGNvbmZpZ3VyaW5nIGBhbGxvd0NsZWFyYCBhbmQgYHBsYWNlaG9sZGVyYC4nKTsgLy8gYG9uU2VhcmNoYCBzaG91bGQgdXNlIGluIGBjb21ib2JveGAgb3IgYHNob3dTZWFyY2hgXG5cbiAgaWYgKG9uU2VhcmNoICYmICFtZXJnZWRTaG93U2VhcmNoICYmIG1vZGUgIT09ICdjb21ib2JveCcgJiYgbW9kZSAhPT0gJ3RhZ3MnKSB7XG4gICAgd2FybmluZyhmYWxzZSwgJ2BvblNlYXJjaGAgc2hvdWxkIHdvcmsgd2l0aCBgc2hvd1NlYXJjaGAgaW5zdGVhZCBvZiB1c2UgYWxvbmUuJyk7XG4gIH1cblxuICBub3RlT25jZSghZGVmYXVsdE9wZW4gfHwgYXV0b0ZvY3VzLCAnYGRlZmF1bHRPcGVuYCBtYWtlcyBTZWxlY3Qgb3BlbiB3aXRob3V0IGZvY3VzIHdoaWNoIG1lYW5zIGl0IHdpbGwgbm90IGNsb3NlIGJ5IGNsaWNrIG91dHNpZGUuIFlvdSBjYW4gc2V0IGBhdXRvRm9jdXNgIGlmIG5lZWRlZC4nKTtcblxuICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIHZhciB2YWx1ZXMgPSB0b0FycmF5KHZhbHVlKTtcbiAgICB3YXJuaW5nKCFsYWJlbEluVmFsdWUgfHwgdmFsdWVzLmV2ZXJ5KGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgIHJldHVybiBfdHlwZW9mKHZhbCkgPT09ICdvYmplY3QnICYmICgna2V5JyBpbiB2YWwgfHwgJ3ZhbHVlJyBpbiB2YWwpO1xuICAgIH0pLCAnYHZhbHVlYCBzaG91bGQgaW4gc2hhcGUgb2YgYHsgdmFsdWU6IHN0cmluZyB8IG51bWJlciwgbGFiZWw/OiBSZWFjdE5vZGUgfWAgd2hlbiB5b3Ugc2V0IGBsYWJlbEluVmFsdWVgIHRvIGB0cnVlYCcpO1xuICAgIHdhcm5pbmcoIW11bHRpcGxlIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpLCAnYHZhbHVlYCBzaG91bGQgYmUgYXJyYXkgd2hlbiBgbW9kZWAgaXMgYG11bHRpcGxlYCBvciBgdGFnc2AnKTtcbiAgfSAvLyBTeW50YWN0aWMgc3VnYXIgc2hvdWxkIHVzZSBjb3JyZWN0IGNoaWxkcmVuIHR5cGVcblxuXG4gIGlmIChjaGlsZHJlbikge1xuICAgIHZhciBpbnZhbGlkYXRlQ2hpbGRUeXBlID0gbnVsbDtcbiAgICB0b05vZGVBcnJheShjaGlsZHJlbikuc29tZShmdW5jdGlvbiAobm9kZSkge1xuICAgICAgaWYgKCEgLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KG5vZGUpIHx8ICFub2RlLnR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB2YXIgdHlwZSA9IG5vZGUudHlwZTtcblxuICAgICAgaWYgKHR5cGUuaXNTZWxlY3RPcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZS5pc1NlbGVjdE9wdEdyb3VwKSB7XG4gICAgICAgIHZhciBhbGxDaGlsZHJlblZhbGlkID0gdG9Ob2RlQXJyYXkobm9kZS5wcm9wcy5jaGlsZHJlbikuZXZlcnkoZnVuY3Rpb24gKHN1Yk5vZGUpIHtcbiAgICAgICAgICBpZiAoISAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoc3ViTm9kZSkgfHwgIW5vZGUudHlwZSB8fCBzdWJOb2RlLnR5cGUuaXNTZWxlY3RPcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGludmFsaWRhdGVDaGlsZFR5cGUgPSBzdWJOb2RlLnR5cGU7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYWxsQ2hpbGRyZW5WYWxpZCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpbnZhbGlkYXRlQ2hpbGRUeXBlID0gdHlwZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuXG4gICAgaWYgKGludmFsaWRhdGVDaGlsZFR5cGUpIHtcbiAgICAgIHdhcm5pbmcoZmFsc2UsIFwiYGNoaWxkcmVuYCBzaG91bGQgYmUgYFNlbGVjdC5PcHRpb25gIG9yIGBTZWxlY3QuT3B0R3JvdXBgIGluc3RlYWQgb2YgYFwiLmNvbmNhdChpbnZhbGlkYXRlQ2hpbGRUeXBlLmRpc3BsYXlOYW1lIHx8IGludmFsaWRhdGVDaGlsZFR5cGUubmFtZSB8fCBpbnZhbGlkYXRlQ2hpbGRUeXBlLCBcImAuXCIpKTtcbiAgICB9XG5cbiAgICB3YXJuaW5nKGlucHV0VmFsdWUgPT09IHVuZGVmaW5lZCwgJ2BpbnB1dFZhbHVlYCBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGBzZWFyY2hWYWx1ZWAgaW5zdGVhZC4nKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB3YXJuaW5nUHJvcHM7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuXG4vKipcbiAqIFRvIG1hdGNoIGFjY2Vzc2liaWxpdHkgcmVxdWlyZW1lbnQsIHdlIGFsd2F5cyBwcm92aWRlIGFuIGlucHV0IGluIHRoZSBjb21wb25lbnQuXG4gKiBPdGhlciBlbGVtZW50IHdpbGwgbm90IHNldCBgdGFiSW5kZXhgIHRvIGF2b2lkIGBvbkJsdXJgIHNlcXVlbmNlIHByb2JsZW0uXG4gKiBGb3IgZm9jdXNlZCBzZWxlY3QsIHdlIHNldCBgYXJpYS1saXZlPVwicG9saXRlXCJgIHRvIHVwZGF0ZSB0aGUgYWNjZXNzaWJpbGl0eSBjb250ZW50LlxuICpcbiAqIHJlZjpcbiAqIC0ga2V5Ym9hcmQ6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FjY2Vzc2liaWxpdHkvQVJJQS9Sb2xlcy9saXN0Ym94X3JvbGUjS2V5Ym9hcmRfaW50ZXJhY3Rpb25zXG4gKlxuICogTmV3IGFwaTpcbiAqIC0gbGlzdEhlaWdodFxuICogLSBsaXN0SXRlbUhlaWdodFxuICogLSBjb21wb25lbnRcbiAqXG4gKiBSZW1vdmUgZGVwcmVjYXRlZCBhcGk6XG4gKiAtIG11bHRpcGxlXG4gKiAtIHRhZ3NcbiAqIC0gY29tYm9ib3hcbiAqIC0gZmlyc3RBY3RpdmVWYWx1ZVxuICogLSBkcm9wZG93bk1lbnVTdHlsZVxuICogLSBvcGVuQ2xhc3NOYW1lIChOb3QgbGlzdCBpbiBhcGkpXG4gKlxuICogVXBkYXRlOlxuICogLSBgYmFja2ZpbGxgIG9ubHkgc3VwcG9ydCBgY29tYm9ib3hgIG1vZGVcbiAqIC0gYGNvbWJvYm94YCBtb2RlIG5vdCBzdXBwb3J0IGBsYWJlbEluVmFsdWVgIHNpbmNlIGl0J3MgbWVhbmluZ2xlc3NcbiAqIC0gYGdldElucHV0RWxlbWVudGAgb25seSBzdXBwb3J0IGBjb21ib2JveGAgbW9kZVxuICogLSBgb25DaGFuZ2VgIHJldHVybiBPcHRpb25EYXRhIGluc3RlYWQgb2YgUmVhY3ROb2RlXG4gKiAtIGBmaWx0ZXJPcHRpb25gIGBvbkNoYW5nZWAgYG9uU2VsZWN0YCBhY2NlcHQgT3B0aW9uRGF0YSBpbnN0ZWFkIG9mIFJlYWN0Tm9kZVxuICogLSBgY29tYm9ib3hgIG1vZGUgdHJpZ2dlciBgb25DaGFuZ2VgIHdpbGwgZ2V0IGB1bmRlZmluZWRgIGlmIG5vIGB2YWx1ZWAgbWF0Y2ggaW4gT3B0aW9uXG4gKiAtIGBjb21ib2JveGAgbW9kZSBub3Qgc3VwcG9ydCBgb3B0aW9uTGFiZWxQcm9wYFxuICovXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgU2VsZWN0T3B0aW9uTGlzdCBmcm9tICcuL09wdGlvbkxpc3QnO1xuaW1wb3J0IE9wdGlvbiBmcm9tICcuL09wdGlvbic7XG5pbXBvcnQgT3B0R3JvdXAgZnJvbSAnLi9PcHRHcm91cCc7XG5pbXBvcnQgeyBjb252ZXJ0Q2hpbGRyZW5Ub0RhdGEgYXMgY29udmVydFNlbGVjdENoaWxkcmVuVG9EYXRhIH0gZnJvbSAnLi91dGlscy9sZWdhY3lVdGlsJztcbmltcG9ydCB7IGdldExhYmVsZWRWYWx1ZSBhcyBnZXRTZWxlY3RMYWJlbGVkVmFsdWUsIGZpbHRlck9wdGlvbnMgYXMgc2VsZWN0RGVmYXVsdEZpbHRlck9wdGlvbnMsIGlzVmFsdWVEaXNhYmxlZCBhcyBpc1NlbGVjdFZhbHVlRGlzYWJsZWQsIGZpbmRWYWx1ZU9wdGlvbiBhcyBmaW5kU2VsZWN0VmFsdWVPcHRpb24sIGZsYXR0ZW5PcHRpb25zLCBmaWxsT3B0aW9uc1dpdGhNaXNzaW5nVmFsdWUgfSBmcm9tICcuL3V0aWxzL3ZhbHVlVXRpbCc7XG5pbXBvcnQgZ2VuZXJhdGVTZWxlY3RvciBmcm9tICcuL2dlbmVyYXRlJztcbmltcG9ydCB3YXJuaW5nUHJvcHMgZnJvbSAnLi91dGlscy93YXJuaW5nUHJvcHNVdGlsJztcbnZhciBSZWZTZWxlY3QgPSBnZW5lcmF0ZVNlbGVjdG9yKHtcbiAgcHJlZml4Q2xzOiAncmMtc2VsZWN0JyxcbiAgY29tcG9uZW50czoge1xuICAgIG9wdGlvbkxpc3Q6IFNlbGVjdE9wdGlvbkxpc3RcbiAgfSxcbiAgY29udmVydENoaWxkcmVuVG9EYXRhOiBjb252ZXJ0U2VsZWN0Q2hpbGRyZW5Ub0RhdGEsXG4gIGZsYXR0ZW5PcHRpb25zOiBmbGF0dGVuT3B0aW9ucyxcbiAgZ2V0TGFiZWxlZFZhbHVlOiBnZXRTZWxlY3RMYWJlbGVkVmFsdWUsXG4gIGZpbHRlck9wdGlvbnM6IHNlbGVjdERlZmF1bHRGaWx0ZXJPcHRpb25zLFxuICBpc1ZhbHVlRGlzYWJsZWQ6IGlzU2VsZWN0VmFsdWVEaXNhYmxlZCxcbiAgZmluZFZhbHVlT3B0aW9uOiBmaW5kU2VsZWN0VmFsdWVPcHRpb24sXG4gIHdhcm5pbmdQcm9wczogd2FybmluZ1Byb3BzLFxuICBmaWxsT3B0aW9uc1dpdGhNaXNzaW5nVmFsdWU6IGZpbGxPcHRpb25zV2l0aE1pc3NpbmdWYWx1ZVxufSk7XG4vKipcbiAqIFR5cGVzY3JpcHQgbm90IHN1cHBvcnQgZ2VuZXJpYyB3aXRoIGZ1bmN0aW9uIGNvbXBvbmVudCxcbiAqIHdlIGhhdmUgdG8gd3JhcCBhbiBjbGFzcyBjb21wb25lbnQgdG8gaGFuZGxlIHRoaXMuXG4gKi9cblxudmFyIFNlbGVjdCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoU2VsZWN0LCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFNlbGVjdCk7XG5cbiAgZnVuY3Rpb24gU2VsZWN0KCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTZWxlY3QpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBfdGhpcy5zZWxlY3RSZWYgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlUmVmKCk7XG5cbiAgICBfdGhpcy5mb2N1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLnNlbGVjdFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgfTtcblxuICAgIF90aGlzLmJsdXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5zZWxlY3RSZWYuY3VycmVudC5ibHVyKCk7XG4gICAgfTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhTZWxlY3QsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVmU2VsZWN0LCBfZXh0ZW5kcyh7XG4gICAgICAgIHJlZjogdGhpcy5zZWxlY3RSZWZcbiAgICAgIH0sIHRoaXMucHJvcHMpKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2VsZWN0O1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5TZWxlY3QuT3B0aW9uID0gT3B0aW9uO1xuU2VsZWN0Lk9wdEdyb3VwID0gT3B0R3JvdXA7XG5leHBvcnQgZGVmYXVsdCBTZWxlY3Q7IiwiZXhwb3J0IHZhciBJTlRFUk5BTF9QUk9QU19NQVJLID0gJ1JDX1NFTEVDVF9JTlRFUk5BTF9QUk9QU19NQVJLJzsiLCJpbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogU2ltaWxhciB3aXRoIGB1c2VMb2NrYCwgYnV0IHRoaXMgaG9vayB3aWxsIGFsd2F5cyBleGVjdXRlIGxhc3QgdmFsdWUuXG4gKiBXaGVuIHNldCB0byBgdHJ1ZWAsIGl0IHdpbGwga2VlcCBgdHJ1ZWAgZm9yIGEgc2hvcnQgdGltZSBldmVuIGlmIGBmYWxzZWAgaXMgc2V0LlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZURlbGF5UmVzZXQoKSB7XG4gIHZhciB0aW1lb3V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAxMDtcblxuICB2YXIgX1JlYWN0JHVzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLFxuICAgICAgX1JlYWN0JHVzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF9SZWFjdCR1c2VTdGF0ZSwgMiksXG4gICAgICBib29sID0gX1JlYWN0JHVzZVN0YXRlMlswXSxcbiAgICAgIHNldEJvb2wgPSBfUmVhY3QkdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBkZWxheVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcblxuICB2YXIgY2FuY2VsTGF0ZXN0ID0gZnVuY3Rpb24gY2FuY2VsTGF0ZXN0KCkge1xuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoZGVsYXlSZWYuY3VycmVudCk7XG4gIH07XG5cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY2FuY2VsTGF0ZXN0O1xuICB9LCBbXSk7XG5cbiAgdmFyIGRlbGF5U2V0Qm9vbCA9IGZ1bmN0aW9uIGRlbGF5U2V0Qm9vbCh2YWx1ZSwgY2FsbGJhY2spIHtcbiAgICBjYW5jZWxMYXRlc3QoKTtcbiAgICBkZWxheVJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgc2V0Qm9vbCh2YWx1ZSk7XG5cbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH0sIHRpbWVvdXQpO1xuICB9O1xuXG4gIHJldHVybiBbYm9vbCwgZGVsYXlTZXRCb29sLCBjYW5jZWxMYXRlc3RdO1xufSIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUNhY2hlT3B0aW9ucyhvcHRpb25zKSB7XG4gIHZhciBwcmV2T3B0aW9uTWFwUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICB2YXIgb3B0aW9uTWFwID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1hcCA9IG5ldyBNYXAoKTtcbiAgICBvcHRpb25zLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciB2YWx1ZSA9IGl0ZW0uZGF0YS52YWx1ZTtcbiAgICAgIG1hcC5zZXQodmFsdWUsIGl0ZW0pO1xuICAgIH0pO1xuICAgIHJldHVybiBtYXA7XG4gIH0sIFtvcHRpb25zXSk7XG4gIHByZXZPcHRpb25NYXBSZWYuY3VycmVudCA9IG9wdGlvbk1hcDtcblxuICB2YXIgZ2V0VmFsdWVPcHRpb24gPSBmdW5jdGlvbiBnZXRWYWx1ZU9wdGlvbih2YWxzKSB7XG4gICAgcmV0dXJuIHZhbHMubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHByZXZPcHRpb25NYXBSZWYuY3VycmVudC5nZXQodmFsdWUpO1xuICAgIH0pLmZpbHRlcihCb29sZWFuKTtcbiAgfTtcblxuICByZXR1cm4gZ2V0VmFsdWVPcHRpb247XG59IiwiaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUNhY2hlRGlzcGxheVZhbHVlKHZhbHVlcykge1xuICB2YXIgcHJldlZhbHVlc1JlZiA9IFJlYWN0LnVzZVJlZih2YWx1ZXMpO1xuICB2YXIgbWVyZ2VkVmFsdWVzID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gQ3JlYXRlIHZhbHVlIC0gbGFiZWwgbWFwXG4gICAgdmFyIHZhbHVlTGFiZWxzID0gbmV3IE1hcCgpO1xuICAgIHByZXZWYWx1ZXNSZWYuY3VycmVudC5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICB2YXIgdmFsdWUgPSBfcmVmLnZhbHVlLFxuICAgICAgICAgIGxhYmVsID0gX3JlZi5sYWJlbDtcblxuICAgICAgaWYgKHZhbHVlICE9PSBsYWJlbCkge1xuICAgICAgICB2YWx1ZUxhYmVscy5zZXQodmFsdWUsIGxhYmVsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgcmVzdWx0VmFsdWVzID0gdmFsdWVzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNhY2hlTGFiZWwgPSB2YWx1ZUxhYmVscy5nZXQoaXRlbS52YWx1ZSk7XG5cbiAgICAgIGlmIChpdGVtLmlzQ2FjaGVhYmxlICYmIGNhY2hlTGFiZWwpIHtcbiAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaXRlbSksIHt9LCB7XG4gICAgICAgICAgbGFiZWw6IGNhY2hlTGFiZWxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICAgIHByZXZWYWx1ZXNSZWYuY3VycmVudCA9IHJlc3VsdFZhbHVlcztcbiAgICByZXR1cm4gcmVzdWx0VmFsdWVzO1xuICB9LCBbdmFsdWVzXSk7XG4gIHJldHVybiBtZXJnZWRWYWx1ZXM7XG59IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlU2VsZWN0VHJpZ2dlckNvbnRyb2woZWxlbWVudHMsIG9wZW4sIHRyaWdnZXJPcGVuKSB7XG4gIHZhciBwcm9wc1JlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgcHJvcHNSZWYuY3VycmVudCA9IHtcbiAgICBlbGVtZW50czogZWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZTtcbiAgICB9KSxcbiAgICBvcGVuOiBvcGVuLFxuICAgIHRyaWdnZXJPcGVuOiB0cmlnZ2VyT3BlblxuICB9O1xuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIG9uR2xvYmFsTW91c2VEb3duKGV2ZW50KSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuXG4gICAgICBpZiAodGFyZ2V0LnNoYWRvd1Jvb3QgJiYgZXZlbnQuY29tcG9zZWQpIHtcbiAgICAgICAgdGFyZ2V0ID0gZXZlbnQuY29tcG9zZWRQYXRoKClbMF0gfHwgdGFyZ2V0O1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcHNSZWYuY3VycmVudC5vcGVuICYmIHByb3BzUmVmLmN1cnJlbnQuZWxlbWVudHMuZXZlcnkoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuICFlbGVtZW50LmNvbnRhaW5zKHRhcmdldCkgJiYgZWxlbWVudCAhPT0gdGFyZ2V0O1xuICAgICAgfSkpIHtcbiAgICAgICAgLy8gU2hvdWxkIHRyaWdnZXIgY2xvc2VcbiAgICAgICAgcHJvcHNSZWYuY3VycmVudC50cmlnZ2VyT3BlbihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIG9uR2xvYmFsTW91c2VEb3duKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBvbkdsb2JhbE1vdXNlRG93bik7XG4gICAgfTtcbiAgfSwgW10pO1xufSIsImltcG9ydCBTZWxlY3QgZnJvbSAnLi9TZWxlY3QnO1xuaW1wb3J0IE9wdGlvbiBmcm9tICcuL09wdGlvbic7XG5pbXBvcnQgT3B0R3JvdXAgZnJvbSAnLi9PcHRHcm91cCc7XG5leHBvcnQgeyBPcHRpb24sIE9wdEdyb3VwIH07XG5leHBvcnQgZGVmYXVsdCBTZWxlY3Q7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcblxuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn0iLCJpbXBvcnQgb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiLi9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkge1xuICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcbiAgdmFyIHRhcmdldCA9IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7XG4gIHZhciBrZXksIGk7XG5cbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldO1xuICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7XG4gICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkge1xuICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gIHZhciBrZXksIGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59IiwiaW1wb3J0IGRlZmluZVByb3BlcnR5IGZyb20gXCIuL2RlZmluZVByb3BlcnR5LmpzXCI7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG5cbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTtcblxuICAgIGlmIChlbnVtZXJhYmxlT25seSkge1xuICAgICAgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7XG4gIH1cblxuICByZXR1cm4ga2V5cztcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX29iamVjdFNwcmVhZDIodGFyZ2V0KSB7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307XG5cbiAgICBpZiAoaSAlIDIpIHtcbiAgICAgIG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikge1xuICBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHtcbiAgICBhcnIyW2ldID0gYXJyW2ldO1xuICB9XG5cbiAgcmV0dXJuIGFycjI7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7XG4gIGlmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGl0ZXJbU3ltYm9sLml0ZXJhdG9yXSAhPSBudWxsIHx8IGl0ZXJbXCJAQGl0ZXJhdG9yXCJdICE9IG51bGwpIHJldHVybiBBcnJheS5mcm9tKGl0ZXIpO1xufSIsImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHtcbiAgaWYgKCFvKSByZXR1cm47XG4gIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbiAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpO1xuICBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lO1xuICBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTtcbiAgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG59IiwiaW1wb3J0IGFycmF5V2l0aG91dEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aG91dEhvbGVzLmpzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgbm9uSXRlcmFibGVTcHJlYWQgZnJvbSBcIi4vbm9uSXRlcmFibGVTcHJlYWQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKGFycikgfHwgaXRlcmFibGVUb0FycmF5KGFycikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufSIsImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkoYXJyKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59IiwiZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gIGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgcmV0dXJuIENvbnN0cnVjdG9yO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikge1xuICBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIHNlbGY7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgby5fX3Byb3RvX18gPSBwO1xuICAgIHJldHVybiBvO1xuICB9O1xuXG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgICByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO1xuICB9O1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiO1xuaW1wb3J0IGFzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiLi9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHtcbiAgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHtcbiAgICByZXR1cm4gY2FsbDtcbiAgfVxuXG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7XG59IiwiaW1wb3J0IGdldFByb3RvdHlwZU9mIGZyb20gXCIuL2dldFByb3RvdHlwZU9mLmpzXCI7XG5pbXBvcnQgaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IGZyb20gXCIuL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qc1wiO1xuaW1wb3J0IHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIi4vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHtcbiAgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkge1xuICAgIHZhciBTdXBlciA9IGdldFByb3RvdHlwZU9mKERlcml2ZWQpLFxuICAgICAgICByZXN1bHQ7XG5cbiAgICBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkge1xuICAgICAgdmFyIE5ld1RhcmdldCA9IGdldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yO1xuICAgICAgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpO1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTtcbiAgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTtcblxuICB0cnkge1xuICAgIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbnZhciB3YXJuZWQgPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiB3YXJuaW5nKHZhbGlkLCBtZXNzYWdlKSB7XG4gIC8vIFN1cHBvcnQgdWdsaWZ5XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF2YWxpZCAmJiBjb25zb2xlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiV2FybmluZzogXCIuY29uY2F0KG1lc3NhZ2UpKTtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIG5vdGUodmFsaWQsIG1lc3NhZ2UpIHtcbiAgLy8gU3VwcG9ydCB1Z2xpZnlcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXZhbGlkICYmIGNvbnNvbGUgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnNvbGUud2FybihcIk5vdGU6IFwiLmNvbmNhdChtZXNzYWdlKSk7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiByZXNldFdhcm5lZCgpIHtcbiAgd2FybmVkID0ge307XG59XG5leHBvcnQgZnVuY3Rpb24gY2FsbChtZXRob2QsIHZhbGlkLCBtZXNzYWdlKSB7XG4gIGlmICghdmFsaWQgJiYgIXdhcm5lZFttZXNzYWdlXSkge1xuICAgIG1ldGhvZChmYWxzZSwgbWVzc2FnZSk7XG4gICAgd2FybmVkW21lc3NhZ2VdID0gdHJ1ZTtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHdhcm5pbmdPbmNlKHZhbGlkLCBtZXNzYWdlKSB7XG4gIGNhbGwod2FybmluZywgdmFsaWQsIG1lc3NhZ2UpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vdGVPbmNlKHZhbGlkLCBtZXNzYWdlKSB7XG4gIGNhbGwobm90ZSwgdmFsaWQsIG1lc3NhZ2UpO1xufVxuZXhwb3J0IGRlZmF1bHQgd2FybmluZ09uY2U7XG4vKiBlc2xpbnQtZW5hYmxlICovIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSBcInJjLXV0aWwvZXMvd2FybmluZ1wiO1xuZXhwb3J0IHZhciBIT09LX01BUksgPSAnUkNfRk9STV9JTlRFUk5BTF9IT09LUyc7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5cbnZhciB3YXJuaW5nRnVuYyA9IGZ1bmN0aW9uIHdhcm5pbmdGdW5jKCkge1xuICB3YXJuaW5nKGZhbHNlLCAnQ2FuIG5vdCBmaW5kIEZvcm1Db250ZXh0LiBQbGVhc2UgbWFrZSBzdXJlIHlvdSB3cmFwIEZpZWxkIHVuZGVyIEZvcm0uJyk7XG59O1xuXG52YXIgQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgZ2V0RmllbGRWYWx1ZTogd2FybmluZ0Z1bmMsXG4gIGdldEZpZWxkc1ZhbHVlOiB3YXJuaW5nRnVuYyxcbiAgZ2V0RmllbGRFcnJvcjogd2FybmluZ0Z1bmMsXG4gIGdldEZpZWxkc0Vycm9yOiB3YXJuaW5nRnVuYyxcbiAgaXNGaWVsZHNUb3VjaGVkOiB3YXJuaW5nRnVuYyxcbiAgaXNGaWVsZFRvdWNoZWQ6IHdhcm5pbmdGdW5jLFxuICBpc0ZpZWxkVmFsaWRhdGluZzogd2FybmluZ0Z1bmMsXG4gIGlzRmllbGRzVmFsaWRhdGluZzogd2FybmluZ0Z1bmMsXG4gIHJlc2V0RmllbGRzOiB3YXJuaW5nRnVuYyxcbiAgc2V0RmllbGRzOiB3YXJuaW5nRnVuYyxcbiAgc2V0RmllbGRzVmFsdWU6IHdhcm5pbmdGdW5jLFxuICB2YWxpZGF0ZUZpZWxkczogd2FybmluZ0Z1bmMsXG4gIHN1Ym1pdDogd2FybmluZ0Z1bmMsXG4gIGdldEludGVybmFsSG9va3M6IGZ1bmN0aW9uIGdldEludGVybmFsSG9va3MoKSB7XG4gICAgd2FybmluZ0Z1bmMoKTtcbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGF0Y2g6IHdhcm5pbmdGdW5jLFxuICAgICAgaW5pdEVudGl0eVZhbHVlOiB3YXJuaW5nRnVuYyxcbiAgICAgIHJlZ2lzdGVyRmllbGQ6IHdhcm5pbmdGdW5jLFxuICAgICAgdXNlU3Vic2NyaWJlOiB3YXJuaW5nRnVuYyxcbiAgICAgIHNldEluaXRpYWxWYWx1ZXM6IHdhcm5pbmdGdW5jLFxuICAgICAgc2V0Q2FsbGJhY2tzOiB3YXJuaW5nRnVuYyxcbiAgICAgIGdldEZpZWxkczogd2FybmluZ0Z1bmMsXG4gICAgICBzZXRWYWxpZGF0ZU1lc3NhZ2VzOiB3YXJuaW5nRnVuYyxcbiAgICAgIHNldFByZXNlcnZlOiB3YXJuaW5nRnVuY1xuICAgIH07XG4gIH1cbn0pO1xuZXhwb3J0IGRlZmF1bHQgQ29udGV4dDsiLCJleHBvcnQgZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbn0iLCJmdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7XG4gIHRyeSB7XG4gICAgdmFyIGluZm8gPSBnZW5ba2V5XShhcmcpO1xuICAgIHZhciB2YWx1ZSA9IGluZm8udmFsdWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVqZWN0KGVycm9yKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoaW5mby5kb25lKSB7XG4gICAgcmVzb2x2ZSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgICBhcmdzID0gYXJndW1lbnRzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgZ2VuID0gZm4uYXBwbHkoc2VsZiwgYXJncyk7XG5cbiAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTtcbiAgICAgIH1cblxuICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7XG4gICAgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIG9iajtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfdHlwZW9mKG9iaik7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0KGVudGl0eSwgcGF0aCkge1xuICB2YXIgY3VycmVudCA9IGVudGl0eTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoY3VycmVudCA9PT0gbnVsbCB8fCBjdXJyZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY3VycmVudCA9IGN1cnJlbnRbcGF0aFtpXV07XG4gIH1cblxuICByZXR1cm4gY3VycmVudDtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn0iLCJpbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfdG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9BcnJheVwiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IGdldCBmcm9tICcuL2dldCc7XG5cbmZ1bmN0aW9uIGludGVybmFsU2V0KGVudGl0eSwgcGF0aHMsIHZhbHVlLCByZW1vdmVJZlVuZGVmaW5lZCkge1xuICBpZiAoIXBhdGhzLmxlbmd0aCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHZhciBfcGF0aHMgPSBfdG9BcnJheShwYXRocyksXG4gICAgICBwYXRoID0gX3BhdGhzWzBdLFxuICAgICAgcmVzdFBhdGggPSBfcGF0aHMuc2xpY2UoMSk7XG5cbiAgdmFyIGNsb25lO1xuXG4gIGlmICghZW50aXR5ICYmIHR5cGVvZiBwYXRoID09PSAnbnVtYmVyJykge1xuICAgIGNsb25lID0gW107XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShlbnRpdHkpKSB7XG4gICAgY2xvbmUgPSBfdG9Db25zdW1hYmxlQXJyYXkoZW50aXR5KTtcbiAgfSBlbHNlIHtcbiAgICBjbG9uZSA9IF9vYmplY3RTcHJlYWQoe30sIGVudGl0eSk7XG4gIH0gLy8gRGVsZXRlIHByb3AgaWYgYHJlbW92ZUlmVW5kZWZpbmVkYCBhbmQgdmFsdWUgaXMgdW5kZWZpbmVkXG5cblxuICBpZiAocmVtb3ZlSWZVbmRlZmluZWQgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCAmJiByZXN0UGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICBkZWxldGUgY2xvbmVbcGF0aF1bcmVzdFBhdGhbMF1dO1xuICB9IGVsc2Uge1xuICAgIGNsb25lW3BhdGhdID0gaW50ZXJuYWxTZXQoY2xvbmVbcGF0aF0sIHJlc3RQYXRoLCB2YWx1ZSwgcmVtb3ZlSWZVbmRlZmluZWQpO1xuICB9XG5cbiAgcmV0dXJuIGNsb25lO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXQoZW50aXR5LCBwYXRocywgdmFsdWUpIHtcbiAgdmFyIHJlbW92ZUlmVW5kZWZpbmVkID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiBmYWxzZTtcblxuICAvLyBEbyBub3RoaW5nIGlmIGByZW1vdmVJZlVuZGVmaW5lZGAgYW5kIHBhcmVudCBvYmplY3Qgbm90IGV4aXN0XG4gIGlmIChwYXRocy5sZW5ndGggJiYgcmVtb3ZlSWZVbmRlZmluZWQgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhZ2V0KGVudGl0eSwgcGF0aHMuc2xpY2UoMCwgLTEpKSkge1xuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICByZXR1cm4gaW50ZXJuYWxTZXQoZW50aXR5LCBwYXRocywgdmFsdWUsIHJlbW92ZUlmVW5kZWZpbmVkKTtcbn0iLCJpbXBvcnQgYXJyYXlXaXRoSG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRoSG9sZXMuanNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCBub25JdGVyYWJsZVJlc3QgZnJvbSBcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdG9BcnJheShhcnIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKGFycikgfHwgaXRlcmFibGVUb0FycmF5KGFycikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn0iLCJpbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCBnZXQgZnJvbSBcInJjLXV0aWwvZXMvdXRpbHMvZ2V0XCI7XG5pbXBvcnQgc2V0IGZyb20gXCJyYy11dGlsL2VzL3V0aWxzL3NldFwiO1xuaW1wb3J0IHsgdG9BcnJheSB9IGZyb20gJy4vdHlwZVV0aWwnO1xuLyoqXG4gKiBDb252ZXJ0IG5hbWUgdG8gaW50ZXJuYWwgc3VwcG9ydGVkIGZvcm1hdC5cbiAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGtlZXAgc2luY2Ugd2Ugc3RpbGwgdGhpbmtpbmcgaWYgbmVlZCBzdXBwb3J0IGxpa2UgYGEuYi5jYCBmb3JtYXQuXG4gKiAnYScgPT4gWydhJ11cbiAqIDEyMyA9PiBbMTIzXVxuICogWydhJywgMTIzXSA9PiBbJ2EnLCAxMjNdXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5hbWVQYXRoKHBhdGgpIHtcbiAgcmV0dXJuIHRvQXJyYXkocGF0aCk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsdWUoc3RvcmUsIG5hbWVQYXRoKSB7XG4gIHZhciB2YWx1ZSA9IGdldChzdG9yZSwgbmFtZVBhdGgpO1xuICByZXR1cm4gdmFsdWU7XG59XG5leHBvcnQgZnVuY3Rpb24gc2V0VmFsdWUoc3RvcmUsIG5hbWVQYXRoLCB2YWx1ZSkge1xuICB2YXIgcmVtb3ZlSWZVbmRlZmluZWQgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IGZhbHNlO1xuICB2YXIgbmV3U3RvcmUgPSBzZXQoc3RvcmUsIG5hbWVQYXRoLCB2YWx1ZSwgcmVtb3ZlSWZVbmRlZmluZWQpO1xuICByZXR1cm4gbmV3U3RvcmU7XG59XG5leHBvcnQgZnVuY3Rpb24gY2xvbmVCeU5hbWVQYXRoTGlzdChzdG9yZSwgbmFtZVBhdGhMaXN0KSB7XG4gIHZhciBuZXdTdG9yZSA9IHt9O1xuICBuYW1lUGF0aExpc3QuZm9yRWFjaChmdW5jdGlvbiAobmFtZVBhdGgpIHtcbiAgICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShzdG9yZSwgbmFtZVBhdGgpO1xuICAgIG5ld1N0b3JlID0gc2V0VmFsdWUobmV3U3RvcmUsIG5hbWVQYXRoLCB2YWx1ZSk7XG4gIH0pO1xuICByZXR1cm4gbmV3U3RvcmU7XG59XG5leHBvcnQgZnVuY3Rpb24gY29udGFpbnNOYW1lUGF0aChuYW1lUGF0aExpc3QsIG5hbWVQYXRoKSB7XG4gIHJldHVybiBuYW1lUGF0aExpc3QgJiYgbmFtZVBhdGhMaXN0LnNvbWUoZnVuY3Rpb24gKHBhdGgpIHtcbiAgICByZXR1cm4gbWF0Y2hOYW1lUGF0aChwYXRoLCBuYW1lUGF0aCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdChvYmopIHtcbiAgcmV0dXJuIF90eXBlb2Yob2JqKSA9PT0gJ29iamVjdCcgJiYgb2JqICE9PSBudWxsICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopID09PSBPYmplY3QucHJvdG90eXBlO1xufVxuLyoqXG4gKiBDb3B5IHZhbHVlcyBpbnRvIHN0b3JlIGFuZCByZXR1cm4gYSBuZXcgdmFsdWVzIG9iamVjdFxuICogKHsgYTogMSwgYjogeyBjOiAyIH0gfSwgeyBhOiA0LCBiOiB7IGQ6IDUgfSB9KSA9PiB7IGE6IDQsIGI6IHsgYzogMiwgZDogNSB9IH1cbiAqL1xuXG5cbmZ1bmN0aW9uIGludGVybmFsU2V0VmFsdWVzKHN0b3JlLCB2YWx1ZXMpIHtcbiAgdmFyIG5ld1N0b3JlID0gQXJyYXkuaXNBcnJheShzdG9yZSkgPyBfdG9Db25zdW1hYmxlQXJyYXkoc3RvcmUpIDogX29iamVjdFNwcmVhZCh7fSwgc3RvcmUpO1xuXG4gIGlmICghdmFsdWVzKSB7XG4gICAgcmV0dXJuIG5ld1N0b3JlO1xuICB9XG5cbiAgT2JqZWN0LmtleXModmFsdWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgcHJldlZhbHVlID0gbmV3U3RvcmVba2V5XTtcbiAgICB2YXIgdmFsdWUgPSB2YWx1ZXNba2V5XTsgLy8gSWYgYm90aCBhcmUgb2JqZWN0IChidXQgdGFyZ2V0IGlzIG5vdCBhcnJheSksIHdlIHVzZSByZWN1cnNpb24gdG8gc2V0IGRlZXAgdmFsdWVcblxuICAgIHZhciByZWN1cnNpdmUgPSBpc09iamVjdChwcmV2VmFsdWUpICYmIGlzT2JqZWN0KHZhbHVlKTtcbiAgICBuZXdTdG9yZVtrZXldID0gcmVjdXJzaXZlID8gaW50ZXJuYWxTZXRWYWx1ZXMocHJldlZhbHVlLCB2YWx1ZSB8fCB7fSkgOiB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiBuZXdTdG9yZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFZhbHVlcyhzdG9yZSkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgcmVzdFZhbHVlcyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgcmVzdFZhbHVlc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gcmVzdFZhbHVlcy5yZWR1Y2UoZnVuY3Rpb24gKGN1cnJlbnQsIG5ld1N0b3JlKSB7XG4gICAgcmV0dXJuIGludGVybmFsU2V0VmFsdWVzKGN1cnJlbnQsIG5ld1N0b3JlKTtcbiAgfSwgc3RvcmUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoTmFtZVBhdGgobmFtZVBhdGgsIGNoYW5nZWROYW1lUGF0aCkge1xuICBpZiAoIW5hbWVQYXRoIHx8ICFjaGFuZ2VkTmFtZVBhdGggfHwgbmFtZVBhdGgubGVuZ3RoICE9PSBjaGFuZ2VkTmFtZVBhdGgubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIG5hbWVQYXRoLmV2ZXJ5KGZ1bmN0aW9uIChuYW1lVW5pdCwgaSkge1xuICAgIHJldHVybiBjaGFuZ2VkTmFtZVBhdGhbaV0gPT09IG5hbWVVbml0O1xuICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1NpbWlsYXIoc291cmNlLCB0YXJnZXQpIHtcbiAgaWYgKHNvdXJjZSA9PT0gdGFyZ2V0KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoIXNvdXJjZSAmJiB0YXJnZXQgfHwgc291cmNlICYmICF0YXJnZXQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIXNvdXJjZSB8fCAhdGFyZ2V0IHx8IF90eXBlb2Yoc291cmNlKSAhPT0gJ29iamVjdCcgfHwgX3R5cGVvZih0YXJnZXQpICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgdmFyIHRhcmdldEtleXMgPSBPYmplY3Qua2V5cyh0YXJnZXQpO1xuICB2YXIga2V5cyA9IG5ldyBTZXQoW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShzb3VyY2VLZXlzKSwgX3RvQ29uc3VtYWJsZUFycmF5KHRhcmdldEtleXMpKSk7XG4gIHJldHVybiBfdG9Db25zdW1hYmxlQXJyYXkoa2V5cykuZXZlcnkoZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBzb3VyY2VWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIHZhciB0YXJnZXRWYWx1ZSA9IHRhcmdldFtrZXldO1xuXG4gICAgaWYgKHR5cGVvZiBzb3VyY2VWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdGFyZ2V0VmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBzb3VyY2VWYWx1ZSA9PT0gdGFyZ2V0VmFsdWU7XG4gIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRHZXRWYWx1ZUZyb21FdmVudCh2YWx1ZVByb3BOYW1lKSB7XG4gIHZhciBldmVudCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcblxuICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0ICYmIHZhbHVlUHJvcE5hbWUgaW4gZXZlbnQudGFyZ2V0KSB7XG4gICAgcmV0dXJuIGV2ZW50LnRhcmdldFt2YWx1ZVByb3BOYW1lXTtcbiAgfVxuXG4gIHJldHVybiBldmVudDtcbn1cbi8qKlxuICogTW92ZXMgYW4gYXJyYXkgaXRlbSBmcm9tIG9uZSBwb3NpdGlvbiBpbiBhbiBhcnJheSB0byBhbm90aGVyLlxuICpcbiAqIE5vdGU6IFRoaXMgaXMgYSBwdXJlIGZ1bmN0aW9uIHNvIGEgbmV3IGFycmF5IHdpbGwgYmUgcmV0dXJuZWQsIGluc3RlYWRcbiAqIG9mIGFsdGVyaW5nIHRoZSBhcnJheSBhcmd1bWVudC5cbiAqXG4gKiBAcGFyYW0gYXJyYXkgICAgICAgICBBcnJheSBpbiB3aGljaCB0byBtb3ZlIGFuIGl0ZW0uICAgICAgICAgKHJlcXVpcmVkKVxuICogQHBhcmFtIG1vdmVJbmRleCAgICAgVGhlIGluZGV4IG9mIHRoZSBpdGVtIHRvIG1vdmUuICAgICAgICAgIChyZXF1aXJlZClcbiAqIEBwYXJhbSB0b0luZGV4ICAgICAgIFRoZSBpbmRleCB0byBtb3ZlIGl0ZW0gYXQgbW92ZUluZGV4IHRvLiAocmVxdWlyZWQpXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdmUoYXJyYXksIG1vdmVJbmRleCwgdG9JbmRleCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGlmIChtb3ZlSW5kZXggPCAwIHx8IG1vdmVJbmRleCA+PSBsZW5ndGggfHwgdG9JbmRleCA8IDAgfHwgdG9JbmRleCA+PSBsZW5ndGgpIHtcbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICB2YXIgaXRlbSA9IGFycmF5W21vdmVJbmRleF07XG4gIHZhciBkaWZmID0gbW92ZUluZGV4IC0gdG9JbmRleDtcblxuICBpZiAoZGlmZiA+IDApIHtcbiAgICAvLyBtb3ZlIGxlZnRcbiAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShhcnJheS5zbGljZSgwLCB0b0luZGV4KSksIFtpdGVtXSwgX3RvQ29uc3VtYWJsZUFycmF5KGFycmF5LnNsaWNlKHRvSW5kZXgsIG1vdmVJbmRleCkpLCBfdG9Db25zdW1hYmxlQXJyYXkoYXJyYXkuc2xpY2UobW92ZUluZGV4ICsgMSwgbGVuZ3RoKSkpO1xuICB9XG5cbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgLy8gbW92ZSByaWdodFxuICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGFycmF5LnNsaWNlKDAsIG1vdmVJbmRleCkpLCBfdG9Db25zdW1hYmxlQXJyYXkoYXJyYXkuc2xpY2UobW92ZUluZGV4ICsgMSwgdG9JbmRleCArIDEpKSwgW2l0ZW1dLCBfdG9Db25zdW1hYmxlQXJyYXkoYXJyYXkuc2xpY2UodG9JbmRleCArIDEsIGxlbmd0aCkpKTtcbiAgfVxuXG4gIHJldHVybiBhcnJheTtcbn0iLCJ2YXIgdHlwZVRlbXBsYXRlID0gXCInJHtuYW1lfScgaXMgbm90IGEgdmFsaWQgJHt0eXBlfVwiO1xuZXhwb3J0IHZhciBkZWZhdWx0VmFsaWRhdGVNZXNzYWdlcyA9IHtcbiAgZGVmYXVsdDogXCJWYWxpZGF0aW9uIGVycm9yIG9uIGZpZWxkICcke25hbWV9J1wiLFxuICByZXF1aXJlZDogXCInJHtuYW1lfScgaXMgcmVxdWlyZWRcIixcbiAgZW51bTogXCInJHtuYW1lfScgbXVzdCBiZSBvbmUgb2YgWyR7ZW51bX1dXCIsXG4gIHdoaXRlc3BhY2U6IFwiJyR7bmFtZX0nIGNhbm5vdCBiZSBlbXB0eVwiLFxuICBkYXRlOiB7XG4gICAgZm9ybWF0OiBcIicke25hbWV9JyBpcyBpbnZhbGlkIGZvciBmb3JtYXQgZGF0ZVwiLFxuICAgIHBhcnNlOiBcIicke25hbWV9JyBjb3VsZCBub3QgYmUgcGFyc2VkIGFzIGRhdGVcIixcbiAgICBpbnZhbGlkOiBcIicke25hbWV9JyBpcyBpbnZhbGlkIGRhdGVcIlxuICB9LFxuICB0eXBlczoge1xuICAgIHN0cmluZzogdHlwZVRlbXBsYXRlLFxuICAgIG1ldGhvZDogdHlwZVRlbXBsYXRlLFxuICAgIGFycmF5OiB0eXBlVGVtcGxhdGUsXG4gICAgb2JqZWN0OiB0eXBlVGVtcGxhdGUsXG4gICAgbnVtYmVyOiB0eXBlVGVtcGxhdGUsXG4gICAgZGF0ZTogdHlwZVRlbXBsYXRlLFxuICAgIGJvb2xlYW46IHR5cGVUZW1wbGF0ZSxcbiAgICBpbnRlZ2VyOiB0eXBlVGVtcGxhdGUsXG4gICAgZmxvYXQ6IHR5cGVUZW1wbGF0ZSxcbiAgICByZWdleHA6IHR5cGVUZW1wbGF0ZSxcbiAgICBlbWFpbDogdHlwZVRlbXBsYXRlLFxuICAgIHVybDogdHlwZVRlbXBsYXRlLFxuICAgIGhleDogdHlwZVRlbXBsYXRlXG4gIH0sXG4gIHN0cmluZzoge1xuICAgIGxlbjogXCInJHtuYW1lfScgbXVzdCBiZSBleGFjdGx5ICR7bGVufSBjaGFyYWN0ZXJzXCIsXG4gICAgbWluOiBcIicke25hbWV9JyBtdXN0IGJlIGF0IGxlYXN0ICR7bWlufSBjaGFyYWN0ZXJzXCIsXG4gICAgbWF4OiBcIicke25hbWV9JyBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gJHttYXh9IGNoYXJhY3RlcnNcIixcbiAgICByYW5nZTogXCInJHtuYW1lfScgbXVzdCBiZSBiZXR3ZWVuICR7bWlufSBhbmQgJHttYXh9IGNoYXJhY3RlcnNcIlxuICB9LFxuICBudW1iZXI6IHtcbiAgICBsZW46IFwiJyR7bmFtZX0nIG11c3QgZXF1YWwgJHtsZW59XCIsXG4gICAgbWluOiBcIicke25hbWV9JyBjYW5ub3QgYmUgbGVzcyB0aGFuICR7bWlufVwiLFxuICAgIG1heDogXCInJHtuYW1lfScgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiAke21heH1cIixcbiAgICByYW5nZTogXCInJHtuYW1lfScgbXVzdCBiZSBiZXR3ZWVuICR7bWlufSBhbmQgJHttYXh9XCJcbiAgfSxcbiAgYXJyYXk6IHtcbiAgICBsZW46IFwiJyR7bmFtZX0nIG11c3QgYmUgZXhhY3RseSAke2xlbn0gaW4gbGVuZ3RoXCIsXG4gICAgbWluOiBcIicke25hbWV9JyBjYW5ub3QgYmUgbGVzcyB0aGFuICR7bWlufSBpbiBsZW5ndGhcIixcbiAgICBtYXg6IFwiJyR7bmFtZX0nIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gJHttYXh9IGluIGxlbmd0aFwiLFxuICAgIHJhbmdlOiBcIicke25hbWV9JyBtdXN0IGJlIGJldHdlZW4gJHttaW59IGFuZCAke21heH0gaW4gbGVuZ3RoXCJcbiAgfSxcbiAgcGF0dGVybjoge1xuICAgIG1pc21hdGNoOiBcIicke25hbWV9JyBkb2VzIG5vdCBtYXRjaCBwYXR0ZXJuICR7cGF0dGVybn1cIlxuICB9XG59OyIsImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5XCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgUmF3QXN5bmNWYWxpZGF0b3IgZnJvbSAnYXN5bmMtdmFsaWRhdG9yJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB3YXJuaW5nIGZyb20gXCJyYy11dGlsL2VzL3dhcm5pbmdcIjtcbmltcG9ydCB7IHNldFZhbHVlcyB9IGZyb20gJy4vdmFsdWVVdGlsJztcbmltcG9ydCB7IGRlZmF1bHRWYWxpZGF0ZU1lc3NhZ2VzIH0gZnJvbSAnLi9tZXNzYWdlcyc7IC8vIFJlbW92ZSBpbmNvcnJlY3Qgb3JpZ2luYWwgdHMgZGVmaW5lXG5cbnZhciBBc3luY1ZhbGlkYXRvciA9IFJhd0FzeW5jVmFsaWRhdG9yO1xuLyoqXG4gKiBSZXBsYWNlIHdpdGggdGVtcGxhdGUuXG4gKiAgIGBJJ20gJHtuYW1lfWAgKyB7IG5hbWU6ICdiYW1ib28nIH0gPSBJJ20gYmFtYm9vXG4gKi9cblxuZnVuY3Rpb24gcmVwbGFjZU1lc3NhZ2UodGVtcGxhdGUsIGt2KSB7XG4gIHJldHVybiB0ZW1wbGF0ZS5yZXBsYWNlKC9cXCRcXHtcXHcrXFx9L2csIGZ1bmN0aW9uIChzdHIpIHtcbiAgICB2YXIga2V5ID0gc3RyLnNsaWNlKDIsIC0xKTtcbiAgICByZXR1cm4ga3Zba2V5XTtcbiAgfSk7XG59XG4vKipcbiAqIFdlIHVzZSBgYXN5bmMtdmFsaWRhdG9yYCB0byB2YWxpZGF0ZSBydWxlcy4gU28gaGF2ZSB0byBob3QgcmVwbGFjZSB0aGUgbWVzc2FnZSB3aXRoIHZhbGlkYXRvci5cbiAqIHsgcmVxdWlyZWQ6ICcke25hbWV9IGlzIHJlcXVpcmVkJyB9ID0+IHsgcmVxdWlyZWQ6ICgpID0+ICdmaWVsZCBpcyByZXF1aXJlZCcgfVxuICovXG5cblxuZnVuY3Rpb24gY29udmVydE1lc3NhZ2VzKG1lc3NhZ2VzLCBuYW1lLCBydWxlLCBtZXNzYWdlVmFyaWFibGVzKSB7XG4gIHZhciBrdiA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcnVsZSksIHt9LCB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBlbnVtOiAocnVsZS5lbnVtIHx8IFtdKS5qb2luKCcsICcpXG4gIH0pO1xuXG4gIHZhciByZXBsYWNlRnVuYyA9IGZ1bmN0aW9uIHJlcGxhY2VGdW5jKHRlbXBsYXRlLCBhZGRpdGlvbmFsS1YpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHJlcGxhY2VNZXNzYWdlKHRlbXBsYXRlLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGt2KSwgYWRkaXRpb25hbEtWKSk7XG4gICAgfTtcbiAgfTtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cblxuXG4gIGZ1bmN0aW9uIGZpbGxUZW1wbGF0ZShzb3VyY2UpIHtcbiAgICB2YXIgdGFyZ2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKHJ1bGVOYW1lKSB7XG4gICAgICB2YXIgdmFsdWUgPSBzb3VyY2VbcnVsZU5hbWVdO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0YXJnZXRbcnVsZU5hbWVdID0gcmVwbGFjZUZ1bmModmFsdWUsIG1lc3NhZ2VWYXJpYWJsZXMpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZSAmJiBfdHlwZW9mKHZhbHVlKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGFyZ2V0W3J1bGVOYW1lXSA9IHt9O1xuICAgICAgICBmaWxsVGVtcGxhdGUodmFsdWUsIHRhcmdldFtydWxlTmFtZV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFyZ2V0W3J1bGVOYW1lXSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cbiAgLyogZXNsaW50LWVuYWJsZSAqL1xuXG5cbiAgcmV0dXJuIGZpbGxUZW1wbGF0ZShzZXRWYWx1ZXMoe30sIGRlZmF1bHRWYWxpZGF0ZU1lc3NhZ2VzLCBtZXNzYWdlcykpO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVJ1bGUoX3gsIF94MiwgX3gzLCBfeDQsIF94NSkge1xuICByZXR1cm4gX3ZhbGlkYXRlUnVsZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuLyoqXG4gKiBXZSB1c2UgYGFzeW5jLXZhbGlkYXRvcmAgdG8gdmFsaWRhdGUgdGhlIHZhbHVlLlxuICogQnV0IG9ubHkgY2hlY2sgb25lIHZhbHVlIGluIGEgdGltZSB0byBhdm9pZCBuYW1lUGF0aCB2YWxpZGF0ZSBpc3N1ZS5cbiAqL1xuXG5cbmZ1bmN0aW9uIF92YWxpZGF0ZVJ1bGUoKSB7XG4gIF92YWxpZGF0ZVJ1bGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMihuYW1lLCB2YWx1ZSwgcnVsZSwgb3B0aW9ucywgbWVzc2FnZVZhcmlhYmxlcykge1xuICAgIHZhciBjbG9uZVJ1bGUsIHN1YlJ1bGVGaWVsZCwgdmFsaWRhdG9yLCBtZXNzYWdlcywgcmVzdWx0LCBzdWJSZXN1bHRzO1xuICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0Mikge1xuICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgY2xvbmVSdWxlID0gX29iamVjdFNwcmVhZCh7fSwgcnVsZSk7IC8vIFdlIHNob3VsZCBzcGVjaWFsIGhhbmRsZSBhcnJheSB2YWxpZGF0ZVxuXG4gICAgICAgICAgICBzdWJSdWxlRmllbGQgPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAoY2xvbmVSdWxlICYmIGNsb25lUnVsZS50eXBlID09PSAnYXJyYXknICYmIGNsb25lUnVsZS5kZWZhdWx0RmllbGQpIHtcbiAgICAgICAgICAgICAgc3ViUnVsZUZpZWxkID0gY2xvbmVSdWxlLmRlZmF1bHRGaWVsZDtcbiAgICAgICAgICAgICAgZGVsZXRlIGNsb25lUnVsZS5kZWZhdWx0RmllbGQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhbGlkYXRvciA9IG5ldyBBc3luY1ZhbGlkYXRvcihfZGVmaW5lUHJvcGVydHkoe30sIG5hbWUsIFtjbG9uZVJ1bGVdKSk7XG4gICAgICAgICAgICBtZXNzYWdlcyA9IGNvbnZlcnRNZXNzYWdlcyhvcHRpb25zLnZhbGlkYXRlTWVzc2FnZXMsIG5hbWUsIGNsb25lUnVsZSwgbWVzc2FnZVZhcmlhYmxlcyk7XG4gICAgICAgICAgICB2YWxpZGF0b3IubWVzc2FnZXMobWVzc2FnZXMpO1xuICAgICAgICAgICAgcmVzdWx0ID0gW107XG4gICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDc7XG4gICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDEwO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWxpZGF0b3IudmFsaWRhdGUoX2RlZmluZVByb3BlcnR5KHt9LCBuYW1lLCB2YWx1ZSksIF9vYmplY3RTcHJlYWQoe30sIG9wdGlvbnMpKSk7XG5cbiAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxNTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMTI7XG4gICAgICAgICAgICBfY29udGV4dDIudDAgPSBfY29udGV4dDJbXCJjYXRjaFwiXSg3KTtcblxuICAgICAgICAgICAgaWYgKF9jb250ZXh0Mi50MC5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgcmVzdWx0ID0gX2NvbnRleHQyLnQwLmVycm9ycy5tYXAoZnVuY3Rpb24gKF9yZWYyLCBpbmRleCkge1xuICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gX3JlZjIubWVzc2FnZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKC8vIFdyYXAgUmVhY3ROb2RlIHdpdGggYGtleWBcblxuICAgICAgICAgICAgICAgICAgLyojX19QVVJFX18qL1xuICAgICAgICAgICAgICAgICAgUmVhY3QuaXNWYWxpZEVsZW1lbnQobWVzc2FnZSkgPyAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KG1lc3NhZ2UsIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcImVycm9yX1wiLmNvbmNhdChpbmRleClcbiAgICAgICAgICAgICAgICAgIH0pIDogbWVzc2FnZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihfY29udGV4dDIudDApO1xuICAgICAgICAgICAgICByZXN1bHQgPSBbbWVzc2FnZXMuZGVmYXVsdCgpXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgICBpZiAoISghcmVzdWx0Lmxlbmd0aCAmJiBzdWJSdWxlRmllbGQpKSB7XG4gICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMjA7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE4O1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHZhbHVlLm1hcChmdW5jdGlvbiAoc3ViVmFsdWUsIGkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUnVsZShcIlwiLmNvbmNhdChuYW1lLCBcIi5cIikuY29uY2F0KGkpLCBzdWJWYWx1ZSwgc3ViUnVsZUZpZWxkLCBvcHRpb25zLCBtZXNzYWdlVmFyaWFibGVzKTtcbiAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgIGNhc2UgMTg6XG4gICAgICAgICAgICBzdWJSZXN1bHRzID0gX2NvbnRleHQyLnNlbnQ7XG4gICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmFicnVwdChcInJldHVyblwiLCBzdWJSZXN1bHRzLnJlZHVjZShmdW5jdGlvbiAocHJldiwgZXJyb3JzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHByZXYpLCBfdG9Db25zdW1hYmxlQXJyYXkoZXJyb3JzKSk7XG4gICAgICAgICAgICB9LCBbXSkpO1xuXG4gICAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIsIHJlc3VsdCk7XG5cbiAgICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgX2NhbGxlZTIsIG51bGwsIFtbNywgMTJdXSk7XG4gIH0pKTtcbiAgcmV0dXJuIF92YWxpZGF0ZVJ1bGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUnVsZXMobmFtZVBhdGgsIHZhbHVlLCBydWxlcywgb3B0aW9ucywgdmFsaWRhdGVGaXJzdCwgbWVzc2FnZVZhcmlhYmxlcykge1xuICB2YXIgbmFtZSA9IG5hbWVQYXRoLmpvaW4oJy4nKTsgLy8gRmlsbCBydWxlIHdpdGggY29udGV4dFxuXG4gIHZhciBmaWxsZWRSdWxlcyA9IHJ1bGVzLm1hcChmdW5jdGlvbiAoY3VycmVudFJ1bGUpIHtcbiAgICB2YXIgb3JpZ2luVmFsaWRhdG9yRnVuYyA9IGN1cnJlbnRSdWxlLnZhbGlkYXRvcjtcblxuICAgIGlmICghb3JpZ2luVmFsaWRhdG9yRnVuYykge1xuICAgICAgcmV0dXJuIGN1cnJlbnRSdWxlO1xuICAgIH1cblxuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGN1cnJlbnRSdWxlKSwge30sIHtcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHJ1bGUsIHZhbCwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGhhc1Byb21pc2UgPSBmYWxzZTsgLy8gV3JhcCBjYWxsYmFjayBvbmx5IGFjY2VwdCB3aGVuIHByb21pc2Ugbm90IHByb3ZpZGVkXG5cbiAgICAgICAgdmFyIHdyYXBwZWRDYWxsYmFjayA9IGZ1bmN0aW9uIHdyYXBwZWRDYWxsYmFjaygpIHtcbiAgICAgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gV2FpdCBhIHRpY2sgdG8gbWFrZSBzdXJlIHJldHVybiB0eXBlIGlzIGEgcHJvbWlzZVxuICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2FybmluZyghaGFzUHJvbWlzZSwgJ1lvdXIgdmFsaWRhdG9yIGZ1bmN0aW9uIGhhcyBhbHJlYWR5IHJldHVybiBhIHByb21pc2UuIGBjYWxsYmFja2Agd2lsbCBiZSBpZ25vcmVkLicpO1xuXG4gICAgICAgICAgICBpZiAoIWhhc1Byb21pc2UpIHtcbiAgICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkodm9pZCAwLCBhcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfTsgLy8gR2V0IHByb21pc2VcblxuXG4gICAgICAgIHZhciBwcm9taXNlID0gb3JpZ2luVmFsaWRhdG9yRnVuYyhydWxlLCB2YWwsIHdyYXBwZWRDYWxsYmFjayk7XG4gICAgICAgIGhhc1Byb21pc2UgPSBwcm9taXNlICYmIHR5cGVvZiBwcm9taXNlLnRoZW4gPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHByb21pc2UuY2F0Y2ggPT09ICdmdW5jdGlvbic7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiAxLiBVc2UgcHJvbWlzZSBhcyB0aGUgZmlyc3QgcHJpb3JpdHkuXG4gICAgICAgICAqIDIuIElmIHByb21pc2Ugbm90IGV4aXN0LCB1c2UgY2FsbGJhY2sgd2l0aCB3YXJuaW5nIGluc3RlYWRcbiAgICAgICAgICovXG5cbiAgICAgICAgd2FybmluZyhoYXNQcm9taXNlLCAnYGNhbGxiYWNrYCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgcmV0dXJuIGEgcHJvbWlzZSBpbnN0ZWFkLicpO1xuXG4gICAgICAgIGlmIChoYXNQcm9taXNlKSB7XG4gICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgY2FsbGJhY2soZXJyIHx8ICcgJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHZhciBzdW1tYXJ5UHJvbWlzZTtcblxuICBpZiAodmFsaWRhdGVGaXJzdCA9PT0gdHJ1ZSkge1xuICAgIC8vID4+Pj4+IFZhbGlkYXRlIGJ5IHNlcmlhbGl6YXRpb25cbiAgICBzdW1tYXJ5UHJvbWlzZSA9IG5ldyBQcm9taXNlKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB2YXIgaSwgZXJyb3JzO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGkgPSAwO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBpZiAoIShpIDwgZmlsbGVkUnVsZXMubGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDExO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUnVsZShuYW1lLCB2YWx1ZSwgZmlsbGVkUnVsZXNbaV0sIG9wdGlvbnMsIG1lc3NhZ2VWYXJpYWJsZXMpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICBlcnJvcnMgPSBfY29udGV4dC5zZW50O1xuXG4gICAgICAgICAgICAgICAgaWYgKCFlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gODtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcnMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIik7XG5cbiAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgICAgIC8qIGVzbGludC1lbmFibGUgKi9cbiAgICAgICAgICAgICAgICByZXNvbHZlKFtdKTtcblxuICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUpO1xuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKF94NiwgX3g3KSB7XG4gICAgICAgIHJldHVybiBfcmVmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH0oKSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gPj4+Pj4gVmFsaWRhdGUgYnkgcGFyYWxsZWxcbiAgICB2YXIgcnVsZVByb21pc2VzID0gZmlsbGVkUnVsZXMubWFwKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGVSdWxlKG5hbWUsIHZhbHVlLCBydWxlLCBvcHRpb25zLCBtZXNzYWdlVmFyaWFibGVzKTtcbiAgICB9KTtcbiAgICBzdW1tYXJ5UHJvbWlzZSA9ICh2YWxpZGF0ZUZpcnN0ID8gZmluaXNoT25GaXJzdEZhaWxlZChydWxlUHJvbWlzZXMpIDogZmluaXNoT25BbGxGYWlsZWQocnVsZVByb21pc2VzKSkudGhlbihmdW5jdGlvbiAoZXJyb3JzKSB7XG4gICAgICBpZiAoIWVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3JzKTtcbiAgICB9KTtcbiAgfSAvLyBJbnRlcm5hbCBjYXRjaCBlcnJvciB0byBhdm9pZCBjb25zb2xlIGVycm9yIGxvZy5cblxuXG4gIHN1bW1hcnlQcm9taXNlLmNhdGNoKGZ1bmN0aW9uIChlKSB7XG4gICAgcmV0dXJuIGU7XG4gIH0pO1xuICByZXR1cm4gc3VtbWFyeVByb21pc2U7XG59XG5cbmZ1bmN0aW9uIGZpbmlzaE9uQWxsRmFpbGVkKF94OCkge1xuICByZXR1cm4gX2ZpbmlzaE9uQWxsRmFpbGVkLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbmZ1bmN0aW9uIF9maW5pc2hPbkFsbEZhaWxlZCgpIHtcbiAgX2ZpbmlzaE9uQWxsRmFpbGVkID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMocnVsZVByb21pc2VzKSB7XG4gICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7XG4gICAgICB3aGlsZSAoMSkge1xuICAgICAgICBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLmFicnVwdChcInJldHVyblwiLCBQcm9taXNlLmFsbChydWxlUHJvbWlzZXMpLnRoZW4oZnVuY3Rpb24gKGVycm9yc0xpc3QpIHtcbiAgICAgICAgICAgICAgdmFyIF9yZWYzO1xuXG4gICAgICAgICAgICAgIHZhciBlcnJvcnMgPSAoX3JlZjMgPSBbXSkuY29uY2F0LmFwcGx5KF9yZWYzLCBfdG9Db25zdW1hYmxlQXJyYXkoZXJyb3JzTGlzdCkpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBfY2FsbGVlMyk7XG4gIH0pKTtcbiAgcmV0dXJuIF9maW5pc2hPbkFsbEZhaWxlZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5mdW5jdGlvbiBmaW5pc2hPbkZpcnN0RmFpbGVkKF94OSkge1xuICByZXR1cm4gX2ZpbmlzaE9uRmlyc3RGYWlsZWQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZnVuY3Rpb24gX2ZpbmlzaE9uRmlyc3RGYWlsZWQoKSB7XG4gIF9maW5pc2hPbkZpcnN0RmFpbGVkID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQocnVsZVByb21pc2VzKSB7XG4gICAgdmFyIGNvdW50O1xuICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkge1xuICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgY291bnQgPSAwO1xuICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5hYnJ1cHQoXCJyZXR1cm5cIiwgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICAgICAgcnVsZVByb21pc2VzLmZvckVhY2goZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlcnJvcnMpO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb3VudCArPSAxO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoY291bnQgPT09IHJ1bGVQcm9taXNlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbXSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgX2NhbGxlZTQpO1xuICB9KSk7XG4gIHJldHVybiBfZmluaXNoT25GaXJzdEZhaWxlZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufSIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgdG9DaGlsZHJlbkFycmF5IGZyb20gXCJyYy11dGlsL2VzL0NoaWxkcmVuL3RvQXJyYXlcIjtcbmltcG9ydCB3YXJuaW5nIGZyb20gXCJyYy11dGlsL2VzL3dhcm5pbmdcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBGaWVsZENvbnRleHQsIHsgSE9PS19NQVJLIH0gZnJvbSAnLi9GaWVsZENvbnRleHQnO1xuaW1wb3J0IHsgdG9BcnJheSB9IGZyb20gJy4vdXRpbHMvdHlwZVV0aWwnO1xuaW1wb3J0IHsgdmFsaWRhdGVSdWxlcyB9IGZyb20gJy4vdXRpbHMvdmFsaWRhdGVVdGlsJztcbmltcG9ydCB7IGNvbnRhaW5zTmFtZVBhdGgsIGRlZmF1bHRHZXRWYWx1ZUZyb21FdmVudCwgZ2V0TmFtZVBhdGgsIGdldFZhbHVlIH0gZnJvbSAnLi91dGlscy92YWx1ZVV0aWwnO1xuXG5mdW5jdGlvbiByZXF1aXJlVXBkYXRlKHNob3VsZFVwZGF0ZSwgcHJldiwgbmV4dCwgcHJldlZhbHVlLCBuZXh0VmFsdWUsIGluZm8pIHtcbiAgaWYgKHR5cGVvZiBzaG91bGRVcGRhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gc2hvdWxkVXBkYXRlKHByZXYsIG5leHQsICdzb3VyY2UnIGluIGluZm8gPyB7XG4gICAgICBzb3VyY2U6IGluZm8uc291cmNlXG4gICAgfSA6IHt9KTtcbiAgfVxuXG4gIHJldHVybiBwcmV2VmFsdWUgIT09IG5leHRWYWx1ZTtcbn0gLy8gV2UgdXNlIENsYXNzIGluc3RlYWQgb2YgSG9va3MgaGVyZSBzaW5jZSBpdCB3aWxsIGNvc3QgbXVjaCBjb2RlIGJ5IHVzaW5nIEhvb2tzLlxuXG5cbnZhciBGaWVsZCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoRmllbGQsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoRmllbGQpO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBTdWJzY3JpcHRpb25zID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICBmdW5jdGlvbiBGaWVsZChwcm9wcykge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBGaWVsZCk7XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKTtcbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHJlc2V0Q291bnQ6IDBcbiAgICB9O1xuICAgIF90aGlzLmNhbmNlbFJlZ2lzdGVyRnVuYyA9IG51bGw7XG4gICAgX3RoaXMubW91bnRlZCA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEZvbGxvdyBzdGF0ZSBzaG91bGQgbm90IG1hbmFnZW1lbnQgaW4gU3RhdGUgc2luY2UgaXQgd2lsbCBhc3luYyB1cGRhdGUgYnkgUmVhY3QuXG4gICAgICogVGhpcyBtYWtlcyBmaXJzdCByZW5kZXIgb2YgZm9ybSBjYW4gbm90IGdldCBjb3JyZWN0IHN0YXRlIHZhbHVlLlxuICAgICAqL1xuXG4gICAgX3RoaXMudG91Y2hlZCA9IGZhbHNlO1xuICAgIC8qKiBNYXJrIHdoZW4gdG91Y2hlZCAmIHZhbGlkYXRlZC4gQ3VycmVudGx5IG9ubHkgdXNlZCBmb3IgYGRlcGVuZGVuY2llc2AgKi9cblxuICAgIF90aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgX3RoaXMudmFsaWRhdGVQcm9taXNlID0gbnVsbDtcbiAgICBfdGhpcy5lcnJvcnMgPSBbXTtcblxuICAgIF90aGlzLmNhbmNlbFJlZ2lzdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgcHJlc2VydmUgPSBfdGhpcyRwcm9wcy5wcmVzZXJ2ZSxcbiAgICAgICAgICBpc0xpc3RGaWVsZCA9IF90aGlzJHByb3BzLmlzTGlzdEZpZWxkLFxuICAgICAgICAgIG5hbWUgPSBfdGhpcyRwcm9wcy5uYW1lO1xuXG4gICAgICBpZiAoX3RoaXMuY2FuY2VsUmVnaXN0ZXJGdW5jKSB7XG4gICAgICAgIF90aGlzLmNhbmNlbFJlZ2lzdGVyRnVuYyhpc0xpc3RGaWVsZCwgcHJlc2VydmUsIGdldE5hbWVQYXRoKG5hbWUpKTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuY2FuY2VsUmVnaXN0ZXJGdW5jID0gbnVsbDtcbiAgICB9OyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFV0aWxzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gICAgX3RoaXMuZ2V0TmFtZVBhdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzMi5uYW1lLFxuICAgICAgICAgIGZpZWxkQ29udGV4dCA9IF90aGlzJHByb3BzMi5maWVsZENvbnRleHQ7XG4gICAgICB2YXIgX2ZpZWxkQ29udGV4dCRwcmVmaXhOID0gZmllbGRDb250ZXh0LnByZWZpeE5hbWUsXG4gICAgICAgICAgcHJlZml4TmFtZSA9IF9maWVsZENvbnRleHQkcHJlZml4TiA9PT0gdm9pZCAwID8gW10gOiBfZmllbGRDb250ZXh0JHByZWZpeE47XG4gICAgICByZXR1cm4gbmFtZSAhPT0gdW5kZWZpbmVkID8gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShwcmVmaXhOYW1lKSwgX3RvQ29uc3VtYWJsZUFycmF5KG5hbWUpKSA6IFtdO1xuICAgIH07XG5cbiAgICBfdGhpcy5nZXRSdWxlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBfdGhpcyRwcm9wczMkcnVsZXMgPSBfdGhpcyRwcm9wczMucnVsZXMsXG4gICAgICAgICAgcnVsZXMgPSBfdGhpcyRwcm9wczMkcnVsZXMgPT09IHZvaWQgMCA/IFtdIDogX3RoaXMkcHJvcHMzJHJ1bGVzLFxuICAgICAgICAgIGZpZWxkQ29udGV4dCA9IF90aGlzJHByb3BzMy5maWVsZENvbnRleHQ7XG4gICAgICByZXR1cm4gcnVsZXMubWFwKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcnVsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiBydWxlKGZpZWxkQ29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcnVsZTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfdGhpcy5yZWZyZXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFfdGhpcy5tb3VudGVkKSByZXR1cm47XG4gICAgICAvKipcbiAgICAgICAqIENsZWFuIHVwIGN1cnJlbnQgbm9kZS5cbiAgICAgICAqL1xuXG4gICAgICBfdGhpcy5zZXRTdGF0ZShmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICB2YXIgcmVzZXRDb3VudCA9IF9yZWYucmVzZXRDb3VudDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldENvdW50OiByZXNldENvdW50ICsgMVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PSBGaWVsZCBFbnRpdHkgSW50ZXJmYWNlcyA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gVHJpZ2dlciBieSBzdG9yZSB1cGRhdGUuIENoZWNrIGlmIG5lZWQgdXBkYXRlIHRoZSBjb21wb25lbnRcblxuXG4gICAgX3RoaXMub25TdG9yZUNoYW5nZSA9IGZ1bmN0aW9uIChwcmV2U3RvcmUsIG5hbWVQYXRoTGlzdCwgaW5mbykge1xuICAgICAgdmFyIF90aGlzJHByb3BzNCA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIHNob3VsZFVwZGF0ZSA9IF90aGlzJHByb3BzNC5zaG91bGRVcGRhdGUsXG4gICAgICAgICAgX3RoaXMkcHJvcHM0JGRlcGVuZGVuID0gX3RoaXMkcHJvcHM0LmRlcGVuZGVuY2llcyxcbiAgICAgICAgICBkZXBlbmRlbmNpZXMgPSBfdGhpcyRwcm9wczQkZGVwZW5kZW4gPT09IHZvaWQgMCA/IFtdIDogX3RoaXMkcHJvcHM0JGRlcGVuZGVuLFxuICAgICAgICAgIG9uUmVzZXQgPSBfdGhpcyRwcm9wczQub25SZXNldDtcbiAgICAgIHZhciBzdG9yZSA9IGluZm8uc3RvcmU7XG5cbiAgICAgIHZhciBuYW1lUGF0aCA9IF90aGlzLmdldE5hbWVQYXRoKCk7XG5cbiAgICAgIHZhciBwcmV2VmFsdWUgPSBfdGhpcy5nZXRWYWx1ZShwcmV2U3RvcmUpO1xuXG4gICAgICB2YXIgY3VyVmFsdWUgPSBfdGhpcy5nZXRWYWx1ZShzdG9yZSk7XG5cbiAgICAgIHZhciBuYW1lUGF0aE1hdGNoID0gbmFtZVBhdGhMaXN0ICYmIGNvbnRhaW5zTmFtZVBhdGgobmFtZVBhdGhMaXN0LCBuYW1lUGF0aCk7IC8vIGBzZXRGaWVsZHNWYWx1ZWAgaXMgYSBxdWljayBhY2Nlc3MgdG8gdXBkYXRlIHJlbGF0ZWQgc3RhdHVzXG5cbiAgICAgIGlmIChpbmZvLnR5cGUgPT09ICd2YWx1ZVVwZGF0ZScgJiYgaW5mby5zb3VyY2UgPT09ICdleHRlcm5hbCcgJiYgcHJldlZhbHVlICE9PSBjdXJWYWx1ZSkge1xuICAgICAgICBfdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgICAgICAgX3RoaXMuZGlydHkgPSB0cnVlO1xuICAgICAgICBfdGhpcy52YWxpZGF0ZVByb21pc2UgPSBudWxsO1xuICAgICAgICBfdGhpcy5lcnJvcnMgPSBbXTtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChpbmZvLnR5cGUpIHtcbiAgICAgICAgY2FzZSAncmVzZXQnOlxuICAgICAgICAgIGlmICghbmFtZVBhdGhMaXN0IHx8IG5hbWVQYXRoTWF0Y2gpIHtcbiAgICAgICAgICAgIC8vIENsZWFuIHVwIHN0YXRlXG4gICAgICAgICAgICBfdGhpcy50b3VjaGVkID0gZmFsc2U7XG4gICAgICAgICAgICBfdGhpcy5kaXJ0eSA9IGZhbHNlO1xuICAgICAgICAgICAgX3RoaXMudmFsaWRhdGVQcm9taXNlID0gbnVsbDtcbiAgICAgICAgICAgIF90aGlzLmVycm9ycyA9IFtdO1xuXG4gICAgICAgICAgICBpZiAob25SZXNldCkge1xuICAgICAgICAgICAgICBvblJlc2V0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF90aGlzLnJlZnJlc2goKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3NldEZpZWxkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZiAobmFtZVBhdGhNYXRjaCkge1xuICAgICAgICAgICAgICB2YXIgZGF0YSA9IGluZm8uZGF0YTtcblxuICAgICAgICAgICAgICBpZiAoJ3RvdWNoZWQnIGluIGRhdGEpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy50b3VjaGVkID0gZGF0YS50b3VjaGVkO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCd2YWxpZGF0aW5nJyBpbiBkYXRhICYmICEoJ29yaWdpblJDRmllbGQnIGluIGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMudmFsaWRhdGVQcm9taXNlID0gZGF0YS52YWxpZGF0aW5nID8gUHJvbWlzZS5yZXNvbHZlKFtdKSA6IG51bGw7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoJ2Vycm9ycycgaW4gZGF0YSkge1xuICAgICAgICAgICAgICAgIF90aGlzLmVycm9ycyA9IGRhdGEuZXJyb3JzIHx8IFtdO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgX3RoaXMuZGlydHkgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIF90aGlzLnJlUmVuZGVyKCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSAvLyBIYW5kbGUgdXBkYXRlIGJ5IGBzZXRGaWVsZGAgd2l0aCBgc2hvdWxkVXBkYXRlYFxuXG5cbiAgICAgICAgICAgIGlmIChzaG91bGRVcGRhdGUgJiYgIW5hbWVQYXRoLmxlbmd0aCAmJiByZXF1aXJlVXBkYXRlKHNob3VsZFVwZGF0ZSwgcHJldlN0b3JlLCBzdG9yZSwgcHJldlZhbHVlLCBjdXJWYWx1ZSwgaW5mbykpIHtcbiAgICAgICAgICAgICAgX3RoaXMucmVSZW5kZXIoKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICBjYXNlICdkZXBlbmRlbmNpZXNVcGRhdGUnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJpZ2dlciB3aGVuIG1hcmtlZCBgZGVwZW5kZW5jaWVzYCB1cGRhdGVkLiBSZWxhdGVkIGZpZWxkcyB3aWxsIGFsbCB1cGRhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmFyIGRlcGVuZGVuY3lMaXN0ID0gZGVwZW5kZW5jaWVzLm1hcChnZXROYW1lUGF0aCk7IC8vIE5vIG5lZWQgZm9yIGBuYW1lUGF0aE1hdGhgIGNoZWNrIGFuZCBgc2hvdWxkVXBkYXRlYCBjaGVjaywgc2luY2UgYHZhbHVlVXBkYXRlYCB3aWxsIGJlXG4gICAgICAgICAgICAvLyBlbWl0dGVkIGVhcmxpZXIgYW5kIHRoZXkgd2lsbCB3b3JrIHRoZXJlXG4gICAgICAgICAgICAvLyBJZiBzZXQgaXQgbWF5IGNhdXNlIHVubmVjZXNzYXJ5IHR3aWNlIHJlcmVuZGVyaW5nXG5cbiAgICAgICAgICAgIGlmIChkZXBlbmRlbmN5TGlzdC5zb21lKGZ1bmN0aW9uIChkZXBlbmRlbmN5KSB7XG4gICAgICAgICAgICAgIHJldHVybiBjb250YWluc05hbWVQYXRoKGluZm8ucmVsYXRlZEZpZWxkcywgZGVwZW5kZW5jeSk7XG4gICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICBfdGhpcy5yZVJlbmRlcigpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgLy8gMS4gSWYgYG5hbWVQYXRoYCBleGlzdHMgaW4gYG5hbWVQYXRoTGlzdGAsIG1lYW5zIGl0J3MgcmVsYXRlZCB2YWx1ZSBhbmQgc2hvdWxkIHVwZGF0ZVxuICAgICAgICAgIC8vICAgICAgRm9yIGV4YW1wbGUgPExpc3QgbmFtZT1cImxpc3RcIj48RmllbGQgbmFtZT17WydsaXN0JywgMF19PjwvTGlzdD5cbiAgICAgICAgICAvLyAgICAgIElmIGBuYW1lUGF0aExpc3RgIGlzIFtbJ2xpc3QnXV0gKExpc3QgdmFsdWUgdXBkYXRlKSwgRmllbGQgc2hvdWxkIGJlIHVwZGF0ZWRcbiAgICAgICAgICAvLyAgICAgIElmIGBuYW1lUGF0aExpc3RgIGlzIFtbJ2xpc3QnLCAwXV0gKEZpZWxkIHZhbHVlIHVwZGF0ZSksIExpc3Qgc2hvdWxkbid0IGJlIHVwZGF0ZWRcbiAgICAgICAgICAvLyAyLlxuICAgICAgICAgIC8vICAgMi4xIElmIGBkZXBlbmRlbmNpZXNgIGlzIHNldCwgYG5hbWVgIGlzIG5vdCBzZXQgYW5kIGBzaG91bGRVcGRhdGVgIGlzIG5vdCBzZXQsXG4gICAgICAgICAgLy8gICAgICAgZG9uJ3QgdXNlIGBzaG91bGRVcGRhdGVgLiBgZGVwZW5kZW5jaWVzYCBpcyB2aWV3IGFzIGEgc2hvcnRjdXQgaWYgYHNob3VsZFVwZGF0ZWBcbiAgICAgICAgICAvLyAgICAgICBpcyBub3QgcHJvdmlkZWRcbiAgICAgICAgICAvLyAgIDIuMiBJZiBgc2hvdWxkVXBkYXRlYCBwcm92aWRlZCwgdXNlIGN1c3RvbWl6ZSBsb2dpYyB0byB1cGRhdGUgdGhlIGZpZWxkXG4gICAgICAgICAgLy8gICAgICAgZWxzZSB0byBjaGVjayBpZiB2YWx1ZSBjaGFuZ2VkXG4gICAgICAgICAgaWYgKG5hbWVQYXRoTWF0Y2ggfHwgKCFkZXBlbmRlbmNpZXMubGVuZ3RoIHx8IG5hbWVQYXRoLmxlbmd0aCB8fCBzaG91bGRVcGRhdGUpICYmIHJlcXVpcmVVcGRhdGUoc2hvdWxkVXBkYXRlLCBwcmV2U3RvcmUsIHN0b3JlLCBwcmV2VmFsdWUsIGN1clZhbHVlLCBpbmZvKSkge1xuICAgICAgICAgICAgX3RoaXMucmVSZW5kZXIoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2hvdWxkVXBkYXRlID09PSB0cnVlKSB7XG4gICAgICAgIF90aGlzLnJlUmVuZGVyKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLnZhbGlkYXRlUnVsZXMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgLy8gV2Ugc2hvdWxkIGZpeGVkIG5hbWVQYXRoICYgdmFsdWUgdG8gYXZvaWQgZGV2ZWxvcGVyIGNoYW5nZSB0aGVuIGJ5IGZvcm0gZnVuY3Rpb25cbiAgICAgIHZhciBuYW1lUGF0aCA9IF90aGlzLmdldE5hbWVQYXRoKCk7XG5cbiAgICAgIHZhciBjdXJyZW50VmFsdWUgPSBfdGhpcy5nZXRWYWx1ZSgpOyAvLyBGb3JjZSBjaGFuZ2UgdG8gYXN5bmMgdG8gYXZvaWQgcnVsZSBPT0QgdW5kZXIgcmVuZGVyUHJvcHMgZmllbGRcblxuXG4gICAgICB2YXIgcm9vdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFfdGhpcy5tb3VudGVkKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIF90aGlzJHByb3BzNSA9IF90aGlzLnByb3BzLFxuICAgICAgICAgICAgX3RoaXMkcHJvcHM1JHZhbGlkYXRlID0gX3RoaXMkcHJvcHM1LnZhbGlkYXRlRmlyc3QsXG4gICAgICAgICAgICB2YWxpZGF0ZUZpcnN0ID0gX3RoaXMkcHJvcHM1JHZhbGlkYXRlID09PSB2b2lkIDAgPyBmYWxzZSA6IF90aGlzJHByb3BzNSR2YWxpZGF0ZSxcbiAgICAgICAgICAgIG1lc3NhZ2VWYXJpYWJsZXMgPSBfdGhpcyRwcm9wczUubWVzc2FnZVZhcmlhYmxlcztcblxuICAgICAgICB2YXIgX3JlZjIgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgICAgICAgdHJpZ2dlck5hbWUgPSBfcmVmMi50cmlnZ2VyTmFtZTtcblxuICAgICAgICB2YXIgZmlsdGVyZWRSdWxlcyA9IF90aGlzLmdldFJ1bGVzKCk7XG5cbiAgICAgICAgaWYgKHRyaWdnZXJOYW1lKSB7XG4gICAgICAgICAgZmlsdGVyZWRSdWxlcyA9IGZpbHRlcmVkUnVsZXMuZmlsdGVyKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICAgICAgICB2YXIgdmFsaWRhdGVUcmlnZ2VyID0gcnVsZS52YWxpZGF0ZVRyaWdnZXI7XG5cbiAgICAgICAgICAgIGlmICghdmFsaWRhdGVUcmlnZ2VyKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgdHJpZ2dlckxpc3QgPSB0b0FycmF5KHZhbGlkYXRlVHJpZ2dlcik7XG4gICAgICAgICAgICByZXR1cm4gdHJpZ2dlckxpc3QuaW5jbHVkZXModHJpZ2dlck5hbWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHByb21pc2UgPSB2YWxpZGF0ZVJ1bGVzKG5hbWVQYXRoLCBjdXJyZW50VmFsdWUsIGZpbHRlcmVkUnVsZXMsIG9wdGlvbnMsIHZhbGlkYXRlRmlyc3QsIG1lc3NhZ2VWYXJpYWJsZXMpO1xuICAgICAgICBwcm9taXNlLmNhdGNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBlcnJvcnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IFtdO1xuXG4gICAgICAgICAgaWYgKF90aGlzLnZhbGlkYXRlUHJvbWlzZSA9PT0gcm9vdFByb21pc2UpIHtcbiAgICAgICAgICAgIF90aGlzLnZhbGlkYXRlUHJvbWlzZSA9IG51bGw7XG4gICAgICAgICAgICBfdGhpcy5lcnJvcnMgPSBlcnJvcnM7XG5cbiAgICAgICAgICAgIF90aGlzLnJlUmVuZGVyKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgICB9KTtcbiAgICAgIF90aGlzLnZhbGlkYXRlUHJvbWlzZSA9IHJvb3RQcm9taXNlO1xuICAgICAgX3RoaXMuZGlydHkgPSB0cnVlO1xuICAgICAgX3RoaXMuZXJyb3JzID0gW107IC8vIEZvcmNlIHRyaWdnZXIgcmUtcmVuZGVyIHNpbmNlIHdlIG5lZWQgc3luYyByZW5kZXJQcm9wcyB3aXRoIG5ldyBtZXRhXG5cbiAgICAgIF90aGlzLnJlUmVuZGVyKCk7XG5cbiAgICAgIHJldHVybiByb290UHJvbWlzZTtcbiAgICB9O1xuXG4gICAgX3RoaXMuaXNGaWVsZFZhbGlkYXRpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gISFfdGhpcy52YWxpZGF0ZVByb21pc2U7XG4gICAgfTtcblxuICAgIF90aGlzLmlzRmllbGRUb3VjaGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnRvdWNoZWQ7XG4gICAgfTtcblxuICAgIF90aGlzLmlzRmllbGREaXJ0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5kaXJ0eTtcbiAgICB9O1xuXG4gICAgX3RoaXMuZ2V0RXJyb3JzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLmVycm9ycztcbiAgICB9O1xuXG4gICAgX3RoaXMuaXNMaXN0RmllbGQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMucHJvcHMuaXNMaXN0RmllbGQ7XG4gICAgfTtcblxuICAgIF90aGlzLmlzTGlzdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wcm9wcy5pc0xpc3Q7XG4gICAgfTtcblxuICAgIF90aGlzLmlzUHJlc2VydmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMucHJvcHMucHJlc2VydmU7XG4gICAgfTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gQ2hpbGQgQ29tcG9uZW50ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuICAgIF90aGlzLmdldE1ldGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBNYWtlIGVycm9yICYgdmFsaWRhdGluZyBpbiBjYWNoZSB0byBzYXZlIHBlcmZcbiAgICAgIF90aGlzLnByZXZWYWxpZGF0aW5nID0gX3RoaXMuaXNGaWVsZFZhbGlkYXRpbmcoKTtcbiAgICAgIHZhciBtZXRhID0ge1xuICAgICAgICB0b3VjaGVkOiBfdGhpcy5pc0ZpZWxkVG91Y2hlZCgpLFxuICAgICAgICB2YWxpZGF0aW5nOiBfdGhpcy5wcmV2VmFsaWRhdGluZyxcbiAgICAgICAgZXJyb3JzOiBfdGhpcy5lcnJvcnMsXG4gICAgICAgIG5hbWU6IF90aGlzLmdldE5hbWVQYXRoKClcbiAgICAgIH07XG4gICAgICByZXR1cm4gbWV0YTtcbiAgICB9OyAvLyBPbmx5IHJldHVybiB2YWxpZGF0ZSBjaGlsZCBub2RlLiBJZiBpbnZhbGlkYXRlLCB3aWxsIGRvIG5vdGhpbmcgYWJvdXQgZmllbGQuXG5cblxuICAgIF90aGlzLmdldE9ubHlDaGlsZCA9IGZ1bmN0aW9uIChjaGlsZHJlbikge1xuICAgICAgLy8gU3VwcG9ydCByZW5kZXIgcHJvcHNcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFyIG1ldGEgPSBfdGhpcy5nZXRNZXRhKCk7XG5cbiAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgX3RoaXMuZ2V0T25seUNoaWxkKGNoaWxkcmVuKF90aGlzLmdldENvbnRyb2xsZWQoKSwgbWV0YSwgX3RoaXMucHJvcHMuZmllbGRDb250ZXh0KSkpLCB7fSwge1xuICAgICAgICAgIGlzRnVuY3Rpb246IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IC8vIEZpbGVkIGVsZW1lbnQgb25seVxuXG5cbiAgICAgIHZhciBjaGlsZExpc3QgPSB0b0NoaWxkcmVuQXJyYXkoY2hpbGRyZW4pO1xuXG4gICAgICBpZiAoY2hpbGRMaXN0Lmxlbmd0aCAhPT0gMSB8fCAhIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZExpc3RbMF0pKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY2hpbGQ6IGNoaWxkTGlzdCxcbiAgICAgICAgICBpc0Z1bmN0aW9uOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjaGlsZDogY2hpbGRMaXN0WzBdLFxuICAgICAgICBpc0Z1bmN0aW9uOiBmYWxzZVxuICAgICAgfTtcbiAgICB9OyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRmllbGQgQ29udHJvbCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gICAgX3RoaXMuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoc3RvcmUpIHtcbiAgICAgIHZhciBnZXRGaWVsZHNWYWx1ZSA9IF90aGlzLnByb3BzLmZpZWxkQ29udGV4dC5nZXRGaWVsZHNWYWx1ZTtcblxuICAgICAgdmFyIG5hbWVQYXRoID0gX3RoaXMuZ2V0TmFtZVBhdGgoKTtcblxuICAgICAgcmV0dXJuIGdldFZhbHVlKHN0b3JlIHx8IGdldEZpZWxkc1ZhbHVlKHRydWUpLCBuYW1lUGF0aCk7XG4gICAgfTtcblxuICAgIF90aGlzLmdldENvbnRyb2xsZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgY2hpbGRQcm9wcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgdHJpZ2dlciA9IF90aGlzJHByb3BzNi50cmlnZ2VyLFxuICAgICAgICAgIHZhbGlkYXRlVHJpZ2dlciA9IF90aGlzJHByb3BzNi52YWxpZGF0ZVRyaWdnZXIsXG4gICAgICAgICAgZ2V0VmFsdWVGcm9tRXZlbnQgPSBfdGhpcyRwcm9wczYuZ2V0VmFsdWVGcm9tRXZlbnQsXG4gICAgICAgICAgbm9ybWFsaXplID0gX3RoaXMkcHJvcHM2Lm5vcm1hbGl6ZSxcbiAgICAgICAgICB2YWx1ZVByb3BOYW1lID0gX3RoaXMkcHJvcHM2LnZhbHVlUHJvcE5hbWUsXG4gICAgICAgICAgZ2V0VmFsdWVQcm9wcyA9IF90aGlzJHByb3BzNi5nZXRWYWx1ZVByb3BzLFxuICAgICAgICAgIGZpZWxkQ29udGV4dCA9IF90aGlzJHByb3BzNi5maWVsZENvbnRleHQ7XG4gICAgICB2YXIgbWVyZ2VkVmFsaWRhdGVUcmlnZ2VyID0gdmFsaWRhdGVUcmlnZ2VyICE9PSB1bmRlZmluZWQgPyB2YWxpZGF0ZVRyaWdnZXIgOiBmaWVsZENvbnRleHQudmFsaWRhdGVUcmlnZ2VyO1xuXG4gICAgICB2YXIgbmFtZVBhdGggPSBfdGhpcy5nZXROYW1lUGF0aCgpO1xuXG4gICAgICB2YXIgZ2V0SW50ZXJuYWxIb29rcyA9IGZpZWxkQ29udGV4dC5nZXRJbnRlcm5hbEhvb2tzLFxuICAgICAgICAgIGdldEZpZWxkc1ZhbHVlID0gZmllbGRDb250ZXh0LmdldEZpZWxkc1ZhbHVlO1xuXG4gICAgICB2YXIgX2dldEludGVybmFsSG9va3MgPSBnZXRJbnRlcm5hbEhvb2tzKEhPT0tfTUFSSyksXG4gICAgICAgICAgZGlzcGF0Y2ggPSBfZ2V0SW50ZXJuYWxIb29rcy5kaXNwYXRjaDtcblxuICAgICAgdmFyIHZhbHVlID0gX3RoaXMuZ2V0VmFsdWUoKTtcblxuICAgICAgdmFyIG1lcmdlZEdldFZhbHVlUHJvcHMgPSBnZXRWYWx1ZVByb3BzIHx8IGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgcmV0dXJuIF9kZWZpbmVQcm9wZXJ0eSh7fSwgdmFsdWVQcm9wTmFtZSwgdmFsKTtcbiAgICAgIH07IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5cblxuICAgICAgdmFyIG9yaWdpblRyaWdnZXJGdW5jID0gY2hpbGRQcm9wc1t0cmlnZ2VyXTtcblxuICAgICAgdmFyIGNvbnRyb2wgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGNoaWxkUHJvcHMpLCBtZXJnZWRHZXRWYWx1ZVByb3BzKHZhbHVlKSk7IC8vIEFkZCB0cmlnZ2VyXG5cblxuICAgICAgY29udHJvbFt0cmlnZ2VyXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gTWFyayBhcyB0b3VjaGVkXG4gICAgICAgIF90aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgICAgICBfdGhpcy5kaXJ0eSA9IHRydWU7XG4gICAgICAgIHZhciBuZXdWYWx1ZTtcblxuICAgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGdldFZhbHVlRnJvbUV2ZW50KSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBnZXRWYWx1ZUZyb21FdmVudC5hcHBseSh2b2lkIDAsIGFyZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1ZhbHVlID0gZGVmYXVsdEdldFZhbHVlRnJvbUV2ZW50LmFwcGx5KHZvaWQgMCwgW3ZhbHVlUHJvcE5hbWVdLmNvbmNhdChhcmdzKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9ybWFsaXplKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBub3JtYWxpemUobmV3VmFsdWUsIHZhbHVlLCBnZXRGaWVsZHNWYWx1ZSh0cnVlKSk7XG4gICAgICAgIH1cblxuICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogJ3VwZGF0ZVZhbHVlJyxcbiAgICAgICAgICBuYW1lUGF0aDogbmFtZVBhdGgsXG4gICAgICAgICAgdmFsdWU6IG5ld1ZhbHVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChvcmlnaW5UcmlnZ2VyRnVuYykge1xuICAgICAgICAgIG9yaWdpblRyaWdnZXJGdW5jLmFwcGx5KHZvaWQgMCwgYXJncyk7XG4gICAgICAgIH1cbiAgICAgIH07IC8vIEFkZCB2YWxpZGF0ZVRyaWdnZXJcblxuXG4gICAgICB2YXIgdmFsaWRhdGVUcmlnZ2VyTGlzdCA9IHRvQXJyYXkobWVyZ2VkVmFsaWRhdGVUcmlnZ2VyIHx8IFtdKTtcbiAgICAgIHZhbGlkYXRlVHJpZ2dlckxpc3QuZm9yRWFjaChmdW5jdGlvbiAodHJpZ2dlck5hbWUpIHtcbiAgICAgICAgLy8gV3JhcCBhZGRpdGlvbmFsIGZ1bmN0aW9uIG9mIGNvbXBvbmVudCwgc28gdGhhdCB3ZSBjYW4gZ2V0IGxhdGVzdCB2YWx1ZSBmcm9tIHN0b3JlXG4gICAgICAgIHZhciBvcmlnaW5UcmlnZ2VyID0gY29udHJvbFt0cmlnZ2VyTmFtZV07XG5cbiAgICAgICAgY29udHJvbFt0cmlnZ2VyTmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKG9yaWdpblRyaWdnZXIpIHtcbiAgICAgICAgICAgIG9yaWdpblRyaWdnZXIuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICAgICAgICAgIH0gLy8gQWx3YXlzIHVzZSBsYXRlc3QgcnVsZXNcblxuXG4gICAgICAgICAgdmFyIHJ1bGVzID0gX3RoaXMucHJvcHMucnVsZXM7XG5cbiAgICAgICAgICBpZiAocnVsZXMgJiYgcnVsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBXZSBkaXNwYXRjaCB2YWxpZGF0ZSB0byByb290LFxuICAgICAgICAgICAgLy8gc2luY2UgaXQgd2lsbCB1cGRhdGUgcmVsYXRlZCBkYXRhIHdpdGggb3RoZXIgZmllbGQgd2l0aCBzYW1lIG5hbWVcbiAgICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgICAgdHlwZTogJ3ZhbGlkYXRlRmllbGQnLFxuICAgICAgICAgICAgICBuYW1lUGF0aDogbmFtZVBhdGgsXG4gICAgICAgICAgICAgIHRyaWdnZXJOYW1lOiB0cmlnZ2VyTmFtZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gY29udHJvbDtcbiAgICB9OyAvLyBSZWdpc3RlciBvbiBpbml0XG5cblxuICAgIGlmIChwcm9wcy5maWVsZENvbnRleHQpIHtcbiAgICAgIHZhciBnZXRJbnRlcm5hbEhvb2tzID0gcHJvcHMuZmllbGRDb250ZXh0LmdldEludGVybmFsSG9va3M7XG5cbiAgICAgIHZhciBfZ2V0SW50ZXJuYWxIb29rczIgPSBnZXRJbnRlcm5hbEhvb2tzKEhPT0tfTUFSSyksXG4gICAgICAgICAgaW5pdEVudGl0eVZhbHVlID0gX2dldEludGVybmFsSG9va3MyLmluaXRFbnRpdHlWYWx1ZTtcblxuICAgICAgaW5pdEVudGl0eVZhbHVlKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRmllbGQsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgc2hvdWxkVXBkYXRlID0gX3RoaXMkcHJvcHM3LnNob3VsZFVwZGF0ZSxcbiAgICAgICAgICBmaWVsZENvbnRleHQgPSBfdGhpcyRwcm9wczcuZmllbGRDb250ZXh0O1xuICAgICAgdGhpcy5tb3VudGVkID0gdHJ1ZTsgLy8gUmVnaXN0ZXIgb24gaW5pdFxuXG4gICAgICBpZiAoZmllbGRDb250ZXh0KSB7XG4gICAgICAgIHZhciBnZXRJbnRlcm5hbEhvb2tzID0gZmllbGRDb250ZXh0LmdldEludGVybmFsSG9va3M7XG5cbiAgICAgICAgdmFyIF9nZXRJbnRlcm5hbEhvb2tzMyA9IGdldEludGVybmFsSG9va3MoSE9PS19NQVJLKSxcbiAgICAgICAgICAgIHJlZ2lzdGVyRmllbGQgPSBfZ2V0SW50ZXJuYWxIb29rczMucmVnaXN0ZXJGaWVsZDtcblxuICAgICAgICB0aGlzLmNhbmNlbFJlZ2lzdGVyRnVuYyA9IHJlZ2lzdGVyRmllbGQodGhpcyk7XG4gICAgICB9IC8vIE9uZSBtb3JlIHJlbmRlciBmb3IgY29tcG9uZW50IGluIGNhc2UgZmllbGRzIG5vdCByZWFkeVxuXG5cbiAgICAgIGlmIChzaG91bGRVcGRhdGUgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5yZVJlbmRlcigpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIHRoaXMuY2FuY2VsUmVnaXN0ZXIoKTtcbiAgICAgIHRoaXMubW91bnRlZCA9IGZhbHNlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZVJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZVJlbmRlcigpIHtcbiAgICAgIGlmICghdGhpcy5tb3VudGVkKSByZXR1cm47XG4gICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgcmVzZXRDb3VudCA9IHRoaXMuc3RhdGUucmVzZXRDb3VudDtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW47XG5cbiAgICAgIHZhciBfdGhpcyRnZXRPbmx5Q2hpbGQgPSB0aGlzLmdldE9ubHlDaGlsZChjaGlsZHJlbiksXG4gICAgICAgICAgY2hpbGQgPSBfdGhpcyRnZXRPbmx5Q2hpbGQuY2hpbGQsXG4gICAgICAgICAgaXNGdW5jdGlvbiA9IF90aGlzJGdldE9ubHlDaGlsZC5pc0Z1bmN0aW9uOyAvLyBOb3QgbmVlZCB0byBgY2xvbmVFbGVtZW50YCBzaW5jZSB1c2VyIGNhbiBoYW5kbGUgdGhpcyBpbiByZW5kZXIgZnVuY3Rpb24gc2VsZlxuXG5cbiAgICAgIHZhciByZXR1cm5DaGlsZE5vZGU7XG5cbiAgICAgIGlmIChpc0Z1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybkNoaWxkTm9kZSA9IGNoaWxkO1xuICAgICAgfSBlbHNlIGlmICggLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgICByZXR1cm5DaGlsZE5vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCB0aGlzLmdldENvbnRyb2xsZWQoY2hpbGQucHJvcHMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm5pbmcoIWNoaWxkLCAnYGNoaWxkcmVuYCBvZiBGaWVsZCBpcyBub3QgdmFsaWRhdGUgUmVhY3RFbGVtZW50LicpO1xuICAgICAgICByZXR1cm5DaGlsZE5vZGUgPSBjaGlsZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCB7XG4gICAgICAgIGtleTogcmVzZXRDb3VudFxuICAgICAgfSwgcmV0dXJuQ2hpbGROb2RlKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRmllbGQ7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cbkZpZWxkLmNvbnRleHRUeXBlID0gRmllbGRDb250ZXh0O1xuRmllbGQuZGVmYXVsdFByb3BzID0ge1xuICB0cmlnZ2VyOiAnb25DaGFuZ2UnLFxuICB2YWx1ZVByb3BOYW1lOiAndmFsdWUnXG59O1xuXG5mdW5jdGlvbiBXcmFwcGVyRmllbGQoX3JlZjQpIHtcbiAgdmFyIG5hbWUgPSBfcmVmNC5uYW1lLFxuICAgICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWY0LCBbXCJuYW1lXCJdKTtcblxuICB2YXIgZmllbGRDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChGaWVsZENvbnRleHQpO1xuICB2YXIgbmFtZVBhdGggPSBuYW1lICE9PSB1bmRlZmluZWQgPyBnZXROYW1lUGF0aChuYW1lKSA6IHVuZGVmaW5lZDtcbiAgdmFyIGtleSA9ICdrZWVwJztcblxuICBpZiAoIXJlc3RQcm9wcy5pc0xpc3RGaWVsZCkge1xuICAgIGtleSA9IFwiX1wiLmNvbmNhdCgobmFtZVBhdGggfHwgW10pLmpvaW4oJ18nKSk7XG4gIH0gLy8gV2FybmluZyBpZiBpdCdzIGEgZGlyZWN0bHkgbGlzdCBmaWVsZC5cbiAgLy8gV2UgY2FuIHN0aWxsIHN1cHBvcnQgbXVsdGlwbGUgbGV2ZWwgZmllbGQgcHJlc2VydmUuXG5cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiByZXN0UHJvcHMucHJlc2VydmUgPT09IGZhbHNlICYmIHJlc3RQcm9wcy5pc0xpc3RGaWVsZCAmJiBuYW1lUGF0aC5sZW5ndGggPD0gMSkge1xuICAgIHdhcm5pbmcoZmFsc2UsICdgcHJlc2VydmVgIHNob3VsZCBub3QgYXBwbHkgb24gRm9ybS5MaXN0IGZpZWxkcy4nKTtcbiAgfVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChGaWVsZCwgX2V4dGVuZHMoe1xuICAgIGtleToga2V5LFxuICAgIG5hbWU6IG5hbWVQYXRoXG4gIH0sIHJlc3RQcm9wcywge1xuICAgIGZpZWxkQ29udGV4dDogZmllbGRDb250ZXh0XG4gIH0pKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgV3JhcHBlckZpZWxkOyIsImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gIH1cblxuICBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHN1YkNsYXNzLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpc0ZyYWdtZW50IH0gZnJvbSAncmVhY3QtaXMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9BcnJheShjaGlsZHJlbikge1xuICB2YXIgb3B0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgdmFyIHJldCA9IFtdO1xuICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICBpZiAoKGNoaWxkID09PSB1bmRlZmluZWQgfHwgY2hpbGQgPT09IG51bGwpICYmICFvcHRpb24ua2VlcEVtcHR5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGQpKSB7XG4gICAgICByZXQgPSByZXQuY29uY2F0KHRvQXJyYXkoY2hpbGQpKTtcbiAgICB9IGVsc2UgaWYgKGlzRnJhZ21lbnQoY2hpbGQpICYmIGNoaWxkLnByb3BzKSB7XG4gICAgICByZXQgPSByZXQuY29uY2F0KHRvQXJyYXkoY2hpbGQucHJvcHMuY2hpbGRyZW4sIG9wdGlvbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXQucHVzaChjaGlsZCk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJldDtcbn0iLCJpbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB3YXJuaW5nIGZyb20gXCJyYy11dGlsL2VzL3dhcm5pbmdcIjtcbmltcG9ydCBGaWVsZENvbnRleHQgZnJvbSAnLi9GaWVsZENvbnRleHQnO1xuaW1wb3J0IEZpZWxkIGZyb20gJy4vRmllbGQnO1xuaW1wb3J0IHsgbW92ZSBhcyBfbW92ZSwgZ2V0TmFtZVBhdGggfSBmcm9tICcuL3V0aWxzL3ZhbHVlVXRpbCc7XG5cbnZhciBMaXN0ID0gZnVuY3Rpb24gTGlzdChfcmVmKSB7XG4gIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgaW5pdGlhbFZhbHVlID0gX3JlZi5pbml0aWFsVmFsdWUsXG4gICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgICBydWxlcyA9IF9yZWYucnVsZXMsXG4gICAgICB2YWxpZGF0ZVRyaWdnZXIgPSBfcmVmLnZhbGlkYXRlVHJpZ2dlcjtcbiAgdmFyIGNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KEZpZWxkQ29udGV4dCk7XG4gIHZhciBrZXlSZWYgPSBSZWFjdC51c2VSZWYoe1xuICAgIGtleXM6IFtdLFxuICAgIGlkOiAwXG4gIH0pO1xuICB2YXIga2V5TWFuYWdlciA9IGtleVJlZi5jdXJyZW50OyAvLyBVc2VyIHNob3VsZCBub3QgcGFzcyBgY2hpbGRyZW5gIGFzIG90aGVyIHR5cGUuXG5cbiAgaWYgKHR5cGVvZiBjaGlsZHJlbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHdhcm5pbmcoZmFsc2UsICdGb3JtLkxpc3Qgb25seSBhY2NlcHRzIGZ1bmN0aW9uIGFzIGNoaWxkcmVuLicpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIHBhcmVudFByZWZpeE5hbWUgPSBnZXROYW1lUGF0aChjb250ZXh0LnByZWZpeE5hbWUpIHx8IFtdO1xuICB2YXIgcHJlZml4TmFtZSA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocGFyZW50UHJlZml4TmFtZSksIF90b0NvbnN1bWFibGVBcnJheShnZXROYW1lUGF0aChuYW1lKSkpO1xuXG4gIHZhciBzaG91bGRVcGRhdGUgPSBmdW5jdGlvbiBzaG91bGRVcGRhdGUocHJldlZhbHVlLCBuZXh0VmFsdWUsIF9yZWYyKSB7XG4gICAgdmFyIHNvdXJjZSA9IF9yZWYyLnNvdXJjZTtcblxuICAgIGlmIChzb3VyY2UgPT09ICdpbnRlcm5hbCcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJldlZhbHVlICE9PSBuZXh0VmFsdWU7XG4gIH07XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZpZWxkQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGNvbnRleHQpLCB7fSwge1xuICAgICAgcHJlZml4TmFtZTogcHJlZml4TmFtZVxuICAgIH0pXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZpZWxkLCB7XG4gICAgbmFtZTogW10sXG4gICAgc2hvdWxkVXBkYXRlOiBzaG91bGRVcGRhdGUsXG4gICAgcnVsZXM6IHJ1bGVzLFxuICAgIHZhbGlkYXRlVHJpZ2dlcjogdmFsaWRhdGVUcmlnZ2VyLFxuICAgIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLFxuICAgIGlzTGlzdDogdHJ1ZVxuICB9LCBmdW5jdGlvbiAoX3JlZjMsIG1ldGEpIHtcbiAgICB2YXIgX3JlZjMkdmFsdWUgPSBfcmVmMy52YWx1ZSxcbiAgICAgICAgdmFsdWUgPSBfcmVmMyR2YWx1ZSA9PT0gdm9pZCAwID8gW10gOiBfcmVmMyR2YWx1ZSxcbiAgICAgICAgb25DaGFuZ2UgPSBfcmVmMy5vbkNoYW5nZTtcbiAgICB2YXIgZ2V0RmllbGRWYWx1ZSA9IGNvbnRleHQuZ2V0RmllbGRWYWx1ZTtcblxuICAgIHZhciBnZXROZXdWYWx1ZSA9IGZ1bmN0aW9uIGdldE5ld1ZhbHVlKCkge1xuICAgICAgdmFyIHZhbHVlcyA9IGdldEZpZWxkVmFsdWUocHJlZml4TmFtZSB8fCBbXSk7XG4gICAgICByZXR1cm4gdmFsdWVzIHx8IFtdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQWx3YXlzIGdldCBsYXRlc3QgdmFsdWUgaW4gY2FzZSB1c2VyIHVwZGF0ZSBmaWVsZHMgYnkgYGZvcm1gIGFwaS5cbiAgICAgKi9cblxuXG4gICAgdmFyIG9wZXJhdGlvbnMgPSB7XG4gICAgICBhZGQ6IGZ1bmN0aW9uIGFkZChkZWZhdWx0VmFsdWUsIGluZGV4KSB7XG4gICAgICAgIC8vIE1hcHBpbmcga2V5c1xuICAgICAgICB2YXIgbmV3VmFsdWUgPSBnZXROZXdWYWx1ZSgpO1xuXG4gICAgICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDw9IG5ld1ZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgIGtleU1hbmFnZXIua2V5cyA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoa2V5TWFuYWdlci5rZXlzLnNsaWNlKDAsIGluZGV4KSksIFtrZXlNYW5hZ2VyLmlkXSwgX3RvQ29uc3VtYWJsZUFycmF5KGtleU1hbmFnZXIua2V5cy5zbGljZShpbmRleCkpKTtcbiAgICAgICAgICBvbkNoYW5nZShbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KG5ld1ZhbHVlLnNsaWNlKDAsIGluZGV4KSksIFtkZWZhdWx0VmFsdWVdLCBfdG9Db25zdW1hYmxlQXJyYXkobmV3VmFsdWUuc2xpY2UoaW5kZXgpKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIChpbmRleCA8IDAgfHwgaW5kZXggPiBuZXdWYWx1ZS5sZW5ndGgpKSB7XG4gICAgICAgICAgICB3YXJuaW5nKGZhbHNlLCAnVGhlIHNlY29uZCBwYXJhbWV0ZXIgb2YgdGhlIGFkZCBmdW5jdGlvbiBzaG91bGQgYmUgYSB2YWxpZCBwb3NpdGl2ZSBudW1iZXIuJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAga2V5TWFuYWdlci5rZXlzID0gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShrZXlNYW5hZ2VyLmtleXMpLCBba2V5TWFuYWdlci5pZF0pO1xuICAgICAgICAgIG9uQ2hhbmdlKFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkobmV3VmFsdWUpLCBbZGVmYXVsdFZhbHVlXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAga2V5TWFuYWdlci5pZCArPSAxO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKGluZGV4KSB7XG4gICAgICAgIHZhciBuZXdWYWx1ZSA9IGdldE5ld1ZhbHVlKCk7XG4gICAgICAgIHZhciBpbmRleFNldCA9IG5ldyBTZXQoQXJyYXkuaXNBcnJheShpbmRleCkgPyBpbmRleCA6IFtpbmRleF0pO1xuXG4gICAgICAgIGlmIChpbmRleFNldC5zaXplIDw9IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBrZXlNYW5hZ2VyLmtleXMgPSBrZXlNYW5hZ2VyLmtleXMuZmlsdGVyKGZ1bmN0aW9uIChfLCBrZXlzSW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4gIWluZGV4U2V0LmhhcyhrZXlzSW5kZXgpO1xuICAgICAgICB9KTsgLy8gVHJpZ2dlciBzdG9yZSBjaGFuZ2VcblxuICAgICAgICBvbkNoYW5nZShuZXdWYWx1ZS5maWx0ZXIoZnVuY3Rpb24gKF8sIHZhbHVlSW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4gIWluZGV4U2V0Lmhhcyh2YWx1ZUluZGV4KTtcbiAgICAgICAgfSkpO1xuICAgICAgfSxcbiAgICAgIG1vdmU6IGZ1bmN0aW9uIG1vdmUoZnJvbSwgdG8pIHtcbiAgICAgICAgaWYgKGZyb20gPT09IHRvKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5ld1ZhbHVlID0gZ2V0TmV3VmFsdWUoKTsgLy8gRG8gbm90IGhhbmRsZSBvdXQgb2YgcmFuZ2VcblxuICAgICAgICBpZiAoZnJvbSA8IDAgfHwgZnJvbSA+PSBuZXdWYWx1ZS5sZW5ndGggfHwgdG8gPCAwIHx8IHRvID49IG5ld1ZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGtleU1hbmFnZXIua2V5cyA9IF9tb3ZlKGtleU1hbmFnZXIua2V5cywgZnJvbSwgdG8pOyAvLyBUcmlnZ2VyIHN0b3JlIGNoYW5nZVxuXG4gICAgICAgIG9uQ2hhbmdlKF9tb3ZlKG5ld1ZhbHVlLCBmcm9tLCB0bykpO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIGxpc3RWYWx1ZSA9IHZhbHVlIHx8IFtdO1xuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGxpc3RWYWx1ZSkpIHtcbiAgICAgIGxpc3RWYWx1ZSA9IFtdO1xuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuaW5nKGZhbHNlLCBcIkN1cnJlbnQgdmFsdWUgb2YgJ1wiLmNvbmNhdChwcmVmaXhOYW1lLmpvaW4oJyA+ICcpLCBcIicgaXMgbm90IGFuIGFycmF5IHR5cGUuXCIpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2hpbGRyZW4obGlzdFZhbHVlLm1hcChmdW5jdGlvbiAoX18sIGluZGV4KSB7XG4gICAgICB2YXIga2V5ID0ga2V5TWFuYWdlci5rZXlzW2luZGV4XTtcblxuICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGtleU1hbmFnZXIua2V5c1tpbmRleF0gPSBrZXlNYW5hZ2VyLmlkO1xuICAgICAgICBrZXkgPSBrZXlNYW5hZ2VyLmtleXNbaW5kZXhdO1xuICAgICAgICBrZXlNYW5hZ2VyLmlkICs9IDE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IGluZGV4LFxuICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgaXNMaXN0RmllbGQ6IHRydWVcbiAgICAgIH07XG4gICAgfSksIG9wZXJhdGlvbnMsIG1ldGEpO1xuICB9KSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBMaXN0OyIsImltcG9ydCBhcnJheVdpdGhIb2xlcyBmcm9tIFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiO1xuaW1wb3J0IGl0ZXJhYmxlVG9BcnJheUxpbWl0IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCBub25JdGVyYWJsZVJlc3QgZnJvbSBcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKGFycikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHtcbiAgdmFyIF9pID0gYXJyICYmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGFycltTeW1ib2wuaXRlcmF0b3JdIHx8IGFycltcIkBAaXRlcmF0b3JcIl0pO1xuXG4gIGlmIChfaSA9PSBudWxsKSByZXR1cm47XG4gIHZhciBfYXJyID0gW107XG4gIHZhciBfbiA9IHRydWU7XG4gIHZhciBfZCA9IGZhbHNlO1xuXG4gIHZhciBfcywgX2U7XG5cbiAgdHJ5IHtcbiAgICBmb3IgKF9pID0gX2kuY2FsbChhcnIpOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7XG4gICAgICBfYXJyLnB1c2goX3MudmFsdWUpO1xuXG4gICAgICBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBfZCA9IHRydWU7XG4gICAgX2UgPSBlcnI7XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKF9kKSB0aHJvdyBfZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gX2Fycjtcbn0iLCJpbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbnZhciBTUExJVCA9ICdfX0BmaWVsZF9zcGxpdF9fJztcbi8qKlxuICogQ29udmVydCBuYW1lIHBhdGggaW50byBzdHJpbmcgdG8gZmFzdCB0aGUgZmV0Y2ggc3BlZWQgb2YgTWFwLlxuICovXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZShuYW1lUGF0aCkge1xuICByZXR1cm4gbmFtZVBhdGgubWFwKGZ1bmN0aW9uIChjZWxsKSB7XG4gICAgcmV0dXJuIFwiXCIuY29uY2F0KF90eXBlb2YoY2VsbCksIFwiOlwiKS5jb25jYXQoY2VsbCk7XG4gIH0pIC8vIE1hZ2ljIHNwbGl0XG4gIC5qb2luKFNQTElUKTtcbn1cbi8qKlxuICogTmFtZU1hcCBsaWtlIGEgYE1hcGAgYnV0IGFjY2VwdHMgYHN0cmluZ1tdYCBhcyBrZXkuXG4gKi9cblxuXG52YXIgTmFtZU1hcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE5hbWVNYXAoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE5hbWVNYXApO1xuXG4gICAgdGhpcy5rdnMgPSBuZXcgTWFwKCk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTmFtZU1hcCwgW3tcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChrZXksIHZhbHVlKSB7XG4gICAgICB0aGlzLmt2cy5zZXQobm9ybWFsaXplKGtleSksIHZhbHVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLmt2cy5nZXQobm9ybWFsaXplKGtleSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlKGtleSwgdXBkYXRlcikge1xuICAgICAgdmFyIG9yaWdpbiA9IHRoaXMuZ2V0KGtleSk7XG4gICAgICB2YXIgbmV4dCA9IHVwZGF0ZXIob3JpZ2luKTtcblxuICAgICAgaWYgKCFuZXh0KSB7XG4gICAgICAgIHRoaXMuZGVsZXRlKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldChrZXksIG5leHQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZWxldGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2RlbGV0ZShrZXkpIHtcbiAgICAgIHRoaXMua3ZzLmRlbGV0ZShub3JtYWxpemUoa2V5KSk7XG4gICAgfSAvLyBTaW5jZSB3ZSBvbmx5IHVzZSB0aGlzIGluIHRlc3QsIGxldCBzaW1wbHkgcmVhbGl6ZSB0aGlzXG5cbiAgfSwge1xuICAgIGtleTogXCJtYXBcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbWFwKGNhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gX3RvQ29uc3VtYWJsZUFycmF5KHRoaXMua3ZzLmVudHJpZXMoKSkubWFwKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgIHZhciBfcmVmMiA9IF9zbGljZWRUb0FycmF5KF9yZWYsIDIpLFxuICAgICAgICAgICAga2V5ID0gX3JlZjJbMF0sXG4gICAgICAgICAgICB2YWx1ZSA9IF9yZWYyWzFdO1xuXG4gICAgICAgIHZhciBjZWxscyA9IGtleS5zcGxpdChTUExJVCk7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayh7XG4gICAgICAgICAga2V5OiBjZWxscy5tYXAoZnVuY3Rpb24gKGNlbGwpIHtcbiAgICAgICAgICAgIHZhciBfY2VsbCRtYXRjaCA9IGNlbGwubWF0Y2goL14oW146XSopOiguKikkLyksXG4gICAgICAgICAgICAgICAgX2NlbGwkbWF0Y2gyID0gX3NsaWNlZFRvQXJyYXkoX2NlbGwkbWF0Y2gsIDMpLFxuICAgICAgICAgICAgICAgIHR5cGUgPSBfY2VsbCRtYXRjaDJbMV0sXG4gICAgICAgICAgICAgICAgdW5pdCA9IF9jZWxsJG1hdGNoMlsyXTtcblxuICAgICAgICAgICAgcmV0dXJuIHR5cGUgPT09ICdudW1iZXInID8gTnVtYmVyKHVuaXQpIDogdW5pdDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidG9KU09OXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICAgIHZhciBqc29uID0ge307XG4gICAgICB0aGlzLm1hcChmdW5jdGlvbiAoX3JlZjMpIHtcbiAgICAgICAgdmFyIGtleSA9IF9yZWYzLmtleSxcbiAgICAgICAgICAgIHZhbHVlID0gX3JlZjMudmFsdWU7XG4gICAgICAgIGpzb25ba2V5LmpvaW4oJy4nKV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBqc29uO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBOYW1lTWFwO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBOYW1lTWFwOyIsImltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheVwiO1xuaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDJcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCI7XG5pbXBvcnQgX3RvQ29uc3VtYWJsZUFycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b0NvbnN1bWFibGVBcnJheVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB3YXJuaW5nIGZyb20gXCJyYy11dGlsL2VzL3dhcm5pbmdcIjtcbmltcG9ydCB7IEhPT0tfTUFSSyB9IGZyb20gJy4vRmllbGRDb250ZXh0JztcbmltcG9ydCB7IGFsbFByb21pc2VGaW5pc2ggfSBmcm9tICcuL3V0aWxzL2FzeW5jVXRpbCc7XG5pbXBvcnQgTmFtZU1hcCBmcm9tICcuL3V0aWxzL05hbWVNYXAnO1xuaW1wb3J0IHsgZGVmYXVsdFZhbGlkYXRlTWVzc2FnZXMgfSBmcm9tICcuL3V0aWxzL21lc3NhZ2VzJztcbmltcG9ydCB7IGNsb25lQnlOYW1lUGF0aExpc3QsIGNvbnRhaW5zTmFtZVBhdGgsIGdldE5hbWVQYXRoLCBnZXRWYWx1ZSwgbWF0Y2hOYW1lUGF0aCwgc2V0VmFsdWUsIHNldFZhbHVlcyB9IGZyb20gJy4vdXRpbHMvdmFsdWVVdGlsJztcbmV4cG9ydCB2YXIgRm9ybVN0b3JlID0gZnVuY3Rpb24gRm9ybVN0b3JlKGZvcmNlUm9vdFVwZGF0ZSkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBGb3JtU3RvcmUpO1xuXG4gIHRoaXMuZm9ybUhvb2tlZCA9IGZhbHNlO1xuICB0aGlzLnN1YnNjcmliYWJsZSA9IHRydWU7XG4gIHRoaXMuc3RvcmUgPSB7fTtcbiAgdGhpcy5maWVsZEVudGl0aWVzID0gW107XG4gIHRoaXMuaW5pdGlhbFZhbHVlcyA9IHt9O1xuICB0aGlzLmNhbGxiYWNrcyA9IHt9O1xuICB0aGlzLnZhbGlkYXRlTWVzc2FnZXMgPSBudWxsO1xuICB0aGlzLnByZXNlcnZlID0gbnVsbDtcbiAgdGhpcy5sYXN0VmFsaWRhdGVQcm9taXNlID0gbnVsbDtcblxuICB0aGlzLmdldEZvcm0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldEZpZWxkVmFsdWU6IF90aGlzLmdldEZpZWxkVmFsdWUsXG4gICAgICBnZXRGaWVsZHNWYWx1ZTogX3RoaXMuZ2V0RmllbGRzVmFsdWUsXG4gICAgICBnZXRGaWVsZEVycm9yOiBfdGhpcy5nZXRGaWVsZEVycm9yLFxuICAgICAgZ2V0RmllbGRzRXJyb3I6IF90aGlzLmdldEZpZWxkc0Vycm9yLFxuICAgICAgaXNGaWVsZHNUb3VjaGVkOiBfdGhpcy5pc0ZpZWxkc1RvdWNoZWQsXG4gICAgICBpc0ZpZWxkVG91Y2hlZDogX3RoaXMuaXNGaWVsZFRvdWNoZWQsXG4gICAgICBpc0ZpZWxkVmFsaWRhdGluZzogX3RoaXMuaXNGaWVsZFZhbGlkYXRpbmcsXG4gICAgICBpc0ZpZWxkc1ZhbGlkYXRpbmc6IF90aGlzLmlzRmllbGRzVmFsaWRhdGluZyxcbiAgICAgIHJlc2V0RmllbGRzOiBfdGhpcy5yZXNldEZpZWxkcyxcbiAgICAgIHNldEZpZWxkczogX3RoaXMuc2V0RmllbGRzLFxuICAgICAgc2V0RmllbGRzVmFsdWU6IF90aGlzLnNldEZpZWxkc1ZhbHVlLFxuICAgICAgdmFsaWRhdGVGaWVsZHM6IF90aGlzLnZhbGlkYXRlRmllbGRzLFxuICAgICAgc3VibWl0OiBfdGhpcy5zdWJtaXQsXG4gICAgICBnZXRJbnRlcm5hbEhvb2tzOiBfdGhpcy5nZXRJbnRlcm5hbEhvb2tzXG4gICAgfTtcbiAgfTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09IEludGVybmFsIEhvb2tzID09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbiAgdGhpcy5nZXRJbnRlcm5hbEhvb2tzID0gZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChrZXkgPT09IEhPT0tfTUFSSykge1xuICAgICAgX3RoaXMuZm9ybUhvb2tlZCA9IHRydWU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXNwYXRjaDogX3RoaXMuZGlzcGF0Y2gsXG4gICAgICAgIGluaXRFbnRpdHlWYWx1ZTogX3RoaXMuaW5pdEVudGl0eVZhbHVlLFxuICAgICAgICByZWdpc3RlckZpZWxkOiBfdGhpcy5yZWdpc3RlckZpZWxkLFxuICAgICAgICB1c2VTdWJzY3JpYmU6IF90aGlzLnVzZVN1YnNjcmliZSxcbiAgICAgICAgc2V0SW5pdGlhbFZhbHVlczogX3RoaXMuc2V0SW5pdGlhbFZhbHVlcyxcbiAgICAgICAgc2V0Q2FsbGJhY2tzOiBfdGhpcy5zZXRDYWxsYmFja3MsXG4gICAgICAgIHNldFZhbGlkYXRlTWVzc2FnZXM6IF90aGlzLnNldFZhbGlkYXRlTWVzc2FnZXMsXG4gICAgICAgIGdldEZpZWxkczogX3RoaXMuZ2V0RmllbGRzLFxuICAgICAgICBzZXRQcmVzZXJ2ZTogX3RoaXMuc2V0UHJlc2VydmVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgd2FybmluZyhmYWxzZSwgJ2BnZXRJbnRlcm5hbEhvb2tzYCBpcyBpbnRlcm5hbCB1c2FnZS4gU2hvdWxkIG5vdCBjYWxsIGRpcmVjdGx5LicpO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIHRoaXMudXNlU3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmliYWJsZSkge1xuICAgIF90aGlzLnN1YnNjcmliYWJsZSA9IHN1YnNjcmliYWJsZTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpcnN0IHRpbWUgYHNldEluaXRpYWxWYWx1ZXNgIHNob3VsZCB1cGRhdGUgc3RvcmUgd2l0aCBpbml0aWFsIHZhbHVlXG4gICAqL1xuXG5cbiAgdGhpcy5zZXRJbml0aWFsVmFsdWVzID0gZnVuY3Rpb24gKGluaXRpYWxWYWx1ZXMsIGluaXQpIHtcbiAgICBfdGhpcy5pbml0aWFsVmFsdWVzID0gaW5pdGlhbFZhbHVlcyB8fCB7fTtcblxuICAgIGlmIChpbml0KSB7XG4gICAgICBfdGhpcy5zdG9yZSA9IHNldFZhbHVlcyh7fSwgaW5pdGlhbFZhbHVlcywgX3RoaXMuc3RvcmUpO1xuICAgIH1cbiAgfTtcblxuICB0aGlzLmdldEluaXRpYWxWYWx1ZSA9IGZ1bmN0aW9uIChuYW1lUGF0aCkge1xuICAgIHJldHVybiBnZXRWYWx1ZShfdGhpcy5pbml0aWFsVmFsdWVzLCBuYW1lUGF0aCk7XG4gIH07XG5cbiAgdGhpcy5zZXRDYWxsYmFja3MgPSBmdW5jdGlvbiAoY2FsbGJhY2tzKSB7XG4gICAgX3RoaXMuY2FsbGJhY2tzID0gY2FsbGJhY2tzO1xuICB9O1xuXG4gIHRoaXMuc2V0VmFsaWRhdGVNZXNzYWdlcyA9IGZ1bmN0aW9uICh2YWxpZGF0ZU1lc3NhZ2VzKSB7XG4gICAgX3RoaXMudmFsaWRhdGVNZXNzYWdlcyA9IHZhbGlkYXRlTWVzc2FnZXM7XG4gIH07XG5cbiAgdGhpcy5zZXRQcmVzZXJ2ZSA9IGZ1bmN0aW9uIChwcmVzZXJ2ZSkge1xuICAgIF90aGlzLnByZXNlcnZlID0gcHJlc2VydmU7XG4gIH07IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09IERldiBXYXJuaW5nID09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gIHRoaXMudGltZW91dElkID0gbnVsbDtcblxuICB0aGlzLndhcm5pbmdVbmhvb2tlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhX3RoaXMudGltZW91dElkICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBfdGhpcy50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMudGltZW91dElkID0gbnVsbDtcblxuICAgICAgICBpZiAoIV90aGlzLmZvcm1Ib29rZWQpIHtcbiAgICAgICAgICB3YXJuaW5nKGZhbHNlLCAnSW5zdGFuY2UgY3JlYXRlZCBieSBgdXNlRm9ybWAgaXMgbm90IGNvbm5lY3RlZCB0byBhbnkgRm9ybSBlbGVtZW50LiBGb3JnZXQgdG8gcGFzcyBgZm9ybWAgcHJvcD8nKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9OyAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IEZpZWxkcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdldCByZWdpc3RlcmVkIGZpZWxkIGVudGl0aWVzLlxuICAgKiBAcGFyYW0gcHVyZSBPbmx5IHJldHVybiBmaWVsZCB3aGljaCBoYXMgYSBgbmFtZWAuIERlZmF1bHQ6IGZhbHNlXG4gICAqL1xuXG5cbiAgdGhpcy5nZXRGaWVsZEVudGl0aWVzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwdXJlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBmYWxzZTtcblxuICAgIGlmICghcHVyZSkge1xuICAgICAgcmV0dXJuIF90aGlzLmZpZWxkRW50aXRpZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIF90aGlzLmZpZWxkRW50aXRpZXMuZmlsdGVyKGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgcmV0dXJuIGZpZWxkLmdldE5hbWVQYXRoKCkubGVuZ3RoO1xuICAgIH0pO1xuICB9O1xuXG4gIHRoaXMuZ2V0RmllbGRzTWFwID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwdXJlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBmYWxzZTtcbiAgICB2YXIgY2FjaGUgPSBuZXcgTmFtZU1hcCgpO1xuXG4gICAgX3RoaXMuZ2V0RmllbGRFbnRpdGllcyhwdXJlKS5mb3JFYWNoKGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgdmFyIG5hbWVQYXRoID0gZmllbGQuZ2V0TmFtZVBhdGgoKTtcbiAgICAgIGNhY2hlLnNldChuYW1lUGF0aCwgZmllbGQpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNhY2hlO1xuICB9O1xuXG4gIHRoaXMuZ2V0RmllbGRFbnRpdGllc0Zvck5hbWVQYXRoTGlzdCA9IGZ1bmN0aW9uIChuYW1lTGlzdCkge1xuICAgIGlmICghbmFtZUxpc3QpIHtcbiAgICAgIHJldHVybiBfdGhpcy5nZXRGaWVsZEVudGl0aWVzKHRydWUpO1xuICAgIH1cblxuICAgIHZhciBjYWNoZSA9IF90aGlzLmdldEZpZWxkc01hcCh0cnVlKTtcblxuICAgIHJldHVybiBuYW1lTGlzdC5tYXAoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciBuYW1lUGF0aCA9IGdldE5hbWVQYXRoKG5hbWUpO1xuICAgICAgcmV0dXJuIGNhY2hlLmdldChuYW1lUGF0aCkgfHwge1xuICAgICAgICBJTlZBTElEQVRFX05BTUVfUEFUSDogZ2V0TmFtZVBhdGgobmFtZSlcbiAgICAgIH07XG4gICAgfSk7XG4gIH07XG5cbiAgdGhpcy5nZXRGaWVsZHNWYWx1ZSA9IGZ1bmN0aW9uIChuYW1lTGlzdCwgZmlsdGVyRnVuYykge1xuICAgIF90aGlzLndhcm5pbmdVbmhvb2tlZCgpO1xuXG4gICAgaWYgKG5hbWVMaXN0ID09PSB0cnVlICYmICFmaWx0ZXJGdW5jKSB7XG4gICAgICByZXR1cm4gX3RoaXMuc3RvcmU7XG4gICAgfVxuXG4gICAgdmFyIGZpZWxkRW50aXRpZXMgPSBfdGhpcy5nZXRGaWVsZEVudGl0aWVzRm9yTmFtZVBhdGhMaXN0KEFycmF5LmlzQXJyYXkobmFtZUxpc3QpID8gbmFtZUxpc3QgOiBudWxsKTtcblxuICAgIHZhciBmaWx0ZXJlZE5hbWVMaXN0ID0gW107XG4gICAgZmllbGRFbnRpdGllcy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRpdHkpIHtcbiAgICAgIHZhciBfZW50aXR5JGlzTGlzdEZpZWxkO1xuXG4gICAgICB2YXIgbmFtZVBhdGggPSAnSU5WQUxJREFURV9OQU1FX1BBVEgnIGluIGVudGl0eSA/IGVudGl0eS5JTlZBTElEQVRFX05BTUVfUEFUSCA6IGVudGl0eS5nZXROYW1lUGF0aCgpOyAvLyBJZ25vcmUgd2hlbiBpdCdzIGEgbGlzdCBpdGVtIGFuZCBub3Qgc3BlY2lmaWMgdGhlIG5hbWVQYXRoLFxuICAgICAgLy8gc2luY2UgcGFyZW50IGZpZWxkIGlzIGFscmVhZHkgdGFrZSBpbiBjb3VudFxuXG4gICAgICBpZiAoIW5hbWVMaXN0ICYmICgoX2VudGl0eSRpc0xpc3RGaWVsZCA9IGVudGl0eS5pc0xpc3RGaWVsZCkgPT09IG51bGwgfHwgX2VudGl0eSRpc0xpc3RGaWVsZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2VudGl0eSRpc0xpc3RGaWVsZC5jYWxsKGVudGl0eSkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFmaWx0ZXJGdW5jKSB7XG4gICAgICAgIGZpbHRlcmVkTmFtZUxpc3QucHVzaChuYW1lUGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgbWV0YSA9ICdnZXRNZXRhJyBpbiBlbnRpdHkgPyBlbnRpdHkuZ2V0TWV0YSgpIDogbnVsbDtcblxuICAgICAgICBpZiAoZmlsdGVyRnVuYyhtZXRhKSkge1xuICAgICAgICAgIGZpbHRlcmVkTmFtZUxpc3QucHVzaChuYW1lUGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2xvbmVCeU5hbWVQYXRoTGlzdChfdGhpcy5zdG9yZSwgZmlsdGVyZWROYW1lTGlzdC5tYXAoZ2V0TmFtZVBhdGgpKTtcbiAgfTtcblxuICB0aGlzLmdldEZpZWxkVmFsdWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIF90aGlzLndhcm5pbmdVbmhvb2tlZCgpO1xuXG4gICAgdmFyIG5hbWVQYXRoID0gZ2V0TmFtZVBhdGgobmFtZSk7XG4gICAgcmV0dXJuIGdldFZhbHVlKF90aGlzLnN0b3JlLCBuYW1lUGF0aCk7XG4gIH07XG5cbiAgdGhpcy5nZXRGaWVsZHNFcnJvciA9IGZ1bmN0aW9uIChuYW1lTGlzdCkge1xuICAgIF90aGlzLndhcm5pbmdVbmhvb2tlZCgpO1xuXG4gICAgdmFyIGZpZWxkRW50aXRpZXMgPSBfdGhpcy5nZXRGaWVsZEVudGl0aWVzRm9yTmFtZVBhdGhMaXN0KG5hbWVMaXN0KTtcblxuICAgIHJldHVybiBmaWVsZEVudGl0aWVzLm1hcChmdW5jdGlvbiAoZW50aXR5LCBpbmRleCkge1xuICAgICAgaWYgKGVudGl0eSAmJiAhKCdJTlZBTElEQVRFX05BTUVfUEFUSCcgaW4gZW50aXR5KSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IGVudGl0eS5nZXROYW1lUGF0aCgpLFxuICAgICAgICAgIGVycm9yczogZW50aXR5LmdldEVycm9ycygpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IGdldE5hbWVQYXRoKG5hbWVMaXN0W2luZGV4XSksXG4gICAgICAgIGVycm9yczogW11cbiAgICAgIH07XG4gICAgfSk7XG4gIH07XG5cbiAgdGhpcy5nZXRGaWVsZEVycm9yID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBfdGhpcy53YXJuaW5nVW5ob29rZWQoKTtcblxuICAgIHZhciBuYW1lUGF0aCA9IGdldE5hbWVQYXRoKG5hbWUpO1xuXG4gICAgdmFyIGZpZWxkRXJyb3IgPSBfdGhpcy5nZXRGaWVsZHNFcnJvcihbbmFtZVBhdGhdKVswXTtcblxuICAgIHJldHVybiBmaWVsZEVycm9yLmVycm9ycztcbiAgfTtcblxuICB0aGlzLmlzRmllbGRzVG91Y2hlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBfdGhpcy53YXJuaW5nVW5ob29rZWQoKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICB2YXIgYXJnMCA9IGFyZ3NbMF0sXG4gICAgICAgIGFyZzEgPSBhcmdzWzFdO1xuICAgIHZhciBuYW1lUGF0aExpc3Q7XG4gICAgdmFyIGlzQWxsRmllbGRzVG91Y2hlZCA9IGZhbHNlO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICBuYW1lUGF0aExpc3QgPSBudWxsO1xuICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZzApKSB7XG4gICAgICAgIG5hbWVQYXRoTGlzdCA9IGFyZzAubWFwKGdldE5hbWVQYXRoKTtcbiAgICAgICAgaXNBbGxGaWVsZHNUb3VjaGVkID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuYW1lUGF0aExpc3QgPSBudWxsO1xuICAgICAgICBpc0FsbEZpZWxkc1RvdWNoZWQgPSBhcmcwO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBuYW1lUGF0aExpc3QgPSBhcmcwLm1hcChnZXROYW1lUGF0aCk7XG4gICAgICBpc0FsbEZpZWxkc1RvdWNoZWQgPSBhcmcxO1xuICAgIH1cblxuICAgIHZhciBmaWVsZEVudGl0aWVzID0gX3RoaXMuZ2V0RmllbGRFbnRpdGllcyh0cnVlKTtcblxuICAgIHZhciBpc0ZpZWxkVG91Y2hlZCA9IGZ1bmN0aW9uIGlzRmllbGRUb3VjaGVkKGZpZWxkKSB7XG4gICAgICByZXR1cm4gZmllbGQuaXNGaWVsZFRvdWNoZWQoKTtcbiAgICB9OyAvLyA9PT09PSBXaWxsIGdldCBmdWxseSBjb21wYXJlIHdoZW4gbm90IGNvbmZpZyBuYW1lUGF0aExpc3QgPT09PT1cblxuXG4gICAgaWYgKCFuYW1lUGF0aExpc3QpIHtcbiAgICAgIHJldHVybiBpc0FsbEZpZWxkc1RvdWNoZWQgPyBmaWVsZEVudGl0aWVzLmV2ZXJ5KGlzRmllbGRUb3VjaGVkKSA6IGZpZWxkRW50aXRpZXMuc29tZShpc0ZpZWxkVG91Y2hlZCk7XG4gICAgfSAvLyBHZW5lcmF0ZSBhIG5lc3QgdHJlZSBmb3IgdmFsaWRhdGVcblxuXG4gICAgdmFyIG1hcCA9IG5ldyBOYW1lTWFwKCk7XG4gICAgbmFtZVBhdGhMaXN0LmZvckVhY2goZnVuY3Rpb24gKHNob3J0TmFtZVBhdGgpIHtcbiAgICAgIG1hcC5zZXQoc2hvcnROYW1lUGF0aCwgW10pO1xuICAgIH0pO1xuICAgIGZpZWxkRW50aXRpZXMuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHtcbiAgICAgIHZhciBmaWVsZE5hbWVQYXRoID0gZmllbGQuZ2V0TmFtZVBhdGgoKTsgLy8gRmluZCBtYXRjaGVkIGVudGl0eSBhbmQgcHV0IGludG8gbGlzdFxuXG4gICAgICBuYW1lUGF0aExpc3QuZm9yRWFjaChmdW5jdGlvbiAoc2hvcnROYW1lUGF0aCkge1xuICAgICAgICBpZiAoc2hvcnROYW1lUGF0aC5ldmVyeShmdW5jdGlvbiAobmFtZVVuaXQsIGkpIHtcbiAgICAgICAgICByZXR1cm4gZmllbGROYW1lUGF0aFtpXSA9PT0gbmFtZVVuaXQ7XG4gICAgICAgIH0pKSB7XG4gICAgICAgICAgbWFwLnVwZGF0ZShzaG9ydE5hbWVQYXRoLCBmdW5jdGlvbiAobGlzdCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkobGlzdCksIFtmaWVsZF0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTsgLy8gQ2hlY2sgaWYgTmFtZU1hcCB2YWx1ZSBpcyB0b3VjaGVkXG5cbiAgICB2YXIgaXNOYW1lUGF0aExpc3RUb3VjaGVkID0gZnVuY3Rpb24gaXNOYW1lUGF0aExpc3RUb3VjaGVkKGVudGl0aWVzKSB7XG4gICAgICByZXR1cm4gZW50aXRpZXMuc29tZShpc0ZpZWxkVG91Y2hlZCk7XG4gICAgfTtcblxuICAgIHZhciBuYW1lUGF0aExpc3RFbnRpdGllcyA9IG1hcC5tYXAoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciB2YWx1ZSA9IF9yZWYudmFsdWU7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzQWxsRmllbGRzVG91Y2hlZCA/IG5hbWVQYXRoTGlzdEVudGl0aWVzLmV2ZXJ5KGlzTmFtZVBhdGhMaXN0VG91Y2hlZCkgOiBuYW1lUGF0aExpc3RFbnRpdGllcy5zb21lKGlzTmFtZVBhdGhMaXN0VG91Y2hlZCk7XG4gIH07XG5cbiAgdGhpcy5pc0ZpZWxkVG91Y2hlZCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgX3RoaXMud2FybmluZ1VuaG9va2VkKCk7XG5cbiAgICByZXR1cm4gX3RoaXMuaXNGaWVsZHNUb3VjaGVkKFtuYW1lXSk7XG4gIH07XG5cbiAgdGhpcy5pc0ZpZWxkc1ZhbGlkYXRpbmcgPSBmdW5jdGlvbiAobmFtZUxpc3QpIHtcbiAgICBfdGhpcy53YXJuaW5nVW5ob29rZWQoKTtcblxuICAgIHZhciBmaWVsZEVudGl0aWVzID0gX3RoaXMuZ2V0RmllbGRFbnRpdGllcygpO1xuXG4gICAgaWYgKCFuYW1lTGlzdCkge1xuICAgICAgcmV0dXJuIGZpZWxkRW50aXRpZXMuc29tZShmdW5jdGlvbiAodGVzdEZpZWxkKSB7XG4gICAgICAgIHJldHVybiB0ZXN0RmllbGQuaXNGaWVsZFZhbGlkYXRpbmcoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBuYW1lUGF0aExpc3QgPSBuYW1lTGlzdC5tYXAoZ2V0TmFtZVBhdGgpO1xuICAgIHJldHVybiBmaWVsZEVudGl0aWVzLnNvbWUoZnVuY3Rpb24gKHRlc3RGaWVsZCkge1xuICAgICAgdmFyIGZpZWxkTmFtZVBhdGggPSB0ZXN0RmllbGQuZ2V0TmFtZVBhdGgoKTtcbiAgICAgIHJldHVybiBjb250YWluc05hbWVQYXRoKG5hbWVQYXRoTGlzdCwgZmllbGROYW1lUGF0aCkgJiYgdGVzdEZpZWxkLmlzRmllbGRWYWxpZGF0aW5nKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgdGhpcy5pc0ZpZWxkVmFsaWRhdGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgX3RoaXMud2FybmluZ1VuaG9va2VkKCk7XG5cbiAgICByZXR1cm4gX3RoaXMuaXNGaWVsZHNWYWxpZGF0aW5nKFtuYW1lXSk7XG4gIH07XG4gIC8qKlxuICAgKiBSZXNldCBGaWVsZCB3aXRoIGZpZWxkIGBpbml0aWFsVmFsdWVgIHByb3AuXG4gICAqIENhbiBwYXNzIGBlbnRpdGllc2Agb3IgYG5hbWVQYXRoTGlzdGAgb3IganVzdCBub3RoaW5nLlxuICAgKi9cblxuXG4gIHRoaXMucmVzZXRXaXRoRmllbGRJbml0aWFsVmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGluZm8gPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgIC8vIENyZWF0ZSBjYWNoZVxuICAgIHZhciBjYWNoZSA9IG5ldyBOYW1lTWFwKCk7XG5cbiAgICB2YXIgZmllbGRFbnRpdGllcyA9IF90aGlzLmdldEZpZWxkRW50aXRpZXModHJ1ZSk7XG5cbiAgICBmaWVsZEVudGl0aWVzLmZvckVhY2goZnVuY3Rpb24gKGZpZWxkKSB7XG4gICAgICB2YXIgaW5pdGlhbFZhbHVlID0gZmllbGQucHJvcHMuaW5pdGlhbFZhbHVlO1xuICAgICAgdmFyIG5hbWVQYXRoID0gZmllbGQuZ2V0TmFtZVBhdGgoKTsgLy8gUmVjb3JkIG9ubHkgaWYgaGFzIGBpbml0aWFsVmFsdWVgXG5cbiAgICAgIGlmIChpbml0aWFsVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YXIgcmVjb3JkcyA9IGNhY2hlLmdldChuYW1lUGF0aCkgfHwgbmV3IFNldCgpO1xuICAgICAgICByZWNvcmRzLmFkZCh7XG4gICAgICAgICAgZW50aXR5OiBmaWVsZCxcbiAgICAgICAgICB2YWx1ZTogaW5pdGlhbFZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgICBjYWNoZS5zZXQobmFtZVBhdGgsIHJlY29yZHMpO1xuICAgICAgfVxuICAgIH0pOyAvLyBSZXNldFxuXG4gICAgdmFyIHJlc2V0V2l0aEZpZWxkcyA9IGZ1bmN0aW9uIHJlc2V0V2l0aEZpZWxkcyhlbnRpdGllcykge1xuICAgICAgZW50aXRpZXMuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHtcbiAgICAgICAgdmFyIGluaXRpYWxWYWx1ZSA9IGZpZWxkLnByb3BzLmluaXRpYWxWYWx1ZTtcblxuICAgICAgICBpZiAoaW5pdGlhbFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YXIgbmFtZVBhdGggPSBmaWVsZC5nZXROYW1lUGF0aCgpO1xuXG4gICAgICAgICAgdmFyIGZvcm1Jbml0aWFsVmFsdWUgPSBfdGhpcy5nZXRJbml0aWFsVmFsdWUobmFtZVBhdGgpO1xuXG4gICAgICAgICAgaWYgKGZvcm1Jbml0aWFsVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gV2FybmluZyBpZiBjb25mbGljdCB3aXRoIGZvcm0gaW5pdGlhbFZhbHVlcyBhbmQgZG8gbm90IG1vZGlmeSB2YWx1ZVxuICAgICAgICAgICAgd2FybmluZyhmYWxzZSwgXCJGb3JtIGFscmVhZHkgc2V0ICdpbml0aWFsVmFsdWVzJyB3aXRoIHBhdGggJ1wiLmNvbmNhdChuYW1lUGF0aC5qb2luKCcuJyksIFwiJy4gRmllbGQgY2FuIG5vdCBvdmVyd3JpdGUgaXQuXCIpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIHJlY29yZHMgPSBjYWNoZS5nZXQobmFtZVBhdGgpO1xuXG4gICAgICAgICAgICBpZiAocmVjb3JkcyAmJiByZWNvcmRzLnNpemUgPiAxKSB7XG4gICAgICAgICAgICAgIC8vIFdhcm5pbmcgaWYgbXVsdGlwbGUgZmllbGQgc2V0IGBpbml0aWFsVmFsdWVgYW5kIGRvIG5vdCBtb2RpZnkgdmFsdWVcbiAgICAgICAgICAgICAgd2FybmluZyhmYWxzZSwgXCJNdWx0aXBsZSBGaWVsZCB3aXRoIHBhdGggJ1wiLmNvbmNhdChuYW1lUGF0aC5qb2luKCcuJyksIFwiJyBzZXQgJ2luaXRpYWxWYWx1ZScuIENhbiBub3QgZGVjaWRlIHdoaWNoIG9uZSB0byBwaWNrLlwiKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlY29yZHMpIHtcbiAgICAgICAgICAgICAgdmFyIG9yaWdpblZhbHVlID0gX3RoaXMuZ2V0RmllbGRWYWx1ZShuYW1lUGF0aCk7IC8vIFNldCBgaW5pdGlhbFZhbHVlYFxuXG5cbiAgICAgICAgICAgICAgaWYgKCFpbmZvLnNraXBFeGlzdCB8fCBvcmlnaW5WYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuc3RvcmUgPSBzZXRWYWx1ZShfdGhpcy5zdG9yZSwgbmFtZVBhdGgsIF90b0NvbnN1bWFibGVBcnJheShyZWNvcmRzKVswXS52YWx1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB2YXIgcmVxdWlyZWRGaWVsZEVudGl0aWVzO1xuXG4gICAgaWYgKGluZm8uZW50aXRpZXMpIHtcbiAgICAgIHJlcXVpcmVkRmllbGRFbnRpdGllcyA9IGluZm8uZW50aXRpZXM7XG4gICAgfSBlbHNlIGlmIChpbmZvLm5hbWVQYXRoTGlzdCkge1xuICAgICAgcmVxdWlyZWRGaWVsZEVudGl0aWVzID0gW107XG4gICAgICBpbmZvLm5hbWVQYXRoTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lUGF0aCkge1xuICAgICAgICB2YXIgcmVjb3JkcyA9IGNhY2hlLmdldChuYW1lUGF0aCk7XG5cbiAgICAgICAgaWYgKHJlY29yZHMpIHtcbiAgICAgICAgICB2YXIgX3JlcXVpcmVkRmllbGRFbnRpdGllO1xuXG4gICAgICAgICAgKF9yZXF1aXJlZEZpZWxkRW50aXRpZSA9IHJlcXVpcmVkRmllbGRFbnRpdGllcykucHVzaC5hcHBseShfcmVxdWlyZWRGaWVsZEVudGl0aWUsIF90b0NvbnN1bWFibGVBcnJheShfdG9Db25zdW1hYmxlQXJyYXkocmVjb3JkcykubWFwKGZ1bmN0aW9uIChyKSB7XG4gICAgICAgICAgICByZXR1cm4gci5lbnRpdHk7XG4gICAgICAgICAgfSkpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVpcmVkRmllbGRFbnRpdGllcyA9IGZpZWxkRW50aXRpZXM7XG4gICAgfVxuXG4gICAgcmVzZXRXaXRoRmllbGRzKHJlcXVpcmVkRmllbGRFbnRpdGllcyk7XG4gIH07XG5cbiAgdGhpcy5yZXNldEZpZWxkcyA9IGZ1bmN0aW9uIChuYW1lTGlzdCkge1xuICAgIF90aGlzLndhcm5pbmdVbmhvb2tlZCgpO1xuXG4gICAgdmFyIHByZXZTdG9yZSA9IF90aGlzLnN0b3JlO1xuXG4gICAgaWYgKCFuYW1lTGlzdCkge1xuICAgICAgX3RoaXMuc3RvcmUgPSBzZXRWYWx1ZXMoe30sIF90aGlzLmluaXRpYWxWYWx1ZXMpO1xuXG4gICAgICBfdGhpcy5yZXNldFdpdGhGaWVsZEluaXRpYWxWYWx1ZSgpO1xuXG4gICAgICBfdGhpcy5ub3RpZnlPYnNlcnZlcnMocHJldlN0b3JlLCBudWxsLCB7XG4gICAgICAgIHR5cGU6ICdyZXNldCdcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfSAvLyBSZXNldCBieSBgbmFtZUxpc3RgXG5cblxuICAgIHZhciBuYW1lUGF0aExpc3QgPSBuYW1lTGlzdC5tYXAoZ2V0TmFtZVBhdGgpO1xuICAgIG5hbWVQYXRoTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lUGF0aCkge1xuICAgICAgdmFyIGluaXRpYWxWYWx1ZSA9IF90aGlzLmdldEluaXRpYWxWYWx1ZShuYW1lUGF0aCk7XG5cbiAgICAgIF90aGlzLnN0b3JlID0gc2V0VmFsdWUoX3RoaXMuc3RvcmUsIG5hbWVQYXRoLCBpbml0aWFsVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgX3RoaXMucmVzZXRXaXRoRmllbGRJbml0aWFsVmFsdWUoe1xuICAgICAgbmFtZVBhdGhMaXN0OiBuYW1lUGF0aExpc3RcbiAgICB9KTtcblxuICAgIF90aGlzLm5vdGlmeU9ic2VydmVycyhwcmV2U3RvcmUsIG5hbWVQYXRoTGlzdCwge1xuICAgICAgdHlwZTogJ3Jlc2V0J1xuICAgIH0pO1xuICB9O1xuXG4gIHRoaXMuc2V0RmllbGRzID0gZnVuY3Rpb24gKGZpZWxkcykge1xuICAgIF90aGlzLndhcm5pbmdVbmhvb2tlZCgpO1xuXG4gICAgdmFyIHByZXZTdG9yZSA9IF90aGlzLnN0b3JlO1xuICAgIGZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uIChmaWVsZERhdGEpIHtcbiAgICAgIHZhciBuYW1lID0gZmllbGREYXRhLm5hbWUsXG4gICAgICAgICAgZXJyb3JzID0gZmllbGREYXRhLmVycm9ycyxcbiAgICAgICAgICBkYXRhID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKGZpZWxkRGF0YSwgW1wibmFtZVwiLCBcImVycm9yc1wiXSk7XG5cbiAgICAgIHZhciBuYW1lUGF0aCA9IGdldE5hbWVQYXRoKG5hbWUpOyAvLyBWYWx1ZVxuXG4gICAgICBpZiAoJ3ZhbHVlJyBpbiBkYXRhKSB7XG4gICAgICAgIF90aGlzLnN0b3JlID0gc2V0VmFsdWUoX3RoaXMuc3RvcmUsIG5hbWVQYXRoLCBkYXRhLnZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMubm90aWZ5T2JzZXJ2ZXJzKHByZXZTdG9yZSwgW25hbWVQYXRoXSwge1xuICAgICAgICB0eXBlOiAnc2V0RmllbGQnLFxuICAgICAgICBkYXRhOiBmaWVsZERhdGFcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIHRoaXMuZ2V0RmllbGRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBlbnRpdGllcyA9IF90aGlzLmdldEZpZWxkRW50aXRpZXModHJ1ZSk7XG5cbiAgICB2YXIgZmllbGRzID0gZW50aXRpZXMubWFwKGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgdmFyIG5hbWVQYXRoID0gZmllbGQuZ2V0TmFtZVBhdGgoKTtcbiAgICAgIHZhciBtZXRhID0gZmllbGQuZ2V0TWV0YSgpO1xuXG4gICAgICB2YXIgZmllbGREYXRhID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBtZXRhKSwge30sIHtcbiAgICAgICAgbmFtZTogbmFtZVBhdGgsXG4gICAgICAgIHZhbHVlOiBfdGhpcy5nZXRGaWVsZFZhbHVlKG5hbWVQYXRoKVxuICAgICAgfSk7XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmaWVsZERhdGEsICdvcmlnaW5SQ0ZpZWxkJywge1xuICAgICAgICB2YWx1ZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmllbGREYXRhO1xuICAgIH0pO1xuICAgIHJldHVybiBmaWVsZHM7XG4gIH07IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PSBPYnNlcnZlciA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogVGhpcyBvbmx5IHRyaWdnZXIgd2hlbiBhIGZpZWxkIGlzIG9uIGNvbnN0cnVjdG9yIHRvIGF2b2lkIHdlIGdldCBpbml0aWFsVmFsdWUgdG9vIGxhdGVcbiAgICovXG5cblxuICB0aGlzLmluaXRFbnRpdHlWYWx1ZSA9IGZ1bmN0aW9uIChlbnRpdHkpIHtcbiAgICB2YXIgaW5pdGlhbFZhbHVlID0gZW50aXR5LnByb3BzLmluaXRpYWxWYWx1ZTtcblxuICAgIGlmIChpbml0aWFsVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIG5hbWVQYXRoID0gZW50aXR5LmdldE5hbWVQYXRoKCk7XG4gICAgICB2YXIgcHJldlZhbHVlID0gZ2V0VmFsdWUoX3RoaXMuc3RvcmUsIG5hbWVQYXRoKTtcblxuICAgICAgaWYgKHByZXZWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIF90aGlzLnN0b3JlID0gc2V0VmFsdWUoX3RoaXMuc3RvcmUsIG5hbWVQYXRoLCBpbml0aWFsVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICB0aGlzLnJlZ2lzdGVyRmllbGQgPSBmdW5jdGlvbiAoZW50aXR5KSB7XG4gICAgX3RoaXMuZmllbGRFbnRpdGllcy5wdXNoKGVudGl0eSk7IC8vIFNldCBpbml0aWFsIHZhbHVlc1xuXG5cbiAgICBpZiAoZW50aXR5LnByb3BzLmluaXRpYWxWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgcHJldlN0b3JlID0gX3RoaXMuc3RvcmU7XG5cbiAgICAgIF90aGlzLnJlc2V0V2l0aEZpZWxkSW5pdGlhbFZhbHVlKHtcbiAgICAgICAgZW50aXRpZXM6IFtlbnRpdHldLFxuICAgICAgICBza2lwRXhpc3Q6IHRydWVcbiAgICAgIH0pO1xuXG4gICAgICBfdGhpcy5ub3RpZnlPYnNlcnZlcnMocHJldlN0b3JlLCBbZW50aXR5LmdldE5hbWVQYXRoKCldLCB7XG4gICAgICAgIHR5cGU6ICd2YWx1ZVVwZGF0ZScsXG4gICAgICAgIHNvdXJjZTogJ2ludGVybmFsJ1xuICAgICAgfSk7XG4gICAgfSAvLyB1bi1yZWdpc3RlciBmaWVsZCBjYWxsYmFja1xuXG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKGlzTGlzdEZpZWxkLCBwcmVzZXJ2ZSkge1xuICAgICAgdmFyIHN1Yk5hbWVQYXRoID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBbXTtcbiAgICAgIF90aGlzLmZpZWxkRW50aXRpZXMgPSBfdGhpcy5maWVsZEVudGl0aWVzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbSAhPT0gZW50aXR5O1xuICAgICAgfSk7IC8vIENsZWFuIHVwIHN0b3JlIHZhbHVlIGlmIG5vdCBwcmVzZXJ2ZVxuXG4gICAgICB2YXIgbWVyZ2VkUHJlc2VydmUgPSBwcmVzZXJ2ZSAhPT0gdW5kZWZpbmVkID8gcHJlc2VydmUgOiBfdGhpcy5wcmVzZXJ2ZTtcblxuICAgICAgaWYgKG1lcmdlZFByZXNlcnZlID09PSBmYWxzZSAmJiAoIWlzTGlzdEZpZWxkIHx8IHN1Yk5hbWVQYXRoLmxlbmd0aCA+IDEpKSB7XG4gICAgICAgIHZhciBuYW1lUGF0aCA9IGVudGl0eS5nZXROYW1lUGF0aCgpO1xuICAgICAgICB2YXIgZGVmYXVsdFZhbHVlID0gaXNMaXN0RmllbGQgPyB1bmRlZmluZWQgOiBnZXRWYWx1ZShfdGhpcy5pbml0aWFsVmFsdWVzLCBuYW1lUGF0aCk7XG5cbiAgICAgICAgaWYgKG5hbWVQYXRoLmxlbmd0aCAmJiBfdGhpcy5nZXRGaWVsZFZhbHVlKG5hbWVQYXRoKSAhPT0gZGVmYXVsdFZhbHVlICYmIF90aGlzLmZpZWxkRW50aXRpZXMuZXZlcnkoZnVuY3Rpb24gKGZpZWxkKSB7XG4gICAgICAgICAgcmV0dXJuICgvLyBPbmx5IHJlc2V0IHdoZW4gbm8gbmFtZVBhdGggZXhpc3RcbiAgICAgICAgICAgICFtYXRjaE5hbWVQYXRoKGZpZWxkLmdldE5hbWVQYXRoKCksIG5hbWVQYXRoKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pKSB7XG4gICAgICAgICAgX3RoaXMuc3RvcmUgPSBzZXRWYWx1ZShfdGhpcy5zdG9yZSwgbmFtZVBhdGgsIGRlZmF1bHRWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9O1xuXG4gIHRoaXMuZGlzcGF0Y2ggPSBmdW5jdGlvbiAoYWN0aW9uKSB7XG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSAndXBkYXRlVmFsdWUnOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIG5hbWVQYXRoID0gYWN0aW9uLm5hbWVQYXRoLFxuICAgICAgICAgICAgICB2YWx1ZSA9IGFjdGlvbi52YWx1ZTtcblxuICAgICAgICAgIF90aGlzLnVwZGF0ZVZhbHVlKG5hbWVQYXRoLCB2YWx1ZSk7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlICd2YWxpZGF0ZUZpZWxkJzpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBfbmFtZVBhdGggPSBhY3Rpb24ubmFtZVBhdGgsXG4gICAgICAgICAgICAgIHRyaWdnZXJOYW1lID0gYWN0aW9uLnRyaWdnZXJOYW1lO1xuXG4gICAgICAgICAgX3RoaXMudmFsaWRhdGVGaWVsZHMoW19uYW1lUGF0aF0sIHtcbiAgICAgICAgICAgIHRyaWdnZXJOYW1lOiB0cmlnZ2VyTmFtZVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgZGVmYXVsdDogLy8gQ3VycmVudGx5IHdlIGRvbid0IGhhdmUgb3RoZXIgYWN0aW9uLiBEbyBub3RoaW5nLlxuXG4gICAgfVxuICB9O1xuXG4gIHRoaXMubm90aWZ5T2JzZXJ2ZXJzID0gZnVuY3Rpb24gKHByZXZTdG9yZSwgbmFtZVBhdGhMaXN0LCBpbmZvKSB7XG4gICAgaWYgKF90aGlzLnN1YnNjcmliYWJsZSkge1xuICAgICAgdmFyIG1lcmdlZEluZm8gPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGluZm8pLCB7fSwge1xuICAgICAgICBzdG9yZTogX3RoaXMuZ2V0RmllbGRzVmFsdWUodHJ1ZSlcbiAgICAgIH0pO1xuXG4gICAgICBfdGhpcy5nZXRGaWVsZEVudGl0aWVzKCkuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgICAgdmFyIG9uU3RvcmVDaGFuZ2UgPSBfcmVmMi5vblN0b3JlQ2hhbmdlO1xuICAgICAgICBvblN0b3JlQ2hhbmdlKHByZXZTdG9yZSwgbmFtZVBhdGhMaXN0LCBtZXJnZWRJbmZvKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBfdGhpcy5mb3JjZVJvb3RVcGRhdGUoKTtcbiAgICB9XG4gIH07XG5cbiAgdGhpcy51cGRhdGVWYWx1ZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBuYW1lUGF0aCA9IGdldE5hbWVQYXRoKG5hbWUpO1xuICAgIHZhciBwcmV2U3RvcmUgPSBfdGhpcy5zdG9yZTtcbiAgICBfdGhpcy5zdG9yZSA9IHNldFZhbHVlKF90aGlzLnN0b3JlLCBuYW1lUGF0aCwgdmFsdWUpO1xuXG4gICAgX3RoaXMubm90aWZ5T2JzZXJ2ZXJzKHByZXZTdG9yZSwgW25hbWVQYXRoXSwge1xuICAgICAgdHlwZTogJ3ZhbHVlVXBkYXRlJyxcbiAgICAgIHNvdXJjZTogJ2ludGVybmFsJ1xuICAgIH0pOyAvLyBOb3RpZnkgZGVwZW5kZW5jaWVzIGNoaWxkcmVuIHdpdGggcGFyZW50IHVwZGF0ZVxuICAgIC8vIFdlIG5lZWQgZGVsYXkgdG8gdHJpZ2dlciB2YWxpZGF0ZSBpbiBjYXNlIEZpZWxkIGlzIHVuZGVyIHJlbmRlciBwcm9wc1xuXG5cbiAgICB2YXIgY2hpbGRyZW5GaWVsZHMgPSBfdGhpcy5nZXREZXBlbmRlbmN5Q2hpbGRyZW5GaWVsZHMobmFtZVBhdGgpO1xuXG4gICAgaWYgKGNoaWxkcmVuRmllbGRzLmxlbmd0aCkge1xuICAgICAgX3RoaXMudmFsaWRhdGVGaWVsZHMoY2hpbGRyZW5GaWVsZHMpO1xuICAgIH1cblxuICAgIF90aGlzLm5vdGlmeU9ic2VydmVycyhwcmV2U3RvcmUsIGNoaWxkcmVuRmllbGRzLCB7XG4gICAgICB0eXBlOiAnZGVwZW5kZW5jaWVzVXBkYXRlJyxcbiAgICAgIHJlbGF0ZWRGaWVsZHM6IFtuYW1lUGF0aF0uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShjaGlsZHJlbkZpZWxkcykpXG4gICAgfSk7IC8vIHRyaWdnZXIgY2FsbGJhY2sgZnVuY3Rpb25cblxuXG4gICAgdmFyIG9uVmFsdWVzQ2hhbmdlID0gX3RoaXMuY2FsbGJhY2tzLm9uVmFsdWVzQ2hhbmdlO1xuXG4gICAgaWYgKG9uVmFsdWVzQ2hhbmdlKSB7XG4gICAgICB2YXIgY2hhbmdlZFZhbHVlcyA9IGNsb25lQnlOYW1lUGF0aExpc3QoX3RoaXMuc3RvcmUsIFtuYW1lUGF0aF0pO1xuICAgICAgb25WYWx1ZXNDaGFuZ2UoY2hhbmdlZFZhbHVlcywgX3RoaXMuZ2V0RmllbGRzVmFsdWUoKSk7XG4gICAgfVxuXG4gICAgX3RoaXMudHJpZ2dlck9uRmllbGRzQ2hhbmdlKFtuYW1lUGF0aF0uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShjaGlsZHJlbkZpZWxkcykpKTtcbiAgfTsgLy8gTGV0IGFsbCBjaGlsZCBGaWVsZCBnZXQgdXBkYXRlLlxuXG5cbiAgdGhpcy5zZXRGaWVsZHNWYWx1ZSA9IGZ1bmN0aW9uIChzdG9yZSkge1xuICAgIF90aGlzLndhcm5pbmdVbmhvb2tlZCgpO1xuXG4gICAgdmFyIHByZXZTdG9yZSA9IF90aGlzLnN0b3JlO1xuXG4gICAgaWYgKHN0b3JlKSB7XG4gICAgICBfdGhpcy5zdG9yZSA9IHNldFZhbHVlcyhfdGhpcy5zdG9yZSwgc3RvcmUpO1xuICAgIH1cblxuICAgIF90aGlzLm5vdGlmeU9ic2VydmVycyhwcmV2U3RvcmUsIG51bGwsIHtcbiAgICAgIHR5cGU6ICd2YWx1ZVVwZGF0ZScsXG4gICAgICBzb3VyY2U6ICdleHRlcm5hbCdcbiAgICB9KTtcbiAgfTtcblxuICB0aGlzLmdldERlcGVuZGVuY3lDaGlsZHJlbkZpZWxkcyA9IGZ1bmN0aW9uIChyb290TmFtZVBhdGgpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBuZXcgU2V0KCk7XG4gICAgdmFyIGNoaWxkcmVuRmllbGRzID0gW107XG4gICAgdmFyIGRlcGVuZGVuY2llczJmaWVsZHMgPSBuZXcgTmFtZU1hcCgpO1xuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlIG1hcHNcbiAgICAgKiBDYW4gdXNlIGNhY2hlIHRvIHNhdmUgcGVyZiBpZiB1c2VyIHJlcG9ydCBwZXJmb3JtYW5jZSBpc3N1ZSB3aXRoIHRoaXNcbiAgICAgKi9cblxuICAgIF90aGlzLmdldEZpZWxkRW50aXRpZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgdmFyIGRlcGVuZGVuY2llcyA9IGZpZWxkLnByb3BzLmRlcGVuZGVuY2llcztcbiAgICAgIChkZXBlbmRlbmNpZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGRlcGVuZGVuY3kpIHtcbiAgICAgICAgdmFyIGRlcGVuZGVuY3lOYW1lUGF0aCA9IGdldE5hbWVQYXRoKGRlcGVuZGVuY3kpO1xuICAgICAgICBkZXBlbmRlbmNpZXMyZmllbGRzLnVwZGF0ZShkZXBlbmRlbmN5TmFtZVBhdGgsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgZmllbGRzID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBuZXcgU2V0KCk7XG4gICAgICAgICAgZmllbGRzLmFkZChmaWVsZCk7XG4gICAgICAgICAgcmV0dXJuIGZpZWxkcztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHZhciBmaWxsQ2hpbGRyZW4gPSBmdW5jdGlvbiBmaWxsQ2hpbGRyZW4obmFtZVBhdGgpIHtcbiAgICAgIHZhciBmaWVsZHMgPSBkZXBlbmRlbmNpZXMyZmllbGRzLmdldChuYW1lUGF0aCkgfHwgbmV3IFNldCgpO1xuICAgICAgZmllbGRzLmZvckVhY2goZnVuY3Rpb24gKGZpZWxkKSB7XG4gICAgICAgIGlmICghY2hpbGRyZW4uaGFzKGZpZWxkKSkge1xuICAgICAgICAgIGNoaWxkcmVuLmFkZChmaWVsZCk7XG4gICAgICAgICAgdmFyIGZpZWxkTmFtZVBhdGggPSBmaWVsZC5nZXROYW1lUGF0aCgpO1xuXG4gICAgICAgICAgaWYgKGZpZWxkLmlzRmllbGREaXJ0eSgpICYmIGZpZWxkTmFtZVBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICBjaGlsZHJlbkZpZWxkcy5wdXNoKGZpZWxkTmFtZVBhdGgpO1xuICAgICAgICAgICAgZmlsbENoaWxkcmVuKGZpZWxkTmFtZVBhdGgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGZpbGxDaGlsZHJlbihyb290TmFtZVBhdGgpO1xuICAgIHJldHVybiBjaGlsZHJlbkZpZWxkcztcbiAgfTtcblxuICB0aGlzLnRyaWdnZXJPbkZpZWxkc0NoYW5nZSA9IGZ1bmN0aW9uIChuYW1lUGF0aExpc3QsIGZpbGVkRXJyb3JzKSB7XG4gICAgdmFyIG9uRmllbGRzQ2hhbmdlID0gX3RoaXMuY2FsbGJhY2tzLm9uRmllbGRzQ2hhbmdlO1xuXG4gICAgaWYgKG9uRmllbGRzQ2hhbmdlKSB7XG4gICAgICB2YXIgZmllbGRzID0gX3RoaXMuZ2V0RmllbGRzKCk7XG4gICAgICAvKipcbiAgICAgICAqIEZpbGwgZXJyb3JzIHNpbmNlIGBmaWVsZHNgIG1heSBiZSByZXBsYWNlZCBieSBjb250cm9sbGVkIGZpZWxkc1xuICAgICAgICovXG5cblxuICAgICAgaWYgKGZpbGVkRXJyb3JzKSB7XG4gICAgICAgIHZhciBjYWNoZSA9IG5ldyBOYW1lTWFwKCk7XG4gICAgICAgIGZpbGVkRXJyb3JzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICAgICAgdmFyIG5hbWUgPSBfcmVmMy5uYW1lLFxuICAgICAgICAgICAgICBlcnJvcnMgPSBfcmVmMy5lcnJvcnM7XG4gICAgICAgICAgY2FjaGUuc2V0KG5hbWUsIGVycm9ycyk7XG4gICAgICAgIH0pO1xuICAgICAgICBmaWVsZHMuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICBmaWVsZC5lcnJvcnMgPSBjYWNoZS5nZXQoZmllbGQubmFtZSkgfHwgZmllbGQuZXJyb3JzO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIGNoYW5nZWRGaWVsZHMgPSBmaWVsZHMuZmlsdGVyKGZ1bmN0aW9uIChfcmVmNCkge1xuICAgICAgICB2YXIgZmllbGROYW1lID0gX3JlZjQubmFtZTtcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5zTmFtZVBhdGgobmFtZVBhdGhMaXN0LCBmaWVsZE5hbWUpO1xuICAgICAgfSk7XG4gICAgICBvbkZpZWxkc0NoYW5nZShjaGFuZ2VkRmllbGRzLCBmaWVsZHMpO1xuICAgIH1cbiAgfTsgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09IFZhbGlkYXRlID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbiAgdGhpcy52YWxpZGF0ZUZpZWxkcyA9IGZ1bmN0aW9uIChuYW1lTGlzdCwgb3B0aW9ucykge1xuICAgIF90aGlzLndhcm5pbmdVbmhvb2tlZCgpO1xuXG4gICAgdmFyIHByb3ZpZGVOYW1lTGlzdCA9ICEhbmFtZUxpc3Q7XG4gICAgdmFyIG5hbWVQYXRoTGlzdCA9IHByb3ZpZGVOYW1lTGlzdCA/IG5hbWVMaXN0Lm1hcChnZXROYW1lUGF0aCkgOiBbXTsgLy8gQ29sbGVjdCByZXN1bHQgaW4gcHJvbWlzZSBsaXN0XG5cbiAgICB2YXIgcHJvbWlzZUxpc3QgPSBbXTtcblxuICAgIF90aGlzLmdldEZpZWxkRW50aXRpZXModHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHtcbiAgICAgIC8vIEFkZCBmaWVsZCBpZiBub3QgcHJvdmlkZSBgbmFtZUxpc3RgXG4gICAgICBpZiAoIXByb3ZpZGVOYW1lTGlzdCkge1xuICAgICAgICBuYW1lUGF0aExpc3QucHVzaChmaWVsZC5nZXROYW1lUGF0aCgpKTtcbiAgICAgIH1cbiAgICAgIC8qKlxuICAgICAgICogUmVjdXJzaXZlIHZhbGlkYXRlIGlmIGNvbmZpZ3VyZWQuXG4gICAgICAgKiBUT0RPOiBwZXJmIGltcHJvdmVtZW50IEB6b21iaWVKXG4gICAgICAgKi9cblxuXG4gICAgICBpZiAoKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5yZWN1cnNpdmUpICYmIHByb3ZpZGVOYW1lTGlzdCkge1xuICAgICAgICB2YXIgbmFtZVBhdGggPSBmaWVsZC5nZXROYW1lUGF0aCgpO1xuXG4gICAgICAgIGlmICggLy8gbmFtZUxpc3RbaV0gPT09IHVuZGVmaW5lZCDor7TmmI7mmK/ku6UgbmFtZUxpc3Qg5byA5aS055qEXG4gICAgICAgIC8vIFsnbmFtZSddIC0+IFsnbmFtZScsJ2xpc3QnXVxuICAgICAgICBuYW1lUGF0aC5ldmVyeShmdW5jdGlvbiAobmFtZVVuaXQsIGkpIHtcbiAgICAgICAgICByZXR1cm4gbmFtZUxpc3RbaV0gPT09IG5hbWVVbml0IHx8IG5hbWVMaXN0W2ldID09PSB1bmRlZmluZWQ7XG4gICAgICAgIH0pKSB7XG4gICAgICAgICAgbmFtZVBhdGhMaXN0LnB1c2gobmFtZVBhdGgpO1xuICAgICAgICB9XG4gICAgICB9IC8vIFNraXAgaWYgd2l0aG91dCBydWxlXG5cblxuICAgICAgaWYgKCFmaWVsZC5wcm9wcy5ydWxlcyB8fCAhZmllbGQucHJvcHMucnVsZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGZpZWxkTmFtZVBhdGggPSBmaWVsZC5nZXROYW1lUGF0aCgpOyAvLyBBZGQgZmllbGQgdmFsaWRhdGUgcnVsZSBpbiB0byBwcm9taXNlIGxpc3RcblxuICAgICAgaWYgKCFwcm92aWRlTmFtZUxpc3QgfHwgY29udGFpbnNOYW1lUGF0aChuYW1lUGF0aExpc3QsIGZpZWxkTmFtZVBhdGgpKSB7XG4gICAgICAgIHZhciBwcm9taXNlID0gZmllbGQudmFsaWRhdGVSdWxlcyhfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICB2YWxpZGF0ZU1lc3NhZ2VzOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRlZmF1bHRWYWxpZGF0ZU1lc3NhZ2VzKSwgX3RoaXMudmFsaWRhdGVNZXNzYWdlcylcbiAgICAgICAgfSwgb3B0aW9ucykpOyAvLyBXcmFwIHByb21pc2Ugd2l0aCBmaWVsZFxuXG4gICAgICAgIHByb21pc2VMaXN0LnB1c2gocHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogZmllbGROYW1lUGF0aCxcbiAgICAgICAgICAgIGVycm9yczogW11cbiAgICAgICAgICB9O1xuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3JzKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHtcbiAgICAgICAgICAgIG5hbWU6IGZpZWxkTmFtZVBhdGgsXG4gICAgICAgICAgICBlcnJvcnM6IGVycm9yc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgc3VtbWFyeVByb21pc2UgPSBhbGxQcm9taXNlRmluaXNoKHByb21pc2VMaXN0KTtcbiAgICBfdGhpcy5sYXN0VmFsaWRhdGVQcm9taXNlID0gc3VtbWFyeVByb21pc2U7IC8vIE5vdGlmeSBmaWVsZHMgd2l0aCBydWxlIHRoYXQgdmFsaWRhdGUgaGFzIGZpbmlzaGVkIGFuZCBuZWVkIHVwZGF0ZVxuXG4gICAgc3VtbWFyeVByb21pc2UuY2F0Y2goZnVuY3Rpb24gKHJlc3VsdHMpIHtcbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdHMpIHtcbiAgICAgIHZhciByZXN1bHROYW1lUGF0aExpc3QgPSByZXN1bHRzLm1hcChmdW5jdGlvbiAoX3JlZjUpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBfcmVmNS5uYW1lO1xuICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgIH0pO1xuXG4gICAgICBfdGhpcy5ub3RpZnlPYnNlcnZlcnMoX3RoaXMuc3RvcmUsIHJlc3VsdE5hbWVQYXRoTGlzdCwge1xuICAgICAgICB0eXBlOiAndmFsaWRhdGVGaW5pc2gnXG4gICAgICB9KTtcblxuICAgICAgX3RoaXMudHJpZ2dlck9uRmllbGRzQ2hhbmdlKHJlc3VsdE5hbWVQYXRoTGlzdCwgcmVzdWx0cyk7XG4gICAgfSk7XG4gICAgdmFyIHJldHVyblByb21pc2UgPSBzdW1tYXJ5UHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpcy5sYXN0VmFsaWRhdGVQcm9taXNlID09PSBzdW1tYXJ5UHJvbWlzZSkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKF90aGlzLmdldEZpZWxkc1ZhbHVlKG5hbWVQYXRoTGlzdCkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoW10pO1xuICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChyZXN1bHRzKSB7XG4gICAgICB2YXIgZXJyb3JMaXN0ID0gcmVzdWx0cy5maWx0ZXIoZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0ICYmIHJlc3VsdC5lcnJvcnMubGVuZ3RoO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoe1xuICAgICAgICB2YWx1ZXM6IF90aGlzLmdldEZpZWxkc1ZhbHVlKG5hbWVQYXRoTGlzdCksXG4gICAgICAgIGVycm9yRmllbGRzOiBlcnJvckxpc3QsXG4gICAgICAgIG91dE9mRGF0ZTogX3RoaXMubGFzdFZhbGlkYXRlUHJvbWlzZSAhPT0gc3VtbWFyeVByb21pc2VcbiAgICAgIH0pO1xuICAgIH0pOyAvLyBEbyBub3QgdGhyb3cgaW4gY29uc29sZVxuXG4gICAgcmV0dXJuUHJvbWlzZS5jYXRjaChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJldHVyblByb21pc2U7XG4gIH07IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gU3VibWl0ID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4gIHRoaXMuc3VibWl0ID0gZnVuY3Rpb24gKCkge1xuICAgIF90aGlzLndhcm5pbmdVbmhvb2tlZCgpO1xuXG4gICAgX3RoaXMudmFsaWRhdGVGaWVsZHMoKS50aGVuKGZ1bmN0aW9uICh2YWx1ZXMpIHtcbiAgICAgIHZhciBvbkZpbmlzaCA9IF90aGlzLmNhbGxiYWNrcy5vbkZpbmlzaDtcblxuICAgICAgaWYgKG9uRmluaXNoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgb25GaW5pc2godmFsdWVzKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgLy8gU2hvdWxkIHByaW50IGVycm9yIGlmIHVzZXIgYG9uRmluaXNoYCBjYWxsYmFjayBmYWlsZWRcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KS5jYXRjaChmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIG9uRmluaXNoRmFpbGVkID0gX3RoaXMuY2FsbGJhY2tzLm9uRmluaXNoRmFpbGVkO1xuXG4gICAgICBpZiAob25GaW5pc2hGYWlsZWQpIHtcbiAgICAgICAgb25GaW5pc2hGYWlsZWQoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgdGhpcy5mb3JjZVJvb3RVcGRhdGUgPSBmb3JjZVJvb3RVcGRhdGU7XG59O1xuXG5mdW5jdGlvbiB1c2VGb3JtKGZvcm0pIHtcbiAgdmFyIGZvcm1SZWYgPSBSZWFjdC51c2VSZWYoKTtcblxuICB2YXIgX1JlYWN0JHVzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUoe30pLFxuICAgICAgX1JlYWN0JHVzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF9SZWFjdCR1c2VTdGF0ZSwgMiksXG4gICAgICBmb3JjZVVwZGF0ZSA9IF9SZWFjdCR1c2VTdGF0ZTJbMV07XG5cbiAgaWYgKCFmb3JtUmVmLmN1cnJlbnQpIHtcbiAgICBpZiAoZm9ybSkge1xuICAgICAgZm9ybVJlZi5jdXJyZW50ID0gZm9ybTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ3JlYXRlIGEgbmV3IEZvcm1TdG9yZSBpZiBub3QgcHJvdmlkZWRcbiAgICAgIHZhciBmb3JjZVJlUmVuZGVyID0gZnVuY3Rpb24gZm9yY2VSZVJlbmRlcigpIHtcbiAgICAgICAgZm9yY2VVcGRhdGUoe30pO1xuICAgICAgfTtcblxuICAgICAgdmFyIGZvcm1TdG9yZSA9IG5ldyBGb3JtU3RvcmUoZm9yY2VSZVJlbmRlcik7XG4gICAgICBmb3JtUmVmLmN1cnJlbnQgPSBmb3JtU3RvcmUuZ2V0Rm9ybSgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbZm9ybVJlZi5jdXJyZW50XTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlRm9ybTsiLCJleHBvcnQgZnVuY3Rpb24gYWxsUHJvbWlzZUZpbmlzaChwcm9taXNlTGlzdCkge1xuICB2YXIgaGFzRXJyb3IgPSBmYWxzZTtcbiAgdmFyIGNvdW50ID0gcHJvbWlzZUxpc3QubGVuZ3RoO1xuICB2YXIgcmVzdWx0cyA9IFtdO1xuXG4gIGlmICghcHJvbWlzZUxpc3QubGVuZ3RoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gIH1cblxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHByb21pc2VMaXN0LmZvckVhY2goZnVuY3Rpb24gKHByb21pc2UsIGluZGV4KSB7XG4gICAgICBwcm9taXNlLmNhdGNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgY291bnQgLT0gMTtcbiAgICAgICAgcmVzdWx0c1tpbmRleF0gPSByZXN1bHQ7XG5cbiAgICAgICAgaWYgKGNvdW50ID4gMCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNFcnJvcikge1xuICAgICAgICAgIHJlamVjdChyZXN1bHRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmUocmVzdWx0cyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59IiwiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG52YXIgRm9ybUNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dCh7XG4gIHRyaWdnZXJGb3JtQ2hhbmdlOiBmdW5jdGlvbiB0cmlnZ2VyRm9ybUNoYW5nZSgpIHt9LFxuICB0cmlnZ2VyRm9ybUZpbmlzaDogZnVuY3Rpb24gdHJpZ2dlckZvcm1GaW5pc2goKSB7fSxcbiAgcmVnaXN0ZXJGb3JtOiBmdW5jdGlvbiByZWdpc3RlckZvcm0oKSB7fSxcbiAgdW5yZWdpc3RlckZvcm06IGZ1bmN0aW9uIHVucmVnaXN0ZXJGb3JtKCkge31cbn0pO1xuXG52YXIgRm9ybVByb3ZpZGVyID0gZnVuY3Rpb24gRm9ybVByb3ZpZGVyKF9yZWYpIHtcbiAgdmFyIHZhbGlkYXRlTWVzc2FnZXMgPSBfcmVmLnZhbGlkYXRlTWVzc2FnZXMsXG4gICAgICBvbkZvcm1DaGFuZ2UgPSBfcmVmLm9uRm9ybUNoYW5nZSxcbiAgICAgIG9uRm9ybUZpbmlzaCA9IF9yZWYub25Gb3JtRmluaXNoLFxuICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICB2YXIgZm9ybUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KEZvcm1Db250ZXh0KTtcbiAgdmFyIGZvcm1zUmVmID0gUmVhY3QudXNlUmVmKHt9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1Db250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZm9ybUNvbnRleHQpLCB7fSwge1xuICAgICAgdmFsaWRhdGVNZXNzYWdlczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBmb3JtQ29udGV4dC52YWxpZGF0ZU1lc3NhZ2VzKSwgdmFsaWRhdGVNZXNzYWdlcyksXG4gICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgIC8vID0gICAgICAgICAgICAgICAgICBHbG9iYWwgRm9ybSBDb250cm9sICAgICAgICAgICAgICAgICAgPVxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICB0cmlnZ2VyRm9ybUNoYW5nZTogZnVuY3Rpb24gdHJpZ2dlckZvcm1DaGFuZ2UobmFtZSwgY2hhbmdlZEZpZWxkcykge1xuICAgICAgICBpZiAob25Gb3JtQ2hhbmdlKSB7XG4gICAgICAgICAgb25Gb3JtQ2hhbmdlKG5hbWUsIHtcbiAgICAgICAgICAgIGNoYW5nZWRGaWVsZHM6IGNoYW5nZWRGaWVsZHMsXG4gICAgICAgICAgICBmb3JtczogZm9ybXNSZWYuY3VycmVudFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybUNvbnRleHQudHJpZ2dlckZvcm1DaGFuZ2UobmFtZSwgY2hhbmdlZEZpZWxkcyk7XG4gICAgICB9LFxuICAgICAgdHJpZ2dlckZvcm1GaW5pc2g6IGZ1bmN0aW9uIHRyaWdnZXJGb3JtRmluaXNoKG5hbWUsIHZhbHVlcykge1xuICAgICAgICBpZiAob25Gb3JtRmluaXNoKSB7XG4gICAgICAgICAgb25Gb3JtRmluaXNoKG5hbWUsIHtcbiAgICAgICAgICAgIHZhbHVlczogdmFsdWVzLFxuICAgICAgICAgICAgZm9ybXM6IGZvcm1zUmVmLmN1cnJlbnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1Db250ZXh0LnRyaWdnZXJGb3JtRmluaXNoKG5hbWUsIHZhbHVlcyk7XG4gICAgICB9LFxuICAgICAgcmVnaXN0ZXJGb3JtOiBmdW5jdGlvbiByZWdpc3RlckZvcm0obmFtZSwgZm9ybSkge1xuICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgIGZvcm1zUmVmLmN1cnJlbnQgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGZvcm1zUmVmLmN1cnJlbnQpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBuYW1lLCBmb3JtKSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtQ29udGV4dC5yZWdpc3RlckZvcm0obmFtZSwgZm9ybSk7XG4gICAgICB9LFxuICAgICAgdW5yZWdpc3RlckZvcm06IGZ1bmN0aW9uIHVucmVnaXN0ZXJGb3JtKG5hbWUpIHtcbiAgICAgICAgdmFyIG5ld0Zvcm1zID0gX29iamVjdFNwcmVhZCh7fSwgZm9ybXNSZWYuY3VycmVudCk7XG5cbiAgICAgICAgZGVsZXRlIG5ld0Zvcm1zW25hbWVdO1xuICAgICAgICBmb3Jtc1JlZi5jdXJyZW50ID0gbmV3Rm9ybXM7XG4gICAgICAgIGZvcm1Db250ZXh0LnVucmVnaXN0ZXJGb3JtKG5hbWUpO1xuICAgICAgfVxuICAgIH0pXG4gIH0sIGNoaWxkcmVuKTtcbn07XG5cbmV4cG9ydCB7IEZvcm1Qcm92aWRlciB9O1xuZXhwb3J0IGRlZmF1bHQgRm9ybUNvbnRleHQ7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUZvcm0gZnJvbSAnLi91c2VGb3JtJztcbmltcG9ydCBGaWVsZENvbnRleHQsIHsgSE9PS19NQVJLIH0gZnJvbSAnLi9GaWVsZENvbnRleHQnO1xuaW1wb3J0IEZvcm1Db250ZXh0IGZyb20gJy4vRm9ybUNvbnRleHQnO1xuaW1wb3J0IHsgaXNTaW1pbGFyIH0gZnJvbSAnLi91dGlscy92YWx1ZVV0aWwnO1xuXG52YXIgRm9ybSA9IGZ1bmN0aW9uIEZvcm0oX3JlZiwgcmVmKSB7XG4gIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgaW5pdGlhbFZhbHVlcyA9IF9yZWYuaW5pdGlhbFZhbHVlcyxcbiAgICAgIGZpZWxkcyA9IF9yZWYuZmllbGRzLFxuICAgICAgZm9ybSA9IF9yZWYuZm9ybSxcbiAgICAgIHByZXNlcnZlID0gX3JlZi5wcmVzZXJ2ZSxcbiAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICAgIF9yZWYkY29tcG9uZW50ID0gX3JlZi5jb21wb25lbnQsXG4gICAgICBDb21wb25lbnQgPSBfcmVmJGNvbXBvbmVudCA9PT0gdm9pZCAwID8gJ2Zvcm0nIDogX3JlZiRjb21wb25lbnQsXG4gICAgICB2YWxpZGF0ZU1lc3NhZ2VzID0gX3JlZi52YWxpZGF0ZU1lc3NhZ2VzLFxuICAgICAgX3JlZiR2YWxpZGF0ZVRyaWdnZXIgPSBfcmVmLnZhbGlkYXRlVHJpZ2dlcixcbiAgICAgIHZhbGlkYXRlVHJpZ2dlciA9IF9yZWYkdmFsaWRhdGVUcmlnZ2VyID09PSB2b2lkIDAgPyAnb25DaGFuZ2UnIDogX3JlZiR2YWxpZGF0ZVRyaWdnZXIsXG4gICAgICBvblZhbHVlc0NoYW5nZSA9IF9yZWYub25WYWx1ZXNDaGFuZ2UsXG4gICAgICBfb25GaWVsZHNDaGFuZ2UgPSBfcmVmLm9uRmllbGRzQ2hhbmdlLFxuICAgICAgX29uRmluaXNoID0gX3JlZi5vbkZpbmlzaCxcbiAgICAgIG9uRmluaXNoRmFpbGVkID0gX3JlZi5vbkZpbmlzaEZhaWxlZCxcbiAgICAgIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBbXCJuYW1lXCIsIFwiaW5pdGlhbFZhbHVlc1wiLCBcImZpZWxkc1wiLCBcImZvcm1cIiwgXCJwcmVzZXJ2ZVwiLCBcImNoaWxkcmVuXCIsIFwiY29tcG9uZW50XCIsIFwidmFsaWRhdGVNZXNzYWdlc1wiLCBcInZhbGlkYXRlVHJpZ2dlclwiLCBcIm9uVmFsdWVzQ2hhbmdlXCIsIFwib25GaWVsZHNDaGFuZ2VcIiwgXCJvbkZpbmlzaFwiLCBcIm9uRmluaXNoRmFpbGVkXCJdKTtcblxuICB2YXIgZm9ybUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KEZvcm1Db250ZXh0KTsgLy8gV2UgY3VzdG9taXplIGhhbmRsZSBldmVudCBzaW5jZSBDb250ZXh0IHdpbGwgbWFrZXMgYWxsIHRoZSBjb25zdW1lciByZS1yZW5kZXI6XG4gIC8vIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9jb250ZXh0Lmh0bWwjY29udGV4dHByb3ZpZGVyXG5cbiAgdmFyIF91c2VGb3JtID0gdXNlRm9ybShmb3JtKSxcbiAgICAgIF91c2VGb3JtMiA9IF9zbGljZWRUb0FycmF5KF91c2VGb3JtLCAxKSxcbiAgICAgIGZvcm1JbnN0YW5jZSA9IF91c2VGb3JtMlswXTtcblxuICB2YXIgX2Zvcm1JbnN0YW5jZSRnZXRJbnRlID0gZm9ybUluc3RhbmNlLmdldEludGVybmFsSG9va3MoSE9PS19NQVJLKSxcbiAgICAgIHVzZVN1YnNjcmliZSA9IF9mb3JtSW5zdGFuY2UkZ2V0SW50ZS51c2VTdWJzY3JpYmUsXG4gICAgICBzZXRJbml0aWFsVmFsdWVzID0gX2Zvcm1JbnN0YW5jZSRnZXRJbnRlLnNldEluaXRpYWxWYWx1ZXMsXG4gICAgICBzZXRDYWxsYmFja3MgPSBfZm9ybUluc3RhbmNlJGdldEludGUuc2V0Q2FsbGJhY2tzLFxuICAgICAgc2V0VmFsaWRhdGVNZXNzYWdlcyA9IF9mb3JtSW5zdGFuY2UkZ2V0SW50ZS5zZXRWYWxpZGF0ZU1lc3NhZ2VzLFxuICAgICAgc2V0UHJlc2VydmUgPSBfZm9ybUluc3RhbmNlJGdldEludGUuc2V0UHJlc2VydmU7IC8vIFBhc3MgcmVmIHdpdGggZm9ybSBpbnN0YW5jZVxuXG5cbiAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZm9ybUluc3RhbmNlO1xuICB9KTsgLy8gUmVnaXN0ZXIgZm9ybSBpbnRvIENvbnRleHRcblxuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGZvcm1Db250ZXh0LnJlZ2lzdGVyRm9ybShuYW1lLCBmb3JtSW5zdGFuY2UpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3JtQ29udGV4dC51bnJlZ2lzdGVyRm9ybShuYW1lKTtcbiAgICB9O1xuICB9LCBbZm9ybUNvbnRleHQsIGZvcm1JbnN0YW5jZSwgbmFtZV0pOyAvLyBQYXNzIHByb3BzIHRvIHN0b3JlXG5cbiAgc2V0VmFsaWRhdGVNZXNzYWdlcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGZvcm1Db250ZXh0LnZhbGlkYXRlTWVzc2FnZXMpLCB2YWxpZGF0ZU1lc3NhZ2VzKSk7XG4gIHNldENhbGxiYWNrcyh7XG4gICAgb25WYWx1ZXNDaGFuZ2U6IG9uVmFsdWVzQ2hhbmdlLFxuICAgIG9uRmllbGRzQ2hhbmdlOiBmdW5jdGlvbiBvbkZpZWxkc0NoYW5nZShjaGFuZ2VkRmllbGRzKSB7XG4gICAgICBmb3JtQ29udGV4dC50cmlnZ2VyRm9ybUNoYW5nZShuYW1lLCBjaGFuZ2VkRmllbGRzKTtcblxuICAgICAgaWYgKF9vbkZpZWxkc0NoYW5nZSkge1xuICAgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgcmVzdCA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgICAgcmVzdFtfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgIH1cblxuICAgICAgICBfb25GaWVsZHNDaGFuZ2UuYXBwbHkodm9pZCAwLCBbY2hhbmdlZEZpZWxkc10uY29uY2F0KHJlc3QpKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uRmluaXNoOiBmdW5jdGlvbiBvbkZpbmlzaCh2YWx1ZXMpIHtcbiAgICAgIGZvcm1Db250ZXh0LnRyaWdnZXJGb3JtRmluaXNoKG5hbWUsIHZhbHVlcyk7XG5cbiAgICAgIGlmIChfb25GaW5pc2gpIHtcbiAgICAgICAgX29uRmluaXNoKHZhbHVlcyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbkZpbmlzaEZhaWxlZDogb25GaW5pc2hGYWlsZWRcbiAgfSk7XG4gIHNldFByZXNlcnZlKHByZXNlcnZlKTsgLy8gU2V0IGluaXRpYWwgdmFsdWUsIGluaXQgc3RvcmUgdmFsdWUgd2hlbiBmaXJzdCBtb3VudFxuXG4gIHZhciBtb3VudFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgc2V0SW5pdGlhbFZhbHVlcyhpbml0aWFsVmFsdWVzLCAhbW91bnRSZWYuY3VycmVudCk7XG5cbiAgaWYgKCFtb3VudFJlZi5jdXJyZW50KSB7XG4gICAgbW91bnRSZWYuY3VycmVudCA9IHRydWU7XG4gIH0gLy8gUHJlcGFyZSBjaGlsZHJlbiBieSBgY2hpbGRyZW5gIHR5cGVcblxuXG4gIHZhciBjaGlsZHJlbk5vZGUgPSBjaGlsZHJlbjtcbiAgdmFyIGNoaWxkcmVuUmVuZGVyUHJvcHMgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbic7XG5cbiAgaWYgKGNoaWxkcmVuUmVuZGVyUHJvcHMpIHtcbiAgICB2YXIgdmFsdWVzID0gZm9ybUluc3RhbmNlLmdldEZpZWxkc1ZhbHVlKHRydWUpO1xuICAgIGNoaWxkcmVuTm9kZSA9IGNoaWxkcmVuKHZhbHVlcywgZm9ybUluc3RhbmNlKTtcbiAgfSAvLyBOb3QgdXNlIHN1YnNjcmliZSB3aGVuIHVzaW5nIHJlbmRlciBwcm9wc1xuXG5cbiAgdXNlU3Vic2NyaWJlKCFjaGlsZHJlblJlbmRlclByb3BzKTsgLy8gTGlzdGVuIGlmIGZpZWxkcyBwcm92aWRlZC4gV2UgdXNlIHJlZiB0byBzYXZlIHByZXYgZGF0YSBoZXJlIHRvIGF2b2lkIGFkZGl0aW9uYWwgcmVuZGVyXG5cbiAgdmFyIHByZXZGaWVsZHNSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWlzU2ltaWxhcihwcmV2RmllbGRzUmVmLmN1cnJlbnQgfHwgW10sIGZpZWxkcyB8fCBbXSkpIHtcbiAgICAgIGZvcm1JbnN0YW5jZS5zZXRGaWVsZHMoZmllbGRzIHx8IFtdKTtcbiAgICB9XG5cbiAgICBwcmV2RmllbGRzUmVmLmN1cnJlbnQgPSBmaWVsZHM7XG4gIH0sIFtmaWVsZHMsIGZvcm1JbnN0YW5jZV0pO1xuICB2YXIgZm9ybUNvbnRleHRWYWx1ZSA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGZvcm1JbnN0YW5jZSksIHt9LCB7XG4gICAgICB2YWxpZGF0ZVRyaWdnZXI6IHZhbGlkYXRlVHJpZ2dlclxuICAgIH0pO1xuICB9LCBbZm9ybUluc3RhbmNlLCB2YWxpZGF0ZVRyaWdnZXJdKTtcbiAgdmFyIHdyYXBwZXJOb2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRmllbGRDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGZvcm1Db250ZXh0VmFsdWVcbiAgfSwgY2hpbGRyZW5Ob2RlKTtcblxuICBpZiAoQ29tcG9uZW50ID09PSBmYWxzZSkge1xuICAgIHJldHVybiB3cmFwcGVyTm9kZTtcbiAgfVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIF9leHRlbmRzKHt9LCByZXN0UHJvcHMsIHtcbiAgICBvblN1Ym1pdDogZnVuY3Rpb24gb25TdWJtaXQoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGZvcm1JbnN0YW5jZS5zdWJtaXQoKTtcbiAgICB9LFxuICAgIG9uUmVzZXQ6IGZ1bmN0aW9uIG9uUmVzZXQoZXZlbnQpIHtcbiAgICAgIHZhciBfcmVzdFByb3BzJG9uUmVzZXQ7XG5cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBmb3JtSW5zdGFuY2UucmVzZXRGaWVsZHMoKTtcbiAgICAgIChfcmVzdFByb3BzJG9uUmVzZXQgPSByZXN0UHJvcHMub25SZXNldCkgPT09IG51bGwgfHwgX3Jlc3RQcm9wcyRvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfcmVzdFByb3BzJG9uUmVzZXQuY2FsbChyZXN0UHJvcHMsIGV2ZW50KTtcbiAgICB9XG4gIH0pLCB3cmFwcGVyTm9kZSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb3JtOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBGaWVsZCBmcm9tICcuL0ZpZWxkJztcbmltcG9ydCBMaXN0IGZyb20gJy4vTGlzdCc7XG5pbXBvcnQgdXNlRm9ybSBmcm9tICcuL3VzZUZvcm0nO1xuaW1wb3J0IEZpZWxkRm9ybSBmcm9tICcuL0Zvcm0nO1xuaW1wb3J0IHsgRm9ybVByb3ZpZGVyIH0gZnJvbSAnLi9Gb3JtQ29udGV4dCc7XG52YXIgSW50ZXJuYWxGb3JtID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoRmllbGRGb3JtKTtcbnZhciBSZWZGb3JtID0gSW50ZXJuYWxGb3JtO1xuUmVmRm9ybS5Gb3JtUHJvdmlkZXIgPSBGb3JtUHJvdmlkZXI7XG5SZWZGb3JtLkZpZWxkID0gRmllbGQ7XG5SZWZGb3JtLkxpc3QgPSBMaXN0O1xuUmVmRm9ybS51c2VGb3JtID0gdXNlRm9ybTtcbmV4cG9ydCB7IEZpZWxkLCBMaXN0LCB1c2VGb3JtLCBGb3JtUHJvdmlkZXIgfTtcbmV4cG9ydCBkZWZhdWx0IFJlZkZvcm07IiwiLyoqXG4gKiBAaWdub3JlXG4gKiBzb21lIGtleS1jb2RlcyBkZWZpbml0aW9uIGFuZCB1dGlscyBmcm9tIGNsb3N1cmUtbGlicmFyeVxuICogQGF1dGhvciB5aW1pbmdoZUBnbWFpbC5jb21cbiAqL1xudmFyIEtleUNvZGUgPSB7XG4gIC8qKlxuICAgKiBNQUNfRU5URVJcbiAgICovXG4gIE1BQ19FTlRFUjogMyxcblxuICAvKipcbiAgICogQkFDS1NQQUNFXG4gICAqL1xuICBCQUNLU1BBQ0U6IDgsXG5cbiAgLyoqXG4gICAqIFRBQlxuICAgKi9cbiAgVEFCOiA5LFxuXG4gIC8qKlxuICAgKiBOVU1MT0NLIG9uIEZGL1NhZmFyaSBNYWNcbiAgICovXG4gIE5VTV9DRU5URVI6IDEyLFxuXG4gIC8qKlxuICAgKiBFTlRFUlxuICAgKi9cbiAgRU5URVI6IDEzLFxuXG4gIC8qKlxuICAgKiBTSElGVFxuICAgKi9cbiAgU0hJRlQ6IDE2LFxuXG4gIC8qKlxuICAgKiBDVFJMXG4gICAqL1xuICBDVFJMOiAxNyxcblxuICAvKipcbiAgICogQUxUXG4gICAqL1xuICBBTFQ6IDE4LFxuXG4gIC8qKlxuICAgKiBQQVVTRVxuICAgKi9cbiAgUEFVU0U6IDE5LFxuXG4gIC8qKlxuICAgKiBDQVBTX0xPQ0tcbiAgICovXG4gIENBUFNfTE9DSzogMjAsXG5cbiAgLyoqXG4gICAqIEVTQ1xuICAgKi9cbiAgRVNDOiAyNyxcblxuICAvKipcbiAgICogU1BBQ0VcbiAgICovXG4gIFNQQUNFOiAzMixcblxuICAvKipcbiAgICogUEFHRV9VUFxuICAgKi9cbiAgUEFHRV9VUDogMzMsXG5cbiAgLyoqXG4gICAqIFBBR0VfRE9XTlxuICAgKi9cbiAgUEFHRV9ET1dOOiAzNCxcblxuICAvKipcbiAgICogRU5EXG4gICAqL1xuICBFTkQ6IDM1LFxuXG4gIC8qKlxuICAgKiBIT01FXG4gICAqL1xuICBIT01FOiAzNixcblxuICAvKipcbiAgICogTEVGVFxuICAgKi9cbiAgTEVGVDogMzcsXG5cbiAgLyoqXG4gICAqIFVQXG4gICAqL1xuICBVUDogMzgsXG5cbiAgLyoqXG4gICAqIFJJR0hUXG4gICAqL1xuICBSSUdIVDogMzksXG5cbiAgLyoqXG4gICAqIERPV05cbiAgICovXG4gIERPV046IDQwLFxuXG4gIC8qKlxuICAgKiBQUklOVF9TQ1JFRU5cbiAgICovXG4gIFBSSU5UX1NDUkVFTjogNDQsXG5cbiAgLyoqXG4gICAqIElOU0VSVFxuICAgKi9cbiAgSU5TRVJUOiA0NSxcblxuICAvKipcbiAgICogREVMRVRFXG4gICAqL1xuICBERUxFVEU6IDQ2LFxuXG4gIC8qKlxuICAgKiBaRVJPXG4gICAqL1xuICBaRVJPOiA0OCxcblxuICAvKipcbiAgICogT05FXG4gICAqL1xuICBPTkU6IDQ5LFxuXG4gIC8qKlxuICAgKiBUV09cbiAgICovXG4gIFRXTzogNTAsXG5cbiAgLyoqXG4gICAqIFRIUkVFXG4gICAqL1xuICBUSFJFRTogNTEsXG5cbiAgLyoqXG4gICAqIEZPVVJcbiAgICovXG4gIEZPVVI6IDUyLFxuXG4gIC8qKlxuICAgKiBGSVZFXG4gICAqL1xuICBGSVZFOiA1MyxcblxuICAvKipcbiAgICogU0lYXG4gICAqL1xuICBTSVg6IDU0LFxuXG4gIC8qKlxuICAgKiBTRVZFTlxuICAgKi9cbiAgU0VWRU46IDU1LFxuXG4gIC8qKlxuICAgKiBFSUdIVFxuICAgKi9cbiAgRUlHSFQ6IDU2LFxuXG4gIC8qKlxuICAgKiBOSU5FXG4gICAqL1xuICBOSU5FOiA1NyxcblxuICAvKipcbiAgICogUVVFU1RJT05fTUFSS1xuICAgKi9cbiAgUVVFU1RJT05fTUFSSzogNjMsXG5cbiAgLyoqXG4gICAqIEFcbiAgICovXG4gIEE6IDY1LFxuXG4gIC8qKlxuICAgKiBCXG4gICAqL1xuICBCOiA2NixcblxuICAvKipcbiAgICogQ1xuICAgKi9cbiAgQzogNjcsXG5cbiAgLyoqXG4gICAqIERcbiAgICovXG4gIEQ6IDY4LFxuXG4gIC8qKlxuICAgKiBFXG4gICAqL1xuICBFOiA2OSxcblxuICAvKipcbiAgICogRlxuICAgKi9cbiAgRjogNzAsXG5cbiAgLyoqXG4gICAqIEdcbiAgICovXG4gIEc6IDcxLFxuXG4gIC8qKlxuICAgKiBIXG4gICAqL1xuICBIOiA3MixcblxuICAvKipcbiAgICogSVxuICAgKi9cbiAgSTogNzMsXG5cbiAgLyoqXG4gICAqIEpcbiAgICovXG4gIEo6IDc0LFxuXG4gIC8qKlxuICAgKiBLXG4gICAqL1xuICBLOiA3NSxcblxuICAvKipcbiAgICogTFxuICAgKi9cbiAgTDogNzYsXG5cbiAgLyoqXG4gICAqIE1cbiAgICovXG4gIE06IDc3LFxuXG4gIC8qKlxuICAgKiBOXG4gICAqL1xuICBOOiA3OCxcblxuICAvKipcbiAgICogT1xuICAgKi9cbiAgTzogNzksXG5cbiAgLyoqXG4gICAqIFBcbiAgICovXG4gIFA6IDgwLFxuXG4gIC8qKlxuICAgKiBRXG4gICAqL1xuICBROiA4MSxcblxuICAvKipcbiAgICogUlxuICAgKi9cbiAgUjogODIsXG5cbiAgLyoqXG4gICAqIFNcbiAgICovXG4gIFM6IDgzLFxuXG4gIC8qKlxuICAgKiBUXG4gICAqL1xuICBUOiA4NCxcblxuICAvKipcbiAgICogVVxuICAgKi9cbiAgVTogODUsXG5cbiAgLyoqXG4gICAqIFZcbiAgICovXG4gIFY6IDg2LFxuXG4gIC8qKlxuICAgKiBXXG4gICAqL1xuICBXOiA4NyxcblxuICAvKipcbiAgICogWFxuICAgKi9cbiAgWDogODgsXG5cbiAgLyoqXG4gICAqIFlcbiAgICovXG4gIFk6IDg5LFxuXG4gIC8qKlxuICAgKiBaXG4gICAqL1xuICBaOiA5MCxcblxuICAvKipcbiAgICogTUVUQVxuICAgKi9cbiAgTUVUQTogOTEsXG5cbiAgLyoqXG4gICAqIFdJTl9LRVlfUklHSFRcbiAgICovXG4gIFdJTl9LRVlfUklHSFQ6IDkyLFxuXG4gIC8qKlxuICAgKiBDT05URVhUX01FTlVcbiAgICovXG4gIENPTlRFWFRfTUVOVTogOTMsXG5cbiAgLyoqXG4gICAqIE5VTV9aRVJPXG4gICAqL1xuICBOVU1fWkVSTzogOTYsXG5cbiAgLyoqXG4gICAqIE5VTV9PTkVcbiAgICovXG4gIE5VTV9PTkU6IDk3LFxuXG4gIC8qKlxuICAgKiBOVU1fVFdPXG4gICAqL1xuICBOVU1fVFdPOiA5OCxcblxuICAvKipcbiAgICogTlVNX1RIUkVFXG4gICAqL1xuICBOVU1fVEhSRUU6IDk5LFxuXG4gIC8qKlxuICAgKiBOVU1fRk9VUlxuICAgKi9cbiAgTlVNX0ZPVVI6IDEwMCxcblxuICAvKipcbiAgICogTlVNX0ZJVkVcbiAgICovXG4gIE5VTV9GSVZFOiAxMDEsXG5cbiAgLyoqXG4gICAqIE5VTV9TSVhcbiAgICovXG4gIE5VTV9TSVg6IDEwMixcblxuICAvKipcbiAgICogTlVNX1NFVkVOXG4gICAqL1xuICBOVU1fU0VWRU46IDEwMyxcblxuICAvKipcbiAgICogTlVNX0VJR0hUXG4gICAqL1xuICBOVU1fRUlHSFQ6IDEwNCxcblxuICAvKipcbiAgICogTlVNX05JTkVcbiAgICovXG4gIE5VTV9OSU5FOiAxMDUsXG5cbiAgLyoqXG4gICAqIE5VTV9NVUxUSVBMWVxuICAgKi9cbiAgTlVNX01VTFRJUExZOiAxMDYsXG5cbiAgLyoqXG4gICAqIE5VTV9QTFVTXG4gICAqL1xuICBOVU1fUExVUzogMTA3LFxuXG4gIC8qKlxuICAgKiBOVU1fTUlOVVNcbiAgICovXG4gIE5VTV9NSU5VUzogMTA5LFxuXG4gIC8qKlxuICAgKiBOVU1fUEVSSU9EXG4gICAqL1xuICBOVU1fUEVSSU9EOiAxMTAsXG5cbiAgLyoqXG4gICAqIE5VTV9ESVZJU0lPTlxuICAgKi9cbiAgTlVNX0RJVklTSU9OOiAxMTEsXG5cbiAgLyoqXG4gICAqIEYxXG4gICAqL1xuICBGMTogMTEyLFxuXG4gIC8qKlxuICAgKiBGMlxuICAgKi9cbiAgRjI6IDExMyxcblxuICAvKipcbiAgICogRjNcbiAgICovXG4gIEYzOiAxMTQsXG5cbiAgLyoqXG4gICAqIEY0XG4gICAqL1xuICBGNDogMTE1LFxuXG4gIC8qKlxuICAgKiBGNVxuICAgKi9cbiAgRjU6IDExNixcblxuICAvKipcbiAgICogRjZcbiAgICovXG4gIEY2OiAxMTcsXG5cbiAgLyoqXG4gICAqIEY3XG4gICAqL1xuICBGNzogMTE4LFxuXG4gIC8qKlxuICAgKiBGOFxuICAgKi9cbiAgRjg6IDExOSxcblxuICAvKipcbiAgICogRjlcbiAgICovXG4gIEY5OiAxMjAsXG5cbiAgLyoqXG4gICAqIEYxMFxuICAgKi9cbiAgRjEwOiAxMjEsXG5cbiAgLyoqXG4gICAqIEYxMVxuICAgKi9cbiAgRjExOiAxMjIsXG5cbiAgLyoqXG4gICAqIEYxMlxuICAgKi9cbiAgRjEyOiAxMjMsXG5cbiAgLyoqXG4gICAqIE5VTUxPQ0tcbiAgICovXG4gIE5VTUxPQ0s6IDE0NCxcblxuICAvKipcbiAgICogU0VNSUNPTE9OXG4gICAqL1xuICBTRU1JQ09MT046IDE4NixcblxuICAvKipcbiAgICogREFTSFxuICAgKi9cbiAgREFTSDogMTg5LFxuXG4gIC8qKlxuICAgKiBFUVVBTFNcbiAgICovXG4gIEVRVUFMUzogMTg3LFxuXG4gIC8qKlxuICAgKiBDT01NQVxuICAgKi9cbiAgQ09NTUE6IDE4OCxcblxuICAvKipcbiAgICogUEVSSU9EXG4gICAqL1xuICBQRVJJT0Q6IDE5MCxcblxuICAvKipcbiAgICogU0xBU0hcbiAgICovXG4gIFNMQVNIOiAxOTEsXG5cbiAgLyoqXG4gICAqIEFQT1NUUk9QSEVcbiAgICovXG4gIEFQT1NUUk9QSEU6IDE5MixcblxuICAvKipcbiAgICogU0lOR0xFX1FVT1RFXG4gICAqL1xuICBTSU5HTEVfUVVPVEU6IDIyMixcblxuICAvKipcbiAgICogT1BFTl9TUVVBUkVfQlJBQ0tFVFxuICAgKi9cbiAgT1BFTl9TUVVBUkVfQlJBQ0tFVDogMjE5LFxuXG4gIC8qKlxuICAgKiBCQUNLU0xBU0hcbiAgICovXG4gIEJBQ0tTTEFTSDogMjIwLFxuXG4gIC8qKlxuICAgKiBDTE9TRV9TUVVBUkVfQlJBQ0tFVFxuICAgKi9cbiAgQ0xPU0VfU1FVQVJFX0JSQUNLRVQ6IDIyMSxcblxuICAvKipcbiAgICogV0lOX0tFWVxuICAgKi9cbiAgV0lOX0tFWTogMjI0LFxuXG4gIC8qKlxuICAgKiBNQUNfRkZfTUVUQVxuICAgKi9cbiAgTUFDX0ZGX01FVEE6IDIyNCxcblxuICAvKipcbiAgICogV0lOX0lNRVxuICAgKi9cbiAgV0lOX0lNRTogMjI5LFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT0gRnVuY3Rpb24gPT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIHdoZXRoZXIgdGV4dCBhbmQgbW9kaWZpZWQga2V5IGlzIGVudGVyZWQgYXQgdGhlIHNhbWUgdGltZS5cbiAgICovXG4gIGlzVGV4dE1vZGlmeWluZ0tleUV2ZW50OiBmdW5jdGlvbiBpc1RleHRNb2RpZnlpbmdLZXlFdmVudChlKSB7XG4gICAgdmFyIGtleUNvZGUgPSBlLmtleUNvZGU7XG5cbiAgICBpZiAoZS5hbHRLZXkgJiYgIWUuY3RybEtleSB8fCBlLm1ldGFLZXkgfHwgLy8gRnVuY3Rpb24ga2V5cyBkb24ndCBnZW5lcmF0ZSB0ZXh0XG4gICAga2V5Q29kZSA+PSBLZXlDb2RlLkYxICYmIGtleUNvZGUgPD0gS2V5Q29kZS5GMTIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIFRoZSBmb2xsb3dpbmcga2V5cyBhcmUgcXVpdGUgaGFybWxlc3MsIGV2ZW4gaW4gY29tYmluYXRpb24gd2l0aFxuICAgIC8vIENUUkwsIEFMVCBvciBTSElGVC5cblxuXG4gICAgc3dpdGNoIChrZXlDb2RlKSB7XG4gICAgICBjYXNlIEtleUNvZGUuQUxUOlxuICAgICAgY2FzZSBLZXlDb2RlLkNBUFNfTE9DSzpcbiAgICAgIGNhc2UgS2V5Q29kZS5DT05URVhUX01FTlU6XG4gICAgICBjYXNlIEtleUNvZGUuQ1RSTDpcbiAgICAgIGNhc2UgS2V5Q29kZS5ET1dOOlxuICAgICAgY2FzZSBLZXlDb2RlLkVORDpcbiAgICAgIGNhc2UgS2V5Q29kZS5FU0M6XG4gICAgICBjYXNlIEtleUNvZGUuSE9NRTpcbiAgICAgIGNhc2UgS2V5Q29kZS5JTlNFUlQ6XG4gICAgICBjYXNlIEtleUNvZGUuTEVGVDpcbiAgICAgIGNhc2UgS2V5Q29kZS5NQUNfRkZfTUVUQTpcbiAgICAgIGNhc2UgS2V5Q29kZS5NRVRBOlxuICAgICAgY2FzZSBLZXlDb2RlLk5VTUxPQ0s6XG4gICAgICBjYXNlIEtleUNvZGUuTlVNX0NFTlRFUjpcbiAgICAgIGNhc2UgS2V5Q29kZS5QQUdFX0RPV046XG4gICAgICBjYXNlIEtleUNvZGUuUEFHRV9VUDpcbiAgICAgIGNhc2UgS2V5Q29kZS5QQVVTRTpcbiAgICAgIGNhc2UgS2V5Q29kZS5QUklOVF9TQ1JFRU46XG4gICAgICBjYXNlIEtleUNvZGUuUklHSFQ6XG4gICAgICBjYXNlIEtleUNvZGUuU0hJRlQ6XG4gICAgICBjYXNlIEtleUNvZGUuVVA6XG4gICAgICBjYXNlIEtleUNvZGUuV0lOX0tFWTpcbiAgICAgIGNhc2UgS2V5Q29kZS5XSU5fS0VZX1JJR0hUOlxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogd2hldGhlciBjaGFyYWN0ZXIgaXMgZW50ZXJlZC5cbiAgICovXG4gIGlzQ2hhcmFjdGVyS2V5OiBmdW5jdGlvbiBpc0NoYXJhY3RlcktleShrZXlDb2RlKSB7XG4gICAgaWYgKGtleUNvZGUgPj0gS2V5Q29kZS5aRVJPICYmIGtleUNvZGUgPD0gS2V5Q29kZS5OSU5FKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoa2V5Q29kZSA+PSBLZXlDb2RlLk5VTV9aRVJPICYmIGtleUNvZGUgPD0gS2V5Q29kZS5OVU1fTVVMVElQTFkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChrZXlDb2RlID49IEtleUNvZGUuQSAmJiBrZXlDb2RlIDw9IEtleUNvZGUuWikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSAvLyBTYWZhcmkgc2VuZHMgemVybyBrZXkgY29kZSBmb3Igbm9uLWxhdGluIGNoYXJhY3RlcnMuXG5cblxuICAgIGlmICh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdXZWJLaXQnKSAhPT0gLTEgJiYga2V5Q29kZSA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgc3dpdGNoIChrZXlDb2RlKSB7XG4gICAgICBjYXNlIEtleUNvZGUuU1BBQ0U6XG4gICAgICBjYXNlIEtleUNvZGUuUVVFU1RJT05fTUFSSzpcbiAgICAgIGNhc2UgS2V5Q29kZS5OVU1fUExVUzpcbiAgICAgIGNhc2UgS2V5Q29kZS5OVU1fTUlOVVM6XG4gICAgICBjYXNlIEtleUNvZGUuTlVNX1BFUklPRDpcbiAgICAgIGNhc2UgS2V5Q29kZS5OVU1fRElWSVNJT046XG4gICAgICBjYXNlIEtleUNvZGUuU0VNSUNPTE9OOlxuICAgICAgY2FzZSBLZXlDb2RlLkRBU0g6XG4gICAgICBjYXNlIEtleUNvZGUuRVFVQUxTOlxuICAgICAgY2FzZSBLZXlDb2RlLkNPTU1BOlxuICAgICAgY2FzZSBLZXlDb2RlLlBFUklPRDpcbiAgICAgIGNhc2UgS2V5Q29kZS5TTEFTSDpcbiAgICAgIGNhc2UgS2V5Q29kZS5BUE9TVFJPUEhFOlxuICAgICAgY2FzZSBLZXlDb2RlLlNJTkdMRV9RVU9URTpcbiAgICAgIGNhc2UgS2V5Q29kZS5PUEVOX1NRVUFSRV9CUkFDS0VUOlxuICAgICAgY2FzZSBLZXlDb2RlLkJBQ0tTTEFTSDpcbiAgICAgIGNhc2UgS2V5Q29kZS5DTE9TRV9TUVVBUkVfQlJBQ0tFVDpcbiAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCBLZXlDb2RlOyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG52YXIgX19yZXN0ID0gdGhpcyAmJiB0aGlzLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG4gICAgfWlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCkgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgfXJldHVybiB0O1xufTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxudmFyIExhenlSZW5kZXJCb3ggPSBmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICAgIF9pbmhlcml0cyhMYXp5UmVuZGVyQm94LCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICAgIGZ1bmN0aW9uIExhenlSZW5kZXJCb3goKSB7XG4gICAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMYXp5UmVuZGVyQm94KTtcblxuICAgICAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX1JlYWN0JENvbXBvbmVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgICB9XG5cbiAgICBMYXp5UmVuZGVyQm94LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmdW5jdGlvbiBzaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzKSB7XG4gICAgICAgIGlmIChuZXh0UHJvcHMuZm9yY2VSZW5kZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhIW5leHRQcm9wcy5oaWRkZW5DbGFzc05hbWUgfHwgISFuZXh0UHJvcHMudmlzaWJsZTtcbiAgICB9O1xuXG4gICAgTGF6eVJlbmRlckJveC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLnByb3BzLFxuICAgICAgICAgICAgY2xhc3NOYW1lID0gX2EuY2xhc3NOYW1lLFxuICAgICAgICAgICAgaGlkZGVuQ2xhc3NOYW1lID0gX2EuaGlkZGVuQ2xhc3NOYW1lLFxuICAgICAgICAgICAgdmlzaWJsZSA9IF9hLnZpc2libGUsXG4gICAgICAgICAgICBmb3JjZVJlbmRlciA9IF9hLmZvcmNlUmVuZGVyLFxuICAgICAgICAgICAgcmVzdFByb3BzID0gX19yZXN0KF9hLCBbXCJjbGFzc05hbWVcIiwgXCJoaWRkZW5DbGFzc05hbWVcIiwgXCJ2aXNpYmxlXCIsIFwiZm9yY2VSZW5kZXJcIl0pO1xuICAgICAgICB2YXIgdXNlQ2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgICBpZiAoISFoaWRkZW5DbGFzc05hbWUgJiYgIXZpc2libGUpIHtcbiAgICAgICAgICAgIHVzZUNsYXNzTmFtZSArPSBcIiBcIiArIGhpZGRlbkNsYXNzTmFtZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgcmVzdFByb3BzLCB7IGNsYXNzTmFtZTogdXNlQ2xhc3NOYW1lIH0pKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIExhenlSZW5kZXJCb3g7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cbmV4cG9ydCBkZWZhdWx0IExhenlSZW5kZXJCb3g7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9leHRlbmRzJztcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJztcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybic7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9pbmhlcml0cyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IEtleUNvZGUgZnJvbSAncmMtdXRpbC9lcy9LZXlDb2RlJztcbmltcG9ydCBjb250YWlucyBmcm9tICdyYy11dGlsL2VzL0RvbS9jb250YWlucyc7XG5pbXBvcnQgQW5pbWF0ZSBmcm9tICdyYy1hbmltYXRlJztcbmltcG9ydCBMYXp5UmVuZGVyQm94IGZyb20gJy4vTGF6eVJlbmRlckJveCc7XG52YXIgdXVpZCA9IDA7XG4vKiBlc2xpbnQgcmVhY3Qvbm8taXMtbW91bnRlZDowICovXG5mdW5jdGlvbiBnZXRTY3JvbGwodywgdG9wKSB7XG4gICAgdmFyIHJldCA9IHdbJ3BhZ2UnICsgKHRvcCA/ICdZJyA6ICdYJykgKyAnT2Zmc2V0J107XG4gICAgdmFyIG1ldGhvZCA9ICdzY3JvbGwnICsgKHRvcCA/ICdUb3AnIDogJ0xlZnQnKTtcbiAgICBpZiAodHlwZW9mIHJldCAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdmFyIGQgPSB3LmRvY3VtZW50O1xuICAgICAgICByZXQgPSBkLmRvY3VtZW50RWxlbWVudFttZXRob2RdO1xuICAgICAgICBpZiAodHlwZW9mIHJldCAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHJldCA9IGQuYm9keVttZXRob2RdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBzZXRUcmFuc2Zvcm1PcmlnaW4obm9kZSwgdmFsdWUpIHtcbiAgICB2YXIgc3R5bGUgPSBub2RlLnN0eWxlO1xuICAgIFsnV2Via2l0JywgJ01veicsICdNcycsICdtcyddLmZvckVhY2goZnVuY3Rpb24gKHByZWZpeCkge1xuICAgICAgICBzdHlsZVtwcmVmaXggKyAnVHJhbnNmb3JtT3JpZ2luJ10gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICBzdHlsZVsndHJhbnNmb3JtT3JpZ2luJ10gPSB2YWx1ZTtcbn1cbmZ1bmN0aW9uIG9mZnNldChlbCkge1xuICAgIHZhciByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdmFyIHBvcyA9IHtcbiAgICAgICAgbGVmdDogcmVjdC5sZWZ0LFxuICAgICAgICB0b3A6IHJlY3QudG9wXG4gICAgfTtcbiAgICB2YXIgZG9jID0gZWwub3duZXJEb2N1bWVudDtcbiAgICB2YXIgdyA9IGRvYy5kZWZhdWx0VmlldyB8fCBkb2MucGFyZW50V2luZG93O1xuICAgIHBvcy5sZWZ0ICs9IGdldFNjcm9sbCh3KTtcbiAgICBwb3MudG9wICs9IGdldFNjcm9sbCh3LCB0cnVlKTtcbiAgICByZXR1cm4gcG9zO1xufVxuXG52YXIgRGlhbG9nID0gZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgICBfaW5oZXJpdHMoRGlhbG9nLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICAgIGZ1bmN0aW9uIERpYWxvZyhwcm9wcykge1xuICAgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGlhbG9nKTtcblxuICAgICAgICB2YXIgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfUmVhY3QkQ29tcG9uZW50LmNhbGwodGhpcywgcHJvcHMpKTtcblxuICAgICAgICBfdGhpcy5pblRyYW5zaXRpb24gPSBmYWxzZTtcbiAgICAgICAgX3RoaXMub25BbmltYXRlTGVhdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYWZ0ZXJDbG9zZSA9IF90aGlzLnByb3BzLmFmdGVyQ2xvc2U7XG4gICAgICAgICAgICAvLyBuZWVkIGRlbW8/XG4gICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcmVhY3QtY29tcG9uZW50L2RpYWxvZy9wdWxsLzI4XG5cbiAgICAgICAgICAgIGlmIChfdGhpcy53cmFwKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMud3JhcC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX3RoaXMuaW5UcmFuc2l0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICBfdGhpcy5zd2l0Y2hTY3JvbGxpbmdFZmZlY3QoKTtcbiAgICAgICAgICAgIGlmIChhZnRlckNsb3NlKSB7XG4gICAgICAgICAgICAgICAgYWZ0ZXJDbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5vbkRpYWxvZ01vdXNlRG93biA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLmRpYWxvZ01vdXNlRG93biA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLm9uTWFza01vdXNlVXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoX3RoaXMuZGlhbG9nTW91c2VEb3duKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMudGltZW91dElkID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmRpYWxvZ01vdXNlRG93biA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5vbk1hc2tDbGljayA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAvLyBhbmRyb2lkIHRyaWdnZXIgY2xpY2sgb24gb3BlbiAoZmFzdGNsaWNrPz8pXG4gICAgICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIF90aGlzLm9wZW5UaW1lIDwgMzAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUudGFyZ2V0ID09PSBlLmN1cnJlbnRUYXJnZXQgJiYgIV90aGlzLmRpYWxvZ01vdXNlRG93bikge1xuICAgICAgICAgICAgICAgIF90aGlzLmNsb3NlKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5vbktleURvd24gPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIHByb3BzID0gX3RoaXMucHJvcHM7XG4gICAgICAgICAgICBpZiAocHJvcHMua2V5Ym9hcmQgJiYgZS5rZXlDb2RlID09PSBLZXlDb2RlLkVTQykge1xuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgX3RoaXMuY2xvc2UoZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8ga2VlcCBmb2N1cyBpbnNpZGUgZGlhbG9nXG4gICAgICAgICAgICBpZiAocHJvcHMudmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIGlmIChlLmtleUNvZGUgPT09IEtleUNvZGUuVEFCKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhY3RpdmVFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbnRpbmVsU3RhcnQgPSBfdGhpcy5zZW50aW5lbFN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5zaGlmdEtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQgPT09IHNlbnRpbmVsU3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5zZW50aW5lbEVuZC5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGl2ZUVsZW1lbnQgPT09IF90aGlzLnNlbnRpbmVsRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZW50aW5lbFN0YXJ0LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLmdldERpYWxvZ0VsZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcHJvcHMgPSBfdGhpcy5wcm9wcztcbiAgICAgICAgICAgIHZhciBjbG9zYWJsZSA9IHByb3BzLmNsb3NhYmxlO1xuICAgICAgICAgICAgdmFyIHByZWZpeENscyA9IHByb3BzLnByZWZpeENscztcbiAgICAgICAgICAgIHZhciBkZXN0ID0ge307XG4gICAgICAgICAgICBpZiAocHJvcHMud2lkdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGRlc3Qud2lkdGggPSBwcm9wcy53aWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcm9wcy5oZWlnaHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGRlc3QuaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGZvb3RlciA9IHZvaWQgMDtcbiAgICAgICAgICAgIGlmIChwcm9wcy5mb290ZXIpIHtcbiAgICAgICAgICAgICAgICBmb290ZXIgPSBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBwcmVmaXhDbHMgKyAnLWZvb3RlcicsIHJlZjogX3RoaXMuc2F2ZVJlZignZm9vdGVyJykgfSwgcHJvcHMuZm9vdGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBoZWFkZXIgPSB2b2lkIDA7XG4gICAgICAgICAgICBpZiAocHJvcHMudGl0bGUpIHtcbiAgICAgICAgICAgICAgICBoZWFkZXIgPSBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBwcmVmaXhDbHMgKyAnLWhlYWRlcicsIHJlZjogX3RoaXMuc2F2ZVJlZignaGVhZGVyJykgfSwgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogcHJlZml4Q2xzICsgJy10aXRsZScsIGlkOiBfdGhpcy50aXRsZUlkIH0sIHByb3BzLnRpdGxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgY2xvc2VyID0gdm9pZCAwO1xuICAgICAgICAgICAgaWYgKGNsb3NhYmxlKSB7XG4gICAgICAgICAgICAgICAgY2xvc2VyID0gUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCB7IHR5cGU6IFwiYnV0dG9uXCIsIG9uQ2xpY2s6IF90aGlzLmNsb3NlLCBcImFyaWEtbGFiZWxcIjogXCJDbG9zZVwiLCBjbGFzc05hbWU6IHByZWZpeENscyArICctY2xvc2UnIH0sIHByb3BzLmNsb3NlSWNvbiB8fCBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogcHJlZml4Q2xzICsgJy1jbG9zZS14JyB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgc3R5bGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMuc3R5bGUsIGRlc3QpO1xuICAgICAgICAgICAgdmFyIHNlbnRpbmVsU3R5bGUgPSB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAsIG92ZXJmbG93OiAnaGlkZGVuJywgb3V0bGluZTogJ25vbmUnIH07XG4gICAgICAgICAgICB2YXIgdHJhbnNpdGlvbk5hbWUgPSBfdGhpcy5nZXRUcmFuc2l0aW9uTmFtZSgpO1xuICAgICAgICAgICAgdmFyIGRpYWxvZ0VsZW1lbnQgPSBSZWFjdC5jcmVhdGVFbGVtZW50KExhenlSZW5kZXJCb3gsIHsga2V5OiBcImRpYWxvZy1lbGVtZW50XCIsIHJvbGU6IFwiZG9jdW1lbnRcIiwgcmVmOiBfdGhpcy5zYXZlUmVmKCdkaWFsb2cnKSwgc3R5bGU6IHN0eWxlLCBjbGFzc05hbWU6IHByZWZpeENscyArICcgJyArIChwcm9wcy5jbGFzc05hbWUgfHwgJycpLCB2aXNpYmxlOiBwcm9wcy52aXNpYmxlLCBmb3JjZVJlbmRlcjogcHJvcHMuZm9yY2VSZW5kZXIsIG9uTW91c2VEb3duOiBfdGhpcy5vbkRpYWxvZ01vdXNlRG93biB9LCBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgdGFiSW5kZXg6IDAsIHJlZjogX3RoaXMuc2F2ZVJlZignc2VudGluZWxTdGFydCcpLCBzdHlsZTogc2VudGluZWxTdHlsZSwgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIiB9KSwgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogcHJlZml4Q2xzICsgJy1jb250ZW50JyB9LCBjbG9zZXIsIGhlYWRlciwgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7IGNsYXNzTmFtZTogcHJlZml4Q2xzICsgJy1ib2R5Jywgc3R5bGU6IHByb3BzLmJvZHlTdHlsZSwgcmVmOiBfdGhpcy5zYXZlUmVmKCdib2R5JykgfSwgcHJvcHMuYm9keVByb3BzKSwgcHJvcHMuY2hpbGRyZW4pLCBmb290ZXIpLCBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgdGFiSW5kZXg6IDAsIHJlZjogX3RoaXMuc2F2ZVJlZignc2VudGluZWxFbmQnKSwgc3R5bGU6IHNlbnRpbmVsU3R5bGUsIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIgfSkpO1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQW5pbWF0ZSwgeyBrZXk6IFwiZGlhbG9nXCIsIHNob3dQcm9wOiBcInZpc2libGVcIiwgb25MZWF2ZTogX3RoaXMub25BbmltYXRlTGVhdmUsIHRyYW5zaXRpb25OYW1lOiB0cmFuc2l0aW9uTmFtZSwgY29tcG9uZW50OiBcIlwiLCB0cmFuc2l0aW9uQXBwZWFyOiB0cnVlIH0sIHByb3BzLnZpc2libGUgfHwgIXByb3BzLmRlc3Ryb3lPbkNsb3NlID8gZGlhbG9nRWxlbWVudCA6IG51bGwpO1xuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5nZXRaSW5kZXhTdHlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdHlsZSA9IHt9O1xuICAgICAgICAgICAgdmFyIHByb3BzID0gX3RoaXMucHJvcHM7XG4gICAgICAgICAgICBpZiAocHJvcHMuekluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzdHlsZS56SW5kZXggPSBwcm9wcy56SW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLmdldFdyYXBTdHlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgX3RoaXMuZ2V0WkluZGV4U3R5bGUoKSwgX3RoaXMucHJvcHMud3JhcFN0eWxlKTtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuZ2V0TWFza1N0eWxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBfdGhpcy5nZXRaSW5kZXhTdHlsZSgpLCBfdGhpcy5wcm9wcy5tYXNrU3R5bGUpO1xuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5nZXRNYXNrRWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBwcm9wcyA9IF90aGlzLnByb3BzO1xuICAgICAgICAgICAgdmFyIG1hc2tFbGVtZW50ID0gdm9pZCAwO1xuICAgICAgICAgICAgaWYgKHByb3BzLm1hc2spIHtcbiAgICAgICAgICAgICAgICB2YXIgbWFza1RyYW5zaXRpb24gPSBfdGhpcy5nZXRNYXNrVHJhbnNpdGlvbk5hbWUoKTtcbiAgICAgICAgICAgICAgICBtYXNrRWxlbWVudCA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF6eVJlbmRlckJveCwgX2V4dGVuZHMoeyBzdHlsZTogX3RoaXMuZ2V0TWFza1N0eWxlKCksIGtleTogXCJtYXNrXCIsIGNsYXNzTmFtZTogcHJvcHMucHJlZml4Q2xzICsgJy1tYXNrJywgaGlkZGVuQ2xhc3NOYW1lOiBwcm9wcy5wcmVmaXhDbHMgKyAnLW1hc2staGlkZGVuJywgdmlzaWJsZTogcHJvcHMudmlzaWJsZSB9LCBwcm9wcy5tYXNrUHJvcHMpKTtcbiAgICAgICAgICAgICAgICBpZiAobWFza1RyYW5zaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgbWFza0VsZW1lbnQgPSBSZWFjdC5jcmVhdGVFbGVtZW50KEFuaW1hdGUsIHsga2V5OiBcIm1hc2tcIiwgc2hvd1Byb3A6IFwidmlzaWJsZVwiLCB0cmFuc2l0aW9uQXBwZWFyOiB0cnVlLCBjb21wb25lbnQ6IFwiXCIsIHRyYW5zaXRpb25OYW1lOiBtYXNrVHJhbnNpdGlvbiB9LCBtYXNrRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1hc2tFbGVtZW50O1xuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5nZXRNYXNrVHJhbnNpdGlvbk5hbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcHJvcHMgPSBfdGhpcy5wcm9wcztcbiAgICAgICAgICAgIHZhciB0cmFuc2l0aW9uTmFtZSA9IHByb3BzLm1hc2tUcmFuc2l0aW9uTmFtZTtcbiAgICAgICAgICAgIHZhciBhbmltYXRpb24gPSBwcm9wcy5tYXNrQW5pbWF0aW9uO1xuICAgICAgICAgICAgaWYgKCF0cmFuc2l0aW9uTmFtZSAmJiBhbmltYXRpb24pIHtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uTmFtZSA9IHByb3BzLnByZWZpeENscyArICctJyArIGFuaW1hdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cmFuc2l0aW9uTmFtZTtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuZ2V0VHJhbnNpdGlvbk5hbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcHJvcHMgPSBfdGhpcy5wcm9wcztcbiAgICAgICAgICAgIHZhciB0cmFuc2l0aW9uTmFtZSA9IHByb3BzLnRyYW5zaXRpb25OYW1lO1xuICAgICAgICAgICAgdmFyIGFuaW1hdGlvbiA9IHByb3BzLmFuaW1hdGlvbjtcbiAgICAgICAgICAgIGlmICghdHJhbnNpdGlvbk5hbWUgJiYgYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbk5hbWUgPSBwcm9wcy5wcmVmaXhDbHMgKyAnLScgKyBhbmltYXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNpdGlvbk5hbWU7XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLmNsb3NlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBvbkNsb3NlID0gX3RoaXMucHJvcHMub25DbG9zZTtcblxuICAgICAgICAgICAgaWYgKG9uQ2xvc2UpIHtcbiAgICAgICAgICAgICAgICBvbkNsb3NlKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5zYXZlUmVmID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgICAgIF90aGlzW25hbWVdID0gbm9kZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLnRpdGxlSWQgPSAncmNEaWFsb2dUaXRsZScgKyB1dWlkKys7XG4gICAgICAgIF90aGlzLnN3aXRjaFNjcm9sbGluZ0VmZmVjdCA9IHByb3BzLnN3aXRjaFNjcm9sbGluZ0VmZmVjdCB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cblxuICAgIERpYWxvZy5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnREaWRVcGRhdGUoe30pO1xuICAgICAgICAvLyBpZiBmb3JjZVJlbmRlciBpcyB0cnVlLCBzZXQgZWxlbWVudCBzdHlsZSBkaXNwbGF5IHRvIGJlIG5vbmU7XG4gICAgICAgIGlmICgodGhpcy5wcm9wcy5mb3JjZVJlbmRlciB8fCB0aGlzLnByb3BzLmdldENvbnRhaW5lciA9PT0gZmFsc2UgJiYgIXRoaXMucHJvcHMudmlzaWJsZSkgJiYgdGhpcy53cmFwKSB7XG4gICAgICAgICAgICB0aGlzLndyYXAuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBEaWFsb2cucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZSA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICAgICAgdmFyIF9wcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgICB2aXNpYmxlID0gX3Byb3BzLnZpc2libGUsXG4gICAgICAgICAgICBtYXNrID0gX3Byb3BzLm1hc2ssXG4gICAgICAgICAgICBmb2N1c1RyaWdnZXJBZnRlckNsb3NlID0gX3Byb3BzLmZvY3VzVHJpZ2dlckFmdGVyQ2xvc2U7XG5cbiAgICAgICAgdmFyIG1vdXNlUG9zaXRpb24gPSB0aGlzLnByb3BzLm1vdXNlUG9zaXRpb247XG4gICAgICAgIGlmICh2aXNpYmxlKSB7XG4gICAgICAgICAgICAvLyBmaXJzdCBzaG93XG4gICAgICAgICAgICBpZiAoIXByZXZQcm9wcy52aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuVGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zd2l0Y2hTY3JvbGxpbmdFZmZlY3QoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRyeUZvY3VzKCk7XG4gICAgICAgICAgICAgICAgdmFyIGRpYWxvZ05vZGUgPSBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzLmRpYWxvZyk7XG4gICAgICAgICAgICAgICAgaWYgKG1vdXNlUG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVsT2Zmc2V0ID0gb2Zmc2V0KGRpYWxvZ05vZGUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2Zvcm1PcmlnaW4oZGlhbG9nTm9kZSwgbW91c2VQb3NpdGlvbi54IC0gZWxPZmZzZXQubGVmdCArICdweCAnICsgKG1vdXNlUG9zaXRpb24ueSAtIGVsT2Zmc2V0LnRvcCkgKyAncHgnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2Zvcm1PcmlnaW4oZGlhbG9nTm9kZSwgJycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChwcmV2UHJvcHMudmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5pblRyYW5zaXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgaWYgKG1hc2sgJiYgdGhpcy5sYXN0T3V0U2lkZUZvY3VzTm9kZSAmJiBmb2N1c1RyaWdnZXJBZnRlckNsb3NlKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0T3V0U2lkZUZvY3VzTm9kZS5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0T3V0U2lkZUZvY3VzTm9kZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMubGFzdE91dFNpZGVGb2N1c05vZGUgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIERpYWxvZy5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgICAgdmFyIF9wcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICAgICAgdmlzaWJsZSA9IF9wcm9wczIudmlzaWJsZSxcbiAgICAgICAgICAgIGdldE9wZW5Db3VudCA9IF9wcm9wczIuZ2V0T3BlbkNvdW50O1xuXG4gICAgICAgIGlmICgodmlzaWJsZSB8fCB0aGlzLmluVHJhbnNpdGlvbikgJiYgIWdldE9wZW5Db3VudCgpKSB7XG4gICAgICAgICAgICB0aGlzLnN3aXRjaFNjcm9sbGluZ0VmZmVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJZCk7XG4gICAgfTtcblxuICAgIERpYWxvZy5wcm90b3R5cGUudHJ5Rm9jdXMgPSBmdW5jdGlvbiB0cnlGb2N1cygpIHtcbiAgICAgICAgaWYgKCFjb250YWlucyh0aGlzLndyYXAsIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RPdXRTaWRlRm9jdXNOb2RlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMuc2VudGluZWxTdGFydC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIERpYWxvZy5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuICAgICAgICB2YXIgcHJlZml4Q2xzID0gcHJvcHMucHJlZml4Q2xzLFxuICAgICAgICAgICAgbWFza0Nsb3NhYmxlID0gcHJvcHMubWFza0Nsb3NhYmxlO1xuXG4gICAgICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0V3JhcFN0eWxlKCk7XG4gICAgICAgIC8vIGNsZWFyIGhpZGUgZGlzcGxheVxuICAgICAgICAvLyBhbmQgb25seSBzZXQgZGlzcGxheSBhZnRlciBhc3luYyBhbmltLCBub3QgaGVyZSBmb3IgaGlkZVxuICAgICAgICBpZiAocHJvcHMudmlzaWJsZSkge1xuICAgICAgICAgICAgc3R5bGUuZGlzcGxheSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHByZWZpeENscyArICctcm9vdCcgfSwgdGhpcy5nZXRNYXNrRWxlbWVudCgpLCBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHsgdGFiSW5kZXg6IC0xLCBvbktleURvd246IHRoaXMub25LZXlEb3duLCBjbGFzc05hbWU6IHByZWZpeENscyArICctd3JhcCAnICsgKHByb3BzLndyYXBDbGFzc05hbWUgfHwgJycpLCByZWY6IHRoaXMuc2F2ZVJlZignd3JhcCcpLCBvbkNsaWNrOiBtYXNrQ2xvc2FibGUgPyB0aGlzLm9uTWFza0NsaWNrIDogbnVsbCwgb25Nb3VzZVVwOiBtYXNrQ2xvc2FibGUgPyB0aGlzLm9uTWFza01vdXNlVXAgOiBudWxsLCByb2xlOiBcImRpYWxvZ1wiLCBcImFyaWEtbGFiZWxsZWRieVwiOiBwcm9wcy50aXRsZSA/IHRoaXMudGl0bGVJZCA6IG51bGwsIHN0eWxlOiBzdHlsZSB9LCBwcm9wcy53cmFwUHJvcHMpLCB0aGlzLmdldERpYWxvZ0VsZW1lbnQoKSkpO1xuICAgIH07XG5cbiAgICByZXR1cm4gRGlhbG9nO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnQgZGVmYXVsdCBEaWFsb2c7XG5cbkRpYWxvZy5kZWZhdWx0UHJvcHMgPSB7XG4gICAgY2xhc3NOYW1lOiAnJyxcbiAgICBtYXNrOiB0cnVlLFxuICAgIHZpc2libGU6IGZhbHNlLFxuICAgIGtleWJvYXJkOiB0cnVlLFxuICAgIGNsb3NhYmxlOiB0cnVlLFxuICAgIG1hc2tDbG9zYWJsZTogdHJ1ZSxcbiAgICBkZXN0cm95T25DbG9zZTogZmFsc2UsXG4gICAgcHJlZml4Q2xzOiAncmMtZGlhbG9nJyxcbiAgICBmb2N1c1RyaWdnZXJBZnRlckNsb3NlOiB0cnVlXG59OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnRhaW5zKHJvb3QsIG4pIHtcbiAgdmFyIG5vZGUgPSBuO1xuXG4gIHdoaWxlIChub2RlKSB7XG4gICAgaWYgKG5vZGUgPT09IHJvb3QpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59IiwiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG52YXIgQ29udGFpbmVyUmVuZGVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhDb250YWluZXJSZW5kZXIsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoQ29udGFpbmVyUmVuZGVyKTtcblxuICBmdW5jdGlvbiBDb250YWluZXJSZW5kZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENvbnRhaW5lclJlbmRlcik7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX3RoaXMucmVtb3ZlQ29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKF90aGlzLmNvbnRhaW5lcikge1xuICAgICAgICBSZWFjdERPTS51bm1vdW50Q29tcG9uZW50QXROb2RlKF90aGlzLmNvbnRhaW5lcik7XG5cbiAgICAgICAgX3RoaXMuY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoX3RoaXMuY29udGFpbmVyKTtcblxuICAgICAgICBfdGhpcy5jb250YWluZXIgPSBudWxsO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5yZW5kZXJDb21wb25lbnQgPSBmdW5jdGlvbiAocHJvcHMsIHJlYWR5KSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICB2aXNpYmxlID0gX3RoaXMkcHJvcHMudmlzaWJsZSxcbiAgICAgICAgICBnZXRDb21wb25lbnQgPSBfdGhpcyRwcm9wcy5nZXRDb21wb25lbnQsXG4gICAgICAgICAgZm9yY2VSZW5kZXIgPSBfdGhpcyRwcm9wcy5mb3JjZVJlbmRlcixcbiAgICAgICAgICBnZXRDb250YWluZXIgPSBfdGhpcyRwcm9wcy5nZXRDb250YWluZXIsXG4gICAgICAgICAgcGFyZW50ID0gX3RoaXMkcHJvcHMucGFyZW50O1xuXG4gICAgICBpZiAodmlzaWJsZSB8fCBwYXJlbnQuX2NvbXBvbmVudCB8fCBmb3JjZVJlbmRlcikge1xuICAgICAgICBpZiAoIV90aGlzLmNvbnRhaW5lcikge1xuICAgICAgICAgIF90aGlzLmNvbnRhaW5lciA9IGdldENvbnRhaW5lcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgUmVhY3RET00udW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXIocGFyZW50LCBnZXRDb21wb25lbnQocHJvcHMpLCBfdGhpcy5jb250YWluZXIsIGZ1bmN0aW9uIGNhbGxiYWNrKCkge1xuICAgICAgICAgIGlmIChyZWFkeSkge1xuICAgICAgICAgICAgcmVhZHkuY2FsbCh0aGlzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQ29udGFpbmVyUmVuZGVyLCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLmF1dG9Nb3VudCkge1xuICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudCgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b01vdW50KSB7XG4gICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50KCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0Rlc3Ryb3kpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVDb250YWluZXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuKHtcbiAgICAgICAgcmVuZGVyQ29tcG9uZW50OiB0aGlzLnJlbmRlckNvbXBvbmVudCxcbiAgICAgICAgcmVtb3ZlQ29udGFpbmVyOiB0aGlzLnJlbW92ZUNvbnRhaW5lclxuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENvbnRhaW5lclJlbmRlcjtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuQ29udGFpbmVyUmVuZGVyLnByb3BUeXBlcyA9IHtcbiAgYXV0b01vdW50OiBQcm9wVHlwZXMuYm9vbCxcbiAgYXV0b0Rlc3Ryb3k6IFByb3BUeXBlcy5ib29sLFxuICB2aXNpYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgZm9yY2VSZW5kZXI6IFByb3BUeXBlcy5ib29sLFxuICBwYXJlbnQ6IFByb3BUeXBlcy5hbnksXG4gIGdldENvbXBvbmVudDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZ2V0Q29udGFpbmVyOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcbkNvbnRhaW5lclJlbmRlci5kZWZhdWx0UHJvcHMgPSB7XG4gIGF1dG9Nb3VudDogdHJ1ZSxcbiAgYXV0b0Rlc3Ryb3k6IHRydWUsXG4gIGZvcmNlUmVuZGVyOiBmYWxzZVxufTtcbmV4cG9ydCB7IENvbnRhaW5lclJlbmRlciBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG52YXIgUG9ydGFsID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhQb3J0YWwsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoUG9ydGFsKTtcblxuICBmdW5jdGlvbiBQb3J0YWwoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBvcnRhbCk7XG5cbiAgICByZXR1cm4gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUG9ydGFsLCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMuY3JlYXRlQ29udGFpbmVyKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICB2YXIgZGlkVXBkYXRlID0gdGhpcy5wcm9wcy5kaWRVcGRhdGU7XG5cbiAgICAgIGlmIChkaWRVcGRhdGUpIHtcbiAgICAgICAgZGlkVXBkYXRlKHByZXZQcm9wcyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdGhpcy5yZW1vdmVDb250YWluZXIoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlQ29udGFpbmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUNvbnRhaW5lcigpIHtcbiAgICAgIHRoaXMuX2NvbnRhaW5lciA9IHRoaXMucHJvcHMuZ2V0Q29udGFpbmVyKCk7XG4gICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZUNvbnRhaW5lclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW1vdmVDb250YWluZXIoKSB7XG4gICAgICBpZiAodGhpcy5fY29udGFpbmVyKSB7XG4gICAgICAgIHRoaXMuX2NvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2NvbnRhaW5lcik7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICBpZiAodGhpcy5fY29udGFpbmVyKSB7XG4gICAgICAgIHJldHVybiBSZWFjdERPTS5jcmVhdGVQb3J0YWwodGhpcy5wcm9wcy5jaGlsZHJlbiwgdGhpcy5fY29udGFpbmVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFBvcnRhbDtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuUG9ydGFsLnByb3BUeXBlcyA9IHtcbiAgZ2V0Q29udGFpbmVyOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgZGlkVXBkYXRlOiBQcm9wVHlwZXMuZnVuY1xufTtcbmV4cG9ydCB7IFBvcnRhbCBhcyBkZWZhdWx0IH07IiwidmFyIGNhY2hlZDtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNjcm9sbEJhclNpemUoZnJlc2gpIHtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChmcmVzaCB8fCBjYWNoZWQgPT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBpbm5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGlubmVyLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIGlubmVyLnN0eWxlLmhlaWdodCA9ICcyMDBweCc7XG4gICAgdmFyIG91dGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdmFyIG91dGVyU3R5bGUgPSBvdXRlci5zdHlsZTtcbiAgICBvdXRlclN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBvdXRlclN0eWxlLnRvcCA9IDA7XG4gICAgb3V0ZXJTdHlsZS5sZWZ0ID0gMDtcbiAgICBvdXRlclN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgb3V0ZXJTdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgb3V0ZXJTdHlsZS53aWR0aCA9ICcyMDBweCc7XG4gICAgb3V0ZXJTdHlsZS5oZWlnaHQgPSAnMTUwcHgnO1xuICAgIG91dGVyU3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICBvdXRlci5hcHBlbmRDaGlsZChpbm5lcik7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdXRlcik7XG4gICAgdmFyIHdpZHRoQ29udGFpbmVkID0gaW5uZXIub2Zmc2V0V2lkdGg7XG4gICAgb3V0ZXIuc3R5bGUub3ZlcmZsb3cgPSAnc2Nyb2xsJztcbiAgICB2YXIgd2lkdGhTY3JvbGwgPSBpbm5lci5vZmZzZXRXaWR0aDtcblxuICAgIGlmICh3aWR0aENvbnRhaW5lZCA9PT0gd2lkdGhTY3JvbGwpIHtcbiAgICAgIHdpZHRoU2Nyb2xsID0gb3V0ZXIuY2xpZW50V2lkdGg7XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChvdXRlcik7XG4gICAgY2FjaGVkID0gd2lkdGhDb250YWluZWQgLSB3aWR0aFNjcm9sbDtcbiAgfVxuXG4gIHJldHVybiBjYWNoZWQ7XG59IiwiLyoqXG4gKiBFYXN5IHRvIHNldCBlbGVtZW50IHN0eWxlLCByZXR1cm4gcHJldmlvdXMgc3R5bGVcbiAqIElFIGJyb3dzZXIgY29tcGF0aWJsZShJRSBicm93c2VyIGRvZXNuJ3QgbWVyZ2Ugb3ZlcmZsb3cgc3R5bGUsIG5lZWQgdG8gc2V0IGl0IHNlcGFyYXRlbHkpXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8xOTM5M1xuICpcbiAqL1xuZnVuY3Rpb24gc2V0U3R5bGUoc3R5bGUpIHtcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICB2YXIgX29wdGlvbnMkZWxlbWVudCA9IG9wdGlvbnMuZWxlbWVudCxcbiAgICAgIGVsZW1lbnQgPSBfb3B0aW9ucyRlbGVtZW50ID09PSB2b2lkIDAgPyBkb2N1bWVudC5ib2R5IDogX29wdGlvbnMkZWxlbWVudDtcbiAgdmFyIG9sZFN0eWxlID0ge307XG4gIHZhciBzdHlsZUtleXMgPSBPYmplY3Qua2V5cyhzdHlsZSk7IC8vIElFIGJyb3dzZXIgY29tcGF0aWJsZVxuXG4gIHN0eWxlS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBvbGRTdHlsZVtrZXldID0gZWxlbWVudC5zdHlsZVtrZXldO1xuICB9KTtcbiAgc3R5bGVLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlW2tleV07XG4gIH0pO1xuICByZXR1cm4gb2xkU3R5bGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNldFN0eWxlOyIsImltcG9ydCBnZXRTY3JvbGxCYXJTaXplIGZyb20gJy4vZ2V0U2Nyb2xsQmFyU2l6ZSc7XG5pbXBvcnQgc2V0U3R5bGUgZnJvbSAnLi9zZXRTdHlsZSc7XG5cbmZ1bmN0aW9uIGlzQm9keU92ZXJmbG93aW5nKCkge1xuICByZXR1cm4gZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQgPiAod2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpICYmIHdpbmRvdy5pbm5lcldpZHRoID4gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDtcbn1cblxudmFyIGNhY2hlU3R5bGUgPSB7fTtcbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoY2xvc2UpIHtcbiAgaWYgKCFpc0JvZHlPdmVyZmxvd2luZygpICYmICFjbG9zZSkge1xuICAgIHJldHVybjtcbiAgfSAvLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8xOTcyOVxuXG5cbiAgdmFyIHNjcm9sbGluZ0VmZmVjdENsYXNzTmFtZSA9ICdhbnQtc2Nyb2xsaW5nLWVmZmVjdCc7XG4gIHZhciBzY3JvbGxpbmdFZmZlY3RDbGFzc05hbWVSZWcgPSBuZXcgUmVnRXhwKFwiXCIuY29uY2F0KHNjcm9sbGluZ0VmZmVjdENsYXNzTmFtZSksICdnJyk7XG4gIHZhciBib2R5Q2xhc3NOYW1lID0gZG9jdW1lbnQuYm9keS5jbGFzc05hbWU7XG5cbiAgaWYgKGNsb3NlKSB7XG4gICAgaWYgKCFzY3JvbGxpbmdFZmZlY3RDbGFzc05hbWVSZWcudGVzdChib2R5Q2xhc3NOYW1lKSkgcmV0dXJuO1xuICAgIHNldFN0eWxlKGNhY2hlU3R5bGUpO1xuICAgIGNhY2hlU3R5bGUgPSB7fTtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9IGJvZHlDbGFzc05hbWUucmVwbGFjZShzY3JvbGxpbmdFZmZlY3RDbGFzc05hbWVSZWcsICcnKS50cmltKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHNjcm9sbEJhclNpemUgPSBnZXRTY3JvbGxCYXJTaXplKCk7XG5cbiAgaWYgKHNjcm9sbEJhclNpemUpIHtcbiAgICBjYWNoZVN0eWxlID0gc2V0U3R5bGUoe1xuICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICB3aWR0aDogXCJjYWxjKDEwMCUgLSBcIi5jb25jYXQoc2Nyb2xsQmFyU2l6ZSwgXCJweClcIilcbiAgICB9KTtcblxuICAgIGlmICghc2Nyb2xsaW5nRWZmZWN0Q2xhc3NOYW1lUmVnLnRlc3QoYm9keUNsYXNzTmFtZSkpIHtcbiAgICAgIHZhciBhZGRDbGFzc05hbWUgPSBcIlwiLmNvbmNhdChib2R5Q2xhc3NOYW1lLCBcIiBcIikuY29uY2F0KHNjcm9sbGluZ0VmZmVjdENsYXNzTmFtZSk7XG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9IGFkZENsYXNzTmFtZS50cmltKCk7XG4gICAgfVxuICB9XG59KTsiLCJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSxyZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBwb2x5ZmlsbCB9IGZyb20gJ3JlYWN0LWxpZmVjeWNsZXMtY29tcGF0JztcbmltcG9ydCBDb250YWluZXJSZW5kZXIgZnJvbSAnLi9Db250YWluZXJSZW5kZXInO1xuaW1wb3J0IFBvcnRhbCBmcm9tICcuL1BvcnRhbCc7XG5pbXBvcnQgc3dpdGNoU2Nyb2xsaW5nRWZmZWN0IGZyb20gJy4vc3dpdGNoU2Nyb2xsaW5nRWZmZWN0JztcbmltcG9ydCBzZXRTdHlsZSBmcm9tICcuL3NldFN0eWxlJztcbnZhciBvcGVuQ291bnQgPSAwO1xudmFyIHdpbmRvd0lzVW5kZWZpbmVkID0gISh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xudmFyIElTX1JFQUNUXzE2ID0gKCdjcmVhdGVQb3J0YWwnIGluIFJlYWN0RE9NKTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMTkzNDBcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzE5MzMyXG5cbnZhciBjYWNoZU92ZXJmbG93ID0ge307XG5cbnZhciBQb3J0YWxXcmFwcGVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhQb3J0YWxXcmFwcGVyLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFBvcnRhbFdyYXBwZXIpO1xuXG4gIGZ1bmN0aW9uIFBvcnRhbFdyYXBwZXIocHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUG9ydGFsV3JhcHBlcik7XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKTtcblxuICAgIF90aGlzLmdldFBhcmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBnZXRDb250YWluZXIgPSBfdGhpcy5wcm9wcy5nZXRDb250YWluZXI7XG5cbiAgICAgIGlmIChnZXRDb250YWluZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBnZXRDb250YWluZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZ2V0Q29udGFpbmVyKVswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgZ2V0Q29udGFpbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmV0dXJuIGdldENvbnRhaW5lcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF90eXBlb2YoZ2V0Q29udGFpbmVyKSA9PT0gJ29iamVjdCcgJiYgZ2V0Q29udGFpbmVyIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgcmV0dXJuIGdldENvbnRhaW5lcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZG9jdW1lbnQuYm9keTtcbiAgICB9O1xuXG4gICAgX3RoaXMuZ2V0Q29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHdpbmRvd0lzVW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAoIV90aGlzLmNvbnRhaW5lcikge1xuICAgICAgICBfdGhpcy5jb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgICAgICB2YXIgcGFyZW50ID0gX3RoaXMuZ2V0UGFyZW50KCk7XG5cbiAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChfdGhpcy5jb250YWluZXIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIF90aGlzLnNldFdyYXBwZXJDbGFzc05hbWUoKTtcblxuICAgICAgcmV0dXJuIF90aGlzLmNvbnRhaW5lcjtcbiAgICB9O1xuXG4gICAgX3RoaXMuc2V0V3JhcHBlckNsYXNzTmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB3cmFwcGVyQ2xhc3NOYW1lID0gX3RoaXMucHJvcHMud3JhcHBlckNsYXNzTmFtZTtcblxuICAgICAgaWYgKF90aGlzLmNvbnRhaW5lciAmJiB3cmFwcGVyQ2xhc3NOYW1lICYmIHdyYXBwZXJDbGFzc05hbWUgIT09IF90aGlzLmNvbnRhaW5lci5jbGFzc05hbWUpIHtcbiAgICAgICAgX3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZSA9IHdyYXBwZXJDbGFzc05hbWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLnNhdmVQb3J0YWwgPSBmdW5jdGlvbiAoYykge1xuICAgICAgLy8gV2FybmluZzogZG9uJ3QgcmVuYW1lIF9jb21wb25lbnRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdC1jb21wb25lbnQvdXRpbC9wdWxsLzY1I2Rpc2N1c3Npb25fcjM1MjQwNzkxNlxuICAgICAgX3RoaXMuX2NvbXBvbmVudCA9IGM7XG4gICAgfTtcblxuICAgIF90aGlzLnJlbW92ZUN1cnJlbnRDb250YWluZXIgPSBmdW5jdGlvbiAodmlzaWJsZSkge1xuICAgICAgX3RoaXMuY29udGFpbmVyID0gbnVsbDtcbiAgICAgIF90aGlzLl9jb21wb25lbnQgPSBudWxsO1xuXG4gICAgICBpZiAoIUlTX1JFQUNUXzE2KSB7XG4gICAgICAgIGlmICh2aXNpYmxlKSB7XG4gICAgICAgICAgX3RoaXMucmVuZGVyQ29tcG9uZW50KHtcbiAgICAgICAgICAgIGFmdGVyQ2xvc2U6IF90aGlzLnJlbW92ZUNvbnRhaW5lcixcbiAgICAgICAgICAgIG9uQ2xvc2U6IGZ1bmN0aW9uIG9uQ2xvc2UoKSB7fSxcbiAgICAgICAgICAgIHZpc2libGU6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMucmVtb3ZlQ29udGFpbmVyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3RoaXMuc3dpdGNoU2Nyb2xsaW5nRWZmZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKG9wZW5Db3VudCA9PT0gMSAmJiAhT2JqZWN0LmtleXMoY2FjaGVPdmVyZmxvdykubGVuZ3RoKSB7XG4gICAgICAgIHN3aXRjaFNjcm9sbGluZ0VmZmVjdCgpOyAvLyBNdXN0IGJlIHNldCBhZnRlciBzd2l0Y2hTY3JvbGxpbmdFZmZlY3RcblxuICAgICAgICBjYWNoZU92ZXJmbG93ID0gc2V0U3R5bGUoe1xuICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgICBvdmVyZmxvd1g6ICdoaWRkZW4nLFxuICAgICAgICAgIG92ZXJmbG93WTogJ2hpZGRlbidcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKCFvcGVuQ291bnQpIHtcbiAgICAgICAgc2V0U3R5bGUoY2FjaGVPdmVyZmxvdyk7XG4gICAgICAgIGNhY2hlT3ZlcmZsb3cgPSB7fTtcbiAgICAgICAgc3dpdGNoU2Nyb2xsaW5nRWZmZWN0KHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgX3Zpc2libGUgPSBwcm9wcy52aXNpYmxlO1xuICAgIG9wZW5Db3VudCA9IF92aXNpYmxlID8gb3BlbkNvdW50ICsgMSA6IG9wZW5Db3VudDtcbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIF9zZWxmOiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKVxuICAgIH07XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFBvcnRhbFdyYXBwZXIsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICB0aGlzLnNldFdyYXBwZXJDbGFzc05hbWUoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICB2YXIgdmlzaWJsZSA9IHRoaXMucHJvcHMudmlzaWJsZTsgLy8g56a75byA5pe25LiN5LyaIHJlbmRlcu+8jCDlr7zliLDnprvlvIDml7bmlbDlgLzkuI3lj5jvvIzmlLnnlKggZnVuYyDjgILjgIJcblxuICAgICAgb3BlbkNvdW50ID0gdmlzaWJsZSAmJiBvcGVuQ291bnQgPyBvcGVuQ291bnQgLSAxIDogb3BlbkNvdW50O1xuICAgICAgdGhpcy5yZW1vdmVDdXJyZW50Q29udGFpbmVyKHZpc2libGUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICBmb3JjZVJlbmRlciA9IF90aGlzJHByb3BzLmZvcmNlUmVuZGVyLFxuICAgICAgICAgIHZpc2libGUgPSBfdGhpcyRwcm9wcy52aXNpYmxlO1xuICAgICAgdmFyIHBvcnRhbCA9IG51bGw7XG4gICAgICB2YXIgY2hpbGRQcm9wcyA9IHtcbiAgICAgICAgZ2V0T3BlbkNvdW50OiBmdW5jdGlvbiBnZXRPcGVuQ291bnQoKSB7XG4gICAgICAgICAgcmV0dXJuIG9wZW5Db3VudDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0Q29udGFpbmVyOiB0aGlzLmdldENvbnRhaW5lcixcbiAgICAgICAgc3dpdGNoU2Nyb2xsaW5nRWZmZWN0OiB0aGlzLnN3aXRjaFNjcm9sbGluZ0VmZmVjdFxuICAgICAgfTsgLy8gc3VwcHBvcnQgcmVhY3QxNVxuXG4gICAgICBpZiAoIUlTX1JFQUNUXzE2KSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb250YWluZXJSZW5kZXIsIHtcbiAgICAgICAgICBwYXJlbnQ6IHRoaXMsXG4gICAgICAgICAgdmlzaWJsZTogdmlzaWJsZSxcbiAgICAgICAgICBhdXRvRGVzdHJveTogZmFsc2UsXG4gICAgICAgICAgZ2V0Q29tcG9uZW50OiBmdW5jdGlvbiBnZXRDb21wb25lbnQoKSB7XG4gICAgICAgICAgICB2YXIgZXh0cmEgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBleHRyYSksIGNoaWxkUHJvcHMpLCB7fSwge1xuICAgICAgICAgICAgICByZWY6IF90aGlzMi5zYXZlUG9ydGFsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXRDb250YWluZXI6IHRoaXMuZ2V0Q29udGFpbmVyLFxuICAgICAgICAgIGZvcmNlUmVuZGVyOiBmb3JjZVJlbmRlclxuICAgICAgICB9LCBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICAgIHZhciByZW5kZXJDb21wb25lbnQgPSBfcmVmLnJlbmRlckNvbXBvbmVudCxcbiAgICAgICAgICAgICAgcmVtb3ZlQ29udGFpbmVyID0gX3JlZi5yZW1vdmVDb250YWluZXI7XG4gICAgICAgICAgX3RoaXMyLnJlbmRlckNvbXBvbmVudCA9IHJlbmRlckNvbXBvbmVudDtcbiAgICAgICAgICBfdGhpczIucmVtb3ZlQ29udGFpbmVyID0gcmVtb3ZlQ29udGFpbmVyO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZvcmNlUmVuZGVyIHx8IHZpc2libGUgfHwgdGhpcy5fY29tcG9uZW50KSB7XG4gICAgICAgIHBvcnRhbCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFBvcnRhbCwge1xuICAgICAgICAgIGdldENvbnRhaW5lcjogdGhpcy5nZXRDb250YWluZXIsXG4gICAgICAgICAgcmVmOiB0aGlzLnNhdmVQb3J0YWxcbiAgICAgICAgfSwgY2hpbGRyZW4oY2hpbGRQcm9wcykpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcG9ydGFsO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHMsIF9yZWYyKSB7XG4gICAgICB2YXIgcHJldlByb3BzID0gX3JlZjIucHJldlByb3BzLFxuICAgICAgICAgIF9zZWxmID0gX3JlZjIuX3NlbGY7XG4gICAgICB2YXIgdmlzaWJsZSA9IHByb3BzLnZpc2libGUsXG4gICAgICAgICAgZ2V0Q29udGFpbmVyID0gcHJvcHMuZ2V0Q29udGFpbmVyO1xuXG4gICAgICBpZiAocHJldlByb3BzKSB7XG4gICAgICAgIHZhciBwcmV2VmlzaWJsZSA9IHByZXZQcm9wcy52aXNpYmxlLFxuICAgICAgICAgICAgcHJldkdldENvbnRhaW5lciA9IHByZXZQcm9wcy5nZXRDb250YWluZXI7XG5cbiAgICAgICAgaWYgKHZpc2libGUgIT09IHByZXZWaXNpYmxlKSB7XG4gICAgICAgICAgb3BlbkNvdW50ID0gdmlzaWJsZSAmJiAhcHJldlZpc2libGUgPyBvcGVuQ291bnQgKyAxIDogb3BlbkNvdW50IC0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBnZXRDb250YWluZXJJc0Z1bmMgPSB0eXBlb2YgZ2V0Q29udGFpbmVyID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBwcmV2R2V0Q29udGFpbmVyID09PSAnZnVuY3Rpb24nO1xuXG4gICAgICAgIGlmIChnZXRDb250YWluZXJJc0Z1bmMgPyBnZXRDb250YWluZXIudG9TdHJpbmcoKSAhPT0gcHJldkdldENvbnRhaW5lci50b1N0cmluZygpIDogZ2V0Q29udGFpbmVyICE9PSBwcmV2R2V0Q29udGFpbmVyKSB7XG4gICAgICAgICAgX3NlbGYucmVtb3ZlQ3VycmVudENvbnRhaW5lcihmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJldlByb3BzOiBwcm9wc1xuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUG9ydGFsV3JhcHBlcjtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuUG9ydGFsV3JhcHBlci5wcm9wVHlwZXMgPSB7XG4gIHdyYXBwZXJDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGZvcmNlUmVuZGVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgZ2V0Q29udGFpbmVyOiBQcm9wVHlwZXMuYW55LFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLmZ1bmMsXG4gIHZpc2libGU6IFByb3BUeXBlcy5ib29sXG59O1xuZXhwb3J0IGRlZmF1bHQgcG9seWZpbGwoUG9ydGFsV3JhcHBlcik7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9leHRlbmRzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi9EaWFsb2cnO1xuaW1wb3J0IFBvcnRhbCBmcm9tICdyYy11dGlsL2VzL1BvcnRhbFdyYXBwZXInO1xuLy8gZml4IGlzc3VlICMxMDY1NlxuLypcbiogZ2V0Q29udGFpbmVyIHJlbWFya3NcbiogQ3VzdG9tIGNvbnRhaW5lciBzaG91bGQgbm90IGJlIHJldHVybiwgYmVjYXVzZSBpbiB0aGUgUG9ydGFsIGNvbXBvbmVudCwgaXQgd2lsbCByZW1vdmUgdGhlXG4qIHJldHVybiBjb250YWluZXIgZWxlbWVudCBoZXJlLCBpZiB0aGUgY3VzdG9tIGNvbnRhaW5lciBpcyB0aGUgb25seSBjaGlsZCBvZiBpdCdzIGNvbXBvbmVudCxcbiogbGlrZSBpc3N1ZSAjMTA2NTYsIEl0IHdpbGwgaGFzIGEgY29uZmxpY3Qgd2l0aCByZW1vdmVDaGlsZCBtZXRob2QgaW4gcmVhY3QtZG9tLlxuKiBTbyBoZXJlIHNob3VsZCBhZGQgYSBjaGlsZCAoZGl2IGVsZW1lbnQpIHRvIGN1c3RvbSBjb250YWluZXIuXG4qICovXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHZpc2libGUgPSBwcm9wcy52aXNpYmxlLFxuICAgICAgICBnZXRDb250YWluZXIgPSBwcm9wcy5nZXRDb250YWluZXIsXG4gICAgICAgIGZvcmNlUmVuZGVyID0gcHJvcHMuZm9yY2VSZW5kZXI7XG4gICAgLy8g5riy5p+T5Zyo5b2T5YmNIGRvbSDph4zvvJtcblxuICAgIGlmIChnZXRDb250YWluZXIgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KERpYWxvZywgX2V4dGVuZHMoe30sIHByb3BzLCB7IGdldE9wZW5Db3VudDogZnVuY3Rpb24gZ2V0T3BlbkNvdW50KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAyO1xuICAgICAgICAgICAgfSB9KSk7XG4gICAgfVxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFBvcnRhbCwgeyB2aXNpYmxlOiB2aXNpYmxlLCBmb3JjZVJlbmRlcjogZm9yY2VSZW5kZXIsIGdldENvbnRhaW5lcjogZ2V0Q29udGFpbmVyIH0sIGZ1bmN0aW9uIChjaGlsZFByb3BzKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KERpYWxvZywgX2V4dGVuZHMoe30sIHByb3BzLCBjaGlsZFByb3BzKSk7XG4gICAgfSk7XG59KTsiLCJpbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuXG4vKiBlc2xpbnQgcmVhY3QvcHJvcC10eXBlczogMCAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuXG52YXIgUGFnZXIgPSBmdW5jdGlvbiBQYWdlcihwcm9wcykge1xuICB2YXIgX2NsYXNzTmFtZXM7XG5cbiAgdmFyIHByZWZpeENscyA9IFwiXCIuY29uY2F0KHByb3BzLnJvb3RQcmVmaXhDbHMsIFwiLWl0ZW1cIik7XG4gIHZhciBjbHMgPSBjbGFzc05hbWVzKHByZWZpeENscywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KHByb3BzLnBhZ2UpLCAoX2NsYXNzTmFtZXMgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWFjdGl2ZVwiKSwgcHJvcHMuYWN0aXZlKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBwcm9wcy5jbGFzc05hbWUsICEhcHJvcHMuY2xhc3NOYW1lKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzc05hbWVzLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWRpc2FibGVkXCIpLCAhcHJvcHMucGFnZSksIF9jbGFzc05hbWVzKSk7XG5cbiAgdmFyIGhhbmRsZUNsaWNrID0gZnVuY3Rpb24gaGFuZGxlQ2xpY2soKSB7XG4gICAgcHJvcHMub25DbGljayhwcm9wcy5wYWdlKTtcbiAgfTtcblxuICB2YXIgaGFuZGxlS2V5UHJlc3MgPSBmdW5jdGlvbiBoYW5kbGVLZXlQcmVzcyhlKSB7XG4gICAgcHJvcHMub25LZXlQcmVzcyhlLCBwcm9wcy5vbkNsaWNrLCBwcm9wcy5wYWdlKTtcbiAgfTtcblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaVwiLCB7XG4gICAgdGl0bGU6IHByb3BzLnNob3dUaXRsZSA/IHByb3BzLnBhZ2UgOiBudWxsLFxuICAgIGNsYXNzTmFtZTogY2xzLFxuICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgIG9uS2V5UHJlc3M6IGhhbmRsZUtleVByZXNzLFxuICAgIHRhYkluZGV4OiBcIjBcIlxuICB9LCBwcm9wcy5pdGVtUmVuZGVyKHByb3BzLnBhZ2UsICdwYWdlJywgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIHtcbiAgICByZWw6IFwibm9mb2xsb3dcIlxuICB9LCBwcm9wcy5wYWdlKSkpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUGFnZXI7IiwiZXhwb3J0IGRlZmF1bHQge1xuICBaRVJPOiA0OCxcbiAgTklORTogNTcsXG4gIE5VTVBBRF9aRVJPOiA5NixcbiAgTlVNUEFEX05JTkU6IDEwNSxcbiAgQkFDS1NQQUNFOiA4LFxuICBERUxFVEU6IDQ2LFxuICBFTlRFUjogMTMsXG4gIEFSUk9XX1VQOiAzOCxcbiAgQVJST1dfRE9XTjogNDBcbn07IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcblxuLyogZXNsaW50IHJlYWN0L3Byb3AtdHlwZXM6IDAgKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgS0VZQ09ERSBmcm9tICcuL0tleUNvZGUnO1xuXG52YXIgT3B0aW9ucyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoT3B0aW9ucywgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihPcHRpb25zKTtcblxuICBmdW5jdGlvbiBPcHRpb25zKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBPcHRpb25zKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICBnb0lucHV0VGV4dDogJydcbiAgICB9O1xuXG4gICAgX3RoaXMuYnVpbGRPcHRpb25UZXh0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQodmFsdWUsIFwiIFwiKS5jb25jYXQoX3RoaXMucHJvcHMubG9jYWxlLml0ZW1zX3Blcl9wYWdlKTtcbiAgICB9O1xuXG4gICAgX3RoaXMuY2hhbmdlU2l6ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgX3RoaXMucHJvcHMuY2hhbmdlU2l6ZShOdW1iZXIodmFsdWUpKTtcbiAgICB9O1xuXG4gICAgX3RoaXMuaGFuZGxlQ2hhbmdlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZ29JbnB1dFRleHQ6IGUudGFyZ2V0LnZhbHVlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX3RoaXMuaGFuZGxlQmx1ciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBnb0J1dHRvbiA9IF90aGlzJHByb3BzLmdvQnV0dG9uLFxuICAgICAgICAgIHF1aWNrR28gPSBfdGhpcyRwcm9wcy5xdWlja0dvLFxuICAgICAgICAgIHJvb3RQcmVmaXhDbHMgPSBfdGhpcyRwcm9wcy5yb290UHJlZml4Q2xzO1xuICAgICAgdmFyIGdvSW5wdXRUZXh0ID0gX3RoaXMuc3RhdGUuZ29JbnB1dFRleHQ7XG5cbiAgICAgIGlmIChnb0J1dHRvbiB8fCBnb0lucHV0VGV4dCA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGdvSW5wdXRUZXh0OiAnJ1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChlLnJlbGF0ZWRUYXJnZXQgJiYgKGUucmVsYXRlZFRhcmdldC5jbGFzc05hbWUuaW5kZXhPZihcIlwiLmNvbmNhdChyb290UHJlZml4Q2xzLCBcIi1pdGVtLWxpbmtcIikpID49IDAgfHwgZS5yZWxhdGVkVGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKFwiXCIuY29uY2F0KHJvb3RQcmVmaXhDbHMsIFwiLWl0ZW1cIikpID49IDApKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcXVpY2tHbyhfdGhpcy5nZXRWYWxpZFZhbHVlKCkpO1xuICAgIH07XG5cbiAgICBfdGhpcy5nbyA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgZ29JbnB1dFRleHQgPSBfdGhpcy5zdGF0ZS5nb0lucHV0VGV4dDtcblxuICAgICAgaWYgKGdvSW5wdXRUZXh0ID09PSAnJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChlLmtleUNvZGUgPT09IEtFWUNPREUuRU5URVIgfHwgZS50eXBlID09PSAnY2xpY2snKSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBnb0lucHV0VGV4dDogJydcbiAgICAgICAgfSk7XG5cbiAgICAgICAgX3RoaXMucHJvcHMucXVpY2tHbyhfdGhpcy5nZXRWYWxpZFZhbHVlKCkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoT3B0aW9ucywgW3tcbiAgICBrZXk6IFwiZ2V0VmFsaWRWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRWYWxpZFZhbHVlKCkge1xuICAgICAgdmFyIGdvSW5wdXRUZXh0ID0gdGhpcy5zdGF0ZS5nb0lucHV0VGV4dDsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFsc1xuXG4gICAgICByZXR1cm4gIWdvSW5wdXRUZXh0IHx8IGlzTmFOKGdvSW5wdXRUZXh0KSA/IHVuZGVmaW5lZCA6IE51bWJlcihnb0lucHV0VGV4dCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFBhZ2VTaXplT3B0aW9uc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQYWdlU2l6ZU9wdGlvbnMoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBwYWdlU2l6ZSA9IF90aGlzJHByb3BzMi5wYWdlU2l6ZSxcbiAgICAgICAgICBwYWdlU2l6ZU9wdGlvbnMgPSBfdGhpcyRwcm9wczIucGFnZVNpemVPcHRpb25zO1xuXG4gICAgICBpZiAocGFnZVNpemVPcHRpb25zLnNvbWUoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uLnRvU3RyaW5nKCkgPT09IHBhZ2VTaXplLnRvU3RyaW5nKCk7XG4gICAgICB9KSkge1xuICAgICAgICByZXR1cm4gcGFnZVNpemVPcHRpb25zO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFnZVNpemVPcHRpb25zLmNvbmNhdChbcGFnZVNpemUudG9TdHJpbmcoKV0pLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFsc1xuICAgICAgICB2YXIgbnVtYmVyQSA9IGlzTmFOKE51bWJlcihhKSkgPyAwIDogTnVtYmVyKGEpOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzXG5cbiAgICAgICAgdmFyIG51bWJlckIgPSBpc05hTihOdW1iZXIoYikpID8gMCA6IE51bWJlcihiKTtcbiAgICAgICAgcmV0dXJuIG51bWJlckEgLSBudW1iZXJCO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIF90aGlzJHByb3BzMyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgcGFnZVNpemUgPSBfdGhpcyRwcm9wczMucGFnZVNpemUsXG4gICAgICAgICAgbG9jYWxlID0gX3RoaXMkcHJvcHMzLmxvY2FsZSxcbiAgICAgICAgICByb290UHJlZml4Q2xzID0gX3RoaXMkcHJvcHMzLnJvb3RQcmVmaXhDbHMsXG4gICAgICAgICAgY2hhbmdlU2l6ZSA9IF90aGlzJHByb3BzMy5jaGFuZ2VTaXplLFxuICAgICAgICAgIHF1aWNrR28gPSBfdGhpcyRwcm9wczMucXVpY2tHbyxcbiAgICAgICAgICBnb0J1dHRvbiA9IF90aGlzJHByb3BzMy5nb0J1dHRvbixcbiAgICAgICAgICBzZWxlY3RDb21wb25lbnRDbGFzcyA9IF90aGlzJHByb3BzMy5zZWxlY3RDb21wb25lbnRDbGFzcyxcbiAgICAgICAgICBidWlsZE9wdGlvblRleHQgPSBfdGhpcyRwcm9wczMuYnVpbGRPcHRpb25UZXh0LFxuICAgICAgICAgIHNlbGVjdFByZWZpeENscyA9IF90aGlzJHByb3BzMy5zZWxlY3RQcmVmaXhDbHMsXG4gICAgICAgICAgZGlzYWJsZWQgPSBfdGhpcyRwcm9wczMuZGlzYWJsZWQ7XG4gICAgICB2YXIgZ29JbnB1dFRleHQgPSB0aGlzLnN0YXRlLmdvSW5wdXRUZXh0O1xuICAgICAgdmFyIHByZWZpeENscyA9IFwiXCIuY29uY2F0KHJvb3RQcmVmaXhDbHMsIFwiLW9wdGlvbnNcIik7XG4gICAgICB2YXIgU2VsZWN0ID0gc2VsZWN0Q29tcG9uZW50Q2xhc3M7XG4gICAgICB2YXIgY2hhbmdlU2VsZWN0ID0gbnVsbDtcbiAgICAgIHZhciBnb0lucHV0ID0gbnVsbDtcbiAgICAgIHZhciBnb3RvQnV0dG9uID0gbnVsbDtcblxuICAgICAgaWYgKCFjaGFuZ2VTaXplICYmICFxdWlja0dvKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcGFnZVNpemVPcHRpb25zID0gdGhpcy5nZXRQYWdlU2l6ZU9wdGlvbnMoKTtcblxuICAgICAgaWYgKGNoYW5nZVNpemUgJiYgU2VsZWN0KSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gcGFnZVNpemVPcHRpb25zLm1hcChmdW5jdGlvbiAob3B0LCBpKSB7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFNlbGVjdC5PcHRpb24sIHtcbiAgICAgICAgICAgIGtleTogaSxcbiAgICAgICAgICAgIHZhbHVlOiBvcHQudG9TdHJpbmcoKVxuICAgICAgICAgIH0sIChidWlsZE9wdGlvblRleHQgfHwgX3RoaXMyLmJ1aWxkT3B0aW9uVGV4dCkob3B0KSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjaGFuZ2VTZWxlY3QgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTZWxlY3QsIHtcbiAgICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgICAgcHJlZml4Q2xzOiBzZWxlY3RQcmVmaXhDbHMsXG4gICAgICAgICAgc2hvd1NlYXJjaDogZmFsc2UsXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXNpemUtY2hhbmdlclwiKSxcbiAgICAgICAgICBvcHRpb25MYWJlbFByb3A6IFwiY2hpbGRyZW5cIixcbiAgICAgICAgICBkcm9wZG93bk1hdGNoU2VsZWN0V2lkdGg6IGZhbHNlLFxuICAgICAgICAgIHZhbHVlOiAocGFnZVNpemUgfHwgcGFnZVNpemVPcHRpb25zWzBdKS50b1N0cmluZygpLFxuICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLmNoYW5nZVNpemUsXG4gICAgICAgICAgZ2V0UG9wdXBDb250YWluZXI6IGZ1bmN0aW9uIGdldFBvcHVwQ29udGFpbmVyKHRyaWdnZXJOb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJpZ2dlck5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIG9wdGlvbnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAocXVpY2tHbykge1xuICAgICAgICBpZiAoZ29CdXR0b24pIHtcbiAgICAgICAgICBnb3RvQnV0dG9uID0gdHlwZW9mIGdvQnV0dG9uID09PSAnYm9vbGVhbicgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgb25DbGljazogdGhpcy5nbyxcbiAgICAgICAgICAgIG9uS2V5VXA6IHRoaXMuZ28sXG4gICAgICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcXVpY2stanVtcGVyLWJ1dHRvblwiKVxuICAgICAgICAgIH0sIGxvY2FsZS5qdW1wX3RvX2NvbmZpcm0pIDogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMuZ28sXG4gICAgICAgICAgICBvbktleVVwOiB0aGlzLmdvXG4gICAgICAgICAgfSwgZ29CdXR0b24pO1xuICAgICAgICB9XG5cbiAgICAgICAgZ29JbnB1dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcXVpY2stanVtcGVyXCIpXG4gICAgICAgIH0sIGxvY2FsZS5qdW1wX3RvLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdmFsdWU6IGdvSW5wdXRUZXh0LFxuICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLmhhbmRsZUNoYW5nZSxcbiAgICAgICAgICBvbktleVVwOiB0aGlzLmdvLFxuICAgICAgICAgIG9uQmx1cjogdGhpcy5oYW5kbGVCbHVyXG4gICAgICAgIH0pLCBsb2NhbGUucGFnZSwgZ290b0J1dHRvbik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMpXG4gICAgICB9LCBjaGFuZ2VTZWxlY3QsIGdvSW5wdXQpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBPcHRpb25zO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5PcHRpb25zLmRlZmF1bHRQcm9wcyA9IHtcbiAgcGFnZVNpemVPcHRpb25zOiBbJzEwJywgJzIwJywgJzUwJywgJzEwMCddXG59O1xuZXhwb3J0IGRlZmF1bHQgT3B0aW9uczsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcblxuLyogZXNsaW50IHJlYWN0L3Byb3AtdHlwZXM6IDAgKi9cbmltcG9ydCBSZWFjdCwgeyBjbG9uZUVsZW1lbnQsIGlzVmFsaWRFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgUGFnZXIgZnJvbSAnLi9QYWdlcic7XG5pbXBvcnQgT3B0aW9ucyBmcm9tICcuL09wdGlvbnMnO1xuaW1wb3J0IEtFWUNPREUgZnJvbSAnLi9LZXlDb2RlJztcbmltcG9ydCBMT0NBTEUgZnJvbSAnLi9sb2NhbGUvemhfQ04nO1xuXG5mdW5jdGlvbiBub29wKCkge31cblxuZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlKSB7XG4gIHJldHVybiAoLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFsc1xuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgaXNGaW5pdGUodmFsdWUpICYmIE1hdGguZmxvb3IodmFsdWUpID09PSB2YWx1ZVxuICApO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0SXRlbVJlbmRlcihwYWdlLCB0eXBlLCBlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50O1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVQYWdlKHAsIHN0YXRlLCBwcm9wcykge1xuICB2YXIgcGFnZVNpemUgPSB0eXBlb2YgcCA9PT0gJ3VuZGVmaW5lZCcgPyBzdGF0ZS5wYWdlU2l6ZSA6IHA7XG4gIHJldHVybiBNYXRoLmZsb29yKChwcm9wcy50b3RhbCAtIDEpIC8gcGFnZVNpemUpICsgMTtcbn1cblxudmFyIFBhZ2luYXRpb24gPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFBhZ2luYXRpb24sIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoUGFnaW5hdGlvbik7XG5cbiAgZnVuY3Rpb24gUGFnaW5hdGlvbihwcm9wcykge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQYWdpbmF0aW9uKTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcHJvcHMpO1xuXG4gICAgX3RoaXMuZ2V0SnVtcFByZXZQYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KDEsIF90aGlzLnN0YXRlLmN1cnJlbnQgLSAoX3RoaXMucHJvcHMuc2hvd0xlc3NJdGVtcyA/IDMgOiA1KSk7XG4gICAgfTtcblxuICAgIF90aGlzLmdldEp1bXBOZXh0UGFnZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBNYXRoLm1pbihjYWxjdWxhdGVQYWdlKHVuZGVmaW5lZCwgX3RoaXMuc3RhdGUsIF90aGlzLnByb3BzKSwgX3RoaXMuc3RhdGUuY3VycmVudCArIChfdGhpcy5wcm9wcy5zaG93TGVzc0l0ZW1zID8gMyA6IDUpKTtcbiAgICB9O1xuXG4gICAgX3RoaXMuZ2V0SXRlbUljb24gPSBmdW5jdGlvbiAoaWNvbiwgbGFiZWwpIHtcbiAgICAgIHZhciBwcmVmaXhDbHMgPSBfdGhpcy5wcm9wcy5wcmVmaXhDbHM7XG4gICAgICB2YXIgaWNvbk5vZGUgPSBpY29uIHx8IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgXCJhcmlhLWxhYmVsXCI6IGxhYmVsLFxuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaXRlbS1saW5rXCIpXG4gICAgICB9KTtcblxuICAgICAgaWYgKHR5cGVvZiBpY29uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGljb25Ob2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoaWNvbiwgX29iamVjdFNwcmVhZCh7fSwgX3RoaXMucHJvcHMpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGljb25Ob2RlO1xuICAgIH07XG5cbiAgICBfdGhpcy5zYXZlUGFnaW5hdGlvbk5vZGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgX3RoaXMucGFnaW5hdGlvbk5vZGUgPSBub2RlO1xuICAgIH07XG5cbiAgICBfdGhpcy5pc1ZhbGlkID0gZnVuY3Rpb24gKHBhZ2UpIHtcbiAgICAgIHJldHVybiBpc0ludGVnZXIocGFnZSkgJiYgcGFnZSAhPT0gX3RoaXMuc3RhdGUuY3VycmVudDtcbiAgICB9O1xuXG4gICAgX3RoaXMuc2hvdWxkRGlzcGxheVF1aWNrSnVtcGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgc2hvd1F1aWNrSnVtcGVyID0gX3RoaXMkcHJvcHMuc2hvd1F1aWNrSnVtcGVyLFxuICAgICAgICAgIHBhZ2VTaXplID0gX3RoaXMkcHJvcHMucGFnZVNpemUsXG4gICAgICAgICAgdG90YWwgPSBfdGhpcyRwcm9wcy50b3RhbDtcblxuICAgICAgaWYgKHRvdGFsIDw9IHBhZ2VTaXplKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNob3dRdWlja0p1bXBlcjtcbiAgICB9O1xuXG4gICAgX3RoaXMuaGFuZGxlS2V5RG93biA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoZS5rZXlDb2RlID09PSBLRVlDT0RFLkFSUk9XX1VQIHx8IGUua2V5Q29kZSA9PT0gS0VZQ09ERS5BUlJPV19ET1dOKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3RoaXMuaGFuZGxlS2V5VXAgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIHZhbHVlID0gX3RoaXMuZ2V0VmFsaWRWYWx1ZShlKTtcblxuICAgICAgdmFyIGN1cnJlbnRJbnB1dFZhbHVlID0gX3RoaXMuc3RhdGUuY3VycmVudElucHV0VmFsdWU7XG5cbiAgICAgIGlmICh2YWx1ZSAhPT0gY3VycmVudElucHV0VmFsdWUpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGN1cnJlbnRJbnB1dFZhbHVlOiB2YWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGUua2V5Q29kZSA9PT0gS0VZQ09ERS5FTlRFUikge1xuICAgICAgICBfdGhpcy5oYW5kbGVDaGFuZ2UodmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChlLmtleUNvZGUgPT09IEtFWUNPREUuQVJST1dfVVApIHtcbiAgICAgICAgX3RoaXMuaGFuZGxlQ2hhbmdlKHZhbHVlIC0gMSk7XG4gICAgICB9IGVsc2UgaWYgKGUua2V5Q29kZSA9PT0gS0VZQ09ERS5BUlJPV19ET1dOKSB7XG4gICAgICAgIF90aGlzLmhhbmRsZUNoYW5nZSh2YWx1ZSArIDEpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5jaGFuZ2VQYWdlU2l6ZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICB2YXIgY3VycmVudCA9IF90aGlzLnN0YXRlLmN1cnJlbnQ7XG4gICAgICB2YXIgbmV3Q3VycmVudCA9IGNhbGN1bGF0ZVBhZ2Uoc2l6ZSwgX3RoaXMuc3RhdGUsIF90aGlzLnByb3BzKTtcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50ID4gbmV3Q3VycmVudCA/IG5ld0N1cnJlbnQgOiBjdXJyZW50OyAvLyBmaXggdGhlIGlzc3VlOlxuICAgICAgLy8gT25jZSAndG90YWwnIGlzIDAsICdjdXJyZW50JyBpbiAnb25TaG93U2l6ZUNoYW5nZScgaXMgMCwgd2hpY2ggaXMgbm90IGNvcnJlY3QuXG5cbiAgICAgIGlmIChuZXdDdXJyZW50ID09PSAwKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuICAgICAgICBjdXJyZW50ID0gX3RoaXMuc3RhdGUuY3VycmVudDtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBzaXplID09PSAnbnVtYmVyJykge1xuICAgICAgICBpZiAoISgncGFnZVNpemUnIGluIF90aGlzLnByb3BzKSkge1xuICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHBhZ2VTaXplOiBzaXplXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISgnY3VycmVudCcgaW4gX3RoaXMucHJvcHMpKSB7XG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgY3VycmVudDogY3VycmVudCxcbiAgICAgICAgICAgIGN1cnJlbnRJbnB1dFZhbHVlOiBjdXJyZW50XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgX3RoaXMucHJvcHMub25TaG93U2l6ZUNoYW5nZShjdXJyZW50LCBzaXplKTtcblxuICAgICAgaWYgKCdvbkNoYW5nZScgaW4gX3RoaXMucHJvcHMgJiYgX3RoaXMucHJvcHMub25DaGFuZ2UpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25DaGFuZ2UoY3VycmVudCwgc2l6ZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLmhhbmRsZUNoYW5nZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICB2YXIgZGlzYWJsZWQgPSBfdGhpcy5wcm9wcy5kaXNhYmxlZDtcbiAgICAgIHZhciBwYWdlID0gcDtcblxuICAgICAgaWYgKF90aGlzLmlzVmFsaWQocGFnZSkgJiYgIWRpc2FibGVkKSB7XG4gICAgICAgIHZhciBjdXJyZW50UGFnZSA9IGNhbGN1bGF0ZVBhZ2UodW5kZWZpbmVkLCBfdGhpcy5zdGF0ZSwgX3RoaXMucHJvcHMpO1xuXG4gICAgICAgIGlmIChwYWdlID4gY3VycmVudFBhZ2UpIHtcbiAgICAgICAgICBwYWdlID0gY3VycmVudFBhZ2U7XG4gICAgICAgIH0gZWxzZSBpZiAocGFnZSA8IDEpIHtcbiAgICAgICAgICBwYWdlID0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKCdjdXJyZW50JyBpbiBfdGhpcy5wcm9wcykpIHtcbiAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBjdXJyZW50OiBwYWdlLFxuICAgICAgICAgICAgY3VycmVudElucHV0VmFsdWU6IHBhZ2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBwYWdlU2l6ZSA9IF90aGlzLnN0YXRlLnBhZ2VTaXplO1xuXG4gICAgICAgIF90aGlzLnByb3BzLm9uQ2hhbmdlKHBhZ2UsIHBhZ2VTaXplKTtcblxuICAgICAgICByZXR1cm4gcGFnZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF90aGlzLnN0YXRlLmN1cnJlbnQ7XG4gICAgfTtcblxuICAgIF90aGlzLnByZXYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMuaGFzUHJldigpKSB7XG4gICAgICAgIF90aGlzLmhhbmRsZUNoYW5nZShfdGhpcy5zdGF0ZS5jdXJyZW50IC0gMSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMuaGFzTmV4dCgpKSB7XG4gICAgICAgIF90aGlzLmhhbmRsZUNoYW5nZShfdGhpcy5zdGF0ZS5jdXJyZW50ICsgMSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLmp1bXBQcmV2ID0gZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuaGFuZGxlQ2hhbmdlKF90aGlzLmdldEp1bXBQcmV2UGFnZSgpKTtcbiAgICB9O1xuXG4gICAgX3RoaXMuanVtcE5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5oYW5kbGVDaGFuZ2UoX3RoaXMuZ2V0SnVtcE5leHRQYWdlKCkpO1xuICAgIH07XG5cbiAgICBfdGhpcy5oYXNQcmV2ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnN0YXRlLmN1cnJlbnQgPiAxO1xuICAgIH07XG5cbiAgICBfdGhpcy5oYXNOZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnN0YXRlLmN1cnJlbnQgPCBjYWxjdWxhdGVQYWdlKHVuZGVmaW5lZCwgX3RoaXMuc3RhdGUsIF90aGlzLnByb3BzKTtcbiAgICB9O1xuXG4gICAgX3RoaXMucnVuSWZFbnRlciA9IGZ1bmN0aW9uIChldmVudCwgY2FsbGJhY2spIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQuY2hhckNvZGUgPT09IDEzKSB7XG4gICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCByZXN0UGFyYW1zID0gbmV3IEFycmF5KF9sZW4gPiAyID8gX2xlbiAtIDIgOiAwKSwgX2tleSA9IDI7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgICByZXN0UGFyYW1zW19rZXkgLSAyXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhbGxiYWNrLmFwcGx5KHZvaWQgMCwgcmVzdFBhcmFtcyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLnJ1bklmRW50ZXJQcmV2ID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIF90aGlzLnJ1bklmRW50ZXIoZSwgX3RoaXMucHJldik7XG4gICAgfTtcblxuICAgIF90aGlzLnJ1bklmRW50ZXJOZXh0ID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIF90aGlzLnJ1bklmRW50ZXIoZSwgX3RoaXMubmV4dCk7XG4gICAgfTtcblxuICAgIF90aGlzLnJ1bklmRW50ZXJKdW1wUHJldiA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBfdGhpcy5ydW5JZkVudGVyKGUsIF90aGlzLmp1bXBQcmV2KTtcbiAgICB9O1xuXG4gICAgX3RoaXMucnVuSWZFbnRlckp1bXBOZXh0ID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIF90aGlzLnJ1bklmRW50ZXIoZSwgX3RoaXMuanVtcE5leHQpO1xuICAgIH07XG5cbiAgICBfdGhpcy5oYW5kbGVHb1RPID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChlLmtleUNvZGUgPT09IEtFWUNPREUuRU5URVIgfHwgZS50eXBlID09PSAnY2xpY2snKSB7XG4gICAgICAgIF90aGlzLmhhbmRsZUNoYW5nZShfdGhpcy5zdGF0ZS5jdXJyZW50SW5wdXRWYWx1ZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBoYXNPbkNoYW5nZSA9IHByb3BzLm9uQ2hhbmdlICE9PSBub29wO1xuICAgIHZhciBoYXNDdXJyZW50ID0gKCdjdXJyZW50JyBpbiBwcm9wcyk7XG5cbiAgICBpZiAoaGFzQ3VycmVudCAmJiAhaGFzT25DaGFuZ2UpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oJ1dhcm5pbmc6IFlvdSBwcm92aWRlZCBhIGBjdXJyZW50YCBwcm9wIHRvIGEgUGFnaW5hdGlvbiBjb21wb25lbnQgd2l0aG91dCBhbiBgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgY29tcG9uZW50LicpO1xuICAgIH1cblxuICAgIHZhciBfY3VycmVudCA9IHByb3BzLmRlZmF1bHRDdXJyZW50O1xuXG4gICAgaWYgKCdjdXJyZW50JyBpbiBwcm9wcykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXG4gICAgICBfY3VycmVudCA9IHByb3BzLmN1cnJlbnQ7XG4gICAgfVxuXG4gICAgdmFyIF9wYWdlU2l6ZSA9IHByb3BzLmRlZmF1bHRQYWdlU2l6ZTtcblxuICAgIGlmICgncGFnZVNpemUnIGluIHByb3BzKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcbiAgICAgIF9wYWdlU2l6ZSA9IHByb3BzLnBhZ2VTaXplO1xuICAgIH1cblxuICAgIF9jdXJyZW50ID0gTWF0aC5taW4oX2N1cnJlbnQsIGNhbGN1bGF0ZVBhZ2UoX3BhZ2VTaXplLCB1bmRlZmluZWQsIHByb3BzKSk7XG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICBjdXJyZW50OiBfY3VycmVudCxcbiAgICAgIGN1cnJlbnRJbnB1dFZhbHVlOiBfY3VycmVudCxcbiAgICAgIHBhZ2VTaXplOiBfcGFnZVNpemVcbiAgICB9O1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhQYWdpbmF0aW9uLCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICAvLyBXaGVuIGN1cnJlbnQgcGFnZSBjaGFuZ2UsIGZpeCBmb2N1c2VkIHN0eWxlIG9mIHByZXYgaXRlbVxuICAgICAgLy8gQSBoYWNreSBzb2x1dGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy84OTQ4XG4gICAgICB2YXIgcHJlZml4Q2xzID0gdGhpcy5wcm9wcy5wcmVmaXhDbHM7XG5cbiAgICAgIGlmIChwcmV2U3RhdGUuY3VycmVudCAhPT0gdGhpcy5zdGF0ZS5jdXJyZW50ICYmIHRoaXMucGFnaW5hdGlvbk5vZGUpIHtcbiAgICAgICAgdmFyIGxhc3RDdXJyZW50Tm9kZSA9IHRoaXMucGFnaW5hdGlvbk5vZGUucXVlcnlTZWxlY3RvcihcIi5cIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pdGVtLVwiKS5jb25jYXQocHJldlN0YXRlLmN1cnJlbnQpKTtcblxuICAgICAgICBpZiAobGFzdEN1cnJlbnROb2RlICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3RDdXJyZW50Tm9kZSkge1xuICAgICAgICAgIGxhc3RDdXJyZW50Tm9kZS5ibHVyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VmFsaWRWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRWYWxpZFZhbHVlKGUpIHtcbiAgICAgIHZhciBpbnB1dFZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgICB2YXIgYWxsUGFnZXMgPSBjYWxjdWxhdGVQYWdlKHVuZGVmaW5lZCwgdGhpcy5zdGF0ZSwgdGhpcy5wcm9wcyk7XG4gICAgICB2YXIgY3VycmVudElucHV0VmFsdWUgPSB0aGlzLnN0YXRlLmN1cnJlbnRJbnB1dFZhbHVlO1xuICAgICAgdmFyIHZhbHVlO1xuXG4gICAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gJycpIHtcbiAgICAgICAgdmFsdWUgPSBpbnB1dFZhbHVlOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzXG4gICAgICB9IGVsc2UgaWYgKGlzTmFOKE51bWJlcihpbnB1dFZhbHVlKSkpIHtcbiAgICAgICAgdmFsdWUgPSBjdXJyZW50SW5wdXRWYWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAoaW5wdXRWYWx1ZSA+PSBhbGxQYWdlcykge1xuICAgICAgICB2YWx1ZSA9IGFsbFBhZ2VzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSBOdW1iZXIoaW5wdXRWYWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2hvd1NpemVDaGFuZ2VyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNob3dTaXplQ2hhbmdlcigpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHNob3dTaXplQ2hhbmdlciA9IF90aGlzJHByb3BzMi5zaG93U2l6ZUNoYW5nZXIsXG4gICAgICAgICAgdG90YWwgPSBfdGhpcyRwcm9wczIudG90YWwsXG4gICAgICAgICAgdG90YWxCb3VuZGFyeVNob3dTaXplQ2hhbmdlciA9IF90aGlzJHByb3BzMi50b3RhbEJvdW5kYXJ5U2hvd1NpemVDaGFuZ2VyO1xuXG4gICAgICBpZiAodHlwZW9mIHNob3dTaXplQ2hhbmdlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHNob3dTaXplQ2hhbmdlcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRvdGFsID4gdG90YWxCb3VuZGFyeVNob3dTaXplQ2hhbmdlcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyUHJldlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJQcmV2KHByZXZQYWdlKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBwcmV2SWNvbiA9IF90aGlzJHByb3BzMy5wcmV2SWNvbixcbiAgICAgICAgICBpdGVtUmVuZGVyID0gX3RoaXMkcHJvcHMzLml0ZW1SZW5kZXI7XG4gICAgICB2YXIgcHJldkJ1dHRvbiA9IGl0ZW1SZW5kZXIocHJldlBhZ2UsICdwcmV2JywgdGhpcy5nZXRJdGVtSWNvbihwcmV2SWNvbiwgJ3ByZXYgcGFnZScpKTtcbiAgICAgIHZhciBkaXNhYmxlZCA9ICF0aGlzLmhhc1ByZXYoKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovaXNWYWxpZEVsZW1lbnQocHJldkJ1dHRvbikgPyAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KHByZXZCdXR0b24sIHtcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkXG4gICAgICB9KSA6IHByZXZCdXR0b247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlck5leHRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyTmV4dChuZXh0UGFnZSkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNCA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgbmV4dEljb24gPSBfdGhpcyRwcm9wczQubmV4dEljb24sXG4gICAgICAgICAgaXRlbVJlbmRlciA9IF90aGlzJHByb3BzNC5pdGVtUmVuZGVyO1xuICAgICAgdmFyIG5leHRCdXR0b24gPSBpdGVtUmVuZGVyKG5leHRQYWdlLCAnbmV4dCcsIHRoaXMuZ2V0SXRlbUljb24obmV4dEljb24sICduZXh0IHBhZ2UnKSk7XG4gICAgICB2YXIgZGlzYWJsZWQgPSAhdGhpcy5oYXNOZXh0KCk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL2lzVmFsaWRFbGVtZW50KG5leHRCdXR0b24pID8gLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChuZXh0QnV0dG9uLCB7XG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZFxuICAgICAgfSkgOiBuZXh0QnV0dG9uO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczUgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHByZWZpeENscyA9IF90aGlzJHByb3BzNS5wcmVmaXhDbHMsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM1LmNsYXNzTmFtZSxcbiAgICAgICAgICBzdHlsZSA9IF90aGlzJHByb3BzNS5zdHlsZSxcbiAgICAgICAgICBkaXNhYmxlZCA9IF90aGlzJHByb3BzNS5kaXNhYmxlZCxcbiAgICAgICAgICBoaWRlT25TaW5nbGVQYWdlID0gX3RoaXMkcHJvcHM1LmhpZGVPblNpbmdsZVBhZ2UsXG4gICAgICAgICAgdG90YWwgPSBfdGhpcyRwcm9wczUudG90YWwsXG4gICAgICAgICAgbG9jYWxlID0gX3RoaXMkcHJvcHM1LmxvY2FsZSxcbiAgICAgICAgICBzaG93UXVpY2tKdW1wZXIgPSBfdGhpcyRwcm9wczUuc2hvd1F1aWNrSnVtcGVyLFxuICAgICAgICAgIHNob3dMZXNzSXRlbXMgPSBfdGhpcyRwcm9wczUuc2hvd0xlc3NJdGVtcyxcbiAgICAgICAgICBzaG93VGl0bGUgPSBfdGhpcyRwcm9wczUuc2hvd1RpdGxlLFxuICAgICAgICAgIHNob3dUb3RhbCA9IF90aGlzJHByb3BzNS5zaG93VG90YWwsXG4gICAgICAgICAgc2ltcGxlID0gX3RoaXMkcHJvcHM1LnNpbXBsZSxcbiAgICAgICAgICBpdGVtUmVuZGVyID0gX3RoaXMkcHJvcHM1Lml0ZW1SZW5kZXIsXG4gICAgICAgICAgc2hvd1ByZXZOZXh0SnVtcGVycyA9IF90aGlzJHByb3BzNS5zaG93UHJldk5leHRKdW1wZXJzLFxuICAgICAgICAgIGp1bXBQcmV2SWNvbiA9IF90aGlzJHByb3BzNS5qdW1wUHJldkljb24sXG4gICAgICAgICAganVtcE5leHRJY29uID0gX3RoaXMkcHJvcHM1Lmp1bXBOZXh0SWNvbixcbiAgICAgICAgICBzZWxlY3RDb21wb25lbnRDbGFzcyA9IF90aGlzJHByb3BzNS5zZWxlY3RDb21wb25lbnRDbGFzcyxcbiAgICAgICAgICBzZWxlY3RQcmVmaXhDbHMgPSBfdGhpcyRwcm9wczUuc2VsZWN0UHJlZml4Q2xzLFxuICAgICAgICAgIHBhZ2VTaXplT3B0aW9ucyA9IF90aGlzJHByb3BzNS5wYWdlU2l6ZU9wdGlvbnM7XG4gICAgICB2YXIgX3RoaXMkc3RhdGUgPSB0aGlzLnN0YXRlLFxuICAgICAgICAgIGN1cnJlbnQgPSBfdGhpcyRzdGF0ZS5jdXJyZW50LFxuICAgICAgICAgIHBhZ2VTaXplID0gX3RoaXMkc3RhdGUucGFnZVNpemUsXG4gICAgICAgICAgY3VycmVudElucHV0VmFsdWUgPSBfdGhpcyRzdGF0ZS5jdXJyZW50SW5wdXRWYWx1ZTsgLy8gV2hlbiBoaWRlT25TaW5nbGVQYWdlIGlzIHRydWUgYW5kIHRoZXJlIGlzIG9ubHkgMSBwYWdlLCBoaWRlIHRoZSBwYWdlclxuXG4gICAgICBpZiAoaGlkZU9uU2luZ2xlUGFnZSA9PT0gdHJ1ZSAmJiB0b3RhbCA8PSBwYWdlU2l6ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIGFsbFBhZ2VzID0gY2FsY3VsYXRlUGFnZSh1bmRlZmluZWQsIHRoaXMuc3RhdGUsIHRoaXMucHJvcHMpO1xuICAgICAgdmFyIHBhZ2VyTGlzdCA9IFtdO1xuICAgICAgdmFyIGp1bXBQcmV2ID0gbnVsbDtcbiAgICAgIHZhciBqdW1wTmV4dCA9IG51bGw7XG4gICAgICB2YXIgZmlyc3RQYWdlciA9IG51bGw7XG4gICAgICB2YXIgbGFzdFBhZ2VyID0gbnVsbDtcbiAgICAgIHZhciBnb3RvQnV0dG9uID0gbnVsbDtcbiAgICAgIHZhciBnb0J1dHRvbiA9IHNob3dRdWlja0p1bXBlciAmJiBzaG93UXVpY2tKdW1wZXIuZ29CdXR0b247XG4gICAgICB2YXIgcGFnZUJ1ZmZlclNpemUgPSBzaG93TGVzc0l0ZW1zID8gMSA6IDI7XG4gICAgICB2YXIgcHJldlBhZ2UgPSBjdXJyZW50IC0gMSA+IDAgPyBjdXJyZW50IC0gMSA6IDA7XG4gICAgICB2YXIgbmV4dFBhZ2UgPSBjdXJyZW50ICsgMSA8IGFsbFBhZ2VzID8gY3VycmVudCArIDEgOiBhbGxQYWdlcztcbiAgICAgIHZhciBkYXRhT3JBcmlhQXR0cmlidXRlUHJvcHMgPSBPYmplY3Qua2V5cyh0aGlzLnByb3BzKS5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGtleSkge1xuICAgICAgICBpZiAoa2V5LnN1YnN0cigwLCA1KSA9PT0gJ2RhdGEtJyB8fCBrZXkuc3Vic3RyKDAsIDUpID09PSAnYXJpYS0nIHx8IGtleSA9PT0gJ3JvbGUnKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgcHJldltrZXldID0gX3RoaXMyLnByb3BzW2tleV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgIH0sIHt9KTtcblxuICAgICAgaWYgKHNpbXBsZSkge1xuICAgICAgICBpZiAoZ29CdXR0b24pIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGdvQnV0dG9uID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGdvdG9CdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlR29UTyxcbiAgICAgICAgICAgICAgb25LZXlVcDogdGhpcy5oYW5kbGVHb1RPXG4gICAgICAgICAgICB9LCBsb2NhbGUuanVtcF90b19jb25maXJtKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ290b0J1dHRvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlR29UTyxcbiAgICAgICAgICAgICAgb25LZXlVcDogdGhpcy5oYW5kbGVHb1RPXG4gICAgICAgICAgICB9LCBnb0J1dHRvbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZ290b0J1dHRvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwibGlcIiwge1xuICAgICAgICAgICAgdGl0bGU6IHNob3dUaXRsZSA/IFwiXCIuY29uY2F0KGxvY2FsZS5qdW1wX3RvKS5jb25jYXQoY3VycmVudCwgXCIvXCIpLmNvbmNhdChhbGxQYWdlcykgOiBudWxsLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXNpbXBsZS1wYWdlclwiKVxuICAgICAgICAgIH0sIGdvdG9CdXR0b24pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgX2V4dGVuZHMoe1xuICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhwcmVmaXhDbHMsIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc2ltcGxlXCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZGlzYWJsZWRcIiksIGRpc2FibGVkKSwgY2xhc3NOYW1lKSxcbiAgICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgICAgcmVmOiB0aGlzLnNhdmVQYWdpbmF0aW9uTm9kZVxuICAgICAgICB9LCBkYXRhT3JBcmlhQXR0cmlidXRlUHJvcHMpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIHtcbiAgICAgICAgICB0aXRsZTogc2hvd1RpdGxlID8gbG9jYWxlLnByZXZfcGFnZSA6IG51bGwsXG4gICAgICAgICAgb25DbGljazogdGhpcy5wcmV2LFxuICAgICAgICAgIHRhYkluZGV4OiB0aGlzLmhhc1ByZXYoKSA/IDAgOiBudWxsLFxuICAgICAgICAgIG9uS2V5UHJlc3M6IHRoaXMucnVuSWZFbnRlclByZXYsXG4gICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcHJldlwiKSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWRpc2FibGVkXCIpLCAhdGhpcy5oYXNQcmV2KCkpKSxcbiAgICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjogIXRoaXMuaGFzUHJldigpXG4gICAgICAgIH0sIHRoaXMucmVuZGVyUHJldihwcmV2UGFnZSkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIHtcbiAgICAgICAgICB0aXRsZTogc2hvd1RpdGxlID8gXCJcIi5jb25jYXQoY3VycmVudCwgXCIvXCIpLmNvbmNhdChhbGxQYWdlcykgOiBudWxsLFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zaW1wbGUtcGFnZXJcIilcbiAgICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdmFsdWU6IGN1cnJlbnRJbnB1dFZhbHVlLFxuICAgICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgICAgICBvbktleURvd246IHRoaXMuaGFuZGxlS2V5RG93bixcbiAgICAgICAgICBvbktleVVwOiB0aGlzLmhhbmRsZUtleVVwLFxuICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLmhhbmRsZUtleVVwLFxuICAgICAgICAgIHNpemU6IFwiM1wiXG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1zbGFzaFwiKVxuICAgICAgICB9LCBcIi9cIiksIGFsbFBhZ2VzKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaVwiLCB7XG4gICAgICAgICAgdGl0bGU6IHNob3dUaXRsZSA/IGxvY2FsZS5uZXh0X3BhZ2UgOiBudWxsLFxuICAgICAgICAgIG9uQ2xpY2s6IHRoaXMubmV4dCxcbiAgICAgICAgICB0YWJJbmRleDogdGhpcy5oYXNQcmV2KCkgPyAwIDogbnVsbCxcbiAgICAgICAgICBvbktleVByZXNzOiB0aGlzLnJ1bklmRW50ZXJOZXh0LFxuICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLW5leHRcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1kaXNhYmxlZFwiKSwgIXRoaXMuaGFzTmV4dCgpKSksXG4gICAgICAgICAgXCJhcmlhLWRpc2FibGVkXCI6ICF0aGlzLmhhc05leHQoKVxuICAgICAgICB9LCB0aGlzLnJlbmRlck5leHQobmV4dFBhZ2UpKSwgZ290b0J1dHRvbik7XG4gICAgICB9XG5cbiAgICAgIGlmIChhbGxQYWdlcyA8PSAzICsgcGFnZUJ1ZmZlclNpemUgKiAyKSB7XG4gICAgICAgIHZhciBwYWdlclByb3BzID0ge1xuICAgICAgICAgIGxvY2FsZTogbG9jYWxlLFxuICAgICAgICAgIHJvb3RQcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUNoYW5nZSxcbiAgICAgICAgICBvbktleVByZXNzOiB0aGlzLnJ1bklmRW50ZXIsXG4gICAgICAgICAgc2hvd1RpdGxlOiBzaG93VGl0bGUsXG4gICAgICAgICAgaXRlbVJlbmRlcjogaXRlbVJlbmRlclxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghYWxsUGFnZXMpIHtcbiAgICAgICAgICBwYWdlckxpc3QucHVzaCggLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUGFnZXIsIF9leHRlbmRzKHt9LCBwYWdlclByb3BzLCB7XG4gICAgICAgICAgICBrZXk6IFwibm9QYWdlclwiLFxuICAgICAgICAgICAgcGFnZTogYWxsUGFnZXMsXG4gICAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZGlzYWJsZWRcIilcbiAgICAgICAgICB9KSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gYWxsUGFnZXM7IGkgKz0gMSkge1xuICAgICAgICAgIHZhciBhY3RpdmUgPSBjdXJyZW50ID09PSBpO1xuICAgICAgICAgIHBhZ2VyTGlzdC5wdXNoKCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChQYWdlciwgX2V4dGVuZHMoe30sIHBhZ2VyUHJvcHMsIHtcbiAgICAgICAgICAgIGtleTogaSxcbiAgICAgICAgICAgIHBhZ2U6IGksXG4gICAgICAgICAgICBhY3RpdmU6IGFjdGl2ZVxuICAgICAgICAgIH0pKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwcmV2SXRlbVRpdGxlID0gc2hvd0xlc3NJdGVtcyA/IGxvY2FsZS5wcmV2XzMgOiBsb2NhbGUucHJldl81O1xuICAgICAgICB2YXIgbmV4dEl0ZW1UaXRsZSA9IHNob3dMZXNzSXRlbXMgPyBsb2NhbGUubmV4dF8zIDogbG9jYWxlLm5leHRfNTtcblxuICAgICAgICBpZiAoc2hvd1ByZXZOZXh0SnVtcGVycykge1xuICAgICAgICAgIGp1bXBQcmV2ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaVwiLCB7XG4gICAgICAgICAgICB0aXRsZTogc2hvd1RpdGxlID8gcHJldkl0ZW1UaXRsZSA6IG51bGwsXG4gICAgICAgICAgICBrZXk6IFwicHJldlwiLFxuICAgICAgICAgICAgb25DbGljazogdGhpcy5qdW1wUHJldixcbiAgICAgICAgICAgIHRhYkluZGV4OiBcIjBcIixcbiAgICAgICAgICAgIG9uS2V5UHJlc3M6IHRoaXMucnVuSWZFbnRlckp1bXBQcmV2LFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItanVtcC1wcmV2XCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItanVtcC1wcmV2LWN1c3RvbS1pY29uXCIpLCAhIWp1bXBQcmV2SWNvbikpXG4gICAgICAgICAgfSwgaXRlbVJlbmRlcih0aGlzLmdldEp1bXBQcmV2UGFnZSgpLCAnanVtcC1wcmV2JywgdGhpcy5nZXRJdGVtSWNvbihqdW1wUHJldkljb24sICdwcmV2IHBhZ2UnKSkpO1xuICAgICAgICAgIGp1bXBOZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaVwiLCB7XG4gICAgICAgICAgICB0aXRsZTogc2hvd1RpdGxlID8gbmV4dEl0ZW1UaXRsZSA6IG51bGwsXG4gICAgICAgICAgICBrZXk6IFwibmV4dFwiLFxuICAgICAgICAgICAgdGFiSW5kZXg6IFwiMFwiLFxuICAgICAgICAgICAgb25DbGljazogdGhpcy5qdW1wTmV4dCxcbiAgICAgICAgICAgIG9uS2V5UHJlc3M6IHRoaXMucnVuSWZFbnRlckp1bXBOZXh0LFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItanVtcC1uZXh0XCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItanVtcC1uZXh0LWN1c3RvbS1pY29uXCIpLCAhIWp1bXBOZXh0SWNvbikpXG4gICAgICAgICAgfSwgaXRlbVJlbmRlcih0aGlzLmdldEp1bXBOZXh0UGFnZSgpLCAnanVtcC1uZXh0JywgdGhpcy5nZXRJdGVtSWNvbihqdW1wTmV4dEljb24sICduZXh0IHBhZ2UnKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGFzdFBhZ2VyID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUGFnZXIsIHtcbiAgICAgICAgICBsb2NhbGU6IGxvY2FsZSxcbiAgICAgICAgICBsYXN0OiB0cnVlLFxuICAgICAgICAgIHJvb3RQcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUNoYW5nZSxcbiAgICAgICAgICBvbktleVByZXNzOiB0aGlzLnJ1bklmRW50ZXIsXG4gICAgICAgICAga2V5OiBhbGxQYWdlcyxcbiAgICAgICAgICBwYWdlOiBhbGxQYWdlcyxcbiAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgIHNob3dUaXRsZTogc2hvd1RpdGxlLFxuICAgICAgICAgIGl0ZW1SZW5kZXI6IGl0ZW1SZW5kZXJcbiAgICAgICAgfSk7XG4gICAgICAgIGZpcnN0UGFnZXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChQYWdlciwge1xuICAgICAgICAgIGxvY2FsZTogbG9jYWxlLFxuICAgICAgICAgIHJvb3RQcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUNoYW5nZSxcbiAgICAgICAgICBvbktleVByZXNzOiB0aGlzLnJ1bklmRW50ZXIsXG4gICAgICAgICAga2V5OiAxLFxuICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICBzaG93VGl0bGU6IHNob3dUaXRsZSxcbiAgICAgICAgICBpdGVtUmVuZGVyOiBpdGVtUmVuZGVyXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgbGVmdCA9IE1hdGgubWF4KDEsIGN1cnJlbnQgLSBwYWdlQnVmZmVyU2l6ZSk7XG4gICAgICAgIHZhciByaWdodCA9IE1hdGgubWluKGN1cnJlbnQgKyBwYWdlQnVmZmVyU2l6ZSwgYWxsUGFnZXMpO1xuXG4gICAgICAgIGlmIChjdXJyZW50IC0gMSA8PSBwYWdlQnVmZmVyU2l6ZSkge1xuICAgICAgICAgIHJpZ2h0ID0gMSArIHBhZ2VCdWZmZXJTaXplICogMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhbGxQYWdlcyAtIGN1cnJlbnQgPD0gcGFnZUJ1ZmZlclNpemUpIHtcbiAgICAgICAgICBsZWZ0ID0gYWxsUGFnZXMgLSBwYWdlQnVmZmVyU2l6ZSAqIDI7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBfaSA9IGxlZnQ7IF9pIDw9IHJpZ2h0OyBfaSArPSAxKSB7XG4gICAgICAgICAgdmFyIF9hY3RpdmUgPSBjdXJyZW50ID09PSBfaTtcblxuICAgICAgICAgIHBhZ2VyTGlzdC5wdXNoKCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChQYWdlciwge1xuICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGUsXG4gICAgICAgICAgICByb290UHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUNoYW5nZSxcbiAgICAgICAgICAgIG9uS2V5UHJlc3M6IHRoaXMucnVuSWZFbnRlcixcbiAgICAgICAgICAgIGtleTogX2ksXG4gICAgICAgICAgICBwYWdlOiBfaSxcbiAgICAgICAgICAgIGFjdGl2ZTogX2FjdGl2ZSxcbiAgICAgICAgICAgIHNob3dUaXRsZTogc2hvd1RpdGxlLFxuICAgICAgICAgICAgaXRlbVJlbmRlcjogaXRlbVJlbmRlclxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjdXJyZW50IC0gMSA+PSBwYWdlQnVmZmVyU2l6ZSAqIDIgJiYgY3VycmVudCAhPT0gMSArIDIpIHtcbiAgICAgICAgICBwYWdlckxpc3RbMF0gPSAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KHBhZ2VyTGlzdFswXSwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWl0ZW0tYWZ0ZXItanVtcC1wcmV2XCIpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcGFnZXJMaXN0LnVuc2hpZnQoanVtcFByZXYpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFsbFBhZ2VzIC0gY3VycmVudCA+PSBwYWdlQnVmZmVyU2l6ZSAqIDIgJiYgY3VycmVudCAhPT0gYWxsUGFnZXMgLSAyKSB7XG4gICAgICAgICAgcGFnZXJMaXN0W3BhZ2VyTGlzdC5sZW5ndGggLSAxXSA9IC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQocGFnZXJMaXN0W3BhZ2VyTGlzdC5sZW5ndGggLSAxXSwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWl0ZW0tYmVmb3JlLWp1bXAtbmV4dFwiKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHBhZ2VyTGlzdC5wdXNoKGp1bXBOZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsZWZ0ICE9PSAxKSB7XG4gICAgICAgICAgcGFnZXJMaXN0LnVuc2hpZnQoZmlyc3RQYWdlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmlnaHQgIT09IGFsbFBhZ2VzKSB7XG4gICAgICAgICAgcGFnZXJMaXN0LnB1c2gobGFzdFBhZ2VyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgdG90YWxUZXh0ID0gbnVsbDtcblxuICAgICAgaWYgKHNob3dUb3RhbCkge1xuICAgICAgICB0b3RhbFRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItdG90YWwtdGV4dFwiKVxuICAgICAgICB9LCBzaG93VG90YWwodG90YWwsIFt0b3RhbCA9PT0gMCA/IDAgOiAoY3VycmVudCAtIDEpICogcGFnZVNpemUgKyAxLCBjdXJyZW50ICogcGFnZVNpemUgPiB0b3RhbCA/IHRvdGFsIDogY3VycmVudCAqIHBhZ2VTaXplXSkpO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJldkRpc2FibGVkID0gIXRoaXMuaGFzUHJldigpIHx8ICFhbGxQYWdlcztcbiAgICAgIHZhciBuZXh0RGlzYWJsZWQgPSAhdGhpcy5oYXNOZXh0KCkgfHwgIWFsbFBhZ2VzO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgX2V4dGVuZHMoe1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMocHJlZml4Q2xzLCBjbGFzc05hbWUsIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1kaXNhYmxlZFwiKSwgZGlzYWJsZWQpKSxcbiAgICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgICB1bnNlbGVjdGFibGU6IFwidW5zZWxlY3RhYmxlXCIsXG4gICAgICAgIHJlZjogdGhpcy5zYXZlUGFnaW5hdGlvbk5vZGVcbiAgICAgIH0sIGRhdGFPckFyaWFBdHRyaWJ1dGVQcm9wcyksIHRvdGFsVGV4dCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaVwiLCB7XG4gICAgICAgIHRpdGxlOiBzaG93VGl0bGUgPyBsb2NhbGUucHJldl9wYWdlIDogbnVsbCxcbiAgICAgICAgb25DbGljazogdGhpcy5wcmV2LFxuICAgICAgICB0YWJJbmRleDogcHJldkRpc2FibGVkID8gbnVsbCA6IDAsXG4gICAgICAgIG9uS2V5UHJlc3M6IHRoaXMucnVuSWZFbnRlclByZXYsXG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXByZXZcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1kaXNhYmxlZFwiKSwgcHJldkRpc2FibGVkKSksXG4gICAgICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBwcmV2RGlzYWJsZWRcbiAgICAgIH0sIHRoaXMucmVuZGVyUHJldihwcmV2UGFnZSkpLCBwYWdlckxpc3QsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwibGlcIiwge1xuICAgICAgICB0aXRsZTogc2hvd1RpdGxlID8gbG9jYWxlLm5leHRfcGFnZSA6IG51bGwsXG4gICAgICAgIG9uQ2xpY2s6IHRoaXMubmV4dCxcbiAgICAgICAgdGFiSW5kZXg6IG5leHREaXNhYmxlZCA/IG51bGwgOiAwLFxuICAgICAgICBvbktleVByZXNzOiB0aGlzLnJ1bklmRW50ZXJOZXh0LFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1uZXh0XCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItZGlzYWJsZWRcIiksIG5leHREaXNhYmxlZCkpLFxuICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjogbmV4dERpc2FibGVkXG4gICAgICB9LCB0aGlzLnJlbmRlck5leHQobmV4dFBhZ2UpKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoT3B0aW9ucywge1xuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgIGxvY2FsZTogbG9jYWxlLFxuICAgICAgICByb290UHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgICAgIHNlbGVjdENvbXBvbmVudENsYXNzOiBzZWxlY3RDb21wb25lbnRDbGFzcyxcbiAgICAgICAgc2VsZWN0UHJlZml4Q2xzOiBzZWxlY3RQcmVmaXhDbHMsXG4gICAgICAgIGNoYW5nZVNpemU6IHRoaXMuZ2V0U2hvd1NpemVDaGFuZ2VyKCkgPyB0aGlzLmNoYW5nZVBhZ2VTaXplIDogbnVsbCxcbiAgICAgICAgY3VycmVudDogY3VycmVudCxcbiAgICAgICAgcGFnZVNpemU6IHBhZ2VTaXplLFxuICAgICAgICBwYWdlU2l6ZU9wdGlvbnM6IHBhZ2VTaXplT3B0aW9ucyxcbiAgICAgICAgcXVpY2tHbzogdGhpcy5zaG91bGREaXNwbGF5UXVpY2tKdW1wZXIoKSA/IHRoaXMuaGFuZGxlQ2hhbmdlIDogbnVsbCxcbiAgICAgICAgZ29CdXR0b246IGdvQnV0dG9uXG4gICAgICB9KSk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICB2YXIgbmV3U3RhdGUgPSB7fTtcblxuICAgICAgaWYgKCdjdXJyZW50JyBpbiBwcm9wcykge1xuICAgICAgICBuZXdTdGF0ZS5jdXJyZW50ID0gcHJvcHMuY3VycmVudDtcblxuICAgICAgICBpZiAocHJvcHMuY3VycmVudCAhPT0gcHJldlN0YXRlLmN1cnJlbnQpIHtcbiAgICAgICAgICBuZXdTdGF0ZS5jdXJyZW50SW5wdXRWYWx1ZSA9IG5ld1N0YXRlLmN1cnJlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCdwYWdlU2l6ZScgaW4gcHJvcHMgJiYgcHJvcHMucGFnZVNpemUgIT09IHByZXZTdGF0ZS5wYWdlU2l6ZSkge1xuICAgICAgICB2YXIgY3VycmVudCA9IHByZXZTdGF0ZS5jdXJyZW50O1xuICAgICAgICB2YXIgbmV3Q3VycmVudCA9IGNhbGN1bGF0ZVBhZ2UocHJvcHMucGFnZVNpemUsIHByZXZTdGF0ZSwgcHJvcHMpO1xuICAgICAgICBjdXJyZW50ID0gY3VycmVudCA+IG5ld0N1cnJlbnQgPyBuZXdDdXJyZW50IDogY3VycmVudDtcblxuICAgICAgICBpZiAoISgnY3VycmVudCcgaW4gcHJvcHMpKSB7XG4gICAgICAgICAgbmV3U3RhdGUuY3VycmVudCA9IGN1cnJlbnQ7XG4gICAgICAgICAgbmV3U3RhdGUuY3VycmVudElucHV0VmFsdWUgPSBjdXJyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3U3RhdGUucGFnZVNpemUgPSBwcm9wcy5wYWdlU2l6ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld1N0YXRlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBQYWdpbmF0aW9uO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5QYWdpbmF0aW9uLmRlZmF1bHRQcm9wcyA9IHtcbiAgZGVmYXVsdEN1cnJlbnQ6IDEsXG4gIHRvdGFsOiAwLFxuICBkZWZhdWx0UGFnZVNpemU6IDEwLFxuICBvbkNoYW5nZTogbm9vcCxcbiAgY2xhc3NOYW1lOiAnJyxcbiAgc2VsZWN0UHJlZml4Q2xzOiAncmMtc2VsZWN0JyxcbiAgcHJlZml4Q2xzOiAncmMtcGFnaW5hdGlvbicsXG4gIHNlbGVjdENvbXBvbmVudENsYXNzOiBudWxsLFxuICBoaWRlT25TaW5nbGVQYWdlOiBmYWxzZSxcbiAgc2hvd1ByZXZOZXh0SnVtcGVyczogdHJ1ZSxcbiAgc2hvd1F1aWNrSnVtcGVyOiBmYWxzZSxcbiAgc2hvd0xlc3NJdGVtczogZmFsc2UsXG4gIHNob3dUaXRsZTogdHJ1ZSxcbiAgb25TaG93U2l6ZUNoYW5nZTogbm9vcCxcbiAgbG9jYWxlOiBMT0NBTEUsXG4gIHN0eWxlOiB7fSxcbiAgaXRlbVJlbmRlcjogZGVmYXVsdEl0ZW1SZW5kZXIsXG4gIHRvdGFsQm91bmRhcnlTaG93U2l6ZUNoYW5nZXI6IDUwXG59O1xuZXhwb3J0IGRlZmF1bHQgUGFnaW5hdGlvbjsiLCJleHBvcnQgZGVmYXVsdCB7XG4gIC8vIE9wdGlvbnMuanN4XG4gIGl0ZW1zX3Blcl9wYWdlOiAn5p2hL+mhtScsXG4gIGp1bXBfdG86ICfot7Poh7MnLFxuICBqdW1wX3RvX2NvbmZpcm06ICfnoa7lrponLFxuICBwYWdlOiAn6aG1JyxcbiAgLy8gUGFnaW5hdGlvbi5qc3hcbiAgcHJldl9wYWdlOiAn5LiK5LiA6aG1JyxcbiAgbmV4dF9wYWdlOiAn5LiL5LiA6aG1JyxcbiAgcHJldl81OiAn5ZCR5YmNIDUg6aG1JyxcbiAgbmV4dF81OiAn5ZCR5ZCOIDUg6aG1JyxcbiAgcHJldl8zOiAn5ZCR5YmNIDMg6aG1JyxcbiAgbmV4dF8zOiAn5ZCR5ZCOIDMg6aG1J1xufTsiLCJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9nZXQodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ICE9PSBcInVuZGVmaW5lZFwiICYmIFJlZmxlY3QuZ2V0KSB7IF9nZXQgPSBSZWZsZWN0LmdldDsgfSBlbHNlIHsgX2dldCA9IGZ1bmN0aW9uIF9nZXQodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpIHsgdmFyIGJhc2UgPSBfc3VwZXJQcm9wQmFzZSh0YXJnZXQsIHByb3BlcnR5KTsgaWYgKCFiYXNlKSByZXR1cm47IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihiYXNlLCBwcm9wZXJ0eSk7IGlmIChkZXNjLmdldCkgeyByZXR1cm4gZGVzYy5nZXQuY2FsbChyZWNlaXZlcik7IH0gcmV0dXJuIGRlc2MudmFsdWU7IH07IH0gcmV0dXJuIF9nZXQodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIgfHwgdGFyZ2V0KTsgfVxuXG5mdW5jdGlvbiBfc3VwZXJQcm9wQmFzZShvYmplY3QsIHByb3BlcnR5KSB7IHdoaWxlICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpKSB7IG9iamVjdCA9IF9nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAob2JqZWN0ID09PSBudWxsKSBicmVhazsgfSByZXR1cm4gb2JqZWN0OyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbnZhciBlbmhhbmNlciA9IGZ1bmN0aW9uIGVuaGFuY2VyKFdyYXBwZWRDb21wb25lbnQpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1dyYXBwZWRDb21wb25lbnQpIHtcbiAgICBfaW5oZXJpdHMoUHJvZ3Jlc3MsIF9XcmFwcGVkQ29tcG9uZW50KTtcblxuICAgIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoUHJvZ3Jlc3MpO1xuXG4gICAgZnVuY3Rpb24gUHJvZ3Jlc3MoKSB7XG4gICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUHJvZ3Jlc3MpO1xuXG4gICAgICByZXR1cm4gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKFByb2dyZXNzLCBbe1xuICAgICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgICB2YXIgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdmFyIHVwZGF0ZWQgPSBmYWxzZTtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5wYXRocykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgdmFyIHBhdGggPSBfdGhpcy5wYXRoc1trZXldO1xuXG4gICAgICAgICAgaWYgKCFwYXRoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdXBkYXRlZCA9IHRydWU7XG4gICAgICAgICAgdmFyIHBhdGhTdHlsZSA9IHBhdGguc3R5bGU7XG4gICAgICAgICAgcGF0aFN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcuM3MsIC4zcywgLjNzLCAuMDZzJztcblxuICAgICAgICAgIGlmIChfdGhpcy5wcmV2VGltZVN0YW1wICYmIG5vdyAtIF90aGlzLnByZXZUaW1lU3RhbXAgPCAxMDApIHtcbiAgICAgICAgICAgIHBhdGhTdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAnMHMsIDBzJztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh1cGRhdGVkKSB7XG4gICAgICAgICAgdGhpcy5wcmV2VGltZVN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJyZW5kZXJcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAgIHJldHVybiBfZ2V0KF9nZXRQcm90b3R5cGVPZihQcm9ncmVzcy5wcm90b3R5cGUpLCBcInJlbmRlclwiLCB0aGlzKS5jYWxsKHRoaXMpO1xuICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBQcm9ncmVzcztcbiAgfShXcmFwcGVkQ29tcG9uZW50KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGVuaGFuY2VyOyIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5leHBvcnQgdmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lOiAnJyxcbiAgcGVyY2VudDogMCxcbiAgcHJlZml4Q2xzOiAncmMtcHJvZ3Jlc3MnLFxuICBzdHJva2VDb2xvcjogJyMyZGI3ZjUnLFxuICBzdHJva2VMaW5lY2FwOiAncm91bmQnLFxuICBzdHJva2VXaWR0aDogMSxcbiAgc3R5bGU6IHt9LFxuICB0cmFpbENvbG9yOiAnI0Q5RDlEOScsXG4gIHRyYWlsV2lkdGg6IDFcbn07XG52YXIgbWl4ZWRUeXBlID0gUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pO1xuZXhwb3J0IHZhciBwcm9wVHlwZXMgPSB7XG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcGVyY2VudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbbWl4ZWRUeXBlLCBQcm9wVHlwZXMuYXJyYXlPZihtaXhlZFR5cGUpXSksXG4gIHByZWZpeENsczogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3Ryb2tlQ29sb3I6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5vYmplY3RdKSksIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgc3Ryb2tlTGluZWNhcDogUHJvcFR5cGVzLm9uZU9mKFsnYnV0dCcsICdyb3VuZCcsICdzcXVhcmUnXSksXG4gIHN0cm9rZVdpZHRoOiBtaXhlZFR5cGUsXG4gIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICB0cmFpbENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0cmFpbFdpZHRoOiBtaXhlZFR5cGVcbn07IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uICgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGVuaGFuY2VyIGZyb20gJy4vZW5oYW5jZXInO1xuaW1wb3J0IHsgcHJvcFR5cGVzLCBkZWZhdWx0UHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxudmFyIExpbmUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKExpbmUsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoTGluZSk7XG5cbiAgZnVuY3Rpb24gTGluZSgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTGluZSk7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInBhdGhzXCIsIHt9KTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhMaW5lLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgIHBlcmNlbnQgPSBfdGhpcyRwcm9wcy5wZXJjZW50LFxuICAgICAgICAgIHByZWZpeENscyA9IF90aGlzJHByb3BzLnByZWZpeENscyxcbiAgICAgICAgICBzdHJva2VDb2xvciA9IF90aGlzJHByb3BzLnN0cm9rZUNvbG9yLFxuICAgICAgICAgIHN0cm9rZUxpbmVjYXAgPSBfdGhpcyRwcm9wcy5zdHJva2VMaW5lY2FwLFxuICAgICAgICAgIHN0cm9rZVdpZHRoID0gX3RoaXMkcHJvcHMuc3Ryb2tlV2lkdGgsXG4gICAgICAgICAgc3R5bGUgPSBfdGhpcyRwcm9wcy5zdHlsZSxcbiAgICAgICAgICB0cmFpbENvbG9yID0gX3RoaXMkcHJvcHMudHJhaWxDb2xvcixcbiAgICAgICAgICB0cmFpbFdpZHRoID0gX3RoaXMkcHJvcHMudHJhaWxXaWR0aCxcbiAgICAgICAgICB0cmFuc2l0aW9uID0gX3RoaXMkcHJvcHMudHJhbnNpdGlvbixcbiAgICAgICAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHMsIFtcImNsYXNzTmFtZVwiLCBcInBlcmNlbnRcIiwgXCJwcmVmaXhDbHNcIiwgXCJzdHJva2VDb2xvclwiLCBcInN0cm9rZUxpbmVjYXBcIiwgXCJzdHJva2VXaWR0aFwiLCBcInN0eWxlXCIsIFwidHJhaWxDb2xvclwiLCBcInRyYWlsV2lkdGhcIiwgXCJ0cmFuc2l0aW9uXCJdKTtcblxuICAgICAgZGVsZXRlIHJlc3RQcm9wcy5nYXBQb3NpdGlvbjtcbiAgICAgIHZhciBwZXJjZW50TGlzdCA9IEFycmF5LmlzQXJyYXkocGVyY2VudCkgPyBwZXJjZW50IDogW3BlcmNlbnRdO1xuICAgICAgdmFyIHN0cm9rZUNvbG9yTGlzdCA9IEFycmF5LmlzQXJyYXkoc3Ryb2tlQ29sb3IpID8gc3Ryb2tlQ29sb3IgOiBbc3Ryb2tlQ29sb3JdO1xuICAgICAgdmFyIGNlbnRlciA9IHN0cm9rZVdpZHRoIC8gMjtcbiAgICAgIHZhciByaWdodCA9IDEwMCAtIHN0cm9rZVdpZHRoIC8gMjtcbiAgICAgIHZhciBwYXRoU3RyaW5nID0gXCJNIFwiLmNvbmNhdChzdHJva2VMaW5lY2FwID09PSAncm91bmQnID8gY2VudGVyIDogMCwgXCIsXCIpLmNvbmNhdChjZW50ZXIsIFwiXFxuICAgICAgICAgICBMIFwiKS5jb25jYXQoc3Ryb2tlTGluZWNhcCA9PT0gJ3JvdW5kJyA/IHJpZ2h0IDogMTAwLCBcIixcIikuY29uY2F0KGNlbnRlcik7XG4gICAgICB2YXIgdmlld0JveFN0cmluZyA9IFwiMCAwIDEwMCBcIi5jb25jYXQoc3Ryb2tlV2lkdGgpO1xuICAgICAgdmFyIHN0YWNrUHRnID0gMDtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1saW5lIFwiKS5jb25jYXQoY2xhc3NOYW1lKSxcbiAgICAgICAgdmlld0JveDogdmlld0JveFN0cmluZyxcbiAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbzogXCJub25lXCIsXG4gICAgICAgIHN0eWxlOiBzdHlsZVxuICAgICAgfSwgcmVzdFByb3BzKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWxpbmUtdHJhaWxcIiksXG4gICAgICAgIGQ6IHBhdGhTdHJpbmcsXG4gICAgICAgIHN0cm9rZUxpbmVjYXA6IHN0cm9rZUxpbmVjYXAsXG4gICAgICAgIHN0cm9rZTogdHJhaWxDb2xvcixcbiAgICAgICAgc3Ryb2tlV2lkdGg6IHRyYWlsV2lkdGggfHwgc3Ryb2tlV2lkdGgsXG4gICAgICAgIGZpbGxPcGFjaXR5OiBcIjBcIlxuICAgICAgfSksIHBlcmNlbnRMaXN0Lm1hcChmdW5jdGlvbiAocHRnLCBpbmRleCkge1xuICAgICAgICB2YXIgcGF0aFN0eWxlID0ge1xuICAgICAgICAgIHN0cm9rZURhc2hhcnJheTogXCJcIi5jb25jYXQocHRnLCBcInB4LCAxMDBweFwiKSxcbiAgICAgICAgICBzdHJva2VEYXNob2Zmc2V0OiBcIi1cIi5jb25jYXQoc3RhY2tQdGcsIFwicHhcIiksXG4gICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNpdGlvbiB8fCAnc3Ryb2tlLWRhc2hvZmZzZXQgMC4zcyBlYXNlIDBzLCBzdHJva2UtZGFzaGFycmF5IC4zcyBlYXNlIDBzLCBzdHJva2UgMC4zcyBsaW5lYXInXG4gICAgICAgIH07XG4gICAgICAgIHZhciBjb2xvciA9IHN0cm9rZUNvbG9yTGlzdFtpbmRleF0gfHwgc3Ryb2tlQ29sb3JMaXN0W3N0cm9rZUNvbG9yTGlzdC5sZW5ndGggLSAxXTtcbiAgICAgICAgc3RhY2tQdGcgKz0gcHRnO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICAgICAgICBrZXk6IGluZGV4LFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1saW5lLXBhdGhcIiksXG4gICAgICAgICAgZDogcGF0aFN0cmluZyxcbiAgICAgICAgICBzdHJva2VMaW5lY2FwOiBzdHJva2VMaW5lY2FwLFxuICAgICAgICAgIHN0cm9rZTogY29sb3IsXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IHN0cm9rZVdpZHRoLFxuICAgICAgICAgIGZpbGxPcGFjaXR5OiBcIjBcIixcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZihwYXRoKSB7XG4gICAgICAgICAgICBfdGhpczIucGF0aHNbaW5kZXhdID0gcGF0aDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0eWxlOiBwYXRoU3R5bGVcbiAgICAgICAgfSk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIExpbmU7XG59KENvbXBvbmVudCk7XG5cbkxpbmUucHJvcFR5cGVzID0gcHJvcFR5cGVzO1xuTGluZS5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBlbmhhbmNlcihMaW5lKTsiLCJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uICgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG4vKiBlc2xpbnQgcmVhY3QvcHJvcC10eXBlczogMCAqL1xuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgZW5oYW5jZXIgZnJvbSAnLi9lbmhhbmNlcic7XG5pbXBvcnQgeyBwcm9wVHlwZXMsIGRlZmF1bHRQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xudmFyIGdyYWRpZW50U2VlZCA9IDA7XG5cbmZ1bmN0aW9uIHN0cmlwUGVyY2VudFRvTnVtYmVyKHBlcmNlbnQpIHtcbiAgcmV0dXJuICtwZXJjZW50LnJlcGxhY2UoJyUnLCAnJyk7XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkoc3ltQXJyYXkpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoc3ltQXJyYXkpID8gc3ltQXJyYXkgOiBbc3ltQXJyYXldO1xufVxuXG5mdW5jdGlvbiBnZXRQYXRoU3R5bGVzKG9mZnNldCwgcGVyY2VudCwgc3Ryb2tlQ29sb3IsIHN0cm9rZVdpZHRoKSB7XG4gIHZhciBnYXBEZWdyZWUgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDA7XG4gIHZhciBnYXBQb3NpdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ID8gYXJndW1lbnRzWzVdIDogdW5kZWZpbmVkO1xuICB2YXIgcmFkaXVzID0gNTAgLSBzdHJva2VXaWR0aCAvIDI7XG4gIHZhciBiZWdpblBvc2l0aW9uWCA9IDA7XG4gIHZhciBiZWdpblBvc2l0aW9uWSA9IC1yYWRpdXM7XG4gIHZhciBlbmRQb3NpdGlvblggPSAwO1xuICB2YXIgZW5kUG9zaXRpb25ZID0gLTIgKiByYWRpdXM7XG5cbiAgc3dpdGNoIChnYXBQb3NpdGlvbikge1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgYmVnaW5Qb3NpdGlvblggPSAtcmFkaXVzO1xuICAgICAgYmVnaW5Qb3NpdGlvblkgPSAwO1xuICAgICAgZW5kUG9zaXRpb25YID0gMiAqIHJhZGl1cztcbiAgICAgIGVuZFBvc2l0aW9uWSA9IDA7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIGJlZ2luUG9zaXRpb25YID0gcmFkaXVzO1xuICAgICAgYmVnaW5Qb3NpdGlvblkgPSAwO1xuICAgICAgZW5kUG9zaXRpb25YID0gLTIgKiByYWRpdXM7XG4gICAgICBlbmRQb3NpdGlvblkgPSAwO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgYmVnaW5Qb3NpdGlvblkgPSByYWRpdXM7XG4gICAgICBlbmRQb3NpdGlvblkgPSAyICogcmFkaXVzO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICB9XG5cbiAgdmFyIHBhdGhTdHJpbmcgPSBcIk0gNTAsNTAgbSBcIi5jb25jYXQoYmVnaW5Qb3NpdGlvblgsIFwiLFwiKS5jb25jYXQoYmVnaW5Qb3NpdGlvblksIFwiXFxuICAgYSBcIikuY29uY2F0KHJhZGl1cywgXCIsXCIpLmNvbmNhdChyYWRpdXMsIFwiIDAgMSAxIFwiKS5jb25jYXQoZW5kUG9zaXRpb25YLCBcIixcIikuY29uY2F0KC1lbmRQb3NpdGlvblksIFwiXFxuICAgYSBcIikuY29uY2F0KHJhZGl1cywgXCIsXCIpLmNvbmNhdChyYWRpdXMsIFwiIDAgMSAxIFwiKS5jb25jYXQoLWVuZFBvc2l0aW9uWCwgXCIsXCIpLmNvbmNhdChlbmRQb3NpdGlvblkpO1xuICB2YXIgbGVuID0gTWF0aC5QSSAqIDIgKiByYWRpdXM7XG4gIHZhciBwYXRoU3R5bGUgPSB7XG4gICAgc3Ryb2tlOiBzdHJva2VDb2xvcixcbiAgICBzdHJva2VEYXNoYXJyYXk6IFwiXCIuY29uY2F0KHBlcmNlbnQgLyAxMDAgKiAobGVuIC0gZ2FwRGVncmVlKSwgXCJweCBcIikuY29uY2F0KGxlbiwgXCJweFwiKSxcbiAgICBzdHJva2VEYXNob2Zmc2V0OiBcIi1cIi5jb25jYXQoZ2FwRGVncmVlIC8gMiArIG9mZnNldCAvIDEwMCAqIChsZW4gLSBnYXBEZWdyZWUpLCBcInB4XCIpLFxuICAgIHRyYW5zaXRpb246ICdzdHJva2UtZGFzaG9mZnNldCAuM3MgZWFzZSAwcywgc3Ryb2tlLWRhc2hhcnJheSAuM3MgZWFzZSAwcywgc3Ryb2tlIC4zcywgc3Ryb2tlLXdpZHRoIC4wNnMgZWFzZSAuM3MnIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICB9O1xuICByZXR1cm4ge1xuICAgIHBhdGhTdHJpbmc6IHBhdGhTdHJpbmcsXG4gICAgcGF0aFN0eWxlOiBwYXRoU3R5bGVcbiAgfTtcbn1cblxudmFyIENpcmNsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQ2lyY2xlLCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKENpcmNsZSk7XG5cbiAgZnVuY3Rpb24gQ2lyY2xlKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDaXJjbGUpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwYXRoc1wiLCB7fSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiZ3JhZGllbnRJZFwiLCAwKTtcblxuICAgIF90aGlzLmdyYWRpZW50SWQgPSBncmFkaWVudFNlZWQ7XG4gICAgZ3JhZGllbnRTZWVkICs9IDE7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENpcmNsZSwgW3tcbiAgICBrZXk6IFwiZ2V0U3Rva2VMaXN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFN0b2tlTGlzdCgpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHByZWZpeENscyA9IF90aGlzJHByb3BzLnByZWZpeENscyxcbiAgICAgICAgICBwZXJjZW50ID0gX3RoaXMkcHJvcHMucGVyY2VudCxcbiAgICAgICAgICBzdHJva2VDb2xvciA9IF90aGlzJHByb3BzLnN0cm9rZUNvbG9yLFxuICAgICAgICAgIHN0cm9rZVdpZHRoID0gX3RoaXMkcHJvcHMuc3Ryb2tlV2lkdGgsXG4gICAgICAgICAgc3Ryb2tlTGluZWNhcCA9IF90aGlzJHByb3BzLnN0cm9rZUxpbmVjYXAsXG4gICAgICAgICAgZ2FwRGVncmVlID0gX3RoaXMkcHJvcHMuZ2FwRGVncmVlLFxuICAgICAgICAgIGdhcFBvc2l0aW9uID0gX3RoaXMkcHJvcHMuZ2FwUG9zaXRpb247XG4gICAgICB2YXIgcGVyY2VudExpc3QgPSB0b0FycmF5KHBlcmNlbnQpO1xuICAgICAgdmFyIHN0cm9rZUNvbG9yTGlzdCA9IHRvQXJyYXkoc3Ryb2tlQ29sb3IpO1xuICAgICAgdmFyIHN0YWNrUHRnID0gMDtcbiAgICAgIHJldHVybiBwZXJjZW50TGlzdC5tYXAoZnVuY3Rpb24gKHB0ZywgaW5kZXgpIHtcbiAgICAgICAgdmFyIGNvbG9yID0gc3Ryb2tlQ29sb3JMaXN0W2luZGV4XSB8fCBzdHJva2VDb2xvckxpc3Rbc3Ryb2tlQ29sb3JMaXN0Lmxlbmd0aCAtIDFdO1xuICAgICAgICB2YXIgc3Ryb2tlID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGNvbG9yKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyBcInVybCgjXCIuY29uY2F0KHByZWZpeENscywgXCItZ3JhZGllbnQtXCIpLmNvbmNhdChfdGhpczIuZ3JhZGllbnRJZCwgXCIpXCIpIDogJyc7XG5cbiAgICAgICAgdmFyIF9nZXRQYXRoU3R5bGVzID0gZ2V0UGF0aFN0eWxlcyhzdGFja1B0ZywgcHRnLCBjb2xvciwgc3Ryb2tlV2lkdGgsIGdhcERlZ3JlZSwgZ2FwUG9zaXRpb24pLFxuICAgICAgICAgICAgcGF0aFN0cmluZyA9IF9nZXRQYXRoU3R5bGVzLnBhdGhTdHJpbmcsXG4gICAgICAgICAgICBwYXRoU3R5bGUgPSBfZ2V0UGF0aFN0eWxlcy5wYXRoU3R5bGU7XG5cbiAgICAgICAgc3RhY2tQdGcgKz0gcHRnO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICAgICAgICBrZXk6IGluZGV4LFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1jaXJjbGUtcGF0aFwiKSxcbiAgICAgICAgICBkOiBwYXRoU3RyaW5nLFxuICAgICAgICAgIHN0cm9rZTogc3Ryb2tlLFxuICAgICAgICAgIHN0cm9rZUxpbmVjYXA6IHN0cm9rZUxpbmVjYXAsXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IHN0cm9rZVdpZHRoLFxuICAgICAgICAgIG9wYWNpdHk6IHB0ZyA9PT0gMCA/IDAgOiAxLFxuICAgICAgICAgIGZpbGxPcGFjaXR5OiBcIjBcIixcbiAgICAgICAgICBzdHlsZTogcGF0aFN0eWxlLFxuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKHBhdGgpIHtcbiAgICAgICAgICAgIF90aGlzMi5wYXRoc1tpbmRleF0gPSBwYXRoO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHByZWZpeENscyA9IF90aGlzJHByb3BzMi5wcmVmaXhDbHMsXG4gICAgICAgICAgc3Ryb2tlV2lkdGggPSBfdGhpcyRwcm9wczIuc3Ryb2tlV2lkdGgsXG4gICAgICAgICAgdHJhaWxXaWR0aCA9IF90aGlzJHByb3BzMi50cmFpbFdpZHRoLFxuICAgICAgICAgIGdhcERlZ3JlZSA9IF90aGlzJHByb3BzMi5nYXBEZWdyZWUsXG4gICAgICAgICAgZ2FwUG9zaXRpb24gPSBfdGhpcyRwcm9wczIuZ2FwUG9zaXRpb24sXG4gICAgICAgICAgdHJhaWxDb2xvciA9IF90aGlzJHByb3BzMi50cmFpbENvbG9yLFxuICAgICAgICAgIHN0cm9rZUxpbmVjYXAgPSBfdGhpcyRwcm9wczIuc3Ryb2tlTGluZWNhcCxcbiAgICAgICAgICBzdHlsZSA9IF90aGlzJHByb3BzMi5zdHlsZSxcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczIuY2xhc3NOYW1lLFxuICAgICAgICAgIHN0cm9rZUNvbG9yID0gX3RoaXMkcHJvcHMyLnN0cm9rZUNvbG9yLFxuICAgICAgICAgIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wczIsIFtcInByZWZpeENsc1wiLCBcInN0cm9rZVdpZHRoXCIsIFwidHJhaWxXaWR0aFwiLCBcImdhcERlZ3JlZVwiLCBcImdhcFBvc2l0aW9uXCIsIFwidHJhaWxDb2xvclwiLCBcInN0cm9rZUxpbmVjYXBcIiwgXCJzdHlsZVwiLCBcImNsYXNzTmFtZVwiLCBcInN0cm9rZUNvbG9yXCJdKTtcblxuICAgICAgdmFyIF9nZXRQYXRoU3R5bGVzMiA9IGdldFBhdGhTdHlsZXMoMCwgMTAwLCB0cmFpbENvbG9yLCBzdHJva2VXaWR0aCwgZ2FwRGVncmVlLCBnYXBQb3NpdGlvbiksXG4gICAgICAgICAgcGF0aFN0cmluZyA9IF9nZXRQYXRoU3R5bGVzMi5wYXRoU3RyaW5nLFxuICAgICAgICAgIHBhdGhTdHlsZSA9IF9nZXRQYXRoU3R5bGVzMi5wYXRoU3R5bGU7XG5cbiAgICAgIGRlbGV0ZSByZXN0UHJvcHMucGVyY2VudDtcbiAgICAgIHZhciBzdHJva2VDb2xvckxpc3QgPSB0b0FycmF5KHN0cm9rZUNvbG9yKTtcbiAgICAgIHZhciBncmFkaWVudCA9IHN0cm9rZUNvbG9yTGlzdC5maW5kKGZ1bmN0aW9uIChjb2xvcikge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGNvbG9yKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1jaXJjbGUgXCIpLmNvbmNhdChjbGFzc05hbWUpLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAxMDAgMTAwXCIsXG4gICAgICAgIHN0eWxlOiBzdHlsZVxuICAgICAgfSwgcmVzdFByb3BzKSwgZ3JhZGllbnQgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkZWZzXCIsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwibGluZWFyR3JhZGllbnRcIiwge1xuICAgICAgICBpZDogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ncmFkaWVudC1cIikuY29uY2F0KHRoaXMuZ3JhZGllbnRJZCksXG4gICAgICAgIHgxOiBcIjEwMCVcIixcbiAgICAgICAgeTE6IFwiMCVcIixcbiAgICAgICAgeDI6IFwiMCVcIixcbiAgICAgICAgeTI6IFwiMCVcIlxuICAgICAgfSwgT2JqZWN0LmtleXMoZ3JhZGllbnQpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHN0cmlwUGVyY2VudFRvTnVtYmVyKGEpIC0gc3RyaXBQZXJjZW50VG9OdW1iZXIoYik7XG4gICAgICB9KS5tYXAoZnVuY3Rpb24gKGtleSwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3RvcFwiLCB7XG4gICAgICAgICAga2V5OiBpbmRleCxcbiAgICAgICAgICBvZmZzZXQ6IGtleSxcbiAgICAgICAgICBzdG9wQ29sb3I6IGdyYWRpZW50W2tleV1cbiAgICAgICAgfSk7XG4gICAgICB9KSkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItY2lyY2xlLXRyYWlsXCIpLFxuICAgICAgICBkOiBwYXRoU3RyaW5nLFxuICAgICAgICBzdHJva2U6IHRyYWlsQ29sb3IsXG4gICAgICAgIHN0cm9rZUxpbmVjYXA6IHN0cm9rZUxpbmVjYXAsXG4gICAgICAgIHN0cm9rZVdpZHRoOiB0cmFpbFdpZHRoIHx8IHN0cm9rZVdpZHRoLFxuICAgICAgICBmaWxsT3BhY2l0eTogXCIwXCIsXG4gICAgICAgIHN0eWxlOiBwYXRoU3R5bGVcbiAgICAgIH0pLCB0aGlzLmdldFN0b2tlTGlzdCgpLnJldmVyc2UoKSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENpcmNsZTtcbn0oQ29tcG9uZW50KTtcblxuQ2lyY2xlLnByb3BUeXBlcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcFR5cGVzKSwge30sIHtcbiAgZ2FwUG9zaXRpb246IFByb3BUeXBlcy5vbmVPZihbJ3RvcCcsICdib3R0b20nLCAnbGVmdCcsICdyaWdodCddKVxufSk7XG5DaXJjbGUuZGVmYXVsdFByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0UHJvcHMpLCB7fSwge1xuICBnYXBQb3NpdGlvbjogJ3RvcCdcbn0pO1xuZXhwb3J0IGRlZmF1bHQgZW5oYW5jZXIoQ2lyY2xlKTsiLCJpbXBvcnQgTGluZSBmcm9tICcuL0xpbmUnO1xuaW1wb3J0IENpcmNsZSBmcm9tICcuL0NpcmNsZSc7XG5leHBvcnQgeyBMaW5lLCBDaXJjbGUgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgTGluZTogTGluZSxcbiAgQ2lyY2xlOiBDaXJjbGVcbn07IiwiLyoqXG4gKiBUYWtlIGlucHV0IGZyb20gWzAsIG5dIGFuZCByZXR1cm4gaXQgYXMgWzAsIDFdXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBib3VuZDAxKG4sIG1heCkge1xuICAgIGlmIChpc09uZVBvaW50WmVybyhuKSkge1xuICAgICAgICBuID0gJzEwMCUnO1xuICAgIH1cbiAgICB2YXIgaXNQZXJjZW50ID0gaXNQZXJjZW50YWdlKG4pO1xuICAgIG4gPSBtYXggPT09IDM2MCA/IG4gOiBNYXRoLm1pbihtYXgsIE1hdGgubWF4KDAsIHBhcnNlRmxvYXQobikpKTtcbiAgICAvLyBBdXRvbWF0aWNhbGx5IGNvbnZlcnQgcGVyY2VudGFnZSBpbnRvIG51bWJlclxuICAgIGlmIChpc1BlcmNlbnQpIHtcbiAgICAgICAgbiA9IHBhcnNlSW50KFN0cmluZyhuICogbWF4KSwgMTApIC8gMTAwO1xuICAgIH1cbiAgICAvLyBIYW5kbGUgZmxvYXRpbmcgcG9pbnQgcm91bmRpbmcgZXJyb3JzXG4gICAgaWYgKE1hdGguYWJzKG4gLSBtYXgpIDwgMC4wMDAwMDEpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIC8vIENvbnZlcnQgaW50byBbMCwgMV0gcmFuZ2UgaWYgaXQgaXNuJ3QgYWxyZWFkeVxuICAgIGlmIChtYXggPT09IDM2MCkge1xuICAgICAgICAvLyBJZiBuIGlzIGEgaHVlIGdpdmVuIGluIGRlZ3JlZXMsXG4gICAgICAgIC8vIHdyYXAgYXJvdW5kIG91dC1vZi1yYW5nZSB2YWx1ZXMgaW50byBbMCwgMzYwXSByYW5nZVxuICAgICAgICAvLyB0aGVuIGNvbnZlcnQgaW50byBbMCwgMV0uXG4gICAgICAgIG4gPSAobiA8IDAgPyAobiAlIG1heCkgKyBtYXggOiBuICUgbWF4KSAvIHBhcnNlRmxvYXQoU3RyaW5nKG1heCkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8gSWYgbiBub3QgYSBodWUgZ2l2ZW4gaW4gZGVncmVlc1xuICAgICAgICAvLyBDb252ZXJ0IGludG8gWzAsIDFdIHJhbmdlIGlmIGl0IGlzbid0IGFscmVhZHkuXG4gICAgICAgIG4gPSAobiAlIG1heCkgLyBwYXJzZUZsb2F0KFN0cmluZyhtYXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG59XG4vKipcbiAqIEZvcmNlIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMVxuICogQGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xhbXAwMSh2YWwpIHtcbiAgICByZXR1cm4gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgdmFsKSk7XG59XG4vKipcbiAqIE5lZWQgdG8gaGFuZGxlIDEuMCBhcyAxMDAlLCBzaW5jZSBvbmNlIGl0IGlzIGEgbnVtYmVyLCB0aGVyZSBpcyBubyBkaWZmZXJlbmNlIGJldHdlZW4gaXQgYW5kIDFcbiAqIDxodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzc0MjIwNzIvamF2YXNjcmlwdC1ob3ctdG8tZGV0ZWN0LW51bWJlci1hcy1hLWRlY2ltYWwtaW5jbHVkaW5nLTEtMD5cbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT25lUG9pbnRaZXJvKG4pIHtcbiAgICByZXR1cm4gdHlwZW9mIG4gPT09ICdzdHJpbmcnICYmIG4uaW5kZXhPZignLicpICE9PSAtMSAmJiBwYXJzZUZsb2F0KG4pID09PSAxO1xufVxuLyoqXG4gKiBDaGVjayB0byBzZWUgaWYgc3RyaW5nIHBhc3NlZCBpbiBpcyBhIHBlcmNlbnRhZ2VcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGVyY2VudGFnZShuKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBuID09PSAnc3RyaW5nJyAmJiBuLmluZGV4T2YoJyUnKSAhPT0gLTE7XG59XG4vKipcbiAqIFJldHVybiBhIHZhbGlkIGFscGhhIHZhbHVlIFswLDFdIHdpdGggYWxsIGludmFsaWQgdmFsdWVzIGJlaW5nIHNldCB0byAxXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBib3VuZEFscGhhKGEpIHtcbiAgICBhID0gcGFyc2VGbG9hdChhKTtcbiAgICBpZiAoaXNOYU4oYSkgfHwgYSA8IDAgfHwgYSA+IDEpIHtcbiAgICAgICAgYSA9IDE7XG4gICAgfVxuICAgIHJldHVybiBhO1xufVxuLyoqXG4gKiBSZXBsYWNlIGEgZGVjaW1hbCB3aXRoIGl0J3MgcGVyY2VudGFnZSB2YWx1ZVxuICogQGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvUGVyY2VudGFnZShuKSB7XG4gICAgaWYgKG4gPD0gMSkge1xuICAgICAgICByZXR1cm4gTnVtYmVyKG4pICogMTAwICsgXCIlXCI7XG4gICAgfVxuICAgIHJldHVybiBuO1xufVxuLyoqXG4gKiBGb3JjZSBhIGhleCB2YWx1ZSB0byBoYXZlIDIgY2hhcmFjdGVyc1xuICogQGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFkMihjKSB7XG4gICAgcmV0dXJuIGMubGVuZ3RoID09PSAxID8gJzAnICsgYyA6IFN0cmluZyhjKTtcbn1cbiIsImltcG9ydCB7IGJvdW5kMDEsIHBhZDIgfSBmcm9tICcuL3V0aWwnO1xuLy8gYHJnYlRvSHNsYCwgYHJnYlRvSHN2YCwgYGhzbFRvUmdiYCwgYGhzdlRvUmdiYCBtb2RpZmllZCBmcm9tOlxuLy8gPGh0dHA6Ly9tamlqYWNrc29uLmNvbS8yMDA4LzAyL3JnYi10by1oc2wtYW5kLXJnYi10by1oc3YtY29sb3ItbW9kZWwtY29udmVyc2lvbi1hbGdvcml0aG1zLWluLWphdmFzY3JpcHQ+XG4vKipcbiAqIEhhbmRsZSBib3VuZHMgLyBwZXJjZW50YWdlIGNoZWNraW5nIHRvIGNvbmZvcm0gdG8gQ1NTIGNvbG9yIHNwZWNcbiAqIDxodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWNvbG9yLz5cbiAqICpBc3N1bWVzOiogciwgZywgYiBpbiBbMCwgMjU1XSBvciBbMCwgMV1cbiAqICpSZXR1cm5zOiogeyByLCBnLCBiIH0gaW4gWzAsIDI1NV1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJnYlRvUmdiKHIsIGcsIGIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICByOiBib3VuZDAxKHIsIDI1NSkgKiAyNTUsXG4gICAgICAgIGc6IGJvdW5kMDEoZywgMjU1KSAqIDI1NSxcbiAgICAgICAgYjogYm91bmQwMShiLCAyNTUpICogMjU1LFxuICAgIH07XG59XG4vKipcbiAqIENvbnZlcnRzIGFuIFJHQiBjb2xvciB2YWx1ZSB0byBIU0wuXG4gKiAqQXNzdW1lczoqIHIsIGcsIGFuZCBiIGFyZSBjb250YWluZWQgaW4gWzAsIDI1NV0gb3IgWzAsIDFdXG4gKiAqUmV0dXJuczoqIHsgaCwgcywgbCB9IGluIFswLDFdXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZ2JUb0hzbChyLCBnLCBiKSB7XG4gICAgciA9IGJvdW5kMDEociwgMjU1KTtcbiAgICBnID0gYm91bmQwMShnLCAyNTUpO1xuICAgIGIgPSBib3VuZDAxKGIsIDI1NSk7XG4gICAgdmFyIG1heCA9IE1hdGgubWF4KHIsIGcsIGIpO1xuICAgIHZhciBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTtcbiAgICB2YXIgaCA9IDA7XG4gICAgdmFyIHMgPSAwO1xuICAgIHZhciBsID0gKG1heCArIG1pbikgLyAyO1xuICAgIGlmIChtYXggPT09IG1pbikge1xuICAgICAgICBzID0gMDtcbiAgICAgICAgaCA9IDA7IC8vIGFjaHJvbWF0aWNcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBkID0gbWF4IC0gbWluO1xuICAgICAgICBzID0gbCA+IDAuNSA/IGQgLyAoMiAtIG1heCAtIG1pbikgOiBkIC8gKG1heCArIG1pbik7XG4gICAgICAgIHN3aXRjaCAobWF4KSB7XG4gICAgICAgICAgICBjYXNlIHI6XG4gICAgICAgICAgICAgICAgaCA9IChnIC0gYikgLyBkICsgKGcgPCBiID8gNiA6IDApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBnOlxuICAgICAgICAgICAgICAgIGggPSAoYiAtIHIpIC8gZCArIDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGI6XG4gICAgICAgICAgICAgICAgaCA9IChyIC0gZykgLyBkICsgNDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaCAvPSA2O1xuICAgIH1cbiAgICByZXR1cm4geyBoOiBoLCBzOiBzLCBsOiBsIH07XG59XG5mdW5jdGlvbiBodWUycmdiKHAsIHEsIHQpIHtcbiAgICBpZiAodCA8IDApIHtcbiAgICAgICAgdCArPSAxO1xuICAgIH1cbiAgICBpZiAodCA+IDEpIHtcbiAgICAgICAgdCAtPSAxO1xuICAgIH1cbiAgICBpZiAodCA8IDEgLyA2KSB7XG4gICAgICAgIHJldHVybiBwICsgKHEgLSBwKSAqICg2ICogdCk7XG4gICAgfVxuICAgIGlmICh0IDwgMSAvIDIpIHtcbiAgICAgICAgcmV0dXJuIHE7XG4gICAgfVxuICAgIGlmICh0IDwgMiAvIDMpIHtcbiAgICAgICAgcmV0dXJuIHAgKyAocSAtIHApICogKDIgLyAzIC0gdCkgKiA2O1xuICAgIH1cbiAgICByZXR1cm4gcDtcbn1cbi8qKlxuICogQ29udmVydHMgYW4gSFNMIGNvbG9yIHZhbHVlIHRvIFJHQi5cbiAqXG4gKiAqQXNzdW1lczoqIGggaXMgY29udGFpbmVkIGluIFswLCAxXSBvciBbMCwgMzYwXSBhbmQgcyBhbmQgbCBhcmUgY29udGFpbmVkIFswLCAxXSBvciBbMCwgMTAwXVxuICogKlJldHVybnM6KiB7IHIsIGcsIGIgfSBpbiB0aGUgc2V0IFswLCAyNTVdXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoc2xUb1JnYihoLCBzLCBsKSB7XG4gICAgdmFyIHI7XG4gICAgdmFyIGc7XG4gICAgdmFyIGI7XG4gICAgaCA9IGJvdW5kMDEoaCwgMzYwKTtcbiAgICBzID0gYm91bmQwMShzLCAxMDApO1xuICAgIGwgPSBib3VuZDAxKGwsIDEwMCk7XG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgICAgLy8gYWNocm9tYXRpY1xuICAgICAgICBnID0gbDtcbiAgICAgICAgYiA9IGw7XG4gICAgICAgIHIgPSBsO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHEgPSBsIDwgMC41ID8gbCAqICgxICsgcykgOiBsICsgcyAtIGwgKiBzO1xuICAgICAgICB2YXIgcCA9IDIgKiBsIC0gcTtcbiAgICAgICAgciA9IGh1ZTJyZ2IocCwgcSwgaCArIDEgLyAzKTtcbiAgICAgICAgZyA9IGh1ZTJyZ2IocCwgcSwgaCk7XG4gICAgICAgIGIgPSBodWUycmdiKHAsIHEsIGggLSAxIC8gMyk7XG4gICAgfVxuICAgIHJldHVybiB7IHI6IHIgKiAyNTUsIGc6IGcgKiAyNTUsIGI6IGIgKiAyNTUgfTtcbn1cbi8qKlxuICogQ29udmVydHMgYW4gUkdCIGNvbG9yIHZhbHVlIHRvIEhTVlxuICpcbiAqICpBc3N1bWVzOiogciwgZywgYW5kIGIgYXJlIGNvbnRhaW5lZCBpbiB0aGUgc2V0IFswLCAyNTVdIG9yIFswLCAxXVxuICogKlJldHVybnM6KiB7IGgsIHMsIHYgfSBpbiBbMCwxXVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmdiVG9Ic3YociwgZywgYikge1xuICAgIHIgPSBib3VuZDAxKHIsIDI1NSk7XG4gICAgZyA9IGJvdW5kMDEoZywgMjU1KTtcbiAgICBiID0gYm91bmQwMShiLCAyNTUpO1xuICAgIHZhciBtYXggPSBNYXRoLm1heChyLCBnLCBiKTtcbiAgICB2YXIgbWluID0gTWF0aC5taW4ociwgZywgYik7XG4gICAgdmFyIGggPSAwO1xuICAgIHZhciB2ID0gbWF4O1xuICAgIHZhciBkID0gbWF4IC0gbWluO1xuICAgIHZhciBzID0gbWF4ID09PSAwID8gMCA6IGQgLyBtYXg7XG4gICAgaWYgKG1heCA9PT0gbWluKSB7XG4gICAgICAgIGggPSAwOyAvLyBhY2hyb21hdGljXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKG1heCkge1xuICAgICAgICAgICAgY2FzZSByOlxuICAgICAgICAgICAgICAgIGggPSAoZyAtIGIpIC8gZCArIChnIDwgYiA/IDYgOiAwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgZzpcbiAgICAgICAgICAgICAgICBoID0gKGIgLSByKSAvIGQgKyAyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBiOlxuICAgICAgICAgICAgICAgIGggPSAociAtIGcpIC8gZCArIDQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGggLz0gNjtcbiAgICB9XG4gICAgcmV0dXJuIHsgaDogaCwgczogcywgdjogdiB9O1xufVxuLyoqXG4gKiBDb252ZXJ0cyBhbiBIU1YgY29sb3IgdmFsdWUgdG8gUkdCLlxuICpcbiAqICpBc3N1bWVzOiogaCBpcyBjb250YWluZWQgaW4gWzAsIDFdIG9yIFswLCAzNjBdIGFuZCBzIGFuZCB2IGFyZSBjb250YWluZWQgaW4gWzAsIDFdIG9yIFswLCAxMDBdXG4gKiAqUmV0dXJuczoqIHsgciwgZywgYiB9IGluIHRoZSBzZXQgWzAsIDI1NV1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhzdlRvUmdiKGgsIHMsIHYpIHtcbiAgICBoID0gYm91bmQwMShoLCAzNjApICogNjtcbiAgICBzID0gYm91bmQwMShzLCAxMDApO1xuICAgIHYgPSBib3VuZDAxKHYsIDEwMCk7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yKGgpO1xuICAgIHZhciBmID0gaCAtIGk7XG4gICAgdmFyIHAgPSB2ICogKDEgLSBzKTtcbiAgICB2YXIgcSA9IHYgKiAoMSAtIGYgKiBzKTtcbiAgICB2YXIgdCA9IHYgKiAoMSAtICgxIC0gZikgKiBzKTtcbiAgICB2YXIgbW9kID0gaSAlIDY7XG4gICAgdmFyIHIgPSBbdiwgcSwgcCwgcCwgdCwgdl1bbW9kXTtcbiAgICB2YXIgZyA9IFt0LCB2LCB2LCBxLCBwLCBwXVttb2RdO1xuICAgIHZhciBiID0gW3AsIHAsIHQsIHYsIHYsIHFdW21vZF07XG4gICAgcmV0dXJuIHsgcjogciAqIDI1NSwgZzogZyAqIDI1NSwgYjogYiAqIDI1NSB9O1xufVxuLyoqXG4gKiBDb252ZXJ0cyBhbiBSR0IgY29sb3IgdG8gaGV4XG4gKlxuICogQXNzdW1lcyByLCBnLCBhbmQgYiBhcmUgY29udGFpbmVkIGluIHRoZSBzZXQgWzAsIDI1NV1cbiAqIFJldHVybnMgYSAzIG9yIDYgY2hhcmFjdGVyIGhleFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmdiVG9IZXgociwgZywgYiwgYWxsb3czQ2hhcikge1xuICAgIHZhciBoZXggPSBbXG4gICAgICAgIHBhZDIoTWF0aC5yb3VuZChyKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKE1hdGgucm91bmQoZykudG9TdHJpbmcoMTYpKSxcbiAgICAgICAgcGFkMihNYXRoLnJvdW5kKGIpLnRvU3RyaW5nKDE2KSksXG4gICAgXTtcbiAgICAvLyBSZXR1cm4gYSAzIGNoYXJhY3RlciBoZXggaWYgcG9zc2libGVcbiAgICBpZiAoYWxsb3czQ2hhciAmJlxuICAgICAgICBoZXhbMF0uc3RhcnRzV2l0aChoZXhbMF0uY2hhckF0KDEpKSAmJlxuICAgICAgICBoZXhbMV0uc3RhcnRzV2l0aChoZXhbMV0uY2hhckF0KDEpKSAmJlxuICAgICAgICBoZXhbMl0uc3RhcnRzV2l0aChoZXhbMl0uY2hhckF0KDEpKSkge1xuICAgICAgICByZXR1cm4gaGV4WzBdLmNoYXJBdCgwKSArIGhleFsxXS5jaGFyQXQoMCkgKyBoZXhbMl0uY2hhckF0KDApO1xuICAgIH1cbiAgICByZXR1cm4gaGV4LmpvaW4oJycpO1xufVxuLyoqXG4gKiBDb252ZXJ0cyBhbiBSR0JBIGNvbG9yIHBsdXMgYWxwaGEgdHJhbnNwYXJlbmN5IHRvIGhleFxuICpcbiAqIEFzc3VtZXMgciwgZywgYiBhcmUgY29udGFpbmVkIGluIHRoZSBzZXQgWzAsIDI1NV0gYW5kXG4gKiBhIGluIFswLCAxXS4gUmV0dXJucyBhIDQgb3IgOCBjaGFyYWN0ZXIgcmdiYSBoZXhcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1wYXJhbXNcbmV4cG9ydCBmdW5jdGlvbiByZ2JhVG9IZXgociwgZywgYiwgYSwgYWxsb3c0Q2hhcikge1xuICAgIHZhciBoZXggPSBbXG4gICAgICAgIHBhZDIoTWF0aC5yb3VuZChyKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKE1hdGgucm91bmQoZykudG9TdHJpbmcoMTYpKSxcbiAgICAgICAgcGFkMihNYXRoLnJvdW5kKGIpLnRvU3RyaW5nKDE2KSksXG4gICAgICAgIHBhZDIoY29udmVydERlY2ltYWxUb0hleChhKSksXG4gICAgXTtcbiAgICAvLyBSZXR1cm4gYSA0IGNoYXJhY3RlciBoZXggaWYgcG9zc2libGVcbiAgICBpZiAoYWxsb3c0Q2hhciAmJlxuICAgICAgICBoZXhbMF0uc3RhcnRzV2l0aChoZXhbMF0uY2hhckF0KDEpKSAmJlxuICAgICAgICBoZXhbMV0uc3RhcnRzV2l0aChoZXhbMV0uY2hhckF0KDEpKSAmJlxuICAgICAgICBoZXhbMl0uc3RhcnRzV2l0aChoZXhbMl0uY2hhckF0KDEpKSAmJlxuICAgICAgICBoZXhbM10uc3RhcnRzV2l0aChoZXhbM10uY2hhckF0KDEpKSkge1xuICAgICAgICByZXR1cm4gaGV4WzBdLmNoYXJBdCgwKSArIGhleFsxXS5jaGFyQXQoMCkgKyBoZXhbMl0uY2hhckF0KDApICsgaGV4WzNdLmNoYXJBdCgwKTtcbiAgICB9XG4gICAgcmV0dXJuIGhleC5qb2luKCcnKTtcbn1cbi8qKlxuICogQ29udmVydHMgYW4gUkdCQSBjb2xvciB0byBhbiBBUkdCIEhleDggc3RyaW5nXG4gKiBSYXJlbHkgdXNlZCwgYnV0IHJlcXVpcmVkIGZvciBcInRvRmlsdGVyKClcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmdiYVRvQXJnYkhleChyLCBnLCBiLCBhKSB7XG4gICAgdmFyIGhleCA9IFtcbiAgICAgICAgcGFkMihjb252ZXJ0RGVjaW1hbFRvSGV4KGEpKSxcbiAgICAgICAgcGFkMihNYXRoLnJvdW5kKHIpLnRvU3RyaW5nKDE2KSksXG4gICAgICAgIHBhZDIoTWF0aC5yb3VuZChnKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKE1hdGgucm91bmQoYikudG9TdHJpbmcoMTYpKSxcbiAgICBdO1xuICAgIHJldHVybiBoZXguam9pbignJyk7XG59XG4vKiogQ29udmVydHMgYSBkZWNpbWFsIHRvIGEgaGV4IHZhbHVlICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydERlY2ltYWxUb0hleChkKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChkKSAqIDI1NSkudG9TdHJpbmcoMTYpO1xufVxuLyoqIENvbnZlcnRzIGEgaGV4IHZhbHVlIHRvIGEgZGVjaW1hbCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRIZXhUb0RlY2ltYWwoaCkge1xuICAgIHJldHVybiBwYXJzZUludEZyb21IZXgoaCkgLyAyNTU7XG59XG4vKiogUGFyc2UgYSBiYXNlLTE2IGhleCB2YWx1ZSBpbnRvIGEgYmFzZS0xMCBpbnRlZ2VyICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJbnRGcm9tSGV4KHZhbCkge1xuICAgIHJldHVybiBwYXJzZUludCh2YWwsIDE2KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXJJbnB1dFRvT2JqZWN0KGNvbG9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcjogY29sb3IgPj4gMTYsXG4gICAgICAgIGc6IChjb2xvciAmIDB4ZmYwMCkgPj4gOCxcbiAgICAgICAgYjogY29sb3IgJiAweGZmLFxuICAgIH07XG59XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vYmFoYW1hczEwL2Nzcy1jb2xvci1uYW1lcy9ibG9iL21hc3Rlci9jc3MtY29sb3ItbmFtZXMuanNvblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCB2YXIgbmFtZXMgPSB7XG4gICAgYWxpY2VibHVlOiAnI2YwZjhmZicsXG4gICAgYW50aXF1ZXdoaXRlOiAnI2ZhZWJkNycsXG4gICAgYXF1YTogJyMwMGZmZmYnLFxuICAgIGFxdWFtYXJpbmU6ICcjN2ZmZmQ0JyxcbiAgICBhenVyZTogJyNmMGZmZmYnLFxuICAgIGJlaWdlOiAnI2Y1ZjVkYycsXG4gICAgYmlzcXVlOiAnI2ZmZTRjNCcsXG4gICAgYmxhY2s6ICcjMDAwMDAwJyxcbiAgICBibGFuY2hlZGFsbW9uZDogJyNmZmViY2QnLFxuICAgIGJsdWU6ICcjMDAwMGZmJyxcbiAgICBibHVldmlvbGV0OiAnIzhhMmJlMicsXG4gICAgYnJvd246ICcjYTUyYTJhJyxcbiAgICBidXJseXdvb2Q6ICcjZGViODg3JyxcbiAgICBjYWRldGJsdWU6ICcjNWY5ZWEwJyxcbiAgICBjaGFydHJldXNlOiAnIzdmZmYwMCcsXG4gICAgY2hvY29sYXRlOiAnI2QyNjkxZScsXG4gICAgY29yYWw6ICcjZmY3ZjUwJyxcbiAgICBjb3JuZmxvd2VyYmx1ZTogJyM2NDk1ZWQnLFxuICAgIGNvcm5zaWxrOiAnI2ZmZjhkYycsXG4gICAgY3JpbXNvbjogJyNkYzE0M2MnLFxuICAgIGN5YW46ICcjMDBmZmZmJyxcbiAgICBkYXJrYmx1ZTogJyMwMDAwOGInLFxuICAgIGRhcmtjeWFuOiAnIzAwOGI4YicsXG4gICAgZGFya2dvbGRlbnJvZDogJyNiODg2MGInLFxuICAgIGRhcmtncmF5OiAnI2E5YTlhOScsXG4gICAgZGFya2dyZWVuOiAnIzAwNjQwMCcsXG4gICAgZGFya2dyZXk6ICcjYTlhOWE5JyxcbiAgICBkYXJra2hha2k6ICcjYmRiNzZiJyxcbiAgICBkYXJrbWFnZW50YTogJyM4YjAwOGInLFxuICAgIGRhcmtvbGl2ZWdyZWVuOiAnIzU1NmIyZicsXG4gICAgZGFya29yYW5nZTogJyNmZjhjMDAnLFxuICAgIGRhcmtvcmNoaWQ6ICcjOTkzMmNjJyxcbiAgICBkYXJrcmVkOiAnIzhiMDAwMCcsXG4gICAgZGFya3NhbG1vbjogJyNlOTk2N2EnLFxuICAgIGRhcmtzZWFncmVlbjogJyM4ZmJjOGYnLFxuICAgIGRhcmtzbGF0ZWJsdWU6ICcjNDgzZDhiJyxcbiAgICBkYXJrc2xhdGVncmF5OiAnIzJmNGY0ZicsXG4gICAgZGFya3NsYXRlZ3JleTogJyMyZjRmNGYnLFxuICAgIGRhcmt0dXJxdW9pc2U6ICcjMDBjZWQxJyxcbiAgICBkYXJrdmlvbGV0OiAnIzk0MDBkMycsXG4gICAgZGVlcHBpbms6ICcjZmYxNDkzJyxcbiAgICBkZWVwc2t5Ymx1ZTogJyMwMGJmZmYnLFxuICAgIGRpbWdyYXk6ICcjNjk2OTY5JyxcbiAgICBkaW1ncmV5OiAnIzY5Njk2OScsXG4gICAgZG9kZ2VyYmx1ZTogJyMxZTkwZmYnLFxuICAgIGZpcmVicmljazogJyNiMjIyMjInLFxuICAgIGZsb3JhbHdoaXRlOiAnI2ZmZmFmMCcsXG4gICAgZm9yZXN0Z3JlZW46ICcjMjI4YjIyJyxcbiAgICBmdWNoc2lhOiAnI2ZmMDBmZicsXG4gICAgZ2FpbnNib3JvOiAnI2RjZGNkYycsXG4gICAgZ2hvc3R3aGl0ZTogJyNmOGY4ZmYnLFxuICAgIGdvbGRlbnJvZDogJyNkYWE1MjAnLFxuICAgIGdvbGQ6ICcjZmZkNzAwJyxcbiAgICBncmF5OiAnIzgwODA4MCcsXG4gICAgZ3JlZW46ICcjMDA4MDAwJyxcbiAgICBncmVlbnllbGxvdzogJyNhZGZmMmYnLFxuICAgIGdyZXk6ICcjODA4MDgwJyxcbiAgICBob25leWRldzogJyNmMGZmZjAnLFxuICAgIGhvdHBpbms6ICcjZmY2OWI0JyxcbiAgICBpbmRpYW5yZWQ6ICcjY2Q1YzVjJyxcbiAgICBpbmRpZ286ICcjNGIwMDgyJyxcbiAgICBpdm9yeTogJyNmZmZmZjAnLFxuICAgIGtoYWtpOiAnI2YwZTY4YycsXG4gICAgbGF2ZW5kZXJibHVzaDogJyNmZmYwZjUnLFxuICAgIGxhdmVuZGVyOiAnI2U2ZTZmYScsXG4gICAgbGF3bmdyZWVuOiAnIzdjZmMwMCcsXG4gICAgbGVtb25jaGlmZm9uOiAnI2ZmZmFjZCcsXG4gICAgbGlnaHRibHVlOiAnI2FkZDhlNicsXG4gICAgbGlnaHRjb3JhbDogJyNmMDgwODAnLFxuICAgIGxpZ2h0Y3lhbjogJyNlMGZmZmYnLFxuICAgIGxpZ2h0Z29sZGVucm9keWVsbG93OiAnI2ZhZmFkMicsXG4gICAgbGlnaHRncmF5OiAnI2QzZDNkMycsXG4gICAgbGlnaHRncmVlbjogJyM5MGVlOTAnLFxuICAgIGxpZ2h0Z3JleTogJyNkM2QzZDMnLFxuICAgIGxpZ2h0cGluazogJyNmZmI2YzEnLFxuICAgIGxpZ2h0c2FsbW9uOiAnI2ZmYTA3YScsXG4gICAgbGlnaHRzZWFncmVlbjogJyMyMGIyYWEnLFxuICAgIGxpZ2h0c2t5Ymx1ZTogJyM4N2NlZmEnLFxuICAgIGxpZ2h0c2xhdGVncmF5OiAnIzc3ODg5OScsXG4gICAgbGlnaHRzbGF0ZWdyZXk6ICcjNzc4ODk5JyxcbiAgICBsaWdodHN0ZWVsYmx1ZTogJyNiMGM0ZGUnLFxuICAgIGxpZ2h0eWVsbG93OiAnI2ZmZmZlMCcsXG4gICAgbGltZTogJyMwMGZmMDAnLFxuICAgIGxpbWVncmVlbjogJyMzMmNkMzInLFxuICAgIGxpbmVuOiAnI2ZhZjBlNicsXG4gICAgbWFnZW50YTogJyNmZjAwZmYnLFxuICAgIG1hcm9vbjogJyM4MDAwMDAnLFxuICAgIG1lZGl1bWFxdWFtYXJpbmU6ICcjNjZjZGFhJyxcbiAgICBtZWRpdW1ibHVlOiAnIzAwMDBjZCcsXG4gICAgbWVkaXVtb3JjaGlkOiAnI2JhNTVkMycsXG4gICAgbWVkaXVtcHVycGxlOiAnIzkzNzBkYicsXG4gICAgbWVkaXVtc2VhZ3JlZW46ICcjM2NiMzcxJyxcbiAgICBtZWRpdW1zbGF0ZWJsdWU6ICcjN2I2OGVlJyxcbiAgICBtZWRpdW1zcHJpbmdncmVlbjogJyMwMGZhOWEnLFxuICAgIG1lZGl1bXR1cnF1b2lzZTogJyM0OGQxY2MnLFxuICAgIG1lZGl1bXZpb2xldHJlZDogJyNjNzE1ODUnLFxuICAgIG1pZG5pZ2h0Ymx1ZTogJyMxOTE5NzAnLFxuICAgIG1pbnRjcmVhbTogJyNmNWZmZmEnLFxuICAgIG1pc3R5cm9zZTogJyNmZmU0ZTEnLFxuICAgIG1vY2Nhc2luOiAnI2ZmZTRiNScsXG4gICAgbmF2YWpvd2hpdGU6ICcjZmZkZWFkJyxcbiAgICBuYXZ5OiAnIzAwMDA4MCcsXG4gICAgb2xkbGFjZTogJyNmZGY1ZTYnLFxuICAgIG9saXZlOiAnIzgwODAwMCcsXG4gICAgb2xpdmVkcmFiOiAnIzZiOGUyMycsXG4gICAgb3JhbmdlOiAnI2ZmYTUwMCcsXG4gICAgb3JhbmdlcmVkOiAnI2ZmNDUwMCcsXG4gICAgb3JjaGlkOiAnI2RhNzBkNicsXG4gICAgcGFsZWdvbGRlbnJvZDogJyNlZWU4YWEnLFxuICAgIHBhbGVncmVlbjogJyM5OGZiOTgnLFxuICAgIHBhbGV0dXJxdW9pc2U6ICcjYWZlZWVlJyxcbiAgICBwYWxldmlvbGV0cmVkOiAnI2RiNzA5MycsXG4gICAgcGFwYXlhd2hpcDogJyNmZmVmZDUnLFxuICAgIHBlYWNocHVmZjogJyNmZmRhYjknLFxuICAgIHBlcnU6ICcjY2Q4NTNmJyxcbiAgICBwaW5rOiAnI2ZmYzBjYicsXG4gICAgcGx1bTogJyNkZGEwZGQnLFxuICAgIHBvd2RlcmJsdWU6ICcjYjBlMGU2JyxcbiAgICBwdXJwbGU6ICcjODAwMDgwJyxcbiAgICByZWJlY2NhcHVycGxlOiAnIzY2MzM5OScsXG4gICAgcmVkOiAnI2ZmMDAwMCcsXG4gICAgcm9zeWJyb3duOiAnI2JjOGY4ZicsXG4gICAgcm95YWxibHVlOiAnIzQxNjllMScsXG4gICAgc2FkZGxlYnJvd246ICcjOGI0NTEzJyxcbiAgICBzYWxtb246ICcjZmE4MDcyJyxcbiAgICBzYW5keWJyb3duOiAnI2Y0YTQ2MCcsXG4gICAgc2VhZ3JlZW46ICcjMmU4YjU3JyxcbiAgICBzZWFzaGVsbDogJyNmZmY1ZWUnLFxuICAgIHNpZW5uYTogJyNhMDUyMmQnLFxuICAgIHNpbHZlcjogJyNjMGMwYzAnLFxuICAgIHNreWJsdWU6ICcjODdjZWViJyxcbiAgICBzbGF0ZWJsdWU6ICcjNmE1YWNkJyxcbiAgICBzbGF0ZWdyYXk6ICcjNzA4MDkwJyxcbiAgICBzbGF0ZWdyZXk6ICcjNzA4MDkwJyxcbiAgICBzbm93OiAnI2ZmZmFmYScsXG4gICAgc3ByaW5nZ3JlZW46ICcjMDBmZjdmJyxcbiAgICBzdGVlbGJsdWU6ICcjNDY4MmI0JyxcbiAgICB0YW46ICcjZDJiNDhjJyxcbiAgICB0ZWFsOiAnIzAwODA4MCcsXG4gICAgdGhpc3RsZTogJyNkOGJmZDgnLFxuICAgIHRvbWF0bzogJyNmZjYzNDcnLFxuICAgIHR1cnF1b2lzZTogJyM0MGUwZDAnLFxuICAgIHZpb2xldDogJyNlZTgyZWUnLFxuICAgIHdoZWF0OiAnI2Y1ZGViMycsXG4gICAgd2hpdGU6ICcjZmZmZmZmJyxcbiAgICB3aGl0ZXNtb2tlOiAnI2Y1ZjVmNScsXG4gICAgeWVsbG93OiAnI2ZmZmYwMCcsXG4gICAgeWVsbG93Z3JlZW46ICcjOWFjZDMyJyxcbn07XG4iLCJpbXBvcnQgeyBjb252ZXJ0SGV4VG9EZWNpbWFsLCBoc2xUb1JnYiwgaHN2VG9SZ2IsIHBhcnNlSW50RnJvbUhleCwgcmdiVG9SZ2IgfSBmcm9tICcuL2NvbnZlcnNpb24nO1xuaW1wb3J0IHsgbmFtZXMgfSBmcm9tICcuL2Nzcy1jb2xvci1uYW1lcyc7XG5pbXBvcnQgeyBib3VuZEFscGhhLCBjb252ZXJ0VG9QZXJjZW50YWdlIH0gZnJvbSAnLi91dGlsJztcbi8qKlxuICogR2l2ZW4gYSBzdHJpbmcgb3Igb2JqZWN0LCBjb252ZXJ0IHRoYXQgaW5wdXQgdG8gUkdCXG4gKlxuICogUG9zc2libGUgc3RyaW5nIGlucHV0czpcbiAqIGBgYFxuICogXCJyZWRcIlxuICogXCIjZjAwXCIgb3IgXCJmMDBcIlxuICogXCIjZmYwMDAwXCIgb3IgXCJmZjAwMDBcIlxuICogXCIjZmYwMDAwMDBcIiBvciBcImZmMDAwMDAwXCJcbiAqIFwicmdiIDI1NSAwIDBcIiBvciBcInJnYiAoMjU1LCAwLCAwKVwiXG4gKiBcInJnYiAxLjAgMCAwXCIgb3IgXCJyZ2IgKDEsIDAsIDApXCJcbiAqIFwicmdiYSAoMjU1LCAwLCAwLCAxKVwiIG9yIFwicmdiYSAyNTUsIDAsIDAsIDFcIlxuICogXCJyZ2JhICgxLjAsIDAsIDAsIDEpXCIgb3IgXCJyZ2JhIDEuMCwgMCwgMCwgMVwiXG4gKiBcImhzbCgwLCAxMDAlLCA1MCUpXCIgb3IgXCJoc2wgMCAxMDAlIDUwJVwiXG4gKiBcImhzbGEoMCwgMTAwJSwgNTAlLCAxKVwiIG9yIFwiaHNsYSAwIDEwMCUgNTAlLCAxXCJcbiAqIFwiaHN2KDAsIDEwMCUsIDEwMCUpXCIgb3IgXCJoc3YgMCAxMDAlIDEwMCVcIlxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnB1dFRvUkdCKGNvbG9yKSB7XG4gICAgdmFyIHJnYiA9IHsgcjogMCwgZzogMCwgYjogMCB9O1xuICAgIHZhciBhID0gMTtcbiAgICB2YXIgcyA9IG51bGw7XG4gICAgdmFyIHYgPSBudWxsO1xuICAgIHZhciBsID0gbnVsbDtcbiAgICB2YXIgb2sgPSBmYWxzZTtcbiAgICB2YXIgZm9ybWF0ID0gZmFsc2U7XG4gICAgaWYgKHR5cGVvZiBjb2xvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29sb3IgPSBzdHJpbmdJbnB1dFRvT2JqZWN0KGNvbG9yKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjb2xvciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKGlzVmFsaWRDU1NVbml0KGNvbG9yLnIpICYmIGlzVmFsaWRDU1NVbml0KGNvbG9yLmcpICYmIGlzVmFsaWRDU1NVbml0KGNvbG9yLmIpKSB7XG4gICAgICAgICAgICByZ2IgPSByZ2JUb1JnYihjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iKTtcbiAgICAgICAgICAgIG9rID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvcm1hdCA9IFN0cmluZyhjb2xvci5yKS5zdWJzdHIoLTEpID09PSAnJScgPyAncHJnYicgOiAncmdiJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1ZhbGlkQ1NTVW5pdChjb2xvci5oKSAmJiBpc1ZhbGlkQ1NTVW5pdChjb2xvci5zKSAmJiBpc1ZhbGlkQ1NTVW5pdChjb2xvci52KSkge1xuICAgICAgICAgICAgcyA9IGNvbnZlcnRUb1BlcmNlbnRhZ2UoY29sb3Iucyk7XG4gICAgICAgICAgICB2ID0gY29udmVydFRvUGVyY2VudGFnZShjb2xvci52KTtcbiAgICAgICAgICAgIHJnYiA9IGhzdlRvUmdiKGNvbG9yLmgsIHMsIHYpO1xuICAgICAgICAgICAgb2sgPSB0cnVlO1xuICAgICAgICAgICAgZm9ybWF0ID0gJ2hzdic7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNWYWxpZENTU1VuaXQoY29sb3IuaCkgJiYgaXNWYWxpZENTU1VuaXQoY29sb3IucykgJiYgaXNWYWxpZENTU1VuaXQoY29sb3IubCkpIHtcbiAgICAgICAgICAgIHMgPSBjb252ZXJ0VG9QZXJjZW50YWdlKGNvbG9yLnMpO1xuICAgICAgICAgICAgbCA9IGNvbnZlcnRUb1BlcmNlbnRhZ2UoY29sb3IubCk7XG4gICAgICAgICAgICByZ2IgPSBoc2xUb1JnYihjb2xvci5oLCBzLCBsKTtcbiAgICAgICAgICAgIG9rID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvcm1hdCA9ICdoc2wnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY29sb3IsICdhJykpIHtcbiAgICAgICAgICAgIGEgPSBjb2xvci5hO1xuICAgICAgICB9XG4gICAgfVxuICAgIGEgPSBib3VuZEFscGhhKGEpO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9rOiBvayxcbiAgICAgICAgZm9ybWF0OiBjb2xvci5mb3JtYXQgfHwgZm9ybWF0LFxuICAgICAgICByOiBNYXRoLm1pbigyNTUsIE1hdGgubWF4KHJnYi5yLCAwKSksXG4gICAgICAgIGc6IE1hdGgubWluKDI1NSwgTWF0aC5tYXgocmdiLmcsIDApKSxcbiAgICAgICAgYjogTWF0aC5taW4oMjU1LCBNYXRoLm1heChyZ2IuYiwgMCkpLFxuICAgICAgICBhOiBhLFxuICAgIH07XG59XG4vLyA8aHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy12YWx1ZXMvI2ludGVnZXJzPlxudmFyIENTU19JTlRFR0VSID0gJ1stXFxcXCtdP1xcXFxkKyU/Jztcbi8vIDxodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXZhbHVlcy8jbnVtYmVyLXZhbHVlPlxudmFyIENTU19OVU1CRVIgPSAnWy1cXFxcK10/XFxcXGQqXFxcXC5cXFxcZCslPyc7XG4vLyBBbGxvdyBwb3NpdGl2ZS9uZWdhdGl2ZSBpbnRlZ2VyL251bWJlci4gIERvbid0IGNhcHR1cmUgdGhlIGVpdGhlci9vciwganVzdCB0aGUgZW50aXJlIG91dGNvbWUuXG52YXIgQ1NTX1VOSVQgPSBcIig/OlwiICsgQ1NTX05VTUJFUiArIFwiKXwoPzpcIiArIENTU19JTlRFR0VSICsgXCIpXCI7XG4vLyBBY3R1YWwgbWF0Y2hpbmcuXG4vLyBQYXJlbnRoZXNlcyBhbmQgY29tbWFzIGFyZSBvcHRpb25hbCwgYnV0IG5vdCByZXF1aXJlZC5cbi8vIFdoaXRlc3BhY2UgY2FuIHRha2UgdGhlIHBsYWNlIG9mIGNvbW1hcyBvciBvcGVuaW5nIHBhcmVuXG52YXIgUEVSTUlTU0lWRV9NQVRDSDMgPSBcIltcXFxcc3xcXFxcKF0rKFwiICsgQ1NTX1VOSVQgKyBcIilbLHxcXFxcc10rKFwiICsgQ1NTX1VOSVQgKyBcIilbLHxcXFxcc10rKFwiICsgQ1NTX1VOSVQgKyBcIilcXFxccypcXFxcKT9cIjtcbnZhciBQRVJNSVNTSVZFX01BVENINCA9IFwiW1xcXFxzfFxcXFwoXSsoXCIgKyBDU1NfVU5JVCArIFwiKVssfFxcXFxzXSsoXCIgKyBDU1NfVU5JVCArIFwiKVssfFxcXFxzXSsoXCIgKyBDU1NfVU5JVCArIFwiKVssfFxcXFxzXSsoXCIgKyBDU1NfVU5JVCArIFwiKVxcXFxzKlxcXFwpP1wiO1xudmFyIG1hdGNoZXJzID0ge1xuICAgIENTU19VTklUOiBuZXcgUmVnRXhwKENTU19VTklUKSxcbiAgICByZ2I6IG5ldyBSZWdFeHAoJ3JnYicgKyBQRVJNSVNTSVZFX01BVENIMyksXG4gICAgcmdiYTogbmV3IFJlZ0V4cCgncmdiYScgKyBQRVJNSVNTSVZFX01BVENINCksXG4gICAgaHNsOiBuZXcgUmVnRXhwKCdoc2wnICsgUEVSTUlTU0lWRV9NQVRDSDMpLFxuICAgIGhzbGE6IG5ldyBSZWdFeHAoJ2hzbGEnICsgUEVSTUlTU0lWRV9NQVRDSDQpLFxuICAgIGhzdjogbmV3IFJlZ0V4cCgnaHN2JyArIFBFUk1JU1NJVkVfTUFUQ0gzKSxcbiAgICBoc3ZhOiBuZXcgUmVnRXhwKCdoc3ZhJyArIFBFUk1JU1NJVkVfTUFUQ0g0KSxcbiAgICBoZXgzOiAvXiM/KFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pJC8sXG4gICAgaGV4NjogL14jPyhbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KSQvLFxuICAgIGhleDQ6IC9eIz8oWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pJC8sXG4gICAgaGV4ODogL14jPyhbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkkLyxcbn07XG4vKipcbiAqIFBlcm1pc3NpdmUgc3RyaW5nIHBhcnNpbmcuICBUYWtlIGluIGEgbnVtYmVyIG9mIGZvcm1hdHMsIGFuZCBvdXRwdXQgYW4gb2JqZWN0XG4gKiBiYXNlZCBvbiBkZXRlY3RlZCBmb3JtYXQuICBSZXR1cm5zIGB7IHIsIGcsIGIgfWAgb3IgYHsgaCwgcywgbCB9YCBvciBgeyBoLCBzLCB2fWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ0lucHV0VG9PYmplY3QoY29sb3IpIHtcbiAgICBjb2xvciA9IGNvbG9yLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChjb2xvci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgbmFtZWQgPSBmYWxzZTtcbiAgICBpZiAobmFtZXNbY29sb3JdKSB7XG4gICAgICAgIGNvbG9yID0gbmFtZXNbY29sb3JdO1xuICAgICAgICBuYW1lZCA9IHRydWU7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNvbG9yID09PSAndHJhbnNwYXJlbnQnKSB7XG4gICAgICAgIHJldHVybiB7IHI6IDAsIGc6IDAsIGI6IDAsIGE6IDAsIGZvcm1hdDogJ25hbWUnIH07XG4gICAgfVxuICAgIC8vIFRyeSB0byBtYXRjaCBzdHJpbmcgaW5wdXQgdXNpbmcgcmVndWxhciBleHByZXNzaW9ucy5cbiAgICAvLyBLZWVwIG1vc3Qgb2YgdGhlIG51bWJlciBib3VuZGluZyBvdXQgb2YgdGhpcyBmdW5jdGlvbiAtIGRvbid0IHdvcnJ5IGFib3V0IFswLDFdIG9yIFswLDEwMF0gb3IgWzAsMzYwXVxuICAgIC8vIEp1c3QgcmV0dXJuIGFuIG9iamVjdCBhbmQgbGV0IHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyBoYW5kbGUgdGhhdC5cbiAgICAvLyBUaGlzIHdheSB0aGUgcmVzdWx0IHdpbGwgYmUgdGhlIHNhbWUgd2hldGhlciB0aGUgdGlueWNvbG9yIGlzIGluaXRpYWxpemVkIHdpdGggc3RyaW5nIG9yIG9iamVjdC5cbiAgICB2YXIgbWF0Y2ggPSBtYXRjaGVycy5yZ2IuZXhlYyhjb2xvcik7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIHJldHVybiB7IHI6IG1hdGNoWzFdLCBnOiBtYXRjaFsyXSwgYjogbWF0Y2hbM10gfTtcbiAgICB9XG4gICAgbWF0Y2ggPSBtYXRjaGVycy5yZ2JhLmV4ZWMoY29sb3IpO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgICByZXR1cm4geyByOiBtYXRjaFsxXSwgZzogbWF0Y2hbMl0sIGI6IG1hdGNoWzNdLCBhOiBtYXRjaFs0XSB9O1xuICAgIH1cbiAgICBtYXRjaCA9IG1hdGNoZXJzLmhzbC5leGVjKGNvbG9yKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIHsgaDogbWF0Y2hbMV0sIHM6IG1hdGNoWzJdLCBsOiBtYXRjaFszXSB9O1xuICAgIH1cbiAgICBtYXRjaCA9IG1hdGNoZXJzLmhzbGEuZXhlYyhjb2xvcik7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIHJldHVybiB7IGg6IG1hdGNoWzFdLCBzOiBtYXRjaFsyXSwgbDogbWF0Y2hbM10sIGE6IG1hdGNoWzRdIH07XG4gICAgfVxuICAgIG1hdGNoID0gbWF0Y2hlcnMuaHN2LmV4ZWMoY29sb3IpO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgICByZXR1cm4geyBoOiBtYXRjaFsxXSwgczogbWF0Y2hbMl0sIHY6IG1hdGNoWzNdIH07XG4gICAgfVxuICAgIG1hdGNoID0gbWF0Y2hlcnMuaHN2YS5leGVjKGNvbG9yKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIHsgaDogbWF0Y2hbMV0sIHM6IG1hdGNoWzJdLCB2OiBtYXRjaFszXSwgYTogbWF0Y2hbNF0gfTtcbiAgICB9XG4gICAgbWF0Y2ggPSBtYXRjaGVycy5oZXg4LmV4ZWMoY29sb3IpO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcjogcGFyc2VJbnRGcm9tSGV4KG1hdGNoWzFdKSxcbiAgICAgICAgICAgIGc6IHBhcnNlSW50RnJvbUhleChtYXRjaFsyXSksXG4gICAgICAgICAgICBiOiBwYXJzZUludEZyb21IZXgobWF0Y2hbM10pLFxuICAgICAgICAgICAgYTogY29udmVydEhleFRvRGVjaW1hbChtYXRjaFs0XSksXG4gICAgICAgICAgICBmb3JtYXQ6IG5hbWVkID8gJ25hbWUnIDogJ2hleDgnLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBtYXRjaCA9IG1hdGNoZXJzLmhleDYuZXhlYyhjb2xvcik7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByOiBwYXJzZUludEZyb21IZXgobWF0Y2hbMV0pLFxuICAgICAgICAgICAgZzogcGFyc2VJbnRGcm9tSGV4KG1hdGNoWzJdKSxcbiAgICAgICAgICAgIGI6IHBhcnNlSW50RnJvbUhleChtYXRjaFszXSksXG4gICAgICAgICAgICBmb3JtYXQ6IG5hbWVkID8gJ25hbWUnIDogJ2hleCcsXG4gICAgICAgIH07XG4gICAgfVxuICAgIG1hdGNoID0gbWF0Y2hlcnMuaGV4NC5leGVjKGNvbG9yKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHI6IHBhcnNlSW50RnJvbUhleChtYXRjaFsxXSArIG1hdGNoWzFdKSxcbiAgICAgICAgICAgIGc6IHBhcnNlSW50RnJvbUhleChtYXRjaFsyXSArIG1hdGNoWzJdKSxcbiAgICAgICAgICAgIGI6IHBhcnNlSW50RnJvbUhleChtYXRjaFszXSArIG1hdGNoWzNdKSxcbiAgICAgICAgICAgIGE6IGNvbnZlcnRIZXhUb0RlY2ltYWwobWF0Y2hbNF0gKyBtYXRjaFs0XSksXG4gICAgICAgICAgICBmb3JtYXQ6IG5hbWVkID8gJ25hbWUnIDogJ2hleDgnLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBtYXRjaCA9IG1hdGNoZXJzLmhleDMuZXhlYyhjb2xvcik7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByOiBwYXJzZUludEZyb21IZXgobWF0Y2hbMV0gKyBtYXRjaFsxXSksXG4gICAgICAgICAgICBnOiBwYXJzZUludEZyb21IZXgobWF0Y2hbMl0gKyBtYXRjaFsyXSksXG4gICAgICAgICAgICBiOiBwYXJzZUludEZyb21IZXgobWF0Y2hbM10gKyBtYXRjaFszXSksXG4gICAgICAgICAgICBmb3JtYXQ6IG5hbWVkID8gJ25hbWUnIDogJ2hleCcsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIGl0IGxvb2tzIGxpa2UgYSBDU1MgdW5pdFxuICogKHNlZSBgbWF0Y2hlcnNgIGFib3ZlIGZvciBkZWZpbml0aW9uKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRDU1NVbml0KGNvbG9yKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4obWF0Y2hlcnMuQ1NTX1VOSVQuZXhlYyhTdHJpbmcoY29sb3IpKSk7XG59XG4iLCJpbXBvcnQgeyBpbnB1dFRvUkdCLCByZ2JUb0hleCwgcmdiVG9Ic3YgfSBmcm9tICdAY3RybC90aW55Y29sb3InO1xuXG52YXIgaHVlU3RlcCA9IDI7IC8vIOiJsuebuOmYtuair1xuXG52YXIgc2F0dXJhdGlvblN0ZXAgPSAwLjE2OyAvLyDppbHlkozluqbpmLbmoq/vvIzmtYXoibLpg6jliIZcblxudmFyIHNhdHVyYXRpb25TdGVwMiA9IDAuMDU7IC8vIOmlseWSjOW6pumYtuair++8jOa3seiJsumDqOWIhlxuXG52YXIgYnJpZ2h0bmVzc1N0ZXAxID0gMC4wNTsgLy8g5Lqu5bqm6Zi25qKv77yM5rWF6Imy6YOo5YiGXG5cbnZhciBicmlnaHRuZXNzU3RlcDIgPSAwLjE1OyAvLyDkuq7luqbpmLbmoq/vvIzmt7HoibLpg6jliIZcblxudmFyIGxpZ2h0Q29sb3JDb3VudCA9IDU7IC8vIOa1heiJsuaVsOmHj++8jOS4u+iJsuS4ilxuXG52YXIgZGFya0NvbG9yQ291bnQgPSA0OyAvLyDmt7HoibLmlbDph4/vvIzkuLvoibLkuItcbi8vIOaal+iJsuS4u+mimOminOiJsuaYoOWwhOWFs+ezu+ihqFxuXG52YXIgZGFya0NvbG9yTWFwID0gW3tcbiAgaW5kZXg6IDcsXG4gIG9wYWNpdHk6IDAuMTVcbn0sIHtcbiAgaW5kZXg6IDYsXG4gIG9wYWNpdHk6IDAuMjVcbn0sIHtcbiAgaW5kZXg6IDUsXG4gIG9wYWNpdHk6IDAuM1xufSwge1xuICBpbmRleDogNSxcbiAgb3BhY2l0eTogMC40NVxufSwge1xuICBpbmRleDogNSxcbiAgb3BhY2l0eTogMC42NVxufSwge1xuICBpbmRleDogNSxcbiAgb3BhY2l0eTogMC44NVxufSwge1xuICBpbmRleDogNCxcbiAgb3BhY2l0eTogMC45XG59LCB7XG4gIGluZGV4OiAzLFxuICBvcGFjaXR5OiAwLjk1XG59LCB7XG4gIGluZGV4OiAyLFxuICBvcGFjaXR5OiAwLjk3XG59LCB7XG4gIGluZGV4OiAxLFxuICBvcGFjaXR5OiAwLjk4XG59XTsgLy8gV3JhcHBlciBmdW5jdGlvbiBwb3J0ZWQgZnJvbSBUaW55Q29sb3IucHJvdG90eXBlLnRvSHN2XG4vLyBLZWVwIGl0IGhlcmUgYmVjYXVzZSBvZiBgaHN2LmggKiAzNjBgXG5cbmZ1bmN0aW9uIHRvSHN2KF9yZWYpIHtcbiAgdmFyIHIgPSBfcmVmLnIsXG4gICAgICBnID0gX3JlZi5nLFxuICAgICAgYiA9IF9yZWYuYjtcbiAgdmFyIGhzdiA9IHJnYlRvSHN2KHIsIGcsIGIpO1xuICByZXR1cm4ge1xuICAgIGg6IGhzdi5oICogMzYwLFxuICAgIHM6IGhzdi5zLFxuICAgIHY6IGhzdi52XG4gIH07XG59IC8vIFdyYXBwZXIgZnVuY3Rpb24gcG9ydGVkIGZyb20gVGlueUNvbG9yLnByb3RvdHlwZS50b0hleFN0cmluZ1xuLy8gS2VlcCBpdCBoZXJlIGJlY2F1c2Ugb2YgdGhlIHByZWZpeCBgI2BcblxuXG5mdW5jdGlvbiB0b0hleChfcmVmMikge1xuICB2YXIgciA9IF9yZWYyLnIsXG4gICAgICBnID0gX3JlZjIuZyxcbiAgICAgIGIgPSBfcmVmMi5iO1xuICByZXR1cm4gXCIjXCIuY29uY2F0KHJnYlRvSGV4KHIsIGcsIGIsIGZhbHNlKSk7XG59IC8vIFdyYXBwZXIgZnVuY3Rpb24gcG9ydGVkIGZyb20gVGlueUNvbG9yLnByb3RvdHlwZS5taXgsIG5vdCB0cmVlc2hha2FibGUuXG4vLyBBbW91bnQgaW4gcmFuZ2UgWzAsIDFdXG4vLyBBc3N1bWUgY29sb3IxICYgY29sb3IyIGhhcyBubyBhbHBoYSwgc2luY2UgdGhlIGZvbGxvd2luZyBzcmMgY29kZSBkaWQgc28uXG5cblxuZnVuY3Rpb24gbWl4KHJnYjEsIHJnYjIsIGFtb3VudCkge1xuICB2YXIgcCA9IGFtb3VudCAvIDEwMDtcbiAgdmFyIHJnYiA9IHtcbiAgICByOiAocmdiMi5yIC0gcmdiMS5yKSAqIHAgKyByZ2IxLnIsXG4gICAgZzogKHJnYjIuZyAtIHJnYjEuZykgKiBwICsgcmdiMS5nLFxuICAgIGI6IChyZ2IyLmIgLSByZ2IxLmIpICogcCArIHJnYjEuYlxuICB9O1xuICByZXR1cm4gcmdiO1xufVxuXG5mdW5jdGlvbiBnZXRIdWUoaHN2LCBpLCBsaWdodCkge1xuICB2YXIgaHVlOyAvLyDmoLnmja7oibLnm7jkuI3lkIzvvIzoibLnm7jovazlkJHkuI3lkIxcblxuICBpZiAoTWF0aC5yb3VuZChoc3YuaCkgPj0gNjAgJiYgTWF0aC5yb3VuZChoc3YuaCkgPD0gMjQwKSB7XG4gICAgaHVlID0gbGlnaHQgPyBNYXRoLnJvdW5kKGhzdi5oKSAtIGh1ZVN0ZXAgKiBpIDogTWF0aC5yb3VuZChoc3YuaCkgKyBodWVTdGVwICogaTtcbiAgfSBlbHNlIHtcbiAgICBodWUgPSBsaWdodCA/IE1hdGgucm91bmQoaHN2LmgpICsgaHVlU3RlcCAqIGkgOiBNYXRoLnJvdW5kKGhzdi5oKSAtIGh1ZVN0ZXAgKiBpO1xuICB9XG5cbiAgaWYgKGh1ZSA8IDApIHtcbiAgICBodWUgKz0gMzYwO1xuICB9IGVsc2UgaWYgKGh1ZSA+PSAzNjApIHtcbiAgICBodWUgLT0gMzYwO1xuICB9XG5cbiAgcmV0dXJuIGh1ZTtcbn1cblxuZnVuY3Rpb24gZ2V0U2F0dXJhdGlvbihoc3YsIGksIGxpZ2h0KSB7XG4gIC8vIGdyZXkgY29sb3IgZG9uJ3QgY2hhbmdlIHNhdHVyYXRpb25cbiAgaWYgKGhzdi5oID09PSAwICYmIGhzdi5zID09PSAwKSB7XG4gICAgcmV0dXJuIGhzdi5zO1xuICB9XG5cbiAgdmFyIHNhdHVyYXRpb247XG5cbiAgaWYgKGxpZ2h0KSB7XG4gICAgc2F0dXJhdGlvbiA9IGhzdi5zIC0gc2F0dXJhdGlvblN0ZXAgKiBpO1xuICB9IGVsc2UgaWYgKGkgPT09IGRhcmtDb2xvckNvdW50KSB7XG4gICAgc2F0dXJhdGlvbiA9IGhzdi5zICsgc2F0dXJhdGlvblN0ZXA7XG4gIH0gZWxzZSB7XG4gICAgc2F0dXJhdGlvbiA9IGhzdi5zICsgc2F0dXJhdGlvblN0ZXAyICogaTtcbiAgfSAvLyDovrnnlYzlgLzkv67mraNcblxuXG4gIGlmIChzYXR1cmF0aW9uID4gMSkge1xuICAgIHNhdHVyYXRpb24gPSAxO1xuICB9IC8vIOesrOS4gOagvOeahCBzIOmZkOWItuWcqCAwLjA2LTAuMSDkuYvpl7RcblxuXG4gIGlmIChsaWdodCAmJiBpID09PSBsaWdodENvbG9yQ291bnQgJiYgc2F0dXJhdGlvbiA+IDAuMSkge1xuICAgIHNhdHVyYXRpb24gPSAwLjE7XG4gIH1cblxuICBpZiAoc2F0dXJhdGlvbiA8IDAuMDYpIHtcbiAgICBzYXR1cmF0aW9uID0gMC4wNjtcbiAgfVxuXG4gIHJldHVybiBOdW1iZXIoc2F0dXJhdGlvbi50b0ZpeGVkKDIpKTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWUoaHN2LCBpLCBsaWdodCkge1xuICB2YXIgdmFsdWU7XG5cbiAgaWYgKGxpZ2h0KSB7XG4gICAgdmFsdWUgPSBoc3YudiArIGJyaWdodG5lc3NTdGVwMSAqIGk7XG4gIH0gZWxzZSB7XG4gICAgdmFsdWUgPSBoc3YudiAtIGJyaWdodG5lc3NTdGVwMiAqIGk7XG4gIH1cblxuICBpZiAodmFsdWUgPiAxKSB7XG4gICAgdmFsdWUgPSAxO1xuICB9XG5cbiAgcmV0dXJuIE51bWJlcih2YWx1ZS50b0ZpeGVkKDIpKTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGUoY29sb3IpIHtcbiAgdmFyIG9wdHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICB2YXIgcGF0dGVybnMgPSBbXTtcbiAgdmFyIHBDb2xvciA9IGlucHV0VG9SR0IoY29sb3IpO1xuXG4gIGZvciAodmFyIGkgPSBsaWdodENvbG9yQ291bnQ7IGkgPiAwOyBpIC09IDEpIHtcbiAgICB2YXIgaHN2ID0gdG9Ic3YocENvbG9yKTtcbiAgICB2YXIgY29sb3JTdHJpbmcgPSB0b0hleChpbnB1dFRvUkdCKHtcbiAgICAgIGg6IGdldEh1ZShoc3YsIGksIHRydWUpLFxuICAgICAgczogZ2V0U2F0dXJhdGlvbihoc3YsIGksIHRydWUpLFxuICAgICAgdjogZ2V0VmFsdWUoaHN2LCBpLCB0cnVlKVxuICAgIH0pKTtcbiAgICBwYXR0ZXJucy5wdXNoKGNvbG9yU3RyaW5nKTtcbiAgfVxuXG4gIHBhdHRlcm5zLnB1c2godG9IZXgocENvbG9yKSk7XG5cbiAgZm9yICh2YXIgX2kgPSAxOyBfaSA8PSBkYXJrQ29sb3JDb3VudDsgX2kgKz0gMSkge1xuICAgIHZhciBfaHN2ID0gdG9Ic3YocENvbG9yKTtcblxuICAgIHZhciBfY29sb3JTdHJpbmcgPSB0b0hleChpbnB1dFRvUkdCKHtcbiAgICAgIGg6IGdldEh1ZShfaHN2LCBfaSksXG4gICAgICBzOiBnZXRTYXR1cmF0aW9uKF9oc3YsIF9pKSxcbiAgICAgIHY6IGdldFZhbHVlKF9oc3YsIF9pKVxuICAgIH0pKTtcblxuICAgIHBhdHRlcm5zLnB1c2goX2NvbG9yU3RyaW5nKTtcbiAgfSAvLyBkYXJrIHRoZW1lIHBhdHRlcm5zXG5cblxuICBpZiAob3B0cy50aGVtZSA9PT0gJ2RhcmsnKSB7XG4gICAgcmV0dXJuIGRhcmtDb2xvck1hcC5tYXAoZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICB2YXIgaW5kZXggPSBfcmVmMy5pbmRleCxcbiAgICAgICAgICBvcGFjaXR5ID0gX3JlZjMub3BhY2l0eTtcbiAgICAgIHZhciBkYXJrQ29sb3JTdHJpbmcgPSB0b0hleChtaXgoaW5wdXRUb1JHQihvcHRzLmJhY2tncm91bmRDb2xvciB8fCAnIzE0MTQxNCcpLCBpbnB1dFRvUkdCKHBhdHRlcm5zW2luZGV4XSksIG9wYWNpdHkgKiAxMDApKTtcbiAgICAgIHJldHVybiBkYXJrQ29sb3JTdHJpbmc7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcGF0dGVybnM7XG59XG5cbnZhciBwcmVzZXRQcmltYXJ5Q29sb3JzID0ge1xuICByZWQ6ICcjRjUyMjJEJyxcbiAgdm9sY2FubzogJyNGQTU0MUMnLFxuICBvcmFuZ2U6ICcjRkE4QzE2JyxcbiAgZ29sZDogJyNGQUFEMTQnLFxuICB5ZWxsb3c6ICcjRkFEQjE0JyxcbiAgbGltZTogJyNBMEQ5MTEnLFxuICBncmVlbjogJyM1MkM0MUEnLFxuICBjeWFuOiAnIzEzQzJDMicsXG4gIGJsdWU6ICcjMTg5MEZGJyxcbiAgZ2Vla2JsdWU6ICcjMkY1NEVCJyxcbiAgcHVycGxlOiAnIzcyMkVEMScsXG4gIG1hZ2VudGE6ICcjRUIyRjk2JyxcbiAgZ3JleTogJyM2NjY2NjYnXG59O1xudmFyIHByZXNldFBhbGV0dGVzID0ge307XG52YXIgcHJlc2V0RGFya1BhbGV0dGVzID0ge307XG5PYmplY3Qua2V5cyhwcmVzZXRQcmltYXJ5Q29sb3JzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgcHJlc2V0UGFsZXR0ZXNba2V5XSA9IGdlbmVyYXRlKHByZXNldFByaW1hcnlDb2xvcnNba2V5XSk7XG4gIHByZXNldFBhbGV0dGVzW2tleV0ucHJpbWFyeSA9IHByZXNldFBhbGV0dGVzW2tleV1bNV07IC8vIGRhcmsgcHJlc2V0UGFsZXR0ZXNcblxuICBwcmVzZXREYXJrUGFsZXR0ZXNba2V5XSA9IGdlbmVyYXRlKHByZXNldFByaW1hcnlDb2xvcnNba2V5XSwge1xuICAgIHRoZW1lOiAnZGFyaycsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnIzE0MTQxNCdcbiAgfSk7XG4gIHByZXNldERhcmtQYWxldHRlc1trZXldLnByaW1hcnkgPSBwcmVzZXREYXJrUGFsZXR0ZXNba2V5XVs1XTtcbn0pO1xudmFyIHJlZCA9IHByZXNldFBhbGV0dGVzLnJlZDtcbnZhciB2b2xjYW5vID0gcHJlc2V0UGFsZXR0ZXMudm9sY2FubztcbnZhciBnb2xkID0gcHJlc2V0UGFsZXR0ZXMuZ29sZDtcbnZhciBvcmFuZ2UgPSBwcmVzZXRQYWxldHRlcy5vcmFuZ2U7XG52YXIgeWVsbG93ID0gcHJlc2V0UGFsZXR0ZXMueWVsbG93O1xudmFyIGxpbWUgPSBwcmVzZXRQYWxldHRlcy5saW1lO1xudmFyIGdyZWVuID0gcHJlc2V0UGFsZXR0ZXMuZ3JlZW47XG52YXIgY3lhbiA9IHByZXNldFBhbGV0dGVzLmN5YW47XG52YXIgYmx1ZSA9IHByZXNldFBhbGV0dGVzLmJsdWU7XG52YXIgZ2Vla2JsdWUgPSBwcmVzZXRQYWxldHRlcy5nZWVrYmx1ZTtcbnZhciBwdXJwbGUgPSBwcmVzZXRQYWxldHRlcy5wdXJwbGU7XG52YXIgbWFnZW50YSA9IHByZXNldFBhbGV0dGVzLm1hZ2VudGE7XG52YXIgZ3JleSA9IHByZXNldFBhbGV0dGVzLmdyZXk7XG5cbmV4cG9ydCB7IGJsdWUsIGN5YW4sIGdlZWtibHVlLCBnZW5lcmF0ZSwgZ29sZCwgZ3JlZW4sIGdyZXksIGxpbWUsIG1hZ2VudGEsIG9yYW5nZSwgcHJlc2V0RGFya1BhbGV0dGVzLCBwcmVzZXRQYWxldHRlcywgcHJlc2V0UHJpbWFyeUNvbG9ycywgcHVycGxlLCByZWQsIHZvbGNhbm8sIHllbGxvdyB9O1xuIiwidmFyIGF1dG9BZGp1c3RPdmVyZmxvdyA9IHtcbiAgYWRqdXN0WDogMSxcbiAgYWRqdXN0WTogMVxufTtcbnZhciB0YXJnZXRPZmZzZXQgPSBbMCwgMF07XG5leHBvcnQgdmFyIHBsYWNlbWVudHMgPSB7XG4gIGxlZnQ6IHtcbiAgICBwb2ludHM6IFsnY3InLCAnY2wnXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93LFxuICAgIG9mZnNldDogWy00LCAwXSxcbiAgICB0YXJnZXRPZmZzZXQ6IHRhcmdldE9mZnNldFxuICB9LFxuICByaWdodDoge1xuICAgIHBvaW50czogWydjbCcsICdjciddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3csXG4gICAgb2Zmc2V0OiBbNCwgMF0sXG4gICAgdGFyZ2V0T2Zmc2V0OiB0YXJnZXRPZmZzZXRcbiAgfSxcbiAgdG9wOiB7XG4gICAgcG9pbnRzOiBbJ2JjJywgJ3RjJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvdyxcbiAgICBvZmZzZXQ6IFswLCAtNF0sXG4gICAgdGFyZ2V0T2Zmc2V0OiB0YXJnZXRPZmZzZXRcbiAgfSxcbiAgYm90dG9tOiB7XG4gICAgcG9pbnRzOiBbJ3RjJywgJ2JjJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvdyxcbiAgICBvZmZzZXQ6IFswLCA0XSxcbiAgICB0YXJnZXRPZmZzZXQ6IHRhcmdldE9mZnNldFxuICB9LFxuICB0b3BMZWZ0OiB7XG4gICAgcG9pbnRzOiBbJ2JsJywgJ3RsJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvdyxcbiAgICBvZmZzZXQ6IFswLCAtNF0sXG4gICAgdGFyZ2V0T2Zmc2V0OiB0YXJnZXRPZmZzZXRcbiAgfSxcbiAgbGVmdFRvcDoge1xuICAgIHBvaW50czogWyd0cicsICd0bCddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3csXG4gICAgb2Zmc2V0OiBbLTQsIDBdLFxuICAgIHRhcmdldE9mZnNldDogdGFyZ2V0T2Zmc2V0XG4gIH0sXG4gIHRvcFJpZ2h0OiB7XG4gICAgcG9pbnRzOiBbJ2JyJywgJ3RyJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvdyxcbiAgICBvZmZzZXQ6IFswLCAtNF0sXG4gICAgdGFyZ2V0T2Zmc2V0OiB0YXJnZXRPZmZzZXRcbiAgfSxcbiAgcmlnaHRUb3A6IHtcbiAgICBwb2ludHM6IFsndGwnLCAndHInXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93LFxuICAgIG9mZnNldDogWzQsIDBdLFxuICAgIHRhcmdldE9mZnNldDogdGFyZ2V0T2Zmc2V0XG4gIH0sXG4gIGJvdHRvbVJpZ2h0OiB7XG4gICAgcG9pbnRzOiBbJ3RyJywgJ2JyJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvdyxcbiAgICBvZmZzZXQ6IFswLCA0XSxcbiAgICB0YXJnZXRPZmZzZXQ6IHRhcmdldE9mZnNldFxuICB9LFxuICByaWdodEJvdHRvbToge1xuICAgIHBvaW50czogWydibCcsICdiciddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3csXG4gICAgb2Zmc2V0OiBbNCwgMF0sXG4gICAgdGFyZ2V0T2Zmc2V0OiB0YXJnZXRPZmZzZXRcbiAgfSxcbiAgYm90dG9tTGVmdDoge1xuICAgIHBvaW50czogWyd0bCcsICdibCddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3csXG4gICAgb2Zmc2V0OiBbMCwgNF0sXG4gICAgdGFyZ2V0T2Zmc2V0OiB0YXJnZXRPZmZzZXRcbiAgfSxcbiAgbGVmdEJvdHRvbToge1xuICAgIHBvaW50czogWydicicsICdibCddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3csXG4gICAgb2Zmc2V0OiBbLTQsIDBdLFxuICAgIHRhcmdldE9mZnNldDogdGFyZ2V0T2Zmc2V0XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCBwbGFjZW1lbnRzOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxudmFyIENvbnRlbnQgPSBmdW5jdGlvbiBDb250ZW50KHByb3BzKSB7XG4gIHZhciBvdmVybGF5ID0gcHJvcHMub3ZlcmxheSxcbiAgICAgIHByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgIGlkID0gcHJvcHMuaWQsXG4gICAgICBvdmVybGF5SW5uZXJTdHlsZSA9IHByb3BzLm92ZXJsYXlJbm5lclN0eWxlO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pbm5lclwiKSxcbiAgICBpZDogaWQsXG4gICAgcm9sZTogXCJ0b29sdGlwXCIsXG4gICAgc3R5bGU6IG92ZXJsYXlJbm5lclN0eWxlXG4gIH0sIHR5cGVvZiBvdmVybGF5ID09PSAnZnVuY3Rpb24nID8gb3ZlcmxheSgpIDogb3ZlcmxheSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb250ZW50OyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDJcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZUltcGVyYXRpdmVIYW5kbGUsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVHJpZ2dlciBmcm9tICdyYy10cmlnZ2VyJztcbmltcG9ydCB7IHBsYWNlbWVudHMgfSBmcm9tICcuL3BsYWNlbWVudHMnO1xuaW1wb3J0IENvbnRlbnQgZnJvbSAnLi9Db250ZW50JztcblxudmFyIFRvb2x0aXAgPSBmdW5jdGlvbiBUb29sdGlwKHByb3BzLCByZWYpIHtcbiAgdmFyIG92ZXJsYXlDbGFzc05hbWUgPSBwcm9wcy5vdmVybGF5Q2xhc3NOYW1lLFxuICAgICAgX3Byb3BzJHRyaWdnZXIgPSBwcm9wcy50cmlnZ2VyLFxuICAgICAgdHJpZ2dlciA9IF9wcm9wcyR0cmlnZ2VyID09PSB2b2lkIDAgPyBbJ2hvdmVyJ10gOiBfcHJvcHMkdHJpZ2dlcixcbiAgICAgIF9wcm9wcyRtb3VzZUVudGVyRGVsYSA9IHByb3BzLm1vdXNlRW50ZXJEZWxheSxcbiAgICAgIG1vdXNlRW50ZXJEZWxheSA9IF9wcm9wcyRtb3VzZUVudGVyRGVsYSA9PT0gdm9pZCAwID8gMCA6IF9wcm9wcyRtb3VzZUVudGVyRGVsYSxcbiAgICAgIF9wcm9wcyRtb3VzZUxlYXZlRGVsYSA9IHByb3BzLm1vdXNlTGVhdmVEZWxheSxcbiAgICAgIG1vdXNlTGVhdmVEZWxheSA9IF9wcm9wcyRtb3VzZUxlYXZlRGVsYSA9PT0gdm9pZCAwID8gMC4xIDogX3Byb3BzJG1vdXNlTGVhdmVEZWxhLFxuICAgICAgb3ZlcmxheVN0eWxlID0gcHJvcHMub3ZlcmxheVN0eWxlLFxuICAgICAgX3Byb3BzJHByZWZpeENscyA9IHByb3BzLnByZWZpeENscyxcbiAgICAgIHByZWZpeENscyA9IF9wcm9wcyRwcmVmaXhDbHMgPT09IHZvaWQgMCA/ICdyYy10b29sdGlwJyA6IF9wcm9wcyRwcmVmaXhDbHMsXG4gICAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgb25WaXNpYmxlQ2hhbmdlID0gcHJvcHMub25WaXNpYmxlQ2hhbmdlLFxuICAgICAgYWZ0ZXJWaXNpYmxlQ2hhbmdlID0gcHJvcHMuYWZ0ZXJWaXNpYmxlQ2hhbmdlLFxuICAgICAgdHJhbnNpdGlvbk5hbWUgPSBwcm9wcy50cmFuc2l0aW9uTmFtZSxcbiAgICAgIGFuaW1hdGlvbiA9IHByb3BzLmFuaW1hdGlvbixcbiAgICAgIG1vdGlvbiA9IHByb3BzLm1vdGlvbixcbiAgICAgIF9wcm9wcyRwbGFjZW1lbnQgPSBwcm9wcy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcHJvcHMkcGxhY2VtZW50ID09PSB2b2lkIDAgPyAncmlnaHQnIDogX3Byb3BzJHBsYWNlbWVudCxcbiAgICAgIF9wcm9wcyRhbGlnbiA9IHByb3BzLmFsaWduLFxuICAgICAgYWxpZ24gPSBfcHJvcHMkYWxpZ24gPT09IHZvaWQgMCA/IHt9IDogX3Byb3BzJGFsaWduLFxuICAgICAgX3Byb3BzJGRlc3Ryb3lUb29sdGlwID0gcHJvcHMuZGVzdHJveVRvb2x0aXBPbkhpZGUsXG4gICAgICBkZXN0cm95VG9vbHRpcE9uSGlkZSA9IF9wcm9wcyRkZXN0cm95VG9vbHRpcCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcHJvcHMkZGVzdHJveVRvb2x0aXAsXG4gICAgICBkZWZhdWx0VmlzaWJsZSA9IHByb3BzLmRlZmF1bHRWaXNpYmxlLFxuICAgICAgZ2V0VG9vbHRpcENvbnRhaW5lciA9IHByb3BzLmdldFRvb2x0aXBDb250YWluZXIsXG4gICAgICBvdmVybGF5SW5uZXJTdHlsZSA9IHByb3BzLm92ZXJsYXlJbm5lclN0eWxlLFxuICAgICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBbXCJvdmVybGF5Q2xhc3NOYW1lXCIsIFwidHJpZ2dlclwiLCBcIm1vdXNlRW50ZXJEZWxheVwiLCBcIm1vdXNlTGVhdmVEZWxheVwiLCBcIm92ZXJsYXlTdHlsZVwiLCBcInByZWZpeENsc1wiLCBcImNoaWxkcmVuXCIsIFwib25WaXNpYmxlQ2hhbmdlXCIsIFwiYWZ0ZXJWaXNpYmxlQ2hhbmdlXCIsIFwidHJhbnNpdGlvbk5hbWVcIiwgXCJhbmltYXRpb25cIiwgXCJtb3Rpb25cIiwgXCJwbGFjZW1lbnRcIiwgXCJhbGlnblwiLCBcImRlc3Ryb3lUb29sdGlwT25IaWRlXCIsIFwiZGVmYXVsdFZpc2libGVcIiwgXCJnZXRUb29sdGlwQ29udGFpbmVyXCIsIFwib3ZlcmxheUlubmVyU3R5bGVcIl0pO1xuXG4gIHZhciBkb21SZWYgPSB1c2VSZWYobnVsbCk7XG4gIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGRvbVJlZi5jdXJyZW50O1xuICB9KTtcblxuICB2YXIgZXh0cmFQcm9wcyA9IF9vYmplY3RTcHJlYWQoe30sIHJlc3RQcm9wcyk7XG5cbiAgaWYgKCd2aXNpYmxlJyBpbiBwcm9wcykge1xuICAgIGV4dHJhUHJvcHMucG9wdXBWaXNpYmxlID0gcHJvcHMudmlzaWJsZTtcbiAgfVxuXG4gIHZhciBnZXRQb3B1cEVsZW1lbnQgPSBmdW5jdGlvbiBnZXRQb3B1cEVsZW1lbnQoKSB7XG4gICAgdmFyIF9wcm9wcyRhcnJvd0NvbnRlbnQgPSBwcm9wcy5hcnJvd0NvbnRlbnQsXG4gICAgICAgIGFycm93Q29udGVudCA9IF9wcm9wcyRhcnJvd0NvbnRlbnQgPT09IHZvaWQgMCA/IG51bGwgOiBfcHJvcHMkYXJyb3dDb250ZW50LFxuICAgICAgICBvdmVybGF5ID0gcHJvcHMub3ZlcmxheSxcbiAgICAgICAgaWQgPSBwcm9wcy5pZDtcbiAgICByZXR1cm4gWy8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1hcnJvd1wiKSxcbiAgICAgIGtleTogXCJhcnJvd1wiXG4gICAgfSwgYXJyb3dDb250ZW50KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udGVudCwge1xuICAgICAga2V5OiBcImNvbnRlbnRcIixcbiAgICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgICAgaWQ6IGlkLFxuICAgICAgb3ZlcmxheTogb3ZlcmxheSxcbiAgICAgIG92ZXJsYXlJbm5lclN0eWxlOiBvdmVybGF5SW5uZXJTdHlsZVxuICAgIH0pXTtcbiAgfTtcblxuICB2YXIgZGVzdHJveVRvb2x0aXAgPSBmYWxzZTtcbiAgdmFyIGF1dG9EZXN0cm95ID0gZmFsc2U7XG5cbiAgaWYgKHR5cGVvZiBkZXN0cm95VG9vbHRpcE9uSGlkZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgZGVzdHJveVRvb2x0aXAgPSBkZXN0cm95VG9vbHRpcE9uSGlkZTtcbiAgfSBlbHNlIGlmIChkZXN0cm95VG9vbHRpcE9uSGlkZSAmJiBfdHlwZW9mKGRlc3Ryb3lUb29sdGlwT25IaWRlKSA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIga2VlcFBhcmVudCA9IGRlc3Ryb3lUb29sdGlwT25IaWRlLmtlZXBQYXJlbnQ7XG4gICAgZGVzdHJveVRvb2x0aXAgPSBrZWVwUGFyZW50ID09PSB0cnVlO1xuICAgIGF1dG9EZXN0cm95ID0ga2VlcFBhcmVudCA9PT0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVHJpZ2dlciwgX2V4dGVuZHMoe1xuICAgIHBvcHVwQ2xhc3NOYW1lOiBvdmVybGF5Q2xhc3NOYW1lLFxuICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgIHBvcHVwOiBnZXRQb3B1cEVsZW1lbnQsXG4gICAgYWN0aW9uOiB0cmlnZ2VyLFxuICAgIGJ1aWx0aW5QbGFjZW1lbnRzOiBwbGFjZW1lbnRzLFxuICAgIHBvcHVwUGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgcmVmOiBkb21SZWYsXG4gICAgcG9wdXBBbGlnbjogYWxpZ24sXG4gICAgZ2V0UG9wdXBDb250YWluZXI6IGdldFRvb2x0aXBDb250YWluZXIsXG4gICAgb25Qb3B1cFZpc2libGVDaGFuZ2U6IG9uVmlzaWJsZUNoYW5nZSxcbiAgICBhZnRlclBvcHVwVmlzaWJsZUNoYW5nZTogYWZ0ZXJWaXNpYmxlQ2hhbmdlLFxuICAgIHBvcHVwVHJhbnNpdGlvbk5hbWU6IHRyYW5zaXRpb25OYW1lLFxuICAgIHBvcHVwQW5pbWF0aW9uOiBhbmltYXRpb24sXG4gICAgcG9wdXBNb3Rpb246IG1vdGlvbixcbiAgICBkZWZhdWx0UG9wdXBWaXNpYmxlOiBkZWZhdWx0VmlzaWJsZSxcbiAgICBkZXN0cm95UG9wdXBPbkhpZGU6IGRlc3Ryb3lUb29sdGlwLFxuICAgIGF1dG9EZXN0cm95OiBhdXRvRGVzdHJveSxcbiAgICBtb3VzZUxlYXZlRGVsYXk6IG1vdXNlTGVhdmVEZWxheSxcbiAgICBwb3B1cFN0eWxlOiBvdmVybGF5U3R5bGUsXG4gICAgbW91c2VFbnRlckRlbGF5OiBtb3VzZUVudGVyRGVsYXlcbiAgfSwgZXh0cmFQcm9wcyksIGNoaWxkcmVuKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IC8qI19fUFVSRV9fKi9mb3J3YXJkUmVmKFRvb2x0aXApOyIsImltcG9ydCBUb29sdGlwIGZyb20gJy4vVG9vbHRpcCc7XG5leHBvcnQgZGVmYXVsdCBUb29sdGlwOyIsInZhciBhdXRvQWRqdXN0T3ZlcmZsb3cgPSB7XG4gIGFkanVzdFg6IDEsXG4gIGFkanVzdFk6IDFcbn07XG52YXIgdGFyZ2V0T2Zmc2V0ID0gWzAsIDBdO1xudmFyIHBsYWNlbWVudHMgPSB7XG4gIHRvcExlZnQ6IHtcbiAgICBwb2ludHM6IFsnYmwnLCAndGwnXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93LFxuICAgIG9mZnNldDogWzAsIC00XSxcbiAgICB0YXJnZXRPZmZzZXQ6IHRhcmdldE9mZnNldFxuICB9LFxuICB0b3BDZW50ZXI6IHtcbiAgICBwb2ludHM6IFsnYmMnLCAndGMnXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93LFxuICAgIG9mZnNldDogWzAsIC00XSxcbiAgICB0YXJnZXRPZmZzZXQ6IHRhcmdldE9mZnNldFxuICB9LFxuICB0b3BSaWdodDoge1xuICAgIHBvaW50czogWydicicsICd0ciddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3csXG4gICAgb2Zmc2V0OiBbMCwgLTRdLFxuICAgIHRhcmdldE9mZnNldDogdGFyZ2V0T2Zmc2V0XG4gIH0sXG4gIGJvdHRvbUxlZnQ6IHtcbiAgICBwb2ludHM6IFsndGwnLCAnYmwnXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93LFxuICAgIG9mZnNldDogWzAsIDRdLFxuICAgIHRhcmdldE9mZnNldDogdGFyZ2V0T2Zmc2V0XG4gIH0sXG4gIGJvdHRvbUNlbnRlcjoge1xuICAgIHBvaW50czogWyd0YycsICdiYyddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3csXG4gICAgb2Zmc2V0OiBbMCwgNF0sXG4gICAgdGFyZ2V0T2Zmc2V0OiB0YXJnZXRPZmZzZXRcbiAgfSxcbiAgYm90dG9tUmlnaHQ6IHtcbiAgICBwb2ludHM6IFsndHInLCAnYnInXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93LFxuICAgIG9mZnNldDogWzAsIDRdLFxuICAgIHRhcmdldE9mZnNldDogdGFyZ2V0T2Zmc2V0XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCBwbGFjZW1lbnRzOyIsImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVHJpZ2dlciBmcm9tICdyYy10cmlnZ2VyJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFBsYWNlbWVudHMgZnJvbSAnLi9wbGFjZW1lbnRzJztcblxuZnVuY3Rpb24gRHJvcGRvd24ocHJvcHMsIHJlZikge1xuICB2YXIgX3Byb3BzJGFycm93ID0gcHJvcHMuYXJyb3csXG4gICAgICBhcnJvdyA9IF9wcm9wcyRhcnJvdyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcHJvcHMkYXJyb3csXG4gICAgICBfcHJvcHMkcHJlZml4Q2xzID0gcHJvcHMucHJlZml4Q2xzLFxuICAgICAgcHJlZml4Q2xzID0gX3Byb3BzJHByZWZpeENscyA9PT0gdm9pZCAwID8gJ3JjLWRyb3Bkb3duJyA6IF9wcm9wcyRwcmVmaXhDbHMsXG4gICAgICB0cmFuc2l0aW9uTmFtZSA9IHByb3BzLnRyYW5zaXRpb25OYW1lLFxuICAgICAgYW5pbWF0aW9uID0gcHJvcHMuYW5pbWF0aW9uLFxuICAgICAgYWxpZ24gPSBwcm9wcy5hbGlnbixcbiAgICAgIF9wcm9wcyRwbGFjZW1lbnQgPSBwcm9wcy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcHJvcHMkcGxhY2VtZW50ID09PSB2b2lkIDAgPyAnYm90dG9tTGVmdCcgOiBfcHJvcHMkcGxhY2VtZW50LFxuICAgICAgX3Byb3BzJHBsYWNlbWVudHMgPSBwcm9wcy5wbGFjZW1lbnRzLFxuICAgICAgcGxhY2VtZW50cyA9IF9wcm9wcyRwbGFjZW1lbnRzID09PSB2b2lkIDAgPyBQbGFjZW1lbnRzIDogX3Byb3BzJHBsYWNlbWVudHMsXG4gICAgICBnZXRQb3B1cENvbnRhaW5lciA9IHByb3BzLmdldFBvcHVwQ29udGFpbmVyLFxuICAgICAgc2hvd0FjdGlvbiA9IHByb3BzLnNob3dBY3Rpb24sXG4gICAgICBoaWRlQWN0aW9uID0gcHJvcHMuaGlkZUFjdGlvbixcbiAgICAgIG92ZXJsYXlDbGFzc05hbWUgPSBwcm9wcy5vdmVybGF5Q2xhc3NOYW1lLFxuICAgICAgb3ZlcmxheVN0eWxlID0gcHJvcHMub3ZlcmxheVN0eWxlLFxuICAgICAgdmlzaWJsZSA9IHByb3BzLnZpc2libGUsXG4gICAgICBfcHJvcHMkdHJpZ2dlciA9IHByb3BzLnRyaWdnZXIsXG4gICAgICB0cmlnZ2VyID0gX3Byb3BzJHRyaWdnZXIgPT09IHZvaWQgMCA/IFsnaG92ZXInXSA6IF9wcm9wcyR0cmlnZ2VyLFxuICAgICAgb3RoZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgW1wiYXJyb3dcIiwgXCJwcmVmaXhDbHNcIiwgXCJ0cmFuc2l0aW9uTmFtZVwiLCBcImFuaW1hdGlvblwiLCBcImFsaWduXCIsIFwicGxhY2VtZW50XCIsIFwicGxhY2VtZW50c1wiLCBcImdldFBvcHVwQ29udGFpbmVyXCIsIFwic2hvd0FjdGlvblwiLCBcImhpZGVBY3Rpb25cIiwgXCJvdmVybGF5Q2xhc3NOYW1lXCIsIFwib3ZlcmxheVN0eWxlXCIsIFwidmlzaWJsZVwiLCBcInRyaWdnZXJcIl0pO1xuXG4gIHZhciBfUmVhY3QkdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZSgpLFxuICAgICAgX1JlYWN0JHVzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF9SZWFjdCR1c2VTdGF0ZSwgMiksXG4gICAgICB0cmlnZ2VyVmlzaWJsZSA9IF9SZWFjdCR1c2VTdGF0ZTJbMF0sXG4gICAgICBzZXRUcmlnZ2VyVmlzaWJsZSA9IF9SZWFjdCR1c2VTdGF0ZTJbMV07XG5cbiAgdmFyIG1lcmdlZFZpc2libGUgPSAndmlzaWJsZScgaW4gcHJvcHMgPyB2aXNpYmxlIDogdHJpZ2dlclZpc2libGU7XG4gIHZhciB0cmlnZ2VyUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBSZWFjdC51c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0cmlnZ2VyUmVmLmN1cnJlbnQ7XG4gIH0pO1xuXG4gIHZhciBnZXRPdmVybGF5RWxlbWVudCA9IGZ1bmN0aW9uIGdldE92ZXJsYXlFbGVtZW50KCkge1xuICAgIHZhciBvdmVybGF5ID0gcHJvcHMub3ZlcmxheTtcbiAgICB2YXIgb3ZlcmxheUVsZW1lbnQ7XG5cbiAgICBpZiAodHlwZW9mIG92ZXJsYXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG92ZXJsYXlFbGVtZW50ID0gb3ZlcmxheSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdmVybGF5RWxlbWVudCA9IG92ZXJsYXk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG92ZXJsYXlFbGVtZW50O1xuICB9O1xuXG4gIHZhciBvbkNsaWNrID0gZnVuY3Rpb24gb25DbGljayhlKSB7XG4gICAgdmFyIG9uT3ZlcmxheUNsaWNrID0gcHJvcHMub25PdmVybGF5Q2xpY2s7XG4gICAgdmFyIG92ZXJsYXlQcm9wcyA9IGdldE92ZXJsYXlFbGVtZW50KCkucHJvcHM7XG4gICAgc2V0VHJpZ2dlclZpc2libGUoZmFsc2UpO1xuXG4gICAgaWYgKG9uT3ZlcmxheUNsaWNrKSB7XG4gICAgICBvbk92ZXJsYXlDbGljayhlKTtcbiAgICB9XG5cbiAgICBpZiAob3ZlcmxheVByb3BzLm9uQ2xpY2spIHtcbiAgICAgIG92ZXJsYXlQcm9wcy5vbkNsaWNrKGUpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgb25WaXNpYmxlQ2hhbmdlID0gZnVuY3Rpb24gb25WaXNpYmxlQ2hhbmdlKHZpc2libGUpIHtcbiAgICB2YXIgb25WaXNpYmxlQ2hhbmdlID0gcHJvcHMub25WaXNpYmxlQ2hhbmdlO1xuICAgIHNldFRyaWdnZXJWaXNpYmxlKHZpc2libGUpO1xuXG4gICAgaWYgKHR5cGVvZiBvblZpc2libGVDaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG9uVmlzaWJsZUNoYW5nZSh2aXNpYmxlKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGdldE1lbnVFbGVtZW50ID0gZnVuY3Rpb24gZ2V0TWVudUVsZW1lbnQoKSB7XG4gICAgdmFyIG92ZXJsYXlFbGVtZW50ID0gZ2V0T3ZlcmxheUVsZW1lbnQoKTtcbiAgICB2YXIgZXh0cmFPdmVybGF5UHJvcHMgPSB7XG4gICAgICBwcmVmaXhDbHM6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItbWVudVwiKSxcbiAgICAgIG9uQ2xpY2s6IG9uQ2xpY2tcbiAgICB9O1xuXG4gICAgaWYgKHR5cGVvZiBvdmVybGF5RWxlbWVudC50eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgZGVsZXRlIGV4dHJhT3ZlcmxheVByb3BzLnByZWZpeENscztcbiAgICB9XG5cbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgYXJyb3cgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItYXJyb3dcIilcbiAgICB9KSwgUmVhY3QuY2xvbmVFbGVtZW50KG92ZXJsYXlFbGVtZW50LCBleHRyYU92ZXJsYXlQcm9wcykpO1xuICB9O1xuXG4gIHZhciBnZXRNZW51RWxlbWVudE9yTGFtYmRhID0gZnVuY3Rpb24gZ2V0TWVudUVsZW1lbnRPckxhbWJkYSgpIHtcbiAgICB2YXIgb3ZlcmxheSA9IHByb3BzLm92ZXJsYXk7XG5cbiAgICBpZiAodHlwZW9mIG92ZXJsYXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBnZXRNZW51RWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0TWVudUVsZW1lbnQoKTtcbiAgfTtcblxuICB2YXIgZ2V0TWluT3ZlcmxheVdpZHRoTWF0Y2hUcmlnZ2VyID0gZnVuY3Rpb24gZ2V0TWluT3ZlcmxheVdpZHRoTWF0Y2hUcmlnZ2VyKCkge1xuICAgIHZhciBtaW5PdmVybGF5V2lkdGhNYXRjaFRyaWdnZXIgPSBwcm9wcy5taW5PdmVybGF5V2lkdGhNYXRjaFRyaWdnZXIsXG4gICAgICAgIGFsaWduUG9pbnQgPSBwcm9wcy5hbGlnblBvaW50O1xuXG4gICAgaWYgKCdtaW5PdmVybGF5V2lkdGhNYXRjaFRyaWdnZXInIGluIHByb3BzKSB7XG4gICAgICByZXR1cm4gbWluT3ZlcmxheVdpZHRoTWF0Y2hUcmlnZ2VyO1xuICAgIH1cblxuICAgIHJldHVybiAhYWxpZ25Qb2ludDtcbiAgfTtcblxuICB2YXIgZ2V0T3BlbkNsYXNzTmFtZSA9IGZ1bmN0aW9uIGdldE9wZW5DbGFzc05hbWUoKSB7XG4gICAgdmFyIG9wZW5DbGFzc05hbWUgPSBwcm9wcy5vcGVuQ2xhc3NOYW1lO1xuXG4gICAgaWYgKG9wZW5DbGFzc05hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG9wZW5DbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItb3BlblwiKTtcbiAgfTtcblxuICB2YXIgcmVuZGVyQ2hpbGRyZW4gPSBmdW5jdGlvbiByZW5kZXJDaGlsZHJlbigpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcbiAgICB2YXIgY2hpbGRyZW5Qcm9wcyA9IGNoaWxkcmVuLnByb3BzID8gY2hpbGRyZW4ucHJvcHMgOiB7fTtcbiAgICB2YXIgY2hpbGRDbGFzc05hbWUgPSBjbGFzc05hbWVzKGNoaWxkcmVuUHJvcHMuY2xhc3NOYW1lLCBnZXRPcGVuQ2xhc3NOYW1lKCkpO1xuICAgIHJldHVybiB0cmlnZ2VyVmlzaWJsZSAmJiBjaGlsZHJlbiA/IFJlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgICAgY2xhc3NOYW1lOiBjaGlsZENsYXNzTmFtZVxuICAgIH0pIDogY2hpbGRyZW47XG4gIH07XG5cbiAgdmFyIHRyaWdnZXJIaWRlQWN0aW9uID0gaGlkZUFjdGlvbjtcblxuICBpZiAoIXRyaWdnZXJIaWRlQWN0aW9uICYmIHRyaWdnZXIuaW5kZXhPZignY29udGV4dE1lbnUnKSAhPT0gLTEpIHtcbiAgICB0cmlnZ2VySGlkZUFjdGlvbiA9IFsnY2xpY2snXTtcbiAgfVxuXG4gIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFRyaWdnZXIsIE9iamVjdC5hc3NpZ24oe30sIG90aGVyUHJvcHMsIHtcbiAgICBwcmVmaXhDbHM6IHByZWZpeENscyxcbiAgICByZWY6IHRyaWdnZXJSZWYsXG4gICAgcG9wdXBDbGFzc05hbWU6IGNsYXNzTmFtZXMob3ZlcmxheUNsYXNzTmFtZSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXNob3ctYXJyb3dcIiksIGFycm93KSksXG4gICAgcG9wdXBTdHlsZTogb3ZlcmxheVN0eWxlLFxuICAgIGJ1aWx0aW5QbGFjZW1lbnRzOiBwbGFjZW1lbnRzLFxuICAgIGFjdGlvbjogdHJpZ2dlcixcbiAgICBzaG93QWN0aW9uOiBzaG93QWN0aW9uLFxuICAgIGhpZGVBY3Rpb246IHRyaWdnZXJIaWRlQWN0aW9uIHx8IFtdLFxuICAgIHBvcHVwUGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgcG9wdXBBbGlnbjogYWxpZ24sXG4gICAgcG9wdXBUcmFuc2l0aW9uTmFtZTogdHJhbnNpdGlvbk5hbWUsXG4gICAgcG9wdXBBbmltYXRpb246IGFuaW1hdGlvbixcbiAgICBwb3B1cFZpc2libGU6IG1lcmdlZFZpc2libGUsXG4gICAgc3RyZXRjaDogZ2V0TWluT3ZlcmxheVdpZHRoTWF0Y2hUcmlnZ2VyKCkgPyAnbWluV2lkdGgnIDogJycsXG4gICAgcG9wdXA6IGdldE1lbnVFbGVtZW50T3JMYW1iZGEoKSxcbiAgICBvblBvcHVwVmlzaWJsZUNoYW5nZTogb25WaXNpYmxlQ2hhbmdlLFxuICAgIGdldFBvcHVwQ29udGFpbmVyOiBnZXRQb3B1cENvbnRhaW5lclxuICB9KSwgcmVuZGVyQ2hpbGRyZW4oKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlYWN0LmZvcndhcmRSZWYoRHJvcGRvd24pOyIsImltcG9ydCBEcm9wZG93biBmcm9tICcuL0Ryb3Bkb3duJztcbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duOyIsImltcG9ydCBfY3VycnkxIGZyb20gXCIuL2ludGVybmFsL19jdXJyeTEuanNcIjtcbmltcG9ydCBjdXJyeU4gZnJvbSBcIi4vY3VycnlOLmpzXCI7XG4vKipcbiAqIFJldHVybnMgYSBuZXcgZnVuY3Rpb24gbXVjaCBsaWtlIHRoZSBzdXBwbGllZCBvbmUsIGV4Y2VwdCB0aGF0IHRoZSBmaXJzdCB0d29cbiAqIGFyZ3VtZW50cycgb3JkZXIgaXMgcmV2ZXJzZWQuXG4gKlxuICogQGZ1bmNcbiAqIEBtZW1iZXJPZiBSXG4gKiBAc2luY2UgdjAuMS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBzaWcgKChhLCBiLCBjLCAuLi4pIC0+IHopIC0+IChiIC0+IGEgLT4gYyAtPiAuLi4gLT4geilcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBpbnZva2Ugd2l0aCBpdHMgZmlyc3QgdHdvIHBhcmFtZXRlcnMgcmV2ZXJzZWQuXG4gKiBAcmV0dXJuIHsqfSBUaGUgcmVzdWx0IG9mIGludm9raW5nIGBmbmAgd2l0aCBpdHMgZmlyc3QgdHdvIHBhcmFtZXRlcnMnIG9yZGVyIHJldmVyc2VkLlxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIGNvbnN0IG1lcmdlVGhyZWUgPSAoYSwgYiwgYykgPT4gW10uY29uY2F0KGEsIGIsIGMpO1xuICpcbiAqICAgICAgbWVyZ2VUaHJlZSgxLCAyLCAzKTsgLy89PiBbMSwgMiwgM11cbiAqXG4gKiAgICAgIFIuZmxpcChtZXJnZVRocmVlKSgxLCAyLCAzKTsgLy89PiBbMiwgMSwgM11cbiAqIEBzeW1iIFIuZmxpcChmKShhLCBiLCBjKSA9IGYoYiwgYSwgYylcbiAqL1xuXG52YXIgZmxpcCA9XG4vKiNfX1BVUkVfXyovXG5fY3VycnkxKGZ1bmN0aW9uIGZsaXAoZm4pIHtcbiAgcmV0dXJuIGN1cnJ5Tihmbi5sZW5ndGgsIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICAgIGFyZ3NbMF0gPSBiO1xuICAgIGFyZ3NbMV0gPSBhO1xuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgfSk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgZmxpcDsiXSwic291cmNlUm9vdCI6IiJ9
| ver. 1.4 |
Github
|
.
| PHP 7.4.3-4ubuntu2.24 | Генерация страницы: 1.37 |
proxy
|
phpinfo
|
Настройка